diff --git a/v1_14_R1/src/main/java/net/citizensnpcs/nms/v1_14_R1/entity/RabbitController.java b/v1_14_R1/src/main/java/net/citizensnpcs/nms/v1_14_R1/entity/RabbitController.java index 53b628961..70c7a7cd6 100644 --- a/v1_14_R1/src/main/java/net/citizensnpcs/nms/v1_14_R1/entity/RabbitController.java +++ b/v1_14_R1/src/main/java/net/citizensnpcs/nms/v1_14_R1/entity/RabbitController.java @@ -222,14 +222,19 @@ public class RabbitController extends MobEntityController { } @Override - public void setRabbitType(int i) { - if (npc != null) { - if (NMSImpl.getRabbitTypeField() == null) - return; - this.datawatcher.set(NMSImpl.getRabbitTypeField(), i); + public void setRabbitType(int type) { + if (npc == null) { + super.setRabbitType(type); return; } - super.setRabbitType(i); + if (npc.useMinecraftAI()) { + if (goalSelector.c().count() == 0) { + initPathfinder(); // make sure the evil goals include the default AI goals + } + super.setRabbitType(type); + } else if (NMSImpl.getRabbitTypeField() != null) { + datawatcher.set(NMSImpl.getRabbitTypeField(), type); + } } } diff --git a/v1_15_R1/src/main/java/net/citizensnpcs/nms/v1_15_R1/entity/RabbitController.java b/v1_15_R1/src/main/java/net/citizensnpcs/nms/v1_15_R1/entity/RabbitController.java index 7cadde5ef..9ca03a1fc 100644 --- a/v1_15_R1/src/main/java/net/citizensnpcs/nms/v1_15_R1/entity/RabbitController.java +++ b/v1_15_R1/src/main/java/net/citizensnpcs/nms/v1_15_R1/entity/RabbitController.java @@ -222,14 +222,19 @@ public class RabbitController extends MobEntityController { } @Override - public void setRabbitType(int i) { - if (npc != null) { - if (NMSImpl.getRabbitTypeField() == null) - return; - this.datawatcher.set(NMSImpl.getRabbitTypeField(), i); + public void setRabbitType(int type) { + if (npc == null) { + super.setRabbitType(type); return; } - super.setRabbitType(i); + if (npc.useMinecraftAI()) { + if (goalSelector.c().count() == 0) { + initPathfinder(); // make sure the evil goals include the default AI goals + } + super.setRabbitType(type); + } else if (NMSImpl.getRabbitTypeField() != null) { + datawatcher.set(NMSImpl.getRabbitTypeField(), type); + } } } diff --git a/v1_16_R3/src/main/java/net/citizensnpcs/nms/v1_16_R3/entity/RabbitController.java b/v1_16_R3/src/main/java/net/citizensnpcs/nms/v1_16_R3/entity/RabbitController.java index 8b5fcb668..03b618eec 100644 --- a/v1_16_R3/src/main/java/net/citizensnpcs/nms/v1_16_R3/entity/RabbitController.java +++ b/v1_16_R3/src/main/java/net/citizensnpcs/nms/v1_16_R3/entity/RabbitController.java @@ -222,14 +222,19 @@ public class RabbitController extends MobEntityController { } @Override - public void setRabbitType(int i) { - if (npc != null) { - if (NMSImpl.getRabbitTypeField() == null) - return; - this.datawatcher.set(NMSImpl.getRabbitTypeField(), i); + public void setRabbitType(int type) { + if (npc == null) { + super.setRabbitType(type); return; } - super.setRabbitType(i); + if (npc.useMinecraftAI()) { + if (goalSelector.d().count() == 0) { + initPathfinder(); // make sure the evil goals include the default AI goals + } + super.setRabbitType(type); + } else if (NMSImpl.getRabbitTypeField() != null) { + datawatcher.set(NMSImpl.getRabbitTypeField(), type); + } } } diff --git a/v1_17_R1/src/main/java/net/citizensnpcs/nms/v1_17_R1/entity/RabbitController.java b/v1_17_R1/src/main/java/net/citizensnpcs/nms/v1_17_R1/entity/RabbitController.java index 3b822a10d..12863a104 100644 --- a/v1_17_R1/src/main/java/net/citizensnpcs/nms/v1_17_R1/entity/RabbitController.java +++ b/v1_17_R1/src/main/java/net/citizensnpcs/nms/v1_17_R1/entity/RabbitController.java @@ -206,14 +206,19 @@ public class RabbitController extends MobEntityController { } @Override - public void setRabbitType(int i) { - if (npc != null) { - if (NMSImpl.getRabbitTypeField() == null) - return; - this.entityData.set(NMSImpl.getRabbitTypeField(), i); + public void setRabbitType(int type) { + if (npc == null) { + super.setRabbitType(type); return; } - super.setRabbitType(i); + if (npc.useMinecraftAI()) { + if (goalSelector.getAvailableGoals().size() == 0) { + registerGoals(); // make sure the evil goals include the default AI goals + } + super.setRabbitType(type); + } else if (NMSImpl.getRabbitTypeField() != null) { + entityData.set(NMSImpl.getRabbitTypeField(), type); + } } @Override diff --git a/v1_18_R2/src/main/java/net/citizensnpcs/nms/v1_18_R2/entity/RabbitController.java b/v1_18_R2/src/main/java/net/citizensnpcs/nms/v1_18_R2/entity/RabbitController.java index dfdc660fb..c2ce5ab9f 100644 --- a/v1_18_R2/src/main/java/net/citizensnpcs/nms/v1_18_R2/entity/RabbitController.java +++ b/v1_18_R2/src/main/java/net/citizensnpcs/nms/v1_18_R2/entity/RabbitController.java @@ -207,14 +207,19 @@ public class RabbitController extends MobEntityController { } @Override - public void setRabbitType(int i) { - if (npc != null) { - if (NMSImpl.getRabbitTypeField() == null) - return; - this.entityData.set(NMSImpl.getRabbitTypeField(), i); + public void setRabbitType(int type) { + if (npc == null) { + super.setRabbitType(type); return; } - super.setRabbitType(i); + if (npc.useMinecraftAI()) { + if (goalSelector.getAvailableGoals().size() == 0) { + registerGoals(); // make sure the evil goals include the default AI goals + } + super.setRabbitType(type); + } else if (NMSImpl.getRabbitTypeField() != null) { + entityData.set(NMSImpl.getRabbitTypeField(), type); + } } @Override diff --git a/v1_19_R3/src/main/java/net/citizensnpcs/nms/v1_19_R3/entity/RabbitController.java b/v1_19_R3/src/main/java/net/citizensnpcs/nms/v1_19_R3/entity/RabbitController.java index 7102daa2d..1a1111d12 100644 --- a/v1_19_R3/src/main/java/net/citizensnpcs/nms/v1_19_R3/entity/RabbitController.java +++ b/v1_19_R3/src/main/java/net/citizensnpcs/nms/v1_19_R3/entity/RabbitController.java @@ -209,13 +209,18 @@ public class RabbitController extends MobEntityController { @Override public void setVariant(Variant variant) { - if (npc != null) { - if (NMSImpl.getRabbitTypeField() == null) - return; - this.entityData.set(NMSImpl.getRabbitTypeField(), variant.id()); + if (npc == null) { + super.setVariant(variant); return; } - super.setVariant(variant); + if (npc.useMinecraftAI()) { + if (goalSelector.getAvailableGoals().size() == 0) { + registerGoals(); // make sure the evil goals include the default AI goals + } + super.setVariant(variant); + } else if (NMSImpl.getRabbitTypeField() != null) { + entityData.set(NMSImpl.getRabbitTypeField(), variant.id()); + } } @Override diff --git a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/RabbitController.java b/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/RabbitController.java index 98c07453b..2816d1e7e 100644 --- a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/RabbitController.java +++ b/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/RabbitController.java @@ -199,13 +199,18 @@ public class RabbitController extends MobEntityController { @Override public void setVariant(Variant variant) { - if (npc != null) { - if (NMSImpl.RABBIT_TYPE_DATAWATCHER == null) - return; - this.entityData.set(NMSImpl.RABBIT_TYPE_DATAWATCHER, variant.id()); + if (npc == null) { + super.setVariant(variant); return; } - super.setVariant(variant); + if (npc.useMinecraftAI()) { + if (goalSelector.getAvailableGoals().size() == 0) { + registerGoals(); // make sure the evil goals include the default AI goals + } + super.setVariant(variant); + } else if (NMSImpl.RABBIT_TYPE_DATAWATCHER != null) { + entityData.set(NMSImpl.RABBIT_TYPE_DATAWATCHER, variant.id()); + } } @Override diff --git a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/util/NMSImpl.java b/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/util/NMSImpl.java index bd8703458..6ce378791 100644 --- a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/util/NMSImpl.java +++ b/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/util/NMSImpl.java @@ -2553,7 +2553,6 @@ public class NMSImpl implements NMSBridge { private static final MethodHandle ADVANCEMENTS_PLAYER_SETTER = NMS.getFirstFinalSetter(ServerPlayer.class, PlayerAdvancements.class); - private static final MethodHandle ATTRIBUTE_PROVIDER_MAP = NMS.getFirstGetter(AttributeSupplier.class, Map.class); private static final MethodHandle ATTRIBUTE_PROVIDER_MAP_SETTER = NMS.getFirstFinalSetter(AttributeSupplier.class, Map.class);