diff --git a/nms-patches/net/minecraft/world/entity/monster/EntityGuardian.patch b/nms-patches/net/minecraft/world/entity/monster/EntityGuardian.patch new file mode 100644 index 000000000..8790c2871 --- /dev/null +++ b/nms-patches/net/minecraft/world/entity/monster/EntityGuardian.patch @@ -0,0 +1,11 @@ +--- a/net/minecraft/world/entity/monster/EntityGuardian.java ++++ b/net/minecraft/world/entity/monster/EntityGuardian.java +@@ -123,7 +123,7 @@ + return 80; + } + +- void a(int i) { ++ public void a(int i) { // PAIL package -> public, rename setLaserTarget + this.entityData.set(EntityGuardian.DATA_ID_ATTACK_TARGET, i); + } + diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftGuardian.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftGuardian.java index ef3daa653..980a6d5a7 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftGuardian.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftGuardian.java @@ -4,6 +4,7 @@ import net.minecraft.world.entity.monster.EntityGuardian; import org.bukkit.craftbukkit.CraftServer; import org.bukkit.entity.EntityType; import org.bukkit.entity.Guardian; +import org.bukkit.entity.LivingEntity; public class CraftGuardian extends CraftMonster implements Guardian { @@ -11,6 +12,11 @@ public class CraftGuardian extends CraftMonster implements Guardian { super(server, entity); } + @Override + public EntityGuardian getHandle() { + return (EntityGuardian) super.getHandle(); + } + @Override public String toString() { return "CraftGuardian"; @@ -21,6 +27,37 @@ public class CraftGuardian extends CraftMonster implements Guardian { return EntityType.GUARDIAN; } + @Override + public void setTarget(LivingEntity target) { + super.setTarget(target); + + // clean up laser target, when target is removed + if (target == null) { + getHandle().a(0); // PAIL rename setLaserTarget + } + } + + @Override + public boolean setLaser(boolean activated) { + if (activated) { + LivingEntity target = getTarget(); + if (target == null) { + return false; + } + + getHandle().a(target.getEntityId()); // PAIL rename setLaserTarget + } else { + getHandle().a(0); // PAIL rename setLaserTarget + } + + return true; + } + + @Override + public boolean hasLaser() { + return getHandle().fy(); // PAIL rename hasLaserTarget + } + @Override public boolean isElder() { return false;