Compare commits

..

1 Commits

Author SHA1 Message Date
dordsor21
91153e1b7b feat: allow gen schematics to be located under the paths.schematics location
- closes #4408
2025-08-24 15:41:32 +01:00
3 changed files with 20 additions and 21 deletions

View File

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

View File

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