mirror of
				https://github.com/IntellectualSites/PlotSquared.git
				synced 2025-10-31 01:23:44 +01:00 
			
		
		
		
	Fixed plot clear schematic
This commit is contained in:
		| @@ -38,6 +38,7 @@ import com.intellectualcrafters.plot.object.PlotLoc; | |||||||
| import com.intellectualcrafters.plot.object.PlotWorld; | import com.intellectualcrafters.plot.object.PlotWorld; | ||||||
| import com.intellectualcrafters.plot.util.BlockManager; | import com.intellectualcrafters.plot.util.BlockManager; | ||||||
| import com.intellectualcrafters.plot.util.MainUtil; | import com.intellectualcrafters.plot.util.MainUtil; | ||||||
|  | import com.intellectualcrafters.plot.util.SchematicHandler; | ||||||
| import com.intellectualcrafters.plot.util.SetBlockQueue; | import com.intellectualcrafters.plot.util.SetBlockQueue; | ||||||
| import com.intellectualcrafters.plot.util.TaskManager; | import com.intellectualcrafters.plot.util.TaskManager; | ||||||
| import com.intellectualcrafters.plot.util.bukkit.BukkitUtil; | import com.intellectualcrafters.plot.util.bukkit.BukkitUtil; | ||||||
| @@ -83,12 +84,11 @@ public class HybridPlotManager extends ClassicPlotManager { | |||||||
|         Location top = getPlotTopLocAbs(hpw, id); |         Location top = getPlotTopLocAbs(hpw, id); | ||||||
|         Location pos1 = new Location(plot.world, top.getX() + 1, 0, bot.getZ()); |         Location pos1 = new Location(plot.world, top.getX() + 1, 0, bot.getZ()); | ||||||
|         Location pos2 = new Location(plot.world, bot.getX(), 256, top.getZ() + 1); |         Location pos2 = new Location(plot.world, bot.getX(), 256, top.getZ() + 1); | ||||||
|         createRoadAbs(hpw, pos1, pos2); |         createSchemAbs(hpw, pos1, pos2, hpw.ROAD_HEIGHT, true); | ||||||
|         return true; |         return true; | ||||||
|     } |     } | ||||||
|      |      | ||||||
|     public static void createRoadAbs(HybridPlotWorld hpw, Location pos1, Location pos2) { |     public void createSchemAbs(HybridPlotWorld hpw, Location pos1, Location pos2, int height, boolean clear) { | ||||||
|         final int sy = hpw.ROAD_HEIGHT; |  | ||||||
|         final int size = hpw.SIZE; |         final int size = hpw.SIZE; | ||||||
|         for (int x = pos1.getX(); x <= pos2.getX(); x++) { |         for (int x = pos1.getX(); x <= pos2.getX(); x++) { | ||||||
|             for (int z = pos1.getZ(); z <= pos2.getZ(); z++) { |             for (int z = pos1.getZ(); z <= pos2.getZ(); z++) { | ||||||
| @@ -102,14 +102,16 @@ public class HybridPlotManager extends ClassicPlotManager { | |||||||
|                 } |                 } | ||||||
|                 final PlotLoc loc = new PlotLoc(absX, absZ); |                 final PlotLoc loc = new PlotLoc(absX, absZ); | ||||||
|                 final HashMap<Short, Short> blocks = hpw.G_SCH.get(loc); |                 final HashMap<Short, Short> blocks = hpw.G_SCH.get(loc); | ||||||
|                 for (short y = (short) (hpw.ROAD_HEIGHT); y <= (hpw.ROAD_HEIGHT + hpw.SCHEMATIC_HEIGHT); y++) { |                 if (clear) { | ||||||
|                     SetBlockQueue.setBlock(hpw.worldname, x, y + y, z, 0); |                     for (short y = (short) (height); y <= (height + hpw.SCHEMATIC_HEIGHT); y++) { | ||||||
|  |                         SetBlockQueue.setBlock(hpw.worldname, x, y + y, z, 0); | ||||||
|  |                     } | ||||||
|                 } |                 } | ||||||
|                 if (blocks != null) { |                 if (blocks != null) { | ||||||
|                     final HashMap<Short, Byte> datas = hpw.G_SCH_DATA.get(loc); |                     final HashMap<Short, Byte> datas = hpw.G_SCH_DATA.get(loc); | ||||||
|                     if (datas == null) { |                     if (datas == null) { | ||||||
|                         for (final Short y : blocks.keySet()) { |                         for (final Short y : blocks.keySet()) { | ||||||
|                             SetBlockQueue.setBlock(hpw.worldname, x, sy + y, z, blocks.get(y)); |                             SetBlockQueue.setBlock(hpw.worldname, x, height + y, z, blocks.get(y)); | ||||||
|                         } |                         } | ||||||
|                     } else { |                     } else { | ||||||
|                         for (final Short y : blocks.keySet()) { |                         for (final Short y : blocks.keySet()) { | ||||||
| @@ -117,7 +119,7 @@ public class HybridPlotManager extends ClassicPlotManager { | |||||||
|                             if (data == null) { |                             if (data == null) { | ||||||
|                                 data = 0; |                                 data = 0; | ||||||
|                             } |                             } | ||||||
|                             SetBlockQueue.setBlock(hpw.worldname, x, sy + y, z, new PlotBlock(blocks.get(y), data)); |                             SetBlockQueue.setBlock(hpw.worldname, x, height + y, z, new PlotBlock(blocks.get(y), data)); | ||||||
|                         } |                         } | ||||||
|                     } |                     } | ||||||
|                 } |                 } | ||||||
| @@ -138,7 +140,7 @@ public class HybridPlotManager extends ClassicPlotManager { | |||||||
|         Location top = getPlotTopLocAbs(hpw, id); |         Location top = getPlotTopLocAbs(hpw, id); | ||||||
|         Location pos1 = new Location(plot.world, bot.getX(), 0, top.getZ() + 1); |         Location pos1 = new Location(plot.world, bot.getX(), 0, top.getZ() + 1); | ||||||
|         Location pos2 = new Location(plot.world, top.getX() + 1, 256, bot.getZ()); |         Location pos2 = new Location(plot.world, top.getX() + 1, 256, bot.getZ()); | ||||||
|         createRoadAbs(hpw, pos1, pos2); |         createSchemAbs(hpw, pos1, pos2, hpw.ROAD_HEIGHT, true); | ||||||
|         return true; |         return true; | ||||||
|     } |     } | ||||||
|      |      | ||||||
| @@ -155,7 +157,7 @@ public class HybridPlotManager extends ClassicPlotManager { | |||||||
|         Location pos2 = getPlotBottomLocAbs(hpw, id2); |         Location pos2 = getPlotBottomLocAbs(hpw, id2); | ||||||
|         pos1.setY(0); |         pos1.setY(0); | ||||||
|         pos2.setY(256); |         pos2.setY(256); | ||||||
|         createRoadAbs(hpw, pos1, pos2); |         createSchemAbs(hpw, pos1, pos2, hpw.ROAD_HEIGHT, true); | ||||||
|         return true; |         return true; | ||||||
|     } |     } | ||||||
|      |      | ||||||
| @@ -244,6 +246,7 @@ public class HybridPlotManager extends ClassicPlotManager { | |||||||
|                     MainUtil.setSimpleCuboidAsync(world, new Location(world, pos1.getX(), dpw.PLOT_HEIGHT + 1, pos1.getZ()), new Location(world, pos2.getX() + 1, maxy + 1, pos2.getZ() + 1), new PlotBlock((short) 0, (byte) 0)); |                     MainUtil.setSimpleCuboidAsync(world, new Location(world, pos1.getX(), dpw.PLOT_HEIGHT + 1, pos1.getZ()), new Location(world, pos2.getX() + 1, maxy + 1, pos2.getZ() + 1), new PlotBlock((short) 0, (byte) 0)); | ||||||
|                     MainUtil.setCuboidAsync(world, new Location(world, pos1.getX(), 1, pos1.getZ()), new Location(world, pos2.getX() + 1, dpw.PLOT_HEIGHT, pos2.getZ() + 1), filling); |                     MainUtil.setCuboidAsync(world, new Location(world, pos1.getX(), 1, pos1.getZ()), new Location(world, pos2.getX() + 1, dpw.PLOT_HEIGHT, pos2.getZ() + 1), filling); | ||||||
|                     MainUtil.setCuboidAsync(world, new Location(world, pos1.getX(), dpw.PLOT_HEIGHT, pos1.getZ()), new Location(world, pos2.getX() + 1, dpw.PLOT_HEIGHT + 1, pos2.getZ() + 1), plotfloor); |                     MainUtil.setCuboidAsync(world, new Location(world, pos1.getX(), dpw.PLOT_HEIGHT, pos1.getZ()), new Location(world, pos2.getX() + 1, dpw.PLOT_HEIGHT + 1, pos2.getZ() + 1), plotfloor); | ||||||
|  |                     pastePlotSchematic(dpw, l1, l2); | ||||||
|                     SetBlockQueue.addNotify(whenDone); |                     SetBlockQueue.addNotify(whenDone); | ||||||
|                     return; |                     return; | ||||||
|                 } |                 } | ||||||
| @@ -291,9 +294,18 @@ public class HybridPlotManager extends ClassicPlotManager { | |||||||
|                 MainUtil.setSimpleCuboidAsync(world, new Location(world, max.getX(), dpw.PLOT_HEIGHT + 1, max.getZ()), new Location(world, plotMaxX + 1, maxy + 1, plotMaxZ + 1), new PlotBlock((short) 0, (byte) 0)); |                 MainUtil.setSimpleCuboidAsync(world, new Location(world, max.getX(), dpw.PLOT_HEIGHT + 1, max.getZ()), new Location(world, plotMaxX + 1, maxy + 1, plotMaxZ + 1), new PlotBlock((short) 0, (byte) 0)); | ||||||
|                 MainUtil.setCuboidAsync(world, new Location(world, max.getX(), 1, max.getZ()), new Location(world, plotMaxX + 1, dpw.PLOT_HEIGHT, plotMaxZ + 1), filling); |                 MainUtil.setCuboidAsync(world, new Location(world, max.getX(), 1, max.getZ()), new Location(world, plotMaxX + 1, dpw.PLOT_HEIGHT, plotMaxZ + 1), filling); | ||||||
|                 MainUtil.setCuboidAsync(world, new Location(world, max.getX(), dpw.PLOT_HEIGHT, max.getZ()), new Location(world, plotMaxX + 1, dpw.PLOT_HEIGHT + 1, plotMaxZ + 1), plotfloor); |                 MainUtil.setCuboidAsync(world, new Location(world, max.getX(), dpw.PLOT_HEIGHT, max.getZ()), new Location(world, plotMaxX + 1, dpw.PLOT_HEIGHT + 1, plotMaxZ + 1), plotfloor); | ||||||
|  |                 pastePlotSchematic(dpw, l1, l2); | ||||||
|                 SetBlockQueue.addNotify(whenDone); |                 SetBlockQueue.addNotify(whenDone); | ||||||
|             } |             } | ||||||
|         }); |         }); | ||||||
|         return true; |         return true; | ||||||
|     } |     } | ||||||
|  |      | ||||||
|  |     public void pastePlotSchematic(HybridPlotWorld plotworld, Location l1, Location l2) { | ||||||
|  |         if (!plotworld.PLOT_SCHEMATIC) { | ||||||
|  |             return; | ||||||
|  |         } | ||||||
|  |         createSchemAbs(plotworld, l1.add(1,0,1), l2, plotworld.PLOT_HEIGHT, false); | ||||||
|  |     } | ||||||
|  |      | ||||||
| } | } | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 boy0001
					boy0001