mirror of
https://github.com/IntellectualSites/PlotSquared.git
synced 2024-11-26 15:16:45 +01:00
Merge remote-tracking branch 'origin/master'
This commit is contained in:
commit
0b75874c20
@ -15,6 +15,7 @@ import com.intellectualcrafters.plot.util.*;
|
|||||||
import com.intellectualcrafters.plot.util.Logger.LogLevel;
|
import com.intellectualcrafters.plot.util.Logger.LogLevel;
|
||||||
import com.intellectualcrafters.plot.util.bukkit.UUIDHandler;
|
import com.intellectualcrafters.plot.util.bukkit.UUIDHandler;
|
||||||
import com.sk89q.worldedit.bukkit.WorldEditPlugin;
|
import com.sk89q.worldedit.bukkit.WorldEditPlugin;
|
||||||
|
|
||||||
import org.bukkit.configuration.file.YamlConfiguration;
|
import org.bukkit.configuration.file.YamlConfiguration;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
@ -67,6 +68,10 @@ public class PlotSquared {
|
|||||||
private Database database;
|
private Database database;
|
||||||
private Connection connection;
|
private Connection connection;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Initialize PlotSquared with the desired Implementation class
|
||||||
|
* @param imp_class
|
||||||
|
*/
|
||||||
protected PlotSquared(final IPlotMain imp_class) {
|
protected PlotSquared(final IPlotMain imp_class) {
|
||||||
SetupUtils.generators = new HashMap<>();
|
SetupUtils.generators = new HashMap<>();
|
||||||
IMP = imp_class;
|
IMP = imp_class;
|
||||||
@ -271,11 +276,20 @@ public class PlotSquared {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set all the plots as a raw object
|
||||||
|
* @see #getAllPlotsRaw() to get the raw plot object
|
||||||
|
* @param plots
|
||||||
|
*/
|
||||||
public void setAllPlotsRaw(final LinkedHashMap<String, HashMap<PlotId, Plot>> plots) {
|
public void setAllPlotsRaw(final LinkedHashMap<String, HashMap<PlotId, Plot>> plots) {
|
||||||
this.plots = plots;
|
this.plots = plots;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get all the plots in a single set
|
||||||
|
* @return Set of Plot
|
||||||
|
*/
|
||||||
public Set<Plot> getPlots() {
|
public Set<Plot> getPlots() {
|
||||||
final ArrayList<Plot> newplots = new ArrayList<>();
|
final ArrayList<Plot> newplots = new ArrayList<>();
|
||||||
for (final Entry<String, HashMap<PlotId, Plot>> entry : plots.entrySet()) {
|
for (final Entry<String, HashMap<PlotId, Plot>> entry : plots.entrySet()) {
|
||||||
@ -287,6 +301,11 @@ public class PlotSquared {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the raw plot object
|
||||||
|
* @return set of plot
|
||||||
|
* @see #setAllPlotsRaw(LinkedHashMap) to set the raw plot object
|
||||||
|
*/
|
||||||
public Set<Plot> getPlotsRaw() {
|
public Set<Plot> getPlotsRaw() {
|
||||||
final ArrayList<Plot> newplots = new ArrayList<>();
|
final ArrayList<Plot> newplots = new ArrayList<>();
|
||||||
for (final Entry<String, HashMap<PlotId, Plot>> entry : plots.entrySet()) {
|
for (final Entry<String, HashMap<PlotId, Plot>> entry : plots.entrySet()) {
|
||||||
@ -296,6 +315,11 @@ public class PlotSquared {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sort a collection of plots by the hashcode
|
||||||
|
* @param plots
|
||||||
|
* @return ArrayList of plot
|
||||||
|
*/
|
||||||
public ArrayList<Plot> sortPlots(Collection<Plot> plots) {
|
public ArrayList<Plot> sortPlots(Collection<Plot> plots) {
|
||||||
ArrayList<Plot> newPlots = new ArrayList<>();
|
ArrayList<Plot> newPlots = new ArrayList<>();
|
||||||
newPlots.addAll(plots);
|
newPlots.addAll(plots);
|
||||||
@ -323,6 +347,14 @@ public class PlotSquared {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sort a collection of plots by world (with a priority world), then by hashcode
|
||||||
|
* @param plots
|
||||||
|
* @param priorityWorld
|
||||||
|
* @see #sortPlotsByWorld(Collection) to sort plots by world, then by hashcode
|
||||||
|
* @see #sortPlots(Collection) to sort plots just by hashcode
|
||||||
|
* @return ArrayList of plot
|
||||||
|
*/
|
||||||
public ArrayList<Plot> sortPlots(Collection<Plot> plots, final String priorityWorld) {
|
public ArrayList<Plot> sortPlots(Collection<Plot> plots, final String priorityWorld) {
|
||||||
ArrayList<Plot> newPlots = new ArrayList<>();
|
ArrayList<Plot> newPlots = new ArrayList<>();
|
||||||
HashMap<PlotId, Plot> worldPlots = this.plots.get(priorityWorld);
|
HashMap<PlotId, Plot> worldPlots = this.plots.get(priorityWorld);
|
||||||
@ -348,6 +380,14 @@ public class PlotSquared {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sort a collection of plots by world, then by hashcode
|
||||||
|
* @param plots
|
||||||
|
* @param priorityWorld
|
||||||
|
* @see #sortPlots(Collection, String) to sort with a specific priority world
|
||||||
|
* @see #sortPlots(Collection) to sort plots just by hashcode
|
||||||
|
* @return ArrayList of plot
|
||||||
|
*/
|
||||||
public ArrayList<Plot> sortPlotsByWorld(Collection<Plot> plots) {
|
public ArrayList<Plot> sortPlotsByWorld(Collection<Plot> plots) {
|
||||||
ArrayList<Plot> newPlots = new ArrayList<>();
|
ArrayList<Plot> newPlots = new ArrayList<>();
|
||||||
ArrayList<String> worlds = new ArrayList<>(this.plots.keySet());
|
ArrayList<String> worlds = new ArrayList<>(this.plots.keySet());
|
||||||
@ -363,18 +403,34 @@ public class PlotSquared {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get all the plots owned by a player name
|
||||||
|
* @param world
|
||||||
|
* @param player
|
||||||
|
* @return Set of Plot
|
||||||
|
*/
|
||||||
public Set<Plot> getPlots(final String world, final String player) {
|
public Set<Plot> getPlots(final String world, final String player) {
|
||||||
final UUID uuid = UUIDHandler.getUUID(player);
|
final UUID uuid = UUIDHandler.getUUID(player);
|
||||||
return getPlots(world, uuid);
|
return getPlots(world, uuid);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get all plots by a PlotPlayer
|
||||||
|
* @param world
|
||||||
|
* @param player
|
||||||
|
* @return Set of plot
|
||||||
|
*/
|
||||||
public Set<Plot> getPlots(final String world, final PlotPlayer player) {
|
public Set<Plot> getPlots(final String world, final PlotPlayer player) {
|
||||||
final UUID uuid = player.getUUID();
|
final UUID uuid = player.getUUID();
|
||||||
return getPlots(world, uuid);
|
return getPlots(world, uuid);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get all plots by a UUID in a world
|
||||||
|
* @param world
|
||||||
|
* @param uuid
|
||||||
|
* @return Set of plot
|
||||||
|
*/
|
||||||
public Set<Plot> getPlots(final String world, final UUID uuid) {
|
public Set<Plot> getPlots(final String world, final UUID uuid) {
|
||||||
final ArrayList<Plot> myplots = new ArrayList<>();
|
final ArrayList<Plot> myplots = new ArrayList<>();
|
||||||
for (final Plot plot : getPlots(world).values()) {
|
for (final Plot plot : getPlots(world).values()) {
|
||||||
@ -388,11 +444,21 @@ public class PlotSquared {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check if a plot world
|
||||||
|
* @param world
|
||||||
|
* @see #getPlotWorld(String) to get the PlotWorld object
|
||||||
|
* @return if a plot world is registered
|
||||||
|
*/
|
||||||
public boolean isPlotWorld(final String world) {
|
public boolean isPlotWorld(final String world) {
|
||||||
return (plotworlds.containsKey(world));
|
return (plotworlds.containsKey(world));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the plot manager for a world
|
||||||
|
* @param world
|
||||||
|
* @return the PlotManager object, or null if no registered PlotManager
|
||||||
|
*/
|
||||||
public PlotManager getPlotManager(final String world) {
|
public PlotManager getPlotManager(final String world) {
|
||||||
if (plotmanagers.containsKey(world)) {
|
if (plotmanagers.containsKey(world)) {
|
||||||
return plotmanagers.get(world);
|
return plotmanagers.get(world);
|
||||||
@ -400,13 +466,21 @@ public class PlotSquared {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get a list of the plot worlds
|
||||||
|
* @return A String array of the plot world names
|
||||||
|
*/
|
||||||
public String[] getPlotWorldsString() {
|
public String[] getPlotWorldsString() {
|
||||||
final Set<String> strings = plots.keySet();
|
final Set<String> strings = plots.keySet();
|
||||||
return strings.toArray(new String[strings.size()]);
|
return strings.toArray(new String[strings.size()]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get a map of the plots for a world
|
||||||
|
* @param world
|
||||||
|
* @return HashMap of PlotId to Plot
|
||||||
|
*/
|
||||||
public HashMap<PlotId, Plot> getPlots(final String world) {
|
public HashMap<PlotId, Plot> getPlots(final String world) {
|
||||||
if (plots.containsKey(world)) {
|
if (plots.containsKey(world)) {
|
||||||
return plots.get(world);
|
return plots.get(world);
|
||||||
@ -415,11 +489,21 @@ public class PlotSquared {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the plots for a PlotPlayer
|
||||||
|
* @param player
|
||||||
|
* @return Set of Plot
|
||||||
|
*/
|
||||||
public Set<Plot> getPlots(final PlotPlayer player) {
|
public Set<Plot> getPlots(final PlotPlayer player) {
|
||||||
return getPlots(player.getUUID());
|
return getPlots(player.getUUID());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the plots for a UUID
|
||||||
|
* @param uuid
|
||||||
|
* @return Set of Plot
|
||||||
|
*/
|
||||||
public Set<Plot> getPlots(final UUID uuid) {
|
public Set<Plot> getPlots(final UUID uuid) {
|
||||||
final ArrayList<Plot> myplots = new ArrayList<>();
|
final ArrayList<Plot> myplots = new ArrayList<>();
|
||||||
for (final String world : plots.keySet()) {
|
for (final String world : plots.keySet()) {
|
||||||
@ -437,11 +521,18 @@ public class PlotSquared {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Unregister a plot from local memory (does not call DB)
|
||||||
|
* @param world
|
||||||
|
* @param id
|
||||||
|
* @param callEvent If to call an event about the plot being removed
|
||||||
|
* @return true if plot existed | false if it didn't
|
||||||
|
*/
|
||||||
public boolean removePlot(final String world, final PlotId id, final boolean callEvent) {
|
public boolean removePlot(final String world, final PlotId id, final boolean callEvent) {
|
||||||
if (callEvent) {
|
if (callEvent) {
|
||||||
EventUtil.manager.callDelete(world, id);
|
EventUtil.manager.callDelete(world, id);
|
||||||
}
|
}
|
||||||
plots.get(world).remove(id);
|
Plot plot = plots.get(world).remove(id);
|
||||||
if (MainUtil.lastPlot.containsKey(world)) {
|
if (MainUtil.lastPlot.containsKey(world)) {
|
||||||
final PlotId last = MainUtil.lastPlot.get(world);
|
final PlotId last = MainUtil.lastPlot.get(world);
|
||||||
final int last_max = Math.max(last.x, last.y);
|
final int last_max = Math.max(last.x, last.y);
|
||||||
@ -450,10 +541,22 @@ public class PlotSquared {
|
|||||||
MainUtil.lastPlot.put(world, id);
|
MainUtil.lastPlot.put(world, id);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return true;
|
return plot != null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This method is called by the PlotGenerator class normally<br>
|
||||||
|
* - Initializes the PlotWorld and PlotManager classes<br>
|
||||||
|
* - Registers the PlotWorld and PlotManager classes<br>
|
||||||
|
* - Loads (and/or generates) the PlotWorld configuration<br>
|
||||||
|
* - Sets up the world border if configured<br>
|
||||||
|
* If loading an augmented plot world:<br>
|
||||||
|
* - Creates the AugmentedPopulator classes<br>
|
||||||
|
* - Injects the AugmentedPopulator classes if required
|
||||||
|
* @param world The world to load
|
||||||
|
* @param generator The generator for that world, or null if no generator
|
||||||
|
*/
|
||||||
public void loadWorld(final String world, PlotGenerator generator) {
|
public void loadWorld(final String world, PlotGenerator generator) {
|
||||||
PlotWorld plotWorld = getPlotWorld(world);
|
PlotWorld plotWorld = getPlotWorld(world);
|
||||||
if (plotWorld != null) {
|
if (plotWorld != null) {
|
||||||
@ -551,10 +654,17 @@ public class PlotSquared {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public boolean setupPlotWorld(final String world, final String id) {
|
/**
|
||||||
if ((id != null) && (id.length() > 0)) {
|
* Setup the configuration for a plot world based on world arguments<br>
|
||||||
|
* e.g. /mv create <world> normal -g PlotSquared:<args>
|
||||||
|
* @param world The name of the world
|
||||||
|
* @param args The arguments
|
||||||
|
* @return boolean | if valid arguments were provided
|
||||||
|
*/
|
||||||
|
public boolean setupPlotWorld(final String world, final String args) {
|
||||||
|
if ((args != null) && (args.length() > 0)) {
|
||||||
// save configuration
|
// save configuration
|
||||||
final String[] split = id.split(",");
|
final String[] split = args.split(",");
|
||||||
final HybridPlotWorld plotworld = new HybridPlotWorld(world);
|
final HybridPlotWorld plotworld = new HybridPlotWorld(world);
|
||||||
final int width = SquarePlotWorld.PLOT_WIDTH_DEFAULT;
|
final int width = SquarePlotWorld.PLOT_WIDTH_DEFAULT;
|
||||||
final int gap = SquarePlotWorld.ROAD_WIDTH_DEFAULT;
|
final int gap = SquarePlotWorld.ROAD_WIDTH_DEFAULT;
|
||||||
@ -644,11 +754,20 @@ public class PlotSquared {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the database connection
|
||||||
|
* @return The database connection
|
||||||
|
*/
|
||||||
public Connection getConnection() {
|
public Connection getConnection() {
|
||||||
return connection;
|
return connection;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Copy a file from inside the jar to a location
|
||||||
|
* @param file Name of the file inside PlotSquared.jar
|
||||||
|
* @param folder The output location relative to /plugins/PlotSquared/
|
||||||
|
*/
|
||||||
public void copyFile(String file, String folder) {
|
public void copyFile(String file, String folder) {
|
||||||
try {
|
try {
|
||||||
byte[] buffer = new byte[2048];
|
byte[] buffer = new byte[2048];
|
||||||
@ -688,6 +807,9 @@ public class PlotSquared {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Close the database connection
|
||||||
|
*/
|
||||||
public void disable() {
|
public void disable() {
|
||||||
try {
|
try {
|
||||||
database.closeConnection();
|
database.closeConnection();
|
||||||
@ -696,7 +818,9 @@ public class PlotSquared {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Setup the database connection
|
||||||
|
*/
|
||||||
public void setupDatabase() {
|
public void setupDatabase() {
|
||||||
if (Settings.DB.USE_MYSQL) {
|
if (Settings.DB.USE_MYSQL) {
|
||||||
try {
|
try {
|
||||||
@ -754,6 +878,11 @@ public class PlotSquared {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Setup the default flags for PlotSquared<br>
|
||||||
|
* - Create the flags
|
||||||
|
* - Register with FlagManager and parse raw flag values
|
||||||
|
*/
|
||||||
public void setupDefaultFlags() {
|
public void setupDefaultFlags() {
|
||||||
final List<String> booleanFlags = Arrays.asList("notify-enter", "notify-leave", "item-drop", "invincible", "instabreak", "drop-protection", "forcefield", "titles", "pve", "pvp", "no-worldedit", "redstone", "keep");
|
final List<String> booleanFlags = Arrays.asList("notify-enter", "notify-leave", "item-drop", "invincible", "instabreak", "drop-protection", "forcefield", "titles", "pve", "pvp", "no-worldedit", "redstone", "keep");
|
||||||
final List<String> intervalFlags = Arrays.asList("feed", "heal");
|
final List<String> intervalFlags = Arrays.asList("feed", "heal");
|
||||||
@ -847,6 +976,9 @@ public class PlotSquared {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Setup the default configuration (settings.yml)
|
||||||
|
*/
|
||||||
public void setupConfig() {
|
public void setupConfig() {
|
||||||
config.set("version", VERSION);
|
config.set("version", VERSION);
|
||||||
|
|
||||||
@ -1027,6 +1159,12 @@ public class PlotSquared {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Setup all configuration files<br>
|
||||||
|
* - Config: settings.yml<br>
|
||||||
|
* - Storage: storage.yml<br>
|
||||||
|
* - Translation: PlotSquared.use_THIS.yml, style.yml<br>
|
||||||
|
*/
|
||||||
public void setupConfigs() {
|
public void setupConfigs() {
|
||||||
final File folder = new File(IMP.getDirectory() + File.separator + "config");
|
final File folder = new File(IMP.getDirectory() + File.separator + "config");
|
||||||
if (!folder.exists() && !folder.mkdirs()) {
|
if (!folder.exists() && !folder.mkdirs()) {
|
||||||
@ -1081,6 +1219,9 @@ public class PlotSquared {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Setup the storage file (load + save missing nodes)
|
||||||
|
*/
|
||||||
private void setupStorage() {
|
private void setupStorage() {
|
||||||
storage.set("version", VERSION);
|
storage.set("version", VERSION);
|
||||||
final Map<String, Object> options = new HashMap<>();
|
final Map<String, Object> options = new HashMap<>();
|
||||||
@ -1114,6 +1255,9 @@ public class PlotSquared {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Show startup debug information
|
||||||
|
*/
|
||||||
public void showDebug() {
|
public void showDebug() {
|
||||||
C.COLOR_1 = "&" + (style.getString("color.1"));
|
C.COLOR_1 = "&" + (style.getString("color.1"));
|
||||||
C.COLOR_2 = "&" + (style.getString("color.2"));
|
C.COLOR_2 = "&" + (style.getString("color.2"));
|
||||||
@ -1137,6 +1281,9 @@ public class PlotSquared {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Setup the style.yml file
|
||||||
|
*/
|
||||||
private void setupStyle() {
|
private void setupStyle() {
|
||||||
style.set("version", VERSION);
|
style.set("version", VERSION);
|
||||||
final Map<String, Object> o = new HashMap<>();
|
final Map<String, Object> o = new HashMap<>();
|
||||||
@ -1152,16 +1299,28 @@ public class PlotSquared {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the java version
|
||||||
|
* @return Java version as a double
|
||||||
|
*/
|
||||||
public double getJavaVersion() {
|
public double getJavaVersion() {
|
||||||
return Double.parseDouble(System.getProperty("java.specification.version"));
|
return Double.parseDouble(System.getProperty("java.specification.version"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the list of plot world names
|
||||||
|
* @return Set of world names (String)
|
||||||
|
*/
|
||||||
public Set<String> getPlotWorlds() {
|
public Set<String> getPlotWorlds() {
|
||||||
return plotworlds.keySet();
|
return plotworlds.keySet();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get a list of PlotWorld objects
|
||||||
|
* @return Collection of PlotWorld objects
|
||||||
|
*/
|
||||||
public Collection<PlotWorld> getPlotWorldObjects() {
|
public Collection<PlotWorld> getPlotWorldObjects() {
|
||||||
return plotworlds.values();
|
return plotworlds.values();
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user