From 8a2010c448afc07ee1f4007bdd1382fe031903c1 Mon Sep 17 00:00:00 2001 From: headhunter45 Date: Tue, 14 Feb 2012 17:49:54 -0800 Subject: [PATCH] v0.4.1 fixed city size calculation implemented /metropolis-home-list command to show all homes --- .../plugins/metropolis/MetropolisPlugin.java | 47 +++++++++++++------ .../bukkit/plugins/metropolis/PlayerHome.java | 10 +++- .../commands/MetropolisHomeListCommand.java | 2 +- Metropolis/src/plugin.yml | 2 +- 4 files changed, 44 insertions(+), 17 deletions(-) diff --git a/Metropolis/src/com/majinnaibu/bukkit/plugins/metropolis/MetropolisPlugin.java b/Metropolis/src/com/majinnaibu/bukkit/plugins/metropolis/MetropolisPlugin.java index 7cd4035..69bcf20 100644 --- a/Metropolis/src/com/majinnaibu/bukkit/plugins/metropolis/MetropolisPlugin.java +++ b/Metropolis/src/com/majinnaibu/bukkit/plugins/metropolis/MetropolisPlugin.java @@ -128,10 +128,12 @@ public class MetropolisPlugin extends JavaPlugin { private void fillOccupiedHomes() { _occupiedHomes = new ArrayList(); + for(ProtectedRegion region : regionManager.getRegions().values()){ if(region instanceof ProtectedCuboidRegion && region.getId().startsWith("h_")){ ProtectedCuboidRegion cuboidRegion = (ProtectedCuboidRegion) region; PlayerHome home = new PlayerHome(cuboidRegion); + _occupiedHomes.add(home); /* if(getDatabase().find(PlayerHome.class).where().eq("regionName", home.getRegionName()).findRowCount() == 0){ @@ -141,6 +143,9 @@ public class MetropolisPlugin extends JavaPlugin { } } + size = calculateCitySize(); + //log.info(String.valueOf(iSize)); + /* for(PlayerHome home : getDatabase().find(PlayerHome.class).findList()){ _occupiedHomes.add(home); @@ -340,7 +345,7 @@ public class MetropolisPlugin extends JavaPlugin { } private void expandCityRegion() { - size+=2; + size=calculateCitySize(); ProtectedRegion cityRegion = regionManager.getRegion("City"); if(cityRegion instanceof ProtectedCuboidRegion){ ProtectedCuboidRegion region = (ProtectedCuboidRegion)cityRegion; @@ -348,10 +353,6 @@ public class MetropolisPlugin extends JavaPlugin { BlockVector min; BlockVector max; - //min = region.getMinimumPoint(); - //max = region.getMaximumPoint(); - //min = new BlockVector(min.getBlockX() - plotSizeX, min.getBlockY(), min.getBlockZ() - plotSizeZ); - //max = new BlockVector(max.getBlockX() + plotSizeX, max.getBlockY(), max.getBlockZ() + plotSizeZ); min = getPlotMin(-size/2, -size/2); max = getPlotMax(size/2, size/2); @@ -360,6 +361,21 @@ public class MetropolisPlugin extends JavaPlugin { } } + private int calculateCitySize() { + int iSize = 0; + + for(PlayerHome home: _occupiedHomes){ + int plotCol=Math.abs(getPlotXFromMin(home.getCuboid())); + int plotRow=Math.abs(getPlotZFromMin(home.getCuboid())); + //log.info(String.format("iSize: %d, plotRow: %d, plotCol: %d", iSize, plotCol, plotRow)); + iSize = Math.max(Math.max(plotRow*2+1, plotCol*2+1), iSize); + + } + + //log.info(String.format("iSize: %d", iSize)); + return iSize; + } + public BlockVector getPlotMin(int row, int col){ return new BlockVector(col * plotSizeX, 0, row * plotSizeZ); } @@ -367,6 +383,18 @@ public class MetropolisPlugin extends JavaPlugin { public BlockVector getPlotMax(int row, int col){ return new BlockVector(col * plotSizeX + plotSizeX-1, 128, row * plotSizeZ + plotSizeZ-1); } + + private int getPlotXFromMin(Cuboid cuboid) { + int minX = cuboid.getMin().getBlockX() - roadWidth/2; + + return minX/plotSizeX; + } + + private int getPlotZFromMin(Cuboid cuboid) { + int minZ = cuboid.getMin().getBlockZ() - roadWidth/2; + + return minZ/plotSizeZ; + } private void setHomeOccupied(String owner, BlockVector minimumPoint, BlockVector maximumPoint) { @@ -377,16 +405,7 @@ public class MetropolisPlugin extends JavaPlugin { } } - public Cuboid getSpawnCuboid(){ - // TODO Auto-generated method stub - return null; - } - public Cuboid getNextUnusedHome(){ - // TODO Auto-generated method stub - return null; - } - public PlayerHome generateHome(String playerName) { log.info(String.format("Generating home for %s", playerName)); Cuboid plotCuboid = null; diff --git a/Metropolis/src/com/majinnaibu/bukkit/plugins/metropolis/PlayerHome.java b/Metropolis/src/com/majinnaibu/bukkit/plugins/metropolis/PlayerHome.java index 032a88d..5b70eca 100644 --- a/Metropolis/src/com/majinnaibu/bukkit/plugins/metropolis/PlayerHome.java +++ b/Metropolis/src/com/majinnaibu/bukkit/plugins/metropolis/PlayerHome.java @@ -103,7 +103,15 @@ public class PlayerHome implements Comparable{ public String toString(){ StringBuilder sb = new StringBuilder(); - sb.append(String.format("{PlayerHome ")); + sb.append(String.format("{PlayerHome }")); + + return sb.toString(); + } + + public String toFriendlyString() { + StringBuilder sb = new StringBuilder(); + + sb.append(String.format("Metropolis Home {Owner: %s min: (%d, %d, %d) max: (%d, %d, %d)}", getPlayerName(), getCuboid().getMinX(), getCuboid().getMinY(), getCuboid().getMinZ(), getCuboid().getMaxX(), getCuboid().getMaxY(), getCuboid().getMaxZ())); return sb.toString(); } diff --git a/Metropolis/src/com/majinnaibu/bukkit/plugins/metropolis/commands/MetropolisHomeListCommand.java b/Metropolis/src/com/majinnaibu/bukkit/plugins/metropolis/commands/MetropolisHomeListCommand.java index 16a01d7..021002d 100644 --- a/Metropolis/src/com/majinnaibu/bukkit/plugins/metropolis/commands/MetropolisHomeListCommand.java +++ b/Metropolis/src/com/majinnaibu/bukkit/plugins/metropolis/commands/MetropolisHomeListCommand.java @@ -17,7 +17,7 @@ public class MetropolisHomeListCommand implements CommandExecutor { @Override public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { for(PlayerHome cityBlock : _plugin.getCityBlocks()){ - sender.sendMessage(String.format("%s", cityBlock.toString())); + sender.sendMessage(String.format("%s", cityBlock.toFriendlyString())); } return true; } diff --git a/Metropolis/src/plugin.yml b/Metropolis/src/plugin.yml index 821d65c..014b2d4 100644 --- a/Metropolis/src/plugin.yml +++ b/Metropolis/src/plugin.yml @@ -1,7 +1,7 @@ name: Metropolis main: com.majinnaibu.bukkit.plugins.metropolis.MetropolisPlugin depend: [WorldEdit, WorldGuard] -version: 0.4 +version: 0.4.1 database: false commands: metropolis-home-generate: