From 3647a95b275c25c66f75e9bda56203347f082e4c Mon Sep 17 00:00:00 2001 From: D3v1s0m <49519439+D3v1s0m@users.noreply.github.com> Date: Wed, 28 Jun 2023 18:11:27 +0530 Subject: [PATCH] Implemented Bee properties --- .../znpcsplus/entity/EntityPropertyRegistryImpl.java | 10 +++++----- .../lol/pyr/znpcsplus/metadata/MetadataFactory.java | 4 ++++ .../pyr/znpcsplus/metadata/V1_15MetadataFactory.java | 10 ++++++++++ .../pyr/znpcsplus/metadata/V1_17MetadataFactory.java | 10 ++++++++++ .../pyr/znpcsplus/metadata/V1_8MetadataFactory.java | 10 ++++++++++ .../lol/pyr/znpcsplus/npc/NpcTypeRegistryImpl.java | 3 ++- .../lol/pyr/znpcsplus/packets/V1_8PacketFactory.java | 10 +++++++++- 7 files changed, 50 insertions(+), 7 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 f1f2e41..b70e22e 100644 --- a/plugin/src/main/java/lol/pyr/znpcsplus/entity/EntityPropertyRegistryImpl.java +++ b/plugin/src/main/java/lol/pyr/znpcsplus/entity/EntityPropertyRegistryImpl.java @@ -89,7 +89,11 @@ public class EntityPropertyRegistryImpl implements EntityPropertyRegistry { registerType("playing_dead", false); // TODO fix disabling // Bat - registerType("hanging", false); // TODO + registerType("hanging", false); + + // Bee + registerType("angry", false); + registerType("has_nectar", false); // Pufferfish registerType("puff_state", null); // TODO: Make a puff state enum class @@ -109,10 +113,6 @@ public class EntityPropertyRegistryImpl implements EntityPropertyRegistry { registerType("carpet_color", DyeColor.class); // TODO registerType("llama_variant", 0); // TODO - // Bee - registerType("angry", false); // TODO - registerType("has_nectar", false); // TODO - // Fox registerType("fox_variant", 0); // TODO: 0 = red, 1 = snow registerType("fox_sitting", false); // TODO 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 a03adb7..7daf843 100644 --- a/plugin/src/main/java/lol/pyr/znpcsplus/metadata/MetadataFactory.java +++ b/plugin/src/main/java/lol/pyr/znpcsplus/metadata/MetadataFactory.java @@ -46,4 +46,8 @@ public interface MetadataFactory { // Bat EntityData batHanging(boolean hanging); + + // Bee + EntityData beeAngry(boolean angry); + EntityData beeHasNectar(boolean hasNectar); } 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 2e547cb..d2d192e 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 @@ -44,4 +44,14 @@ public class V1_15MetadataFactory extends V1_14MetadataFactory { 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)); + } } 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 1a3b704..2667def 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 @@ -84,4 +84,14 @@ public class V1_17MetadataFactory extends V1_16MetadataFactory { 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)); + } } 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 d4a2df5..07d03b6 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 @@ -109,6 +109,16 @@ public class V1_8MetadataFactory implements MetadataFactory { 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 silent(boolean enabled) { return newEntityData(4, EntityDataTypes.BYTE, (byte) (enabled ? 1 : 0)); diff --git a/plugin/src/main/java/lol/pyr/znpcsplus/npc/NpcTypeRegistryImpl.java b/plugin/src/main/java/lol/pyr/znpcsplus/npc/NpcTypeRegistryImpl.java index 0ca0b22..d4ae6ba 100644 --- a/plugin/src/main/java/lol/pyr/znpcsplus/npc/NpcTypeRegistryImpl.java +++ b/plugin/src/main/java/lol/pyr/znpcsplus/npc/NpcTypeRegistryImpl.java @@ -263,7 +263,8 @@ public class NpcTypeRegistryImpl implements NpcTypeRegistry { if (!version.isNewerThanOrEquals(ServerVersion.V_1_15)) return; register(builder(p, "bee", EntityTypes.BEE) - .setHologramOffset(-1.375)); + .setHologramOffset(-1.375) + .addProperties("angry", "has_nectar")); if (!version.isNewerThanOrEquals(ServerVersion.V_1_16)) return; diff --git a/plugin/src/main/java/lol/pyr/znpcsplus/packets/V1_8PacketFactory.java b/plugin/src/main/java/lol/pyr/znpcsplus/packets/V1_8PacketFactory.java index 1902fdf..9b0985c 100644 --- a/plugin/src/main/java/lol/pyr/znpcsplus/packets/V1_8PacketFactory.java +++ b/plugin/src/main/java/lol/pyr/znpcsplus/packets/V1_8PacketFactory.java @@ -169,7 +169,15 @@ public class V1_8PacketFactory implements PacketFactory { add(data, metadataFactory.playingDead(properties.getProperty(propertyRegistry.getByName("playing_dead", Boolean.class)))); } else if (entity.getType().equals(EntityTypes.BAT)) { - add(data, metadataFactory.batHanging(properties.getProperty(propertyRegistry.getByName("hanging", Boolean.class)))); + add(data, metadataFactory.batHanging(properties.getProperty(propertyRegistry.getByName("hanging", Boolean.class)))); + } + else if (entity.getType().equals(EntityTypes.BEE)) { + add(data, metadataFactory.beeAngry( + properties.getProperty(propertyRegistry.getByName("angry", Boolean.class)) + )); + add(data, metadataFactory.beeHasNectar( + properties.getProperty(propertyRegistry.getByName("has_nectar", Boolean.class)) + )); } if (properties.hasProperty(propertyRegistry.getByName("name"))) { add(data, metadataFactory.name(PapiUtil.set(textSerializer, player, properties.getProperty(propertyRegistry.getByName("name", Component.class)))));