Paper/Spigot-Server-Patches/0410-Add-more-Zombie-API.patch
Zach Brown 8ed2992da9
Make scan-for-legacy-ender-dragon config work again
Portion of diff was dropped in the mappings update commit.

Also remove the option to remove invalid statistics. The server will
automatically do this now as of... 1.13?, our option wasn't even doing anything.
2018-12-14 20:17:27 -05:00

155 lines
6.3 KiB
Diff

From acdfd1580144bf7970aa16eb874549d5166d5ee6 Mon Sep 17 00:00:00 2001
From: BillyGalbreath <Blake.Galbreath@GMail.com>
Date: Sun, 7 Oct 2018 04:29:59 -0500
Subject: [PATCH] Add more Zombie API
diff --git a/src/main/java/net/minecraft/server/EntityZombie.java b/src/main/java/net/minecraft/server/EntityZombie.java
index 2d87dca68..4c0ef6e28 100644
--- a/src/main/java/net/minecraft/server/EntityZombie.java
+++ b/src/main/java/net/minecraft/server/EntityZombie.java
@@ -22,8 +22,8 @@ public class EntityZombie extends EntityMonster {
private final AttributeModifier babyModifier = new AttributeModifier(EntityZombie.a, "Baby speed boost", world.paperConfig.babyZombieMovementSpeed, 1); // Paper - Remove static - Make baby speed configurable
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);
+ private static final DataWatcherObject<Boolean> bE = DataWatcher.a(EntityZombie.class, DataWatcherRegistry.i); private static final DataWatcherObject<Boolean> armsRaised = bE; // Paper - OBFHELPER
+ private static final DataWatcherObject<Boolean> bF = DataWatcher.a(EntityZombie.class, DataWatcherRegistry.i); private static final DataWatcherObject<Boolean> drowning = bF; // Paper - OBFHELPER
private final PathfinderGoalBreakDoor bG;
private boolean bH;
private int bI;
@@ -31,6 +31,7 @@ public class EntityZombie extends EntityMonster {
private float bK;
private float bL;
private int lastTick = MinecraftServer.currentTick; // CraftBukkit - add field
+ private boolean shouldBurnInDay = true; // Paper
public EntityZombie(EntityTypes<?> entitytypes, World world) {
super(entitytypes, world);
@@ -79,14 +80,22 @@ public class EntityZombie extends EntityMonster {
this.getDataWatcher().register(EntityZombie.bF, false);
}
+ public boolean isDrowning() { return isDrownConverting(); } // Paper - OBFHELPER
public boolean isDrownConverting() {
return (Boolean) this.getDataWatcher().get(EntityZombie.bF);
}
+ public void setArmsRaised(boolean raised) { s(raised); } // Paper - OBFHELPER
public void s(boolean flag) {
this.getDataWatcher().set(EntityZombie.bE, flag);
}
+ // Paper start
+ public boolean isArmsRaised() {
+ return ((Boolean) this.getDataWatcher().get(EntityZombie.armsRaised)).booleanValue();
+ }
+ // Paper end
+
public boolean dH() {
return this.bH;
}
@@ -210,11 +219,19 @@ public class EntityZombie extends EntityMonster {
super.k();
}
+ public void startDrowning(int drownedConversionTime) { a(drownedConversionTime); } // Paper - OBFHELPER
private void a(int i) {
this.drownedConversionTime = i;
this.getDataWatcher().set(EntityZombie.bF, true);
}
+ // Paper start
+ public void stopDrowning() {
+ this.drownedConversionTime = -1;
+ this.getDataWatcher().set(EntityZombie.drowning, Boolean.valueOf(false));
+ }
+ // Paper end
+
protected void dE() {
this.a((EntityZombie) EntityTypes.DROWNED.create(world)); // Paper
this.world.a((EntityHuman) null, 1040, new BlockPosition((int) this.locX, (int) this.locY, (int) this.locZ), 0);
@@ -253,10 +270,17 @@ public class EntityZombie extends EntityMonster {
}
}
+ public boolean shouldBurnInDay() { return L_(); } // Paper - OBFHELPER
protected boolean L_() {
- return true;
+ return shouldBurnInDay; // Paper
}
+ // Paper start
+ public void setShouldBurnInDay(boolean shouldBurnInDay) {
+ this.shouldBurnInDay = shouldBurnInDay;
+ }
+ // Paper end
+
public boolean damageEntity(DamageSource damagesource, float f) {
if (super.damageEntity(damagesource, f)) {
EntityLiving entityliving = this.getGoalTarget();
@@ -369,6 +393,7 @@ public class EntityZombie extends EntityMonster {
nbttagcompound.setBoolean("CanBreakDoors", this.dH());
nbttagcompound.setInt("InWaterTime", this.isInWater() ? this.bI : -1);
nbttagcompound.setInt("DrownedConversionTime", this.isDrownConverting() ? this.drownedConversionTime : -1);
+ nbttagcompound.setBoolean("Paper.ShouldBurnInDay", shouldBurnInDay); // Paper
}
public void a(NBTTagCompound nbttagcompound) {
@@ -382,7 +407,11 @@ public class EntityZombie extends EntityMonster {
if (nbttagcompound.hasKeyOfType("DrownedConversionTime", 99) && nbttagcompound.getInt("DrownedConversionTime") > -1) {
this.a(nbttagcompound.getInt("DrownedConversionTime"));
}
-
+ // Paper start
+ if (nbttagcompound.hasKey("Paper.ShouldBurnInDay")) {
+ shouldBurnInDay = nbttagcompound.getBoolean("Paper.ShouldBurnInDay");
+ }
+ // Paper end
}
public void b(EntityLiving entityliving) {
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftZombie.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftZombie.java
index d2c3dbe48..43d4470d9 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftZombie.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftZombie.java
@@ -54,4 +54,34 @@ public class CraftZombie extends CraftMonster implements Zombie {
public Villager.Profession getVillagerProfession() {
return null;
}
+
+ // Paper start
+ public boolean isDrowning() {
+ return getHandle().isDrowning();
+ }
+
+ public void startDrowning(int drownedConversionTime) {
+ getHandle().startDrowning(drownedConversionTime);
+ }
+
+ public void stopDrowning() {
+ getHandle().stopDrowning();
+ }
+
+ public void setArmsRaised(boolean raised) {
+ getHandle().setArmsRaised(raised);
+ }
+
+ public boolean isArmsRaised() {
+ return getHandle().isArmsRaised();
+ }
+
+ public boolean shouldBurnInDay() {
+ return getHandle().shouldBurnInDay();
+ }
+
+ public void setShouldBurnInDay(boolean shouldBurnInDay) {
+ getHandle().setShouldBurnInDay(shouldBurnInDay);
+ }
+ // Paper end
}
--
2.20.0