--- a/net/minecraft/server/DragonControllerManager.java +++ b/net/minecraft/server/DragonControllerManager.java @@ -2,6 +2,10 @@ import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; +// CraftBukkit start +import org.bukkit.craftbukkit.entity.CraftEnderDragon; +import org.bukkit.event.entity.EnderDragonChangePhaseEvent; +// CraftBukkit end public class DragonControllerManager { @@ -21,6 +25,19 @@ this.currentDragonController.e(); } + // CraftBukkit start - Call EnderDragonChangePhaseEvent + EnderDragonChangePhaseEvent event = new EnderDragonChangePhaseEvent( + (CraftEnderDragon) this.enderDragon.getBukkitEntity(), + (this.currentDragonController == null) ? null : CraftEnderDragon.getBukkitPhase(this.currentDragonController.getControllerPhase()), + CraftEnderDragon.getBukkitPhase(dragoncontrollerphase) + ); + this.enderDragon.world.getServer().getPluginManager().callEvent(event); + if (event.isCancelled()) { + return; + } + dragoncontrollerphase = CraftEnderDragon.getMinecraftPhase(event.getNewPhase()); + // CraftBukkit end + this.currentDragonController = this.b(dragoncontrollerphase); if (!this.enderDragon.world.isClientSide) { this.enderDragon.getDataWatcher().set(EntityEnderDragon.PHASE, dragoncontrollerphase.b()); @@ -42,6 +59,6 @@ this.dragonControllers[i] = dragoncontrollerphase.a(this.enderDragon); } - return this.dragonControllers[i]; + return (T) this.dragonControllers[i]; // CraftBukkit - decompile error } }