From f2a4d51e282d7faba07ff0596b282d7500fa9a64 Mon Sep 17 00:00:00 2001 From: Pyrbu Date: Mon, 7 Aug 2023 21:47:10 +0200 Subject: [PATCH] implement bat properties --- .../entity/EntityPropertyRegistryImpl.java | 20 ++++++++++++++----- .../entity/properties/BooleanProperty.java | 4 ++-- .../znpcsplus/metadata/MetadataFactory.java | 7 ------- .../metadata/V1_10MetadataFactory.java | 5 ----- .../metadata/V1_14MetadataFactory.java | 5 ----- .../metadata/V1_15MetadataFactory.java | 15 -------------- .../metadata/V1_17MetadataFactory.java | 15 -------------- .../metadata/V1_8MetadataFactory.java | 15 -------------- .../metadata/V1_9MetadataFactory.java | 5 ----- 9 files changed, 17 insertions(+), 74 deletions(-) diff --git a/plugin/src/main/java/lol/pyr/znpcsplus/entity/EntityPropertyRegistryImpl.java b/plugin/src/main/java/lol/pyr/znpcsplus/entity/EntityPropertyRegistryImpl.java index 1fd4b4b..2ce417a 100644 --- a/plugin/src/main/java/lol/pyr/znpcsplus/entity/EntityPropertyRegistryImpl.java +++ b/plugin/src/main/java/lol/pyr/znpcsplus/entity/EntityPropertyRegistryImpl.java @@ -60,7 +60,6 @@ public class EntityPropertyRegistryImpl implements EntityPropertyRegistry { /* registerType("using_item", false); // TODO: fix it for 1.8 and add new property to use offhand item and riptide animation - registerType("shaking", false); registerType("baby", false); // TODO registerType("pose", NpcPose.STANDING); @@ -79,10 +78,6 @@ public class EntityPropertyRegistryImpl implements EntityPropertyRegistry { // Bat registerType("hanging", false); - // Bee - registerType("angry", false); - registerType("has_nectar", false); - // Blaze registerType("blaze_on_fire", false); @@ -269,6 +264,16 @@ public class EntityPropertyRegistryImpl implements EntityPropertyRegistry { else ghastAttackingIndex = 16; register(new BooleanProperty("attacking", ghastAttackingIndex, false, legacyBooleans)); + // Bat + final int batIndex; + if (ver.isNewerThanOrEquals(ServerVersion.V_1_17)) batIndex = 16; + else if (ver.isNewerThanOrEquals(ServerVersion.V_1_15)) batIndex = 15; + else if (ver.isNewerThanOrEquals(ServerVersion.V_1_14)) batIndex = 14; + else if (ver.isNewerThanOrEquals(ServerVersion.V_1_10)) batIndex = 12; + else if (ver.isNewerThanOrEquals(ServerVersion.V_1_9)) batIndex = 11; + else batIndex = 16; + register(new BooleanProperty("hanging", batIndex, false, true /* This isnt a mistake */)); + if (!ver.isNewerThanOrEquals(ServerVersion.V_1_14)) return; // Fox @@ -287,6 +292,11 @@ public class EntityPropertyRegistryImpl implements EntityPropertyRegistry { register(new BitsetProperty("fox_faceplanted", foxIndex, 0x40)); linkProperties("fox_sitting", "fox_crouching", "fox_sleeping", "fox_faceplanted"); + int beeIndex; + if (ver.isNewerThanOrEquals(ServerVersion.V_1_17)) beeIndex = 17; + else beeIndex = 18; + register(new BitsetProperty("has_nectar", beeIndex++, 0x08)); + register(new EncodedIntegerProperty<>("angry", false, beeIndex, enabled -> enabled ? 1 : 0)); if (!ver.isNewerThanOrEquals(ServerVersion.V_1_17)) return; diff --git a/plugin/src/main/java/lol/pyr/znpcsplus/entity/properties/BooleanProperty.java b/plugin/src/main/java/lol/pyr/znpcsplus/entity/properties/BooleanProperty.java index 2355e56..5cdb880 100644 --- a/plugin/src/main/java/lol/pyr/znpcsplus/entity/properties/BooleanProperty.java +++ b/plugin/src/main/java/lol/pyr/znpcsplus/entity/properties/BooleanProperty.java @@ -28,7 +28,7 @@ public class BooleanProperty extends EntityPropertyImpl { public void apply(Player player, PacketEntity entity, boolean isSpawned, Map properties) { boolean enabled = entity.getProperty(this); if (inverted) enabled = !enabled; - if (legacy) properties.put(index, new EntityData(index, EntityDataTypes.BYTE, (enabled ? 1 : 0))); - else properties.put(index, new EntityData(index, EntityDataTypes.BOOLEAN, enabled)); + if (legacy) properties.put(index, newEntityData(index, EntityDataTypes.BYTE, (byte) (enabled ? 1 : 0))); + else properties.put(index, newEntityData(index, EntityDataTypes.BOOLEAN, enabled)); } } diff --git a/plugin/src/main/java/lol/pyr/znpcsplus/metadata/MetadataFactory.java b/plugin/src/main/java/lol/pyr/znpcsplus/metadata/MetadataFactory.java index 67db0fc..20d4d69 100644 --- a/plugin/src/main/java/lol/pyr/znpcsplus/metadata/MetadataFactory.java +++ b/plugin/src/main/java/lol/pyr/znpcsplus/metadata/MetadataFactory.java @@ -35,13 +35,6 @@ public interface MetadataFactory { EntityData axolotlVariant(int variant); EntityData playingDead(boolean playingDead); - // Bat - EntityData batHanging(boolean hanging); - - // Bee - EntityData beeAngry(boolean angry); - EntityData beeHasNectar(boolean hasNectar); - // Blaze EntityData blazeOnFire(boolean onFire); diff --git a/plugin/src/main/java/lol/pyr/znpcsplus/metadata/V1_10MetadataFactory.java b/plugin/src/main/java/lol/pyr/znpcsplus/metadata/V1_10MetadataFactory.java index 7252a3e..d6669c4 100644 --- a/plugin/src/main/java/lol/pyr/znpcsplus/metadata/V1_10MetadataFactory.java +++ b/plugin/src/main/java/lol/pyr/znpcsplus/metadata/V1_10MetadataFactory.java @@ -7,11 +7,6 @@ import lol.pyr.znpcsplus.util.CreeperState; @Deprecated public class V1_10MetadataFactory extends V1_9MetadataFactory { - @Override - public EntityData batHanging(boolean hanging) { - return newEntityData(12, EntityDataTypes.BYTE, (byte) (hanging ? 0x01 : 0)); - } - @Override public EntityData blazeOnFire(boolean onFire) { return newEntityData(12, EntityDataTypes.BYTE, (byte) (onFire ? 0x01 : 0)); diff --git a/plugin/src/main/java/lol/pyr/znpcsplus/metadata/V1_14MetadataFactory.java b/plugin/src/main/java/lol/pyr/znpcsplus/metadata/V1_14MetadataFactory.java index 7744dc0..4f9bd17 100644 --- a/plugin/src/main/java/lol/pyr/znpcsplus/metadata/V1_14MetadataFactory.java +++ b/plugin/src/main/java/lol/pyr/znpcsplus/metadata/V1_14MetadataFactory.java @@ -32,11 +32,6 @@ public class V1_14MetadataFactory extends V1_13MetadataFactory { return createShoulderEntityRight(18, variant); } - @Override - public EntityData batHanging(boolean hanging) { - return newEntityData(14, EntityDataTypes.BYTE, (byte) (hanging ? 0x01 : 0)); - } - @Override public EntityData blazeOnFire(boolean onFire) { return newEntityData(14, EntityDataTypes.BYTE, (byte) (onFire ? 0x01 : 0)); diff --git a/plugin/src/main/java/lol/pyr/znpcsplus/metadata/V1_15MetadataFactory.java b/plugin/src/main/java/lol/pyr/znpcsplus/metadata/V1_15MetadataFactory.java index 83821e0..9a79da7 100644 --- a/plugin/src/main/java/lol/pyr/znpcsplus/metadata/V1_15MetadataFactory.java +++ b/plugin/src/main/java/lol/pyr/znpcsplus/metadata/V1_15MetadataFactory.java @@ -20,21 +20,6 @@ public class V1_15MetadataFactory extends V1_14MetadataFactory { return createShoulderEntityRight(19, variant); } - @Override - public EntityData batHanging(boolean hanging) { - return newEntityData(15, EntityDataTypes.BYTE, (byte) (hanging ? 0x01 : 0)); - } - - @Override - public EntityData beeAngry(boolean angry) { - return newEntityData(17, EntityDataTypes.INT, angry ? 1 : 0); - } - - @Override - public EntityData beeHasNectar(boolean hasNectar) { - return newEntityData(16, EntityDataTypes.BYTE, (byte) (hasNectar ? 0x08 : 0)); - } - @Override public EntityData blazeOnFire(boolean onFire) { return newEntityData(15, EntityDataTypes.BYTE, (byte) (onFire ? 0x01 : 0)); diff --git a/plugin/src/main/java/lol/pyr/znpcsplus/metadata/V1_17MetadataFactory.java b/plugin/src/main/java/lol/pyr/znpcsplus/metadata/V1_17MetadataFactory.java index 9a9f28d..ae25c11 100644 --- a/plugin/src/main/java/lol/pyr/znpcsplus/metadata/V1_17MetadataFactory.java +++ b/plugin/src/main/java/lol/pyr/znpcsplus/metadata/V1_17MetadataFactory.java @@ -36,21 +36,6 @@ public class V1_17MetadataFactory extends V1_16MetadataFactory { return newEntityData(18, EntityDataTypes.BOOLEAN, playingDead); } - @Override - public EntityData batHanging(boolean hanging) { - return newEntityData(16, EntityDataTypes.BYTE, (byte) (hanging ? 0x01 : 0)); - } - - @Override - public EntityData beeAngry(boolean angry) { - return newEntityData(18, EntityDataTypes.INT, angry ? 1 : 0); - } - - @Override - public EntityData beeHasNectar(boolean hasNectar) { - return newEntityData(17, EntityDataTypes.BYTE, (byte) (hasNectar ? 0x08 : 0)); - } - @Override public EntityData blazeOnFire(boolean onFire) { return newEntityData(16, EntityDataTypes.BYTE, (byte) (onFire ? 0x01 : 0)); diff --git a/plugin/src/main/java/lol/pyr/znpcsplus/metadata/V1_8MetadataFactory.java b/plugin/src/main/java/lol/pyr/znpcsplus/metadata/V1_8MetadataFactory.java index 30e8218..2e5b777 100644 --- a/plugin/src/main/java/lol/pyr/znpcsplus/metadata/V1_8MetadataFactory.java +++ b/plugin/src/main/java/lol/pyr/znpcsplus/metadata/V1_8MetadataFactory.java @@ -40,21 +40,6 @@ public class V1_8MetadataFactory implements MetadataFactory { throw new UnsupportedOperationException("The playing dead entity data isn't supported on this version"); } - @Override - public EntityData batHanging(boolean hanging) { - return newEntityData(16, EntityDataTypes.BYTE, (byte) (hanging ? 1 : 0)); - } - - @Override - public EntityData beeAngry(boolean angry) { - throw new UnsupportedOperationException("The bee properties entity data isn't supported on this version"); - } - - @Override - public EntityData beeHasNectar(boolean hasNectar) { - throw new UnsupportedOperationException("The bee properties entity data isn't supported on this version"); - } - @Override public EntityData blazeOnFire(boolean onFire) { return newEntityData(16, EntityDataTypes.BYTE, (byte) (onFire ? 1 : 0)); diff --git a/plugin/src/main/java/lol/pyr/znpcsplus/metadata/V1_9MetadataFactory.java b/plugin/src/main/java/lol/pyr/znpcsplus/metadata/V1_9MetadataFactory.java index 8c69719..1a4ce69 100644 --- a/plugin/src/main/java/lol/pyr/znpcsplus/metadata/V1_9MetadataFactory.java +++ b/plugin/src/main/java/lol/pyr/znpcsplus/metadata/V1_9MetadataFactory.java @@ -7,11 +7,6 @@ import lol.pyr.znpcsplus.util.CreeperState; @Deprecated public class V1_9MetadataFactory extends V1_8MetadataFactory { - @Override - public EntityData batHanging(boolean hanging) { - return newEntityData(11, EntityDataTypes.BYTE, (byte) (hanging ? 0x01 : 0)); - } - @Override public EntityData blazeOnFire(boolean onFire) { return newEntityData(16, EntityDataTypes.BYTE, (byte) (onFire ? 1 : 0));