Docs

Events

PulsePrison events are regular Bukkit events: listen to them with @EventHandler in a Listener registered by your plugin. All of them fire on the main thread.

Package: dev.aeros.pulseprison.api.events, except PlayerEarnMoneyEvent, which lives in dev.aeros.pulseprison.events.

List

EventCancellableWhenData
PlayerLevelUpEventNoA player levels up in a trackgetPlayer(), getTrack(), getLevel()
PlayerEarnMoneyEventNoA player is paid money for mined blocks, placeables or the autominergetPlayer(), getAmount(), getReason() (mining, placeable, autominer)
PlayerRebirthEventYesBefore a rebirth, nothing charged yetgetPreviousRebirth(), getNewRebirth(), getMoneyCost(), getTokenCost()
SkillInvestEventYesBefore spending a skill pointgetNode(), getPreviousLevel(), getNewLevel()
PetUnlockEventYesBefore unlocking a petgetType()
PetLevelUpEventNoThe active pet levels upgetType(), getPreviousLevel(), getNewLevel()
RobotProduceEventNoA robot finishes production cyclesgetRobot(), getCycles(), getBlocksProduced()
MarketPriceChangeEventNoA block price is recalculatedgetMaterial(), getPreviousMultiplier(), getNewMultiplier(), getSoldInWindow()
MultiplierChangeEventNoA global or personal multiplier is setgetScope() (GLOBAL, PERSONAL), getTarget(), getValue(), getDurationMillis()
MineResetEventYesBefore a rank mine resetgetMine(), getEngine()
MineResetCompleteEventNoThe reset finishedgetMine(), getDurationMillis()
PrivateMineCreateEventNoA private mine is createdgetMine()
PrivateMineResetEventYesBefore a private mine resetgetMine(), getCause() (AUTOMATIC, MANUAL, ADMIN, API)
PrivateMineResetCompleteEventNoThe reset finishedgetMine(), getCause()
PrivateMineUpgradeEventYesBefore an expansion, stage or type changegetKind(), getNewType(), getNewStage(), getNewExpansions()
PrivateMineAccessEventNoMembers, invitations, bans, visibility or tax changegetAction(), getTarget()
PrivateMineVisitEventYesSomeone who is not the owner or a member entersgetMine(), getVisitor()
PrivateMineTaxEventYesBefore a visitor is taxedgetVisitor(), get/setMoney(), get/setTokens(), get/setGems()
PrivateMineBlocksMinedEventNoOnce per tick per player, with what was mined in that tickgetMine(), getPlayer(), getBlocks()

Private mine events carry an immutable PrivateMineView. See Services.

Examples

Block high rebirths without a permission

java
@EventHandler
public void onRebirth(PlayerRebirthEvent event) {
    if (event.getNewRebirth() > 10 && !event.getPlayer().hasPermission("myaddon.rebirth.extended")) {
        event.setCancelled(true);
    }
}

When cancelled, nothing is charged and the player sees that the rebirth was blocked.

Announce levels on Discord or another plugin

java
@EventHandler
public void onLevelUp(PlayerLevelUpEvent event) {
    if (event.getTrack().equals("player") && event.getLevel() % 100 == 0) {
        announce(event.getPlayer().getName() + " reached player level " + event.getLevel());
    }
}

Lower tax for the owner's friends

java
@EventHandler
public void onTax(PrivateMineTaxEvent event) {
    if (friends.areFriends(event.getMine().owner(), event.getVisitor().getUniqueId())) {
        event.setMoney(event.getMoney() / 2);
        event.setTokens(event.getTokens() / 2);
    }
}

Keep mines closed during an event

java
@EventHandler
public void onReset(MineResetEvent event) {
    if (eventRunning && event.getMine().getId().equals("arena")) {
        event.setCancelled(true);
    }
}

Track mining income

java
@EventHandler
public void onEarn(PlayerEarnMoneyEvent event) {
    stats.add(event.getPlayer().getUniqueId(), event.getAmount());
}

PlayerEarnMoneyEvent fires for every paid block or batch: keep the listener light.

What has no event

Attributes, boosters, milestones, masteries, skins, crystals, armor, abilities and enchant activations don't have public events yet. If your addon needs them, the current options are custom actions, which can be placed in each system's rewards, and placeholders.

Events | PulsePrison Core Docs