public static boolean mP(final World w, final String idFrom, final String idTo) { final Location plot1Bottom = getPlotBottomLoc(w, idFrom); final Location plot2Bottom = getPlotBottomLoc(w, idTo); final Location plot1Top = getPlotTopLoc(w, idFrom); final int distanceX = plot1Bottom.getBlockX() - plot2Bottom.getBlockX(); final int distanceZ = plot1Bottom.getBlockZ() - plot2Bottom.getBlockZ(); for (int x = plot1Bottom.getBlockX(); x <= plot1Top.getBlockX(); x++) { for (int z = plot1Bottom.getBlockZ(); z <= plot1Top.getBlockZ(); z++) { Block plot1Block = w.getBlockAt(new Location(w, x, 0, z)); Block plot2Block = w.getBlockAt(new Location(w, x - distanceX, 0, z - distanceZ)); final String plot1Biome = plot1Block.getBiome().name(); final String plot2Biome = plot2Block.getBiome().name(); plot1Block.setBiome(Biome.valueOf(plot2Biome)); plot2Block.setBiome(Biome.valueOf(plot1Biome)); for (int y = 0; y < w.getMaxHeight(); y++) { plot1Block = w.getBlockAt(new Location(w, x, y, z)); final int plot1Type = plot1Block.getTypeId(); final byte plot1Data = plot1Block.getData(); plot2Block = w.getBlockAt(new Location(w, x - distanceX, y, z - distanceZ)); final int plot2Type = plot2Block.getTypeId(); final byte plot2Data = plot2Block.getData(); // plot1Block.setTypeId(plot2Type); plot1Block.setTypeIdAndData(plot2Type, plot2Data, false); plot1Block.setData(plot2Data); // net.minecraft.server.World world = ((org.bukkit.craftbukkit.CraftWorld) w).getHandle(); // world.setRawTypeIdAndData(plot1Block.getX(), plot1Block.getY(), plot1Block.getZ(), // plot2Type, plot2Data); // plot2Block.setTypeId(plot1Type); plot2Block.setTypeIdAndData(plot1Type, plot1Data, false); plot2Block.setData(plot1Data); // world.setRawTypeIdAndData(plot2Block.getX(), plot2Block.getY(), plot2Block.getZ(), // plot1Type, plot1Data); } } } final HashMap<String, AthionPlot> plots = getPlots(w); if (plots.containsKey(idFrom)) { if (plots.containsKey(idTo)) { final AthionPlot plot1 = plots.get(idFrom); final AthionPlot plot2 = plots.get(idTo); int idX = getIdX(idTo); int idZ = getIdZ(idTo); AthionSQL.deletePlot(idX, idZ, plot2.world); plots.remove(idFrom); plots.remove(idTo); idX = getIdX(idFrom); idZ = getIdZ(idFrom); AthionSQL.deletePlot(idX, idZ, plot1.world); plot2.id = "" + idX + ";" + idZ; AthionSQL.addPlot(plot2, idX, idZ, w); plots.put(idFrom, plot2); for (int i = 0; i < plot2.comments.size(); i++) { String strUUID = ""; UUID uuid = null; if (plot2.comments.get(i).length >= 3) { strUUID = plot2.comments.get(i)[2]; try { uuid = UUID.fromString(strUUID); } catch (final Exception e) { } } AthionSQL.addPlotComment(plot2.comments.get(i), i, idX, idZ, plot2.world, uuid); } for (final String player : plot2.allowed()) { AthionSQL.addPlotAllowed(player, idX, idZ, plot2.world); } idX = getIdX(idTo); idZ = getIdZ(idTo); plot1.id = "" + idX + ";" + idZ; AthionSQL.addPlot(plot1, idX, idZ, w); plots.put(idTo, plot1); for (int i = 0; i < plot1.comments.size(); i++) { String strUUID = ""; UUID uuid = null; if (plot1.comments.get(i).length >= 3) { strUUID = plot1.comments.get(i)[2]; try { uuid = UUID.fromString(strUUID); } catch (final Exception e) { } } AthionSQL.addPlotComment(plot1.comments.get(i), i, idX, idZ, plot1.world, uuid); } for (final String player : plot1.allowed()) { AthionSQL.addPlotAllowed(player, idX, idZ, plot1.world); } setOwnerSign(w, plot1); setSellSign(w, plot1); setOwnerSign(w, plot2); setSellSign(w, plot2); } else { final AthionPlot plot = plots.get(idFrom); int idX = getIdX(idFrom); int idZ = getIdZ(idFrom); AthionSQL.deletePlot(idX, idZ, plot.world); plots.remove(idFrom); idX = getIdX(idTo); idZ = getIdZ(idTo); plot.id = "" + idX + ";" + idZ; AthionSQL.addPlot(plot, idX, idZ, w); plots.put(idTo, plot); for (int i = 0; i < plot.comments.size(); i++) { String strUUID = ""; UUID uuid = null; if (plot.comments.get(i).length >= 3) { strUUID = plot.comments.get(i)[2]; try { uuid = UUID.fromString(strUUID); } catch (final Exception e) { } } AthionSQL.addPlotComment(plot.comments.get(i), i, idX, idZ, plot.world, uuid); } for (final String player : plot.allowed()) { AthionSQL.addPlotAllowed(player, idX, idZ, plot.world); } setOwnerSign(w, plot); setSellSign(w, plot); removeOwnerSign(w, idFrom); removeSellSign(w, idFrom); } } else { if (plots.containsKey(idTo)) { final AthionPlot plot = plots.get(idTo); int idX = getIdX(idTo); int idZ = getIdZ(idTo); AthionSQL.deletePlot(idX, idZ, plot.world); plots.remove(idTo); idX = getIdX(idFrom); idZ = getIdZ(idFrom); plot.id = "" + idX + ";" + idZ; AthionSQL.addPlot(plot, idX, idZ, w); plots.put(idFrom, plot); for (int i = 0; i < plot.comments.size(); i++) { String strUUID = ""; UUID uuid = null; if (plot.comments.get(i).length >= 3) { strUUID = plot.comments.get(i)[2]; try { uuid = UUID.fromString(strUUID); } catch (final Exception e) { } } AthionSQL.addPlotComment(plot.comments.get(i), i, idX, idZ, plot.world, uuid); } for (final String player : plot.allowed()) { AthionSQL.addPlotAllowed(player, idX, idZ, plot.world); } setOwnerSign(w, plot); setSellSign(w, plot); removeOwnerSign(w, idTo); removeSellSign(w, idTo); } } return true; }