Eventos
Los eventos de PulsePrison son eventos normales de Bukkit: se escuchan con @EventHandler en un Listener registrado por tu plugin. Todos se disparan en el hilo principal.
Paquete: dev.aeros.pulseprison.api.events, salvo PlayerEarnMoneyEvent, que está en dev.aeros.pulseprison.events.
Lista
| Evento | Cancelable | Cuándo | Datos |
|---|---|---|---|
PlayerLevelUpEvent | No | Un jugador sube de nivel en un track | getPlayer(), getTrack(), getLevel() |
PlayerEarnMoneyEvent | No | Un jugador cobra dinero por bloques minados, colocables o autominer | getPlayer(), getAmount(), getReason() (mining, placeable, autominer) |
PlayerRebirthEvent | Sí | Antes de un rebirth, sin cobrar todavía | getPreviousRebirth(), getNewRebirth(), getMoneyCost(), getTokenCost() |
SkillInvestEvent | Sí | Antes de gastar un punto de habilidad | getNode(), getPreviousLevel(), getNewLevel() |
PetUnlockEvent | Sí | Antes de desbloquear una mascota | getType() |
PetLevelUpEvent | No | La mascota activa sube de nivel | getType(), getPreviousLevel(), getNewLevel() |
RobotProduceEvent | No | Un robot termina ciclos de producción | getRobot(), getCycles(), getBlocksProduced() |
MarketPriceChangeEvent | No | Se recalcula el precio de un bloque | getMaterial(), getPreviousMultiplier(), getNewMultiplier(), getSoldInWindow() |
MultiplierChangeEvent | No | Se pone un multiplicador global o personal | getScope() (GLOBAL, PERSONAL), getTarget(), getValue(), getDurationMillis() |
MineResetEvent | Sí | Antes de resetear una mina de rango | getMine(), getEngine() |
MineResetCompleteEvent | No | Terminó el reset | getMine(), getDurationMillis() |
PrivateMineCreateEvent | No | Se crea una mina privada | getMine() |
PrivateMineResetEvent | Sí | Antes de resetear una mina privada | getMine(), getCause() (AUTOMATIC, MANUAL, ADMIN, API) |
PrivateMineResetCompleteEvent | No | Terminó el reset | getMine(), getCause() |
PrivateMineUpgradeEvent | Sí | Antes de una expansión, etapa o cambio de tipo | getKind(), getNewType(), getNewStage(), getNewExpansions() |
PrivateMineAccessEvent | No | Cambian miembros, invitaciones, baneos, visibilidad o impuesto | getAction(), getTarget() |
PrivateMineVisitEvent | Sí | Entra alguien que no es dueño ni miembro | getMine(), getVisitor() |
PrivateMineTaxEvent | Sí | Antes de cobrar el impuesto a un visitante | getVisitor(), get/setMoney(), get/setTokens(), get/setGems() |
PrivateMineBlocksMinedEvent | No | Una vez por tick por jugador, con lo minado en ese tick | getMine(), getPlayer(), getBlocks() |
Los eventos de minas privadas llevan un PrivateMineView inmutable. Ver Servicios.
Ejemplos
Bloquear rebirths altos sin permiso
@EventHandler
public void onRebirth(PlayerRebirthEvent event) {
if (event.getNewRebirth() > 10 && !event.getPlayer().hasPermission("myaddon.rebirth.extended")) {
event.setCancelled(true);
}
}Cancelado, no se cobra nada y el jugador ve que el rebirth fue bloqueado.
Premiar niveles en Discord o en otro 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());
}
}Impuesto reducido para amigos del dueño
@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);
}
}Evento con minas cerradas
@EventHandler
public void onReset(MineResetEvent event) {
if (eventRunning && event.getMine().getId().equals("arena")) {
event.setCancelled(true);
}
}Contar ingresos por minería
@EventHandler
public void onEarn(PlayerEarnMoneyEvent event) {
stats.add(event.getPlayer().getUniqueId(), event.getAmount());
}PlayerEarnMoneyEvent se dispara por cada bloque o lote pagado: mantené el listener liviano.
Lo que no tiene evento
Para atributos, boosters, logros, maestrías, skins, cristales, armaduras, habilidades y encantamientos activados todavía no hay eventos públicos. Si tu addon los necesita, los caminos actuales son las acciones propias, que se pueden poner en las recompensas de cada sistema, y los placeholders.