summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormd_5 <git@md-5.net>2018-12-13 14:10:36 +1100
committermd_5 <git@md-5.net>2018-12-13 14:10:36 +1100
commit6ec8ea5cf4f8db20562abdead706982d4e842943 (patch)
tree9c9c9d3852da9b0baeb77c2e0d92b13177753186
parentc64fe5080c996e8ea29b3e113043dd0aa962aaee (diff)
downloadcraftbukkit-6ec8ea5cf4f8db20562abdead706982d4e842943.tar
craftbukkit-6ec8ea5cf4f8db20562abdead706982d4e842943.tar.gz
craftbukkit-6ec8ea5cf4f8db20562abdead706982d4e842943.tar.lz
craftbukkit-6ec8ea5cf4f8db20562abdead706982d4e842943.tar.xz
craftbukkit-6ec8ea5cf4f8db20562abdead706982d4e842943.zip
SPIGOT-4526: Add conversion time API for Zombie & subclasses
-rw-r--r--nms-patches/EntityZombie.patch23
-rw-r--r--nms-patches/EntityZombieVillager.patch15
-rw-r--r--src/main/java/org/bukkit/craftbukkit/entity/CraftPigZombie.java15
-rw-r--r--src/main/java/org/bukkit/craftbukkit/entity/CraftVillagerZombie.java24
-rw-r--r--src/main/java/org/bukkit/craftbukkit/entity/CraftZombie.java23
5 files changed, 93 insertions, 7 deletions
diff --git a/nms-patches/EntityZombie.patch b/nms-patches/EntityZombie.patch
index d4176432..6912ad16 100644
--- a/nms-patches/EntityZombie.patch
+++ b/nms-patches/EntityZombie.patch
@@ -16,8 +16,17 @@
public class EntityZombie extends EntityMonster {
protected static final IAttribute c = (new AttributeRanged((IAttribute) null, "zombie.spawnReinforcements", 0.0D, 0.0D, 1.0D)).a("Spawn Reinforcements Chance");
-@@ -21,6 +30,7 @@
- private int drownedConversionTime;
+@@ -14,13 +23,14 @@
+ private static final DataWatcherObject<Boolean> bC = DataWatcher.a(EntityZombie.class, DataWatcherRegistry.i);
+ private static final DataWatcherObject<Integer> bD = DataWatcher.a(EntityZombie.class, DataWatcherRegistry.b);
+ private static final DataWatcherObject<Boolean> bE = DataWatcher.a(EntityZombie.class, DataWatcherRegistry.i);
+- private static final DataWatcherObject<Boolean> bF = DataWatcher.a(EntityZombie.class, DataWatcherRegistry.i);
++ public static final DataWatcherObject<Boolean> bF = DataWatcher.a(EntityZombie.class, DataWatcherRegistry.i); // PAIL
+ private final PathfinderGoalBreakDoor bG;
+ private boolean bH;
+ private int bI;
+- private int drownedConversionTime;
++ public int drownedConversionTime; // PAIL
private float bK;
private float bL;
+ private int lastTick = MinecraftServer.currentTick; // CraftBukkit - add field
@@ -39,7 +48,7 @@
if (this.drownedConversionTime < 0) {
this.dE();
}
-@@ -182,7 +196,14 @@
+@@ -182,14 +196,21 @@
}
if (flag) {
@@ -55,6 +64,14 @@
}
}
+ super.movementTick();
+ }
+
+- private void a(int i) {
++ public void a(int i) { // PAIL
+ this.drownedConversionTime = i;
+ this.getDataWatcher().set(EntityZombie.bF, true);
+ }
@@ -221,7 +242,12 @@
entityzombie.setCustomNameVisible(this.getCustomNameVisible());
}
diff --git a/nms-patches/EntityZombieVillager.patch b/nms-patches/EntityZombieVillager.patch
index e1a51981..f497e0a5 100644
--- a/nms-patches/EntityZombieVillager.patch
+++ b/nms-patches/EntityZombieVillager.patch
@@ -1,6 +1,6 @@
--- a/net/minecraft/server/EntityZombieVillager.java
+++ b/net/minecraft/server/EntityZombieVillager.java
-@@ -2,6 +2,10 @@
+@@ -2,13 +2,18 @@
import java.util.UUID;
import javax.annotation.Nullable;
@@ -11,9 +11,11 @@
public class EntityZombieVillager extends EntityZombie {
-@@ -9,6 +13,7 @@
+- private static final DataWatcherObject<Boolean> a = DataWatcher.a(EntityZombieVillager.class, DataWatcherRegistry.i);
++ public static final DataWatcherObject<Boolean> a = DataWatcher.a(EntityZombieVillager.class, DataWatcherRegistry.i); // PAIL
private static final DataWatcherObject<Integer> b = DataWatcher.a(EntityZombieVillager.class, DataWatcherRegistry.b);
- private int conversionTime;
+- private int conversionTime;
++ public int conversionTime; // PAIL
private UUID bD;
+ private int lastTick = MinecraftServer.currentTick; // CraftBukkit - add field
@@ -34,7 +36,12 @@
this.conversionTime -= i;
if (this.conversionTime <= 0) {
-@@ -100,8 +110,10 @@
+@@ -96,12 +106,14 @@
+ return (Boolean) this.getDataWatcher().get(EntityZombieVillager.a);
+ }
+
+- protected void a(@Nullable UUID uuid, int i) {
++ public void a(@Nullable UUID uuid, int i) { // PAIL
this.bD = uuid;
this.conversionTime = i;
this.getDataWatcher().set(EntityZombieVillager.a, true);
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPigZombie.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPigZombie.java
index 0e6ccea7..c8d66f31 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPigZombie.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPigZombie.java
@@ -41,4 +41,19 @@ public class CraftPigZombie extends CraftZombie implements PigZombie {
public EntityType getType() {
return EntityType.PIG_ZOMBIE;
}
+
+ @Override
+ public boolean isConverting() {
+ return false;
+ }
+
+ @Override
+ public int getConversionTime() {
+ throw new UnsupportedOperationException("Not supported by this Entity.");
+ }
+
+ @Override
+ public void setConversionTime(int time) {
+ throw new UnsupportedOperationException("Not supported by this Entity.");
+ }
}
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftVillagerZombie.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftVillagerZombie.java
index 6073d508..876129fd 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftVillagerZombie.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftVillagerZombie.java
@@ -1,5 +1,7 @@
package org.bukkit.craftbukkit.entity;
+import com.google.common.base.Preconditions;
+import java.util.UUID;
import net.minecraft.server.EntityZombieVillager;
import org.bukkit.craftbukkit.CraftServer;
import org.bukkit.entity.EntityType;
@@ -36,4 +38,26 @@ public class CraftVillagerZombie extends CraftZombie implements ZombieVillager {
public void setVillagerProfession(Villager.Profession profession) {
getHandle().setProfession(profession == null ? 0 : profession.ordinal() - Villager.Profession.FARMER.ordinal());
}
+
+ @Override
+ public boolean isConverting() {
+ return getHandle().isConverting();
+ }
+
+ @Override
+ public int getConversionTime() {
+ Preconditions.checkState(isConverting(), "Entity not converting");
+
+ return getHandle().conversionTime;
+ }
+
+ @Override
+ public void setConversionTime(int time) {
+ if (time < 0) {
+ getHandle().conversionTime = -1;
+ getHandle().getDataWatcher().set(EntityZombieVillager.a, false);
+ } else {
+ getHandle().a((UUID) null, time);
+ }
+ }
}
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftZombie.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftZombie.java
index d2c3dbe4..7af4ea9f 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftZombie.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftZombie.java
@@ -1,5 +1,6 @@
package org.bukkit.craftbukkit.entity;
+import com.google.common.base.Preconditions;
import net.minecraft.server.EntityZombie;
import net.minecraft.server.EntityZombieVillager;
@@ -54,4 +55,26 @@ public class CraftZombie extends CraftMonster implements Zombie {
public Villager.Profession getVillagerProfession() {
return null;
}
+
+ @Override
+ public boolean isConverting() {
+ return getHandle().isDrownConverting();
+ }
+
+ @Override
+ public int getConversionTime() {
+ Preconditions.checkState(isConverting(), "Entity not converting");
+
+ return getHandle().drownedConversionTime;
+ }
+
+ @Override
+ public void setConversionTime(int time) {
+ if (time < 0) {
+ getHandle().drownedConversionTime = -1;
+ getHandle().getDataWatcher().set(EntityZombie.bF, false);
+ } else {
+ getHandle().a(time);
+ }
+ }
}