From ef49048ee169324c72bcf3b098b628d4c071a787 Mon Sep 17 00:00:00 2001 From: Stijn Bannink Date: Mon, 29 Apr 2024 16:50:10 +0200 Subject: [PATCH] Started with 1.20.5 support --- pom.xml | 2 +- .../mapreflectionapi/MapReflectionAPI.java | 2 +- .../mapreflectionapi/api/MapSender.java | 20 ++++++++++++++++++- .../listeners/PacketListener.java | 4 ++-- 4 files changed, 23 insertions(+), 5 deletions(-) diff --git a/pom.xml b/pom.xml index 8d7f65d..7ee27dc 100644 --- a/pom.xml +++ b/pom.xml @@ -161,7 +161,7 @@ org.spigotmc spigot-api - 1.20.4-R0.1-SNAPSHOT + 1.20.5-R0.1-SNAPSHOT provided diff --git a/src/main/java/tech/sbdevelopment/mapreflectionapi/MapReflectionAPI.java b/src/main/java/tech/sbdevelopment/mapreflectionapi/MapReflectionAPI.java index 2049d7b..bc41d31 100644 --- a/src/main/java/tech/sbdevelopment/mapreflectionapi/MapReflectionAPI.java +++ b/src/main/java/tech/sbdevelopment/mapreflectionapi/MapReflectionAPI.java @@ -69,7 +69,7 @@ public class MapReflectionAPI extends JavaPlugin { getLogger().info("Made by © Copyright SBDevelopment 2023"); if (!supports(12)) { - getLogger().severe("MapReflectionAPI only supports Minecraft 1.12 - 1.19.4!"); + getLogger().severe("MapReflectionAPI only supports Minecraft 1.12 - 1.20.5!"); Bukkit.getPluginManager().disablePlugin(this); return; } diff --git a/src/main/java/tech/sbdevelopment/mapreflectionapi/api/MapSender.java b/src/main/java/tech/sbdevelopment/mapreflectionapi/api/MapSender.java index 2cb8844..cc35b8a 100644 --- a/src/main/java/tech/sbdevelopment/mapreflectionapi/api/MapSender.java +++ b/src/main/java/tech/sbdevelopment/mapreflectionapi/api/MapSender.java @@ -112,7 +112,25 @@ public class MapSender { final int id = -id0; Object packet; - if (supports(17)) { //1.17+ + if (supports(20, 4)) { //1.20.5+ + //TODO: Implement 1.20.5+ map sending + + Object updateData = ReflectionUtil.callConstructor(worldMapData, + content.minX, //X pos + content.minY, //Y pos + content.maxX, //X size (2nd X pos) + content.maxY, //Y size (2nd Y pos) + content.array //Data + ); + + packet = ReflectionUtil.callConstructor(packetPlayOutMapClass, + id, //ID + (byte) 0, //Scale, 0 = 1 block per pixel + false, //Show icons + new ReflectionUtil.CollectionParam<>(), //Icons + updateData + ); + } else if (supports(17)) { //1.17+ Object updateData = ReflectionUtil.callConstructor(worldMapData, content.minX, //X pos content.minY, //Y pos diff --git a/src/main/java/tech/sbdevelopment/mapreflectionapi/listeners/PacketListener.java b/src/main/java/tech/sbdevelopment/mapreflectionapi/listeners/PacketListener.java index b5c3f17..2804d44 100644 --- a/src/main/java/tech/sbdevelopment/mapreflectionapi/listeners/PacketListener.java +++ b/src/main/java/tech/sbdevelopment/mapreflectionapi/listeners/PacketListener.java @@ -140,8 +140,8 @@ public class PacketListener implements Listener { } else if (packet.getClass().isAssignableFrom(packetPlayInSetCreativeSlotClass)) { Object packetPlayInSetCreativeSlot = packetPlayInSetCreativeSlotClass.cast(packet); - int slot = (int) ReflectionUtil.callDeclaredMethod(packetPlayInSetCreativeSlot, supports(19, 4) ? "a" : supports(13) ? "b" : "a"); //1.19.4 = a, 1.19.3 - 1.13 = b, 1.12 = a - Object nmsStack = ReflectionUtil.callDeclaredMethod(packetPlayInSetCreativeSlot, supports(20, 2) ? "d" : supports(18) ? "c" : "getItemStack"); //1.20.2 = d, >= 1.18 = c, 1.17 = getItemStack + int slot = (int) ReflectionUtil.callDeclaredMethod(packetPlayInSetCreativeSlot, supports(20,4) ? "b" : supports(19, 4) ? "a" : supports(13) ? "b" : "a"); //1.20.4 - 1.19.4 = a, 1.19.3 - 1.13 and 1.20.5 = b, 1.12 = a + Object nmsStack = ReflectionUtil.callDeclaredMethod(packetPlayInSetCreativeSlot, supports(20,4) ? "e" : supports(20, 2) ? "d" : supports(18) ? "c" : "getItemStack"); //1.20.5 = e, 1.20.2-1.20.4 = d, >= 1.18 = c, 1.17 = getItemStack ItemStack craftStack = (ItemStack) ReflectionUtil.callMethod(craftStackClass, "asBukkitCopy", nmsStack); boolean async = !MapReflectionAPI.getInstance().getServer().isPrimaryThread();