mirror of
https://github.com/IntellectualSites/PlotSquared.git
synced 2024-11-26 07:06:44 +01:00
Started working on cluster commands
This commit is contained in:
parent
cbdb3d307b
commit
61898b0157
@ -976,16 +976,18 @@ public class PlotMain extends JavaPlugin implements Listener {
|
|||||||
if (!config.contains(path)) {
|
if (!config.contains(path)) {
|
||||||
config.createSection(path);
|
config.createSection(path);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TODO Augment the world generation with a custom populator
|
||||||
|
|
||||||
|
PlotWorld.REQUIRE_CLAIM_IN_CLUSTER_DEFAULT = true;
|
||||||
plotWorld.saveConfiguration(config.getConfigurationSection(path));
|
plotWorld.saveConfiguration(config.getConfigurationSection(path));
|
||||||
plotWorld.loadConfiguration(config.getConfigurationSection(path));
|
plotWorld.loadConfiguration(config.getConfigurationSection(path));
|
||||||
|
PlotWorld.REQUIRE_CLAIM_IN_CLUSTER_DEFAULT = false;
|
||||||
try {
|
try {
|
||||||
config.save(configFile);
|
config.save(configFile);
|
||||||
} catch (final IOException e) {
|
} catch (final IOException e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Now add it :p
|
// Now add it :p
|
||||||
addPlotWorld(world, plotWorld, plotManager);
|
addPlotWorld(world, plotWorld, plotManager);
|
||||||
}
|
}
|
||||||
@ -1368,13 +1370,13 @@ public class PlotMain extends JavaPlugin implements Listener {
|
|||||||
MainCommand.subCommands.add(new WE_Anywhere());
|
MainCommand.subCommands.add(new WE_Anywhere());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (Settings.WORLDGUARD) {
|
// if (Settings.WORLDGUARD) {
|
||||||
if (getServer().getPluginManager().getPlugin("WorldGuard") != null) {
|
// if (getServer().getPluginManager().getPlugin("WorldGuard") != null) {
|
||||||
worldGuard = (WorldGuardPlugin) getServer().getPluginManager().getPlugin("WorldGuard");
|
// worldGuard = (WorldGuardPlugin) getServer().getPluginManager().getPlugin("WorldGuard");
|
||||||
worldGuardListener = new WorldGuardListener(this);
|
// worldGuardListener = new WorldGuardListener(this);
|
||||||
getServer().getPluginManager().registerEvents(worldGuardListener, this);
|
// getServer().getPluginManager().registerEvents(worldGuardListener, this);
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
if (Settings.AUTO_CLEAR) {
|
if (Settings.AUTO_CLEAR) {
|
||||||
ExpireManager.runTask();
|
ExpireManager.runTask();
|
||||||
}
|
}
|
||||||
|
@ -24,6 +24,7 @@ package com.intellectualcrafters.plot.commands;
|
|||||||
import net.milkbowl.vault.economy.Economy;
|
import net.milkbowl.vault.economy.Economy;
|
||||||
|
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.Location;
|
||||||
import org.bukkit.World;
|
import org.bukkit.World;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
@ -167,6 +168,17 @@ public class Auto extends SubCommand {
|
|||||||
return sendMessage(plr, C.NOT_IN_PLOT);
|
return sendMessage(plr, C.NOT_IN_PLOT);
|
||||||
}
|
}
|
||||||
PlotCluster cluster = ClusterManager.getCluster(loc);
|
PlotCluster cluster = ClusterManager.getCluster(loc);
|
||||||
|
PlotId bot = cluster.getP1();
|
||||||
|
PlotId top = cluster.getP2();
|
||||||
|
PlotId id = new PlotId((bot.x + top.x) / 2, (bot.y + top.y) / 2);
|
||||||
|
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++) {
|
||||||
|
id = getNextPlot(id, 1);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
boolean br = false;
|
boolean br = false;
|
||||||
|
@ -0,0 +1,282 @@
|
|||||||
|
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
// PlotSquared - A plot manager and world generator for the Bukkit API /
|
||||||
|
// Copyright (c) 2014 IntellectualSites/IntellectualCrafters /
|
||||||
|
// /
|
||||||
|
// This program is free software; you can redistribute it and/or modify /
|
||||||
|
// it under the terms of the GNU General Public License as published by /
|
||||||
|
// the Free Software Foundation; either version 3 of the License, or /
|
||||||
|
// (at your option) any later version. /
|
||||||
|
// /
|
||||||
|
// This program is distributed in the hope that it will be useful, /
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of /
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the /
|
||||||
|
// GNU General Public License for more details. /
|
||||||
|
// /
|
||||||
|
// You should have received a copy of the GNU General Public License /
|
||||||
|
// along with this program; if not, write to the Free Software Foundation, /
|
||||||
|
// Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA /
|
||||||
|
// /
|
||||||
|
// You can contact us via: support@intellectualsites.com /
|
||||||
|
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
package com.intellectualcrafters.plot.commands;
|
||||||
|
|
||||||
|
import java.util.HashSet;
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
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.Plot;
|
||||||
|
import com.intellectualcrafters.plot.object.PlotCluster;
|
||||||
|
import com.intellectualcrafters.plot.object.PlotClusterId;
|
||||||
|
import com.intellectualcrafters.plot.object.PlotId;
|
||||||
|
import com.intellectualcrafters.plot.util.ClusterManager;
|
||||||
|
import com.intellectualcrafters.plot.util.PlayerFunctions;
|
||||||
|
import com.intellectualcrafters.plot.util.PlotHelper;
|
||||||
|
import com.intellectualcrafters.plot.util.UUIDHandler;
|
||||||
|
|
||||||
|
public class Cluster extends SubCommand {
|
||||||
|
|
||||||
|
public Cluster() {
|
||||||
|
super(Command.CLUSTER, "Manage a plot cluster", "cluster", CommandCategory.ACTIONS, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean execute(final Player plr, final String... args) {
|
||||||
|
if (!ClusterManager.clusters.containsKey(plr.getWorld().getName())) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
// list, create, delete, resize, invite, kick, leave, helpers, tp
|
||||||
|
|
||||||
|
if (args.length == 0) {
|
||||||
|
// return arguments
|
||||||
|
PlayerFunctions.sendMessage(plr, C.CLUSTER_AVAILABLE_ARGS);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
String sub = args[0].toLowerCase();
|
||||||
|
switch (sub) {
|
||||||
|
case "list": {
|
||||||
|
if (!PlotMain.hasPermission(plr, "plots.cluster.list")) {
|
||||||
|
PlayerFunctions.sendMessage(plr, C.NO_PERMISSION, "plots.cluster.list");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (args.length != 1) {
|
||||||
|
PlayerFunctions.sendMessage(plr, C.COMMAND_SYNTAX, "/plot cluster list");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
HashSet<PlotCluster> clusters = ClusterManager.getClusters(plr.getWorld());
|
||||||
|
PlayerFunctions.sendMessage(plr, C.CLUSTER_LIST_HEADING, clusters.size() + "");
|
||||||
|
for (PlotCluster cluster : clusters) {
|
||||||
|
// Ignore unmanaged clusters
|
||||||
|
if (cluster.settings.getAlias().equals("")) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if (UUIDHandler.getUUID(plr).equals(cluster.owner)) {
|
||||||
|
PlayerFunctions.sendMessage(plr, C.CLUSTER_LIST_ELEMENT, "&a" + cluster.toString());
|
||||||
|
}
|
||||||
|
else if (cluster.helpers.contains(UUIDHandler.getUUID(plr))) {
|
||||||
|
PlayerFunctions.sendMessage(plr, C.CLUSTER_LIST_ELEMENT, "&3" + cluster.toString());
|
||||||
|
}
|
||||||
|
else if (cluster.invited.contains(UUIDHandler.getUUID(plr))) {
|
||||||
|
PlayerFunctions.sendMessage(plr, C.CLUSTER_LIST_ELEMENT, "&9" + cluster.toString());
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
PlayerFunctions.sendMessage(plr, C.CLUSTER_LIST_ELEMENT, cluster.toString());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
case "create": {
|
||||||
|
if (!PlotMain.hasPermission(plr, "plots.cluster.create")) {
|
||||||
|
PlayerFunctions.sendMessage(plr, C.NO_PERMISSION, "plots.cluster.create");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (args.length != 4) {
|
||||||
|
PlayerFunctions.sendMessage(plr, C.COMMAND_SYNTAX, "/plot cluster create <name> <id-bot> <id-top>");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
// check pos1 / pos2
|
||||||
|
PlotId pos1 = PlotHelper.parseId(args[2]);
|
||||||
|
PlotId pos2 = PlotHelper.parseId(args[3]);
|
||||||
|
if (pos1 == null || pos2 == null) {
|
||||||
|
PlayerFunctions.sendMessage(plr, C.NOT_VALID_PLOT_ID);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
// check if name is taken
|
||||||
|
String name = args[1];
|
||||||
|
for (PlotCluster cluster : ClusterManager.getClusters(plr.getWorld())) {
|
||||||
|
if (name.equals(cluster.getName())) {
|
||||||
|
PlayerFunctions.sendMessage(plr, C.ALIAS_IS_TAKEN);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//check if overlap
|
||||||
|
PlotClusterId id = new PlotClusterId(pos1, pos2);
|
||||||
|
HashSet<PlotCluster> intersects = ClusterManager.getIntersects(plr.getWorld().getName(), id);
|
||||||
|
if (intersects.size() > 0) {
|
||||||
|
PlayerFunctions.sendMessage(plr, C.CLUSTER_INTERSECTION, intersects.size() + "");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
// create cluster
|
||||||
|
String world = plr.getWorld().getName();
|
||||||
|
PlotCluster cluster = new PlotCluster(world, pos1, pos2, UUIDHandler.getUUID(plr));
|
||||||
|
cluster.settings.setAlias(name);
|
||||||
|
DBFunc.createCluster(world, cluster);
|
||||||
|
ClusterManager.clusters.get(world).add(cluster);
|
||||||
|
PlayerFunctions.sendMessage(plr, C.CLUSTER_ADDED);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
case "delete": {
|
||||||
|
if (!PlotMain.hasPermission(plr, "plots.cluster.delete")) {
|
||||||
|
PlayerFunctions.sendMessage(plr, C.NO_PERMISSION, "plots.cluster.delete");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (args.length != 1) {
|
||||||
|
PlayerFunctions.sendMessage(plr, C.COMMAND_SYNTAX, "/plot cluster delete");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
PlotCluster toDelete = ClusterManager.getCluster(plr.getLocation());
|
||||||
|
if (toDelete == null) {
|
||||||
|
PlayerFunctions.sendMessage(plr, C.NOT_IN_CLUSTER);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
String world_delete = plr.getWorld().getName();
|
||||||
|
ClusterManager.clusters.get(world_delete).remove(toDelete);
|
||||||
|
DBFunc.delete(toDelete);
|
||||||
|
PlayerFunctions.sendMessage(plr, C.CLUSTER_DELETED);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
case "resize": {
|
||||||
|
if (!PlotMain.hasPermission(plr, "plots.cluster.resize")) {
|
||||||
|
PlayerFunctions.sendMessage(plr, C.NO_PERMISSION, "plots.cluster.resize");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (args.length != 3) {
|
||||||
|
PlayerFunctions.sendMessage(plr, C.COMMAND_SYNTAX, "/plot cluster resize <pos1> <pos2>");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
// check pos1 / pos2
|
||||||
|
PlotId pos1 = PlotHelper.parseId(args[2]);
|
||||||
|
PlotId pos2 = PlotHelper.parseId(args[3]);
|
||||||
|
if (pos1 == null || pos2 == null) {
|
||||||
|
PlayerFunctions.sendMessage(plr, C.NOT_VALID_PLOT_ID);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
// check if in cluster
|
||||||
|
PlotCluster cluster = ClusterManager.getCluster(plr.getLocation());
|
||||||
|
if (cluster == null) {
|
||||||
|
PlayerFunctions.sendMessage(plr, C.NOT_IN_CLUSTER);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
//check if overlap
|
||||||
|
PlotClusterId id = new PlotClusterId(pos1, pos2);
|
||||||
|
HashSet<PlotCluster> intersects = ClusterManager.getIntersects(plr.getWorld().getName(), id);
|
||||||
|
if (intersects.size() > 0) {
|
||||||
|
PlayerFunctions.sendMessage(plr, C.CLUSTER_INTERSECTION, intersects.size() + "");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
// resize cluster
|
||||||
|
DBFunc.resizeCluster(cluster, id);
|
||||||
|
PlayerFunctions.sendMessage(plr, C.CLUSTER_RESIZED);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
case "invite": {
|
||||||
|
if (!PlotMain.hasPermission(plr, "plots.cluster.invite")) {
|
||||||
|
PlayerFunctions.sendMessage(plr, C.NO_PERMISSION, "plots.cluster.invite");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (args.length != 2) {
|
||||||
|
PlayerFunctions.sendMessage(plr, C.COMMAND_SYNTAX, "/plot cluster invite <player>");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
// check if in cluster
|
||||||
|
PlotCluster cluster = ClusterManager.getCluster(plr.getLocation());
|
||||||
|
if (cluster == null) {
|
||||||
|
PlayerFunctions.sendMessage(plr, C.NOT_IN_CLUSTER);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
// check uuid
|
||||||
|
UUID uuid = UUIDHandler.getUUID(args[1]);
|
||||||
|
if (uuid == null) {
|
||||||
|
PlayerFunctions.sendMessage(plr, C.INVALID_PLAYER, args[1]);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (!cluster.hasRights(uuid)) {
|
||||||
|
// add the user if not added
|
||||||
|
cluster.invited.add(uuid);
|
||||||
|
String world = plr.getWorld().getName();
|
||||||
|
DBFunc.setInvited(world, cluster, uuid);
|
||||||
|
Player player = UUIDHandler.uuidWrapper.getPlayer(uuid);
|
||||||
|
if (player != null) {
|
||||||
|
PlayerFunctions.sendMessage(plr, C.CLUSTER_INVITED, cluster.getName());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
PlayerFunctions.sendMessage(plr, C.CLUSTER_ADDED_USER);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
case "kick": {
|
||||||
|
if (!PlotMain.hasPermission(plr, "plots.cluster.kick")) {
|
||||||
|
PlayerFunctions.sendMessage(plr, C.NO_PERMISSION, "plots.cluster.kick");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (args.length != 2) {
|
||||||
|
PlayerFunctions.sendMessage(plr, C.COMMAND_SYNTAX, "/plot cluster kick <player>");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
case "leave": {
|
||||||
|
if (!PlotMain.hasPermission(plr, "plots.cluster.leave")) {
|
||||||
|
PlayerFunctions.sendMessage(plr, C.NO_PERMISSION, "plots.cluster.leave");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (args.length != 1 && args.length != 2) {
|
||||||
|
PlayerFunctions.sendMessage(plr, C.COMMAND_SYNTAX, "/plot cluster leave [name]");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
case "helpers": {
|
||||||
|
if (!PlotMain.hasPermission(plr, "plots.cluster.helpers")) {
|
||||||
|
PlayerFunctions.sendMessage(plr, C.NO_PERMISSION, "plots.cluster.helpers");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (args.length != 3) {
|
||||||
|
PlayerFunctions.sendMessage(plr, C.COMMAND_SYNTAX, "/plot cluster helpers <add|remove> <player>");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
case "tp": {
|
||||||
|
if (!PlotMain.hasPermission(plr, "plots.cluster.tp")) {
|
||||||
|
PlayerFunctions.sendMessage(plr, C.NO_PERMISSION, "plots.cluster.tp");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (args.length != 2) {
|
||||||
|
PlayerFunctions.sendMessage(plr, C.COMMAND_SYNTAX, "/plot cluster tp <name>");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
case "info": {
|
||||||
|
if (!PlotMain.hasPermission(plr, "plots.cluster.info")) {
|
||||||
|
PlayerFunctions.sendMessage(plr, C.NO_PERMISSION, "plots.cluster.info");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (args.length != 1 && args.length != 2) {
|
||||||
|
PlayerFunctions.sendMessage(plr, C.COMMAND_SYNTAX, "/plot cluster info [name]");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
PlayerFunctions.sendMessage(plr, C.CLUSTER_AVAILABLE_ARGS);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
@ -36,154 +36,44 @@ public enum Command {
|
|||||||
// (Rating system) (ratings can be stored as the average, and number of
|
// (Rating system) (ratings can be stored as the average, and number of
|
||||||
// ratings)
|
// ratings)
|
||||||
// - /plot rate <number out of 10>
|
// - /plot rate <number out of 10>
|
||||||
|
CLUSTER("cluster", "cl"),
|
||||||
BUY("buy","b"),
|
BUY("buy","b"),
|
||||||
/**
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
CREATEROADSCHEMATIC("createroadschematic"),
|
CREATEROADSCHEMATIC("createroadschematic"),
|
||||||
/**
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
DEBUGROADREGEN("debugroadregen"),
|
DEBUGROADREGEN("debugroadregen"),
|
||||||
/**
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
REGENALLROADS("regenallroads"),
|
REGENALLROADS("regenallroads"),
|
||||||
/**
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
DEBUGLOADTEST("debugloadtest"),
|
DEBUGLOADTEST("debugloadtest"),
|
||||||
/**
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
DEBUGSAVETEST("debugsavetest"),
|
DEBUGSAVETEST("debugsavetest"),
|
||||||
/**
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
UNCLAIM("unclaim"),
|
UNCLAIM("unclaim"),
|
||||||
/**
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
DEBUGCLEAR("debugclear"),
|
DEBUGCLEAR("debugclear"),
|
||||||
/**
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
SWAP("swap"),
|
SWAP("swap"),
|
||||||
/**
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
INBOX("inbox"),
|
INBOX("inbox"),
|
||||||
/**
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
DEBUGCLAIMTEST("debugclaimtest"),
|
DEBUGCLAIMTEST("debugclaimtest"),
|
||||||
/**
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
COMMENT("comment", "msg"),
|
COMMENT("comment", "msg"),
|
||||||
/**
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
TRUSTED("trusted", "trust"),
|
TRUSTED("trusted", "trust"),
|
||||||
/**
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
PASTE("paste"),
|
PASTE("paste"),
|
||||||
/**
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
CLIPBOARD("clipboard", "cboard"),
|
CLIPBOARD("clipboard", "cboard"),
|
||||||
/**
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
COPY("copy"),
|
COPY("copy"),
|
||||||
/**
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
KICK("kick", "k"),
|
KICK("kick", "k"),
|
||||||
/**
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
HELPERS("helpers", "hp"),
|
HELPERS("helpers", "hp"),
|
||||||
/**
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
DENIED("denied", "dn"),
|
DENIED("denied", "dn"),
|
||||||
/**
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
CLAIM("claim", "c"),
|
CLAIM("claim", "c"),
|
||||||
/**
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
MERGE("merge", "m"),
|
MERGE("merge", "m"),
|
||||||
/**
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
UNLINK("unlink", "u"),
|
UNLINK("unlink", "u"),
|
||||||
/**
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
CLEAR("clear", "clear", new CommandPermission("plots.clear")),
|
CLEAR("clear", "clear", new CommandPermission("plots.clear")),
|
||||||
/**
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
DELETE("delete", "d", new CommandPermission("plots.delete")),
|
DELETE("delete", "d", new CommandPermission("plots.delete")),
|
||||||
/**
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
DEBUG("debug", "debug", new CommandPermission("plots.admin")),
|
DEBUG("debug", "debug", new CommandPermission("plots.admin")),
|
||||||
/**
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
INTERFACE("interface", "int", new CommandPermission("plots.interface")),
|
INTERFACE("interface", "int", new CommandPermission("plots.interface")),
|
||||||
/**
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
HOME("home", "h"),
|
HOME("home", "h"),
|
||||||
/**
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
INFO("info", "i"),
|
INFO("info", "i"),
|
||||||
/**
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
LIST("list", "l"),
|
LIST("list", "l"),
|
||||||
/**
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
SET("set", "s"),
|
SET("set", "s"),
|
||||||
/**
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
PURGE("purge"),
|
PURGE("purge"),
|
||||||
/**
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
SETUP("setup"),
|
SETUP("setup"),
|
||||||
/**
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
OP("op", "admin"),
|
OP("op", "admin"),
|
||||||
/**
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
DEOP("deop", "deadmin"),
|
DEOP("deop", "deadmin"),
|
||||||
/**
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
BAN("ban", "block"),
|
BAN("ban", "block"),
|
||||||
/**
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
UNBAN("unban", "unblock"),
|
UNBAN("unban", "unblock"),
|
||||||
/**
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
DATABASE("database", "convert"),
|
DATABASE("database", "convert"),
|
||||||
/**
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
TP("tp", "tp");
|
TP("tp", "tp");
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -67,7 +67,7 @@ public class Unlink extends SubCommand {
|
|||||||
final World world = plr.getWorld();
|
final World world = plr.getWorld();
|
||||||
final PlotId pos1 = PlayerFunctions.getBottomPlot(world, plot).id;
|
final PlotId pos1 = PlayerFunctions.getBottomPlot(world, plot).id;
|
||||||
final PlotId pos2 = PlayerFunctions.getTopPlot(world, plot).id;
|
final PlotId pos2 = PlayerFunctions.getTopPlot(world, plot).id;
|
||||||
final ArrayList<PlotId> ids = PlayerFunctions.getPlotSelectionIds(world, pos1, pos2);
|
final ArrayList<PlotId> ids = PlayerFunctions.getPlotSelectionIds(pos1, pos2);
|
||||||
|
|
||||||
final PlotUnlinkEvent event = new PlotUnlinkEvent(world, ids);
|
final PlotUnlinkEvent event = new PlotUnlinkEvent(world, ids);
|
||||||
|
|
||||||
|
@ -37,6 +37,18 @@ import com.intellectualsites.translation.bukkit.BukkitTranslation;
|
|||||||
* @author Citymonstret
|
* @author Citymonstret
|
||||||
*/
|
*/
|
||||||
public enum C {
|
public enum C {
|
||||||
|
/*
|
||||||
|
* Cluster
|
||||||
|
*/
|
||||||
|
CLUSTER_AVAILABLE_ARGS("&6The following sub commands are available: &clist, create, delete, resize, invite, kick, leave, helpers, info, tp"),
|
||||||
|
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"),
|
||||||
|
CLUSTER_ADDED("&6Successfully created the cluster."),
|
||||||
|
CLUSTER_DELETED("&6Successfully deleted the cluster."),
|
||||||
|
CLUSTER_RESIZED("&6Successfully resized the cluster."),
|
||||||
|
CLUSTER_ADDED_USER("&6Successfully added user to the cluster."),
|
||||||
|
CLUSTER_INVITED("&6You have been invited to the following cluster: %s."),
|
||||||
/*
|
/*
|
||||||
* Border
|
* Border
|
||||||
*/
|
*/
|
||||||
@ -185,6 +197,7 @@ public enum C {
|
|||||||
NAME_LITTLE("&c%s name is too short, &6%s&c<&6%s"),
|
NAME_LITTLE("&c%s name is too short, &6%s&c<&6%s"),
|
||||||
NO_COMMANDS("&cI'm sorry, but you're not permitted to use any subcommands."),
|
NO_COMMANDS("&cI'm sorry, but you're not permitted to use any subcommands."),
|
||||||
SUBCOMMAND_SET_OPTIONS_HEADER("&cPossible Values: "),
|
SUBCOMMAND_SET_OPTIONS_HEADER("&cPossible Values: "),
|
||||||
|
COMMAND_SYNTAX("&6Usage: &c%s"),
|
||||||
/*
|
/*
|
||||||
* Player not found
|
* Player not found
|
||||||
*/
|
*/
|
||||||
@ -247,6 +260,7 @@ public enum C {
|
|||||||
NOT_VALID_BLOCK("&cThat's not a valid block."),
|
NOT_VALID_BLOCK("&cThat's not a valid block."),
|
||||||
NOT_VALID_NUMBER("&cThat's not a valid number"),
|
NOT_VALID_NUMBER("&cThat's not a valid number"),
|
||||||
NOT_VALID_PLOT_ID("&cThat's not a valid plot id."),
|
NOT_VALID_PLOT_ID("&cThat's not a valid plot id."),
|
||||||
|
PLOT_ID_FORM("&cThe plot id must be in the form: &6X;Y &ce.g. &6-5;7"),
|
||||||
NOT_YOUR_PLOT("&cThat is not your plot."),
|
NOT_YOUR_PLOT("&cThat is not your plot."),
|
||||||
NO_SUCH_PLOT("&cThere is no such plot"),
|
NO_SUCH_PLOT("&cThere is no such plot"),
|
||||||
PLAYER_HAS_NOT_BEEN_ON("&cThat player hasn't been in the plotworld"),
|
PLAYER_HAS_NOT_BEEN_ON("&cThat player hasn't been in the plotworld"),
|
||||||
|
@ -237,7 +237,13 @@ public interface AbstractDB {
|
|||||||
* @param uuid Player that should be removed
|
* @param uuid Player that should be removed
|
||||||
*/
|
*/
|
||||||
public void removeTrusted(final String world, final Plot plot, final UUID uuid);
|
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);
|
||||||
/**
|
/**
|
||||||
* @param plot Plot Object
|
* @param plot Plot Object
|
||||||
* @param uuid Player that should be removed
|
* @param uuid Player that should be removed
|
||||||
@ -255,6 +261,13 @@ public interface AbstractDB {
|
|||||||
* @param uuid Player that should be added
|
* @param uuid Player that should be added
|
||||||
*/
|
*/
|
||||||
public void setTrusted(final String world, final Plot plot, final UUID uuid);
|
public void setTrusted(final String world, final Plot plot, final UUID uuid);
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param world
|
||||||
|
* @param cluster
|
||||||
|
* @param uuid
|
||||||
|
*/
|
||||||
|
public void setInvited(final String world, final PlotCluster cluster, final UUID uuid);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param plot Plot Object
|
* @param plot Plot Object
|
||||||
|
@ -115,6 +115,10 @@ public class DBFunc {
|
|||||||
public static void delete(final String world, final Plot plot) {
|
public static void delete(final String world, final Plot plot) {
|
||||||
dbManager.delete(world, plot);
|
dbManager.delete(world, plot);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void delete(final PlotCluster toDelete) {
|
||||||
|
dbManager.delete(toDelete);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Create plot settings
|
* Create plot settings
|
||||||
@ -264,6 +268,16 @@ public class DBFunc {
|
|||||||
public static void removeTrusted(final String world, final Plot plot, final UUID uuid) {
|
public static void removeTrusted(final String world, final Plot plot, final UUID uuid) {
|
||||||
dbManager.removeTrusted(world, plot, uuid);
|
dbManager.removeTrusted(world, plot, uuid);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param world
|
||||||
|
* @param plot
|
||||||
|
* @param uuid
|
||||||
|
*/
|
||||||
|
public static void removeInvited(final String world, final PlotCluster cluster, final UUID uuid) {
|
||||||
|
dbManager.removeInvited(world, cluster, uuid);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param plot
|
* @param plot
|
||||||
@ -284,6 +298,10 @@ public class DBFunc {
|
|||||||
public static void setTrusted(final String world, final Plot plot, final UUID uuid) {
|
public static void setTrusted(final String world, final Plot plot, final UUID uuid) {
|
||||||
dbManager.setTrusted(world, plot, uuid);
|
dbManager.setTrusted(world, plot, uuid);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void setInvited(final String world, final PlotCluster cluster, final UUID uuid) {
|
||||||
|
dbManager.setInvited(world, cluster, uuid);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param plot
|
* @param plot
|
||||||
@ -300,7 +318,7 @@ public class DBFunc {
|
|||||||
public static void setDenied(final String world, final Plot plot, final UUID uuid) {
|
public static void setDenied(final String world, final Plot plot, final UUID uuid) {
|
||||||
dbManager.setDenied(world, plot, uuid);
|
dbManager.setDenied(world, plot, uuid);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static double getRatings(final Plot plot) {
|
public static double getRatings(final Plot plot) {
|
||||||
return dbManager.getRatings(plot);
|
return dbManager.getRatings(plot);
|
||||||
}
|
}
|
||||||
@ -314,6 +332,6 @@ public class DBFunc {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static HashMap<String, Object> getClusterSettings(int id) {
|
public static HashMap<String, Object> getClusterSettings(int id) {
|
||||||
return dbManager.getClusterSettings(id);
|
return dbManager.getClusterSettings(id);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -47,6 +47,7 @@ import com.intellectualcrafters.plot.object.PlotCluster;
|
|||||||
import com.intellectualcrafters.plot.object.PlotClusterId;
|
import com.intellectualcrafters.plot.object.PlotClusterId;
|
||||||
import com.intellectualcrafters.plot.object.PlotComment;
|
import com.intellectualcrafters.plot.object.PlotComment;
|
||||||
import com.intellectualcrafters.plot.object.PlotId;
|
import com.intellectualcrafters.plot.object.PlotId;
|
||||||
|
import com.intellectualcrafters.plot.object.PlotSettings;
|
||||||
import com.intellectualcrafters.plot.util.ClusterManager;
|
import com.intellectualcrafters.plot.util.ClusterManager;
|
||||||
import com.intellectualcrafters.plot.util.TaskManager;
|
import com.intellectualcrafters.plot.util.TaskManager;
|
||||||
|
|
||||||
@ -383,6 +384,7 @@ public class SQLManager implements AbstractDB {
|
|||||||
}
|
}
|
||||||
stmt.addBatch("CREATE TABLE IF NOT EXISTS `" + this.prefix + "cluster` (" + "`id` INTEGER PRIMARY KEY AUTOINCREMENT," + "`pos1_x` INT(11) NOT NULL," + "`pos1_z` INT(11) NOT NULL," + "`pos2_x` INT(11) NOT NULL," + "`pos2_z` INT(11) NOT NULL," + "`owner` VARCHAR(45) NOT NULL," + "`world` VARCHAR(45) NOT NULL," + "`timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP" + ") ENGINE=InnoDB DEFAULT CHARSET=utf8");
|
stmt.addBatch("CREATE TABLE IF NOT EXISTS `" + this.prefix + "cluster` (" + "`id` INTEGER PRIMARY KEY AUTOINCREMENT," + "`pos1_x` INT(11) NOT NULL," + "`pos1_z` INT(11) NOT NULL," + "`pos2_x` INT(11) NOT NULL," + "`pos2_z` INT(11) NOT NULL," + "`owner` VARCHAR(45) NOT NULL," + "`world` VARCHAR(45) NOT NULL," + "`timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP" + ") ENGINE=InnoDB DEFAULT CHARSET=utf8");
|
||||||
stmt.addBatch("CREATE TABLE IF NOT EXISTS `" + this.prefix + "cluster_helpers` (" + "`cluster_id` INT(11) NOT NULL," + "`user_uuid` VARCHAR(40) NOT NULL" + "`tier` INT(11) NOT NULL" + ") ENGINE=InnoDB DEFAULT CHARSET=utf8");
|
stmt.addBatch("CREATE TABLE IF NOT EXISTS `" + this.prefix + "cluster_helpers` (" + "`cluster_id` INT(11) NOT NULL," + "`user_uuid` VARCHAR(40) NOT NULL" + "`tier` INT(11) NOT NULL" + ") ENGINE=InnoDB DEFAULT CHARSET=utf8");
|
||||||
|
stmt.addBatch("CREATE TABLE IF NOT EXISTS `" + this.prefix + "cluster_invited` (" + "`cluster_id` INT(11) NOT NULL," + "`user_uuid` VARCHAR(40) NOT NULL" + "`tier` INT(11) NOT NULL" + ") ENGINE=InnoDB DEFAULT CHARSET=utf8");
|
||||||
stmt.addBatch("CREATE TABLE IF NOT EXISTS `" + this.prefix + "cluster_settings` (" + " `cluster_id` INT(11) NOT NULL," + " `biome` VARCHAR(45) DEFAULT 'FOREST'," + " `rain` INT(1) DEFAULT 0," + " `custom_time` TINYINT(1) DEFAULT '0'," + " `time` INT(11) DEFAULT '8000'," + " `deny_entry` TINYINT(1) DEFAULT '0'," + " `alias` VARCHAR(50) DEFAULT NULL," + " `flags` VARCHAR(512) DEFAULT NULL," + " `merged` INT(11) DEFAULT NULL," + " `position` VARCHAR(50) NOT NULL DEFAULT 'DEFAULT'," + " PRIMARY KEY (`cluster_id`)" + ") ENGINE=InnoDB DEFAULT CHARSET=utf8");
|
stmt.addBatch("CREATE TABLE IF NOT EXISTS `" + this.prefix + "cluster_settings` (" + " `cluster_id` INT(11) NOT NULL," + " `biome` VARCHAR(45) DEFAULT 'FOREST'," + " `rain` INT(1) DEFAULT 0," + " `custom_time` TINYINT(1) DEFAULT '0'," + " `time` INT(11) DEFAULT '8000'," + " `deny_entry` TINYINT(1) DEFAULT '0'," + " `alias` VARCHAR(50) DEFAULT NULL," + " `flags` VARCHAR(512) DEFAULT NULL," + " `merged` INT(11) DEFAULT NULL," + " `position` VARCHAR(50) NOT NULL DEFAULT 'DEFAULT'," + " PRIMARY KEY (`cluster_id`)" + ") ENGINE=InnoDB DEFAULT CHARSET=utf8");
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
@ -395,7 +397,8 @@ public class SQLManager implements AbstractDB {
|
|||||||
stmt.addBatch("CREATE TABLE IF NOT EXISTS `" + this.prefix + "plot_ratings` (`plot_plot_id` INT(11) NOT NULL, `rating` INT(2) NOT NULL, `player` VARCHAR(40) NOT NULL, PRIMARY KEY(`plot_plot_id`))");
|
stmt.addBatch("CREATE TABLE IF NOT EXISTS `" + this.prefix + "plot_ratings` (`plot_plot_id` INT(11) NOT NULL, `rating` INT(2) NOT NULL, `player` VARCHAR(40) NOT NULL, PRIMARY KEY(`plot_plot_id`))");
|
||||||
|
|
||||||
stmt.addBatch("CREATE TABLE IF NOT EXISTS `" + this.prefix + "cluster` (" + "`id` INTEGER PRIMARY KEY AUTOINCREMENT," + "`pos1_x` INT(11) NOT NULL," + "`pos1_z` INT(11) NOT NULL," + "`pos2_x` INT(11) NOT NULL," + "`pos2_z` INT(11) NOT NULL," + "`owner` VARCHAR(45) NOT NULL," + "`world` VARCHAR(45) NOT NULL," + "`timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP)");
|
stmt.addBatch("CREATE TABLE IF NOT EXISTS `" + this.prefix + "cluster` (" + "`id` INTEGER PRIMARY KEY AUTOINCREMENT," + "`pos1_x` INT(11) NOT NULL," + "`pos1_z` INT(11) NOT NULL," + "`pos2_x` INT(11) NOT NULL," + "`pos2_z` INT(11) NOT NULL," + "`owner` VARCHAR(45) NOT NULL," + "`world` VARCHAR(45) NOT NULL," + "`timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP)");
|
||||||
stmt.addBatch("CREATE TABLE IF NOT EXISTS `" + this.prefix + "cluster_helpers` (" + "`cluster_id` INT(11) NOT NULL," + "`user_uuid` VARCHAR(40) NOT NULL" + "`tier` INT(11) NOT NULL" + ")");
|
stmt.addBatch("CREATE TABLE IF NOT EXISTS `" + this.prefix + "cluster_helpers` (" + "`cluster_id` INT(11) NOT NULL," + "`user_uuid` VARCHAR(40) NOT NULL" + ")");
|
||||||
|
stmt.addBatch("CREATE TABLE IF NOT EXISTS `" + this.prefix + "cluster_invited` (" + "`cluster_id` INT(11) NOT NULL," + "`user_uuid` VARCHAR(40) NOT NULL" + ")");
|
||||||
stmt.addBatch("CREATE TABLE IF NOT EXISTS `" + this.prefix + "cluster_settings` (" + " `cluster_id` INT(11) NOT NULL," + " `biome` VARCHAR(45) DEFAULT 'FOREST'," + " `rain` INT(1) DEFAULT 0," + " `custom_time` TINYINT(1) DEFAULT '0'," + " `time` INT(11) DEFAULT '8000'," + " `deny_entry` TINYINT(1) DEFAULT '0'," + " `alias` VARCHAR(50) DEFAULT NULL," + " `flags` VARCHAR(512) DEFAULT NULL," + " `merged` INT(11) DEFAULT NULL," + " `position` VARCHAR(50) NOT NULL DEFAULT 'DEFAULT'," + " PRIMARY KEY (`cluster_id`)" + ")");
|
stmt.addBatch("CREATE TABLE IF NOT EXISTS `" + this.prefix + "cluster_settings` (" + " `cluster_id` INT(11) NOT NULL," + " `biome` VARCHAR(45) DEFAULT 'FOREST'," + " `rain` INT(1) DEFAULT 0," + " `custom_time` TINYINT(1) DEFAULT '0'," + " `time` INT(11) DEFAULT '8000'," + " `deny_entry` TINYINT(1) DEFAULT '0'," + " `alias` VARCHAR(50) DEFAULT NULL," + " `flags` VARCHAR(512) DEFAULT NULL," + " `merged` INT(11) DEFAULT NULL," + " `position` VARCHAR(50) NOT NULL DEFAULT 'DEFAULT'," + " PRIMARY KEY (`cluster_id`)" + ")");
|
||||||
}
|
}
|
||||||
stmt.executeBatch();
|
stmt.executeBatch();
|
||||||
@ -1248,6 +1251,9 @@ public class SQLManager implements AbstractDB {
|
|||||||
stmt = SQLManager.this.connection.prepareStatement("DELETE FROM `" + SQLManager.this.prefix + "cluster_helpers` WHERE `cluster_id` = ?");
|
stmt = SQLManager.this.connection.prepareStatement("DELETE FROM `" + SQLManager.this.prefix + "cluster_helpers` WHERE `cluster_id` = ?");
|
||||||
stmt.setInt(1, id);
|
stmt.setInt(1, id);
|
||||||
stmt.executeUpdate();
|
stmt.executeUpdate();
|
||||||
|
stmt = SQLManager.this.connection.prepareStatement("DELETE FROM `" + SQLManager.this.prefix + "cluster_invited` WHERE `cluster_id` = ?");
|
||||||
|
stmt.setInt(1, id);
|
||||||
|
stmt.executeUpdate();
|
||||||
stmt = SQLManager.this.connection.prepareStatement("DELETE FROM `" + SQLManager.this.prefix + "cluster` WHERE `id` = ?");
|
stmt = SQLManager.this.connection.prepareStatement("DELETE FROM `" + SQLManager.this.prefix + "cluster` WHERE `id` = ?");
|
||||||
stmt.setInt(1, id);
|
stmt.setInt(1, id);
|
||||||
stmt.executeUpdate();
|
stmt.executeUpdate();
|
||||||
@ -1350,12 +1356,30 @@ public class SQLManager implements AbstractDB {
|
|||||||
PlotMain.sendConsoleSenderMessage("&cCluster " + id + " in cluster_helpers does not exist. Please create the cluster or remove this entry.");
|
PlotMain.sendConsoleSenderMessage("&cCluster " + id + " in cluster_helpers does not exist. Please create the cluster or remove this entry.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
/*
|
||||||
|
* Getting invited
|
||||||
|
*/
|
||||||
|
r = stmt.executeQuery("SELECT `user_uuid`, `cluster_id` FROM `" + this.prefix + "cluster_invited`");
|
||||||
|
while (r.next()) {
|
||||||
|
id = r.getInt("plot_plot_id");
|
||||||
|
owner = r.getString("user_uuid");
|
||||||
|
user = uuids.get(owner);
|
||||||
|
if (user == null) {
|
||||||
|
user = UUID.fromString(owner);
|
||||||
|
uuids.put(owner, user);
|
||||||
|
}
|
||||||
|
cluster = clusters.get(id);
|
||||||
|
if (cluster != null) {
|
||||||
|
cluster.invited.add(user);
|
||||||
|
} else {
|
||||||
|
PlotMain.sendConsoleSenderMessage("&cCluster " + id + " in cluster_invited does not exist. Please create the cluster or remove this entry.");
|
||||||
|
}
|
||||||
|
}
|
||||||
r = stmt.executeQuery("SELECT * FROM `" + this.prefix + "cluster_settings`");
|
r = stmt.executeQuery("SELECT * FROM `" + this.prefix + "cluster_settings`");
|
||||||
while (r.next()) {
|
while (r.next()) {
|
||||||
id = r.getInt("plot_plot_id");
|
id = r.getInt("plot_plot_id");
|
||||||
cluster = clusters.get(id);
|
cluster = clusters.get(id);
|
||||||
if (cluster != null) {
|
if (cluster != null) {
|
||||||
|
|
||||||
final String b = r.getString("biome");
|
final String b = r.getString("biome");
|
||||||
if (b != null) {
|
if (b != null) {
|
||||||
for (final Biome mybiome : Biome.values()) {
|
for (final Biome mybiome : Biome.values()) {
|
||||||
@ -1432,7 +1456,7 @@ public class SQLManager implements AbstractDB {
|
|||||||
}
|
}
|
||||||
cluster.settings.flags = flags;
|
cluster.settings.flags = flags;
|
||||||
} else {
|
} else {
|
||||||
PlotMain.sendConsoleSenderMessage("&cPLOT " + id + " in plot_settings does not exist. Please create the plot or remove this entry.");
|
PlotMain.sendConsoleSenderMessage("&cCluster " + id + " in cluster_settings does not exist. Please create the cluster or remove this entry.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
stmt.close();
|
stmt.close();
|
||||||
@ -1565,8 +1589,9 @@ public class SQLManager implements AbstractDB {
|
|||||||
stmt.close();
|
stmt.close();
|
||||||
|
|
||||||
int id = getClusterId(cluster.world, ClusterManager.getClusterId(cluster));
|
int id = getClusterId(cluster.world, ClusterManager.getClusterId(cluster));
|
||||||
stmt = SQLManager.this.connection.prepareStatement("INSERT INTO `" + SQLManager.this.prefix + "cluster_settings`(`cluster_id`) VALUES(" + "?)");
|
stmt = SQLManager.this.connection.prepareStatement("INSERT INTO `" + SQLManager.this.prefix + "cluster_settings`(`cluster_id`, `alias`) VALUES(?, ?" + ")");
|
||||||
stmt.setInt(1, id);
|
stmt.setInt(1, id);
|
||||||
|
stmt.setString(2, cluster.settings.getAlias());
|
||||||
stmt.executeUpdate();
|
stmt.executeUpdate();
|
||||||
stmt.close();
|
stmt.close();
|
||||||
} catch (final Exception e) {
|
} catch (final Exception e) {
|
||||||
@ -1670,4 +1695,43 @@ public class SQLManager implements AbstractDB {
|
|||||||
}
|
}
|
||||||
return h;
|
return h;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void removeInvited(String world, final PlotCluster cluster, final UUID uuid) {
|
||||||
|
TaskManager.runTask(new Runnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
try {
|
||||||
|
final PreparedStatement statement = SQLManager.this.connection.prepareStatement("DELETE FROM `" + SQLManager.this.prefix + "cluster_invited` WHERE `cluster_id` = ? AND `user_uuid` = ?");
|
||||||
|
statement.setInt(1, getClusterId(cluster.world, ClusterManager.getClusterId(cluster)));
|
||||||
|
statement.setString(2, uuid.toString());
|
||||||
|
statement.executeUpdate();
|
||||||
|
statement.close();
|
||||||
|
} catch (final SQLException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
PlotMain.sendConsoleSenderMessage("&7[WARN] "+"Failed to remove invited for cluster " + cluster);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setInvited(String world, final PlotCluster cluster, final UUID uuid) {
|
||||||
|
TaskManager.runTask(new Runnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
try {
|
||||||
|
final PreparedStatement statement = SQLManager.this.connection.prepareStatement("INSERT INTO `" + SQLManager.this.prefix + "cluster_invited` (`cluster_id`, `user_uuid`) VALUES(?,?)");
|
||||||
|
statement.setInt(1, getClusterId(cluster.world, ClusterManager.getClusterId(cluster)));
|
||||||
|
statement.setString(2, uuid.toString());
|
||||||
|
statement.executeUpdate();
|
||||||
|
statement.close();
|
||||||
|
} catch (final SQLException e) {
|
||||||
|
PlotMain.sendConsoleSenderMessage("&7[WARN] "+"Failed to set helper for cluster " + cluster);
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -25,32 +25,17 @@ public class AugmentedPopulator extends BlockPopulator {
|
|||||||
public final PlotManager manager;
|
public final PlotManager manager;
|
||||||
public final PlotGenerator generator;
|
public final PlotGenerator generator;
|
||||||
|
|
||||||
private final int botx;
|
private final int bx;
|
||||||
private final int botz;
|
private final int bz;
|
||||||
private final int topx;
|
private final int tx;
|
||||||
private final int topz;
|
private final int tz;
|
||||||
|
|
||||||
public BlockWrapper getBlock(int X, int Z, int i, int j, short[][] result, boolean check) {
|
public BlockWrapper getBlock(int X, int Z, int i, int j, short[][] r, boolean c) {
|
||||||
int y_1 = (i << 4);
|
int y = (i << 4) + (j >> 8);
|
||||||
int y_2 = (j >> 8);
|
int a = (j - ((y & 0xF) << 8));
|
||||||
int y = y_1 + y_2;
|
int z = (a >> 4);
|
||||||
int z_1 = (j - ((y & 0xF) << 8));
|
int x = a - (z << 4);
|
||||||
int z = (z_1 >> 4);
|
return (c && (z < bz || z > tz || x < bx || x > tx)) ? null : new BlockWrapper(x, y, z, r[i][j], (byte) 0);
|
||||||
int x;
|
|
||||||
if (check) {
|
|
||||||
if (z < botz || z > topz) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
x = z_1 - (z << 4);
|
|
||||||
if (x < botx || x > topx) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
x = z_1 - (z << 4);
|
|
||||||
}
|
|
||||||
short id = result[i][j];
|
|
||||||
return new BlockWrapper(x, y, z, id, (byte) 0);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public AugmentedPopulator(String world, PlotGenerator generator, PlotCluster cluster) {
|
public AugmentedPopulator(String world, PlotGenerator generator, PlotCluster cluster) {
|
||||||
@ -60,14 +45,14 @@ public class AugmentedPopulator extends BlockPopulator {
|
|||||||
|
|
||||||
World bukkitWorld = Bukkit.getWorld(world);
|
World bukkitWorld = Bukkit.getWorld(world);
|
||||||
|
|
||||||
Location bot = manager.getPlotBottomLocAbs(plotworld, cluster.getP1());
|
Location b = manager.getPlotBottomLocAbs(plotworld, cluster.getP1());
|
||||||
Location top = manager.getPlotTopLocAbs(plotworld, cluster.getP2()).add(1,0,1);
|
Location t = manager.getPlotTopLocAbs(plotworld, cluster.getP2()).add(1,0,1);
|
||||||
|
|
||||||
this.botx = bot.getBlockX();
|
this.bx = b.getBlockX();
|
||||||
this.botz = bot.getBlockZ();
|
this.bz = b.getBlockZ();
|
||||||
|
|
||||||
this.topx = top.getBlockX();
|
this.tx = t.getBlockX();
|
||||||
this.topz = top.getBlockZ();
|
this.tz = t.getBlockZ();
|
||||||
|
|
||||||
// Add the populator
|
// Add the populator
|
||||||
bukkitWorld.getPopulators().add(this);
|
bukkitWorld.getPopulators().add(this);
|
||||||
@ -82,10 +67,10 @@ public class AugmentedPopulator extends BlockPopulator {
|
|||||||
int x2 = x + 15;
|
int x2 = x + 15;
|
||||||
int z2 = z + 15;
|
int z2 = z + 15;
|
||||||
|
|
||||||
boolean inX1 = (x > botx && x < topx);
|
boolean inX1 = (x > bx && x < tx);
|
||||||
boolean inX2 = (x2 > botx && x2 < topx);
|
boolean inX2 = (x2 > bx && x2 < tx);
|
||||||
boolean inZ1 = (z > botz && z < topz);
|
boolean inZ1 = (z > bz && z < tz);
|
||||||
boolean inZ2 = (z2 > botz && z2 < topz);
|
boolean inZ2 = (z2 > bz && z2 < tz);
|
||||||
|
|
||||||
|
|
||||||
boolean inX = inX1 || inX2;
|
boolean inX = inX1 || inX2;
|
||||||
|
@ -3,6 +3,10 @@ package com.intellectualcrafters.plot.object;
|
|||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
|
import com.intellectualcrafters.plot.database.DBFunc;
|
||||||
|
import com.intellectualcrafters.plot.database.SQLManager;
|
||||||
|
import com.intellectualcrafters.plot.util.UUIDHandler;
|
||||||
|
|
||||||
public class PlotCluster {
|
public class PlotCluster {
|
||||||
|
|
||||||
public final String world;
|
public final String world;
|
||||||
@ -11,6 +15,7 @@ public class PlotCluster {
|
|||||||
public UUID owner;
|
public UUID owner;
|
||||||
|
|
||||||
public HashSet<UUID> helpers = new HashSet<UUID>();
|
public HashSet<UUID> helpers = new HashSet<UUID>();
|
||||||
|
public HashSet<UUID> invited = new HashSet<UUID>();
|
||||||
|
|
||||||
private PlotId pos1;
|
private PlotId pos1;
|
||||||
private PlotId pos2;
|
private PlotId pos2;
|
||||||
@ -36,18 +41,35 @@ public class PlotCluster {
|
|||||||
this.pos1 = pos1;
|
this.pos1 = pos1;
|
||||||
this.pos2 = pos2;
|
this.pos2 = pos2;
|
||||||
this.owner = owner;
|
this.owner = owner;
|
||||||
|
this.settings = new PlotSettings(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean hasRights(UUID uuid) {
|
||||||
|
return (invited.contains(uuid)|| invited.contains(DBFunc.everyone) || helpers.contains(uuid) || helpers.contains(DBFunc.everyone));
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getName() {
|
||||||
|
return this.settings.getAlias();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int hashCode() {
|
public int hashCode() {
|
||||||
// TODO Auto-generated method stub
|
return this.pos1.hashCode();
|
||||||
return super.hashCode();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean equals(Object obj) {
|
public boolean equals(Object obj) {
|
||||||
// TODO Auto-generated method stub
|
if (this == obj) {
|
||||||
return super.equals(obj);
|
return true;
|
||||||
|
}
|
||||||
|
if (obj == null) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (getClass() != obj.getClass()) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
final PlotCluster other = (PlotCluster) obj;
|
||||||
|
return (this.world.equals(other.world) && this.pos1.equals(other.pos1) && this.pos2.equals(other.pos2));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -60,7 +60,7 @@ public abstract class PlotWorld {
|
|||||||
public final static boolean SPAWN_CUSTOM_DEFAULT = true;
|
public final static boolean SPAWN_CUSTOM_DEFAULT = true;
|
||||||
public final static boolean SPAWN_BREEDING_DEFAULT = false;
|
public final static boolean SPAWN_BREEDING_DEFAULT = false;
|
||||||
public final static boolean WORLD_BORDER_DEFAULT = false;
|
public final static boolean WORLD_BORDER_DEFAULT = false;
|
||||||
public final static boolean REQUIRE_CLAIM_IN_CLUSTER_DEFAULT = false;
|
public static boolean REQUIRE_CLAIM_IN_CLUSTER_DEFAULT = false;
|
||||||
|
|
||||||
// are plot clusters enabled
|
// are plot clusters enabled
|
||||||
// require claim in cluster
|
// require claim in cluster
|
||||||
|
@ -4,6 +4,7 @@ import java.util.HashMap;
|
|||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
|
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
|
import org.bukkit.World;
|
||||||
|
|
||||||
import com.intellectualcrafters.plot.PlotMain;
|
import com.intellectualcrafters.plot.PlotMain;
|
||||||
import com.intellectualcrafters.plot.object.Plot;
|
import com.intellectualcrafters.plot.object.Plot;
|
||||||
@ -24,18 +25,51 @@ public class ClusterManager {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean contains(PlotCluster cluster, Location loc) {
|
public static HashSet<PlotCluster> getClusters(World world) {
|
||||||
String world = loc.getWorld().getName();
|
return getClusters(world.getName());
|
||||||
PlotManager manager = PlotMain.getPlotManager(world);
|
|
||||||
PlotWorld plotworld = PlotMain.getWorldSettings(world);
|
|
||||||
Location bot = manager.getPlotBottomLocAbs(plotworld, cluster.getP1());
|
|
||||||
Location top = manager.getPlotTopLocAbs(plotworld, cluster.getP2()).add(1,0,1);
|
|
||||||
if (bot.getBlockX() < loc.getBlockX() && bot.getBlockZ() < loc.getBlockZ() && top.getBlockX() > loc.getBlockX() && top.getBlockZ() > loc.getBlockZ()) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static HashSet<PlotCluster> getClusters(String world) {
|
||||||
|
if (clusters.containsKey(world)) {
|
||||||
|
return clusters.get(world);
|
||||||
|
}
|
||||||
|
return new HashSet<>();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean contains(PlotCluster cluster, Location loc) {
|
||||||
|
String world = loc.getWorld().getName();
|
||||||
|
PlotManager manager = PlotMain.getPlotManager(world);
|
||||||
|
PlotWorld plotworld = PlotMain.getWorldSettings(world);
|
||||||
|
Location bot = manager.getPlotBottomLocAbs(plotworld, cluster.getP1());
|
||||||
|
Location top = manager.getPlotTopLocAbs(plotworld, cluster.getP2()).add(1,0,1);
|
||||||
|
if (bot.getBlockX() < loc.getBlockX() && bot.getBlockZ() < loc.getBlockZ() && top.getBlockX() > loc.getBlockX() && top.getBlockZ() > loc.getBlockZ()) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static HashSet<PlotCluster> getIntersects(String world, PlotClusterId id) {
|
||||||
|
if (clusters.containsKey(world)) {
|
||||||
|
return new HashSet<>();
|
||||||
|
}
|
||||||
|
HashSet<PlotCluster> list = new HashSet<PlotCluster>();
|
||||||
|
for (PlotCluster cluster : clusters.get(world)) {
|
||||||
|
if (intersects(cluster, id)) {
|
||||||
|
list.add(cluster);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return list;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean intersects(PlotCluster cluster, PlotClusterId id) {
|
||||||
|
PlotId pos1 = cluster.getP1();
|
||||||
|
PlotId pos2 = cluster.getP2();
|
||||||
|
if (pos1.x <= id.pos2.x && pos2.x >= id.pos1.x && pos1.y <= id.pos2.y && pos2.y >= id.pos1.y) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
public static PlotCluster getCluster(Plot plot) {
|
public static PlotCluster getCluster(Plot plot) {
|
||||||
return getCluster(plot.world, plot.id);
|
return getCluster(plot.world, plot.id);
|
||||||
}
|
}
|
||||||
|
@ -88,6 +88,16 @@ import com.intellectualcrafters.plot.object.PlotWorld;
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static PlotId parseId(String arg) {
|
||||||
|
try {
|
||||||
|
String[] split = arg.split(";");
|
||||||
|
return new PlotId(Integer.parseInt(split[0]), Integer.parseInt(split[1])) ;
|
||||||
|
}
|
||||||
|
catch (Exception e) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* direction 0 = north, 1 = south, etc:
|
* direction 0 = north, 1 = south, etc:
|
||||||
*
|
*
|
||||||
|
Loading…
Reference in New Issue
Block a user