summaryrefslogtreecommitdiffstats
path: root/nms-patches/DragonControllerManager.patch
diff options
context:
space:
mode:
authorMatthew <stteg@hotmail.com>2016-03-15 23:32:37 -0400
committermd_5 <git@md-5.net>2016-03-23 07:30:12 +1100
commit5fe510da591a009c9550678d50a9fc0b1072b6f3 (patch)
tree1c1add8f4529a27ca8f53b230a142dfeb8485070 /nms-patches/DragonControllerManager.patch
parent616a9687a101689f8ad577446cf9caf80ee8ecd4 (diff)
downloadcraftbukkit-5fe510da591a009c9550678d50a9fc0b1072b6f3.tar
craftbukkit-5fe510da591a009c9550678d50a9fc0b1072b6f3.tar.gz
craftbukkit-5fe510da591a009c9550678d50a9fc0b1072b6f3.tar.lz
craftbukkit-5fe510da591a009c9550678d50a9fc0b1072b6f3.tar.xz
craftbukkit-5fe510da591a009c9550678d50a9fc0b1072b6f3.zip
SPIGOT-1934: Expand EnderDragon API - implement dragon phases
Diffstat (limited to 'nms-patches/DragonControllerManager.patch')
-rw-r--r--nms-patches/DragonControllerManager.patch64
1 files changed, 64 insertions, 0 deletions
diff --git a/nms-patches/DragonControllerManager.patch b/nms-patches/DragonControllerManager.patch
new file mode 100644
index 00000000..f33447d3
--- /dev/null
+++ b/nms-patches/DragonControllerManager.patch
@@ -0,0 +1,64 @@
+--- a/net/minecraft/server/DragonControllerManager.java
++++ b/net/minecraft/server/DragonControllerManager.java
+@@ -2,32 +2,44 @@
+
+ import org.apache.logging.log4j.LogManager;
+ import org.apache.logging.log4j.Logger;
++import org.bukkit.craftbukkit.entity.CraftEnderDragon;
++import org.bukkit.entity.EnderDragon;
++import org.bukkit.event.entity.EnderDragonChangePhaseEvent;
+
+ public class DragonControllerManager {
+
+ private static final Logger a = LogManager.getLogger();
+- private final EntityEnderDragon b;
+- private final IDragonController[] c = new IDragonController[DragonControllerPhase.c()];
+- private IDragonController d;
++ private final EntityEnderDragon b; // PAIL: Rename enderDragon
++ private final IDragonController[] c = new IDragonController[DragonControllerPhase.c()]; // PAIL: Rename dragonControllers
++ private IDragonController d; // PAIL: Rename currentDragonController
+
+ public DragonControllerManager(EntityEnderDragon entityenderdragon) {
+ this.b = entityenderdragon;
+ this.a(DragonControllerPhase.k);
+ }
+
+- public void a(DragonControllerPhase<?> dragoncontrollerphase) {
+- if (this.d == null || dragoncontrollerphase != this.d.i()) {
++ public void a(DragonControllerPhase<?> dragoncontrollerphase) { // PAIL: Rename setControllerPhase
++ if (this.d == null || dragoncontrollerphase != this.d.i()) { // PAIL: Rename getControllerPhase
+ if (this.d != null) {
+- this.d.e();
++ this.d.e(); // PAIL: Rename
+ }
+
+- this.d = this.b(dragoncontrollerphase);
++ // CraftBukkit start - Call EnderDragonChangePhaseEvent
++ EnderDragonChangePhaseEvent event = new EnderDragonChangePhaseEvent((CraftEnderDragon) this.b.getBukkitEntity(), this.d == null ? null : CraftEnderDragon.getBukkitPhase(this.d.i()), CraftEnderDragon.getBukkitPhase(dragoncontrollerphase));
++ this.b.world.getServer().getPluginManager().callEvent(event);
++ if (event.isCancelled()) {
++ return;
++ }
++ dragoncontrollerphase = CraftEnderDragon.getMinecraftPhase(event.getNewPhase());
++ // CraftBukkit end
++
++ this.d = this.b(dragoncontrollerphase); // PAIL: Rename getDragonController
+ if (!this.b.world.isClientSide) {
+- this.b.getDataWatcher().set(EntityEnderDragon.a, Integer.valueOf(dragoncontrollerphase.b()));
++ this.b.getDataWatcher().set(EntityEnderDragon.a, Integer.valueOf(dragoncontrollerphase.b())); // PAIL: Rename getId
+ }
+
+ DragonControllerManager.a.debug("Dragon is now in phase {} on the {}", new Object[] { dragoncontrollerphase, this.b.world.isClientSide ? "client" : "server"});
+- this.d.d();
++ this.d.d(); // PAIL: Rename reset
+ }
+ }
+
+@@ -42,6 +54,6 @@
+ this.c[i] = dragoncontrollerphase.a(this.b);
+ }
+
+- return this.c[i];
++ return (T) this.c[i];
+ }
+ }