geforkt von Mirrors/Paper
4104545b11
"It was from a different time before books were as jank as they are now. As time has gone on they've only proven to be worse and worse."
116 Zeilen
4.1 KiB
Diff
116 Zeilen
4.1 KiB
Diff
From 0000000000000000000000000000000000000000 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/world/entity/monster/Zombie.java b/src/main/java/net/minecraft/world/entity/monster/Zombie.java
|
|
index eabdf345ddf208aaac681f249cb11356ade08673..0878e69aa5805f635971b5ce46783ce043c19bbe 100644
|
|
--- a/src/main/java/net/minecraft/world/entity/monster/Zombie.java
|
|
+++ b/src/main/java/net/minecraft/world/entity/monster/Zombie.java
|
|
@@ -96,6 +96,7 @@ public class Zombie extends Monster {
|
|
private int inWaterTime;
|
|
public int conversionTime;
|
|
private int lastTick = MinecraftServer.currentTick; // CraftBukkit - add field
|
|
+ private boolean shouldBurnInDay = true; // Paper
|
|
|
|
public Zombie(EntityType<? extends Zombie> type, Level world) {
|
|
super(type, world);
|
|
@@ -264,6 +265,12 @@ public class Zombie extends Monster {
|
|
super.aiStep();
|
|
}
|
|
|
|
+ // Paper start
|
|
+ public void stopDrowning() {
|
|
+ this.conversionTime = -1;
|
|
+ this.getEntityData().set(Zombie.DATA_DROWNED_CONVERSION_ID, false);
|
|
+ }
|
|
+ // Paper end
|
|
public void startUnderWaterConversion(int ticksUntilWaterConversion) {
|
|
this.lastTick = MinecraftServer.currentTick; // CraftBukkit
|
|
this.conversionTime = ticksUntilWaterConversion;
|
|
@@ -293,9 +300,15 @@ public class Zombie extends Monster {
|
|
}
|
|
|
|
public boolean isSunSensitive() {
|
|
- return true;
|
|
+ return this.shouldBurnInDay; // Paper - use api value instead
|
|
}
|
|
|
|
+ // Paper start
|
|
+ public void setShouldBurnInDay(boolean shouldBurnInDay) {
|
|
+ this.shouldBurnInDay = shouldBurnInDay;
|
|
+ }
|
|
+ // Paper end
|
|
+
|
|
@Override
|
|
public boolean hurt(DamageSource source, float amount) {
|
|
if (!super.hurt(source, amount)) {
|
|
@@ -415,6 +428,7 @@ public class Zombie extends Monster {
|
|
nbt.putBoolean("CanBreakDoors", this.canBreakDoors());
|
|
nbt.putInt("InWaterTime", this.isInWater() ? this.inWaterTime : -1);
|
|
nbt.putInt("DrownedConversionTime", this.isUnderWaterConverting() ? this.conversionTime : -1);
|
|
+ nbt.putBoolean("Paper.ShouldBurnInDay", this.shouldBurnInDay); // Paper
|
|
}
|
|
|
|
@Override
|
|
@@ -426,6 +440,11 @@ public class Zombie extends Monster {
|
|
if (nbt.contains("DrownedConversionTime", 99) && nbt.getInt("DrownedConversionTime") > -1) {
|
|
this.startUnderWaterConversion(nbt.getInt("DrownedConversionTime"));
|
|
}
|
|
+ // Paper start
|
|
+ if (nbt.contains("Paper.ShouldBurnInDay")) {
|
|
+ this.shouldBurnInDay = nbt.getBoolean("Paper.ShouldBurnInDay");
|
|
+ }
|
|
+ // Paper end
|
|
|
|
}
|
|
|
|
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftZombie.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftZombie.java
|
|
index 2e643e92569512ac4e75c0ef2ee7aa4b688e7356..77e4875484bdaedfba576a6b008245c488b2a112 100644
|
|
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftZombie.java
|
|
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftZombie.java
|
|
@@ -93,6 +93,42 @@ public class CraftZombie extends CraftMonster implements Zombie {
|
|
@Override
|
|
public void setAgeLock(boolean b) {
|
|
}
|
|
+ // Paper start
|
|
+ @Override
|
|
+ public boolean isDrowning() {
|
|
+ return getHandle().isUnderWaterConverting();
|
|
+ }
|
|
+
|
|
+ @Override
|
|
+ public void startDrowning(int drownedConversionTime) {
|
|
+ getHandle().startUnderWaterConversion(drownedConversionTime);
|
|
+ }
|
|
+
|
|
+ @Override
|
|
+ public void stopDrowning() {
|
|
+ getHandle().stopDrowning();
|
|
+ }
|
|
+
|
|
+ @Override
|
|
+ public boolean shouldBurnInDay() {
|
|
+ return getHandle().isSunSensitive();
|
|
+ }
|
|
+
|
|
+ @Override
|
|
+ public boolean isArmsRaised() {
|
|
+ return getHandle().isAggressive();
|
|
+ }
|
|
+
|
|
+ @Override
|
|
+ public void setArmsRaised(final boolean raised) {
|
|
+ getHandle().setAggressive(raised);
|
|
+ }
|
|
+
|
|
+ @Override
|
|
+ public void setShouldBurnInDay(boolean shouldBurnInDay) {
|
|
+ getHandle().setShouldBurnInDay(shouldBurnInDay);
|
|
+ }
|
|
+ // Paper end
|
|
|
|
@Override
|
|
public boolean getAgeLock() {
|