diff --git a/NMS-v1_20_R4/src/main/java/tech/sbdevelopment/mapreflectionapi/nms/MapSender_v1_20_R4.java b/NMS-v1_20_R4/src/main/java/tech/sbdevelopment/mapreflectionapi/nms/MapSender_v1_20_R4.java index c1c4956..dec1ac9 100644 --- a/NMS-v1_20_R4/src/main/java/tech/sbdevelopment/mapreflectionapi/nms/MapSender_v1_20_R4.java +++ b/NMS-v1_20_R4/src/main/java/tech/sbdevelopment/mapreflectionapi/nms/MapSender_v1_20_R4.java @@ -30,8 +30,6 @@ import tech.sbdevelopment.mapreflectionapi.api.ArrayImage; import java.util.ArrayList; import java.util.List; -import static tech.sbdevelopment.mapreflectionapi.utils.ReflectionUtil.supports; - /** * The {@link MapSender_v1_20_R4} sends the Map packets to players. */ diff --git a/NMS-v1_21_R1/src/main/java/tech/sbdevelopment/mapreflectionapi/nms/MapSender_v1_21_R1.java b/NMS-v1_21_R1/src/main/java/tech/sbdevelopment/mapreflectionapi/nms/MapSender_v1_21_R1.java index c349201..8e4ba08 100644 --- a/NMS-v1_21_R1/src/main/java/tech/sbdevelopment/mapreflectionapi/nms/MapSender_v1_21_R1.java +++ b/NMS-v1_21_R1/src/main/java/tech/sbdevelopment/mapreflectionapi/nms/MapSender_v1_21_R1.java @@ -108,7 +108,7 @@ public class MapSender_v1_21_R1 { return; } - final MapId id = new MapId(-id0); + final int id = -id0; Bukkit.getScheduler().runTaskAsynchronously(MapReflectionAPI.getInstance(), () -> { try { WorldMap.b updateData = new WorldMap.b( @@ -119,8 +119,10 @@ public class MapSender_v1_21_R1 { content.array //Data ); + MapId mapId = new MapId(id); + PacketPlayOutMap packet = new PacketPlayOutMap( - id, //ID + mapId, //ID (byte) 0, //Scale false, //Show icons new ArrayList<>(), //Icons diff --git a/NMS-v1_21_R1/src/main/java/tech/sbdevelopment/mapreflectionapi/nms/MapWrapper_v1_21_R1.java b/NMS-v1_21_R1/src/main/java/tech/sbdevelopment/mapreflectionapi/nms/MapWrapper_v1_21_R1.java index bae1bea..453343d 100644 --- a/NMS-v1_21_R1/src/main/java/tech/sbdevelopment/mapreflectionapi/nms/MapWrapper_v1_21_R1.java +++ b/NMS-v1_21_R1/src/main/java/tech/sbdevelopment/mapreflectionapi/nms/MapWrapper_v1_21_R1.java @@ -19,14 +19,13 @@ package tech.sbdevelopment.mapreflectionapi.nms; import net.minecraft.core.component.DataComponentType; -import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.core.component.DataComponents; import net.minecraft.network.protocol.game.PacketPlayOutEntityMetadata; import net.minecraft.network.protocol.game.PacketPlayOutSetSlot; import net.minecraft.network.syncher.DataWatcher; -import net.minecraft.resources.MinecraftKey; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.decoration.EntityItemFrame; -import net.minecraft.world.item.Items; +import net.minecraft.world.level.saveddata.maps.MapId; import org.bukkit.*; import org.bukkit.craftbukkit.v1_21_R1.CraftWorld; import org.bukkit.craftbukkit.v1_21_R1.entity.CraftPlayer; @@ -221,7 +220,8 @@ public class MapWrapper_v1_21_R1 extends MapWrapper { private void sendItemFramePacket(Player player, int entityId, ItemStack stack, int mapId) { net.minecraft.world.item.ItemStack nmsStack = CraftItemStack.asNMSCopy(stack); - nmsStack.a().a(BuiltInRegistries.aq.a(MinecraftKey.a("minecraft:map_id")), mapId); //getOrCreateTag putInt + MapId mapId1 = new MapId(mapId); + nmsStack.b(DataComponents.B, mapId1); //set List> list = new ArrayList<>(); DataWatcher.c dataWatcherItem = DataWatcher.c.a(EntityItemFrame.f, nmsStack); diff --git a/NMS-v1_21_R1/src/main/java/tech/sbdevelopment/mapreflectionapi/nms/PacketListener_v1_21_R1.java b/NMS-v1_21_R1/src/main/java/tech/sbdevelopment/mapreflectionapi/nms/PacketListener_v1_21_R1.java index e722e1c..21411c5 100644 --- a/NMS-v1_21_R1/src/main/java/tech/sbdevelopment/mapreflectionapi/nms/PacketListener_v1_21_R1.java +++ b/NMS-v1_21_R1/src/main/java/tech/sbdevelopment/mapreflectionapi/nms/PacketListener_v1_21_R1.java @@ -89,8 +89,8 @@ public class PacketListener_v1_21_R1 extends PacketListener { return false; }).get(1, TimeUnit.SECONDS)) return; } else if (packet instanceof PacketPlayInSetCreativeSlot packetPlayInSetCreativeSlot) { - int slot = packetPlayInSetCreativeSlot.b(); - ItemStack item = packetPlayInSetCreativeSlot.e(); + int slot = (int) getDeclaredField(packetPlayInSetCreativeSlot, supports(20, 4) ? "b" : "a"); //slot, 1.20.5 = b, lower is a + ItemStack item = (ItemStack) getDeclaredField(packetPlayInSetCreativeSlot, supports(20, 4) ? "e" : "d"); //item, 1.20.5 = e, lower is d boolean async = !plugin.getServer().isPrimaryThread(); CreateInventoryMapUpdateEvent event = new CreateInventoryMapUpdateEvent(p, slot, CraftItemStack.asBukkitCopy(item), async);