diff --git a/nms-patches/EntityHoglin.patch b/nms-patches/EntityHoglin.patch new file mode 100644 index 0000000000..81eeadfa86 --- /dev/null +++ b/nms-patches/EntityHoglin.patch @@ -0,0 +1,51 @@ +--- a/net/minecraft/server/EntityHoglin.java ++++ b/net/minecraft/server/EntityHoglin.java +@@ -10,10 +10,11 @@ + + private static final DataWatcherObject bx = DataWatcher.a(EntityHoglin.class, DataWatcherRegistry.i); + private int by; +- private int bz = 0; +- private boolean bA = false; ++ public int bz = 0; // PAIL ++ public boolean bA = false; // PAIL + protected static final ImmutableList>> bv = ImmutableList.of(SensorType.c, SensorType.d, SensorType.n, SensorType.m); +- protected static final ImmutableList> bw = ImmutableList.of(MemoryModuleType.BREED_TARGET, MemoryModuleType.MOBS, MemoryModuleType.VISIBLE_MOBS, MemoryModuleType.NEAREST_VISIBLE_PLAYER, MemoryModuleType.NEAREST_VISIBLE_TARGETABLE_PLAYER, MemoryModuleType.LOOK_TARGET, MemoryModuleType.WALK_TARGET, MemoryModuleType.CANT_REACH_WALK_TARGET_SINCE, MemoryModuleType.PATH, MemoryModuleType.ATTACK_TARGET, MemoryModuleType.ATTACK_COOLING_DOWN, MemoryModuleType.NEAREST_VISIBLE_ADULT_PIGLIN, new MemoryModuleType[]{MemoryModuleType.AVOID_TARGET, MemoryModuleType.VISIBLE_ADULT_PIGLIN_COUNT, MemoryModuleType.VISIBLE_ADULT_HOGLIN_COUNT, MemoryModuleType.NEAREST_VISIBLE_ADULT_HOGLINS, MemoryModuleType.NEAREST_VISIBLE_ADULY, MemoryModuleType.NEAREST_REPELLENT, MemoryModuleType.PACIFIED}); ++ // CraftBukkit - decompile error ++ protected static final ImmutableList> bw = ImmutableList.>of(MemoryModuleType.BREED_TARGET, MemoryModuleType.MOBS, MemoryModuleType.VISIBLE_MOBS, MemoryModuleType.NEAREST_VISIBLE_PLAYER, MemoryModuleType.NEAREST_VISIBLE_TARGETABLE_PLAYER, MemoryModuleType.LOOK_TARGET, MemoryModuleType.WALK_TARGET, MemoryModuleType.CANT_REACH_WALK_TARGET_SINCE, MemoryModuleType.PATH, MemoryModuleType.ATTACK_TARGET, MemoryModuleType.ATTACK_COOLING_DOWN, MemoryModuleType.NEAREST_VISIBLE_ADULT_PIGLIN, new MemoryModuleType[]{MemoryModuleType.AVOID_TARGET, MemoryModuleType.VISIBLE_ADULT_PIGLIN_COUNT, MemoryModuleType.VISIBLE_ADULT_HOGLIN_COUNT, MemoryModuleType.NEAREST_VISIBLE_ADULT_HOGLINS, MemoryModuleType.NEAREST_VISIBLE_ADULY, MemoryModuleType.NEAREST_REPELLENT, MemoryModuleType.PACIFIED}); + + public EntityHoglin(EntityTypes entitytypes, World world) { + super(entitytypes, world); +@@ -77,13 +78,13 @@ + + @Override + public BehaviorController getBehaviorController() { +- return super.getBehaviorController(); ++ return (BehaviorController) super.getBehaviorController(); // CraftBukkit - decompile error + } + + @Override + protected void mobTick() { + this.world.getMethodProfiler().enter("hoglinBrain"); +- this.getBehaviorController().a((WorldServer) this.world, (EntityLiving) this); ++ this.getBehaviorController().a((WorldServer) this.world, this); // CraftBukkit - decompile error + this.world.getMethodProfiler().exit(); + HoglinAI.a(this); + if (this.eO()) { +@@ -216,7 +217,7 @@ + this.getDataWatcher().set(EntityHoglin.bx, flag); + } + +- private boolean eW() { ++ public boolean eW() { // PAIL + return (Boolean) this.getDataWatcher().get(EntityHoglin.bx); + } + +@@ -256,7 +257,7 @@ + + @Override + protected SoundEffect getSoundAmbient() { +- return this.world.isClientSide ? null : (SoundEffect) HoglinAI.b(this).orElse((Object) null); ++ return this.world.isClientSide ? null : (SoundEffect) HoglinAI.b(this).orElse(null); // CraftBukkit - decompile error + } + + @Override diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftHoglin.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftHoglin.java index 41bbdb2715..12f064ebab 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftHoglin.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftHoglin.java @@ -1,5 +1,6 @@ package org.bukkit.craftbukkit.entity; +import com.google.common.base.Preconditions; import net.minecraft.server.EntityHoglin; import org.bukkit.craftbukkit.CraftServer; import org.bukkit.entity.EntityType; @@ -11,6 +12,47 @@ public class CraftHoglin extends CraftAnimals implements Hoglin { super(server, entity); } + @Override + public boolean isImmuneToZombification() { + return getHandle().eW(); + } + + @Override + public void setImmuneToZombification(boolean flag) { + getHandle().t(flag); + } + + @Override + public boolean isAbleToBeHunted() { + return getHandle().bA; + } + + @Override + public void setIsAbleToBeHunted(boolean flag) { + getHandle().bA = flag; + } + + @Override + public int getConversionTime() { + Preconditions.checkState(isConverting(), "Entity not converting"); + return getHandle().bz; + } + + @Override + public void setConversionTime(int time) { + if (time < 0) { + getHandle().bz = -1; + getHandle().t(false); + } else { + getHandle().bz = time; + } + } + + @Override + public boolean isConverting() { + return getHandle().eO(); // PAIL rename isConverting() + } + @Override public EntityHoglin getHandle() { return (EntityHoglin) entity;