mirror of
https://github.com/IntellectualSites/PlotSquared.git
synced 2024-11-25 06:36:44 +01:00
Mega plots: Tell me if I missed any important API methods
Modified methods: - getCurrentPlot - getPlotBottomLoc - getPlotTopLoc TODO: - Commands - Plot unlinking on unclaim - Anything else?
This commit is contained in:
parent
d54336f536
commit
1d1834699a
@ -56,6 +56,35 @@ public class PlayerFunctions {
|
|||||||
return (lp - cu) > 30l;
|
return (lp - cu) > 30l;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static Set<PlotId> getPlotSelectionIds(World world, PlotId pos1, PlotId pos2) {
|
||||||
|
Set<PlotId> myplots = new HashSet<PlotId>();
|
||||||
|
for (int x = pos1.x; x <= pos2.x; x++) {
|
||||||
|
for (int y = pos1.y; x <= pos2.y; x++) {
|
||||||
|
myplots.add(new PlotId(x,y));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return myplots;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Plot getBottomPlot(World world, Plot plot) {
|
||||||
|
if (plot.settings.getMerged(2)) {
|
||||||
|
return getBottomPlot(world, PlotMain.getPlots(world).get(new PlotId(plot.id.x, plot.id.y-1)));
|
||||||
|
}
|
||||||
|
if (plot.settings.getMerged(3)) {
|
||||||
|
return getBottomPlot(world, PlotMain.getPlots(world).get(new PlotId(plot.id.x-1, plot.id.y)));
|
||||||
|
}
|
||||||
|
return plot;
|
||||||
|
}
|
||||||
|
public static Plot getTopPlot(World world, Plot plot) {
|
||||||
|
if (plot.settings.getMerged(0)) {
|
||||||
|
return getBottomPlot(world, PlotMain.getPlots(world).get(new PlotId(plot.id.x, plot.id.y-1)));
|
||||||
|
}
|
||||||
|
if (plot.settings.getMerged(1)) {
|
||||||
|
return getBottomPlot(world, PlotMain.getPlots(world).get(new PlotId(plot.id.x-1, plot.id.y)));
|
||||||
|
}
|
||||||
|
return plot;
|
||||||
|
}
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @param loc
|
* @param loc
|
||||||
@ -65,7 +94,8 @@ public class PlayerFunctions {
|
|||||||
int x = loc.getBlockX();
|
int x = loc.getBlockX();
|
||||||
int z = loc.getBlockZ();
|
int z = loc.getBlockZ();
|
||||||
|
|
||||||
PlotWorld plotworld = PlotMain.getWorldSettings(loc.getWorld());
|
String world = loc.getWorld().getName();
|
||||||
|
PlotWorld plotworld = PlotMain.getWorldSettings(world);
|
||||||
int size = plotworld.PLOT_WIDTH + plotworld.ROAD_WIDTH;
|
int size = plotworld.PLOT_WIDTH + plotworld.ROAD_WIDTH;
|
||||||
int pathWidthLower;
|
int pathWidthLower;
|
||||||
if ((plotworld.ROAD_WIDTH % 2) == 0) {
|
if ((plotworld.ROAD_WIDTH % 2) == 0) {
|
||||||
@ -93,75 +123,27 @@ public class PlayerFunctions {
|
|||||||
int end = pathWidthLower+plotworld.PLOT_WIDTH;
|
int end = pathWidthLower+plotworld.PLOT_WIDTH;
|
||||||
|
|
||||||
if (rx<=pathWidthLower) {
|
if (rx<=pathWidthLower) {
|
||||||
// west > return null for now
|
// System.out.print("WEST");
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
if (rx>end) {
|
if (rx>end) {
|
||||||
// east > return null for now
|
// System.out.print("EAST");
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
if (rz<=pathWidthLower) {
|
if (rz<=pathWidthLower) {
|
||||||
// north > return null for now
|
// System.out.print("NORTH");
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
if (rz>pathWidthLower+plotworld.PLOT_WIDTH) {
|
if (rz>pathWidthLower+plotworld.PLOT_WIDTH) {
|
||||||
// south > return null for now
|
// System.out.print("SOUTH");
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
return new PlotId(dx,dz);
|
PlotId id = new PlotId(dx,dz);
|
||||||
|
Plot plot = PlotMain.getPlots(loc.getWorld()).get(id);
|
||||||
//
|
if (plot==null) {
|
||||||
// double n3;
|
return id;
|
||||||
//
|
}
|
||||||
// int mod2 = 0;
|
return getBottomPlot(loc.getWorld(), plot).id;
|
||||||
// int mod1 = 1;
|
|
||||||
//
|
|
||||||
// int x = (int) Math.ceil((double) valx / size);
|
|
||||||
// int z = (int) Math.ceil((double) valz / size);
|
|
||||||
//
|
|
||||||
// if ((pathsize % 2) == 1) {
|
|
||||||
// n3 = Math.ceil(((double) pathsize) / 2);
|
|
||||||
// mod2 = -1;
|
|
||||||
// } else {
|
|
||||||
// n3 = Math.floor(((double) pathsize) / 2);
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// /*
|
|
||||||
// * If Road 1 + Road 2 are true, then it is in the middle between 4 plots and more checks might be required.
|
|
||||||
// */
|
|
||||||
// boolean road1 = false, road2 = false;
|
|
||||||
//
|
|
||||||
// for (double i = n3; i >= 0; i--) {
|
|
||||||
// if (((((valx - i) + mod1) % size) == 0) || (((valx + i + mod2) % size) == 0)) {
|
|
||||||
//
|
|
||||||
// /*
|
|
||||||
// * Road 1
|
|
||||||
// */
|
|
||||||
//
|
|
||||||
// road1 = true;
|
|
||||||
// x = (int) Math.ceil((valx - n3) / size);
|
|
||||||
// }
|
|
||||||
// if (((((valz - i) + mod1) % size) == 0) || (((valz + i + mod2) % size) == 0)) {
|
|
||||||
// /*
|
|
||||||
// * Road 2
|
|
||||||
// */
|
|
||||||
//
|
|
||||||
// road2 = true;
|
|
||||||
// z = (int) Math.ceil((valz - n3) / size);
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// if (road1 && road2) {
|
|
||||||
// return null;
|
|
||||||
// }
|
|
||||||
// else if (road1) {
|
|
||||||
// return null;
|
|
||||||
// }
|
|
||||||
// else if (road2) {
|
|
||||||
// return null;
|
|
||||||
// }
|
|
||||||
// else {
|
|
||||||
// return new PlotId(x, z);
|
|
||||||
// }
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -1,106 +0,0 @@
|
|||||||
package com.intellectualcrafters.plot;
|
|
||||||
|
|
||||||
import java.util.Collection;
|
|
||||||
import java.util.Iterator;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Created by Citymonstret on 2014-09-25.
|
|
||||||
*/
|
|
||||||
public class PlotCollection implements Collection {
|
|
||||||
|
|
||||||
private Plot[] collection;
|
|
||||||
|
|
||||||
public PlotCollection(int size) {
|
|
||||||
this.collection = new Plot[size];
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int size() {
|
|
||||||
return this.collection.length;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean isEmpty() {
|
|
||||||
return this.collection.length == 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean contains(Object o) {
|
|
||||||
if(!(o instanceof Plot)) {
|
|
||||||
throw new IllegalArgumentException("Object not instance of Plot.class");
|
|
||||||
}
|
|
||||||
Plot p = (Plot) o;
|
|
||||||
for(Plot plot : this.collection) {
|
|
||||||
if(plot.getId().toString().equals(p.getId().toString())) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Iterator iterator() {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Object[] toArray() {
|
|
||||||
return this.collection;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean add(Object o) {
|
|
||||||
Plot[] pre = this.collection;
|
|
||||||
this.collection = new Plot[pre.length + 1];
|
|
||||||
for(int x = 0; x < pre.length; x++) {
|
|
||||||
this.collection[x] = pre[x];
|
|
||||||
}
|
|
||||||
this.collection[collection.length - 1] = (Plot) o;
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean remove(Object o) {
|
|
||||||
Plot[] pre = this.collection;
|
|
||||||
this.collection = new Plot[pre.length - 1];
|
|
||||||
int x = 0;
|
|
||||||
for(Plot plot : pre) {
|
|
||||||
if(plot != (Plot) o) {
|
|
||||||
this.collection[x++] = plot;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean addAll(Collection c) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void clear() {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean retainAll(Collection c) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean removeAll(Collection c) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean containsAll(Collection c) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public T[] toArray(Object[] a) {
|
|
||||||
return new T[0];
|
|
||||||
}
|
|
||||||
|
|
||||||
public
|
|
||||||
}
|
|
@ -577,7 +577,7 @@ public class PlotHelper {
|
|||||||
}
|
}
|
||||||
if ((pos2.getBlockX() - pos1.getBlockX()) < 16) {
|
if ((pos2.getBlockX() - pos1.getBlockX()) < 16) {
|
||||||
setSimpleCuboid(world, new Location(world, pos1.getBlockX(), 0, pos1.getBlockZ()), new Location(world, pos2.getBlockX(), 1, pos2.getBlockZ()), (short) 7);
|
setSimpleCuboid(world, new Location(world, pos1.getBlockX(), 0, pos1.getBlockZ()), new Location(world, pos2.getBlockX(), 1, pos2.getBlockZ()), (short) 7);
|
||||||
setSimpleCuboid(world, new Location(world, pos1.getBlockX(), plotworld.PLOT_HEIGHT, pos1.getBlockZ()), new Location(world, pos2.getBlockX(), world.getMaxHeight(), pos2.getBlockZ()), (short) 0);
|
setSimpleCuboid(world, new Location(world, pos1.getBlockX(), plotworld.PLOT_HEIGHT + 1, pos1.getBlockZ()), new Location(world, pos2.getBlockX(), world.getMaxHeight(), pos2.getBlockZ()), (short) 0);
|
||||||
setCuboid(world, new Location(world, pos1.getBlockX(), 1, pos1.getBlockZ()), new Location(world, pos2.getBlockX(), plotworld.PLOT_HEIGHT, pos2.getBlockZ()), filling, filling_data);
|
setCuboid(world, new Location(world, pos1.getBlockX(), 1, pos1.getBlockZ()), new Location(world, pos2.getBlockX(), plotworld.PLOT_HEIGHT, pos2.getBlockZ()), filling, filling_data);
|
||||||
setCuboid(world, new Location(world, pos1.getBlockX(), plotworld.PLOT_HEIGHT, pos1.getBlockZ()), new Location(world, pos2.getBlockX(), plotworld.PLOT_HEIGHT + 1, pos2.getBlockZ()), plotfloors, plotfloors_data);
|
setCuboid(world, new Location(world, pos1.getBlockX(), plotworld.PLOT_HEIGHT, pos1.getBlockZ()), new Location(world, pos2.getBlockX(), plotworld.PLOT_HEIGHT + 1, pos2.getBlockZ()), plotfloors, plotfloors_data);
|
||||||
PlayerFunctions.sendMessage(requester, "&c(depreciated) &r" + C.CLEARING_DONE.s().replaceAll("%time%", "" + ((System.nanoTime() - start) / 1000000.0)));
|
PlayerFunctions.sendMessage(requester, "&c(depreciated) &r" + C.CLEARING_DONE.s().replaceAll("%time%", "" + ((System.nanoTime() - start) / 1000000.0)));
|
||||||
@ -626,7 +626,7 @@ public class PlotHelper {
|
|||||||
}
|
}
|
||||||
if (min == null) {
|
if (min == null) {
|
||||||
setSimpleCuboid(world, new Location(world, pos1.getBlockX(), 0, pos1.getBlockZ()), new Location(world, pos2.getBlockX(), 1, pos2.getBlockZ()), (short) 7);
|
setSimpleCuboid(world, new Location(world, pos1.getBlockX(), 0, pos1.getBlockZ()), new Location(world, pos2.getBlockX(), 1, pos2.getBlockZ()), (short) 7);
|
||||||
setSimpleCuboid(world, new Location(world, pos1.getBlockX(), plotworld.PLOT_HEIGHT, pos1.getBlockZ()), new Location(world, pos2.getBlockX(), world.getMaxHeight(), pos2.getBlockZ()), (short) 0);
|
setSimpleCuboid(world, new Location(world, pos1.getBlockX(), plotworld.PLOT_HEIGHT + 1, pos1.getBlockZ()), new Location(world, pos2.getBlockX(), world.getMaxHeight(), pos2.getBlockZ()), (short) 0);
|
||||||
setCuboid(world, new Location(world, pos1.getBlockX(), 1, pos1.getBlockZ()), new Location(world, pos2.getBlockX(), plotworld.PLOT_HEIGHT, pos2.getBlockZ()), filling, filling_data);
|
setCuboid(world, new Location(world, pos1.getBlockX(), 1, pos1.getBlockZ()), new Location(world, pos2.getBlockX(), plotworld.PLOT_HEIGHT, pos2.getBlockZ()), filling, filling_data);
|
||||||
setCuboid(world, new Location(world, pos1.getBlockX(), plotworld.PLOT_HEIGHT, pos1.getBlockZ()), new Location(world, pos2.getBlockX(), plotworld.PLOT_HEIGHT + 1, pos2.getBlockZ()), plotfloors, plotfloors_data);
|
setCuboid(world, new Location(world, pos1.getBlockX(), plotworld.PLOT_HEIGHT, pos1.getBlockZ()), new Location(world, pos2.getBlockX(), plotworld.PLOT_HEIGHT + 1, pos2.getBlockZ()), plotfloors, plotfloors_data);
|
||||||
} else {
|
} else {
|
||||||
@ -782,6 +782,10 @@ public class PlotHelper {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static Location getPlotTopLoc(World world, PlotId id) {
|
public static Location getPlotTopLoc(World world, PlotId id) {
|
||||||
|
Plot plot = PlotMain.getPlots(world).get(id);
|
||||||
|
if (id!=null) {
|
||||||
|
id = PlayerFunctions.getTopPlot(world, plot).id;
|
||||||
|
}
|
||||||
PlotWorld plotworld = PlotMain.getWorldSettings(world);
|
PlotWorld plotworld = PlotMain.getWorldSettings(world);
|
||||||
int px = id.x;
|
int px = id.x;
|
||||||
int pz = id.y;
|
int pz = id.y;
|
||||||
@ -793,6 +797,10 @@ public class PlotHelper {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static Location getPlotBottomLoc(World world, PlotId id) {
|
public static Location getPlotBottomLoc(World world, PlotId id) {
|
||||||
|
Plot plot = PlotMain.getPlots(world).get(id);
|
||||||
|
if (id!=null) {
|
||||||
|
id = PlayerFunctions.getBottomPlot(world, plot).id;
|
||||||
|
}
|
||||||
PlotWorld plotworld = PlotMain.getWorldSettings(world);
|
PlotWorld plotworld = PlotMain.getWorldSettings(world);
|
||||||
int px = id.x;
|
int px = id.x;
|
||||||
int pz = id.y;
|
int pz = id.y;
|
||||||
|
@ -188,7 +188,6 @@ public class PlotMain extends JavaPlugin {
|
|||||||
}
|
}
|
||||||
return new HashMap<PlotId, Plot>();
|
return new HashMap<PlotId, Plot>();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* get all plot worlds
|
* get all plot worlds
|
||||||
*/
|
*/
|
||||||
@ -713,7 +712,7 @@ public class PlotMain extends JavaPlugin {
|
|||||||
this.error = 0l;
|
this.error = 0l;
|
||||||
}
|
}
|
||||||
for (String w : getPlotWorlds()) {
|
for (String w : getPlotWorlds()) {
|
||||||
getWorldSettings(w);
|
PlotWorld plotworld = getWorldSettings(w);
|
||||||
World world = Bukkit.getServer().getWorld(w);
|
World world = Bukkit.getServer().getWorld(w);
|
||||||
try {
|
try {
|
||||||
if (world.getLoadedChunks().length < 1) {
|
if (world.getLoadedChunks().length < 1) {
|
||||||
@ -723,16 +722,11 @@ public class PlotMain extends JavaPlugin {
|
|||||||
Entity[] entities = chunk.getEntities();
|
Entity[] entities = chunk.getEntities();
|
||||||
for (int i = entities.length - 1; i >= 0; i--) {
|
for (int i = entities.length - 1; i >= 0; i--) {
|
||||||
Entity entity = entities[i];
|
Entity entity = entities[i];
|
||||||
if (entity.getType() == EntityType.PLAYER) {
|
if (!(entity instanceof Player)) {
|
||||||
continue;
|
|
||||||
}
|
|
||||||
this.location = entity.getLocation();
|
this.location = entity.getLocation();
|
||||||
if (!PlayerEvents.isInPlot(this.location)) {
|
if (!PlayerEvents.isInPlot(this.location)) {
|
||||||
boolean tamed = false;
|
boolean tamed = false;
|
||||||
if (Settings.MOB_PATHFINDING) {
|
if (Settings.MOB_PATHFINDING) {
|
||||||
|
|
||||||
// TODO make this more efficient
|
|
||||||
|
|
||||||
if (entity instanceof Tameable) {
|
if (entity instanceof Tameable) {
|
||||||
Tameable tameable = (Tameable) entity;
|
Tameable tameable = (Tameable) entity;
|
||||||
if (tameable.isTamed()) {
|
if (tameable.isTamed()) {
|
||||||
@ -751,7 +745,7 @@ public class PlotMain extends JavaPlugin {
|
|||||||
int x = this.location.getBlockX();
|
int x = this.location.getBlockX();
|
||||||
int y = this.location.getBlockY();
|
int y = this.location.getBlockY();
|
||||||
int z = this.location.getBlockZ();
|
int z = this.location.getBlockZ();
|
||||||
while (!found || (radius > PlotWorld.ROAD_WIDTH_DEFAULT)) {
|
while (!found || (radius > plotworld.ROAD_WIDTH)) {
|
||||||
Location pos;
|
Location pos;
|
||||||
switch (dir) {
|
switch (dir) {
|
||||||
case 0:
|
case 0:
|
||||||
@ -782,6 +776,8 @@ public class PlotMain extends JavaPlugin {
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// Welp! how did this entity get here?
|
||||||
|
entity.teleport(location.subtract(location.getDirection().normalize().multiply(2)));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (!tamed) {
|
if (!tamed) {
|
||||||
@ -790,6 +786,7 @@ public class PlotMain extends JavaPlugin {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
++this.error;
|
++this.error;
|
||||||
} finally {
|
} finally {
|
||||||
@ -911,4 +908,5 @@ public class PlotMain extends JavaPlugin {
|
|||||||
plots.put(world, new HashMap<PlotId, Plot>());
|
plots.put(world, new HashMap<PlotId, Plot>());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -27,7 +27,7 @@ public class PlotSettings {
|
|||||||
/**
|
/**
|
||||||
* merged plots
|
* merged plots
|
||||||
*/
|
*/
|
||||||
private boolean[] merged = new boolean[] {false,false,false,false}; // 1111
|
private boolean[] merged = new boolean[] {false,false,false,false};
|
||||||
/**
|
/**
|
||||||
* plot alias
|
* plot alias
|
||||||
*/
|
*/
|
||||||
@ -76,6 +76,10 @@ public class PlotSettings {
|
|||||||
return merged[direction];
|
return merged[direction];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean isMerged() {
|
||||||
|
return (merged[0] || merged[1] || merged[2] || merged[3]);
|
||||||
|
}
|
||||||
|
|
||||||
public boolean[] getMerged() {
|
public boolean[] getMerged() {
|
||||||
return this.merged;
|
return this.merged;
|
||||||
}
|
}
|
||||||
|
@ -65,6 +65,7 @@ import org.bukkit.event.world.StructureGrowEvent;
|
|||||||
import com.intellectualcrafters.plot.C;
|
import com.intellectualcrafters.plot.C;
|
||||||
import com.intellectualcrafters.plot.PlayerFunctions;
|
import com.intellectualcrafters.plot.PlayerFunctions;
|
||||||
import com.intellectualcrafters.plot.Plot;
|
import com.intellectualcrafters.plot.Plot;
|
||||||
|
import com.intellectualcrafters.plot.PlotHelper;
|
||||||
import com.intellectualcrafters.plot.PlotId;
|
import com.intellectualcrafters.plot.PlotId;
|
||||||
import com.intellectualcrafters.plot.PlotMain;
|
import com.intellectualcrafters.plot.PlotMain;
|
||||||
import com.intellectualcrafters.plot.PlotWorld;
|
import com.intellectualcrafters.plot.PlotWorld;
|
||||||
@ -493,7 +494,7 @@ public class PlayerEvents implements Listener {
|
|||||||
if (!isPlotWorld(world)) {
|
if (!isPlotWorld(world)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if ((isInPlot(event.getLocation()) && (event.getSpawnReason() != SpawnReason.SPAWNER_EGG)) || !isInPlot(event.getLocation())) {
|
if ((event.getSpawnReason() != SpawnReason.SPAWNER_EGG) || !isInPlot(event.getLocation())) {
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user