Docs

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

EventoCancelableCuándoDatos
PlayerLevelUpEventNoUn jugador sube de nivel en un trackgetPlayer(), getTrack(), getLevel()
PlayerEarnMoneyEventNoUn jugador cobra dinero por bloques minados, colocables o autominergetPlayer(), getAmount(), getReason() (mining, placeable, autominer)
PlayerRebirthEventSíAntes de un rebirth, sin cobrar todavíagetPreviousRebirth(), getNewRebirth(), getMoneyCost(), getTokenCost()
SkillInvestEventSíAntes de gastar un punto de habilidadgetNode(), getPreviousLevel(), getNewLevel()
PetUnlockEventSíAntes de desbloquear una mascotagetType()
PetLevelUpEventNoLa mascota activa sube de nivelgetType(), getPreviousLevel(), getNewLevel()
RobotProduceEventNoUn robot termina ciclos de produccióngetRobot(), getCycles(), getBlocksProduced()
MarketPriceChangeEventNoSe recalcula el precio de un bloquegetMaterial(), getPreviousMultiplier(), getNewMultiplier(), getSoldInWindow()
MultiplierChangeEventNoSe pone un multiplicador global o personalgetScope() (GLOBAL, PERSONAL), getTarget(), getValue(), getDurationMillis()
MineResetEventSíAntes de resetear una mina de rangogetMine(), getEngine()
MineResetCompleteEventNoTerminó el resetgetMine(), getDurationMillis()
PrivateMineCreateEventNoSe crea una mina privadagetMine()
PrivateMineResetEventSíAntes de resetear una mina privadagetMine(), getCause() (AUTOMATIC, MANUAL, ADMIN, API)
PrivateMineResetCompleteEventNoTerminó el resetgetMine(), getCause()
PrivateMineUpgradeEventSíAntes de una expansión, etapa o cambio de tipogetKind(), getNewType(), getNewStage(), getNewExpansions()
PrivateMineAccessEventNoCambian miembros, invitaciones, baneos, visibilidad o impuestogetAction(), getTarget()
PrivateMineVisitEventSíEntra alguien que no es dueño ni miembrogetMine(), getVisitor()
PrivateMineTaxEventSíAntes de cobrar el impuesto a un visitantegetVisitor(), get/setMoney(), get/setTokens(), get/setGems()
PrivateMineBlocksMinedEventNoUna vez por tick por jugador, con lo minado en ese tickgetMine(), getPlayer(), getBlocks()

Los eventos de minas privadas llevan un PrivateMineView inmutable. Ver Servicios.

Ejemplos

Bloquear rebirths altos sin permiso

java
@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

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());
    }
}

Impuesto reducido para amigos del dueño

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);
    }
}

Evento con minas cerradas

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

Contar ingresos por minería

java
@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.

Events | PulsePrison Core Docs