diff --git a/.idea/encodings.xml b/.idea/encodings.xml index e45f72b..9d4e5cf 100644 --- a/.idea/encodings.xml +++ b/.idea/encodings.xml @@ -29,6 +29,8 @@ + + diff --git a/.idea/misc.xml b/.idea/misc.xml index fadb731..01cf610 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -12,6 +12,13 @@ + + + + - \ No newline at end of file diff --git a/.idea/ros.xml b/.idea/ros.xml new file mode 100644 index 0000000..29eeb8c --- /dev/null +++ b/.idea/ros.xml @@ -0,0 +1,12 @@ + + + + + \ No newline at end of file diff --git a/Dist/pom.xml b/Dist/pom.xml index 0af26ba..d9f9fc6 100644 --- a/Dist/pom.xml +++ b/Dist/pom.xml @@ -77,7 +77,7 @@ tech.sbdevelopment - MapReflectionAPI-NMS-v1_20_R1 + MapReflectionAPI-NMS-v1_20_R4 ${project.parent.version} diff --git a/NMS-v1_20_R1/pom.xml b/NMS-v1_20_R4/pom.xml similarity index 94% rename from NMS-v1_20_R1/pom.xml rename to NMS-v1_20_R4/pom.xml index 6f5cdde..ce1abe3 100644 --- a/NMS-v1_20_R1/pom.xml +++ b/NMS-v1_20_R4/pom.xml @@ -27,11 +27,11 @@ 4.0.0 - MapReflectionAPI-NMS-v1_20_R1 + MapReflectionAPI-NMS-v1_20_R4 - 1.20.1-R0.1-SNAPSHOT - 17 + 1.20.5-R0.1-SNAPSHOT + 21 diff --git a/NMS-v1_20_R1/src/main/java/tech/sbdevelopment/mapreflectionapi/nms/MapSender_v1_20_R1.java b/NMS-v1_20_R4/src/main/java/tech/sbdevelopment/mapreflectionapi/nms/MapSender_v1_20_R4.java similarity index 91% rename from NMS-v1_20_R1/src/main/java/tech/sbdevelopment/mapreflectionapi/nms/MapSender_v1_20_R1.java rename to NMS-v1_20_R4/src/main/java/tech/sbdevelopment/mapreflectionapi/nms/MapSender_v1_20_R4.java index 3f523f7..c1c4956 100644 --- a/NMS-v1_20_R1/src/main/java/tech/sbdevelopment/mapreflectionapi/nms/MapSender_v1_20_R1.java +++ b/NMS-v1_20_R4/src/main/java/tech/sbdevelopment/mapreflectionapi/nms/MapSender_v1_20_R4.java @@ -19,9 +19,10 @@ package tech.sbdevelopment.mapreflectionapi.nms; import net.minecraft.network.protocol.game.PacketPlayOutMap; +import net.minecraft.world.level.saveddata.maps.MapId; import net.minecraft.world.level.saveddata.maps.WorldMap; import org.bukkit.Bukkit; -import org.bukkit.craftbukkit.v1_20_R1.entity.CraftPlayer; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftPlayer; import org.bukkit.entity.Player; import tech.sbdevelopment.mapreflectionapi.MapReflectionAPI; import tech.sbdevelopment.mapreflectionapi.api.ArrayImage; @@ -29,14 +30,16 @@ 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_R1} sends the Map packets to players. + * The {@link MapSender_v1_20_R4} sends the Map packets to players. */ -public class MapSender_v1_20_R1 { +public class MapSender_v1_20_R4 { private static final List sendQueue = new ArrayList<>(); private static int senderID = -1; - private MapSender_v1_20_R1() { + private MapSender_v1_20_R4() { } /** @@ -118,8 +121,10 @@ public class MapSender_v1_20_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_20_R1/src/main/java/tech/sbdevelopment/mapreflectionapi/nms/MapWrapper_v1_20_R1.java b/NMS-v1_20_R4/src/main/java/tech/sbdevelopment/mapreflectionapi/nms/MapWrapper_v1_20_R4.java similarity index 86% rename from NMS-v1_20_R1/src/main/java/tech/sbdevelopment/mapreflectionapi/nms/MapWrapper_v1_20_R1.java rename to NMS-v1_20_R4/src/main/java/tech/sbdevelopment/mapreflectionapi/nms/MapWrapper_v1_20_R4.java index fcdf607..9760612 100644 --- a/NMS-v1_20_R1/src/main/java/tech/sbdevelopment/mapreflectionapi/nms/MapWrapper_v1_20_R1.java +++ b/NMS-v1_20_R4/src/main/java/tech/sbdevelopment/mapreflectionapi/nms/MapWrapper_v1_20_R4.java @@ -18,15 +18,18 @@ package tech.sbdevelopment.mapreflectionapi.nms; +import net.minecraft.core.component.DataComponentType; +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.world.entity.Entity; import net.minecraft.world.entity.decoration.EntityItemFrame; +import net.minecraft.world.level.saveddata.maps.MapId; import org.bukkit.*; -import org.bukkit.craftbukkit.v1_20_R1.CraftWorld; -import org.bukkit.craftbukkit.v1_20_R1.entity.CraftPlayer; -import org.bukkit.craftbukkit.v1_20_R1.inventory.CraftItemStack; +import org.bukkit.craftbukkit.v1_20_R4.CraftWorld; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftPlayer; +import org.bukkit.craftbukkit.v1_20_R4.inventory.CraftItemStack; import org.bukkit.entity.ItemFrame; import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; @@ -40,7 +43,7 @@ import tech.sbdevelopment.mapreflectionapi.api.exceptions.MapLimitExceededExcept import java.util.*; -public class MapWrapper_v1_20_R1 extends MapWrapper { +public class MapWrapper_v1_20_R4 extends MapWrapper { protected MapController controller = new MapController() { private final Map viewers = new HashMap<>(); @@ -81,11 +84,11 @@ public class MapWrapper_v1_20_R1 extends MapWrapper { public void update(ArrayImage content) { MapWrapper duplicate = MapReflectionAPI.getMapManager().getDuplicate(content); if (duplicate != null) { - MapWrapper_v1_20_R1.this.content = duplicate.getContent(); + MapWrapper_v1_20_R4.this.content = duplicate.getContent(); return; } - MapWrapper_v1_20_R1.this.content = content; + MapWrapper_v1_20_R4.this.content = content; for (UUID id : viewers.keySet()) { sendContent(Bukkit.getPlayer(id)); @@ -103,16 +106,16 @@ public class MapWrapper_v1_20_R1 extends MapWrapper { int id = getMapId(player); if (withoutQueue) { - MapSender_v1_20_R1.sendMap(id, MapWrapper_v1_20_R1.this.content, player); + MapSender_v1_20_R4.sendMap(id, MapWrapper_v1_20_R4.this.content, player); } else { - MapSender_v1_20_R1.addToQueue(id, MapWrapper_v1_20_R1.this.content, player); + MapSender_v1_20_R4.addToQueue(id, MapWrapper_v1_20_R4.this.content, player); } } @Override public void cancelSend() { for (int s : viewers.values()) { - MapSender_v1_20_R1.cancelID(s); + MapSender_v1_20_R4.cancelID(s); } } @@ -129,8 +132,8 @@ public class MapWrapper_v1_20_R1 extends MapWrapper { } CraftPlayer craftPlayer = (CraftPlayer) player; - int windowId = craftPlayer.getHandle().bQ.j; //inventoryMenu containerId - int stateId = craftPlayer.getHandle().bQ.j(); //inventoryMenu getStateId() + int windowId = craftPlayer.getHandle().cb.j; //inventoryMenu containerId + int stateId = craftPlayer.getHandle().cb.j(); //inventoryMenu getStateId() ItemStack stack = new ItemStack(Material.FILLED_MAP, 1); net.minecraft.world.item.ItemStack nmsStack = CraftItemStack.asNMSCopy(stack); @@ -186,7 +189,7 @@ public class MapWrapper_v1_20_R1 extends MapWrapper { ItemFrame frame = getItemFrameById(player.getWorld(), entityId); if (frame != null) { frame.removeMetadata("MAP_WRAPPER_REF", MapReflectionAPI.getInstance()); - frame.setMetadata("MAP_WRAPPER_REF", new FixedMetadataValue(MapReflectionAPI.getInstance(), MapWrapper_v1_20_R1.this)); + frame.setMetadata("MAP_WRAPPER_REF", new FixedMetadataValue(MapReflectionAPI.getInstance(), MapWrapper_v1_20_R4.this)); } sendItemFramePacket(player, entityId, stack, getMapId(player)); @@ -217,10 +220,11 @@ public class MapWrapper_v1_20_R1 extends MapWrapper { private void sendItemFramePacket(Player player, int entityId, ItemStack stack, int mapId) { net.minecraft.world.item.ItemStack nmsStack = CraftItemStack.asNMSCopy(stack); - nmsStack.w().a("map", mapId); //getOrCreateTag putInt + MapId mapId1 = new MapId(mapId); + nmsStack.b(DataComponents.B, mapId1); //set - List> list = new ArrayList<>(); - DataWatcher.b dataWatcherItem = DataWatcher.b.a(EntityItemFrame.g, nmsStack); + List> list = new ArrayList<>(); + DataWatcher.c dataWatcherItem = DataWatcher.c.a(EntityItemFrame.g, nmsStack); list.add(dataWatcherItem); PacketPlayOutEntityMetadata packet = new PacketPlayOutEntityMetadata(entityId, list); @@ -228,7 +232,7 @@ public class MapWrapper_v1_20_R1 extends MapWrapper { } }; - public MapWrapper_v1_20_R1(ArrayImage image) { + public MapWrapper_v1_20_R4(ArrayImage image) { super(image); } diff --git a/NMS-v1_20_R1/src/main/java/tech/sbdevelopment/mapreflectionapi/nms/PacketListener_v1_20_R1.java b/NMS-v1_20_R4/src/main/java/tech/sbdevelopment/mapreflectionapi/nms/PacketListener_v1_20_R4.java similarity index 90% rename from NMS-v1_20_R1/src/main/java/tech/sbdevelopment/mapreflectionapi/nms/PacketListener_v1_20_R1.java rename to NMS-v1_20_R4/src/main/java/tech/sbdevelopment/mapreflectionapi/nms/PacketListener_v1_20_R4.java index a07cde1..a774625 100644 --- a/NMS-v1_20_R1/src/main/java/tech/sbdevelopment/mapreflectionapi/nms/PacketListener_v1_20_R1.java +++ b/NMS-v1_20_R4/src/main/java/tech/sbdevelopment/mapreflectionapi/nms/PacketListener_v1_20_R4.java @@ -27,8 +27,8 @@ import net.minecraft.world.EnumHand; import net.minecraft.world.item.ItemStack; import net.minecraft.world.phys.Vec3D; import org.bukkit.Bukkit; -import org.bukkit.craftbukkit.v1_20_R1.entity.CraftPlayer; -import org.bukkit.craftbukkit.v1_20_R1.inventory.CraftItemStack; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftPlayer; +import org.bukkit.craftbukkit.v1_20_R4.inventory.CraftItemStack; import org.bukkit.entity.Player; import org.bukkit.util.Vector; import tech.sbdevelopment.mapreflectionapi.MapReflectionAPI; @@ -41,7 +41,7 @@ import java.util.concurrent.TimeUnit; import static tech.sbdevelopment.mapreflectionapi.utils.ReflectionUtil.*; -public class PacketListener_v1_20_R1 extends PacketListener { +public class PacketListener_v1_20_R4 extends PacketListener { @Override protected void injectPlayer(Player p) { ChannelDuplexHandler channelDuplexHandler = new ChannelDuplexHandler() { @@ -89,8 +89,8 @@ public class PacketListener_v1_20_R1 extends PacketListener { return false; }).get(1, TimeUnit.SECONDS)) return; } else if (packet instanceof PacketPlayInSetCreativeSlot packetPlayInSetCreativeSlot) { - int slot = packetPlayInSetCreativeSlot.a(); - ItemStack item = packetPlayInSetCreativeSlot.c(); + 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); @@ -106,7 +106,7 @@ public class PacketListener_v1_20_R1 extends PacketListener { //The connection is private since 1.19.4 :| NetworkManager networkManager = (NetworkManager) getField(((CraftPlayer) p).getHandle().c, "h"); - ChannelPipeline pipeline = networkManager.m.pipeline(); //connection channel + ChannelPipeline pipeline = networkManager.n.pipeline(); //connection channel pipeline.addBefore("packet_handler", p.getName(), channelDuplexHandler); } @@ -114,7 +114,7 @@ public class PacketListener_v1_20_R1 extends PacketListener { public void removePlayer(Player p) { //The connection is private since 1.19.4 :| NetworkManager networkManager = (NetworkManager) getField(((CraftPlayer) p).getHandle().c, "h"); - Channel channel = networkManager.m; //connection channel + Channel channel = networkManager.n; //connection channel channel.eventLoop().submit(() -> channel.pipeline().remove(p.getName())); } diff --git a/pom.xml b/pom.xml index 1f55a66..7fb69ad 100644 --- a/pom.xml +++ b/pom.xml @@ -40,9 +40,9 @@ API Dist + NMS-v1_20_R4 NMS-v1_20_R3 NMS-v1_20_R2 - NMS-v1_20_R1 NMS-v1_19_R3 NMS-v1_18_R2 NMS-v1_17_R1