diff --git a/v26_2/src/main/java/com/denizenscript/denizen/nms/v26_2/Handler.java b/v26_2/src/main/java/com/denizenscript/denizen/nms/v26_2/Handler.java index 780a147c80..a1b978133b 100644 --- a/v26_2/src/main/java/com/denizenscript/denizen/nms/v26_2/Handler.java +++ b/v26_2/src/main/java/com/denizenscript/denizen/nms/v26_2/Handler.java @@ -107,8 +107,17 @@ public static BlockPos toBlockPos(Location location) { // TODO: Paper renamed 'C } // TODO: Paper renamed some NMS methods, switch back to direct calls once on Paper NMS - public static MethodHandle reflectPaperRenamed(Class clazz, String spigot, String paper, Class... params) { - return ReflectionHelper.getMethodHandle(clazz, Denizen.supportsPaper ? paper : spigot, params); + public static MethodHandle reflectPaperRenamed(Class clazz, String spigot, String paper) { + return reflectPaperRenamed(clazz, spigot, paper, null, null); + } + + public static MethodHandle reflectPaperRenamed(Class clazz, String spigot, String paper, Class[] params) { + return reflectPaperRenamed(clazz, spigot, paper, params, params); + } + + public static MethodHandle reflectPaperRenamed(Class clazz, String spigot, String paper, Class[] spigotParams, Class[] paperParams) { + boolean supportsPaper = Denizen.supportsPaper; + return ReflectionHelper.getMethodHandle(clazz, supportsPaper ? paper : spigot, supportsPaper ? paperParams : spigotParams); } public Handler() { diff --git a/v26_2/src/main/java/com/denizenscript/denizen/nms/v26_2/helpers/ItemHelperImpl.java b/v26_2/src/main/java/com/denizenscript/denizen/nms/v26_2/helpers/ItemHelperImpl.java index 0e851f7076..5f36fc65ed 100644 --- a/v26_2/src/main/java/com/denizenscript/denizen/nms/v26_2/helpers/ItemHelperImpl.java +++ b/v26_2/src/main/java/com/denizenscript/denizen/nms/v26_2/helpers/ItemHelperImpl.java @@ -106,7 +106,7 @@ public static net.minecraft.world.item.crafting.RecipeHolder getNMSRecipe(Nam return ((CraftServer) Bukkit.getServer()).getServer().getRecipeManager().byKey(nmsKey).orElse(null); } - public static final MethodHandle CRAFT_ITEM_STACK_AS_TEMPLATE = Handler.reflectPaperRenamed(CraftItemStack.class, "asNMSTemplate", "asTemplate", ItemStack.class); + public static final MethodHandle CRAFT_ITEM_STACK_AS_TEMPLATE = Handler.reflectPaperRenamed(CraftItemStack.class, "asNMSTemplate", "asTemplate", new Class[] {ItemStack.class}); public static ItemStackTemplate asNMSTemplate(ItemStack item) { try { diff --git a/v26_2/src/main/java/com/denizenscript/denizen/nms/v26_2/helpers/PacketHelperImpl.java b/v26_2/src/main/java/com/denizenscript/denizen/nms/v26_2/helpers/PacketHelperImpl.java index 78e80f13b4..7157488f64 100644 --- a/v26_2/src/main/java/com/denizenscript/denizen/nms/v26_2/helpers/PacketHelperImpl.java +++ b/v26_2/src/main/java/com/denizenscript/denizen/nms/v26_2/helpers/PacketHelperImpl.java @@ -1,5 +1,6 @@ package com.denizenscript.denizen.nms.v26_2.helpers; +import com.denizenscript.denizen.Denizen; import com.denizenscript.denizen.nms.NMSHandler; import com.denizenscript.denizen.nms.interfaces.PacketHelper; import com.denizenscript.denizen.nms.v26_2.Handler; @@ -329,8 +330,18 @@ public void setMapData(MapCanvas canvas, byte[] bytes, int x, int y, MapImage im if (anyChanged) { // Flag the whole image as dirty MapItemSavedData map = (MapItemSavedData) MAPVIEW_WORLDMAP.get(canvas.getMapView()); - map.setColorsDirty(Math.max(x, 0), Math.max(y, 0)); - map.setColorsDirty(width + x - 1, height + y - 1); + int maxX = Math.max(x, 0); + int maxY = Math.max(y, 0); + int mapWidth = width + x - 1; + int mapHeight = height + y - 1; + if (Denizen.supportsPaper) { + MAP_ITEM_SET_COLORS.invoke(map, maxX, maxY, true); + MAP_ITEM_SET_COLORS.invoke(map, mapWidth, mapHeight, true); + } + else { + MAP_ITEM_SET_COLORS.invoke(map, maxX, maxY); + MAP_ITEM_SET_COLORS.invoke(map, mapWidth, mapHeight); + } } } catch (Throwable ex) { @@ -338,6 +349,8 @@ public void setMapData(MapCanvas canvas, byte[] bytes, int x, int y, MapImage im } } + public static final MethodHandle MAP_ITEM_SET_COLORS = Handler.reflectPaperRenamed(MapItemSavedData.class, "setColorsDirty", "setColorsDirty", new Class[] {int.class, int.class}, new Class[] {int.class, int.class, boolean.class}); + @Override public void setNetworkManagerFor(Player player) { DenizenNetworkManagerImpl.setNetworkManager(player);