From ee30c7dd18a78ab580a2512c330cdc899370428a Mon Sep 17 00:00:00 2001 From: D3v1s0m <49519439+D3v1s0m@users.noreply.github.com> Date: Wed, 5 Jul 2023 19:48:50 +0530 Subject: [PATCH] implemented Goat properties --- .../znpcsplus/entity/EntityPropertyRegistryImpl.java | 4 ++-- .../lol/pyr/znpcsplus/metadata/MetadataFactory.java | 4 ++++ .../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 | 4 ++++ 6 files changed, 32 insertions(+), 3 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 9703876..1c10045 100644 --- a/plugin/src/main/java/lol/pyr/znpcsplus/entity/EntityPropertyRegistryImpl.java +++ b/plugin/src/main/java/lol/pyr/znpcsplus/entity/EntityPropertyRegistryImpl.java @@ -209,8 +209,8 @@ public class EntityPropertyRegistryImpl implements EntityPropertyRegistry { registerType("piglin_charging_crossbow", false); // TODO // Goat - registerType("has_left_horn", true); // TODO - registerType("has_right_horn", true); // TODO + registerType("has_left_horn", true); + registerType("has_right_horn", true); // Vindicator registerType("celebrating", 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 855f9e4..3a08daf 100644 --- a/plugin/src/main/java/lol/pyr/znpcsplus/metadata/MetadataFactory.java +++ b/plugin/src/main/java/lol/pyr/znpcsplus/metadata/MetadataFactory.java @@ -87,6 +87,10 @@ public interface MetadataFactory { // Ghast EntityData ghastAttacking(boolean attacking); + // Goat + EntityData goatHasLeftHorn(boolean hasLeftHorn); + EntityData goatHasRightHorn(boolean hasRightHorn); + // Villager EntityData villagerData(int type, int profession, int level); } 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 aeb2a86..49e5339 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 @@ -180,6 +180,16 @@ public class V1_17MetadataFactory extends V1_16MetadataFactory { return newEntityData(16, EntityDataTypes.BOOLEAN, attacking); } + @Override + public EntityData goatHasLeftHorn(boolean hasLeftHorn) { + return newEntityData(18, EntityDataTypes.BOOLEAN, hasLeftHorn); + } + + @Override + public EntityData goatHasRightHorn(boolean hasRightHorn) { + return newEntityData(19, EntityDataTypes.BOOLEAN, hasRightHorn); + } + @Override public EntityData villagerData(int type, int profession, int level) { return newEntityData(18, EntityDataTypes.VILLAGER_DATA, new VillagerData(type, profession, level)); 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 11efae6..9876af4 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 @@ -205,6 +205,16 @@ public class V1_8MetadataFactory implements MetadataFactory { return newEntityData(16, EntityDataTypes.BYTE, (byte) (attacking ? 1 : 0)); } + @Override + public EntityData goatHasLeftHorn(boolean hasLeftHorn) { + throw new UnsupportedOperationException("The goat horn entity data isn't supported on this version"); + } + + @Override + public EntityData goatHasRightHorn(boolean hasRightHorn) { + throw new UnsupportedOperationException("The goat horn entity data isn't supported on this version"); + } + @Override public EntityData villagerData(int type, int profession, int level) { return newEntityData(16, EntityDataTypes.INT, profession); 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 e07946e..605dfcf 100644 --- a/plugin/src/main/java/lol/pyr/znpcsplus/npc/NpcTypeRegistryImpl.java +++ b/plugin/src/main/java/lol/pyr/znpcsplus/npc/NpcTypeRegistryImpl.java @@ -308,7 +308,8 @@ public class NpcTypeRegistryImpl implements NpcTypeRegistry { .setHologramOffset(-1.175)); register(builder(p, "goat", EntityTypes.GOAT) - .setHologramOffset(-0.675)); + .setHologramOffset(-0.675) + .addProperties("has_left_horn", "has_right_horn")); if (!version.isNewerThanOrEquals(ServerVersion.V_1_19)) 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 fdd4075..e5ee146 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 @@ -217,6 +217,10 @@ public class V1_8PacketFactory implements PacketFactory { else if (entity.getType().equals(EntityTypes.GHAST)) { add(data, metadataFactory.ghastAttacking(properties.getProperty(propertyRegistry.getByName("attacking", Boolean.class)))); } + else if (entity.getType().equals(EntityTypes.GOAT)) { + add(data, metadataFactory.goatHasLeftHorn(properties.getProperty(propertyRegistry.getByName("has_left_horn", Boolean.class)))); + add(data, metadataFactory.goatHasRightHorn(properties.getProperty(propertyRegistry.getByName("has_right_horn", Boolean.class)))); + } else if (entity.getType().equals(EntityTypes.VILLAGER)) { VillagerProfession profession = properties.getProperty(propertyRegistry.getByName("villager_profession", VillagerProfession.class)); int professionId = profession.ordinal();