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 588ebd2..e3f5b20 100644 --- a/plugin/src/main/java/lol/pyr/znpcsplus/metadata/MetadataFactory.java +++ b/plugin/src/main/java/lol/pyr/znpcsplus/metadata/MetadataFactory.java @@ -19,7 +19,7 @@ import net.kyori.adventure.text.Component; */ public interface MetadataFactory { EntityData skinLayers(boolean cape, boolean jacket, boolean leftSleeve, boolean rightSleeve, boolean leftLeg, boolean rightLeg, boolean hat); - EntityData effects(boolean onFire, boolean glowing, boolean invisible, boolean usingElytra); + EntityData effects(boolean onFire, boolean glowing, boolean invisible, boolean usingElytra, boolean usingItemLegacy); EntityData silent(boolean enabled); EntityData name(Component name); EntityData nameShown(); diff --git a/plugin/src/main/java/lol/pyr/znpcsplus/metadata/V1_11MetadataFactory.java b/plugin/src/main/java/lol/pyr/znpcsplus/metadata/V1_11MetadataFactory.java index b5d02c4..7333545 100644 --- a/plugin/src/main/java/lol/pyr/znpcsplus/metadata/V1_11MetadataFactory.java +++ b/plugin/src/main/java/lol/pyr/znpcsplus/metadata/V1_11MetadataFactory.java @@ -4,6 +4,11 @@ import com.github.retrooper.packetevents.protocol.entity.data.EntityData; import com.github.retrooper.packetevents.protocol.entity.data.EntityDataTypes; public class V1_11MetadataFactory extends V1_10MetadataFactory { + @Override + public EntityData effects(boolean onFire, boolean glowing, boolean invisible, boolean usingElytra, boolean usingItemLegacy) { + return super.effects(onFire, glowing, invisible, usingElytra, false); + } + @Override public EntityData usingItem(boolean usingItem, boolean offHand, boolean riptide) { return newEntityData(6, EntityDataTypes.BYTE, (byte) ((usingItem ? 0x01 : 0) | (offHand ? 0x02 : 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 e2f73b6..8416420 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 @@ -10,7 +10,7 @@ public class V1_17MetadataFactory extends V1_16MetadataFactory { } @Override - public EntityData effects(boolean onFire, boolean glowing, boolean invisible, boolean usingElytra) { + public EntityData effects(boolean onFire, boolean glowing, boolean invisible, boolean usingElytra, boolean usingItemLegacy) { return newEntityData(0, EntityDataTypes.BYTE, (byte) ((onFire ? 0x01 : 0) | (invisible ? 0x20 : 0) | (glowing ? 0x40 : 0) | (usingElytra ? 0x80 : 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 91ccfeb..9df386c 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 @@ -14,8 +14,8 @@ public class V1_8MetadataFactory implements MetadataFactory { } @Override - public EntityData effects(boolean onFire, boolean glowing, boolean invisible, boolean usingElytra) { - return newEntityData(0, EntityDataTypes.BYTE, (byte) ((onFire ? 0x01 : 0) | (invisible ? 0x20 : 0))); + public EntityData effects(boolean onFire, boolean glowing, boolean invisible, boolean usingElytra, boolean usingItemLegacy) { + return newEntityData(0, EntityDataTypes.BYTE, (byte) ((onFire ? 0x01 : 0) | (usingItemLegacy ? 0x10 : 0) | (invisible ? 0x20 : 0))); } @Override @@ -45,7 +45,7 @@ public class V1_8MetadataFactory implements MetadataFactory { @Override public EntityData usingItem(boolean enabled, boolean offHand, boolean riptide) { - return newEntityData(0, EntityDataTypes.BYTE, (byte) (enabled ? 0x10 : 0)); + throw new UnsupportedOperationException("The standalone using item data isn't supported on this version"); } @Override 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 96fd895..8048798 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 @@ -12,8 +12,8 @@ public class V1_9MetadataFactory extends V1_8MetadataFactory { } @Override - public EntityData effects(boolean onFire, boolean glowing, boolean invisible, boolean usingElytra) { - return newEntityData(0, EntityDataTypes.BYTE, (byte) ((onFire ? 0x01 : 0) | (invisible ? 0x20 : 0) | (glowing ? 0x40 : 0) | (usingElytra ? 0x80 : 0))); + public EntityData effects(boolean onFire, boolean glowing, boolean invisible, boolean usingElytra, boolean usingItemLegacy) { + return newEntityData(0, EntityDataTypes.BYTE, (byte) ((onFire ? 0x01 : 0) | (usingItemLegacy ? 0x10 : 0) | (invisible ? 0x20 : 0) | (glowing ? 0x40 : 0) | (usingElytra ? 0x80 : 0))); } @Override diff --git a/plugin/src/main/java/lol/pyr/znpcsplus/packets/V1_11PacketFactory.java b/plugin/src/main/java/lol/pyr/znpcsplus/packets/V1_11PacketFactory.java new file mode 100644 index 0000000..4649f7d --- /dev/null +++ b/plugin/src/main/java/lol/pyr/znpcsplus/packets/V1_11PacketFactory.java @@ -0,0 +1,26 @@ +package lol.pyr.znpcsplus.packets; + +import com.github.retrooper.packetevents.PacketEventsAPI; +import com.github.retrooper.packetevents.protocol.entity.data.EntityData; +import lol.pyr.znpcsplus.api.entity.PropertyHolder; +import lol.pyr.znpcsplus.entity.EntityPropertyRegistryImpl; +import lol.pyr.znpcsplus.entity.PacketEntity; +import lol.pyr.znpcsplus.metadata.MetadataFactory; +import lol.pyr.znpcsplus.scheduling.TaskScheduler; +import org.bukkit.entity.Player; +import org.bukkit.plugin.Plugin; + +import java.util.Map; + +public class V1_11PacketFactory extends V1_10PacketFactory { + public V1_11PacketFactory(TaskScheduler scheduler, MetadataFactory metadataFactory, PacketEventsAPI packetEvents, EntityPropertyRegistryImpl propertyRegistry) { + super(scheduler, metadataFactory, packetEvents, propertyRegistry); + } + + @Override + public Map generateMetadata(Player player, PacketEntity entity, PropertyHolder properties) { + Map data = super.generateMetadata(player, entity, properties); + add(data, metadataFactory.usingItem(properties.getProperty(propertyRegistry.getByName("using_item", Boolean.class)), false, false)); + return data; + } +} diff --git a/plugin/src/main/java/lol/pyr/znpcsplus/packets/V1_14PacketFactory.java b/plugin/src/main/java/lol/pyr/znpcsplus/packets/V1_14PacketFactory.java index 9350f6b..8a8d3fa 100644 --- a/plugin/src/main/java/lol/pyr/znpcsplus/packets/V1_14PacketFactory.java +++ b/plugin/src/main/java/lol/pyr/znpcsplus/packets/V1_14PacketFactory.java @@ -18,7 +18,7 @@ import org.bukkit.plugin.Plugin; import java.util.Map; import java.util.Optional; -public class V1_14PacketFactory extends V1_10PacketFactory { +public class V1_14PacketFactory extends V1_11PacketFactory { public V1_14PacketFactory(TaskScheduler scheduler, MetadataFactory metadataFactory, PacketEventsAPI packetEvents, EntityPropertyRegistryImpl propertyRegistry) { super(scheduler, metadataFactory, packetEvents, propertyRegistry); } 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 883a969..24a1f71 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 @@ -139,10 +139,10 @@ public class V1_8PacketFactory implements PacketFactory { properties.getProperty(propertyRegistry.getByName("fire", Boolean.class)), false, properties.getProperty(propertyRegistry.getByName("invisible", Boolean.class)), - false) - ); + false, + properties.getProperty(propertyRegistry.getByName("using_item", Boolean.class)) + )); add(data, metadataFactory.silent(properties.getProperty(propertyRegistry.getByName("silent", Boolean.class)))); - add(data, metadataFactory.usingItem(properties.getProperty(propertyRegistry.getByName("using_item", Boolean.class)), false, false)); add(data, metadataFactory.potionColor(properties.getProperty(propertyRegistry.getByName("potion_color", Color.class)).asRGB())); add(data, metadataFactory.potionAmbient(properties.getProperty(propertyRegistry.getByName("potion_ambient", Boolean.class)))); if (properties.hasProperty(propertyRegistry.getByName("name"))) { diff --git a/plugin/src/main/java/lol/pyr/znpcsplus/packets/V1_9PacketFactory.java b/plugin/src/main/java/lol/pyr/znpcsplus/packets/V1_9PacketFactory.java index e492692..f593cfa 100644 --- a/plugin/src/main/java/lol/pyr/znpcsplus/packets/V1_9PacketFactory.java +++ b/plugin/src/main/java/lol/pyr/znpcsplus/packets/V1_9PacketFactory.java @@ -23,7 +23,9 @@ public class V1_9PacketFactory extends V1_8PacketFactory { add(data, metadataFactory.effects(properties.getProperty(propertyRegistry.getByName("fire", Boolean.class)), properties.hasProperty(propertyRegistry.getByName("glow", Boolean.class)), properties.getProperty(propertyRegistry.getByName("invisible", Boolean.class)), - false)); + false, + properties.getProperty(propertyRegistry.getByName("using_item", Boolean.class)) + )); return data; } }