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
| Event | Cancellable | When | Data |
|---|---|---|---|
PlayerLevelUpEvent | No | A player levels up in a track | getPlayer(), getTrack(), getLevel() |
PlayerEarnMoneyEvent | No | A player is paid money for mined blocks, placeables or the autominer | getPlayer(), getAmount(), getReason() (mining, placeable, autominer) |
PlayerRebirthEvent | Yes | Before a rebirth, nothing charged yet | getPreviousRebirth(), getNewRebirth(), getMoneyCost(), getTokenCost() |
SkillInvestEvent | Yes | Before spending a skill point | getNode(), getPreviousLevel(), getNewLevel() |
PetUnlockEvent | Yes | Before unlocking a pet | getType() |
PetLevelUpEvent | No | The active pet levels up | getType(), getPreviousLevel(), getNewLevel() |
RobotProduceEvent | No | A robot finishes production cycles | getRobot(), getCycles(), getBlocksProduced() |
MarketPriceChangeEvent | No | A block price is recalculated | getMaterial(), getPreviousMultiplier(), getNewMultiplier(), getSoldInWindow() |
MultiplierChangeEvent | No | A global or personal multiplier is set | getScope() (GLOBAL, PERSONAL), getTarget(), getValue(), getDurationMillis() |
MineResetEvent | Yes | Before a rank mine reset | getMine(), getEngine() |
MineResetCompleteEvent | No | The reset finished | getMine(), getDurationMillis() |
PrivateMineCreateEvent | No | A private mine is created | getMine() |
PrivateMineResetEvent | Yes | Before a private mine reset | getMine(), getCause() (AUTOMATIC, MANUAL, ADMIN, API) |
PrivateMineResetCompleteEvent | No | The reset finished | getMine(), getCause() |
PrivateMineUpgradeEvent | Yes | Before an expansion, stage or type change | getKind(), getNewType(), getNewStage(), getNewExpansions() |
PrivateMineAccessEvent | No | Members, invitations, bans, visibility or tax change | getAction(), getTarget() |
PrivateMineVisitEvent | Yes | Someone who is not the owner or a member enters | getMine(), getVisitor() |
PrivateMineTaxEvent | Yes | Before a visitor is taxed | getVisitor(), get/setMoney(), get/setTokens(), get/setGems() |
PrivateMineBlocksMinedEvent | No | Once per tick per player, with what was mined in that tick | getMine(), getPlayer(), getBlocks() |
Private mine events carry an immutable PrivateMineView. See Services.
Examples
Block high rebirths without a permission
@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
@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
@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
@EventHandler
public void onReset(MineResetEvent event) {
if (eventRunning && event.getMine().getId().equals("arena")) {
event.setCancelled(true);
}
}Track mining income
@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.