mirror of
https://github.com/IntellectualSites/PlotSquared.git
synced 2024-11-12 10:24:07 +01:00
Finished adding cluster commands. TODO: testing
This commit is contained in:
parent
61898b0157
commit
cafaa31228
@ -168,17 +168,31 @@ public class Auto extends SubCommand {
|
||||
return sendMessage(plr, C.NOT_IN_PLOT);
|
||||
}
|
||||
PlotCluster cluster = ClusterManager.getCluster(loc);
|
||||
// Must be standing in a cluster
|
||||
if (cluster == null) {
|
||||
PlayerFunctions.sendMessage(plr, C.NOT_IN_CLUSTER);
|
||||
return false;
|
||||
}
|
||||
PlotId bot = cluster.getP1();
|
||||
PlotId top = cluster.getP2();
|
||||
PlotId id = new PlotId((bot.x + top.x) / 2, (bot.y + top.y) / 2);
|
||||
PlotId origin = new PlotId((bot.x + top.x) / 2, (bot.y + top.y) / 2);
|
||||
PlotId id = new PlotId(0, 0);
|
||||
int width = Math.max(top.x - bot.x, top.y - bot.y);
|
||||
int max = width * width;
|
||||
|
||||
// TODO finish cluster auto claiming
|
||||
|
||||
//
|
||||
for (int i = 0; i <= max; i++) {
|
||||
PlotId currentId = new PlotId(origin.x + id.x, origin.y + id.y);
|
||||
Plot current = PlotHelper.getPlot(world, currentId);
|
||||
if (current != null && !current.hasOwner() && cluster.equals(ClusterManager.getCluster(current))) {
|
||||
Claim.claimPlot(plr, plot, true, true);
|
||||
return true;
|
||||
}
|
||||
id = getNextPlot(id, 1);
|
||||
}
|
||||
|
||||
// no free plots
|
||||
PlayerFunctions.sendMessage(plr, C.NO_FREE_PLOTS);
|
||||
return false;
|
||||
}
|
||||
|
||||
boolean br = false;
|
||||
|
@ -25,15 +25,18 @@ import java.util.HashSet;
|
||||
import java.util.UUID;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import com.intellectualcrafters.plot.PlotMain;
|
||||
import com.intellectualcrafters.plot.config.C;
|
||||
import com.intellectualcrafters.plot.database.DBFunc;
|
||||
import com.intellectualcrafters.plot.object.BlockLoc;
|
||||
import com.intellectualcrafters.plot.object.Plot;
|
||||
import com.intellectualcrafters.plot.object.PlotCluster;
|
||||
import com.intellectualcrafters.plot.object.PlotClusterId;
|
||||
import com.intellectualcrafters.plot.object.PlotId;
|
||||
import com.intellectualcrafters.plot.object.PlotWorld;
|
||||
import com.intellectualcrafters.plot.util.ClusterManager;
|
||||
import com.intellectualcrafters.plot.util.PlayerFunctions;
|
||||
import com.intellectualcrafters.plot.util.PlotHelper;
|
||||
@ -50,7 +53,7 @@ public class Cluster extends SubCommand {
|
||||
if (!ClusterManager.clusters.containsKey(plr.getWorld().getName())) {
|
||||
return false;
|
||||
}
|
||||
// list, create, delete, resize, invite, kick, leave, helpers, tp
|
||||
// list, create, delete, resize, invite, kick, leave, helpers, tp, sethome
|
||||
|
||||
if (args.length == 0) {
|
||||
// return arguments
|
||||
@ -127,6 +130,14 @@ public class Cluster extends SubCommand {
|
||||
cluster.settings.setAlias(name);
|
||||
DBFunc.createCluster(world, cluster);
|
||||
ClusterManager.clusters.get(world).add(cluster);
|
||||
// Add any existing plots to the current cluster
|
||||
for (Plot plot : PlotMain.getPlots(plr.getWorld()).values()) {
|
||||
PlotCluster current = ClusterManager.getCluster(plot);
|
||||
if (cluster.equals(current)) {
|
||||
cluster.invited.add(plot.owner);
|
||||
DBFunc.setInvited(world, cluster, plot.owner);
|
||||
}
|
||||
}
|
||||
PlayerFunctions.sendMessage(plr, C.CLUSTER_ADDED);
|
||||
return true;
|
||||
}
|
||||
@ -144,6 +155,22 @@ public class Cluster extends SubCommand {
|
||||
PlayerFunctions.sendMessage(plr, C.NOT_IN_CLUSTER);
|
||||
return false;
|
||||
}
|
||||
if (!toDelete.owner.equals(UUIDHandler.getUUID(plr))) {
|
||||
if (!PlotMain.hasPermission(plr, "plots.cluster.delete.other")) {
|
||||
PlayerFunctions.sendMessage(plr, C.NO_PERMISSION, "plots.cluster.delete.other");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
PlotWorld plotworld = PlotMain.getWorldSettings(plr.getWorld());
|
||||
if (plotworld.REQUIRE_CLUSTER) {
|
||||
for (Plot plot : PlotMain.getPlots(plr.getWorld()).values()) {
|
||||
PlotCluster cluster = ClusterManager.getCluster(plot);
|
||||
if (toDelete.equals(cluster)) {
|
||||
String world = plr.getWorld().getName();
|
||||
DBFunc.delete(world, plot);
|
||||
}
|
||||
}
|
||||
}
|
||||
String world_delete = plr.getWorld().getName();
|
||||
ClusterManager.clusters.get(world_delete).remove(toDelete);
|
||||
DBFunc.delete(toDelete);
|
||||
@ -172,6 +199,12 @@ public class Cluster extends SubCommand {
|
||||
PlayerFunctions.sendMessage(plr, C.NOT_IN_CLUSTER);
|
||||
return false;
|
||||
}
|
||||
if (!cluster.hasHelperRights(UUIDHandler.getUUID(plr))) {
|
||||
if (!PlotMain.hasPermission(plr, "plots.cluster.resize.other")) {
|
||||
PlayerFunctions.sendMessage(plr, C.NO_PERMISSION, "plots.cluster.resize.other");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
//check if overlap
|
||||
PlotClusterId id = new PlotClusterId(pos1, pos2);
|
||||
HashSet<PlotCluster> intersects = ClusterManager.getIntersects(plr.getWorld().getName(), id);
|
||||
@ -199,6 +232,12 @@ public class Cluster extends SubCommand {
|
||||
PlayerFunctions.sendMessage(plr, C.NOT_IN_CLUSTER);
|
||||
return false;
|
||||
}
|
||||
if (!cluster.hasHelperRights(UUIDHandler.getUUID(plr))) {
|
||||
if (!PlotMain.hasPermission(plr, "plots.cluster.invite.other")) {
|
||||
PlayerFunctions.sendMessage(plr, C.NO_PERMISSION, "plots.cluster.invite.other");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
// check uuid
|
||||
UUID uuid = UUIDHandler.getUUID(args[1]);
|
||||
if (uuid == null) {
|
||||
@ -212,7 +251,7 @@ public class Cluster extends SubCommand {
|
||||
DBFunc.setInvited(world, cluster, uuid);
|
||||
Player player = UUIDHandler.uuidWrapper.getPlayer(uuid);
|
||||
if (player != null) {
|
||||
PlayerFunctions.sendMessage(plr, C.CLUSTER_INVITED, cluster.getName());
|
||||
PlayerFunctions.sendMessage(player, C.CLUSTER_INVITED, cluster.getName());
|
||||
}
|
||||
}
|
||||
PlayerFunctions.sendMessage(plr, C.CLUSTER_ADDED_USER);
|
||||
@ -227,6 +266,46 @@ public class Cluster extends SubCommand {
|
||||
PlayerFunctions.sendMessage(plr, C.COMMAND_SYNTAX, "/plot cluster kick <player>");
|
||||
return false;
|
||||
}
|
||||
PlotCluster cluster = ClusterManager.getCluster(plr.getLocation());
|
||||
if (cluster == null) {
|
||||
PlayerFunctions.sendMessage(plr, C.NOT_IN_CLUSTER);
|
||||
return false;
|
||||
}
|
||||
if (!cluster.hasHelperRights(UUIDHandler.getUUID(plr))) {
|
||||
if (!PlotMain.hasPermission(plr, "plots.cluster.kick.other")) {
|
||||
PlayerFunctions.sendMessage(plr, C.NO_PERMISSION, "plots.cluster.kick.other");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
// check uuid
|
||||
UUID uuid = UUIDHandler.getUUID(args[1]);
|
||||
if (uuid == null) {
|
||||
PlayerFunctions.sendMessage(plr, C.INVALID_PLAYER, args[1]);
|
||||
return false;
|
||||
}
|
||||
// Can't kick if the player is yourself, the owner, or not added to the cluster
|
||||
if (uuid.equals(UUIDHandler.getUUID(plr)) || uuid.equals(cluster.owner) || !cluster.hasRights(uuid)) {
|
||||
PlayerFunctions.sendMessage(plr, C.CANNOT_KICK_PLAYER, cluster.getName());
|
||||
return false;
|
||||
}
|
||||
if (cluster.helpers.contains(uuid)) {
|
||||
cluster.helpers.remove(uuid);
|
||||
DBFunc.removeHelper(cluster, uuid);
|
||||
}
|
||||
cluster.invited.remove(uuid);
|
||||
DBFunc.removeInvited(cluster, uuid);
|
||||
Player player = UUIDHandler.uuidWrapper.getPlayer(uuid);
|
||||
if (player != null) {
|
||||
PlayerFunctions.sendMessage(player, C.CLUSTER_REMOVED, cluster.getName());
|
||||
}
|
||||
for (Plot plot : PlotMain.getPlots(plr.getWorld(), uuid)) {
|
||||
PlotCluster current = ClusterManager.getCluster(plot);
|
||||
if (current != null && current.equals(cluster)) {
|
||||
String world = plr.getWorld().getName();
|
||||
DBFunc.delete(world, plot);
|
||||
}
|
||||
}
|
||||
PlayerFunctions.sendMessage(plr, C.CLUSTER_KICKED_USER);
|
||||
return true;
|
||||
}
|
||||
case "leave": {
|
||||
@ -238,6 +317,44 @@ public class Cluster extends SubCommand {
|
||||
PlayerFunctions.sendMessage(plr, C.COMMAND_SYNTAX, "/plot cluster leave [name]");
|
||||
return false;
|
||||
}
|
||||
PlotCluster cluster;
|
||||
if (args.length == 2) {
|
||||
cluster = ClusterManager.getCluster(plr.getWorld().getName(), args[1]);
|
||||
if (cluster == null) {
|
||||
PlayerFunctions.sendMessage(plr, C.INVALID_CLUSTER, args[1]);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
else {
|
||||
cluster = ClusterManager.getCluster(plr.getLocation());
|
||||
if (cluster == null) {
|
||||
PlayerFunctions.sendMessage(plr, C.NOT_IN_CLUSTER);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
UUID uuid = UUIDHandler.getUUID(plr);
|
||||
if (!cluster.hasRights(uuid)) {
|
||||
PlayerFunctions.sendMessage(plr, C.CLUSTER_NOT_ADDED);
|
||||
return false;
|
||||
}
|
||||
if (uuid.equals(cluster.owner)) {
|
||||
PlayerFunctions.sendMessage(plr, C.CLUSTER_CANNOT_LEAVE);
|
||||
return false;
|
||||
}
|
||||
if (cluster.helpers.contains(uuid)) {
|
||||
cluster.helpers.remove(uuid);
|
||||
DBFunc.removeHelper(cluster, uuid);
|
||||
}
|
||||
cluster.invited.remove(uuid);
|
||||
DBFunc.removeInvited(cluster, uuid);
|
||||
PlayerFunctions.sendMessage(plr, C.CLUSTER_REMOVED, cluster.getName());
|
||||
for (Plot plot : PlotMain.getPlots(plr.getWorld(), uuid)) {
|
||||
PlotCluster current = ClusterManager.getCluster(plot);
|
||||
if (current != null && current.equals(cluster)) {
|
||||
String world = plr.getWorld().getName();
|
||||
DBFunc.delete(world, plot);
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
case "helpers": {
|
||||
@ -249,7 +366,26 @@ public class Cluster extends SubCommand {
|
||||
PlayerFunctions.sendMessage(plr, C.COMMAND_SYNTAX, "/plot cluster helpers <add|remove> <player>");
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
PlotCluster cluster = ClusterManager.getCluster(plr.getLocation());
|
||||
if (cluster == null) {
|
||||
PlayerFunctions.sendMessage(plr, C.NOT_IN_CLUSTER);
|
||||
return false;
|
||||
}
|
||||
UUID uuid = UUIDHandler.getUUID(args[2]);
|
||||
if (uuid == null) {
|
||||
PlayerFunctions.sendMessage(plr, C.INVALID_PLAYER, args[1]);
|
||||
return false;
|
||||
}
|
||||
if (args[1].toLowerCase().equals("add")) {
|
||||
cluster.helpers.add(uuid);
|
||||
return PlayerFunctions.sendMessage(plr, C.CLUSTER_ADDED_HELPER);
|
||||
}
|
||||
if (args[1].toLowerCase().equals("remove")) {
|
||||
cluster.helpers.remove(uuid);
|
||||
return PlayerFunctions.sendMessage(plr, C.CLUSTER_REMOVED_HELPER);
|
||||
}
|
||||
PlayerFunctions.sendMessage(plr, C.COMMAND_SYNTAX, "/plot cluster helpers <add|remove> <player>");
|
||||
return false;
|
||||
}
|
||||
case "tp": {
|
||||
if (!PlotMain.hasPermission(plr, "plots.cluster.tp")) {
|
||||
@ -260,7 +396,20 @@ public class Cluster extends SubCommand {
|
||||
PlayerFunctions.sendMessage(plr, C.COMMAND_SYNTAX, "/plot cluster tp <name>");
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
PlotCluster cluster = ClusterManager.getCluster(plr.getWorld().getName(), args[1]);
|
||||
if (cluster == null) {
|
||||
PlayerFunctions.sendMessage(plr, C.INVALID_CLUSTER, args[1]);
|
||||
return false;
|
||||
}
|
||||
UUID uuid = UUIDHandler.getUUID(plr);
|
||||
if (!cluster.hasRights(uuid)) {
|
||||
if (!PlotMain.hasPermission(plr, "plots.cluster.tp.other")) {
|
||||
PlayerFunctions.sendMessage(plr, C.NO_PERMISSION, "plots.cluster.tp.other");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
plr.teleport(ClusterManager.getHome(cluster));
|
||||
return PlayerFunctions.sendMessage(plr, C.CLUSTER_TELEPORTING);
|
||||
}
|
||||
case "info": {
|
||||
if (!PlotMain.hasPermission(plr, "plots.cluster.info")) {
|
||||
@ -271,8 +420,68 @@ public class Cluster extends SubCommand {
|
||||
PlayerFunctions.sendMessage(plr, C.COMMAND_SYNTAX, "/plot cluster info [name]");
|
||||
return false;
|
||||
}
|
||||
PlotCluster cluster;
|
||||
if (args.length == 2) {
|
||||
cluster = ClusterManager.getCluster(plr.getWorld().getName(), args[1]);
|
||||
if (cluster == null) {
|
||||
PlayerFunctions.sendMessage(plr, C.INVALID_CLUSTER, args[1]);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
else {
|
||||
cluster = ClusterManager.getCluster(plr.getLocation());
|
||||
if (cluster == null) {
|
||||
PlayerFunctions.sendMessage(plr, C.NOT_IN_CLUSTER);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
String id = cluster.toString();
|
||||
String owner = UUIDHandler.getName(cluster.owner);
|
||||
if (owner == null) {
|
||||
owner = "unknown";
|
||||
}
|
||||
String name = cluster.getName();
|
||||
String size = (cluster.getP2().x - cluster.getP1().x) + "x" + (cluster.getP2().y - cluster.getP1().y);
|
||||
String rights = cluster.hasRights(UUIDHandler.getUUID(plr)) + "";
|
||||
|
||||
String message = C.CLUSTER_INFO.s();
|
||||
message = message.replaceAll("%id%", id);
|
||||
message = message.replaceAll("%owner%", owner);
|
||||
message = message.replaceAll("%name%", name);
|
||||
message = message.replaceAll("%size%", size);
|
||||
message = message.replaceAll("%rights%", rights);
|
||||
|
||||
PlayerFunctions.sendMessage(plr, message);
|
||||
return true;
|
||||
}
|
||||
case "sethome": {
|
||||
if (!PlotMain.hasPermission(plr, "plots.cluster.sethome")) {
|
||||
PlayerFunctions.sendMessage(plr, C.NO_PERMISSION, "plots.cluster.sethome");
|
||||
return false;
|
||||
}
|
||||
if (args.length != 1 && args.length != 2) {
|
||||
PlayerFunctions.sendMessage(plr, C.COMMAND_SYNTAX, "/plot cluster sethome");
|
||||
return false;
|
||||
}
|
||||
PlotCluster cluster = ClusterManager.getCluster(plr.getLocation());
|
||||
if (cluster == null) {
|
||||
PlayerFunctions.sendMessage(plr, C.NOT_IN_CLUSTER);
|
||||
return false;
|
||||
}
|
||||
if (!cluster.hasHelperRights(UUIDHandler.getUUID(plr))) {
|
||||
if (!PlotMain.hasPermission(plr, "plots.cluster.sethome.other")) {
|
||||
PlayerFunctions.sendMessage(plr, C.NO_PERMISSION, "plots.cluster.sethome.other");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
Location base = ClusterManager.getClusterBottom(cluster);
|
||||
base.setY(0);
|
||||
Location relative = plr.getLocation().subtract(base);
|
||||
BlockLoc blockloc = new BlockLoc(relative.getBlockX(), relative.getBlockY(), relative.getBlockZ());
|
||||
cluster.settings.setPosition(blockloc);
|
||||
DBFunc.setPosition(cluster, relative.getBlockX() + "," + relative.getBlockY() + "," + relative.getBlockZ());
|
||||
return PlayerFunctions.sendMessage(plr, C.POSITION_SET);
|
||||
}
|
||||
}
|
||||
PlayerFunctions.sendMessage(plr, C.CLUSTER_AVAILABLE_ARGS);
|
||||
return false;
|
||||
|
@ -40,7 +40,7 @@ public enum C {
|
||||
/*
|
||||
* Cluster
|
||||
*/
|
||||
CLUSTER_AVAILABLE_ARGS("&6The following sub commands are available: &clist, create, delete, resize, invite, kick, leave, helpers, info, tp"),
|
||||
CLUSTER_AVAILABLE_ARGS("&6The following sub commands are available: &clist, create, delete, resize, invite, kick, leave, helpers, info, tp, sethome"),
|
||||
CLUSTER_LIST_HEADING("&cThere are %s clusters in this world"),
|
||||
CLUSTER_LIST_ELEMENT("&7 - &6%s\n"),
|
||||
CLUSTER_INTERSECTION("&6The proposed area overlaps with %s existing cluster/s"),
|
||||
@ -48,7 +48,17 @@ public enum C {
|
||||
CLUSTER_DELETED("&6Successfully deleted the cluster."),
|
||||
CLUSTER_RESIZED("&6Successfully resized the cluster."),
|
||||
CLUSTER_ADDED_USER("&6Successfully added user to the cluster."),
|
||||
CANNOT_KICK_PLAYER("&cYou cannot kick that player"),
|
||||
CLUSTER_INVITED("&6You have been invited to the following cluster: %s."),
|
||||
CLUSTER_REMOVED("&cYou have been removed from cluster %s"),
|
||||
CLUSTER_KICKED_USER("&6Successfully kicked the user"),
|
||||
INVALID_CLUSTER("&cInvalid cluster name: %s"),
|
||||
CLUSTER_NOT_ADDED("&cThat player was not added to the plot cluster"),
|
||||
CLUSTER_CANNOT_LEAVE("&cYou must delete or transfer ownership before leaving"),
|
||||
CLUSTER_ADDED_HELPER("&6Successfully added a helper to the cluster"),
|
||||
CLUSTER_REMOVED_HELPER("&6Successfully removed a helper to the cluster"),
|
||||
CLUSTER_TELEPORTING("&6Teleporting..."),
|
||||
CLUSTER_INFO("&6Current cluster: %id%\nName: %name%\nOwner: %owner%\nSize: %size%\nRights: %rights%"),
|
||||
/*
|
||||
* Border
|
||||
*/
|
||||
@ -168,7 +178,7 @@ public enum C {
|
||||
* Position
|
||||
*/
|
||||
MISSING_POSITION("&cYou need to specify a position. Possible values: &6none"),
|
||||
POSITION_SET("&cPlot home position set to your current location"),
|
||||
POSITION_SET("&Home position set to your current location"),
|
||||
HOME_ARGUMENT("&cUse /plot set home [none]"),
|
||||
INVALID_POSITION("&cThat is not a valid position value"),
|
||||
/*
|
||||
@ -221,8 +231,9 @@ public enum C {
|
||||
/*
|
||||
* No <plot>
|
||||
*/
|
||||
NO_FREE_PLOTS("&cThere are no free plots available"),
|
||||
NOT_IN_PLOT("&cYou're not in a plot"),
|
||||
NOT_IN_CLUSTER("&cYou're not in a plot cluster"),
|
||||
NOT_IN_CLUSTER("&cYou must be within a plot cluster to perform that action"),
|
||||
NOT_IN_PLOT_WORLD("&cYou're not in a plot world"),
|
||||
NOT_VALID_WORLD("&cThat is not a valid world (case sensitive)"),
|
||||
NOT_VALID_PLOT_WORLD("&cThat is not a valid plot world (case sensitive)"),
|
||||
|
@ -239,11 +239,10 @@ public interface AbstractDB {
|
||||
public void removeTrusted(final String world, final Plot plot, final UUID uuid);
|
||||
/**
|
||||
*
|
||||
* @param world
|
||||
* @param cluster
|
||||
* @param uuid
|
||||
*/
|
||||
public void removeInvited(final String world, final PlotCluster cluster, final UUID uuid);
|
||||
public void removeInvited(final PlotCluster cluster, final UUID uuid);
|
||||
/**
|
||||
* @param plot Plot Object
|
||||
* @param uuid Player that should be removed
|
||||
|
@ -275,8 +275,8 @@ public class DBFunc {
|
||||
* @param plot
|
||||
* @param uuid
|
||||
*/
|
||||
public static void removeInvited(final String world, final PlotCluster cluster, final UUID uuid) {
|
||||
dbManager.removeInvited(world, cluster, uuid);
|
||||
public static void removeInvited(final PlotCluster cluster, final UUID uuid) {
|
||||
dbManager.removeInvited(cluster, uuid);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -1697,7 +1697,7 @@ public class SQLManager implements AbstractDB {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removeInvited(String world, final PlotCluster cluster, final UUID uuid) {
|
||||
public void removeInvited(final PlotCluster cluster, final UUID uuid) {
|
||||
TaskManager.runTask(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
|
@ -45,7 +45,11 @@ public class PlotCluster {
|
||||
}
|
||||
|
||||
public boolean hasRights(UUID uuid) {
|
||||
return (invited.contains(uuid)|| invited.contains(DBFunc.everyone) || helpers.contains(uuid) || helpers.contains(DBFunc.everyone));
|
||||
return (owner.equals(uuid) || invited.contains(uuid)|| invited.contains(DBFunc.everyone) || helpers.contains(uuid) || helpers.contains(DBFunc.everyone));
|
||||
}
|
||||
|
||||
public boolean hasHelperRights(UUID uuid) {
|
||||
return (owner.equals(uuid) || helpers.contains(uuid) || helpers.contains(DBFunc.everyone));
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
|
@ -3,10 +3,12 @@ package com.intellectualcrafters.plot.util;
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.World;
|
||||
|
||||
import com.intellectualcrafters.plot.PlotMain;
|
||||
import com.intellectualcrafters.plot.object.BlockLoc;
|
||||
import com.intellectualcrafters.plot.object.Plot;
|
||||
import com.intellectualcrafters.plot.object.PlotCluster;
|
||||
import com.intellectualcrafters.plot.object.PlotClusterId;
|
||||
@ -36,6 +38,63 @@ public class ClusterManager {
|
||||
return new HashSet<>();
|
||||
}
|
||||
|
||||
public static Location getHome(PlotCluster cluster) {
|
||||
World world = Bukkit.getWorld(cluster.world);
|
||||
BlockLoc home = cluster.settings.getPosition();
|
||||
Location toReturn;
|
||||
if (home.y == 0) {
|
||||
// default pos
|
||||
PlotId center = getCenterPlot(cluster);
|
||||
toReturn = PlotHelper.getPlotHome(world, center);
|
||||
if (toReturn.getBlockY() == 0) {
|
||||
final PlotManager manager = PlotMain.getPlotManager(world);
|
||||
final PlotWorld plotworld = PlotMain.getWorldSettings(world);
|
||||
final Location loc = manager.getSignLoc(world, plotworld, PlotHelper.getPlot(world, center));
|
||||
toReturn.setY(loc.getY());
|
||||
}
|
||||
}
|
||||
else {
|
||||
toReturn = getClusterBottom(cluster).add(home.x, home.y, home.z);
|
||||
}
|
||||
int max = world.getHighestBlockAt(toReturn).getY();
|
||||
if (max > toReturn.getBlockY()) {
|
||||
toReturn.setY(max);
|
||||
}
|
||||
return toReturn;
|
||||
}
|
||||
|
||||
public static PlotId getCenterPlot(PlotCluster cluster) {
|
||||
PlotId bot = cluster.getP1();
|
||||
PlotId top = cluster.getP2();
|
||||
return new PlotId((bot.x + top.x) / 2, (bot.y + top.y) / 2);
|
||||
}
|
||||
|
||||
public static Location getClusterBottom(PlotCluster cluster) {
|
||||
String world = cluster.world;
|
||||
final PlotWorld plotworld = PlotMain.getWorldSettings(world);
|
||||
final PlotManager manager = PlotMain.getPlotManager(world);
|
||||
return manager.getPlotBottomLocAbs(plotworld, cluster.getP1());
|
||||
}
|
||||
|
||||
public static Location getClusterTop(PlotCluster cluster) {
|
||||
String world = cluster.world;
|
||||
final PlotWorld plotworld = PlotMain.getWorldSettings(world);
|
||||
final PlotManager manager = PlotMain.getPlotManager(world);
|
||||
return manager.getPlotTopLocAbs(plotworld, cluster.getP2());
|
||||
}
|
||||
|
||||
public static PlotCluster getCluster(String world, String name) {
|
||||
if (!clusters.containsKey(world)) {
|
||||
return null;
|
||||
}
|
||||
for (PlotCluster cluster : clusters.get(world)) {
|
||||
if (cluster.getName().equals(name)) {
|
||||
return cluster;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public static boolean contains(PlotCluster cluster, Location loc) {
|
||||
String world = loc.getWorld().getName();
|
||||
PlotManager manager = PlotMain.getPlotManager(world);
|
||||
|
@ -15,6 +15,7 @@ import com.google.common.collect.HashBiMap;
|
||||
import com.intellectualcrafters.plot.PlotMain;
|
||||
import com.intellectualcrafters.plot.config.C;
|
||||
import com.intellectualcrafters.plot.config.Settings;
|
||||
import com.intellectualcrafters.plot.database.DBFunc;
|
||||
import com.intellectualcrafters.plot.object.StringWrapper;
|
||||
import com.intellectualcrafters.plot.uuid.DefaultUUIDWrapper;
|
||||
import com.intellectualcrafters.plot.uuid.OfflineUUIDWrapper;
|
||||
@ -140,6 +141,10 @@ public class UUIDHandler {
|
||||
StringWrapper nameWrap = new StringWrapper(name);
|
||||
add(nameWrap, uuid);
|
||||
}
|
||||
|
||||
// add the Everyone '*' UUID
|
||||
add(new StringWrapper("*"), DBFunc.everyone);
|
||||
|
||||
PlotMain.sendConsoleSenderMessage(C.PREFIX.s() + "&6Cached a total of: " + UUIDHandler.uuidMap.size() + " UUIDs");
|
||||
}
|
||||
|
||||
@ -186,7 +191,6 @@ public class UUIDHandler {
|
||||
if (name == null) {
|
||||
return null;
|
||||
}
|
||||
|
||||
// check online
|
||||
Player player = Bukkit.getPlayer(name);
|
||||
if (player != null) {
|
||||
|
Loading…
Reference in New Issue
Block a user