Merge remote-tracking branch 'origin/master'

# Conflicts:
#	Bukkit/src/main/java/com/intellectualcrafters/plot/api/PlotAPI.java
This commit is contained in:
Jesse Boyd 2016-03-30 12:12:19 +11:00
commit 1f6ad47a79
110 changed files with 1819 additions and 1927 deletions

View File

@ -1,4 +1,3 @@
package com.intellectualcrafters.plot.api; package com.intellectualcrafters.plot.api;
import com.intellectualcrafters.configuration.file.YamlConfiguration; import com.intellectualcrafters.configuration.file.YamlConfiguration;
@ -43,32 +42,40 @@ import java.util.UUID;
* @see com.intellectualcrafters.plot.object.Location * @see com.intellectualcrafters.plot.object.Location
* @see PlotArea * @see PlotArea
* @see PS * @see PS
* @version 3.3.1
>>>>>>> origin/master
*/ */
public class PlotAPI { public class PlotAPI {
/** /**
* Permission that allows for admin access, this permission node will allow the player to use any part of the * Permission that allows for admin access, this permission node will allow
* plugin, without limitations. * the player to use any part of the plugin, without limitations.
* @deprecated Use C.PERMISSION_ADMIN instead * @deprecated Use C.PERMISSION_ADMIN instead
*/ */
@Deprecated @Deprecated
public static final String ADMIN_PERMISSION = C.PERMISSION_ADMIN.s(); public static final String ADMIN_PERMISSION = C.PERMISSION_ADMIN.s();
/** /**
* @deprecated Use new PlotAPI() instead * Deprecated, does nothing.
* @param plugin not needed
* @deprecated Not needed
*/ */
@Deprecated @Deprecated
public PlotAPI(JavaPlugin plugin) { public PlotAPI(JavaPlugin plugin) {
} }
/** /**
* @see PS * Default Constructor that does nothing.
*
* @deprecated Use this class if you just want to do a few simple things.<br>
* - It will remain stable for future versions of the plugin
* - The PlotPlayer and Plot class should be considered relatively safe
* - For more advanced/intensive tasks you should consider using other classes
* *
* @deprecated Use this class if you just want to do a few simple things
* <ul>
* <li>It will remain stable for future versions
* of the plugin</li>
* <li>The PlotPlayer and Plot class should be considered
* relatively safe</li>
* <li>For more advanced/intensive tasks you should consider
* using other classes</li>
* </ul>
* *
*/ */
@Deprecated @Deprecated
@ -108,6 +115,7 @@ public class PlotAPI {
} }
/** /**
* Returns the PlotSquared configurations file.
* @return main configuration * @return main configuration
* *
* @see PS#config * @see PS#config
@ -117,6 +125,7 @@ public class PlotAPI {
} }
/** /**
* Get the PlotSquared storage file.
* @return storage configuration * @return storage configuration
* *
* @see PS#storage * @see PS#storage
@ -126,8 +135,7 @@ public class PlotAPI {
} }
/** /**
* Get the main class for this plugin <br> - Contains a lot of fields and methods - not very well organized <br> * Get the main class for this plugin. Only use this if you really need it.
* Only use this if you really need it
* *
* @return PlotSquared PlotSquared Main Class * @return PlotSquared PlotSquared Main Class
* *
@ -138,12 +146,14 @@ public class PlotAPI {
} }
/** /**
* ChunkManager class contains several useful methods<br> * ChunkManager class contains several useful methods.
* - Chunk deletion<br> * <ul>
* - Moving or copying regions<br> * <li>Chunk deletion</li>
* - plot swapping<br> * <li>Moving or copying regions</li>
* - Entity tracking<br> * <li>Plot swapping</li>
* - region regeneration<br> * <li>Entity Tracking</li>
* <li>Region Regeneration</li>
* </ul>
* *
* @return ChunkManager * @return ChunkManager
* *
@ -162,7 +172,8 @@ public class PlotAPI {
} }
/** /**
* UUIDWrapper class has basic methods for getting UUIDS (it's recommended to use the UUIDHandler class instead) * UUIDWrapper class has basic methods for getting UUIDS. It's recommended
* to use the UUIDHandler class instead.
* *
* @return UUIDWrapper * @return UUIDWrapper
* *
@ -178,7 +189,7 @@ public class PlotAPI {
* *
* @return FlagManager * @return FlagManager
* *
* @see com.intellectualcrafters.plot.flag.FlagManager * @deprecated Use {@link FlagManager} directly
*/ */
@Deprecated @Deprecated
public FlagManager getFlagManager() { public FlagManager getFlagManager() {
@ -187,11 +198,9 @@ public class PlotAPI {
/** /**
* Do not use this. Instead use MainUtil.[method] in your code. * Do not use this. Instead use MainUtil.[method] in your code.
* - Basic plot management stuff
* *
* @return MainUtil * @return MainUtil
* * @deprecated Use {@link MainUtil} directly
* @see MainUtil
*/ */
@Deprecated @Deprecated
public MainUtil getMainUtil() { public MainUtil getMainUtil() {
@ -200,11 +209,11 @@ public class PlotAPI {
/** /**
* Do not use this. Instead use C.PERMISSION_[method] in your code. * Do not use this. Instead use C.PERMISSION_[method] in your code.
* - Basic permission management stuff
* *
* @return Array of strings * @return Array of strings
* *
* @see com.intellectualcrafters.plot.util.Permissions * @see com.intellectualcrafters.plot.util.Permissions
* @deprecated Use {@link C} to list all the permissions
*/ */
@Deprecated @Deprecated
public String[] getPermissions() { public String[] getPermissions() {
@ -218,7 +227,8 @@ public class PlotAPI {
} }
/** /**
* SchematicHandler class contains methods related to pasting, reading and writing schematics * SchematicHandler class contains methods related to pasting, reading
* and writing schematics.
* *
* @return SchematicHandler * @return SchematicHandler
* *
@ -232,8 +242,7 @@ public class PlotAPI {
* Use C.[caption] instead * Use C.[caption] instead
* *
* @return C * @return C
* * @deprecated Use {@link C}
* @see com.intellectualcrafters.plot.config.C
*/ */
@Deprecated @Deprecated
public C[] getCaptions() { public C[] getCaptions() {
@ -241,7 +250,8 @@ public class PlotAPI {
} }
/** /**
* Get the plot manager for a world. - Most of these methods can be accessed through the MainUtil * Get the plot manager for a world. Most of these methods can be accessed
* through the MainUtil.
* *
* @param world Which manager to get * @param world Which manager to get
* *
@ -258,6 +268,11 @@ public class PlotAPI {
return getPlotManager(world.getName()); return getPlotManager(world.getName());
} }
/**
* Get a list of PlotAreas in the world.
* @param world The world to check for plot areas
* @return A set of PlotAreas
*/
public Set<PlotArea> getPlotAreas(World world) { public Set<PlotArea> getPlotAreas(World world) {
if (world == null) { if (world == null) {
return new HashSet<>(); return new HashSet<>();
@ -266,10 +281,10 @@ public class PlotAPI {
} }
/** /**
* Get the plot manager for a world. - Contains useful low level methods for plot merging, clearing, and * Get the plot manager for a world. Contains useful low level methods for
* tessellation * plot merging, clearing, and tessellation.
* *
* @param world * @param world The world
* *
* @return PlotManager * @return PlotManager
* *
@ -291,12 +306,13 @@ public class PlotAPI {
} }
/** /**
* Get the settings for a world (settings bundled in PlotArea class) - You will need to downcast for the specific * Get the settings for a world (settings bundled in PlotArea class). You
* settings a Generator has. e.g. DefaultPlotWorld class implements PlotArea * will need to downcast for the specific settings a Generator has. e.g.
* DefaultPlotWorld class implements PlotArea
* *
* @param world (to get settings of) * @param world The World
* *
* @return PlotArea class for that world ! will return null if not a plot world world * @return The {@link PlotArea} for the world or null if not in plotworld
* *
* @see #getPlotAreas(World) * @see #getPlotAreas(World)
* @see com.intellectualcrafters.plot.object.PlotArea * @see com.intellectualcrafters.plot.object.PlotArea
@ -310,11 +326,11 @@ public class PlotAPI {
} }
/** /**
* Get the settings for a world (settings bundled in PlotArea class) * Get the settings for a world.
* *
* @param world (to get settings of) * @param world The world
* *
* @return PlotArea class for that world ! will return null if not a plot world world * @return The {@link PlotArea} for the world or null if not in plotworld
* *
* @see PS#getPlotArea(String, String) * @see PS#getPlotArea(String, String)
* @see com.intellectualcrafters.plot.object.PlotArea * @see com.intellectualcrafters.plot.object.PlotArea
@ -340,17 +356,16 @@ public class PlotAPI {
* Send a message to a player. * Send a message to a player.
* *
* @param player Player that will receive the message * @param player Player that will receive the message
* @param c (Caption) * @param caption Caption
* *
* @see MainUtil#sendMessage(PlotPlayer, C, String...) * @see MainUtil#sendMessage(PlotPlayer, C, String...)
* com.intellectualcrafters.plot.config.C, String...)
*/ */
public void sendMessage(Player player, C c) { public void sendMessage(Player player, C caption) {
MainUtil.sendMessage(BukkitUtil.getPlayer(player), c); MainUtil.sendMessage(BukkitUtil.getPlayer(player), caption);
} }
/** /**
* Send a message to a player. - Supports color codes * Send a message to a player. Supports color codes.
* *
* @param player Player that will receive the message * @param player Player that will receive the message
* @param string The message * @param string The message
@ -362,30 +377,30 @@ public class PlotAPI {
} }
/** /**
* Send a message to the console. - Supports color codes * Send a message to the console. Supports color codes.
* *
* @param msg Message that should be sent to the console * @param message Message that should be sent to the console
* *
* @see MainUtil#sendConsoleMessage(C, String...) * @see MainUtil#sendConsoleMessage(C, String...)
*/ */
public void sendConsoleMessage(String msg) { public void sendConsoleMessage(String message) {
PS.log(msg); PS.log(message);
} }
/** /**
* Send a message to the console * Send a message to the console.
* *
* @param c (Caption) * @param caption The caption
* *
* @see #sendConsoleMessage(String) * @see #sendConsoleMessage(String)
* @see com.intellectualcrafters.plot.config.C * @see com.intellectualcrafters.plot.config.C
*/ */
public void sendConsoleMessage(C c) { public void sendConsoleMessage(C caption) {
sendConsoleMessage(c.s()); sendConsoleMessage(caption.s());
} }
/** /**
* Register a flag for use in plots * Register a flag for use in plots.
* *
* @param flag Flag that should be registered * @param flag Flag that should be registered
* *
@ -397,7 +412,7 @@ public class PlotAPI {
} }
/** /**
* get all the currently registered flags * get all the currently registered flags.
* *
* @return array of Flag[] * @return array of Flag[]
* *
@ -412,8 +427,8 @@ public class PlotAPI {
* Get a plot based on the ID. * Get a plot based on the ID.
* *
* @param world World in which the plot is located * @param world World in which the plot is located
* @param x Plot Location X Co-ord * @param x The PlotID x coordinate
* @param z Plot Location Z Co-ord * @param z The PlotID y coordinate
* *
* @return plot, null if ID is wrong * @return plot, null if ID is wrong
* *
@ -434,17 +449,17 @@ public class PlotAPI {
/** /**
* Get a plot based on the location. * Get a plot based on the location.
* *
* @param l The location that you want to to retrieve the plot from * @param location The location to retrieve the plot from
* *
* @return plot if found, otherwise it creates a temporary plot- * @return plot if found, otherwise it creates a temporary plot
* *
* @see Plot * @see Plot
*/ */
public Plot getPlot(Location l) { public Plot getPlot(Location location) {
if (l == null) { if (location == null) {
return null; return null;
} }
return BukkitUtil.getLocation(l).getPlot(); return BukkitUtil.getLocation(location).getPlot();
} }
/** /**
@ -465,7 +480,7 @@ public class PlotAPI {
* Check whether or not a player has a plot. * Check whether or not a player has a plot.
* *
* @param player Player that you want to check for * @param player Player that you want to check for
* * @param world The world to check
* @return true if player has a plot, false if not. * @return true if player has a plot, false if not.
* *
* @see #getPlots(World, Player, boolean) * @see #getPlots(World, Player, boolean)
@ -478,9 +493,10 @@ public class PlotAPI {
/** /**
* Get all plots for the player. * Get all plots for the player.
* *
* @param world * @param world The world to retrieve plots from
* @param player The player to search for * @param player The player to search for
* @param justOwner should we just search for owner? Or with rights? * @param justOwner should we just search for owner? Or with rights?
* @return An array of plots for the player
*/ */
@Deprecated @Deprecated
public Plot[] getPlots(World world, Player player, boolean justOwner) { public Plot[] getPlots(World world, Player player, boolean justOwner) {
@ -530,9 +546,9 @@ public class PlotAPI {
} }
/** /**
* Get if plot world * Get if plotworld.
* *
* @param world (to check if plot world) * @param world The world to check
* *
* @return boolean (if plot world or not) * @return boolean (if plot world or not)
* *
@ -544,9 +560,9 @@ public class PlotAPI {
} }
/** /**
* Get plot locations * Get plot locations.
* *
* @param p Plot that you want to get the locations for * @param plot Plot to get the locations for
* *
* @return [0] = bottomLc, [1] = topLoc, [2] = home * @return [0] = bottomLc, [1] = topLoc, [2] = home
* *
@ -555,27 +571,30 @@ public class PlotAPI {
* @see Plot * @see Plot
*/ */
@Deprecated @Deprecated
public Location[] getLocations(Plot p) { public Location[] getLocations(Plot plot) {
return new Location[]{BukkitUtil.getLocation(p.getBottom()), BukkitUtil.getLocation(p.getTop()), BukkitUtil.getLocation(p.getHome())}; Location bukkitBottom = BukkitUtil.getLocation(plot.getCorners()[0]);
Location bukkitTop = BukkitUtil.getLocation(plot.getCorners()[1]);
Location bukkitHome = BukkitUtil.getLocation(plot.getHome());
return new Location[]{bukkitBottom, bukkitTop, bukkitHome};
} }
/** /**
* Get home location * Get home location.
* *
* @param p Plot that you want to get the location for * @param plot Plot that you want to get the location for
* *
* @return plot bottom location * @return plot bottom location
* *
* @see Plot * @see Plot
*/ */
public Location getHomeLocation(Plot p) { public Location getHomeLocation(Plot plot) {
return BukkitUtil.getLocation(p.getHome()); return BukkitUtil.getLocation(plot.getHome());
} }
/** /**
* Get Bottom Location (min, min, min) * Get Bottom Location (min, min, min).
* *
* @param p Plot that you want to get the location for * @param plot Plot that you want to get the location for
* *
* @return plot bottom location * @return plot bottom location
* *
@ -584,14 +603,14 @@ public class PlotAPI {
* @see Plot * @see Plot
*/ */
@Deprecated @Deprecated
public Location getBottomLocation(Plot p) { public Location getBottomLocation(Plot plot) {
return BukkitUtil.getLocation(p.getBottom()); return BukkitUtil.getLocation(plot.getBottom());
} }
/** /**
* Get Top Location (max, max, max) * Get Top Location (max, max, max).
* *
* @param p Plot that you want to get the location for * @param plot Plot that you want to get the location for
* *
* @return plot top location * @return plot top location
* *
@ -600,12 +619,12 @@ public class PlotAPI {
* @see Plot * @see Plot
*/ */
@Deprecated @Deprecated
public Location getTopLocation(Plot p) { public Location getTopLocation(Plot plot) {
return BukkitUtil.getLocation(p.getTop()); return BukkitUtil.getLocation(plot.getTop());
} }
/** /**
* Check whether or not a player is in a plot * Check whether or not a player is in a plot.
* *
* @param player who we're checking for * @param player who we're checking for
* *
@ -617,7 +636,7 @@ public class PlotAPI {
} }
/** /**
* Register a subcommand * Register a subcommand.
* @deprecated Command registration is done on object creation * @deprecated Command registration is done on object creation
* @param c SubCommand, that we want to register * @param c SubCommand, that we want to register
* @see com.intellectualcrafters.plot.commands.SubCommand * @see com.intellectualcrafters.plot.commands.SubCommand
@ -628,7 +647,7 @@ public class PlotAPI {
} }
/** /**
* Get the PlotSquared class * Get the PlotSquared class.
* *
* @return PlotSquared Class * @return PlotSquared Class
* *
@ -639,7 +658,7 @@ public class PlotAPI {
} }
/** /**
* Get the player plot count * Get the player plot count.
* *
* @param world Specify the world we want to select the plots from * @param world Specify the world we want to select the plots from
* @param player Player, for whom we're getting the plot count * @param player Player, for whom we're getting the plot count
@ -655,7 +674,7 @@ public class PlotAPI {
} }
/** /**
* Get a collection containing the players plots * Get a collection containing the players plots.
* *
* @param world Specify the world we want to select the plots from * @param world Specify the world we want to select the plots from
* @param player Player, for whom we're getting the plots * @param player Player, for whom we're getting the plots
@ -674,9 +693,9 @@ public class PlotAPI {
} }
/** /**
* Get the numbers of plots, which the player is able to build in * Get the numbers of plots, which the player is able to build in.
* *
* @param player Player, for whom we're getting the plots (trusted, member and owner) * @param player Player, for whom we're getting the plots
* *
* @return the number of allowed plots * @return the number of allowed plots
* *
@ -687,50 +706,54 @@ public class PlotAPI {
} }
/** /**
* Get the PlotPlayer for a player<br> * Get the PlotPlayer for a player. The PlotPlayer is usually cached and
* - The PlotPlayer is usually cached and will provide useful functions relating to players * will provide useful functions relating to players.
* *
* @see PlotPlayer#wrap(Object) * @see PlotPlayer#wrap(Object)
* *
* @param player * @param player The player to wrap
* @return * @return A PlotPlayer
*/ */
public PlotPlayer wrapPlayer(Player player) { public PlotPlayer wrapPlayer(Player player) {
return PlotPlayer.wrap(player); return PlotPlayer.wrap(player);
} }
/** /**
* Get the PlotPlayer for a UUID (Please note that PlotSquared can be configured to provide different UUIDs than bukkit) * Get the PlotPlayer for a UUID.
*
* <p><i>Please note that PlotSquared can be configured to provide
* different UUIDs than bukkit</i></p>
* *
* @see PlotPlayer#wrap(Object) * @see PlotPlayer#wrap(Object)
* *
* @param uuid * @param uuid The uuid of the player to wrap
* @return * @return A PlotPlayer
*/ */
public PlotPlayer wrapPlayer(UUID uuid) { public PlotPlayer wrapPlayer(UUID uuid) {
return PlotPlayer.wrap(uuid); return PlotPlayer.wrap(uuid);
} }
/** /**
* Get the PlotPlayer for a username * Get the PlotPlayer for a username.
* *
* @see PlotPlayer#wrap(Object) * @see PlotPlayer#wrap(Object)
* *
* @param player * @param player The player to wrap
* @return * @return The PlotPlayer
*/ */
public PlotPlayer wrapPlayer(String player) { public PlotPlayer wrapPlayer(String player) {
return PlotPlayer.wrap(player); return PlotPlayer.wrap(player);
} }
/** /**
* Get the PlotPlayer for an offline player<br> * Get the PlotPlayer for an offline player.
* Note that this will work if the player is offline, however not all functionality will work * <p>Note that this will work if the player is offline, however not all
* functionality will work</p>
* *
* @see PlotPlayer#wrap(Object) * @see PlotPlayer#wrap(Object)
* *
* @param player * @param player The player to wrap
* @return * @return The PlotPlayer
*/ */
public PlotPlayer wrapPlayer(OfflinePlayer player) { public PlotPlayer wrapPlayer(OfflinePlayer player) {
return PlotPlayer.wrap(player); return PlotPlayer.wrap(player);

View File

@ -123,7 +123,7 @@ public class BukkitMain extends JavaPlugin implements Listener, IPlotMain {
@Override @Override
public void onEnable() { public void onEnable() {
THIS = this; BukkitMain.THIS = this;
new PS(this, "Bukkit"); new PS(this, "Bukkit");
} }
@ -131,12 +131,12 @@ public class BukkitMain extends JavaPlugin implements Listener, IPlotMain {
public void onDisable() { public void onDisable() {
PS.get().disable(); PS.get().disable();
Bukkit.getScheduler().cancelTasks(this); Bukkit.getScheduler().cancelTasks(this);
THIS = null; BukkitMain.THIS = null;
} }
@Override @Override
public void log(String message) { public void log(String message) {
if (THIS != null) { if (BukkitMain.THIS != null) {
try { try {
message = C.color(message); message = C.color(message);
if (!Settings.CONSOLE_COLOR) { if (!Settings.CONSOLE_COLOR) {
@ -153,7 +153,7 @@ public class BukkitMain extends JavaPlugin implements Listener, IPlotMain {
@Override @Override
public void disable() { public void disable() {
if (THIS != null) { if (BukkitMain.THIS != null) {
onDisable(); onDisable();
} }
} }
@ -170,11 +170,11 @@ public class BukkitMain extends JavaPlugin implements Listener, IPlotMain {
@Override @Override
public void registerCommands() { public void registerCommands() {
BukkitCommand bcmd = new BukkitCommand(); BukkitCommand bukkitCommand = new BukkitCommand();
PluginCommand plotCommand = getCommand("plots"); PluginCommand plotCommand = getCommand("plots");
plotCommand.setExecutor(bcmd); plotCommand.setExecutor(bukkitCommand);
plotCommand.setAliases(Arrays.asList("p", "ps", "plotme", "plot")); plotCommand.setAliases(Arrays.asList("p", "ps", "plotme", "plot"));
plotCommand.setTabCompleter(bcmd); plotCommand.setTabCompleter(bukkitCommand);
} }
@Override @Override
@ -224,10 +224,9 @@ public class BukkitMain extends JavaPlugin implements Listener, IPlotMain {
case LIGHTNING: case LIGHTNING:
case WITHER_SKULL: case WITHER_SKULL:
case UNKNOWN: case UNKNOWN:
case PLAYER: { case PLAYER:
// non moving / unremovable // non moving / unmovable
continue; continue;
}
case THROWN_EXP_BOTTLE: case THROWN_EXP_BOTTLE:
case SPLASH_POTION: case SPLASH_POTION:
case SNOWBALL: case SNOWBALL:
@ -235,15 +234,13 @@ public class BukkitMain extends JavaPlugin implements Listener, IPlotMain {
case SPECTRAL_ARROW: case SPECTRAL_ARROW:
case TIPPED_ARROW: case TIPPED_ARROW:
case ENDER_PEARL: case ENDER_PEARL:
case ARROW: { case ARROW:
// managed elsewhere | projectile // managed elsewhere | projectile
continue; continue;
}
case ARMOR_STAND: case ARMOR_STAND:
case ITEM_FRAME: case ITEM_FRAME:
case PAINTING: { case PAINTING:
// TEMPORARILY CLASSIFY AS VEHICLE // TEMPORARILY CLASSIFY AS VEHICLE
}
case MINECART: case MINECART:
case MINECART_CHEST: case MINECART_CHEST:
case MINECART_COMMAND: case MINECART_COMMAND:
@ -278,15 +275,13 @@ public class BukkitMain extends JavaPlugin implements Listener, IPlotMain {
case SMALL_FIREBALL: case SMALL_FIREBALL:
case FIREBALL: case FIREBALL:
case DRAGON_FIREBALL: case DRAGON_FIREBALL:
case DROPPED_ITEM: { case DROPPED_ITEM:
// dropped item // dropped item
continue; continue;
}
case PRIMED_TNT: case PRIMED_TNT:
case FALLING_BLOCK: { case FALLING_BLOCK:
// managed elsewhere // managed elsewhere
continue; continue;
}
case BAT: case BAT:
case BLAZE: case BLAZE:
case CAVE_SPIDER: case CAVE_SPIDER:
@ -320,7 +315,7 @@ public class BukkitMain extends JavaPlugin implements Listener, IPlotMain {
case WOLF: case WOLF:
case ZOMBIE: case ZOMBIE:
case SHULKER: case SHULKER:
default: { default:
if (!Settings.KILL_ROAD_MOBS) { if (!Settings.KILL_ROAD_MOBS) {
continue; continue;
} }
@ -332,7 +327,6 @@ public class BukkitMain extends JavaPlugin implements Listener, IPlotMain {
entity.remove(); entity.remove();
} }
} }
}
} }
} }
} catch (Throwable e) { } catch (Throwable e) {
@ -383,7 +377,7 @@ public class BukkitMain extends JavaPlugin implements Listener, IPlotMain {
@Override @Override
public boolean initWorldEdit() { public boolean initWorldEdit() {
if (getServer().getPluginManager().getPlugin("WorldEdit") != null) { if (getServer().getPluginManager().getPlugin("WorldEdit") != null) {
BukkitMain.worldEdit = (WorldEditPlugin) getServer().getPluginManager().getPlugin("WorldEdit"); worldEdit = (WorldEditPlugin) getServer().getPluginManager().getPlugin("WorldEdit");
getServer().getPluginManager().registerEvents(new WEListener(), this); getServer().getPluginManager().registerEvents(new WEListener(), this);
return true; return true;
} }

View File

@ -107,9 +107,9 @@ public class DebugUUID extends SubCommand {
worlds.add("world"); worlds.add("world");
HashSet<UUID> uuids = new HashSet<>(); HashSet<UUID> uuids = new HashSet<>();
HashSet<String> names = new HashSet<>(); HashSet<String> names = new HashSet<>();
for (String worldname : worlds) { for (String worldName : worlds) {
File playerdataFolder = new File(worldname + File.separator + "playerdata"); File playerDataFolder = new File(worldName + File.separator + "playerdata");
String[] dat = playerdataFolder.list(new FilenameFilter() { String[] dat = playerDataFolder.list(new FilenameFilter() {
@Override @Override
public boolean accept(File f, String s) { public boolean accept(File f, String s) {
return s.endsWith(".dat"); return s.endsWith(".dat");
@ -126,7 +126,7 @@ public class DebugUUID extends SubCommand {
} }
} }
} }
File playersFolder = new File(worldname + File.separator + "players"); File playersFolder = new File(worldName + File.separator + "players");
dat = playersFolder.list(new FilenameFilter() { dat = playersFolder.list(new FilenameFilter() {
@Override @Override
public boolean accept(File f, String s) { public boolean accept(File f, String s) {
@ -286,7 +286,7 @@ public class DebugUUID extends SubCommand {
try { try {
PS.get().config.save(PS.get().configFile); PS.get().config.save(PS.get().configFile);
} catch (IOException e) { } catch (IOException e) {
MainUtil.sendMessage(player, "Could not save configuration. It will need to be manuall set!"); MainUtil.sendMessage(player, "Could not save configuration. It will need to be manual set!");
} }
MainUtil.sendMessage(player, "&7 - Populating tables"); MainUtil.sendMessage(player, "&7 - Populating tables");

View File

@ -55,16 +55,16 @@ abstract class APlotMeConnector {
public Location getPlotTopLocAbs(int path, int plot, PlotId plotid) { public Location getPlotTopLocAbs(int path, int plot, PlotId plotid) {
int px = plotid.x; int px = plotid.x;
int pz = plotid.y; int pz = plotid.y;
int x = (px * (path + plot)) - (int) Math.floor(path / 2) - 1; int x = px * (path + plot) - (int) Math.floor(path / 2) - 1;
int z = (pz * (path + plot)) - (int) Math.floor(path / 2) - 1; int z = pz * (path + plot) - (int) Math.floor(path / 2) - 1;
return new Location(null, x, 256, z); return new Location(null, x, 256, z);
} }
public Location getPlotBottomLocAbs(int path, int plot, PlotId plotid) { public Location getPlotBottomLocAbs(int path, int plot, PlotId plotid) {
int px = plotid.x; int px = plotid.x;
int pz = plotid.y; int pz = plotid.y;
int x = (px * (path + plot)) - plot - (int) Math.floor(path / 2) - 1; int x = px * (path + plot) - plot - (int) Math.floor(path / 2) - 1;
int z = (pz * (path + plot)) - plot - (int) Math.floor(path / 2) - 1; int z = pz * (path + plot) - plot - (int) Math.floor(path / 2) - 1;
return new Location(null, x, 1, z); return new Location(null, x, 1, z);
} }

View File

@ -154,8 +154,8 @@ public class ClassicPlotMeConnector extends APlotMeConnector {
for (Entry<String, HashMap<PlotId, boolean[]>> entry : merges.entrySet()) { for (Entry<String, HashMap<PlotId, boolean[]>> entry : merges.entrySet()) {
String world = entry.getKey(); String world = entry.getKey();
for (Entry<PlotId, boolean[]> entry2 : entry.getValue().entrySet()) { for (Entry<PlotId, boolean[]> entry2 : entry.getValue().entrySet()) {
HashMap<PlotId, Plot> newplots = plots.get(world); HashMap<PlotId, Plot> newPlots = plots.get(world);
Plot plot = newplots.get(entry2.getKey()); Plot plot = newPlots.get(entry2.getKey());
if (plot != null) { if (plot != null) {
plot.setMerged(entry2.getValue()); plot.setMerged(entry2.getValue());
} }

View File

@ -45,9 +45,9 @@ public class LikePlotMeConverter {
} }
public static String getWorld(String world) { public static String getWorld(String world) {
for (World newworld : Bukkit.getWorlds()) { for (World newWorld : Bukkit.getWorlds()) {
if (newworld.getName().equalsIgnoreCase(world)) { if (newWorld.getName().equalsIgnoreCase(world)) {
return newworld.getName(); return newWorld.getName();
} }
} }
return world; return world;
@ -205,11 +205,11 @@ public class LikePlotMeConverter {
PS.get().config.set("worlds." + world + ".road.height", pathheight); PS.get().config.set("worlds." + world + ".road.height", pathheight);
PS.get().config.set("worlds." + world + ".wall.height", pathheight); PS.get().config.set("worlds." + world + ".wall.height", pathheight);
PS.get().config.set("worlds." + world + ".plot.height", pathheight); PS.get().config.set("worlds." + world + ".plot.height", pathheight);
Integer plotsize = plotmeDgYml.getInt("worlds." + plotMeWorldName + ".PlotSize"); // Integer plotSize = plotmeDgYml.getInt("worlds." + plotMeWorldName + ".PlotSize"); //
if (plotsize == 0) { if (plotSize == 0) {
plotsize = 32; plotSize = 32;
} }
PS.get().config.set("worlds." + world + ".plot.size", plotsize); PS.get().config.set("worlds." + world + ".plot.size", plotSize);
String wallblock = plotmeDgYml.getString("worlds." + plotMeWorldName + ".WallBlock", "44"); // String wallblock = plotmeDgYml.getString("worlds." + plotMeWorldName + ".WallBlock", "44"); //
PS.get().config.set("worlds." + world + ".wall.block", wallblock); PS.get().config.set("worlds." + world + ".wall.block", wallblock);
String floor = plotmeDgYml.getString("worlds." + plotMeWorldName + ".PlotFloorBlock", "2"); // String floor = plotmeDgYml.getString("worlds." + plotMeWorldName + ".PlotFloorBlock", "2"); //
@ -310,10 +310,10 @@ public class LikePlotMeConverter {
.isEnabled()) { .isEnabled()) {
mw = true; mw = true;
} }
for (String worldname : worlds) { for (String worldName : worlds) {
World world = Bukkit.getWorld(getWorld(worldname)); World world = Bukkit.getWorld(getWorld(worldName));
if (world == null) { if (world == null) {
sendMessage("&cInvalid world in PlotMe configuration: " + worldname); sendMessage("&cInvalid world in PlotMe configuration: " + worldName);
} }
String actualWorldName = world.getName(); String actualWorldName = world.getName();
sendMessage("Reloading generator for world: '" + actualWorldName + "'..."); sendMessage("Reloading generator for world: '" + actualWorldName + "'...");
@ -344,8 +344,8 @@ public class LikePlotMeConverter {
// Load using Bukkit API // Load using Bukkit API
// - User must set generator manually // - User must set generator manually
Bukkit.getServer().unloadWorld(world, true); Bukkit.getServer().unloadWorld(world, true);
World myworld = WorldCreator.name(actualWorldName).generator(new BukkitPlotGenerator(new HybridGen())).createWorld(); World myWorld = WorldCreator.name(actualWorldName).generator(new BukkitPlotGenerator(new HybridGen())).createWorld();
myworld.save(); myWorld.save();
} }
} }
} catch (CommandException e) { } catch (CommandException e) {

View File

@ -111,8 +111,8 @@ public class ChunkListener implements Listener {
if (!PS.get().hasPlotArea(name)) { if (!PS.get().hasPlotArea(name)) {
continue; continue;
} }
boolean autosave = world.isAutoSave(); boolean autoSave = world.isAutoSave();
if (autosave) { if (autoSave) {
world.setAutoSave(false); world.setAutoSave(false);
} }
HashMap<ChunkLoc, Integer> map = players.get(name); HashMap<ChunkLoc, Integer> map = players.get(name);
@ -142,7 +142,7 @@ public class ChunkListener implements Listener {
time = 1; time = 1;
} }
} }
if (!Settings.CHUNK_PROCESSOR_TRIM_ON_SAVE && autosave) { if (!Settings.CHUNK_PROCESSOR_TRIM_ON_SAVE && autoSave) {
world.setAutoSave(true); world.setAutoSave(true);
} }
} }

View File

@ -636,22 +636,22 @@ public class PlayerEvents extends PlotListener implements Listener {
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
public void onBigBoom(EntityExplodeEvent event) { public void onBigBoom(EntityExplodeEvent event) {
Location loc = BukkitUtil.getLocation(event.getLocation()); Location location = BukkitUtil.getLocation(event.getLocation());
PlotArea area = loc.getPlotArea(); PlotArea area = location.getPlotArea();
if (area == null) { if (area == null) {
if (!PS.get().hasPlotArea(loc.getWorld())) { if (!PS.get().hasPlotArea(location.getWorld())) {
return; return;
} }
Iterator<Block> iter = event.blockList().iterator(); Iterator<Block> iterator = event.blockList().iterator();
while (iter.hasNext()) { while (iterator.hasNext()) {
iter.next(); iterator.next();
if (loc.getPlotArea() != null) { if (location.getPlotArea() != null) {
iter.remove(); iterator.remove();
} }
} }
return; return;
} }
Plot plot = area.getOwnedPlot(loc); Plot plot = area.getOwnedPlot(location);
if (plot != null) { if (plot != null) {
if (FlagManager.isPlotFlagTrue(plot, "explosion")) { if (FlagManager.isPlotFlagTrue(plot, "explosion")) {
List<MetadataValue> meta = event.getEntity().getMetadata("plot"); List<MetadataValue> meta = event.getEntity().getMetadata("plot");
@ -672,12 +672,12 @@ public class PlayerEvents extends PlotListener implements Listener {
} }
this.lastRadius = 0; this.lastRadius = 0;
} }
Iterator<Block> iter = event.blockList().iterator(); Iterator<Block> iterator = event.blockList().iterator();
while (iter.hasNext()) { while (iterator.hasNext()) {
Block b = iter.next(); Block block = iterator.next();
loc = BukkitUtil.getLocation(b.getLocation()); location = BukkitUtil.getLocation(block.getLocation());
if (!area.contains(loc.getX(), loc.getZ()) || !origin.equals(area.getOwnedPlot(loc))) { if (!area.contains(location.getX(), location.getZ()) || !origin.equals(area.getOwnedPlot(location))) {
iter.remove(); iterator.remove();
} }
} }
return; return;
@ -1267,8 +1267,8 @@ public class PlayerEvents extends PlotListener implements Listener {
} }
Block block = event.getBlock(); Block block = event.getBlock();
World world = block.getWorld(); World world = block.getWorld();
String worldname = world.getName(); String worldName = world.getName();
if (!PS.get().hasPlotArea(worldname)) { if (!PS.get().hasPlotArea(worldName)) {
return; return;
} }
Location loc = BukkitUtil.getLocation(block.getLocation()); Location loc = BukkitUtil.getLocation(block.getLocation());
@ -1382,7 +1382,7 @@ public class PlayerEvents extends PlotListener implements Listener {
case LIGHTNING: case LIGHTNING:
case WITHER_SKULL: case WITHER_SKULL:
case UNKNOWN: case UNKNOWN:
// non moving / unremovable // non moving / unmovable
return checkEntity(plot, "entity-cap"); return checkEntity(plot, "entity-cap");
case ITEM_FRAME: case ITEM_FRAME:
case PAINTING: case PAINTING:
@ -1540,17 +1540,17 @@ public class PlayerEvents extends PlotListener implements Listener {
} }
} else if (event.getIgnitingBlock() != null) { } else if (event.getIgnitingBlock() != null) {
Block igniter = event.getIgnitingBlock(); Block ignitingBlock = event.getIgnitingBlock();
if (igniteCause == BlockIgniteEvent.IgniteCause.FLINT_AND_STEEL) { if (igniteCause == BlockIgniteEvent.IgniteCause.FLINT_AND_STEEL) {
if (plot == null || !FlagManager.isPlotFlagTrue(plot, "block-ignition")) { if (plot == null || !FlagManager.isPlotFlagTrue(plot, "block-ignition")) {
event.setCancelled(true); event.setCancelled(true);
return; return;
} }
if (BukkitUtil.getLocation(igniter.getLocation()).getPlot() == null) { if (BukkitUtil.getLocation(ignitingBlock.getLocation()).getPlot() == null) {
event.setCancelled(true); event.setCancelled(true);
return; return;
} }
if (!BukkitUtil.getLocation(igniter.getLocation()).getPlot().equals(plot)) { if (!BukkitUtil.getLocation(ignitingBlock.getLocation()).getPlot().equals(plot)) {
event.setCancelled(true); event.setCancelled(true);
return; return;
} }
@ -1560,11 +1560,11 @@ public class PlayerEvents extends PlotListener implements Listener {
event.setCancelled(true); event.setCancelled(true);
return; return;
} }
if (BukkitUtil.getLocation(igniter.getLocation()).getPlot() == null) { if (BukkitUtil.getLocation(ignitingBlock.getLocation()).getPlot() == null) {
event.setCancelled(true); event.setCancelled(true);
return; return;
} }
if (!BukkitUtil.getLocation(igniter.getLocation()).getPlot().equals(plot)) { if (!BukkitUtil.getLocation(ignitingBlock.getLocation()).getPlot().equals(plot)) {
event.setCancelled(true); event.setCancelled(true);
return; return;
} }

View File

@ -25,11 +25,11 @@ public class PlayerEvents183 implements Listener {
} }
PlotArea area = loc.getPlotArea(); PlotArea area = loc.getPlotArea();
if (area == null) { if (area == null) {
Iterator<Block> iter = event.blockList().iterator(); Iterator<Block> iterator = event.blockList().iterator();
while (iter.hasNext()) { while (iterator.hasNext()) {
loc = BukkitUtil.getLocation(iter.next().getLocation()); loc = BukkitUtil.getLocation(iterator.next().getLocation());
if (loc.getPlotArea() != null) { if (loc.getPlotArea() != null) {
iter.remove(); iterator.remove();
} }
} }
return; return;
@ -38,11 +38,11 @@ public class PlayerEvents183 implements Listener {
if (plot == null || !FlagManager.isPlotFlagTrue(plot, "explosion")) { if (plot == null || !FlagManager.isPlotFlagTrue(plot, "explosion")) {
event.setCancelled(true); event.setCancelled(true);
} }
Iterator<Block> iter = event.blockList().iterator(); Iterator<Block> iterator = event.blockList().iterator();
while (iter.hasNext()) { while (iterator.hasNext()) {
Block b = iter.next(); Block b = iterator.next();
if (!plot.equals(area.getOwnedPlot(BukkitUtil.getLocation(b.getLocation())))) { if (!plot.equals(area.getOwnedPlot(BukkitUtil.getLocation(b.getLocation())))) {
iter.remove(); iterator.remove();
} }
} }
} }

View File

@ -8,10 +8,6 @@ import com.plotsquared.bukkit.events.PlayerEnterPlotEvent;
import com.plotsquared.bukkit.events.PlayerLeavePlotEvent; import com.plotsquared.bukkit.events.PlayerLeavePlotEvent;
import com.plotsquared.bukkit.util.BukkitUtil; import com.plotsquared.bukkit.util.BukkitUtil;
import com.plotsquared.listener.PlotListener; import com.plotsquared.listener.PlotListener;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map.Entry;
import java.util.UUID;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.GameMode; import org.bukkit.GameMode;
import org.bukkit.entity.EntityType; import org.bukkit.entity.EntityType;
@ -26,6 +22,11 @@ import org.bukkit.event.player.PlayerPickupItemEvent;
import org.bukkit.event.player.PlayerQuitEvent; import org.bukkit.event.player.PlayerQuitEvent;
import org.bukkit.plugin.java.JavaPlugin; import org.bukkit.plugin.java.JavaPlugin;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map.Entry;
import java.util.UUID;
public class PlotPlusListener extends PlotListener implements Listener { public class PlotPlusListener extends PlotListener implements Listener {
private static final HashMap<String, Interval> feedRunnable = new HashMap<>(); private static final HashMap<String, Interval> feedRunnable = new HashMap<>();
@ -36,15 +37,15 @@ public class PlotPlusListener extends PlotListener implements Listener {
@Override @Override
public void run() { public void run() {
if (!healRunnable.isEmpty()) { if (!healRunnable.isEmpty()) {
for (Iterator<Entry<String, Interval>> iter = healRunnable.entrySet().iterator(); iter.hasNext(); ) { for (Iterator<Entry<String, Interval>> iterator = healRunnable.entrySet().iterator(); iterator.hasNext(); ) {
Entry<String, Interval> entry = iter.next(); Entry<String, Interval> entry = iterator.next();
Interval value = entry.getValue(); Interval value = entry.getValue();
++value.count; ++value.count;
if (value.count == value.interval) { if (value.count == value.interval) {
value.count = 0; value.count = 0;
Player player = Bukkit.getPlayer(entry.getKey()); Player player = Bukkit.getPlayer(entry.getKey());
if (player == null) { if (player == null) {
iter.remove(); iterator.remove();
continue; continue;
} }
double level = player.getHealth(); double level = player.getHealth();
@ -55,15 +56,15 @@ public class PlotPlusListener extends PlotListener implements Listener {
} }
} }
if (!feedRunnable.isEmpty()) { if (!feedRunnable.isEmpty()) {
for (Iterator<Entry<String, Interval>> iter = feedRunnable.entrySet().iterator(); iter.hasNext(); ) { for (Iterator<Entry<String, Interval>> iterator = feedRunnable.entrySet().iterator(); iterator.hasNext(); ) {
Entry<String, Interval> entry = iter.next(); Entry<String, Interval> entry = iterator.next();
Interval value = entry.getValue(); Interval value = entry.getValue();
++value.count; ++value.count;
if (value.count == value.interval) { if (value.count == value.interval) {
value.count = 0; value.count = 0;
Player player = Bukkit.getPlayer(entry.getKey()); Player player = Bukkit.getPlayer(entry.getKey());
if (player == null) { if (player == null) {
iter.remove(); iterator.remove();
continue; continue;
} }
int level = player.getFoodLevel(); int level = player.getFoodLevel();

View File

@ -56,7 +56,7 @@ public class EntityWrapper {
private ArmorStandStats stand; private ArmorStandStats stand;
@SuppressWarnings("deprecation") @SuppressWarnings("deprecation")
public EntityWrapper(org.bukkit.entity.Entity entity, short depth) { public EntityWrapper(Entity entity, short depth) {
this.hash = entity.getEntityId(); this.hash = entity.getEntityId();
this.depth = depth; this.depth = depth;
Location loc = entity.getLocation(); Location loc = entity.getLocation();
@ -113,21 +113,24 @@ public class EntityWrapper {
case THROWN_EXP_BOTTLE: case THROWN_EXP_BOTTLE:
case WEATHER: case WEATHER:
case WITHER_SKULL: case WITHER_SKULL:
case UNKNOWN: { case UNKNOWN:
case TIPPED_ARROW:
case SPECTRAL_ARROW:
case SHULKER_BULLET:
case DRAGON_FIREBALL:
case LINGERING_POTION:
case AREA_EFFECT_CLOUD:
// Do this stuff later // Do this stuff later
return; return;
} default:
default: {
PS.debug("&cCOULD NOT IDENTIFY ENTITY: " + entity.getType()); PS.debug("&cCOULD NOT IDENTIFY ENTITY: " + entity.getType());
return; return;
}
// MISC // // MISC //
case DROPPED_ITEM: { case DROPPED_ITEM:
Item item = (Item) entity; Item item = (Item) entity;
this.stack = item.getItemStack(); this.stack = item.getItemStack();
return; return;
} case ITEM_FRAME:
case ITEM_FRAME: {
ItemFrame itemframe = (ItemFrame) entity; ItemFrame itemframe = (ItemFrame) entity;
this.x = Math.floor(this.x); this.x = Math.floor(this.x);
this.y = Math.floor(this.y); this.y = Math.floor(this.y);
@ -135,8 +138,7 @@ public class EntityWrapper {
this.dataByte = getOrdinal(Rotation.values(), itemframe.getRotation()); this.dataByte = getOrdinal(Rotation.values(), itemframe.getRotation());
this.stack = itemframe.getItem().clone(); this.stack = itemframe.getItem().clone();
return; return;
} case PAINTING:
case PAINTING: {
Painting painting = (Painting) entity; Painting painting = (Painting) entity;
this.x = Math.floor(this.x); this.x = Math.floor(this.x);
this.y = Math.floor(this.y); this.y = Math.floor(this.y);
@ -144,23 +146,21 @@ public class EntityWrapper {
Art a = painting.getArt(); Art a = painting.getArt();
this.dataByte = getOrdinal(BlockFace.values(), painting.getFacing()); this.dataByte = getOrdinal(BlockFace.values(), painting.getFacing());
int h = a.getBlockHeight(); int h = a.getBlockHeight();
if ((h % 2) == 0) { if (h % 2 == 0) {
this.y -= 1; this.y -= 1;
} }
this.dataString = a.name(); this.dataString = a.name();
return; return;
}
// END MISC // // END MISC //
// INVENTORY HOLDER // // INVENTORY HOLDER //
case MINECART_CHEST: case MINECART_CHEST:
case MINECART_HOPPER: { case MINECART_HOPPER:
storeInventory((InventoryHolder) entity); storeInventory((InventoryHolder) entity);
return; return;
}
// START LIVING ENTITY // // START LIVING ENTITY //
// START AGEABLE // // START AGEABLE //
// START TAMEABLE // // START TAMEABLE //
case HORSE: { case HORSE:
Horse horse = (Horse) entity; Horse horse = (Horse) entity;
this.horse = new HorseStats(); this.horse = new HorseStats();
this.horse.jump = horse.getJumpStrength(); this.horse.jump = horse.getJumpStrength();
@ -173,52 +173,45 @@ public class EntityWrapper {
storeLiving((LivingEntity) entity); storeLiving((LivingEntity) entity);
storeInventory((InventoryHolder) entity); storeInventory((InventoryHolder) entity);
return; return;
}
// END INVENTORY HOLDER // // END INVENTORY HOLDER //
case WOLF: case WOLF:
case OCELOT: { case OCELOT:
storeTameable((Tameable) entity); storeTameable((Tameable) entity);
storeAgeable((Ageable) entity); storeAgeable((Ageable) entity);
storeLiving((LivingEntity) entity); storeLiving((LivingEntity) entity);
return; return;
} // END TAMEABLE //
// END AMEABLE // case SHEEP:
case SHEEP: {
Sheep sheep = (Sheep) entity; Sheep sheep = (Sheep) entity;
this.dataByte = (byte) (sheep.isSheared() ? 1 : 0); this.dataByte = (byte) (sheep.isSheared() ? 1 : 0);
this.dataByte2 = sheep.getColor().getDyeData(); this.dataByte2 = sheep.getColor().getDyeData();
storeAgeable((Ageable) entity); storeAgeable((Ageable) entity);
storeLiving((LivingEntity) entity); storeLiving((LivingEntity) entity);
return; return;
}
case VILLAGER: case VILLAGER:
case CHICKEN: case CHICKEN:
case COW: case COW:
case MUSHROOM_COW: case MUSHROOM_COW:
case PIG: { case PIG:
storeAgeable((Ageable) entity); storeAgeable((Ageable) entity);
storeLiving((LivingEntity) entity); storeLiving((LivingEntity) entity);
return; return;
} case RABBIT: // NEW
// END AGEABLE //
case RABBIT: { // NEW
this.dataByte = getOrdinal(Type.values(), ((Rabbit) entity).getRabbitType()); this.dataByte = getOrdinal(Type.values(), ((Rabbit) entity).getRabbitType());
storeAgeable((Ageable) entity); storeAgeable((Ageable) entity);
storeLiving((LivingEntity) entity); storeLiving((LivingEntity) entity);
return; return;
} // END AGEABLE //
case GUARDIAN: { // NEW case GUARDIAN: // NEW
this.dataByte = (byte) (((Guardian) entity).isElder() ? 1 : 0); this.dataByte = (byte) (((Guardian) entity).isElder() ? 1 : 0);
storeLiving((LivingEntity) entity); storeLiving((LivingEntity) entity);
return; return;
} case SKELETON: // NEW
case SKELETON: { // NEW
this.dataByte = (byte) ((Skeleton) entity).getSkeletonType().getId(); this.dataByte = (byte) ((Skeleton) entity).getSkeletonType().getId();
storeLiving((LivingEntity) entity); storeLiving((LivingEntity) entity);
return; return;
} case ARMOR_STAND: // NEW
case ARMOR_STAND: { // NEW // CHECK positions
// CHECK positions
ArmorStand stand = (ArmorStand) entity; ArmorStand stand = (ArmorStand) entity;
this.inventory = new ItemStack[]{stand.getItemInHand().clone(), stand.getHelmet().clone(), stand.getChestplate().clone(), this.inventory = new ItemStack[]{stand.getItemInHand().clone(), stand.getHelmet().clone(), stand.getChestplate().clone(),
stand.getLeggings().clone(), stand.getBoots().clone()}; stand.getLeggings().clone(), stand.getBoots().clone()};
@ -271,7 +264,6 @@ public class EntityWrapper {
this.stand.small = true; this.stand.small = true;
} }
return; return;
}
case ENDERMITE: // NEW case ENDERMITE: // NEW
case BAT: case BAT:
case ENDER_DRAGON: case ENDER_DRAGON:
@ -289,12 +281,11 @@ public class EntityWrapper {
case ENDERMAN: case ENDERMAN:
case CREEPER: case CREEPER:
case BLAZE: case BLAZE:
case SHULKER:
case SNOWMAN: case SNOWMAN:
case IRON_GOLEM: { case IRON_GOLEM:
storeLiving((LivingEntity) entity); storeLiving((LivingEntity) entity);
return; // END LIVING //
}
// END LIVING //
} }
} }
@ -318,7 +309,7 @@ public class EntityWrapper {
entity.setCustomName(this.lived.name); entity.setCustomName(this.lived.name);
entity.setCustomNameVisible(this.lived.visible); entity.setCustomNameVisible(this.lived.visible);
} }
if ((this.lived.potions != null) && !this.lived.potions.isEmpty()) { if (this.lived.potions != null && !this.lived.potions.isEmpty()) {
entity.addPotionEffects(this.lived.potions); entity.addPotionEffects(this.lived.potions);
} }
entity.setRemainingAir(this.lived.air); entity.setRemainingAir(this.lived.air);
@ -413,21 +404,17 @@ public class EntityWrapper {
} }
Entity entity; Entity entity;
switch (this.type) { switch (this.type) {
case DROPPED_ITEM: { case DROPPED_ITEM:
return world.dropItem(loc, this.stack); return world.dropItem(loc, this.stack);
}
case PLAYER: case PLAYER:
case LEASH_HITCH: { case LEASH_HITCH:
return null; return null;
} case ITEM_FRAME:
case ITEM_FRAME: {
entity = world.spawn(loc, ItemFrame.class); entity = world.spawn(loc, ItemFrame.class);
break; break;
} case PAINTING:
case PAINTING: {
entity = world.spawn(loc, Painting.class); entity = world.spawn(loc, Painting.class);
break; break;
}
default: default:
entity = world.spawnEntity(loc, this.type); entity = world.spawnEntity(loc, this.type);
break; break;
@ -483,38 +470,33 @@ public class EntityWrapper {
case WEATHER: case WEATHER:
case WITHER_SKULL: case WITHER_SKULL:
case MINECART_FURNACE: case MINECART_FURNACE:
case UNKNOWN: { case UNKNOWN:
// Do this stuff later // Do this stuff later
return entity; return entity;
} default:
default: {
PS.debug("&cCOULD NOT IDENTIFY ENTITY: " + entity.getType()); PS.debug("&cCOULD NOT IDENTIFY ENTITY: " + entity.getType());
return entity; return entity;
}
// MISC // // MISC //
case ITEM_FRAME: { case ITEM_FRAME:
ItemFrame itemframe = (ItemFrame) entity; ItemFrame itemframe = (ItemFrame) entity;
itemframe.setRotation(Rotation.values()[this.dataByte]); itemframe.setRotation(Rotation.values()[this.dataByte]);
itemframe.setItem(this.stack); itemframe.setItem(this.stack);
return entity; return entity;
} case PAINTING:
case PAINTING: {
Painting painting = (Painting) entity; Painting painting = (Painting) entity;
painting.setFacingDirection(BlockFace.values()[this.dataByte], true); painting.setFacingDirection(BlockFace.values()[this.dataByte], true);
painting.setArt(Art.getByName(this.dataString), true); painting.setArt(Art.getByName(this.dataString), true);
return entity; return entity;
}
// END MISC // // END MISC //
// INVENTORY HOLDER // // INVENTORY HOLDER //
case MINECART_CHEST: case MINECART_CHEST:
case MINECART_HOPPER: { case MINECART_HOPPER:
restoreInventory((InventoryHolder) entity); restoreInventory((InventoryHolder) entity);
return entity; return entity;
}
// START LIVING ENTITY // // START LIVING ENTITY //
// START AGEABLE // // START AGEABLE //
// START TAMEABLE // // START TAMEABLE //
case HORSE: { case HORSE:
Horse horse = (Horse) entity; Horse horse = (Horse) entity;
horse.setJumpStrength(this.horse.jump); horse.setJumpStrength(this.horse.jump);
horse.setCarryingChest(this.horse.chest); horse.setCarryingChest(this.horse.chest);
@ -526,17 +508,15 @@ public class EntityWrapper {
restoreLiving((LivingEntity) entity); restoreLiving((LivingEntity) entity);
restoreInventory((InventoryHolder) entity); restoreInventory((InventoryHolder) entity);
return entity; return entity;
}
// END INVENTORY HOLDER // // END INVENTORY HOLDER //
case WOLF: case WOLF:
case OCELOT: { case OCELOT:
restoreTameable((Tameable) entity); restoreTameable((Tameable) entity);
restoreAgeable((Ageable) entity); restoreAgeable((Ageable) entity);
restoreLiving((LivingEntity) entity); restoreLiving((LivingEntity) entity);
return entity; return entity;
}
// END AGEABLE // // END AGEABLE //
case SHEEP: { case SHEEP:
Sheep sheep = (Sheep) entity; Sheep sheep = (Sheep) entity;
if (this.dataByte == 1) { if (this.dataByte == 1) {
sheep.setSheared(true); sheep.setSheared(true);
@ -547,41 +527,36 @@ public class EntityWrapper {
restoreAgeable((Ageable) entity); restoreAgeable((Ageable) entity);
restoreLiving((LivingEntity) entity); restoreLiving((LivingEntity) entity);
return entity; return entity;
}
case VILLAGER: case VILLAGER:
case CHICKEN: case CHICKEN:
case COW: case COW:
case MUSHROOM_COW: case MUSHROOM_COW:
case PIG: { case PIG:
restoreAgeable((Ageable) entity); restoreAgeable((Ageable) entity);
restoreLiving((LivingEntity) entity); restoreLiving((LivingEntity) entity);
return entity; return entity;
}
// END AGEABLE // // END AGEABLE //
case RABBIT: { // NEW case RABBIT: // NEW
if (this.dataByte != 0) { if (this.dataByte != 0) {
((Rabbit) entity).setRabbitType(Type.values()[this.dataByte]); ((Rabbit) entity).setRabbitType(Type.values()[this.dataByte]);
} }
restoreAgeable((Ageable) entity); restoreAgeable((Ageable) entity);
restoreLiving((LivingEntity) entity); restoreLiving((LivingEntity) entity);
return entity; return entity;
} case GUARDIAN: // NEW
case GUARDIAN: { // NEW
if (this.dataByte != 0) { if (this.dataByte != 0) {
((Guardian) entity).setElder(true); ((Guardian) entity).setElder(true);
} }
restoreLiving((LivingEntity) entity); restoreLiving((LivingEntity) entity);
return entity; return entity;
} case SKELETON: // NEW
case SKELETON: { // NEW
if (this.dataByte != 0) { if (this.dataByte != 0) {
((Skeleton) entity).setSkeletonType(SkeletonType.values()[this.dataByte]); ((Skeleton) entity).setSkeletonType(SkeletonType.values()[this.dataByte]);
} }
storeLiving((LivingEntity) entity); storeLiving((LivingEntity) entity);
return entity; return entity;
} case ARMOR_STAND: // NEW
case ARMOR_STAND: { // NEW // CHECK positions
// CHECK positions
ArmorStand stand = (ArmorStand) entity; ArmorStand stand = (ArmorStand) entity;
if (this.inventory[0] != null) { if (this.inventory[0] != null) {
stand.setItemInHand(this.inventory[0]); stand.setItemInHand(this.inventory[0]);
@ -598,27 +573,27 @@ public class EntityWrapper {
if (this.inventory[4] != null) { if (this.inventory[4] != null) {
stand.setBoots(this.inventory[4]); stand.setBoots(this.inventory[4]);
} }
if ((this.stand.head[0] != 0) || (this.stand.head[1] != 0) || (this.stand.head[2] != 0)) { if (this.stand.head[0] != 0 || this.stand.head[1] != 0 || this.stand.head[2] != 0) {
EulerAngle pose = new EulerAngle(this.stand.head[0], this.stand.head[1], this.stand.head[2]); EulerAngle pose = new EulerAngle(this.stand.head[0], this.stand.head[1], this.stand.head[2]);
stand.setHeadPose(pose); stand.setHeadPose(pose);
} }
if ((this.stand.body[0] != 0) || (this.stand.body[1] != 0) || (this.stand.body[2] != 0)) { if (this.stand.body[0] != 0 || this.stand.body[1] != 0 || this.stand.body[2] != 0) {
EulerAngle pose = new EulerAngle(this.stand.body[0], this.stand.body[1], this.stand.body[2]); EulerAngle pose = new EulerAngle(this.stand.body[0], this.stand.body[1], this.stand.body[2]);
stand.setBodyPose(pose); stand.setBodyPose(pose);
} }
if ((this.stand.leftLeg[0] != 0) || (this.stand.leftLeg[1] != 0) || (this.stand.leftLeg[2] != 0)) { if (this.stand.leftLeg[0] != 0 || this.stand.leftLeg[1] != 0 || this.stand.leftLeg[2] != 0) {
EulerAngle pose = new EulerAngle(this.stand.leftLeg[0], this.stand.leftLeg[1], this.stand.leftLeg[2]); EulerAngle pose = new EulerAngle(this.stand.leftLeg[0], this.stand.leftLeg[1], this.stand.leftLeg[2]);
stand.setLeftLegPose(pose); stand.setLeftLegPose(pose);
} }
if ((this.stand.rightLeg[0] != 0) || (this.stand.rightLeg[1] != 0) || (this.stand.rightLeg[2] != 0)) { if (this.stand.rightLeg[0] != 0 || this.stand.rightLeg[1] != 0 || this.stand.rightLeg[2] != 0) {
EulerAngle pose = new EulerAngle(this.stand.rightLeg[0], this.stand.rightLeg[1], this.stand.rightLeg[2]); EulerAngle pose = new EulerAngle(this.stand.rightLeg[0], this.stand.rightLeg[1], this.stand.rightLeg[2]);
stand.setRightLegPose(pose); stand.setRightLegPose(pose);
} }
if ((this.stand.leftArm[0] != 0) || (this.stand.leftArm[1] != 0) || (this.stand.leftArm[2] != 0)) { if (this.stand.leftArm[0] != 0 || this.stand.leftArm[1] != 0 || this.stand.leftArm[2] != 0) {
EulerAngle pose = new EulerAngle(this.stand.leftArm[0], this.stand.leftArm[1], this.stand.leftArm[2]); EulerAngle pose = new EulerAngle(this.stand.leftArm[0], this.stand.leftArm[1], this.stand.leftArm[2]);
stand.setLeftArmPose(pose); stand.setLeftArmPose(pose);
} }
if ((this.stand.rightArm[0] != 0) || (this.stand.rightArm[1] != 0) || (this.stand.rightArm[2] != 0)) { if (this.stand.rightArm[0] != 0 || this.stand.rightArm[1] != 0 || this.stand.rightArm[2] != 0) {
EulerAngle pose = new EulerAngle(this.stand.rightArm[0], this.stand.rightArm[1], this.stand.rightArm[2]); EulerAngle pose = new EulerAngle(this.stand.rightArm[0], this.stand.rightArm[1], this.stand.rightArm[2]);
stand.setRightArmPose(pose); stand.setRightArmPose(pose);
} }
@ -639,7 +614,6 @@ public class EntityWrapper {
} }
restoreLiving((LivingEntity) entity); restoreLiving((LivingEntity) entity);
return entity; return entity;
}
case ENDERMITE: // NEW case ENDERMITE: // NEW
case BAT: case BAT:
case ENDER_DRAGON: case ENDER_DRAGON:
@ -658,10 +632,9 @@ public class EntityWrapper {
case CREEPER: case CREEPER:
case BLAZE: case BLAZE:
case SNOWMAN: case SNOWMAN:
case IRON_GOLEM: { case IRON_GOLEM:
restoreLiving((LivingEntity) entity); restoreLiving((LivingEntity) entity);
return entity; return entity;
}
// END LIVING // // END LIVING //
} }
} }

View File

@ -275,9 +275,9 @@ public class BukkitHybridUtils extends HybridUtils {
} }
@Override @Override
public int checkModified(String worldname, int x1, int x2, int y1, int y2, int z1, int z2, public int checkModified(String worldName, int x1, int x2, int y1, int y2, int z1, int z2,
PlotBlock[] blocks) { PlotBlock[] blocks) {
World world = BukkitUtil.getWorld(worldname); World world = BukkitUtil.getWorld(worldName);
int count = 0; int count = 0;
for (int y = y1; y <= y2; y++) { for (int y = y1; y <= y2; y++) {
for (int x = x1; x <= x2; x++) { for (int x = x1; x <= x2; x++) {
@ -301,8 +301,8 @@ public class BukkitHybridUtils extends HybridUtils {
} }
@Override @Override
public int get_ey(String worldname, int sx, int ex, int sz, int ez, int sy) { public int get_ey(String worldName, int sx, int ex, int sz, int ez, int sy) {
World world = BukkitUtil.getWorld(worldname); World world = BukkitUtil.getWorld(worldName);
int maxY = world.getMaxHeight(); int maxY = world.getMaxHeight();
int ey = sy; int ey = sy;
for (int x = sx; x <= ex; x++) { for (int x = sx; x <= ex; x++) {

View File

@ -26,7 +26,6 @@ import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Map.Entry;
import java.util.Set; import java.util.Set;
/** /**
@ -45,9 +44,9 @@ public class BukkitSchematicHandler extends SchematicHandler {
final Location bot = corners[0]; final Location bot = corners[0];
Location top = corners[1]; Location top = corners[1];
final int width = (top.getX() - bot.getX()) + 1; final int width = top.getX() - bot.getX() + 1;
int height = (top.getY() - bot.getY()) + 1; int height = top.getY() - bot.getY() + 1;
final int length = (top.getZ() - bot.getZ()) + 1; final int length = top.getZ() - bot.getZ() + 1;
// Main Schematic tag // Main Schematic tag
final HashMap<String, Tag> schematic = new HashMap<>(); final HashMap<String, Tag> schematic = new HashMap<>();
schematic.put("Width", new ShortTag("Width", (short) width)); schematic.put("Width", new ShortTag("Width", (short) width));
@ -114,7 +113,7 @@ public class BukkitSchematicHandler extends SchematicHandler {
@Override @Override
public void run() { public void run() {
long start = System.currentTimeMillis(); long start = System.currentTimeMillis();
while (!chunks.isEmpty() && ((System.currentTimeMillis() - start) < 20)) { while (!chunks.isEmpty() && System.currentTimeMillis() - start < 20) {
// save schematics // save schematics
ChunkLoc chunk = chunks.remove(0); ChunkLoc chunk = chunks.remove(0);
Chunk bc = worldObj.getChunkAt(chunk.x, chunk.z); Chunk bc = worldObj.getChunkAt(chunk.x, chunk.z);
@ -145,7 +144,7 @@ public class BukkitSchematicHandler extends SchematicHandler {
int i1 = ry * width * length; int i1 = ry * width * length;
for (int z = zzb; z <= zzt; z++) { for (int z = zzb; z <= zzt; z++) {
int rz = z - bz; int rz = z - bz;
int i2 = i1 + (rz * width); int i2 = i1 + rz * width;
for (int x = xxb; x <= xxt; x++) { for (int x = xxb; x <= xxt; x++) {
int rx = x - bx; int rx = x - bx;
int index = i2 + rx; int index = i2 + rx;
@ -219,9 +218,8 @@ public class BukkitSchematicHandler extends SchematicHandler {
case 189: case 189:
case 190: case 190:
case 191: case 191:
case 192: { case 192:
break; break;
}
case 54: case 54:
case 130: case 130:
case 142: case 142:
@ -256,17 +254,14 @@ public class BukkitSchematicHandler extends SchematicHandler {
case 29: case 29:
case 33: case 33:
case 151: case 151:
case 178: { case 178:
// TODO implement fully // TODO implement fully
BlockState state = block.getState(); BlockState state = block.getState();
if (state != null) { if (state != null) {
StateWrapper wrapper = new StateWrapper(state); StateWrapper wrapper = new StateWrapper(state);
CompoundTag rawTag = wrapper.getTag(); CompoundTag rawTag = wrapper.getTag();
if (rawTag != null) { if (rawTag != null) {
Map<String, Tag> values = new HashMap<>(); Map<String, Tag> values = new HashMap<>(rawTag.getValue());
for (Entry<String, Tag> entry : rawTag.getValue().entrySet()) {
values.put(entry.getKey(), entry.getValue());
}
values.put("id", new StringTag("id", wrapper.getId())); values.put("id", new StringTag("id", wrapper.getId()));
values.put("x", new IntTag("x", x)); values.put("x", new IntTag("x", x));
values.put("y", new IntTag("y", y)); values.put("y", new IntTag("y", y));
@ -275,10 +270,8 @@ public class BukkitSchematicHandler extends SchematicHandler {
tileEntities.add(tileEntityTag); tileEntities.add(tileEntityTag);
} }
} }
} default:
default: {
blockData[index] = block.getData(); blockData[index] = block.getData();
}
} }
// For optimization reasons, we are not supporting custom data types // For optimization reasons, we are not supporting custom data types
// Especially since the most likely reason beyond this range is modded servers in which the blocks // Especially since the most likely reason beyond this range is modded servers in which the blocks
@ -310,7 +303,7 @@ public class BukkitSchematicHandler extends SchematicHandler {
} }
@Override @Override
public void restoreTag(CompoundTag ct, short x, short y, short z, Schematic schem) { public void restoreTag(CompoundTag ct, short x, short y, short z, Schematic schematic) {
new StateWrapper(ct).restoreTag(x, y, z, schem); new StateWrapper(ct).restoreTag(x, y, z, schematic);
} }
} }

View File

@ -62,8 +62,8 @@ public class BukkitSetupUtils extends SetupUtils {
switch (type) { switch (type) {
case 2: { case 2: {
if (object.id != null) { if (object.id != null) {
String areaname = object.id + "-" + object.min + "-" + object.max; String areaName = object.id + "-" + object.min + "-" + object.max;
String areaPath = "areas." + areaname; String areaPath = "areas." + areaName;
if (!worldSection.contains(areaPath)) { if (!worldSection.contains(areaPath)) {
worldSection.createSection(areaPath); worldSection.createSection(areaPath);
} }
@ -75,7 +75,7 @@ public class BukkitSetupUtils extends SetupUtils {
options.put("generator.type", object.type); options.put("generator.type", object.type);
options.put("generator.terrain", object.terrain); options.put("generator.terrain", object.terrain);
options.put("generator.plugin", object.plotManager); options.put("generator.plugin", object.plotManager);
if ((object.setupGenerator != null) && !object.setupGenerator.equals(object.plotManager)) { if (object.setupGenerator != null && !object.setupGenerator.equals(object.plotManager)) {
options.put("generator.init", object.setupGenerator); options.put("generator.init", object.setupGenerator);
} }
for (Entry<String, Object> entry : options.entrySet()) { for (Entry<String, Object> entry : options.entrySet()) {
@ -91,34 +91,32 @@ public class BukkitSetupUtils extends SetupUtils {
} }
} }
} }
GeneratorWrapper<?> gen = generators.get(object.setupGenerator); GeneratorWrapper<?> gen = SetupUtils.generators.get(object.setupGenerator);
if ((gen != null) && gen.isFull()) { if (gen != null && gen.isFull()) {
object.setupGenerator = null; object.setupGenerator = null;
} }
break; break;
} }
case 1: { case 1:
for (ConfigurationNode step : steps) { for (ConfigurationNode step : steps) {
worldSection.set(step.getConstant(), step.getValue()); worldSection.set(step.getConstant(), step.getValue());
} }
PS.get().config.set("worlds." + world + "." + "generator.type", object.type); PS.get().config.set("worlds." + world + "." + "generator.type", object.type);
PS.get().config.set("worlds." + world + "." + "generator.terrain", object.terrain); PS.get().config.set("worlds." + world + "." + "generator.terrain", object.terrain);
PS.get().config.set("worlds." + world + "." + "generator.plugin", object.plotManager); PS.get().config.set("worlds." + world + "." + "generator.plugin", object.plotManager);
if ((object.setupGenerator != null) && !object.setupGenerator.equals(object.plotManager)) { if (object.setupGenerator != null && !object.setupGenerator.equals(object.plotManager)) {
PS.get().config.set("worlds." + world + "." + "generator.init", object.setupGenerator); PS.get().config.set("worlds." + world + "." + "generator.init", object.setupGenerator);
} }
GeneratorWrapper<?> gen = generators.get(object.setupGenerator); GeneratorWrapper<?> gen = SetupUtils.generators.get(object.setupGenerator);
if ((gen != null) && gen.isFull()) { if (gen != null && gen.isFull()) {
object.setupGenerator = null; object.setupGenerator = null;
} }
break; break;
} case 0:
case 0: {
for (ConfigurationNode step : steps) { for (ConfigurationNode step : steps) {
worldSection.set(step.getConstant(), step.getValue()); worldSection.set(step.getConstant(), step.getValue());
} }
break; break;
}
} }
try { try {
PS.get().config.save(PS.get().configFile); PS.get().config.save(PS.get().configFile);
@ -126,7 +124,7 @@ public class BukkitSetupUtils extends SetupUtils {
e.printStackTrace(); e.printStackTrace();
} }
if (object.setupGenerator != null) { if (object.setupGenerator != null) {
if ((Bukkit.getPluginManager().getPlugin("Multiverse-Core") != null) && Bukkit.getPluginManager().getPlugin("Multiverse-Core") if (Bukkit.getPluginManager().getPlugin("Multiverse-Core") != null && Bukkit.getPluginManager().getPlugin("Multiverse-Core")
.isEnabled()) { .isEnabled()) {
Bukkit.getServer() Bukkit.getServer()
.dispatchCommand(Bukkit.getServer().getConsoleSender(), "mv create " + world + " normal -g " + object.setupGenerator); .dispatchCommand(Bukkit.getServer().getConsoleSender(), "mv create " + world + " normal -g " + object.setupGenerator);
@ -135,7 +133,7 @@ public class BukkitSetupUtils extends SetupUtils {
return world; return world;
} }
} }
if ((Bukkit.getPluginManager().getPlugin("MultiWorld") != null) && Bukkit.getPluginManager().getPlugin("MultiWorld").isEnabled()) { if (Bukkit.getPluginManager().getPlugin("MultiWorld") != null && Bukkit.getPluginManager().getPlugin("MultiWorld").isEnabled()) {
Bukkit.getServer().dispatchCommand(Bukkit.getServer().getConsoleSender(), "mw create " + world + " plugin:" + object.setupGenerator); Bukkit.getServer().dispatchCommand(Bukkit.getServer().getConsoleSender(), "mw create " + world + " plugin:" + object.setupGenerator);
setGenerator(world, object.setupGenerator); setGenerator(world, object.setupGenerator);
if (Bukkit.getWorld(world) != null) { if (Bukkit.getWorld(world) != null) {
@ -148,14 +146,14 @@ public class BukkitSetupUtils extends SetupUtils {
Bukkit.createWorld(wc); Bukkit.createWorld(wc);
setGenerator(world, object.setupGenerator); setGenerator(world, object.setupGenerator);
} else { } else {
if ((Bukkit.getPluginManager().getPlugin("Multiverse-Core") != null) && Bukkit.getPluginManager().getPlugin("Multiverse-Core") if (Bukkit.getPluginManager().getPlugin("Multiverse-Core") != null && Bukkit.getPluginManager().getPlugin("Multiverse-Core")
.isEnabled()) { .isEnabled()) {
Bukkit.getServer().dispatchCommand(Bukkit.getServer().getConsoleSender(), "mv create " + world + " normal"); Bukkit.getServer().dispatchCommand(Bukkit.getServer().getConsoleSender(), "mv create " + world + " normal");
if (Bukkit.getWorld(world) != null) { if (Bukkit.getWorld(world) != null) {
return world; return world;
} }
} }
if ((Bukkit.getPluginManager().getPlugin("MultiWorld") != null) && Bukkit.getPluginManager().getPlugin("MultiWorld").isEnabled()) { if (Bukkit.getPluginManager().getPlugin("MultiWorld") != null && Bukkit.getPluginManager().getPlugin("MultiWorld").isEnabled()) {
Bukkit.getServer().dispatchCommand(Bukkit.getServer().getConsoleSender(), "mw create " + world); Bukkit.getServer().dispatchCommand(Bukkit.getServer().getConsoleSender(), "mw create " + world);
if (Bukkit.getWorld(world) != null) { if (Bukkit.getWorld(world) != null) {
return world; return world;
@ -193,7 +191,7 @@ public class BukkitSetupUtils extends SetupUtils {
if (!(generator instanceof BukkitPlotGenerator)) { if (!(generator instanceof BukkitPlotGenerator)) {
return null; return null;
} }
for (Entry<String, GeneratorWrapper<?>> entry : generators.entrySet()) { for (Entry<String, GeneratorWrapper<?>> entry : SetupUtils.generators.entrySet()) {
GeneratorWrapper<?> current = entry.getValue(); GeneratorWrapper<?> current = entry.getValue();
if (current.equals(generator)) { if (current.equals(generator)) {
return entry.getKey(); return entry.getKey();

View File

@ -97,8 +97,8 @@ public class BukkitUtil extends WorldUtil {
return entity.getWorld().getName(); return entity.getWorld().getName();
} }
public static List<Entity> getEntities(String worldname) { public static List<Entity> getEntities(String worldName) {
return getWorld(worldname).getEntities(); return getWorld(worldName).getEntities();
} }
public static Location getLocation(Entity entity) { public static Location getLocation(Entity entity) {
@ -114,8 +114,8 @@ public class BukkitUtil extends WorldUtil {
} }
@Override @Override
public boolean isWorld(String world) { public boolean isWorld(String worldName) {
return getWorld(world) != null; return getWorld(worldName) != null;
} }
@Override @Override
@ -124,8 +124,8 @@ public class BukkitUtil extends WorldUtil {
} }
@Override @Override
public void setSign(String worldname, int x, int y, int z, String[] lines) { public void setSign(String worldName, int x, int y, int z, String[] lines) {
World world = getWorld(worldname); World world = getWorld(worldName);
Block block = world.getBlockAt(x, y, z); Block block = world.getBlockAt(x, y, z);
// block.setType(Material.AIR); // block.setType(Material.AIR);
block.setTypeIdAndData(Material.WALL_SIGN.getId(), (byte) 2, false); block.setTypeIdAndData(Material.WALL_SIGN.getId(), (byte) 2, false);
@ -172,8 +172,8 @@ public class BukkitUtil extends WorldUtil {
} }
@Override @Override
public void saveWorld(String worldname) { public void saveWorld(String worldName) {
World world = getWorld(worldname); World world = getWorld(worldName);
if (world != null) { if (world != null) {
world.save(); world.save();
} }

View File

@ -321,7 +321,7 @@ public class Metrics {
// Construct the post data // Construct the post data
StringBuilder json = new StringBuilder(1024); StringBuilder json = new StringBuilder(1024);
json.append('{'); json.append('{');
// The plugin's description file containg all of the plugin data such as name, version, author, etc // The plugin's description file containing all of the plugin data such as name, version, author, etc
appendJSONPair(json, "guid", this.guid); appendJSONPair(json, "guid", this.guid);
appendJSONPair(json, "plugin_version", pluginVersion); appendJSONPair(json, "plugin_version", pluginVersion);
appendJSONPair(json, "server_version", serverVersion); appendJSONPair(json, "server_version", serverVersion);

View File

@ -223,7 +223,7 @@ public class NbtFactory {
/** /**
* Construct a new NBT wrapper from a compound. * Construct a new NBT wrapper from a compound.
* @param nmsCompound - the NBT compund. * @param nmsCompound - the NBT compound.
* @return The wrapper. * @return The wrapper.
*/ */
public static NbtCompound fromCompound(Object nmsCompound) { public static NbtCompound fromCompound(Object nmsCompound) {
@ -247,7 +247,7 @@ public class NbtFactory {
/** /**
* Construct a wrapper for an NBT tag stored (in memory) in an item stack. This is where * Construct a wrapper for an NBT tag stored (in memory) in an item stack. This is where
* auxillary data such as enchanting, name and lore is stored. It does not include items * auxiliary data such as enchanting, name and lore is stored. It does not include items
* material, damage value or count. * material, damage value or count.
* <p> * <p>
* The item stack must be a wrapper for a CraftItemStack. * The item stack must be a wrapper for a CraftItemStack.
@ -669,7 +669,7 @@ public class NbtFactory {
super(handle, getDataMap(handle)); super(handle, getDataMap(handle));
} }
// Simplifiying access to each value // Simplifying access to each value
public Byte getByte(String key, Byte defaultValue) { public Byte getByte(String key, Byte defaultValue) {
return containsKey(key) ? (Byte) get(key) : defaultValue; return containsKey(key) ? (Byte) get(key) : defaultValue;
} }

View File

@ -116,10 +116,10 @@ public class SendChunk {
try { try {
chunk.unload(true, false); chunk.unload(true, false);
} catch (Throwable e) { } catch (Throwable e) {
String worldname = chunk.getWorld().getName(); String worldName = chunk.getWorld().getName();
PS.debug("$4Could not save chunk: " + worldname + ";" + chunk.getX() + ";" + chunk.getZ()); PS.debug("$4Could not save chunk: " + worldName + ";" + chunk.getX() + ";" + chunk.getZ());
PS.debug("$3 - $4File may be open in another process (e.g. MCEdit)"); PS.debug("$3 - $4File may be open in another process (e.g. MCEdit)");
PS.debug("$3 - $4" + worldname + "/level.dat or " + worldname PS.debug("$3 - $4" + worldName + "/level.dat or " + worldName
+ "/level_old.dat may be corrupt (try repairing or removing these)"); + "/level_old.dat may be corrupt (try repairing or removing these)");
} }
} }
@ -127,12 +127,12 @@ public class SendChunk {
} }
} }
public void sendChunk(String worldname, Collection<ChunkLoc> chunkLocs) { public void sendChunk(String worldName, Collection<ChunkLoc> chunkLocations) {
World myworld = Bukkit.getWorld(worldname); World myWorld = Bukkit.getWorld(worldName);
ArrayList<Chunk> chunks = new ArrayList<>(); ArrayList<Chunk> chunks = new ArrayList<>();
for (ChunkLoc loc : chunkLocs) { for (ChunkLoc loc : chunkLocations) {
if (myworld.isChunkLoaded(loc.x, loc.z)) { if (myWorld.isChunkLoaded(loc.x, loc.z)) {
chunks.add(myworld.getChunkAt(loc.x, loc.z)); chunks.add(myWorld.getChunkAt(loc.x, loc.z));
} }
} }
sendChunk(chunks); sendChunk(chunks);

View File

@ -45,10 +45,10 @@ public class SetGenCB {
} }
} }
if (!set) { if (!set) {
Iterator<BlockPopulator> iter = world.getPopulators().iterator(); Iterator<BlockPopulator> iterator = world.getPopulators().iterator();
while (iter.hasNext()) { while (iterator.hasNext()) {
if (iter.next() instanceof BukkitAugmentedGenerator) { if (iterator.next() instanceof BukkitAugmentedGenerator) {
iter.remove(); iterator.remove();
} }
} }
} }

View File

@ -34,8 +34,7 @@ public class FastQueue_1_7 extends SlowQueue {
private final RefMethod methodA; private final RefMethod methodA;
private final RefMethod methodGetById; private final RefMethod methodGetById;
private final RefMethod methodInitLighting; private final RefMethod methodInitLighting;
private final SendChunk sendChunk;
private final SendChunk chunksender;
private final HashMap<ChunkWrapper, Chunk> toUpdate = new HashMap<>(); private final HashMap<ChunkWrapper, Chunk> toUpdate = new HashMap<>();
@ -45,7 +44,7 @@ public class FastQueue_1_7 extends SlowQueue {
this.methodA = this.classChunk.getMethod("a", int.class, int.class, int.class, this.classBlock, int.class); this.methodA = this.classChunk.getMethod("a", int.class, int.class, int.class, this.classBlock, int.class);
this.methodGetById = this.classBlock.getMethod("getById", int.class); this.methodGetById = this.classBlock.getMethod("getById", int.class);
this.methodInitLighting = this.classChunk.getMethod("initLighting"); this.methodInitLighting = this.classChunk.getMethod("initLighting");
this.chunksender = new SendChunk(); this.sendChunk = new SendChunk();
TaskManager.runTaskRepeat(new Runnable() { TaskManager.runTaskRepeat(new Runnable() {
@Override @Override
public void run() { public void run() {
@ -82,7 +81,7 @@ public class FastQueue_1_7 extends SlowQueue {
return; return;
} }
try { try {
this.chunksender.sendChunk(chunks); this.sendChunk.sendChunk(chunks);
} catch (Throwable e) { } catch (Throwable e) {
e.printStackTrace(); e.printStackTrace();
MainUtil.canSendChunk = false; MainUtil.canSendChunk = false;
@ -175,6 +174,6 @@ public class FastQueue_1_7 extends SlowQueue {
ChunkWrapper wrapper = SetQueue.IMP.new ChunkWrapper(world, loc.x, loc.z); ChunkWrapper wrapper = SetQueue.IMP.new ChunkWrapper(world, loc.x, loc.z);
this.toUpdate.remove(wrapper); this.toUpdate.remove(wrapper);
} }
this.chunksender.sendChunk(world, locations); this.sendChunk.sendChunk(world, locations);
} }
} }

View File

@ -40,7 +40,7 @@ public class FastQueue_1_8 extends SlowQueue {
private final RefMethod methodA; private final RefMethod methodA;
private final RefMethod methodGetByCombinedId; private final RefMethod methodGetByCombinedId;
private final RefConstructor constructorBlockPosition; private final RefConstructor constructorBlockPosition;
private final SendChunk chunksender; private final SendChunk sendChunk;
public FastQueue_1_8() throws RuntimeException { public FastQueue_1_8() throws RuntimeException {
this.methodInitLighting = this.classChunk.getMethod("initLighting"); this.methodInitLighting = this.classChunk.getMethod("initLighting");
@ -49,7 +49,7 @@ public class FastQueue_1_8 extends SlowQueue {
this.methodGetHandle = this.classCraftWorld.getMethod("getHandle"); this.methodGetHandle = this.classCraftWorld.getMethod("getHandle");
this.methodGetChunkAt = this.classWorld.getMethod("getChunkAt", int.class, int.class); this.methodGetChunkAt = this.classWorld.getMethod("getChunkAt", int.class, int.class);
this.methodA = this.classChunk.getMethod("a", this.classBlockPosition, this.classIBlockData); this.methodA = this.classChunk.getMethod("a", this.classBlockPosition, this.classIBlockData);
this.chunksender = new SendChunk(); this.sendChunk = new SendChunk();
TaskManager.runTaskRepeat(new Runnable() { TaskManager.runTaskRepeat(new Runnable() {
@Override @Override
public void run() { public void run() {
@ -59,7 +59,7 @@ public class FastQueue_1_8 extends SlowQueue {
int count = 0; int count = 0;
ArrayList<Chunk> chunks = new ArrayList<Chunk>(); ArrayList<Chunk> chunks = new ArrayList<Chunk>();
Iterator<Entry<ChunkWrapper, Chunk>> i = FastQueue_1_8.this.toUpdate.entrySet().iterator(); Iterator<Entry<ChunkWrapper, Chunk>> i = FastQueue_1_8.this.toUpdate.entrySet().iterator();
while (i.hasNext() && (count < 128)) { while (i.hasNext() && count < 128) {
chunks.add(i.next().getValue()); chunks.add(i.next().getValue());
i.remove(); i.remove();
count++; count++;
@ -86,7 +86,7 @@ public class FastQueue_1_8 extends SlowQueue {
return; return;
} }
try { try {
this.chunksender.sendChunk(chunks); this.sendChunk.sendChunk(chunks);
} catch (Throwable e) { } catch (Throwable e) {
e.printStackTrace(); e.printStackTrace();
MainUtil.canSendChunk = false; MainUtil.canSendChunk = false;
@ -161,7 +161,7 @@ public class FastQueue_1_8 extends SlowQueue {
case 29: case 29:
case 33: case 33:
case 151: case 151:
case 178: { case 178:
Block block = world.getBlockAt(x, y, z); Block block = world.getBlockAt(x, y, z);
if (block.getData() == newBlock.data) { if (block.getData() == newBlock.data) {
if (block.getTypeId() != newBlock.id) { if (block.getTypeId() != newBlock.id) {
@ -175,7 +175,6 @@ public class FastQueue_1_8 extends SlowQueue {
} }
} }
continue; continue;
}
} }
// Start data value shortcut // Start data value shortcut
@ -263,9 +262,8 @@ public class FastQueue_1_8 extends SlowQueue {
case 189: case 189:
case 190: case 190:
case 191: case 191:
case 192: { case 192:
continue; continue;
}
} }
if (block.getData() == newBlock.data) { if (block.getData() == newBlock.data) {
return; return;
@ -311,14 +309,13 @@ public class FastQueue_1_8 extends SlowQueue {
case 29: case 29:
case 33: case 33:
case 151: case 151:
case 178: { case 178:
if (block.getData() == newBlock.data) { if (block.getData() == newBlock.data) {
block.setTypeId(newBlock.id, false); block.setTypeId(newBlock.id, false);
} else { } else {
block.setTypeIdAndData(newBlock.id, newBlock.data, false); block.setTypeIdAndData(newBlock.id, newBlock.data, false);
} }
continue; continue;
}
} }
// End blockstate workaround // // End blockstate workaround //
@ -378,6 +375,6 @@ public class FastQueue_1_8 extends SlowQueue {
ChunkWrapper wrapper = SetQueue.IMP.new ChunkWrapper(world, loc.x, loc.z); ChunkWrapper wrapper = SetQueue.IMP.new ChunkWrapper(world, loc.x, loc.z);
this.toUpdate.remove(wrapper); this.toUpdate.remove(wrapper);
} }
this.chunksender.sendChunk(world, locations); this.sendChunk.sendChunk(world, locations);
} }
} }

View File

@ -1,5 +1,7 @@
package com.plotsquared.bukkit.util.block; package com.plotsquared.bukkit.util.block;
import static com.intellectualcrafters.plot.util.ReflectionUtils.getRefClass;
import com.intellectualcrafters.plot.object.ChunkLoc; import com.intellectualcrafters.plot.object.ChunkLoc;
import com.intellectualcrafters.plot.object.PseudoRandom; import com.intellectualcrafters.plot.object.PseudoRandom;
import com.intellectualcrafters.plot.util.ChunkManager; import com.intellectualcrafters.plot.util.ChunkManager;
@ -14,6 +16,12 @@ import com.intellectualcrafters.plot.util.SetQueue;
import com.intellectualcrafters.plot.util.SetQueue.ChunkWrapper; import com.intellectualcrafters.plot.util.SetQueue.ChunkWrapper;
import com.intellectualcrafters.plot.util.TaskManager; import com.intellectualcrafters.plot.util.TaskManager;
import com.plotsquared.bukkit.util.SendChunk; import com.plotsquared.bukkit.util.SendChunk;
import org.bukkit.Chunk;
import org.bukkit.Material;
import org.bukkit.World;
import org.bukkit.World.Environment;
import org.bukkit.block.Biome;
import java.lang.reflect.Field; import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException; import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method; import java.lang.reflect.Method;
@ -23,18 +31,10 @@ import java.util.HashMap;
import java.util.Iterator; import java.util.Iterator;
import java.util.Map.Entry; import java.util.Map.Entry;
import java.util.Set; import java.util.Set;
import org.bukkit.Chunk;
import org.bukkit.Material;
import org.bukkit.World;
import org.bukkit.World.Environment;
import org.bukkit.block.Biome;
import static com.intellectualcrafters.plot.util.ReflectionUtils.getRefClass;
public class FastQueue_1_8_3 extends SlowQueue { public class FastQueue_1_8_3 extends SlowQueue {
private final SendChunk chunksender; private final SendChunk sendChunk;
private final HashMap<ChunkWrapper, Chunk> toUpdate = new HashMap<>(); private final HashMap<ChunkWrapper, Chunk> toUpdate = new HashMap<>();
private final RefMethod methodGetHandleChunk; private final RefMethod methodGetHandleChunk;
private final RefMethod methodInitLighting; private final RefMethod methodInitLighting;
@ -65,7 +65,7 @@ public class FastQueue_1_8_3 extends SlowQueue {
this.classChunkSectionConstructor = classChunkSection.getConstructor(int.class, boolean.class, char[].class); this.classChunkSectionConstructor = classChunkSection.getConstructor(int.class, boolean.class, char[].class);
this.tileEntityUnload = classWorld.getField("c"); this.tileEntityUnload = classWorld.getField("c");
this.methodGetWorld = classChunk.getMethod("getWorld"); this.methodGetWorld = classChunk.getMethod("getWorld");
this.chunksender = new SendChunk(); this.sendChunk = new SendChunk();
TaskManager.runTaskRepeat(new Runnable() { TaskManager.runTaskRepeat(new Runnable() {
@Override @Override
public void run() { public void run() {
@ -102,7 +102,7 @@ public class FastQueue_1_8_3 extends SlowQueue {
return; return;
} }
try { try {
this.chunksender.sendChunk(chunks); this.sendChunk.sendChunk(chunks);
} catch (Throwable e) { } catch (Throwable e) {
e.printStackTrace(); e.printStackTrace();
MainUtil.canSendChunk = false; MainUtil.canSendChunk = false;
@ -129,7 +129,7 @@ public class FastQueue_1_8_3 extends SlowQueue {
// Sections // Sections
Method getHandle = chunk.getClass().getDeclaredMethod("getHandle"); Method getHandle = chunk.getClass().getDeclaredMethod("getHandle");
Object c = getHandle.invoke(chunk); Object c = getHandle.invoke(chunk);
Object w = methodGetWorld.of(c).call(); Object w = this.methodGetWorld.of(c).call();
Class<? extends Object> clazz = c.getClass(); Class<? extends Object> clazz = c.getClass();
Field sections1 = clazz.getDeclaredField("sections"); Field sections1 = clazz.getDeclaredField("sections");
sections1.setAccessible(true); sections1.setAccessible(true);
@ -138,7 +138,7 @@ public class FastQueue_1_8_3 extends SlowQueue {
Object[] sections = (Object[]) sections1.get(c); Object[] sections = (Object[]) sections1.get(c);
HashMap<?, ?> tiles = (HashMap<?, ?>) tileEntities.get(c); HashMap<?, ?> tiles = (HashMap<?, ?>) tileEntities.get(c);
Collection<Object> tilesUnload = (Collection<Object>) tileEntityUnload.of(w).get(); Collection<Object> tilesUnload = (Collection<Object>) this.tileEntityUnload.of(w).get();
Collection<?>[] entities = (Collection<?>[]) entitySlices.get(c); Collection<?>[] entities = (Collection<?>[]) entitySlices.get(c);
Method getX = null; Method getX = null;
@ -407,6 +407,6 @@ public class FastQueue_1_8_3 extends SlowQueue {
ChunkWrapper wrapper = SetQueue.IMP.new ChunkWrapper(world, loc.x, loc.z); ChunkWrapper wrapper = SetQueue.IMP.new ChunkWrapper(world, loc.x, loc.z);
this.toUpdate.remove(wrapper); this.toUpdate.remove(wrapper);
} }
this.chunksender.sendChunk(world, locations); this.sendChunk.sendChunk(world, locations);
} }
} }

View File

@ -1,5 +1,7 @@
package com.plotsquared.bukkit.util.block; package com.plotsquared.bukkit.util.block;
import static com.intellectualcrafters.plot.util.ReflectionUtils.getRefClass;
import com.intellectualcrafters.plot.object.ChunkLoc; import com.intellectualcrafters.plot.object.ChunkLoc;
import com.intellectualcrafters.plot.object.PseudoRandom; import com.intellectualcrafters.plot.object.PseudoRandom;
import com.intellectualcrafters.plot.util.ChunkManager; import com.intellectualcrafters.plot.util.ChunkManager;
@ -15,6 +17,12 @@ import com.intellectualcrafters.plot.util.SetQueue.ChunkWrapper;
import com.intellectualcrafters.plot.util.TaskManager; import com.intellectualcrafters.plot.util.TaskManager;
import com.plotsquared.bukkit.util.BukkitUtil; import com.plotsquared.bukkit.util.BukkitUtil;
import com.plotsquared.bukkit.util.SendChunk; import com.plotsquared.bukkit.util.SendChunk;
import org.bukkit.Chunk;
import org.bukkit.Material;
import org.bukkit.World;
import org.bukkit.World.Environment;
import org.bukkit.block.Biome;
import java.lang.reflect.Field; import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException; import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method; import java.lang.reflect.Method;
@ -24,14 +32,6 @@ import java.util.HashMap;
import java.util.Iterator; import java.util.Iterator;
import java.util.Map.Entry; import java.util.Map.Entry;
import java.util.Set; import java.util.Set;
import org.bukkit.Chunk;
import org.bukkit.Material;
import org.bukkit.World;
import org.bukkit.World.Environment;
import org.bukkit.block.Biome;
import static com.intellectualcrafters.plot.util.ReflectionUtils.getRefClass;
public class FastQueue_1_9 extends SlowQueue { public class FastQueue_1_9 extends SlowQueue {
@ -143,7 +143,7 @@ public class FastQueue_1_9 extends SlowQueue {
// Sections // Sections
Method getHandle = chunk.getClass().getDeclaredMethod("getHandle"); Method getHandle = chunk.getClass().getDeclaredMethod("getHandle");
Object c = getHandle.invoke(chunk); Object c = getHandle.invoke(chunk);
Object w = methodGetWorld.of(c).call(); Object w = this.methodGetWorld.of(c).call();
Class<? extends Object> clazz = c.getClass(); Class<? extends Object> clazz = c.getClass();
Field sf = clazz.getDeclaredField("sections"); Field sf = clazz.getDeclaredField("sections");
sf.setAccessible(true); sf.setAccessible(true);
@ -152,7 +152,7 @@ public class FastQueue_1_9 extends SlowQueue {
Object[] sections = (Object[]) sf.get(c); Object[] sections = (Object[]) sf.get(c);
HashMap<?, ?> tiles = (HashMap<?, ?>) tf.get(c); HashMap<?, ?> tiles = (HashMap<?, ?>) tf.get(c);
Collection<Object> tilesUnload = (Collection<Object>) tileEntityUnload.of(w).get(); Collection<Object> tilesUnload = (Collection<Object>) this.tileEntityUnload.of(w).get();
Collection<?>[] entities = (Collection<?>[]) entitySlices.get(c); Collection<?>[] entities = (Collection<?>[]) entitySlices.get(c);
Method xm = null; Method xm = null;
@ -230,13 +230,12 @@ public class FastQueue_1_9 extends SlowQueue {
setType.call(x, y & 15, z, this.air); setType.call(x, y & 15, z, this.air);
continue; continue;
} }
default: { default:
int x = MainUtil.x_loc[j][k]; int x = MainUtil.x_loc[j][k];
int y = MainUtil.y_loc[j][k]; int y = MainUtil.y_loc[j][k];
int z = MainUtil.z_loc[j][k]; int z = MainUtil.z_loc[j][k];
Object iBlock = this.methodGetByCombinedId.call((int) n); Object iBlock = this.methodGetByCombinedId.call((int) n);
setType.call(x, y & 15, z, iBlock); setType.call(x, y & 15, z, iBlock);
}
} }
} }
if (fill) { if (fill) {
@ -306,7 +305,7 @@ public class FastQueue_1_9 extends SlowQueue {
if (fixAll && !(boolean) this.methodAreNeighborsLoaded.of(c).call(1)) { if (fixAll && !(boolean) this.methodAreNeighborsLoaded.of(c).call(1)) {
World world = chunk.getWorld(); World world = chunk.getWorld();
ChunkWrapper wrapper = bc.getChunkWrapper(); ChunkWrapper wrapper = bc.getChunkWrapper();
String worldname = wrapper.world; String worldName = wrapper.world;
for (int x = wrapper.x - 1; x <= wrapper.x + 1; x++) { for (int x = wrapper.x - 1; x <= wrapper.x + 1; x++) {
for (int z = wrapper.z - 1; z <= wrapper.z + 1; z++) { for (int z = wrapper.z - 1; z <= wrapper.z + 1; z++) {
if (x != 0 && z != 0) { if (x != 0 && z != 0) {
@ -314,7 +313,7 @@ public class FastQueue_1_9 extends SlowQueue {
while (!other.isLoaded()) { while (!other.isLoaded()) {
other.load(true); other.load(true);
} }
ChunkManager.manager.loadChunk(worldname, new ChunkLoc(x, z), true); ChunkManager.manager.loadChunk(worldName, new ChunkLoc(x, z), true);
} }
} }
} }

View File

@ -62,12 +62,12 @@ public class SlowQueue implements PlotQueue<Chunk> {
if (this.blocks.isEmpty()) { if (this.blocks.isEmpty()) {
return null; return null;
} }
Iterator<Entry<ChunkWrapper, PlotChunk<Chunk>>> iter = this.blocks.entrySet().iterator(); Iterator<Entry<ChunkWrapper, PlotChunk<Chunk>>> iterator = this.blocks.entrySet().iterator();
PlotChunk<Chunk> toReturn = iter.next().getValue(); PlotChunk<Chunk> toReturn = iterator.next().getValue();
if (SetQueue.IMP.isWaiting()) { if (SetQueue.IMP.isWaiting()) {
return null; return null;
} }
iter.remove(); iterator.remove();
execute(toReturn); execute(toReturn);
fixLighting(toReturn, true); fixLighting(toReturn, true);
return toReturn; return toReturn;

View File

@ -55,10 +55,10 @@ public class FileUUIDHandler extends UUIDHandlerImplementation {
@Override @Override
public void run() { public void run() {
PS.debug(C.PREFIX + "&6Starting player data caching for: " + world); PS.debug(C.PREFIX + "&6Starting player data caching for: " + world);
File uuidfile = new File(PS.get().IMP.getDirectory(), "uuids.txt"); File uuidFile = new File(PS.get().IMP.getDirectory(), "uuids.txt");
if (uuidfile.exists()) { if (uuidFile.exists()) {
try { try {
List<String> lines = Files.readAllLines(uuidfile.toPath(), StandardCharsets.UTF_8); List<String> lines = Files.readAllLines(uuidFile.toPath(), StandardCharsets.UTF_8);
for (String line : lines) { for (String line : lines) {
try { try {
line = line.trim(); line = line.trim();
@ -89,8 +89,8 @@ public class FileUUIDHandler extends UUIDHandlerImplementation {
toAdd.put(new StringWrapper("*"), DBFunc.everyone); toAdd.put(new StringWrapper("*"), DBFunc.everyone);
HashSet<UUID> all = UUIDHandler.getAllUUIDS(); HashSet<UUID> all = UUIDHandler.getAllUUIDS();
PS.debug("&aFast mode UUID caching enabled!"); PS.debug("&aFast mode UUID caching enabled!");
File playerdataFolder = new File(container, world + File.separator + "playerdata"); File playerDataFolder = new File(container, world + File.separator + "playerdata");
String[] dat = playerdataFolder.list(new FilenameFilter() { String[] dat = playerDataFolder.list(new FilenameFilter() {
@Override @Override
public boolean accept(File f, String s) { public boolean accept(File f, String s) {
return s.endsWith(".dat"); return s.endsWith(".dat");
@ -103,7 +103,7 @@ public class FileUUIDHandler extends UUIDHandlerImplementation {
try { try {
UUID uuid = UUID.fromString(s); UUID uuid = UUID.fromString(s);
if (check || all.remove(uuid)) { if (check || all.remove(uuid)) {
File file = new File(playerdataFolder + File.separator + current); File file = new File(playerDataFolder + File.separator + current);
InputSupplier<FileInputStream> is = com.google.common.io.Files.newInputStreamSupplier(file); InputSupplier<FileInputStream> is = com.google.common.io.Files.newInputStreamSupplier(file);
NbtFactory.NbtCompound compound = NbtFactory.fromStream(is, NbtFactory.StreamOptions.GZIP_COMPRESSION); NbtFactory.NbtCompound compound = NbtFactory.fromStream(is, NbtFactory.StreamOptions.GZIP_COMPRESSION);
NbtFactory.NbtCompound bukkit = (NbtFactory.NbtCompound) compound.get("bukkit"); NbtFactory.NbtCompound bukkit = (NbtFactory.NbtCompound) compound.get("bukkit");
@ -137,11 +137,11 @@ public class FileUUIDHandler extends UUIDHandlerImplementation {
worlds.add("world"); worlds.add("world");
HashSet<UUID> uuids = new HashSet<>(); HashSet<UUID> uuids = new HashSet<>();
HashSet<String> names = new HashSet<>(); HashSet<String> names = new HashSet<>();
File playerdataFolder = null; File playerDataFolder = null;
for (String worldName : worlds) { for (String worldName : worlds) {
// Getting UUIDs // Getting UUIDs
playerdataFolder = new File(container, worldName + File.separator + "playerdata"); playerDataFolder = new File(container, worldName + File.separator + "playerdata");
String[] dat = playerdataFolder.list(new FilenameFilter() { String[] dat = playerDataFolder.list(new FilenameFilter() {
@Override @Override
public boolean accept(File f, String s) { public boolean accept(File f, String s) {
return s.endsWith(".dat"); return s.endsWith(".dat");
@ -154,7 +154,7 @@ public class FileUUIDHandler extends UUIDHandlerImplementation {
UUID uuid = UUID.fromString(s); UUID uuid = UUID.fromString(s);
uuids.add(uuid); uuids.add(uuid);
} catch (Exception e) { } catch (Exception e) {
PS.debug(C.PREFIX + "Invalid playerdata: " + current); PS.debug(C.PREFIX + "Invalid PlayerData: " + current);
} }
} }
break; break;
@ -176,7 +176,7 @@ public class FileUUIDHandler extends UUIDHandlerImplementation {
} }
for (UUID uuid : uuids) { for (UUID uuid : uuids) {
try { try {
File file = new File(playerdataFolder + File.separator + uuid.toString() + ".dat"); File file = new File(playerDataFolder + File.separator + uuid.toString() + ".dat");
if (!file.exists()) { if (!file.exists()) {
continue; continue;
} }
@ -199,7 +199,7 @@ public class FileUUIDHandler extends UUIDHandlerImplementation {
} }
toAdd.put(new StringWrapper(name), uuid); toAdd.put(new StringWrapper(name), uuid);
} catch (Throwable e) { } catch (Throwable e) {
PS.debug(C.PREFIX + "&6Invalid playerdata: " + uuid.toString() + ".dat"); PS.debug(C.PREFIX + "&6Invalid PlayerData: " + uuid.toString() + ".dat");
} }
} }
for (String name : names) { for (String name : names) {

View File

@ -151,7 +151,7 @@ public class SQLUUIDHandler extends UUIDHandlerImplementation {
@Override @Override
public void fetchUUID(final String name, final RunnableVal<UUID> ifFetch) { public void fetchUUID(final String name, final RunnableVal<UUID> ifFetch) {
PS.debug(C.PREFIX + "UUID for '" + name + "' was null. We'll cache this from the mojang servers!"); PS.debug(C.PREFIX + "UUID for '" + name + "' was null. We'll cache this from the Mojang servers!");
if (ifFetch == null) { if (ifFetch == null) {
return; return;
} }

View File

@ -26,7 +26,6 @@ public abstract class FileConfiguration extends MemoryConfiguration {
* Creates an empty {@link FileConfiguration} with no default values. * Creates an empty {@link FileConfiguration} with no default values.
*/ */
public FileConfiguration() { public FileConfiguration() {
super();
} }
/** /**
@ -35,7 +34,7 @@ public abstract class FileConfiguration extends MemoryConfiguration {
* *
* @param defaults Default value provider * @param defaults Default value provider
*/ */
public FileConfiguration(final Configuration defaults) { public FileConfiguration(Configuration defaults) {
super(defaults); super(defaults);
} }
@ -54,13 +53,13 @@ public abstract class FileConfiguration extends MemoryConfiguration {
* any reason. * any reason.
* @throws IllegalArgumentException Thrown when file is null. * @throws IllegalArgumentException Thrown when file is null.
*/ */
public void save(final File file) throws IOException { public void save(File file) throws IOException {
if (file == null) { if (file == null) {
throw new NullPointerException("File cannot be null"); throw new NullPointerException("File cannot be null");
} }
file.getParentFile().mkdirs(); file.getParentFile().mkdirs();
final String data = saveToString(); String data = saveToString();
try (Writer writer = new OutputStreamWriter(new FileOutputStream(file), StandardCharsets.UTF_8)) { try (Writer writer = new OutputStreamWriter(new FileOutputStream(file), StandardCharsets.UTF_8)) {
writer.write(data); writer.write(data);
@ -82,7 +81,7 @@ public abstract class FileConfiguration extends MemoryConfiguration {
* any reason. * any reason.
* @throws IllegalArgumentException Thrown when file is null. * @throws IllegalArgumentException Thrown when file is null.
*/ */
public void save(final String file) throws IOException { public void save(String file) throws IOException {
if (file == null) { if (file == null) {
throw new NullPointerException("File cannot be null"); throw new NullPointerException("File cannot be null");
} }
@ -116,12 +115,12 @@ public abstract class FileConfiguration extends MemoryConfiguration {
* a valid Configuration. * a valid Configuration.
* @throws IllegalArgumentException Thrown when file is null. * @throws IllegalArgumentException Thrown when file is null.
*/ */
public void load(final File file) throws IOException, InvalidConfigurationException { public void load(File file) throws IOException, InvalidConfigurationException {
if (file == null) { if (file == null) {
throw new NullPointerException("File cannot be null"); throw new NullPointerException("File cannot be null");
} }
final FileInputStream stream = new FileInputStream(file); FileInputStream stream = new FileInputStream(file);
load(new InputStreamReader(stream, StandardCharsets.UTF_8)); load(new InputStreamReader(stream, StandardCharsets.UTF_8));
} }
@ -139,9 +138,9 @@ public abstract class FileConfiguration extends MemoryConfiguration {
* represent a valid Configuration * represent a valid Configuration
* @throws IllegalArgumentException thrown when reader is null * @throws IllegalArgumentException thrown when reader is null
*/ */
public void load(final Reader reader) throws IOException, InvalidConfigurationException { public void load(Reader reader) throws IOException, InvalidConfigurationException {
final StringBuilder builder = new StringBuilder(); StringBuilder builder = new StringBuilder();
try (BufferedReader input = reader instanceof BufferedReader ? (BufferedReader) reader : new BufferedReader(reader)) { try (BufferedReader input = reader instanceof BufferedReader ? (BufferedReader) reader : new BufferedReader(reader)) {
String line; String line;
@ -173,7 +172,7 @@ public abstract class FileConfiguration extends MemoryConfiguration {
* a valid Configuration. * a valid Configuration.
* @throws IllegalArgumentException Thrown when file is null. * @throws IllegalArgumentException Thrown when file is null.
*/ */
public void load(final String file) throws IOException, InvalidConfigurationException { public void load(String file) throws IOException, InvalidConfigurationException {
if (file == null) { if (file == null) {
throw new NullPointerException("File cannot be null"); throw new NullPointerException("File cannot be null");
} }
@ -196,7 +195,7 @@ public abstract class FileConfiguration extends MemoryConfiguration {
* invalid. * invalid.
* @throws IllegalArgumentException Thrown if contents is null. * @throws IllegalArgumentException Thrown if contents is null.
*/ */
public abstract void loadFromString(final String contents) throws InvalidConfigurationException; public abstract void loadFromString(String contents) throws InvalidConfigurationException;
/** /**
* Compiles the header for this {@link FileConfiguration} and returns the * Compiles the header for this {@link FileConfiguration} and returns the
@ -212,10 +211,10 @@ public abstract class FileConfiguration extends MemoryConfiguration {
@Override @Override
public FileConfigurationOptions options() { public FileConfigurationOptions options() {
if (options == null) { if (this.options == null) {
options = new FileConfigurationOptions(this); this.options = new FileConfigurationOptions(this);
} }
return (FileConfigurationOptions) options; return (FileConfigurationOptions) this.options;
} }
} }

View File

@ -4,47 +4,47 @@ package com.intellectualcrafters.jnbt;
* The {@code TAG_Byte_Array} tag. * The {@code TAG_Byte_Array} tag.
*/ */
public final class ByteArrayTag extends Tag { public final class ByteArrayTag extends Tag {
private final byte[] value; private final byte[] value;
/** /**
* Creates the tag with an empty name. * Creates the tag with an empty name.
* *
* @param value the value of the tag * @param value the value of the tag
*/ */
public ByteArrayTag(final byte[] value) { public ByteArrayTag(byte[] value) {
super();
this.value = value; this.value = value;
} }
/** /**
* Creates the tag. * Creates the tag.
* *
* @param name the name of the tag * @param name the name of the tag
* @param value the value of the tag * @param value the value of the tag
*/ */
public ByteArrayTag(final String name, final byte[] value) { public ByteArrayTag(String name, byte[] value) {
super(name); super(name);
this.value = value; this.value = value;
} }
@Override @Override
public byte[] getValue() { public byte[] getValue() {
return value; return this.value;
} }
@Override @Override
public String toString() { public String toString() {
final StringBuilder hex = new StringBuilder(); StringBuilder hex = new StringBuilder();
for (final byte b : value) { for (byte b : this.value) {
final String hexDigits = Integer.toHexString(b).toUpperCase(); String hexDigits = Integer.toHexString(b).toUpperCase();
if (hexDigits.length() == 1) { if (hexDigits.length() == 1) {
hex.append("0"); hex.append("0");
} }
hex.append(hexDigits).append(" "); hex.append(hexDigits).append(" ");
} }
final String name = getName(); String name = getName();
String append = ""; String append = "";
if ((name != null) && !name.equals("")) { if (name != null && !name.equals("")) {
append = "(\"" + getName() + "\")"; append = "(\"" + getName() + "\")";
} }
return "TAG_Byte_Array" + append + ": " + hex; return "TAG_Byte_Array" + append + ": " + hex;

View File

@ -4,41 +4,41 @@ package com.intellectualcrafters.jnbt;
* The {@code TAG_Byte} tag. * The {@code TAG_Byte} tag.
*/ */
public final class ByteTag extends Tag { public final class ByteTag extends Tag {
private final byte value; private final byte value;
/** /**
* Creates the tag with an empty name. * Creates the tag with an empty name.
* *
* @param value the value of the tag * @param value the value of the tag
*/ */
public ByteTag(final byte value) { public ByteTag(byte value) {
super();
this.value = value; this.value = value;
} }
/** /**
* Creates the tag. * Creates the tag.
* *
* @param name the name of the tag * @param name the name of the tag
* @param value the value of the tag * @param value the value of the tag
*/ */
public ByteTag(final String name, final byte value) { public ByteTag(String name, byte value) {
super(name); super(name);
this.value = value; this.value = value;
} }
@Override @Override
public Byte getValue() { public Byte getValue() {
return value; return this.value;
} }
@Override @Override
public String toString() { public String toString() {
final String name = getName(); String name = getName();
String append = ""; String append = "";
if ((name != null) && !name.equals("")) { if (name != null && !name.equals("")) {
append = "(\"" + getName() + "\")"; append = "(\"" + getName() + "\")";
} }
return "TAG_Byte" + append + ": " + value; return "TAG_Byte" + append + ": " + this.value;
} }
} }

View File

@ -18,7 +18,6 @@ public final class CompoundTag extends Tag {
* @param value the value of the tag * @param value the value of the tag
*/ */
public CompoundTag(Map<String, Tag> value) { public CompoundTag(Map<String, Tag> value) {
super();
this.value = Collections.unmodifiableMap(value); this.value = Collections.unmodifiableMap(value);
} }
@ -374,7 +373,7 @@ public final class CompoundTag extends Tag {
public String toString() { public String toString() {
String name = getName(); String name = getName();
String append = ""; String append = "";
if ((name != null) && !name.equals("")) { if (name != null && !name.equals("")) {
append = "(\"" + getName() + "\")"; append = "(\"" + getName() + "\")";
} }
StringBuilder bldr = new StringBuilder(); StringBuilder bldr = new StringBuilder();

View File

@ -9,25 +9,26 @@ import java.util.Map;
* Helps create compound tags. * Helps create compound tags.
*/ */
public class CompoundTagBuilder { public class CompoundTagBuilder {
private final Map<String, Tag> entries; private final Map<String, Tag> entries;
/** /**
* Create a new instance. * Create a new instance.
*/ */
CompoundTagBuilder() { CompoundTagBuilder() {
entries = new HashMap<String, Tag>(); this.entries = new HashMap<String, Tag>();
} }
/** /**
* Create a new instance and use the given map (which will be modified). * Create a new instance and use the given map (which will be modified).
* *
* @param value the value * @param value the value
*/ */
CompoundTagBuilder(final Map<String, Tag> value) { CompoundTagBuilder(Map<String, Tag> value) {
checkNotNull(value); checkNotNull(value);
entries = value; this.entries = value;
} }
/** /**
* Create a new builder instance. * Create a new builder instance.
* *
@ -36,7 +37,7 @@ public class CompoundTagBuilder {
public static CompoundTagBuilder create() { public static CompoundTagBuilder create() {
return new CompoundTagBuilder(); return new CompoundTagBuilder();
} }
/** /**
* Put the given key and tag into the compound tag. * Put the given key and tag into the compound tag.
* *
@ -45,13 +46,13 @@ public class CompoundTagBuilder {
* *
* @return this object * @return this object
*/ */
public CompoundTagBuilder put(final String key, final Tag value) { public CompoundTagBuilder put(String key, Tag value) {
checkNotNull(key); checkNotNull(key);
checkNotNull(value); checkNotNull(value);
entries.put(key, value); this.entries.put(key, value);
return this; return this;
} }
/** /**
* Put the given key and value into the compound tag as a {@code ByteArrayTag}. * Put the given key and value into the compound tag as a {@code ByteArrayTag}.
* *
@ -60,10 +61,10 @@ public class CompoundTagBuilder {
* *
* @return this object * @return this object
*/ */
public CompoundTagBuilder putByteArray(final String key, final byte[] value) { public CompoundTagBuilder putByteArray(String key, byte[] value) {
return put(key, new ByteArrayTag(key, value)); return put(key, new ByteArrayTag(key, value));
} }
/** /**
* Put the given key and value into the compound tag as a {@code ByteTag}. * Put the given key and value into the compound tag as a {@code ByteTag}.
* *
@ -72,10 +73,10 @@ public class CompoundTagBuilder {
* *
* @return this object * @return this object
*/ */
public CompoundTagBuilder putByte(final String key, final byte value) { public CompoundTagBuilder putByte(String key, byte value) {
return put(key, new ByteTag(key, value)); return put(key, new ByteTag(key, value));
} }
/** /**
* Put the given key and value into the compound tag as a {@code DoubleTag}. * Put the given key and value into the compound tag as a {@code DoubleTag}.
* *
@ -84,10 +85,10 @@ public class CompoundTagBuilder {
* *
* @return this object * @return this object
*/ */
public CompoundTagBuilder putDouble(final String key, final double value) { public CompoundTagBuilder putDouble(String key, double value) {
return put(key, new DoubleTag(key, value)); return put(key, new DoubleTag(key, value));
} }
/** /**
* Put the given key and value into the compound tag as a {@code FloatTag}. * Put the given key and value into the compound tag as a {@code FloatTag}.
* *
@ -96,10 +97,10 @@ public class CompoundTagBuilder {
* *
* @return this object * @return this object
*/ */
public CompoundTagBuilder putFloat(final String key, final float value) { public CompoundTagBuilder putFloat(String key, float value) {
return put(key, new FloatTag(key, value)); return put(key, new FloatTag(key, value));
} }
/** /**
* Put the given key and value into the compound tag as a {@code IntArrayTag}. * Put the given key and value into the compound tag as a {@code IntArrayTag}.
* *
@ -108,10 +109,10 @@ public class CompoundTagBuilder {
* *
* @return this object * @return this object
*/ */
public CompoundTagBuilder putIntArray(final String key, final int[] value) { public CompoundTagBuilder putIntArray(String key, int[] value) {
return put(key, new IntArrayTag(key, value)); return put(key, new IntArrayTag(key, value));
} }
/** /**
* Put the given key and value into the compound tag as an {@code IntTag}. * Put the given key and value into the compound tag as an {@code IntTag}.
* *
@ -120,10 +121,10 @@ public class CompoundTagBuilder {
* *
* @return this object * @return this object
*/ */
public CompoundTagBuilder putInt(final String key, final int value) { public CompoundTagBuilder putInt(String key, int value) {
return put(key, new IntTag(key, value)); return put(key, new IntTag(key, value));
} }
/** /**
* Put the given key and value into the compound tag as a {@code LongTag}. * Put the given key and value into the compound tag as a {@code LongTag}.
* *
@ -132,10 +133,10 @@ public class CompoundTagBuilder {
* *
* @return this object * @return this object
*/ */
public CompoundTagBuilder putLong(final String key, final long value) { public CompoundTagBuilder putLong(String key, long value) {
return put(key, new LongTag(key, value)); return put(key, new LongTag(key, value));
} }
/** /**
* Put the given key and value into the compound tag as a {@code ShortTag}. * Put the given key and value into the compound tag as a {@code ShortTag}.
* *
@ -144,10 +145,10 @@ public class CompoundTagBuilder {
* *
* @return this object * @return this object
*/ */
public CompoundTagBuilder putShort(final String key, final short value) { public CompoundTagBuilder putShort(String key, short value) {
return put(key, new ShortTag(key, value)); return put(key, new ShortTag(key, value));
} }
/** /**
* Put the given key and value into the compound tag as a {@code StringTag}. * Put the given key and value into the compound tag as a {@code StringTag}.
* *
@ -156,10 +157,10 @@ public class CompoundTagBuilder {
* *
* @return this object * @return this object
*/ */
public CompoundTagBuilder putString(final String key, final String value) { public CompoundTagBuilder putString(String key, String value) {
return put(key, new StringTag(key, value)); return put(key, new StringTag(key, value));
} }
/** /**
* Put all the entries from the given map into this map. * Put all the entries from the given map into this map.
* *
@ -167,23 +168,23 @@ public class CompoundTagBuilder {
* *
* @return this object * @return this object
*/ */
public CompoundTagBuilder putAll(final Map<String, ? extends Tag> value) { public CompoundTagBuilder putAll(Map<String, ? extends Tag> value) {
checkNotNull(value); checkNotNull(value);
for (final Map.Entry<String, ? extends Tag> entry : value.entrySet()) { for (Map.Entry<String, ? extends Tag> entry : value.entrySet()) {
put(entry.getKey(), entry.getValue()); put(entry.getKey(), entry.getValue());
} }
return this; return this;
} }
/** /**
* Build an unnamed compound tag with this builder's entries. * Build an unnamed compound tag with this builder's entries.
* *
* @return the new compound tag * @return the new compound tag
*/ */
public CompoundTag build() { public CompoundTag build() {
return new CompoundTag(new HashMap<String, Tag>(entries)); return new CompoundTag(new HashMap<String, Tag>(this.entries));
} }
/** /**
* Build a new compound tag with this builder's entries. * Build a new compound tag with this builder's entries.
* *
@ -191,7 +192,7 @@ public class CompoundTagBuilder {
* *
* @return the created compound tag * @return the created compound tag
*/ */
public CompoundTag build(final String name) { public CompoundTag build(String name) {
return new CompoundTag(name, new HashMap<String, Tag>(entries)); return new CompoundTag(name, new HashMap<String, Tag>(this.entries));
} }
} }

View File

@ -4,41 +4,41 @@ package com.intellectualcrafters.jnbt;
* The {@code TAG_Double} tag. * The {@code TAG_Double} tag.
*/ */
public final class DoubleTag extends Tag { public final class DoubleTag extends Tag {
private final double value; private final double value;
/** /**
* Creates the tag with an empty name. * Creates the tag with an empty name.
* *
* @param value the value of the tag * @param value the value of the tag
*/ */
public DoubleTag(final double value) { public DoubleTag(double value) {
super();
this.value = value; this.value = value;
} }
/** /**
* Creates the tag. * Creates the tag.
* *
* @param name the name of the tag * @param name the name of the tag
* @param value the value of the tag * @param value the value of the tag
*/ */
public DoubleTag(final String name, final double value) { public DoubleTag(String name, double value) {
super(name); super(name);
this.value = value; this.value = value;
} }
@Override @Override
public Double getValue() { public Double getValue() {
return value; return this.value;
} }
@Override @Override
public String toString() { public String toString() {
final String name = getName(); String name = getName();
String append = ""; String append = "";
if ((name != null) && !name.equals("")) { if (name != null && !name.equals("")) {
append = "(\"" + getName() + "\")"; append = "(\"" + getName() + "\")";
} }
return "TAG_Double" + append + ": " + value; return "TAG_Double" + append + ": " + this.value;
} }
} }

View File

@ -4,18 +4,18 @@ package com.intellectualcrafters.jnbt;
* The {@code TAG_End} tag. * The {@code TAG_End} tag.
*/ */
public final class EndTag extends Tag { public final class EndTag extends Tag {
/** /**
* Creates the tag. * Creates the tag.
*/ */
public EndTag() { public EndTag() {
super();
} }
@Override @Override
public Object getValue() { public Object getValue() {
return null; return null;
} }
@Override @Override
public String toString() { public String toString() {
return "TAG_End"; return "TAG_End";

View File

@ -4,41 +4,41 @@ package com.intellectualcrafters.jnbt;
* The {@code TAG_Float} tag. * The {@code TAG_Float} tag.
*/ */
public final class FloatTag extends Tag { public final class FloatTag extends Tag {
private final float value; private final float value;
/** /**
* Creates the tag with an empty name. * Creates the tag with an empty name.
* *
* @param value the value of the tag * @param value the value of the tag
*/ */
public FloatTag(final float value) { public FloatTag(float value) {
super();
this.value = value; this.value = value;
} }
/** /**
* Creates the tag. * Creates the tag.
* *
* @param name the name of the tag * @param name the name of the tag
* @param value the value of the tag * @param value the value of the tag
*/ */
public FloatTag(final String name, final float value) { public FloatTag(String name, float value) {
super(name); super(name);
this.value = value; this.value = value;
} }
@Override @Override
public Float getValue() { public Float getValue() {
return value; return this.value;
} }
@Override @Override
public String toString() { public String toString() {
final String name = getName(); String name = getName();
String append = ""; String append = "";
if ((name != null) && !name.equals("")) { if (name != null && !name.equals("")) {
append = "(\"" + getName() + "\")"; append = "(\"" + getName() + "\")";
} }
return "TAG_Float" + append + ": " + value; return "TAG_Float" + append + ": " + this.value;
} }
} }

View File

@ -6,49 +6,49 @@ import static com.google.common.base.Preconditions.checkNotNull;
* The {@code TAG_Int_Array} tag. * The {@code TAG_Int_Array} tag.
*/ */
public final class IntArrayTag extends Tag { public final class IntArrayTag extends Tag {
private final int[] value; private final int[] value;
/** /**
* Creates the tag with an empty name. * Creates the tag with an empty name.
* *
* @param value the value of the tag * @param value the value of the tag
*/ */
public IntArrayTag(final int[] value) { public IntArrayTag(int[] value) {
super();
checkNotNull(value); checkNotNull(value);
this.value = value; this.value = value;
} }
/** /**
* Creates the tag. * Creates the tag.
* *
* @param name the name of the tag * @param name the name of the tag
* @param value the value of the tag * @param value the value of the tag
*/ */
public IntArrayTag(final String name, final int[] value) { public IntArrayTag(String name, int[] value) {
super(name); super(name);
checkNotNull(value); checkNotNull(value);
this.value = value; this.value = value;
} }
@Override @Override
public int[] getValue() { public int[] getValue() {
return value; return this.value;
} }
@Override @Override
public String toString() { public String toString() {
final StringBuilder hex = new StringBuilder(); StringBuilder hex = new StringBuilder();
for (final int b : value) { for (int b : this.value) {
final String hexDigits = Integer.toHexString(b).toUpperCase(); String hexDigits = Integer.toHexString(b).toUpperCase();
if (hexDigits.length() == 1) { if (hexDigits.length() == 1) {
hex.append("0"); hex.append("0");
} }
hex.append(hexDigits).append(" "); hex.append(hexDigits).append(" ");
} }
final String name = getName(); String name = getName();
String append = ""; String append = "";
if ((name != null) && !name.equals("")) { if (name != null && !name.equals("")) {
append = "(\"" + getName() + "\")"; append = "(\"" + getName() + "\")";
} }
return "TAG_Int_Array" + append + ": " + hex; return "TAG_Int_Array" + append + ": " + hex;

View File

@ -4,41 +4,41 @@ package com.intellectualcrafters.jnbt;
* The {@code TAG_Int} tag. * The {@code TAG_Int} tag.
*/ */
public final class IntTag extends Tag { public final class IntTag extends Tag {
private final int value; private final int value;
/** /**
* Creates the tag with an empty name. * Creates the tag with an empty name.
* *
* @param value the value of the tag * @param value the value of the tag
*/ */
public IntTag(final int value) { public IntTag(int value) {
super();
this.value = value; this.value = value;
} }
/** /**
* Creates the tag. * Creates the tag.
* *
* @param name the name of the tag * @param name the name of the tag
* @param value the value of the tag * @param value the value of the tag
*/ */
public IntTag(final String name, final int value) { public IntTag(String name, int value) {
super(name); super(name);
this.value = value; this.value = value;
} }
@Override @Override
public Integer getValue() { public Integer getValue() {
return value; return this.value;
} }
@Override @Override
public String toString() { public String toString() {
final String name = getName(); String name = getName();
String append = ""; String append = "";
if ((name != null) && !name.equals("")) { if (name != null && !name.equals("")) {
append = "(\"" + getName() + "\")"; append = "(\"" + getName() + "\")";
} }
return "TAG_Int" + append + ": " + value; return "TAG_Int" + append + ": " + this.value;
} }
} }

View File

@ -10,22 +10,22 @@ import java.util.NoSuchElementException;
* The {@code TAG_List} tag. * The {@code TAG_List} tag.
*/ */
public final class ListTag extends Tag { public final class ListTag extends Tag {
private final Class<? extends Tag> type; private final Class<? extends Tag> type;
private final List<Tag> value; private final List<Tag> value;
/** /**
* Creates the tag with an empty name. * Creates the tag with an empty name.
* *
* @param type the type of tag * @param type the type of tag
* @param value the value of the tag * @param value the value of the tag
*/ */
public ListTag(final Class<? extends Tag> type, final List<? extends Tag> value) { public ListTag(Class<? extends Tag> type, List<? extends Tag> value) {
super();
checkNotNull(value); checkNotNull(value);
this.type = type; this.type = type;
this.value = Collections.unmodifiableList(value); this.value = Collections.unmodifiableList(value);
} }
/** /**
* Creates the tag. * Creates the tag.
* *
@ -33,27 +33,27 @@ public final class ListTag extends Tag {
* @param type the type of tag * @param type the type of tag
* @param value the value of the tag * @param value the value of the tag
*/ */
public ListTag(final String name, final Class<? extends Tag> type, final List<? extends Tag> value) { public ListTag(String name, Class<? extends Tag> type, List<? extends Tag> value) {
super(name); super(name);
checkNotNull(value); checkNotNull(value);
this.type = type; this.type = type;
this.value = Collections.unmodifiableList(value); this.value = Collections.unmodifiableList(value);
} }
/** /**
* Gets the type of item in this list. * Gets the type of item in this list.
* *
* @return The type of item in this list. * @return The type of item in this list.
*/ */
public Class<? extends Tag> getType() { public Class<? extends Tag> getType() {
return type; return this.type;
} }
@Override @Override
public List<Tag> getValue() { public List<Tag> getValue() {
return value; return this.value;
} }
/** /**
* Create a new list tag with this tag's name and type. * Create a new list tag with this tag's name and type.
* *
@ -61,10 +61,10 @@ public final class ListTag extends Tag {
* *
* @return a new list tag * @return a new list tag
*/ */
public ListTag setValue(final List<Tag> list) { public ListTag setValue(List<Tag> list) {
return new ListTag(getName(), getType(), list); return new ListTag(getName(), getType(), list);
} }
/** /**
* Get the tag if it exists at the given index. * Get the tag if it exists at the given index.
* *
@ -72,14 +72,14 @@ public final class ListTag extends Tag {
* *
* @return the tag or null * @return the tag or null
*/ */
public Tag getIfExists(final int index) { public Tag getIfExists(int index) {
try { try {
return value.get(index); return this.value.get(index);
} catch (final NoSuchElementException e) { } catch (NoSuchElementException e) {
return null; return null;
} }
} }
/** /**
* Get a byte array named with the given index. <p> If the index does not exist or its value is not a byte * Get a byte array named with the given index. <p> If the index does not exist or its value is not a byte
* array tag, then an empty byte array will be returned. </p> * array tag, then an empty byte array will be returned. </p>
@ -88,15 +88,15 @@ public final class ListTag extends Tag {
* *
* @return a byte array * @return a byte array
*/ */
public byte[] getByteArray(final int index) { public byte[] getByteArray(int index) {
final Tag tag = getIfExists(index); Tag tag = getIfExists(index);
if (tag instanceof ByteArrayTag) { if (tag instanceof ByteArrayTag) {
return ((ByteArrayTag) tag).getValue(); return ((ByteArrayTag) tag).getValue();
} else { } else {
return new byte[0]; return new byte[0];
} }
} }
/** /**
* Get a byte named with the given index. <p> If the index does not exist or its value is not a byte tag, then * Get a byte named with the given index. <p> If the index does not exist or its value is not a byte tag, then
* {@code 0} will be returned. </p> * {@code 0} will be returned. </p>
@ -105,15 +105,15 @@ public final class ListTag extends Tag {
* *
* @return a byte * @return a byte
*/ */
public byte getByte(final int index) { public byte getByte(int index) {
final Tag tag = getIfExists(index); Tag tag = getIfExists(index);
if (tag instanceof ByteTag) { if (tag instanceof ByteTag) {
return ((ByteTag) tag).getValue(); return ((ByteTag) tag).getValue();
} else { } else {
return (byte) 0; return (byte) 0;
} }
} }
/** /**
* Get a double named with the given index. <p> If the index does not exist or its value is not a double tag, * Get a double named with the given index. <p> If the index does not exist or its value is not a double tag,
* then {@code 0} will be returned. </p> * then {@code 0} will be returned. </p>
@ -122,15 +122,15 @@ public final class ListTag extends Tag {
* *
* @return a double * @return a double
*/ */
public double getDouble(final int index) { public double getDouble(int index) {
final Tag tag = getIfExists(index); Tag tag = getIfExists(index);
if (tag instanceof DoubleTag) { if (tag instanceof DoubleTag) {
return ((DoubleTag) tag).getValue(); return ((DoubleTag) tag).getValue();
} else { } else {
return 0; return 0;
} }
} }
/** /**
* Get a double named with the given index, even if it's another type of number. <p> If the index does not * Get a double named with the given index, even if it's another type of number. <p> If the index does not
* exist or its value is not a number, then {@code 0} will be returned. </p> * exist or its value is not a number, then {@code 0} will be returned. </p>
@ -139,8 +139,8 @@ public final class ListTag extends Tag {
* *
* @return a double * @return a double
*/ */
public double asDouble(final int index) { public double asDouble(int index) {
final Tag tag = getIfExists(index); Tag tag = getIfExists(index);
if (tag instanceof ByteTag) { if (tag instanceof ByteTag) {
return ((ByteTag) tag).getValue(); return ((ByteTag) tag).getValue();
} else if (tag instanceof ShortTag) { } else if (tag instanceof ShortTag) {
@ -157,7 +157,7 @@ public final class ListTag extends Tag {
return 0; return 0;
} }
} }
/** /**
* Get a float named with the given index. <p> If the index does not exist or its value is not a float tag, * Get a float named with the given index. <p> If the index does not exist or its value is not a float tag,
* then {@code 0} will be returned. </p> * then {@code 0} will be returned. </p>
@ -166,15 +166,15 @@ public final class ListTag extends Tag {
* *
* @return a float * @return a float
*/ */
public float getFloat(final int index) { public float getFloat(int index) {
final Tag tag = getIfExists(index); Tag tag = getIfExists(index);
if (tag instanceof FloatTag) { if (tag instanceof FloatTag) {
return ((FloatTag) tag).getValue(); return ((FloatTag) tag).getValue();
} else { } else {
return 0; return 0;
} }
} }
/** /**
* Get a {@code int[]} named with the given index. <p> If the index does not exist or its value is not an int * Get a {@code int[]} named with the given index. <p> If the index does not exist or its value is not an int
* array tag, then an empty array will be returned. </p> * array tag, then an empty array will be returned. </p>
@ -183,15 +183,15 @@ public final class ListTag extends Tag {
* *
* @return an int array * @return an int array
*/ */
public int[] getIntArray(final int index) { public int[] getIntArray(int index) {
final Tag tag = getIfExists(index); Tag tag = getIfExists(index);
if (tag instanceof IntArrayTag) { if (tag instanceof IntArrayTag) {
return ((IntArrayTag) tag).getValue(); return ((IntArrayTag) tag).getValue();
} else { } else {
return new int[0]; return new int[0];
} }
} }
/** /**
* Get an int named with the given index. <p> If the index does not exist or its value is not an int tag, then * Get an int named with the given index. <p> If the index does not exist or its value is not an int tag, then
* {@code 0} will be returned. </p> * {@code 0} will be returned. </p>
@ -200,15 +200,15 @@ public final class ListTag extends Tag {
* *
* @return an int * @return an int
*/ */
public int getInt(final int index) { public int getInt(int index) {
final Tag tag = getIfExists(index); Tag tag = getIfExists(index);
if (tag instanceof IntTag) { if (tag instanceof IntTag) {
return ((IntTag) tag).getValue(); return ((IntTag) tag).getValue();
} else { } else {
return 0; return 0;
} }
} }
/** /**
* Get an int named with the given index, even if it's another type of number. <p> If the index does not exist * Get an int named with the given index, even if it's another type of number. <p> If the index does not exist
* or its value is not a number, then {@code 0} will be returned. </p> * or its value is not a number, then {@code 0} will be returned. </p>
@ -217,8 +217,8 @@ public final class ListTag extends Tag {
* *
* @return an int * @return an int
*/ */
public int asInt(final int index) { public int asInt(int index) {
final Tag tag = getIfExists(index); Tag tag = getIfExists(index);
if (tag instanceof ByteTag) { if (tag instanceof ByteTag) {
return ((ByteTag) tag).getValue(); return ((ByteTag) tag).getValue();
} else if (tag instanceof ShortTag) { } else if (tag instanceof ShortTag) {
@ -235,7 +235,7 @@ public final class ListTag extends Tag {
return 0; return 0;
} }
} }
/** /**
* Get a list of tags named with the given index. <p> If the index does not exist or its value is not a list * Get a list of tags named with the given index. <p> If the index does not exist or its value is not a list
* tag, then an empty list will be returned. </p> * tag, then an empty list will be returned. </p>
@ -244,15 +244,15 @@ public final class ListTag extends Tag {
* *
* @return a list of tags * @return a list of tags
*/ */
public List<Tag> getList(final int index) { public List<Tag> getList(int index) {
final Tag tag = getIfExists(index); Tag tag = getIfExists(index);
if (tag instanceof ListTag) { if (tag instanceof ListTag) {
return ((ListTag) tag).getValue(); return ((ListTag) tag).getValue();
} else { } else {
return Collections.emptyList(); return Collections.emptyList();
} }
} }
/** /**
* Get a {@code TagList} named with the given index. <p> If the index does not exist or its value is not a list * Get a {@code TagList} named with the given index. <p> If the index does not exist or its value is not a list
* tag, then an empty tag list will be returned. </p> * tag, then an empty tag list will be returned. </p>
@ -261,15 +261,15 @@ public final class ListTag extends Tag {
* *
* @return a tag list instance * @return a tag list instance
*/ */
public ListTag getListTag(final int index) { public ListTag getListTag(int index) {
final Tag tag = getIfExists(index); Tag tag = getIfExists(index);
if (tag instanceof ListTag) { if (tag instanceof ListTag) {
return (ListTag) tag; return (ListTag) tag;
} else { } else {
return new ListTag(StringTag.class, Collections.<Tag> emptyList()); return new ListTag(StringTag.class, Collections.<Tag>emptyList());
} }
} }
/** /**
* Get a list of tags named with the given index. <p> If the index does not exist or its value is not a list * Get a list of tags named with the given index. <p> If the index does not exist or its value is not a list
* tag, then an empty list will be returned. If the given index references a list but the list of of a different * tag, then an empty list will be returned. If the given index references a list but the list of of a different
@ -282,10 +282,10 @@ public final class ListTag extends Tag {
* @return a list of tags * @return a list of tags
*/ */
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
public <T extends Tag> List<T> getList(final int index, final Class<T> listType) { public <T extends Tag> List<T> getList(int index, Class<T> listType) {
final Tag tag = getIfExists(index); Tag tag = getIfExists(index);
if (tag instanceof ListTag) { if (tag instanceof ListTag) {
final ListTag listTag = (ListTag) tag; ListTag listTag = (ListTag) tag;
if (listTag.getType().equals(listType)) { if (listTag.getType().equals(listType)) {
return (List<T>) listTag.getValue(); return (List<T>) listTag.getValue();
} else { } else {
@ -295,7 +295,7 @@ public final class ListTag extends Tag {
return Collections.emptyList(); return Collections.emptyList();
} }
} }
/** /**
* Get a long named with the given index. <p> If the index does not exist or its value is not a long tag, then * Get a long named with the given index. <p> If the index does not exist or its value is not a long tag, then
* {@code 0} will be returned. </p> * {@code 0} will be returned. </p>
@ -304,15 +304,15 @@ public final class ListTag extends Tag {
* *
* @return a long * @return a long
*/ */
public long getLong(final int index) { public long getLong(int index) {
final Tag tag = getIfExists(index); Tag tag = getIfExists(index);
if (tag instanceof LongTag) { if (tag instanceof LongTag) {
return ((LongTag) tag).getValue(); return ((LongTag) tag).getValue();
} else { } else {
return 0L; return 0L;
} }
} }
/** /**
* Get a long named with the given index, even if it's another type of number. <p> If the index does not exist * Get a long named with the given index, even if it's another type of number. <p> If the index does not exist
* or its value is not a number, then {@code 0} will be returned. </p> * or its value is not a number, then {@code 0} will be returned. </p>
@ -321,8 +321,8 @@ public final class ListTag extends Tag {
* *
* @return a long * @return a long
*/ */
public long asLong(final int index) { public long asLong(int index) {
final Tag tag = getIfExists(index); Tag tag = getIfExists(index);
if (tag instanceof ByteTag) { if (tag instanceof ByteTag) {
return ((ByteTag) tag).getValue(); return ((ByteTag) tag).getValue();
} else if (tag instanceof ShortTag) { } else if (tag instanceof ShortTag) {
@ -339,7 +339,7 @@ public final class ListTag extends Tag {
return 0; return 0;
} }
} }
/** /**
* Get a short named with the given index. <p> If the index does not exist or its value is not a short tag, * Get a short named with the given index. <p> If the index does not exist or its value is not a short tag,
* then {@code 0} will be returned. </p> * then {@code 0} will be returned. </p>
@ -348,15 +348,15 @@ public final class ListTag extends Tag {
* *
* @return a short * @return a short
*/ */
public short getShort(final int index) { public short getShort(int index) {
final Tag tag = getIfExists(index); Tag tag = getIfExists(index);
if (tag instanceof ShortTag) { if (tag instanceof ShortTag) {
return ((ShortTag) tag).getValue(); return ((ShortTag) tag).getValue();
} else { } else {
return 0; return 0;
} }
} }
/** /**
* Get a string named with the given index. <p> If the index does not exist or its value is not a string tag, * Get a string named with the given index. <p> If the index does not exist or its value is not a string tag,
* then {@code ""} will be returned. </p> * then {@code ""} will be returned. </p>
@ -365,25 +365,27 @@ public final class ListTag extends Tag {
* *
* @return a string * @return a string
*/ */
public String getString(final int index) { public String getString(int index) {
final Tag tag = getIfExists(index); Tag tag = getIfExists(index);
if (tag instanceof StringTag) { if (tag instanceof StringTag) {
return ((StringTag) tag).getValue(); return ((StringTag) tag).getValue();
} else { } else {
return ""; return "";
} }
} }
@Override @Override
public String toString() { public String toString() {
final String name = getName(); String name = getName();
String append = ""; String append = "";
if ((name != null) && !name.equals("")) { if (name != null && !name.equals("")) {
append = "(\"" + getName() + "\")"; append = "(\"" + getName() + "\")";
} }
final StringBuilder bldr = new StringBuilder(); StringBuilder bldr = new StringBuilder();
bldr.append("TAG_List").append(append).append(": ").append(value.size()).append(" entries of type ").append(NBTUtils.getTypeName(type)).append("\r\n{\r\n"); bldr.append("TAG_List").append(append).append(": ").append(this.value.size()).append(" entries of type ")
for (final Tag t : value) { .append(NBTUtils.getTypeName(this.type))
.append("\r\n{\r\n");
for (Tag t : this.value) {
bldr.append(" ").append(t.toString().replaceAll("\r\n", "\r\n ")).append("\r\n"); bldr.append(" ").append(t.toString().replaceAll("\r\n", "\r\n ")).append("\r\n");
} }
bldr.append("}"); bldr.append("}");

View File

@ -11,20 +11,21 @@ import java.util.List;
* Helps create list tags. * Helps create list tags.
*/ */
public class ListTagBuilder { public class ListTagBuilder {
private final Class<? extends Tag> type; private final Class<? extends Tag> type;
private final List<Tag> entries; private final List<Tag> entries;
/** /**
* Create a new instance. * Create a new instance.
* *
* @param type of tag contained in this list * @param type of tag contained in this list
*/ */
ListTagBuilder(final Class<? extends Tag> type) { ListTagBuilder(Class<? extends Tag> type) {
checkNotNull(type); checkNotNull(type);
this.type = type; this.type = type;
entries = new ArrayList<Tag>(); this.entries = new ArrayList<Tag>();
} }
/** /**
* Create a new builder instance. * Create a new builder instance.
* *
@ -32,10 +33,10 @@ public class ListTagBuilder {
* *
* @return a new builder * @return a new builder
*/ */
public static ListTagBuilder create(final Class<? extends Tag> type) { public static ListTagBuilder create(Class<? extends Tag> type) {
return new ListTagBuilder(type); return new ListTagBuilder(type);
} }
/** /**
* Create a new builder instance. * Create a new builder instance.
* *
@ -45,22 +46,22 @@ public class ListTagBuilder {
* @return a new builder * @return a new builder
*/ */
@SafeVarargs @SafeVarargs
public static <T extends Tag> ListTagBuilder createWith(final T... entries) { public static <T extends Tag> ListTagBuilder createWith(T... entries) {
checkNotNull(entries); checkNotNull(entries);
if (entries.length == 0) { if (entries.length == 0) {
throw new IllegalArgumentException("This method needs an array of at least one entry"); throw new IllegalArgumentException("This method needs an array of at least one entry");
} }
final Class<? extends Tag> type = entries[0].getClass(); Class<? extends Tag> type = entries[0].getClass();
for (int i = 1; i < entries.length; i++) { for (int i = 1; i < entries.length; i++) {
if (!type.isInstance(entries[i])) { if (!type.isInstance(entries[i])) {
throw new IllegalArgumentException("An array of different tag types was provided"); throw new IllegalArgumentException("An array of different tag types was provided");
} }
} }
final ListTagBuilder builder = new ListTagBuilder(type); ListTagBuilder builder = new ListTagBuilder(type);
builder.addAll(Arrays.asList(entries)); builder.addAll(Arrays.asList(entries));
return builder; return builder;
} }
/** /**
* Add the given tag. * Add the given tag.
* *
@ -68,15 +69,15 @@ public class ListTagBuilder {
* *
* @return this object * @return this object
*/ */
public ListTagBuilder add(final Tag value) { public ListTagBuilder add(Tag value) {
checkNotNull(value); checkNotNull(value);
if (!type.isInstance(value)) { if (!this.type.isInstance(value)) {
throw new IllegalArgumentException(value.getClass().getCanonicalName() + " is not of expected type " + type.getCanonicalName()); throw new IllegalArgumentException(value.getClass().getCanonicalName() + " is not of expected type " + this.type.getCanonicalName());
} }
entries.add(value); this.entries.add(value);
return this; return this;
} }
/** /**
* Add all the tags in the given list. * Add all the tags in the given list.
* *
@ -84,23 +85,23 @@ public class ListTagBuilder {
* *
* @return this object * @return this object
*/ */
public ListTagBuilder addAll(final Collection<? extends Tag> value) { public ListTagBuilder addAll(Collection<? extends Tag> value) {
checkNotNull(value); checkNotNull(value);
for (final Tag v : value) { for (Tag v : value) {
add(v); add(v);
} }
return this; return this;
} }
/** /**
* Build an unnamed list tag with this builder's entries. * Build an unnamed list tag with this builder's entries.
* *
* @return the new list tag * @return the new list tag
*/ */
public ListTag build() { public ListTag build() {
return new ListTag(type, new ArrayList<Tag>(entries)); return new ListTag(this.type, new ArrayList<Tag>(this.entries));
} }
/** /**
* Build a new list tag with this builder's entries. * Build a new list tag with this builder's entries.
* *
@ -108,7 +109,7 @@ public class ListTagBuilder {
* *
* @return the created list tag * @return the created list tag
*/ */
public ListTag build(final String name) { public ListTag build(String name) {
return new ListTag(name, type, new ArrayList<Tag>(entries)); return new ListTag(name, this.type, new ArrayList<Tag>(this.entries));
} }
} }

View File

@ -4,41 +4,41 @@ package com.intellectualcrafters.jnbt;
* The {@code TAG_Long} tag. * The {@code TAG_Long} tag.
*/ */
public final class LongTag extends Tag { public final class LongTag extends Tag {
private final long value; private final long value;
/** /**
* Creates the tag with an empty name. * Creates the tag with an empty name.
* *
* @param value the value of the tag * @param value the value of the tag
*/ */
public LongTag(final long value) { public LongTag(long value) {
super();
this.value = value; this.value = value;
} }
/** /**
* Creates the tag. * Creates the tag.
* *
* @param name the name of the tag * @param name the name of the tag
* @param value the value of the tag * @param value the value of the tag
*/ */
public LongTag(final String name, final long value) { public LongTag(String name, long value) {
super(name); super(name);
this.value = value; this.value = value;
} }
@Override @Override
public Long getValue() { public Long getValue() {
return value; return this.value;
} }
@Override @Override
public String toString() { public String toString() {
final String name = getName(); String name = getName();
String append = ""; String append = "";
if ((name != null) && !name.equals("")) { if (name != null && !name.equals("")) {
append = "(\"" + getName() + "\")"; append = "(\"" + getName() + "\")";
} }
return "TAG_Long" + append + ": " + value; return "TAG_Long" + append + ": " + this.value;
} }
} }

View File

@ -9,14 +9,16 @@ import java.nio.charset.StandardCharsets;
public final class NBTConstants { public final class NBTConstants {
public static final Charset CHARSET = StandardCharsets.UTF_8; public static final Charset CHARSET = StandardCharsets.UTF_8;
public static final int TYPE_END = 0, TYPE_BYTE = 1, TYPE_SHORT = 2, TYPE_INT = 3, TYPE_LONG = 4, TYPE_FLOAT = 5, TYPE_DOUBLE = 6, TYPE_BYTE_ARRAY = 7, TYPE_STRING = 8, TYPE_LIST = 9, public static final int TYPE_END = 0, TYPE_BYTE = 1, TYPE_SHORT = 2, TYPE_INT = 3, TYPE_LONG = 4, TYPE_FLOAT = 5, TYPE_DOUBLE = 6,
TYPE_COMPOUND = 10, TYPE_INT_ARRAY = 11; TYPE_BYTE_ARRAY = 7, TYPE_STRING = 8, TYPE_LIST = 9,
TYPE_COMPOUND = 10, TYPE_INT_ARRAY = 11;
/** /**
* Default private constructor. * Default private constructor.
*/ */
private NBTConstants() {} private NBTConstants() {
}
/** /**
* Convert a type ID to its corresponding {@link Tag} class. * Convert a type ID to its corresponding {@link Tag} class.
* *
@ -26,7 +28,7 @@ public final class NBTConstants {
* *
* @throws IllegalArgumentException thrown if the tag ID is not valid * @throws IllegalArgumentException thrown if the tag ID is not valid
*/ */
public static Class<? extends Tag> getClassFromType(final int id) { public static Class<? extends Tag> getClassFromType(int id) {
switch (id) { switch (id) {
case TYPE_END: case TYPE_END:
return EndTag.class; return EndTag.class;

View File

@ -15,10 +15,11 @@ import java.util.Map;
* may be found at @linktourl http://www.minecraft.net/docs/NBT.txt"> http://www.minecraft.net/docs/NBT.txt. * may be found at @linktourl http://www.minecraft.net/docs/NBT.txt"> http://www.minecraft.net/docs/NBT.txt.
*/ */
public final class NBTInputStream implements Closeable { public final class NBTInputStream implements Closeable {
private final DataInputStream is; private final DataInputStream is;
private int count; private int count;
/** /**
* Creates a new {@code NBTInputStream}, which will source its data from the specified input stream. * Creates a new {@code NBTInputStream}, which will source its data from the specified input stream.
* *
@ -26,10 +27,10 @@ public final class NBTInputStream implements Closeable {
* *
* @throws IOException if an I/O error occurs * @throws IOException if an I/O error occurs
*/ */
public NBTInputStream(final InputStream is) { public NBTInputStream(InputStream is) {
this.is = new DataInputStream(is); this.is = new DataInputStream(is);
} }
/** /**
* Reads an NBT tag from the stream. * Reads an NBT tag from the stream.
* *
@ -40,7 +41,7 @@ public final class NBTInputStream implements Closeable {
public Tag readTag() throws IOException { public Tag readTag() throws IOException {
return readTag(0, Integer.MAX_VALUE); return readTag(0, Integer.MAX_VALUE);
} }
/** /**
* Reads an NBT tag from the stream. * Reads an NBT tag from the stream.
* *
@ -48,10 +49,10 @@ public final class NBTInputStream implements Closeable {
* *
* @throws IOException if an I/O error occurs. * @throws IOException if an I/O error occurs.
*/ */
public Tag readTag(final int maxDepth) throws IOException { public Tag readTag(int maxDepth) throws IOException {
return readTag(0, maxDepth); return readTag(0, maxDepth);
} }
/** /**
* Reads an NBT from the stream. * Reads an NBT from the stream.
* *
@ -61,23 +62,23 @@ public final class NBTInputStream implements Closeable {
* *
* @throws IOException if an I/O error occurs. * @throws IOException if an I/O error occurs.
*/ */
private Tag readTag(final int depth, final int maxDepth) throws IOException { private Tag readTag(int depth, int maxDepth) throws IOException {
if ((count++) > maxDepth) { if (this.count++ > maxDepth) {
throw new IOException("Exceeds max depth: " + count); throw new IOException("Exceeds max depth: " + this.count);
} }
final int type = is.readByte() & 0xFF; int type = this.is.readByte() & 0xFF;
String name; String name;
if (type != NBTConstants.TYPE_END) { if (type != NBTConstants.TYPE_END) {
final int nameLength = is.readShort() & 0xFFFF; int nameLength = this.is.readShort() & 0xFFFF;
final byte[] nameBytes = new byte[nameLength]; byte[] nameBytes = new byte[nameLength];
is.readFully(nameBytes); this.is.readFully(nameBytes);
name = new String(nameBytes, NBTConstants.CHARSET); name = new String(nameBytes, NBTConstants.CHARSET);
} else { } else {
name = ""; name = "";
} }
return readTagPayload(type, name, depth, maxDepth); return readTagPayload(type, name, depth, maxDepth);
} }
/** /**
* Reads the payload of a tag, given the name and type. * Reads the payload of a tag, given the name and type.
* *
@ -89,11 +90,11 @@ public final class NBTInputStream implements Closeable {
* *
* @throws IOException if an I/O error occurs. * @throws IOException if an I/O error occurs.
*/ */
private Tag readTagPayload(final int type, final String name, final int depth, final int maxDepth) throws IOException { private Tag readTagPayload(int type, String name, int depth, int maxDepth) throws IOException {
if ((count++) > maxDepth) { if (this.count++ > maxDepth) {
throw new IOException("Exceeds max depth: " + count); throw new IOException("Exceeds max depth: " + this.count);
} }
count++; this.count++;
switch (type) { switch (type) {
case NBTConstants.TYPE_END: case NBTConstants.TYPE_END:
if (depth == 0) { if (depth == 0) {
@ -102,54 +103,54 @@ public final class NBTInputStream implements Closeable {
return new EndTag(); return new EndTag();
} }
case NBTConstants.TYPE_BYTE: case NBTConstants.TYPE_BYTE:
return new ByteTag(name, is.readByte()); return new ByteTag(name, this.is.readByte());
case NBTConstants.TYPE_SHORT: case NBTConstants.TYPE_SHORT:
return new ShortTag(name, is.readShort()); return new ShortTag(name, this.is.readShort());
case NBTConstants.TYPE_INT: case NBTConstants.TYPE_INT:
return new IntTag(name, is.readInt()); return new IntTag(name, this.is.readInt());
case NBTConstants.TYPE_LONG: case NBTConstants.TYPE_LONG:
return new LongTag(name, is.readLong()); return new LongTag(name, this.is.readLong());
case NBTConstants.TYPE_FLOAT: case NBTConstants.TYPE_FLOAT:
return new FloatTag(name, is.readFloat()); return new FloatTag(name, this.is.readFloat());
case NBTConstants.TYPE_DOUBLE: case NBTConstants.TYPE_DOUBLE:
return new DoubleTag(name, is.readDouble()); return new DoubleTag(name, this.is.readDouble());
case NBTConstants.TYPE_BYTE_ARRAY: case NBTConstants.TYPE_BYTE_ARRAY:
int length = is.readInt(); int length = this.is.readInt();
// Max depth // Max depth
if ((count += length) > maxDepth) { if ((this.count += length) > maxDepth) {
throw new IOException("Exceeds max depth: " + count); throw new IOException("Exceeds max depth: " + this.count);
// //
} }
byte[] bytes = new byte[length]; byte[] bytes = new byte[length];
is.readFully(bytes); this.is.readFully(bytes);
return new ByteArrayTag(name, bytes); return new ByteArrayTag(name, bytes);
case NBTConstants.TYPE_STRING: case NBTConstants.TYPE_STRING:
length = is.readShort(); length = this.is.readShort();
// Max depth // Max depth
if ((count += length) > maxDepth) { if ((this.count += length) > maxDepth) {
throw new IOException("Exceeds max depth: " + count); throw new IOException("Exceeds max depth: " + this.count);
// //
} }
bytes = new byte[length]; bytes = new byte[length];
is.readFully(bytes); this.is.readFully(bytes);
return new StringTag(name, new String(bytes, NBTConstants.CHARSET)); return new StringTag(name, new String(bytes, NBTConstants.CHARSET));
case NBTConstants.TYPE_LIST: case NBTConstants.TYPE_LIST:
final int childType = is.readByte(); int childType = this.is.readByte();
length = is.readInt(); length = this.is.readInt();
// Max depth // Max depth
if ((count += length) > maxDepth) { if ((this.count += length) > maxDepth) {
throw new IOException("Exceeds max depth: " + count); throw new IOException("Exceeds max depth: " + this.count);
// //
} }
final List<Tag> tagList = new ArrayList<Tag>(); List<Tag> tagList = new ArrayList<Tag>();
for (int i = 0; i < length; ++i) { for (int i = 0; i < length; ++i) {
final Tag tag = readTagPayload(childType, "", depth + 1, maxDepth); Tag tag = readTagPayload(childType, "", depth + 1, maxDepth);
if (tag instanceof EndTag) { if (tag instanceof EndTag) {
throw new IOException("TAG_End not permitted in a list."); throw new IOException("TAG_End not permitted in a list.");
} }
@ -157,9 +158,9 @@ public final class NBTInputStream implements Closeable {
} }
return new ListTag(name, NBTUtils.getTypeClass(childType), tagList); return new ListTag(name, NBTUtils.getTypeClass(childType), tagList);
case NBTConstants.TYPE_COMPOUND: case NBTConstants.TYPE_COMPOUND:
final Map<String, Tag> tagMap = new HashMap<String, Tag>(); Map<String, Tag> tagMap = new HashMap<String, Tag>();
while (true) { while (true) {
final Tag tag = readTag(depth + 1, maxDepth); Tag tag = readTag(depth + 1, maxDepth);
if (tag instanceof EndTag) { if (tag instanceof EndTag) {
break; break;
} else { } else {
@ -168,24 +169,24 @@ public final class NBTInputStream implements Closeable {
} }
return new CompoundTag(name, tagMap); return new CompoundTag(name, tagMap);
case NBTConstants.TYPE_INT_ARRAY: case NBTConstants.TYPE_INT_ARRAY:
length = is.readInt(); length = this.is.readInt();
// Max depth // Max depth
if ((count += length) > maxDepth) { if ((this.count += length) > maxDepth) {
throw new IOException("Exceeds max depth: " + count); throw new IOException("Exceeds max depth: " + this.count);
} }
// //
final int[] data = new int[length]; int[] data = new int[length];
for (int i = 0; i < length; i++) { for (int i = 0; i < length; i++) {
data[i] = is.readInt(); data[i] = this.is.readInt();
} }
return new IntArrayTag(name, data); return new IntArrayTag(name, data);
default: default:
throw new IOException("Invalid tag type: " + type + "."); throw new IOException("Invalid tag type: " + type + ".");
} }
} }
@Override @Override
public void close() throws IOException { public void close() throws IOException {
is.close(); this.is.close();
} }
} }

View File

@ -16,11 +16,12 @@ import java.util.List;
* @author Graham Edgecombe * @author Graham Edgecombe
*/ */
public final class NBTOutputStream implements Closeable { public final class NBTOutputStream implements Closeable {
/** /**
* The output stream. * The output stream.
*/ */
private final DataOutputStream os; private final DataOutputStream os;
/** /**
* Creates a new <code>NBTOutputStream</code>, which will write data to the specified underlying output stream. * Creates a new <code>NBTOutputStream</code>, which will write data to the specified underlying output stream.
* *
@ -31,7 +32,7 @@ public final class NBTOutputStream implements Closeable {
public NBTOutputStream(OutputStream os) { public NBTOutputStream(OutputStream os) {
this.os = new DataOutputStream(os); this.os = new DataOutputStream(os);
} }
/** /**
* Writes a tag. * Writes a tag.
* *
@ -51,7 +52,7 @@ public final class NBTOutputStream implements Closeable {
} }
writeTagPayload(tag); writeTagPayload(tag);
} }
/** /**
* Writes tag payload. * Writes tag payload.
* *
@ -102,7 +103,7 @@ public final class NBTOutputStream implements Closeable {
throw new IOException("Invalid tag type: " + type + "."); throw new IOException("Invalid tag type: " + type + ".");
} }
} }
/** /**
* Writes a <code>TAG_Byte</code> tag. * Writes a <code>TAG_Byte</code> tag.
* *
@ -113,7 +114,7 @@ public final class NBTOutputStream implements Closeable {
private void writeByteTagPayload(ByteTag tag) throws IOException { private void writeByteTagPayload(ByteTag tag) throws IOException {
this.os.writeByte(tag.getValue()); this.os.writeByte(tag.getValue());
} }
/** /**
* Writes a <code>TAG_Byte_Array</code> tag. * Writes a <code>TAG_Byte_Array</code> tag.
* *
@ -126,7 +127,7 @@ public final class NBTOutputStream implements Closeable {
this.os.writeInt(bytes.length); this.os.writeInt(bytes.length);
this.os.write(bytes); this.os.write(bytes);
} }
/** /**
* Writes a <code>TAG_Compound</code> tag. * Writes a <code>TAG_Compound</code> tag.
* *
@ -140,7 +141,7 @@ public final class NBTOutputStream implements Closeable {
} }
this.os.writeByte((byte) 0); // end tag - better way? this.os.writeByte((byte) 0); // end tag - better way?
} }
/** /**
* Writes a <code>TAG_List</code> tag. * Writes a <code>TAG_List</code> tag.
* *
@ -158,7 +159,7 @@ public final class NBTOutputStream implements Closeable {
writeTagPayload(tag1); writeTagPayload(tag1);
} }
} }
/** /**
* Writes a <code>TAG_String</code> tag. * Writes a <code>TAG_String</code> tag.
* *
@ -171,7 +172,7 @@ public final class NBTOutputStream implements Closeable {
this.os.writeShort(bytes.length); this.os.writeShort(bytes.length);
this.os.write(bytes); this.os.write(bytes);
} }
/** /**
* Writes a <code>TAG_Double</code> tag. * Writes a <code>TAG_Double</code> tag.
* *
@ -182,7 +183,7 @@ public final class NBTOutputStream implements Closeable {
private void writeDoubleTagPayload(DoubleTag tag) throws IOException { private void writeDoubleTagPayload(DoubleTag tag) throws IOException {
this.os.writeDouble(tag.getValue()); this.os.writeDouble(tag.getValue());
} }
/** /**
* Writes a <code>TAG_Float</code> tag. * Writes a <code>TAG_Float</code> tag.
* *
@ -193,7 +194,7 @@ public final class NBTOutputStream implements Closeable {
private void writeFloatTagPayload(FloatTag tag) throws IOException { private void writeFloatTagPayload(FloatTag tag) throws IOException {
this.os.writeFloat(tag.getValue()); this.os.writeFloat(tag.getValue());
} }
/** /**
* Writes a <code>TAG_Long</code> tag. * Writes a <code>TAG_Long</code> tag.
* *
@ -204,7 +205,7 @@ public final class NBTOutputStream implements Closeable {
private void writeLongTagPayload(LongTag tag) throws IOException { private void writeLongTagPayload(LongTag tag) throws IOException {
this.os.writeLong(tag.getValue()); this.os.writeLong(tag.getValue());
} }
/** /**
* Writes a <code>TAG_Int</code> tag. * Writes a <code>TAG_Int</code> tag.
* *
@ -215,7 +216,7 @@ public final class NBTOutputStream implements Closeable {
private void writeIntTagPayload(IntTag tag) throws IOException { private void writeIntTagPayload(IntTag tag) throws IOException {
this.os.writeInt(tag.getValue()); this.os.writeInt(tag.getValue());
} }
/** /**
* Writes a <code>TAG_Short</code> tag. * Writes a <code>TAG_Short</code> tag.
* *
@ -226,7 +227,7 @@ public final class NBTOutputStream implements Closeable {
private void writeShortTagPayload(ShortTag tag) throws IOException { private void writeShortTagPayload(ShortTag tag) throws IOException {
this.os.writeShort(tag.getValue()); this.os.writeShort(tag.getValue());
} }
/** /**
* Writes a <code>TAG_Empty</code> tag. * Writes a <code>TAG_Empty</code> tag.
* *
@ -243,12 +244,12 @@ public final class NBTOutputStream implements Closeable {
this.os.writeInt(element); this.os.writeInt(element);
} }
} }
@Override @Override
public void close() throws IOException { public void close() throws IOException {
this.os.close(); this.os.close();
} }
/** /**
* Flush output * Flush output
* @throws IOException * @throws IOException

View File

@ -6,11 +6,13 @@ import java.util.Map;
* A class which contains NBT-related utility methods. * A class which contains NBT-related utility methods.
*/ */
public final class NBTUtils { public final class NBTUtils {
/** /**
* Default private constructor. * Default private constructor.
*/ */
private NBTUtils() {} private NBTUtils() {
}
/** /**
* Gets the type name of a tag. * Gets the type name of a tag.
* *
@ -18,7 +20,7 @@ public final class NBTUtils {
* *
* @return The type name. * @return The type name.
*/ */
public static String getTypeName(final Class<? extends Tag> clazz) { public static String getTypeName(Class<? extends Tag> clazz) {
if (clazz.equals(ByteArrayTag.class)) { if (clazz.equals(ByteArrayTag.class)) {
return "TAG_Byte_Array"; return "TAG_Byte_Array";
} else if (clazz.equals(ByteTag.class)) { } else if (clazz.equals(ByteTag.class)) {
@ -47,7 +49,7 @@ public final class NBTUtils {
throw new IllegalArgumentException("Invalid tag class (" + clazz.getName() + ")."); throw new IllegalArgumentException("Invalid tag class (" + clazz.getName() + ").");
} }
} }
/** /**
* Gets the type code of a tag class. * Gets the type code of a tag class.
* *
@ -57,7 +59,7 @@ public final class NBTUtils {
* *
* @throws IllegalArgumentException if the tag class is invalid. * @throws IllegalArgumentException if the tag class is invalid.
*/ */
public static int getTypeCode(final Class<? extends Tag> clazz) { public static int getTypeCode(Class<? extends Tag> clazz) {
if (clazz.equals(ByteArrayTag.class)) { if (clazz.equals(ByteArrayTag.class)) {
return NBTConstants.TYPE_BYTE_ARRAY; return NBTConstants.TYPE_BYTE_ARRAY;
} else if (clazz.equals(ByteTag.class)) { } else if (clazz.equals(ByteTag.class)) {
@ -86,7 +88,7 @@ public final class NBTUtils {
throw new IllegalArgumentException("Invalid tag class (" + clazz.getName() + ")."); throw new IllegalArgumentException("Invalid tag class (" + clazz.getName() + ").");
} }
} }
/** /**
* Gets the class of a type of tag. * Gets the class of a type of tag.
* *
@ -96,7 +98,7 @@ public final class NBTUtils {
* *
* @throws IllegalArgumentException if the tag type is invalid. * @throws IllegalArgumentException if the tag type is invalid.
*/ */
public static Class<? extends Tag> getTypeClass(final int type) { public static Class<? extends Tag> getTypeClass(int type) {
switch (type) { switch (type) {
case NBTConstants.TYPE_END: case NBTConstants.TYPE_END:
return EndTag.class; return EndTag.class;
@ -126,7 +128,7 @@ public final class NBTUtils {
throw new IllegalArgumentException("Invalid tag type : " + type + "."); throw new IllegalArgumentException("Invalid tag type : " + type + ".");
} }
} }
/** /**
* Get child tag of a NBT structure. * Get child tag of a NBT structure.
* *
@ -137,11 +139,12 @@ public final class NBTUtils {
* *
* @return child tag * @return child tag
*/ */
public static <T extends Tag> T getChildTag(final Map<String, Tag> items, final String key, final Class<T> expected) throws IllegalArgumentException { public static <T extends Tag> T getChildTag(Map<String, Tag> items, String key, Class<T> expected)
throws IllegalArgumentException {
if (!items.containsKey(key)) { if (!items.containsKey(key)) {
throw new IllegalArgumentException("Missing a \"" + key + "\" tag"); throw new IllegalArgumentException("Missing a \"" + key + "\" tag");
} }
final Tag tag = items.get(key); Tag tag = items.get(key);
if (!expected.isInstance(tag)) { if (!expected.isInstance(tag)) {
throw new IllegalArgumentException(key + " tag is not of tag type " + expected.getName()); throw new IllegalArgumentException(key + " tag is not of tag type " + expected.getName());
} }

View File

@ -4,41 +4,41 @@ package com.intellectualcrafters.jnbt;
* The {@code TAG_Short} tag. * The {@code TAG_Short} tag.
*/ */
public final class ShortTag extends Tag { public final class ShortTag extends Tag {
private final short value; private final short value;
/** /**
* Creates the tag with an empty name. * Creates the tag with an empty name.
* *
* @param value the value of the tag * @param value the value of the tag
*/ */
public ShortTag(final short value) { public ShortTag(short value) {
super();
this.value = value; this.value = value;
} }
/** /**
* Creates the tag. * Creates the tag.
* *
* @param name the name of the tag * @param name the name of the tag
* @param value the value of the tag * @param value the value of the tag
*/ */
public ShortTag(final String name, final short value) { public ShortTag(String name, short value) {
super(name); super(name);
this.value = value; this.value = value;
} }
@Override @Override
public Short getValue() { public Short getValue() {
return value; return this.value;
} }
@Override @Override
public String toString() { public String toString() {
final String name = getName(); String name = getName();
String append = ""; String append = "";
if ((name != null) && !name.equals("")) { if (name != null && !name.equals("")) {
append = "(\"" + getName() + "\")"; append = "(\"" + getName() + "\")";
} }
return "TAG_Short" + append + ": " + value; return "TAG_Short" + append + ": " + this.value;
} }
} }

View File

@ -6,43 +6,43 @@ import static com.google.common.base.Preconditions.checkNotNull;
* The {@code TAG_String} tag. * The {@code TAG_String} tag.
*/ */
public final class StringTag extends Tag { public final class StringTag extends Tag {
private final String value; private final String value;
/** /**
* Creates the tag with an empty name. * Creates the tag with an empty name.
* *
* @param value the value of the tag * @param value the value of the tag
*/ */
public StringTag(final String value) { public StringTag(String value) {
super();
checkNotNull(value); checkNotNull(value);
this.value = value; this.value = value;
} }
/** /**
* Creates the tag. * Creates the tag.
* *
* @param name the name of the tag * @param name the name of the tag
* @param value the value of the tag * @param value the value of the tag
*/ */
public StringTag(final String name, final String value) { public StringTag(String name, String value) {
super(name); super(name);
checkNotNull(value); checkNotNull(value);
this.value = value; this.value = value;
} }
@Override @Override
public String getValue() { public String getValue() {
return value; return this.value;
} }
@Override @Override
public String toString() { public String toString() {
final String name = getName(); String name = getName();
String append = ""; String append = "";
if ((name != null) && !name.equals("")) { if (name != null && !name.equals("")) {
append = "(\"" + getName() + "\")"; append = "(\"" + getName() + "\")";
} }
return "TAG_String" + append + ": " + value; return "TAG_String" + append + ": " + this.value;
} }
} }

View File

@ -4,15 +4,16 @@ package com.intellectualcrafters.jnbt;
* Represents a NBT tag. * Represents a NBT tag.
*/ */
public abstract class Tag { public abstract class Tag {
private final String name; private final String name;
/** /**
* Create a new tag with an empty name. * Create a new tag with an empty name.
*/ */
Tag() { Tag() {
this(""); this("");
} }
/** /**
* Creates the tag with the specified name. * Creates the tag with the specified name.
* *
@ -24,16 +25,16 @@ public abstract class Tag {
} }
this.name = name; this.name = name;
} }
/** /**
* Gets the name of this tag. * Gets the name of this tag.
* *
* @return the name of this tag * @return the name of this tag
*/ */
public final String getName() { public final String getName() {
return name; return this.name;
} }
/** /**
* Gets the value of this tag. * Gets the value of this tag.
* *

View File

@ -46,7 +46,7 @@ public class JSONArray {
* Construct an empty JSONArray. * Construct an empty JSONArray.
*/ */
public JSONArray() { public JSONArray() {
myArrayList = new ArrayList<Object>(); this.myArrayList = new ArrayList<Object>();
} }
/** /**
@ -56,7 +56,7 @@ public class JSONArray {
* *
* @throws JSONException If there is a syntax error. * @throws JSONException If there is a syntax error.
*/ */
public JSONArray(final JSONTokener x) throws JSONException { public JSONArray(JSONTokener x) throws JSONException {
this(); this();
if (x.nextClean() != '[') { if (x.nextClean() != '[') {
throw x.syntaxError("A JSONArray text must start with '['"); throw x.syntaxError("A JSONArray text must start with '['");
@ -66,10 +66,10 @@ public class JSONArray {
for (;;) { for (;;) {
if (x.nextClean() == ',') { if (x.nextClean() == ',') {
x.back(); x.back();
myArrayList.add(JSONObject.NULL); this.myArrayList.add(JSONObject.NULL);
} else { } else {
x.back(); x.back();
myArrayList.add(x.nextValue()); this.myArrayList.add(x.nextValue());
} }
switch (x.nextClean()) { switch (x.nextClean()) {
case ',': case ',':
@ -95,7 +95,7 @@ public class JSONArray {
* *
* @throws JSONException If there is a syntax error. * @throws JSONException If there is a syntax error.
*/ */
public JSONArray(final String source) throws JSONException { public JSONArray(String source) throws JSONException {
this(new JSONTokener(source)); this(new JSONTokener(source));
} }
@ -104,11 +104,11 @@ public class JSONArray {
* *
* @param collection A Collection. * @param collection A Collection.
*/ */
public JSONArray(final Collection<Object> collection) { public JSONArray(Collection<Object> collection) {
myArrayList = new ArrayList<Object>(); this.myArrayList = new ArrayList<Object>();
if (collection != null) { if (collection != null) {
for (final Object aCollection : collection) { for (Object aCollection : collection) {
myArrayList.add(JSONObject.wrap(aCollection)); this.myArrayList.add(JSONObject.wrap(aCollection));
} }
} }
} }
@ -118,10 +118,10 @@ public class JSONArray {
* *
* @throws JSONException If not an array. * @throws JSONException If not an array.
*/ */
public JSONArray(final Object array) throws JSONException { public JSONArray(Object array) throws JSONException {
this(); this();
if (array.getClass().isArray()) { if (array.getClass().isArray()) {
final int length = Array.getLength(array); int length = Array.getLength(array);
for (int i = 0; i < length; i += 1) { for (int i = 0; i < length; i += 1) {
this.put(JSONObject.wrap(Array.get(array, i))); this.put(JSONObject.wrap(Array.get(array, i)));
} }
@ -139,8 +139,8 @@ public class JSONArray {
* *
* @throws JSONException If there is no value for the index. * @throws JSONException If there is no value for the index.
*/ */
public Object get(final int index) throws JSONException { public Object get(int index) throws JSONException {
final Object object = opt(index); Object object = opt(index);
if (object == null) { if (object == null) {
throw new JSONException("JSONArray[" + index + "] not found."); throw new JSONException("JSONArray[" + index + "] not found.");
} }
@ -156,8 +156,8 @@ public class JSONArray {
* *
* @throws JSONException If there is no value for the index or if the value is not convertible to boolean. * @throws JSONException If there is no value for the index or if the value is not convertible to boolean.
*/ */
public boolean getBoolean(final int index) throws JSONException { public boolean getBoolean(int index) throws JSONException {
final Object object = get(index); Object object = get(index);
if (object.equals(Boolean.FALSE) || ((object instanceof String) && ((String) object).equalsIgnoreCase("false"))) { if (object.equals(Boolean.FALSE) || ((object instanceof String) && ((String) object).equalsIgnoreCase("false"))) {
return false; return false;
} else if (object.equals(Boolean.TRUE) || ((object instanceof String) && ((String) object).equalsIgnoreCase("true"))) { } else if (object.equals(Boolean.TRUE) || ((object instanceof String) && ((String) object).equalsIgnoreCase("true"))) {
@ -175,8 +175,8 @@ public class JSONArray {
* *
* @throws JSONException If the key is not found or if the value cannot be converted to a number. * @throws JSONException If the key is not found or if the value cannot be converted to a number.
*/ */
public double getDouble(final int index) throws JSONException { public double getDouble(int index) throws JSONException {
final Object object = get(index); Object object = get(index);
try { try {
return object instanceof Number ? ((Number) object).doubleValue() : Double.parseDouble((String) object); return object instanceof Number ? ((Number) object).doubleValue() : Double.parseDouble((String) object);
} catch (NumberFormatException e) { } catch (NumberFormatException e) {
@ -193,8 +193,8 @@ public class JSONArray {
* *
* @throws JSONException If the key is not found or if the value is not a number. * @throws JSONException If the key is not found or if the value is not a number.
*/ */
public int getInt(final int index) throws JSONException { public int getInt(int index) throws JSONException {
final Object object = get(index); Object object = get(index);
try { try {
return object instanceof Number ? ((Number) object).intValue() : Integer.parseInt((String) object); return object instanceof Number ? ((Number) object).intValue() : Integer.parseInt((String) object);
} catch (NumberFormatException e) { } catch (NumberFormatException e) {
@ -211,8 +211,8 @@ public class JSONArray {
* *
* @throws JSONException If there is no value for the index. or if the value is not a JSONArray * @throws JSONException If there is no value for the index. or if the value is not a JSONArray
*/ */
public JSONArray getJSONArray(final int index) throws JSONException { public JSONArray getJSONArray(int index) throws JSONException {
final Object object = get(index); Object object = get(index);
if (object instanceof JSONArray) { if (object instanceof JSONArray) {
return (JSONArray) object; return (JSONArray) object;
} }
@ -228,8 +228,8 @@ public class JSONArray {
* *
* @throws JSONException If there is no value for the index or if the value is not a JSONObject * @throws JSONException If there is no value for the index or if the value is not a JSONObject
*/ */
public JSONObject getJSONObject(final int index) throws JSONException { public JSONObject getJSONObject(int index) throws JSONException {
final Object object = get(index); Object object = get(index);
if (object instanceof JSONObject) { if (object instanceof JSONObject) {
return (JSONObject) object; return (JSONObject) object;
} }
@ -245,8 +245,8 @@ public class JSONArray {
* *
* @throws JSONException If the key is not found or if the value cannot be converted to a number. * @throws JSONException If the key is not found or if the value cannot be converted to a number.
*/ */
public long getLong(final int index) throws JSONException { public long getLong(int index) throws JSONException {
final Object object = get(index); Object object = get(index);
try { try {
return object instanceof Number ? ((Number) object).longValue() : Long.parseLong((String) object); return object instanceof Number ? ((Number) object).longValue() : Long.parseLong((String) object);
} catch (NumberFormatException e) { } catch (NumberFormatException e) {
@ -263,8 +263,8 @@ public class JSONArray {
* *
* @throws JSONException If there is no string value for the index. * @throws JSONException If there is no string value for the index.
*/ */
public String getString(final int index) throws JSONException { public String getString(int index) throws JSONException {
final Object object = get(index); Object object = get(index);
if (object instanceof String) { if (object instanceof String) {
return (String) object; return (String) object;
} }
@ -278,7 +278,7 @@ public class JSONArray {
* *
* @return true if the value at the index is null, or if there is no value. * @return true if the value at the index is null, or if there is no value.
*/ */
public boolean isNull(final int index) { public boolean isNull(int index) {
return JSONObject.NULL.equals(opt(index)); return JSONObject.NULL.equals(opt(index));
} }
@ -292,14 +292,14 @@ public class JSONArray {
* *
* @throws JSONException If the array contains an invalid number. * @throws JSONException If the array contains an invalid number.
*/ */
public String join(final String separator) throws JSONException { public String join(String separator) throws JSONException {
final int len = length(); int len = length();
final StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
for (int i = 0; i < len; i += 1) { for (int i = 0; i < len; i += 1) {
if (i > 0) { if (i > 0) {
sb.append(separator); sb.append(separator);
} }
sb.append(JSONObject.valueToString(myArrayList.get(i))); sb.append(JSONObject.valueToString(this.myArrayList.get(i)));
} }
return sb.toString(); return sb.toString();
} }
@ -310,7 +310,7 @@ public class JSONArray {
* @return The length (or size). * @return The length (or size).
*/ */
public int length() { public int length() {
return myArrayList.size(); return this.myArrayList.size();
} }
/** /**
@ -320,8 +320,8 @@ public class JSONArray {
* *
* @return An object value, or null if there is no object at that index. * @return An object value, or null if there is no object at that index.
*/ */
public Object opt(final int index) { public Object opt(int index) {
return ((index < 0) || (index >= length())) ? null : myArrayList.get(index); return ((index < 0) || (index >= length())) ? null : this.myArrayList.get(index);
} }
/** /**
@ -332,7 +332,7 @@ public class JSONArray {
* *
* @return The truth. * @return The truth.
*/ */
public boolean optBoolean(final int index) { public boolean optBoolean(int index) {
return this.optBoolean(index, false); return this.optBoolean(index, false);
} }
@ -345,7 +345,7 @@ public class JSONArray {
* *
* @return The truth. * @return The truth.
*/ */
public boolean optBoolean(final int index, final boolean defaultValue) { public boolean optBoolean(int index, boolean defaultValue) {
try { try {
return getBoolean(index); return getBoolean(index);
} catch (JSONException e) { } catch (JSONException e) {
@ -361,7 +361,7 @@ public class JSONArray {
* *
* @return The value. * @return The value.
*/ */
public double optDouble(final int index) { public double optDouble(int index) {
return this.optDouble(index, Double.NaN); return this.optDouble(index, Double.NaN);
} }
@ -374,7 +374,7 @@ public class JSONArray {
* *
* @return The value. * @return The value.
*/ */
public double optDouble(final int index, final double defaultValue) { public double optDouble(int index, double defaultValue) {
try { try {
return getDouble(index); return getDouble(index);
} catch (JSONException e) { } catch (JSONException e) {
@ -390,7 +390,7 @@ public class JSONArray {
* *
* @return The value. * @return The value.
*/ */
public int optInt(final int index) { public int optInt(int index) {
return this.optInt(index, 0); return this.optInt(index, 0);
} }
@ -403,7 +403,7 @@ public class JSONArray {
* *
* @return The value. * @return The value.
*/ */
public int optInt(final int index, final int defaultValue) { public int optInt(int index, int defaultValue) {
try { try {
return getInt(index); return getInt(index);
} catch (JSONException e) { } catch (JSONException e) {
@ -418,8 +418,8 @@ public class JSONArray {
* *
* @return A JSONArray value, or null if the index has no value, or if the value is not a JSONArray. * @return A JSONArray value, or null if the index has no value, or if the value is not a JSONArray.
*/ */
public JSONArray optJSONArray(final int index) { public JSONArray optJSONArray(int index) {
final Object o = opt(index); Object o = opt(index);
return o instanceof JSONArray ? (JSONArray) o : null; return o instanceof JSONArray ? (JSONArray) o : null;
} }
@ -431,8 +431,8 @@ public class JSONArray {
* *
* @return A JSONObject value. * @return A JSONObject value.
*/ */
public JSONObject optJSONObject(final int index) { public JSONObject optJSONObject(int index) {
final Object o = opt(index); Object o = opt(index);
return o instanceof JSONObject ? (JSONObject) o : null; return o instanceof JSONObject ? (JSONObject) o : null;
} }
@ -444,7 +444,7 @@ public class JSONArray {
* *
* @return The value. * @return The value.
*/ */
public long optLong(final int index) { public long optLong(int index) {
return this.optLong(index, 0); return this.optLong(index, 0);
} }
@ -457,7 +457,7 @@ public class JSONArray {
* *
* @return The value. * @return The value.
*/ */
public long optLong(final int index, final long defaultValue) { public long optLong(int index, long defaultValue) {
try { try {
return getLong(index); return getLong(index);
} catch (JSONException e) { } catch (JSONException e) {
@ -467,13 +467,13 @@ public class JSONArray {
/** /**
* Get the optional string value associated with an index. It returns an empty string if there is no value at that * Get the optional string value associated with an index. It returns an empty string if there is no value at that
* index. If the value is not a string and is not null, then it is coverted to a string. * index. If the value is not a string and is not null, then it is converted to a string.
* *
* @param index The index must be between 0 and length() - 1. * @param index The index must be between 0 and length() - 1.
* *
* @return A String value. * @return A String value.
*/ */
public String optString(final int index) { public String optString(int index) {
return this.optString(index, ""); return this.optString(index, "");
} }
@ -485,8 +485,8 @@ public class JSONArray {
* *
* @return A String value. * @return A String value.
*/ */
public String optString(final int index, final String defaultValue) { public String optString(int index, String defaultValue) {
final Object object = opt(index); Object object = opt(index);
return JSONObject.NULL.equals(object) ? defaultValue : object.toString(); return JSONObject.NULL.equals(object) ? defaultValue : object.toString();
} }
@ -497,7 +497,7 @@ public class JSONArray {
* *
* @return this. * @return this.
*/ */
public JSONArray put(final boolean value) { public JSONArray put(boolean value) {
this.put(value ? Boolean.TRUE : Boolean.FALSE); this.put(value ? Boolean.TRUE : Boolean.FALSE);
return this; return this;
} }
@ -509,7 +509,7 @@ public class JSONArray {
* *
* @return this. * @return this.
*/ */
public JSONArray put(final Collection<Object> value) { public JSONArray put(Collection<Object> value) {
this.put(new JSONArray(value)); this.put(new JSONArray(value));
return this; return this;
} }
@ -523,8 +523,8 @@ public class JSONArray {
* *
* @throws JSONException if the value is not finite. * @throws JSONException if the value is not finite.
*/ */
public JSONArray put(final double value) throws JSONException { public JSONArray put(double value) throws JSONException {
final Double d = value; Double d = value;
JSONObject.testValidity(d); JSONObject.testValidity(d);
this.put(d); this.put(d);
return this; return this;
@ -537,7 +537,7 @@ public class JSONArray {
* *
* @return this. * @return this.
*/ */
public JSONArray put(final int value) { public JSONArray put(int value) {
this.put(Integer.valueOf(value)); this.put(Integer.valueOf(value));
return this; return this;
} }
@ -549,7 +549,7 @@ public class JSONArray {
* *
* @return this. * @return this.
*/ */
public JSONArray put(final long value) { public JSONArray put(long value) {
this.put(Long.valueOf(value)); this.put(Long.valueOf(value));
return this; return this;
} }
@ -561,7 +561,7 @@ public class JSONArray {
* *
* @return this. * @return this.
*/ */
public JSONArray put(final Map<String, Object> value) { public JSONArray put(Map<String, Object> value) {
this.put(new JSONObject(value)); this.put(new JSONObject(value));
return this; return this;
} }
@ -574,8 +574,8 @@ public class JSONArray {
* *
* @return this. * @return this.
*/ */
public JSONArray put(final Object value) { public JSONArray put(Object value) {
myArrayList.add(value); this.myArrayList.add(value);
return this; return this;
} }
@ -590,7 +590,7 @@ public class JSONArray {
* *
* @throws JSONException If the index is negative. * @throws JSONException If the index is negative.
*/ */
public JSONArray put(final int index, final boolean value) throws JSONException { public JSONArray put(int index, boolean value) throws JSONException {
this.put(index, value ? Boolean.TRUE : Boolean.FALSE); this.put(index, value ? Boolean.TRUE : Boolean.FALSE);
return this; return this;
} }
@ -605,7 +605,7 @@ public class JSONArray {
* *
* @throws JSONException If the index is negative or if the value is not finite. * @throws JSONException If the index is negative or if the value is not finite.
*/ */
public JSONArray put(final int index, final Collection<Object> value) throws JSONException { public JSONArray put(int index, Collection<Object> value) throws JSONException {
this.put(index, new JSONArray(value)); this.put(index, new JSONArray(value));
return this; return this;
} }
@ -621,7 +621,7 @@ public class JSONArray {
* *
* @throws JSONException If the index is negative or if the value is not finite. * @throws JSONException If the index is negative or if the value is not finite.
*/ */
public JSONArray put(final int index, final double value) throws JSONException { public JSONArray put(int index, double value) throws JSONException {
this.put(index, new Double(value)); this.put(index, new Double(value));
return this; return this;
} }
@ -637,7 +637,7 @@ public class JSONArray {
* *
* @throws JSONException If the index is negative. * @throws JSONException If the index is negative.
*/ */
public JSONArray put(final int index, final int value) throws JSONException { public JSONArray put(int index, int value) throws JSONException {
this.put(index, Integer.valueOf(value)); this.put(index, Integer.valueOf(value));
return this; return this;
} }
@ -653,7 +653,7 @@ public class JSONArray {
* *
* @throws JSONException If the index is negative. * @throws JSONException If the index is negative.
*/ */
public JSONArray put(final int index, final long value) throws JSONException { public JSONArray put(int index, long value) throws JSONException {
this.put(index, Long.valueOf(value)); this.put(index, Long.valueOf(value));
return this; return this;
} }
@ -668,7 +668,7 @@ public class JSONArray {
* *
* @throws JSONException If the index is negative or if the the value is an invalid number. * @throws JSONException If the index is negative or if the the value is an invalid number.
*/ */
public JSONArray put(final int index, final Map<String, Object> value) throws JSONException { public JSONArray put(int index, Map<String, Object> value) throws JSONException {
this.put(index, new JSONObject(value)); this.put(index, new JSONObject(value));
return this; return this;
} }
@ -685,13 +685,13 @@ public class JSONArray {
* *
* @throws JSONException If the index is negative or if the the value is an invalid number. * @throws JSONException If the index is negative or if the the value is an invalid number.
*/ */
public JSONArray put(final int index, final Object value) throws JSONException { public JSONArray put(int index, Object value) throws JSONException {
JSONObject.testValidity(value); JSONObject.testValidity(value);
if (index < 0) { if (index < 0) {
throw new JSONException("JSONArray[" + index + "] not found."); throw new JSONException("JSONArray[" + index + "] not found.");
} }
if (index < length()) { if (index < length()) {
myArrayList.set(index, value); this.myArrayList.set(index, value);
} else { } else {
while (index != length()) { while (index != length()) {
this.put(JSONObject.NULL); this.put(JSONObject.NULL);
@ -708,8 +708,8 @@ public class JSONArray {
* *
* @return The value that was associated with the index, or null if there was no value. * @return The value that was associated with the index, or null if there was no value.
*/ */
public Object remove(final int index) { public Object remove(int index) {
return (index >= 0) && (index < length()) ? myArrayList.remove(index) : null; return (index >= 0) && (index < length()) ? this.myArrayList.remove(index) : null;
} }
/** /**
@ -719,17 +719,17 @@ public class JSONArray {
* *
* @return true if they are equal * @return true if they are equal
*/ */
public boolean similar(final Object other) { public boolean similar(Object other) {
if (!(other instanceof JSONArray)) { if (!(other instanceof JSONArray)) {
return false; return false;
} }
final int len = length(); int len = length();
if (len != ((JSONArray) other).length()) { if (len != ((JSONArray) other).length()) {
return false; return false;
} }
for (int i = 0; i < len; i += 1) { for (int i = 0; i < len; i += 1) {
final Object valueThis = get(i); Object valueThis = get(i);
final Object valueOther = ((JSONArray) other).get(i); Object valueOther = ((JSONArray) other).get(i);
if (valueThis instanceof JSONObject) { if (valueThis instanceof JSONObject) {
if (!((JSONObject) valueThis).similar(valueOther)) { if (!((JSONObject) valueThis).similar(valueOther)) {
return false; return false;
@ -754,11 +754,11 @@ public class JSONArray {
* *
* @throws JSONException If any of the names are null. * @throws JSONException If any of the names are null.
*/ */
public JSONObject toJSONObject(final JSONArray names) throws JSONException { public JSONObject toJSONObject(JSONArray names) throws JSONException {
if ((names == null) || (names.length() == 0) || (length() == 0)) { if ((names == null) || (names.length() == 0) || (length() == 0)) {
return null; return null;
} }
final JSONObject jo = new JSONObject(); JSONObject jo = new JSONObject();
for (int i = 0; i < names.length(); i += 1) { for (int i = 0; i < names.length(); i += 1) {
jo.put(names.getString(i), opt(i)); jo.put(names.getString(i), opt(i));
} }
@ -795,8 +795,8 @@ public class JSONArray {
* *
* @throws JSONException * @throws JSONException
*/ */
public String toString(final int indentFactor) throws JSONException { public String toString(int indentFactor) throws JSONException {
final StringWriter sw = new StringWriter(); StringWriter sw = new StringWriter();
synchronized (sw.getBuffer()) { synchronized (sw.getBuffer()) {
return this.write(sw, indentFactor, 0).toString(); return this.write(sw, indentFactor, 0).toString();
} }
@ -811,7 +811,7 @@ public class JSONArray {
* *
* @throws JSONException * @throws JSONException
*/ */
public Writer write(final Writer writer) throws JSONException { public Writer write(Writer writer) throws JSONException {
return this.write(writer, 0, 0); return this.write(writer, 0, 0);
} }
@ -827,15 +827,15 @@ public class JSONArray {
* *
* @throws JSONException * @throws JSONException
*/ */
Writer write(final Writer writer, final int indentFactor, final int indent) throws JSONException { Writer write(Writer writer, int indentFactor, int indent) throws JSONException {
try { try {
boolean commanate = false; boolean commanate = false;
final int length = length(); int length = length();
writer.write('['); writer.write('[');
if (length == 1) { if (length == 1) {
JSONObject.writeValue(writer, myArrayList.get(0), indentFactor, indent); JSONObject.writeValue(writer, this.myArrayList.get(0), indentFactor, indent);
} else if (length != 0) { } else if (length != 0) {
final int newindent = indent + indentFactor; int newindent = indent + indentFactor;
for (int i = 0; i < length; i += 1) { for (int i = 0; i < length; i += 1) {
if (commanate) { if (commanate) {
writer.write(','); writer.write(',');
@ -844,7 +844,7 @@ public class JSONArray {
writer.write('\n'); writer.write('\n');
} }
JSONObject.indent(writer, newindent); JSONObject.indent(writer, newindent);
JSONObject.writeValue(writer, myArrayList.get(i), indentFactor, newindent); JSONObject.writeValue(writer, this.myArrayList.get(i), indentFactor, newindent);
commanate = true; commanate = true;
} }
if (indentFactor > 0) { if (indentFactor > 0) {
@ -854,7 +854,7 @@ public class JSONArray {
} }
writer.write(']'); writer.write(']');
return writer; return writer;
} catch (final IOException e) { } catch (IOException e) {
throw new JSONException(e); throw new JSONException(e);
} }
} }

View File

@ -24,26 +24,26 @@ public interface IPlotMain {
/** /**
* Log a message to console. * Log a message to console.
* @param message * @param message The message to log
*/ */
void log(String message); void log(String message);
/** /**
* Get the `PlotSquared` directory. * Get the `PlotSquared` directory.
* @return * @return The plugin directory
*/ */
File getDirectory(); File getDirectory();
/** /**
* Get the directory containing all the worlds. * Get the directory containing all the worlds.
* @return * @return The directory containing the worlds
*/ */
File getWorldContainer(); File getWorldContainer();
/** /**
* Wrap a player into a PlotPlayer object. * Wrap a player into a PlotPlayer object.
* @param player * @param player The player to convert to a PlotPlayer
* @return * @return A PlotPlayer
*/ */
PlotPlayer wrapPlayer(Object player); PlotPlayer wrapPlayer(Object player);
@ -69,20 +69,20 @@ public interface IPlotMain {
int[] getServerVersion(); int[] getServerVersion();
/** /**
* Get the nms package prefix. * Get the NMS package prefix.
* @return * @return The NMS package prefix
*/ */
String getNMSPackage(); String getNMSPackage();
/** /**
* Get the schematic handler. * Get the schematic handler.
* @return * @return The {@link SchematicHandler}
*/ */
SchematicHandler initSchematicHandler(); SchematicHandler initSchematicHandler();
/** /**
* Get the schematic handler. * Get the Chat Manager.
* @return * @return The {@link ChatManager}
*/ */
ChatManager initChatManager(); ChatManager initChatManager();
@ -176,24 +176,27 @@ public interface IPlotMain {
/** /**
* If a world is already loaded, set the generator (use NMS if required). * If a world is already loaded, set the generator (use NMS if required).
* @param world * @param world The world to set the generator
*/ */
void setGenerator(String world); void setGenerator(String world);
/** /**
* Get the {@link UUIDHandlerImplementation} which will cache and provide UUIDs. * Get the {@link UUIDHandlerImplementation} which will cache and
* provide UUIDs.
* @return * @return
*/ */
UUIDHandlerImplementation initUUIDHandler(); UUIDHandlerImplementation initUUIDHandler();
/** /**
* Get the {@link InventoryUtil} class (used for implementation specific inventory guis). * Get the {@link InventoryUtil} class (used for implementation specific
* inventory guis).
* @return * @return
*/ */
InventoryUtil initInventoryUtil(); InventoryUtil initInventoryUtil();
/** /**
* Run the converter for the implementation (not necessarily PlotMe, just any plugin that we can convert from). * Run the converter for the implementation (not necessarily PlotMe, just
* any plugin that we can convert from).
* @return * @return
*/ */
boolean initPlotMeConverter(); boolean initPlotMeConverter();
@ -212,26 +215,23 @@ public interface IPlotMain {
*/ */
GeneratorWrapper<?> getGenerator(String world, String name); GeneratorWrapper<?> getGenerator(String world, String name);
/**
*
* @param generator
* @return
*/
GeneratorWrapper<?> wrapPlotGenerator(IndependentPlotGenerator generator); GeneratorWrapper<?> wrapPlotGenerator(IndependentPlotGenerator generator);
/** /**
* Register the chunk processor which will clean out chunks that have too many blockstates or entities. * Register the chunk processor which will clean out chunks that have too
* many blockstates or entities.
*/ */
void registerChunkProcessor(); void registerChunkProcessor();
/** /**
* Register the world initialization events (used to keep track of worlds being generated). * Register the world initialization events (used to keep track of worlds
* being generated).
*/ */
void registerWorldEvents(); void registerWorldEvents();
/** /**
* Get the name of the server. * Get the name of the server.
* @return * @return The server name
*/ */
String getServerName(); String getServerName();

View File

@ -53,6 +53,7 @@ import com.intellectualcrafters.plot.util.WorldUtil;
import com.intellectualcrafters.plot.util.area.QuadMap; import com.intellectualcrafters.plot.util.area.QuadMap;
import com.plotsquared.listener.WESubscriber; import com.plotsquared.listener.WESubscriber;
import com.sk89q.worldedit.WorldEdit; import com.sk89q.worldedit.WorldEdit;
import java.io.File; import java.io.File;
import java.io.FileInputStream; import java.io.FileInputStream;
import java.io.FileOutputStream; import java.io.FileOutputStream;
@ -89,11 +90,11 @@ import java.util.zip.ZipInputStream;
public class PS { public class PS {
private static PS instance; private static PS instance;
private final HashSet<Integer> plotareaHashCheck = new HashSet<>(); private final HashSet<Integer> plotAreaHashCheck = new HashSet<>();
/** /**
* All plot areas mapped by world (quick world access). * All plot areas mapped by world (quick world access).
*/ */
private final HashMap<String, PlotArea[]> plotareamap = new HashMap<>(); private final HashMap<String, PlotArea[]> plotAreaMap = new HashMap<>();
/** /**
* All plot areas mapped by location (quick location based access). * All plot areas mapped by location (quick location based access).
*/ */
@ -112,7 +113,7 @@ public class PS {
public TaskManager TASK; public TaskManager TASK;
public WorldEdit worldedit; public WorldEdit worldedit;
public URL update; public URL update;
private boolean plotareaHasCollision = false; private boolean plotAreaHasCollision = false;
/** /**
* All plot areas (quick global access). * All plot areas (quick global access).
*/ */
@ -132,7 +133,7 @@ public class PS {
*/ */
public PS(IPlotMain imp_class, String platform) { public PS(IPlotMain imp_class, String platform) {
try { try {
instance = this; PS.instance = this;
this.thread = Thread.currentThread(); this.thread = Thread.currentThread();
SetupUtils.generators = new HashMap<>(); SetupUtils.generators = new HashMap<>();
this.IMP = imp_class; this.IMP = imp_class;
@ -150,16 +151,16 @@ public class PS {
this.version = this.IMP.getPluginVersion(); this.version = this.IMP.getPluginVersion();
this.platform = platform; this.platform = platform;
if (getJavaVersion() < 1.7) { if (getJavaVersion() < 1.7) {
log(C.CONSOLE_JAVA_OUTDATED_1_7); PS.log(C.CONSOLE_JAVA_OUTDATED_1_7);
this.IMP.disable(); this.IMP.disable();
return; return;
} }
if (getJavaVersion() < 1.8) { if (getJavaVersion() < 1.8) {
log(C.CONSOLE_JAVA_OUTDATED_1_8); PS.log(C.CONSOLE_JAVA_OUTDATED_1_8);
} }
this.TASK = this.IMP.getTaskManager(); this.TASK = this.IMP.getTaskManager();
if (!C.ENABLED.s().isEmpty()) { if (!C.ENABLED.s().isEmpty()) {
log(C.ENABLED); PS.log(C.ENABLED);
} }
setupConfigs(); setupConfigs();
this.translationFile = new File(this.IMP.getDirectory() + File.separator + "translations" + File.separator + "PlotSquared.use_THIS.yml"); this.translationFile = new File(this.IMP.getDirectory() + File.separator + "translations" + File.separator + "PlotSquared.use_THIS.yml");
@ -187,7 +188,7 @@ public class PS {
if (Settings.METRICS) { if (Settings.METRICS) {
this.IMP.startMetrics(); this.IMP.startMetrics();
} else { } else {
log(C.CONSOLE_PLEASE_ENABLE_METRICS); PS.log(C.CONSOLE_PLEASE_ENABLE_METRICS);
} }
if (Settings.CHUNK_PROCESSOR) { if (Settings.CHUNK_PROCESSOR) {
this.IMP.registerChunkProcessor(); this.IMP.registerChunkProcessor();
@ -197,7 +198,7 @@ public class PS {
TaskManager.runTaskLater(new Runnable() { TaskManager.runTaskLater(new Runnable() {
@Override @Override
public void run() { public void run() {
PS.debug("Starting UUID caching"); debug("Starting UUID caching");
UUIDHandler.startCaching(new Runnable() { UUIDHandler.startCaching(new Runnable() {
@Override @Override
public void run() { public void run() {
@ -224,11 +225,11 @@ public class PS {
@Override @Override
public void run() { public void run() {
if (PS.this.IMP.initPlotMeConverter()) { if (PS.this.IMP.initPlotMeConverter()) {
log("&c=== IMPORTANT ==="); PS.log("&c=== IMPORTANT ===");
log("&cTHIS MESSAGE MAY BE EXTREMELY HELPFUL IF YOU HAVE TROUBLE CONVERTING PLOTME!"); PS.log("&cTHIS MESSAGE MAY BE EXTREMELY HELPFUL IF YOU HAVE TROUBLE CONVERTING PLOTME!");
log("&c - Make sure 'UUID.read-from-disk' is disabled (false)!"); PS.log("&c - Make sure 'UUID.read-from-disk' is disabled (false)!");
log("&c - Sometimes the database can be locked, deleting PlotMe.jar beforehand will fix the issue!"); PS.log("&c - Sometimes the database can be locked, deleting PlotMe.jar beforehand will fix the issue!");
log("&c - After the conversion is finished, please set 'plotme-convert.enabled' to false in the " PS.log("&c - After the conversion is finished, please set 'plotme-convert.enabled' to false in the "
+ "'settings.yml'"); + "'settings.yml'");
} }
} }
@ -274,9 +275,10 @@ public class PS {
if (url != null) { if (url != null) {
PS.this.update = url; PS.this.update = url;
} else if (PS.this.lastVersion == null) { } else if (PS.this.lastVersion == null) {
log("&aThanks for installing PlotSquared!"); PS.log("&aThanks for installing PlotSquared!");
} else if (!PS.get().checkVersion(PS.this.lastVersion, PS.this.version)) { } else if (!get().checkVersion(PS.this.lastVersion, PS.this.version)) {
log("&aThanks for updating from " + StringMan.join(PS.this.lastVersion, ".") + " to " + StringMan.join(PS.this.version, ".") PS.log("&aThanks for updating from " + StringMan.join(PS.this.lastVersion, ".") + " to " + StringMan
.join(PS.this.version, ".")
+ "!"); + "!");
DBFunc.dbManager.updateTables(PS.this.lastVersion); DBFunc.dbManager.updateTables(PS.this.lastVersion);
} }
@ -302,11 +304,11 @@ public class PS {
continue; continue;
} }
if (!WorldUtil.IMP.isWorld(world)) { if (!WorldUtil.IMP.isWorld(world)) {
PS.debug("&c`" + world + "` was not properly loaded - PlotSquared will now try to load it properly: "); debug("&c`" + world + "` was not properly loaded - PlotSquared will now try to load it properly: ");
PS.debug( debug(
"&8 - &7Are you trying to delete this world? Remember to remove it from the settings.yml, bukkit.yml and " "&8 - &7Are you trying to delete this world? Remember to remove it from the settings.yml, bukkit.yml and "
+ "multiverse worlds.yml"); + "multiverse worlds.yml");
PS.debug("&8 - &7Your world management plugin may be faulty (or non existant)"); debug("&8 - &7Your world management plugin may be faulty (or non existent)");
PS.this.IMP.setGenerator(world); PS.this.IMP.setGenerator(world);
} }
} }
@ -334,7 +336,7 @@ public class PS {
* @return the instance created by IPlotMain * @return the instance created by IPlotMain
*/ */
public static PS get() { public static PS get() {
return instance; return PS.instance;
} }
/** /**
@ -344,7 +346,7 @@ public class PS {
* @see IPlotMain#log(String) * @see IPlotMain#log(String)
*/ */
public static void log(Object message) { public static void log(Object message) {
get().IMP.log(StringMan.getString(message)); PS.get().IMP.log(StringMan.getString(message));
} }
public static void stacktrace() { public static void stacktrace() {
@ -359,7 +361,7 @@ public class PS {
*/ */
public static void debug(Object message) { public static void debug(Object message) {
if (Settings.DEBUG) { if (Settings.DEBUG) {
log(message); PS.log(message);
} }
} }
@ -441,14 +443,14 @@ public class PS {
int hash = world.hashCode(); int hash = world.hashCode();
for (PlotArea area : this.plotAreas) { for (PlotArea area : this.plotAreas) {
if (hash == area.worldhash) { if (hash == area.worldhash) {
if (area.contains(location.getX(), location.getZ()) && (!this.plotareaHasCollision || world.equals(area.worldname))) { if (area.contains(location.getX(), location.getZ()) && (!this.plotAreaHasCollision || world.equals(area.worldname))) {
return area; return area;
} }
} }
} }
return null; return null;
default: default:
PlotArea[] areas = this.plotareamap.get(location.getWorld()); PlotArea[] areas = this.plotAreaMap.get(location.getWorld());
if (areas == null) { if (areas == null) {
return null; return null;
} }
@ -480,7 +482,7 @@ public class PS {
} }
public PlotArea getPlotArea(String world, String id) { public PlotArea getPlotArea(String world, String id) {
PlotArea[] areas = this.plotareamap.get(world); PlotArea[] areas = this.plotAreaMap.get(world);
if (areas == null) { if (areas == null) {
return null; return null;
} }
@ -499,7 +501,7 @@ public class PS {
} }
public PlotArea getPlotAreaAbs(String world, String id) { public PlotArea getPlotAreaAbs(String world, String id) {
PlotArea[] areas = this.plotareamap.get(world); PlotArea[] areas = this.plotAreaMap.get(world);
if (areas == null) { if (areas == null) {
return null; return null;
} }
@ -513,7 +515,7 @@ public class PS {
public PlotArea getPlotAreaByString(String search) { public PlotArea getPlotAreaByString(String search) {
String[] split = search.split(";|,"); String[] split = search.split(";|,");
PlotArea[] areas = this.plotareamap.get(split[0]); PlotArea[] areas = this.plotAreaMap.get(split[0]);
if (areas == null) { if (areas == null) {
for (PlotArea area : this.plotAreas) { for (PlotArea area : this.plotAreas) {
if (area.worldname.equalsIgnoreCase(split[0])) { if (area.worldname.equalsIgnoreCase(split[0])) {
@ -570,14 +572,14 @@ public class PS {
int hash = world.hashCode(); int hash = world.hashCode();
for (PlotArea area : this.plotAreas) { for (PlotArea area : this.plotAreas) {
if (hash == area.worldhash) { if (hash == area.worldhash) {
if (area.contains(location.getX(), location.getZ()) && (!this.plotareaHasCollision || world.equals(area.worldname))) { if (area.contains(location.getX(), location.getZ()) && (!this.plotAreaHasCollision || world.equals(area.worldname))) {
return area; return area;
} }
} }
} }
return null; return null;
default: default:
PlotArea[] areas = this.plotareamap.get(location.getWorld()); PlotArea[] areas = this.plotAreaMap.get(location.getWorld());
if (areas == null) { if (areas == null) {
return null; return null;
} }
@ -630,13 +632,13 @@ public class PS {
if (plotArea.TYPE == 2) { if (plotArea.TYPE == 2) {
plots = this.plots_tmp.get(plotArea.worldname); plots = this.plots_tmp.get(plotArea.worldname);
if (plots != null) { if (plots != null) {
Iterator<Entry<PlotId, Plot>> iter = plots.entrySet().iterator(); Iterator<Entry<PlotId, Plot>> iterator = plots.entrySet().iterator();
while (iter.hasNext()) { while (iterator.hasNext()) {
Entry<PlotId, Plot> next = iter.next(); Entry<PlotId, Plot> next = iterator.next();
PlotId id = next.getKey(); PlotId id = next.getKey();
if (plotArea.contains(id)) { if (plotArea.contains(id)) {
next.getValue().setArea(plotArea); next.getValue().setArea(plotArea);
iter.remove(); iterator.remove();
} }
} }
} }
@ -652,12 +654,12 @@ public class PS {
if (plotArea.TYPE == 2) { if (plotArea.TYPE == 2) {
clusters = this.clusters_tmp.get(plotArea.worldname); clusters = this.clusters_tmp.get(plotArea.worldname);
if (clusters != null) { if (clusters != null) {
Iterator<PlotCluster> iter = clusters.iterator(); Iterator<PlotCluster> iterator = clusters.iterator();
while (iter.hasNext()) { while (iterator.hasNext()) {
PlotCluster next = iter.next(); PlotCluster next = iterator.next();
if (next.intersects(plotArea.getMin(), plotArea.getMax())) { if (next.intersects(plotArea.getMin(), plotArea.getMax())) {
next.setArea(plotArea); next.setArea(plotArea);
iter.remove(); iterator.remove();
} }
} }
} }
@ -672,7 +674,7 @@ public class PS {
localAreas.add(plotArea); localAreas.add(plotArea);
globalAreas.add(plotArea); globalAreas.add(plotArea);
this.plotAreas = globalAreas.toArray(new PlotArea[globalAreas.size()]); this.plotAreas = globalAreas.toArray(new PlotArea[globalAreas.size()]);
this.plotareamap.put(plotArea.worldname, localAreas.toArray(new PlotArea[localAreas.size()])); this.plotAreaMap.put(plotArea.worldname, localAreas.toArray(new PlotArea[localAreas.size()]));
QuadMap<PlotArea> map = this.plotAreaGrid.get(plotArea.worldname); QuadMap<PlotArea> map = this.plotAreaGrid.get(plotArea.worldname);
if (map == null) { if (map == null) {
map = new QuadMap<PlotArea>(Integer.MAX_VALUE, 0, 0) { map = new QuadMap<PlotArea>(Integer.MAX_VALUE, 0, 0) {
@ -697,10 +699,10 @@ public class PS {
areas.remove(area); areas.remove(area);
this.plotAreas = areas.toArray(new PlotArea[areas.size()]); this.plotAreas = areas.toArray(new PlotArea[areas.size()]);
if (areas.isEmpty()) { if (areas.isEmpty()) {
this.plotareamap.remove(area.worldname); this.plotAreaMap.remove(area.worldname);
this.plotAreaGrid.remove(area.worldname); this.plotAreaGrid.remove(area.worldname);
} else { } else {
this.plotareamap.put(area.worldname, areas.toArray(new PlotArea[areas.size()])); this.plotAreaMap.put(area.worldname, areas.toArray(new PlotArea[areas.size()]));
this.plotAreaGrid.get(area.worldname).remove(area); this.plotAreaGrid.get(area.worldname).remove(area);
} }
setPlotsTmp(area); setPlotsTmp(area);
@ -922,26 +924,26 @@ public class PS {
@Deprecated @Deprecated
public ArrayList<Plot> sortPlotsByTimestamp(Collection<Plot> plots) { public ArrayList<Plot> sortPlotsByTimestamp(Collection<Plot> plots) {
int hardmax = 256000; int hardMax = 256000;
int max = 0; int max = 0;
int overflowSize = 0; int overflowSize = 0;
for (Plot plot : plots) { for (Plot plot : plots) {
int hash = MathMan.getPositiveId(plot.hashCode()); int hash = MathMan.getPositiveId(plot.hashCode());
if (hash > max) { if (hash > max) {
if (hash >= hardmax) { if (hash >= hardMax) {
overflowSize++; overflowSize++;
} else { } else {
max = hash; max = hash;
} }
} }
} }
hardmax = Math.min(hardmax, max); hardMax = Math.min(hardMax, max);
Plot[] cache = new Plot[hardmax + 1]; Plot[] cache = new Plot[hardMax + 1];
List<Plot> overflow = new ArrayList<>(overflowSize); List<Plot> overflow = new ArrayList<>(overflowSize);
ArrayList<Plot> extra = new ArrayList<>(); ArrayList<Plot> extra = new ArrayList<>();
for (Plot plot : plots) { for (Plot plot : plots) {
int hash = MathMan.getPositiveId(plot.hashCode()); int hash = MathMan.getPositiveId(plot.hashCode());
if (hash < hardmax) { if (hash < hardMax) {
if (hash >= 0) { if (hash >= 0) {
cache[hash] = plot; cache[hash] = plot;
} else { } else {
@ -1025,17 +1027,17 @@ public class PS {
/** /**
* Sort a collection of plots by world (with a priority world), then by hashcode. * Sort a collection of plots by world (with a priority world), then by hashcode.
* @param myplots * @param myPlots
* @param type The sorting method to use for each world (timestamp, or hash) * @param type The sorting method to use for each world (timestamp, or hash)
* @param priorityArea Use null, "world", or "gibberish" if you want default world order * @param priorityArea Use null, "world", or "gibberish" if you want default world order
* @return ArrayList of plot * @return ArrayList of plot
*/ */
public ArrayList<Plot> sortPlots(Collection<Plot> myplots, SortType type, final PlotArea priorityArea) { public ArrayList<Plot> sortPlots(Collection<Plot> myPlots, SortType type, final PlotArea priorityArea) {
// group by world // group by world
// sort each // sort each
HashMap<PlotArea, Collection<Plot>> map = new HashMap<>(); HashMap<PlotArea, Collection<Plot>> map = new HashMap<>();
int totalSize = getPlotCount(); int totalSize = getPlotCount();
if (myplots.size() == totalSize) { if (myPlots.size() == totalSize) {
for (PlotArea area : this.plotAreas) { for (PlotArea area : this.plotAreas) {
map.put(area, area.getPlots()); map.put(area, area.getPlots());
} }
@ -1045,7 +1047,7 @@ public class PS {
} }
Collection<Plot> lastList = null; Collection<Plot> lastList = null;
PlotArea lastWorld = null; PlotArea lastWorld = null;
for (Plot plot : myplots) { for (Plot plot : myPlots) {
if (lastWorld == plot.getArea()) { if (lastWorld == plot.getArea()) {
lastList.add(plot); lastList.add(plot);
} else { } else {
@ -1065,7 +1067,7 @@ public class PS {
return a.hashCode() - b.hashCode(); return a.hashCode() - b.hashCode();
} }
}); });
ArrayList<Plot> toReturn = new ArrayList<>(myplots.size()); ArrayList<Plot> toReturn = new ArrayList<>(myPlots.size());
for (PlotArea area : areas) { for (PlotArea area : areas) {
switch (type) { switch (type) {
case CREATION_DATE: case CREATION_DATE:
@ -1137,15 +1139,15 @@ public class PS {
* @return Set of plot * @return Set of plot
*/ */
public Set<Plot> getPlots(String world, UUID uuid) { public Set<Plot> getPlots(String world, UUID uuid) {
ArrayList<Plot> myplots = new ArrayList<>(); ArrayList<Plot> myPlots = new ArrayList<>();
for (Plot plot : getPlots(world)) { for (Plot plot : getPlots(world)) {
if (plot.hasOwner()) { if (plot.hasOwner()) {
if (plot.isOwnerAbs(uuid)) { if (plot.isOwnerAbs(uuid)) {
myplots.add(plot); myPlots.add(plot);
} }
} }
} }
return new HashSet<>(myplots); return new HashSet<>(myPlots);
} }
/** /**
@ -1175,7 +1177,7 @@ public class PS {
*/ */
@Deprecated @Deprecated
public boolean isPlotWorld(String world) { public boolean isPlotWorld(String world) {
return this.plotareamap.containsKey(world); return this.plotAreaMap.containsKey(world);
} }
/** /**
@ -1190,7 +1192,7 @@ public class PS {
return false; return false;
case 1: case 1:
PlotArea a = this.plotAreas[0]; PlotArea a = this.plotAreas[0];
return world.hashCode() == a.worldhash && (!this.plotareaHasCollision || a.worldname.equals(world)); return world.hashCode() == a.worldhash && (!this.plotAreaHasCollision || a.worldname.equals(world));
case 2: case 2:
case 3: case 3:
case 4: case 4:
@ -1200,13 +1202,13 @@ public class PS {
case 8: case 8:
int hash = world.hashCode(); int hash = world.hashCode();
for (PlotArea area : this.plotAreas) { for (PlotArea area : this.plotAreas) {
if (area.worldhash == hash && (!this.plotareaHasCollision || area.worldname.equals(world))) { if (area.worldhash == hash && (!this.plotAreaHasCollision || area.worldname.equals(world))) {
return true; return true;
} }
} }
return false; return false;
default: default:
return this.plotareamap.containsKey(world); return this.plotAreaMap.containsKey(world);
} }
} }
@ -1248,16 +1250,16 @@ public class PS {
* @return Set of Plot * @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<>();
foreachPlot(new RunnableVal<Plot>() { foreachPlot(new RunnableVal<Plot>() {
@Override @Override
public void run(Plot value) { public void run(Plot value) {
if (value.isOwnerAbs(uuid)) { if (value.isOwnerAbs(uuid)) {
myplots.add(value); myPlots.add(value);
} }
} }
}); });
return new HashSet<>(myplots); return new HashSet<>(myPlots);
} }
public Set<Plot> getBasePlots(final UUID uuid) { public Set<Plot> getBasePlots(final UUID uuid) {
@ -1274,21 +1276,21 @@ public class PS {
} }
/** /**
* Get the plots for a UUID * Get the plots for a UUID.
* @param uuid * @param uuid The UUID of the owner
* @return Set of Plot * @return Set of Plot
*/ */
public Set<Plot> getPlotsAbs(final UUID uuid) { public Set<Plot> getPlotsAbs(final UUID uuid) {
final ArrayList<Plot> myplots = new ArrayList<>(); final ArrayList<Plot> myPlots = new ArrayList<>();
foreachPlot(new RunnableVal<Plot>() { foreachPlot(new RunnableVal<Plot>() {
@Override @Override
public void run(Plot value) { public void run(Plot value) {
if (value.isOwnerAbs(uuid)) { if (value.isOwnerAbs(uuid)) {
myplots.add(value); myPlots.add(value);
} }
} }
}); });
return new HashSet<>(myplots); return new HashSet<>(myPlots);
} }
/** /**
@ -1332,16 +1334,16 @@ public class PS {
if (world.equals("CheckingPlotSquaredGenerator")) { if (world.equals("CheckingPlotSquaredGenerator")) {
return; return;
} }
if (!this.plotareaHasCollision && !this.plotareaHashCheck.add(world.hashCode())) { if (!this.plotAreaHasCollision && !this.plotAreaHashCheck.add(world.hashCode())) {
this.plotareaHasCollision = true; this.plotAreaHasCollision = true;
} }
Set<String> worlds = this.config.contains("worlds") ? this.config.getConfigurationSection("worlds").getKeys(false) : new HashSet<String>(); Set<String> worlds = this.config.contains("worlds") ? this.config.getConfigurationSection("worlds").getKeys(false) : new HashSet<String>();
String path = "worlds." + world; String path = "worlds." + world;
ConfigurationSection worldSection = this.config.getConfigurationSection(path); ConfigurationSection worldSection = this.config.getConfigurationSection(path);
int type = worldSection != null ? worldSection.getInt("generator.type") : 0; int type = worldSection != null ? worldSection.getInt("generator.type") : 0;
if (type == 0) { if (type == 0) {
if (this.plotareamap.containsKey(world)) { if (this.plotAreaMap.containsKey(world)) {
PS.debug("World possibly already loaded: " + world); debug("World possibly already loaded: " + world);
return; return;
} }
IndependentPlotGenerator pg; IndependentPlotGenerator pg;
@ -1367,10 +1369,10 @@ public class PS {
// Conventional plot generator // Conventional plot generator
PlotArea plotArea = pg.getNewPlotArea(world, null, null, null); PlotArea plotArea = pg.getNewPlotArea(world, null, null, null);
PlotManager plotManager = pg.getNewPlotManager(); PlotManager plotManager = pg.getNewPlotManager();
log(C.PREFIX + "&aDetected world load for '" + world + "'"); PS.log(C.PREFIX + "&aDetected world load for '" + world + "'");
log(C.PREFIX + "&3 - generator: &7" + baseGenerator + ">" + pg); PS.log(C.PREFIX + "&3 - generator: &7" + baseGenerator + ">" + pg);
log(C.PREFIX + "&3 - plotworld: &7" + plotArea.getClass().getName()); PS.log(C.PREFIX + "&3 - plotworld: &7" + plotArea.getClass().getName());
log(C.PREFIX + "&3 - manager: &7" + plotManager.getClass().getName()); PS.log(C.PREFIX + "&3 - manager: &7" + plotManager.getClass().getName());
if (!this.config.contains(path)) { if (!this.config.contains(path)) {
this.config.createSection(path); this.config.createSection(path);
worldSection = this.config.getConfigurationSection(path); worldSection = this.config.getConfigurationSection(path);
@ -1392,11 +1394,11 @@ public class PS {
} }
ConfigurationSection areasSection = worldSection.getConfigurationSection("areas"); ConfigurationSection areasSection = worldSection.getConfigurationSection("areas");
if (areasSection == null) { if (areasSection == null) {
if (this.plotareamap.containsKey(world)) { if (this.plotAreaMap.containsKey(world)) {
PS.debug("World possibly already loaded: " + world); debug("World possibly already loaded: " + world);
return; return;
} }
log(C.PREFIX + "&aDetected world load for '" + world + "'"); PS.log(C.PREFIX + "&aDetected world load for '" + world + "'");
String gen_string = worldSection.getString("generator.plugin", "PlotSquared"); String gen_string = worldSection.getString("generator.plugin", "PlotSquared");
if (type == 2) { if (type == 2) {
Set<PlotCluster> clusters = this.clusters_tmp != null ? this.clusters_tmp.get(world) : new HashSet<PlotCluster>(); Set<PlotCluster> clusters = this.clusters_tmp != null ? this.clusters_tmp.get(world) : new HashSet<PlotCluster>();
@ -1412,7 +1414,7 @@ public class PS {
worldSection.createSection("areas." + fullId); worldSection.createSection("areas." + fullId);
DBFunc.replaceWorld(world, world + ";" + name, pos1, pos2); // NPE DBFunc.replaceWorld(world, world + ";" + name, pos1, pos2); // NPE
log(C.PREFIX + "&3 - " + name + "-" + pos1 + "-" + pos2); PS.log(C.PREFIX + "&3 - " + name + "-" + pos1 + "-" + pos2);
GeneratorWrapper<?> areaGen = this.IMP.getGenerator(world, gen_string); GeneratorWrapper<?> areaGen = this.IMP.getGenerator(world, gen_string);
if (areaGen == null) { if (areaGen == null) {
throw new IllegalArgumentException("Invalid Generator: " + gen_string); throw new IllegalArgumentException("Invalid Generator: " + gen_string);
@ -1425,10 +1427,10 @@ public class PS {
} catch (IOException e) { } catch (IOException e) {
e.printStackTrace(); e.printStackTrace();
} }
log(C.PREFIX + "&c | &9generator: &7" + baseGenerator + ">" + areaGen); PS.log(C.PREFIX + "&c | &9generator: &7" + baseGenerator + ">" + areaGen);
log(C.PREFIX + "&c | &9plotworld: &7" + pa); PS.log(C.PREFIX + "&c | &9plotworld: &7" + pa);
log(C.PREFIX + "&c | &9manager: &7" + pa); PS.log(C.PREFIX + "&c | &9manager: &7" + pa);
log(C.PREFIX + "&cNote: &7Area created for cluster:" + name + " (invalid or old configuration?)"); PS.log(C.PREFIX + "&cNote: &7Area created for cluster:" + name + " (invalid or old configuration?)");
areaGen.getPlotGenerator().initialize(pa); areaGen.getPlotGenerator().initialize(pa);
areaGen.augment(pa); areaGen.augment(pa);
toLoad.add(pa); toLoad.add(pa);
@ -1450,9 +1452,9 @@ public class PS {
} catch (IOException e) { } catch (IOException e) {
e.printStackTrace(); e.printStackTrace();
} }
log(C.PREFIX + "&3 - generator: &7" + baseGenerator + ">" + areaGen); PS.log(C.PREFIX + "&3 - generator: &7" + baseGenerator + ">" + areaGen);
log(C.PREFIX + "&3 - plotworld: &7" + pa); PS.log(C.PREFIX + "&3 - plotworld: &7" + pa);
log(C.PREFIX + "&3 - manager: &7" + pa.getPlotManager()); PS.log(C.PREFIX + "&3 - manager: &7" + pa.getPlotManager());
areaGen.getPlotGenerator().initialize(pa); areaGen.getPlotGenerator().initialize(pa);
areaGen.augment(pa); areaGen.augment(pa);
addPlotArea(pa); addPlotArea(pa);
@ -1462,7 +1464,7 @@ public class PS {
throw new IllegalArgumentException("Invalid type for multi-area world. Expected `2`, got `" + type + "`"); throw new IllegalArgumentException("Invalid type for multi-area world. Expected `2`, got `" + type + "`");
} }
for (String areaId : areasSection.getKeys(false)) { for (String areaId : areasSection.getKeys(false)) {
log(C.PREFIX + "&3 - " + areaId); PS.log(C.PREFIX + "&3 - " + areaId);
int i1 = areaId.indexOf("-"); int i1 = areaId.indexOf("-");
int i2 = areaId.indexOf(";"); int i2 = areaId.indexOf(";");
if (i1 == -1 || i2 == -1) { if (i1 == -1 || i2 == -1) {
@ -1524,10 +1526,10 @@ public class PS {
} catch (IOException e) { } catch (IOException e) {
e.printStackTrace(); e.printStackTrace();
} }
log(C.PREFIX + "&aDetected area load for '" + world + "'"); PS.log(C.PREFIX + "&aDetected area load for '" + world + "'");
log(C.PREFIX + "&c | &9generator: &7" + baseGenerator + ">" + areaGen); PS.log(C.PREFIX + "&c | &9generator: &7" + baseGenerator + ">" + areaGen);
log(C.PREFIX + "&c | &9plotworld: &7" + pa); PS.log(C.PREFIX + "&c | &9plotworld: &7" + pa);
log(C.PREFIX + "&c | &9manager: &7" + pa.getPlotManager()); PS.log(C.PREFIX + "&c | &9manager: &7" + pa.getPlotManager());
areaGen.getPlotGenerator().initialize(pa); areaGen.getPlotGenerator().initialize(pa);
areaGen.augment(pa); areaGen.augment(pa);
addPlotArea(pa); addPlotArea(pa);
@ -1550,7 +1552,7 @@ public class PS {
for (String element : split) { for (String element : split) {
String[] pair = element.split("="); String[] pair = element.split("=");
if (pair.length != 2) { if (pair.length != 2) {
log("&cNo value provided for: &7" + element); PS.log("&cNo value provided for: &7" + element);
return false; return false;
} }
String key = pair[0].toLowerCase(); String key = pair[0].toLowerCase();
@ -1559,52 +1561,44 @@ public class PS {
try { try {
switch (key) { switch (key) {
case "s": case "s":
case "size": { case "size":
this.config.set(base + "plot.size", Configuration.INTEGER.parseString(value).shortValue()); this.config.set(base + "plot.size", Configuration.INTEGER.parseString(value).shortValue());
break; break;
}
case "g": case "g":
case "gap": { case "gap":
this.config.set(base + "road.width", Configuration.INTEGER.parseString(value).shortValue()); this.config.set(base + "road.width", Configuration.INTEGER.parseString(value).shortValue());
break; break;
}
case "h": case "h":
case "height": { case "height":
this.config.set(base + "road.height", Configuration.INTEGER.parseString(value).shortValue()); this.config.set(base + "road.height", Configuration.INTEGER.parseString(value).shortValue());
this.config.set(base + "plot.height", Configuration.INTEGER.parseString(value).shortValue()); this.config.set(base + "plot.height", Configuration.INTEGER.parseString(value).shortValue());
this.config.set(base + "wall.height", Configuration.INTEGER.parseString(value).shortValue()); this.config.set(base + "wall.height", Configuration.INTEGER.parseString(value).shortValue());
break; break;
}
case "f": case "f":
case "floor": { case "floor":
this.config.set(base + "plot.floor", this.config.set(base + "plot.floor",
new ArrayList<>(Arrays.asList(StringMan.join(Configuration.BLOCKLIST.parseString(value), ",").split(",")))); new ArrayList<>(Arrays.asList(StringMan.join(Configuration.BLOCKLIST.parseString(value), ",").split(","))));
break; break;
}
case "m": case "m":
case "main": { case "main":
this.config.set(base + "plot.filling", this.config.set(base + "plot.filling",
new ArrayList<>(Arrays.asList(StringMan.join(Configuration.BLOCKLIST.parseString(value), ",").split(",")))); new ArrayList<>(Arrays.asList(StringMan.join(Configuration.BLOCKLIST.parseString(value), ",").split(","))));
break; break;
}
case "w": case "w":
case "wall": { case "wall":
this.config.set(base + "wall.filling", Configuration.BLOCK.parseString(value).toString()); this.config.set(base + "wall.filling", Configuration.BLOCK.parseString(value).toString());
break; break;
}
case "b": case "b":
case "border": { case "border":
this.config.set(base + "wall.block", Configuration.BLOCK.parseString(value).toString()); this.config.set(base + "wall.block", Configuration.BLOCK.parseString(value).toString());
break; break;
} default:
default: { PS.log("&cKey not found: &7" + element);
log("&cKey not found: &7" + element);
return false; return false;
}
} }
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
log("&cInvalid value: &7" + value + " in arg " + element); PS.log("&cInvalid value: &7" + value + " in arg " + element);
return false; return false;
} }
} }
@ -1660,9 +1654,9 @@ public class PS {
} catch (IOException e) { } catch (IOException e) {
MainUtil.sendMessage(sender, "Failed to update PlotSquared"); MainUtil.sendMessage(sender, "Failed to update PlotSquared");
MainUtil.sendMessage(sender, " - Please update manually"); MainUtil.sendMessage(sender, " - Please update manually");
log("============ Stacktrace ============"); PS.log("============ Stacktrace ============");
e.printStackTrace(); e.printStackTrace();
log("===================================="); PS.log("====================================");
} }
return false; return false;
} }
@ -1716,7 +1710,7 @@ public class PS {
} }
} catch (IOException e) { } catch (IOException e) {
e.printStackTrace(); e.printStackTrace();
log("&cCould not save " + file); PS.log("&cCould not save " + file);
} }
} }
@ -1754,7 +1748,7 @@ public class PS {
DBFunc.close(); DBFunc.close();
UUIDHandler.handleShutdown(); UUIDHandler.handleShutdown();
} catch (NullPointerException e) { } catch (NullPointerException e) {
log("&cCould not close database connection!"); PS.log("&cCould not close database connection!");
} }
} }
@ -1764,8 +1758,8 @@ public class PS {
public void setupDatabase() { public void setupDatabase() {
try { try {
if (Settings.DB.USE_MONGO) { if (Settings.DB.USE_MONGO) {
log(C.PREFIX + "MongoDB is not yet implemented"); PS.log(C.PREFIX + "MongoDB is not yet implemented");
log(C.PREFIX + "&cNo storage type is set!"); PS.log(C.PREFIX + "&cNo storage type is set!");
this.IMP.disable(); this.IMP.disable();
return; return;
} }
@ -1775,7 +1769,7 @@ public class PS {
} else if (Settings.DB.USE_SQLITE) { } else if (Settings.DB.USE_SQLITE) {
this.database = new SQLite(this.IMP.getDirectory() + File.separator + Settings.DB.SQLITE_DB + ".db"); this.database = new SQLite(this.IMP.getDirectory() + File.separator + Settings.DB.SQLITE_DB + ".db");
} else { } else {
log(C.PREFIX + "&cNo storage type is set!"); PS.log(C.PREFIX + "&cNo storage type is set!");
this.IMP.disable(); this.IMP.disable();
return; return;
} }
@ -1784,18 +1778,18 @@ public class PS {
this.plots_tmp = DBFunc.getPlots(); this.plots_tmp = DBFunc.getPlots();
this.clusters_tmp = DBFunc.getClusters(); this.clusters_tmp = DBFunc.getClusters();
} catch (ClassNotFoundException | SQLException e) { } catch (ClassNotFoundException | SQLException e) {
log(C.PREFIX + "&cFailed to open DATABASE connection. The plugin will disable itself."); PS.log(C.PREFIX + "&cFailed to open DATABASE connection. The plugin will disable itself.");
if (Settings.DB.USE_MONGO) { if (Settings.DB.USE_MONGO) {
log("$4MONGO"); PS.log("$4MONGO");
} else if (Settings.DB.USE_MYSQL) { } else if (Settings.DB.USE_MYSQL) {
log("$4MYSQL"); PS.log("$4MYSQL");
} else if (Settings.DB.USE_SQLITE) { } else if (Settings.DB.USE_SQLITE) {
log("$4SQLITE"); PS.log("$4SQLITE");
} }
log("&d==== Here is an ugly stacktrace, if you are interested in those things ==="); PS.log("&d==== Here is an ugly stacktrace, if you are interested in those things ===");
e.printStackTrace(); e.printStackTrace();
log("&d==== End of stacktrace ===="); PS.log("&d==== End of stacktrace ====");
log("&6Please go to the PlotSquared 'storage.yml' and configure the database correctly."); PS.log("&6Please go to the PlotSquared 'storage.yml' and configure the database correctly.");
this.IMP.disable(); this.IMP.disable();
} }
} }
@ -1995,15 +1989,15 @@ public class PS {
if (keep > 0 || ignore > 0) { if (keep > 0 || ignore > 0) {
options.put("clear.auto.threshold", 1); options.put("clear.auto.threshold", 1);
options.put("clear.auto.enabled", false); options.put("clear.auto.enabled", false);
log("&cIMPORTANT MESSAGE ABOUT THIS UPDATE!!!!!!!!!!!!!!!!!!!!!!!!!!!!"); PS.log("&cIMPORTANT MESSAGE ABOUT THIS UPDATE!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
log("&cSorry for all the exclamation marks, but this could be important."); PS.log("&cSorry for all the exclamation marks, but this could be important.");
log("&cPlot clearing has changed to a new system that requires calibration."); PS.log("&cPlot clearing has changed to a new system that requires calibration.");
log("&cThis is how it will work: "); PS.log("&cThis is how it will work: ");
log("&c - Players will rate plots"); PS.log("&c - Players will rate plots");
log("&c - When enough plots are rated, you can run /plot debugexec calibrate-analysis"); PS.log("&c - When enough plots are rated, you can run /plot debugexec calibrate-analysis");
log("&c - You can decide the (rough) percentage of expired plots to clear"); PS.log("&c - You can decide the (rough) percentage of expired plots to clear");
log("&c - To just clear all expired plot, ignore this and set: &7threshold: -1"); PS.log("&c - To just clear all expired plot, ignore this and set: &7threshold: -1");
log("&cMore information:&7 https://github.com/IntellectualSites/PlotSquared/wiki/Plot-analysis:"); PS.log("&cMore information:&7 https://github.com/IntellectualSites/PlotSquared/wiki/Plot-analysis:");
} else { } else {
options.put("clear.auto.threshold", Settings.CLEAR_THRESHOLD); options.put("clear.auto.threshold", Settings.CLEAR_THRESHOLD);
} }
@ -2171,7 +2165,7 @@ public class PS {
Settings.MAX_AUTO_SIZE = this.config.getInt("claim.max-auto-area"); Settings.MAX_AUTO_SIZE = this.config.getInt("claim.max-auto-area");
Settings.MAX_PLOTS = this.config.getInt("max_plots"); Settings.MAX_PLOTS = this.config.getInt("max_plots");
if (Settings.MAX_PLOTS > 32767) { if (Settings.MAX_PLOTS > 32767) {
log("&c`max_plots` Is set too high! This is a per player setting and does not need to be very large."); PS.log("&c`max_plots` Is set too high! This is a per player setting and does not need to be very large.");
Settings.MAX_PLOTS = 32767; Settings.MAX_PLOTS = 32767;
} }
Settings.GLOBAL_LIMIT = this.config.getBoolean("global_limit"); Settings.GLOBAL_LIMIT = this.config.getBoolean("global_limit");
@ -2179,7 +2173,7 @@ public class PS {
// Misc // Misc
Settings.DEBUG = this.config.getBoolean("debug"); Settings.DEBUG = this.config.getBoolean("debug");
if (Settings.DEBUG) { if (Settings.DEBUG) {
log(C.PREFIX + "&6Debug Mode Enabled (Default). Edit the config to turn this off."); PS.log(C.PREFIX + "&6Debug Mode Enabled (Default). Edit the config to turn this off.");
} }
Settings.CONSOLE_COLOR = this.config.getBoolean("console.color"); Settings.CONSOLE_COLOR = this.config.getBoolean("console.color");
if (!this.config.getBoolean("chat.fancy") || !checkVersion(this.IMP.getServerVersion(), 1, 8, 0)) { if (!this.config.getBoolean("chat.fancy") || !checkVersion(this.IMP.getServerVersion(), 1, 8, 0)) {
@ -2200,7 +2194,7 @@ public class PS {
public void setupConfigs() { public void setupConfigs() {
File folder = new File(this.IMP.getDirectory() + File.separator + "config"); File folder = new File(this.IMP.getDirectory() + File.separator + "config");
if (!folder.exists() && !folder.mkdirs()) { if (!folder.exists() && !folder.mkdirs()) {
log(C.PREFIX + "&cFailed to create the /plugins/config folder. Please create it manually."); PS.log(C.PREFIX + "&cFailed to create the /plugins/config folder. Please create it manually.");
} }
try { try {
this.styleFile = new File(this.IMP.getDirectory() + File.separator + "translations" + File.separator + "style.yml"); this.styleFile = new File(this.IMP.getDirectory() + File.separator + "translations" + File.separator + "style.yml");
@ -2209,50 +2203,50 @@ public class PS {
this.styleFile.getParentFile().mkdirs(); this.styleFile.getParentFile().mkdirs();
} }
if (!this.styleFile.createNewFile()) { if (!this.styleFile.createNewFile()) {
log("Could not create the style file, please create \"translations/style.yml\" manually"); PS.log("Could not create the style file, please create \"translations/style.yml\" manually");
} }
} }
this.style = YamlConfiguration.loadConfiguration(this.styleFile); this.style = YamlConfiguration.loadConfiguration(this.styleFile);
setupStyle(); setupStyle();
} catch (IOException err) { } catch (IOException err) {
err.printStackTrace(); err.printStackTrace();
log("failed to save style.yml"); PS.log("failed to save style.yml");
} }
try { try {
this.configFile = new File(this.IMP.getDirectory() + File.separator + "config" + File.separator + "settings.yml"); this.configFile = new File(this.IMP.getDirectory() + File.separator + "config" + File.separator + "settings.yml");
if (!this.configFile.exists()) { if (!this.configFile.exists()) {
if (!this.configFile.createNewFile()) { if (!this.configFile.createNewFile()) {
log("Could not create the settings file, please create \"settings.yml\" manually."); PS.log("Could not create the settings file, please create \"settings.yml\" manually.");
} }
} }
this.config = YamlConfiguration.loadConfiguration(this.configFile); this.config = YamlConfiguration.loadConfiguration(this.configFile);
setupConfig(); setupConfig();
} catch (IOException err_trans) { } catch (IOException err_trans) {
log("Failed to save settings.yml"); PS.log("Failed to save settings.yml");
} }
try { try {
this.storageFile = new File(this.IMP.getDirectory() + File.separator + "config" + File.separator + "storage.yml"); this.storageFile = new File(this.IMP.getDirectory() + File.separator + "config" + File.separator + "storage.yml");
if (!this.storageFile.exists()) { if (!this.storageFile.exists()) {
if (!this.storageFile.createNewFile()) { if (!this.storageFile.createNewFile()) {
log("Could not the storage settings file, please create \"storage.yml\" manually."); PS.log("Could not the storage settings file, please create \"storage.yml\" manually.");
} }
} }
this.storage = YamlConfiguration.loadConfiguration(this.storageFile); this.storage = YamlConfiguration.loadConfiguration(this.storageFile);
setupStorage(); setupStorage();
} catch (IOException err_trans) { } catch (IOException err_trans) {
log("Failed to save storage.yml"); PS.log("Failed to save storage.yml");
} }
try { try {
this.commandsFile = new File(this.IMP.getDirectory() + File.separator + "config" + File.separator + "commands.yml"); this.commandsFile = new File(this.IMP.getDirectory() + File.separator + "config" + File.separator + "commands.yml");
if (!this.commandsFile.exists()) { if (!this.commandsFile.exists()) {
if (!this.commandsFile.createNewFile()) { if (!this.commandsFile.createNewFile()) {
log("Could not the storage settings file, please create \"commands.yml\" manually."); PS.log("Could not the storage settings file, please create \"commands.yml\" manually.");
} }
} }
this.commands = YamlConfiguration.loadConfiguration(this.commandsFile); this.commands = YamlConfiguration.loadConfiguration(this.commandsFile);
setupStorage(); setupStorage();
} catch (IOException err_trans) { } catch (IOException err_trans) {
log("Failed to save commands.yml"); PS.log("Failed to save commands.yml");
} }
try { try {
this.style.save(this.styleFile); this.style.save(this.styleFile);
@ -2260,7 +2254,7 @@ public class PS {
this.storage.save(this.storageFile); this.storage.save(this.storageFile);
this.commands.save(this.commandsFile); this.commands.save(this.commandsFile);
} catch (IOException e) { } catch (IOException e) {
log("Configuration file saving failed"); PS.log("Configuration file saving failed");
e.printStackTrace(); e.printStackTrace();
} }
} }
@ -2297,7 +2291,7 @@ public class PS {
} }
/** /**
* Show startup debug information * Show startup debug information.
*/ */
private void showDebug() { private void showDebug() {
if (Settings.DEBUG) { if (Settings.DEBUG) {
@ -2312,7 +2306,7 @@ public class PS {
settings.put("Schematics Save Path", "" + Settings.SCHEMATIC_SAVE_PATH); settings.put("Schematics Save Path", "" + Settings.SCHEMATIC_SAVE_PATH);
settings.put("API Location", "" + Settings.API_URL); settings.put("API Location", "" + Settings.API_URL);
for (Entry<String, String> setting : settings.entrySet()) { for (Entry<String, String> setting : settings.entrySet()) {
log(C.PREFIX + String.format("&cKey: &6%s&c, Value: &6%s", setting.getKey(), setting.getValue())); PS.log(C.PREFIX + String.format("&cKey: &6%s&c, Value: &6%s", setting.getKey(), setting.getValue()));
} }
} }
} }
@ -2335,7 +2329,7 @@ public class PS {
} }
/** /**
* Get the java version * Get the java version.
* @return Java version as a double * @return Java version as a double
*/ */
public double getJavaVersion() { public double getJavaVersion() {
@ -2378,7 +2372,7 @@ public class PS {
} }
public void foreachPlotArea(String world, RunnableVal<PlotArea> runnable) { public void foreachPlotArea(String world, RunnableVal<PlotArea> runnable) {
PlotArea[] array = this.plotareamap.get(world); PlotArea[] array = this.plotAreaMap.get(world);
if (array == null) { if (array == null) {
return; return;
} }
@ -2404,7 +2398,7 @@ public class PS {
} }
public int getPlotAreaCount(String world) { public int getPlotAreaCount(String world) {
return this.plotareamap.size(); return this.plotAreaMap.size();
} }
public Set<PlotArea> getPlotAreas() { public Set<PlotArea> getPlotAreas() {
@ -2419,15 +2413,15 @@ public class PS {
*/ */
@Deprecated @Deprecated
public Set<String> getPlotWorldStrings() { public Set<String> getPlotWorldStrings() {
HashSet<String> set = new HashSet<>(this.plotareamap.size()); HashSet<String> set = new HashSet<>(this.plotAreaMap.size());
for (Entry<String, PlotArea[]> entry : this.plotareamap.entrySet()) { for (Entry<String, PlotArea[]> entry : this.plotAreaMap.entrySet()) {
set.add(entry.getKey()); set.add(entry.getKey());
} }
return set; return set;
} }
public boolean isAugmented(String world) { public boolean isAugmented(String world) {
PlotArea[] areas = this.plotareamap.get(world); PlotArea[] areas = this.plotAreaMap.get(world);
if (areas == null) { if (areas == null) {
return false; return false;
} }
@ -2443,7 +2437,7 @@ public class PS {
* @return Collection of PlotArea objects * @return Collection of PlotArea objects
*/ */
public Set<PlotArea> getPlotAreas(String world) { public Set<PlotArea> getPlotAreas(String world) {
PlotArea[] areas = this.plotareamap.get(world); PlotArea[] areas = this.plotAreaMap.get(world);
if (areas == null) { if (areas == null) {
return new HashSet<>(0); return new HashSet<>(0);
} }

View File

@ -51,17 +51,16 @@ public class Area extends SubCommand {
switch (args[0].toLowerCase()) { switch (args[0].toLowerCase()) {
case "c": case "c":
case "setup": case "setup":
case "create": { case "create":
if (!Permissions.hasPermission(plr, "plots.area.create")) { if (!Permissions.hasPermission(plr, "plots.area.create")) {
C.NO_PERMISSION.send(plr, "plots.area.create"); C.NO_PERMISSION.send(plr, "plots.area.create");
return false; return false;
} }
switch (args.length) { switch (args.length) {
case 1: { case 1:
C.COMMAND_SYNTAX.send(plr, "/plot area create [world[:id]] [<modifier>=<value>]..."); C.COMMAND_SYNTAX.send(plr, "/plot area create [world[:id]] [<modifier>=<value>]...");
return false; return false;
} case 2:
case 2: {
switch (args[1].toLowerCase()) { switch (args[1].toLowerCase()) {
case "pos1": { // Set position 1 case "pos1": { // Set position 1
HybridPlotWorld area = plr.getMeta("area_create_area"); HybridPlotWorld area = plr.getMeta("area_create_area");
@ -69,14 +68,14 @@ public class Area extends SubCommand {
C.COMMAND_SYNTAX.send(plr, "/plot area create [world[:id]] [<modifier>=<value>]..."); C.COMMAND_SYNTAX.send(plr, "/plot area create [world[:id]] [<modifier>=<value>]...");
return false; return false;
} }
Location loc = plr.getLocation(); Location location = plr.getLocation();
plr.setMeta("area_pos1", loc); plr.setMeta("area_pos1", location);
C.SET_ATTRIBUTE.send(plr, "area_pos1", loc.getX() + "," + loc.getZ()); C.SET_ATTRIBUTE.send(plr, "area_pos1", location.getX() + "," + location.getZ());
MainUtil.sendMessage(plr, "You will now set pos2: /plot area create pos2" MainUtil.sendMessage(plr, "You will now set pos2: /plot area create pos2"
+ "\nNote: The chosen plot size may result in the created area not exactly matching your second position."); + "\nNote: The chosen plot size may result in the created area not exactly matching your second position.");
return true; return true;
} }
case "pos2": { // Set position 2 and finish creation for type=2 (partial) case "pos2": // Set position 2 and finish creation for type=2 (partial)
final HybridPlotWorld area = plr.getMeta("area_create_area"); final HybridPlotWorld area = plr.getMeta("area_create_area");
if (area == null) { if (area == null) {
C.COMMAND_SYNTAX.send(plr, "/plot area create [world[:id]] [<modifier>=<value>]..."); C.COMMAND_SYNTAX.send(plr, "/plot area create [world[:id]] [<modifier>=<value>]...");
@ -86,17 +85,17 @@ public class Area extends SubCommand {
Location pos2 = plr.getMeta("area_pos1"); Location pos2 = plr.getMeta("area_pos1");
int dx = Math.abs(pos1.getX() - pos2.getX()); int dx = Math.abs(pos1.getX() - pos2.getX());
int dz = Math.abs(pos1.getZ() - pos2.getZ()); int dz = Math.abs(pos1.getZ() - pos2.getZ());
int numx = Math.max(1, (dx + 1 + area.ROAD_WIDTH + area.SIZE / 2) / area.SIZE); int numX = Math.max(1, (dx + 1 + area.ROAD_WIDTH + area.SIZE / 2) / area.SIZE);
int numz = Math.max(1, (dz + 1 + area.ROAD_WIDTH + area.SIZE / 2) / area.SIZE); int numZ = Math.max(1, (dz + 1 + area.ROAD_WIDTH + area.SIZE / 2) / area.SIZE);
int ddx = dx - (numx * area.SIZE - area.ROAD_WIDTH); int ddx = dx - (numX * area.SIZE - area.ROAD_WIDTH);
int ddz = dz - (numz * area.SIZE - area.ROAD_WIDTH); int ddz = dz - (numZ * area.SIZE - area.ROAD_WIDTH);
int bx = Math.min(pos1.getX(), pos2.getX()) + ddx; int bx = Math.min(pos1.getX(), pos2.getX()) + ddx;
int bz = Math.min(pos1.getZ(), pos2.getZ()) + ddz; int bz = Math.min(pos1.getZ(), pos2.getZ()) + ddz;
int tx = Math.max(pos1.getX(), pos2.getX()) - ddx; int tx = Math.max(pos1.getX(), pos2.getX()) - ddx;
int tz = Math.max(pos1.getZ(), pos2.getZ()) - ddz; int tz = Math.max(pos1.getZ(), pos2.getZ()) - ddz;
int lower = (area.ROAD_WIDTH & 1) == 0 ? area.ROAD_WIDTH / 2 - 1 : area.ROAD_WIDTH / 2; int lower = (area.ROAD_WIDTH & 1) == 0 ? area.ROAD_WIDTH / 2 - 1 : area.ROAD_WIDTH / 2;
final int offsetx = bx - (area.ROAD_WIDTH == 0 ? 0 : lower); final int offsetX = bx - (area.ROAD_WIDTH == 0 ? 0 : lower);
final int offsetz = bz - (area.ROAD_WIDTH == 0 ? 0 : lower); final int offsetZ = bz - (area.ROAD_WIDTH == 0 ? 0 : lower);
final RegionWrapper region = new RegionWrapper(bx, tx, bz, tz); final RegionWrapper region = new RegionWrapper(bx, tx, bz, tz);
Set<PlotArea> areas = PS.get().getPlotAreas(area.worldname, region); Set<PlotArea> areas = PS.get().getPlotAreas(area.worldname, region);
if (!areas.isEmpty()) { if (!areas.isEmpty()) {
@ -109,7 +108,7 @@ public class Area extends SubCommand {
object.terrain = area.TERRAIN; object.terrain = area.TERRAIN;
object.type = area.TYPE; object.type = area.TYPE;
object.min = new PlotId(1, 1); object.min = new PlotId(1, 1);
object.max = new PlotId(numx, numz); object.max = new PlotId(numX, numZ);
object.plotManager = "PlotSquared"; object.plotManager = "PlotSquared";
object.setupGenerator = "PlotSquared"; object.setupGenerator = "PlotSquared";
object.step = area.getSettingNodes(); object.step = area.getSettingNodes();
@ -117,11 +116,11 @@ public class Area extends SubCommand {
Runnable run = new Runnable() { Runnable run = new Runnable() {
@Override @Override
public void run() { public void run() {
if (offsetx != 0) { if (offsetX != 0) {
PS.get().config.set(path + ".road.offset.x", offsetx); PS.get().config.set(path + ".road.offset.x", offsetX);
} }
if (offsetz != 0) { if (offsetZ != 0) {
PS.get().config.set(path + ".road.offset.z", offsetz); PS.get().config.set(path + ".road.offset.z", offsetZ);
} }
final String world = SetupUtils.manager.setupWorld(object); final String world = SetupUtils.manager.setupWorld(object);
if (WorldUtil.IMP.isWorld(world)) { if (WorldUtil.IMP.isWorld(world)) {
@ -147,9 +146,7 @@ public class Area extends SubCommand {
run.run(); run.run();
} }
return true; return true;
}
} }
}
default: // Start creation default: // Start creation
final SetupObject object = new SetupObject(); final SetupObject object = new SetupObject();
String[] split = args[1].split(":"); String[] split = args[1].split(":");
@ -180,59 +177,49 @@ public class Area extends SubCommand {
} }
switch (pair[0].toLowerCase()) { switch (pair[0].toLowerCase()) {
case "s": case "s":
case "size": { case "size":
pa.PLOT_WIDTH = Integer.parseInt(pair[1]); pa.PLOT_WIDTH = Integer.parseInt(pair[1]);
pa.SIZE = (short) (pa.PLOT_WIDTH + pa.ROAD_WIDTH); pa.SIZE = (short) (pa.PLOT_WIDTH + pa.ROAD_WIDTH);
break; break;
}
case "g": case "g":
case "gap": { case "gap":
pa.ROAD_WIDTH = Integer.parseInt(pair[1]); pa.ROAD_WIDTH = Integer.parseInt(pair[1]);
pa.SIZE = (short) (pa.PLOT_WIDTH + pa.ROAD_WIDTH); pa.SIZE = (short) (pa.PLOT_WIDTH + pa.ROAD_WIDTH);
break; break;
}
case "h": case "h":
case "height": { case "height":
int value = Integer.parseInt(pair[1]); int value = Integer.parseInt(pair[1]);
pa.PLOT_HEIGHT = value; pa.PLOT_HEIGHT = value;
pa.ROAD_HEIGHT = value; pa.ROAD_HEIGHT = value;
pa.WALL_HEIGHT = value; pa.WALL_HEIGHT = value;
break; break;
}
case "f": case "f":
case "floor": { case "floor":
pa.TOP_BLOCK = Configuration.BLOCKLIST.parseString(pair[1]); pa.TOP_BLOCK = Configuration.BLOCKLIST.parseString(pair[1]);
break; break;
}
case "m": case "m":
case "main": { case "main":
pa.MAIN_BLOCK = Configuration.BLOCKLIST.parseString(pair[1]); pa.MAIN_BLOCK = Configuration.BLOCKLIST.parseString(pair[1]);
break; break;
}
case "w": case "w":
case "wall": { case "wall":
pa.WALL_FILLING = Configuration.BLOCK.parseString(pair[1]); pa.WALL_FILLING = Configuration.BLOCK.parseString(pair[1]);
break; break;
}
case "b": case "b":
case "border": { case "border":
pa.WALL_BLOCK = Configuration.BLOCK.parseString(pair[1]); pa.WALL_BLOCK = Configuration.BLOCK.parseString(pair[1]);
break; break;
} case "terrain":
case "terrain": {
pa.TERRAIN = Integer.parseInt(pair[1]); pa.TERRAIN = Integer.parseInt(pair[1]);
object.terrain = pa.TERRAIN; object.terrain = pa.TERRAIN;
break; break;
} case "type":
case "type": {
pa.TYPE = Integer.parseInt(pair[1]); pa.TYPE = Integer.parseInt(pair[1]);
object.type = pa.TYPE; object.type = pa.TYPE;
break; break;
} default:
default: {
C.COMMAND_SYNTAX.send(plr, "/plot area create [world[:id]] [<modifier>=<value>]..."); C.COMMAND_SYNTAX.send(plr, "/plot area create [world[:id]] [<modifier>=<value>]...");
return false; return false;
}
} }
} }
if (pa.TYPE != 2) { if (pa.TYPE != 2) {
@ -292,7 +279,6 @@ public class Area extends SubCommand {
break; break;
} }
return true; return true;
}
case "i": case "i":
case "info": { case "info": {
if (!Permissions.hasPermission(plr, "plots.area.info")) { if (!Permissions.hasPermission(plr, "plots.area.info")) {
@ -349,7 +335,7 @@ public class Area extends SubCommand {
return true; return true;
} }
case "l": case "l":
case "list": { case "list":
if (!Permissions.hasPermission(plr, "plots.area.list")) { if (!Permissions.hasPermission(plr, "plots.area.list")) {
C.NO_PERMISSION.send(plr, "plots.area.list"); C.NO_PERMISSION.send(plr, "plots.area.list");
return false; return false;
@ -407,7 +393,6 @@ public class Area extends SubCommand {
} }
}, "/plot area list", C.AREA_LIST_HEADER_PAGED.s()); }, "/plot area list", C.AREA_LIST_HEADER_PAGED.s());
return true; return true;
}
case "regen": case "regen":
case "regenerate": { case "regenerate": {
if (!Permissions.hasPermission(plr, "plots.area.regen")) { if (!Permissions.hasPermission(plr, "plots.area.regen")) {
@ -435,7 +420,7 @@ public class Area extends SubCommand {
case "v": case "v":
case "teleport": case "teleport":
case "visit": case "visit":
case "tp": { case "tp":
if (!Permissions.hasPermission(plr, "plots.area.tp")) { if (!Permissions.hasPermission(plr, "plots.area.tp")) {
C.NO_PERMISSION.send(plr, "plots.area.tp"); C.NO_PERMISSION.send(plr, "plots.area.tp");
return false; return false;
@ -460,16 +445,14 @@ public class Area extends SubCommand {
} }
plr.teleport(center); plr.teleport(center);
return true; return true;
}
case "delete": case "delete":
case "remove": { case "remove":
MainUtil.sendMessage(plr, "$1World creation settings may be stored in multiple locations:" MainUtil.sendMessage(plr, "$1World creation settings may be stored in multiple locations:"
+ "\n$3 - $2Bukkit bukkit.yml" + "\n$3 - $2Bukkit bukkit.yml"
+ "\n$3 - $2PlotSquared settings.yml" + "\n$3 - $2PlotSquared settings.yml"
+ "\n$3 - $2Multiverse worlds.yml (or any world management plugin)" + "\n$3 - $2Multiverse worlds.yml (or any world management plugin)"
+ "\n$1Stop the server and delete it from these locations."); + "\n$1Stop the server and delete it from these locations.");
return true; return true;
}
} }
C.COMMAND_SYNTAX.send(plr, getUsage()); C.COMMAND_SYNTAX.send(plr, getUsage());
return false; return false;

View File

@ -26,7 +26,7 @@ public class BO3 extends SubCommand {
public boolean onCommand(PlotPlayer plr, String[] args) { public boolean onCommand(PlotPlayer plr, String[] args) {
Location loc = plr.getLocation(); Location loc = plr.getLocation();
Plot plot = loc.getPlotAbs(); Plot plot = loc.getPlotAbs();
if ((plot == null) || !plot.hasOwner()) { if (plot == null || !plot.hasOwner()) {
return !sendMessage(plr, C.NOT_IN_PLOT); return !sendMessage(plr, C.NOT_IN_PLOT);
} }
if (!plot.isOwner(plr.getUUID()) && !Permissions.hasPermission(plr, "plots.admin.command.bo3")) { if (!plot.isOwner(plr.getUUID()) && !Permissions.hasPermission(plr, "plots.admin.command.bo3")) {
@ -40,21 +40,18 @@ public class BO3 extends SubCommand {
switch (args[0].toLowerCase()) { switch (args[0].toLowerCase()) {
case "output": case "output":
case "save": case "save":
case "export": { case "export":
return BO3Handler.saveBO3(plr, plot); return BO3Handler.saveBO3(plr, plot);
}
case "paste": case "paste":
case "load": case "load":
case "import": case "import":
case "input": { case "input":
// TODO NOT IMPLEMENTED YET // TODO NOT IMPLEMENTED YET
MainUtil.sendMessage(plr, "NOT IMPLEMENTED YET!!!"); MainUtil.sendMessage(plr, "NOT IMPLEMENTED YET!!!");
return false; return false;
} default:
default: {
noArgs(plr); noArgs(plr);
return false; return false;
}
} }
} }
} }

View File

@ -15,6 +15,7 @@ import com.intellectualcrafters.plot.util.MainUtil;
import com.intellectualcrafters.plot.util.Permissions; import com.intellectualcrafters.plot.util.Permissions;
import com.intellectualcrafters.plot.util.UUIDHandler; import com.intellectualcrafters.plot.util.UUIDHandler;
import com.plotsquared.general.commands.CommandDeclaration; import com.plotsquared.general.commands.CommandDeclaration;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashSet; import java.util.HashSet;
import java.util.Set; import java.util.Set;
@ -237,9 +238,9 @@ public class Cluster extends SubCommand {
return false; return false;
} }
HashSet<Plot> existing = area.getPlotSelectionOwned(cluster.getP1(), cluster.getP2()); HashSet<Plot> existing = area.getPlotSelectionOwned(cluster.getP1(), cluster.getP2());
HashSet<Plot> newplots = area.getPlotSelectionOwned(pos1, pos2); HashSet<Plot> newPlots = area.getPlotSelectionOwned(pos1, pos2);
HashSet<Plot> removed = (HashSet<Plot>) existing.clone(); HashSet<Plot> removed = (HashSet<Plot>) existing.clone();
removed.removeAll(newplots); removed.removeAll(newPlots);
// Check expand / shrink // Check expand / shrink
if (!removed.isEmpty()) { if (!removed.isEmpty()) {
if (!Permissions.hasPermission(plr, "plots.cluster.resize.shrink")) { if (!Permissions.hasPermission(plr, "plots.cluster.resize.shrink")) {
@ -247,8 +248,8 @@ public class Cluster extends SubCommand {
return false; return false;
} }
} }
newplots.removeAll(existing); newPlots.removeAll(existing);
if (!newplots.isEmpty()) { if (!newPlots.isEmpty()) {
if (!Permissions.hasPermission(plr, "plots.cluster.resize.expand")) { if (!Permissions.hasPermission(plr, "plots.cluster.resize.expand")) {
MainUtil.sendMessage(plr, C.NO_PERMISSION, "plots.cluster.resize.expand"); MainUtil.sendMessage(plr, C.NO_PERMISSION, "plots.cluster.resize.expand");
return false; return false;
@ -544,7 +545,7 @@ public class Cluster extends SubCommand {
} }
case "sh": case "sh":
case "setspawn": case "setspawn":
case "sethome": { case "sethome":
if (!Permissions.hasPermission(plr, "plots.cluster.sethome")) { if (!Permissions.hasPermission(plr, "plots.cluster.sethome")) {
MainUtil.sendMessage(plr, C.NO_PERMISSION, "plots.cluster.sethome"); MainUtil.sendMessage(plr, C.NO_PERMISSION, "plots.cluster.sethome");
return false; return false;
@ -574,7 +575,6 @@ public class Cluster extends SubCommand {
cluster.settings.setPosition(blockloc); cluster.settings.setPosition(blockloc);
DBFunc.setPosition(cluster, relative.getX() + "," + relative.getY() + "," + relative.getZ()); DBFunc.setPosition(cluster, relative.getX() + "," + relative.getY() + "," + relative.getZ());
return MainUtil.sendMessage(plr, C.POSITION_SET); return MainUtil.sendMessage(plr, C.POSITION_SET);
}
} }
MainUtil.sendMessage(plr, C.CLUSTER_AVAILABLE_ARGS); MainUtil.sendMessage(plr, C.CLUSTER_AVAILABLE_ARGS);
return false; return false;

View File

@ -3,19 +3,15 @@ package com.intellectualcrafters.plot.commands;
import com.intellectualcrafters.plot.object.PlotPlayer; import com.intellectualcrafters.plot.object.PlotPlayer;
import com.intellectualcrafters.plot.util.Permissions; import com.intellectualcrafters.plot.util.Permissions;
/**
* Created by Citymonstret on 2014-08-03.
*
*/
public class CommandPermission { public class CommandPermission {
/** /**
* Permission Node * Permission Node.
*/ */
public final String permission; public final String permission;
/** /**
* Command Permission
* @param permission Command Permission * @param permission Command Permission
*/ */
public CommandPermission(String permission) { public CommandPermission(String permission) {
@ -23,7 +19,8 @@ public class CommandPermission {
} }
/** /**
* @param player Does the player have the permission? * Check the permissions of a player.
* @param player The player to check permissions for
* *
* @return true of player has the required permission node * @return true of player has the required permission node
*/ */

View File

@ -10,6 +10,7 @@ import com.intellectualcrafters.plot.util.MathMan;
import com.intellectualcrafters.plot.util.TaskManager; import com.intellectualcrafters.plot.util.TaskManager;
import com.intellectualcrafters.plot.util.WorldUtil; import com.intellectualcrafters.plot.util.WorldUtil;
import com.plotsquared.general.commands.CommandDeclaration; import com.plotsquared.general.commands.CommandDeclaration;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collection; import java.util.Collection;
import java.util.HashSet; import java.util.HashSet;
@ -29,7 +30,7 @@ public class Condense extends SubCommand {
@Override @Override
public boolean onCommand(final PlotPlayer plr, String[] args) { public boolean onCommand(final PlotPlayer plr, String[] args) {
if ((args.length != 2) && (args.length != 3)) { if (args.length != 2 && args.length != 3) {
MainUtil.sendMessage(plr, "/plot condense <area> <start|stop|info> [radius]"); MainUtil.sendMessage(plr, "/plot condense <area> <start|stop|info> [radius]");
return false; return false;
} }
@ -44,7 +45,7 @@ public class Condense extends SubCommand {
MainUtil.sendMessage(plr, "/plot condense " + area.toString() + " start <radius>"); MainUtil.sendMessage(plr, "/plot condense " + area.toString() + " start <radius>");
return false; return false;
} }
if (TASK) { if (Condense.TASK) {
MainUtil.sendMessage(plr, "TASK ALREADY STARTED"); MainUtil.sendMessage(plr, "TASK ALREADY STARTED");
return false; return false;
} }
@ -55,13 +56,13 @@ public class Condense extends SubCommand {
int radius = Integer.parseInt(args[2]); int radius = Integer.parseInt(args[2]);
ArrayList<Plot> plots = new ArrayList<>(PS.get().getPlots(area)); ArrayList<Plot> plots = new ArrayList<>(PS.get().getPlots(area));
// remove non base plots // remove non base plots
Iterator<Plot> iter = plots.iterator(); Iterator<Plot> iterator = plots.iterator();
int maxSize = 0; int maxSize = 0;
ArrayList<Integer> sizes = new ArrayList<>(); ArrayList<Integer> sizes = new ArrayList<>();
while (iter.hasNext()) { while (iterator.hasNext()) {
Plot plot = iter.next(); Plot plot = iterator.next();
if (!plot.isBasePlot()) { if (!plot.isBasePlot()) {
iter.remove(); iterator.remove();
continue; continue;
} }
int size = plot.getConnectedPlots().size(); int size = plot.getConnectedPlots().size();
@ -90,7 +91,7 @@ public class Condense extends SubCommand {
} }
} }
int size = allPlots.size(); int size = allPlots.size();
int minimumRadius = (int) Math.ceil((Math.sqrt(size) / 2) + 1); int minimumRadius = (int) Math.ceil(Math.sqrt(size) / 2 + 1);
if (radius < minimumRadius) { if (radius < minimumRadius) {
MainUtil.sendMessage(plr, "RADIUS TOO SMALL"); MainUtil.sendMessage(plr, "RADIUS TOO SMALL");
return false; return false;
@ -98,7 +99,7 @@ public class Condense extends SubCommand {
List<PlotId> toMove = new ArrayList<>(getPlots(allPlots, radius)); List<PlotId> toMove = new ArrayList<>(getPlots(allPlots, radius));
final List<PlotId> free = new ArrayList<>(); final List<PlotId> free = new ArrayList<>();
PlotId start = new PlotId(0, 0); PlotId start = new PlotId(0, 0);
while ((start.x <= minimumRadius) && (start.y <= minimumRadius)) { while (start.x <= minimumRadius && start.y <= minimumRadius) {
Plot plot = area.getPlotAbs(start); Plot plot = area.getPlotAbs(start);
if (plot != null && !plot.hasOwner()) { if (plot != null && !plot.hasOwner()) {
free.add(plot.getId()); free.add(plot.getId());
@ -113,11 +114,11 @@ public class Condense extends SubCommand {
Runnable run = new Runnable() { Runnable run = new Runnable() {
@Override @Override
public void run() { public void run() {
if (!TASK) { if (!Condense.TASK) {
MainUtil.sendMessage(plr, "TASK CANCELLED."); MainUtil.sendMessage(plr, "TASK CANCELLED.");
} }
if (allPlots.isEmpty()) { if (allPlots.isEmpty()) {
TASK = false; Condense.TASK = false;
MainUtil.sendMessage(plr, "TASK COMPLETE. PLEASE VERIFY THAT NO NEW PLOTS HAVE BEEN CLAIMED DURING TASK."); MainUtil.sendMessage(plr, "TASK COMPLETE. PLEASE VERIFY THAT NO NEW PLOTS HAVE BEEN CLAIMED DURING TASK.");
return; return;
} }
@ -146,7 +147,7 @@ public class Condense extends SubCommand {
} }
} }
if (free.isEmpty()) { if (free.isEmpty()) {
TASK = false; Condense.TASK = false;
MainUtil.sendMessage(plr, "TASK FAILED. NO FREE PLOTS FOUND!"); MainUtil.sendMessage(plr, "TASK FAILED. NO FREE PLOTS FOUND!");
return; return;
} }
@ -155,20 +156,19 @@ public class Condense extends SubCommand {
} }
} }
}; };
TASK = true; Condense.TASK = true;
TaskManager.runTaskAsync(run); TaskManager.runTaskAsync(run);
return true; return true;
} }
case "stop": { case "stop":
if (!TASK) { if (!Condense.TASK) {
MainUtil.sendMessage(plr, "TASK ALREADY STOPPED"); MainUtil.sendMessage(plr, "TASK ALREADY STOPPED");
return false; return false;
} }
TASK = false; Condense.TASK = false;
MainUtil.sendMessage(plr, "TASK STOPPED"); MainUtil.sendMessage(plr, "TASK STOPPED");
return true; return true;
} case "info":
case "info": {
if (args.length == 2) { if (args.length == 2) {
MainUtil.sendMessage(plr, "/plot condense " + area.toString() + " info <radius>"); MainUtil.sendMessage(plr, "/plot condense " + area.toString() + " info <radius>");
return false; return false;
@ -180,7 +180,7 @@ public class Condense extends SubCommand {
int radius = Integer.parseInt(args[2]); int radius = Integer.parseInt(args[2]);
Collection<Plot> plots = area.getPlots(); Collection<Plot> plots = area.getPlots();
int size = plots.size(); int size = plots.size();
int minimumRadius = (int) Math.ceil((Math.sqrt(size) / 2) + 1); int minimumRadius = (int) Math.ceil(Math.sqrt(size) / 2 + 1);
if (radius < minimumRadius) { if (radius < minimumRadius) {
MainUtil.sendMessage(plr, "RADIUS TOO SMALL"); MainUtil.sendMessage(plr, "RADIUS TOO SMALL");
return false; return false;
@ -196,7 +196,6 @@ public class Condense extends SubCommand {
MainUtil.sendMessage(plr, "ESTIMATED TIME: " + "No idea, times will drastically change based on the system performance and load"); MainUtil.sendMessage(plr, "ESTIMATED TIME: " + "No idea, times will drastically change based on the system performance and load");
MainUtil.sendMessage(plr, "&e - Radius is measured in plot width"); MainUtil.sendMessage(plr, "&e - Radius is measured in plot width");
return true; return true;
}
} }
MainUtil.sendMessage(plr, "/plot condense " + area.worldname + " <start|stop|info> [radius]"); MainUtil.sendMessage(plr, "/plot condense " + area.worldname + " <start|stop|info> [radius]");
return false; return false;
@ -205,7 +204,7 @@ public class Condense extends SubCommand {
public Set<PlotId> getPlots(Collection<Plot> plots, int radius) { public Set<PlotId> getPlots(Collection<Plot> plots, int radius) {
HashSet<PlotId> outside = new HashSet<>(); HashSet<PlotId> outside = new HashSet<>();
for (Plot plot : plots) { for (Plot plot : plots) {
if ((plot.getId().x > radius) || (plot.getId().x < -radius) || (plot.getId().y > radius) || (plot.getId().y < -radius)) { if (plot.getId().x > radius || plot.getId().x < -radius || plot.getId().y > radius || plot.getId().y < -radius) {
outside.add(plot.getId()); outside.add(plot.getId());
} }
} }

View File

@ -78,7 +78,7 @@ public class Database extends SubCommand {
com.intellectualcrafters.plot.database.Database implementation; com.intellectualcrafters.plot.database.Database implementation;
String prefix = ""; String prefix = "";
switch (args[0].toLowerCase()) { switch (args[0].toLowerCase()) {
case "import": { case "import":
if (args.length < 2) { if (args.length < 2) {
MainUtil.sendMessage(player, "/plot database import [sqlite file] [prefix]"); MainUtil.sendMessage(player, "/plot database import [sqlite file] [prefix]");
return false; return false;
@ -90,7 +90,7 @@ public class Database extends SubCommand {
} }
MainUtil.sendMessage(player, "&6Starting..."); MainUtil.sendMessage(player, "&6Starting...");
implementation = new SQLite(file.getPath()); implementation = new SQLite(file.getPath());
SQLManager manager = new SQLManager(implementation, (args.length == 3) ? args[2] : "", true); SQLManager manager = new SQLManager(implementation, args.length == 3 ? args[2] : "", true);
HashMap<String, HashMap<PlotId, Plot>> map = manager.getPlots(); HashMap<String, HashMap<PlotId, Plot>> map = manager.getPlots();
plots = new ArrayList<>(); plots = new ArrayList<>();
for (Entry<String, HashMap<PlotId, Plot>> entry : map.entrySet()) { for (Entry<String, HashMap<PlotId, Plot>> entry : map.entrySet()) {
@ -122,7 +122,6 @@ public class Database extends SubCommand {
} }
}); });
return true; return true;
}
case "mysql": case "mysql":
if (args.length < 6) { if (args.length < 6) {
return MainUtil.sendMessage(player, "/plot database mysql [host] [port] [username] [password] [database] {prefix}"); return MainUtil.sendMessage(player, "/plot database mysql [host] [port] [username] [password] [database] {prefix}");
@ -148,7 +147,7 @@ public class Database extends SubCommand {
} }
try { try {
SQLManager manager = new SQLManager(implementation, prefix, true); SQLManager manager = new SQLManager(implementation, prefix, true);
insertPlots(manager, plots, player); Database.insertPlots(manager, plots, player);
return true; return true;
} catch (ClassNotFoundException | SQLException e) { } catch (ClassNotFoundException | SQLException e) {
MainUtil.sendMessage(player, "$1Failed to save plots, read stacktrace for info"); MainUtil.sendMessage(player, "$1Failed to save plots, read stacktrace for info");

View File

@ -95,7 +95,7 @@ public class DebugClaimTest extends SubCommand {
plot.owner = uuid; plot.owner = uuid;
plots.add(plot); plots.add(plot);
} else { } else {
MainUtil.sendMessage(plr, " - &cInvalid playername: " + plot.getId() + " : " + line); MainUtil.sendMessage(plr, " - &cInvalid PlayerName: " + plot.getId() + " : " + line);
} }
} }
} }

View File

@ -3,6 +3,7 @@ package com.intellectualcrafters.plot.commands;
import com.intellectualcrafters.plot.config.C; import com.intellectualcrafters.plot.config.C;
import com.intellectualcrafters.plot.util.StringMan; import com.intellectualcrafters.plot.util.StringMan;
import com.plotsquared.general.commands.Command; import com.plotsquared.general.commands.Command;
import java.io.File; import java.io.File;
import java.nio.charset.StandardCharsets; import java.nio.charset.StandardCharsets;
import java.nio.file.Files; import java.nio.file.Files;
@ -18,22 +19,24 @@ public class GenerateDocs {
public static void main(String[] args) { public static void main(String[] args) {
new WE_Anywhere(); new WE_Anywhere();
List<Command> commands = MainCommand.getInstance().getCommands(); List<Command> commands = MainCommand.getInstance().getCommands();
log("### Want to document some commands?"); GenerateDocs.log("### Want to document some commands?");
log(" - This page is automatically generated"); GenerateDocs.log(" - This page is automatically generated");
log(" - Fork the project and add a javadoc comment to one of the command classes"); GenerateDocs.log(" - Fork the project and add a javadoc comment to one of the command classes");
log(" - Then do a pull request and it will be added to this page"); GenerateDocs.log(" - Then do a pull request and it will be added to this page");
log(""); GenerateDocs.log("");
log("# Contents"); GenerateDocs.log("# Contents");
for (CommandCategory category : CommandCategory.values()) { for (CommandCategory category : CommandCategory.values()) {
log("###### " + category.name()); GenerateDocs.log("###### " + category.name());
for (Command command : MainCommand.getInstance().getCommands(category, null)) { for (Command command : MainCommand.getInstance().getCommands(category, null)) {
log(" - [/plot " + command.getId() + "](https://github.com/IntellectualSites/PlotSquared/wiki/Commands#" + command.getId() + ") "); GenerateDocs
.log(" - [/plot " + command.getId() + "](https://github.com/IntellectualSites/PlotSquared/wiki/Commands#" + command.getId()
+ ") ");
} }
log(""); GenerateDocs.log("");
} }
log("# Commands"); GenerateDocs.log("# Commands");
for (Command command : commands) { for (Command command : commands) {
printCommand(command); GenerateDocs.printCommand(command);
} }
} }
@ -46,62 +49,60 @@ public class GenerateDocs {
String source = String source =
"https://github.com/IntellectualSites/PlotSquared/tree/master/Core/src/main/java/com/intellectualcrafters/plot/commands/" + clazz "https://github.com/IntellectualSites/PlotSquared/tree/master/Core/src/main/java/com/intellectualcrafters/plot/commands/" + clazz
+ ".java"; + ".java";
log("## [" + name.toUpperCase() + "](" + source + ") "); GenerateDocs.log("## [" + name.toUpperCase() + "](" + source + ") ");
File file = new File("Core/src/main/java/com/intellectualcrafters/plot/commands/" + clazz + ".java"); File file = new File("Core/src/main/java/com/intellectualcrafters/plot/commands/" + clazz + ".java");
List<String> lines = Files.readAllLines(file.toPath(), StandardCharsets.UTF_8); List<String> lines = Files.readAllLines(file.toPath(), StandardCharsets.UTF_8);
List<String> perms = getPerms(name, lines); List<String> perms = GenerateDocs.getPerms(name, lines);
List<String> usages = getUsage(name, lines); List<String> usages = GenerateDocs.getUsage(name, lines);
String comment = getComments(lines); String comment = GenerateDocs.getComments(lines);
log("#### Description"); GenerateDocs.log("#### Description");
log("`" + command.getDescription() + "`"); GenerateDocs.log("`" + command.getDescription() + "`");
if (!comment.isEmpty()) { if (!comment.isEmpty()) {
log("##### Comments"); GenerateDocs.log("##### Comments");
log("``` java"); GenerateDocs.log("``` java");
log(comment); GenerateDocs.log(comment);
log("```"); GenerateDocs.log("```");
} }
log("#### Usage "); GenerateDocs.log("#### Usage ");
{ String mainUsage = command.getUsage().replaceAll("\\{label\\}", "plot");
String mainUsage = command.getUsage().replaceAll("\\{label\\}", "plot"); if (!usages.isEmpty() && !usages.get(0).equalsIgnoreCase(mainUsage)) {
if (!usages.isEmpty() && !usages.get(0).equalsIgnoreCase(mainUsage)) { GenerateDocs.log("##### Primary ");
log("##### Primary "); GenerateDocs.log(" - `" + mainUsage + "` ");
log(" - `" + mainUsage + "` "); GenerateDocs.log("");
log(""); GenerateDocs.log("##### Other ");
log("##### Other "); GenerateDocs.log(" - `" + StringMan.join(usages, "`\n - `") + "` ");
log(" - `" + StringMan.join(usages, "`\n - `") + "` "); GenerateDocs.log("");
log(""); } else {
} else { GenerateDocs.log("`" + mainUsage + "` ");
log("`" + mainUsage + "` ");
}
} }
if (command.getRequiredType() != RequiredType.NONE) { if (command.getRequiredType() != RequiredType.NONE) {
log("#### Required callers"); GenerateDocs.log("#### Required callers");
log("`" + command.getRequiredType().name() + "`"); GenerateDocs.log("`" + command.getRequiredType().name() + "`");
} }
List<String> aliases = command.getAliases(); List<String> aliases = command.getAliases();
if (!aliases.isEmpty()) { if (!aliases.isEmpty()) {
log("#### Aliases"); GenerateDocs.log("#### Aliases");
log("`" + StringMan.getString(command.getAliases()) + "`"); GenerateDocs.log("`" + StringMan.getString(command.getAliases()) + "`");
} }
log("#### Permissions"); GenerateDocs.log("#### Permissions");
if (!perms.isEmpty()) { if (!perms.isEmpty()) {
log("##### Primary"); GenerateDocs.log("##### Primary");
log(" - `" + command.getPermission() + "` "); GenerateDocs.log(" - `" + command.getPermission() + "` ");
log(""); GenerateDocs.log("");
log("##### Other"); GenerateDocs.log("##### Other");
log(" - `" + StringMan.join(perms, "`\n - `") + "`"); GenerateDocs.log(" - `" + StringMan.join(perms, "`\n - `") + "`");
log(""); GenerateDocs.log("");
} else { } else {
log("`" + command.getPermission() + "` "); GenerateDocs.log("`" + command.getPermission() + "` ");
} }
log("***"); GenerateDocs.log("***");
log(""); GenerateDocs.log("");
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
} }
@ -189,10 +190,9 @@ public class GenerateDocs {
} }
switch (cmd.toLowerCase()) { switch (cmd.toLowerCase()) {
case "auto": case "auto":
case "claim": { case "claim":
perms.add("plots.plot.<#>"); perms.add("plots.plot.<#>");
break; break;
}
} }
return new ArrayList<>(perms); return new ArrayList<>(perms);
} }

View File

@ -30,11 +30,10 @@ public class Help extends Command {
@Override @Override
public void execute(PlotPlayer player, String[] args, RunnableVal3<Command, Runnable, Runnable> confirm, RunnableVal2<Command, CommandResult> whenDone) { public void execute(PlotPlayer player, String[] args, RunnableVal3<Command, Runnable, Runnable> confirm, RunnableVal2<Command, CommandResult> whenDone) {
switch (args.length) { switch (args.length) {
case 0: { case 0:
displayHelp(player, null, 0); displayHelp(player, null, 0);
return; return;
} case 1:
case 1: {
if (MathMan.isInteger(args[0])) { if (MathMan.isInteger(args[0])) {
try { try {
displayHelp(player, null, Integer.parseInt(args[0])); displayHelp(player, null, Integer.parseInt(args[0]));
@ -45,8 +44,7 @@ public class Help extends Command {
displayHelp(player, args[0], 1); displayHelp(player, args[0], 1);
} }
return; return;
} case 2:
case 2: {
if (MathMan.isInteger(args[1])) { if (MathMan.isInteger(args[1])) {
try { try {
displayHelp(player, args[1], Integer.parseInt(args[1])); displayHelp(player, args[1], Integer.parseInt(args[1]));
@ -55,10 +53,8 @@ public class Help extends Command {
} }
} }
return; return;
} default:
default: {
C.COMMAND_SYNTAX.send(player, getUsage()); C.COMMAND_SYNTAX.send(player, getUsage());
}
} }
} }

View File

@ -10,6 +10,7 @@ import com.intellectualcrafters.plot.util.CommentManager;
import com.intellectualcrafters.plot.util.MainUtil; import com.intellectualcrafters.plot.util.MainUtil;
import com.intellectualcrafters.plot.util.StringMan; import com.intellectualcrafters.plot.util.StringMan;
import com.plotsquared.general.commands.CommandDeclaration; import com.plotsquared.general.commands.CommandDeclaration;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
@ -23,7 +24,7 @@ import java.util.List;
public class Inbox extends SubCommand { public class Inbox extends SubCommand {
public void displayComments(PlotPlayer player, List<PlotComment> oldComments, int page) { public void displayComments(PlotPlayer player, List<PlotComment> oldComments, int page) {
if ((oldComments == null) || oldComments.isEmpty()) { if (oldComments == null || oldComments.isEmpty()) {
MainUtil.sendMessage(player, C.INBOX_EMPTY); MainUtil.sendMessage(player, C.INBOX_EMPTY);
return; return;
} }
@ -38,7 +39,7 @@ public class Inbox extends SubCommand {
page = totalPages; page = totalPages;
} }
// Only display 12 per page // Only display 12 per page
int max = (page * 12) + 12; int max = page * 12 + 12;
if (max > comments.length) { if (max > comments.length) {
max = comments.length; max = comments.length;
} }
@ -112,7 +113,7 @@ public class Inbox extends SubCommand {
final int page; final int page;
if (args.length > 1) { if (args.length > 1) {
switch (args[1].toLowerCase()) { switch (args[1].toLowerCase()) {
case "delete": { case "delete":
if (!inbox.canModify(plot, player)) { if (!inbox.canModify(plot, player)) {
sendMessage(player, C.NO_PERM_INBOX_MODIFY); sendMessage(player, C.NO_PERM_INBOX_MODIFY);
return false; return false;
@ -149,8 +150,7 @@ public class Inbox extends SubCommand {
return false; return false;
} }
return true; return true;
} case "clear":
case "clear": {
if (!inbox.canModify(plot, player)) { if (!inbox.canModify(plot, player)) {
sendMessage(player, C.NO_PERM_INBOX_MODIFY); sendMessage(player, C.NO_PERM_INBOX_MODIFY);
} }
@ -161,15 +161,13 @@ public class Inbox extends SubCommand {
} }
MainUtil.sendMessage(player, C.COMMENT_REMOVED, "*"); MainUtil.sendMessage(player, C.COMMENT_REMOVED, "*");
return true; return true;
} default:
default: {
try { try {
page = Integer.parseInt(args[1]); page = Integer.parseInt(args[1]);
} catch (NumberFormatException e) { } catch (NumberFormatException e) {
sendMessage(player, C.COMMAND_SYNTAX, "/plot inbox [inbox] [delete <index>|clear|page]"); sendMessage(player, C.COMMAND_SYNTAX, "/plot inbox [inbox] [delete <index>|clear|page]");
return false; return false;
} }
}
} }
} else { } else {
page = 1; page = 1;

View File

@ -66,7 +66,7 @@ public class Info extends SubCommand {
args = new String[]{args[1]}; args = new String[]{args[1]};
} }
} }
if ((args.length == 1) && args[0].equalsIgnoreCase("inv")) { if (args.length == 1 && args[0].equalsIgnoreCase("inv")) {
PlotInventory inv = new PlotInventory(player) { PlotInventory inv = new PlotInventory(player) {
@Override @Override
public boolean onClick(int index) { public boolean onClick(int index) {
@ -95,13 +95,9 @@ public class Info extends SubCommand {
return true; return true;
} }
boolean hasOwner = plot.hasOwner(); boolean hasOwner = plot.hasOwner();
boolean containsEveryone;
boolean trustedEveryone;
// Wildcard player {added} // Wildcard player {added}
{ boolean containsEveryone = plot.getTrusted().contains(DBFunc.everyone);
containsEveryone = plot.getTrusted().contains(DBFunc.everyone); boolean trustedEveryone = plot.getMembers().contains(DBFunc.everyone);
trustedEveryone = plot.getMembers().contains(DBFunc.everyone);
}
// Unclaimed? // Unclaimed?
if (!hasOwner && !containsEveryone && !trustedEveryone) { if (!hasOwner && !containsEveryone && !trustedEveryone) {
MainUtil.sendMessage(player, C.PLOT_INFO_UNCLAIMED, plot.getId().x + ";" + plot.getId().y); MainUtil.sendMessage(player, C.PLOT_INFO_UNCLAIMED, plot.getId().x + ";" + plot.getId().y);

View File

@ -26,6 +26,7 @@ import java.util.Arrays;
import java.util.Collections; import java.util.Collections;
import java.util.Comparator; import java.util.Comparator;
import java.util.Iterator; import java.util.Iterator;
import java.util.List;
import java.util.Map.Entry; import java.util.Map.Entry;
import java.util.UUID; import java.util.UUID;
@ -39,8 +40,8 @@ import java.util.UUID;
public class ListCmd extends SubCommand { public class ListCmd extends SubCommand {
private String[] getArgumentList(PlotPlayer player) { private String[] getArgumentList(PlotPlayer player) {
java.util.List<String> args = new ArrayList<>(); List<String> args = new ArrayList<>();
if ((EconHandler.manager != null) && Permissions.hasPermission(player, "plots.list.forsale")) { if (EconHandler.manager != null && Permissions.hasPermission(player, "plots.list.forsale")) {
args.add("forsale"); args.add("forsale");
} }
if (Permissions.hasPermission(player, "plots.list.mine")) { if (Permissions.hasPermission(player, "plots.list.mine")) {
@ -105,14 +106,14 @@ public class ListCmd extends SubCommand {
} }
} }
java.util.List<Plot> plots = null; List<Plot> plots = null;
String world = plr.getLocation().getWorld(); String world = plr.getLocation().getWorld();
PlotArea area = plr.getApplicablePlotArea(); PlotArea area = plr.getApplicablePlotArea();
String arg = args[0].toLowerCase(); String arg = args[0].toLowerCase();
boolean sort = true; boolean sort = true;
switch (arg) { switch (arg) {
case "mine": { case "mine":
if (!Permissions.hasPermission(plr, "plots.list.mine")) { if (!Permissions.hasPermission(plr, "plots.list.mine")) {
MainUtil.sendMessage(plr, C.NO_PERMISSION, "plots.list.mine"); MainUtil.sendMessage(plr, C.NO_PERMISSION, "plots.list.mine");
return false; return false;
@ -120,8 +121,7 @@ public class ListCmd extends SubCommand {
sort = false; sort = false;
plots = PS.get().sortPlotsByTemp(PS.get().getBasePlots(plr)); plots = PS.get().sortPlotsByTemp(PS.get().getBasePlots(plr));
break; break;
} case "shared":
case "shared": {
if (!Permissions.hasPermission(plr, "plots.list.shared")) { if (!Permissions.hasPermission(plr, "plots.list.shared")) {
MainUtil.sendMessage(plr, C.NO_PERMISSION, "plots.list.shared"); MainUtil.sendMessage(plr, C.NO_PERMISSION, "plots.list.shared");
return false; return false;
@ -133,8 +133,7 @@ public class ListCmd extends SubCommand {
} }
} }
break; break;
} case "world":
case "world": {
if (!Permissions.hasPermission(plr, "plots.list.world")) { if (!Permissions.hasPermission(plr, "plots.list.world")) {
MainUtil.sendMessage(plr, C.NO_PERMISSION, "plots.list.world"); MainUtil.sendMessage(plr, C.NO_PERMISSION, "plots.list.world");
return false; return false;
@ -145,16 +144,14 @@ public class ListCmd extends SubCommand {
} }
plots = new ArrayList<>(PS.get().getPlots(world)); plots = new ArrayList<>(PS.get().getPlots(world));
break; break;
} case "expired":
case "expired": {
if (!Permissions.hasPermission(plr, "plots.list.expired")) { if (!Permissions.hasPermission(plr, "plots.list.expired")) {
MainUtil.sendMessage(plr, C.NO_PERMISSION, "plots.list.expired"); MainUtil.sendMessage(plr, C.NO_PERMISSION, "plots.list.expired");
return false; return false;
} }
plots = ExpireManager.IMP == null ? new ArrayList<Plot>() : new ArrayList<>(ExpireManager.IMP.getPendingExpired()); plots = ExpireManager.IMP == null ? new ArrayList<Plot>() : new ArrayList<>(ExpireManager.IMP.getPendingExpired());
break; break;
} case "area":
case "area": {
if (!Permissions.hasPermission(plr, "plots.list.area")) { if (!Permissions.hasPermission(plr, "plots.list.area")) {
MainUtil.sendMessage(plr, C.NO_PERMISSION, "plots.list.area"); MainUtil.sendMessage(plr, C.NO_PERMISSION, "plots.list.area");
return false; return false;
@ -165,16 +162,14 @@ public class ListCmd extends SubCommand {
} }
plots = area == null ? new ArrayList<Plot>() : new ArrayList<>(area.getPlots()); plots = area == null ? new ArrayList<Plot>() : new ArrayList<>(area.getPlots());
break; break;
} case "all":
case "all": {
if (!Permissions.hasPermission(plr, "plots.list.all")) { if (!Permissions.hasPermission(plr, "plots.list.all")) {
MainUtil.sendMessage(plr, C.NO_PERMISSION, "plots.list.all"); MainUtil.sendMessage(plr, C.NO_PERMISSION, "plots.list.all");
return false; return false;
} }
plots = new ArrayList<>(PS.get().getPlots()); plots = new ArrayList<>(PS.get().getPlots());
break; break;
} case "done":
case "done": {
if (!Permissions.hasPermission(plr, "plots.list.done")) { if (!Permissions.hasPermission(plr, "plots.list.done")) {
MainUtil.sendMessage(plr, C.NO_PERMISSION, "plots.list.done"); MainUtil.sendMessage(plr, C.NO_PERMISSION, "plots.list.done");
return false; return false;
@ -203,8 +198,7 @@ public class ListCmd extends SubCommand {
}); });
sort = false; sort = false;
break; break;
} case "top":
case "top": {
if (!Permissions.hasPermission(plr, "plots.list.top")) { if (!Permissions.hasPermission(plr, "plots.list.top")) {
MainUtil.sendMessage(plr, C.NO_PERMISSION, "plots.list.top"); MainUtil.sendMessage(plr, C.NO_PERMISSION, "plots.list.top");
return false; return false;
@ -233,7 +227,7 @@ public class ListCmd extends SubCommand {
v2 /= p2s; v2 /= p2s;
v2 += p2s; v2 += p2s;
} }
if ((v2 == v1) && (v2 != 0)) { if (v2 == v1 && v2 != 0) {
return p2s - p1s; return p2s - p1s;
} }
return (int) Math.signum(v2 - v1); return (int) Math.signum(v2 - v1);
@ -241,8 +235,7 @@ public class ListCmd extends SubCommand {
}); });
sort = false; sort = false;
break; break;
} case "forsale":
case "forsale": {
if (!Permissions.hasPermission(plr, "plots.list.forsale")) { if (!Permissions.hasPermission(plr, "plots.list.forsale")) {
MainUtil.sendMessage(plr, C.NO_PERMISSION, "plots.list.forsale"); MainUtil.sendMessage(plr, C.NO_PERMISSION, "plots.list.forsale");
return false; return false;
@ -258,8 +251,7 @@ public class ListCmd extends SubCommand {
} }
} }
break; break;
} case "unowned":
case "unowned": {
if (!Permissions.hasPermission(plr, "plots.list.unowned")) { if (!Permissions.hasPermission(plr, "plots.list.unowned")) {
MainUtil.sendMessage(plr, C.NO_PERMISSION, "plots.list.unowned"); MainUtil.sendMessage(plr, C.NO_PERMISSION, "plots.list.unowned");
return false; return false;
@ -271,8 +263,7 @@ public class ListCmd extends SubCommand {
} }
} }
break; break;
} case "unknown":
case "unknown": {
if (!Permissions.hasPermission(plr, "plots.list.unknown")) { if (!Permissions.hasPermission(plr, "plots.list.unknown")) {
MainUtil.sendMessage(plr, C.NO_PERMISSION, "plots.list.unknown"); MainUtil.sendMessage(plr, C.NO_PERMISSION, "plots.list.unknown");
return false; return false;
@ -287,8 +278,7 @@ public class ListCmd extends SubCommand {
} }
} }
break; break;
} case "fuzzy":
case "fuzzy": {
if (!Permissions.hasPermission(plr, "plots.list.fuzzy")) { if (!Permissions.hasPermission(plr, "plots.list.fuzzy")) {
MainUtil.sendMessage(plr, C.NO_PERMISSION, "plots.list.fuzzy"); MainUtil.sendMessage(plr, C.NO_PERMISSION, "plots.list.fuzzy");
return false; return false;
@ -301,8 +291,7 @@ public class ListCmd extends SubCommand {
plots = MainUtil.getPlotsBySearch(term); plots = MainUtil.getPlotsBySearch(term);
sort = false; sort = false;
break; break;
} default:
default: {
if (PS.get().hasPlotArea(args[0])) { if (PS.get().hasPlotArea(args[0])) {
if (!Permissions.hasPermission(plr, "plots.list.world")) { if (!Permissions.hasPermission(plr, "plots.list.world")) {
MainUtil.sendMessage(plr, C.NO_PERMISSION, "plots.list.world"); MainUtil.sendMessage(plr, C.NO_PERMISSION, "plots.list.world");
@ -331,7 +320,6 @@ public class ListCmd extends SubCommand {
plots = PS.get().sortPlotsByTemp(PS.get().getPlots(uuid)); plots = PS.get().sortPlotsByTemp(PS.get().getPlots(uuid));
break; break;
} }
}
} }
if (plots == null) { if (plots == null) {
@ -347,13 +335,13 @@ public class ListCmd extends SubCommand {
return true; return true;
} }
public void displayPlots(final PlotPlayer player, java.util.List<Plot> plots, int pageSize, int page, PlotArea area, public void displayPlots(final PlotPlayer player, List<Plot> plots, int pageSize, int page, PlotArea area,
String[] args, boolean sort) { String[] args, boolean sort) {
// Header // Header
Iterator<Plot> iter = plots.iterator(); Iterator<Plot> iterator = plots.iterator();
while (iter.hasNext()) { while (iterator.hasNext()) {
if (!iter.next().isBasePlot()) { if (!iterator.next().isBasePlot()) {
iter.remove(); iterator.remove();
} }
} }
if (sort) { if (sort) {

View File

@ -65,9 +65,9 @@ public class Load extends SubCommand {
MainUtil.sendMessage(plr, C.LOAD_NULL); MainUtil.sendMessage(plr, C.LOAD_NULL);
return false; return false;
} }
String schem; String schematic;
try { try {
schem = schematics.get(Integer.parseInt(args[0]) - 1); schematic = schematics.get(Integer.parseInt(args[0]) - 1);
} catch (NumberFormatException e) { } catch (NumberFormatException e) {
// use /plot load <index> // use /plot load <index>
MainUtil.sendMessage(plr, C.NOT_VALID_NUMBER, "(1, " + schematics.size() + ")"); MainUtil.sendMessage(plr, C.NOT_VALID_NUMBER, "(1, " + schematics.size() + ")");
@ -75,7 +75,7 @@ public class Load extends SubCommand {
} }
final URL url; final URL url;
try { try {
url = new URL(Settings.WEB_URL + "saves/" + plr.getUUID() + "/" + schem + ".schematic"); url = new URL(Settings.WEB_URL + "saves/" + plr.getUUID() + "/" + schematic + ".schematic");
} catch (MalformedURLException e) { } catch (MalformedURLException e) {
e.printStackTrace(); e.printStackTrace();
MainUtil.sendMessage(plr, C.LOAD_FAILED); MainUtil.sendMessage(plr, C.LOAD_FAILED);
@ -140,8 +140,8 @@ public class Load extends SubCommand {
List<String> schematics = player.getMeta("plot_schematics"); List<String> schematics = player.getMeta("plot_schematics");
for (int i = 0; i < Math.min(schematics.size(), 32); i++) { for (int i = 0; i < Math.min(schematics.size(), 32); i++) {
try { try {
String schem = schematics.get(i); String schematic = schematics.get(i);
String[] split = schem.split("_"); String[] split = schematic.split("_");
if (split.length != 6) { if (split.length != 6) {
continue; continue;
} }

View File

@ -47,52 +47,46 @@ public class Purge extends SubCommand {
} }
switch (split[0].toLowerCase()) { switch (split[0].toLowerCase()) {
case "world": case "world":
case "w": { case "w":
world = split[1]; world = split[1];
break; break;
}
case "area": case "area":
case "a": { case "a":
area = PS.get().getPlotAreaByString(split[1]); area = PS.get().getPlotAreaByString(split[1]);
if (area == null) { if (area == null) {
C.NOT_VALID_PLOT_WORLD.send(plr, split[1]); C.NOT_VALID_PLOT_WORLD.send(plr, split[1]);
return false; return false;
} }
break; break;
}
case "plotid": case "plotid":
case "id": { case "id":
id = PlotId.fromString(split[1]); id = PlotId.fromString(split[1]);
if (id == null) { if (id == null) {
C.NOT_VALID_PLOT_ID.send(plr, split[1]); C.NOT_VALID_PLOT_ID.send(plr, split[1]);
return false; return false;
} }
break; break;
}
case "owner": case "owner":
case "o": { case "o":
owner = UUIDHandler.getUUID(split[1], null); owner = UUIDHandler.getUUID(split[1], null);
if (owner == null) { if (owner == null) {
C.INVALID_PLAYER.send(plr, split[1]); C.INVALID_PLAYER.send(plr, split[1]);
return false; return false;
} }
break; break;
}
case "shared": case "shared":
case "s": { case "s":
added = UUIDHandler.getUUID(split[1], null); added = UUIDHandler.getUUID(split[1], null);
if (added == null) { if (added == null) {
C.INVALID_PLAYER.send(plr, split[1]); C.INVALID_PLAYER.send(plr, split[1]);
return false; return false;
} }
break; break;
}
case "unknown": case "unknown":
case "?": case "?":
case "u": { case "u":
unknown = Boolean.parseBoolean(split[1]); unknown = Boolean.parseBoolean(split[1]);
break; break;
}
} }
} }
final HashSet<Plot> toDelete = new HashSet<>(); final HashSet<Plot> toDelete = new HashSet<>();
@ -121,8 +115,8 @@ public class Purge extends SubCommand {
} }
if (PS.get().plots_tmp != null) { if (PS.get().plots_tmp != null) {
for (Entry<String, HashMap<PlotId, Plot>> entry : PS.get().plots_tmp.entrySet()) { for (Entry<String, HashMap<PlotId, Plot>> entry : PS.get().plots_tmp.entrySet()) {
String worldname = entry.getKey(); String worldName = entry.getKey();
if (world != null && !world.equalsIgnoreCase(worldname)) { if (world != null && !world.equalsIgnoreCase(worldName)) {
continue; continue;
} }
for (Entry<PlotId, Plot> entry2 : entry.getValue().entrySet()) { for (Entry<PlotId, Plot> entry2 : entry.getValue().entrySet()) {

View File

@ -16,6 +16,7 @@ import com.intellectualcrafters.plot.util.Permissions;
import com.intellectualcrafters.plot.util.TaskManager; import com.intellectualcrafters.plot.util.TaskManager;
import com.plotsquared.general.commands.Command; import com.plotsquared.general.commands.Command;
import com.plotsquared.general.commands.CommandDeclaration; import com.plotsquared.general.commands.CommandDeclaration;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
import java.util.Comparator; import java.util.Comparator;
@ -87,7 +88,7 @@ public class Rate extends SubCommand {
sendMessage(player, C.RATING_NOT_DONE); sendMessage(player, C.RATING_NOT_DONE);
return false; return false;
} }
if ((Settings.RATING_CATEGORIES != null) && !Settings.RATING_CATEGORIES.isEmpty()) { if (Settings.RATING_CATEGORIES != null && !Settings.RATING_CATEGORIES.isEmpty()) {
final Runnable run = new Runnable() { final Runnable run = new Runnable() {
@Override @Override
public void run() { public void run() {
@ -154,7 +155,7 @@ public class Rate extends SubCommand {
} }
String arg = args[0]; String arg = args[0];
final int rating; final int rating;
if (MathMan.isInteger(arg) && (arg.length() < 3) && !arg.isEmpty()) { if (MathMan.isInteger(arg) && arg.length() < 3 && !arg.isEmpty()) {
rating = Integer.parseInt(arg); rating = Integer.parseInt(arg);
if (rating > 10 || rating < 1) { if (rating > 10 || rating < 1) {
sendMessage(player, C.RATING_NOT_VALID); sendMessage(player, C.RATING_NOT_VALID);

View File

@ -9,6 +9,7 @@ import com.intellectualcrafters.plot.util.Permissions;
import com.intellectualcrafters.plot.util.UUIDHandler; import com.intellectualcrafters.plot.util.UUIDHandler;
import com.plotsquared.general.commands.Argument; import com.plotsquared.general.commands.Argument;
import com.plotsquared.general.commands.CommandDeclaration; import com.plotsquared.general.commands.CommandDeclaration;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashSet; import java.util.HashSet;
import java.util.UUID; import java.util.UUID;
@ -63,7 +64,7 @@ public class Remove extends SubCommand {
} }
break; break;
} }
case "*": { case "*":
ArrayList<UUID> toRemove = new ArrayList<>(); ArrayList<UUID> toRemove = new ArrayList<>();
HashSet<UUID> all = new HashSet<>(); HashSet<UUID> all = new HashSet<>();
all.addAll(plot.getMembers()); all.addAll(plot.getMembers());
@ -79,7 +80,6 @@ public class Remove extends SubCommand {
plot.removeMember(uuid); plot.removeMember(uuid);
} }
break; break;
}
default: default:
UUID uuid = UUIDHandler.getUUID(args[0], null); UUID uuid = UUIDHandler.getUUID(args[0], null);
if (uuid != null) { if (uuid != null) {

View File

@ -15,6 +15,7 @@ import com.intellectualcrafters.plot.util.SchematicHandler;
import com.intellectualcrafters.plot.util.SchematicHandler.Schematic; import com.intellectualcrafters.plot.util.SchematicHandler.Schematic;
import com.intellectualcrafters.plot.util.TaskManager; import com.intellectualcrafters.plot.util.TaskManager;
import com.plotsquared.general.commands.CommandDeclaration; import com.plotsquared.general.commands.CommandDeclaration;
import java.net.URL; import java.net.URL;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collection; import java.util.Collection;
@ -174,7 +175,7 @@ public class SchematicCmd extends SubCommand {
break; break;
} }
case "export": case "export":
case "save": { case "save":
if (!Permissions.hasPermission(plr, "plots.schematic.save")) { if (!Permissions.hasPermission(plr, "plots.schematic.save")) {
MainUtil.sendMessage(plr, C.NO_PERMISSION, "plots.schematic.save"); MainUtil.sendMessage(plr, C.NO_PERMISSION, "plots.schematic.save");
return false; return false;
@ -214,11 +215,9 @@ public class SchematicCmd extends SubCommand {
MainUtil.sendMessage(plr, "&7Starting export..."); MainUtil.sendMessage(plr, "&7Starting export...");
} }
break; break;
} default:
default: {
sendMessage(plr, C.SCHEMATIC_MISSING_ARG); sendMessage(plr, C.SCHEMATIC_MISSING_ARG);
break; break;
}
} }
return true; return true;
} }

View File

@ -17,6 +17,7 @@ import com.intellectualcrafters.plot.util.StringMan;
import com.intellectualcrafters.plot.util.WorldUtil; import com.intellectualcrafters.plot.util.WorldUtil;
import com.plotsquared.general.commands.Command; import com.plotsquared.general.commands.Command;
import com.plotsquared.general.commands.CommandDeclaration; import com.plotsquared.general.commands.CommandDeclaration;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.HashSet; import java.util.HashSet;
@ -159,23 +160,21 @@ public class Set extends SubCommand {
return this.component.onCommand(plr, Arrays.copyOfRange(args, 0, args.length)); return this.component.onCommand(plr, Arrays.copyOfRange(args, 0, args.length));
} }
// flag // flag
{ AbstractFlag af;
AbstractFlag af; try {
try { af = new AbstractFlag(args[0].toLowerCase());
af = new AbstractFlag(args[0].toLowerCase()); } catch (Exception e) {
} catch (Exception e) { af = new AbstractFlag("");
af = new AbstractFlag(""); }
} if (FlagManager.getFlags().contains(af)) {
if (FlagManager.getFlags().contains(af)) { StringBuilder a = new StringBuilder();
StringBuilder a = new StringBuilder(); if (args.length > 1) {
if (args.length > 1) { for (int x = 1; x < args.length; x++) {
for (int x = 1; x < args.length; x++) { a.append(" ").append(args[x]);
a.append(" ").append(args[x]);
}
} }
MainCommand.onCommand(plr, ("flag set " + args[0] + a.toString()).split(" "));
return true;
} }
MainCommand.onCommand(plr, ("flag set " + args[0] + a.toString()).split(" "));
return true;
} }
return noArgs(plr); return noArgs(plr);
} }

View File

@ -28,18 +28,16 @@ public class SetHome extends SetCommand {
base.setHome(null); base.setHome(null);
return MainUtil.sendMessage(plr, C.POSITION_UNSET); return MainUtil.sendMessage(plr, C.POSITION_UNSET);
} }
case "": { case "":
Plot base = plot.getBasePlot(false); Plot base = plot.getBasePlot(false);
Location bot = base.getBottomAbs(); Location bot = base.getBottomAbs();
Location loc = plr.getLocationFull(); Location loc = plr.getLocationFull();
BlockLoc rel = new BlockLoc(loc.getX() - bot.getX(), loc.getY(), loc.getZ() - bot.getZ(), loc.getYaw(), loc.getPitch()); BlockLoc rel = new BlockLoc(loc.getX() - bot.getX(), loc.getY(), loc.getZ() - bot.getZ(), loc.getYaw(), loc.getPitch());
base.setHome(rel); base.setHome(rel);
return MainUtil.sendMessage(plr, C.POSITION_SET); return MainUtil.sendMessage(plr, C.POSITION_SET);
} default:
default: {
MainUtil.sendMessage(plr, C.HOME_ARGUMENT); MainUtil.sendMessage(plr, C.HOME_ARGUMENT);
return false; return false;
}
} }
} }
} }

View File

@ -75,8 +75,8 @@ public class Setup extends SubCommand {
} }
int index = object.current; int index = object.current;
switch (index) { switch (index) {
case 0: { // choose generator case 0: // choose generator
if ((args.length != 1) || !SetupUtils.generators.containsKey(args[0])) { if (args.length != 1 || !SetupUtils.generators.containsKey(args[0])) {
String prefix = "\n&8 - &7"; String prefix = "\n&8 - &7";
MainUtil.sendMessage(plr, "&cYou must choose a generator!" + prefix + StringMan.join(SetupUtils.generators.keySet(), prefix) MainUtil.sendMessage(plr, "&cYou must choose a generator!" + prefix + StringMan.join(SetupUtils.generators.keySet(), prefix)
.replaceAll("PlotSquared", "&2PlotSquared")); .replaceAll("PlotSquared", "&2PlotSquared"));
@ -89,8 +89,7 @@ public class Setup extends SubCommand {
MainUtil.sendMessage(plr, "&6What world type do you want?" + "\n&8 - &2DEFAULT&8 - &7Standard plot generation" MainUtil.sendMessage(plr, "&6What world type do you want?" + "\n&8 - &2DEFAULT&8 - &7Standard plot generation"
+ "\n&8 - &7AUGMENTED&8 - &7Plot generation with terrain" + partial); + "\n&8 - &7AUGMENTED&8 - &7Plot generation with terrain" + partial);
break; break;
} case 1: // choose world type
case 1: { // choose world type
List<String> allTypes = Arrays.asList("default", "augmented", "partial"); List<String> allTypes = Arrays.asList("default", "augmented", "partial");
List<String> allDesc = Arrays.asList("Standard plot generation", "Plot generation with vanilla terrain", List<String> allDesc = Arrays.asList("Standard plot generation", "Plot generation with vanilla terrain",
"Vanilla with clusters of plots"); "Vanilla with clusters of plots");
@ -100,7 +99,7 @@ public class Setup extends SubCommand {
} }
types.add("augmented"); types.add("augmented");
types.add("partial"); types.add("partial");
if ((args.length != 1) || !types.contains(args[0].toLowerCase())) { if (args.length != 1 || !types.contains(args[0].toLowerCase())) {
MainUtil.sendMessage(plr, "&cYou must choose a world type!"); MainUtil.sendMessage(plr, "&cYou must choose a world type!");
for (String type : types) { for (String type : types) {
int i = allTypes.indexOf(type); int i = allTypes.indexOf(type);
@ -157,8 +156,7 @@ public class Setup extends SubCommand {
} }
} }
break; break;
} case 2: // area id
case 2: { // area id
if (!StringMan.isAlphanumericUnd(args[0])) { if (!StringMan.isAlphanumericUnd(args[0])) {
MainUtil.sendMessage(plr, "&cThe area id must be alphanumerical!"); MainUtil.sendMessage(plr, "&cThe area id must be alphanumerical!");
return false; return false;
@ -173,8 +171,7 @@ public class Setup extends SubCommand {
object.current++; object.current++;
MainUtil.sendMessage(plr, "&6What should be the minimum Plot Id?"); MainUtil.sendMessage(plr, "&6What should be the minimum Plot Id?");
break; break;
} case 3: // min
case 3: { // min
object.min = PlotId.fromString(args[0]); object.min = PlotId.fromString(args[0]);
if (object.min == null) { if (object.min == null) {
MainUtil.sendMessage(plr, "&cYou must choose a valid minimum PlotId!"); MainUtil.sendMessage(plr, "&cYou must choose a valid minimum PlotId!");
@ -183,8 +180,7 @@ public class Setup extends SubCommand {
object.current++; object.current++;
MainUtil.sendMessage(plr, "&6What should be the maximum Plot Id?"); MainUtil.sendMessage(plr, "&6What should be the maximum Plot Id?");
break; break;
} case 4:
case 4: {
// max // max
PlotId id = PlotId.fromString(args[0]); PlotId id = PlotId.fromString(args[0]);
if (id == null) { if (id == null) {
@ -203,10 +199,9 @@ public class Setup extends SubCommand {
+ "\n&8 - &7ROAD&8 - &7Terrain separated by roads" + "\n&8 - &7ROAD&8 - &7Terrain separated by roads"
+ "\n&8 - &7ALL&8 - &7Entirely vanilla generation"); + "\n&8 - &7ALL&8 - &7Entirely vanilla generation");
break; break;
}
case 5: { // Choose terrain case 5: { // Choose terrain
List<String> terrain = Arrays.asList("none", "ore", "road", "all"); List<String> terrain = Arrays.asList("none", "ore", "road", "all");
if ((args.length != 1) || !terrain.contains(args[0].toLowerCase())) { if (args.length != 1 || !terrain.contains(args[0].toLowerCase())) {
MainUtil.sendMessage(plr, "&cYou must choose the terrain!" MainUtil.sendMessage(plr, "&cYou must choose the terrain!"
+ "\n&8 - &2NONE&8 - &7No terrain at all" + "\n&8 - &2NONE&8 - &7No terrain at all"
+ "\n&8 - &7ORE&8 - &7Just some ore veins and trees" + "\n&8 - &7ORE&8 - &7Just some ore veins and trees"
@ -225,7 +220,7 @@ public class Setup extends SubCommand {
step.getDefaultValue() + ""); step.getDefaultValue() + "");
break; break;
} }
case 6: { // world setup case 6: // world setup
if (object.setup_index == object.step.length) { if (object.setup_index == object.step.length) {
MainUtil.sendMessage(plr, "&6What do you want your world to be called?"); MainUtil.sendMessage(plr, "&6What do you want your world to be called?");
object.setup_index = 0; object.setup_index = 0;
@ -257,8 +252,7 @@ public class Setup extends SubCommand {
step.getDefaultValue() + ""); step.getDefaultValue() + "");
return false; return false;
} }
} case 7:
case 7: {
if (args.length != 1) { if (args.length != 1) {
MainUtil.sendMessage(plr, "&cYou need to choose a world name!"); MainUtil.sendMessage(plr, "&cYou need to choose a world name!");
return false; return false;
@ -287,7 +281,6 @@ public class Setup extends SubCommand {
e.printStackTrace(); e.printStackTrace();
} }
sendMessage(plr, C.SETUP_FINISHED, object.world); sendMessage(plr, C.SETUP_FINISHED, object.world);
}
} }
return false; return false;
} }

View File

@ -20,16 +20,16 @@ public class Target extends SubCommand {
@Override @Override
public boolean onCommand(PlotPlayer plr, String[] args) { public boolean onCommand(PlotPlayer plr, String[] args) {
Location ploc = plr.getLocation(); Location plrLocation = plr.getLocation();
if (!ploc.isPlotArea()) { if (!plrLocation.isPlotArea()) {
MainUtil.sendMessage(plr, C.NOT_IN_PLOT_WORLD); MainUtil.sendMessage(plr, C.NOT_IN_PLOT_WORLD);
return false; return false;
} }
Plot target = null; Plot target = null;
if (StringMan.isEqualIgnoreCaseToAny(args[0], "near", "nearest")) { if (StringMan.isEqualIgnoreCaseToAny(args[0], "near", "nearest")) {
int distance = Integer.MAX_VALUE; int distance = Integer.MAX_VALUE;
for (Plot plot : PS.get().getPlots(ploc.getWorld())) { for (Plot plot : PS.get().getPlots(plrLocation.getWorld())) {
double current = plot.getCenter().getEuclideanDistanceSquared(ploc); double current = plot.getCenter().getEuclideanDistanceSquared(plrLocation);
if (current < distance) { if (current < distance) {
distance = (int) current; distance = (int) current;
target = plot; target = plot;

View File

@ -14,6 +14,7 @@ import com.intellectualcrafters.plot.util.MainUtil;
import com.intellectualcrafters.plot.util.TaskManager; import com.intellectualcrafters.plot.util.TaskManager;
import com.intellectualcrafters.plot.util.WorldUtil; import com.intellectualcrafters.plot.util.WorldUtil;
import com.plotsquared.general.commands.CommandDeclaration; import com.plotsquared.general.commands.CommandDeclaration;
import java.io.File; import java.io.File;
import java.io.IOException; import java.io.IOException;
import java.nio.file.Files; import java.nio.file.Files;
@ -164,9 +165,9 @@ public class Trim extends SubCommand {
plr.sendMessage("Trim done!"); plr.sendMessage("Trim done!");
return; return;
} }
Iterator<ChunkLoc> iter = nonViable.iterator(); Iterator<ChunkLoc> iterator = nonViable.iterator();
ChunkLoc mcr = iter.next(); ChunkLoc mcr = iterator.next();
iter.remove(); iterator.remove();
int cbx = mcr.x << 5; int cbx = mcr.x << 5;
int cbz = mcr.z << 5; int cbz = mcr.z << 5;
// get all 1024 chunks // get all 1024 chunks

View File

@ -9,6 +9,7 @@ import com.intellectualcrafters.plot.util.MathMan;
import com.intellectualcrafters.plot.util.Permissions; import com.intellectualcrafters.plot.util.Permissions;
import com.intellectualcrafters.plot.util.UUIDHandler; import com.intellectualcrafters.plot.util.UUIDHandler;
import com.plotsquared.general.commands.CommandDeclaration; import com.plotsquared.general.commands.CommandDeclaration;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collection; import java.util.Collection;
import java.util.Collections; import java.util.Collections;
@ -44,15 +45,14 @@ public class Visit extends SubCommand {
int page = Integer.MIN_VALUE; int page = Integer.MIN_VALUE;
Collection<Plot> unsorted = null; Collection<Plot> unsorted = null;
switch (args.length) { switch (args.length) {
case 2: { case 2:
if (!MathMan.isInteger(args[1])) { if (!MathMan.isInteger(args[1])) {
sendMessage(player, C.NOT_VALID_NUMBER, "(1, ∞)"); sendMessage(player, C.NOT_VALID_NUMBER, "(1, ∞)");
sendMessage(player, C.COMMAND_SYNTAX, "/plot visit " + args[0] + " [#]"); sendMessage(player, C.COMMAND_SYNTAX, "/plot visit " + args[0] + " [#]");
return false; return false;
} }
page = Integer.parseInt(args[1]); page = Integer.parseInt(args[1]);
} case 1:
case 1: {
UUID user = UUIDHandler.getCachedUUID(args[0], null); UUID user = UUIDHandler.getCachedUUID(args[0], null);
if (page == Integer.MIN_VALUE && user == null && MathMan.isInteger(args[0])) { if (page == Integer.MIN_VALUE && user == null && MathMan.isInteger(args[0])) {
page = Integer.parseInt(args[0]); page = Integer.parseInt(args[0]);
@ -68,15 +68,12 @@ public class Visit extends SubCommand {
} }
} }
break; break;
} case 0:
case 0: {
page = 1; page = 1;
unsorted = PS.get().getPlots(player); unsorted = PS.get().getPlots(player);
break; break;
} default:
default: {
}
} }
if (page == Integer.MIN_VALUE) { if (page == Integer.MIN_VALUE) {
page = 1; page = 1;
@ -85,10 +82,10 @@ public class Visit extends SubCommand {
sendMessage(player, C.FOUND_NO_PLOTS); sendMessage(player, C.FOUND_NO_PLOTS);
return false; return false;
} }
Iterator<Plot> iter = unsorted.iterator(); Iterator<Plot> iterator = unsorted.iterator();
while (iter.hasNext()) { while (iterator.hasNext()) {
if (!iter.next().isBasePlot()) { if (!iterator.next().isBasePlot()) {
iter.remove(); iterator.remove();
} }
} }
if (page < 1 || page > unsorted.size()) { if (page < 1 || page > unsorted.size()) {

View File

@ -33,14 +33,14 @@ public class DBFunc {
public static AbstractDB dbManager; public static AbstractDB dbManager;
public static void movePlot(Plot originalPlot, Plot newPlot) { public static void movePlot(Plot originalPlot, Plot newPlot) {
if ((originalPlot.temp == -1) || (newPlot.temp == -1)) { if (originalPlot.temp == -1 || newPlot.temp == -1) {
return; return;
} }
dbManager.movePlot(originalPlot, newPlot); DBFunc.dbManager.movePlot(originalPlot, newPlot);
} }
public static void validatePlots(Set<Plot> plots) { public static void validatePlots(Set<Plot> plots) {
dbManager.validateAllPlots(plots); DBFunc.dbManager.validateAllPlots(plots);
} }
/** /**
@ -74,7 +74,7 @@ public class DBFunc {
if (plot.temp == -1) { if (plot.temp == -1) {
return; return;
} }
dbManager.setOwner(plot, uuid); DBFunc.dbManager.setOwner(plot, uuid);
} }
/** /**
@ -83,7 +83,7 @@ public class DBFunc {
* @param plots List containing all plot objects * @param plots List containing all plot objects
*/ */
public static void createPlotsAndData(ArrayList<Plot> plots, Runnable whenDone) { public static void createPlotsAndData(ArrayList<Plot> plots, Runnable whenDone) {
dbManager.createPlotsAndData(plots, whenDone); DBFunc.dbManager.createPlotsAndData(plots, whenDone);
} }
/** /**
@ -95,7 +95,7 @@ public class DBFunc {
if (plot.temp == -1) { if (plot.temp == -1) {
return; return;
} }
dbManager.createPlot(plot); DBFunc.dbManager.createPlot(plot);
} }
/** /**
@ -107,7 +107,7 @@ public class DBFunc {
if (plot.temp == -1) { if (plot.temp == -1) {
return; return;
} }
dbManager.createPlotAndSettings(plot, whenDone); DBFunc.dbManager.createPlotAndSettings(plot, whenDone);
} }
/** /**
@ -116,7 +116,7 @@ public class DBFunc {
* @throws Exception * @throws Exception
*/ */
public static void createTables(String database) throws Exception { public static void createTables(String database) throws Exception {
dbManager.createTables(); DBFunc.dbManager.createTables();
} }
/** /**
@ -128,7 +128,7 @@ public class DBFunc {
if (plot.temp == -1) { if (plot.temp == -1) {
return; return;
} }
dbManager.delete(plot); DBFunc.dbManager.delete(plot);
plot.temp = -1; plot.temp = -1;
} }
@ -140,7 +140,7 @@ public class DBFunc {
if (plot.temp == -1) { if (plot.temp == -1) {
return; return;
} }
dbManager.deleteRatings(plot); DBFunc.dbManager.deleteRatings(plot);
} }
/** /**
@ -151,7 +151,7 @@ public class DBFunc {
if (plot.temp == -1) { if (plot.temp == -1) {
return; return;
} }
dbManager.deleteHelpers(plot); DBFunc.dbManager.deleteHelpers(plot);
} }
/** /**
@ -162,7 +162,7 @@ public class DBFunc {
if (plot.temp == -1) { if (plot.temp == -1) {
return; return;
} }
dbManager.deleteTrusted(plot); DBFunc.dbManager.deleteTrusted(plot);
} }
/** /**
@ -173,7 +173,7 @@ public class DBFunc {
if (plot.temp == -1) { if (plot.temp == -1) {
return; return;
} }
dbManager.deleteDenied(plot); DBFunc.dbManager.deleteDenied(plot);
} }
/** /**
@ -184,7 +184,7 @@ public class DBFunc {
if (plot.temp == -1) { if (plot.temp == -1) {
return; return;
} }
dbManager.deleteComments(plot); DBFunc.dbManager.deleteComments(plot);
} }
/** /**
@ -199,11 +199,11 @@ public class DBFunc {
if (plot.temp == -1) { if (plot.temp == -1) {
return; return;
} }
dbManager.deleteSettings(plot); DBFunc.dbManager.deleteSettings(plot);
} }
public static void delete(PlotCluster toDelete) { public static void delete(PlotCluster toDelete) {
dbManager.delete(toDelete); DBFunc.dbManager.delete(toDelete);
} }
/** /**
@ -216,7 +216,7 @@ public class DBFunc {
if (plot.temp == -1) { if (plot.temp == -1) {
return; return;
} }
dbManager.createPlotSettings(id, plot); DBFunc.dbManager.createPlotSettings(id, plot);
} }
/** /**
@ -227,32 +227,32 @@ public class DBFunc {
* @return ID * @return ID
*/ */
public static int getId(Plot plot) { public static int getId(Plot plot) {
return dbManager.getId(plot); return DBFunc.dbManager.getId(plot);
} }
/** /**
* @return Plots * @return Plots
*/ */
public static HashMap<String, HashMap<PlotId, Plot>> getPlots() { public static HashMap<String, HashMap<PlotId, Plot>> getPlots() {
return dbManager.getPlots(); return DBFunc.dbManager.getPlots();
} }
public static void setMerged(Plot plot, boolean[] merged) { public static void setMerged(Plot plot, boolean[] merged) {
if (plot.temp == -1) { if (plot.temp == -1) {
return; return;
} }
dbManager.setMerged(plot, merged); DBFunc.dbManager.setMerged(plot, merged);
} }
public static void setFlags(Plot plot, Collection<Flag> flags) { public static void setFlags(Plot plot, Collection<Flag> flags) {
if (plot.temp == -1) { if (plot.temp == -1) {
return; return;
} }
dbManager.setFlags(plot, flags); DBFunc.dbManager.setFlags(plot, flags);
} }
public static void setFlags(PlotCluster cluster, Collection<Flag> flags) { public static void setFlags(PlotCluster cluster, Collection<Flag> flags) {
dbManager.setFlags(cluster, flags); DBFunc.dbManager.setFlags(cluster, flags);
} }
/** /**
@ -263,15 +263,15 @@ public class DBFunc {
if (plot.temp == -1) { if (plot.temp == -1) {
return; return;
} }
dbManager.setAlias(plot, alias); DBFunc.dbManager.setAlias(plot, alias);
} }
public static void purgeIds(Set<Integer> uniqueIds) { public static void purgeIds(Set<Integer> uniqueIds) {
dbManager.purgeIds(uniqueIds); DBFunc.dbManager.purgeIds(uniqueIds);
} }
public static void purge(PlotArea area, Set<PlotId> plotIds) { public static void purge(PlotArea area, Set<PlotId> plotIds) {
dbManager.purge(area, plotIds); DBFunc.dbManager.purge(area, plotIds);
} }
/** /**
@ -282,7 +282,7 @@ public class DBFunc {
if (plot.temp == -1) { if (plot.temp == -1) {
return; return;
} }
dbManager.setPosition(plot, position); DBFunc.dbManager.setPosition(plot, position);
} }
/** /**
@ -290,17 +290,17 @@ public class DBFunc {
* @param comment * @param comment
*/ */
public static void removeComment(Plot plot, PlotComment comment) { public static void removeComment(Plot plot, PlotComment comment) {
if ((plot != null) && (plot.temp == -1)) { if (plot != null && plot.temp == -1) {
return; return;
} }
dbManager.removeComment(plot, comment); DBFunc.dbManager.removeComment(plot, comment);
} }
public static void clearInbox(Plot plot, String inbox) { public static void clearInbox(Plot plot, String inbox) {
if ((plot != null) && (plot.temp == -1)) { if (plot != null && plot.temp == -1) {
return; return;
} }
dbManager.clearInbox(plot, inbox); DBFunc.dbManager.clearInbox(plot, inbox);
} }
/** /**
@ -308,20 +308,20 @@ public class DBFunc {
* @param comment * @param comment
*/ */
public static void setComment(Plot plot, PlotComment comment) { public static void setComment(Plot plot, PlotComment comment) {
if ((plot != null) && (plot.temp == -1)) { if (plot != null && plot.temp == -1) {
return; return;
} }
dbManager.setComment(plot, comment); DBFunc.dbManager.setComment(plot, comment);
} }
/** /**
* @param plot * @param plot
*/ */
public static void getComments(Plot plot, String inbox, RunnableVal<List<PlotComment>> whenDone) { public static void getComments(Plot plot, String inbox, RunnableVal<List<PlotComment>> whenDone) {
if ((plot != null) && (plot.temp == -1)) { if (plot != null && plot.temp == -1) {
return; return;
} }
dbManager.getComments(plot, inbox, whenDone); DBFunc.dbManager.getComments(plot, inbox, whenDone);
} }
/** /**
@ -332,7 +332,7 @@ public class DBFunc {
if (plot.temp == -1) { if (plot.temp == -1) {
return; return;
} }
dbManager.removeTrusted(plot, uuid); DBFunc.dbManager.removeTrusted(plot, uuid);
} }
/** /**
@ -340,14 +340,14 @@ public class DBFunc {
* @param uuid * @param uuid
*/ */
public static void removeHelper(PlotCluster cluster, UUID uuid) { public static void removeHelper(PlotCluster cluster, UUID uuid) {
dbManager.removeHelper(cluster, uuid); DBFunc.dbManager.removeHelper(cluster, uuid);
} }
/** /**
* @param cluster * @param cluster
*/ */
public static void createCluster(PlotCluster cluster) { public static void createCluster(PlotCluster cluster) {
dbManager.createCluster(cluster); DBFunc.dbManager.createCluster(cluster);
} }
/** /**
@ -356,7 +356,7 @@ public class DBFunc {
* @param max * @param max
*/ */
public static void resizeCluster(PlotCluster current, PlotId min, PlotId max) { public static void resizeCluster(PlotCluster current, PlotId min, PlotId max) {
dbManager.resizeCluster(current, min, max); DBFunc.dbManager.resizeCluster(current, min, max);
} }
/** /**
@ -367,7 +367,7 @@ public class DBFunc {
if (plot.temp == -1) { if (plot.temp == -1) {
return; return;
} }
dbManager.removeMember(plot, uuid); DBFunc.dbManager.removeMember(plot, uuid);
} }
/** /**
@ -376,7 +376,7 @@ public class DBFunc {
* @param uuid * @param uuid
*/ */
public static void removeInvited(PlotCluster cluster, UUID uuid) { public static void removeInvited(PlotCluster cluster, UUID uuid) {
dbManager.removeInvited(cluster, uuid); DBFunc.dbManager.removeInvited(cluster, uuid);
} }
/** /**
@ -387,11 +387,11 @@ public class DBFunc {
if (plot.temp == -1) { if (plot.temp == -1) {
return; return;
} }
dbManager.setTrusted(plot, uuid); DBFunc.dbManager.setTrusted(plot, uuid);
} }
public static void setHelper(PlotCluster cluster, UUID uuid) { public static void setHelper(PlotCluster cluster, UUID uuid) {
dbManager.setHelper(cluster, uuid); DBFunc.dbManager.setHelper(cluster, uuid);
} }
/** /**
@ -402,11 +402,11 @@ public class DBFunc {
if (plot.temp == -1) { if (plot.temp == -1) {
return; return;
} }
dbManager.setMember(plot, uuid); DBFunc.dbManager.setMember(plot, uuid);
} }
public static void setInvited(PlotCluster cluster, UUID uuid) { public static void setInvited(PlotCluster cluster, UUID uuid) {
dbManager.setInvited(cluster, uuid); DBFunc.dbManager.setInvited(cluster, uuid);
} }
/** /**
@ -417,7 +417,7 @@ public class DBFunc {
if (plot.temp == -1) { if (plot.temp == -1) {
return; return;
} }
dbManager.removeDenied(plot, uuid); DBFunc.dbManager.removeDenied(plot, uuid);
} }
/** /**
@ -428,33 +428,33 @@ public class DBFunc {
if (plot.temp == -1) { if (plot.temp == -1) {
return; return;
} }
dbManager.setDenied(plot, uuid); DBFunc.dbManager.setDenied(plot, uuid);
} }
public static HashMap<UUID, Integer> getRatings(Plot plot) { public static HashMap<UUID, Integer> getRatings(Plot plot) {
if (plot.temp == -1) { if (plot.temp == -1) {
return new HashMap<>(0); return new HashMap<>(0);
} }
return dbManager.getRatings(plot); return DBFunc.dbManager.getRatings(plot);
} }
public static void setRating(Plot plot, UUID rater, int value) { public static void setRating(Plot plot, UUID rater, int value) {
if (plot.temp == -1) { if (plot.temp == -1) {
return; return;
} }
dbManager.setRating(plot, rater, value); DBFunc.dbManager.setRating(plot, rater, value);
} }
public static HashMap<String, Set<PlotCluster>> getClusters() { public static HashMap<String, Set<PlotCluster>> getClusters() {
return dbManager.getClusters(); return DBFunc.dbManager.getClusters();
} }
public static void setPosition(PlotCluster cluster, String position) { public static void setPosition(PlotCluster cluster, String position) {
dbManager.setPosition(cluster, position); DBFunc.dbManager.setPosition(cluster, position);
} }
public static void replaceWorld(String oldWorld, String newWorld, PlotId min, PlotId max) { public static void replaceWorld(String oldWorld, String newWorld, PlotId min, PlotId max) {
dbManager.replaceWorld(oldWorld, newWorld, min, max); DBFunc.dbManager.replaceWorld(oldWorld, newWorld, min, max);
} }
/** /**
@ -463,10 +463,10 @@ public class DBFunc {
* @param now * @param now
*/ */
public static void replaceUUID(UUID old, UUID now) { public static void replaceUUID(UUID old, UUID now) {
dbManager.replaceUUID(old, now); DBFunc.dbManager.replaceUUID(old, now);
} }
public static void close() { public static void close() {
dbManager.close(); DBFunc.dbManager.close();
} }
} }

View File

@ -40,9 +40,7 @@ import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentLinkedQueue; import java.util.concurrent.ConcurrentLinkedQueue;
import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicInteger;
/**
*/
public class SQLManager implements AbstractDB { public class SQLManager implements AbstractDB {
// Public final // Public final
public final String SET_OWNER; public final String SET_OWNER;
@ -187,11 +185,11 @@ public class SQLManager implements AbstractDB {
} }
@Override @Override
public void addBatch(PreparedStatement stmt) { public void addBatch(PreparedStatement statement) {
} }
@Override @Override
public void execute(PreparedStatement stmt) { public void execute(PreparedStatement statement) {
} }
}; };
@ -221,11 +219,11 @@ public class SQLManager implements AbstractDB {
} }
@Override @Override
public void addBatch(PreparedStatement stmt) { public void addBatch(PreparedStatement statement) {
} }
@Override @Override
public void execute(PreparedStatement stmt) { public void execute(PreparedStatement statement) {
} }
}; };
@ -252,11 +250,11 @@ public class SQLManager implements AbstractDB {
} }
@Override @Override
public void addBatch(PreparedStatement stmt) { public void addBatch(PreparedStatement statement) {
} }
@Override @Override
public void execute(PreparedStatement stmt) { public void execute(PreparedStatement statement) {
} }
}; };
@ -294,7 +292,7 @@ public class SQLManager implements AbstractDB {
this.connection.setAutoCommit(false); this.connection.setAutoCommit(false);
} }
String method = null; String method = null;
PreparedStatement stmt = null; PreparedStatement statement = null;
UniqueStatement task = null; UniqueStatement task = null;
UniqueStatement lastTask = null; UniqueStatement lastTask = null;
for (Entry<Plot, Queue<UniqueStatement>> entry : this.plotTasks.entrySet()) { for (Entry<Plot, Queue<UniqueStatement>> entry : this.plotTasks.entrySet()) {
@ -306,22 +304,22 @@ public class SQLManager implements AbstractDB {
task = this.plotTasks.get(plot).remove(); task = this.plotTasks.get(plot).remove();
count++; count++;
if (task != null) { if (task != null) {
if (task._method == null || !task._method.equals(method)) { if (task.method == null || !task.method.equals(method)) {
if (stmt != null) { if (statement != null) {
lastTask.execute(stmt); lastTask.execute(statement);
stmt.close(); statement.close();
} }
method = task._method; method = task.method;
stmt = task.get(); statement = task.get();
} }
task.set(stmt); task.set(statement);
task.addBatch(stmt); task.addBatch(statement);
} }
lastTask = task; lastTask = task;
} }
if (stmt != null && task != null) { if (statement != null && task != null) {
task.execute(stmt); task.execute(statement);
stmt.close(); statement.close();
} }
} }
if (!this.playerTasks.isEmpty()) { if (!this.playerTasks.isEmpty()) {
@ -330,7 +328,7 @@ public class SQLManager implements AbstractDB {
this.connection.setAutoCommit(false); this.connection.setAutoCommit(false);
} }
String method = null; String method = null;
PreparedStatement stmt = null; PreparedStatement statement = null;
UniqueStatement task = null; UniqueStatement task = null;
UniqueStatement lastTask = null; UniqueStatement lastTask = null;
for (Entry<UUID, Queue<UniqueStatement>> entry : this.playerTasks.entrySet()) { for (Entry<UUID, Queue<UniqueStatement>> entry : this.playerTasks.entrySet()) {
@ -342,22 +340,22 @@ public class SQLManager implements AbstractDB {
task = this.playerTasks.get(uuid).remove(); task = this.playerTasks.get(uuid).remove();
count++; count++;
if (task != null) { if (task != null) {
if (task._method == null || !task._method.equals(method)) { if (task.method == null || !task.method.equals(method)) {
if (stmt != null) { if (statement != null) {
lastTask.execute(stmt); lastTask.execute(statement);
stmt.close(); statement.close();
} }
method = task._method; method = task.method;
stmt = task.get(); statement = task.get();
} }
task.set(stmt); task.set(statement);
task.addBatch(stmt); task.addBatch(statement);
} }
lastTask = task; lastTask = task;
} }
if (stmt != null && task != null) { if (statement != null && task != null) {
task.execute(stmt); task.execute(statement);
stmt.close(); statement.close();
} }
} }
if (!this.clusterTasks.isEmpty()) { if (!this.clusterTasks.isEmpty()) {
@ -366,7 +364,7 @@ public class SQLManager implements AbstractDB {
this.connection.setAutoCommit(false); this.connection.setAutoCommit(false);
} }
String method = null; String method = null;
PreparedStatement stmt = null; PreparedStatement statement = null;
UniqueStatement task = null; UniqueStatement task = null;
UniqueStatement lastTask = null; UniqueStatement lastTask = null;
for (Entry<PlotCluster, Queue<UniqueStatement>> entry : this.clusterTasks.entrySet()) { for (Entry<PlotCluster, Queue<UniqueStatement>> entry : this.clusterTasks.entrySet()) {
@ -378,22 +376,22 @@ public class SQLManager implements AbstractDB {
task = this.clusterTasks.get(cluster).remove(); task = this.clusterTasks.get(cluster).remove();
count++; count++;
if (task != null) { if (task != null) {
if (task._method == null || !task._method.equals(method)) { if (task.method == null || !task.method.equals(method)) {
if (stmt != null) { if (statement != null) {
lastTask.execute(stmt); lastTask.execute(statement);
stmt.close(); statement.close();
} }
method = task._method; method = task.method;
stmt = task.get(); statement = task.get();
} }
task.set(stmt); task.set(statement);
task.addBatch(stmt); task.addBatch(statement);
} }
lastTask = task; lastTask = task;
} }
if (stmt != null && task != null) { if (statement != null && task != null) {
task.execute(stmt); task.execute(statement);
stmt.close(); statement.close();
} }
} }
if (count > 0) { if (count > 0) {
@ -614,7 +612,7 @@ public class SQLManager implements AbstractDB {
try { try {
stmt.setString(i * 5 + 3, plot.owner.toString()); stmt.setString(i * 5 + 3, plot.owner.toString());
} catch (SQLException e) { } catch (SQLException e) {
stmt.setString(i * 5 + 3, everyone.toString()); stmt.setString(i * 5 + 3, AbstractDB.everyone.toString());
} }
stmt.setString(i * 5 + 4, plot.getArea().toString()); stmt.setString(i * 5 + 4, plot.getArea().toString());
stmt.setTimestamp(i * 5 + 5, new Timestamp(plot.getTimestamp())); stmt.setTimestamp(i * 5 + 5, new Timestamp(plot.getTimestamp()));
@ -628,7 +626,7 @@ public class SQLManager implements AbstractDB {
try { try {
stmt.setString(i * 6 + 4, plot.owner.toString()); stmt.setString(i * 6 + 4, plot.owner.toString());
} catch (SQLException e1) { } catch (SQLException e1) {
stmt.setString(i * 6 + 4, everyone.toString()); stmt.setString(i * 6 + 4, AbstractDB.everyone.toString());
} }
stmt.setString(i * 6 + 5, plot.getArea().toString()); stmt.setString(i * 6 + 5, plot.getArea().toString());
stmt.setTimestamp(i * 6 + 6, new Timestamp(plot.getTimestamp())); stmt.setTimestamp(i * 6 + 6, new Timestamp(plot.getTimestamp()));
@ -989,14 +987,14 @@ public class SQLManager implements AbstractDB {
} }
@Override @Override
public void execute(PreparedStatement stmt) { public void execute(PreparedStatement statement) {
} }
@Override @Override
public void addBatch(PreparedStatement stmt) throws SQLException { public void addBatch(PreparedStatement statement) throws SQLException {
stmt.executeUpdate(); statement.executeUpdate();
ResultSet keys = stmt.getGeneratedKeys(); ResultSet keys = statement.getGeneratedKeys();
if (keys.next()) { if (keys.next()) {
plot.temp = keys.getInt(1); plot.temp = keys.getInt(1);
} }
@ -1476,8 +1474,9 @@ public class SQLManager implements AbstractDB {
if (this.mySQL && !PS.get().checkVersion(oldVersion, 3, 3, 2)) { if (this.mySQL && !PS.get().checkVersion(oldVersion, 3, 3, 2)) {
try (Statement stmt = this.connection.createStatement()) { try (Statement stmt = this.connection.createStatement()) {
stmt.executeUpdate("ALTER TABLE `" + this.prefix + "plots` DROP INDEX `unique_alias`"); stmt.executeUpdate("ALTER TABLE `" + this.prefix + "plots` DROP INDEX `unique_alias`");
} catch (SQLException ignore) {
//ignored
} }
catch (SQLException ignore) {}
} }
DatabaseMetaData data = this.connection.getMetaData(); DatabaseMetaData data = this.connection.getMetaData();
ResultSet rs = data.getColumns(null, null, this.prefix + "plot_comments", "plot_plot_id"); ResultSet rs = data.getColumns(null, null, this.prefix + "plot_comments", "plot_plot_id");
@ -1599,7 +1598,7 @@ public class SQLManager implements AbstractDB {
*/ */
@Override @Override
public HashMap<String, HashMap<PlotId, Plot>> getPlots() { public HashMap<String, HashMap<PlotId, Plot>> getPlots() {
HashMap<String, HashMap<PlotId, Plot>> newplots = new HashMap<>(); HashMap<String, HashMap<PlotId, Plot>> newPlots = new HashMap<>();
HashMap<Integer, Plot> plots = new HashMap<>(); HashMap<Integer, Plot> plots = new HashMap<>();
try { try {
HashSet<String> areas = new HashSet<>(); HashSet<String> areas = new HashSet<>();
@ -1660,7 +1659,7 @@ public class SQLManager implements AbstractDB {
long time = timestamp.getTime(); long time = timestamp.getTime();
Plot p = new Plot(plot_id, user, new HashSet<UUID>(), new HashSet<UUID>(), new HashSet<UUID>(), "", null, null, null, Plot p = new Plot(plot_id, user, new HashSet<UUID>(), new HashSet<UUID>(), new HashSet<UUID>(), "", null, null, null,
new boolean[]{false, false, false, false}, time, id); new boolean[]{false, false, false, false}, time, id);
HashMap<PlotId, Plot> map = newplots.get(areaid); HashMap<PlotId, Plot> map = newPlots.get(areaid);
if (map != null) { if (map != null) {
Plot last = map.put(p.getId(), p); Plot last = map.put(p.getId(), p);
if (last != null) { if (last != null) {
@ -1675,7 +1674,7 @@ public class SQLManager implements AbstractDB {
} }
} else { } else {
map = new HashMap<>(); map = new HashMap<>();
newplots.put(areaid, map); newPlots.put(areaid, map);
map.put(p.getId(), p); map.put(p.getId(), p);
} }
plots.put(id, p); plots.put(id, p);
@ -1872,9 +1871,9 @@ public class SQLManager implements AbstractDB {
} }
boolean invalidPlot = false; boolean invalidPlot = false;
for (Entry<String, AtomicInteger> entry : noExist.entrySet()) { for (Entry<String, AtomicInteger> entry : noExist.entrySet()) {
String worldname = entry.getKey(); String worldName = entry.getKey();
invalidPlot = true; invalidPlot = true;
PS.debug("&c[WARNING] Found " + entry.getValue().intValue() + " plots in DB for non existant world; '" + worldname + "'."); PS.debug("&c[WARNING] Found " + entry.getValue().intValue() + " plots in DB for non existent world; '" + worldName + "'.");
} }
if (invalidPlot) { if (invalidPlot) {
PS.debug("&c[WARNING] - Please create the world/s or remove the plots using the purge command"); PS.debug("&c[WARNING] - Please create the world/s or remove the plots using the purge command");
@ -1883,7 +1882,7 @@ public class SQLManager implements AbstractDB {
PS.debug("&7[WARN] " + "Failed to load plots."); PS.debug("&7[WARN] " + "Failed to load plots.");
e.printStackTrace(); e.printStackTrace();
} }
return newplots; return newPlots;
} }
@Override @Override
@ -2072,9 +2071,9 @@ public class SQLManager implements AbstractDB {
e.printStackTrace(); e.printStackTrace();
PS.debug("&c[ERROR] " + "FAILED TO PURGE AREA '" + area + "'!"); PS.debug("&c[ERROR] " + "FAILED TO PURGE AREA '" + area + "'!");
} }
for (Iterator<PlotId> iter = plots.iterator(); iter.hasNext(); ) { for (Iterator<PlotId> iterator = plots.iterator(); iterator.hasNext(); ) {
PlotId plotId = iter.next(); PlotId plotId = iterator.next();
iter.remove(); iterator.remove();
PlotId id = new PlotId(plotId.x, plotId.y); PlotId id = new PlotId(plotId.x, plotId.y);
area.removePlot(id); area.removePlot(id);
} }
@ -2178,7 +2177,7 @@ public class SQLManager implements AbstractDB {
} }
@Override @Override
public void execute(PreparedStatement stmt) { public void execute(PreparedStatement statement) {
} }
@Override @Override
@ -2480,11 +2479,12 @@ public class SQLManager implements AbstractDB {
} }
@Override @Override
public void execute(PreparedStatement stmt) {} public void execute(PreparedStatement statement) {
}
@Override @Override
public void addBatch(PreparedStatement stmt) throws SQLException { public void addBatch(PreparedStatement statement) throws SQLException {
ResultSet resultSet = stmt.executeQuery(); ResultSet resultSet = statement.executeQuery();
Map<String, byte[]> metaMap = new HashMap<>(); Map<String, byte[]> metaMap = new HashMap<>();
@ -2673,7 +2673,7 @@ public class SQLManager implements AbstractDB {
for (Entry<String, Integer> entry : noExist.entrySet()) { for (Entry<String, Integer> entry : noExist.entrySet()) {
String a = entry.getKey(); String a = entry.getKey();
invalidPlot = true; invalidPlot = true;
PS.debug("&c[WARNING] Found " + noExist.get(a) + " clusters in DB for non existant area; '" + a + "'."); PS.debug("&c[WARNING] Found " + noExist.get(a) + " clusters in DB for non existent area; '" + a + "'.");
} }
if (invalidPlot) { if (invalidPlot) {
PS.debug("&c[WARNING] - Please create the world/s or remove the clusters using the purge command"); PS.debug("&c[WARNING] - Please create the world/s or remove the clusters using the purge command");
@ -2782,14 +2782,14 @@ public class SQLManager implements AbstractDB {
} }
@Override @Override
public void execute(PreparedStatement stmt) { public void execute(PreparedStatement statement) {
} }
@Override @Override
public void addBatch(PreparedStatement stmt) throws SQLException { public void addBatch(PreparedStatement statement) throws SQLException {
stmt.executeUpdate(); statement.executeUpdate();
ResultSet keys = stmt.getGeneratedKeys(); ResultSet keys = statement.getGeneratedKeys();
if (keys.next()) { if (keys.next()) {
cluster.temp = keys.getInt(1); cluster.temp = keys.getInt(1);
} }
@ -2943,29 +2943,29 @@ public class SQLManager implements AbstractDB {
if (plot.temp == -1) { if (plot.temp == -1) {
continue; continue;
} }
HashMap<PlotId, Plot> worldplots = database.get(plot.getArea().toString()); HashMap<PlotId, Plot> worldPlots = database.get(plot.getArea().toString());
if (worldplots == null) { if (worldPlots == null) {
PS.debug("&8 - &7Creating plot (1): " + plot); PS.debug("&8 - &7Creating plot (1): " + plot);
toCreate.add(plot); toCreate.add(plot);
continue; continue;
} }
Plot dataplot = worldplots.remove(plot.getId()); Plot dataPlot = worldPlots.remove(plot.getId());
if (dataplot == null) { if (dataPlot == null) {
PS.debug("&8 - &7Creating plot (2): " + plot); PS.debug("&8 - &7Creating plot (2): " + plot);
toCreate.add(plot); toCreate.add(plot);
continue; continue;
} }
// owner // owner
if (!plot.owner.equals(dataplot.owner)) { if (!plot.owner.equals(dataPlot.owner)) {
PS.debug("&8 - &7Setting owner: " + plot + " -> " + MainUtil.getName(plot.owner)); PS.debug("&8 - &7Setting owner: " + plot + " -> " + MainUtil.getName(plot.owner));
setOwner(plot, plot.owner); setOwner(plot, plot.owner);
} }
// trusted // trusted
if (!plot.getTrusted().equals(dataplot.getTrusted())) { if (!plot.getTrusted().equals(dataPlot.getTrusted())) {
HashSet<UUID> toAdd = (HashSet<UUID>) plot.getTrusted().clone(); HashSet<UUID> toAdd = (HashSet<UUID>) plot.getTrusted().clone();
HashSet<UUID> toRemove = (HashSet<UUID>) dataplot.getTrusted().clone(); HashSet<UUID> toRemove = (HashSet<UUID>) dataPlot.getTrusted().clone();
toRemove.removeAll(plot.getTrusted()); toRemove.removeAll(plot.getTrusted());
toAdd.removeAll(dataplot.getTrusted()); toAdd.removeAll(dataPlot.getTrusted());
PS.debug("&8 - &7Correcting " + (toAdd.size() + toRemove.size()) + " trusted for: " + plot); PS.debug("&8 - &7Correcting " + (toAdd.size() + toRemove.size()) + " trusted for: " + plot);
if (!toRemove.isEmpty()) { if (!toRemove.isEmpty()) {
for (UUID uuid : toRemove) { for (UUID uuid : toRemove) {
@ -2978,11 +2978,11 @@ public class SQLManager implements AbstractDB {
} }
} }
} }
if (!plot.getMembers().equals(dataplot.getMembers())) { if (!plot.getMembers().equals(dataPlot.getMembers())) {
HashSet<UUID> toAdd = (HashSet<UUID>) plot.getMembers().clone(); HashSet<UUID> toAdd = (HashSet<UUID>) plot.getMembers().clone();
HashSet<UUID> toRemove = (HashSet<UUID>) dataplot.getMembers().clone(); HashSet<UUID> toRemove = (HashSet<UUID>) dataPlot.getMembers().clone();
toRemove.removeAll(plot.getMembers()); toRemove.removeAll(plot.getMembers());
toAdd.removeAll(dataplot.getMembers()); toAdd.removeAll(dataPlot.getMembers());
PS.debug("&8 - &7Correcting " + (toAdd.size() + toRemove.size()) + " members for: " + plot); PS.debug("&8 - &7Correcting " + (toAdd.size() + toRemove.size()) + " members for: " + plot);
if (!toRemove.isEmpty()) { if (!toRemove.isEmpty()) {
for (UUID uuid : toRemove) { for (UUID uuid : toRemove) {
@ -2995,11 +2995,11 @@ public class SQLManager implements AbstractDB {
} }
} }
} }
if (!plot.getDenied().equals(dataplot.getDenied())) { if (!plot.getDenied().equals(dataPlot.getDenied())) {
HashSet<UUID> toAdd = (HashSet<UUID>) plot.getDenied().clone(); HashSet<UUID> toAdd = (HashSet<UUID>) plot.getDenied().clone();
HashSet<UUID> toRemove = (HashSet<UUID>) dataplot.getDenied().clone(); HashSet<UUID> toRemove = (HashSet<UUID>) dataPlot.getDenied().clone();
toRemove.removeAll(plot.getDenied()); toRemove.removeAll(plot.getDenied());
toAdd.removeAll(dataplot.getDenied()); toAdd.removeAll(dataPlot.getDenied());
PS.debug("&8 - &7Correcting " + (toAdd.size() + toRemove.size()) + " denied for: " + plot); PS.debug("&8 - &7Correcting " + (toAdd.size() + toRemove.size()) + " denied for: " + plot);
if (!toRemove.isEmpty()) { if (!toRemove.isEmpty()) {
for (UUID uuid : toRemove) { for (UUID uuid : toRemove) {
@ -3013,13 +3013,13 @@ public class SQLManager implements AbstractDB {
} }
} }
boolean[] pm = plot.getMerged(); boolean[] pm = plot.getMerged();
boolean[] dm = dataplot.getMerged(); boolean[] dm = dataPlot.getMerged();
if (pm[0] != dm[0] || pm[1] != dm[1]) { if (pm[0] != dm[0] || pm[1] != dm[1]) {
PS.debug("&8 - &7Correcting merge for: " + plot); PS.debug("&8 - &7Correcting merge for: " + plot);
setMerged(dataplot, plot.getMerged()); setMerged(dataPlot, plot.getMerged());
} }
HashMap<String, Flag> pf = plot.getFlags(); HashMap<String, Flag> pf = plot.getFlags();
HashMap<String, Flag> df = dataplot.getFlags(); HashMap<String, Flag> df = dataPlot.getFlags();
if (!pf.isEmpty() && !df.isEmpty()) { if (!pf.isEmpty() && !df.isEmpty()) {
if (pf.size() != df.size() || !StringMan.isEqual(StringMan.joinOrdered(pf.values(), ","), StringMan.joinOrdered(df.values(), ","))) { if (pf.size() != df.size() || !StringMan.isEqual(StringMan.joinOrdered(pf.values(), ","), StringMan.joinOrdered(df.values(), ","))) {
PS.debug("&8 - &7Correcting flags for: " + plot); PS.debug("&8 - &7Correcting flags for: " + plot);
@ -3146,18 +3146,18 @@ public class SQLManager implements AbstractDB {
public abstract class UniqueStatement { public abstract class UniqueStatement {
public String _method; public String method;
public UniqueStatement(String method) { public UniqueStatement(String method) {
this._method = method; this.method = method;
} }
public void addBatch(PreparedStatement stmt) throws SQLException { public void addBatch(PreparedStatement statement) throws SQLException {
stmt.addBatch(); statement.addBatch();
} }
public void execute(PreparedStatement stmt) throws SQLException { public void execute(PreparedStatement statement) throws SQLException {
stmt.executeBatch(); statement.executeBatch();
} }
public abstract PreparedStatement get() throws SQLException; public abstract PreparedStatement get() throws SQLException;

View File

@ -11,7 +11,7 @@ public abstract class StmtMod<T> {
public String getCreateMySQL(int size, String query, int params) { public String getCreateMySQL(int size, String query, int params) {
StringBuilder statement = new StringBuilder(query); StringBuilder statement = new StringBuilder(query);
for (int i = 0; i < (size - 1); i++) { for (int i = 0; i < size - 1; i++) {
statement.append("(" + StringMan.repeat(",?", params).substring(1) + "),"); statement.append("(" + StringMan.repeat(",?", params).substring(1) + "),");
} }
statement.append("(" + StringMan.repeat(",?", params).substring(1) + ")"); statement.append("(" + StringMan.repeat(",?", params).substring(1) + ")");
@ -21,7 +21,7 @@ public abstract class StmtMod<T> {
public String getCreateSQLite(int size, String query, int params) { public String getCreateSQLite(int size, String query, int params) {
StringBuilder statement = new StringBuilder(query); StringBuilder statement = new StringBuilder(query);
String modParams = StringMan.repeat(",?", params).substring(1); String modParams = StringMan.repeat(",?", params).substring(1);
for (int i = 0; i < (size - 1); i++) { for (int i = 0; i < size - 1; i++) {
statement.append("UNION SELECT " + modParams + " "); statement.append("UNION SELECT " + modParams + " ");
} }
return statement.toString(); return statement.toString();

View File

@ -11,8 +11,8 @@ import com.intellectualcrafters.plot.util.StringMan;
public class AbstractFlag { public class AbstractFlag {
public final String key; public final String key;
public final FlagValue<?> value; public final FlagValue<?> value;
public AbstractFlag(final String key) { public AbstractFlag(String key) {
this(key, new FlagValue.StringValue()); this(key, new FlagValue.StringValue());
} }
@ -21,7 +21,7 @@ public class AbstractFlag {
* The key must be alphabetical characters and &lt;= 16 characters in length * The key must be alphabetical characters and &lt;= 16 characters in length
* @param key * @param key
*/ */
public AbstractFlag(final String key, final FlagValue<?> value) { public AbstractFlag(String key, FlagValue<?> value) {
if (!StringMan.isAlpha(key.replaceAll("_", "").replaceAll("-", ""))) { if (!StringMan.isAlpha(key.replaceAll("_", "").replaceAll("-", ""))) {
throw new IllegalArgumentException("Flag must be alphabetic characters"); throw new IllegalArgumentException("Flag must be alphabetic characters");
} }
@ -37,23 +37,23 @@ public class AbstractFlag {
} }
public boolean isList() { public boolean isList() {
return value instanceof FlagValue.ListValue; return this.value instanceof FlagValue.ListValue;
} }
public Object parseValueRaw(final String value) { public Object parseValueRaw(String value) {
try { try {
return this.value.parse(value); return this.value.parse(value);
} catch (final Exception e) { } catch (Exception e) {
return null; return null;
} }
} }
public String toString(final Object t) { public String toString(Object t) {
return value.toString(t); return this.value.toString(t);
} }
public String getValueDesc() { public String getValueDesc() {
return value.getDescription(); return this.value.getDescription();
} }
/** /**
@ -62,28 +62,28 @@ public class AbstractFlag {
* @return String * @return String
*/ */
public String getKey() { public String getKey() {
return key; return this.key;
} }
@Override @Override
public String toString() { public String toString() {
return key; return this.key;
} }
@Override @Override
public int hashCode() { public int hashCode() {
return key.hashCode(); return this.key.hashCode();
} }
@Override @Override
public boolean equals(final Object other) { public boolean equals(Object other) {
if (other == this) { if (other == this) {
return true; return true;
} }
if (!(other instanceof AbstractFlag)) { if (!(other instanceof AbstractFlag)) {
return false; return false;
} }
final AbstractFlag otherObj = (AbstractFlag) other; AbstractFlag otherObj = (AbstractFlag) other;
return otherObj.key.equals(key); return otherObj.key.equals(this.key);
} }
} }

View File

@ -4,6 +4,7 @@ import com.intellectualcrafters.plot.object.PlotBlock;
import com.intellectualcrafters.plot.util.StringComparison; import com.intellectualcrafters.plot.util.StringComparison;
import com.intellectualcrafters.plot.util.StringMan; import com.intellectualcrafters.plot.util.StringMan;
import com.intellectualcrafters.plot.util.WorldUtil; import com.intellectualcrafters.plot.util.WorldUtil;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.HashSet; import java.util.HashSet;
@ -26,7 +27,7 @@ public abstract class FlagValue<T> {
} }
public boolean validValue(Object value) { public boolean validValue(Object value) {
return (value != null) && (value.getClass() == this.clazz); return value != null && value.getClass() == this.clazz;
} }
public String toString(Object t) { public String toString(Object t) {
@ -59,18 +60,15 @@ public abstract class FlagValue<T> {
case "1": case "1":
case "yes": case "yes":
case "allow": case "allow":
case "true": { case "true":
return true; return true;
}
case "0": case "0":
case "no": case "no":
case "deny": case "deny":
case "false": { case "false":
return false; return false;
} default:
default: {
return null; return null;
}
} }
} }
@ -291,7 +289,7 @@ public abstract class FlagValue<T> {
return new PlotBlock(id, data); return new PlotBlock(id, data);
} catch (Exception e) { } catch (Exception e) {
StringComparison<PlotBlock>.ComparisonResult value = WorldUtil.IMP.getClosestBlock(t); StringComparison<PlotBlock>.ComparisonResult value = WorldUtil.IMP.getClosestBlock(t);
if ((value == null) || (value.match > 1)) { if (value == null || value.match > 1) {
return null; return null;
} }
return value.best; return value.best;
@ -339,7 +337,7 @@ public abstract class FlagValue<T> {
block = new PlotBlock(id, data); block = new PlotBlock(id, data);
} catch (Exception e) { } catch (Exception e) {
StringComparison<PlotBlock>.ComparisonResult value = WorldUtil.IMP.getClosestBlock(t); StringComparison<PlotBlock>.ComparisonResult value = WorldUtil.IMP.getClosestBlock(t);
if ((value == null) || (value.match > 1)) { if (value == null || value.match > 1) {
continue; continue;
} }
block = value.best; block = value.best;

View File

@ -20,38 +20,30 @@ public class ClassicPlotManager extends SquarePlotManager {
@Override @Override
public boolean setComponent(PlotArea plotworld, PlotId plotid, String component, PlotBlock[] blocks) { public boolean setComponent(PlotArea plotworld, PlotId plotid, String component, PlotBlock[] blocks) {
switch (component) { switch (component) {
case "floor": { case "floor":
setFloor(plotworld, plotid, blocks); setFloor(plotworld, plotid, blocks);
return true; return true;
} case "wall":
case "wall": {
setWallFilling(plotworld, plotid, blocks); setWallFilling(plotworld, plotid, blocks);
return true; return true;
} case "all":
case "all": {
setAll(plotworld, plotid, blocks); setAll(plotworld, plotid, blocks);
return true; return true;
} case "air":
case "air": {
setAir(plotworld, plotid, blocks); setAir(plotworld, plotid, blocks);
return true; return true;
} case "main":
case "main": {
setMain(plotworld, plotid, blocks); setMain(plotworld, plotid, blocks);
return true; return true;
} case "middle":
case "middle": {
setMiddle(plotworld, plotid, blocks); setMiddle(plotworld, plotid, blocks);
return true; return true;
} case "outline":
case "outline": {
setOutline(plotworld, plotid, blocks); setOutline(plotworld, plotid, blocks);
return true; return true;
} case "border":
case "border": {
setWall(plotworld, plotid, blocks); setWall(plotworld, plotid, blocks);
return true; return true;
}
} }
return false; return false;
} }
@ -459,6 +451,6 @@ public class ClassicPlotManager extends SquarePlotManager {
ClassicPlotWorld dpw = (ClassicPlotWorld) plotworld; ClassicPlotWorld dpw = (ClassicPlotWorld) plotworld;
plot = plot.getBasePlot(false); plot = plot.getBasePlot(false);
Location bot = plot.getBottomAbs(); Location bot = plot.getBottomAbs();
return new com.intellectualcrafters.plot.object.Location(plotworld.worldname, bot.getX() - 1, dpw.ROAD_HEIGHT + 1, bot.getZ() - 2); return new Location(plotworld.worldname, bot.getX() - 1, dpw.ROAD_HEIGHT + 1, bot.getZ() - 2);
} }
} }

View File

@ -172,23 +172,24 @@ public class HybridPlotWorld extends ClassicPlotWorld {
public void setupSchematics() { public void setupSchematics() {
this.G_SCH = new HashMap<>(); this.G_SCH = new HashMap<>();
File schem1File = MainUtil.getFile(PS.get().IMP.getDirectory(), "schematics/GEN_ROAD_SCHEMATIC/" + this.worldname + "/sideroad.schematic"); File schematic1File =
File schem2File = MainUtil.getFile(PS.get().IMP.getDirectory(), "schematics/GEN_ROAD_SCHEMATIC/" + this.worldname + "/sideroad.schematic");
File schematic2File =
MainUtil.getFile(PS.get().IMP.getDirectory(), "schematics/GEN_ROAD_SCHEMATIC/" + this.worldname + "/intersection.schematic"); MainUtil.getFile(PS.get().IMP.getDirectory(), "schematics/GEN_ROAD_SCHEMATIC/" + this.worldname + "/intersection.schematic");
File schem3File = MainUtil.getFile(PS.get().IMP.getDirectory(), "schematics/GEN_ROAD_SCHEMATIC/" + this.worldname + "/plot.schematic"); File schem3File = MainUtil.getFile(PS.get().IMP.getDirectory(), "schematics/GEN_ROAD_SCHEMATIC/" + this.worldname + "/plot.schematic");
Schematic schem1 = SchematicHandler.manager.getSchematic(schem1File); Schematic schematic1 = SchematicHandler.manager.getSchematic(schematic1File);
Schematic schem2 = SchematicHandler.manager.getSchematic(schem2File); Schematic schematic2 = SchematicHandler.manager.getSchematic(schematic2File);
Schematic schem3 = SchematicHandler.manager.getSchematic(schem3File); Schematic schematic3 = SchematicHandler.manager.getSchematic(schem3File);
int shift = this.ROAD_WIDTH / 2; int shift = this.ROAD_WIDTH / 2;
int oddshift = 0; int oddshift = 0;
if ((this.ROAD_WIDTH & 1) != 0) { if ((this.ROAD_WIDTH & 1) != 0) {
oddshift = 1; oddshift = 1;
} }
if (schem3 != null) { if (schematic3 != null) {
this.PLOT_SCHEMATIC = true; this.PLOT_SCHEMATIC = true;
short[] ids = schem3.getIds(); short[] ids = schematic3.getIds();
byte[] datas = schem3.getDatas(); byte[] datas = schematic3.getDatas();
Dimension d3 = schem3.getSchematicDimension(); Dimension d3 = schematic3.getSchematicDimension();
short w3 = (short) d3.getX(); short w3 = (short) d3.getX();
short l3 = (short) d3.getZ(); short l3 = (short) d3.getZ();
short h3 = (short) d3.getY(); short h3 = (short) d3.getY();
@ -214,7 +215,7 @@ public class HybridPlotWorld extends ClassicPlotWorld {
} }
} }
} }
HashSet<PlotItem> items = schem3.getItems(); HashSet<PlotItem> items = schematic3.getItems();
if (items != null) { if (items != null) {
this.G_SCH_STATE = new HashMap<>(); this.G_SCH_STATE = new HashMap<>();
for (PlotItem item : items) { for (PlotItem item : items) {
@ -235,7 +236,7 @@ public class HybridPlotWorld extends ClassicPlotWorld {
} }
} }
} }
if (schem1 == null || schem2 == null || this.ROAD_WIDTH == 0) { if (schematic1 == null || schematic2 == null || this.ROAD_WIDTH == 0) {
PS.debug(C.PREFIX + "&3 - schematic: &7false"); PS.debug(C.PREFIX + "&3 - schematic: &7false");
return; return;
} }
@ -243,17 +244,17 @@ public class HybridPlotWorld extends ClassicPlotWorld {
// Do not populate road if using schematic population // Do not populate road if using schematic population
this.ROAD_BLOCK = new PlotBlock(this.ROAD_BLOCK.id, (byte) 0); this.ROAD_BLOCK = new PlotBlock(this.ROAD_BLOCK.id, (byte) 0);
short[] ids1 = schem1.getIds(); short[] ids1 = schematic1.getIds();
byte[] datas1 = schem1.getDatas(); byte[] datas1 = schematic1.getDatas();
short[] ids2 = schem2.getIds(); short[] ids2 = schematic2.getIds();
byte[] datas2 = schem2.getDatas(); byte[] datas2 = schematic2.getDatas();
Dimension d1 = schem1.getSchematicDimension(); Dimension d1 = schematic1.getSchematicDimension();
short w1 = (short) d1.getX(); short w1 = (short) d1.getX();
short l1 = (short) d1.getZ(); short l1 = (short) d1.getZ();
short h1 = (short) d1.getY(); short h1 = (short) d1.getY();
Dimension d2 = schem2.getSchematicDimension(); Dimension d2 = schematic2.getSchematicDimension();
short w2 = (short) d2.getX(); short w2 = (short) d2.getX();
short l2 = (short) d2.getZ(); short l2 = (short) d2.getZ();
short h2 = (short) d2.getY(); short h2 = (short) d2.getY();
@ -293,9 +294,9 @@ public class HybridPlotWorld extends ClassicPlotWorld {
x += this.SIZE; x += this.SIZE;
} }
if (rotate) { if (rotate) {
byte newdata = rotate(id, data); byte newData = rotate(id, data);
if (data != 0 || newdata != 0) { if (data != 0 || newData != 0) {
data = newdata; data = newData;
} }
} }
int pair = MathMan.pair(x, z); int pair = MathMan.pair(x, z);

View File

@ -223,9 +223,9 @@ public abstract class HybridUtils {
} }
if (chunks.size() < 1024) { if (chunks.size() < 1024) {
if (!regions.isEmpty()) { if (!regions.isEmpty()) {
Iterator<ChunkLoc> iter = regions.iterator(); Iterator<ChunkLoc> iterator = regions.iterator();
ChunkLoc loc = iter.next(); ChunkLoc loc = iterator.next();
iter.remove(); iterator.remove();
PS.debug("&3Updating .mcr: " + loc.x + ", " + loc.z + " (aprrox 1024 chunks)"); PS.debug("&3Updating .mcr: " + loc.x + ", " + loc.z + " (aprrox 1024 chunks)");
PS.debug(" - Remaining: " + regions.size()); PS.debug(" - Remaining: " + regions.size());
chunks.addAll(getChunks(loc)); chunks.addAll(getChunks(loc));
@ -237,9 +237,9 @@ public abstract class HybridUtils {
if (System.currentTimeMillis() - baseTime - last.get() > 2000 && last.get() != 0) { if (System.currentTimeMillis() - baseTime - last.get() > 2000 && last.get() != 0) {
last.set(0); last.set(0);
PS.debug(C.PREFIX.s() + "Detected low TPS. Rescheduling in 30s"); PS.debug(C.PREFIX.s() + "Detected low TPS. Rescheduling in 30s");
Iterator<ChunkLoc> iter = chunks.iterator(); Iterator<ChunkLoc> iterator = chunks.iterator();
final ChunkLoc chunk = iter.next(); final ChunkLoc chunk = iterator.next();
iter.remove(); iterator.remove();
TaskManager.runTask(new Runnable() { TaskManager.runTask(new Runnable() {
@Override @Override
public void run() { public void run() {
@ -252,9 +252,9 @@ public abstract class HybridUtils {
} }
if (System.currentTimeMillis() - baseTime - last.get() < 1500 && last.get() != 0) { if (System.currentTimeMillis() - baseTime - last.get() < 1500 && last.get() != 0) {
while (System.currentTimeMillis() < diff && !chunks.isEmpty()) { while (System.currentTimeMillis() < diff && !chunks.isEmpty()) {
Iterator<ChunkLoc> iter = chunks.iterator(); Iterator<ChunkLoc> iterator = chunks.iterator();
final ChunkLoc chunk = iter.next(); final ChunkLoc chunk = iterator.next();
iter.remove(); iterator.remove();
TaskManager.runTask(new Runnable() { TaskManager.runTask(new Runnable() {
@Override @Override
public void run() { public void run() {
@ -267,9 +267,9 @@ public abstract class HybridUtils {
} }
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
Iterator<ChunkLoc> iter = regions.iterator(); Iterator<ChunkLoc> iterator = regions.iterator();
ChunkLoc loc = iter.next(); ChunkLoc loc = iterator.next();
iter.remove(); iterator.remove();
PS.debug("&c[ERROR]&7 Could not update '" + area.worldname + "/region/r." + loc.x + "." + loc.z PS.debug("&c[ERROR]&7 Could not update '" + area.worldname + "/region/r." + loc.x + "." + loc.z
+ ".mca' (Corrupt chunk?)"); + ".mca' (Corrupt chunk?)");
int sx = loc.x << 5; int sx = loc.x << 5;
@ -311,12 +311,12 @@ public abstract class HybridUtils {
int tz = sz - 1; int tz = sz - 1;
int ty = get_ey(world, sx, ex, bz, tz, sy); int ty = get_ey(world, sx, ex, bz, tz, sy);
Set<RegionWrapper> sideroad = new HashSet<>(Collections.singletonList(new RegionWrapper(sx, ex, sy, ey, sz, ez))); Set<RegionWrapper> sideRoad = new HashSet<>(Collections.singletonList(new RegionWrapper(sx, ex, sy, ey, sz, ez)));
final Set<RegionWrapper> intersection = new HashSet<>(Collections.singletonList(new RegionWrapper(sx, ex, sy, ty, bz, tz))); final Set<RegionWrapper> intersection = new HashSet<>(Collections.singletonList(new RegionWrapper(sx, ex, sy, ty, bz, tz)));
final String dir = "schematics" + File.separator + "GEN_ROAD_SCHEMATIC" + File.separator + plot final String dir = "schematics" + File.separator + "GEN_ROAD_SCHEMATIC" + File.separator + plot
.getArea().toString() + File.separator; .getArea().toString() + File.separator;
SchematicHandler.manager.getCompoundTag(world, sideroad, new RunnableVal<CompoundTag>() { SchematicHandler.manager.getCompoundTag(world, sideRoad, new RunnableVal<CompoundTag>() {
@Override @Override
public void run(CompoundTag value) { public void run(CompoundTag value) {
SchematicHandler.manager.save(value, dir + "sideroad.schematic"); SchematicHandler.manager.save(value, dir + "sideroad.schematic");

View File

@ -28,9 +28,9 @@ public abstract class SquarePlotManager extends GridPlotManager {
whenDone.run(); whenDone.run();
return; return;
} }
Iterator<RegionWrapper> iter = regions.iterator(); Iterator<RegionWrapper> iterator = regions.iterator();
RegionWrapper region = iter.next(); RegionWrapper region = iterator.next();
iter.remove(); iterator.remove();
Location pos1 = new Location(plot.getArea().worldname, region.minX, region.minY, region.minZ); Location pos1 = new Location(plot.getArea().worldname, region.minX, region.minY, region.minZ);
Location pos2 = new Location(plot.getArea().worldname, region.maxX, region.maxY, region.maxZ); Location pos2 = new Location(plot.getArea().worldname, region.maxX, region.maxY, region.maxZ);
ChunkManager.manager.regenerateRegion(pos1, pos2, false, this); ChunkManager.manager.regenerateRegion(pos1, pos2, false, this);

View File

@ -11,8 +11,8 @@ public abstract class SquarePlotWorld extends GridPlotWorld {
public int ROAD_OFFSET_X = 0; public int ROAD_OFFSET_X = 0;
public int ROAD_OFFSET_Z = 0; public int ROAD_OFFSET_Z = 0;
public SquarePlotWorld(String worldname, String id, IndependentPlotGenerator generator, PlotId min, PlotId max) { public SquarePlotWorld(String worldName, String id, IndependentPlotGenerator generator, PlotId min, PlotId max) {
super(worldname, id, generator, min, max); super(worldName, id, generator, min, max);
} }
@Override @Override

View File

@ -81,12 +81,12 @@ public class PlotAnalysis {
TaskManager.runTaskAsync(new Runnable() { TaskManager.runTaskAsync(new Runnable() {
@Override @Override
public void run() { public void run() {
Iterator<Plot> iter = plots.iterator(); Iterator<Plot> iterator = plots.iterator();
PS.debug(" - $1Reducing " + plots.size() + " plots to those with sufficient data"); PS.debug(" - $1Reducing " + plots.size() + " plots to those with sufficient data");
while (iter.hasNext()) { while (iterator.hasNext()) {
Plot plot = iter.next(); Plot plot = iterator.next();
if (plot.getSettings().ratings == null || plot.getSettings().getRatings().isEmpty()) { if (plot.getSettings().ratings == null || plot.getSettings().getRatings().isEmpty()) {
iter.remove(); iterator.remove();
} else { } else {
plot.addRunning(); plot.addRunning();
} }
@ -393,7 +393,7 @@ public class PlotAnalysis {
} }
/** /**
* Get correllation coefficient. * Get correlation coefficient.
* @return * @return
*/ */
public static double getCC(int n, int sum) { public static double getCC(int n, int sum) {

View File

@ -72,8 +72,8 @@ public abstract class PlotArea {
private ConcurrentHashMap<String, Object> meta; private ConcurrentHashMap<String, Object> meta;
private QuadMap<PlotCluster> clusters; private QuadMap<PlotCluster> clusters;
public PlotArea(String worldname, String id, IndependentPlotGenerator generator, PlotId min, PlotId max) { public PlotArea(String worldName, String id, IndependentPlotGenerator generator, PlotId min, PlotId max) {
this.worldname = worldname; this.worldname = worldName;
this.id = id; this.id = id;
this.manager = generator != null ? generator.getNewPlotManager() : null; this.manager = generator != null ? generator.getNewPlotManager() : null;
this.generator = generator; this.generator = generator;
@ -87,7 +87,7 @@ public abstract class PlotArea {
this.min = min; this.min = min;
this.max = max; this.max = max;
} }
this.worldhash = worldname.hashCode(); this.worldhash = worldName.hashCode();
} }
/** /**
@ -303,7 +303,7 @@ public abstract class PlotArea {
public abstract void loadConfiguration(ConfigurationSection config); public abstract void loadConfiguration(ConfigurationSection config);
/** /**
* Saving core plotarea settings * Saving core PlotArea settings
* *
* @param config Configuration Section * @param config Configuration Section
*/ */
@ -457,16 +457,16 @@ public abstract class PlotArea {
} }
public Set<Plot> getPlotsAbs(final UUID uuid) { public Set<Plot> getPlotsAbs(final UUID uuid) {
final HashSet<Plot> myplots = new HashSet<>(); final HashSet<Plot> myPlots = new HashSet<>();
foreachPlotAbs(new RunnableVal<Plot>() { foreachPlotAbs(new RunnableVal<Plot>() {
@Override @Override
public void run(Plot value) { public void run(Plot value) {
if (value.owner.equals(uuid)) { if (value.owner.equals(uuid)) {
myplots.add(value); myPlots.add(value);
} }
} }
}); });
return myplots; return myPlots;
} }
public Set<Plot> getPlots(UUID uuid) { public Set<Plot> getPlots(UUID uuid) {
@ -595,14 +595,14 @@ public abstract class PlotArea {
} }
public Set<Plot> getBasePlots() { public Set<Plot> getBasePlots() {
HashSet<Plot> myplots = new HashSet<>(getPlots()); HashSet<Plot> myPlots = new HashSet<>(getPlots());
Iterator<Plot> iter = myplots.iterator(); Iterator<Plot> iterator = myPlots.iterator();
while (iter.hasNext()) { while (iterator.hasNext()) {
if (!iter.next().isBasePlot()) { if (!iterator.next().isBasePlot()) {
iter.remove(); iterator.remove();
} }
} }
return myplots; return myPlots;
} }
public void foreachPlotAbs(RunnableVal<Plot> run) { public void foreachPlotAbs(RunnableVal<Plot> run) {

View File

@ -18,7 +18,7 @@ public class Rating {
public Rating(int value) { public Rating(int value) {
this.initial = value; this.initial = value;
this.ratingMap = new HashMap<>(); this.ratingMap = new HashMap<>();
if ((Settings.RATING_CATEGORIES != null) && (Settings.RATING_CATEGORIES.size() > 1)) { if (Settings.RATING_CATEGORIES != null && Settings.RATING_CATEGORIES.size() > 1) {
if (value < 10) { if (value < 10) {
for (String ratingCategory : Settings.RATING_CATEGORIES) { for (String ratingCategory : Settings.RATING_CATEGORIES) {
this.ratingMap.put(ratingCategory, value); this.ratingMap.put(ratingCategory, value);
@ -27,7 +27,7 @@ public class Rating {
return; return;
} }
for (String ratingCategory : Settings.RATING_CATEGORIES) { for (String ratingCategory : Settings.RATING_CATEGORIES) {
this.ratingMap.put(ratingCategory, (value % 10) - 1); this.ratingMap.put(ratingCategory, value % 10 - 1);
value = value / 10; value = value / 10;
} }
} else { } else {
@ -66,7 +66,7 @@ public class Rating {
if (!this.changed) { if (!this.changed) {
return this.initial; return this.initial;
} }
if ((Settings.RATING_CATEGORIES != null) && (Settings.RATING_CATEGORIES.size() > 1)) { if (Settings.RATING_CATEGORIES != null && Settings.RATING_CATEGORIES.size() > 1) {
int val = 0; int val = 0;
for (int i = 0; i < Settings.RATING_CATEGORIES.size(); i++) { for (int i = 0; i < Settings.RATING_CATEGORIES.size(); i++) {
val += (i + 1) * Math.pow(10, this.ratingMap.get(Settings.RATING_CATEGORIES.get(i))); val += (i + 1) * Math.pow(10, this.ratingMap.get(Settings.RATING_CATEGORIES.get(i)));

View File

@ -7,17 +7,17 @@ public class RegionWrapper {
public final int maxY; public final int maxY;
public final int minZ; public final int minZ;
public final int maxZ; public final int maxZ;
public RegionWrapper(final int minX, final int maxX, final int minZ, final int maxZ) { public RegionWrapper(int minX, int maxX, int minZ, int maxZ) {
this.maxX = maxX; this.maxX = maxX;
this.minX = minX; this.minX = minX;
this.maxZ = maxZ; this.maxZ = maxZ;
this.minZ = minZ; this.minZ = minZ;
minY = 0; this.minY = 0;
maxY = 256; this.maxY = 256;
} }
public RegionWrapper(final int minX, final int maxX, final int minY, final int maxY, final int minZ, final int maxZ) { public RegionWrapper(int minX, int maxX, int minY, int maxY, int minZ, int maxZ) {
this.maxX = maxX; this.maxX = maxX;
this.minX = minX; this.minX = minX;
this.maxZ = maxZ; this.maxZ = maxZ;
@ -25,13 +25,13 @@ public class RegionWrapper {
this.minY = minY; this.minY = minY;
this.maxY = maxY; this.maxY = maxY;
} }
public boolean isIn(final int x, final int y, final int z) { public boolean isIn(int x, int y, int z) {
return x >= minX && x <= maxX && z >= minZ && z <= maxZ && y >= minY && y <= maxY; return x >= this.minX && x <= this.maxX && z >= this.minZ && z <= this.maxZ && y >= this.minY && y <= this.maxY;
} }
public boolean isIn(final int x, final int z) { public boolean isIn(int x, int z) {
return x >= minX && x <= maxX && z >= minZ && z <= maxZ; return x >= this.minX && x <= this.maxX && z >= this.minZ && z <= this.maxZ;
} }
public boolean intersects(RegionWrapper other) { public boolean intersects(RegionWrapper other) {
@ -40,7 +40,7 @@ public class RegionWrapper {
@Override @Override
public int hashCode() { public int hashCode() {
return minX + 13 * maxX + 23 * minZ + 39 * maxZ; return this.minX + 13 * this.maxX + 23 * this.minZ + 39 * this.maxZ;
} }
@Override @Override
@ -53,19 +53,20 @@ public class RegionWrapper {
} }
if (obj instanceof RegionWrapper) { if (obj instanceof RegionWrapper) {
RegionWrapper other = (RegionWrapper) obj; RegionWrapper other = (RegionWrapper) obj;
return minX == other.minX && minZ == other.minZ && minY == other.minY && maxX == other.maxX && maxZ == other.maxZ && maxY == other.maxY; return this.minX == other.minX && this.minZ == other.minZ && this.minY == other.minY && this.maxX == other.maxX && this.maxZ == other.maxZ
&& this.maxY == other.maxY;
} }
return false; return false;
} }
@Override @Override
public String toString() { public String toString() {
return minX + "->" + maxX + "," + minZ + "->" + maxZ; return this.minX + "->" + this.maxX + "," + this.minZ + "->" + this.maxZ;
} }
public Location[] getCorners(String world) { public Location[] getCorners(String world) {
Location pos1 = new Location(world, minX, minY, minZ); Location pos1 = new Location(world, this.minX, this.minY, this.minZ);
Location pos2 = new Location(world, maxX, maxY, maxZ); Location pos2 = new Location(world, this.maxX, this.maxY, this.maxZ);
return new Location[] { pos1, pos2 }; return new Location[] { pos1, pos2 };
} }
} }

View File

@ -11,7 +11,7 @@ public abstract class RunnableVal<T> implements Runnable {
@Override @Override
public void run() { public void run() {
run(value); run(this.value);
} }
public abstract void run(T value); public abstract void run(T value);

View File

@ -13,7 +13,7 @@ public abstract class RunnableVal2<T, U> implements Runnable {
@Override @Override
public void run() { public void run() {
run(value1, value2); run(this.value1, this.value2);
} }
public abstract void run(T value1, U value2); public abstract void run(T value1, U value2);

View File

@ -128,14 +128,14 @@ public class ExpireManager {
} }
final Runnable task = this; final Runnable task = this;
long start = System.currentTimeMillis(); long start = System.currentTimeMillis();
Iterator<Plot> iter = plots.iterator(); Iterator<Plot> iterator = plots.iterator();
while (iter.hasNext() && System.currentTimeMillis() - start < 2) { while (iterator.hasNext() && System.currentTimeMillis() - start < 2) {
if (ExpireManager.this.running != 2) { if (ExpireManager.this.running != 2) {
ExpireManager.this.running = 0; ExpireManager.this.running = 0;
return; return;
} }
final Plot plot = iter.next(); final Plot plot = iterator.next();
iter.remove(); iterator.remove();
if (!isExpired(plot)) { if (!isExpired(plot)) {
continue; continue;
} }

View File

@ -222,35 +222,31 @@ public class MainUtil {
case "week": case "week":
case "weeks": case "weeks":
case "wks": case "wks":
case "w": { case "w":
time += 604800 * nums; time += 604800 * nums;
}
case "days": case "days":
case "day": case "day":
case "d": { case "d":
time += 86400 * nums; time += 86400 * nums;
}
case "hour": case "hour":
case "hr": case "hr":
case "hrs": case "hrs":
case "hours": case "hours":
case "h": { case "h":
time += 3600 * nums; time += 3600 * nums;
}
case "minutes": case "minutes":
case "minute": case "minute":
case "mins": case "mins":
case "min": case "min":
case "m": { case "m":
time += 60 * nums; time += 60 * nums;
}
case "seconds": case "seconds":
case "second": case "second":
case "secs": case "secs":
case "sec": case "sec":
case "s": { case "s":
time += nums; time += nums;
}
} }
} }
return time; return time;
@ -277,19 +273,19 @@ public class MainUtil {
} }
/** /**
* Get a list of plot ids within a selection * Get a list of plot ids within a selection.
* @param pos1 * @param pos1
* @param pos2 * @param pos2
* @return * @return
*/ */
public static ArrayList<PlotId> getPlotSelectionIds(PlotId pos1, PlotId pos2) { public static ArrayList<PlotId> getPlotSelectionIds(PlotId pos1, PlotId pos2) {
ArrayList<PlotId> myplots = new ArrayList<>(); ArrayList<PlotId> myPlots = new ArrayList<>();
for (int x = pos1.x; x <= pos2.x; x++) { for (int x = pos1.x; x <= pos2.x; x++) {
for (int y = pos1.y; y <= pos2.y; y++) { for (int y = pos1.y; y <= pos2.y; y++) {
myplots.add(new PlotId(x, y)); myPlots.add(new PlotId(x, y));
} }
} }
return myplots; return myPlots;
} }
/** /**
@ -346,7 +342,7 @@ public class MainUtil {
} }
/** /**
* Fuzzy plot search with spaces separating terms<br> * Fuzzy plot search with spaces separating terms.
* - Terms: type, alias, world, owner, trusted, member * - Terms: type, alias, world, owner, trusted, member
* @param search * @param search
* @return * @return
@ -421,7 +417,7 @@ public class MainUtil {
} }
/** /**
* Get the plot from a string<br> * Get the plot from a string.
* @param player Provides a context for what world to search in. Prefixing the term with 'world_name;' will override this context. * @param player Provides a context for what world to search in. Prefixing the term with 'world_name;' will override this context.
* @param arg The search term * @param arg The search term
* @param message If a message should be sent to the player if a plot cannot be found * @param message If a message should be sent to the player if a plot cannot be found
@ -533,13 +529,13 @@ public class MainUtil {
* @param world * @param world
* @param pos1 * @param pos1
* @param pos2 * @param pos2
* @param newblock * @param newBlock
*/ */
public static void setSimpleCuboidAsync(String world, Location pos1, Location pos2, PlotBlock newblock) { public static void setSimpleCuboidAsync(String world, Location pos1, Location pos2, PlotBlock newBlock) {
for (int y = pos1.getY(); y <= Math.min(255, pos2.getY()); y++) { for (int y = pos1.getY(); y <= Math.min(255, pos2.getY()); y++) {
for (int x = pos1.getX(); x <= pos2.getX(); x++) { for (int x = pos1.getX(); x <= pos2.getX(); x++) {
for (int z = pos1.getZ(); z <= pos2.getZ(); z++) { for (int z = pos1.getZ(); z <= pos2.getZ(); z++) {
SetQueue.IMP.setBlock(world, x, y, z, newblock); SetQueue.IMP.setBlock(world, x, y, z, newBlock);
} }
} }
} }

View File

@ -1,30 +1,50 @@
package com.intellectualcrafters.plot.util; package com.intellectualcrafters.plot.util;
public class MathMan { public class MathMan {
public static double getMean(final int[] array) {
private static final int ATAN2_BITS = 7;
private static final int ATAN2_BITS2 = ATAN2_BITS << 1;
private static final int ATAN2_MASK = ~(-1 << ATAN2_BITS2);
private static final int ATAN2_COUNT = ATAN2_MASK + 1;
private static final int ATAN2_DIM = (int) Math.sqrt(ATAN2_COUNT);
private static final float INV_ATAN2_DIM_MINUS_1 = 1.0f / (ATAN2_DIM - 1);
private static final float[] atan2 = new float[ATAN2_COUNT];
static {
for (int i = 0; i < ATAN2_DIM; i++) {
for (int j = 0; j < ATAN2_DIM; j++) {
float x0 = (float) i / ATAN2_DIM;
float y0 = (float) j / ATAN2_DIM;
atan2[(j * ATAN2_DIM) + i] = (float) Math.atan2(y0, x0);
}
}
}
public static double getMean(int[] array) {
double count = 0; double count = 0;
for (final int i : array) { for (int i : array) {
count += i; count += i;
} }
return count / array.length; return count / array.length;
} }
public static double getMean(final double[] array) { public static double getMean(double[] array) {
double count = 0; double count = 0;
for (final double i : array) { for (double i : array) {
count += i; count += i;
} }
return count / array.length; return count / array.length;
} }
public static int pair(short x, short y) { public static int pair(short x, short y) {
return (x << 16) | (y & 0xFFFF); return (x << 16) | (y & 0xFFFF);
} }
public static short unpairX(int hash) { public static short unpairX(int hash) {
return (short) (hash >> 16); return (short) (hash >> 16);
} }
public static short unpairY(int hash) { public static short unpairY(int hash) {
return (short) (hash & 0xFFFF); return (short) (hash & 0xFFFF);
} }
@ -35,15 +55,15 @@ public class MathMan {
* @param pitch * @param pitch
* @return * @return
*/ */
public static float[] getDirection(final float yaw, final float pitch) { public static float[] getDirection(float yaw, float pitch) {
final double pitch_sin = Math.sin(pitch); double pitch_sin = Math.sin(pitch);
return new float[] { (float) (pitch_sin * Math.cos(yaw)), (float) (pitch_sin * Math.sin(yaw)), (float) Math.cos(pitch) }; return new float[]{(float) (pitch_sin * Math.cos(yaw)), (float) (pitch_sin * Math.sin(yaw)), (float) Math.cos(pitch)};
} }
public static int roundInt(final double value) { public static int roundInt(double value) {
return (int) (value < 0 ? (value == (int) value) ? value : value - 1 : value); return (int) (value < 0 ? (value == (int) value) ? value : value - 1 : value);
} }
/** /**
* Returns [ pitch, yaw ] * Returns [ pitch, yaw ]
* @param x * @param x
@ -51,47 +71,25 @@ public class MathMan {
* @param z * @param z
* @return * @return
*/ */
public static float[] getPitchAndYaw(final float x, final float y, final float z) { public static float[] getPitchAndYaw(float x, float y, float z) {
final float distance = sqrtApprox((z * z) + (x * x)); float distance = sqrtApprox((z * z) + (x * x));
return new float[] { atan2(y, distance), atan2(x, z) }; return new float[]{atan2(y, distance), atan2(x, z)};
} }
private static final int ATAN2_BITS = 7;
private static final int ATAN2_BITS2 = ATAN2_BITS << 1;
private static final int ATAN2_MASK = ~(-1 << ATAN2_BITS2);
private static final int ATAN2_COUNT = ATAN2_MASK + 1;
private static final int ATAN2_DIM = (int) Math.sqrt(ATAN2_COUNT);
private static final float INV_ATAN2_DIM_MINUS_1 = 1.0f / (ATAN2_DIM - 1);
private static final float[] atan2 = new float[ATAN2_COUNT];
static {
for (int i = 0; i < ATAN2_DIM; i++) {
for (int j = 0; j < ATAN2_DIM; j++) {
final float x0 = (float) i / ATAN2_DIM;
final float y0 = (float) j / ATAN2_DIM;
atan2[(j * ATAN2_DIM) + i] = (float) Math.atan2(y0, x0);
}
}
}
public static final float atan2(float y, float x) { public static final float atan2(float y, float x) {
float add, mul; float add, mul;
if (x < 0.0f) { if (x < 0.0f) {
if (y < 0.0f) { if (y < 0.0f) {
x = -x; x = -x;
y = -y; y = -y;
mul = 1.0f; mul = 1.0f;
} else { } else {
x = -x; x = -x;
mul = -1.0f; mul = -1.0f;
} }
add = -3.141592653f; add = -3.141592653f;
} else { } else {
if (y < 0.0f) { if (y < 0.0f) {
@ -100,47 +98,47 @@ public class MathMan {
} else { } else {
mul = 1.0f; mul = 1.0f;
} }
add = 0.0f; add = 0.0f;
} }
final float invDiv = 1.0f / (((x < y) ? y : x) * INV_ATAN2_DIM_MINUS_1); float invDiv = 1.0f / (((x < y) ? y : x) * INV_ATAN2_DIM_MINUS_1);
final int xi = (int) (x * invDiv); int xi = (int) (x * invDiv);
final int yi = (int) (y * invDiv); int yi = (int) (y * invDiv);
return (atan2[(yi * ATAN2_DIM) + xi] + add) * mul; return (atan2[(yi * ATAN2_DIM) + xi] + add) * mul;
} }
public static float sqrtApprox(final float f) { public static float sqrtApprox(float f) {
return f * Float.intBitsToFloat(0x5f375a86 - (Float.floatToIntBits(f) >> 1)); return f * Float.intBitsToFloat(0x5f375a86 - (Float.floatToIntBits(f) >> 1));
} }
public static double sqrtApprox(final double d) { public static double sqrtApprox(double d) {
return Double.longBitsToDouble(((Double.doubleToLongBits(d) - (1l << 52)) >> 1) + (1l << 61)); return Double.longBitsToDouble(((Double.doubleToLongBits(d) - (1l << 52)) >> 1) + (1l << 61));
} }
public static float invSqrt(float x) { public static float invSqrt(float x) {
final float xhalf = 0.5f * x; float xhalf = 0.5f * x;
int i = Float.floatToIntBits(x); int i = Float.floatToIntBits(x);
i = 0x5f3759df - (i >> 1); i = 0x5f3759df - (i >> 1);
x = Float.intBitsToFloat(i); x = Float.intBitsToFloat(i);
x = x * (1.5f - (xhalf * x * x)); x = x * (1.5f - (xhalf * x * x));
return x; return x;
} }
public static int getPositiveId(final int i) { public static int getPositiveId(int i) {
if (i < 0) { if (i < 0) {
return (-i * 2) - 1; return (-i * 2) - 1;
} }
return i * 2; return i * 2;
} }
public static boolean isInteger(final String str) { public static boolean isInteger(String str) {
if (str == null) { if (str == null) {
return false; return false;
} }
final int length = str.length(); int length = str.length();
if (length == 0) { if (length == 0) {
return false; return false;
} }
@ -152,45 +150,45 @@ public class MathMan {
i = 1; i = 1;
} }
for (; i < length; i++) { for (; i < length; i++) {
final char c = str.charAt(i); char c = str.charAt(i);
if ((c <= '/') || (c >= ':')) { if ((c <= '/') || (c >= ':')) {
return false; return false;
} }
} }
return true; return true;
} }
public static double getSD(final double[] array, final double av) { public static double getSD(double[] array, double av) {
double sd = 0; double sd = 0;
for (final double element : array) { for (double element : array) {
sd += Math.pow(Math.abs(element - av), 2); sd += Math.pow(Math.abs(element - av), 2);
} }
return Math.sqrt(sd / array.length); return Math.sqrt(sd / array.length);
} }
public static double getSD(final int[] array, final double av) { public static double getSD(int[] array, double av) {
double sd = 0; double sd = 0;
for (final int element : array) { for (int element : array) {
sd += Math.pow(Math.abs(element - av), 2); sd += Math.pow(Math.abs(element - av), 2);
} }
return Math.sqrt(sd / array.length); return Math.sqrt(sd / array.length);
} }
public static int mod(final int x, final int y) { public static int mod(int x, int y) {
if (isPowerOfTwo(y)) { if (isPowerOfTwo(y)) {
return x & (y - 1); return x & (y - 1);
} }
return x % y; return x % y;
} }
public static int unsignedmod(final int x, final int y) { public static int unsignedmod(int x, int y) {
if (isPowerOfTwo(y)) { if (isPowerOfTwo(y)) {
return x & (y - 1); return x & (y - 1);
} }
return x % y; return x % y;
} }
public static boolean isPowerOfTwo(final int x) { public static boolean isPowerOfTwo(int x) {
return (x & (x - 1)) == 0; return (x & (x - 1)) == 0;
} }
} }

View File

@ -162,10 +162,10 @@ public abstract class SchematicHandler {
} }
} }
Dimension demensions = schematic.getSchematicDimension(); Dimension dimension = schematic.getSchematicDimension();
final int WIDTH = demensions.getX(); final int WIDTH = dimension.getX();
final int LENGTH = demensions.getZ(); final int LENGTH = dimension.getZ();
final int HEIGHT = demensions.getY(); final int HEIGHT = dimension.getY();
// Validate dimensions // Validate dimensions
RegionWrapper region = plot.getLargestRegion(); RegionWrapper region = plot.getLargestRegion();
if (((region.maxX - region.minX + xOffset + 1) < WIDTH) || ((region.maxZ - region.minZ + zOffset + 1) < LENGTH) || (HEIGHT if (((region.maxX - region.minX + xOffset + 1) < WIDTH) || ((region.maxZ - region.minZ + zOffset + 1) < LENGTH) || (HEIGHT
@ -468,8 +468,8 @@ public abstract class SchematicHandler {
} }
return schem; return schem;
} }
public abstract void restoreTag(CompoundTag ct, short x, short y, short z, Schematic schem); public abstract void restoreTag(CompoundTag ct, short x, short y, short z, Schematic schematic);
/** /**
* Get a schematic * Get a schematic
@ -616,11 +616,11 @@ public abstract class SchematicHandler {
* Create a compound tag from blocks * Create a compound tag from blocks
* - Untested * - Untested
* @param blocks * @param blocks
* @param blockdata * @param blockData
* @param dimension * @param dimension
* @return * @return
*/ */
public CompoundTag createTag(byte[] blocks, byte[] blockdata, Dimension dimension) { public CompoundTag createTag(byte[] blocks, byte[] blockData, Dimension dimension) {
HashMap<String, Tag> schematic = new HashMap<>(); HashMap<String, Tag> schematic = new HashMap<>();
schematic.put("Width", new ShortTag("Width", (short) dimension.getX())); schematic.put("Width", new ShortTag("Width", (short) dimension.getX()));
schematic.put("Length", new ShortTag("Length", (short) dimension.getZ())); schematic.put("Length", new ShortTag("Length", (short) dimension.getZ()));
@ -633,7 +633,7 @@ public abstract class SchematicHandler {
schematic.put("WEOffsetY", new IntTag("WEOffsetY", 0)); schematic.put("WEOffsetY", new IntTag("WEOffsetY", 0));
schematic.put("WEOffsetZ", new IntTag("WEOffsetZ", 0)); schematic.put("WEOffsetZ", new IntTag("WEOffsetZ", 0));
schematic.put("Blocks", new ByteArrayTag("Blocks", blocks)); schematic.put("Blocks", new ByteArrayTag("Blocks", blocks));
schematic.put("Data", new ByteArrayTag("Data", blockdata)); schematic.put("Data", new ByteArrayTag("Data", blockData));
schematic.put("Entities", new ListTag("Entities", CompoundTag.class, new ArrayList<Tag>())); schematic.put("Entities", new ListTag("Entities", CompoundTag.class, new ArrayList<Tag>()));
schematic.put("TileEntities", new ListTag("TileEntities", CompoundTag.class, new ArrayList<Tag>())); schematic.put("TileEntities", new ListTag("TileEntities", CompoundTag.class, new ArrayList<Tag>()));
return new CompoundTag("Schematic", schematic); return new CompoundTag("Schematic", schematic);

View File

@ -42,21 +42,6 @@ public class StringMan {
return count; return count;
} }
public Collection match(Collection col, String startsWith) {
if (col == null) {
return null;
}
startsWith = startsWith.toLowerCase();
Iterator iter = col.iterator();
while (iter.hasNext()) {
Object item = iter.next();
if (item == null || !item.toString().toLowerCase().startsWith(startsWith)) {
iter.remove();
}
}
return col;
}
public static String getString(Object obj) { public static String getString(Object obj) {
if (obj == null) { if (obj == null) {
return "null"; return "null";
@ -279,4 +264,19 @@ public class StringMan {
} }
return sb.toString(); return sb.toString();
} }
public Collection match(Collection col, String startsWith) {
if (col == null) {
return null;
}
startsWith = startsWith.toLowerCase();
Iterator iterator = col.iterator();
while (iterator.hasNext()) {
Object item = iterator.next();
if (item == null || !item.toString().toLowerCase().startsWith(startsWith)) {
iterator.remove();
}
}
return col;
}
} }

View File

@ -88,14 +88,14 @@ public abstract class TaskManager {
* @param whenDone * @param whenDone
*/ */
public static <T> void objectTask(Collection<T> objects, final RunnableVal<T> task, final Runnable whenDone) { public static <T> void objectTask(Collection<T> objects, final RunnableVal<T> task, final Runnable whenDone) {
final Iterator<T> iter = objects.iterator(); final Iterator<T> iterator = objects.iterator();
TaskManager.runTask(new Runnable() { TaskManager.runTask(new Runnable() {
@Override @Override
public void run() { public void run() {
long start = System.currentTimeMillis(); long start = System.currentTimeMillis();
boolean hasNext; boolean hasNext;
while ((hasNext = iter.hasNext()) && System.currentTimeMillis() - start < 5) { while ((hasNext = iterator.hasNext()) && System.currentTimeMillis() - start < 5) {
task.value = iter.next(); task.value = iterator.next();
task.run(); task.run();
} }
if (!hasNext) { if (!hasNext) {

View File

@ -26,7 +26,7 @@ public abstract class WorldUtil {
public abstract String getMainWorld(); public abstract String getMainWorld();
public abstract boolean isWorld(String worldname); public abstract boolean isWorld(String worldName);
public abstract String[] getSign(Location location); public abstract String[] getSign(Location location);

View File

@ -14,6 +14,7 @@ import com.intellectualcrafters.plot.util.MathMan;
import com.intellectualcrafters.plot.util.Permissions; import com.intellectualcrafters.plot.util.Permissions;
import com.intellectualcrafters.plot.util.StringComparison; import com.intellectualcrafters.plot.util.StringComparison;
import com.intellectualcrafters.plot.util.StringMan; import com.intellectualcrafters.plot.util.StringMan;
import java.io.IOException; import java.io.IOException;
import java.lang.annotation.Annotation; import java.lang.annotation.Annotation;
import java.lang.reflect.InvocationTargetException; import java.lang.reflect.InvocationTargetException;
@ -101,8 +102,8 @@ public abstract class Command {
} }
public String getFullId() { public String getFullId() {
if (parent != null && parent.getParent() != null) { if (this.parent != null && this.parent.getParent() != null) {
return parent.getFullId() + "." + id; return this.parent.getFullId() + "." + this.id;
} }
return this.id; return this.id;
} }
@ -118,16 +119,16 @@ public abstract class Command {
} }
public List<Command> getCommands(CommandCategory cat, PlotPlayer player) { public List<Command> getCommands(CommandCategory cat, PlotPlayer player) {
List<Command> cmds = getCommands(player); List<Command> commands = getCommands(player);
if (cat != null) { if (cat != null) {
Iterator<Command> iter = cmds.iterator(); Iterator<Command> iterator = commands.iterator();
while (iter.hasNext()) { while (iterator.hasNext()) {
if (iter.next().category != cat) { if (iterator.next().category != cat) {
iter.remove(); iterator.remove();
} }
} }
} }
return cmds; return commands;
} }
public List<Command> getCommands() { public List<Command> getCommands() {
@ -301,29 +302,27 @@ public abstract class Command {
} }
// Command recommendation // Command recommendation
MainUtil.sendMessage(player, C.NOT_VALID_SUBCOMMAND); MainUtil.sendMessage(player, C.NOT_VALID_SUBCOMMAND);
{ List<Command> commands = getCommands(player);
List<Command> cmds = getCommands(player); if (commands.isEmpty()) {
if (cmds.isEmpty()) { MainUtil.sendMessage(player, C.DID_YOU_MEAN, MainCommand.getInstance().help.getUsage());
MainUtil.sendMessage(player, C.DID_YOU_MEAN, MainCommand.getInstance().help.getUsage()); return;
return;
}
HashSet<String> setargs = new HashSet<>(args.length);
for (String arg : args) {
setargs.add(arg.toLowerCase());
}
String[] allargs = setargs.toArray(new String[setargs.size()]);
int best = 0;
for (Command current : cmds) {
int match = getMatch(allargs, current);
if (match > best) {
cmd = current;
}
}
if (cmd == null) {
cmd = new StringComparison<>(args[0], this.allCommands).getMatchObject();
}
MainUtil.sendMessage(player, C.DID_YOU_MEAN, cmd.getUsage());
} }
HashSet<String> setargs = new HashSet<>(args.length);
for (String arg : args) {
setargs.add(arg.toLowerCase());
}
String[] allargs = setargs.toArray(new String[setargs.size()]);
int best = 0;
for (Command current : commands) {
int match = getMatch(allargs, current);
if (match > best) {
cmd = current;
}
}
if (cmd == null) {
cmd = new StringComparison<>(args[0], this.allCommands).getMatchObject();
}
MainUtil.sendMessage(player, C.DID_YOU_MEAN, cmd.getUsage());
return; return;
} }
String[] newArgs = Arrays.copyOfRange(args, 1, args.length); String[] newArgs = Arrays.copyOfRange(args, 1, args.length);
@ -335,7 +334,7 @@ public abstract class Command {
public boolean checkArgs(PlotPlayer player, String[] args) { public boolean checkArgs(PlotPlayer player, String[] args) {
Argument<?>[] reqArgs = getRequiredArguments(); Argument<?>[] reqArgs = getRequiredArguments();
if ((reqArgs != null) && (reqArgs.length > 0)) { if (reqArgs != null && reqArgs.length > 0) {
boolean failed = args.length < reqArgs.length; boolean failed = args.length < reqArgs.length;
String[] baseSplit = getCommandString().split(" "); String[] baseSplit = getCommandString().split(" ");
String[] fullSplit = getUsage().split(" "); String[] fullSplit = getUsage().split(" ");

View File

@ -13,6 +13,7 @@ import com.sk89q.worldedit.entity.BaseEntity;
import com.sk89q.worldedit.entity.Entity; import com.sk89q.worldedit.entity.Entity;
import com.sk89q.worldedit.extent.AbstractDelegateExtent; import com.sk89q.worldedit.extent.AbstractDelegateExtent;
import com.sk89q.worldedit.extent.Extent; import com.sk89q.worldedit.extent.Extent;
import com.sk89q.worldedit.extent.NullExtent;
import com.sk89q.worldedit.util.Location; import com.sk89q.worldedit.util.Location;
import com.sk89q.worldedit.world.biome.BaseBiome; import com.sk89q.worldedit.world.biome.BaseBiome;
@ -81,7 +82,7 @@ public class ProcessedWEExtent extends AbstractDelegateExtent {
case 29: case 29:
case 33: case 33:
case 151: case 151:
case 178: { case 178:
if (this.BSblocked) { if (this.BSblocked) {
return false; return false;
} }
@ -96,7 +97,7 @@ public class ProcessedWEExtent extends AbstractDelegateExtent {
try { try {
Field field = AbstractDelegateExtent.class.getDeclaredField("extent"); Field field = AbstractDelegateExtent.class.getDeclaredField("extent");
field.setAccessible(true); field.setAccessible(true);
field.set(this.parent, new com.sk89q.worldedit.extent.NullExtent()); field.set(this.parent, new NullExtent());
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
} }
@ -107,8 +108,7 @@ public class ProcessedWEExtent extends AbstractDelegateExtent {
return super.setBlock(location, block); return super.setBlock(location, block);
} }
break; break;
} default:
default: {
int x = location.getBlockX(); int x = location.getBlockX();
int y = location.getBlockY(); int y = location.getBlockY();
int z = location.getBlockZ(); int z = location.getBlockZ();
@ -118,7 +118,7 @@ public class ProcessedWEExtent extends AbstractDelegateExtent {
try { try {
Field field = AbstractDelegateExtent.class.getDeclaredField("extent"); Field field = AbstractDelegateExtent.class.getDeclaredField("extent");
field.setAccessible(true); field.setAccessible(true);
field.set(this.parent, new com.sk89q.worldedit.extent.NullExtent()); field.set(this.parent, new NullExtent());
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
} }
@ -208,26 +208,23 @@ public class ProcessedWEExtent extends AbstractDelegateExtent {
case 189: case 189:
case 190: case 190:
case 191: case 191:
case 192: { case 192:
if (Settings.EXPERIMENTAL_FAST_ASYNC_WORLDEDIT) { if (Settings.EXPERIMENTAL_FAST_ASYNC_WORLDEDIT) {
SetQueue.IMP.setBlock(this.world, x, y, z, id); SetQueue.IMP.setBlock(this.world, x, y, z, id);
} else { } else {
super.setBlock(location, block); super.setBlock(location, block);
} }
break; break;
} default:
default: {
if (Settings.EXPERIMENTAL_FAST_ASYNC_WORLDEDIT) { if (Settings.EXPERIMENTAL_FAST_ASYNC_WORLDEDIT) {
SetQueue.IMP.setBlock(this.world, x, y, z, new PlotBlock((short) id, (byte) block.getData())); SetQueue.IMP.setBlock(this.world, x, y, z, new PlotBlock((short) id, (byte) block.getData()));
} else { } else {
super.setBlock(location, block); super.setBlock(location, block);
} }
break; break;
}
} }
return true; return true;
} }
}
} }
return false; return false;

View File

@ -315,11 +315,11 @@ public class SpongeMain implements IPlotMain {
} }
@Override @Override
public void setGenerator(String worldname) { public void setGenerator(String worldName) {
World world = SpongeUtil.getWorld(worldname); World world = SpongeUtil.getWorld(worldName);
if (world == null) { if (world == null) {
// create world // create world
ConfigurationSection worldConfig = PS.get().config.getConfigurationSection("worlds." + worldname); ConfigurationSection worldConfig = PS.get().config.getConfigurationSection("worlds." + worldName);
String manager = worldConfig.getString("generator.plugin", "PlotSquared"); String manager = worldConfig.getString("generator.plugin", "PlotSquared");
String generator = worldConfig.getString("generator.init", manager); String generator = worldConfig.getString("generator.init", manager);
@ -331,15 +331,15 @@ public class SpongeMain implements IPlotMain {
setup.type = type; setup.type = type;
setup.terrain = terrain; setup.terrain = terrain;
setup.step = new ConfigurationNode[0]; setup.step = new ConfigurationNode[0];
setup.world = worldname; setup.world = worldName;
SetupUtils.manager.setupWorld(setup); SetupUtils.manager.setupWorld(setup);
} else { } else {
throw new IllegalArgumentException("World already loaded: " + worldname + "???"); throw new IllegalArgumentException("World already loaded: " + worldName + "???");
} }
WorldGenerator wg = world.getWorldGenerator(); WorldGenerator wg = world.getWorldGenerator();
GenerationPopulator gen = wg.getBaseGenerationPopulator(); GenerationPopulator gen = wg.getBaseGenerationPopulator();
if (gen instanceof SpongePlotGenerator) { if (gen instanceof SpongePlotGenerator) {
PS.get().loadWorld(worldname, (SpongePlotGenerator) gen); PS.get().loadWorld(worldName, (SpongePlotGenerator) gen);
} else { } else {
throw new UnsupportedOperationException("NOT IMPLEMENTED YET!"); throw new UnsupportedOperationException("NOT IMPLEMENTED YET!");
} }

View File

@ -1,10 +1,9 @@
package com.plotsquared.sponge.events; package com.plotsquared.sponge.events;
import org.spongepowered.api.entity.living.player.Player;
import org.spongepowered.api.event.Cancellable;
import com.intellectualcrafters.plot.object.Location; import com.intellectualcrafters.plot.object.Location;
import com.intellectualcrafters.plot.object.Plot; import com.intellectualcrafters.plot.object.Plot;
import org.spongepowered.api.entity.living.player.Player;
import org.spongepowered.api.event.Cancellable;
public class PlayerTeleportToPlotEvent extends PlayerEvent implements Cancellable { public class PlayerTeleportToPlotEvent extends PlayerEvent implements Cancellable {
@ -13,43 +12,43 @@ public class PlayerTeleportToPlotEvent extends PlayerEvent implements Cancellabl
private boolean cancelled; private boolean cancelled;
/** /**
* PlayerTeleportToPlotEvent: Called when a player teleports to a plot * PlayerTeleportToPlotEvent: Called when a player teleports to a plot.
* *
* @param player That was teleported * @param player That was teleported
* @param from Start location * @param from Start location
* @param plot Plot to which the player was teleported * @param plot Plot to which the player was teleported
*/ */
public PlayerTeleportToPlotEvent(final Player player, final Location from, final Plot plot) { public PlayerTeleportToPlotEvent(Player player, Location from, Plot plot) {
super(player); super(player);
this.from = from; this.from = from;
this.plot = plot; this.plot = plot;
} }
/** /**
* Get the from location * Get the from location.
* *
* @return Location * @return Location
*/ */
public Location getFrom() { public Location getFrom() {
return from; return this.from;
} }
/** /**
* Get the plot involved * Get the plot involved.
* *
* @return Plot * @return Plot
*/ */
public Plot getPlot() { public Plot getPlot() {
return plot; return this.plot;
} }
@Override @Override
public boolean isCancelled() { public boolean isCancelled() {
return cancelled; return this.cancelled;
} }
@Override @Override
public void setCancelled(final boolean cancel) { public void setCancelled(boolean cancel) {
cancelled = cancel; this.cancelled = cancel;
} }
} }

View File

@ -25,9 +25,9 @@ public class SpongeAugmentedGenerator implements GenerationPopulator {
public static SpongeAugmentedGenerator get(World world) { public static SpongeAugmentedGenerator get(World world) {
WorldGenerator wg = world.getWorldGenerator(); WorldGenerator wg = world.getWorldGenerator();
List<GenerationPopulator> populators = wg.getGenerationPopulators(); List<GenerationPopulator> populators = wg.getGenerationPopulators();
for (GenerationPopulator poplator : populators) { for (GenerationPopulator populator : populators) {
if (poplator instanceof SpongeAugmentedGenerator) { if (populator instanceof SpongeAugmentedGenerator) {
return (SpongeAugmentedGenerator) poplator; return (SpongeAugmentedGenerator) populator;
} }
} }
if (generator == null) { if (generator == null) {
@ -38,12 +38,12 @@ public class SpongeAugmentedGenerator implements GenerationPopulator {
} }
@Override @Override
public void populate(final World world, final MutableBlockVolume terrain, final ImmutableBiomeArea biome) { public void populate(World world, MutableBlockVolume terrain, ImmutableBiomeArea biome) {
Vector3i min = terrain.getBlockMin(); Vector3i min = terrain.getBlockMin();
final int bx = min.getX(); int bx = min.getX();
final int bz = min.getZ(); int bz = min.getZ();
final int cx = bx >> 4; int cx = bx >> 4;
final int cz = bz >> 4; int cz = bz >> 4;
AugmentedUtils.generate(world.getName(), cx, cz, new LazyResult<PlotChunk<?>>() { AugmentedUtils.generate(world.getName(), cx, cz, new LazyResult<PlotChunk<?>>() {
@Override @Override
public PlotChunk<?> create() { public PlotChunk<?> create() {

Some files were not shown because too many files have changed in this diff Show More