Docs

Internal Events (Developer API)

AtomCombat's modules never call each other's internal classes directly. Instead, every meaningful moment fires a public Bukkit event under dev.amargos.main.atomcombat.events, and every module (or your own plugin, or PulsePrison) subscribes to those events like any other Bukkit listener. This is also how AtomCombat's own Effects module works — it has no special access, it just listens.

To depend on these events from another plugin, add AtomCombat as a softdepend (or depend) in your plugin.yml and register a normal @EventHandler method.

AtomCombatHitEvent

Fired by Combat Core on every valid attack, before a kill is determined.

FieldTypeNotes
getAttacker()Player
getVictim()LivingEntity
getDamage()double
getAttackIntervalMillis()long-1 if no previous attack was tracked
getWeapon()ItemStackCloned, nullable
getCause()EntityDamageEvent.DamageCause
getTimestampMillis()long

AtomCombatKillEvent

Fired once per confirmed PvP kill, after recap data has been assembled.

FieldTypeNotes
getKillId()UUIDUnique per kill
getKiller() / getKillerId() / getKillerName()Killer may be offline (getKiller() nullable)
getVictim() / getVictimId() / getVictimName()
getFinalDamage()double
getCause()EntityDamageEvent.DamageCause
getWeapon()ItemStackCloned, nullable
getRecap()List<CombatDamageRecord>Recent damage history before death
getTimestampMillis()long
isCombatLogout()booleanTrue if the victim disconnected while tagged

AtomCombatKillstreakEvent

Fired by Bounties each time a player crosses a configured killstreak threshold.

FieldType
getPlayer() / getPlayerId() / getPlayerName()
getStreak()int — current streak
getThreshold()int — threshold just crossed
getTimestampMillis()long

AtomCombatMilestoneEvent

Fired by Stats each time a player's lifetime kill count crosses a configured threshold.

FieldType
getPlayer() / getPlayerId()
getMetric()String — currently always "kills"
getThreshold()int
getTimestampMillis()long

AtomCombatBountyPlacedEvent

Fired by Bounties the moment a bounty is successfully placed and paid for.

FieldType
getBountyId()UUID
getCreator()Player
getTargetId()UUID
getAmount()double
getTimestampMillis()long

AtomCombatBountyClaimedEvent

Fired by Bounties when a bounty is paid out on a confirmed kill.

FieldType
getBountyId() / getKillId()UUID
getTargetId() / getKillerId()UUID
getAmount()double
getRewardProvider()Stringvault, pulseprison, items or commands
getStatus()ClaimStatus — currently always COMPLETED
getTimestampMillis()long

AtomCombatAbilityUsedEvent

Fired by Rank Abilities every time an ability is successfully activated.

FieldType
getPlayer() / getPlayerId()
getAbilityId()Stringdash, charged-strike, ground-slam
getMetadata()Map<String, String> — ability-specific extra data (e.g. Ground Slam includes %affected%)
getTimestampMillis()long

AtomCombatCombatTagEvent

Fired by Combat Rules whenever a player newly enters or refreshes a combat tag.

FieldType
getPlayer() / getPlayerId()
getOpponentId()UUID — the other player involved
getDurationSeconds()long — remaining tag duration at fire time
getTimestampMillis()long

Example: reacting to a kill from another plugin

java
@EventHandler
public void onAtomCombatKill(AtomCombatKillEvent event) {
    Player killer = event.getKiller();
    if (killer != null) {
        killer.sendMessage("Nice kill on " + event.getVictimName() + "!");
    }
}
Internal Events (Developer API) | AtomCombat Docs