SPIGOT-6545: Unable to set Guardian target via API while awareness is disabled

By: DerFrZocker <derrieple@gmail.com>
This commit is contained in:
CraftBukkit/Spigot 2021-07-22 09:36:54 +10:00
parent 0474cc8833
commit bfc74e8628
2 changed files with 48 additions and 0 deletions

View file

@ -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);
}

View file

@ -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;