From f6c7fd5f0fa275c5882fba71108189fff3cf0396 Mon Sep 17 00:00:00 2001 From: filoghost Date: Mon, 5 Jul 2021 23:58:20 +0200 Subject: [PATCH] Fix VisibilitySettings not working --- .../plugin/bridge/protocollib/MetadataHelper.java | 8 ++++++-- .../plugin/bridge/protocollib/PacketSender.java | 15 ++++++++++++--- .../WrapperPlayServerEntityDestroy.java | 7 +++++++ 3 files changed, 25 insertions(+), 5 deletions(-) diff --git a/plugin/src/main/java/me/filoghost/holographicdisplays/plugin/bridge/protocollib/MetadataHelper.java b/plugin/src/main/java/me/filoghost/holographicdisplays/plugin/bridge/protocollib/MetadataHelper.java index 7ede1ec1..18698a4d 100644 --- a/plugin/src/main/java/me/filoghost/holographicdisplays/plugin/bridge/protocollib/MetadataHelper.java +++ b/plugin/src/main/java/me/filoghost/holographicdisplays/plugin/bridge/protocollib/MetadataHelper.java @@ -38,7 +38,9 @@ class MetadataHelper { MetadataHelper() { - if (NMSVersion.isGreaterEqualThan(NMSVersion.v1_14_R1)) { + if (NMSVersion.isGreaterEqualThan(NMSVersion.v1_17_R1)) { + itemSlotIndex = 8; + } else if (NMSVersion.isGreaterEqualThan(NMSVersion.v1_14_R1)) { itemSlotIndex = 7; } else if (NMSVersion.isGreaterEqualThan(NMSVersion.v1_10_R1)) { itemSlotIndex = 6; @@ -48,7 +50,9 @@ class MetadataHelper { itemSlotIndex = 10; } - if (NMSVersion.isGreaterEqualThan(NMSVersion.v1_15_R1)) { + if (NMSVersion.isGreaterEqualThan(NMSVersion.v1_17_R1)) { + armorStandStatusIndex = 15; + } else if (NMSVersion.isGreaterEqualThan(NMSVersion.v1_15_R1)) { armorStandStatusIndex = 14; } else { armorStandStatusIndex = 11; diff --git a/plugin/src/main/java/me/filoghost/holographicdisplays/plugin/bridge/protocollib/PacketSender.java b/plugin/src/main/java/me/filoghost/holographicdisplays/plugin/bridge/protocollib/PacketSender.java index 9a36c028..a30278c1 100644 --- a/plugin/src/main/java/me/filoghost/holographicdisplays/plugin/bridge/protocollib/PacketSender.java +++ b/plugin/src/main/java/me/filoghost/holographicdisplays/plugin/bridge/protocollib/PacketSender.java @@ -185,9 +185,18 @@ class PacketSender { private void sendDestroyEntitiesPacket(Player player, List ids) { - WrapperPlayServerEntityDestroy packet = new WrapperPlayServerEntityDestroy(); - packet.setEntities(ids); - packet.sendPacket(player); + if (NMSVersion.isGreaterEqualThan(NMSVersion.v1_17_R1)) { + // Requires multiple packets + for (Integer id : ids) { + WrapperPlayServerEntityDestroy packet = new WrapperPlayServerEntityDestroy(); + packet.setEntity(id); + packet.sendPacket(player); + } + } else { + WrapperPlayServerEntityDestroy packet = new WrapperPlayServerEntityDestroy(); + packet.setEntities(ids); + packet.sendPacket(player); + } } diff --git a/plugin/src/main/java/me/filoghost/holographicdisplays/plugin/lib/packetwrapper/WrapperPlayServerEntityDestroy.java b/plugin/src/main/java/me/filoghost/holographicdisplays/plugin/lib/packetwrapper/WrapperPlayServerEntityDestroy.java index eee2bf0f..68d6d17b 100644 --- a/plugin/src/main/java/me/filoghost/holographicdisplays/plugin/lib/packetwrapper/WrapperPlayServerEntityDestroy.java +++ b/plugin/src/main/java/me/filoghost/holographicdisplays/plugin/lib/packetwrapper/WrapperPlayServerEntityDestroy.java @@ -56,4 +56,11 @@ public class WrapperPlayServerEntityDestroy extends AbstractPacket { setEntities(Ints.toArray(entities)); } + /** + * Set the entity that will be destroyed. To be used from Minecraft 1.17 and higher. + */ + public void setEntity(Integer entity) { + handle.getIntegers().write(0, entity); + } + }