From 6f36690bf2c9b9ed4c53448075a038ba1ac8e9bb Mon Sep 17 00:00:00 2001 From: dordsor21 Date: Sun, 24 Aug 2025 14:21:04 +0100 Subject: [PATCH] fix: allow extended world height when teleporting player on join --- .../plotsquared/core/player/PlotPlayer.java | 28 ++++++++++++------- 1 file changed, 18 insertions(+), 10 deletions(-) diff --git a/Core/src/main/java/com/plotsquared/core/player/PlotPlayer.java b/Core/src/main/java/com/plotsquared/core/player/PlotPlayer.java index f4bcd1943..f65cd4ed5 100644 --- a/Core/src/main/java/com/plotsquared/core/player/PlotPlayer.java +++ b/Core/src/main/java/com/plotsquared/core/player/PlotPlayer.java @@ -614,16 +614,16 @@ public abstract class PlotPlayer

implements CommandCaller, OfflinePlotPlayer, PlotId id = plot.getId(); int x = id.getX(); int z = id.getY(); - ByteBuffer buffer = ByteBuffer.allocate(13); + ByteBuffer buffer = ByteBuffer.allocate(14); buffer.putShort((short) x); buffer.putShort((short) z); Location location = getLocation(); buffer.putInt(location.getX()); - buffer.put((byte) location.getY()); + buffer.putShort((short) location.getY()); buffer.putInt(location.getZ()); - setPersistentMeta("quitLoc", buffer.array()); - } else if (hasPersistentMeta("quitLoc")) { - removePersistentMeta("quitLoc"); + setPersistentMeta("quitLocV2", buffer.array()); + } else if (hasPersistentMeta("quitLocV2")) { + removePersistentMeta("quitLocV2"); } if (plot != null) { this.eventDispatcher.callLeave(this, plot); @@ -700,11 +700,18 @@ public abstract class PlotPlayer

implements CommandCaller, OfflinePlotPlayer, return; } PlotArea area = ((SinglePlotAreaManager) manager).getArea(); + boolean V2 = false; byte[] arr = PlotPlayer.this.getPersistentMeta("quitLoc"); if (arr == null) { - return; + arr = PlotPlayer.this.getPersistentMeta("quitLocV2"); + if (arr == null) { + return; + } + V2 = true; + removePersistentMeta("quitLocV2"); + } else { + removePersistentMeta("quitLoc"); } - removePersistentMeta("quitLoc"); if (!getMeta("teleportOnLogin", true)) { return; @@ -714,7 +721,7 @@ public abstract class PlotPlayer

implements CommandCaller, OfflinePlotPlayer, final int plotZ = quitWorld.getShort(); PlotId id = PlotId.of(plotX, plotZ); int x = quitWorld.getInt(); - int y = quitWorld.get() & 0xFF; + int y = V2 ? quitWorld.getShort() : (quitWorld.get() & 0xFF); int z = quitWorld.getInt(); Plot plot = area.getOwnedPlot(id); @@ -748,10 +755,11 @@ public abstract class PlotPlayer

implements CommandCaller, OfflinePlotPlayer, } } } catch (Throwable e) { - e.printStackTrace(); + LOGGER.error("Error populating persistent meta for player {}", PlotPlayer.this.getName(), e); } } - }); + } + ); } }