diff --git a/pom.xml b/pom.xml index 56eaa0f..ca7ec3f 100644 --- a/pom.xml +++ b/pom.xml @@ -188,7 +188,7 @@ org.spigotmc spigot-api - 1.19.2-R0.1-SNAPSHOT + 1.19.3-R0.1-SNAPSHOT provided diff --git a/src/main/java/tech/sbdevelopment/mapreflectionapi/api/MapWrapper.java b/src/main/java/tech/sbdevelopment/mapreflectionapi/api/MapWrapper.java index aaf671c..6ae84d8 100644 --- a/src/main/java/tech/sbdevelopment/mapreflectionapi/api/MapWrapper.java +++ b/src/main/java/tech/sbdevelopment/mapreflectionapi/api/MapWrapper.java @@ -317,14 +317,6 @@ public class MapWrapper extends AbstractMapWrapper { private void sendItemFramePacket(Player player, int entityId, ItemStack stack, int mapId) { Object nmsStack = createCraftItemStack(stack, mapId); - Object dataWatcher = ReflectionUtil.callConstructorNull(dataWatcherClass, entityClass); - - Object packet = ReflectionUtil.callConstructor(entityMetadataPacketClass, - entityId, - dataWatcher, //dummy watcher! - true - ); - String dataWatcherObjectName; if (ReflectionUtil.supports(19)) { //1.19, same as 1.17 and 1.18(.2) dataWatcherObjectName = "ao"; @@ -340,10 +332,32 @@ public class MapWrapper extends AbstractMapWrapper { dataWatcherObjectName = "c"; } Object dataWatcherObject = ReflectionUtil.getDeclaredField(entityItemFrameClass, dataWatcherObjectName); - Object dataWatcherItem = ReflectionUtil.callFirstConstructor(dataWatcherItemClass, dataWatcherObject, nmsStack); + List list = new ArrayList<>(); - list.add(dataWatcherItem); - ReflectionUtil.setDeclaredField(packet, "b", list); + + Object packet; + if (ReflectionUtil.supports(19, 3)) { //1.19.3 + Object dataWatcherField = ReflectionUtil.getDeclaredField(dataWatcherClass, "b"); + Object dataWatcherItem = ReflectionUtil.callDeclaredMethod(dataWatcherField, "a", dataWatcherObject, nmsStack); + list.add(dataWatcherItem); + + packet = ReflectionUtil.callConstructor(entityMetadataPacketClass, + entityId, + list + ); + } else { //1.19.2 or lower + Object dataWatcher = ReflectionUtil.callConstructorNull(dataWatcherClass, entityClass); + + packet = ReflectionUtil.callConstructor(entityMetadataPacketClass, + entityId, + dataWatcher, //dummy watcher! + true + ); + + Object dataWatcherItem = ReflectionUtil.callFirstConstructor(dataWatcherItemClass, dataWatcherObject, nmsStack); + list.add(dataWatcherItem); + ReflectionUtil.setDeclaredField(packet, "b", list); + } ReflectionUtil.sendPacketSync(player, packet); }