Add optional world offset

This commit is contained in:
boy0001 2015-07-16 20:32:04 +10:00
parent ffdee2507d
commit 8a4e19ab40
10 changed files with 46 additions and 57 deletions

View File

@ -527,7 +527,7 @@ public enum C {
C(final String d, final boolean prefix, String cat) { C(final String d, final boolean prefix, String cat) {
this.d = d; this.d = d;
if (this.s == null) { if (this.s == null) {
this.s = ""; this.s = d;
} }
this.prefix = prefix; this.prefix = prefix;
this.cat = cat.toLowerCase(); this.cat = cat.toLowerCase();

View File

@ -161,11 +161,11 @@ public class LikePlotMeConverter {
connector.copyConfig(plotConfig, world, actualWorldName); connector.copyConfig(plotConfig, world, actualWorldName);
PS.get().config.save(PS.get().configFile); PS.get().config.save(PS.get().configFile);
} catch (final Exception e) { } catch (final Exception e) {
e.printStackTrace();
sendMessage("&c-- &lFailed to save configuration for world '" + world + "'\nThis will need to be done using the setup command, or manually"); sendMessage("&c-- &lFailed to save configuration for world '" + world + "'\nThis will need to be done using the setup command, or manually");
} }
} }
} }
HashMap<String, HashMap<PlotId, Plot>> plots = connector.getPlotMePlots(connection); HashMap<String, HashMap<PlotId, Plot>> plots = connector.getPlotMePlots(connection);
for (Entry<String, HashMap<PlotId, Plot>> entry : plots.entrySet()) { for (Entry<String, HashMap<PlotId, Plot>> entry : plots.entrySet()) {
plotCount += entry.getValue().size(); plotCount += entry.getValue().size();

View File

@ -48,22 +48,17 @@ public abstract class ClassicPlotWorld extends SquarePlotWorld {
*/ */
@Override @Override
public void loadConfiguration(final ConfigurationSection config) { public void loadConfiguration(final ConfigurationSection config) {
if (!config.contains("plot.height")) { super.loadConfiguration(config);
PS.log(" - &cConfiguration is null? (" + config.getCurrentPath() + ")");
}
this.PLOT_BEDROCK = config.getBoolean("plot.bedrock"); this.PLOT_BEDROCK = config.getBoolean("plot.bedrock");
this.PLOT_HEIGHT = Math.min(255, config.getInt("plot.height")); this.PLOT_HEIGHT = Math.min(255, config.getInt("plot.height"));
this.PLOT_WIDTH = config.getInt("plot.size");
this.MAIN_BLOCK = (PlotBlock[]) Configuration.BLOCKLIST.parseString(StringUtils.join(config.getStringList("plot.filling"), ',')); this.MAIN_BLOCK = (PlotBlock[]) Configuration.BLOCKLIST.parseString(StringUtils.join(config.getStringList("plot.filling"), ','));
this.TOP_BLOCK = (PlotBlock[]) Configuration.BLOCKLIST.parseString(StringUtils.join(config.getStringList("plot.floor"), ',')); this.TOP_BLOCK = (PlotBlock[]) Configuration.BLOCKLIST.parseString(StringUtils.join(config.getStringList("plot.floor"), ','));
this.WALL_BLOCK = (PlotBlock) Configuration.BLOCK.parseString(config.getString("wall.block")); this.WALL_BLOCK = (PlotBlock) Configuration.BLOCK.parseString(config.getString("wall.block"));
this.ROAD_WIDTH = config.getInt("road.width");
this.ROAD_HEIGHT = Math.min(255, config.getInt("road.height")); this.ROAD_HEIGHT = Math.min(255, config.getInt("road.height"));
this.ROAD_BLOCK = (PlotBlock) Configuration.BLOCK.parseString(config.getString("road.block")); this.ROAD_BLOCK = (PlotBlock) Configuration.BLOCK.parseString(config.getString("road.block"));
this.WALL_FILLING = (PlotBlock) Configuration.BLOCK.parseString(config.getString("wall.filling")); this.WALL_FILLING = (PlotBlock) Configuration.BLOCK.parseString(config.getString("wall.filling"));
this.WALL_HEIGHT = Math.min(254, config.getInt("wall.height")); this.WALL_HEIGHT = Math.min(254, config.getInt("wall.height"));
this.CLAIMED_WALL_BLOCK = (PlotBlock) Configuration.BLOCK.parseString(config.getString("wall.block_claimed")); this.CLAIMED_WALL_BLOCK = (PlotBlock) Configuration.BLOCK.parseString(config.getString("wall.block_claimed"));
this.SIZE = (short) (this.PLOT_WIDTH + this.ROAD_WIDTH);
} }
public ClassicPlotWorld(final String worldname) { public ClassicPlotWorld(final String worldname) {

View File

@ -171,8 +171,8 @@ public class HybridGen extends PlotGenerator {
} }
} }
int sx = (short) ((this.X) % this.size); int sx = (short) ((this.X - this.plotworld.ROAD_OFFSET_X) % this.size);
int sz = (short) ((this.Z) % this.size); int sz = (short) ((this.Z - this.plotworld.ROAD_OFFSET_Z) % this.size);
if (sx < 0) { if (sx < 0) {
sx += this.size; sx += this.size;
} }
@ -182,6 +182,7 @@ public class HybridGen extends PlotGenerator {
if (region != null) { if (region != null) {
for (short x = 0; x < 16; x++) { for (short x = 0; x < 16; x++) {
final int absX = ((sx + x) % this.size);
for (short z = 0; z < 16; z++) { for (short z = 0; z < 16; z++) {
if (biomes != null) { if (biomes != null) {
biomes.setBiome(x, z, this.biome); biomes.setBiome(x, z, this.biome);
@ -191,7 +192,6 @@ public class HybridGen extends PlotGenerator {
setBlock(x, y, z, this.filling); setBlock(x, y, z, this.filling);
} }
setBlock(x, this.plotheight, z, this.plotfloors); setBlock(x, this.plotheight, z, this.plotfloors);
final int absX = ((sx + x) % this.size);
final int absZ = ((sz + z) % this.size); final int absZ = ((sz + z) % this.size);
final PlotLoc loc = new PlotLoc(absX, absZ); final PlotLoc loc = new PlotLoc(absX, absZ);
final HashMap<Short, Short> blocks = plotworld.G_SCH.get(loc); final HashMap<Short, Short> blocks = plotworld.G_SCH.get(loc);
@ -207,15 +207,15 @@ public class HybridGen extends PlotGenerator {
} }
for (short x = 0; x < 16; x++) { for (short x = 0; x < 16; x++) {
final int absX = ((sx + x) % this.size);
final boolean gx = absX > this.pathWidthLower;
final boolean lx = absX < this.pathWidthUpper;
for (short z = 0; z < 16; z++) { for (short z = 0; z < 16; z++) {
if (biomes != null) { if (biomes != null) {
biomes.setBiome(x, z, this.biome); biomes.setBiome(x, z, this.biome);
} }
final int absX = ((sx + x) % this.size);
final int absZ = ((sz + z) % this.size); final int absZ = ((sz + z) % this.size);
final boolean gx = absX > this.pathWidthLower;
final boolean gz = absZ > this.pathWidthLower; final boolean gz = absZ > this.pathWidthLower;
final boolean lx = absX < this.pathWidthUpper;
final boolean lz = absZ < this.pathWidthUpper; final boolean lz = absZ < this.pathWidthUpper;
// inside plot // inside plot
if (gx && gz && lx && lz) { if (gx && gz && lx && lz) {

View File

@ -62,22 +62,7 @@ public class HybridPlotWorld extends ClassicPlotWorld {
*/ */
@Override @Override
public void loadConfiguration(final ConfigurationSection config) { public void loadConfiguration(final ConfigurationSection config) {
if (!config.contains("plot.height")) { super.loadConfiguration(config);
PS.log(" - &cConfiguration is null? (" + config.getCurrentPath() + ")");
}
this.PLOT_BEDROCK = config.getBoolean("plot.bedrock");
this.PLOT_HEIGHT = Math.min(255, config.getInt("plot.height"));
this.PLOT_WIDTH = config.getInt("plot.size");
this.MAIN_BLOCK = (PlotBlock[]) Configuration.BLOCKLIST.parseString(StringUtils.join(config.getStringList("plot.filling"), ','));
this.TOP_BLOCK = (PlotBlock[]) Configuration.BLOCKLIST.parseString(StringUtils.join(config.getStringList("plot.floor"), ','));
this.WALL_BLOCK = (PlotBlock) Configuration.BLOCK.parseString(config.getString("wall.block"));
this.ROAD_WIDTH = config.getInt("road.width");
this.ROAD_HEIGHT = Math.min(255, config.getInt("road.height"));
this.ROAD_BLOCK = (PlotBlock) Configuration.BLOCK.parseString(config.getString("road.block"));
this.WALL_FILLING = (PlotBlock) Configuration.BLOCK.parseString(config.getString("wall.filling"));
this.WALL_HEIGHT = Math.min(254, config.getInt("wall.height"));
this.CLAIMED_WALL_BLOCK = (PlotBlock) Configuration.BLOCK.parseString(config.getString("wall.block_claimed"));
this.SIZE = (short) (this.PLOT_WIDTH + this.ROAD_WIDTH);
if ((this.ROAD_WIDTH % 2) == 0) { if ((this.ROAD_WIDTH % 2) == 0) {
this.PATH_WIDTH_LOWER = (short) (Math.floor(this.ROAD_WIDTH / 2) - 1); this.PATH_WIDTH_LOWER = (short) (Math.floor(this.ROAD_WIDTH / 2) - 1);
} else { } else {
@ -100,7 +85,7 @@ public class HybridPlotWorld extends ClassicPlotWorld {
final Schematic schem1 = SchematicHandler.manager.getSchematic(schem1Str); final Schematic schem1 = SchematicHandler.manager.getSchematic(schem1Str);
final Schematic schem2 = SchematicHandler.manager.getSchematic(schem2Str); final Schematic schem2 = SchematicHandler.manager.getSchematic(schem2Str);
final Schematic schem3 = SchematicHandler.manager.getSchematic(schem3Str); final Schematic schem3 = SchematicHandler.manager.getSchematic(schem3Str);
final int shift = (int) Math.floor(this.ROAD_WIDTH / 2); final int shift = (int) this.ROAD_WIDTH / 2;
int oddshift = 0; int oddshift = 0;
if ((this.ROAD_WIDTH % 2) != 0) { if ((this.ROAD_WIDTH % 2) != 0) {
oddshift = 1; oddshift = 1;

View File

@ -113,8 +113,8 @@ public class HybridPop extends PlotPopulator {
public void populate(World world, RegionWrapper requiredRegion, PseudoRandom random, int cx, int cz) { public void populate(World world, RegionWrapper requiredRegion, PseudoRandom random, int cx, int cz) {
PS.get().getPlotManager(world.getName()); PS.get().getPlotManager(world.getName());
int sx = (short) ((this.X) % this.size); int sx = (short) ((this.X - this.plotworld.ROAD_OFFSET_X) % this.size);
int sz = (short) ((this.Z) % this.size); int sz = (short) ((this.Z - this.plotworld.ROAD_OFFSET_Z) % this.size);
if (sx < 0) { if (sx < 0) {
sx += this.size; sx += this.size;
} }

View File

@ -26,14 +26,16 @@ public abstract class SquarePlotManager extends GridPlotManager {
final SquarePlotWorld dpw = ((SquarePlotWorld) plotworld); final SquarePlotWorld dpw = ((SquarePlotWorld) plotworld);
final int px = plotid.x; final int px = plotid.x;
final int pz = plotid.y; final int pz = plotid.y;
final int x = (px * (dpw.ROAD_WIDTH + dpw.PLOT_WIDTH)) - ((int) Math.floor(dpw.ROAD_WIDTH / 2)) - 1; final int x = dpw.ROAD_OFFSET_X + (px * (dpw.ROAD_WIDTH + dpw.PLOT_WIDTH)) - ((int) Math.floor(dpw.ROAD_WIDTH / 2)) - 1;
final int z = (pz * (dpw.ROAD_WIDTH + dpw.PLOT_WIDTH)) - ((int) Math.floor(dpw.ROAD_WIDTH / 2)) - 1; final int z = dpw.ROAD_OFFSET_Z + (pz * (dpw.ROAD_WIDTH + dpw.PLOT_WIDTH)) - ((int) Math.floor(dpw.ROAD_WIDTH / 2)) - 1;
return new Location(plotworld.worldname, x, 256, z); return new Location(plotworld.worldname, x, 256, z);
} }
@Override @Override
public PlotId getPlotIdAbs(final PlotWorld plotworld, int x, final int y, int z) { public PlotId getPlotIdAbs(final PlotWorld plotworld, int x, final int y, int z) {
final SquarePlotWorld dpw = ((SquarePlotWorld) plotworld); final SquarePlotWorld dpw = ((SquarePlotWorld) plotworld);
x -= dpw.ROAD_OFFSET_X;
z -= dpw.ROAD_OFFSET_Z;
int pathWidthLower; int pathWidthLower;
int end; int end;
if (dpw.ROAD_WIDTH == 0) { if (dpw.ROAD_WIDTH == 0) {
@ -81,6 +83,8 @@ public abstract class SquarePlotManager extends GridPlotManager {
if (plotworld == null) { if (plotworld == null) {
return null; return null;
} }
x -= dpw.ROAD_OFFSET_X;
z -= dpw.ROAD_OFFSET_Z;
final int size = dpw.PLOT_WIDTH + dpw.ROAD_WIDTH; final int size = dpw.PLOT_WIDTH + dpw.ROAD_WIDTH;
int pathWidthLower; int pathWidthLower;
final int end; final int end;
@ -173,8 +177,8 @@ public abstract class SquarePlotManager extends GridPlotManager {
final SquarePlotWorld dpw = ((SquarePlotWorld) plotworld); final SquarePlotWorld dpw = ((SquarePlotWorld) plotworld);
final int px = plotid.x; final int px = plotid.x;
final int pz = plotid.y; final int pz = plotid.y;
final int x = (px * (dpw.ROAD_WIDTH + dpw.PLOT_WIDTH)) - dpw.PLOT_WIDTH - ((int) Math.floor(dpw.ROAD_WIDTH / 2)) - 1; final int x = dpw.ROAD_OFFSET_X + (px * (dpw.ROAD_WIDTH + dpw.PLOT_WIDTH)) - dpw.PLOT_WIDTH - ((int) Math.floor(dpw.ROAD_WIDTH / 2)) - 1;
final int z = (pz * (dpw.ROAD_WIDTH + dpw.PLOT_WIDTH)) - dpw.PLOT_WIDTH - ((int) Math.floor(dpw.ROAD_WIDTH / 2)) - 1; final int z = dpw.ROAD_OFFSET_Z + (pz * (dpw.ROAD_WIDTH + dpw.PLOT_WIDTH)) - dpw.PLOT_WIDTH - ((int) Math.floor(dpw.ROAD_WIDTH / 2)) - 1;
return new Location(plotworld.worldname, x, 1, z); return new Location(plotworld.worldname, x, 1, z);
} }

View File

@ -6,8 +6,12 @@ import com.intellectualcrafters.plot.PS;
public abstract class SquarePlotWorld extends GridPlotWorld { public abstract class SquarePlotWorld extends GridPlotWorld {
public static int PLOT_WIDTH_DEFAULT = 42; public static int PLOT_WIDTH_DEFAULT = 42;
public static int ROAD_WIDTH_DEFAULT = 7; public static int ROAD_WIDTH_DEFAULT = 7;
public static int ROAD_OFFSET_X_DEFAULT = 0;
public static int ROAD_OFFSET__Z_DEFAULT = 0;
public int PLOT_WIDTH; public int PLOT_WIDTH;
public int ROAD_WIDTH; public int ROAD_WIDTH;
public int ROAD_OFFSET_X;
public int ROAD_OFFSET_Z;
@Override @Override
public void loadConfiguration(final ConfigurationSection config) { public void loadConfiguration(final ConfigurationSection config) {
@ -16,6 +20,8 @@ public abstract class SquarePlotWorld extends GridPlotWorld {
} }
this.PLOT_WIDTH = config.getInt("plot.size"); this.PLOT_WIDTH = config.getInt("plot.size");
this.ROAD_WIDTH = config.getInt("road.width"); this.ROAD_WIDTH = config.getInt("road.width");
this.ROAD_OFFSET_X = config.getInt("road.offset.x");
this.ROAD_OFFSET_Z = config.getInt("road.offset.z");
this.SIZE = (short) (this.PLOT_WIDTH + this.ROAD_WIDTH); this.SIZE = (short) (this.PLOT_WIDTH + this.ROAD_WIDTH);
} }

View File

@ -104,7 +104,6 @@ public class BukkitSchematicHandler extends SchematicHandler {
int i2 = i1 + (z * width); int i2 = i1 + (z * width);
for (int x = 0; x < width; x++) { for (int x = 0; x < width; x++) {
final int index = i2 + x; final int index = i2 + x;
Block block = worldObj.getBlockAt(sx + x, sy + y, sz + z); Block block = worldObj.getBlockAt(sx + x, sy + y, sz + z);
int id = block.getTypeId(); int id = block.getTypeId();
switch(id) { switch(id) {