@@ -32,7 +32,7 @@ class DefaultMapWrapper implements MapWrapper {
3232 protected final Map <UUID , Integer > viewers = new HashMap <>();
3333
3434 private static Class <?> Entity ;
35- private static Class <?> DataWatcher ;
35+ private static Class <?> DataWatcher ;
3636 private static Class <?> PacketPlayOutEntityMetadata ;
3737
3838 private static FieldResolver PacketEntityMetadataFieldResolver ;
@@ -83,7 +83,7 @@ public void clearViewers() {
8383
8484 @ Override
8585 public boolean isViewing (OfflinePlayer player ) {
86- if (player == null ) { return false ; }
86+ if (player == null ) {return false ;}
8787 return viewers .containsKey (player .getUniqueId ());
8888 }
8989
@@ -130,7 +130,7 @@ public void sendContent(Player player) {
130130
131131 @ Override
132132 public void sendContent (Player player , boolean withoutQueue ) {
133- if (!isViewing (player )) { return ; }
133+ if (!isViewing (player )) {return ;}
134134 int id = getMapId (player );
135135 if (withoutQueue && MapManager .Options .Sender .ALLOW_QUEUE_BYPASS ) {
136136 MapSender .sendMap (id , DefaultMapWrapper .this .content , player );
@@ -153,7 +153,7 @@ public void showInInventory(Player player, int slot, boolean force) {
153153 }
154154
155155 //Adjust the slot ID
156- if (slot < 9 ) { slot += 36 ; } else if (slot > 35 && slot != 45 ) { slot = 8 - (slot - 36 ); }
156+ if (slot < 9 ) {slot += 36 ;} else if (slot > 35 && slot != 45 ) {slot = 8 - (slot - 36 );}
157157
158158 try {
159159 if (PacketPlayOutSlotConstructorResolver == null ) {
@@ -185,7 +185,7 @@ public void showInInventory(Player player, int slot, boolean force) {
185185 Object setSlot = PacketPlayOutSlotConstructorResolver .resolve (new Class []{
186186 int .class ,
187187 int .class ,
188- MapManagerPlugin .nmsClassResolver .resolve ("ItemStack" )
188+ MapManagerPlugin .nmsClassResolver .resolve ("world.item. ItemStack" )
189189 }).newInstance (windowId , slot , craftItemStack );
190190
191191 //Send the packet
@@ -239,14 +239,16 @@ public void showInFrame(Player player, int entityId, String debugInfo) {
239239 itemStack .setItemMeta (itemMeta );
240240 }
241241
242- ItemFrame itemFrame = MapManagerPlugin .getItemFrameById (player .getWorld (), entityId );
243- if (itemFrame != null ) {
244- //Add a reference to this MapWrapper (can be used in MapWrapper#getWrapperForId)
245- itemFrame .removeMetadata ("MAP_WRAPPER_REF" , MapManagerPlugin .instance );
246- itemFrame .setMetadata ("MAP_WRAPPER_REF" , new FixedMetadataValue (MapManagerPlugin .instance , DefaultMapWrapper .this ));
247- }
242+ Bukkit .getScheduler ().runTask (MapManagerPlugin .instance , () -> {
243+ ItemFrame itemFrame = MapManagerPlugin .getItemFrameById (player .getWorld (), entityId );
244+ if (itemFrame != null ) {
245+ //Add a reference to this MapWrapper (can be used in MapWrapper#getWrapperForId)
246+ itemFrame .removeMetadata ("MAP_WRAPPER_REF" , MapManagerPlugin .instance );
247+ itemFrame .setMetadata ("MAP_WRAPPER_REF" , new FixedMetadataValue (MapManagerPlugin .instance , DefaultMapWrapper .this ));
248+ }
248249
249- sendItemFramePacket (player , entityId , itemStack , getMapId (player ));
250+ sendItemFramePacket (player , entityId , itemStack , getMapId (player ));
251+ });
250252 }
251253
252254 @ Override
@@ -262,11 +264,13 @@ public void showInFrame(Player player, ItemFrame frame) {
262264 @ Override
263265 public void clearFrame (Player player , int entityId ) {
264266 sendItemFramePacket (player , entityId , null , -1 );
265- ItemFrame itemFrame = MapManagerPlugin .getItemFrameById (player .getWorld (), entityId );
266- if (itemFrame != null ) {
267- //Remove the reference
268- itemFrame .removeMetadata ("MAP_WRAPPER_REF" , MapManagerPlugin .instance );
269- }
267+ Bukkit .getScheduler ().runTask (MapManagerPlugin .instance , () -> {
268+ ItemFrame itemFrame = MapManagerPlugin .getItemFrameById (player .getWorld (), entityId );
269+ if (itemFrame != null ) {
270+ //Remove the reference
271+ itemFrame .removeMetadata ("MAP_WRAPPER_REF" , MapManagerPlugin .instance );
272+ }
273+ });
270274 }
271275
272276 @ Override
@@ -318,10 +322,10 @@ Object createCraftItemStack(ItemStack itemStack, int mapId) throws ReflectiveOpe
318322 public void sendItemFramePacket (Player player , int entityId , ItemStack itemStack , int mapId ) {
319323 try {
320324 if (Entity == null ) {
321- Entity = MapManagerPlugin .nmsClassResolver .resolve ("Entity" , "world.entity. Entity" );
325+ Entity = MapManagerPlugin .nmsClassResolver .resolve ("world.entity. Entity" , "Entity" );
322326 }
323327 if (DataWatcher == null ) {
324- DataWatcher = MapManagerPlugin .nmsClassResolver .resolve ("DataWatcher" , "network.syncer.DataWatcher" );
328+ DataWatcher = MapManagerPlugin .nmsClassResolver .resolve ("network.syncher. DataWatcher" , "network.syncer.DataWatcher" , " DataWatcher" );
325329 }
326330 if (PacketPlayOutEntityMetadata == null ) {
327331 PacketPlayOutEntityMetadata = MapManagerPlugin .nmsClassResolver
@@ -331,7 +335,7 @@ public void sendItemFramePacket(Player player, int entityId, ItemStack itemStack
331335 PacketEntityMetadataFieldResolver = new FieldResolver (PacketPlayOutEntityMetadata );
332336 }
333337 if (WatchableObjectConstructorResolver == null ) {
334- WatchableObjectConstructorResolver = new ConstructorResolver (MapManagerPlugin .nmsClassResolver .resolve ("WatchableObject" , "DataWatcher$WatchableObject" , "DataWatcher$Item" /*1.9*/ , "network.syncer.DataWatcher$Item" ));
338+ WatchableObjectConstructorResolver = new ConstructorResolver (MapManagerPlugin .nmsClassResolver .resolve ("network.syncher.DataWatcher$Item" , "network.syncer.DataWatcher$Item" , " WatchableObject" , "DataWatcher$WatchableObject" , "DataWatcher$Item" /*1.9*/ ));
335339 }
336340 if (CraftItemStackMethodResolver == null ) {
337341 CraftItemStackMethodResolver = new MethodResolver (MapManagerPlugin .obcClassResolver .resolve ("inventory.CraftItemStack" ));
@@ -340,13 +344,13 @@ public void sendItemFramePacket(Player player, int entityId, ItemStack itemStack
340344 //1.9
341345 if (MinecraftVersion .VERSION .newerThan (Minecraft .Version .v1_9_R1 )) {
342346 if (DataWatcherRegistryFieldResolver == null ) {
343- DataWatcherRegistryFieldResolver = new FieldResolver (MapManagerPlugin .nmsClassResolver .resolve ("DataWatcherRegistry" , "network.syncer.DataWatcherRegistry" ));
347+ DataWatcherRegistryFieldResolver = new FieldResolver (MapManagerPlugin .nmsClassResolver .resolve ("network.syncher. DataWatcherRegistry" , "network.syncer.DataWatcherRegistry" , " DataWatcherRegistry" ));
344348 }
345349 if (DataWatcherItemConstructorResolver == null ) {
346- DataWatcherItemConstructorResolver = new ConstructorResolver (MapManagerPlugin .nmsClassResolver .resolve ("DataWatcher$Item" , "network.syncer.DataWatcher$Item" ));
350+ DataWatcherItemConstructorResolver = new ConstructorResolver (MapManagerPlugin .nmsClassResolver .resolve ("network.syncher. DataWatcher$Item" , "network.syncer.DataWatcher$Item" , " DataWatcher$Item" ));
347351 }
348352 if (DataWatcherObjectConstructorResolver == null ) {
349- DataWatcherObjectConstructorResolver = new ConstructorResolver (MapManagerPlugin .nmsClassResolver .resolve ("DataWatcherObject" , "network.syncer.DataWatcherObject" ));
353+ DataWatcherObjectConstructorResolver = new ConstructorResolver (MapManagerPlugin .nmsClassResolver .resolve ("network.syncher. DataWatcherObject" , "network.syncer.DataWatcherObject" , " DataWatcherObject" ));
350354 }
351355 if (EntityItemFrameFieldResolver == null ) {
352356 EntityItemFrameFieldResolver = new FieldResolver (MapManagerPlugin .nmsClassResolver .resolve ("EntityItemFrame" , "world.entity.decoration.EntityItemFrame" ));
@@ -369,7 +373,7 @@ public void sendItemFramePacket(Player player, int entityId, ItemStack itemStack
369373 meta = noArgConstructor .newInstance ();
370374 } catch (ReflectiveOperationException e ) {
371375 Object dummyDataWatcher = DataWatcher .getConstructor (Entity ).newInstance ((Object ) null );
372- meta = DataWatcher .getConstructor (int .class , DataWatcher , boolean .class )
376+ meta = PacketPlayOutEntityMetadata .getConstructor (int .class , DataWatcher , boolean .class )
373377 .newInstance (entityId , dummyDataWatcher , true );
374378 }
375379
@@ -406,7 +410,9 @@ public void sendItemFramePacket(Player player, int entityId, ItemStack itemStack
406410 }
407411 } else {
408412 Object dataWatcherObject ;
409- if (MinecraftVersion .VERSION .newerThan (Minecraft .Version .v1_13_R1 )) {
413+ if (MinecraftVersion .VERSION .newerThan (Minecraft .Version .v1_17_R1 )) {
414+ dataWatcherObject = EntityItemFrameFieldResolver .resolveAccessor ("ITEM" , "ao" ).get (null );
415+ } else if (MinecraftVersion .VERSION .newerThan (Minecraft .Version .v1_13_R1 )) {
410416 dataWatcherObject = EntityItemFrameFieldResolver .resolveAccessor ("ITEM" , "e" ).get (null );
411417 } else {
412418 dataWatcherObject = EntityItemFrameFieldResolver .resolveAccessor ("c" ).get (null );
@@ -436,8 +442,8 @@ public void sendItemFramePacket(Player player, int entityId, ItemStack itemStack
436442
437443 @ Override
438444 public boolean equals (Object o ) {
439- if (this == o ) { return true ; }
440- if (o == null || getClass () != o .getClass ()) { return false ; }
445+ if (this == o ) {return true ;}
446+ if (o == null || getClass () != o .getClass ()) {return false ;}
441447
442448 DefaultMapWrapper that = (DefaultMapWrapper ) o ;
443449
@@ -449,4 +455,5 @@ public boolean equals(Object o) {
449455 public int hashCode () {
450456 return id ;
451457 }
458+
452459}
0 commit comments