From f25c727a150180229c90f0f9bcd1642c1a459c79 Mon Sep 17 00:00:00 2001 From: Stijn Bannink Date: Mon, 29 Apr 2024 18:01:28 +0200 Subject: [PATCH] Added 1.20.5 support finished --- .../mapreflectionapi/api/MapSender.java | 6 +++--- .../mapreflectionapi/api/MapWrapper.java | 13 +++++++++---- 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/src/main/java/tech/sbdevelopment/mapreflectionapi/api/MapSender.java b/src/main/java/tech/sbdevelopment/mapreflectionapi/api/MapSender.java index cc35b8a..3d5ae64 100644 --- a/src/main/java/tech/sbdevelopment/mapreflectionapi/api/MapSender.java +++ b/src/main/java/tech/sbdevelopment/mapreflectionapi/api/MapSender.java @@ -113,8 +113,6 @@ public class MapSender { final int id = -id0; Object packet; 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 @@ -123,8 +121,10 @@ public class MapSender { content.array //Data ); + Object mapId = ReflectionUtil.callConstructor(getNMSClass("world.level.saveddata.maps", "MapId"), id); + packet = ReflectionUtil.callConstructor(packetPlayOutMapClass, - id, //ID + mapId, //ID (byte) 0, //Scale, 0 = 1 block per pixel false, //Show icons new ReflectionUtil.CollectionParam<>(), //Icons diff --git a/src/main/java/tech/sbdevelopment/mapreflectionapi/api/MapWrapper.java b/src/main/java/tech/sbdevelopment/mapreflectionapi/api/MapWrapper.java index d943fa5..9c427e2 100644 --- a/src/main/java/tech/sbdevelopment/mapreflectionapi/api/MapWrapper.java +++ b/src/main/java/tech/sbdevelopment/mapreflectionapi/api/MapWrapper.java @@ -165,8 +165,8 @@ public class MapWrapper extends AbstractMapWrapper { String inventoryMenuName; if (supports(20)) { - //>= 1.20.2 = bR, 1.20(.1) = bQ - inventoryMenuName = supports(20, 2) ? "bR" : "bQ"; + //1.20.5 = cb, 1.20.2 - 1.20.4 = bR, 1.20(.1) = bQ + inventoryMenuName = supports(20, 4) ? "cb" : supports(20, 2) ? "bR" : "bQ"; } else if (supports(19)) { //1.19.4 = bO, >= 1.19.3 = bT inventoryMenuName = supports(19, 3) ? "bO" : "bT"; @@ -286,7 +286,12 @@ public class MapWrapper extends AbstractMapWrapper { Object nmsStack = ReflectionUtil.callMethod(craftStackClass, "asNMSCopy", stack); - if (supports(13)) { + //1.20.5 uses new NBT compound system + if (supports(20, 4)) { + Object mapIdComponent = ReflectionUtil.getDeclaredField(getNMSClass("core.component", "DataComponents"), "B"); + Object mapId1 = ReflectionUtil.callConstructor(getNMSClass("world.level.saveddata.maps", "MapId"), mapId); + ReflectionUtil.callMethod(nmsStack, "b", mapIdComponent, mapId1); + } else if (supports(13)) { String nbtObjectName; if (supports(20)) { //1.20 nbtObjectName = "w"; @@ -328,7 +333,7 @@ public class MapWrapper extends AbstractMapWrapper { Object packet; if (supports(19, 3)) { //1.19.3 - Class dataWatcherRecordClass = getNMSClass("network.syncher", "DataWatcher$b"); + Class dataWatcherRecordClass = getNMSClass("network.syncher", supports(20, 4) ? "DataWatcher$c" : "DataWatcher$b"); //1.20.5 = c, lower is b // Sadly not possible to use ReflectionUtil (in its current state), because of the Object parameter Object dataWatcherItem; try {