mirror of
https://github.com/IntellectualSites/PlotSquared.git
synced 2024-11-22 05:06:44 +01:00
Untested (plot unlink)
This commit is contained in:
parent
7a55e8487b
commit
c4635be66b
@ -11,6 +11,8 @@ package com.intellectualcrafters.plot.commands;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.World;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
@ -21,13 +23,28 @@ import com.intellectualcrafters.plot.PlotHelper;
|
||||
import com.intellectualcrafters.plot.PlotId;
|
||||
import com.intellectualcrafters.plot.PlotMain;
|
||||
import com.intellectualcrafters.plot.PlotSettings;
|
||||
import com.intellectualcrafters.plot.PlotWorld;
|
||||
import com.intellectualcrafters.plot.database.DBFunc;
|
||||
import com.intellectualcrafters.plot.events.PlotMergeEvent;
|
||||
import com.intellectualcrafters.plot.events.PlotUnlinkEvent;
|
||||
|
||||
/**
|
||||
* Created by Citymonstret on 2014-08-01.
|
||||
*/
|
||||
public class Unlink extends SubCommand {
|
||||
|
||||
private short w_id;
|
||||
private byte w_v;
|
||||
private short wf_id;
|
||||
private byte wf_v;
|
||||
private short f1_id;
|
||||
private byte f1_v;
|
||||
private short f2_id;
|
||||
private byte f2_v;
|
||||
private int pathsize;
|
||||
private boolean stripes_enabled;
|
||||
private int wallheight;
|
||||
private int roadheight;
|
||||
public Unlink() {
|
||||
super(Command.UNLINK, "Unlink a mega-plot", "unlink", CommandCategory.ACTIONS);
|
||||
}
|
||||
@ -48,13 +65,135 @@ public class Unlink extends SubCommand {
|
||||
return true;
|
||||
}
|
||||
World world = plr.getWorld();
|
||||
ArrayList<PlotId> ids = PlayerFunctions.getPlotSelectionIds(world, PlayerFunctions.getBottomPlot(world, plot).id, PlayerFunctions.getTopPlot(world, plot).id);
|
||||
PlotId pos1 = PlayerFunctions.getBottomPlot(world, plot).id;
|
||||
PlotId pos2 = PlayerFunctions.getTopPlot(world, plot).id;
|
||||
ArrayList<PlotId> ids = PlayerFunctions.getPlotSelectionIds(world, pos1, pos2);
|
||||
|
||||
PlotUnlinkEvent event = new PlotUnlinkEvent(world, ids);
|
||||
|
||||
Bukkit.getServer().getPluginManager().callEvent(event);
|
||||
if (event.isCancelled()) {
|
||||
event.setCancelled(true);
|
||||
PlayerFunctions.sendMessage(plr, "&cUnlink has been cancelled");
|
||||
return false;
|
||||
}
|
||||
|
||||
for (PlotId id:ids) {
|
||||
Plot myplot = PlotMain.getPlots(world).get(id);
|
||||
myplot.settings.setMerged(new boolean[] {false, false, false, false} );
|
||||
DBFunc.setMerged(world.getName(), myplot, myplot.settings.getMerged());
|
||||
}
|
||||
|
||||
PlotWorld plotworld = PlotMain.getWorldSettings(world);
|
||||
this.pathsize = plotworld.ROAD_WIDTH;
|
||||
this.roadheight = plotworld.ROAD_HEIGHT;
|
||||
this.wallheight = plotworld.WALL_HEIGHT;
|
||||
this.stripes_enabled = plotworld.ROAD_STRIPES_ENABLED;
|
||||
|
||||
// WALL
|
||||
short[] result_w = PlotHelper.getBlock(plotworld.WALL_BLOCK);
|
||||
this.w_id = result_w[0];
|
||||
this.w_v = (byte) result_w[1];
|
||||
|
||||
// WALL FILLING
|
||||
short[] result_wf = PlotHelper.getBlock(plotworld.WALL_FILLING);
|
||||
this.wf_id = result_wf[0];
|
||||
this.wf_v = (byte) result_wf[1];
|
||||
|
||||
// ROAD
|
||||
short[] result_f1 = PlotHelper.getBlock(plotworld.ROAD_BLOCK);
|
||||
this.f1_id = result_f1[0];
|
||||
this.f1_v = (byte) result_f1[1];
|
||||
//
|
||||
|
||||
// Floor 2
|
||||
short[] result_f2 = PlotHelper.getBlock(plotworld.ROAD_STRIPES);
|
||||
this.f2_id = result_f2[0];
|
||||
this.f2_v = (byte) result_f2[1];
|
||||
|
||||
for (int x = pos1.x; x <= pos2.x; x++) {
|
||||
for (int y = pos1.y; y <= pos2.y; y++) {
|
||||
|
||||
boolean lx = x < pos2.x;
|
||||
boolean ly = y < pos2.y;
|
||||
|
||||
PlotId id = new PlotId(x,y);
|
||||
|
||||
if (lx) {
|
||||
setRoadX(world, id);
|
||||
|
||||
if (ly&&lx) {
|
||||
setRoadXY(world, id);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if (ly) {
|
||||
setRoadY(world, id);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
PlayerFunctions.sendMessage(plr, "&cPLOT UNLINKING IS NOT FINISHED (as you can see by the lack of roads appearing)");
|
||||
return true;
|
||||
}
|
||||
/**
|
||||
* Setting the road with the greatest X value
|
||||
* @param world
|
||||
* @param id
|
||||
*/
|
||||
public void setRoadX(World w, PlotId id) {
|
||||
Location pos1 = PlotHelper.getPlotBottomLoc(w, id);
|
||||
Location pos2 = PlotHelper.getPlotTopLoc(w, id);
|
||||
|
||||
int sx = pos2.getBlockX()+1;
|
||||
int ex = sx + pathsize - 1;
|
||||
int sz = pos1.getBlockZ();
|
||||
int ez = pos2.getBlockZ()+1;
|
||||
|
||||
PlotHelper.setCuboid(w, new Location(w,sx,1,sz), new Location(w,sx+1,wallheight,sz+1), new short[] {wf_id}, new short[] {wf_v});
|
||||
PlotHelper.setCuboid(w, new Location(w,sx,wallheight+1,sz), new Location(w,sx+1,wallheight+2,sz+1), new short[] {w_id}, new short[] {w_v});
|
||||
|
||||
PlotHelper.setCuboid(w, new Location(w,ex,1,ez), new Location(w,ex+1,wallheight,ez+1), new short[] {wf_id}, new short[] {wf_v});
|
||||
PlotHelper.setCuboid(w, new Location(w,ex,wallheight+1,ez), new Location(w,ex+1,wallheight+2,ez+1), new short[] {w_id}, new short[] {w_v});
|
||||
|
||||
PlotHelper.setCuboid(w, new Location(w,sx+1,1,sz+1), new Location(w,ex,roadheight,ex), new short[] {wf_id}, new short[] {wf_v});
|
||||
}
|
||||
/**
|
||||
* Setting the road with the greatest Y value
|
||||
* @param world
|
||||
* @param id
|
||||
*/
|
||||
public void setRoadY(World w, PlotId id) {
|
||||
Location pos1 = PlotHelper.getPlotBottomLoc(w, id);
|
||||
Location pos2 = PlotHelper.getPlotTopLoc(w, id);
|
||||
|
||||
int sz = pos2.getBlockX()+1;
|
||||
int ez = sz + pathsize - 1;
|
||||
int sx = pos1.getBlockZ();
|
||||
int ex = pos2.getBlockZ()+1;
|
||||
|
||||
PlotHelper.setCuboid(w, new Location(w,sx,1,sz), new Location(w,sx+1,wallheight,sz+1), new short[] {wf_id}, new short[] {wf_v});
|
||||
PlotHelper.setCuboid(w, new Location(w,sx,wallheight+1,sz), new Location(w,sx+1,wallheight+2,sz+1), new short[] {w_id}, new short[] {w_v});
|
||||
|
||||
PlotHelper.setCuboid(w, new Location(w,ex,1,ez), new Location(w,ex+1,wallheight,ez+1), new short[] {wf_id}, new short[] {wf_v});
|
||||
PlotHelper.setCuboid(w, new Location(w,ex,wallheight+1,ez), new Location(w,ex+1,wallheight+2,ez+1), new short[] {w_id}, new short[] {w_v});
|
||||
|
||||
PlotHelper.setCuboid(w, new Location(w,sx+1,1,sz+1), new Location(w,ex,roadheight,ex), new short[] {wf_id}, new short[] {wf_v});
|
||||
}
|
||||
/**
|
||||
* Setting the intersection with the greatest X and Y value
|
||||
* @param world
|
||||
* @param id
|
||||
*/
|
||||
public void setRoadXY(World w, PlotId id) {
|
||||
Location pos2 = PlotHelper.getPlotTopLoc(w, id);
|
||||
|
||||
int sx = pos2.getBlockX()+2;
|
||||
int ex = sx + pathsize - 1;
|
||||
int sz = pos2.getBlockZ()+2;
|
||||
int ez = sz + pathsize - 1;
|
||||
|
||||
PlotHelper.setCuboid(w, new Location(w,sx+1,1,sz+1), new Location(w,ex,roadheight,ex), new short[] {wf_id}, new short[] {wf_v});
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user