Compare commits

..

1 Commits

Author SHA1 Message Date
dordsor21
6f36690bf2 fix: allow extended world height when teleporting player on join 2025-08-24 14:21:04 +01:00
3 changed files with 21 additions and 20 deletions

View File

@@ -435,11 +435,6 @@ public class Settings extends Config {
public static String SCHEMATICS = "schematics"; public static String SCHEMATICS = "schematics";
public static String TEMPLATES = "templates"; public static String TEMPLATES = "templates";
@Comment({"If schematics used for generation should be searched for in the path.schematics location",
" - This settings exists and is `false` by default for backwards compatibility.",
" - If false then generation schematics must be located in `schematics`",
" - Schematics must still always be under GEN_ROAD_SCHEMATIC/<world> etc."})
public static boolean USE_SCHEMATICS_PATH_FOR_GEN_SCHEMATICS = false;
} }

View File

@@ -140,8 +140,7 @@ public class HybridPlotWorld extends ClassicPlotWorld {
@NonNull @NonNull
@Override @Override
protected PlotManager createManager() { protected PlotManager createManager() {
return new HybridPlotManager( return new HybridPlotManager(this, PlotSquared.platform().regionManager(),
this, PlotSquared.platform().regionManager(),
PlotSquared.platform().injector().getInstance(ProgressSubscriberFactory.class) PlotSquared.platform().injector().getInstance(ProgressSubscriberFactory.class)
); );
} }
@@ -216,16 +215,15 @@ public class HybridPlotWorld extends ClassicPlotWorld {
// Try to determine root. This means that plot areas can have separate schematic // Try to determine root. This means that plot areas can have separate schematic
// directories // directories
String schematicFolder = Settings.Paths.USE_SCHEMATICS_PATH_FOR_GEN_SCHEMATICS ? Settings.Paths.SCHEMATICS : "schematics";
if (!(root = if (!(root =
FileUtils.getFile( FileUtils.getFile(
PlotSquared.platform().getDirectory(), PlotSquared.platform().getDirectory(),
schematicFolder + File.separator + "GEN_ROAD_SCHEMATIC" + File.separator + this.getWorldName() + File.separator + this.getId() "schematics/GEN_ROAD_SCHEMATIC/" + this.getWorldName() + "/" + this.getId()
)) ))
.exists()) { .exists()) {
root = FileUtils.getFile( root = FileUtils.getFile(
PlotSquared.platform().getDirectory(), PlotSquared.platform().getDirectory(),
schematicFolder + File.separator + "GEN_ROAD_SCHEMATIC" + File.separator + this.getWorldName() "schematics/GEN_ROAD_SCHEMATIC/" + this.getWorldName()
); );
} }

View File

@@ -614,16 +614,16 @@ public abstract class PlotPlayer<P> implements CommandCaller, OfflinePlotPlayer,
PlotId id = plot.getId(); PlotId id = plot.getId();
int x = id.getX(); int x = id.getX();
int z = id.getY(); int z = id.getY();
ByteBuffer buffer = ByteBuffer.allocate(13); ByteBuffer buffer = ByteBuffer.allocate(14);
buffer.putShort((short) x); buffer.putShort((short) x);
buffer.putShort((short) z); buffer.putShort((short) z);
Location location = getLocation(); Location location = getLocation();
buffer.putInt(location.getX()); buffer.putInt(location.getX());
buffer.put((byte) location.getY()); buffer.putShort((short) location.getY());
buffer.putInt(location.getZ()); buffer.putInt(location.getZ());
setPersistentMeta("quitLoc", buffer.array()); setPersistentMeta("quitLocV2", buffer.array());
} else if (hasPersistentMeta("quitLoc")) { } else if (hasPersistentMeta("quitLocV2")) {
removePersistentMeta("quitLoc"); removePersistentMeta("quitLocV2");
} }
if (plot != null) { if (plot != null) {
this.eventDispatcher.callLeave(this, plot); this.eventDispatcher.callLeave(this, plot);
@@ -700,11 +700,18 @@ public abstract class PlotPlayer<P> implements CommandCaller, OfflinePlotPlayer,
return; return;
} }
PlotArea area = ((SinglePlotAreaManager) manager).getArea(); PlotArea area = ((SinglePlotAreaManager) manager).getArea();
boolean V2 = false;
byte[] arr = PlotPlayer.this.getPersistentMeta("quitLoc"); byte[] arr = PlotPlayer.this.getPersistentMeta("quitLoc");
if (arr == null) {
arr = PlotPlayer.this.getPersistentMeta("quitLocV2");
if (arr == null) { if (arr == null) {
return; return;
} }
V2 = true;
removePersistentMeta("quitLocV2");
} else {
removePersistentMeta("quitLoc"); removePersistentMeta("quitLoc");
}
if (!getMeta("teleportOnLogin", true)) { if (!getMeta("teleportOnLogin", true)) {
return; return;
@@ -714,7 +721,7 @@ public abstract class PlotPlayer<P> implements CommandCaller, OfflinePlotPlayer,
final int plotZ = quitWorld.getShort(); final int plotZ = quitWorld.getShort();
PlotId id = PlotId.of(plotX, plotZ); PlotId id = PlotId.of(plotX, plotZ);
int x = quitWorld.getInt(); int x = quitWorld.getInt();
int y = quitWorld.get() & 0xFF; int y = V2 ? quitWorld.getShort() : (quitWorld.get() & 0xFF);
int z = quitWorld.getInt(); int z = quitWorld.getInt();
Plot plot = area.getOwnedPlot(id); Plot plot = area.getOwnedPlot(id);
@@ -748,10 +755,11 @@ public abstract class PlotPlayer<P> implements CommandCaller, OfflinePlotPlayer,
} }
} }
} catch (Throwable e) { } catch (Throwable e) {
e.printStackTrace(); LOGGER.error("Error populating persistent meta for player {}", PlotPlayer.this.getName(), e);
} }
} }
}); }
);
} }
} }