From 5137b23357a6ea5cf5439706b67bd27fa0c45792 Mon Sep 17 00:00:00 2001 From: boy0001 Date: Sun, 13 Sep 2015 14:04:31 +1000 Subject: [PATCH] Hows this? --- .../configuration/Configuration.java | 13 +- .../configuration/ConfigurationOptions.java | 33 +- .../configuration/ConfigurationSection.java | 91 +- .../InvalidConfigurationException.java | 23 +- .../configuration/MemoryConfiguration.java | 83 +- .../MemoryConfigurationOptions.java | 21 +- .../configuration/MemorySection.java | 976 ++++---- .../configuration/file/FileConfiguration.java | 129 +- .../file/FileConfigurationOptions.java | 45 +- .../configuration/file/YamlConfiguration.java | 242 +- .../file/YamlConfigurationOptions.java | 53 +- .../configuration/file/YamlConstructor.java | 46 +- .../configuration/file/YamlRepresenter.java | 26 +- .../ConfigurationSerializable.java | 5 +- .../ConfigurationSerialization.java | 239 +- .../DelegateDeserialization.java | 3 +- .../serialization/SerializableAs.java | 3 +- .../jnbt/ByteArrayTag.java | 32 +- .../intellectualcrafters/jnbt/ByteTag.java | 26 +- .../jnbt/CompoundTag.java | 291 +-- .../jnbt/CompoundTagBuilder.java | 86 +- .../intellectualcrafters/jnbt/DoubleTag.java | 26 +- .../com/intellectualcrafters/jnbt/EndTag.java | 16 +- .../intellectualcrafters/jnbt/FloatTag.java | 26 +- .../jnbt/IntArrayTag.java | 32 +- .../com/intellectualcrafters/jnbt/IntTag.java | 26 +- .../intellectualcrafters/jnbt/ListTag.java | 298 +-- .../jnbt/ListTagBuilder.java | 56 +- .../intellectualcrafters/jnbt/LongTag.java | 26 +- .../jnbt/NBTConstants.java | 16 +- .../jnbt/NBTInputStream.java | 111 +- .../jnbt/NBTOutputStream.java | 104 +- .../intellectualcrafters/jnbt/NBTUtils.java | 139 +- .../intellectualcrafters/jnbt/ShortTag.java | 26 +- .../intellectualcrafters/jnbt/StringTag.java | 26 +- .../com/intellectualcrafters/jnbt/Tag.java | 23 +- .../com/intellectualcrafters/json/CDL.java | 143 +- .../com/intellectualcrafters/json/Cookie.java | 73 +- .../intellectualcrafters/json/CookieList.java | 23 +- .../com/intellectualcrafters/json/HTTP.java | 40 +- .../json/HTTPTokener.java | 38 +- .../intellectualcrafters/json/JSONArray.java | 456 ++-- .../json/JSONException.java | 18 +- .../com/intellectualcrafters/json/JSONML.java | 302 +-- .../intellectualcrafters/json/JSONObject.java | 950 +++----- .../intellectualcrafters/json/JSONString.java | 3 +- .../json/JSONStringer.java | 11 +- .../json/JSONTokener.java | 220 +- .../intellectualcrafters/json/JSONWriter.java | 144 +- .../com/intellectualcrafters/json/Kim.java | 157 +- .../intellectualcrafters/json/Property.java | 23 +- .../com/intellectualcrafters/json/XML.java | 310 +-- .../intellectualcrafters/json/XMLTokener.java | 187 +- .../intellectualcrafters/plot/IPlotMain.java | 73 +- .../com/intellectualcrafters/plot/PS.java | 1364 ++++------- .../plot/api/PlotAPI.java | 284 +-- .../plot/commands/Add.java | 58 +- .../plot/commands/Auto.java | 182 +- .../plot/commands/BO3.java | 43 +- .../plot/commands/Buy.java | 70 +- .../plot/commands/Chat.java | 8 +- .../plot/commands/Claim.java | 96 +- .../plot/commands/Clear.java | 80 +- .../plot/commands/Cluster.java | 426 ++-- .../plot/commands/CommandCategory.java | 13 +- .../plot/commands/CommandPermission.java | 13 +- .../plot/commands/Comment.java | 44 +- .../plot/commands/Condense.java | 115 +- .../plot/commands/Confirm.java | 20 +- .../plot/commands/Continue.java | 24 +- .../plot/commands/Copy.java | 43 +- .../plot/commands/CreateRoadSchematic.java | 16 +- .../plot/commands/Database.java | 97 +- .../plot/commands/Debug.java | 34 +- .../plot/commands/DebugAllowUnsafe.java | 21 +- .../plot/commands/DebugClaimTest.java | 95 +- .../plot/commands/DebugClear.java | 35 +- .../plot/commands/DebugExec.java | 311 +-- .../plot/commands/DebugFill.java | 116 +- .../plot/commands/DebugFixFlags.java | 32 +- .../plot/commands/DebugLoadTest.java | 15 +- .../plot/commands/DebugPaste.java | 33 +- .../plot/commands/DebugRoadRegen.java | 32 +- .../plot/commands/DebugSaveTest.java | 14 +- .../plot/commands/DebugUUID.java | 263 +- .../plot/commands/Delete.java | 60 +- .../plot/commands/Deny.java | 73 +- .../plot/commands/Done.java | 42 +- .../plot/commands/Download.java | 53 +- .../plot/commands/FlagCmd.java | 152 +- .../plot/commands/GenerateDocs.java | 99 +- .../plot/commands/Help.java | 14 +- .../plot/commands/Home.java | 72 +- .../plot/commands/Inbox.java | 158 +- .../plot/commands/Info.java | 164 +- .../plot/commands/Kick.java | 34 +- .../plot/commands/Limit.java | 27 +- .../plot/commands/Load.java | 147 +- .../plot/commands/MainCommand.java | 297 +-- .../plot/commands/Merge.java | 113 +- .../plot/commands/Move.java | 65 +- .../plot/commands/MusicSubcommand.java | 42 +- .../plot/commands/Purge.java | 107 +- .../plot/commands/Rate.java | 124 +- .../plot/commands/RegenAllRoads.java | 33 +- .../plot/commands/Reload.java | 25 +- .../plot/commands/Remove.java | 91 +- .../plot/commands/RequiredType.java | 15 +- .../plot/commands/Save.java | 58 +- .../plot/commands/SchematicCmd.java | 152 +- .../plot/commands/Set.java | 214 +- .../plot/commands/SetOwner.java | 74 +- .../plot/commands/Setup.java | 151 +- .../plot/commands/SubCommand.java | 10 +- .../plot/commands/Swap.java | 71 +- .../plot/commands/TP.java | 69 +- .../plot/commands/Target.java | 27 +- .../plot/commands/Template.java | 130 +- .../plot/commands/Toggle.java | 119 +- .../plot/commands/Trim.java | 135 +- .../plot/commands/Trust.java | 67 +- .../plot/commands/Unclaim.java | 44 +- .../plot/commands/Undeny.java | 66 +- .../plot/commands/Unlink.java | 46 +- .../plot/commands/Untrust.java | 55 +- .../plot/commands/Update.java | 36 +- .../plot/commands/Visit.java | 96 +- .../plot/commands/WE_Anywhere.java | 10 +- .../plot/commands/list.java | 460 ++-- .../plot/commands/plugin.java | 15 +- .../intellectualcrafters/plot/config/C.java | 165 +- .../plot/config/Configuration.java | 223 +- .../plot/config/ConfigurationNode.java | 71 +- .../plot/config/Settings.java | 20 +- .../plot/database/AbstractDB.java | 95 +- .../plot/database/DBFunc.java | 315 ++- .../plot/database/Database.java | 17 +- .../plot/database/MySQL.java | 57 +- .../plot/database/SQLManager.java | 2160 ++++++----------- .../plot/database/SQLite.java | 70 +- .../plot/database/StmtMod.java | 29 +- .../plot/flag/AbstractFlag.java | 89 +- .../intellectualcrafters/plot/flag/Flag.java | 84 +- .../plot/flag/FlagManager.java | 343 ++- .../plot/flag/FlagValue.java | 558 ++--- .../plot/generator/ClassicPlotManager.java | 162 +- .../plot/generator/ClassicPlotWorld.java | 18 +- .../plot/generator/GeneratorManager.java | 5 +- .../plot/generator/GridPlotManager.java | 3 +- .../plot/generator/GridPlotWorld.java | 8 +- .../plot/generator/HybridPlotManager.java | 128 +- .../plot/generator/HybridPlotWorld.java | 187 +- .../plot/generator/HybridUtils.java | 246 +- .../plot/generator/PlotGenerator.java | 24 +- .../plot/generator/SquarePlotManager.java | 127 +- .../plot/generator/SquarePlotWorld.java | 16 +- .../intellectualcrafters/plot/object/BO3.java | 45 +- .../plot/object/BlockLoc.java | 63 +- .../plot/object/BlockWrapper.java | 8 +- .../plot/object/ChunkLoc.java | 30 +- .../plot/object/CmdInstance.java | 8 +- .../plot/object/ConsolePlayer.java | 167 +- .../plot/object/FileBytes.java | 8 +- .../plot/object/LazyBlock.java | 8 +- .../plot/object/Location.java | 201 +- .../plot/object/OfflinePlotPlayer.java | 9 +- .../plot/object/Plot.java | 597 ++--- .../plot/object/PlotAnalysis.java | 362 ++- .../plot/object/PlotBlock.java | 43 +- .../plot/object/PlotCluster.java | 75 +- .../plot/object/PlotClusterId.java | 8 +- .../plot/object/PlotFilter.java | 11 +- .../plot/object/PlotHandler.java | 107 +- .../plot/object/PlotId.java | 108 +- .../plot/object/PlotInventory.java | 83 +- .../plot/object/PlotItemStack.java | 13 +- .../plot/object/PlotLoc.java | 30 +- .../plot/object/PlotManager.java | 48 +- .../plot/object/PlotMessage.java | 55 +- .../plot/object/PlotPlayer.java | 135 +- .../plot/object/PlotSettings.java | 123 +- .../plot/object/PlotWorld.java | 116 +- .../plot/object/PseudoRandom.java | 22 +- .../plot/object/Rating.java | 82 +- .../plot/object/RegionWrapper.java | 23 +- .../plot/object/RunnableVal.java | 5 +- .../plot/object/SetupObject.java | 21 +- .../plot/object/StringWrapper.java | 52 +- .../plot/object/comment/CommentInbox.java | 19 +- .../plot/object/comment/InboxOwner.java | 90 +- .../plot/object/comment/InboxPublic.java | 86 +- .../plot/object/comment/InboxReport.java | 73 +- .../plot/object/comment/PlotComment.java | 8 +- .../plot/object/entity/AgeableStats.java | 3 +- .../plot/object/entity/ArmorStandStats.java | 3 +- .../plot/object/entity/EntityBaseStats.java | 3 +- .../plot/object/entity/HorseStats.java | 3 +- .../plot/object/schematic/ItemType.java | 43 +- .../plot/object/schematic/PlotItem.java | 8 +- .../plot/util/AbstractTitle.java | 17 +- .../plot/util/BO3Handler.java | 188 +- .../plot/util/BlockManager.java | 68 +- .../plot/util/BlockUpdateUtil.java | 5 +- .../plot/util/ChatManager.java | 17 +- .../plot/util/ChunkManager.java | 87 +- .../plot/util/ClusterManager.java | 272 +-- .../plot/util/CmdConfirm.java | 41 +- .../plot/util/CommentManager.java | 66 +- .../plot/util/ConsoleColors.java | 53 +- .../plot/util/EconHandler.java | 32 +- .../plot/util/EventUtil.java | 309 ++- .../plot/util/ExpireManager.java | 205 +- .../plot/util/HastebinUtility.java | 43 +- .../plot/util/InventoryUtil.java | 15 +- .../intellectualcrafters/plot/util/Lag.java | 37 +- .../plot/util/MainUtil.java | 1571 +++++------- .../plot/util/MathMan.java | 189 +- .../plot/util/NbtFactory.java | 815 +++---- .../plot/util/Permissions.java | 65 +- .../plot/util/PlotGamemode.java | 8 +- .../plot/util/PlotWeather.java | 7 +- .../plot/util/ReflectionUtils.java | 576 ++--- .../plot/util/RegExUtil.java | 12 +- .../plot/util/SchematicHandler.java | 531 ++-- .../plot/util/SetBlockQueue.java | 356 ++- .../plot/util/SetupUtils.java | 15 +- .../plot/util/StringComparison.java | 90 +- .../plot/util/StringMan.java | 246 +- .../plot/util/TaskManager.java | 87 +- .../plot/util/UUIDHandler.java | 101 +- .../plot/util/UUIDHandlerImplementation.java | 214 +- .../plot/util/helpmenu/HelpMenu.java | 48 +- .../plot/util/helpmenu/HelpObject.java | 27 +- .../plot/util/helpmenu/HelpPage.java | 35 +- .../plot/uuid/UUIDWrapper.java | 11 +- .../com/plotsquared/bukkit/BukkitMain.java | 510 ++-- .../plotsquared/bukkit/chat/ArrayWrapper.java | 55 +- .../plotsquared/bukkit/chat/FancyMessage.java | 590 ++--- .../bukkit/chat/JsonRepresentedObject.java | 7 +- .../plotsquared/bukkit/chat/JsonString.java | 35 +- .../plotsquared/bukkit/chat/MessagePart.java | 115 +- .../plotsquared/bukkit/chat/Reflection.java | 131 +- .../bukkit/chat/TextualComponent.java | 220 +- .../database/plotme/APlotMeConnector.java | 81 +- .../plotme/ClassicPlotMeConnector.java | 230 +- .../database/plotme/LikePlotMeConverter.java | 269 +- .../database/plotme/PlotMeConnector_017.java | 141 +- .../bukkit/events/ClusterFlagRemoveEvent.java | 38 +- .../bukkit/events/PlayerClaimPlotEvent.java | 38 +- .../bukkit/events/PlayerEnterPlotEvent.java | 23 +- .../bukkit/events/PlayerLeavePlotEvent.java | 25 +- .../bukkit/events/PlayerPlotDeniedEvent.java | 35 +- .../bukkit/events/PlayerPlotHelperEvent.java | 35 +- .../bukkit/events/PlayerPlotTrustedEvent.java | 35 +- .../events/PlayerTeleportToPlotEvent.java | 38 +- .../bukkit/events/PlotClearEvent.java | 38 +- .../bukkit/events/PlotDeleteEvent.java | 28 +- .../plotsquared/bukkit/events/PlotEvent.java | 17 +- .../bukkit/events/PlotFlagAddEvent.java | 35 +- .../bukkit/events/PlotFlagRemoveEvent.java | 35 +- .../bukkit/events/PlotMergeEvent.java | 43 +- .../bukkit/events/PlotRateEvent.java | 37 +- .../bukkit/events/PlotUnlinkEvent.java | 38 +- .../bukkit/generator/AugmentedPopulator.java | 206 +- .../generator/BukkitGeneratorWrapper.java | 90 +- .../bukkit/generator/BukkitPlotGenerator.java | 146 +- .../bukkit/generator/BukkitPlotPopulator.java | 73 +- .../bukkit/generator/HybridGen.java | 205 +- .../bukkit/generator/HybridPop.java | 178 +- .../bukkit/listeners/ChunkListener.java | 235 +- .../bukkit/listeners/ForceFieldListener.java | 85 +- .../listeners/PlayerBlockEventType.java | 15 +- .../bukkit/listeners/PlayerEvents.java | 1878 ++++++-------- .../bukkit/listeners/PlayerEvents_1_8.java | 123 +- .../bukkit/listeners/PlayerEvents_1_8_3.java | 35 +- .../bukkit/listeners/PlotPlusListener.java | 160 +- .../bukkit/listeners/TNTListener.java | 90 +- .../bukkit/listeners/WorldEvents.java | 32 +- .../listeners/worldedit/WEListener.java | 270 +-- .../bukkit/object/BukkitLazyBlock.java | 47 +- .../bukkit/object/BukkitOfflinePlayer.java | 30 +- .../bukkit/object/BukkitPlayer.java | 218 +- .../bukkit/object/entity/EntityWrapper.java | 370 ++- .../object/entity/LivingEntityStats.java | 3 +- .../bukkit/object/entity/TameableStats.java | 3 +- .../bukkit/titles/DefaultTitle.java | 13 +- .../bukkit/titles/DefaultTitleManager.java | 220 +- .../titles/DefaultTitleManager_183.java | 222 +- .../bukkit/titles/DefaultTitle_183.java | 13 +- .../plotsquared/bukkit/titles/HackTitle.java | 13 +- .../bukkit/titles/HackTitleManager.java | 258 +- .../bukkit/util/BukkitChatManager.java | 50 +- .../bukkit/util/BukkitChunkManager.java | 1200 ++++----- .../bukkit/util/BukkitCommand.java | 69 +- .../bukkit/util/BukkitEconHandler.java | 80 +- .../bukkit/util/BukkitEventUtil.java | 98 +- .../bukkit/util/BukkitHybridUtils.java | 236 +- .../bukkit/util/BukkitInventoryUtil.java | 91 +- .../bukkit/util/BukkitPlainChatManager.java | 43 +- .../bukkit/util/BukkitPlayerFunctions.java | 79 +- .../bukkit/util/BukkitSchematicHandler.java | 111 +- .../bukkit/util/BukkitSetBlockManager.java | 15 +- .../bukkit/util/BukkitSetupUtils.java | 124 +- .../bukkit/util/BukkitTaskManager.java | 39 +- .../plotsquared/bukkit/util/BukkitUtil.java | 278 +-- .../com/plotsquared/bukkit/util/Metrics.java | 386 ++- .../bukkit/util/OfflinePlayerUtil.java | 68 +- .../bukkit/util/ReflectionUtil.java | 184 +- .../plotsquared/bukkit/util/SendChunk.java | 69 +- .../plotsquared/bukkit/util/SetBlockFast.java | 58 +- .../bukkit/util/SetBlockFast_1_8.java | 140 +- .../plotsquared/bukkit/util/SetBlockSlow.java | 31 +- .../com/plotsquared/bukkit/util/SetGenCB.java | 25 +- .../bukkit/util/WorldEditSchematic.java | 13 +- .../bukkit/uuid/DefaultUUIDWrapper.java | 29 +- .../bukkit/uuid/FileUUIDHandler.java | 181 +- .../bukkit/uuid/LowerOfflineUUIDWrapper.java | 96 +- .../bukkit/uuid/OfflineUUIDWrapper.java | 96 +- .../bukkit/uuid/SQLUUIDHandler.java | 221 +- .../general/commands/Argument.java | 89 +- .../plotsquared/general/commands/Command.java | 159 +- .../general/commands/CommandCaller.java | 9 +- .../general/commands/CommandDeclaration.java | 17 +- .../commands/CommandHandlingOutput.java | 29 +- .../general/commands/CommandManager.java | 133 +- .../plotsquared/listener/ExtentWrapper.java | 10 +- .../listener/HeightLimitExtent.java | 21 +- .../com/plotsquared/listener/NullExtent.java | 60 +- .../plotsquared/listener/PlotListener.java | 193 +- .../listener/ProcessedWEExtent.java | 114 +- .../com/plotsquared/listener/WEExtent.java | 35 +- .../com/plotsquared/listener/WEManager.java | 61 +- .../plotsquared/listener/WESubscriber.java | 100 +- .../object/schematic/StateWrapper.java | 81 +- .../plotsquared/sponge/SpongeHybridUtils.java | 56 +- .../com/plotsquared/sponge/SpongeMain.java | 537 ++-- .../sponge/SpongeSchematicHandler.java | 109 +- .../plotsquared/sponge/SpongeSetupUtils.java | 64 +- .../sponge/events/ClusterFlagRemoveEvent.java | 30 +- .../sponge/events/PlayerClaimPlotEvent.java | 30 +- .../sponge/events/PlayerEnterPlotEvent.java | 15 +- .../sponge/events/PlayerEvent.java | 17 +- .../sponge/events/PlayerLeavePlotEvent.java | 15 +- .../sponge/events/PlayerPlotDeniedEvent.java | 25 +- .../sponge/events/PlayerPlotHelperEvent.java | 25 +- .../sponge/events/PlayerPlotTrustedEvent.java | 25 +- .../events/PlayerTeleportToPlotEvent.java | 30 +- .../sponge/events/PlotClearEvent.java | 28 +- .../sponge/events/PlotDeleteEvent.java | 18 +- .../plotsquared/sponge/events/PlotEvent.java | 17 +- .../sponge/events/PlotFlagAddEvent.java | 23 +- .../sponge/events/PlotFlagRemoveEvent.java | 23 +- .../sponge/events/PlotMergeEvent.java | 33 +- .../sponge/events/PlotRateEvent.java | 23 +- .../sponge/events/PlotUnlinkEvent.java | 28 +- .../sponge/generator/AugmentedPopulator.java | 249 +- .../generator/SpongeBasicBiomeProvider.java | 30 +- .../sponge/generator/SpongeBasicGen.java | 95 +- .../sponge/generator/SpongeBasicPop.java | 115 +- .../generator/SpongeGeneratorWrapper.java | 93 +- .../sponge/generator/SpongePlotGenerator.java | 59 +- .../sponge/generator/SpongePlotPopulator.java | 52 +- .../sponge/generator/WorldModify.java | 42 +- .../sponge/listener/MainListener.java | 755 +++--- .../sponge/object/SpongePlayer.java | 183 +- .../plotsquared/sponge/util/KillRoadMobs.java | 6 +- .../sponge/util/SpongeBlockManager.java | 198 +- .../sponge/util/SpongeChatManager.java | 53 +- .../sponge/util/SpongeChunkManager.java | 141 +- .../sponge/util/SpongeCommand.java | 49 +- .../sponge/util/SpongeEventUtil.java | 96 +- .../sponge/util/SpongeInventoryUtil.java | 80 +- .../sponge/util/SpongeMetrics.java | 347 ++- .../sponge/util/SpongeTaskManager.java | 47 +- .../sponge/util/SpongeTitleManager.java | 16 +- .../plotsquared/sponge/util/SpongeUtil.java | 92 +- .../uuid/SpongeLowerOfflineUUIDWrapper.java | 81 +- .../sponge/uuid/SpongeOnlineUUIDWrapper.java | 65 +- .../sponge/uuid/SpongeUUIDHandler.java | 38 +- 379 files changed, 18471 insertions(+), 28437 deletions(-) diff --git a/src/main/java/com/intellectualcrafters/configuration/Configuration.java b/src/main/java/com/intellectualcrafters/configuration/Configuration.java index 58e826d78..ffe1935c6 100644 --- a/src/main/java/com/intellectualcrafters/configuration/Configuration.java +++ b/src/main/java/com/intellectualcrafters/configuration/Configuration.java @@ -5,8 +5,7 @@ import java.util.Map; /** * Represents a source of configurable options and settings */ -public interface Configuration extends ConfigurationSection -{ +public interface Configuration extends ConfigurationSection { /** * Sets the default value of the given path as provided. *

@@ -23,7 +22,7 @@ public interface Configuration extends ConfigurationSection */ @Override public void addDefault(final String path, final Object value); - + /** * Sets the default values of the given paths as provided. *

@@ -35,7 +34,7 @@ public interface Configuration extends ConfigurationSection * @throws IllegalArgumentException Thrown if defaults is null. */ public void addDefaults(final Map defaults); - + /** * Sets the default values of the given paths as provided. *

@@ -52,7 +51,7 @@ public interface Configuration extends ConfigurationSection * @throws IllegalArgumentException Thrown if defaults is null or this. */ public void addDefaults(final Configuration defaults); - + /** * Sets the source of all default values for this {@link Configuration}. *

@@ -63,7 +62,7 @@ public interface Configuration extends ConfigurationSection * @throws IllegalArgumentException Thrown if defaults is null or this. */ public void setDefaults(final Configuration defaults); - + /** * Gets the source {@link Configuration} for this configuration. *

@@ -74,7 +73,7 @@ public interface Configuration extends ConfigurationSection * @return Configuration source for default values, or null if none exist. */ public Configuration getDefaults(); - + /** * Gets the {@link ConfigurationOptions} for this {@link Configuration}. *

diff --git a/src/main/java/com/intellectualcrafters/configuration/ConfigurationOptions.java b/src/main/java/com/intellectualcrafters/configuration/ConfigurationOptions.java index 3768af587..2c7766890 100644 --- a/src/main/java/com/intellectualcrafters/configuration/ConfigurationOptions.java +++ b/src/main/java/com/intellectualcrafters/configuration/ConfigurationOptions.java @@ -4,27 +4,24 @@ package com.intellectualcrafters.configuration; * Various settings for controlling the input and output of a {@link * Configuration} */ -public class ConfigurationOptions -{ +public class ConfigurationOptions { private char pathSeparator = '.'; private boolean copyDefaults = false; private final Configuration configuration; - - protected ConfigurationOptions(final Configuration configuration) - { + + protected ConfigurationOptions(final Configuration configuration) { this.configuration = configuration; } - + /** * Returns the {@link Configuration} that this object is responsible for. * * @return Parent configuration */ - public Configuration configuration() - { + public Configuration configuration() { return configuration; } - + /** * Gets the char that will be used to separate {@link * ConfigurationSection}s @@ -34,11 +31,10 @@ public class ConfigurationOptions * * @return Path separator */ - public char pathSeparator() - { + public char pathSeparator() { return pathSeparator; } - + /** * Sets the char that will be used to separate {@link * ConfigurationSection}s @@ -49,12 +45,11 @@ public class ConfigurationOptions * @param value Path separator * @return This object, for chaining */ - public ConfigurationOptions pathSeparator(final char value) - { + public ConfigurationOptions pathSeparator(final char value) { pathSeparator = value; return this; } - + /** * Checks if the {@link Configuration} should copy values from its default * {@link Configuration} directly. @@ -69,11 +64,10 @@ public class ConfigurationOptions * * @return Whether or not defaults are directly copied */ - public boolean copyDefaults() - { + public boolean copyDefaults() { return copyDefaults; } - + /** * Sets if the {@link Configuration} should copy values from its default * {@link Configuration} directly. @@ -89,8 +83,7 @@ public class ConfigurationOptions * @param value Whether or not defaults are directly copied * @return This object, for chaining */ - public ConfigurationOptions copyDefaults(final boolean value) - { + public ConfigurationOptions copyDefaults(final boolean value) { copyDefaults = value; return this; } diff --git a/src/main/java/com/intellectualcrafters/configuration/ConfigurationSection.java b/src/main/java/com/intellectualcrafters/configuration/ConfigurationSection.java index d2f3dbd1b..c75cc3ae8 100644 --- a/src/main/java/com/intellectualcrafters/configuration/ConfigurationSection.java +++ b/src/main/java/com/intellectualcrafters/configuration/ConfigurationSection.java @@ -7,8 +7,7 @@ import java.util.Set; /** * Represents a section of a {@link Configuration} */ -public interface ConfigurationSection -{ +public interface ConfigurationSection { /** * Gets a set containing all keys in this section. *

@@ -24,7 +23,7 @@ public interface ConfigurationSection * @return Set of keys contained within this ConfigurationSection. */ public Set getKeys(final boolean deep); - + /** * Gets a Map containing all keys and their values for this section. *

@@ -40,7 +39,7 @@ public interface ConfigurationSection * @return Map of keys and values of this section. */ public Map getValues(final boolean deep); - + /** * Checks if this {@link ConfigurationSection} contains the given path. *

@@ -53,7 +52,7 @@ public interface ConfigurationSection * @throws IllegalArgumentException Thrown when path is null. */ public boolean contains(final String path); - + /** * Checks if this {@link ConfigurationSection} has a value set for the * given path. @@ -67,7 +66,7 @@ public interface ConfigurationSection * @throws IllegalArgumentException Thrown when path is null. */ public boolean isSet(final String path); - + /** * Gets the path of this {@link ConfigurationSection} from its root {@link * Configuration} @@ -84,7 +83,7 @@ public interface ConfigurationSection * @return Path of this section relative to its root */ public String getCurrentPath(); - + /** * Gets the name of this individual {@link ConfigurationSection}, in the * path. @@ -95,7 +94,7 @@ public interface ConfigurationSection * @return Name of this section */ public String getName(); - + /** * Gets the root {@link Configuration} that contains this {@link * ConfigurationSection} @@ -109,7 +108,7 @@ public interface ConfigurationSection * @return Root configuration containing this section. */ public Configuration getRoot(); - + /** * Gets the parent {@link ConfigurationSection} that directly contains * this {@link ConfigurationSection}. @@ -122,7 +121,7 @@ public interface ConfigurationSection * @return Parent section containing this section. */ public ConfigurationSection getParent(); - + /** * Gets the requested Object by path. *

@@ -134,7 +133,7 @@ public interface ConfigurationSection * @return Requested Object. */ public Object get(final String path); - + /** * Gets the requested Object by path, returning a default value if not * found. @@ -148,7 +147,7 @@ public interface ConfigurationSection * @return Requested Object. */ public Object get(final String path, final Object def); - + /** * Sets the specified path to the given value. *

@@ -164,7 +163,7 @@ public interface ConfigurationSection * @param value New value to set the path to. */ public void set(final String path, final Object value); - + /** * Creates an empty {@link ConfigurationSection} at the specified path. *

@@ -176,7 +175,7 @@ public interface ConfigurationSection * @return Newly created section */ public ConfigurationSection createSection(final String path); - + /** * Creates a {@link ConfigurationSection} at the specified path, with * specified values. @@ -190,7 +189,7 @@ public interface ConfigurationSection * @return Newly created section */ public ConfigurationSection createSection(final String path, final Map map); - + // Primitives /** * Gets the requested String by path. @@ -203,7 +202,7 @@ public interface ConfigurationSection * @return Requested String. */ public String getString(final String path); - + /** * Gets the requested String by path, returning a default value if not * found. @@ -218,7 +217,7 @@ public interface ConfigurationSection * @return Requested String. */ public String getString(final String path, final String def); - + /** * Checks if the specified path is a String. *

@@ -231,7 +230,7 @@ public interface ConfigurationSection * @return Whether or not the specified path is a String. */ public boolean isString(final String path); - + /** * Gets the requested int by path. *

@@ -243,7 +242,7 @@ public interface ConfigurationSection * @return Requested int. */ public int getInt(final String path); - + /** * Gets the requested int by path, returning a default value if not found. *

@@ -257,7 +256,7 @@ public interface ConfigurationSection * @return Requested int. */ public int getInt(final String path, final int def); - + /** * Checks if the specified path is an int. *

@@ -270,7 +269,7 @@ public interface ConfigurationSection * @return Whether or not the specified path is an int. */ public boolean isInt(final String path); - + /** * Gets the requested boolean by path. *

@@ -282,7 +281,7 @@ public interface ConfigurationSection * @return Requested boolean. */ public boolean getBoolean(final String path); - + /** * Gets the requested boolean by path, returning a default value if not * found. @@ -297,7 +296,7 @@ public interface ConfigurationSection * @return Requested boolean. */ public boolean getBoolean(final String path, final boolean def); - + /** * Checks if the specified path is a boolean. *

@@ -310,7 +309,7 @@ public interface ConfigurationSection * @return Whether or not the specified path is a boolean. */ public boolean isBoolean(final String path); - + /** * Gets the requested double by path. *

@@ -322,7 +321,7 @@ public interface ConfigurationSection * @return Requested double. */ public double getDouble(final String path); - + /** * Gets the requested double by path, returning a default value if not * found. @@ -337,7 +336,7 @@ public interface ConfigurationSection * @return Requested double. */ public double getDouble(final String path, final double def); - + /** * Checks if the specified path is a double. *

@@ -350,7 +349,7 @@ public interface ConfigurationSection * @return Whether or not the specified path is a double. */ public boolean isDouble(final String path); - + /** * Gets the requested long by path. *

@@ -362,7 +361,7 @@ public interface ConfigurationSection * @return Requested long. */ public long getLong(final String path); - + /** * Gets the requested long by path, returning a default value if not * found. @@ -377,7 +376,7 @@ public interface ConfigurationSection * @return Requested long. */ public long getLong(final String path, final long def); - + /** * Checks if the specified path is a long. *

@@ -390,7 +389,7 @@ public interface ConfigurationSection * @return Whether or not the specified path is a long. */ public boolean isLong(final String path); - + // Java /** * Gets the requested List by path. @@ -403,7 +402,7 @@ public interface ConfigurationSection * @return Requested List. */ public List getList(final String path); - + /** * Gets the requested List by path, returning a default value if not * found. @@ -418,7 +417,7 @@ public interface ConfigurationSection * @return Requested List. */ public List getList(final String path, final List def); - + /** * Checks if the specified path is a List. *

@@ -431,7 +430,7 @@ public interface ConfigurationSection * @return Whether or not the specified path is a List. */ public boolean isList(final String path); - + /** * Gets the requested List of String by path. *

@@ -446,7 +445,7 @@ public interface ConfigurationSection * @return Requested List of String. */ public List getStringList(final String path); - + /** * Gets the requested List of Integer by path. *

@@ -461,7 +460,7 @@ public interface ConfigurationSection * @return Requested List of Integer. */ public List getIntegerList(final String path); - + /** * Gets the requested List of Boolean by path. *

@@ -476,7 +475,7 @@ public interface ConfigurationSection * @return Requested List of Boolean. */ public List getBooleanList(final String path); - + /** * Gets the requested List of Double by path. *

@@ -491,7 +490,7 @@ public interface ConfigurationSection * @return Requested List of Double. */ public List getDoubleList(final String path); - + /** * Gets the requested List of Float by path. *

@@ -506,7 +505,7 @@ public interface ConfigurationSection * @return Requested List of Float. */ public List getFloatList(final String path); - + /** * Gets the requested List of Long by path. *

@@ -521,7 +520,7 @@ public interface ConfigurationSection * @return Requested List of Long. */ public List getLongList(final String path); - + /** * Gets the requested List of Byte by path. *

@@ -536,7 +535,7 @@ public interface ConfigurationSection * @return Requested List of Byte. */ public List getByteList(final String path); - + /** * Gets the requested List of Character by path. *

@@ -551,7 +550,7 @@ public interface ConfigurationSection * @return Requested List of Character. */ public List getCharacterList(final String path); - + /** * Gets the requested List of Short by path. *

@@ -566,7 +565,7 @@ public interface ConfigurationSection * @return Requested List of Short. */ public List getShortList(final String path); - + /** * Gets the requested List of Maps by path. *

@@ -581,7 +580,7 @@ public interface ConfigurationSection * @return Requested List of Maps. */ public List> getMapList(final String path); - + /** * Gets the requested ConfigurationSection by path. *

@@ -594,7 +593,7 @@ public interface ConfigurationSection * @return Requested ConfigurationSection. */ public ConfigurationSection getConfigurationSection(final String path); - + /** * Checks if the specified path is a ConfigurationSection. *

@@ -608,7 +607,7 @@ public interface ConfigurationSection * @return Whether or not the specified path is a ConfigurationSection. */ public boolean isConfigurationSection(final String path); - + /** * Gets the equivalent {@link ConfigurationSection} from the default * {@link Configuration} defined in {@link #getRoot()}. @@ -620,7 +619,7 @@ public interface ConfigurationSection * @return Equivalent section in root configuration */ public ConfigurationSection getDefaultSection(); - + /** * Sets the default value in the root at the given path as provided. *

diff --git a/src/main/java/com/intellectualcrafters/configuration/InvalidConfigurationException.java b/src/main/java/com/intellectualcrafters/configuration/InvalidConfigurationException.java index c7769dd7d..00791c3ce 100644 --- a/src/main/java/com/intellectualcrafters/configuration/InvalidConfigurationException.java +++ b/src/main/java/com/intellectualcrafters/configuration/InvalidConfigurationException.java @@ -4,38 +4,34 @@ package com.intellectualcrafters.configuration; * Exception thrown when attempting to load an invalid {@link Configuration} */ @SuppressWarnings("serial") -public class InvalidConfigurationException extends Exception -{ - +public class InvalidConfigurationException extends Exception { + /** * Creates a new instance of InvalidConfigurationException without a * message or cause. */ - public InvalidConfigurationException() - {} - + public InvalidConfigurationException() {} + /** * Constructs an instance of InvalidConfigurationException with the * specified message. * * @param msg The details of the exception. */ - public InvalidConfigurationException(final String msg) - { + public InvalidConfigurationException(final String msg) { super(msg); } - + /** * Constructs an instance of InvalidConfigurationException with the * specified cause. * * @param cause The cause of the exception. */ - public InvalidConfigurationException(final Throwable cause) - { + public InvalidConfigurationException(final Throwable cause) { super(cause); } - + /** * Constructs an instance of InvalidConfigurationException with the * specified message and cause. @@ -43,8 +39,7 @@ public class InvalidConfigurationException extends Exception * @param cause The cause of the exception. * @param msg The details of the exception. */ - public InvalidConfigurationException(final String msg, final Throwable cause) - { + public InvalidConfigurationException(final String msg, final Throwable cause) { super(msg, cause); } } diff --git a/src/main/java/com/intellectualcrafters/configuration/MemoryConfiguration.java b/src/main/java/com/intellectualcrafters/configuration/MemoryConfiguration.java index 5448f837a..d22312cae 100644 --- a/src/main/java/com/intellectualcrafters/configuration/MemoryConfiguration.java +++ b/src/main/java/com/intellectualcrafters/configuration/MemoryConfiguration.java @@ -7,17 +7,15 @@ import java.util.Map; * from any source, and stores all values in memory only. * This is useful for temporary Configurations for providing defaults. */ -public class MemoryConfiguration extends MemorySection implements Configuration -{ +public class MemoryConfiguration extends MemorySection implements Configuration { protected Configuration defaults; protected MemoryConfigurationOptions options; - + /** * Creates an empty {@link MemoryConfiguration} with no default values. */ - public MemoryConfiguration() - {} - + public MemoryConfiguration() {} + /** * Creates an empty {@link MemoryConfiguration} using the specified {@link * Configuration} as a source for all default values. @@ -25,70 +23,67 @@ public class MemoryConfiguration extends MemorySection implements Configuration * @param defaults Default value provider * @throws IllegalArgumentException Thrown if defaults is null */ - public MemoryConfiguration(final Configuration defaults) - { + public MemoryConfiguration(final Configuration defaults) { this.defaults = defaults; } - + @Override - public void addDefault(final String path, final Object value) - { - if (path == null) { throw new NullPointerException("Path may not be null"); } - if (defaults == null) - { + public void addDefault(final String path, final Object value) { + if (path == null) { + throw new NullPointerException("Path may not be null"); + } + if (defaults == null) { defaults = new MemoryConfiguration(); } - + defaults.set(path, value); } - + @Override - public void addDefaults(final Map defaults) - { - if (defaults == null) { throw new NullPointerException("Defaults may not be null"); } - - for (final Map.Entry entry : defaults.entrySet()) - { + public void addDefaults(final Map defaults) { + if (defaults == null) { + throw new NullPointerException("Defaults may not be null"); + } + + for (final Map.Entry entry : defaults.entrySet()) { addDefault(entry.getKey(), entry.getValue()); } } - + @Override - public void addDefaults(final Configuration defaults) - { - if (defaults == null) { throw new NullPointerException("Defaults may not be null"); } - + public void addDefaults(final Configuration defaults) { + if (defaults == null) { + throw new NullPointerException("Defaults may not be null"); + } + addDefaults(defaults.getValues(true)); } - + @Override - public void setDefaults(final Configuration defaults) - { - if (defaults == null) { throw new NullPointerException("Defaults may not be null"); } - + public void setDefaults(final Configuration defaults) { + if (defaults == null) { + throw new NullPointerException("Defaults may not be null"); + } + this.defaults = defaults; } - + @Override - public Configuration getDefaults() - { + public Configuration getDefaults() { return defaults; } - + @Override - public ConfigurationSection getParent() - { + public ConfigurationSection getParent() { return null; } - + @Override - public MemoryConfigurationOptions options() - { - if (options == null) - { + public MemoryConfigurationOptions options() { + if (options == null) { options = new MemoryConfigurationOptions(this); } - + return options; } } diff --git a/src/main/java/com/intellectualcrafters/configuration/MemoryConfigurationOptions.java b/src/main/java/com/intellectualcrafters/configuration/MemoryConfigurationOptions.java index 4e6af36c2..d395c0a7b 100644 --- a/src/main/java/com/intellectualcrafters/configuration/MemoryConfigurationOptions.java +++ b/src/main/java/com/intellectualcrafters/configuration/MemoryConfigurationOptions.java @@ -4,29 +4,24 @@ package com.intellectualcrafters.configuration; * Various settings for controlling the input and output of a {@link * MemoryConfiguration} */ -public class MemoryConfigurationOptions extends ConfigurationOptions -{ - protected MemoryConfigurationOptions(final MemoryConfiguration configuration) - { +public class MemoryConfigurationOptions extends ConfigurationOptions { + protected MemoryConfigurationOptions(final MemoryConfiguration configuration) { super(configuration); } - + @Override - public MemoryConfiguration configuration() - { + public MemoryConfiguration configuration() { return (MemoryConfiguration) super.configuration(); } - + @Override - public MemoryConfigurationOptions copyDefaults(final boolean value) - { + public MemoryConfigurationOptions copyDefaults(final boolean value) { super.copyDefaults(value); return this; } - + @Override - public MemoryConfigurationOptions pathSeparator(final char value) - { + public MemoryConfigurationOptions pathSeparator(final char value) { super.pathSeparator(value); return this; } diff --git a/src/main/java/com/intellectualcrafters/configuration/MemorySection.java b/src/main/java/com/intellectualcrafters/configuration/MemorySection.java index 042e9efe4..149aca21b 100644 --- a/src/main/java/com/intellectualcrafters/configuration/MemorySection.java +++ b/src/main/java/com/intellectualcrafters/configuration/MemorySection.java @@ -10,74 +10,64 @@ import java.util.Set; /** * A type of {@link ConfigurationSection} that is stored in memory. */ -public class MemorySection implements ConfigurationSection -{ +public class MemorySection implements ConfigurationSection { protected final Map map = new LinkedHashMap(); private final Configuration root; private final ConfigurationSection parent; private final String path; private final String fullPath; - - public static double toDouble(final Object obj, final double def) - { - if (obj instanceof Number) { return ((Number) obj).doubleValue(); } - if (obj instanceof String) - { - try - { + + public static double toDouble(final Object obj, final double def) { + if (obj instanceof Number) { + return ((Number) obj).doubleValue(); + } + if (obj instanceof String) { + try { return Double.parseDouble((String) obj); - } - catch (final Exception e) - {} - } - else if (obj instanceof List) - { + } catch (final Exception e) {} + } else if (obj instanceof List) { final List val = ((List) obj); - if (val.size() > 0) { return toDouble(val.get(0), def); } + if (val.size() > 0) { + return toDouble(val.get(0), def); + } } return def; } - - public static int toInt(final Object obj, final int def) - { - if (obj instanceof Number) { return ((Number) obj).intValue(); } - if (obj instanceof String) - { - try - { + + public static int toInt(final Object obj, final int def) { + if (obj instanceof Number) { + return ((Number) obj).intValue(); + } + if (obj instanceof String) { + try { return Integer.parseInt((String) obj); - } - catch (final Exception e) - {} - } - else if (obj instanceof List) - { + } catch (final Exception e) {} + } else if (obj instanceof List) { final List val = ((List) obj); - if (val.size() > 0) { return toInt(val.get(0), def); } + if (val.size() > 0) { + return toInt(val.get(0), def); + } } return def; } - - public static long toLong(final Object obj, final long def) - { - if (obj instanceof Number) { return ((Number) obj).longValue(); } - if (obj instanceof String) - { - try - { + + public static long toLong(final Object obj, final long def) { + if (obj instanceof Number) { + return ((Number) obj).longValue(); + } + if (obj instanceof String) { + try { return Long.parseLong((String) obj); - } - catch (final Exception e) - {} - } - else if (obj instanceof List) - { + } catch (final Exception e) {} + } else if (obj instanceof List) { final List val = ((List) obj); - if (val.size() > 0) { return toLong(val.get(0), def); } + if (val.size() > 0) { + return toLong(val.get(0), def); + } } return def; } - + /** * Creates an empty MemorySection for use as a root {@link Configuration} * section. @@ -88,16 +78,17 @@ public class MemorySection implements ConfigurationSection * @throws IllegalStateException Thrown if this is not a {@link * Configuration} root. */ - protected MemorySection() - { - if (!(this instanceof Configuration)) { throw new IllegalStateException("Cannot construct a root MemorySection when not a Configuration"); } - + protected MemorySection() { + if (!(this instanceof Configuration)) { + throw new IllegalStateException("Cannot construct a root MemorySection when not a Configuration"); + } + path = ""; fullPath = ""; parent = null; root = (Configuration) this; } - + /** * Creates an empty MemorySection with the specified parent and path. * @@ -107,808 +98,697 @@ public class MemorySection implements ConfigurationSection * @throws IllegalArgumentException Thrown is parent or path is null, or * if parent contains no root Configuration. */ - protected MemorySection(final ConfigurationSection parent, final String path) - { - if (parent == null) { throw new NullPointerException("Parent may not be null"); } - if (path == null) { throw new NullPointerException("Path may not be null"); } - + protected MemorySection(final ConfigurationSection parent, final String path) { + if (parent == null) { + throw new NullPointerException("Parent may not be null"); + } + if (path == null) { + throw new NullPointerException("Path may not be null"); + } + this.path = path; this.parent = parent; root = parent.getRoot(); - - if (root == null) { throw new NullPointerException("Path may not be orphaned"); } - + + if (root == null) { + throw new NullPointerException("Path may not be orphaned"); + } + fullPath = createPath(parent, path); } - + @Override - public Set getKeys(final boolean deep) - { + public Set getKeys(final boolean deep) { final Set result = new LinkedHashSet(); - + final Configuration root = getRoot(); - if ((root != null) && root.options().copyDefaults()) - { + if ((root != null) && root.options().copyDefaults()) { final ConfigurationSection defaults = getDefaultSection(); - - if (defaults != null) - { + + if (defaults != null) { result.addAll(defaults.getKeys(deep)); } } - + mapChildrenKeys(result, this, deep); - + return result; } - + @Override - public Map getValues(final boolean deep) - { + public Map getValues(final boolean deep) { final Map result = new LinkedHashMap(); - + final Configuration root = getRoot(); - if ((root != null) && root.options().copyDefaults()) - { + if ((root != null) && root.options().copyDefaults()) { final ConfigurationSection defaults = getDefaultSection(); - - if (defaults != null) - { + + if (defaults != null) { result.putAll(defaults.getValues(deep)); } } - + mapChildrenValues(result, this, deep); - + return result; } - + @Override - public boolean contains(final String path) - { + public boolean contains(final String path) { return get(path) != null; } - + @Override - public boolean isSet(final String path) - { + public boolean isSet(final String path) { final Configuration root = getRoot(); - if (root == null) { return false; } - if (root.options().copyDefaults()) { return contains(path); } + if (root == null) { + return false; + } + if (root.options().copyDefaults()) { + return contains(path); + } return get(path, null) != null; } - + @Override - public String getCurrentPath() - { + public String getCurrentPath() { return fullPath; } - + @Override - public String getName() - { + public String getName() { return path; } - + @Override - public Configuration getRoot() - { + public Configuration getRoot() { return root; } - + @Override - public ConfigurationSection getParent() - { + public ConfigurationSection getParent() { return parent; } - + @Override - public void addDefault(final String path, final Object value) - { - if (path == null) { throw new NullPointerException("Path cannot be null"); } - + public void addDefault(final String path, final Object value) { + if (path == null) { + throw new NullPointerException("Path cannot be null"); + } + final Configuration root = getRoot(); - if (root == null) { throw new IllegalStateException("Cannot add default without root"); } - if (root == this) { throw new UnsupportedOperationException("Unsupported addDefault(String, Object) implementation"); } + if (root == null) { + throw new IllegalStateException("Cannot add default without root"); + } + if (root == this) { + throw new UnsupportedOperationException("Unsupported addDefault(String, Object) implementation"); + } root.addDefault(createPath(this, path), value); } - + @Override - public ConfigurationSection getDefaultSection() - { + public ConfigurationSection getDefaultSection() { final Configuration root = getRoot(); final Configuration defaults = root == null ? null : root.getDefaults(); - - if (defaults != null) - { - if (defaults.isConfigurationSection(getCurrentPath())) { return defaults.getConfigurationSection(getCurrentPath()); } + + if (defaults != null) { + if (defaults.isConfigurationSection(getCurrentPath())) { + return defaults.getConfigurationSection(getCurrentPath()); + } } - + return null; } - + @Override - public void set(final String path, final Object value) - { - if (path == null) { throw new NullPointerException("Cannot set to an empty path"); } - + public void set(final String path, final Object value) { + if (path == null) { + throw new NullPointerException("Cannot set to an empty path"); + } + final Configuration root = getRoot(); - if (root == null) { throw new IllegalStateException("Cannot use section without a root"); } - + if (root == null) { + throw new IllegalStateException("Cannot use section without a root"); + } + final char separator = root.options().pathSeparator(); // i1 is the leading (higher) index // i2 is the trailing (lower) index int i1 = -1, i2; ConfigurationSection section = this; - while ((i1 = path.indexOf(separator, i2 = i1 + 1)) != -1) - { + while ((i1 = path.indexOf(separator, i2 = i1 + 1)) != -1) { final String node = path.substring(i2, i1); final ConfigurationSection subSection = section.getConfigurationSection(node); - if (subSection == null) - { + if (subSection == null) { section = section.createSection(node); - } - else - { + } else { section = subSection; } } - + final String key = path.substring(i2); - if (section == this) - { - if (value == null) - { + if (section == this) { + if (value == null) { map.remove(key); - } - else - { + } else { map.put(key, value); } - } - else - { + } else { section.set(key, value); } } - + @Override - public Object get(final String path) - { + public Object get(final String path) { return get(path, getDefault(path)); } - + @Override - public Object get(final String path, final Object def) - { - if (path == null) { throw new NullPointerException("Path cannot be null"); } - - if (path.length() == 0) { return this; } - + public Object get(final String path, final Object def) { + if (path == null) { + throw new NullPointerException("Path cannot be null"); + } + + if (path.length() == 0) { + return this; + } + final Configuration root = getRoot(); - if (root == null) { throw new IllegalStateException("Cannot access section without a root"); } - + if (root == null) { + throw new IllegalStateException("Cannot access section without a root"); + } + final char separator = root.options().pathSeparator(); // i1 is the leading (higher) index // i2 is the trailing (lower) index int i1 = -1, i2; ConfigurationSection section = this; - while ((i1 = path.indexOf(separator, i2 = i1 + 1)) != -1) - { + while ((i1 = path.indexOf(separator, i2 = i1 + 1)) != -1) { section = section.getConfigurationSection(path.substring(i2, i1)); - if (section == null) { return def; } + if (section == null) { + return def; + } } - + final String key = path.substring(i2); - if (section == this) - { + if (section == this) { final Object result = map.get(key); return (result == null) ? def : result; } return section.get(key, def); } - + @Override - public ConfigurationSection createSection(final String path) - { - if (path == null) { throw new NullPointerException("Cannot create section at empty path"); } + public ConfigurationSection createSection(final String path) { + if (path == null) { + throw new NullPointerException("Cannot create section at empty path"); + } final Configuration root = getRoot(); - if (root == null) { throw new IllegalStateException("Cannot create section without a root"); } - + if (root == null) { + throw new IllegalStateException("Cannot create section without a root"); + } + final char separator = root.options().pathSeparator(); // i1 is the leading (higher) index // i2 is the trailing (lower) index int i1 = -1, i2; ConfigurationSection section = this; - while ((i1 = path.indexOf(separator, i2 = i1 + 1)) != -1) - { + while ((i1 = path.indexOf(separator, i2 = i1 + 1)) != -1) { final String node = path.substring(i2, i1); final ConfigurationSection subSection = section.getConfigurationSection(node); - if (subSection == null) - { + if (subSection == null) { section = section.createSection(node); - } - else - { + } else { section = subSection; } } - + final String key = path.substring(i2); - if (section == this) - { + if (section == this) { final ConfigurationSection result = new MemorySection(this, key); map.put(key, result); return result; } return section.createSection(key); } - + @Override - public ConfigurationSection createSection(final String path, final Map map) - { + public ConfigurationSection createSection(final String path, final Map map) { final ConfigurationSection section = createSection(path); - - for (final Map.Entry entry : map.entrySet()) - { - if (entry.getValue() instanceof Map) - { + + for (final Map.Entry entry : map.entrySet()) { + if (entry.getValue() instanceof Map) { section.createSection(entry.getKey().toString(), (Map) entry.getValue()); - } - else - { + } else { section.set(entry.getKey().toString(), entry.getValue()); } } - + return section; } - + // Primitives @Override - public String getString(final String path) - { + public String getString(final String path) { final Object def = getDefault(path); return getString(path, def != null ? def.toString() : null); } - + @Override - public String getString(final String path, final String def) - { + public String getString(final String path, final String def) { final Object val = get(path, def); return (val != null) ? val.toString() : def; } - + @Override - public boolean isString(final String path) - { + public boolean isString(final String path) { final Object val = get(path); return val instanceof String; } - + @Override - public int getInt(final String path) - { + public int getInt(final String path) { final Object def = getDefault(path); return getInt(path, toInt(def, 0)); } - + @Override - public int getInt(final String path, final int def) - { + public int getInt(final String path, final int def) { final Object val = get(path, def); return toInt(val, def); } - + @Override - public boolean isInt(final String path) - { + public boolean isInt(final String path) { final Object val = get(path); return val instanceof Integer; } - + @Override - public boolean getBoolean(final String path) - { + public boolean getBoolean(final String path) { final Object def = getDefault(path); return getBoolean(path, (def instanceof Boolean) ? (Boolean) def : false); } - + @Override - public boolean getBoolean(final String path, final boolean def) - { + public boolean getBoolean(final String path, final boolean def) { final Object val = get(path, def); return (val instanceof Boolean) ? (Boolean) val : def; } - + @Override - public boolean isBoolean(final String path) - { + public boolean isBoolean(final String path) { final Object val = get(path); return val instanceof Boolean; } - + @Override - public double getDouble(final String path) - { + public double getDouble(final String path) { final Object def = getDefault(path); return getDouble(path, toDouble(def, 0)); } - + @Override - public double getDouble(final String path, final double def) - { + public double getDouble(final String path, final double def) { final Object val = get(path, def); return toDouble(val, def); } - + @Override - public boolean isDouble(final String path) - { + public boolean isDouble(final String path) { final Object val = get(path); return val instanceof Double; } - + @Override - public long getLong(final String path) - { + public long getLong(final String path) { final Object def = getDefault(path); return getLong(path, toLong(def, 0)); } - + @Override - public long getLong(final String path, final long def) - { + public long getLong(final String path, final long def) { final Object val = get(path, def); return toLong(val, def); } - + @Override - public boolean isLong(final String path) - { + public boolean isLong(final String path) { final Object val = get(path); return val instanceof Long; } - + // Java @Override - public List getList(final String path) - { + public List getList(final String path) { final Object def = getDefault(path); return getList(path, (def instanceof List) ? (List) def : null); } - + @Override - public List getList(final String path, final List def) - { + public List getList(final String path, final List def) { final Object val = get(path, def); return (List) ((val instanceof List) ? val : def); } - + @Override - public boolean isList(final String path) - { + public boolean isList(final String path) { final Object val = get(path); return val instanceof List; } - + @Override - public List getStringList(final String path) - { + public List getStringList(final String path) { final List list = getList(path); - - if (list == null) { return new ArrayList(0); } - + + if (list == null) { + return new ArrayList(0); + } + final List result = new ArrayList(); - - for (final Object object : list) - { - if ((object instanceof String) || (isPrimitiveWrapper(object))) - { + + for (final Object object : list) { + if ((object instanceof String) || (isPrimitiveWrapper(object))) { result.add(String.valueOf(object)); } } - + return result; } - + @Override - public List getIntegerList(final String path) - { + public List getIntegerList(final String path) { final List list = getList(path); - - if (list == null) { return new ArrayList(0); } - + + if (list == null) { + return new ArrayList(0); + } + final List result = new ArrayList(); - - for (final Object object : list) - { - if (object instanceof Integer) - { + + for (final Object object : list) { + if (object instanceof Integer) { result.add((Integer) object); - } - else if (object instanceof String) - { - try - { + } else if (object instanceof String) { + try { result.add(Integer.valueOf((String) object)); - } - catch (final Exception ex) - {} - } - else if (object instanceof Character) - { + } catch (final Exception ex) {} + } else if (object instanceof Character) { result.add((int) ((Character) object).charValue()); - } - else if (object instanceof Number) - { + } else if (object instanceof Number) { result.add(((Number) object).intValue()); } } - + return result; } - + @Override - public List getBooleanList(final String path) - { + public List getBooleanList(final String path) { final List list = getList(path); - - if (list == null) { return new ArrayList(0); } - + + if (list == null) { + return new ArrayList(0); + } + final List result = new ArrayList(); - - for (final Object object : list) - { - if (object instanceof Boolean) - { + + for (final Object object : list) { + if (object instanceof Boolean) { result.add((Boolean) object); - } - else if (object instanceof String) - { - if (Boolean.TRUE.toString().equals(object)) - { + } else if (object instanceof String) { + if (Boolean.TRUE.toString().equals(object)) { result.add(true); - } - else if (Boolean.FALSE.toString().equals(object)) - { + } else if (Boolean.FALSE.toString().equals(object)) { result.add(false); } } } - + return result; } - + @Override - public List getDoubleList(final String path) - { + public List getDoubleList(final String path) { final List list = getList(path); - - if (list == null) { return new ArrayList(0); } - + + if (list == null) { + return new ArrayList(0); + } + final List result = new ArrayList(); - - for (final Object object : list) - { - if (object instanceof Double) - { + + for (final Object object : list) { + if (object instanceof Double) { result.add((Double) object); - } - else if (object instanceof String) - { - try - { + } else if (object instanceof String) { + try { result.add(Double.valueOf((String) object)); - } - catch (final Exception ex) - {} - } - else if (object instanceof Character) - { + } catch (final Exception ex) {} + } else if (object instanceof Character) { result.add((double) ((Character) object).charValue()); - } - else if (object instanceof Number) - { + } else if (object instanceof Number) { result.add(((Number) object).doubleValue()); } } - + return result; } - + @Override - public List getFloatList(final String path) - { + public List getFloatList(final String path) { final List list = getList(path); - - if (list == null) { return new ArrayList(0); } - + + if (list == null) { + return new ArrayList(0); + } + final List result = new ArrayList(); - - for (final Object object : list) - { - if (object instanceof Float) - { + + for (final Object object : list) { + if (object instanceof Float) { result.add((Float) object); - } - else if (object instanceof String) - { - try - { + } else if (object instanceof String) { + try { result.add(Float.valueOf((String) object)); - } - catch (final Exception ex) - {} - } - else if (object instanceof Character) - { + } catch (final Exception ex) {} + } else if (object instanceof Character) { result.add((float) ((Character) object).charValue()); - } - else if (object instanceof Number) - { + } else if (object instanceof Number) { result.add(((Number) object).floatValue()); } } - + return result; } - + @Override - public List getLongList(final String path) - { + public List getLongList(final String path) { final List list = getList(path); - - if (list == null) { return new ArrayList(0); } - + + if (list == null) { + return new ArrayList(0); + } + final List result = new ArrayList(); - - for (final Object object : list) - { - if (object instanceof Long) - { + + for (final Object object : list) { + if (object instanceof Long) { result.add((Long) object); - } - else if (object instanceof String) - { - try - { + } else if (object instanceof String) { + try { result.add(Long.valueOf((String) object)); - } - catch (final Exception ex) - {} - } - else if (object instanceof Character) - { + } catch (final Exception ex) {} + } else if (object instanceof Character) { result.add((long) ((Character) object).charValue()); - } - else if (object instanceof Number) - { + } else if (object instanceof Number) { result.add(((Number) object).longValue()); } } - + return result; } - + @Override - public List getByteList(final String path) - { + public List getByteList(final String path) { final List list = getList(path); - - if (list == null) { return new ArrayList(0); } - + + if (list == null) { + return new ArrayList(0); + } + final List result = new ArrayList(); - - for (final Object object : list) - { - if (object instanceof Byte) - { + + for (final Object object : list) { + if (object instanceof Byte) { result.add((Byte) object); - } - else if (object instanceof String) - { - try - { + } else if (object instanceof String) { + try { result.add(Byte.valueOf((String) object)); - } - catch (final Exception ex) - {} - } - else if (object instanceof Character) - { + } catch (final Exception ex) {} + } else if (object instanceof Character) { result.add((byte) ((Character) object).charValue()); - } - else if (object instanceof Number) - { + } else if (object instanceof Number) { result.add(((Number) object).byteValue()); } } - + return result; } - + @Override - public List getCharacterList(final String path) - { + public List getCharacterList(final String path) { final List list = getList(path); - - if (list == null) { return new ArrayList(0); } - + + if (list == null) { + return new ArrayList(0); + } + final List result = new ArrayList(); - - for (final Object object : list) - { - if (object instanceof Character) - { + + for (final Object object : list) { + if (object instanceof Character) { result.add((Character) object); - } - else if (object instanceof String) - { + } else if (object instanceof String) { final String str = (String) object; - - if (str.length() == 1) - { + + if (str.length() == 1) { result.add(str.charAt(0)); } - } - else if (object instanceof Number) - { + } else if (object instanceof Number) { result.add((char) ((Number) object).intValue()); } } - + return result; } - + @Override - public List getShortList(final String path) - { + public List getShortList(final String path) { final List list = getList(path); - - if (list == null) { return new ArrayList(0); } - + + if (list == null) { + return new ArrayList(0); + } + final List result = new ArrayList(); - - for (final Object object : list) - { - if (object instanceof Short) - { + + for (final Object object : list) { + if (object instanceof Short) { result.add((Short) object); - } - else if (object instanceof String) - { - try - { + } else if (object instanceof String) { + try { result.add(Short.valueOf((String) object)); - } - catch (final Exception ex) - {} - } - else if (object instanceof Character) - { + } catch (final Exception ex) {} + } else if (object instanceof Character) { result.add((short) ((Character) object).charValue()); - } - else if (object instanceof Number) - { + } else if (object instanceof Number) { result.add(((Number) object).shortValue()); } } - + return result; } - + @Override - public List> getMapList(final String path) - { + public List> getMapList(final String path) { final List list = getList(path); final List> result = new ArrayList>(); - - if (list == null) { return result; } - - for (final Object object : list) - { - if (object instanceof Map) - { + + if (list == null) { + return result; + } + + for (final Object object : list) { + if (object instanceof Map) { result.add((Map) object); } } - + return result; } - + @Override - public ConfigurationSection getConfigurationSection(final String path) - { + public ConfigurationSection getConfigurationSection(final String path) { Object val = get(path, null); - if (val != null) { return (val instanceof ConfigurationSection) ? (ConfigurationSection) val : null; } - + if (val != null) { + return (val instanceof ConfigurationSection) ? (ConfigurationSection) val : null; + } + val = get(path, getDefault(path)); return (val instanceof ConfigurationSection) ? createSection(path) : null; } - + @Override - public boolean isConfigurationSection(final String path) - { + public boolean isConfigurationSection(final String path) { final Object val = get(path); return val instanceof ConfigurationSection; } - - protected boolean isPrimitiveWrapper(final Object input) - { - return (input instanceof Integer) || (input instanceof Boolean) || - (input instanceof Character) || (input instanceof Byte) || - (input instanceof Short) || (input instanceof Double) || - (input instanceof Long) || (input instanceof Float); + + protected boolean isPrimitiveWrapper(final Object input) { + return (input instanceof Integer) + || (input instanceof Boolean) + || (input instanceof Character) + || (input instanceof Byte) + || (input instanceof Short) + || (input instanceof Double) + || (input instanceof Long) + || (input instanceof Float); } - - protected Object getDefault(final String path) - { - if (path == null) { throw new NullPointerException("Path may not be null"); } - + + protected Object getDefault(final String path) { + if (path == null) { + throw new NullPointerException("Path may not be null"); + } + final Configuration root = getRoot(); final Configuration defaults = root == null ? null : root.getDefaults(); return (defaults == null) ? null : defaults.get(createPath(this, path)); } - - protected void mapChildrenKeys(final Set output, final ConfigurationSection section, final boolean deep) - { - if (section instanceof MemorySection) - { + + protected void mapChildrenKeys(final Set output, final ConfigurationSection section, final boolean deep) { + if (section instanceof MemorySection) { final MemorySection sec = (MemorySection) section; - - for (final Map.Entry entry : sec.map.entrySet()) - { + + for (final Map.Entry entry : sec.map.entrySet()) { output.add(createPath(section, entry.getKey(), this)); - - if ((deep) && (entry.getValue() instanceof ConfigurationSection)) - { + + if ((deep) && (entry.getValue() instanceof ConfigurationSection)) { final ConfigurationSection subsection = (ConfigurationSection) entry.getValue(); mapChildrenKeys(output, subsection, deep); } } - } - else - { + } else { final Set keys = section.getKeys(deep); - - for (final String key : keys) - { + + for (final String key : keys) { output.add(createPath(section, key, this)); } } } - - protected void mapChildrenValues(final Map output, final ConfigurationSection section, final boolean deep) - { - if (section instanceof MemorySection) - { + + protected void mapChildrenValues(final Map output, final ConfigurationSection section, final boolean deep) { + if (section instanceof MemorySection) { final MemorySection sec = (MemorySection) section; - - for (final Map.Entry entry : sec.map.entrySet()) - { + + for (final Map.Entry entry : sec.map.entrySet()) { output.put(createPath(section, entry.getKey(), this), entry.getValue()); - - if (entry.getValue() instanceof ConfigurationSection) - { - if (deep) - { + + if (entry.getValue() instanceof ConfigurationSection) { + if (deep) { mapChildrenValues(output, (ConfigurationSection) entry.getValue(), deep); } } } - } - else - { + } else { final Map values = section.getValues(deep); - - for (final Map.Entry entry : values.entrySet()) - { + + for (final Map.Entry entry : values.entrySet()) { output.put(createPath(section, entry.getKey(), this), entry.getValue()); } } } - + /** * Creates a full path to the given {@link ConfigurationSection} from its * root {@link Configuration}. @@ -920,11 +800,10 @@ public class MemorySection implements ConfigurationSection * @param key Name of the specified section. * @return Full path of the section from its root. */ - public static String createPath(final ConfigurationSection section, final String key) - { + public static String createPath(final ConfigurationSection section, final String key) { return createPath(section, key, (section == null) ? null : section.getRoot()); } - + /** * Creates a relative path to the given {@link ConfigurationSection} from * the given relative section. @@ -937,51 +816,42 @@ public class MemorySection implements ConfigurationSection * @param relativeTo Section to create the path relative to. * @return Full path of the section from its root. */ - public static String createPath(final ConfigurationSection section, final String key, final ConfigurationSection relativeTo) - { - if (section == null) { throw new NullPointerException("Cannot create path without a section"); } + public static String createPath(final ConfigurationSection section, final String key, final ConfigurationSection relativeTo) { + if (section == null) { + throw new NullPointerException("Cannot create path without a section"); + } final Configuration root = section.getRoot(); - if (root == null) { throw new IllegalStateException("Cannot create path without a root"); } + if (root == null) { + throw new IllegalStateException("Cannot create path without a root"); + } final char separator = root.options().pathSeparator(); - + final StringBuilder builder = new StringBuilder(); - if (section != null) - { - for (ConfigurationSection parent = section; (parent != null) && (parent != relativeTo); parent = parent.getParent()) - { - if (builder.length() > 0) - { + if (section != null) { + for (ConfigurationSection parent = section; (parent != null) && (parent != relativeTo); parent = parent.getParent()) { + if (builder.length() > 0) { builder.insert(0, separator); } - + builder.insert(0, parent.getName()); } } - - if ((key != null) && (key.length() > 0)) - { - if (builder.length() > 0) - { + + if ((key != null) && (key.length() > 0)) { + if (builder.length() > 0) { builder.append(separator); } - + builder.append(key); } - + return builder.toString(); } - + @Override - public String toString() - { + public String toString() { final Configuration root = getRoot(); - return new StringBuilder() - .append(getClass().getSimpleName()) - .append("[path='") - .append(getCurrentPath()) - .append("', root='") - .append(root == null ? null : root.getClass().getSimpleName()) - .append("']") - .toString(); + return new StringBuilder().append(getClass().getSimpleName()).append("[path='").append(getCurrentPath()).append("', root='").append(root == null ? null : root.getClass().getSimpleName()) + .append("']").toString(); } } diff --git a/src/main/java/com/intellectualcrafters/configuration/file/FileConfiguration.java b/src/main/java/com/intellectualcrafters/configuration/file/FileConfiguration.java index 5cec0073b..553b76044 100644 --- a/src/main/java/com/intellectualcrafters/configuration/file/FileConfiguration.java +++ b/src/main/java/com/intellectualcrafters/configuration/file/FileConfiguration.java @@ -24,8 +24,7 @@ import com.intellectualcrafters.configuration.MemoryConfiguration; * This is a base class for all File based implementations of {@link * Configuration} */ -public abstract class FileConfiguration extends MemoryConfiguration -{ +public abstract class FileConfiguration extends MemoryConfiguration { /** * This value specified that the system default encoding should be * completely ignored, as it cannot handle the ASCII character set, or it @@ -50,8 +49,7 @@ public abstract class FileConfiguration extends MemoryConfiguration */ @Deprecated public static final boolean SYSTEM_UTF; - static - { + static { final byte[] testBytes = Base64Coder.decode("ICEiIyQlJicoKSorLC0uLzAxMjM0NTY3ODk6Ozw9Pj9AQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpbXF1eX2BhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ent8fX4NCg=="); final String testString = " !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\r\n"; final Charset defaultCharset = Charset.defaultCharset(); @@ -61,26 +59,24 @@ public abstract class FileConfiguration extends MemoryConfiguration SYSTEM_UTF = trueUTF || UTF8_OVERRIDE; UTF_BIG = trueUTF && UTF8_OVERRIDE; } - + /** * Creates an empty {@link FileConfiguration} with no default values. */ - public FileConfiguration() - { + public FileConfiguration() { super(); } - + /** * Creates an empty {@link FileConfiguration} using the specified {@link * Configuration} as a source for all default values. * * @param defaults Default value provider */ - public FileConfiguration(final Configuration defaults) - { + public FileConfiguration(final Configuration defaults) { super(defaults); } - + /** * Saves this {@link FileConfiguration} to the specified location. *

@@ -96,25 +92,23 @@ public abstract class FileConfiguration extends MemoryConfiguration * any reason. * @throws IllegalArgumentException Thrown when file is null. */ - public void save(final File file) throws IOException - { - if (file == null) { throw new NullPointerException("File cannot be null"); } - file.getParentFile().mkdirs(); - - final String data = saveToString(); - - final Writer writer = new OutputStreamWriter(new FileOutputStream(file), UTF8_OVERRIDE && !UTF_BIG ? StandardCharsets.UTF_8 : Charset.defaultCharset()); - - try - { - writer.write(data); + public void save(final File file) throws IOException { + if (file == null) { + throw new NullPointerException("File cannot be null"); } - finally - { + file.getParentFile().mkdirs(); + + final String data = saveToString(); + + final Writer writer = new OutputStreamWriter(new FileOutputStream(file), UTF8_OVERRIDE && !UTF_BIG ? StandardCharsets.UTF_8 : Charset.defaultCharset()); + + try { + writer.write(data); + } finally { writer.close(); } } - + /** * Saves this {@link FileConfiguration} to the specified location. *

@@ -130,20 +124,21 @@ public abstract class FileConfiguration extends MemoryConfiguration * any reason. * @throws IllegalArgumentException Thrown when file is null. */ - public void save(final String file) throws IOException - { - if (file == null) { throw new NullPointerException("File cannot be null"); } - + public void save(final String file) throws IOException { + if (file == null) { + throw new NullPointerException("File cannot be null"); + } + save(new File(file)); } - + /** * Saves this {@link FileConfiguration} to a string, and returns it. * * @return String containing this configuration. */ public abstract String saveToString(); - + /** * Loads this {@link FileConfiguration} from the specified location. *

@@ -166,15 +161,16 @@ public abstract class FileConfiguration extends MemoryConfiguration * a valid Configuration. * @throws IllegalArgumentException Thrown when file is null. */ - public void load(final File file) throws IOException, InvalidConfigurationException - { - if (file == null) { throw new NullPointerException("File cannot be null"); } - + public void load(final File file) throws IOException, InvalidConfigurationException { + if (file == null) { + throw new NullPointerException("File cannot be null"); + } + final FileInputStream stream = new FileInputStream(file); - + load(new InputStreamReader(stream, UTF8_OVERRIDE && !UTF_BIG ? StandardCharsets.UTF_8 : Charset.defaultCharset())); } - + /** * Loads this {@link FileConfiguration} from the specified stream. *

@@ -194,13 +190,14 @@ public abstract class FileConfiguration extends MemoryConfiguration * @see #load(Reader) */ @Deprecated - public void load(final InputStream stream) throws IOException, InvalidConfigurationException - { - if (stream == null) { throw new NullPointerException("Stream cannot be null"); } - + public void load(final InputStream stream) throws IOException, InvalidConfigurationException { + if (stream == null) { + throw new NullPointerException("Stream cannot be null"); + } + load(new InputStreamReader(stream, UTF8_OVERRIDE ? StandardCharsets.UTF_8 : Charset.defaultCharset())); } - + /** * Loads this {@link FileConfiguration} from the specified reader. *

@@ -214,30 +211,25 @@ public abstract class FileConfiguration extends MemoryConfiguration * represent a valid Configuration * @throws IllegalArgumentException thrown when reader is null */ - public void load(final Reader reader) throws IOException, InvalidConfigurationException - { + public void load(final Reader reader) throws IOException, InvalidConfigurationException { final BufferedReader input = reader instanceof BufferedReader ? (BufferedReader) reader : new BufferedReader(reader); - + final StringBuilder builder = new StringBuilder(); - - try - { + + try { String line; - - while ((line = input.readLine()) != null) - { + + while ((line = input.readLine()) != null) { builder.append(line); builder.append('\n'); } - } - finally - { + } finally { input.close(); } - + loadFromString(builder.toString()); } - + /** * Loads this {@link FileConfiguration} from the specified location. *

@@ -256,13 +248,14 @@ public abstract class FileConfiguration extends MemoryConfiguration * a valid Configuration. * @throws IllegalArgumentException Thrown when file is null. */ - public void load(final String file) throws IOException, InvalidConfigurationException - { - if (file == null) { throw new NullPointerException("File cannot be null"); } - + public void load(final String file) throws IOException, InvalidConfigurationException { + if (file == null) { + throw new NullPointerException("File cannot be null"); + } + load(new File(file)); } - + /** * Loads this {@link FileConfiguration} from the specified string, as * opposed to from file. @@ -279,7 +272,7 @@ public abstract class FileConfiguration extends MemoryConfiguration * @throws IllegalArgumentException Thrown if contents is null. */ public abstract void loadFromString(final String contents) throws InvalidConfigurationException; - + /** * Compiles the header for this {@link FileConfiguration} and returns the * result. @@ -291,15 +284,13 @@ public abstract class FileConfiguration extends MemoryConfiguration * @return Compiled header */ protected abstract String buildHeader(); - + @Override - public FileConfigurationOptions options() - { - if (options == null) - { + public FileConfigurationOptions options() { + if (options == null) { options = new FileConfigurationOptions(this); } - + return (FileConfigurationOptions) options; } } diff --git a/src/main/java/com/intellectualcrafters/configuration/file/FileConfigurationOptions.java b/src/main/java/com/intellectualcrafters/configuration/file/FileConfigurationOptions.java index 9b26be71c..8c3d830a3 100644 --- a/src/main/java/com/intellectualcrafters/configuration/file/FileConfigurationOptions.java +++ b/src/main/java/com/intellectualcrafters/configuration/file/FileConfigurationOptions.java @@ -7,36 +7,31 @@ import com.intellectualcrafters.configuration.MemoryConfigurationOptions; * Various settings for controlling the input and output of a {@link * FileConfiguration} */ -public class FileConfigurationOptions extends MemoryConfigurationOptions -{ +public class FileConfigurationOptions extends MemoryConfigurationOptions { private String header = null; private boolean copyHeader = true; - - protected FileConfigurationOptions(final MemoryConfiguration configuration) - { + + protected FileConfigurationOptions(final MemoryConfiguration configuration) { super(configuration); } - + @Override - public FileConfiguration configuration() - { + public FileConfiguration configuration() { return (FileConfiguration) super.configuration(); } - + @Override - public FileConfigurationOptions copyDefaults(final boolean value) - { + public FileConfigurationOptions copyDefaults(final boolean value) { super.copyDefaults(value); return this; } - + @Override - public FileConfigurationOptions pathSeparator(final char value) - { + public FileConfigurationOptions pathSeparator(final char value) { super.pathSeparator(value); return this; } - + /** * Gets the header that will be applied to the top of the saved output. *

@@ -51,11 +46,10 @@ public class FileConfigurationOptions extends MemoryConfigurationOptions * * @return Header */ - public String header() - { + public String header() { return header; } - + /** * Sets the header that will be applied to the top of the saved output. *

@@ -71,12 +65,11 @@ public class FileConfigurationOptions extends MemoryConfigurationOptions * @param value New header * @return This object, for chaining */ - public FileConfigurationOptions header(final String value) - { + public FileConfigurationOptions header(final String value) { header = value; return this; } - + /** * Gets whether or not the header should be copied from a default source. *

@@ -95,11 +88,10 @@ public class FileConfigurationOptions extends MemoryConfigurationOptions * * @return Whether or not to copy the header */ - public boolean copyHeader() - { + public boolean copyHeader() { return copyHeader; } - + /** * Sets whether or not the header should be copied from a default source. *

@@ -119,10 +111,9 @@ public class FileConfigurationOptions extends MemoryConfigurationOptions * @param value Whether or not to copy the header * @return This object, for chaining */ - public FileConfigurationOptions copyHeader(final boolean value) - { + public FileConfigurationOptions copyHeader(final boolean value) { copyHeader = value; - + return this; } } diff --git a/src/main/java/com/intellectualcrafters/configuration/file/YamlConfiguration.java b/src/main/java/com/intellectualcrafters/configuration/file/YamlConfiguration.java index 2a3a5fc20..1ab3a6f61 100644 --- a/src/main/java/com/intellectualcrafters/configuration/file/YamlConfiguration.java +++ b/src/main/java/com/intellectualcrafters/configuration/file/YamlConfiguration.java @@ -22,170 +22,144 @@ import com.intellectualcrafters.plot.PS; * An implementation of {@link Configuration} which saves all files in Yaml. * Note that this implementation is not synchronized. */ -public class YamlConfiguration extends FileConfiguration -{ +public class YamlConfiguration extends FileConfiguration { protected static final String COMMENT_PREFIX = "# "; protected static final String BLANK_CONFIG = "{}\n"; private final DumperOptions yamlOptions = new DumperOptions(); private final Representer yamlRepresenter = new YamlRepresenter(); private final Yaml yaml = new Yaml(new YamlConstructor(), yamlRepresenter, yamlOptions); - + @Override - public String saveToString() - { + public String saveToString() { yamlOptions.setIndent(options().indent()); yamlOptions.setDefaultFlowStyle(DumperOptions.FlowStyle.BLOCK); yamlOptions.setAllowUnicode(SYSTEM_UTF); yamlRepresenter.setDefaultFlowStyle(DumperOptions.FlowStyle.BLOCK); - + final String header = buildHeader(); String dump = yaml.dump(getValues(false)); - - if (dump.equals(BLANK_CONFIG)) - { + + if (dump.equals(BLANK_CONFIG)) { dump = ""; } - + return header + dump; } - + @Override - public void loadFromString(final String contents) throws InvalidConfigurationException - { - if (contents == null) { throw new NullPointerException("Contents cannot be null"); } - + public void loadFromString(final String contents) throws InvalidConfigurationException { + if (contents == null) { + throw new NullPointerException("Contents cannot be null"); + } + Map input; - try - { + try { input = (Map) yaml.load(contents); - } - catch (final YAMLException e) - { + } catch (final YAMLException e) { throw new InvalidConfigurationException(e); - } - catch (final ClassCastException e) - { + } catch (final ClassCastException e) { throw new InvalidConfigurationException("Top level is not a Map."); } - + final String header = parseHeader(contents); - if (header.length() > 0) - { + if (header.length() > 0) { options().header(header); } - - if (input != null) - { + + if (input != null) { convertMapsToSections(input, this); } } - - protected void convertMapsToSections(final Map input, final ConfigurationSection section) - { - for (final Map.Entry entry : input.entrySet()) - { + + protected void convertMapsToSections(final Map input, final ConfigurationSection section) { + for (final Map.Entry entry : input.entrySet()) { final String key = entry.getKey().toString(); final Object value = entry.getValue(); - - if (value instanceof Map) - { + + if (value instanceof Map) { convertMapsToSections((Map) value, section.createSection(key)); - } - else - { + } else { section.set(key, value); } } } - - protected String parseHeader(final String input) - { + + protected String parseHeader(final String input) { final String[] lines = input.split("\r?\n", -1); final StringBuilder result = new StringBuilder(); boolean readingHeader = true; boolean foundHeader = false; - - for (int i = 0; (i < lines.length) && (readingHeader); i++) - { + + for (int i = 0; (i < lines.length) && (readingHeader); i++) { final String line = lines[i]; - - if (line.startsWith(COMMENT_PREFIX)) - { - if (i > 0) - { + + if (line.startsWith(COMMENT_PREFIX)) { + if (i > 0) { result.append("\n"); } - - if (line.length() > COMMENT_PREFIX.length()) - { + + if (line.length() > COMMENT_PREFIX.length()) { result.append(line.substring(COMMENT_PREFIX.length())); } - + foundHeader = true; - } - else if ((foundHeader) && (line.length() == 0)) - { + } else if ((foundHeader) && (line.length() == 0)) { result.append("\n"); - } - else if (foundHeader) - { + } else if (foundHeader) { readingHeader = false; } } - + return result.toString(); } - + @Override - protected String buildHeader() - { + protected String buildHeader() { final String header = options().header(); - - if (options().copyHeader()) - { + + if (options().copyHeader()) { final Configuration def = getDefaults(); - - if ((def != null) && (def instanceof FileConfiguration)) - { + + if ((def != null) && (def instanceof FileConfiguration)) { final FileConfiguration filedefaults = (FileConfiguration) def; final String defaultsHeader = filedefaults.buildHeader(); - - if ((defaultsHeader != null) && (defaultsHeader.length() > 0)) { return defaultsHeader; } + + if ((defaultsHeader != null) && (defaultsHeader.length() > 0)) { + return defaultsHeader; + } } } - - if (header == null) { return ""; } - + + if (header == null) { + return ""; + } + final StringBuilder builder = new StringBuilder(); final String[] lines = header.split("\r?\n", -1); boolean startedHeader = false; - - for (int i = lines.length - 1; i >= 0; i--) - { + + for (int i = lines.length - 1; i >= 0; i--) { builder.insert(0, "\n"); - - if ((startedHeader) || (lines[i].length() != 0)) - { + + if ((startedHeader) || (lines[i].length() != 0)) { builder.insert(0, lines[i]); builder.insert(0, COMMENT_PREFIX); startedHeader = true; } } - + return builder.toString(); } - + @Override - public YamlConfigurationOptions options() - { - if (options == null) - { + public YamlConfigurationOptions options() { + if (options == null) { options = new YamlConfigurationOptions(this); } - + return (YamlConfigurationOptions) options; } - + /** * Creates a new {@link YamlConfiguration}, loading from the given file. *

@@ -199,25 +173,21 @@ public class YamlConfiguration extends FileConfiguration * @return Resulting configuration * @throws IllegalArgumentException Thrown if file is null */ - public static YamlConfiguration loadConfiguration(final File file) - { - if (file == null) { throw new NullPointerException("File cannot be null"); } - - final YamlConfiguration config = new YamlConfiguration(); - - try - { - config.load(file); + public static YamlConfiguration loadConfiguration(final File file) { + if (file == null) { + throw new NullPointerException("File cannot be null"); } - catch (final Exception ex) - { - try - { + + final YamlConfiguration config = new YamlConfiguration(); + + try { + config.load(file); + } catch (final Exception ex) { + try { file.getAbsolutePath(); File dest = new File(file.getAbsolutePath() + "_broken"); int i = 0; - while (dest.exists()) - { + while (dest.exists()) { dest = new File(file.getAbsolutePath() + "_broken_" + i++); } Files.copy(file.toPath(), dest.toPath(), StandardCopyOption.REPLACE_EXISTING); @@ -226,16 +196,14 @@ public class YamlConfiguration extends FileConfiguration PS.debug("&c============ Full stacktrace ============"); ex.printStackTrace(); PS.debug("&c========================================="); - } - catch (final IOException e) - { + } catch (final IOException e) { e.printStackTrace(); } } - + return config; } - + /** * Creates a new {@link YamlConfiguration}, loading from the given stream. *

@@ -251,30 +219,26 @@ public class YamlConfiguration extends FileConfiguration * @see #loadConfiguration(Reader) */ @Deprecated - public static YamlConfiguration loadConfiguration(final InputStream stream) - { - if (stream == null) { throw new NullPointerException("Stream cannot be null"); } - + public static YamlConfiguration loadConfiguration(final InputStream stream) { + if (stream == null) { + throw new NullPointerException("Stream cannot be null"); + } + final YamlConfiguration config = new YamlConfiguration(); - - try - { + + try { config.load(stream); - } - catch (final IOException ex) - { + } catch (final IOException ex) { PS.debug("Cannot load configuration from stream"); ex.printStackTrace(); - } - catch (final InvalidConfigurationException ex) - { + } catch (final InvalidConfigurationException ex) { ex.printStackTrace(); PS.debug("Cannot load configuration from stream"); } - + return config; } - + /** * Creates a new {@link YamlConfiguration}, loading from the given reader. *

@@ -286,27 +250,23 @@ public class YamlConfiguration extends FileConfiguration * @return resulting configuration * @throws IllegalArgumentException Thrown if stream is null */ - public static YamlConfiguration loadConfiguration(final Reader reader) - { - if (reader == null) { throw new NullPointerException("Reader cannot be null"); } - + public static YamlConfiguration loadConfiguration(final Reader reader) { + if (reader == null) { + throw new NullPointerException("Reader cannot be null"); + } + final YamlConfiguration config = new YamlConfiguration(); - - try - { + + try { config.load(reader); - } - catch (final IOException ex) - { + } catch (final IOException ex) { + PS.debug("Cannot load configuration from stream"); + ex.printStackTrace(); + } catch (final InvalidConfigurationException ex) { PS.debug("Cannot load configuration from stream"); ex.printStackTrace(); } - catch (final InvalidConfigurationException ex) - { - PS.debug("Cannot load configuration from stream"); - ex.printStackTrace(); - } - + return config; } } diff --git a/src/main/java/com/intellectualcrafters/configuration/file/YamlConfigurationOptions.java b/src/main/java/com/intellectualcrafters/configuration/file/YamlConfigurationOptions.java index 75eae9250..236325ae0 100644 --- a/src/main/java/com/intellectualcrafters/configuration/file/YamlConfigurationOptions.java +++ b/src/main/java/com/intellectualcrafters/configuration/file/YamlConfigurationOptions.java @@ -4,49 +4,42 @@ package com.intellectualcrafters.configuration.file; * Various settings for controlling the input and output of a {@link * YamlConfiguration} */ -public class YamlConfigurationOptions extends FileConfigurationOptions -{ +public class YamlConfigurationOptions extends FileConfigurationOptions { private int indent = 2; - - protected YamlConfigurationOptions(final YamlConfiguration configuration) - { + + protected YamlConfigurationOptions(final YamlConfiguration configuration) { super(configuration); } - + @Override - public YamlConfiguration configuration() - { + public YamlConfiguration configuration() { return (YamlConfiguration) super.configuration(); } - + @Override - public YamlConfigurationOptions copyDefaults(final boolean value) - { + public YamlConfigurationOptions copyDefaults(final boolean value) { super.copyDefaults(value); return this; } - + @Override - public YamlConfigurationOptions pathSeparator(final char value) - { + public YamlConfigurationOptions pathSeparator(final char value) { super.pathSeparator(value); return this; } - + @Override - public YamlConfigurationOptions header(final String value) - { + public YamlConfigurationOptions header(final String value) { super.header(value); return this; } - + @Override - public YamlConfigurationOptions copyHeader(final boolean value) - { + public YamlConfigurationOptions copyHeader(final boolean value) { super.copyHeader(value); return this; } - + /** * Gets how much spaces should be used to indent each line. *

@@ -54,11 +47,10 @@ public class YamlConfigurationOptions extends FileConfigurationOptions * * @return How much to indent by */ - public int indent() - { + public int indent() { return indent; } - + /** * Sets how much spaces should be used to indent each line. *

@@ -67,11 +59,14 @@ public class YamlConfigurationOptions extends FileConfigurationOptions * @param value New indent * @return This object, for chaining */ - public YamlConfigurationOptions indent(final int value) - { - if (value < 2) { throw new IllegalArgumentException("Indent must be at least 2 characters"); } - if (value > 9) { throw new IllegalArgumentException("Indent cannot be greater than 9 characters"); } - + public YamlConfigurationOptions indent(final int value) { + if (value < 2) { + throw new IllegalArgumentException("Indent must be at least 2 characters"); + } + if (value > 9) { + throw new IllegalArgumentException("Indent cannot be greater than 9 characters"); + } + indent = value; return this; } diff --git a/src/main/java/com/intellectualcrafters/configuration/file/YamlConstructor.java b/src/main/java/com/intellectualcrafters/configuration/file/YamlConstructor.java index 688a53791..0689c06d9 100644 --- a/src/main/java/com/intellectualcrafters/configuration/file/YamlConstructor.java +++ b/src/main/java/com/intellectualcrafters/configuration/file/YamlConstructor.java @@ -10,47 +10,39 @@ import org.yaml.snakeyaml.nodes.Tag; import com.intellectualcrafters.configuration.serialization.ConfigurationSerialization; -public class YamlConstructor extends SafeConstructor -{ - - public YamlConstructor() - { +public class YamlConstructor extends SafeConstructor { + + public YamlConstructor() { yamlConstructors.put(Tag.MAP, new ConstructCustomObject()); } - - private class ConstructCustomObject extends ConstructYamlMap - { + + private class ConstructCustomObject extends ConstructYamlMap { @Override - public Object construct(final Node node) - { - if (node.isTwoStepsConstruction()) { throw new YAMLException("Unexpected referential mapping structure. Node: " + node); } - + public Object construct(final Node node) { + if (node.isTwoStepsConstruction()) { + throw new YAMLException("Unexpected referential mapping structure. Node: " + node); + } + final Map raw = (Map) super.construct(node); - - if (raw.containsKey(ConfigurationSerialization.SERIALIZED_TYPE_KEY)) - { + + if (raw.containsKey(ConfigurationSerialization.SERIALIZED_TYPE_KEY)) { final Map typed = new LinkedHashMap(raw.size()); - for (final Map.Entry entry : raw.entrySet()) - { + for (final Map.Entry entry : raw.entrySet()) { typed.put(entry.getKey().toString(), entry.getValue()); } - - try - { + + try { return ConfigurationSerialization.deserializeObject(typed); - } - catch (final IllegalArgumentException ex) - { + } catch (final IllegalArgumentException ex) { throw new YAMLException("Could not deserialize object", ex); } } - + return raw; } - + @Override - public void construct2ndStep(final Node node, final Object object) - { + public void construct2ndStep(final Node node, final Object object) { throw new YAMLException("Unexpected referential mapping structure. Node: " + node); } } diff --git a/src/main/java/com/intellectualcrafters/configuration/file/YamlRepresenter.java b/src/main/java/com/intellectualcrafters/configuration/file/YamlRepresenter.java index f5bf748f2..3110456af 100644 --- a/src/main/java/com/intellectualcrafters/configuration/file/YamlRepresenter.java +++ b/src/main/java/com/intellectualcrafters/configuration/file/YamlRepresenter.java @@ -10,34 +10,28 @@ import com.intellectualcrafters.configuration.ConfigurationSection; import com.intellectualcrafters.configuration.serialization.ConfigurationSerializable; import com.intellectualcrafters.configuration.serialization.ConfigurationSerialization; -public class YamlRepresenter extends Representer -{ - - public YamlRepresenter() - { +public class YamlRepresenter extends Representer { + + public YamlRepresenter() { multiRepresenters.put(ConfigurationSection.class, new RepresentConfigurationSection()); multiRepresenters.put(ConfigurationSerializable.class, new RepresentConfigurationSerializable()); } - - private class RepresentConfigurationSection extends RepresentMap - { + + private class RepresentConfigurationSection extends RepresentMap { @Override - public Node representData(final Object data) - { + public Node representData(final Object data) { return super.representData(((ConfigurationSection) data).getValues(false)); } } - - private class RepresentConfigurationSerializable extends RepresentMap - { + + private class RepresentConfigurationSerializable extends RepresentMap { @Override - public Node representData(final Object data) - { + public Node representData(final Object data) { final ConfigurationSerializable serializable = (ConfigurationSerializable) data; final Map values = new LinkedHashMap(); values.put(ConfigurationSerialization.SERIALIZED_TYPE_KEY, ConfigurationSerialization.getAlias(serializable.getClass())); values.putAll(serializable.serialize()); - + return super.representData(values); } } diff --git a/src/main/java/com/intellectualcrafters/configuration/serialization/ConfigurationSerializable.java b/src/main/java/com/intellectualcrafters/configuration/serialization/ConfigurationSerializable.java index 0cca20083..4ffedde1f 100644 --- a/src/main/java/com/intellectualcrafters/configuration/serialization/ConfigurationSerializable.java +++ b/src/main/java/com/intellectualcrafters/configuration/serialization/ConfigurationSerializable.java @@ -21,9 +21,8 @@ import java.util.Map; * @see DelegateDeserialization * @see SerializableAs */ -public interface ConfigurationSerializable -{ - +public interface ConfigurationSerializable { + /** * Creates a Map representation of this class. *

diff --git a/src/main/java/com/intellectualcrafters/configuration/serialization/ConfigurationSerialization.java b/src/main/java/com/intellectualcrafters/configuration/serialization/ConfigurationSerialization.java index 17eb82574..2279db37e 100644 --- a/src/main/java/com/intellectualcrafters/configuration/serialization/ConfigurationSerialization.java +++ b/src/main/java/com/intellectualcrafters/configuration/serialization/ConfigurationSerialization.java @@ -14,137 +14,107 @@ import com.intellectualcrafters.configuration.Configuration; /** * Utility class for storing and retrieving classes for {@link Configuration}. */ -public class ConfigurationSerialization -{ +public class ConfigurationSerialization { public static final String SERIALIZED_TYPE_KEY = "=="; private final Class clazz; private static Map> aliases = new HashMap>(); - - protected ConfigurationSerialization(final Class clazz) - { + + protected ConfigurationSerialization(final Class clazz) { this.clazz = clazz; } - - protected Method getMethod(final String name, final boolean isStatic) - { - try - { + + protected Method getMethod(final String name, final boolean isStatic) { + try { final Method method = clazz.getDeclaredMethod(name, Map.class); - - if (!ConfigurationSerializable.class.isAssignableFrom(method.getReturnType())) { return null; } - if (Modifier.isStatic(method.getModifiers()) != isStatic) { return null; } - + + if (!ConfigurationSerializable.class.isAssignableFrom(method.getReturnType())) { + return null; + } + if (Modifier.isStatic(method.getModifiers()) != isStatic) { + return null; + } + return method; - } - catch (final NoSuchMethodException ex) - { + } catch (final NoSuchMethodException ex) { return null; - } - catch (final SecurityException ex) - { + } catch (final SecurityException ex) { return null; } } - - protected Constructor getConstructor() - { - try - { + + protected Constructor getConstructor() { + try { return clazz.getConstructor(Map.class); - } - catch (final NoSuchMethodException ex) - { + } catch (final NoSuchMethodException ex) { return null; - } - catch (final SecurityException ex) - { + } catch (final SecurityException ex) { return null; } } - - protected ConfigurationSerializable deserializeViaMethod(final Method method, final Map args) - { - try - { + + protected ConfigurationSerializable deserializeViaMethod(final Method method, final Map args) { + try { final ConfigurationSerializable result = (ConfigurationSerializable) method.invoke(null, args); - - if (result == null) - { + + if (result == null) { Logger.getLogger(ConfigurationSerialization.class.getName()).log(Level.SEVERE, "Could not call method '" + method.toString() + "' of " + clazz + " for deserialization: method returned null"); - } - else - { + } else { return result; } - } - catch (final Throwable ex) - { - Logger.getLogger(ConfigurationSerialization.class.getName()).log( - Level.SEVERE, - "Could not call method '" + method.toString() + "' of " + clazz + " for deserialization", + } catch (final Throwable ex) { + Logger.getLogger(ConfigurationSerialization.class.getName()).log(Level.SEVERE, "Could not call method '" + method.toString() + "' of " + clazz + " for deserialization", ex instanceof InvocationTargetException ? ex.getCause() : ex); } - + return null; } - - protected ConfigurationSerializable deserializeViaCtor(final Constructor ctor, final Map args) - { - try - { + + protected ConfigurationSerializable deserializeViaCtor(final Constructor ctor, final Map args) { + try { return ctor.newInstance(args); - } - catch (final Throwable ex) - { - Logger.getLogger(ConfigurationSerialization.class.getName()).log( - Level.SEVERE, - "Could not call constructor '" + ctor.toString() + "' of " + clazz + " for deserialization", + } catch (final Throwable ex) { + Logger.getLogger(ConfigurationSerialization.class.getName()).log(Level.SEVERE, "Could not call constructor '" + ctor.toString() + "' of " + clazz + " for deserialization", ex instanceof InvocationTargetException ? ex.getCause() : ex); } - + return null; } - - public ConfigurationSerializable deserialize(final Map args) - { - if (args == null) { throw new NullPointerException("Args must not be null"); } + + public ConfigurationSerializable deserialize(final Map args) { + if (args == null) { + throw new NullPointerException("Args must not be null"); + } ConfigurationSerializable result = null; Method method = null; - - if (result == null) - { + + if (result == null) { method = getMethod("deserialize", true); - - if (method != null) - { + + if (method != null) { result = deserializeViaMethod(method, args); } } - - if (result == null) - { + + if (result == null) { method = getMethod("valueOf", true); - - if (method != null) - { + + if (method != null) { result = deserializeViaMethod(method, args); } } - - if (result == null) - { + + if (result == null) { final Constructor constructor = getConstructor(); - - if (constructor != null) - { + + if (constructor != null) { result = deserializeViaCtor(constructor, args); } } - + return result; } - + /** * Attempts to deserialize the given arguments into a new instance of the * given class. @@ -160,11 +130,10 @@ public class ConfigurationSerialization * @param clazz Class to deserialize into * @return New instance of the specified class */ - public static ConfigurationSerializable deserializeObject(final Map args, final Class clazz) - { + public static ConfigurationSerializable deserializeObject(final Map args, final Class clazz) { return new ConfigurationSerialization(clazz).deserialize(args); } - + /** * Attempts to deserialize the given arguments into a new instance of the * given class. @@ -179,51 +148,46 @@ public class ConfigurationSerialization * @param args Arguments for deserialization * @return New instance of the specified class */ - public static ConfigurationSerializable deserializeObject(final Map args) - { + public static ConfigurationSerializable deserializeObject(final Map args) { Class clazz = null; - - if (args.containsKey(SERIALIZED_TYPE_KEY)) - { - try - { + + if (args.containsKey(SERIALIZED_TYPE_KEY)) { + try { final String alias = (String) args.get(SERIALIZED_TYPE_KEY); - - if (alias == null) { throw new IllegalArgumentException("Cannot have null alias"); } + + if (alias == null) { + throw new IllegalArgumentException("Cannot have null alias"); + } clazz = getClassByAlias(alias); - if (clazz == null) { throw new IllegalArgumentException("Specified class does not exist ('" + alias + "')"); } - } - catch (final ClassCastException ex) - { + if (clazz == null) { + throw new IllegalArgumentException("Specified class does not exist ('" + alias + "')"); + } + } catch (final ClassCastException ex) { ex.fillInStackTrace(); throw ex; } - } - else - { + } else { throw new IllegalArgumentException("Args doesn't contain type key ('" + SERIALIZED_TYPE_KEY + "')"); } - + return new ConfigurationSerialization(clazz).deserialize(args); } - + /** * Registers the given {@link ConfigurationSerializable} class by its * alias * * @param clazz Class to register */ - public static void registerClass(final Class clazz) - { + public static void registerClass(final Class clazz) { final DelegateDeserialization delegate = clazz.getAnnotation(DelegateDeserialization.class); - - if (delegate == null) - { + + if (delegate == null) { registerClass(clazz, getAlias(clazz)); registerClass(clazz, clazz.getName()); } } - + /** * Registers the given alias to the specified {@link * ConfigurationSerializable} class @@ -232,33 +196,29 @@ public class ConfigurationSerialization * @param alias Alias to register as * @see SerializableAs */ - public static void registerClass(final Class clazz, final String alias) - { + public static void registerClass(final Class clazz, final String alias) { aliases.put(alias, clazz); } - + /** * Unregisters the specified alias to a {@link ConfigurationSerializable} * * @param alias Alias to unregister */ - public static void unregisterClass(final String alias) - { + public static void unregisterClass(final String alias) { aliases.remove(alias); } - + /** * Unregisters any aliases for the specified {@link * ConfigurationSerializable} class * * @param clazz Class to unregister */ - public static void unregisterClass(final Class clazz) - { - while (aliases.values().remove(clazz)) - {} + public static void unregisterClass(final Class clazz) { + while (aliases.values().remove(clazz)) {} } - + /** * Attempts to get a registered {@link ConfigurationSerializable} class by * its alias @@ -266,11 +226,10 @@ public class ConfigurationSerialization * @param alias Alias of the serializable * @return Registered class, or null if not found */ - public static Class getClassByAlias(final String alias) - { + public static Class getClassByAlias(final String alias) { return aliases.get(alias); } - + /** * Gets the correct alias for the given {@link ConfigurationSerializable} * class @@ -278,29 +237,25 @@ public class ConfigurationSerialization * @param clazz Class to get alias for * @return Alias to use for the class */ - public static String getAlias(final Class clazz) - { + public static String getAlias(final Class clazz) { DelegateDeserialization delegate = clazz.getAnnotation(DelegateDeserialization.class); - - if (delegate != null) - { - if ((delegate.value() == null) || (delegate.value() == clazz)) - { + + if (delegate != null) { + if ((delegate.value() == null) || (delegate.value() == clazz)) { delegate = null; - } - else - { + } else { return getAlias(delegate.value()); } } - - if (delegate == null) - { + + if (delegate == null) { final SerializableAs alias = clazz.getAnnotation(SerializableAs.class); - - if ((alias != null) && (alias.value() != null)) { return alias.value(); } + + if ((alias != null) && (alias.value() != null)) { + return alias.value(); + } } - + return clazz.getName(); } } diff --git a/src/main/java/com/intellectualcrafters/configuration/serialization/DelegateDeserialization.java b/src/main/java/com/intellectualcrafters/configuration/serialization/DelegateDeserialization.java index bb0e04d68..bc505ccf2 100644 --- a/src/main/java/com/intellectualcrafters/configuration/serialization/DelegateDeserialization.java +++ b/src/main/java/com/intellectualcrafters/configuration/serialization/DelegateDeserialization.java @@ -11,8 +11,7 @@ import java.lang.annotation.Target; */ @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.TYPE) -public @interface DelegateDeserialization -{ +public @interface DelegateDeserialization { /** * Which class should be used as a delegate for this classes * deserialization diff --git a/src/main/java/com/intellectualcrafters/configuration/serialization/SerializableAs.java b/src/main/java/com/intellectualcrafters/configuration/serialization/SerializableAs.java index fde872a1b..668da9ac9 100644 --- a/src/main/java/com/intellectualcrafters/configuration/serialization/SerializableAs.java +++ b/src/main/java/com/intellectualcrafters/configuration/serialization/SerializableAs.java @@ -21,8 +21,7 @@ import java.lang.annotation.Target; */ @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.TYPE) -public @interface SerializableAs -{ +public @interface SerializableAs { /** * This is the name your class will be stored and retrieved as. *

diff --git a/src/main/java/com/intellectualcrafters/jnbt/ByteArrayTag.java b/src/main/java/com/intellectualcrafters/jnbt/ByteArrayTag.java index 146f4e658..48a7ce06c 100644 --- a/src/main/java/com/intellectualcrafters/jnbt/ByteArrayTag.java +++ b/src/main/java/com/intellectualcrafters/jnbt/ByteArrayTag.java @@ -3,56 +3,48 @@ package com.intellectualcrafters.jnbt; /** * The {@code TAG_Byte_Array} tag. */ -public final class ByteArrayTag extends Tag -{ +public final class ByteArrayTag extends Tag { private final byte[] value; - + /** * Creates the tag with an empty name. * * @param value the value of the tag */ - public ByteArrayTag(final byte[] value) - { + public ByteArrayTag(final byte[] value) { super(); this.value = value; } - + /** * Creates the tag. * * @param name the name of the tag * @param value the value of the tag */ - public ByteArrayTag(final String name, final byte[] value) - { + public ByteArrayTag(final String name, final byte[] value) { super(name); this.value = value; } - + @Override - public byte[] getValue() - { + public byte[] getValue() { return value; } - + @Override - public String toString() - { + public String toString() { final StringBuilder hex = new StringBuilder(); - for (final byte b : value) - { + for (final byte b : value) { final String hexDigits = Integer.toHexString(b).toUpperCase(); - if (hexDigits.length() == 1) - { + if (hexDigits.length() == 1) { hex.append("0"); } hex.append(hexDigits).append(" "); } final String name = getName(); String append = ""; - if ((name != null) && !name.equals("")) - { + if ((name != null) && !name.equals("")) { append = "(\"" + getName() + "\")"; } return "TAG_Byte_Array" + append + ": " + hex; diff --git a/src/main/java/com/intellectualcrafters/jnbt/ByteTag.java b/src/main/java/com/intellectualcrafters/jnbt/ByteTag.java index fbdb1d30e..40dc78046 100644 --- a/src/main/java/com/intellectualcrafters/jnbt/ByteTag.java +++ b/src/main/java/com/intellectualcrafters/jnbt/ByteTag.java @@ -3,46 +3,40 @@ package com.intellectualcrafters.jnbt; /** * The {@code TAG_Byte} tag. */ -public final class ByteTag extends Tag -{ +public final class ByteTag extends Tag { private final byte value; - + /** * Creates the tag with an empty name. * * @param value the value of the tag */ - public ByteTag(final byte value) - { + public ByteTag(final byte value) { super(); this.value = value; } - + /** * Creates the tag. * * @param name the name of the tag * @param value the value of the tag */ - public ByteTag(final String name, final byte value) - { + public ByteTag(final String name, final byte value) { super(name); this.value = value; } - + @Override - public Byte getValue() - { + public Byte getValue() { return value; } - + @Override - public String toString() - { + public String toString() { final String name = getName(); String append = ""; - if ((name != null) && !name.equals("")) - { + if ((name != null) && !name.equals("")) { append = "(\"" + getName() + "\")"; } return "TAG_Byte" + append + ": " + value; diff --git a/src/main/java/com/intellectualcrafters/jnbt/CompoundTag.java b/src/main/java/com/intellectualcrafters/jnbt/CompoundTag.java index 6400f748f..0709c06c4 100644 --- a/src/main/java/com/intellectualcrafters/jnbt/CompoundTag.java +++ b/src/main/java/com/intellectualcrafters/jnbt/CompoundTag.java @@ -8,33 +8,30 @@ import java.util.Map; /** * The {@code TAG_Compound} tag. */ -public final class CompoundTag extends Tag -{ +public final class CompoundTag extends Tag { private final Map value; - + /** * Creates the tag with an empty name. * * @param value the value of the tag */ - public CompoundTag(final Map value) - { + public CompoundTag(final Map value) { super(); this.value = Collections.unmodifiableMap(value); } - + /** * Creates the tag. * * @param name the name of the tag * @param value the value of the tag */ - public CompoundTag(final String name, final Map value) - { + public CompoundTag(final String name, final Map value) { super(name); this.value = Collections.unmodifiableMap(value); } - + /** * Returns whether this compound tag contains the given key. * @@ -42,17 +39,15 @@ public final class CompoundTag extends Tag * * @return true if the tag contains the given key */ - public boolean containsKey(final String key) - { + public boolean containsKey(final String key) { return value.containsKey(key); } - + @Override - public Map getValue() - { + public Map getValue() { return value; } - + /** * Return a new compound tag with the given values. * @@ -60,21 +55,19 @@ public final class CompoundTag extends Tag * * @return the new compound tag */ - public CompoundTag setValue(final Map value) - { + public CompoundTag setValue(final Map value) { return new CompoundTag(getName(), value); } - + /** * Create a compound tag builder. * * @return the builder */ - public CompoundTagBuilder createBuilder() - { + public CompoundTagBuilder createBuilder() { return new CompoundTagBuilder(new HashMap(value)); } - + /** * Get a byte array named with the given key.

If the key does not exist or its value is not a byte array * tag, then an empty byte array will be returned.

@@ -83,19 +76,15 @@ public final class CompoundTag extends Tag * * @return a byte array */ - public byte[] getByteArray(final String key) - { + public byte[] getByteArray(final String key) { final Tag tag = value.get(key); - if (tag instanceof ByteArrayTag) - { + if (tag instanceof ByteArrayTag) { return ((ByteArrayTag) tag).getValue(); - } - else - { + } else { return new byte[0]; } } - + /** * Get a byte named with the given key.

If the key does not exist or its value is not a byte tag, then * {@code 0} will be returned.

@@ -104,19 +93,15 @@ public final class CompoundTag extends Tag * * @return a byte */ - public byte getByte(final String key) - { + public byte getByte(final String key) { final Tag tag = value.get(key); - if (tag instanceof ByteTag) - { + if (tag instanceof ByteTag) { return ((ByteTag) tag).getValue(); - } - else - { + } else { return (byte) 0; } } - + /** * Get a double named with the given key.

If the key does not exist or its value is not a double tag, then * {@code 0} will be returned.

@@ -125,19 +110,15 @@ public final class CompoundTag extends Tag * * @return a double */ - public double getDouble(final String key) - { + public double getDouble(final String key) { final Tag tag = value.get(key); - if (tag instanceof DoubleTag) - { + if (tag instanceof DoubleTag) { return ((DoubleTag) tag).getValue(); - } - else - { + } else { return 0; } } - + /** * Get a double named with the given key, even if it's another type of number.

If the key does not exist or * its value is not a number, then {@code 0} will be returned.

@@ -146,39 +127,25 @@ public final class CompoundTag extends Tag * * @return a double */ - public double asDouble(final String key) - { + public double asDouble(final String key) { final Tag tag = value.get(key); - if (tag instanceof ByteTag) - { + if (tag instanceof ByteTag) { return ((ByteTag) tag).getValue(); - } - else if (tag instanceof ShortTag) - { + } else if (tag instanceof ShortTag) { return ((ShortTag) tag).getValue(); - } - else if (tag instanceof IntTag) - { + } else if (tag instanceof IntTag) { return ((IntTag) tag).getValue(); - } - else if (tag instanceof LongTag) - { + } else if (tag instanceof LongTag) { return ((LongTag) tag).getValue(); - } - else if (tag instanceof FloatTag) - { + } else if (tag instanceof FloatTag) { return ((FloatTag) tag).getValue(); - } - else if (tag instanceof DoubleTag) - { + } else if (tag instanceof DoubleTag) { return ((DoubleTag) tag).getValue(); - } - else - { + } else { return 0; } } - + /** * Get a float named with the given key.

If the key does not exist or its value is not a float tag, then * {@code 0} will be returned.

@@ -187,19 +154,15 @@ public final class CompoundTag extends Tag * * @return a float */ - public float getFloat(final String key) - { + public float getFloat(final String key) { final Tag tag = value.get(key); - if (tag instanceof FloatTag) - { + if (tag instanceof FloatTag) { return ((FloatTag) tag).getValue(); - } - else - { + } else { return 0; } } - + /** * Get a {@code int[]} named with the given key.

If the key does not exist or its value is not an int array * tag, then an empty array will be returned.

@@ -208,19 +171,15 @@ public final class CompoundTag extends Tag * * @return an int array */ - public int[] getIntArray(final String key) - { + public int[] getIntArray(final String key) { final Tag tag = value.get(key); - if (tag instanceof IntArrayTag) - { + if (tag instanceof IntArrayTag) { return ((IntArrayTag) tag).getValue(); - } - else - { + } else { return new int[0]; } } - + /** * Get an int named with the given key.

If the key does not exist or its value is not an int tag, then * {@code 0} will be returned.

@@ -229,19 +188,15 @@ public final class CompoundTag extends Tag * * @return an int */ - public int getInt(final String key) - { + public int getInt(final String key) { final Tag tag = value.get(key); - if (tag instanceof IntTag) - { + if (tag instanceof IntTag) { return ((IntTag) tag).getValue(); - } - else - { + } else { return 0; } } - + /** * Get an int named with the given key, even if it's another type of number.

If the key does not exist or * its value is not a number, then {@code 0} will be returned.

@@ -250,39 +205,25 @@ public final class CompoundTag extends Tag * * @return an int */ - public int asInt(final String key) - { + public int asInt(final String key) { final Tag tag = value.get(key); - if (tag instanceof ByteTag) - { + if (tag instanceof ByteTag) { return ((ByteTag) tag).getValue(); - } - else if (tag instanceof ShortTag) - { + } else if (tag instanceof ShortTag) { return ((ShortTag) tag).getValue(); - } - else if (tag instanceof IntTag) - { + } else if (tag instanceof IntTag) { return ((IntTag) tag).getValue(); - } - else if (tag instanceof LongTag) - { + } else if (tag instanceof LongTag) { return ((LongTag) tag).getValue().intValue(); - } - else if (tag instanceof FloatTag) - { + } else if (tag instanceof FloatTag) { return ((FloatTag) tag).getValue().intValue(); - } - else if (tag instanceof DoubleTag) - { + } else if (tag instanceof DoubleTag) { return ((DoubleTag) tag).getValue().intValue(); - } - else - { + } else { return 0; } } - + /** * Get a list of tags named with the given key.

If the key does not exist or its value is not a list tag, * then an empty list will be returned.

@@ -291,19 +232,15 @@ public final class CompoundTag extends Tag * * @return a list of tags */ - public List getList(final String key) - { + public List getList(final String key) { final Tag tag = value.get(key); - if (tag instanceof ListTag) - { + if (tag instanceof ListTag) { return ((ListTag) tag).getValue(); - } - else - { + } else { return Collections.emptyList(); } } - + /** * Get a {@code TagList} named with the given key.

If the key does not exist or its value is not a list * tag, then an empty tag list will be returned.

@@ -312,19 +249,15 @@ public final class CompoundTag extends Tag * * @return a tag list instance */ - public ListTag getListTag(final String key) - { + public ListTag getListTag(final String key) { final Tag tag = value.get(key); - if (tag instanceof ListTag) - { + if (tag instanceof ListTag) { return (ListTag) tag; - } - else - { + } else { return new ListTag(key, StringTag.class, Collections. emptyList()); } } - + /** * Get a list of tags named with the given key.

If the key does not exist or its value is not a list tag, * then an empty list will be returned. If the given key references a list but the list of of a different type, then @@ -337,27 +270,20 @@ public final class CompoundTag extends Tag * @return a list of tags */ @SuppressWarnings("unchecked") - public List getList(final String key, final Class listType) - { + public List getList(final String key, final Class listType) { final Tag tag = value.get(key); - if (tag instanceof ListTag) - { + if (tag instanceof ListTag) { final ListTag listTag = (ListTag) tag; - if (listTag.getType().equals(listType)) - { + if (listTag.getType().equals(listType)) { return (List) listTag.getValue(); - } - else - { + } else { return Collections.emptyList(); } - } - else - { + } else { return Collections.emptyList(); } } - + /** * Get a long named with the given key.

If the key does not exist or its value is not a long tag, then * {@code 0} will be returned.

@@ -366,19 +292,15 @@ public final class CompoundTag extends Tag * * @return a long */ - public long getLong(final String key) - { + public long getLong(final String key) { final Tag tag = value.get(key); - if (tag instanceof LongTag) - { + if (tag instanceof LongTag) { return ((LongTag) tag).getValue(); - } - else - { + } else { return 0L; } } - + /** * Get a long named with the given key, even if it's another type of number.

If the key does not exist or * its value is not a number, then {@code 0} will be returned.

@@ -387,39 +309,25 @@ public final class CompoundTag extends Tag * * @return a long */ - public long asLong(final String key) - { + public long asLong(final String key) { final Tag tag = value.get(key); - if (tag instanceof ByteTag) - { + if (tag instanceof ByteTag) { return ((ByteTag) tag).getValue(); - } - else if (tag instanceof ShortTag) - { + } else if (tag instanceof ShortTag) { return ((ShortTag) tag).getValue(); - } - else if (tag instanceof IntTag) - { + } else if (tag instanceof IntTag) { return ((IntTag) tag).getValue(); - } - else if (tag instanceof LongTag) - { + } else if (tag instanceof LongTag) { return ((LongTag) tag).getValue(); - } - else if (tag instanceof FloatTag) - { + } else if (tag instanceof FloatTag) { return ((FloatTag) tag).getValue().longValue(); - } - else if (tag instanceof DoubleTag) - { + } else if (tag instanceof DoubleTag) { return ((DoubleTag) tag).getValue().longValue(); - } - else - { + } else { return 0L; } } - + /** * Get a short named with the given key.

If the key does not exist or its value is not a short tag, then * {@code 0} will be returned.

@@ -428,19 +336,15 @@ public final class CompoundTag extends Tag * * @return a short */ - public short getShort(final String key) - { + public short getShort(final String key) { final Tag tag = value.get(key); - if (tag instanceof ShortTag) - { + if (tag instanceof ShortTag) { return ((ShortTag) tag).getValue(); - } - else - { + } else { return 0; } } - + /** * Get a string named with the given key.

If the key does not exist or its value is not a string tag, then * {@code ""} will be returned.

@@ -449,32 +353,25 @@ public final class CompoundTag extends Tag * * @return a string */ - public String getString(final String key) - { + public String getString(final String key) { final Tag tag = value.get(key); - if (tag instanceof StringTag) - { + if (tag instanceof StringTag) { return ((StringTag) tag).getValue(); - } - else - { + } else { return ""; } } - + @Override - public String toString() - { + public String toString() { final String name = getName(); String append = ""; - if ((name != null) && !name.equals("")) - { + if ((name != null) && !name.equals("")) { append = "(\"" + getName() + "\")"; } final StringBuilder bldr = new StringBuilder(); bldr.append("TAG_Compound").append(append).append(": ").append(value.size()).append(" entries\r\n{\r\n"); - for (final Map.Entry entry : value.entrySet()) - { + for (final Map.Entry entry : value.entrySet()) { bldr.append(" ").append(entry.getValue().toString().replaceAll("\r\n", "\r\n ")).append("\r\n"); } bldr.append("}"); diff --git a/src/main/java/com/intellectualcrafters/jnbt/CompoundTagBuilder.java b/src/main/java/com/intellectualcrafters/jnbt/CompoundTagBuilder.java index 69f4d7356..08eef4fc6 100644 --- a/src/main/java/com/intellectualcrafters/jnbt/CompoundTagBuilder.java +++ b/src/main/java/com/intellectualcrafters/jnbt/CompoundTagBuilder.java @@ -8,39 +8,35 @@ import java.util.Map; /** * Helps create compound tags. */ -public class CompoundTagBuilder -{ +public class CompoundTagBuilder { private final Map entries; - + /** * Create a new instance. */ - CompoundTagBuilder() - { + CompoundTagBuilder() { entries = new HashMap(); } - + /** * Create a new instance and use the given map (which will be modified). * * @param value the value */ - CompoundTagBuilder(final Map value) - { + CompoundTagBuilder(final Map value) { checkNotNull(value); entries = value; } - + /** * Create a new builder instance. * * @return a new builder */ - public static CompoundTagBuilder create() - { + public static CompoundTagBuilder create() { return new CompoundTagBuilder(); } - + /** * Put the given key and tag into the compound tag. * @@ -49,14 +45,13 @@ public class CompoundTagBuilder * * @return this object */ - public CompoundTagBuilder put(final String key, final Tag value) - { + public CompoundTagBuilder put(final String key, final Tag value) { checkNotNull(key); checkNotNull(value); entries.put(key, value); return this; } - + /** * Put the given key and value into the compound tag as a {@code ByteArrayTag}. * @@ -65,11 +60,10 @@ public class CompoundTagBuilder * * @return this object */ - public CompoundTagBuilder putByteArray(final String key, final byte[] value) - { + public CompoundTagBuilder putByteArray(final String key, final byte[] value) { return put(key, new ByteArrayTag(key, value)); } - + /** * Put the given key and value into the compound tag as a {@code ByteTag}. * @@ -78,11 +72,10 @@ public class CompoundTagBuilder * * @return this object */ - public CompoundTagBuilder putByte(final String key, final byte value) - { + public CompoundTagBuilder putByte(final String key, final byte value) { return put(key, new ByteTag(key, value)); } - + /** * Put the given key and value into the compound tag as a {@code DoubleTag}. * @@ -91,11 +84,10 @@ public class CompoundTagBuilder * * @return this object */ - public CompoundTagBuilder putDouble(final String key, final double value) - { + public CompoundTagBuilder putDouble(final String key, final double value) { return put(key, new DoubleTag(key, value)); } - + /** * Put the given key and value into the compound tag as a {@code FloatTag}. * @@ -104,11 +96,10 @@ public class CompoundTagBuilder * * @return this object */ - public CompoundTagBuilder putFloat(final String key, final float value) - { + public CompoundTagBuilder putFloat(final String key, final float value) { return put(key, new FloatTag(key, value)); } - + /** * Put the given key and value into the compound tag as a {@code IntArrayTag}. * @@ -117,11 +108,10 @@ public class CompoundTagBuilder * * @return this object */ - public CompoundTagBuilder putIntArray(final String key, final int[] value) - { + public CompoundTagBuilder putIntArray(final String key, final int[] value) { return put(key, new IntArrayTag(key, value)); } - + /** * Put the given key and value into the compound tag as an {@code IntTag}. * @@ -130,11 +120,10 @@ public class CompoundTagBuilder * * @return this object */ - public CompoundTagBuilder putInt(final String key, final int value) - { + public CompoundTagBuilder putInt(final String key, final int value) { return put(key, new IntTag(key, value)); } - + /** * Put the given key and value into the compound tag as a {@code LongTag}. * @@ -143,11 +132,10 @@ public class CompoundTagBuilder * * @return this object */ - public CompoundTagBuilder putLong(final String key, final long value) - { + public CompoundTagBuilder putLong(final String key, final long value) { return put(key, new LongTag(key, value)); } - + /** * Put the given key and value into the compound tag as a {@code ShortTag}. * @@ -156,11 +144,10 @@ public class CompoundTagBuilder * * @return this object */ - public CompoundTagBuilder putShort(final String key, final short value) - { + public CompoundTagBuilder putShort(final String key, final short value) { return put(key, new ShortTag(key, value)); } - + /** * Put the given key and value into the compound tag as a {@code StringTag}. * @@ -169,11 +156,10 @@ public class CompoundTagBuilder * * @return this object */ - public CompoundTagBuilder putString(final String key, final String value) - { + public CompoundTagBuilder putString(final String key, final String value) { return put(key, new StringTag(key, value)); } - + /** * Put all the entries from the given map into this map. * @@ -181,26 +167,23 @@ public class CompoundTagBuilder * * @return this object */ - public CompoundTagBuilder putAll(final Map value) - { + public CompoundTagBuilder putAll(final Map value) { checkNotNull(value); - for (final Map.Entry entry : value.entrySet()) - { + for (final Map.Entry entry : value.entrySet()) { put(entry.getKey(), entry.getValue()); } return this; } - + /** * Build an unnamed compound tag with this builder's entries. * * @return the new compound tag */ - public CompoundTag build() - { + public CompoundTag build() { return new CompoundTag(new HashMap(entries)); } - + /** * Build a new compound tag with this builder's entries. * @@ -208,8 +191,7 @@ public class CompoundTagBuilder * * @return the created compound tag */ - public CompoundTag build(final String name) - { + public CompoundTag build(final String name) { return new CompoundTag(name, new HashMap(entries)); } } diff --git a/src/main/java/com/intellectualcrafters/jnbt/DoubleTag.java b/src/main/java/com/intellectualcrafters/jnbt/DoubleTag.java index 272571f16..7c6a577b7 100644 --- a/src/main/java/com/intellectualcrafters/jnbt/DoubleTag.java +++ b/src/main/java/com/intellectualcrafters/jnbt/DoubleTag.java @@ -3,46 +3,40 @@ package com.intellectualcrafters.jnbt; /** * The {@code TAG_Double} tag. */ -public final class DoubleTag extends Tag -{ +public final class DoubleTag extends Tag { private final double value; - + /** * Creates the tag with an empty name. * * @param value the value of the tag */ - public DoubleTag(final double value) - { + public DoubleTag(final double value) { super(); this.value = value; } - + /** * Creates the tag. * * @param name the name of the tag * @param value the value of the tag */ - public DoubleTag(final String name, final double value) - { + public DoubleTag(final String name, final double value) { super(name); this.value = value; } - + @Override - public Double getValue() - { + public Double getValue() { return value; } - + @Override - public String toString() - { + public String toString() { final String name = getName(); String append = ""; - if ((name != null) && !name.equals("")) - { + if ((name != null) && !name.equals("")) { append = "(\"" + getName() + "\")"; } return "TAG_Double" + append + ": " + value; diff --git a/src/main/java/com/intellectualcrafters/jnbt/EndTag.java b/src/main/java/com/intellectualcrafters/jnbt/EndTag.java index 811ab5e81..981925184 100644 --- a/src/main/java/com/intellectualcrafters/jnbt/EndTag.java +++ b/src/main/java/com/intellectualcrafters/jnbt/EndTag.java @@ -3,25 +3,21 @@ package com.intellectualcrafters.jnbt; /** * The {@code TAG_End} tag. */ -public final class EndTag extends Tag -{ +public final class EndTag extends Tag { /** * Creates the tag. */ - public EndTag() - { + public EndTag() { super(); } - + @Override - public Object getValue() - { + public Object getValue() { return null; } - + @Override - public String toString() - { + public String toString() { return "TAG_End"; } } diff --git a/src/main/java/com/intellectualcrafters/jnbt/FloatTag.java b/src/main/java/com/intellectualcrafters/jnbt/FloatTag.java index 6cb78472b..ae223ca57 100644 --- a/src/main/java/com/intellectualcrafters/jnbt/FloatTag.java +++ b/src/main/java/com/intellectualcrafters/jnbt/FloatTag.java @@ -3,46 +3,40 @@ package com.intellectualcrafters.jnbt; /** * The {@code TAG_Float} tag. */ -public final class FloatTag extends Tag -{ +public final class FloatTag extends Tag { private final float value; - + /** * Creates the tag with an empty name. * * @param value the value of the tag */ - public FloatTag(final float value) - { + public FloatTag(final float value) { super(); this.value = value; } - + /** * Creates the tag. * * @param name the name of the tag * @param value the value of the tag */ - public FloatTag(final String name, final float value) - { + public FloatTag(final String name, final float value) { super(name); this.value = value; } - + @Override - public Float getValue() - { + public Float getValue() { return value; } - + @Override - public String toString() - { + public String toString() { final String name = getName(); String append = ""; - if ((name != null) && !name.equals("")) - { + if ((name != null) && !name.equals("")) { append = "(\"" + getName() + "\")"; } return "TAG_Float" + append + ": " + value; diff --git a/src/main/java/com/intellectualcrafters/jnbt/IntArrayTag.java b/src/main/java/com/intellectualcrafters/jnbt/IntArrayTag.java index 14df42798..5a30bd41c 100644 --- a/src/main/java/com/intellectualcrafters/jnbt/IntArrayTag.java +++ b/src/main/java/com/intellectualcrafters/jnbt/IntArrayTag.java @@ -5,58 +5,50 @@ import static com.google.common.base.Preconditions.checkNotNull; /** * The {@code TAG_Int_Array} tag. */ -public final class IntArrayTag extends Tag -{ +public final class IntArrayTag extends Tag { private final int[] value; - + /** * Creates the tag with an empty name. * * @param value the value of the tag */ - public IntArrayTag(final int[] value) - { + public IntArrayTag(final int[] value) { super(); checkNotNull(value); this.value = value; } - + /** * Creates the tag. * * @param name the name of the tag * @param value the value of the tag */ - public IntArrayTag(final String name, final int[] value) - { + public IntArrayTag(final String name, final int[] value) { super(name); checkNotNull(value); this.value = value; } - + @Override - public int[] getValue() - { + public int[] getValue() { return value; } - + @Override - public String toString() - { + public String toString() { final StringBuilder hex = new StringBuilder(); - for (final int b : value) - { + for (final int b : value) { final String hexDigits = Integer.toHexString(b).toUpperCase(); - if (hexDigits.length() == 1) - { + if (hexDigits.length() == 1) { hex.append("0"); } hex.append(hexDigits).append(" "); } final String name = getName(); String append = ""; - if ((name != null) && !name.equals("")) - { + if ((name != null) && !name.equals("")) { append = "(\"" + getName() + "\")"; } return "TAG_Int_Array" + append + ": " + hex; diff --git a/src/main/java/com/intellectualcrafters/jnbt/IntTag.java b/src/main/java/com/intellectualcrafters/jnbt/IntTag.java index 389f4a67d..16f3487a9 100644 --- a/src/main/java/com/intellectualcrafters/jnbt/IntTag.java +++ b/src/main/java/com/intellectualcrafters/jnbt/IntTag.java @@ -3,46 +3,40 @@ package com.intellectualcrafters.jnbt; /** * The {@code TAG_Int} tag. */ -public final class IntTag extends Tag -{ +public final class IntTag extends Tag { private final int value; - + /** * Creates the tag with an empty name. * * @param value the value of the tag */ - public IntTag(final int value) - { + public IntTag(final int value) { super(); this.value = value; } - + /** * Creates the tag. * * @param name the name of the tag * @param value the value of the tag */ - public IntTag(final String name, final int value) - { + public IntTag(final String name, final int value) { super(name); this.value = value; } - + @Override - public Integer getValue() - { + public Integer getValue() { return value; } - + @Override - public String toString() - { + public String toString() { final String name = getName(); String append = ""; - if ((name != null) && !name.equals("")) - { + if ((name != null) && !name.equals("")) { append = "(\"" + getName() + "\")"; } return "TAG_Int" + append + ": " + value; diff --git a/src/main/java/com/intellectualcrafters/jnbt/ListTag.java b/src/main/java/com/intellectualcrafters/jnbt/ListTag.java index 6a859ed57..d19fb0634 100644 --- a/src/main/java/com/intellectualcrafters/jnbt/ListTag.java +++ b/src/main/java/com/intellectualcrafters/jnbt/ListTag.java @@ -9,25 +9,23 @@ import java.util.NoSuchElementException; /** * The {@code TAG_List} tag. */ -public final class ListTag extends Tag -{ +public final class ListTag extends Tag { private final Class type; private final List value; - + /** * Creates the tag with an empty name. * * @param type the type of tag * @param value the value of the tag */ - public ListTag(final Class type, final List value) - { + public ListTag(final Class type, final List value) { super(); checkNotNull(value); this.type = type; this.value = Collections.unmodifiableList(value); } - + /** * Creates the tag. * @@ -35,30 +33,27 @@ public final class ListTag extends Tag * @param type the type of tag * @param value the value of the tag */ - public ListTag(final String name, final Class type, final List value) - { + public ListTag(final String name, final Class type, final List value) { super(name); checkNotNull(value); this.type = type; this.value = Collections.unmodifiableList(value); } - + /** * Gets the type of item in this list. * * @return The type of item in this list. */ - public Class getType() - { + public Class getType() { return type; } - + @Override - public List getValue() - { + public List getValue() { return value; } - + /** * Create a new list tag with this tag's name and type. * @@ -66,11 +61,10 @@ public final class ListTag extends Tag * * @return a new list tag */ - public ListTag setValue(final List list) - { + public ListTag setValue(final List list) { return new ListTag(getName(), getType(), list); } - + /** * Get the tag if it exists at the given index. * @@ -78,18 +72,14 @@ public final class ListTag extends Tag * * @return the tag or null */ - public Tag getIfExists(final int index) - { - try - { + public Tag getIfExists(final int index) { + try { return value.get(index); - } - catch (final NoSuchElementException e) - { + } catch (final NoSuchElementException e) { return null; } } - + /** * Get a byte array named with the given index.

If the index does not exist or its value is not a byte * array tag, then an empty byte array will be returned.

@@ -98,19 +88,15 @@ public final class ListTag extends Tag * * @return a byte array */ - public byte[] getByteArray(final int index) - { + public byte[] getByteArray(final int index) { final Tag tag = getIfExists(index); - if (tag instanceof ByteArrayTag) - { + if (tag instanceof ByteArrayTag) { return ((ByteArrayTag) tag).getValue(); - } - else - { + } else { return new byte[0]; } } - + /** * Get a byte named with the given index.

If the index does not exist or its value is not a byte tag, then * {@code 0} will be returned.

@@ -119,19 +105,15 @@ public final class ListTag extends Tag * * @return a byte */ - public byte getByte(final int index) - { + public byte getByte(final int index) { final Tag tag = getIfExists(index); - if (tag instanceof ByteTag) - { + if (tag instanceof ByteTag) { return ((ByteTag) tag).getValue(); - } - else - { + } else { return (byte) 0; } } - + /** * Get a double named with the given index.

If the index does not exist or its value is not a double tag, * then {@code 0} will be returned.

@@ -140,19 +122,15 @@ public final class ListTag extends Tag * * @return a double */ - public double getDouble(final int index) - { + public double getDouble(final int index) { final Tag tag = getIfExists(index); - if (tag instanceof DoubleTag) - { + if (tag instanceof DoubleTag) { return ((DoubleTag) tag).getValue(); - } - else - { + } else { return 0; } } - + /** * Get a double named with the given index, even if it's another type of number.

If the index does not * exist or its value is not a number, then {@code 0} will be returned.

@@ -161,39 +139,25 @@ public final class ListTag extends Tag * * @return a double */ - public double asDouble(final int index) - { + public double asDouble(final int index) { final Tag tag = getIfExists(index); - if (tag instanceof ByteTag) - { + if (tag instanceof ByteTag) { return ((ByteTag) tag).getValue(); - } - else if (tag instanceof ShortTag) - { + } else if (tag instanceof ShortTag) { return ((ShortTag) tag).getValue(); - } - else if (tag instanceof IntTag) - { + } else if (tag instanceof IntTag) { return ((IntTag) tag).getValue(); - } - else if (tag instanceof LongTag) - { + } else if (tag instanceof LongTag) { return ((LongTag) tag).getValue(); - } - else if (tag instanceof FloatTag) - { + } else if (tag instanceof FloatTag) { return ((FloatTag) tag).getValue(); - } - else if (tag instanceof DoubleTag) - { + } else if (tag instanceof DoubleTag) { return ((DoubleTag) tag).getValue(); - } - else - { + } else { return 0; } } - + /** * Get a float named with the given index.

If the index does not exist or its value is not a float tag, * then {@code 0} will be returned.

@@ -202,19 +166,15 @@ public final class ListTag extends Tag * * @return a float */ - public float getFloat(final int index) - { + public float getFloat(final int index) { final Tag tag = getIfExists(index); - if (tag instanceof FloatTag) - { + if (tag instanceof FloatTag) { return ((FloatTag) tag).getValue(); - } - else - { + } else { return 0; } } - + /** * Get a {@code int[]} named with the given index.

If the index does not exist or its value is not an int * array tag, then an empty array will be returned.

@@ -223,19 +183,15 @@ public final class ListTag extends Tag * * @return an int array */ - public int[] getIntArray(final int index) - { + public int[] getIntArray(final int index) { final Tag tag = getIfExists(index); - if (tag instanceof IntArrayTag) - { + if (tag instanceof IntArrayTag) { return ((IntArrayTag) tag).getValue(); - } - else - { + } else { return new int[0]; } } - + /** * Get an int named with the given index.

If the index does not exist or its value is not an int tag, then * {@code 0} will be returned.

@@ -244,19 +200,15 @@ public final class ListTag extends Tag * * @return an int */ - public int getInt(final int index) - { + public int getInt(final int index) { final Tag tag = getIfExists(index); - if (tag instanceof IntTag) - { + if (tag instanceof IntTag) { return ((IntTag) tag).getValue(); - } - else - { + } else { return 0; } } - + /** * Get an int named with the given index, even if it's another type of number.

If the index does not exist * or its value is not a number, then {@code 0} will be returned.

@@ -265,39 +217,25 @@ public final class ListTag extends Tag * * @return an int */ - public int asInt(final int index) - { + public int asInt(final int index) { final Tag tag = getIfExists(index); - if (tag instanceof ByteTag) - { + if (tag instanceof ByteTag) { return ((ByteTag) tag).getValue(); - } - else if (tag instanceof ShortTag) - { + } else if (tag instanceof ShortTag) { return ((ShortTag) tag).getValue(); - } - else if (tag instanceof IntTag) - { + } else if (tag instanceof IntTag) { return ((IntTag) tag).getValue(); - } - else if (tag instanceof LongTag) - { + } else if (tag instanceof LongTag) { return ((LongTag) tag).getValue().intValue(); - } - else if (tag instanceof FloatTag) - { + } else if (tag instanceof FloatTag) { return ((FloatTag) tag).getValue().intValue(); - } - else if (tag instanceof DoubleTag) - { + } else if (tag instanceof DoubleTag) { return ((DoubleTag) tag).getValue().intValue(); - } - else - { + } else { return 0; } } - + /** * Get a list of tags named with the given index.

If the index does not exist or its value is not a list * tag, then an empty list will be returned.

@@ -306,19 +244,15 @@ public final class ListTag extends Tag * * @return a list of tags */ - public List getList(final int index) - { + public List getList(final int index) { final Tag tag = getIfExists(index); - if (tag instanceof ListTag) - { + if (tag instanceof ListTag) { return ((ListTag) tag).getValue(); - } - else - { + } else { return Collections.emptyList(); } } - + /** * Get a {@code TagList} named with the given index.

If the index does not exist or its value is not a list * tag, then an empty tag list will be returned.

@@ -327,19 +261,15 @@ public final class ListTag extends Tag * * @return a tag list instance */ - public ListTag getListTag(final int index) - { + public ListTag getListTag(final int index) { final Tag tag = getIfExists(index); - if (tag instanceof ListTag) - { + if (tag instanceof ListTag) { return (ListTag) tag; - } - else - { + } else { return new ListTag(StringTag.class, Collections. emptyList()); } } - + /** * Get a list of tags named with the given index.

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 @@ -352,27 +282,20 @@ public final class ListTag extends Tag * @return a list of tags */ @SuppressWarnings("unchecked") - public List getList(final int index, final Class listType) - { + public List getList(final int index, final Class listType) { final Tag tag = getIfExists(index); - if (tag instanceof ListTag) - { + if (tag instanceof ListTag) { final ListTag listTag = (ListTag) tag; - if (listTag.getType().equals(listType)) - { + if (listTag.getType().equals(listType)) { return (List) listTag.getValue(); - } - else - { + } else { return Collections.emptyList(); } - } - else - { + } else { return Collections.emptyList(); } } - + /** * Get a long named with the given index.

If the index does not exist or its value is not a long tag, then * {@code 0} will be returned.

@@ -381,19 +304,15 @@ public final class ListTag extends Tag * * @return a long */ - public long getLong(final int index) - { + public long getLong(final int index) { final Tag tag = getIfExists(index); - if (tag instanceof LongTag) - { + if (tag instanceof LongTag) { return ((LongTag) tag).getValue(); - } - else - { + } else { return 0L; } } - + /** * Get a long named with the given index, even if it's another type of number.

If the index does not exist * or its value is not a number, then {@code 0} will be returned.

@@ -402,39 +321,25 @@ public final class ListTag extends Tag * * @return a long */ - public long asLong(final int index) - { + public long asLong(final int index) { final Tag tag = getIfExists(index); - if (tag instanceof ByteTag) - { + if (tag instanceof ByteTag) { return ((ByteTag) tag).getValue(); - } - else if (tag instanceof ShortTag) - { + } else if (tag instanceof ShortTag) { return ((ShortTag) tag).getValue(); - } - else if (tag instanceof IntTag) - { + } else if (tag instanceof IntTag) { return ((IntTag) tag).getValue(); - } - else if (tag instanceof LongTag) - { + } else if (tag instanceof LongTag) { return ((LongTag) tag).getValue(); - } - else if (tag instanceof FloatTag) - { + } else if (tag instanceof FloatTag) { return ((FloatTag) tag).getValue().longValue(); - } - else if (tag instanceof DoubleTag) - { + } else if (tag instanceof DoubleTag) { return ((DoubleTag) tag).getValue().longValue(); - } - else - { + } else { return 0; } } - + /** * Get a short named with the given index.

If the index does not exist or its value is not a short tag, * then {@code 0} will be returned.

@@ -443,19 +348,15 @@ public final class ListTag extends Tag * * @return a short */ - public short getShort(final int index) - { + public short getShort(final int index) { final Tag tag = getIfExists(index); - if (tag instanceof ShortTag) - { + if (tag instanceof ShortTag) { return ((ShortTag) tag).getValue(); - } - else - { + } else { return 0; } } - + /** * Get a string named with the given index.

If the index does not exist or its value is not a string tag, * then {@code ""} will be returned.

@@ -464,32 +365,25 @@ public final class ListTag extends Tag * * @return a string */ - public String getString(final int index) - { + public String getString(final int index) { final Tag tag = getIfExists(index); - if (tag instanceof StringTag) - { + if (tag instanceof StringTag) { return ((StringTag) tag).getValue(); - } - else - { + } else { return ""; } } - + @Override - public String toString() - { + public String toString() { final String name = getName(); String append = ""; - if ((name != null) && !name.equals("")) - { + if ((name != null) && !name.equals("")) { append = "(\"" + getName() + "\")"; } final 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"); - for (final Tag t : value) - { + for (final Tag t : value) { bldr.append(" ").append(t.toString().replaceAll("\r\n", "\r\n ")).append("\r\n"); } bldr.append("}"); diff --git a/src/main/java/com/intellectualcrafters/jnbt/ListTagBuilder.java b/src/main/java/com/intellectualcrafters/jnbt/ListTagBuilder.java index 013529fbb..d9dd65b14 100644 --- a/src/main/java/com/intellectualcrafters/jnbt/ListTagBuilder.java +++ b/src/main/java/com/intellectualcrafters/jnbt/ListTagBuilder.java @@ -10,23 +10,21 @@ import java.util.List; /** * Helps create list tags. */ -public class ListTagBuilder -{ +public class ListTagBuilder { private final Class type; private final List entries; - + /** * Create a new instance. * * @param type of tag contained in this list */ - ListTagBuilder(final Class type) - { + ListTagBuilder(final Class type) { checkNotNull(type); this.type = type; entries = new ArrayList(); } - + /** * Create a new builder instance. * @@ -34,11 +32,10 @@ public class ListTagBuilder * * @return a new builder */ - public static ListTagBuilder create(final Class type) - { + public static ListTagBuilder create(final Class type) { return new ListTagBuilder(type); } - + /** * Create a new builder instance. * @@ -48,20 +45,22 @@ public class ListTagBuilder * @return a new builder */ @SafeVarargs - public static ListTagBuilder createWith(final T... entries) - { + public static ListTagBuilder createWith(final T... entries) { checkNotNull(entries); - if (entries.length == 0) { throw new IllegalArgumentException("This method needs an array of at least one entry"); } + if (entries.length == 0) { + throw new IllegalArgumentException("This method needs an array of at least one entry"); + } final Class type = entries[0].getClass(); - for (int i = 1; i < entries.length; i++) - { - if (!type.isInstance(entries[i])) { throw new IllegalArgumentException("An array of different tag types was provided"); } + for (int i = 1; i < entries.length; i++) { + if (!type.isInstance(entries[i])) { + throw new IllegalArgumentException("An array of different tag types was provided"); + } } final ListTagBuilder builder = new ListTagBuilder(type); builder.addAll(Arrays.asList(entries)); return builder; } - + /** * Add the given tag. * @@ -69,14 +68,15 @@ public class ListTagBuilder * * @return this object */ - public ListTagBuilder add(final Tag value) - { + public ListTagBuilder add(final Tag value) { checkNotNull(value); - if (!type.isInstance(value)) { throw new IllegalArgumentException(value.getClass().getCanonicalName() + " is not of expected type " + type.getCanonicalName()); } + if (!type.isInstance(value)) { + throw new IllegalArgumentException(value.getClass().getCanonicalName() + " is not of expected type " + type.getCanonicalName()); + } entries.add(value); return this; } - + /** * Add all the tags in the given list. * @@ -84,26 +84,23 @@ public class ListTagBuilder * * @return this object */ - public ListTagBuilder addAll(final Collection value) - { + public ListTagBuilder addAll(final Collection value) { checkNotNull(value); - for (final Tag v : value) - { + for (final Tag v : value) { add(v); } return this; } - + /** * Build an unnamed list tag with this builder's entries. * * @return the new list tag */ - public ListTag build() - { + public ListTag build() { return new ListTag(type, new ArrayList(entries)); } - + /** * Build a new list tag with this builder's entries. * @@ -111,8 +108,7 @@ public class ListTagBuilder * * @return the created list tag */ - public ListTag build(final String name) - { + public ListTag build(final String name) { return new ListTag(name, type, new ArrayList(entries)); } } diff --git a/src/main/java/com/intellectualcrafters/jnbt/LongTag.java b/src/main/java/com/intellectualcrafters/jnbt/LongTag.java index f4e53f558..274e9448b 100644 --- a/src/main/java/com/intellectualcrafters/jnbt/LongTag.java +++ b/src/main/java/com/intellectualcrafters/jnbt/LongTag.java @@ -3,46 +3,40 @@ package com.intellectualcrafters.jnbt; /** * The {@code TAG_Long} tag. */ -public final class LongTag extends Tag -{ +public final class LongTag extends Tag { private final long value; - + /** * Creates the tag with an empty name. * * @param value the value of the tag */ - public LongTag(final long value) - { + public LongTag(final long value) { super(); this.value = value; } - + /** * Creates the tag. * * @param name the name of the tag * @param value the value of the tag */ - public LongTag(final String name, final long value) - { + public LongTag(final String name, final long value) { super(name); this.value = value; } - + @Override - public Long getValue() - { + public Long getValue() { return value; } - + @Override - public String toString() - { + public String toString() { final String name = getName(); String append = ""; - if ((name != null) && !name.equals("")) - { + if ((name != null) && !name.equals("")) { append = "(\"" + getName() + "\")"; } return "TAG_Long" + append + ": " + value; diff --git a/src/main/java/com/intellectualcrafters/jnbt/NBTConstants.java b/src/main/java/com/intellectualcrafters/jnbt/NBTConstants.java index 57f431dbf..d73b8964a 100644 --- a/src/main/java/com/intellectualcrafters/jnbt/NBTConstants.java +++ b/src/main/java/com/intellectualcrafters/jnbt/NBTConstants.java @@ -25,18 +25,16 @@ import java.nio.charset.Charset; /** * A class which holds constant values. */ -public final class NBTConstants -{ +public final class NBTConstants { public static final Charset CHARSET = Charset.forName("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, TYPE_COMPOUND = 10, TYPE_INT_ARRAY = 11; - + /** * Default private constructor. */ - private NBTConstants() - {} - + private NBTConstants() {} + /** * Convert a type ID to its corresponding {@link Tag} class. * @@ -46,10 +44,8 @@ public final class NBTConstants * * @throws IllegalArgumentException thrown if the tag ID is not valid */ - public static Class getClassFromType(final int id) - { - switch (id) - { + public static Class getClassFromType(final int id) { + switch (id) { case TYPE_END: return EndTag.class; case TYPE_BYTE: diff --git a/src/main/java/com/intellectualcrafters/jnbt/NBTInputStream.java b/src/main/java/com/intellectualcrafters/jnbt/NBTInputStream.java index fce72a74b..3606d3355 100644 --- a/src/main/java/com/intellectualcrafters/jnbt/NBTInputStream.java +++ b/src/main/java/com/intellectualcrafters/jnbt/NBTInputStream.java @@ -14,12 +14,11 @@ import java.util.Map; * subclasses of the {@code Tag} object. The NBT format was created by Markus Persson, and the specification * 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 int count; - + /** * Creates a new {@code NBTInputStream}, which will source its data from the specified input stream. * @@ -27,11 +26,10 @@ public final class NBTInputStream implements Closeable * * @throws IOException if an I/O error occurs */ - public NBTInputStream(final InputStream is) throws IOException - { + public NBTInputStream(final InputStream is) throws IOException { this.is = new DataInputStream(is); } - + /** * Reads an NBT tag from the stream. * @@ -39,11 +37,10 @@ public final class NBTInputStream implements Closeable * * @throws IOException if an I/O error occurs. */ - public Tag readTag() throws IOException - { + public Tag readTag() throws IOException { return readTag(0, Integer.MAX_VALUE); } - + /** * Reads an NBT tag from the stream. * @@ -51,11 +48,10 @@ public final class NBTInputStream implements Closeable * * @throws IOException if an I/O error occurs. */ - public Tag readTag(final int maxDepth) throws IOException - { + public Tag readTag(final int maxDepth) throws IOException { return readTag(0, maxDepth); } - + /** * Reads an NBT from the stream. * @@ -65,25 +61,23 @@ public final class NBTInputStream implements Closeable * * @throws IOException if an I/O error occurs. */ - private Tag readTag(final int depth, final int maxDepth) throws IOException - { - if ((count++) > maxDepth) { throw new IOException("Exceeds max depth: " + count); } + private Tag readTag(final int depth, final int maxDepth) throws IOException { + if ((count++) > maxDepth) { + throw new IOException("Exceeds max depth: " + count); + } final int type = is.readByte() & 0xFF; String name; - if (type != NBTConstants.TYPE_END) - { + if (type != NBTConstants.TYPE_END) { final int nameLength = is.readShort() & 0xFFFF; final byte[] nameBytes = new byte[nameLength]; is.readFully(nameBytes); name = new String(nameBytes, NBTConstants.CHARSET); - } - else - { + } else { name = ""; } return readTagPayload(type, name, depth, maxDepth); } - + /** * Reads the payload of a tag, given the name and type. * @@ -95,19 +89,16 @@ public final class NBTInputStream implements Closeable * * @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 - { - if ((count++) > maxDepth) { throw new IOException("Exceeds max depth: " + count); } + private Tag readTagPayload(final int type, final String name, final int depth, final int maxDepth) throws IOException { + if ((count++) > maxDepth) { + throw new IOException("Exceeds max depth: " + count); + } count++; - switch (type) - { + switch (type) { case NBTConstants.TYPE_END: - if (depth == 0) - { + if (depth == 0) { throw new IOException("TAG_End found without a TAG_Compound/TAG_List tag preceding it."); - } - else - { + } else { return new EndTag(); } case NBTConstants.TYPE_BYTE: @@ -124,54 +115,54 @@ public final class NBTInputStream implements Closeable return new DoubleTag(name, is.readDouble()); case NBTConstants.TYPE_BYTE_ARRAY: int length = is.readInt(); - + // Max depth - if ((count += length) > maxDepth) { throw new IOException("Exceeds max depth: " + count); - // + if ((count += length) > maxDepth) { + throw new IOException("Exceeds max depth: " + count); + // } - + byte[] bytes = new byte[length]; is.readFully(bytes); return new ByteArrayTag(name, bytes); case NBTConstants.TYPE_STRING: length = is.readShort(); - + // Max depth - if ((count += length) > maxDepth) { throw new IOException("Exceeds max depth: " + count); - // + if ((count += length) > maxDepth) { + throw new IOException("Exceeds max depth: " + count); + // } - + bytes = new byte[length]; is.readFully(bytes); return new StringTag(name, new String(bytes, NBTConstants.CHARSET)); case NBTConstants.TYPE_LIST: final int childType = is.readByte(); length = is.readInt(); - + // Max depth - if ((count += length) > maxDepth) { throw new IOException("Exceeds max depth: " + count); - // + if ((count += length) > maxDepth) { + throw new IOException("Exceeds max depth: " + count); + // } - + final List tagList = new ArrayList(); - for (int i = 0; i < length; ++i) - { + for (int i = 0; i < length; ++i) { final Tag tag = readTagPayload(childType, "", depth + 1, maxDepth); - if (tag instanceof EndTag) { throw new IOException("TAG_End not permitted in a list."); } + if (tag instanceof EndTag) { + throw new IOException("TAG_End not permitted in a list."); + } tagList.add(tag); } return new ListTag(name, NBTUtils.getTypeClass(childType), tagList); case NBTConstants.TYPE_COMPOUND: final Map tagMap = new HashMap(); - while (true) - { + while (true) { final Tag tag = readTag(depth + 1, maxDepth); - if (tag instanceof EndTag) - { + if (tag instanceof EndTag) { break; - } - else - { + } else { tagMap.put(tag.getName(), tag); } } @@ -179,11 +170,12 @@ public final class NBTInputStream implements Closeable case NBTConstants.TYPE_INT_ARRAY: length = is.readInt(); // Max depth - if ((count += length) > maxDepth) { throw new IOException("Exceeds max depth: " + count); } + if ((count += length) > maxDepth) { + throw new IOException("Exceeds max depth: " + count); + } // final int[] data = new int[length]; - for (int i = 0; i < length; i++) - { + for (int i = 0; i < length; i++) { data[i] = is.readInt(); } return new IntArrayTag(name, data); @@ -191,10 +183,9 @@ public final class NBTInputStream implements Closeable throw new IOException("Invalid tag type: " + type + "."); } } - + @Override - public void close() throws IOException - { + public void close() throws IOException { is.close(); } } diff --git a/src/main/java/com/intellectualcrafters/jnbt/NBTOutputStream.java b/src/main/java/com/intellectualcrafters/jnbt/NBTOutputStream.java index 2a628aeab..524156f65 100644 --- a/src/main/java/com/intellectualcrafters/jnbt/NBTOutputStream.java +++ b/src/main/java/com/intellectualcrafters/jnbt/NBTOutputStream.java @@ -35,13 +35,12 @@ import java.util.List; * * @author Graham Edgecombe */ -public final class NBTOutputStream implements Closeable -{ +public final class NBTOutputStream implements Closeable { /** * The output stream. */ private final DataOutputStream os; - + /** * Creates a new NBTOutputStream, which will write data to the specified underlying output stream. * @@ -49,11 +48,10 @@ public final class NBTOutputStream implements Closeable * * @throws IOException if an I/O error occurs. */ - public NBTOutputStream(final OutputStream os) throws IOException - { + public NBTOutputStream(final OutputStream os) throws IOException { this.os = new DataOutputStream(os); } - + /** * Writes a tag. * @@ -61,18 +59,19 @@ public final class NBTOutputStream implements Closeable * * @throws IOException if an I/O error occurs. */ - public void writeTag(final Tag tag) throws IOException - { + public void writeTag(final Tag tag) throws IOException { final int type = NBTUtils.getTypeCode(tag.getClass()); final String name = tag.getName(); final byte[] nameBytes = name.getBytes(NBTConstants.CHARSET); os.writeByte(type); os.writeShort(nameBytes.length); os.write(nameBytes); - if (type == NBTConstants.TYPE_END) { throw new IOException("Named TAG_End not permitted."); } + if (type == NBTConstants.TYPE_END) { + throw new IOException("Named TAG_End not permitted."); + } writeTagPayload(tag); } - + /** * Writes tag payload. * @@ -80,11 +79,9 @@ public final class NBTOutputStream implements Closeable * * @throws IOException if an I/O error occurs. */ - private void writeTagPayload(final Tag tag) throws IOException - { + private void writeTagPayload(final Tag tag) throws IOException { final int type = NBTUtils.getTypeCode(tag.getClass()); - switch (type) - { + switch (type) { case NBTConstants.TYPE_END: writeEndTagPayload((EndTag) tag); break; @@ -125,7 +122,7 @@ public final class NBTOutputStream implements Closeable throw new IOException("Invalid tag type: " + type + "."); } } - + /** * Writes a TAG_Byte tag. * @@ -133,11 +130,10 @@ public final class NBTOutputStream implements Closeable * * @throws IOException if an I/O error occurs. */ - private void writeByteTagPayload(final ByteTag tag) throws IOException - { + private void writeByteTagPayload(final ByteTag tag) throws IOException { os.writeByte(tag.getValue()); } - + /** * Writes a TAG_Byte_Array tag. * @@ -145,13 +141,12 @@ public final class NBTOutputStream implements Closeable * * @throws IOException if an I/O error occurs. */ - private void writeByteArrayTagPayload(final ByteArrayTag tag) throws IOException - { + private void writeByteArrayTagPayload(final ByteArrayTag tag) throws IOException { final byte[] bytes = tag.getValue(); os.writeInt(bytes.length); os.write(bytes); } - + /** * Writes a TAG_Compound tag. * @@ -159,15 +154,13 @@ public final class NBTOutputStream implements Closeable * * @throws IOException if an I/O error occurs. */ - private void writeCompoundTagPayload(final CompoundTag tag) throws IOException - { - for (final Tag childTag : tag.getValue().values()) - { + private void writeCompoundTagPayload(final CompoundTag tag) throws IOException { + for (final Tag childTag : tag.getValue().values()) { writeTag(childTag); } os.writeByte((byte) 0); // end tag - better way? } - + /** * Writes a TAG_List tag. * @@ -175,19 +168,17 @@ public final class NBTOutputStream implements Closeable * * @throws IOException if an I/O error occurs. */ - private void writeListTagPayload(final ListTag tag) throws IOException - { + private void writeListTagPayload(final ListTag tag) throws IOException { final Class clazz = tag.getType(); final List tags = tag.getValue(); final int size = tags.size(); os.writeByte(NBTUtils.getTypeCode(clazz)); os.writeInt(size); - for (final Tag tag1 : tags) - { + for (final Tag tag1 : tags) { writeTagPayload(tag1); } } - + /** * Writes a TAG_String tag. * @@ -195,13 +186,12 @@ public final class NBTOutputStream implements Closeable * * @throws IOException if an I/O error occurs. */ - private void writeStringTagPayload(final StringTag tag) throws IOException - { + private void writeStringTagPayload(final StringTag tag) throws IOException { final byte[] bytes = tag.getValue().getBytes(NBTConstants.CHARSET); os.writeShort(bytes.length); os.write(bytes); } - + /** * Writes a TAG_Double tag. * @@ -209,11 +199,10 @@ public final class NBTOutputStream implements Closeable * * @throws IOException if an I/O error occurs. */ - private void writeDoubleTagPayload(final DoubleTag tag) throws IOException - { + private void writeDoubleTagPayload(final DoubleTag tag) throws IOException { os.writeDouble(tag.getValue()); } - + /** * Writes a TAG_Float tag. * @@ -221,11 +210,10 @@ public final class NBTOutputStream implements Closeable * * @throws IOException if an I/O error occurs. */ - private void writeFloatTagPayload(final FloatTag tag) throws IOException - { + private void writeFloatTagPayload(final FloatTag tag) throws IOException { os.writeFloat(tag.getValue()); } - + /** * Writes a TAG_Long tag. * @@ -233,11 +221,10 @@ public final class NBTOutputStream implements Closeable * * @throws IOException if an I/O error occurs. */ - private void writeLongTagPayload(final LongTag tag) throws IOException - { + private void writeLongTagPayload(final LongTag tag) throws IOException { os.writeLong(tag.getValue()); } - + /** * Writes a TAG_Int tag. * @@ -245,11 +232,10 @@ public final class NBTOutputStream implements Closeable * * @throws IOException if an I/O error occurs. */ - private void writeIntTagPayload(final IntTag tag) throws IOException - { + private void writeIntTagPayload(final IntTag tag) throws IOException { os.writeInt(tag.getValue()); } - + /** * Writes a TAG_Short tag. * @@ -257,11 +243,10 @@ public final class NBTOutputStream implements Closeable * * @throws IOException if an I/O error occurs. */ - private void writeShortTagPayload(final ShortTag tag) throws IOException - { + private void writeShortTagPayload(final ShortTag tag) throws IOException { os.writeShort(tag.getValue()); } - + /** * Writes a TAG_Empty tag. * @@ -269,33 +254,28 @@ public final class NBTOutputStream implements Closeable * * @throws IOException if an I/O error occurs. */ - private void writeEndTagPayload(final EndTag tag) - { + private void writeEndTagPayload(final EndTag tag) { /* empty */ } - - private void writeIntArrayTagPayload(final IntArrayTag tag) throws IOException - { + + private void writeIntArrayTagPayload(final IntArrayTag tag) throws IOException { final int[] data = tag.getValue(); os.writeInt(data.length); - for (final int element : data) - { + for (final int element : data) { os.writeInt(element); } } - + @Override - public void close() throws IOException - { + public void close() throws IOException { os.close(); } - + /** * Flush output * @throws IOException */ - public void flush() throws IOException - { + public void flush() throws IOException { os.flush(); } } diff --git a/src/main/java/com/intellectualcrafters/jnbt/NBTUtils.java b/src/main/java/com/intellectualcrafters/jnbt/NBTUtils.java index a130d525e..f5118e77b 100644 --- a/src/main/java/com/intellectualcrafters/jnbt/NBTUtils.java +++ b/src/main/java/com/intellectualcrafters/jnbt/NBTUtils.java @@ -5,14 +5,12 @@ import java.util.Map; /** * A class which contains NBT-related utility methods. */ -public final class NBTUtils -{ +public final class NBTUtils { /** * Default private constructor. */ - private NBTUtils() - {} - + private NBTUtils() {} + /** * Gets the type name of a tag. * @@ -20,62 +18,36 @@ public final class NBTUtils * * @return The type name. */ - public static String getTypeName(final Class clazz) - { - if (clazz.equals(ByteArrayTag.class)) - { + public static String getTypeName(final Class clazz) { + if (clazz.equals(ByteArrayTag.class)) { return "TAG_Byte_Array"; - } - else if (clazz.equals(ByteTag.class)) - { + } else if (clazz.equals(ByteTag.class)) { return "TAG_Byte"; - } - else if (clazz.equals(CompoundTag.class)) - { + } else if (clazz.equals(CompoundTag.class)) { return "TAG_Compound"; - } - else if (clazz.equals(DoubleTag.class)) - { + } else if (clazz.equals(DoubleTag.class)) { return "TAG_Double"; - } - else if (clazz.equals(EndTag.class)) - { + } else if (clazz.equals(EndTag.class)) { return "TAG_End"; - } - else if (clazz.equals(FloatTag.class)) - { + } else if (clazz.equals(FloatTag.class)) { return "TAG_Float"; - } - else if (clazz.equals(IntTag.class)) - { + } else if (clazz.equals(IntTag.class)) { return "TAG_Int"; - } - else if (clazz.equals(ListTag.class)) - { + } else if (clazz.equals(ListTag.class)) { return "TAG_List"; - } - else if (clazz.equals(LongTag.class)) - { + } else if (clazz.equals(LongTag.class)) { return "TAG_Long"; - } - else if (clazz.equals(ShortTag.class)) - { + } else if (clazz.equals(ShortTag.class)) { return "TAG_Short"; - } - else if (clazz.equals(StringTag.class)) - { + } else if (clazz.equals(StringTag.class)) { return "TAG_String"; - } - else if (clazz.equals(IntArrayTag.class)) - { + } else if (clazz.equals(IntArrayTag.class)) { return "TAG_Int_Array"; - } - else - { + } else { throw new IllegalArgumentException("Invalid tag classs (" + clazz.getName() + ")."); } } - + /** * Gets the type code of a tag class. * @@ -85,62 +57,36 @@ public final class NBTUtils * * @throws IllegalArgumentException if the tag class is invalid. */ - public static int getTypeCode(final Class clazz) - { - if (clazz.equals(ByteArrayTag.class)) - { + public static int getTypeCode(final Class clazz) { + if (clazz.equals(ByteArrayTag.class)) { return NBTConstants.TYPE_BYTE_ARRAY; - } - else if (clazz.equals(ByteTag.class)) - { + } else if (clazz.equals(ByteTag.class)) { return NBTConstants.TYPE_BYTE; - } - else if (clazz.equals(CompoundTag.class)) - { + } else if (clazz.equals(CompoundTag.class)) { return NBTConstants.TYPE_COMPOUND; - } - else if (clazz.equals(DoubleTag.class)) - { + } else if (clazz.equals(DoubleTag.class)) { return NBTConstants.TYPE_DOUBLE; - } - else if (clazz.equals(EndTag.class)) - { + } else if (clazz.equals(EndTag.class)) { return NBTConstants.TYPE_END; - } - else if (clazz.equals(FloatTag.class)) - { + } else if (clazz.equals(FloatTag.class)) { return NBTConstants.TYPE_FLOAT; - } - else if (clazz.equals(IntTag.class)) - { + } else if (clazz.equals(IntTag.class)) { return NBTConstants.TYPE_INT; - } - else if (clazz.equals(ListTag.class)) - { + } else if (clazz.equals(ListTag.class)) { return NBTConstants.TYPE_LIST; - } - else if (clazz.equals(LongTag.class)) - { + } else if (clazz.equals(LongTag.class)) { return NBTConstants.TYPE_LONG; - } - else if (clazz.equals(ShortTag.class)) - { + } else if (clazz.equals(ShortTag.class)) { return NBTConstants.TYPE_SHORT; - } - else if (clazz.equals(StringTag.class)) - { + } else if (clazz.equals(StringTag.class)) { return NBTConstants.TYPE_STRING; - } - else if (clazz.equals(IntArrayTag.class)) - { + } else if (clazz.equals(IntArrayTag.class)) { return NBTConstants.TYPE_INT_ARRAY; - } - else - { + } else { throw new IllegalArgumentException("Invalid tag classs (" + clazz.getName() + ")."); } } - + /** * Gets the class of a type of tag. * @@ -150,10 +96,8 @@ public final class NBTUtils * * @throws IllegalArgumentException if the tag type is invalid. */ - public static Class getTypeClass(final int type) - { - switch (type) - { + public static Class getTypeClass(final int type) { + switch (type) { case NBTConstants.TYPE_END: return EndTag.class; case NBTConstants.TYPE_BYTE: @@ -182,7 +126,7 @@ public final class NBTUtils throw new IllegalArgumentException("Invalid tag type : " + type + "."); } } - + /** * Get child tag of a NBT structure. * @@ -193,11 +137,14 @@ public final class NBTUtils * * @return child tag */ - public static T getChildTag(final Map items, final String key, final Class expected) throws IllegalArgumentException - { - if (!items.containsKey(key)) { throw new IllegalArgumentException("Missing a \"" + key + "\" tag"); } + public static T getChildTag(final Map items, final String key, final Class expected) throws IllegalArgumentException { + if (!items.containsKey(key)) { + throw new IllegalArgumentException("Missing a \"" + key + "\" tag"); + } final Tag tag = items.get(key); - if (!expected.isInstance(tag)) { throw new IllegalArgumentException(key + " tag is not of tag type " + expected.getName()); } + if (!expected.isInstance(tag)) { + throw new IllegalArgumentException(key + " tag is not of tag type " + expected.getName()); + } return expected.cast(tag); } } diff --git a/src/main/java/com/intellectualcrafters/jnbt/ShortTag.java b/src/main/java/com/intellectualcrafters/jnbt/ShortTag.java index 34a1adf9a..e1e5039f1 100644 --- a/src/main/java/com/intellectualcrafters/jnbt/ShortTag.java +++ b/src/main/java/com/intellectualcrafters/jnbt/ShortTag.java @@ -23,46 +23,40 @@ package com.intellectualcrafters.jnbt; /** * The {@code TAG_Short} tag. */ -public final class ShortTag extends Tag -{ +public final class ShortTag extends Tag { private final short value; - + /** * Creates the tag with an empty name. * * @param value the value of the tag */ - public ShortTag(final short value) - { + public ShortTag(final short value) { super(); this.value = value; } - + /** * Creates the tag. * * @param name the name of the tag * @param value the value of the tag */ - public ShortTag(final String name, final short value) - { + public ShortTag(final String name, final short value) { super(name); this.value = value; } - + @Override - public Short getValue() - { + public Short getValue() { return value; } - + @Override - public String toString() - { + public String toString() { final String name = getName(); String append = ""; - if ((name != null) && !name.equals("")) - { + if ((name != null) && !name.equals("")) { append = "(\"" + getName() + "\")"; } return "TAG_Short" + append + ": " + value; diff --git a/src/main/java/com/intellectualcrafters/jnbt/StringTag.java b/src/main/java/com/intellectualcrafters/jnbt/StringTag.java index e69a75bcc..6dce84d0e 100644 --- a/src/main/java/com/intellectualcrafters/jnbt/StringTag.java +++ b/src/main/java/com/intellectualcrafters/jnbt/StringTag.java @@ -5,48 +5,42 @@ import static com.google.common.base.Preconditions.checkNotNull; /** * The {@code TAG_String} tag. */ -public final class StringTag extends Tag -{ +public final class StringTag extends Tag { private final String value; - + /** * Creates the tag with an empty name. * * @param value the value of the tag */ - public StringTag(final String value) - { + public StringTag(final String value) { super(); checkNotNull(value); this.value = value; } - + /** * Creates the tag. * * @param name the name of the tag * @param value the value of the tag */ - public StringTag(final String name, final String value) - { + public StringTag(final String name, final String value) { super(name); checkNotNull(value); this.value = value; } - + @Override - public String getValue() - { + public String getValue() { return value; } - + @Override - public String toString() - { + public String toString() { final String name = getName(); String append = ""; - if ((name != null) && !name.equals("")) - { + if ((name != null) && !name.equals("")) { append = "(\"" + getName() + "\")"; } return "TAG_String" + append + ": " + value; diff --git a/src/main/java/com/intellectualcrafters/jnbt/Tag.java b/src/main/java/com/intellectualcrafters/jnbt/Tag.java index 0c50682ba..909683184 100644 --- a/src/main/java/com/intellectualcrafters/jnbt/Tag.java +++ b/src/main/java/com/intellectualcrafters/jnbt/Tag.java @@ -23,42 +23,37 @@ package com.intellectualcrafters.jnbt; /** * Represents a NBT tag. */ -public abstract class Tag -{ +public abstract class Tag { private final String name; - + /** * Create a new tag with an empty name. */ - Tag() - { + Tag() { this(""); } - + /** * Creates the tag with the specified name. * * @param name the name */ - Tag(String name) - { - if (name == null) - { + Tag(String name) { + if (name == null) { name = ""; } this.name = name; } - + /** * Gets the name of this tag. * * @return the name of this tag */ - public final String getName() - { + public final String getName() { return name; } - + /** * Gets the value of this tag. * diff --git a/src/main/java/com/intellectualcrafters/json/CDL.java b/src/main/java/com/intellectualcrafters/json/CDL.java index 0704da569..717b12349 100644 --- a/src/main/java/com/intellectualcrafters/json/CDL.java +++ b/src/main/java/com/intellectualcrafters/json/CDL.java @@ -17,8 +17,7 @@ package com.intellectualcrafters.json; * @author JSON.org * @version 2014-05-03 */ -public class CDL -{ +public class CDL { /** * Get the next value. The value can be wrapped in quotes. The value can be empty. * @@ -28,32 +27,28 @@ public class CDL * * @throws JSONException if the quoted string is badly formed. */ - private static String getValue(final JSONTokener x) throws JSONException - { + private static String getValue(final JSONTokener x) throws JSONException { char c; char q; StringBuffer sb; - do - { + do { c = x.next(); - } - while ((c == ' ') || (c == '\t')); - switch (c) - { + } while ((c == ' ') || (c == '\t')); + switch (c) { case 0: return null; case '"': case '\'': q = c; sb = new StringBuffer(); - for (;;) - { + for (;;) { c = x.next(); - if (c == q) - { + if (c == q) { break; } - if ((c == 0) || (c == '\n') || (c == '\r')) { throw x.syntaxError("Missing close quote '" + q + "'."); } + if ((c == 0) || (c == '\n') || (c == '\r')) { + throw x.syntaxError("Missing close quote '" + q + "'."); + } sb.append(c); } return sb.toString(); @@ -65,7 +60,7 @@ public class CDL return x.nextTo(','); } } - + /** * Produce a JSONArray of strings from a row of comma delimited values. * @@ -75,31 +70,30 @@ public class CDL * * @throws JSONException */ - public static JSONArray rowToJSONArray(final JSONTokener x) throws JSONException - { + public static JSONArray rowToJSONArray(final JSONTokener x) throws JSONException { final JSONArray ja = new JSONArray(); - for (;;) - { + for (;;) { final String value = getValue(x); char c = x.next(); - if ((value == null) || ((ja.length() == 0) && (value.length() == 0) && (c != ','))) { return null; } + if ((value == null) || ((ja.length() == 0) && (value.length() == 0) && (c != ','))) { + return null; + } ja.put(value); - for (;;) - { - if (c == ',') - { + for (;;) { + if (c == ',') { break; } - if (c != ' ') - { - if ((c == '\n') || (c == '\r') || (c == 0)) { return ja; } + if (c != ' ') { + if ((c == '\n') || (c == '\r') || (c == 0)) { + return ja; + } throw x.syntaxError("Bad character '" + c + "' (" + (int) c + ")."); } c = x.next(); } } } - + /** * Produce a JSONObject from a row of comma delimited text, using a parallel JSONArray of strings to provides the * names of the elements. @@ -112,12 +106,11 @@ public class CDL * * @throws JSONException */ - public static JSONObject rowToJSONObject(final JSONArray names, final JSONTokener x) throws JSONException - { + public static JSONObject rowToJSONObject(final JSONArray names, final JSONTokener x) throws JSONException { final JSONArray ja = rowToJSONArray(x); return ja != null ? ja.toJSONObject(names) : null; } - + /** * Produce a comma delimited text row from a JSONArray. Values containing the comma character will be quoted. * Troublesome characters may be removed. @@ -126,35 +119,26 @@ public class CDL * * @return A string ending in NEWLINE. */ - public static String rowToString(final JSONArray ja) - { + public static String rowToString(final JSONArray ja) { final StringBuilder sb = new StringBuilder(); - for (int i = 0; i < ja.length(); i += 1) - { - if (i > 0) - { + for (int i = 0; i < ja.length(); i += 1) { + if (i > 0) { sb.append(','); } final Object object = ja.opt(i); - if (object != null) - { + if (object != null) { final String string = object.toString(); - if ((string.length() > 0) && ((string.indexOf(',') >= 0) || (string.indexOf('\n') >= 0) || (string.indexOf('\r') >= 0) || (string.indexOf(0) >= 0) || (string.charAt(0) == '"'))) - { + if ((string.length() > 0) && ((string.indexOf(',') >= 0) || (string.indexOf('\n') >= 0) || (string.indexOf('\r') >= 0) || (string.indexOf(0) >= 0) || (string.charAt(0) == '"'))) { sb.append('"'); final int length = string.length(); - for (int j = 0; j < length; j += 1) - { + for (int j = 0; j < length; j += 1) { final char c = string.charAt(j); - if ((c >= ' ') && (c != '"')) - { + if ((c >= ' ') && (c != '"')) { sb.append(c); } } sb.append('"'); - } - else - { + } else { sb.append(string); } } @@ -162,7 +146,7 @@ public class CDL sb.append('\n'); return sb.toString(); } - + /** * Produce a JSONArray of JSONObjects from a comma delimited text string, using the first row as a source of names. * @@ -172,11 +156,10 @@ public class CDL * * @throws JSONException */ - public static JSONArray toJSONArray(final String string) throws JSONException - { + public static JSONArray toJSONArray(final String string) throws JSONException { return toJSONArray(new JSONTokener(string)); } - + /** * Produce a JSONArray of JSONObjects from a comma delimited text string, using the first row as a source of names. * @@ -186,11 +169,10 @@ public class CDL * * @throws JSONException */ - public static JSONArray toJSONArray(final JSONTokener x) throws JSONException - { + public static JSONArray toJSONArray(final JSONTokener x) throws JSONException { return toJSONArray(rowToJSONArray(x), x); } - + /** * Produce a JSONArray of JSONObjects from a comma delimited text string using a supplied JSONArray as the source of * element names. @@ -202,11 +184,10 @@ public class CDL * * @throws JSONException */ - public static JSONArray toJSONArray(final JSONArray names, final String string) throws JSONException - { + public static JSONArray toJSONArray(final JSONArray names, final String string) throws JSONException { return toJSONArray(names, new JSONTokener(string)); } - + /** * Produce a JSONArray of JSONObjects from a comma delimited text string using a supplied JSONArray as the source of * element names. @@ -218,23 +199,24 @@ public class CDL * * @throws JSONException */ - public static JSONArray toJSONArray(final JSONArray names, final JSONTokener x) throws JSONException - { - if ((names == null) || (names.length() == 0)) { return null; } + public static JSONArray toJSONArray(final JSONArray names, final JSONTokener x) throws JSONException { + if ((names == null) || (names.length() == 0)) { + return null; + } final JSONArray ja = new JSONArray(); - for (;;) - { + for (;;) { final JSONObject jo = rowToJSONObject(names, x); - if (jo == null) - { + if (jo == null) { break; } ja.put(jo); } - if (ja.length() == 0) { return null; } + if (ja.length() == 0) { + return null; + } return ja; } - + /** * Produce a comma delimited text from a JSONArray of JSONObjects. The first row will be a list of names obtained by * inspecting the first JSONObject. @@ -245,17 +227,17 @@ public class CDL * * @throws JSONException */ - public static String toString(final JSONArray ja) throws JSONException - { + public static String toString(final JSONArray ja) throws JSONException { final JSONObject jo = ja.optJSONObject(0); - if (jo != null) - { + if (jo != null) { final JSONArray names = jo.names(); - if (names != null) { return rowToString(names) + toString(names, ja); } + if (names != null) { + return rowToString(names) + toString(names, ja); + } } return null; } - + /** * Produce a comma delimited text from a JSONArray of JSONObjects using a provided list of names. The list of names * is not included in the output. @@ -267,15 +249,14 @@ public class CDL * * @throws JSONException */ - public static String toString(final JSONArray names, final JSONArray ja) throws JSONException - { - if ((names == null) || (names.length() == 0)) { return null; } + public static String toString(final JSONArray names, final JSONArray ja) throws JSONException { + if ((names == null) || (names.length() == 0)) { + return null; + } final StringBuilder sb = new StringBuilder(); - for (int i = 0; i < ja.length(); i += 1) - { + for (int i = 0; i < ja.length(); i += 1) { final JSONObject jo = ja.optJSONObject(i); - if (jo != null) - { + if (jo != null) { sb.append(rowToString(jo.toJSONArray(names))); } } diff --git a/src/main/java/com/intellectualcrafters/json/Cookie.java b/src/main/java/com/intellectualcrafters/json/Cookie.java index 52f90895d..ee4def328 100644 --- a/src/main/java/com/intellectualcrafters/json/Cookie.java +++ b/src/main/java/com/intellectualcrafters/json/Cookie.java @@ -27,8 +27,7 @@ package com.intellectualcrafters.json; * @author JSON.org * @version 2014-05-03 */ -public class Cookie -{ +public class Cookie { /** * Produce a copy of a string in which the characters '+', '%', '=', ';' and control characters are replaced with * "%hh". This is a gentle form of URL encoding, attempting to cause as little distortion to the string as possible. @@ -40,29 +39,24 @@ public class Cookie * * @return The escaped result. */ - public static String escape(final String string) - { + public static String escape(final String string) { char c; final String s = string.trim(); final int length = s.length(); final StringBuilder sb = new StringBuilder(length); - for (int i = 0; i < length; i += 1) - { + for (int i = 0; i < length; i += 1) { c = s.charAt(i); - if ((c < ' ') || (c == '+') || (c == '%') || (c == '=') || (c == ';')) - { + if ((c < ' ') || (c == '+') || (c == '%') || (c == '=') || (c == ';')) { sb.append('%'); sb.append(Character.forDigit((char) ((c >>> 4) & 0x0f), 16)); sb.append(Character.forDigit((char) (c & 0x0f), 16)); - } - else - { + } else { sb.append(c); } } return sb.toString(); } - + /** * Convert a cookie specification string into a JSONObject. The string will contain a name value pair separated by * '='. The name and the value will be unescaped, possibly converting '+' and '%' sequences. The cookie properties @@ -77,8 +71,7 @@ public class Cookie * * @throws JSONException */ - public static JSONObject toJSONObject(final String string) throws JSONException - { + public static JSONObject toJSONObject(final String string) throws JSONException { String name; final JSONObject jo = new JSONObject(); Object value; @@ -87,22 +80,15 @@ public class Cookie x.next('='); jo.put("value", x.nextTo(';')); x.next(); - while (x.more()) - { + while (x.more()) { name = unescape(x.nextTo("=;")); - if (x.next() != '=') - { - if (name.equals("secure")) - { + if (x.next() != '=') { + if (name.equals("secure")) { value = Boolean.TRUE; - } - else - { + } else { throw x.syntaxError("Missing '=' in cookie parameter."); } - } - else - { + } else { value = unescape(x.nextTo(';')); x.next(); } @@ -110,7 +96,7 @@ public class Cookie } return jo; } - + /** * Convert a JSONObject into a cookie specification string. The JSONObject must contain "name" and "value" members. * If the JSONObject contains "expires", "domain", "path", or "secure" members, they will be appended to the cookie @@ -122,34 +108,29 @@ public class Cookie * * @throws JSONException */ - public static String toString(final JSONObject jo) throws JSONException - { + public static String toString(final JSONObject jo) throws JSONException { final StringBuilder sb = new StringBuilder(); sb.append(escape(jo.getString("name"))); sb.append("="); sb.append(escape(jo.getString("value"))); - if (jo.has("expires")) - { + if (jo.has("expires")) { sb.append(";expires="); sb.append(jo.getString("expires")); } - if (jo.has("domain")) - { + if (jo.has("domain")) { sb.append(";domain="); sb.append(escape(jo.getString("domain"))); } - if (jo.has("path")) - { + if (jo.has("path")) { sb.append(";path="); sb.append(escape(jo.getString("path"))); } - if (jo.optBoolean("secure")) - { + if (jo.optBoolean("secure")) { sb.append(";secure"); } return sb.toString(); } - + /** * Convert %hh sequences to single characters, and convert plus to space. * @@ -158,23 +139,17 @@ public class Cookie * * @return The unescaped string. */ - public static String unescape(final String string) - { + public static String unescape(final String string) { final int length = string.length(); final StringBuilder sb = new StringBuilder(length); - for (int i = 0; i < length; ++i) - { + for (int i = 0; i < length; ++i) { char c = string.charAt(i); - if (c == '+') - { + if (c == '+') { c = ' '; - } - else if ((c == '%') && ((i + 2) < length)) - { + } else if ((c == '%') && ((i + 2) < length)) { final int d = JSONTokener.dehexchar(string.charAt(i + 1)); final int e = JSONTokener.dehexchar(string.charAt(i + 2)); - if ((d >= 0) && (e >= 0)) - { + if ((d >= 0) && (e >= 0)) { c = (char) ((d * 16) + e); i += 2; } diff --git a/src/main/java/com/intellectualcrafters/json/CookieList.java b/src/main/java/com/intellectualcrafters/json/CookieList.java index add20262f..c0bf0f994 100644 --- a/src/main/java/com/intellectualcrafters/json/CookieList.java +++ b/src/main/java/com/intellectualcrafters/json/CookieList.java @@ -8,8 +8,7 @@ import java.util.Iterator; * @author JSON.org * @version 2014-05-03 */ -public class CookieList -{ +public class CookieList { /** * Convert a cookie list into a JSONObject. A cookie list is a sequence of name/value pairs. The names are separated * from the values by '='. The pairs are separated by ';'. The names and the values will be unescaped, possibly @@ -24,12 +23,10 @@ public class CookieList * * @throws JSONException */ - public static JSONObject toJSONObject(final String string) throws JSONException - { + public static JSONObject toJSONObject(final String string) throws JSONException { final JSONObject jo = new JSONObject(); final JSONTokener x = new JSONTokener(string); - while (x.more()) - { + while (x.more()) { final String name = Cookie.unescape(x.nextTo('=')); x.next('='); jo.put(name, Cookie.unescape(x.nextTo(';'))); @@ -37,7 +34,7 @@ public class CookieList } return jo; } - + /** * Convert a JSONObject into a cookie list. A cookie list is a sequence of name/value pairs. The names are separated * from the values by '='. The pairs are separated by ';'. The characters '%', '+', '=', and ';' in the names and @@ -49,19 +46,15 @@ public class CookieList * * @throws JSONException */ - public static String toString(final JSONObject jo) throws JSONException - { + public static String toString(final JSONObject jo) throws JSONException { boolean b = false; final Iterator keys = jo.keys(); String string; final StringBuilder sb = new StringBuilder(); - while (keys.hasNext()) - { + while (keys.hasNext()) { string = keys.next(); - if (!jo.isNull(string)) - { - if (b) - { + if (!jo.isNull(string)) { + if (b) { sb.append(';'); } sb.append(Cookie.escape(string)); diff --git a/src/main/java/com/intellectualcrafters/json/HTTP.java b/src/main/java/com/intellectualcrafters/json/HTTP.java index 01d5e26e9..9548fb151 100644 --- a/src/main/java/com/intellectualcrafters/json/HTTP.java +++ b/src/main/java/com/intellectualcrafters/json/HTTP.java @@ -28,37 +28,31 @@ import java.util.Iterator; * @author JSON.org * @version 2014-05-03 */ -public class HTTP -{ +public class HTTP { /** * Carriage return/line feed. */ public static final String CRLF = "\r\n"; - - public static JSONObject toJSONObject(final String string) throws JSONException - { + + public static JSONObject toJSONObject(final String string) throws JSONException { final JSONObject jo = new JSONObject(); final HTTPTokener x = new HTTPTokener(string); String token; token = x.nextToken(); - if (token.toUpperCase().startsWith("HTTP")) - { + if (token.toUpperCase().startsWith("HTTP")) { // Response jo.put("HTTP-Version", token); jo.put("Status-Code", x.nextToken()); jo.put("Reason-Phrase", x.nextTo('\0')); x.next(); - } - else - { + } else { // Request jo.put("Method", token); jo.put("Request-URI", x.nextToken()); jo.put("HTTP-Version", x.nextToken()); } // Fields - while (x.more()) - { + while (x.more()) { final String name = x.nextTo(':'); x.next(':'); jo.put(name, x.nextTo('\0')); @@ -66,7 +60,7 @@ public class HTTP } return jo; } - + /** * Convert a JSONObject into an HTTP header. A request header must contain * @@ -98,21 +92,17 @@ public class HTTP * * @throws JSONException if the object does not contain enough information. */ - public static String toString(final JSONObject jo) throws JSONException - { + public static String toString(final JSONObject jo) throws JSONException { final Iterator keys = jo.keys(); String string; final StringBuilder sb = new StringBuilder(); - if (jo.has("Status-Code") && jo.has("Reason-Phrase")) - { + if (jo.has("Status-Code") && jo.has("Reason-Phrase")) { sb.append(jo.getString("HTTP-Version")); sb.append(' '); sb.append(jo.getString("Status-Code")); sb.append(' '); sb.append(jo.getString("Reason-Phrase")); - } - else if (jo.has("Method") && jo.has("Request-URI")) - { + } else if (jo.has("Method") && jo.has("Request-URI")) { sb.append(jo.getString("Method")); sb.append(' '); sb.append('"'); @@ -120,17 +110,13 @@ public class HTTP sb.append('"'); sb.append(' '); sb.append(jo.getString("HTTP-Version")); - } - else - { + } else { throw new JSONException("Not enough material for an HTTP header."); } sb.append(CRLF); - while (keys.hasNext()) - { + while (keys.hasNext()) { string = keys.next(); - if (!"HTTP-Version".equals(string) && !"Status-Code".equals(string) && !"Reason-Phrase".equals(string) && !"Method".equals(string) && !"Request-URI".equals(string) && !jo.isNull(string)) - { + if (!"HTTP-Version".equals(string) && !"Status-Code".equals(string) && !"Reason-Phrase".equals(string) && !"Method".equals(string) && !"Request-URI".equals(string) && !jo.isNull(string)) { sb.append(string); sb.append(": "); sb.append(jo.getString(string)); diff --git a/src/main/java/com/intellectualcrafters/json/HTTPTokener.java b/src/main/java/com/intellectualcrafters/json/HTTPTokener.java index ad99eae1d..5a3fb1e56 100644 --- a/src/main/java/com/intellectualcrafters/json/HTTPTokener.java +++ b/src/main/java/com/intellectualcrafters/json/HTTPTokener.java @@ -6,18 +6,16 @@ package com.intellectualcrafters.json; * @author JSON.org * @version 2014-05-03 */ -public class HTTPTokener extends JSONTokener -{ +public class HTTPTokener extends JSONTokener { /** * Construct an HTTPTokener from a string. * * @param string A source string. */ - public HTTPTokener(final String string) - { + public HTTPTokener(final String string) { super(string); } - + /** * Get the next token or string. This is used in parsing HTTP headers. * @@ -25,30 +23,30 @@ public class HTTPTokener extends JSONTokener * * @throws JSONException */ - public String nextToken() throws JSONException - { + public String nextToken() throws JSONException { char c; char q; final StringBuilder sb = new StringBuilder(); - do - { + do { c = next(); - } - while (Character.isWhitespace(c)); - if ((c == '"') || (c == '\'')) - { + } while (Character.isWhitespace(c)); + if ((c == '"') || (c == '\'')) { q = c; - for (;;) - { + for (;;) { c = next(); - if (c < ' ') { throw syntaxError("Unterminated string."); } - if (c == q) { return sb.toString(); } + if (c < ' ') { + throw syntaxError("Unterminated string."); + } + if (c == q) { + return sb.toString(); + } sb.append(c); } } - for (;;) - { - if ((c == 0) || Character.isWhitespace(c)) { return sb.toString(); } + for (;;) { + if ((c == 0) || Character.isWhitespace(c)) { + return sb.toString(); + } sb.append(c); c = next(); } diff --git a/src/main/java/com/intellectualcrafters/json/JSONArray.java b/src/main/java/com/intellectualcrafters/json/JSONArray.java index 64711cea6..2b8587aad 100644 --- a/src/main/java/com/intellectualcrafters/json/JSONArray.java +++ b/src/main/java/com/intellectualcrafters/json/JSONArray.java @@ -56,21 +56,19 @@ import java.util.Map; * @author JSON.org * @version 2014-05-03 */ -public class JSONArray -{ +public class JSONArray { /** * The arrayList where the JSONArray's properties are kept. */ private final ArrayList myArrayList; - + /** * Construct an empty JSONArray. */ - public JSONArray() - { + public JSONArray() { myArrayList = new ArrayList(); } - + /** * Construct a JSONArray from a JSONTokener. * @@ -78,29 +76,26 @@ public class JSONArray * * @throws JSONException If there is a syntax error. */ - public JSONArray(final JSONTokener x) throws JSONException - { + public JSONArray(final JSONTokener x) throws JSONException { this(); - if (x.nextClean() != '[') { throw x.syntaxError("A JSONArray text must start with '['"); } - if (x.nextClean() != ']') - { + if (x.nextClean() != '[') { + throw x.syntaxError("A JSONArray text must start with '['"); + } + if (x.nextClean() != ']') { x.back(); - for (;;) - { - if (x.nextClean() == ',') - { + for (;;) { + if (x.nextClean() == ',') { x.back(); myArrayList.add(JSONObject.NULL); - } - else - { + } else { x.back(); myArrayList.add(x.nextValue()); } - switch (x.nextClean()) - { + switch (x.nextClean()) { case ',': - if (x.nextClean() == ']') { return; } + if (x.nextClean() == ']') { + return; + } x.back(); break; case ']': @@ -111,7 +106,7 @@ public class JSONArray } } } - + /** * Construct a JSONArray from a source JSON text. * @@ -120,50 +115,41 @@ public class JSONArray * * @throws JSONException If there is a syntax error. */ - public JSONArray(final String source) throws JSONException - { + public JSONArray(final String source) throws JSONException { this(new JSONTokener(source)); } - + /** * Construct a JSONArray from a Collection. * * @param collection A Collection. */ - public JSONArray(final Collection collection) - { + public JSONArray(final Collection collection) { myArrayList = new ArrayList(); - if (collection != null) - { - for (final Object aCollection : collection) - { + if (collection != null) { + for (final Object aCollection : collection) { myArrayList.add(JSONObject.wrap(aCollection)); } } } - + /** * Construct a JSONArray from an array * * @throws JSONException If not an array. */ - public JSONArray(final Object array) throws JSONException - { + public JSONArray(final Object array) throws JSONException { this(); - if (array.getClass().isArray()) - { + if (array.getClass().isArray()) { final 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))); } - } - else - { + } else { throw new JSONException("JSONArray initial value should be a string or collection or array."); } } - + /** * Get the object value associated with an index. * @@ -173,13 +159,14 @@ public class JSONArray * * @throws JSONException If there is no value for the index. */ - public Object get(final int index) throws JSONException - { + public Object get(final int index) throws JSONException { final Object object = opt(index); - if (object == null) { throw new JSONException("JSONArray[" + index + "] not found."); } + if (object == null) { + throw new JSONException("JSONArray[" + index + "] not found."); + } return object; } - + /** * Get the boolean value associated with an index. The string values "true" and "false" are converted to boolean. * @@ -189,17 +176,16 @@ public class JSONArray * * @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(final int index) throws JSONException { final 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; + } else if (object.equals(Boolean.TRUE) || ((object instanceof String) && ((String) object).equalsIgnoreCase("true"))) { + return true; } - else if (object.equals(Boolean.TRUE) || ((object instanceof String) && ((String) object).equalsIgnoreCase("true"))) { return true; } throw new JSONException("JSONArray[" + index + "] is not a boolean."); } - + /** * Get the double value associated with an index. * @@ -209,19 +195,15 @@ public class JSONArray * * @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(final int index) throws JSONException { final Object object = get(index); - try - { + try { return object instanceof Number ? ((Number) object).doubleValue() : Double.parseDouble((String) object); - } - catch (final Exception e) - { + } catch (final Exception e) { throw new JSONException("JSONArray[" + index + "] is not a number."); } } - + /** * Get the int value associated with an index. * @@ -231,19 +213,15 @@ public class JSONArray * * @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(final int index) throws JSONException { final Object object = get(index); - try - { + try { return object instanceof Number ? ((Number) object).intValue() : Integer.parseInt((String) object); - } - catch (final Exception e) - { + } catch (final Exception e) { throw new JSONException("JSONArray[" + index + "] is not a number."); } } - + /** * Get the JSONArray associated with an index. * @@ -253,13 +231,14 @@ public class 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(final int index) throws JSONException { final Object object = get(index); - if (object instanceof JSONArray) { return (JSONArray) object; } + if (object instanceof JSONArray) { + return (JSONArray) object; + } throw new JSONException("JSONArray[" + index + "] is not a JSONArray."); } - + /** * Get the JSONObject associated with an index. * @@ -269,13 +248,14 @@ public class JSONArray * * @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(final int index) throws JSONException { final Object object = get(index); - if (object instanceof JSONObject) { return (JSONObject) object; } + if (object instanceof JSONObject) { + return (JSONObject) object; + } throw new JSONException("JSONArray[" + index + "] is not a JSONObject."); } - + /** * Get the long value associated with an index. * @@ -285,19 +265,15 @@ public class JSONArray * * @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(final int index) throws JSONException { final Object object = get(index); - try - { + try { return object instanceof Number ? ((Number) object).longValue() : Long.parseLong((String) object); - } - catch (final Exception e) - { + } catch (final Exception e) { throw new JSONException("JSONArray[" + index + "] is not a number."); } } - + /** * Get the string associated with an index. * @@ -307,13 +283,14 @@ public class JSONArray * * @throws JSONException If there is no string value for the index. */ - public String getString(final int index) throws JSONException - { + public String getString(final int index) throws JSONException { final Object object = get(index); - if (object instanceof String) { return (String) object; } + if (object instanceof String) { + return (String) object; + } throw new JSONException("JSONArray[" + index + "] not a string."); } - + /** * Determine if the value is null. * @@ -321,11 +298,10 @@ public class JSONArray * * @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(final int index) { return JSONObject.NULL.equals(opt(index)); } - + /** * Make a string from the contents of this JSONArray. The separator string is inserted between each * element. Warning: This method assumes that the data structure is acyclical. @@ -336,31 +312,27 @@ public class JSONArray * * @throws JSONException If the array contains an invalid number. */ - public String join(final String separator) throws JSONException - { + public String join(final String separator) throws JSONException { final int len = length(); final StringBuilder sb = new StringBuilder(); - for (int i = 0; i < len; i += 1) - { - if (i > 0) - { + for (int i = 0; i < len; i += 1) { + if (i > 0) { sb.append(separator); } sb.append(JSONObject.valueToString(myArrayList.get(i))); } return sb.toString(); } - + /** * Get the number of elements in the JSONArray, included nulls. * * @return The length (or size). */ - public int length() - { + public int length() { return myArrayList.size(); } - + /** * Get the optional object value associated with an index. * @@ -368,11 +340,10 @@ public class JSONArray * * @return An object value, or null if there is no object at that index. */ - public Object opt(final int index) - { + public Object opt(final int index) { return ((index < 0) || (index >= length())) ? null : myArrayList.get(index); } - + /** * Get the optional boolean value associated with an index. It returns false if there is no value at that index, or * if the value is not Boolean.TRUE or the String "true". @@ -381,11 +352,10 @@ public class JSONArray * * @return The truth. */ - public boolean optBoolean(final int index) - { + public boolean optBoolean(final int index) { return this.optBoolean(index, false); } - + /** * Get the optional boolean value associated with an index. It returns the defaultValue if there is no value at that * index or if it is not a Boolean or the String "true" or "false" (case insensitive). @@ -395,18 +365,14 @@ public class JSONArray * * @return The truth. */ - public boolean optBoolean(final int index, final boolean defaultValue) - { - try - { + public boolean optBoolean(final int index, final boolean defaultValue) { + try { return getBoolean(index); - } - catch (final Exception e) - { + } catch (final Exception e) { return defaultValue; } } - + /** * Get the optional double value associated with an index. NaN is returned if there is no value for the index, or if * the value is not a number and cannot be converted to a number. @@ -415,11 +381,10 @@ public class JSONArray * * @return The value. */ - public double optDouble(final int index) - { + public double optDouble(final int index) { return this.optDouble(index, Double.NaN); } - + /** * Get the optional double value associated with an index. The defaultValue is returned if there is no value for the * index, or if the value is not a number and cannot be converted to a number. @@ -429,18 +394,14 @@ public class JSONArray * * @return The value. */ - public double optDouble(final int index, final double defaultValue) - { - try - { + public double optDouble(final int index, final double defaultValue) { + try { return getDouble(index); - } - catch (final Exception e) - { + } catch (final Exception e) { return defaultValue; } } - + /** * Get the optional int value associated with an index. Zero is returned if there is no value for the index, or if * the value is not a number and cannot be converted to a number. @@ -449,11 +410,10 @@ public class JSONArray * * @return The value. */ - public int optInt(final int index) - { + public int optInt(final int index) { return this.optInt(index, 0); } - + /** * Get the optional int value associated with an index. The defaultValue is returned if there is no value for the * index, or if the value is not a number and cannot be converted to a number. @@ -463,18 +423,14 @@ public class JSONArray * * @return The value. */ - public int optInt(final int index, final int defaultValue) - { - try - { + public int optInt(final int index, final int defaultValue) { + try { return getInt(index); - } - catch (final Exception e) - { + } catch (final Exception e) { return defaultValue; } } - + /** * Get the optional JSONArray associated with an index. * @@ -482,12 +438,11 @@ public class 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(final int index) { final Object o = opt(index); return o instanceof JSONArray ? (JSONArray) o : null; } - + /** * Get the optional JSONObject associated with an index. Null is returned if the key is not found, or null if the * index has no value, or if the value is not a JSONObject. @@ -496,12 +451,11 @@ public class JSONArray * * @return A JSONObject value. */ - public JSONObject optJSONObject(final int index) - { + public JSONObject optJSONObject(final int index) { final Object o = opt(index); return o instanceof JSONObject ? (JSONObject) o : null; } - + /** * Get the optional long value associated with an index. Zero is returned if there is no value for the index, or if * the value is not a number and cannot be converted to a number. @@ -510,11 +464,10 @@ public class JSONArray * * @return The value. */ - public long optLong(final int index) - { + public long optLong(final int index) { return this.optLong(index, 0); } - + /** * Get the optional long value associated with an index. The defaultValue is returned if there is no value for the * index, or if the value is not a number and cannot be converted to a number. @@ -524,18 +477,14 @@ public class JSONArray * * @return The value. */ - public long optLong(final int index, final long defaultValue) - { - try - { + public long optLong(final int index, final long defaultValue) { + try { return getLong(index); - } - catch (final Exception e) - { + } catch (final Exception e) { return defaultValue; } } - + /** * 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. @@ -544,11 +493,10 @@ public class JSONArray * * @return A String value. */ - public String optString(final int index) - { + public String optString(final int index) { return this.optString(index, ""); } - + /** * Get the optional string associated with an index. The defaultValue is returned if the key is not found. * @@ -557,12 +505,11 @@ public class JSONArray * * @return A String value. */ - public String optString(final int index, final String defaultValue) - { + public String optString(final int index, final String defaultValue) { final Object object = opt(index); return JSONObject.NULL.equals(object) ? defaultValue : object.toString(); } - + /** * Append a boolean value. This increases the array's length by one. * @@ -570,12 +517,11 @@ public class JSONArray * * @return this. */ - public JSONArray put(final boolean value) - { + public JSONArray put(final boolean value) { this.put(value ? Boolean.TRUE : Boolean.FALSE); return this; } - + /** * Put a value in the JSONArray, where the value will be a JSONArray which is produced from a Collection. * @@ -583,12 +529,11 @@ public class JSONArray * * @return this. */ - public JSONArray put(final Collection value) - { + public JSONArray put(final Collection value) { this.put(new JSONArray(value)); return this; } - + /** * Append a double value. This increases the array's length by one. * @@ -598,14 +543,13 @@ public class JSONArray * * @throws JSONException if the value is not finite. */ - public JSONArray put(final double value) throws JSONException - { + public JSONArray put(final double value) throws JSONException { final Double d = value; JSONObject.testValidity(d); this.put(d); return this; } - + /** * Append an int value. This increases the array's length by one. * @@ -613,12 +557,11 @@ public class JSONArray * * @return this. */ - public JSONArray put(final int value) - { + public JSONArray put(final int value) { this.put(new Integer(value)); return this; } - + /** * Append an long value. This increases the array's length by one. * @@ -626,12 +569,11 @@ public class JSONArray * * @return this. */ - public JSONArray put(final long value) - { + public JSONArray put(final long value) { this.put(new Long(value)); return this; } - + /** * Put a value in the JSONArray, where the value will be a JSONObject which is produced from a Map. * @@ -639,12 +581,11 @@ public class JSONArray * * @return this. */ - public JSONArray put(final Map value) - { + public JSONArray put(final Map value) { this.put(new JSONObject(value)); return this; } - + /** * Append an object value. This increases the array's length by one. * @@ -653,12 +594,11 @@ public class JSONArray * * @return this. */ - public JSONArray put(final Object value) - { + public JSONArray put(final Object value) { myArrayList.add(value); return this; } - + /** * Put or replace a boolean value in the JSONArray. If the index is greater than the length of the JSONArray, then * null elements will be added as necessary to pad it out. @@ -670,12 +610,11 @@ public class JSONArray * * @throws JSONException If the index is negative. */ - public JSONArray put(final int index, final boolean value) throws JSONException - { + public JSONArray put(final int index, final boolean value) throws JSONException { this.put(index, value ? Boolean.TRUE : Boolean.FALSE); return this; } - + /** * Put a value in the JSONArray, where the value will be a JSONArray which is produced from a Collection. * @@ -686,12 +625,11 @@ public class JSONArray * * @throws JSONException If the index is negative or if the value is not finite. */ - public JSONArray put(final int index, final Collection value) throws JSONException - { + public JSONArray put(final int index, final Collection value) throws JSONException { this.put(index, new JSONArray(value)); return this; } - + /** * Put or replace a double value. If the index is greater than the length of the JSONArray, then null elements will * be added as necessary to pad it out. @@ -703,12 +641,11 @@ public class JSONArray * * @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(final int index, final double value) throws JSONException { this.put(index, new Double(value)); return this; } - + /** * Put or replace an int value. If the index is greater than the length of the JSONArray, then null elements will be * added as necessary to pad it out. @@ -720,12 +657,11 @@ public class JSONArray * * @throws JSONException If the index is negative. */ - public JSONArray put(final int index, final int value) throws JSONException - { + public JSONArray put(final int index, final int value) throws JSONException { this.put(index, new Integer(value)); return this; } - + /** * Put or replace a long value. If the index is greater than the length of the JSONArray, then null elements will be * added as necessary to pad it out. @@ -737,12 +673,11 @@ public class JSONArray * * @throws JSONException If the index is negative. */ - public JSONArray put(final int index, final long value) throws JSONException - { + public JSONArray put(final int index, final long value) throws JSONException { this.put(index, new Long(value)); return this; } - + /** * Put a value in the JSONArray, where the value will be a JSONObject that is produced from a Map. * @@ -753,12 +688,11 @@ public class JSONArray * * @throws JSONException If the index is negative or if the the value is an invalid number. */ - public JSONArray put(final int index, final Map value) throws JSONException - { + public JSONArray put(final int index, final Map value) throws JSONException { this.put(index, new JSONObject(value)); return this; } - + /** * Put or replace an object value in the JSONArray. If the index is greater than the length of the JSONArray, then * null elements will be added as necessary to pad it out. @@ -771,25 +705,22 @@ public class JSONArray * * @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(final int index, final Object value) throws JSONException { JSONObject.testValidity(value); - if (index < 0) { throw new JSONException("JSONArray[" + index + "] not found."); } - if (index < length()) - { - myArrayList.set(index, value); + if (index < 0) { + throw new JSONException("JSONArray[" + index + "] not found."); } - else - { - while (index != length()) - { + if (index < length()) { + myArrayList.set(index, value); + } else { + while (index != length()) { this.put(JSONObject.NULL); } this.put(value); } return this; } - + /** * Remove an index and close the hole. * @@ -797,11 +728,10 @@ public class JSONArray * * @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(final int index) { return (index >= 0) && (index < length()) ? myArrayList.remove(index) : null; } - + /** * Determine if two JSONArrays are similar. They must contain similar sequences. * @@ -809,28 +739,32 @@ public class JSONArray * * @return true if they are equal */ - public boolean similar(final Object other) - { - if (!(other instanceof JSONArray)) { return false; } + public boolean similar(final Object other) { + if (!(other instanceof JSONArray)) { + return false; + } final int len = length(); - if (len != ((JSONArray) other).length()) { return false; } - for (int i = 0; i < len; i += 1) - { + if (len != ((JSONArray) other).length()) { + return false; + } + for (int i = 0; i < len; i += 1) { final Object valueThis = get(i); final Object valueOther = ((JSONArray) other).get(i); - if (valueThis instanceof JSONObject) - { - if (!((JSONObject) valueThis).similar(valueOther)) { return false; } + if (valueThis instanceof JSONObject) { + if (!((JSONObject) valueThis).similar(valueOther)) { + return false; + } + } else if (valueThis instanceof JSONArray) { + if (!((JSONArray) valueThis).similar(valueOther)) { + return false; + } + } else if (!valueThis.equals(valueOther)) { + return false; } - else if (valueThis instanceof JSONArray) - { - if (!((JSONArray) valueThis).similar(valueOther)) { return false; } - } - else if (!valueThis.equals(valueOther)) { return false; } } return true; } - + /** * Produce a JSONObject by combining a JSONArray of names with the values of this JSONArray. * @@ -840,17 +774,17 @@ public class JSONArray * * @throws JSONException If any of the names are null. */ - public JSONObject toJSONObject(final JSONArray names) throws JSONException - { - if ((names == null) || (names.length() == 0) || (length() == 0)) { return null; } + public JSONObject toJSONObject(final JSONArray names) throws JSONException { + if ((names == null) || (names.length() == 0) || (length() == 0)) { + return null; + } final 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)); } return jo; } - + /** * Make a JSON text of this JSONArray. For compactness, no unnecessary whitespace is added. If it is not possible to * produce a syntactically correct JSON text then null will be returned instead. This could occur if the array @@ -861,18 +795,14 @@ public class JSONArray * @return a printable, displayable, transmittable representation of the array. */ @Override - public String toString() - { - try - { + public String toString() { + try { return this.toString(0); - } - catch (final Exception e) - { + } catch (final Exception e) { return null; } } - + /** * Make a prettyprinted JSON text of this JSONArray. Warning: This method assumes that the data structure is * acyclical. @@ -885,15 +815,13 @@ public class JSONArray * * @throws JSONException */ - public String toString(final int indentFactor) throws JSONException - { + public String toString(final int indentFactor) throws JSONException { final StringWriter sw = new StringWriter(); - synchronized (sw.getBuffer()) - { + synchronized (sw.getBuffer()) { return this.write(sw, indentFactor, 0).toString(); } } - + /** * Write the contents of the JSONArray as JSON text to a writer. For compactness, no whitespace is added. * @@ -903,11 +831,10 @@ public class JSONArray * * @throws JSONException */ - public Writer write(final Writer writer) throws JSONException - { + public Writer write(final Writer writer) throws JSONException { return this.write(writer, 0, 0); } - + /** * Write the contents of the JSONArray as JSON text to a writer. For compactness, no whitespace is added. * @@ -920,45 +847,34 @@ public class JSONArray * * @throws JSONException */ - Writer write(final Writer writer, final int indentFactor, final int indent) throws JSONException - { - try - { + Writer write(final Writer writer, final int indentFactor, final int indent) throws JSONException { + try { boolean commanate = false; final int length = length(); writer.write('['); - if (length == 1) - { + if (length == 1) { JSONObject.writeValue(writer, myArrayList.get(0), indentFactor, indent); - } - else if (length != 0) - { + } else if (length != 0) { final int newindent = indent + indentFactor; - for (int i = 0; i < length; i += 1) - { - if (commanate) - { + for (int i = 0; i < length; i += 1) { + if (commanate) { writer.write(','); } - if (indentFactor > 0) - { + if (indentFactor > 0) { writer.write('\n'); } JSONObject.indent(writer, newindent); JSONObject.writeValue(writer, myArrayList.get(i), indentFactor, newindent); commanate = true; } - if (indentFactor > 0) - { + if (indentFactor > 0) { writer.write('\n'); } JSONObject.indent(writer, indent); } writer.write(']'); return writer; - } - catch (final IOException e) - { + } catch (final IOException e) { throw new JSONException(e); } } diff --git a/src/main/java/com/intellectualcrafters/json/JSONException.java b/src/main/java/com/intellectualcrafters/json/JSONException.java index b30bd7425..0d2acb352 100644 --- a/src/main/java/com/intellectualcrafters/json/JSONException.java +++ b/src/main/java/com/intellectualcrafters/json/JSONException.java @@ -6,40 +6,36 @@ package com.intellectualcrafters.json; * @author JSON.org * @version 2014-05-03 */ -public class JSONException extends RuntimeException -{ +public class JSONException extends RuntimeException { private static final long serialVersionUID = 0; private Throwable cause; - + /** * Constructs a JSONException with an explanatory message. * * @param message Detail about the reason for the exception. */ - public JSONException(final String message) - { + public JSONException(final String message) { super(message); } - + /** * Constructs a new JSONException with the specified cause. * * @param cause The cause. */ - public JSONException(final Throwable cause) - { + public JSONException(final Throwable cause) { super(cause.getMessage()); this.cause = cause; } - + /** * Returns the cause of this exception or null if the cause is nonexistent or unknown. * * @return the cause of this exception or null if the cause is nonexistent or unknown. */ @Override - public Throwable getCause() - { + public Throwable getCause() { return cause; } } diff --git a/src/main/java/com/intellectualcrafters/json/JSONML.java b/src/main/java/com/intellectualcrafters/json/JSONML.java index 0153d1e0c..43d2431d5 100644 --- a/src/main/java/com/intellectualcrafters/json/JSONML.java +++ b/src/main/java/com/intellectualcrafters/json/JSONML.java @@ -9,8 +9,7 @@ import java.util.Iterator; * @author JSON.org * @version 2014-05-03 */ -public class JSONML -{ +public class JSONML { /** * Parse XML values and store them in a JSONArray. * @@ -22,8 +21,7 @@ public class JSONML * * @throws JSONException */ - private static Object parse(final XMLTokener x, final boolean arrayForm, final JSONArray ja) throws JSONException - { + private static Object parse(final XMLTokener x, final boolean arrayForm, final JSONArray ja) throws JSONException { String attribute; char c; String closeTag = null; @@ -37,194 +35,155 @@ public class JSONML // // // - while (true) - { - if (!x.more()) { throw x.syntaxError("Bad XML"); } + while (true) { + if (!x.more()) { + throw x.syntaxError("Bad XML"); + } token = x.nextContent(); - if (token == XML.LT) - { + if (token == XML.LT) { token = x.nextToken(); - if (token instanceof Character) - { - if (token == XML.SLASH) - { + if (token instanceof Character) { + if (token == XML.SLASH) { // Close tag "); - } - else - { + } else { x.back(); } - } - else if (c == '[') - { + } else if (c == '[') { token = x.nextToken(); - if (token.equals("CDATA") && (x.next() == '[')) - { - if (ja != null) - { + if (token.equals("CDATA") && (x.next() == '[')) { + if (ja != null) { ja.put(x.nextCDATA()); } - } - else - { + } else { throw x.syntaxError("Expected 'CDATA['"); } - } - else - { + } else { i = 1; - do - { + do { token = x.nextMeta(); - if (token == null) - { + if (token == null) { throw x.syntaxError("Missing '>' after ' 0); + } while (i > 0); } - } - else if (token == XML.QUEST) - { + } else if (token == XML.QUEST) { // "); - } - else - { + } else { throw x.syntaxError("Misshaped tag"); } // Open tag < - } - else - { - if (!(token instanceof String)) { throw x.syntaxError("Bad tagName '" + token + "'."); } + } else { + if (!(token instanceof String)) { + throw x.syntaxError("Bad tagName '" + token + "'."); + } tagName = (String) token; newja = new JSONArray(); newjo = new JSONObject(); - if (arrayForm) - { + if (arrayForm) { newja.put(tagName); - if (ja != null) - { + if (ja != null) { ja.put(newja); } - } - else - { + } else { newjo.put("tagName", tagName); - if (ja != null) - { + if (ja != null) { ja.put(newjo); } } token = null; - for (;;) - { - if (token == null) - { + for (;;) { + if (token == null) { token = x.nextToken(); } - if (token == null) { throw x.syntaxError("Misshaped tag"); } - if (!(token instanceof String)) - { + if (token == null) { + throw x.syntaxError("Misshaped tag"); + } + if (!(token instanceof String)) { break; } // attribute = value attribute = (String) token; - if (!arrayForm && ("tagName".equals(attribute) || "childNode".equals(attribute))) { throw x.syntaxError("Reserved attribute."); } + if (!arrayForm && ("tagName".equals(attribute) || "childNode".equals(attribute))) { + throw x.syntaxError("Reserved attribute."); + } token = x.nextToken(); - if (token == XML.EQ) - { + if (token == XML.EQ) { token = x.nextToken(); - if (!(token instanceof String)) { throw x.syntaxError("Missing value"); } + if (!(token instanceof String)) { + throw x.syntaxError("Missing value"); + } newjo.accumulate(attribute, XML.stringToValue((String) token)); token = null; - } - else - { + } else { newjo.accumulate(attribute, ""); } } - if (arrayForm && (newjo.length() > 0)) - { + if (arrayForm && (newjo.length() > 0)) { newja.put(newjo); } // Empty tag <.../> - if (token == XML.SLASH) - { - if (x.nextToken() != XML.GT) { throw x.syntaxError("Misshaped tag"); } - if (ja == null) - { - if (arrayForm) - { + if (token == XML.SLASH) { + if (x.nextToken() != XML.GT) { + throw x.syntaxError("Misshaped tag"); + } + if (ja == null) { + if (arrayForm) { return newja; - } - else - { + } else { return newjo; } } // Content, between <...> and - } - else - { - if (token != XML.GT) { throw x.syntaxError("Misshaped tag"); } + } else { + if (token != XML.GT) { + throw x.syntaxError("Misshaped tag"); + } closeTag = (String) parse(x, arrayForm, newja); - if (closeTag != null) - { - if (!closeTag.equals(tagName)) { throw x.syntaxError("Mismatched '" + tagName + "' and '" + closeTag + "'"); } + if (closeTag != null) { + if (!closeTag.equals(tagName)) { + throw x.syntaxError("Mismatched '" + tagName + "' and '" + closeTag + "'"); + } tagName = null; - if (!arrayForm && (newja.length() > 0)) - { + if (!arrayForm && (newja.length() > 0)) { newjo.put("childNodes", newja); } - if (ja == null) - { - if (arrayForm) - { + if (ja == null) { + if (arrayForm) { return newja; - } - else - { + } else { return newjo; } } } } } - } - else - { - if (ja != null) - { + } else { + if (ja != null) { ja.put(token instanceof String ? XML.stringToValue((String) token) : token); } } } } - + /** * Convert a well-formed (but not necessarily valid) XML string into a JSONArray using the JsonML transform. Each * XML tag is represented as a JSONArray in which the first element is the tag name. If the tag has attributes, then @@ -236,11 +195,10 @@ public class JSONML * * @throws JSONException */ - public static JSONArray toJSONArray(final String string) throws JSONException - { + public static JSONArray toJSONArray(final String string) throws JSONException { return toJSONArray(new XMLTokener(string)); } - + /** * Convert a well-formed (but not necessarily valid) XML string into a JSONArray using the JsonML transform. Each * XML tag is represented as a JSONArray in which the first element is the tag name. If the tag has attributes, then @@ -254,11 +212,10 @@ public class JSONML * * @throws JSONException */ - public static JSONArray toJSONArray(final XMLTokener x) throws JSONException - { + public static JSONArray toJSONArray(final XMLTokener x) throws JSONException { return (JSONArray) parse(x, true, null); } - + /** * Convert a well-formed (but not necessarily valid) XML string into a JSONObject using the JsonML transform. Each * XML tag is represented as a JSONObject with a "tagName" property. If the tag has attributes, then the attributes @@ -273,11 +230,10 @@ public class JSONML * * @throws JSONException */ - public static JSONObject toJSONObject(final XMLTokener x) throws JSONException - { + public static JSONObject toJSONObject(final XMLTokener x) throws JSONException { return (JSONObject) parse(x, false, null); } - + /** * Convert a well-formed (but not necessarily valid) XML string into a JSONObject using the JsonML transform. Each * XML tag is represented as a JSONObject with a "tagName" property. If the tag has attributes, then the attributes @@ -292,11 +248,10 @@ public class JSONML * * @throws JSONException */ - public static JSONObject toJSONObject(final String string) throws JSONException - { + public static JSONObject toJSONObject(final String string) throws JSONException { return toJSONObject(new XMLTokener(string)); } - + /** * Reverse the JSONML transformation, making an XML text from a JSONArray. * @@ -306,8 +261,7 @@ public class JSONML * * @throws JSONException */ - public static String toString(final JSONArray ja) throws JSONException - { + public static String toString(final JSONArray ja) throws JSONException { int i; JSONObject jo; String key; @@ -324,19 +278,16 @@ public class JSONML sb.append('<'); sb.append(tagName); object = ja.opt(1); - if (object instanceof JSONObject) - { + if (object instanceof JSONObject) { i = 2; jo = (JSONObject) object; // Emit the attributes keys = jo.keys(); - while (keys.hasNext()) - { + while (keys.hasNext()) { key = keys.next(); XML.noSpace(key); value = jo.optString(key); - if (value != null) - { + if (value != null) { sb.append(' '); sb.append(XML.escape(key)); sb.append('='); @@ -345,42 +296,29 @@ public class JSONML sb.append('"'); } } - } - else - { + } else { i = 1; } // Emit content in body length = ja.length(); - if (i >= length) - { + if (i >= length) { sb.append('/'); sb.append('>'); - } - else - { + } else { sb.append('>'); - do - { + do { object = ja.get(i); i += 1; - if (object != null) - { - if (object instanceof String) - { + if (object != null) { + if (object instanceof String) { sb.append(XML.escape(object.toString())); - } - else if (object instanceof JSONObject) - { + } else if (object instanceof JSONObject) { sb.append(toString((JSONObject) object)); - } - else if (object instanceof JSONArray) - { + } else if (object instanceof JSONArray) { sb.append(toString((JSONArray) object)); } } - } - while (i < length); + } while (i < length); sb.append('<'); sb.append('/'); sb.append(tagName); @@ -388,7 +326,7 @@ public class JSONML } return sb.toString(); } - + /** * Reverse the JSONML transformation, making an XML text from a JSONObject. The JSONObject must contain a "tagName" * property. If it has children, then it must have a "childNodes" property containing an array of objects. The other @@ -400,8 +338,7 @@ public class JSONML * * @throws JSONException */ - public static String toString(final JSONObject jo) throws JSONException - { + public static String toString(final JSONObject jo) throws JSONException { final StringBuilder sb = new StringBuilder(); int i; JSONArray ja; @@ -413,22 +350,21 @@ public class JSONML String value; // Emit '); - } - else - { + } else { sb.append('>'); length = ja.length(); - for (i = 0; i < length; i += 1) - { + for (i = 0; i < length; i += 1) { object = ja.get(i); - if (object != null) - { - if (object instanceof String) - { + if (object != null) { + if (object instanceof String) { sb.append(XML.escape(object.toString())); - } - else if (object instanceof JSONObject) - { + } else if (object instanceof JSONObject) { sb.append(toString((JSONObject) object)); - } - else if (object instanceof JSONArray) - { + } else if (object instanceof JSONArray) { sb.append(toString((JSONArray) object)); - } - else - { + } else { sb.append(object.toString()); } } diff --git a/src/main/java/com/intellectualcrafters/json/JSONObject.java b/src/main/java/com/intellectualcrafters/json/JSONObject.java index 2f126f21d..81f89ff01 100644 --- a/src/main/java/com/intellectualcrafters/json/JSONObject.java +++ b/src/main/java/com/intellectualcrafters/json/JSONObject.java @@ -53,8 +53,7 @@ import java.util.Set; * @author JSON.org * @version 2014-05-03 */ -public class JSONObject -{ +public class JSONObject { /** * It is sometimes more convenient and less ambiguous to have a NULL object than to use Java's * null value. JSONObject.NULL.equals(null) returns true. @@ -65,15 +64,14 @@ public class JSONObject * The map where the JSONObject's properties are kept. */ private final Map map; - + /** * Construct an empty JSONObject. */ - public JSONObject() - { + public JSONObject() { map = new HashMap(); } - + /** * Construct a JSONObject from a subset of another JSONObject. An array of strings is used to identify the keys that * should be copied. Missing keys are ignored. @@ -84,20 +82,15 @@ public class JSONObject * @throws JSONException * @throws JSONException If a value is a non-finite number or if a name is duplicated. */ - public JSONObject(final JSONObject jo, final String[] names) - { + public JSONObject(final JSONObject jo, final String[] names) { this(); - for (final String name : names) - { - try - { + for (final String name : names) { + try { putOnce(name, jo.opt(name)); - } - catch (final Exception ignore) - {} + } catch (final Exception ignore) {} } } - + /** * Construct a JSONObject from a JSONTokener. * @@ -105,17 +98,16 @@ public class JSONObject * * @throws JSONException If there is a syntax error in the source string or a duplicated key. */ - public JSONObject(final JSONTokener x) throws JSONException - { + public JSONObject(final JSONTokener x) throws JSONException { this(); char c; String key; - if (x.nextClean() != '{') { throw x.syntaxError("A JSONObject text must begin with '{'"); } - for (;;) - { + if (x.nextClean() != '{') { + throw x.syntaxError("A JSONObject text must begin with '{'"); + } + for (;;) { c = x.nextClean(); - switch (c) - { + switch (c) { case 0: throw x.syntaxError("A JSONObject text must end with '}'"); case '}': @@ -126,14 +118,17 @@ public class JSONObject } // The key is followed by ':'. c = x.nextClean(); - if (c != ':') { throw x.syntaxError("Expected a ':' after a key"); } + if (c != ':') { + throw x.syntaxError("Expected a ':' after a key"); + } putOnce(key, x.nextValue()); // Pairs are separated by ','. - switch (x.nextClean()) - { + switch (x.nextClean()) { case ';': case ',': - if (x.nextClean() == '}') { return; } + if (x.nextClean() == '}') { + return; + } x.back(); break; case '}': @@ -143,7 +138,7 @@ public class JSONObject } } } - + /** * Construct a JSONObject from a Map. * @@ -151,22 +146,18 @@ public class JSONObject * * @throws JSONException */ - public JSONObject(final Map map) - { + public JSONObject(final Map map) { this.map = new HashMap(); - if (map != null) - { - for (final Entry entry : map.entrySet()) - { + if (map != null) { + for (final Entry entry : map.entrySet()) { final Object value = entry.getValue(); - if (value != null) - { + if (value != null) { this.map.put(entry.getKey(), wrap(value)); } } } } - + /** * Construct a JSONObject from an Object using bean getters. It reflects on all of the public methods of the object. * For each of the methods with no parameters and a name starting with "get" or "is" @@ -182,12 +173,11 @@ public class JSONObject * * @param bean An object that has getter methods that should be used to make a JSONObject. */ - public JSONObject(final Object bean) - { + public JSONObject(final Object bean) { this(); populateMap(bean); } - + /** * Construct a JSONObject from an Object, using reflection to find the public members. The resulting JSONObject's * keys will be the strings from the names array, and the values will be the field values associated with those keys @@ -196,21 +186,16 @@ public class JSONObject * @param object An object that has fields that should be used to make a JSONObject. * @param names An array of strings, the names of the fields to be obtained from the object. */ - public JSONObject(final Object object, final String names[]) - { + public JSONObject(final Object object, final String names[]) { this(); final Class c = object.getClass(); - for (final String name : names) - { - try - { + for (final String name : names) { + try { putOpt(name, c.getField(name).get(object)); - } - catch (final Exception ignore) - {} + } catch (final Exception ignore) {} } } - + /** * Construct a JSONObject from a source JSON text string. This is the most commonly used JSONObject constructor. * @@ -219,11 +204,10 @@ public class JSONObject * * @throws JSONException If there is a syntax error in the source string or a duplicated key. */ - public JSONObject(final String source) throws JSONException - { + public JSONObject(final String source) throws JSONException { this(new JSONTokener(source)); } - + /** * Construct a JSONObject from a ResourceBundle. * @@ -232,17 +216,14 @@ public class JSONObject * * @throws JSONException If any JSONExceptions are detected. */ - public JSONObject(final String baseName, final Locale locale) throws JSONException - { + public JSONObject(final String baseName, final Locale locale) throws JSONException { this(); final ResourceBundle bundle = ResourceBundle.getBundle(baseName, locale, Thread.currentThread().getContextClassLoader()); // Iterate through the keys in the bundle. final Enumeration keys = bundle.getKeys(); - while (keys.hasMoreElements()) - { + while (keys.hasMoreElements()) { final Object key = keys.nextElement(); - if (key != null) - { + if (key != null) { // Go through the path, ensuring that there is a nested // JSONObject for each // segment except the last. Add the value using the last @@ -251,12 +232,10 @@ public class JSONObject final String[] path = ((String) key).split("\\."); final int last = path.length - 1; JSONObject target = this; - for (int i = 0; i < last; i += 1) - { + for (int i = 0; i < last; i += 1) { final String segment = path[i]; JSONObject nextTarget = target.optJSONObject(segment); - if (nextTarget == null) - { + if (nextTarget == null) { nextTarget = new JSONObject(); target.put(segment, nextTarget); } @@ -266,7 +245,7 @@ public class JSONObject } } } - + /** * Produce a string from a double. The string "null" will be returned if the number is not finite. * @@ -274,65 +253,65 @@ public class JSONObject * * @return A String. */ - public static String doubleToString(final double d) - { - if (Double.isInfinite(d) || Double.isNaN(d)) { return "null"; } + public static String doubleToString(final double d) { + if (Double.isInfinite(d) || Double.isNaN(d)) { + return "null"; + } // Shave off trailing zeros and decimal point, if possible. String string = Double.toString(d); - if ((string.indexOf('.') > 0) && (string.indexOf('e') < 0) && (string.indexOf('E') < 0)) - { - while (string.endsWith("0")) - { + if ((string.indexOf('.') > 0) && (string.indexOf('e') < 0) && (string.indexOf('E') < 0)) { + while (string.endsWith("0")) { string = string.substring(0, string.length() - 1); } - if (string.endsWith(".")) - { + if (string.endsWith(".")) { string = string.substring(0, string.length() - 1); } } return string; } - + /** * Get an array of field names from a JSONObject. * * @return An array of field names, or null if there are no names. */ - public static String[] getNames(final JSONObject jo) - { + public static String[] getNames(final JSONObject jo) { final int length = jo.length(); - if (length == 0) { return null; } + if (length == 0) { + return null; + } final Iterator iterator = jo.keys(); final String[] names = new String[length]; int i = 0; - while (iterator.hasNext()) - { + while (iterator.hasNext()) { names[i] = iterator.next(); i += 1; } return names; } - + /** * Get an array of field names from an Object. * * @return An array of field names, or null if there are no names. */ - public static String[] getNames(final Object object) - { - if (object == null) { return null; } + public static String[] getNames(final Object object) { + if (object == null) { + return null; + } final Class klass = object.getClass(); final Field[] fields = klass.getFields(); final int length = fields.length; - if (length == 0) { return null; } + if (length == 0) { + return null; + } final String[] names = new String[length]; - for (int i = 0; i < length; i += 1) - { + for (int i = 0; i < length; i += 1) { names[i] = fields[i].getName(); } return names; } - + /** * Produce a string from a Number. * @@ -342,26 +321,24 @@ public class JSONObject * * @throws JSONException If n is a non-finite number. */ - public static String numberToString(final Number number) throws JSONException - { - if (number == null) { throw new JSONException("Null pointer"); } + public static String numberToString(final Number number) throws JSONException { + if (number == null) { + throw new JSONException("Null pointer"); + } testValidity(number); // Shave off trailing zeros and decimal point, if possible. String string = number.toString(); - if ((string.indexOf('.') > 0) && (string.indexOf('e') < 0) && (string.indexOf('E') < 0)) - { - while (string.endsWith("0")) - { + if ((string.indexOf('.') > 0) && (string.indexOf('e') < 0) && (string.indexOf('E') < 0)) { + while (string.endsWith("0")) { string = string.substring(0, string.length() - 1); } - if (string.endsWith(".")) - { + if (string.endsWith(".")) { string = string.substring(0, string.length() - 1); } } return string; } - + /** * Produce a string in double quotes with backslash sequences in all the right places. A backslash will be inserted * control character or an unescaped quote or backslash. @@ -370,27 +347,20 @@ public class JSONObject * * @return A String correctly formatted for insertion in a JSON text. */ - public static String quote(final String string) - { + public static String quote(final String string) { final StringWriter sw = new StringWriter(); - synchronized (sw.getBuffer()) - { - try - { + synchronized (sw.getBuffer()) { + try { return quote(string, sw).toString(); - } - catch (final IOException ignored) - { + } catch (final IOException ignored) { // will never happen - we are writing to a string writer return ""; } } } - - public static Writer quote(final String string, final Writer w) throws IOException - { - if ((string == null) || (string.length() == 0)) - { + + public static Writer quote(final String string, final Writer w) throws IOException { + if ((string == null) || (string.length() == 0)) { w.write("\"\""); return w; } @@ -400,20 +370,17 @@ public class JSONObject int i; final int len = string.length(); w.write('"'); - for (i = 0; i < len; i += 1) - { + for (i = 0; i < len; i += 1) { b = c; c = string.charAt(i); - switch (c) - { + switch (c) { case '\\': case '"': w.write('\\'); w.write(c); break; case '/': - if (b == '<') - { + if (b == '<') { w.write('\\'); } w.write(c); @@ -434,15 +401,12 @@ public class JSONObject w.write("\\r"); break; default: - if ((c < ' ') || ((c >= '\u0080') && (c < '\u00a0')) || ((c >= '\u2000') && (c < '\u2100'))) - { + if ((c < ' ') || ((c >= '\u0080') && (c < '\u00a0')) || ((c >= '\u2000') && (c < '\u2100'))) { w.write("\\u"); hhhh = Integer.toHexString(c); w.write("0000", 0, 4 - hhhh.length()); w.write(hhhh); - } - else - { + } else { w.write(c); } } @@ -450,7 +414,7 @@ public class JSONObject w.write('"'); return w; } - + /** * Try to convert a string into a number, boolean, or null. If the string can't be converted, return the string. * @@ -458,49 +422,47 @@ public class JSONObject * * @return A simple JSON value. */ - public static Object stringToValue(final String string) - { + public static Object stringToValue(final String string) { Double d; - if (string.equals("")) { return string; } - if (string.equalsIgnoreCase("true")) { return Boolean.TRUE; } - if (string.equalsIgnoreCase("false")) { return Boolean.FALSE; } - if (string.equalsIgnoreCase("null")) { return JSONObject.NULL; } + if (string.equals("")) { + return string; + } + if (string.equalsIgnoreCase("true")) { + return Boolean.TRUE; + } + if (string.equalsIgnoreCase("false")) { + return Boolean.FALSE; + } + if (string.equalsIgnoreCase("null")) { + return JSONObject.NULL; + } /* * If it might be a number, try converting it. If a number cannot be * produced, then the value will just be a string. */ final char b = string.charAt(0); - if (((b >= '0') && (b <= '9')) || (b == '-')) - { - try - { - if ((string.indexOf('.') > -1) || (string.indexOf('e') > -1) || (string.indexOf('E') > -1)) - { + if (((b >= '0') && (b <= '9')) || (b == '-')) { + try { + if ((string.indexOf('.') > -1) || (string.indexOf('e') > -1) || (string.indexOf('E') > -1)) { d = Double.valueOf(string); - if (!d.isInfinite() && !d.isNaN()) { return d; } - } - else - { + if (!d.isInfinite() && !d.isNaN()) { + return d; + } + } else { final Long myLong = new Long(string); - if (string.equals(myLong.toString())) - { - if (myLong == myLong.intValue()) - { + if (string.equals(myLong.toString())) { + if (myLong == myLong.intValue()) { return myLong.intValue(); - } - else - { + } else { return myLong; } } } - } - catch (final Exception ignore) - {} + } catch (final Exception ignore) {} } return string; } - + /** * Throw an exception if the object is a NaN or infinite number. * @@ -508,21 +470,20 @@ public class JSONObject * * @throws JSONException If o is a non-finite number. */ - public static void testValidity(final Object o) throws JSONException - { - if (o != null) - { - if (o instanceof Double) - { - if (((Double) o).isInfinite() || ((Double) o).isNaN()) { throw new JSONException("JSON does not allow non-finite numbers."); } - } - else if (o instanceof Float) - { - if (((Float) o).isInfinite() || ((Float) o).isNaN()) { throw new JSONException("JSON does not allow non-finite numbers."); } + public static void testValidity(final Object o) throws JSONException { + if (o != null) { + if (o instanceof Double) { + if (((Double) o).isInfinite() || ((Double) o).isNaN()) { + throw new JSONException("JSON does not allow non-finite numbers."); + } + } else if (o instanceof Float) { + if (((Float) o).isInfinite() || ((Float) o).isNaN()) { + throw new JSONException("JSON does not allow non-finite numbers."); + } } } } - + /** * Make a JSON text of an Object value. If the object has an value.toJSONString() method, then that method will be * used to produce the JSON text. The method is required to produce a strictly conforming text. If the object does @@ -542,31 +503,40 @@ public class JSONObject * * @throws JSONException If the value is or contains an invalid number. */ - public static String valueToString(final Object value) throws JSONException - { - if ((value == null) || value.equals(null)) { return "null"; } - if (value instanceof JSONString) - { + public static String valueToString(final Object value) throws JSONException { + if ((value == null) || value.equals(null)) { + return "null"; + } + if (value instanceof JSONString) { Object object; - try - { + try { object = ((JSONString) value).toJSONString(); - } - catch (final Exception e) - { + } catch (final Exception e) { throw new JSONException(e); } - if (object instanceof String) { return (String) object; } + if (object instanceof String) { + return (String) object; + } throw new JSONException("Bad value from toJSONString: " + object); } - if (value instanceof Number) { return numberToString((Number) value); } - if ((value instanceof Boolean) || (value instanceof JSONObject) || (value instanceof JSONArray)) { return value.toString(); } - if (value instanceof Map) { return new JSONObject((Map) value).toString(); } - if (value instanceof Collection) { return new JSONArray((Collection) value).toString(); } - if (value.getClass().isArray()) { return new JSONArray(value).toString(); } + if (value instanceof Number) { + return numberToString((Number) value); + } + if ((value instanceof Boolean) || (value instanceof JSONObject) || (value instanceof JSONArray)) { + return value.toString(); + } + if (value instanceof Map) { + return new JSONObject((Map) value).toString(); + } + if (value instanceof Collection) { + return new JSONArray((Collection) value).toString(); + } + if (value.getClass().isArray()) { + return new JSONArray(value).toString(); + } return quote(value.toString()); } - + /** * Wrap an object, if necessary. If the object is null, return the NULL object. If it is an array or collection, * wrap it in a JSONArray. If it is a map, wrap it in a JSONObject. If it is a standard property (Double, String, et @@ -577,11 +547,11 @@ public class JSONObject * * @return The wrapped value */ - public static Object wrap(final Object object) - { - try - { - if (object == null) { return NULL; } + public static Object wrap(final Object object) { + try { + if (object == null) { + return NULL; + } if ((object instanceof JSONObject) || (object instanceof JSONArray) || NULL.equals(object) @@ -594,83 +564,66 @@ public class JSONObject || (object instanceof Boolean) || (object instanceof Float) || (object instanceof Double) - || (object instanceof String)) { return object; } - if (object instanceof Collection) { return new JSONArray((Collection) object); } - if (object.getClass().isArray()) { return new JSONArray(object); } - if (object instanceof Map) { return new JSONObject((Map) object); } + || (object instanceof String)) { + return object; + } + if (object instanceof Collection) { + return new JSONArray((Collection) object); + } + if (object.getClass().isArray()) { + return new JSONArray(object); + } + if (object instanceof Map) { + return new JSONObject((Map) object); + } final Package objectPackage = object.getClass().getPackage(); final String objectPackageName = objectPackage != null ? objectPackage.getName() : ""; - if (objectPackageName.startsWith("java.") || objectPackageName.startsWith("javax.") || (object.getClass().getClassLoader() == null)) { return object.toString(); } + if (objectPackageName.startsWith("java.") || objectPackageName.startsWith("javax.") || (object.getClass().getClassLoader() == null)) { + return object.toString(); + } return new JSONObject(object); - } - catch (final Exception exception) - { + } catch (final Exception exception) { return null; } } - - static final Writer writeValue(final Writer writer, final Object value, final int indentFactor, final int indent) throws JSONException, IOException - { - if ((value == null) || value.equals(null)) - { + + static final Writer writeValue(final Writer writer, final Object value, final int indentFactor, final int indent) throws JSONException, IOException { + if ((value == null) || value.equals(null)) { writer.write("null"); - } - else if (value instanceof JSONObject) - { + } else if (value instanceof JSONObject) { ((JSONObject) value).write(writer, indentFactor, indent); - } - else if (value instanceof JSONArray) - { + } else if (value instanceof JSONArray) { ((JSONArray) value).write(writer, indentFactor, indent); - } - else if (value instanceof Map) - { + } else if (value instanceof Map) { new JSONObject((Map) value).write(writer, indentFactor, indent); - } - else if (value instanceof Collection) - { + } else if (value instanceof Collection) { new JSONArray((Collection) value).write(writer, indentFactor, indent); - } - else if (value.getClass().isArray()) - { + } else if (value.getClass().isArray()) { new JSONArray(value).write(writer, indentFactor, indent); - } - else if (value instanceof Number) - { + } else if (value instanceof Number) { writer.write(numberToString((Number) value)); - } - else if (value instanceof Boolean) - { + } else if (value instanceof Boolean) { writer.write(value.toString()); - } - else if (value instanceof JSONString) - { + } else if (value instanceof JSONString) { Object o; - try - { + try { o = ((JSONString) value).toJSONString(); - } - catch (final Exception e) - { + } catch (final Exception e) { throw new JSONException(e); } writer.write(o != null ? o.toString() : quote(value.toString())); - } - else - { + } else { quote(value.toString(), writer); } return writer; } - - static final void indent(final Writer writer, final int indent) throws IOException - { - for (int i = 0; i < indent; i += 1) - { + + static final void indent(final Writer writer, final int indent) throws IOException { + for (int i = 0; i < indent; i += 1) { writer.write(' '); } } - + /** * Accumulate values under a key. It is similar to the put method except that if there is already an object stored * under the key then a JSONArray is stored under the key to hold all of the accumulated values. If there is already @@ -686,25 +639,19 @@ public class JSONObject * * @throws JSONException If the value is an invalid number or if the key is null. */ - public JSONObject accumulate(final String key, final Object value) throws JSONException - { + public JSONObject accumulate(final String key, final Object value) throws JSONException { testValidity(value); final Object object = opt(key); - if (object == null) - { + if (object == null) { this.put(key, value instanceof JSONArray ? new JSONArray().put(value) : value); - } - else if (object instanceof JSONArray) - { + } else if (object instanceof JSONArray) { ((JSONArray) object).put(value); - } - else - { + } else { this.put(key, new JSONArray().put(object).put(value)); } return this; } - + /** * Append values to the array under a key. If the key does not exist in the JSONObject, then the key is put in the * JSONObject with its value being a JSONArray containing the value parameter. If the key was already associated @@ -717,25 +664,19 @@ public class JSONObject * * @throws JSONException If the key is null or if the current value associated with the key is not a JSONArray. */ - public JSONObject append(final String key, final Object value) throws JSONException - { + public JSONObject append(final String key, final Object value) throws JSONException { testValidity(value); final Object object = opt(key); - if (object == null) - { + if (object == null) { this.put(key, new JSONArray().put(value)); - } - else if (object instanceof JSONArray) - { + } else if (object instanceof JSONArray) { this.put(key, ((JSONArray) object).put(value)); - } - else - { + } else { throw new JSONException("JSONObject[" + key + "] is not a JSONArray."); } return this; } - + /** * Get the value object associated with a key. * @@ -745,14 +686,17 @@ public class JSONObject * * @throws JSONException if the key is not found. */ - public Object get(final String key) throws JSONException - { - if (key == null) { throw new JSONException("Null key."); } + public Object get(final String key) throws JSONException { + if (key == null) { + throw new JSONException("Null key."); + } final Object object = opt(key); - if (object == null) { throw new JSONException("JSONObject[" + quote(key) + "] not found."); } + if (object == null) { + throw new JSONException("JSONObject[" + quote(key) + "] not found."); + } return object; } - + /** * Get the boolean value associated with a key. * @@ -762,17 +706,16 @@ public class JSONObject * * @throws JSONException if the value is not a Boolean or the String "true" or "false". */ - public boolean getBoolean(final String key) throws JSONException - { + public boolean getBoolean(final String key) throws JSONException { final Object object = get(key); - 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; + } else if (object.equals(Boolean.TRUE) || ((object instanceof String) && ((String) object).equalsIgnoreCase("true"))) { + return true; } - else if (object.equals(Boolean.TRUE) || ((object instanceof String) && ((String) object).equalsIgnoreCase("true"))) { return true; } throw new JSONException("JSONObject[" + quote(key) + "] is not a Boolean."); } - + /** * Get the double value associated with a key. * @@ -783,19 +726,15 @@ public class JSONObject * @throws JSONException if the key is not found or if the value is not a Number object and cannot be converted to a * number. */ - public double getDouble(final String key) throws JSONException - { + public double getDouble(final String key) throws JSONException { final Object object = get(key); - try - { + try { return object instanceof Number ? ((Number) object).doubleValue() : Double.parseDouble((String) object); - } - catch (final Exception e) - { + } catch (final Exception e) { throw new JSONException("JSONObject[" + quote(key) + "] is not a number."); } } - + /** * Get the int value associated with a key. * @@ -805,19 +744,15 @@ public class JSONObject * * @throws JSONException if the key is not found or if the value cannot be converted to an integer. */ - public int getInt(final String key) throws JSONException - { + public int getInt(final String key) throws JSONException { final Object object = get(key); - try - { + try { return object instanceof Number ? ((Number) object).intValue() : Integer.parseInt((String) object); - } - catch (final Exception e) - { + } catch (final Exception e) { throw new JSONException("JSONObject[" + quote(key) + "] is not an int."); } } - + /** * Get the JSONArray value associated with a key. * @@ -827,13 +762,14 @@ public class JSONObject * * @throws JSONException if the key is not found or if the value is not a JSONArray. */ - public JSONArray getJSONArray(final String key) throws JSONException - { + public JSONArray getJSONArray(final String key) throws JSONException { final Object object = get(key); - if (object instanceof JSONArray) { return (JSONArray) object; } + if (object instanceof JSONArray) { + return (JSONArray) object; + } throw new JSONException("JSONObject[" + quote(key) + "] is not a JSONArray."); } - + /** * Get the JSONObject value associated with a key. * @@ -843,13 +779,14 @@ public class JSONObject * * @throws JSONException if the key is not found or if the value is not a JSONObject. */ - public JSONObject getJSONObject(final String key) throws JSONException - { + public JSONObject getJSONObject(final String key) throws JSONException { final Object object = get(key); - if (object instanceof JSONObject) { return (JSONObject) object; } + if (object instanceof JSONObject) { + return (JSONObject) object; + } throw new JSONException("JSONObject[" + quote(key) + "] is not a JSONObject."); } - + /** * Get the long value associated with a key. * @@ -859,19 +796,15 @@ public class JSONObject * * @throws JSONException if the key is not found or if the value cannot be converted to a long. */ - public long getLong(final String key) throws JSONException - { + public long getLong(final String key) throws JSONException { final Object object = get(key); - try - { + try { return object instanceof Number ? ((Number) object).longValue() : Long.parseLong((String) object); - } - catch (final Exception e) - { + } catch (final Exception e) { throw new JSONException("JSONObject[" + quote(key) + "] is not a long."); } } - + /** * Get the string associated with a key. * @@ -881,13 +814,14 @@ public class JSONObject * * @throws JSONException if there is no string value for the key. */ - public String getString(final String key) throws JSONException - { + public String getString(final String key) throws JSONException { final Object object = get(key); - if (object instanceof String) { return (String) object; } + if (object instanceof String) { + return (String) object; + } throw new JSONException("JSONObject[" + quote(key) + "] not a string."); } - + /** * Determine if the JSONObject contains a specific key. * @@ -895,11 +829,10 @@ public class JSONObject * * @return true if the key exists in the JSONObject. */ - public boolean has(final String key) - { + public boolean has(final String key) { return map.containsKey(key); } - + /** * Increment a property of a JSONObject. If there is no such property, create one with a value of 1. If there is * such a property, and if it is an Integer, Long, Double, or Float, then add one to it. @@ -911,36 +844,24 @@ public class JSONObject * @throws JSONException If there is already a property with this name that is not an Integer, Long, Double, or * Float. */ - public JSONObject increment(final String key) throws JSONException - { + public JSONObject increment(final String key) throws JSONException { final Object value = opt(key); - if (value == null) - { + if (value == null) { this.put(key, 1); - } - else if (value instanceof Integer) - { + } else if (value instanceof Integer) { this.put(key, (Integer) value + 1); - } - else if (value instanceof Long) - { + } else if (value instanceof Long) { this.put(key, (Long) value + 1); - } - else if (value instanceof Double) - { + } else if (value instanceof Double) { this.put(key, (Double) value + 1); - } - else if (value instanceof Float) - { + } else if (value instanceof Float) { this.put(key, (Float) value + 1); - } - else - { + } else { throw new JSONException("Unable to increment [" + quote(key) + "]."); } return this; } - + /** * Determine if the value associated with the key is null or if there is no value. * @@ -948,57 +869,51 @@ public class JSONObject * * @return true if there is no value associated with the key or if the value is the JSONObject.NULL object. */ - public boolean isNull(final String key) - { + public boolean isNull(final String key) { return JSONObject.NULL.equals(opt(key)); } - + /** * Get an enumeration of the keys of the JSONObject. * * @return An iterator of the keys. */ - public Iterator keys() - { + public Iterator keys() { return keySet().iterator(); } - + /** * Get a set of keys of the JSONObject. * * @return A keySet. */ - public Set keySet() - { + public Set keySet() { return map.keySet(); } - + /** * Get the number of keys stored in the JSONObject. * * @return The number of keys in the JSONObject. */ - public int length() - { + public int length() { return map.size(); } - + /** * Produce a JSONArray containing the names of the elements of this JSONObject. * * @return A JSONArray containing the key strings, or null if the JSONObject is empty. */ - public JSONArray names() - { + public JSONArray names() { final JSONArray ja = new JSONArray(); final Iterator keys = keys(); - while (keys.hasNext()) - { + while (keys.hasNext()) { ja.put(keys.next()); } return ja.length() == 0 ? null : ja; } - + /** * Get an optional value associated with a key. * @@ -1006,11 +921,10 @@ public class JSONObject * * @return An object which is the value, or null if there is no value. */ - public Object opt(final String key) - { + public Object opt(final String key) { return key == null ? null : map.get(key); } - + /** * Get an optional boolean associated with a key. It returns false if there is no such key, or if the value is not * Boolean.TRUE or the String "true". @@ -1019,11 +933,10 @@ public class JSONObject * * @return The truth. */ - public boolean optBoolean(final String key) - { + public boolean optBoolean(final String key) { return this.optBoolean(key, false); } - + /** * Get an optional boolean associated with a key. It returns the defaultValue if there is no such key, or if it is * not a Boolean or the String "true" or "false" (case insensitive). @@ -1033,18 +946,14 @@ public class JSONObject * * @return The truth. */ - public boolean optBoolean(final String key, final boolean defaultValue) - { - try - { + public boolean optBoolean(final String key, final boolean defaultValue) { + try { return getBoolean(key); - } - catch (final Exception e) - { + } catch (final Exception e) { return defaultValue; } } - + /** * Get an optional double associated with a key, or NaN if there is no such key or if its value is not a number. If * the value is a string, an attempt will be made to evaluate it as a number. @@ -1053,11 +962,10 @@ public class JSONObject * * @return An object which is the value. */ - public double optDouble(final String key) - { + public double optDouble(final String key) { return this.optDouble(key, Double.NaN); } - + /** * Get an optional double associated with a key, or the defaultValue if there is no such key or if its value is not * a number. If the value is a string, an attempt will be made to evaluate it as a number. @@ -1067,18 +975,14 @@ public class JSONObject * * @return An object which is the value. */ - public double optDouble(final String key, final double defaultValue) - { - try - { + public double optDouble(final String key, final double defaultValue) { + try { return getDouble(key); - } - catch (final Exception e) - { + } catch (final Exception e) { return defaultValue; } } - + /** * Get an optional int value associated with a key, or zero if there is no such key or if the value is not a number. * If the value is a string, an attempt will be made to evaluate it as a number. @@ -1087,11 +991,10 @@ public class JSONObject * * @return An object which is the value. */ - public int optInt(final String key) - { + public int optInt(final String key) { return this.optInt(key, 0); } - + /** * Get an optional int value associated with a key, or the default if there is no such key or if the value is not a * number. If the value is a string, an attempt will be made to evaluate it as a number. @@ -1101,18 +1004,14 @@ public class JSONObject * * @return An object which is the value. */ - public int optInt(final String key, final int defaultValue) - { - try - { + public int optInt(final String key, final int defaultValue) { + try { return getInt(key); - } - catch (final Exception e) - { + } catch (final Exception e) { return defaultValue; } } - + /** * Get an optional JSONArray associated with a key. It returns null if there is no such key, or if its value is not * a JSONArray. @@ -1121,12 +1020,11 @@ public class JSONObject * * @return A JSONArray which is the value. */ - public JSONArray optJSONArray(final String key) - { + public JSONArray optJSONArray(final String key) { final Object o = opt(key); return o instanceof JSONArray ? (JSONArray) o : null; } - + /** * Get an optional JSONObject associated with a key. It returns null if there is no such key, or if its value is not * a JSONObject. @@ -1135,12 +1033,11 @@ public class JSONObject * * @return A JSONObject which is the value. */ - public JSONObject optJSONObject(final String key) - { + public JSONObject optJSONObject(final String key) { final Object object = opt(key); return object instanceof JSONObject ? (JSONObject) object : null; } - + /** * Get an optional long value associated with a key, or zero if there is no such key or if the value is not a * number. If the value is a string, an attempt will be made to evaluate it as a number. @@ -1149,11 +1046,10 @@ public class JSONObject * * @return An object which is the value. */ - public long optLong(final String key) - { + public long optLong(final String key) { return this.optLong(key, 0); } - + /** * Get an optional long value associated with a key, or the default if there is no such key or if the value is not a * number. If the value is a string, an attempt will be made to evaluate it as a number. @@ -1163,18 +1059,14 @@ public class JSONObject * * @return An object which is the value. */ - public long optLong(final String key, final long defaultValue) - { - try - { + public long optLong(final String key, final long defaultValue) { + try { return getLong(key); - } - catch (final Exception e) - { + } catch (final Exception e) { return defaultValue; } } - + /** * Get an optional string associated with a key. It returns an empty string if there is no such key. If the value is * not a string and is not null, then it is converted to a string. @@ -1183,11 +1075,10 @@ public class JSONObject * * @return A string which is the value. */ - public String optString(final String key) - { + public String optString(final String key) { return this.optString(key, ""); } - + /** * Get an optional string associated with a key. It returns the defaultValue if there is no such key. * @@ -1196,64 +1087,46 @@ public class JSONObject * * @return A string which is the value. */ - public String optString(final String key, final String defaultValue) - { + public String optString(final String key, final String defaultValue) { final Object object = opt(key); return NULL.equals(object) ? defaultValue : object.toString(); } - - private void populateMap(final Object bean) - { + + private void populateMap(final Object bean) { final Class klass = bean.getClass(); // If klass is a System class then set includeSuperClass to false. final boolean includeSuperClass = klass.getClassLoader() != null; final Method[] methods = includeSuperClass ? klass.getMethods() : klass.getDeclaredMethods(); - for (final Method method : methods) - { - try - { - if (Modifier.isPublic(method.getModifiers())) - { + for (final Method method : methods) { + try { + if (Modifier.isPublic(method.getModifiers())) { final String name = method.getName(); String key = ""; - if (name.startsWith("get")) - { - if ("getClass".equals(name) || "getDeclaringClass".equals(name)) - { + if (name.startsWith("get")) { + if ("getClass".equals(name) || "getDeclaringClass".equals(name)) { key = ""; - } - else - { + } else { key = name.substring(3); } - } - else if (name.startsWith("is")) - { + } else if (name.startsWith("is")) { key = name.substring(2); } - if ((key.length() > 0) && Character.isUpperCase(key.charAt(0)) && (method.getParameterTypes().length == 0)) - { - if (key.length() == 1) - { + if ((key.length() > 0) && Character.isUpperCase(key.charAt(0)) && (method.getParameterTypes().length == 0)) { + if (key.length() == 1) { key = key.toLowerCase(); - } - else if (!Character.isUpperCase(key.charAt(1))) - { + } else if (!Character.isUpperCase(key.charAt(1))) { key = key.substring(0, 1).toLowerCase() + key.substring(1); } final Object result = method.invoke(bean, (Object[]) null); - if (result != null) - { + if (result != null) { map.put(key, wrap(result)); } } } - } - catch (final Exception ignore) - {} + } catch (final Exception ignore) {} } } - + /** * Put a key/boolean pair in the JSONObject. * @@ -1264,12 +1137,11 @@ public class JSONObject * * @throws JSONException If the key is null. */ - public JSONObject put(final String key, final boolean value) throws JSONException - { + public JSONObject put(final String key, final boolean value) throws JSONException { this.put(key, value ? Boolean.TRUE : Boolean.FALSE); return this; } - + /** * Put a key/value pair in the JSONObject, where the value will be a JSONArray which is produced from a Collection. * @@ -1280,12 +1152,11 @@ public class JSONObject * * @throws JSONException */ - public JSONObject put(final String key, final Collection value) throws JSONException - { + public JSONObject put(final String key, final Collection value) throws JSONException { this.put(key, new JSONArray(value)); return this; } - + /** * Put a key/double pair in the JSONObject. * @@ -1296,12 +1167,11 @@ public class JSONObject * * @throws JSONException If the key is null or if the number is invalid. */ - public JSONObject put(final String key, final double value) throws JSONException - { + public JSONObject put(final String key, final double value) throws JSONException { this.put(key, new Double(value)); return this; } - + /** * Put a key/int pair in the JSONObject. * @@ -1312,12 +1182,11 @@ public class JSONObject * * @throws JSONException If the key is null. */ - public JSONObject put(final String key, final int value) throws JSONException - { + public JSONObject put(final String key, final int value) throws JSONException { this.put(key, new Integer(value)); return this; } - + /** * Put a key/long pair in the JSONObject. * @@ -1328,12 +1197,11 @@ public class JSONObject * * @throws JSONException If the key is null. */ - public JSONObject put(final String key, final long value) throws JSONException - { + public JSONObject put(final String key, final long value) throws JSONException { this.put(key, new Long(value)); return this; } - + /** * Put a key/value pair in the JSONObject, where the value will be a JSONObject which is produced from a Map. * @@ -1344,12 +1212,11 @@ public class JSONObject * * @throws JSONException */ - public JSONObject put(final String key, final Map value) throws JSONException - { + public JSONObject put(final String key, final Map value) throws JSONException { this.put(key, new JSONObject(value)); return this; } - + /** * Put a key/value pair in the JSONObject. If the value is null, then the key will be removed from the JSONObject if * it is present. @@ -1362,21 +1229,19 @@ public class JSONObject * * @throws JSONException If the value is non-finite number or if the key is null. */ - public JSONObject put(final String key, final Object value) throws JSONException - { - if (key == null) { throw new NullPointerException("Null key."); } - if (value != null) - { + public JSONObject put(final String key, final Object value) throws JSONException { + if (key == null) { + throw new NullPointerException("Null key."); + } + if (value != null) { testValidity(value); map.put(key, value); - } - else - { + } else { remove(key); } return this; } - + /** * Put a key/value pair in the JSONObject, but only if the key and the value are both non-null, and only if there is * not already a member with that name. @@ -1388,16 +1253,16 @@ public class JSONObject * * @throws JSONException if the key is a duplicate */ - public JSONObject putOnce(final String key, final Object value) throws JSONException - { - if ((key != null) && (value != null)) - { - if (opt(key) != null) { throw new JSONException("Duplicate key \"" + key + "\""); } + public JSONObject putOnce(final String key, final Object value) throws JSONException { + if ((key != null) && (value != null)) { + if (opt(key) != null) { + throw new JSONException("Duplicate key \"" + key + "\""); + } this.put(key, value); } return this; } - + /** * Put a key/value pair in the JSONObject, but only if the key and the value are both non-null. * @@ -1409,15 +1274,13 @@ public class JSONObject * * @throws JSONException If the value is a non-finite number. */ - public JSONObject putOpt(final String key, final Object value) throws JSONException - { - if ((key != null) && (value != null)) - { + public JSONObject putOpt(final String key, final Object value) throws JSONException { + if ((key != null) && (value != null)) { this.put(key, value); } return this; } - + /** * Remove a name and its value, if present. * @@ -1425,11 +1288,10 @@ public class JSONObject * * @return The value that was associated with the name, or null if there was no value. */ - public Object remove(final String key) - { + public Object remove(final String key) { return map.remove(key); } - + /** * Determine if two JSONObjects are similar. They must contain the same set of names which must be associated with * similar values. @@ -1438,35 +1300,36 @@ public class JSONObject * * @return true if they are equal */ - public boolean similar(final Object other) - { - try - { - if (!(other instanceof JSONObject)) { return false; } + public boolean similar(final Object other) { + try { + if (!(other instanceof JSONObject)) { + return false; + } final Set set = keySet(); - if (!set.equals(((JSONObject) other).keySet())) { return false; } - for (final String name : set) - { + if (!set.equals(((JSONObject) other).keySet())) { + return false; + } + for (final String name : set) { final Object valueThis = get(name); final Object valueOther = ((JSONObject) other).get(name); - if (valueThis instanceof JSONObject) - { - if (!((JSONObject) valueThis).similar(valueOther)) { return false; } + if (valueThis instanceof JSONObject) { + if (!((JSONObject) valueThis).similar(valueOther)) { + return false; + } + } else if (valueThis instanceof JSONArray) { + if (!((JSONArray) valueThis).similar(valueOther)) { + return false; + } + } else if (!valueThis.equals(valueOther)) { + return false; } - else if (valueThis instanceof JSONArray) - { - if (!((JSONArray) valueThis).similar(valueOther)) { return false; } - } - else if (!valueThis.equals(valueOther)) { return false; } } return true; - } - catch (final Throwable exception) - { + } catch (final Throwable exception) { return false; } } - + /** * Produce a JSONArray containing the values of the members of this JSONObject. * @@ -1477,17 +1340,17 @@ public class JSONObject * * @throws JSONException If any of the values are non-finite numbers. */ - public JSONArray toJSONArray(final JSONArray names) throws JSONException - { - if ((names == null) || (names.length() == 0)) { return null; } + public JSONArray toJSONArray(final JSONArray names) throws JSONException { + if ((names == null) || (names.length() == 0)) { + return null; + } final JSONArray ja = new JSONArray(); - for (int i = 0; i < names.length(); i += 1) - { + for (int i = 0; i < names.length(); i += 1) { ja.put(opt(names.getString(i))); } return ja; } - + /** * Make a JSON text of this JSONObject. For compactness, no whitespace is added. If this would not result in a * syntactically correct JSON text, then null will be returned instead. @@ -1499,18 +1362,14 @@ public class JSONObject * brace). */ @Override - public String toString() - { - try - { + public String toString() { + try { return this.toString(0); - } - catch (final Exception e) - { + } catch (final Exception e) { return null; } } - + /** * Make a prettyprinted JSON text of this JSONObject. * @@ -1524,15 +1383,13 @@ public class JSONObject * * @throws JSONException If the object contains an invalid number. */ - public String toString(final int indentFactor) throws JSONException - { + public String toString(final int indentFactor) throws JSONException { final StringWriter w = new StringWriter(); - synchronized (w.getBuffer()) - { + synchronized (w.getBuffer()) { return this.write(w, indentFactor, 0).toString(); } } - + /** * Write the contents of the JSONObject as JSON text to a writer. For compactness, no whitespace is added. * @@ -1542,11 +1399,10 @@ public class JSONObject * * @throws JSONException */ - public Writer write(final Writer writer) throws JSONException - { + public Writer write(final Writer writer) throws JSONException { return this.write(writer, 0, 0); } - + /** * Write the contents of the JSONObject as JSON text to a writer. For compactness, no whitespace is added. * @@ -1556,88 +1412,70 @@ public class JSONObject * * @throws JSONException */ - Writer write(final Writer writer, final int indentFactor, final int indent) throws JSONException - { - try - { + Writer write(final Writer writer, final int indentFactor, final int indent) throws JSONException { + try { boolean commanate = false; final int length = length(); final Iterator keys = keys(); writer.write('{'); - if (length == 1) - { + if (length == 1) { final Object key = keys.next(); writer.write(quote(key.toString())); writer.write(':'); - if (indentFactor > 0) - { + if (indentFactor > 0) { writer.write(' '); } writeValue(writer, map.get(key), indentFactor, indent); - } - else if (length != 0) - { + } else if (length != 0) { final int newindent = indent + indentFactor; - while (keys.hasNext()) - { + while (keys.hasNext()) { final Object key = keys.next(); - if (commanate) - { + if (commanate) { writer.write(','); } - if (indentFactor > 0) - { + if (indentFactor > 0) { writer.write('\n'); } indent(writer, newindent); writer.write(quote(key.toString())); writer.write(':'); - if (indentFactor > 0) - { + if (indentFactor > 0) { writer.write(' '); } writeValue(writer, map.get(key), indentFactor, newindent); commanate = true; } - if (indentFactor > 0) - { + if (indentFactor > 0) { writer.write('\n'); } indent(writer, indent); } writer.write('}'); return writer; - } - catch (final IOException exception) - { + } catch (final IOException exception) { throw new JSONException(exception); } } - + /** * JSONObject.NULL is equivalent to the value that JavaScript calls null, whilst Java's null is equivalent to the * value that JavaScript calls undefined. */ - private static final class Null - { + private static final class Null { /** * There is only intended to be a single instance of the NULL object, so the clone method returns itself. * * @return NULL. */ @Override - protected final Object clone() - { - try - { + protected final Object clone() { + try { return super.clone(); - } - catch (final Exception e) - { + } catch (final Exception e) { return this; } } - + /** * A Null object is equal to the null value and to itself. * @@ -1646,19 +1484,17 @@ public class JSONObject * @return true if the object parameter is the JSONObject.NULL object or null. */ @Override - public boolean equals(final Object object) - { + public boolean equals(final Object object) { return (object == null) || (object == this); } - + /** * Get the "null" string value. * * @return The string "null". */ @Override - public String toString() - { + public String toString() { return "null"; } } diff --git a/src/main/java/com/intellectualcrafters/json/JSONString.java b/src/main/java/com/intellectualcrafters/json/JSONString.java index c8494287f..2cf8273a9 100644 --- a/src/main/java/com/intellectualcrafters/json/JSONString.java +++ b/src/main/java/com/intellectualcrafters/json/JSONString.java @@ -6,8 +6,7 @@ package com.intellectualcrafters.json; * JSONWriter.value(Object). The toJSONString method will be used instead of the * default behavior of using the Object's toString() method and quoting the result. */ -public interface JSONString -{ +public interface JSONString { /** * The toJSONString method allows a class to produce its own JSON serialization. * diff --git a/src/main/java/com/intellectualcrafters/json/JSONStringer.java b/src/main/java/com/intellectualcrafters/json/JSONStringer.java index fbc59094a..ecacb861e 100644 --- a/src/main/java/com/intellectualcrafters/json/JSONStringer.java +++ b/src/main/java/com/intellectualcrafters/json/JSONStringer.java @@ -33,16 +33,14 @@ import java.io.StringWriter; * @author JSON.org * @version 2008-09-18 */ -public class JSONStringer extends JSONWriter -{ +public class JSONStringer extends JSONWriter { /** * Make a fresh JSONStringer. It can be used to build one JSON text. */ - public JSONStringer() - { + public JSONStringer() { super(new StringWriter()); } - + /** * Return the JSON text. This method is used to obtain the product of the JSONStringer instance. It will return * null if there was a problem in the construction of the JSON text (such as the calls to @@ -51,8 +49,7 @@ public class JSONStringer extends JSONWriter * @return The JSON text. */ @Override - public String toString() - { + public String toString() { return mode == 'd' ? writer.toString() : null; } } diff --git a/src/main/java/com/intellectualcrafters/json/JSONTokener.java b/src/main/java/com/intellectualcrafters/json/JSONTokener.java index 3391e1255..b6ad424e0 100644 --- a/src/main/java/com/intellectualcrafters/json/JSONTokener.java +++ b/src/main/java/com/intellectualcrafters/json/JSONTokener.java @@ -14,8 +14,7 @@ import java.io.StringReader; * @author JSON.org * @version 2014-05-03 */ -public class JSONTokener -{ +public class JSONTokener { private final Reader reader; private long character; private boolean eof; @@ -23,14 +22,13 @@ public class JSONTokener private long line; private char previous; private boolean usePrevious; - + /** * Construct a JSONTokener from a Reader. * * @param reader A reader. */ - public JSONTokener(final Reader reader) - { + public JSONTokener(final Reader reader) { this.reader = reader.markSupported() ? reader : new BufferedReader(reader); eof = false; usePrevious = false; @@ -39,27 +37,25 @@ public class JSONTokener character = 1; line = 1; } - + /** * Construct a JSONTokener from an InputStream. * * @param inputStream The source. */ - public JSONTokener(final InputStream inputStream) throws JSONException - { + public JSONTokener(final InputStream inputStream) throws JSONException { this(new InputStreamReader(inputStream)); } - + /** * Construct a JSONTokener from a string. * * @param s A source string. */ - public JSONTokener(final String s) - { + public JSONTokener(final String s) { this(new StringReader(s)); } - + /** * Get the hex value of a character (base16). * @@ -67,93 +63,86 @@ public class JSONTokener * * @return An int between 0 and 15, or -1 if c was not a hex digit. */ - public static int dehexchar(final char c) - { - if ((c >= '0') && (c <= '9')) { return c - '0'; } - if ((c >= 'A') && (c <= 'F')) { return c - ('A' - 10); } - if ((c >= 'a') && (c <= 'f')) { return c - ('a' - 10); } + public static int dehexchar(final char c) { + if ((c >= '0') && (c <= '9')) { + return c - '0'; + } + if ((c >= 'A') && (c <= 'F')) { + return c - ('A' - 10); + } + if ((c >= 'a') && (c <= 'f')) { + return c - ('a' - 10); + } return -1; } - + /** * Back up one character. This provides a sort of lookahead capability, so that you can test for a digit or letter * before attempting to parse the next number or identifier. */ - public void back() throws JSONException - { - if (usePrevious || (index <= 0)) { throw new JSONException("Stepping back two steps is not supported"); } + public void back() throws JSONException { + if (usePrevious || (index <= 0)) { + throw new JSONException("Stepping back two steps is not supported"); + } index -= 1; character -= 1; usePrevious = true; eof = false; } - - public boolean end() - { + + public boolean end() { return eof && !usePrevious; } - + /** * Determine if the source string still contains characters that next() can consume. * * @return true if not yet at the end of the source. */ - public boolean more() throws JSONException - { + public boolean more() throws JSONException { this.next(); - if (end()) { return false; } + if (end()) { + return false; + } back(); return true; } - + /** * Get the next character in the source string. * * @return The next character, or 0 if past the end of the source string. */ - public char next() throws JSONException - { + public char next() throws JSONException { int c; - if (usePrevious) - { + if (usePrevious) { usePrevious = false; c = previous; - } - else - { - try - { + } else { + try { c = reader.read(); - } - catch (final IOException exception) - { + } catch (final IOException exception) { throw new JSONException(exception); } - if (c <= 0) - { // End of stream + if (c <= 0) { // End of stream eof = true; c = 0; } } index += 1; - if (previous == '\r') - { + if (previous == '\r') { line += 1; character = c == '\n' ? 0 : 1; - } - else if (c == '\n') - { + } else if (c == '\n') { line += 1; character = 0; - } - else - { + } else { character += 1; } previous = (char) c; return previous; } - + /** * Consume the next character, and check that it matches a specified character. * @@ -163,13 +152,14 @@ public class JSONTokener * * @throws JSONException if the character does not match. */ - public char next(final char c) throws JSONException - { + public char next(final char c) throws JSONException { final char n = this.next(); - if (n != c) { throw syntaxError("Expected '" + c + "' and instead saw '" + n + "'"); } + if (n != c) { + throw syntaxError("Expected '" + c + "' and instead saw '" + n + "'"); + } return n; } - + /** * Get the next n characters. * @@ -179,20 +169,22 @@ public class JSONTokener * * @throws JSONException Substring bounds error if there are not n characters remaining in the source string. */ - public String next(final int n) throws JSONException - { - if (n == 0) { return ""; } + public String next(final int n) throws JSONException { + if (n == 0) { + return ""; + } final char[] chars = new char[n]; int pos = 0; - while (pos < n) - { + while (pos < n) { chars[pos] = this.next(); - if (end()) { throw syntaxError("Substring bounds error"); } + if (end()) { + throw syntaxError("Substring bounds error"); + } pos += 1; } return new String(chars); } - + /** * Get the next char in the string, skipping whitespace. * @@ -200,15 +192,15 @@ public class JSONTokener * * @throws JSONException */ - public char nextClean() throws JSONException - { - for (;;) - { + public char nextClean() throws JSONException { + for (;;) { final char c = this.next(); - if ((c == 0) || (c > ' ')) { return c; } + if ((c == 0) || (c > ' ')) { + return c; + } } } - + /** * Return the characters up to the next close quote character. Backslash processing is done. The formal JSON format * does not allow strings in single quotes, but an implementation is allowed to accept them. @@ -220,23 +212,19 @@ public class JSONTokener * * @throws JSONException Unterminated string. */ - public String nextString(final char quote) throws JSONException - { + public String nextString(final char quote) throws JSONException { char c; final StringBuilder sb = new StringBuilder(); - for (;;) - { + for (;;) { c = this.next(); - switch (c) - { + switch (c) { case 0: case '\n': case '\r': throw syntaxError("Unterminated string"); case '\\': c = this.next(); - switch (c) - { + switch (c) { case 'b': sb.append('\b'); break; @@ -266,12 +254,14 @@ public class JSONTokener } break; default: - if (c == quote) { return sb.toString(); } + if (c == quote) { + return sb.toString(); + } sb.append(c); } } } - + /** * Get the text up but not including the specified character or the end of line, whichever comes first. * @@ -279,16 +269,12 @@ public class JSONTokener * * @return A string. */ - public String nextTo(final char delimiter) throws JSONException - { + public String nextTo(final char delimiter) throws JSONException { final StringBuilder sb = new StringBuilder(); - for (;;) - { + for (;;) { final char c = this.next(); - if ((c == delimiter) || (c == 0) || (c == '\n') || (c == '\r')) - { - if (c != 0) - { + if ((c == delimiter) || (c == 0) || (c == '\n') || (c == '\r')) { + if (c != 0) { back(); } return sb.toString().trim(); @@ -296,7 +282,7 @@ public class JSONTokener sb.append(c); } } - + /** * Get the text up but not including one of the specified delimiter characters or the end of line, whichever comes * first. @@ -305,17 +291,13 @@ public class JSONTokener * * @return A string, trimmed. */ - public String nextTo(final String delimiters) throws JSONException - { + public String nextTo(final String delimiters) throws JSONException { char c; final StringBuilder sb = new StringBuilder(); - for (;;) - { + for (;;) { c = this.next(); - if ((delimiters.indexOf(c) >= 0) || (c == 0) || (c == '\n') || (c == '\r')) - { - if (c != 0) - { + if ((delimiters.indexOf(c) >= 0) || (c == 0) || (c == '\n') || (c == '\r')) { + if (c != 0) { back(); } return sb.toString().trim(); @@ -323,7 +305,7 @@ public class JSONTokener sb.append(c); } } - + /** * Get the next value. The value can be a Boolean, Double, Integer, JSONArray, JSONObject, Long, or String, or the * JSONObject.NULL object. @@ -332,12 +314,10 @@ public class JSONTokener * * @throws JSONException If syntax error. */ - public Object nextValue() throws JSONException - { + public Object nextValue() throws JSONException { char c = nextClean(); String string; - switch (c) - { + switch (c) { case '"': case '\'': return nextString(c); @@ -356,17 +336,18 @@ public class JSONTokener * formatting character. */ final StringBuilder sb = new StringBuilder(); - while ((c >= ' ') && (",:]}/\\\"[{;=#".indexOf(c) < 0)) - { + while ((c >= ' ') && (",:]}/\\\"[{;=#".indexOf(c) < 0)) { sb.append(c); c = this.next(); } back(); string = sb.toString().trim(); - if ("".equals(string)) { throw syntaxError("Missing value"); } + if ("".equals(string)) { + throw syntaxError("Missing value"); + } return JSONObject.stringToValue(string); } - + /** * Skip characters until the next character is the requested character. If the requested character is not found, no * characters are skipped. @@ -375,37 +356,30 @@ public class JSONTokener * * @return The requested character, or zero if the requested character is not found. */ - public char skipTo(final char to) throws JSONException - { + public char skipTo(final char to) throws JSONException { char c; - try - { + try { final long startIndex = index; final long startCharacter = character; final long startLine = line; reader.mark(1000000); - do - { + do { c = this.next(); - if (c == 0) - { + if (c == 0) { reader.reset(); index = startIndex; character = startCharacter; line = startLine; return c; } - } - while (c != to); - } - catch (final IOException exception) - { + } while (c != to); + } catch (final IOException exception) { throw new JSONException(exception); } back(); return c; } - + /** * Make a JSONException to signal a syntax error. * @@ -413,19 +387,17 @@ public class JSONTokener * * @return A JSONException object, suitable for throwing */ - public JSONException syntaxError(final String message) - { + public JSONException syntaxError(final String message) { return new JSONException(message + toString()); } - + /** * Make a printable string of this JSONTokener. * * @return " at {index} [character {character} line {line}]" */ @Override - public String toString() - { + public String toString() { return " at " + index + " [character " + character + " line " + line + "]"; } } diff --git a/src/main/java/com/intellectualcrafters/json/JSONWriter.java b/src/main/java/com/intellectualcrafters/json/JSONWriter.java index 52ac862ce..44f893ce6 100644 --- a/src/main/java/com/intellectualcrafters/json/JSONWriter.java +++ b/src/main/java/com/intellectualcrafters/json/JSONWriter.java @@ -33,8 +33,7 @@ import java.io.Writer; * @author JSON.org * @version 2011-11-24 */ -public class JSONWriter -{ +public class JSONWriter { private static final int maxdepth = 200; /** * The writer that will receive the output. @@ -56,19 +55,18 @@ public class JSONWriter * The stack top index. A value of 0 indicates that the stack is empty. */ private int top; - + /** * Make a fresh JSONWriter. It can be used to build one JSON text. */ - public JSONWriter(final Writer w) - { + public JSONWriter(final Writer w) { comma = false; mode = 'i'; stack = new JSONObject[maxdepth]; top = 0; writer = w; } - + /** * Append a value. * @@ -78,25 +76,20 @@ public class JSONWriter * * @throws JSONException If the value is out of sequence. */ - private JSONWriter append(final String string) throws JSONException - { - if (string == null) { throw new JSONException("Null pointer"); } - if ((mode == 'o') || (mode == 'a')) - { - try - { - if (comma && (mode == 'a')) - { + private JSONWriter append(final String string) throws JSONException { + if (string == null) { + throw new JSONException("Null pointer"); + } + if ((mode == 'o') || (mode == 'a')) { + try { + if (comma && (mode == 'a')) { writer.write(','); } writer.write(string); - } - catch (final IOException e) - { + } catch (final IOException e) { throw new JSONException(e); } - if (mode == 'o') - { + if (mode == 'o') { mode = 'k'; } comma = true; @@ -104,7 +97,7 @@ public class JSONWriter } throw new JSONException("Value out of sequence."); } - + /** * Begin appending a new array. All values until the balancing endArray will be appended to this array. * The endArray method must be called to mark the array's end. @@ -114,10 +107,8 @@ public class JSONWriter * @throws JSONException If the nesting is too deep, or if the object is started in the wrong place (for example as * a key or after the end of the outermost array or object). */ - public JSONWriter array() throws JSONException - { - if ((mode == 'i') || (mode == 'o') || (mode == 'a')) - { + public JSONWriter array() throws JSONException { + if ((mode == 'i') || (mode == 'o') || (mode == 'a')) { push(null); append("["); comma = false; @@ -125,7 +116,7 @@ public class JSONWriter } throw new JSONException("Misplaced array."); } - + /** * End something. * @@ -136,22 +127,20 @@ public class JSONWriter * * @throws JSONException If unbalanced. */ - private JSONWriter end(final char mode, final char c) throws JSONException - { - if (this.mode != mode) { throw new JSONException(mode == 'a' ? "Misplaced endArray." : "Misplaced endObject."); } - pop(mode); - try - { - writer.write(c); + private JSONWriter end(final char mode, final char c) throws JSONException { + if (this.mode != mode) { + throw new JSONException(mode == 'a' ? "Misplaced endArray." : "Misplaced endObject."); } - catch (final IOException e) - { + pop(mode); + try { + writer.write(c); + } catch (final IOException e) { throw new JSONException(e); } comma = true; return this; } - + /** * End an array. This method most be called to balance calls to array. * @@ -159,11 +148,10 @@ public class JSONWriter * * @throws JSONException If incorrectly nested. */ - public JSONWriter endArray() throws JSONException - { + public JSONWriter endArray() throws JSONException { return end('a', ']'); } - + /** * End an object. This method most be called to balance calls to object. * @@ -171,11 +159,10 @@ public class JSONWriter * * @throws JSONException If incorrectly nested. */ - public JSONWriter endObject() throws JSONException - { + public JSONWriter endObject() throws JSONException { return end('k', '}'); } - + /** * Append a key. The key will be associated with the next value. In an object, every value must be preceded by a * key. @@ -187,16 +174,14 @@ public class JSONWriter * @throws JSONException If the key is out of place. For example, keys do not belong in arrays or if the key is * null. */ - public JSONWriter key(final String string) throws JSONException - { - if (string == null) { throw new JSONException("Null key."); } - if (mode == 'k') - { - try - { + public JSONWriter key(final String string) throws JSONException { + if (string == null) { + throw new JSONException("Null key."); + } + if (mode == 'k') { + try { stack[top - 1].putOnce(string, Boolean.TRUE); - if (comma) - { + if (comma) { writer.write(','); } writer.write(JSONObject.quote(string)); @@ -204,15 +189,13 @@ public class JSONWriter comma = false; mode = 'o'; return this; - } - catch (final IOException e) - { + } catch (final IOException e) { throw new JSONException(e); } } throw new JSONException("Misplaced key."); } - + /** * Begin appending a new object. All keys and values until the balancing endObject will be appended to * this object. The endObject method must be called to mark the object's end. @@ -222,14 +205,11 @@ public class JSONWriter * @throws JSONException If the nesting is too deep, or if the object is started in the wrong place (for example as * a key or after the end of the outermost array or object). */ - public JSONWriter object() throws JSONException - { - if (mode == 'i') - { + public JSONWriter object() throws JSONException { + if (mode == 'i') { mode = 'o'; } - if ((mode == 'o') || (mode == 'a')) - { + if ((mode == 'o') || (mode == 'a')) { append("{"); push(new JSONObject()); comma = false; @@ -237,7 +217,7 @@ public class JSONWriter } throw new JSONException("Misplaced object."); } - + /** * Pop an array or object scope. * @@ -245,15 +225,18 @@ public class JSONWriter * * @throws JSONException If nesting is wrong. */ - private void pop(final char c) throws JSONException - { - if (top <= 0) { throw new JSONException("Nesting error."); } + private void pop(final char c) throws JSONException { + if (top <= 0) { + throw new JSONException("Nesting error."); + } final char m = stack[top - 1] == null ? 'a' : 'k'; - if (m != c) { throw new JSONException("Nesting error."); } + if (m != c) { + throw new JSONException("Nesting error."); + } top -= 1; mode = top == 0 ? 'd' : stack[top - 1] == null ? 'a' : 'k'; } - + /** * Push an array or object scope. * @@ -261,14 +244,15 @@ public class JSONWriter * * @throws JSONException If nesting is too deep. */ - private void push(final JSONObject jo) throws JSONException - { - if (top >= maxdepth) { throw new JSONException("Nesting too deep."); } + private void push(final JSONObject jo) throws JSONException { + if (top >= maxdepth) { + throw new JSONException("Nesting too deep."); + } stack[top] = jo; mode = jo == null ? 'a' : 'k'; top += 1; } - + /** * Append either the value true or the value false . * @@ -278,11 +262,10 @@ public class JSONWriter * * @throws JSONException */ - public JSONWriter value(final boolean b) throws JSONException - { + public JSONWriter value(final boolean b) throws JSONException { return append(b ? "true" : "false"); } - + /** * Append a double value. * @@ -292,11 +275,10 @@ public class JSONWriter * * @throws JSONException If the number is not finite. */ - public JSONWriter value(final double d) throws JSONException - { + public JSONWriter value(final double d) throws JSONException { return this.value(new Double(d)); } - + /** * Append a long value. * @@ -306,11 +288,10 @@ public class JSONWriter * * @throws JSONException */ - public JSONWriter value(final long l) throws JSONException - { + public JSONWriter value(final long l) throws JSONException { return append(Long.toString(l)); } - + /** * Append an object value. * @@ -321,8 +302,7 @@ public class JSONWriter * * @throws JSONException If the value is out of sequence. */ - public JSONWriter value(final Object object) throws JSONException - { + public JSONWriter value(final Object object) throws JSONException { return append(JSONObject.valueToString(object)); } } diff --git a/src/main/java/com/intellectualcrafters/json/Kim.java b/src/main/java/com/intellectualcrafters/json/Kim.java index 391bcf4e2..7209e26c3 100644 --- a/src/main/java/com/intellectualcrafters/json/Kim.java +++ b/src/main/java/com/intellectualcrafters/json/Kim.java @@ -26,8 +26,7 @@ package com.intellectualcrafters.json; * * @version 2013-04-18 */ -public class Kim -{ +public class Kim { /** * The number of bytes in the kim. The number of bytes can be as much as three times the number of characters. */ @@ -44,7 +43,7 @@ public class Kim * The memoization of toString(). */ private String string = null; - + /** * Make a kim from a portion of a byte array. * @@ -52,8 +51,7 @@ public class Kim * @param from The index of the first byte. * @param thru The index of the last byte plus one. */ - public Kim(final byte[] bytes, final int from, final int thru) - { + public Kim(final byte[] bytes, final int from, final int thru) { // As the bytes are copied into the new kim, a hashcode is computed // using a // modified Fletcher code. @@ -61,11 +59,9 @@ public class Kim int value; hashcode = 0; length = thru - from; - if (length > 0) - { + if (length > 0) { this.bytes = new byte[length]; - for (int at = 0; at < length; at += 1) - { + for (int at = 0; at < length; at += 1) { value = bytes[at + from] & 0xFF; sum += value; hashcode += sum; @@ -74,18 +70,17 @@ public class Kim hashcode += sum << 16; } } - + /** * Make a kim from a byte array. * * @param bytes The byte array. * @param length The number of bytes. */ - public Kim(final byte[] bytes, final int length) - { + public Kim(final byte[] bytes, final int length) { this(bytes, 0, length); } - + /** * Make a new kim from a substring of an existing kim. The coordinates are in byte units, not character units. * @@ -93,11 +88,10 @@ public class Kim * @param from The point at which to take bytes. * @param thru The point at which to stop taking bytes. */ - public Kim(final Kim kim, final int from, final int thru) - { + public Kim(final Kim kim, final int from, final int thru) { this(kim.bytes, from, thru); } - + /** * Make a kim from a string. * @@ -105,33 +99,26 @@ public class Kim * * @throws JSONException if surrogate pair mismatch. */ - public Kim(final String string) throws JSONException - { + public Kim(final String string) throws JSONException { final int stringLength = string.length(); hashcode = 0; length = 0; // First pass: Determine the length of the kim, allowing for the UTF-16 // to UTF-32 conversion, and then the UTF-32 to Kim conversion. - if (stringLength > 0) - { - for (int i = 0; i < stringLength; i += 1) - { + if (stringLength > 0) { + for (int i = 0; i < stringLength; i += 1) { final int c = string.charAt(i); - if (c <= 0x7F) - { + if (c <= 0x7F) { length += 1; - } - else if (c <= 0x3FFF) - { + } else if (c <= 0x3FFF) { length += 2; - } - else - { - if ((c >= 0xD800) && (c <= 0xDFFF)) - { + } else { + if ((c >= 0xD800) && (c <= 0xDFFF)) { i += 1; final int d = string.charAt(i); - if ((c > 0xDBFF) || (d < 0xDC00) || (d > 0xDFFF)) { throw new JSONException("Bad UTF16"); } + if ((c > 0xDBFF) || (d < 0xDC00) || (d > 0xDFFF)) { + throw new JSONException("Bad UTF16"); + } } length += 3; } @@ -143,18 +130,14 @@ public class Kim int at = 0; int b; int sum = 1; - for (int i = 0; i < stringLength; i += 1) - { + for (int i = 0; i < stringLength; i += 1) { int character = string.charAt(i); - if (character <= 0x7F) - { + if (character <= 0x7F) { bytes[at] = (byte) character; sum += character; hashcode += sum; at += 1; - } - else if (character <= 0x3FFF) - { + } else if (character <= 0x3FFF) { b = 0x80 | (character >>> 7); bytes[at] = (byte) b; sum += b; @@ -165,11 +148,8 @@ public class Kim sum += b; hashcode += sum; at += 1; - } - else - { - if ((character >= 0xD800) && (character <= 0xDBFF)) - { + } else { + if ((character >= 0xD800) && (character <= 0xDBFF)) { i += 1; character = (((character & 0x3FF) << 10) | (string.charAt(i) & 0x3FF)) + 65536; } @@ -193,7 +173,7 @@ public class Kim hashcode += sum << 16; } } - + /** * Returns the number of bytes needed to contain the character in Kim format. * @@ -203,12 +183,13 @@ public class Kim * * @throws JSONException if the character is not representable in a kim. */ - public static int characterSize(final int character) throws JSONException - { - if ((character < 0) || (character > 0x10FFFF)) { throw new JSONException("Bad character " + character); } + public static int characterSize(final int character) throws JSONException { + if ((character < 0) || (character > 0x10FFFF)) { + throw new JSONException("Bad character " + character); + } return character <= 0x7F ? 1 : character <= 0x3FFF ? 2 : 3; } - + /** * Returns the character at the specified index. The index refers to byte values and ranges from 0 to length - 1. * The index of the next character is at index + Kim.characterSize(kim.characterAt(index)). @@ -218,26 +199,28 @@ public class Kim * @throws JSONException if at does not point to a valid character. * @return a Unicode character between 0 and 0x10FFFF. */ - public int characterAt(final int at) throws JSONException - { + public int characterAt(final int at) throws JSONException { final int c = get(at); - if ((c & 0x80) == 0) { return c; } + if ((c & 0x80) == 0) { + return c; + } int character; final int c1 = get(at + 1); - if ((c1 & 0x80) == 0) - { + if ((c1 & 0x80) == 0) { character = ((c & 0x7F) << 7) | c1; - if (character > 0x7F) { return character; } - } - else - { + if (character > 0x7F) { + return character; + } + } else { final int c2 = get(at + 2); character = ((c & 0x7F) << 14) | ((c1 & 0x7F) << 7) | c2; - if (((c2 & 0x80) == 0) && (character > 0x3FFF) && (character <= 0x10FFFF) && ((character < 0xD800) || (character > 0xDFFF))) { return character; } + if (((c2 & 0x80) == 0) && (character > 0x3FFF) && (character <= 0x10FFFF) && ((character < 0xD800) || (character > 0xDFFF))) { + return character; + } } throw new JSONException("Bad character at " + at); } - + /** * Copy the contents of this kim to a byte array. * @@ -246,12 +229,11 @@ public class Kim * * @return The position immediately after the copy. */ - public int copy(final byte[] bytes, final int at) - { + public int copy(final byte[] bytes, final int at) { System.arraycopy(this.bytes, 0, bytes, at, length); return at + length; } - + /** * Two kim objects containing exactly the same bytes in the same order are equal to each other. * @@ -260,15 +242,20 @@ public class Kim * @return true if this and obj are both kim objects containing identical byte sequences. */ @Override - public boolean equals(final Object obj) - { - if (!(obj instanceof Kim)) { return false; } + public boolean equals(final Object obj) { + if (!(obj instanceof Kim)) { + return false; + } final Kim that = (Kim) obj; - if (this == that) { return true; } - if (hashcode != that.hashcode) { return false; } + if (this == that) { + return true; + } + if (hashcode != that.hashcode) { + return false; + } return java.util.Arrays.equals(bytes, that.bytes); } - + /** * Get a byte from a kim. * @@ -278,21 +265,21 @@ public class Kim * * @throws JSONException if there is no byte at that position. */ - public int get(final int at) throws JSONException - { - if ((at < 0) || (at > length)) { throw new JSONException("Bad character at " + at); } + public int get(final int at) throws JSONException { + if ((at < 0) || (at > length)) { + throw new JSONException("Bad character at " + at); + } return (bytes[at]) & 0xFF; } - + /** * Returns a hash code value for the kim. */ @Override - public int hashCode() - { + public int hashCode() { return hashcode; } - + /** * Produce a UTF-16 String from this kim. The number of codepoints in the string will not be greater than the number * of bytes in the kim, although it could be less. @@ -302,23 +289,17 @@ public class Kim * @throws JSONException if the kim is not valid. */ @Override - public String toString() throws JSONException - { - if (string == null) - { + public String toString() throws JSONException { + if (string == null) { int c; int length = 0; final char chars[] = new char[this.length]; - for (int at = 0; at < this.length; at += characterSize(c)) - { + for (int at = 0; at < this.length; at += characterSize(c)) { c = characterAt(at); - if (c < 0x10000) - { + if (c < 0x10000) { chars[length] = (char) c; length += 1; - } - else - { + } else { chars[length] = (char) (0xD800 | ((c - 0x10000) >>> 10)); length += 1; chars[length] = (char) (0xDC00 | (c & 0x03FF)); diff --git a/src/main/java/com/intellectualcrafters/json/Property.java b/src/main/java/com/intellectualcrafters/json/Property.java index db31b325d..a177df954 100644 --- a/src/main/java/com/intellectualcrafters/json/Property.java +++ b/src/main/java/com/intellectualcrafters/json/Property.java @@ -30,8 +30,7 @@ import java.util.Properties; * @author JSON.org * @version 2014-05-03 */ -public class Property -{ +public class Property { /** * Converts a property file object into a JSONObject. The property file object is a table of name value pairs. * @@ -41,21 +40,18 @@ public class Property * * @throws JSONException */ - public static JSONObject toJSONObject(final java.util.Properties properties) throws JSONException - { + public static JSONObject toJSONObject(final java.util.Properties properties) throws JSONException { final JSONObject jo = new JSONObject(); - if ((properties != null) && !properties.isEmpty()) - { + if ((properties != null) && !properties.isEmpty()) { final Enumeration enumProperties = properties.propertyNames(); - while (enumProperties.hasMoreElements()) - { + while (enumProperties.hasMoreElements()) { final String name = (String) enumProperties.nextElement(); jo.put(name, properties.getProperty(name)); } } return jo; } - + /** * Converts the JSONObject into a property file object. * @@ -65,14 +61,11 @@ public class Property * * @throws JSONException */ - public static Properties toProperties(final JSONObject jo) throws JSONException - { + public static Properties toProperties(final JSONObject jo) throws JSONException { final Properties properties = new Properties(); - if (jo != null) - { + if (jo != null) { final Iterator keys = jo.keys(); - while (keys.hasNext()) - { + while (keys.hasNext()) { final String name = keys.next(); properties.put(name, jo.getString(name)); } diff --git a/src/main/java/com/intellectualcrafters/json/XML.java b/src/main/java/com/intellectualcrafters/json/XML.java index 594660570..7f95563cc 100644 --- a/src/main/java/com/intellectualcrafters/json/XML.java +++ b/src/main/java/com/intellectualcrafters/json/XML.java @@ -8,8 +8,7 @@ import java.util.Iterator; * @author JSON.org * @version 2014-05-03 */ -public class XML -{ +public class XML { public static final Character AMP = '&'; public static final Character APOS = '\''; public static final Character BANG = '!'; @@ -19,15 +18,12 @@ public class XML public static final Character QUEST = '?'; public static final Character QUOT = '"'; public static final Character SLASH = '/'; - - public static String escape(final String string) - { + + public static String escape(final String string) { final StringBuilder sb = new StringBuilder(string.length()); - for (int i = 0, length = string.length(); i < length; i++) - { + for (int i = 0, length = string.length(); i < length; i++) { final char c = string.charAt(i); - switch (c) - { + switch (c) { case '&': sb.append("&"); break; @@ -49,7 +45,7 @@ public class XML } return sb.toString(); } - + /** * Throw an exception if the string contains whitespace. Whitespace is not allowed in tagNames and attributes. * @@ -57,17 +53,19 @@ public class XML * * @throws JSONException */ - public static void noSpace(final String string) throws JSONException - { + public static void noSpace(final String string) throws JSONException { int i; final int length = string.length(); - if (length == 0) { throw new JSONException("Empty string."); } - for (i = 0; i < length; i += 1) - { - if (Character.isWhitespace(string.charAt(i))) { throw new JSONException("'" + string + "' contains a space character."); } + if (length == 0) { + throw new JSONException("Empty string."); + } + for (i = 0; i < length; i += 1) { + if (Character.isWhitespace(string.charAt(i))) { + throw new JSONException("'" + string + "' contains a space character."); + } } } - + /** * Scan the content following the named tag, attaching it to the context. * @@ -79,8 +77,7 @@ public class XML * * @throws JSONException */ - private static boolean parse(final XMLTokener x, final JSONObject context, final String name) throws JSONException - { + private static boolean parse(final XMLTokener x, final JSONObject context, final String name) throws JSONException { char c; int i; JSONObject jsonobject = null; @@ -98,28 +95,20 @@ public class XML // << token = x.nextToken(); // "); return false; } x.back(); - } - else if (c == '[') - { + } else if (c == '[') { token = x.nextToken(); - if ("CDATA".equals(token)) - { - if (x.next() == '[') - { + if ("CDATA".equals(token)) { + if (x.next() == '[') { string = x.nextCDATA(); - if (string.length() > 0) - { + if (string.length() > 0) { context.accumulate("content", string); } return false; @@ -128,136 +117,105 @@ public class XML throw x.syntaxError("Expected 'CDATA['"); } i = 1; - do - { + do { token = x.nextMeta(); - if (token == null) - { + if (token == null) { throw x.syntaxError("Missing '>' after ' 0); + } while (i > 0); return false; - } - else if (token == QUEST) - { + } else if (token == QUEST) { // "); return false; - } - else if (token == SLASH) - { + } else if (token == SLASH) { // Close tag - } - else if (token == SLASH) - { - if (x.nextToken() != GT) { throw x.syntaxError("Misshaped tag"); } - if (jsonobject.length() > 0) - { - context.accumulate(tagName, jsonobject); + } else if (token == SLASH) { + if (x.nextToken() != GT) { + throw x.syntaxError("Misshaped tag"); } - else - { + if (jsonobject.length() > 0) { + context.accumulate(tagName, jsonobject); + } else { context.accumulate(tagName, ""); } return false; // Content, between <...> and - } - else if (token == GT) - { - for (;;) - { + } else if (token == GT) { + for (;;) { token = x.nextContent(); - if (token == null) - { - if (tagName != null) { throw x.syntaxError("Unclosed tag " + tagName); } + if (token == null) { + if (tagName != null) { + throw x.syntaxError("Unclosed tag " + tagName); + } return false; - } - else if (token instanceof String) - { + } else if (token instanceof String) { string = (String) token; - if (string.length() > 0) - { + if (string.length() > 0) { jsonobject.accumulate("content", XML.stringToValue(string)); } // Nested element - } - else if (token == LT) - { - if (parse(x, jsonobject, tagName)) - { - if (jsonobject.length() == 0) - { + } else if (token == LT) { + if (parse(x, jsonobject, tagName)) { + if (jsonobject.length() == 0) { context.accumulate(tagName, ""); - } - else if ((jsonobject.length() == 1) && (jsonobject.opt("content") != null)) - { + } else if ((jsonobject.length() == 1) && (jsonobject.opt("content") != null)) { context.accumulate(tagName, jsonobject.opt("content")); - } - else - { + } else { context.accumulate(tagName, jsonobject); } return false; } } } - } - else - { + } else { throw x.syntaxError("Misshaped tag"); } } } } - + /** * Try to convert a string into a number, boolean, or null. If the string can't be converted, return the string. * This is much less ambitious than JSONObject.stringToValue, especially because it does not attempt to convert plus @@ -267,47 +225,47 @@ public class XML * * @return A simple JSON value. */ - public static Object stringToValue(final String string) - { - if ("true".equalsIgnoreCase(string)) { return Boolean.TRUE; } - if ("false".equalsIgnoreCase(string)) { return Boolean.FALSE; } - if ("null".equalsIgnoreCase(string)) { return JSONObject.NULL; } + public static Object stringToValue(final String string) { + if ("true".equalsIgnoreCase(string)) { + return Boolean.TRUE; + } + if ("false".equalsIgnoreCase(string)) { + return Boolean.FALSE; + } + if ("null".equalsIgnoreCase(string)) { + return JSONObject.NULL; + } // If it might be a number, try converting it, first as a Long, and then // as a // Double. If that doesn't work, return the string. - try - { + try { final char initial = string.charAt(0); - if ((initial == '-') || ((initial >= '0') && (initial <= '9'))) - { + if ((initial == '-') || ((initial >= '0') && (initial <= '9'))) { final Long value = new Long(string); - if (value.toString().equals(string)) { return value; } + if (value.toString().equals(string)) { + return value; + } } - } - catch (final Exception ignore) - { - try - { + } catch (final Exception ignore) { + try { final Double value = new Double(string); - if (value.toString().equals(string)) { return value; } - } - catch (final Exception ignoreAlso) - {} + if (value.toString().equals(string)) { + return value; + } + } catch (final Exception ignoreAlso) {} } return string; } - - public static JSONObject toJSONObject(final String string) throws JSONException - { + + public static JSONObject toJSONObject(final String string) throws JSONException { final JSONObject jo = new JSONObject(); final XMLTokener x = new XMLTokener(string); - while (x.more() && x.skipPast("<")) - { + while (x.more() && x.skipPast("<")) { parse(x, jo, null); } return jo; } - + /** * Convert a JSONObject into a well-formed, element-normal XML string. * @@ -317,11 +275,10 @@ public class XML * * @throws JSONException */ - public static String toString(final Object object) throws JSONException - { + public static String toString(final Object object) throws JSONException { return toString(object, null); } - + /** * Convert a JSONObject into a well-formed, element-normal XML string. * @@ -332,8 +289,7 @@ public class XML * * @throws JSONException */ - public static String toString(Object object, final String tagName) throws JSONException - { + public static String toString(Object object, final String tagName) throws JSONException { final StringBuilder sb = new StringBuilder(); int i; JSONArray ja; @@ -343,11 +299,9 @@ public class XML int length; String string; Object value; - if (object instanceof JSONObject) - { + if (object instanceof JSONObject) { // Emit - if (tagName != null) - { + if (tagName != null) { sb.append('<'); sb.append(tagName); sb.append('>'); @@ -355,46 +309,34 @@ public class XML // Loop thru the keys. jo = (JSONObject) object; keys = jo.keys(); - while (keys.hasNext()) - { + while (keys.hasNext()) { key = keys.next(); value = jo.opt(key); - if (value == null) - { + if (value == null) { value = ""; } string = value instanceof String ? (String) value : null; // Emit content in body - if ("content".equals(key)) - { - if (value instanceof JSONArray) - { + if ("content".equals(key)) { + if (value instanceof JSONArray) { ja = (JSONArray) value; length = ja.length(); - for (i = 0; i < length; i += 1) - { - if (i > 0) - { + for (i = 0; i < length; i += 1) { + if (i > 0) { sb.append('\n'); } sb.append(escape(ja.get(i).toString())); } - } - else - { + } else { sb.append(escape(value.toString())); } // Emit an array of similar keys - } - else if (value instanceof JSONArray) - { + } else if (value instanceof JSONArray) { ja = (JSONArray) value; length = ja.length(); - for (i = 0; i < length; i += 1) - { + for (i = 0; i < length; i += 1) { value = ja.get(i); - if (value instanceof JSONArray) - { + if (value instanceof JSONArray) { sb.append('<'); sb.append(key); sb.append('>'); @@ -402,27 +344,20 @@ public class XML sb.append("'); - } - else - { + } else { sb.append(toString(value, key)); } } - } - else if ("".equals(value)) - { + } else if ("".equals(value)) { sb.append('<'); sb.append(key); sb.append("/>"); // Emit a new tag - } - else - { + } else { sb.append(toString(value, key)); } } - if (tagName != null) - { + if (tagName != null) { // Emit the close tag sb.append(" element. - } - else - { - if (object.getClass().isArray()) - { + } else { + if (object.getClass().isArray()) { object = new JSONArray(object); } - if (object instanceof JSONArray) - { + if (object instanceof JSONArray) { ja = (JSONArray) object; length = ja.length(); - for (i = 0; i < length; i += 1) - { + for (i = 0; i < length; i += 1) { sb.append(toString(ja.opt(i), tagName == null ? "array" : tagName)); } return sb.toString(); - } - else - { + } else { string = (object == null) ? "null" : escape(object.toString()); return (tagName == null) ? "\"" + string + "\"" : (string.length() == 0) ? "<" + tagName + "/>" : "<" + tagName + ">" + string + ""; } diff --git a/src/main/java/com/intellectualcrafters/json/XMLTokener.java b/src/main/java/com/intellectualcrafters/json/XMLTokener.java index e34e6dbe2..c7751ebdd 100644 --- a/src/main/java/com/intellectualcrafters/json/XMLTokener.java +++ b/src/main/java/com/intellectualcrafters/json/XMLTokener.java @@ -6,14 +6,12 @@ package com.intellectualcrafters.json; * @author JSON.org * @version 2014-05-03 */ -public class XMLTokener extends JSONTokener -{ +public class XMLTokener extends JSONTokener { /** * The table of entity values. It initially contains Character values for amp, apos, gt, lt, quot. */ public static final java.util.HashMap entity; - static - { + static { entity = new java.util.HashMap(8); entity.put("amp", XML.AMP); entity.put("apos", XML.APOS); @@ -21,17 +19,16 @@ public class XMLTokener extends JSONTokener entity.put("lt", XML.LT); entity.put("quot", XML.QUOT); } - + /** * Construct an XMLTokener from a string. * * @param s A source string. */ - public XMLTokener(final String s) - { + public XMLTokener(final String s) { super(s); } - + /** * Get the text in the CDATA block. * @@ -39,25 +36,24 @@ public class XMLTokener extends JSONTokener * * @throws JSONException If the ]]> is not found. */ - public String nextCDATA() throws JSONException - { + public String nextCDATA() throws JSONException { char c; int i; final StringBuilder sb = new StringBuilder(); - for (;;) - { + for (;;) { c = next(); - if (end()) { throw syntaxError("Unclosed CDATA"); } + if (end()) { + throw syntaxError("Unclosed CDATA"); + } sb.append(c); i = sb.length() - 3; - if ((i >= 0) && (sb.charAt(i) == ']') && (sb.charAt(i + 1) == ']') && (sb.charAt(i + 2) == '>')) - { + if ((i >= 0) && (sb.charAt(i) == ']') && (sb.charAt(i + 1) == ']') && (sb.charAt(i + 2) == '>')) { sb.setLength(i); return sb.toString(); } } } - + /** * Get the next XML outer token, trimming whitespace. There are two kinds of tokens: the '<' character which begins * a markup tag, and the content text between markup tags. @@ -66,37 +62,33 @@ public class XMLTokener extends JSONTokener * * @throws JSONException */ - public Object nextContent() throws JSONException - { + public Object nextContent() throws JSONException { char c; StringBuilder sb; - do - { + do { c = next(); + } while (Character.isWhitespace(c)); + if (c == 0) { + return null; + } + if (c == '<') { + return XML.LT; } - while (Character.isWhitespace(c)); - if (c == 0) { return null; } - if (c == '<') { return XML.LT; } sb = new StringBuilder(); - for (;;) - { - if ((c == '<') || (c == 0)) - { + for (;;) { + if ((c == '<') || (c == 0)) { back(); return sb.toString().trim(); } - if (c == '&') - { + if (c == '&') { sb.append(nextEntity(c)); - } - else - { + } else { sb.append(c); } c = next(); } } - + /** * Return the next entity. These entities are translated to Characters: & " > < * ". @@ -107,22 +99,15 @@ public class XMLTokener extends JSONTokener * * @throws JSONException If missing ';' in XML entity. */ - public Object nextEntity(final char ampersand) throws JSONException - { + public Object nextEntity(final char ampersand) throws JSONException { final StringBuilder sb = new StringBuilder(); - for (;;) - { + for (;;) { final char c = next(); - if (Character.isLetterOrDigit(c) || (c == '#')) - { + if (Character.isLetterOrDigit(c) || (c == '#')) { sb.append(Character.toLowerCase(c)); - } - else if (c == ';') - { + } else if (c == ';') { break; - } - else - { + } else { throw syntaxError("Missing ';' in XML entity: &" + sb); } } @@ -130,7 +115,7 @@ public class XMLTokener extends JSONTokener final Object object = entity.get(string); return object != null ? object : ampersand + string + ";"; } - + /** * Returns the next XML meta token. This is used for skipping over and structures. * @@ -139,17 +124,13 @@ public class XMLTokener extends JSONTokener * * @throws JSONException If a string is not properly closed or if the XML is badly structured. */ - public Object nextMeta() throws JSONException - { + public Object nextMeta() throws JSONException { char c; char q; - do - { + do { c = next(); - } - while (Character.isWhitespace(c)); - switch (c) - { + } while (Character.isWhitespace(c)); + switch (c) { case 0: throw syntaxError("Misshaped meta tag"); case '<': @@ -167,19 +148,22 @@ public class XMLTokener extends JSONTokener case '"': case '\'': q = c; - for (;;) - { + for (;;) { c = next(); - if (c == 0) { throw syntaxError("Unterminated string"); } - if (c == q) { return Boolean.TRUE; } + if (c == 0) { + throw syntaxError("Unterminated string"); + } + if (c == q) { + return Boolean.TRUE; + } } default: - for (;;) - { + for (;;) { c = next(); - if (Character.isWhitespace(c)) { return Boolean.TRUE; } - switch (c) - { + if (Character.isWhitespace(c)) { + return Boolean.TRUE; + } + switch (c) { case 0: case '<': case '>': @@ -195,7 +179,7 @@ public class XMLTokener extends JSONTokener } } } - + /** * Get the next XML Token. These tokens are found inside of angle brackets. It may be one of these characters: * / >= ! ? or it may be a string wrapped in single quotes or double quotes, or it may be a name. @@ -204,18 +188,14 @@ public class XMLTokener extends JSONTokener * * @throws JSONException If the XML is not well formed. */ - public Object nextToken() throws JSONException - { + public Object nextToken() throws JSONException { char c; char q; StringBuilder sb; - do - { + do { c = next(); - } - while (Character.isWhitespace(c)); - switch (c) - { + } while (Character.isWhitespace(c)); + switch (c) { case 0: throw syntaxError("Misshaped element"); case '<': @@ -235,30 +215,30 @@ public class XMLTokener extends JSONTokener case '\'': q = c; sb = new StringBuilder(); - for (;;) - { + for (;;) { c = next(); - if (c == 0) { throw syntaxError("Unterminated string"); } - if (c == q) { return sb.toString(); } - if (c == '&') - { - sb.append(nextEntity(c)); + if (c == 0) { + throw syntaxError("Unterminated string"); } - else - { + if (c == q) { + return sb.toString(); + } + if (c == '&') { + sb.append(nextEntity(c)); + } else { sb.append(c); } } default: // Name sb = new StringBuilder(); - for (;;) - { + for (;;) { sb.append(c); c = next(); - if (Character.isWhitespace(c)) { return sb.toString(); } - switch (c) - { + if (Character.isWhitespace(c)) { + return sb.toString(); + } + switch (c) { case 0: return sb.toString(); case '>': @@ -278,7 +258,7 @@ public class XMLTokener extends JSONTokener } } } - + /** * Skip characters until past the requested string. If it is not found, we are left at the end of the source with a * result of false. @@ -287,8 +267,7 @@ public class XMLTokener extends JSONTokener * * @throws JSONException */ - public boolean skipPast(final String to) throws JSONException - { + public boolean skipPast(final String to) throws JSONException { boolean b; char c; int i; @@ -300,44 +279,44 @@ public class XMLTokener extends JSONTokener * First fill the circle buffer with as many characters as are in the * to string. If we reach an early end, bail. */ - for (i = 0; i < length; i += 1) - { + for (i = 0; i < length; i += 1) { c = next(); - if (c == 0) { return false; } + if (c == 0) { + return false; + } circle[i] = c; } /* We will loop, possibly for all of the remaining characters. */ - for (;;) - { + for (;;) { j = offset; b = true; /* Compare the circle buffer with the to string. */ - for (i = 0; i < length; i += 1) - { - if (circle[j] != to.charAt(i)) - { + for (i = 0; i < length; i += 1) { + if (circle[j] != to.charAt(i)) { b = false; break; } j += 1; - if (j >= length) - { + if (j >= length) { j -= length; } } /* If we exit the loop with b intact, then victory is ours. */ - if (b) { return true; } + if (b) { + return true; + } /* Get the next character. If there isn't one, then defeat is ours. */ c = next(); - if (c == 0) { return false; } + if (c == 0) { + return false; + } /* * Shove the character in the circle buffer and advance the * circle offset. The offset is mod n. */ circle[offset] = c; offset += 1; - if (offset >= length) - { + if (offset >= length) { offset -= length; } } diff --git a/src/main/java/com/intellectualcrafters/plot/IPlotMain.java b/src/main/java/com/intellectualcrafters/plot/IPlotMain.java index 19bb3edf3..5132c94c8 100644 --- a/src/main/java/com/intellectualcrafters/plot/IPlotMain.java +++ b/src/main/java/com/intellectualcrafters/plot/IPlotMain.java @@ -17,21 +17,20 @@ import com.intellectualcrafters.plot.util.SetupUtils; import com.intellectualcrafters.plot.util.TaskManager; import com.intellectualcrafters.plot.util.UUIDHandlerImplementation; -public interface IPlotMain -{ - +public interface IPlotMain { + /** * Log a message to console * @param message */ void log(final String message); - + /** * Get the `PlotSquared` directory (e.g. /plugins/PlotSquared or /mods/PlotSquared) * @return */ File getDirectory(); - + /** * Get the directory containing all the worlds * @return @@ -44,161 +43,161 @@ public interface IPlotMain * @return */ PlotPlayer wrapPlayer(final Object obj); - + /** * Disable the implementation * - If a full disable isn't feasibly, just disable what it can */ void disable(); - + /** * Get the version of the PlotSquared being used * @return */ int[] getPluginVersion(); - + /** * Get the version of Minecraft that is running * (used to check what protocols and such are supported) * @return */ int[] getServerVersion(); - + /** * Get the nms package prefix * @return */ String getNMSPackage(); - + /** * Get the schematic handler * @return */ SchematicHandler initSchematicHandler(); - + /** * Get the schematic handler * @return */ ChatManager initChatManager(); - + /** * The task manager will run and manage minecraft tasks * @return */ TaskManager getTaskManager(); - + /** * Run the task that will kill road mobs */ void runEntityTask(); - + /** * Register the implementation specific commands */ void registerCommands(); - + /** * Register the protection system (used to protect blocks and such) */ void registerPlayerEvents(); - + /** * Register inventory related events (used for inventory guis) */ void registerInventoryEvents(); - + /** * Register plot plus related events (whatever these are?) */ void registerPlotPlusEvents(); - + /** * Register force field events (why is this a thing?) */ void registerForceFieldEvents(); - + /** * Register the WorldEdit hook */ boolean initWorldEdit(); - + /** * Register TNT related events (if TNT protection is enabled) */ void registerTNTListener(); - + /** * Get the economy provider * @return */ EconHandler getEconomyHandler(); - + /** * Get the block manager * @return */ BlockManager initBlockManager(); - + /** * Get the EventUtil class * @return */ EventUtil initEventUtil(); - + /** * Get the chunk manager * @return */ ChunkManager initChunkManager(); - + /** * Get the setuputils class (used for world creation) * @return */ SetupUtils initSetupUtils(); - + /** * Get HybridUtils class (common functions useful for hybrid world generation) * @return */ HybridUtils initHybridUtils(); - + /** * Start the metrics task */ void startMetrics(); - + /** * If a world is already loaded, set the generator (use NMS if required) * @param world */ void setGenerator(final String world); - + /** * Get the UUIDHandlerImplementation which will cache and provide UUIDs * @return */ UUIDHandlerImplementation initUUIDHandler(); - + /** * Get the InventoryUtil class (used for implementation specific inventory guis) * @return */ InventoryUtil initInventoryUtil(); - + /** * Run the converter for the implementation (not necessarily PlotMe, just any plugin that we can convert from) * @return */ boolean initPlotMeConverter(); - + /** * Unregister a PlotPlayer from cache e.g. if they have logged off * @param player */ void unregister(final PlotPlayer player); - + /** * Get the generator wrapper for a world (world) and generator (name) * @param world @@ -206,23 +205,23 @@ public interface IPlotMain * @return */ PlotGenerator getGenerator(final String world, final String name); - + /** * Register the chunk processor which will clean out chunks that have too many blockstates or entities */ void registerChunkProcessor(); - + /** * Register the world initialization events (used to keep track of worlds being generated) */ void registerWorldEvents(); - + /** * Get the name of the server * @return */ String getServerName(); - + /** * Get the class that will manage player titles * @return diff --git a/src/main/java/com/intellectualcrafters/plot/PS.java b/src/main/java/com/intellectualcrafters/plot/PS.java index a897f1d6d..7466c62d3 100644 --- a/src/main/java/com/intellectualcrafters/plot/PS.java +++ b/src/main/java/com/intellectualcrafters/plot/PS.java @@ -90,16 +90,15 @@ import com.sk89q.worldedit.WorldEdit; * @author Sauilitired | Citymonstret * @author boy0001 | Empire92 */ -public class PS -{ - +public class PS { + // protected static: public static PS instance; - + // private final: private final HashMap plotworlds = new HashMap<>(); private final HashMap plotmanagers = new HashMap<>(); - + // public: public File configFile; public File translationFile; @@ -110,7 +109,7 @@ public class PS public TaskManager TASK; public WorldEdit worldedit; public URL update; - + // private: private File styleFile; private File storageFile; @@ -123,53 +122,44 @@ public class PS private Database database; private Connection connection; private Thread thread; - + /** * Initialize PlotSquared with the desired Implementation class * @param imp_class */ - public PS(final IPlotMain imp_class, final String platform) - { - try - { + public PS(final IPlotMain imp_class, final String platform) { + try { instance = this; thread = Thread.currentThread(); SetupUtils.generators = new HashMap<>(); IMP = imp_class; new ReflectionUtils(IMP.getNMSPackage()); URL url; - try - { + try { url = PS.class.getProtectionDomain().getCodeSource().getLocation(); FILE = new File(new URL(url.toURI().toString().split("\\!")[0].replaceAll("jar:file", "file")).toURI().getPath()); - } - catch (final Exception e) - { + } catch (final Exception e) { e.printStackTrace(); FILE = new File(IMP.getDirectory().getParentFile(), "PlotSquared.jar"); - if (!FILE.exists()) - { + if (!FILE.exists()) { FILE = new File(IMP.getDirectory().getParentFile(), "PlotSquared-" + platform + ".jar"); } } VERSION = IMP.getPluginVersion(); PLATFORM = platform; EconHandler.manager = IMP.getEconomyHandler(); - if (getJavaVersion() < 1.7) - { + if (getJavaVersion() < 1.7) { log(C.PREFIX.s() + "&cYour java version is outdated. Please update to at least 1.7."); // Didn't know of any other link :D log(C.PREFIX.s() + "&cURL: &6https://java.com/en/download/index.jsp"); IMP.disable(); return; } - if (getJavaVersion() < 1.8) - { + if (getJavaVersion() < 1.8) { log(C.PREFIX.s() + "&cIt's really recommended to run Java 1.8, as it increases performance"); } TASK = IMP.getTaskManager(); - if (C.ENABLED.s().length() > 0) - { + if (C.ENABLED.s().length() > 0) { log(C.ENABLED.s()); } setupConfigs(); @@ -179,17 +169,15 @@ public class PS setupDatabase(); CommentManager.registerDefaultInboxes(); // Tasks - if (Settings.KILL_ROAD_MOBS || Settings.KILL_ROAD_VEHICLES) - { + if (Settings.KILL_ROAD_MOBS || Settings.KILL_ROAD_VEHICLES) { IMP.runEntityTask(); } - if (IMP.initWorldEdit()) - { + if (IMP.initWorldEdit()) { worldedit = WorldEdit.getInstance(); WorldEdit.getInstance().getEventBus().register(new WESubscriber()); MainCommand.getInstance().createCommand(new WE_Anywhere()); } - + // Events IMP.registerCommands(); IMP.registerPlayerEvents(); @@ -197,64 +185,47 @@ public class PS IMP.registerPlotPlusEvents(); IMP.registerForceFieldEvents(); IMP.registerWorldEvents(); - if (Settings.METRICS) - { + if (Settings.METRICS) { IMP.startMetrics(); - } - else - { + } else { log("&dUsing metrics will allow us to improve the plugin, please consider it :)"); } IMP.startMetrics(); - if (Settings.TNT_LISTENER) - { + if (Settings.TNT_LISTENER) { IMP.registerTNTListener(); } - if (Settings.CHUNK_PROCESSOR) - { + if (Settings.CHUNK_PROCESSOR) { IMP.registerChunkProcessor(); } // create UUIDWrapper UUIDHandler.implementation = IMP.initUUIDHandler(); - TaskManager.runTaskLater(new Runnable() - { + TaskManager.runTaskLater(new Runnable() { @Override - public void run() - { + public void run() { PS.debug("Starting UUID caching"); - UUIDHandler.startCaching(new Runnable() - { + UUIDHandler.startCaching(new Runnable() { @Override - public void run() - { - for (final Plot plot : getPlots()) - { - if ((plot.owner != null) && (plot.temp != -1)) - { - if (UUIDHandler.getName(plot.owner) == null) - { + public void run() { + for (final Plot plot : getPlots()) { + if ((plot.owner != null) && (plot.temp != -1)) { + if (UUIDHandler.getName(plot.owner) == null) { UUIDHandler.implementation.unknown.add(plot.owner); } } } // Auto clearing - if (Settings.AUTO_CLEAR) - { + if (Settings.AUTO_CLEAR) { ExpireManager.runTask(); } // PlotMe - if (Settings.CONVERT_PLOTME || Settings.CACHE_PLOTME) - { - TaskManager.runTaskLater(new Runnable() - { - + if (Settings.CONVERT_PLOTME || Settings.CACHE_PLOTME) { + TaskManager.runTaskLater(new Runnable() { + @Override - public void run() - { - if (IMP.initPlotMeConverter()) - { + public void run() { + if (IMP.initPlotMeConverter()) { log("&c=== IMPORTANT ==="); log("&cTHIS MESSAGE MAY BE EXTREMELY HELPFUL IF YOU HAVE TROUBLE CONVERTING PLOTME!"); log("&c - Make sure 'UUID.read-from-disk' is disabled (false)!"); @@ -286,53 +257,39 @@ public class PS AbstractTitle.TITLE_CLASS = IMP.initTitleManager(); // Chat ChatManager.manager = IMP.initChatManager(); - + // Check for updates - TaskManager.runTaskAsync(new Runnable() - { + TaskManager.runTaskAsync(new Runnable() { @Override - public void run() - { + public void run() { final URL url = getUpdate(); - if (url != null) - { + if (url != null) { update = url; - } - else if ((LAST_VERSION != null) && !StringMan.join(VERSION, ".").equals(LAST_VERSION)) - { + } else if ((LAST_VERSION != null) && !StringMan.join(VERSION, ".").equals(LAST_VERSION)) { log("&aThanks for updating from: " + LAST_VERSION + " to " + StringMan.join(VERSION, ".")); } } }); - + // World generators: final ConfigurationSection section = config.getConfigurationSection("worlds"); - if (section != null) - { - for (final String world : section.getKeys(false)) - { - if (world.equals("CheckingPlotSquaredGenerator")) - { + if (section != null) { + for (final String world : section.getKeys(false)) { + if (world.equals("CheckingPlotSquaredGenerator")) { continue; } - if (BlockManager.manager.isWorld(world)) - { + if (BlockManager.manager.isWorld(world)) { IMP.setGenerator(world); } } - TaskManager.runTaskLater(new Runnable() - { + TaskManager.runTaskLater(new Runnable() { @Override - public void run() - { - for (final String world : section.getKeys(false)) - { - if (world.equals("CheckingPlotSquaredGenerator")) - { + public void run() { + for (final String world : section.getKeys(false)) { + if (world.equals("CheckingPlotSquaredGenerator")) { continue; } - if (!BlockManager.manager.isWorld(world) || (BlockManager.manager.isWorld(world) && !isPlotWorld(world))) - { + if (!BlockManager.manager.isWorld(world) || (BlockManager.manager.isWorld(world) && !isPlotWorld(world))) { PS.debug("&c`" + world + "` was not properly loaded - PlotSquared will now try to load it properly: "); PS.debug("&8 - &7Are you trying to delete this world? Remember to remove it from the settings.yml as well"); PS.debug("&8 - &7Your world management plugin may be faulty. Consider using an up to date plugin."); @@ -342,7 +299,7 @@ public class PS } }, 1); } - + // Copy files copyFile("automerge.js", "scripts"); copyFile("town.template", "templates"); @@ -352,112 +309,98 @@ public class PS copyFile("s_chinese.yml", "translations"); copyFile("italian.yml", "translations"); showDebug(); - } - catch (final Throwable e) - { + } catch (final Throwable e) { e.printStackTrace(); } } - - public boolean isMainThread(final Thread thread) - { + + public boolean isMainThread(final Thread thread) { return this.thread == thread; } - - public boolean checkVersion(final int[] version, final int major, final int minor, final int minor2) - { + + public boolean checkVersion(final int[] version, final int major, final int minor, final int minor2) { return (version[0] > major) || ((version[0] == major) && (version[1] > minor)) || ((version[0] == major) && (version[1] == minor) && (version[2] >= minor2)); } - + /** * Get the instance of PlotSquared * * @return the instance created by IPlotMain */ - public static PS get() - { + public static PS get() { return instance; } - + /** * Get the last PlotSquared version * @return last version in config or null */ - public String getLastVersion() - { + public String getLastVersion() { return LAST_VERSION; } - + /** * Get the current PlotSquared version * @return current version in config or null */ - public int[] getVersion() - { + public int[] getVersion() { return VERSION; } - + /** * Get the platform this is running on (Bukkit, Sponge) * @return */ - public String getPlatform() - { + public String getPlatform() { return PLATFORM; } - + /** * Log a message to the IPlotMain logger * * @param message Message to log * @see IPlotMain#log(String) */ - public static void log(final Object message) - { + public static void log(final Object message) { get().IMP.log(StringMan.getString(message)); } - + /** * Log a message to the IPlotMain logger * * @param message Message to log * @see IPlotMain#log(String) */ - public static void debug(final Object message) - { - if (Settings.DEBUG) - { + public static void debug(final Object message) { + if (Settings.DEBUG) { log(message); } } - + /** * Get the database object * * @return Database object * @see #getConnection() Get the database connection */ - public Database getDatabase() - { + public Database getDatabase() { return database; } - + /** * Update the global reference * to a plot object * * @param plot Plot Object to update */ - public void updatePlot(final Plot plot) - { + public void updatePlot(final Plot plot) { final String world = plot.world; - if (!plots.containsKey(world)) - { + if (!plots.containsKey(world)) { plots.put(world, new ConcurrentHashMap()); } plots.get(world).put(plot.id, plot); } - + /** * Get the plot world based on the * name identifier @@ -466,12 +409,13 @@ public class PS * @return plot world | null if not existing * @see #getPlotWorldsString() Get all plot world names */ - public PlotWorld getPlotWorld(final String world) - { - if (plotworlds.containsKey(world)) { return plotworlds.get(world); } + public PlotWorld getPlotWorld(final String world) { + if (plotworlds.containsKey(world)) { + return plotworlds.get(world); + } return null; } - + /** * Add a global reference to a plot world * @@ -480,38 +424,34 @@ public class PS * @param manager PlotManager * @see #removePlotWorld(String) To remove the reference */ - public void addPlotWorld(final String world, final PlotWorld plotworld, final PlotManager manager) - { + public void addPlotWorld(final String world, final PlotWorld plotworld, final PlotManager manager) { plotworlds.put(world, plotworld); plotmanagers.put(world, manager); - if (!plots.containsKey(world)) - { + if (!plots.containsKey(world)) { plots.put(world, new ConcurrentHashMap()); } } - + /** * Remove a plot world reference * * @param world World name * @see #addPlotWorld(String, PlotWorld, PlotManager) To add a reference */ - public void removePlotWorld(final String world) - { + public void removePlotWorld(final String world) { plots.remove(world); plotmanagers.remove(world); plotworlds.remove(world); } - + /** * @param world World Name */ - public void removePlotWorldAbs(final String world) - { + public void removePlotWorldAbs(final String world) { plotmanagers.remove(world); plotworlds.remove(world); } - + /** * Get all plots as raw objects * @@ -521,34 +461,26 @@ public class PS * @return HashMap containing the world name, and another map with the plot id and the plot object */ @Deprecated - public Map> getAllPlotsRaw() - { + public Map> getAllPlotsRaw() { return plots; } - + /** * A more generic way to filter plots - make your own method if you need complex filters * @param filters * @return */ - public Set getPlots(final PlotFilter... filters) - { + public Set getPlots(final PlotFilter... filters) { final HashSet set = new HashSet<>(); - for (final Entry> entry : plots.entrySet()) - { - for (final PlotFilter filter : filters) - { - if (!filter.allowsWorld(entry.getKey())) - { + for (final Entry> entry : plots.entrySet()) { + for (final PlotFilter filter : filters) { + if (!filter.allowsWorld(entry.getKey())) { continue; } } - for (final Plot plot : entry.getValue().values()) - { - for (final PlotFilter filter : filters) - { - if (!filter.allowsPlot(plot)) - { + for (final Plot plot : entry.getValue().values()) { + for (final PlotFilter filter : filters) { + if (!filter.allowsPlot(plot)) { continue; } } @@ -557,67 +489,54 @@ public class PS } return set; } - + /** * Set all the plots as a raw object * @see #getAllPlotsRaw() to get the raw plot object * @param plots */ @Deprecated - public void setAllPlotsRaw(final ConcurrentHashMap> plots) - { + public void setAllPlotsRaw(final ConcurrentHashMap> plots) { this.plots = plots; } - + /** * Get all the plots in a single set * @return Set of Plot */ - public Set getPlots() - { + public Set getPlots() { int size = 0; - for (final Entry> entry : plots.entrySet()) - { - if (isPlotWorld(entry.getKey())) - { + for (final Entry> entry : plots.entrySet()) { + if (isPlotWorld(entry.getKey())) { size += entry.getValue().size(); } } final Set result = new HashSet<>(size); - for (final Entry> entry : plots.entrySet()) - { - if (isPlotWorld(entry.getKey())) - { + for (final Entry> entry : plots.entrySet()) { + if (isPlotWorld(entry.getKey())) { result.addAll(entry.getValue().values()); } } return result; } - + /** * Get all the base plots in a single set (for merged plots it just returns the bottom plot) * @return Set of base Plot */ - public Set getBasePlots() - { + public Set getBasePlots() { int size = 0; - for (final Entry> entry : plots.entrySet()) - { - if (isPlotWorld(entry.getKey())) - { + for (final Entry> entry : plots.entrySet()) { + if (isPlotWorld(entry.getKey())) { size += entry.getValue().size(); } } final Set result = new HashSet<>(size); - for (final Entry> entry : plots.entrySet()) - { - if (isPlotWorld(entry.getKey())) - { - for (final Entry entry2 : entry.getValue().entrySet()) - { + for (final Entry> entry : plots.entrySet()) { + if (isPlotWorld(entry.getKey())) { + for (final Entry entry2 : entry.getValue().entrySet()) { final Plot plot = entry2.getValue(); - if (plot.getMerged(0) || plot.getMerged(3)) - { + if (plot.getMerged(0) || plot.getMerged(3)) { continue; } result.add(plot); @@ -626,28 +545,25 @@ public class PS } return result; } - + /** * Get the raw plot object * @return set of plot * @see #setAllPlotsRaw(LinkedHashMap) to set the raw plot object */ @Deprecated - public Set getPlotsRaw() - { + public Set getPlotsRaw() { int size = 0; - for (final Entry> entry : plots.entrySet()) - { + for (final Entry> entry : plots.entrySet()) { size += entry.getValue().size(); } final Set result = new HashSet<>(size); - for (final Entry> entry : plots.entrySet()) - { + for (final Entry> entry : plots.entrySet()) { result.addAll(entry.getValue().values()); } return result; } - + /** * Sort a collection of plots by the hashcode (assumes that all plots are in the same world) * @param plots @@ -655,62 +571,47 @@ public class PS * @deprecated use sortPlot */ @Deprecated - public ArrayList sortPlots(final Collection plots) - { + public ArrayList sortPlots(final Collection plots) { return sortPlots(plots, SortType.DISTANCE_FROM_ORIGIN, null); } - - public ArrayList sortPlotsByTemp(final Collection plots) - { + + public ArrayList sortPlotsByTemp(final Collection plots) { int max = 0; int overflowCount = 0; - for (final Plot plot : plots) - { - if (plot.temp > 0) - { - if (plot.temp > max) - { + for (final Plot plot : plots) { + if (plot.temp > 0) { + if (plot.temp > max) { max = plot.temp; } - } - else - { + } else { overflowCount++; } } final Plot[] array = new Plot[max + 1]; final List overflow = new ArrayList<>(overflowCount); - for (final Plot plot : plots) - { - if (plot.temp <= 0) - { + for (final Plot plot : plots) { + if (plot.temp <= 0) { overflow.add(plot); - } - else - { + } else { array[plot.temp] = plot; } } final ArrayList result = new ArrayList<>(plots.size()); - for (final Plot plot : array) - { - if (plot != null) - { + for (final Plot plot : array) { + if (plot != null) { result.add(plot); } } - Collections.sort(overflow, new Comparator() - { + Collections.sort(overflow, new Comparator() { @Override - public int compare(final Plot a, final Plot b) - { + public int compare(final Plot a, final Plot b) { return a.hashCode() - b.hashCode(); } }); result.addAll(overflow); return result; } - + /** * Sort plots by hashcode * @param plots @@ -718,22 +619,16 @@ public class PS * @deprecated Unchecked, please use {@link #sortPlots(Collection, SortType, String)} which has additional checks before calling this */ @Deprecated - public ArrayList sortPlotsByHash(final Collection plots) - { + public ArrayList sortPlotsByHash(final Collection plots) { int hardmax = 256000; int max = 0; int overflowSize = 0; - for (final Plot plot : plots) - { + for (final Plot plot : plots) { final int hash = MathMan.getPositiveId(plot.hashCode()); - if (hash > max) - { - if (hash >= hardmax) - { + if (hash > max) { + if (hash >= hardmax) { overflowSize++; - } - else - { + } else { max = hash; } } @@ -742,50 +637,37 @@ public class PS final Plot[] cache = new Plot[hardmax + 1]; final List overflow = new ArrayList(overflowSize); final ArrayList extra = new ArrayList<>(); - for (final Plot plot : plots) - { + for (final Plot plot : plots) { final int hash = MathMan.getPositiveId(plot.hashCode()); - if (hash < hardmax) - { - if (hash >= 0) - { + if (hash < hardmax) { + if (hash >= 0) { cache[hash] = plot; - } - else - { + } else { extra.add(plot); } - } - else if ((Math.abs(plot.id.x) > 15446) || (Math.abs(plot.id.y) > 15446)) - { + } else if ((Math.abs(plot.id.x) > 15446) || (Math.abs(plot.id.y) > 15446)) { extra.add(plot); - } - else - { + } else { overflow.add(plot); } } final Plot[] overflowArray = overflow.toArray(new Plot[overflow.size()]); sortPlotsByHash(overflowArray); final ArrayList result = new ArrayList(cache.length + overflowArray.length); - for (final Plot plot : cache) - { - if (plot != null) - { + for (final Plot plot : cache) { + if (plot != null) { result.add(plot); } } - for (final Plot plot : overflowArray) - { + for (final Plot plot : overflowArray) { result.add(plot); } - for (final Plot plot : extra) - { + for (final Plot plot : extra) { result.add(plot); } return result; } - + /** * Sort plots by creation timestamp * @param input @@ -793,163 +675,125 @@ public class PS * @return */ @Deprecated - public ArrayList sortPlotsByTimestamp(final Collection input) - { + public ArrayList sortPlotsByTimestamp(final Collection input) { List list; - if (input instanceof ArrayList) - { + if (input instanceof ArrayList) { list = (List) input; - } - else - { + } else { list = new ArrayList(input); } long min = Integer.MAX_VALUE; long max = 0; final int size = list.size(); final int limit = Math.min(1048576, size * 2); - for (int i = 0; i < size; i++) - { + for (int i = 0; i < size; i++) { final Plot plot = list.get(i); final long time = plot.getTimestamp(); - if (time < min) - { + if (time < min) { min = time; } - if (time > max) - { + if (time > max) { max = time; } } final long range = max - min; Plot[] plots; - try - { + try { final ArrayList overflow = new ArrayList<>(); - if ((range > limit) && (size > 1024)) - { + if ((range > limit) && (size > 1024)) { plots = new Plot[Math.min((int) range, limit)]; final int factor = (int) ((range / limit)); - for (int i = 0; i < size; i++) - { + for (int i = 0; i < size; i++) { Plot plot = list.get(i); int index = (int) (plot.getTimestamp() - min) / factor; - if (index < 0) - { + if (index < 0) { index = 0; } - if (index >= plots.length) - { + if (index >= plots.length) { overflow.add(plot); continue; } Plot current = plots[index]; - while (true) - { - if (current == null) - { + while (true) { + if (current == null) { plots[index] = plot; break; } - if (current.getTimestamp() > plot.getTimestamp()) - { + if (current.getTimestamp() > plot.getTimestamp()) { plots[index] = plot; plot = current; } index++; - if (index >= plots.length) - { + if (index >= plots.length) { overflow.add(plot); break; } current = plots[index]; } } - } - else if ((range < size) || (size < 1024)) - { + } else if ((range < size) || (size < 1024)) { final ArrayList result = new ArrayList(list); - Collections.sort(result, new Comparator() - { + Collections.sort(result, new Comparator() { @Override - public int compare(final Plot a, final Plot b) - { - if (a.getTimestamp() > b.getTimestamp()) - { + public int compare(final Plot a, final Plot b) { + if (a.getTimestamp() > b.getTimestamp()) { return -1; - } - else if (b.getTimestamp() > a.getTimestamp()) { + } else if (b.getTimestamp() > a.getTimestamp()) { return 1; } return 0; } }); return result; - } - else if (min != 0) - { + } else if (min != 0) { plots = new Plot[(int) range]; - for (int i = 0; i < size; i++) - { + for (int i = 0; i < size; i++) { Plot plot = list.get(i); int index = (int) (plot.getTimestamp() - min); - if (index >= plots.length) - { + if (index >= plots.length) { overflow.add(plot); continue; } Plot current = plots[index]; - while (true) - { - if (current == null) - { + while (true) { + if (current == null) { plots[index] = plot; break; } - if (current.getTimestamp() > plot.getTimestamp()) - { + if (current.getTimestamp() > plot.getTimestamp()) { plots[index] = plot; plot = current; } index++; - if (index >= plots.length) - { + if (index >= plots.length) { overflow.add(plot); break; } current = plots[index]; } } - } - else - { + } else { plots = new Plot[(int) range]; - for (int i = 0; i < size; i++) - { + for (int i = 0; i < size; i++) { Plot plot = list.get(i); int index = (int) (plot.getTimestamp()); - if (index >= plots.length) - { + if (index >= plots.length) { overflow.add(plot); continue; } Plot current = plots[index]; // Move everything along until a free spot is found - while (true) - { - if (current == null) - { + while (true) { + if (current == null) { plots[index] = plot; break; } - if (current.getTimestamp() > plot.getTimestamp()) - { + if (current.getTimestamp() > plot.getTimestamp()) { plots[index] = plot; plot = current; } index++; - if (index >= plots.length) - { + if (index >= plots.length) { overflow.add(plot); break; } @@ -958,51 +802,37 @@ public class PS } } final ArrayList result = new ArrayList<>(size); - if (overflow.size() > 0) - { - Collections.sort(overflow, new Comparator() - { + if (overflow.size() > 0) { + Collections.sort(overflow, new Comparator() { @Override - public int compare(final Plot a, final Plot b) - { - if (a.getTimestamp() > b.getTimestamp()) - { + public int compare(final Plot a, final Plot b) { + if (a.getTimestamp() > b.getTimestamp()) { return -1; - } - else if (b.getTimestamp() > a.getTimestamp()) { + } else if (b.getTimestamp() > a.getTimestamp()) { return 1; } return 0; } }); - for (final Plot plot : overflow) - { + for (final Plot plot : overflow) { result.add(plot); } } - for (int i = plots.length - 1; i >= 0; i--) - { - if (plots[i] != null) - { + for (int i = plots.length - 1; i >= 0; i--) { + if (plots[i] != null) { result.add(plots[i]); } } return result; - } - catch (final Exception e) - { + } catch (final Exception e) { e.printStackTrace(); final ArrayList result = new ArrayList(list); - Collections.sort(result, new Comparator() - { + Collections.sort(result, new Comparator() { @Override - public int compare(final Plot a, final Plot b) - { - if (a.getTimestamp() > b.getTimestamp()) - { + public int compare(final Plot a, final Plot b) { + if (a.getTimestamp() > b.getTimestamp()) { return -1; - } - else if (b.getTimestamp() > a.getTimestamp()) { + } else if (b.getTimestamp() > a.getTimestamp()) { return 1; } return 0; @@ -1011,38 +841,31 @@ public class PS return result; } } - + /** * @deprecated Unchecked, use {@link #sortPlots(Collection, SortType, String)} instead which will in turn call this * @param input */ @Deprecated - public void sortPlotsByHash(final Plot[] input) - { + public void sortPlotsByHash(final Plot[] input) { final List[] bucket = new ArrayList[64]; - for (int i = 0; i < bucket.length; i++) - { + for (int i = 0; i < bucket.length; i++) { bucket[i] = new ArrayList(); } boolean maxLength = false; int tmp = -1, placement = 1; - while (!maxLength) - { + while (!maxLength) { maxLength = true; - for (final Plot i : input) - { + for (final Plot i : input) { tmp = MathMan.getPositiveId(i.hashCode()) / placement; bucket[tmp & 63].add(i); - if (maxLength && (tmp > 0)) - { + if (maxLength && (tmp > 0)) { maxLength = false; } } int a = 0; - for (int b = 0; b < 64; b++) - { - for (final Plot i : bucket[b]) - { + for (int b = 0; b < 64; b++) { + for (final Plot i : bucket[b]) { input[a++] = i; } bucket[b].clear(); @@ -1050,40 +873,33 @@ public class PS placement *= 64; } } - + /** * Sort plots by timestamp * @param input * @deprecated Unchecked, use {@link #sortPlots(Collection, SortType, String)} instead which will in turn call this */ @Deprecated - public void sortPlotsByTimestamp(final Plot[] input) - { + public void sortPlotsByTimestamp(final Plot[] input) { final int SIZE = 100; final List[] bucket = new ArrayList[SIZE]; - for (int i = 0; i < bucket.length; i++) - { + for (int i = 0; i < bucket.length; i++) { bucket[i] = new ArrayList(); } boolean maxLength = false; int tmp = -1, placement = 1; - while (!maxLength) - { + while (!maxLength) { maxLength = true; - for (final Plot i : input) - { + for (final Plot i : input) { tmp = MathMan.getPositiveId(i.hashCode()) / placement; bucket[tmp % SIZE].add(i); - if (maxLength && (tmp > 0)) - { + if (maxLength && (tmp > 0)) { maxLength = false; } } int a = 0; - for (int b = 0; b < SIZE; b++) - { - for (final Plot i : bucket[b]) - { + for (int b = 0; b < SIZE; b++) { + for (final Plot i : bucket[b]) { input[a++] = i; } bucket[b].clear(); @@ -1091,12 +907,11 @@ public class PS placement *= SIZE; } } - - public enum SortType - { + + public enum SortType { CREATION_DATE, CREATION_DATE_TIMESTAMP, DISTANCE_FROM_ORIGIN; } - + /** * Sort a collection of plots by world (with a priority world), then by hashcode * @param plots @@ -1104,51 +919,38 @@ public class PS * @param priorityWorld - Use null, "world" or "gibberish" if you want default world order * @return ArrayList of plot */ - public ArrayList sortPlots(final Collection plots, final SortType type, final String priorityWorld) - { + public ArrayList sortPlots(final Collection plots, final SortType type, final String priorityWorld) { // group by world // sort each final HashMap> map = new HashMap<>(); final ArrayList worlds = new ArrayList(getPlotWorlds()); int totalSize = 0; - for (final Entry> entry : this.plots.entrySet()) - { + for (final Entry> entry : this.plots.entrySet()) { totalSize += entry.getValue().size(); } - if (plots.size() == totalSize) - { - for (final Entry> entry : this.plots.entrySet()) - { + if (plots.size() == totalSize) { + for (final Entry> entry : this.plots.entrySet()) { map.put(entry.getKey(), entry.getValue().values()); } - } - else - { - for (final String world : worlds) - { + } else { + for (final String world : worlds) { map.put(world, new ArrayList(plots.size() / worlds.size())); } Collection lastList = null; String lastWorld = ""; - for (final Plot plot : plots) - { - if (StringMan.isEqual(lastWorld, plot.world)) - { + for (final Plot plot : plots) { + if (StringMan.isEqual(lastWorld, plot.world)) { lastList.add(plot); - } - else - { + } else { lastWorld = plot.world; lastList = map.get(lastWorld); lastList.add(plot); } } } - Collections.sort(worlds, new Comparator() - { + Collections.sort(worlds, new Comparator() { @Override - public int compare(final String a, final String b) - { + public int compare(final String a, final String b) { if ((priorityWorld != null) && StringMan.isEqual(a, priorityWorld)) { return -1; } @@ -1156,10 +958,8 @@ public class PS } }); final ArrayList toReturn = new ArrayList(plots.size()); - for (final String world : worlds) - { - switch (type) - { + for (final String world : worlds) { + switch (type) { case CREATION_DATE: toReturn.addAll(sortPlotsByTemp(map.get(world))); break; @@ -1171,12 +971,12 @@ public class PS break; default: break; - + } } return toReturn; } - + /** * Sort a collection of plots by world, then by hashcode * @param plots @@ -1184,176 +984,160 @@ public class PS * @return ArrayList of plot */ @Deprecated - public ArrayList sortPlotsByWorld(final Collection plots) - { + public ArrayList sortPlotsByWorld(final Collection plots) { final ArrayList newPlots = new ArrayList<>(); final ArrayList worlds = new ArrayList<>(plotworlds.keySet()); final HashSet set = new HashSet<>(plots); Collections.sort(worlds); - for (final String world : worlds) - { - for (final Plot plot : this.plots.get(world).values()) - { - if (set.contains(plot)) - { + for (final String world : worlds) { + for (final Plot plot : this.plots.get(world).values()) { + if (set.contains(plot)) { newPlots.add(plot); } } } return newPlots; } - + /** * Get all the plots owned by a player name * @param world * @param player * @return Set of Plot */ - public Set getPlots(final String world, final String player) - { + public Set getPlots(final String world, final String player) { final UUID uuid = UUIDHandler.getUUID(player, null); return getPlots(world, uuid); } - + /** * Get all plots by a PlotPlayer * @param world * @param player * @return Set of plot */ - public Set getPlots(final String world, final PlotPlayer player) - { + public Set getPlots(final String world, final PlotPlayer player) { final UUID uuid = player.getUUID(); return getPlots(world, uuid); } - + /** * Get all plots by a UUID in a world * @param world * @param uuid * @return Set of plot */ - public Set getPlots(final String world, final UUID uuid) - { + public Set getPlots(final String world, final UUID uuid) { final ArrayList myplots = new ArrayList<>(); - for (final Plot plot : getPlotsInWorld(world)) - { - if (plot.hasOwner()) - { - if (PlotHandler.isOwner(plot, uuid)) - { + for (final Plot plot : getPlotsInWorld(world)) { + if (plot.hasOwner()) { + if (PlotHandler.isOwner(plot, uuid)) { myplots.add(plot); } } } return new HashSet<>(myplots); } - + /** * Check if a plot world * @param world * @see #getPlotWorld(String) to get the PlotWorld object * @return if a plot world is registered */ - public boolean isPlotWorld(final String world) - { + public boolean isPlotWorld(final String world) { return (plotworlds.containsKey(world)); } - + /** * Get the plot manager for a world * @param world * @return the PlotManager object, or null if no registered PlotManager */ - public PlotManager getPlotManager(final String world) - { - if (plotmanagers.containsKey(world)) { return plotmanagers.get(world); } + public PlotManager getPlotManager(final String world) { + if (plotmanagers.containsKey(world)) { + return plotmanagers.get(world); + } return null; } - + /** * Get a list of the plot worlds * @return A String array of the plot world names */ - public String[] getPlotWorldsString() - { + public String[] getPlotWorldsString() { final Set strings = plotworlds.keySet(); return strings.toArray(new String[strings.size()]); } - + private String lastWorld; private Map lastMap; - + /** * Get a map of the plots for a world * @param world * @return HashMap of PlotId to Plot */ @Deprecated - public HashMap getPlots(final String world) - { + public HashMap getPlots(final String world) { final ConcurrentHashMap myplots = plots.get(world); - if (myplots != null) - { - if (world == lastWorld) { return new HashMap<>(lastMap); } + if (myplots != null) { + if (world == lastWorld) { + return new HashMap<>(lastMap); + } return new HashMap<>(myplots); } return new HashMap<>(); } - - public Collection getPlotsInWorld(final String world) - { + + public Collection getPlotsInWorld(final String world) { final ConcurrentHashMap map = plots.get(world); - if (map == null) { return new HashSet<>(); } + if (map == null) { + return new HashSet<>(); + } return map.values(); } - - public Plot getPlot(final String world, final PlotId id) - { - if (world == lastWorld) - { - if (lastMap != null) { return lastMap.get(id); } + + public Plot getPlot(final String world, final PlotId id) { + if (world == lastWorld) { + if (lastMap != null) { + return lastMap.get(id); + } return null; } lastWorld = world; - if (plots.containsKey(world)) - { + if (plots.containsKey(world)) { lastMap = plots.get(world); - if (lastMap != null) { return lastMap.get(id); } + if (lastMap != null) { + return lastMap.get(id); + } return null; } return null; } - + /** * Get the plots for a PlotPlayer * @param player * @return Set of Plot */ - public Set getPlots(final PlotPlayer player) - { + public Set getPlots(final PlotPlayer player) { return getPlots(player.getUUID()); } - + /** * Get the plots for a UUID * @param uuid * @return Set of Plot */ - public Set getPlots(final UUID uuid) - { + public Set getPlots(final UUID uuid) { final ArrayList myplots = new ArrayList<>(); - for (final Entry> entry : plots.entrySet()) - { - if (isPlotWorld(entry.getKey())) - { - for (final Entry entry2 : entry.getValue().entrySet()) - { + for (final Entry> entry : plots.entrySet()) { + if (isPlotWorld(entry.getKey())) { + for (final Entry entry2 : entry.getValue().entrySet()) { final Plot plot = entry2.getValue(); - if (plot.hasOwner()) - { - if (PlotHandler.isOwner(plot, uuid)) - { + if (plot.hasOwner()) { + if (PlotHandler.isOwner(plot, uuid)) { myplots.add(plot); } } @@ -1362,7 +1146,7 @@ public class PS } return new HashSet<>(myplots); } - + /** * Unregister a plot from local memory (does not call DB) * @param world @@ -1370,28 +1154,26 @@ public class PS * @param callEvent If to call an event about the plot being removed * @return true if plot existed | false if it didn't */ - public boolean removePlot(final String world, final PlotId id, final boolean callEvent) - { - if (callEvent) - { + public boolean removePlot(final String world, final PlotId id, final boolean callEvent) { + if (callEvent) { EventUtil.manager.callDelete(world, id); } final ConcurrentHashMap allPlots = plots.get(world); - if (allPlots == null) { return false; } + if (allPlots == null) { + return false; + } final Plot plot = allPlots.remove(id); - if (MainUtil.lastPlot.containsKey(world)) - { + if (MainUtil.lastPlot.containsKey(world)) { final PlotId last = MainUtil.lastPlot.get(world); final int last_max = Math.max(last.x, last.y); final int this_max = Math.max(id.x, id.y); - if (this_max < last_max) - { + if (this_max < last_max) { MainUtil.lastPlot.put(world, id); } } return plot != null; } - + /** * This method is called by the PlotGenerator class normally
* - Initializes the PlotWorld and PlotManager classes
@@ -1404,13 +1186,10 @@ public class PS * @param world The world to load * @param generator The generator for that world, or null if no generator */ - public void loadWorld(final String world, final PlotGenerator generator) - { + public void loadWorld(final String world, final PlotGenerator generator) { PlotWorld plotWorld = getPlotWorld(world); - if (plotWorld != null) - { - if (generator != null) - { + if (plotWorld != null) { + if (generator != null) { generator.initialize(plotWorld); } return; @@ -1419,45 +1198,37 @@ public class PS final PlotGenerator plotGenerator; final PlotManager plotManager; final String path = "worlds." + world; - if (!LOADING_WORLD && (generator.isFull())) - { + if (!LOADING_WORLD && (generator.isFull())) { plotGenerator = generator; plotWorld = plotGenerator.getNewPlotWorld(world); plotManager = plotGenerator.getPlotManager(); - if (!world.equals("CheckingPlotSquaredGenerator")) - { + if (!world.equals("CheckingPlotSquaredGenerator")) { log(C.PREFIX.s() + "&aDetected world load for '" + world + "'"); log(C.PREFIX.s() + "&3 - generator: &7" + plotGenerator.getClass().getName()); log(C.PREFIX.s() + "&3 - plotworld: &7" + plotWorld.getClass().getName()); log(C.PREFIX.s() + "&3 - manager: &7" + plotManager.getClass().getName()); } - if (!config.contains(path)) - { + if (!config.contains(path)) { config.createSection(path); } plotWorld.saveConfiguration(config.getConfigurationSection(path)); plotWorld.loadDefaultConfiguration(config.getConfigurationSection(path)); - try - { + try { config.save(configFile); - } - catch (final IOException e) - { + } catch (final IOException e) { e.printStackTrace(); } // Now add it addPlotWorld(world, plotWorld, plotManager); generator.initialize(plotWorld); MainUtil.setupBorder(world); - } - else - { - if (!worlds.contains(world)) { return; } - if (!LOADING_WORLD) - { + } else { + if (!worlds.contains(world)) { + return; + } + if (!LOADING_WORLD) { LOADING_WORLD = true; - try - { + try { final String gen_string = config.getString("worlds." + world + "." + "generator.plugin"); generator.setGenerator(gen_string); // if (gen_string == null) { @@ -1466,43 +1237,32 @@ public class PS // generator = (PlotGenerator) IMP.getGenerator(world, gen_string); // } loadWorld(world, generator); - } - catch (final Exception e) - { + } catch (final Exception e) { log("&d=== Oh no! Please set the generator for the " + world + " ==="); e.printStackTrace(); LOADING_WORLD = false; removePlotWorld(world); - } - finally - { + } finally { LOADING_WORLD = false; } - } - else - { + } else { LOADING_WORLD = false; plotWorld = generator.getNewPlotWorld(world); plotManager = generator.getPlotManager(); - if (!config.contains(path)) - { + if (!config.contains(path)) { config.createSection(path); } plotWorld.TYPE = generator.isFull() ? 0 : 2; plotWorld.TERRAIN = 0; plotWorld.saveConfiguration(config.getConfigurationSection(path)); plotWorld.loadDefaultConfiguration(config.getConfigurationSection(path)); - - try - { + + try { config.save(configFile); - } - catch (final IOException e) - { + } catch (final IOException e) { e.printStackTrace(); } - if (((plotWorld.TYPE == 2) && !Settings.ENABLE_CLUSTERS) || !(plotManager instanceof SquarePlotManager)) - { + if (((plotWorld.TYPE == 2) && !Settings.ENABLE_CLUSTERS) || !(plotManager instanceof SquarePlotManager)) { log("&c[ERROR] World '" + world + "' in settings.yml is not using PlotSquared generator! Please set the generator correctly or delete the world from the 'settings.yml'!"); return; } @@ -1512,22 +1272,17 @@ public class PS log(C.PREFIX.s() + "&3 - manager: &7" + plotManager.getClass().getName()); log(C.PREFIX.s() + "&3 - | terrain: &7" + plotWorld.TERRAIN); log(C.PREFIX.s() + "&3 - | type: &7" + plotWorld.TYPE); - + addPlotWorld(world, plotWorld, plotManager); - if (plotWorld.TYPE == 2) - { - if (ClusterManager.getClusters(world).size() > 0) - { - for (final PlotCluster cluster : ClusterManager.getClusters(world)) - { + if (plotWorld.TYPE == 2) { + if (ClusterManager.getClusters(world).size() > 0) { + for (final PlotCluster cluster : ClusterManager.getClusters(world)) { log(C.PREFIX.s() + "&3 - &7| cluster: " + cluster); generator.augment(cluster, plotWorld); // new AugmentedPopulator(world, generator, cluster, plotWorld.TERRAIN == 2, plotWorld.TERRAIN != 2); } } - } - else if (plotWorld.TYPE == 1) - { + } else if (plotWorld.TYPE == 1) { generator.augment(null, plotWorld); // new AugmentedPopulator(world, gen_class, null, plotWorld.TERRAIN == 2, plotWorld.TERRAIN != 2); } @@ -1535,7 +1290,7 @@ public class PS } } } - + /** * Setup the configuration for a plot world based on world arguments
* e.g. /mv create normal -g PlotSquared: @@ -1543,10 +1298,8 @@ public class PS * @param args The arguments * @return boolean | if valid arguments were provided */ - public boolean setupPlotWorld(final String world, final String args) - { - if ((args != null) && (args.length() > 0)) - { + public boolean setupPlotWorld(final String world, final String args) { + if ((args != null) && (args.length() > 0)) { // save configuration final String[] split = args.split(","); final HybridPlotWorld plotworld = new HybridPlotWorld(world); @@ -1557,83 +1310,67 @@ public class PS final PlotBlock[] main = ClassicPlotWorld.MAIN_BLOCK_DEFAULT; final PlotBlock wall = ClassicPlotWorld.WALL_FILLING_DEFAULT; final PlotBlock border = ClassicPlotWorld.WALL_BLOCK_DEFAULT; - for (final String element : split) - { + for (final String element : split) { final String[] pair = element.split("="); - if (pair.length != 2) - { + if (pair.length != 2) { log("&cNo value provided for: &7" + element); return false; } final String key = pair[0].toLowerCase(); final String value = pair[1]; - try - { - switch (key) - { + try { + switch (key) { case "s": - case "size": - { + case "size": { SquarePlotWorld.PLOT_WIDTH_DEFAULT = Configuration.INTEGER.parseString(value).shortValue(); break; } case "g": - case "gap": - { + case "gap": { SquarePlotWorld.ROAD_WIDTH_DEFAULT = Configuration.INTEGER.parseString(value).shortValue(); break; } case "h": - case "height": - { + case "height": { ClassicPlotWorld.PLOT_HEIGHT_DEFAULT = Configuration.INTEGER.parseString(value); ClassicPlotWorld.ROAD_HEIGHT_DEFAULT = Configuration.INTEGER.parseString(value); ClassicPlotWorld.WALL_HEIGHT_DEFAULT = Configuration.INTEGER.parseString(value); break; } case "f": - case "floor": - { + case "floor": { ClassicPlotWorld.TOP_BLOCK_DEFAULT = Configuration.BLOCKLIST.parseString(value); break; } case "m": - case "main": - { + case "main": { ClassicPlotWorld.MAIN_BLOCK_DEFAULT = Configuration.BLOCKLIST.parseString(value); break; } case "w": - case "wall": - { + case "wall": { ClassicPlotWorld.WALL_FILLING_DEFAULT = Configuration.BLOCK.parseString(value); break; } case "b": - case "border": - { + case "border": { ClassicPlotWorld.WALL_BLOCK_DEFAULT = Configuration.BLOCK.parseString(value); break; } - default: - { + default: { log("&cKey not found: &7" + element); return false; } } - } - catch (final Exception e) - { + } catch (final Exception e) { e.printStackTrace(); log("&cInvalid value: &7" + value + " in arg " + element); return false; } } - try - { + try { final String root = "worlds." + world; - if (!config.contains(root)) - { + if (!config.contains(root)) { config.createSection(root); } plotworld.saveConfiguration(config.getConfigurationSection(root)); @@ -1646,67 +1383,56 @@ public class PS ClassicPlotWorld.WALL_FILLING_DEFAULT = wall; SquarePlotWorld.PLOT_WIDTH_DEFAULT = width; SquarePlotWorld.ROAD_WIDTH_DEFAULT = gap; - } - catch (final Exception e) - { + } catch (final Exception e) { e.printStackTrace(); } } return true; } - - public boolean canUpdate(final String current, final String other) - { + + public boolean canUpdate(final String current, final String other) { final String s1 = normalisedVersion(current); final String s2 = normalisedVersion(other); final int cmp = s1.compareTo(s2); return cmp < 0; } - - public String normalisedVersion(final String version) - { + + public String normalisedVersion(final String version) { return normalisedVersion(version, ".", 4); } - - public String normalisedVersion(final String version, final String sep, final int maxWidth) - { + + public String normalisedVersion(final String version, final String sep, final int maxWidth) { final String[] split = Pattern.compile(sep, Pattern.LITERAL).split(version); final StringBuilder sb = new StringBuilder(); - for (final String s : split) - { + for (final String s : split) { sb.append(String.format("%" + maxWidth + 's', s)); } return sb.toString(); } - + /** * Gets the default update URL, or null if the plugin is up to date * @return */ - public URL getUpdate() - { + public URL getUpdate() { final String pom = "https://raw.githubusercontent.com/IntellectualSites/PlotSquared/master/pom.xml"; String dl = "https://raw.githubusercontent.com/IntellectualSites/PlotSquared/master/target/PlotSquared-${PLATFORM}.jar"; final String agent = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/13.0.782.112 Safari/535.1"; - try - { + try { final URL page = new URL(pom); final URLConnection con = page.openConnection(); con.addRequestProperty("User-Agent", agent); final BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream())); String line = null; - while ((line = in.readLine()) != null) - { + while ((line = in.readLine()) != null) { line = line.trim(); - if (line.startsWith("")) - { + if (line.startsWith("")) { line = line.replaceAll("[^\\d.]", ""); break; } } in.close(); - if (!canUpdate(config.getString("version"), line)) - { + if (!canUpdate(config.getString("version"), line)) { PS.debug("&7PlotSquared is already up to date!"); return null; } @@ -1715,21 +1441,19 @@ public class PS log("&8 - &3Use: &7/plot update"); log("&8 - &3Or: &7" + dl); return new URL(dl); - } - catch (final Exception e) - { + } catch (final Exception e) { e.printStackTrace(); log("&dCould not check for updates (0)"); log("&7 - Manually check for updates: " + pom); } return null; } - - public boolean update(final PlotPlayer sender, final URL url) - { - if (url == null) { return false; } - try - { + + public boolean update(final PlotPlayer sender, final URL url) { + if (url == null) { + return false; + } + try { final String name = FILE.getName(); final File newJar = new File("plugins/update/" + name); MainUtil.sendMessage(sender, "$1Downloading from provided URL: &7" + url); @@ -1738,8 +1462,7 @@ public class PS con.addRequestProperty("User-Agent", "Mozilla/4.0"); final InputStream stream = con.getInputStream(); final File parent = newJar.getParentFile(); - if (!parent.exists()) - { + if (!parent.exists()) { parent.mkdirs(); } MainUtil.sendMessage(sender, "$2 - Output: " + newJar); @@ -1748,9 +1471,7 @@ public class PS stream.close(); MainUtil.sendMessage(sender, "$1The update will take effect when the server is restarted next"); return true; - } - catch (final Exception e) - { + } catch (final Exception e) { MainUtil.sendMessage(sender, "Failed to update PlotSquared"); MainUtil.sendMessage(sender, " - Please update manually"); log("============ Stacktrace ============"); @@ -1759,55 +1480,47 @@ public class PS } return false; } - + /** * Get the database connection * @return The database connection */ - public Connection getConnection() - { + public Connection getConnection() { return connection; } - + /** * Copy a file from inside the jar to a location * @param file Name of the file inside PlotSquared.jar * @param folder The output location relative to /plugins/PlotSquared/ */ - public void copyFile(final String file, final String folder) - { - try - { + public void copyFile(final String file, final String folder) { + try { final File output = IMP.getDirectory(); - if (!output.exists()) - { + if (!output.exists()) { output.mkdirs(); } final File newFile = new File((output + File.separator + folder + File.separator + file)); - if (newFile.exists()) { return; } + if (newFile.exists()) { + return; + } final InputStream stream = IMP.getClass().getResourceAsStream(file); final byte[] buffer = new byte[2048]; - if (stream == null) - { + if (stream == null) { final ZipInputStream zis = new ZipInputStream(new FileInputStream(FILE)); ZipEntry ze = zis.getNextEntry(); - while (ze != null) - { + while (ze != null) { final String name = ze.getName(); - if (name.equals(file)) - { + if (name.equals(file)) { new File(newFile.getParent()).mkdirs(); final FileOutputStream fos = new FileOutputStream(newFile); int len; - while ((len = zis.read(buffer)) > 0) - { + while ((len = zis.read(buffer)) > 0) { fos.write(buffer, 0, len); } fos.close(); ze = null; - } - else - { + } else { ze = zis.getNextEntry(); } } @@ -1818,68 +1531,52 @@ public class PS newFile.createNewFile(); final FileOutputStream fos = new FileOutputStream(newFile); int len; - while ((len = stream.read(buffer)) > 0) - { + while ((len = stream.read(buffer)) > 0) { fos.write(buffer, 0, len); } fos.close(); stream.close(); - } - catch (final Exception e) - { + } catch (final Exception e) { e.printStackTrace(); log("&cCould not save " + file); } } - + /** * Close the database connection */ - public void disable() - { - try - { + public void disable() { + try { TASK = null; database = null; // Validate that all data in the db is correct DBFunc.validatePlots(getPlotsRaw()); - + // Close the connection DBFunc.close(); UUIDHandler.handleShutdown(); - } - catch (final NullPointerException e) - { + } catch (final NullPointerException e) { log("&cCould not close database connection!"); } } - + /** * Setup the database connection */ - public void setupDatabase() - { - try - { - if (Settings.DB.USE_MONGO) - { + public void setupDatabase() { + try { + if (Settings.DB.USE_MONGO) { log(C.PREFIX.s() + "MongoDB is not yet implemented"); log(C.PREFIX + "&cNo storage type is set!"); IMP.disable(); return; } - if (DBFunc.dbManager == null) - { - if (Settings.DB.USE_MYSQL) - { + if (DBFunc.dbManager == null) { + if (Settings.DB.USE_MYSQL) { database = new MySQL(Settings.DB.HOST_NAME, Settings.DB.PORT, Settings.DB.DATABASE, Settings.DB.USER, Settings.DB.PASSWORD); - } - else if (Settings.DB.USE_SQLITE) - { + } else if (Settings.DB.USE_SQLITE) { database = new SQLite(IMP.getDirectory() + File.separator + Settings.DB.SQLITE_DB + ".db"); - } - else - { + } else { log(C.PREFIX + "&cNo storage type is set!"); IMP.disable(); return; @@ -1887,24 +1584,16 @@ public class PS } DBFunc.dbManager = new SQLManager(database, Settings.DB.PREFIX, false); plots = DBFunc.getPlots(); - if (Settings.ENABLE_CLUSTERS) - { + if (Settings.ENABLE_CLUSTERS) { ClusterManager.clusters = DBFunc.getClusters(); } - } - catch (final Exception e) - { + } catch (final Exception e) { log(C.PREFIX.s() + "&cFailed to open DATABASE connection. The plugin will disable itself."); - if (Settings.DB.USE_MONGO) - { + if (Settings.DB.USE_MONGO) { log("$4MONGO"); - } - else if (Settings.DB.USE_MYSQL) - { + } else if (Settings.DB.USE_MYSQL) { log("$4MYSQL"); - } - else if (Settings.DB.USE_SQLITE) - { + } else if (Settings.DB.USE_SQLITE) { log("$4SQLITE"); } log("&d==== Here is an ugly stacktrace, if you are interested in those things ==="); @@ -1915,40 +1604,33 @@ public class PS return; } } - + /** * Setup the default flags for PlotSquared
* - Create the flags * - Register with FlagManager and parse raw flag values */ - public void setupDefaultFlags() - { + public void setupDefaultFlags() { final List booleanFlags = Arrays.asList("notify-enter", "notify-leave", "item-drop", "invincible", "instabreak", "drop-protection", "forcefield", "titles", "pve", "pvp", "no-worldedit", "redstone", "keep"); final List intervalFlags = Arrays.asList("feed", "heal"); final List stringFlags = Arrays.asList("greeting", "farewell"); final List intFlags = Arrays.asList("entity-cap", "mob-cap", "animal-cap", "hostile-cap", "vehicle-cap", "music"); - for (final String flag : stringFlags) - { + for (final String flag : stringFlags) { FlagManager.addFlag(new AbstractFlag(flag)); } - for (final String flag : intervalFlags) - { + for (final String flag : intervalFlags) { FlagManager.addFlag(new AbstractFlag(flag, new FlagValue.IntervalValue())); } - for (final String flag : booleanFlags) - { + for (final String flag : booleanFlags) { FlagManager.addFlag(new AbstractFlag(flag, new FlagValue.BooleanValue())); } - for (final String flag : intFlags) - { + for (final String flag : intFlags) { FlagManager.addFlag(new AbstractFlag(flag, new FlagValue.UnsignedIntegerValue())); } - FlagManager.addFlag(new AbstractFlag("cluster") - { + FlagManager.addFlag(new AbstractFlag("cluster") { @Override - public Object parseValueRaw(final String value) - { + public Object parseValueRaw(final String value) { final String[] split = value.split(";"); return ClusterManager.getCluster(split[0], split[1]); } @@ -1981,14 +1663,11 @@ public class PS FlagManager.addFlag(new AbstractFlag("use", new FlagValue.PlotBlockListValue())); FlagManager.addFlag(new AbstractFlag("blocked-cmds", new FlagValue.StringListValue())); FlagManager.addFlag(new AbstractFlag("ice-met", new FlagValue.BooleanValue())); - FlagManager.addFlag(new AbstractFlag("gamemode") - { - + FlagManager.addFlag(new AbstractFlag("gamemode") { + @Override - public PlotGamemode parseValueRaw(final String value) - { - switch (value.toLowerCase()) - { + public PlotGamemode parseValueRaw(final String value) { + switch (value.toLowerCase()) { case "survival": case "s": case "0": @@ -2008,23 +1687,19 @@ public class PS return null; } } - + @Override - public String getValueDesc() - { + public String getValueDesc() { return "Flag value must be a gamemode: 'creative' , 'survival', 'adventure' or 'spectator'"; } }); FlagManager.addFlag(new AbstractFlag("price", new FlagValue.UnsignedDoubleValue())); FlagManager.addFlag(new AbstractFlag("time", new FlagValue.LongValue())); - FlagManager.addFlag(new AbstractFlag("weather") - { - + FlagManager.addFlag(new AbstractFlag("weather") { + @Override - public PlotWeather parseValueRaw(final String value) - { - switch (value.toLowerCase()) - { + public PlotWeather parseValueRaw(final String value) { + switch (value.toLowerCase()) { case "rain": case "storm": case "on": @@ -2039,56 +1714,54 @@ public class PS return null; } } - + @Override - public String getValueDesc() - { + public String getValueDesc() { return "Flag value must be weather type: 'clear' or 'rain'"; } }); FlagManager.addFlag(new AbstractFlag("description", new FlagValue.StringValue()), true); } - + /** * Setup the default configuration (settings.yml) */ - public void setupConfig() - { + public void setupConfig() { LAST_VERSION = config.getString("version"); config.set("version", StringMan.join(VERSION, ".")); config.set("platform", PLATFORM); - + final Map options = new HashMap<>(); // Command confirmation options.put("confirmation.clear", Settings.CONFIRM_CLEAR); options.put("confirmation.delete", Settings.CONFIRM_DELETE); options.put("confirmation.unlink", Settings.CONFIRM_UNLINK); - + // Protection options.put("protection.redstone.disable-offline", Settings.REDSTONE_DISABLER); options.put("protection.redstone.disable-unoccupied", Settings.REDSTONE_DISABLER_UNOCCUPIED); options.put("protection.tnt-listener.enabled", Settings.TNT_LISTENER); options.put("protection.piston.falling-blocks", Settings.PISTON_FALLING_BLOCK_CHECK); - + // Clusters options.put("clusters.enabled", Settings.ENABLE_CLUSTERS); - + // PlotMe options.put("plotme-alias", Settings.USE_PLOTME_ALIAS); options.put("plotme-convert.enabled", Settings.CONVERT_PLOTME); options.put("plotme-convert.cache-uuids", Settings.CACHE_PLOTME); - + // UUID options.put("uuid.use_sqluuidhandler", Settings.USE_SQLUUIDHANDLER); options.put("UUID.offline", Settings.OFFLINE_MODE); options.put("UUID.force-lowercase", Settings.UUID_LOWERCASE); options.put("uuid.read-from-disk", Settings.UUID_FROM_DISK); - + // Mob stuff options.put("kill_road_vehicles", Settings.KILL_ROAD_VEHICLES); options.put("kill_road_mobs", Settings.KILL_ROAD_MOBS_DEFAULT); options.put("mob_pathfinding", Settings.MOB_PATHFINDING_DEFAULT); - + // Clearing + Expiry options.put("clear.fastmode", Settings.ENABLE_CLUSTERS); options.put("clear.on.ban", false); @@ -2105,11 +1778,10 @@ public class PS options.put("clear.auto.calibration.data_sd", 1); options.put("clear.auto.calibration.air_sd", 0); options.put("clear.auto.calibration.variety_sd", 1); - + final int keep = config.getInt("clear.keep-if-modified"); final int ignore = config.getInt("clear.ignore-if-modified"); - if ((keep > 0) || (ignore > 0)) - { + if ((keep > 0) || (ignore > 0)) { options.put("clear.auto.threshold", 1); log("&cIMPORTANT MESSAGE ABOUT THIS UPDATE!!!!!!!!!!!!!!!!!!!!!!!!!!!!"); log("&cSorry for all the exclamation marks, but this could be important."); @@ -2120,39 +1792,37 @@ public class 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"); log("&cMore information:&7 https://github.com/IntellectualSites/PlotSquared/wiki/Plot-analysis:"); - } - else - { + } else { options.put("clear.auto.threshold", Settings.CLEAR_THRESHOLD); } config.set("clear.keep-if-modified", null); config.set("clear.ignore-if-modified", null); - + // Done options.put("approval.ratings.require-done", Settings.REQUIRE_DONE); options.put("approval.done.counts-towards-limit", Settings.DONE_COUNTS_TOWARDS_LIMIT); options.put("approval.done.restrict-building", Settings.DONE_RESTRICTS_BUILDING); options.put("approval.done.required-for-download", Settings.DOWNLOAD_REQUIRES_DONE); - + // Schematics options.put("schematics.save_path", Settings.SCHEMATIC_SAVE_PATH); options.put("bo3.save_path", Settings.BO3_SAVE_PATH); - + // Web options.put("web.url", Settings.WEB_URL); options.put("web.server-ip", Settings.WEB_IP); - + // Caching options.put("cache.permissions", Settings.PERMISSION_CACHING); options.put("cache.ratings", Settings.CACHE_RATINGS); - + // Titles options.put("titles", Settings.TITLES); - + // Teleportation options.put("teleport.on_login", Settings.TELEPORT_ON_LOGIN); options.put("teleport.delay", 0); - + // WorldEdit options.put("worldedit.require-selection-in-mask", Settings.REQUIRE_SELECTION); options.put("worldedit.queue-commands", Settings.QUEUE_COMMANDS); @@ -2160,7 +1830,7 @@ public class PS options.put("worldedit.max-volume", Settings.WE_MAX_VOLUME); options.put("worldedit.max-iterations", Settings.WE_MAX_ITERATIONS); options.put("worldedit.blacklist", Arrays.asList("cs", ".s", "restore", "snapshot", "delchunks", "listchunks")); - + // Chunk processor options.put("chunk-processor.enabled", Settings.CHUNK_PROCESSOR); options.put("chunk-processor.auto-unload", Settings.CHUNK_PROCESSOR_GC); @@ -2169,61 +1839,59 @@ public class PS options.put("chunk-processor.max-blockstates", Settings.CHUNK_PROCESSOR_MAX_BLOCKSTATES); options.put("chunk-processor.max-entities", Settings.CHUNK_PROCESSOR_MAX_ENTITIES); options.put("chunk-processor.disable-physics", Settings.CHUNK_PROCESSOR_DISABLE_PHYSICS); - + // Comments options.put("comments.notifications.enabled", Settings.COMMENT_NOTIFICATIONS); - + // Plot limits options.put("global_limit", Settings.GLOBAL_LIMIT); options.put("max_plots", Settings.MAX_PLOTS); options.put("claim.max-auto-area", Settings.MAX_AUTO_SIZE); - + // Misc options.put("console.color", Settings.CONSOLE_COLOR); options.put("chat.fancy", Settings.FANCY_CHAT); options.put("metrics", true); options.put("debug", true); options.put("update-notifications", true); - - for (final Entry node : options.entrySet()) - { - if (!config.contains(node.getKey())) - { + + for (final Entry node : options.entrySet()) { + if (!config.contains(node.getKey())) { config.set(node.getKey(), node.getValue()); } } - + // Command confirmation Settings.CONFIRM_CLEAR = config.getBoolean("confirmation.clear"); Settings.CONFIRM_DELETE = config.getBoolean("confirmation.delete"); Settings.CONFIRM_UNLINK = config.getBoolean("confirmation.unlink"); - + // Protection Settings.REDSTONE_DISABLER = config.getBoolean("protection.redstone.disable-offline"); Settings.REDSTONE_DISABLER_UNOCCUPIED = config.getBoolean("protection.redstone.disable-unoccupied"); - + Settings.TNT_LISTENER = config.getBoolean("protection.tnt-listener.enabled"); Settings.PISTON_FALLING_BLOCK_CHECK = config.getBoolean("protection.piston.falling-blocks"); - + // Clusters Settings.ENABLE_CLUSTERS = config.getBoolean("clusters.enabled"); - + // PlotMe Settings.USE_PLOTME_ALIAS = config.getBoolean("plotme-alias"); Settings.CONVERT_PLOTME = config.getBoolean("plotme-convert.enabled"); Settings.CACHE_PLOTME = config.getBoolean("plotme-convert.cache-uuids"); - + // UUID Settings.USE_SQLUUIDHANDLER = config.getBoolean("uuid.use_sqluuidhandler"); Settings.OFFLINE_MODE = config.getBoolean("UUID.offline"); Settings.UUID_LOWERCASE = Settings.OFFLINE_MODE && config.getBoolean("UUID.force-lowercase"); Settings.UUID_FROM_DISK = config.getBoolean("uuid.read-from-disk"); - + // Mob stuff Settings.KILL_ROAD_MOBS = config.getBoolean("kill_road_mobs"); Settings.KILL_ROAD_VEHICLES = config.getBoolean("kill_road_vehicles"); Settings.MOB_PATHFINDING = config.getBoolean("mob_pathfinding"); - + // Clearing + Expiry Settings.FAST_CLEAR = config.getBoolean("clear.fastmode"); Settings.DELETE_PLOTS_ON_BAN = config.getBoolean("clear.on.ban"); @@ -2231,7 +1899,7 @@ public class PS Settings.CLEAR_THRESHOLD = config.getInt("clear.auto.threshold"); Settings.AUTO_CLEAR = config.getBoolean("clear.auto.enabled"); Settings.CLEAR_INTERVAL = config.getInt("clear.auto.clear-interval-seconds"); - + // Clearing modifiers PlotAnalysis.MODIFIERS.changes = config.getInt("clear.auto.calibration.changes"); PlotAnalysis.MODIFIERS.faces = config.getInt("clear.auto.calibration.faces"); @@ -2243,35 +1911,35 @@ public class PS PlotAnalysis.MODIFIERS.data_sd = config.getInt("clear.auto.calibration.data_sd"); PlotAnalysis.MODIFIERS.air_sd = config.getInt("clear.auto.calibration.air_sd"); PlotAnalysis.MODIFIERS.variety_sd = config.getInt("clear.auto.calibration.variety_sd"); - + // Done Settings.REQUIRE_DONE = config.getBoolean("approval.ratings.require-done"); Settings.DONE_COUNTS_TOWARDS_LIMIT = config.getBoolean("approval.done.counts-towards-limit"); Settings.DONE_RESTRICTS_BUILDING = config.getBoolean("approval.done.restrict-building"); Settings.DOWNLOAD_REQUIRES_DONE = config.getBoolean("approval.done.required-for-download"); - + // Schematics Settings.SCHEMATIC_SAVE_PATH = config.getString("schematics.save_path"); Settings.BO3_SAVE_PATH = config.getString("bo3.save_path"); - + // Web Settings.WEB_URL = config.getString("web.url"); Settings.WEB_IP = config.getString("web.server-ip"); - + // Caching Settings.PERMISSION_CACHING = config.getBoolean("cache.permissions"); Settings.CACHE_RATINGS = config.getBoolean("cache.ratings"); - + // Rating system Settings.RATING_CATEGORIES = config.getStringList("ratings.categories"); - + // Titles Settings.TITLES = config.getBoolean("titles"); - + // Teleportation Settings.TELEPORT_DELAY = config.getInt("teleport.delay"); Settings.TELEPORT_ON_LOGIN = config.getBoolean("teleport.on_login"); - + // WorldEdit Settings.QUEUE_COMMANDS = config.getBoolean("worldedit.queue-commands"); Settings.REQUIRE_SELECTION = config.getBoolean("worldedit.require-selection-in-mask"); @@ -2279,7 +1947,7 @@ public class PS Settings.WE_MAX_VOLUME = config.getLong("worldedit.max-volume"); Settings.WE_MAX_ITERATIONS = config.getLong("worldedit.max-iterations"); Settings.WE_BLACKLIST = config.getStringList("worldedit.blacklist"); - + // Chunk processor Settings.CHUNK_PROCESSOR = config.getBoolean("chunk-processor.enabled"); Settings.CHUNK_PROCESSOR_GC = config.getBoolean("chunk-processor.auto-unload"); @@ -2288,121 +1956,96 @@ public class PS Settings.CHUNK_PROCESSOR_MAX_BLOCKSTATES = config.getInt("chunk-processor.max-blockstates"); Settings.CHUNK_PROCESSOR_MAX_ENTITIES = config.getInt("chunk-processor.max-entities"); Settings.CHUNK_PROCESSOR_DISABLE_PHYSICS = config.getBoolean("chunk-processor.disable-physics"); - + // Comments Settings.COMMENT_NOTIFICATIONS = config.getBoolean("comments.notifications.enabled"); - + // Plot limits Settings.MAX_AUTO_SIZE = config.getInt("claim.max-auto-area"); Settings.MAX_PLOTS = 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."); Settings.MAX_PLOTS = 32767; } Settings.GLOBAL_LIMIT = config.getBoolean("global_limit"); - + // Misc Settings.DEBUG = config.getBoolean("debug"); - if (Settings.DEBUG) - { + if (Settings.DEBUG) { log(C.PREFIX.s() + "&6Debug Mode Enabled (Default). Edit the config to turn this off."); } Settings.CONSOLE_COLOR = config.getBoolean("console.color"); - if (!config.getBoolean("chat.fancy") || !checkVersion(IMP.getServerVersion(), 1, 8, 0)) - { + if (!config.getBoolean("chat.fancy") || !checkVersion(IMP.getServerVersion(), 1, 8, 0)) { Settings.FANCY_CHAT = false; } Settings.METRICS = config.getBoolean("metrics"); } - + /** * Setup all configuration files
* - Config: settings.yml
* - Storage: storage.yml
* - Translation: PlotSquared.use_THIS.yml, style.yml
*/ - public void setupConfigs() - { + public void setupConfigs() { final File folder = new File(IMP.getDirectory() + File.separator + "config"); - if (!folder.exists() && !folder.mkdirs()) - { + if (!folder.exists() && !folder.mkdirs()) { log(C.PREFIX.s() + "&cFailed to create the /plugins/config folder. Please create it manually."); } - try - { + try { styleFile = new File(IMP.getDirectory() + File.separator + "translations" + File.separator + "style.yml"); - if (!styleFile.exists()) - { - if (!styleFile.getParentFile().exists()) - { + if (!styleFile.exists()) { + if (!styleFile.getParentFile().exists()) { styleFile.getParentFile().mkdirs(); } - if (!styleFile.createNewFile()) - { + if (!styleFile.createNewFile()) { log("Could not create the style file, please create \"translations/style.yml\" manually"); } } style = YamlConfiguration.loadConfiguration(styleFile); setupStyle(); - } - catch (final Exception err) - { + } catch (final Exception err) { err.printStackTrace(); log("failed to save style.yml"); } - try - { + try { configFile = new File(IMP.getDirectory() + File.separator + "config" + File.separator + "settings.yml"); - if (!configFile.exists()) - { - if (!configFile.createNewFile()) - { + if (!configFile.exists()) { + if (!configFile.createNewFile()) { log("Could not create the settings file, please create \"settings.yml\" manually."); } } config = YamlConfiguration.loadConfiguration(configFile); setupConfig(); - } - catch (final Exception err_trans) - { + } catch (final Exception err_trans) { log("Failed to save settings.yml"); } - try - { + try { storageFile = new File(IMP.getDirectory() + File.separator + "config" + File.separator + "storage.yml"); - if (!storageFile.exists()) - { - if (!storageFile.createNewFile()) - { + if (!storageFile.exists()) { + if (!storageFile.createNewFile()) { log("Could not the storage settings file, please create \"storage.yml\" manually."); } } storage = YamlConfiguration.loadConfiguration(storageFile); setupStorage(); - } - catch (final Exception err_trans) - { + } catch (final Exception err_trans) { log("Failed to save storage.yml"); } - try - { + try { style.save(styleFile); config.save(configFile); storage.save(storageFile); - } - catch (final IOException e) - { + } catch (final IOException e) { log("Configuration file saving failed"); e.printStackTrace(); } } - + /** * Setup the storage file (load + save missing nodes) */ - private void setupStorage() - { + private void setupStorage() { storage.set("version", StringMan.join(VERSION, ".")); final Map options = new HashMap<>(); options.put("mysql.use", false); @@ -2414,10 +2057,8 @@ public class PS options.put("mysql.password", "password"); options.put("mysql.database", "plot_db"); options.put("prefix", ""); - for (final Entry node : options.entrySet()) - { - if (!storage.contains(node.getKey())) - { + for (final Entry node : options.entrySet()) { + if (!storage.contains(node.getKey())) { storage.set(node.getKey(), node.getValue()); } } @@ -2435,14 +2076,12 @@ public class PS Settings.AUTO_CLEAR_DAYS = config.getInt("clear.auto.days"); Settings.DELETE_PLOTS_ON_BAN = config.getBoolean("clear.on.ban"); } - + /** * Show startup debug information */ - public void showDebug() - { - if (Settings.DEBUG) - { + public void showDebug() { + if (Settings.DEBUG) { final Map settings = new HashMap<>(); settings.put("Kill Road Mobs", "" + Settings.KILL_ROAD_MOBS); settings.put("Use Metrics", "" + Settings.METRICS); @@ -2454,57 +2093,50 @@ public class PS settings.put("Auto Clear Days", "" + Settings.AUTO_CLEAR_DAYS); settings.put("Schematics Save Path", "" + Settings.SCHEMATIC_SAVE_PATH); settings.put("API Location", "" + Settings.API_URL); - for (final Entry setting : settings.entrySet()) - { + for (final Entry setting : settings.entrySet()) { log(C.PREFIX.s() + String.format("&cKey: &6%s&c, Value: &6%s", setting.getKey(), setting.getValue())); } } } - + /** * Setup the style.yml file */ - private void setupStyle() - { + private void setupStyle() { style.set("version", StringMan.join(VERSION, ".")); final Map o = new HashMap<>(); o.put("color.1", "6"); o.put("color.2", "7"); o.put("color.3", "8"); o.put("color.4", "3"); - if (!style.contains("color")) - { - for (final Entry node : o.entrySet()) - { + if (!style.contains("color")) { + for (final Entry node : o.entrySet()) { style.set(node.getKey(), node.getValue()); } } } - + /** * Get the java version * @return Java version as a double */ - public double getJavaVersion() - { + public double getJavaVersion() { return Double.parseDouble(System.getProperty("java.specification.version")); } - + /** * Get the list of plot world names * @return Set of world names (String) */ - public Set getPlotWorlds() - { + public Set getPlotWorlds() { return plotworlds.keySet(); } - + /** * Get a list of PlotWorld objects * @return Collection of PlotWorld objects */ - public Collection getPlotWorldObjects() - { + public Collection getPlotWorldObjects() { return plotworlds.values(); } } diff --git a/src/main/java/com/intellectualcrafters/plot/api/PlotAPI.java b/src/main/java/com/intellectualcrafters/plot/api/PlotAPI.java index 1acaf78a3..c1bb37e77 100644 --- a/src/main/java/com/intellectualcrafters/plot/api/PlotAPI.java +++ b/src/main/java/com/intellectualcrafters/plot/api/PlotAPI.java @@ -61,9 +61,8 @@ import com.plotsquared.bukkit.util.BukkitUtil; * */ -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 * plugin, without limitations. @@ -71,14 +70,13 @@ public class PlotAPI */ @Deprecated public static final String ADMIN_PERMISSION = C.PERMISSION_ADMIN.s(); - + /** * @deprecated Use new PlotAPI() instead */ @Deprecated - public PlotAPI(final JavaPlugin plugin) - {} - + public PlotAPI(final JavaPlugin plugin) {} + /** * @param plugin Plugin used to access this method * @@ -94,9 +92,8 @@ public class PlotAPI * */ @Deprecated - public PlotAPI() - {} - + public PlotAPI() {} + /** * Get all plots * @@ -104,11 +101,10 @@ public class PlotAPI * * @see com.intellectualcrafters.plot.PS#getPlots() */ - public Set getAllPlots() - { + public Set getAllPlots() { return PS.get().getPlots(); } - + /** * Return all plots for a player * @@ -116,11 +112,10 @@ public class PlotAPI * * @return all plots that a player owns */ - public Set getPlayerPlots(final Player player) - { + public Set getPlayerPlots(final Player player) { return PS.get().getPlots(BukkitUtil.getPlayer(player)); } - + /** * Add a plot world * @@ -131,31 +126,28 @@ public class PlotAPI * @see com.intellectualcrafters.plot.PS#addPlotWorld(String, com.intellectualcrafters.plot.object.PlotWorld, * com.intellectualcrafters.plot.object.PlotManager) */ - public void addPlotWorld(final String world, final PlotWorld plotWorld, final PlotManager manager) - { + public void addPlotWorld(final String world, final PlotWorld plotWorld, final PlotManager manager) { PS.get().addPlotWorld(world, plotWorld, manager); } - + /** * @return main configuration * * @see com.intellectualcrafters.plot.PS#config */ - public YamlConfiguration getConfig() - { + public YamlConfiguration getConfig() { return PS.get().config; } - + /** * @return storage configuration * * @see com.intellectualcrafters.plot.PS#storage */ - public YamlConfiguration getStorage() - { + public YamlConfiguration getStorage() { return PS.get().storage; } - + /** * Get the main class for this plugin
- Contains a lot of fields and methods - not very well organized
* Only use this if you really need it @@ -164,11 +156,10 @@ public class PlotAPI * * @see com.intellectualcrafters.plot.PS */ - public PS getMain() - { + public PS getMain() { return PS.get(); } - + /** * ChunkManager class contains several useful methods
* - Chunk deletion
@@ -181,11 +172,10 @@ public class PlotAPI * * @see com.intellectualcrafters.plot.util.ChunkManager */ - public ChunkManager getChunkManager() - { + public ChunkManager getChunkManager() { return ChunkManager.manager; } - + /** * BlockManager class contains useful methods relating to blocks. * @@ -193,11 +183,10 @@ public class PlotAPI * * @see com.intellectualcrafters.plot.util.BlockManager */ - public BlockManager getBlockManager() - { + public BlockManager getBlockManager() { return BlockManager.manager; } - + /** * BukkitSetBlockManager class contains useful methods relating to bukkit blocks. * @@ -205,11 +194,10 @@ public class PlotAPI * * @see com.plotsquared.bukkit.util.BukkitSetBlockManager */ - public BukkitSetBlockManager getBukkitBlockManager() - { + public BukkitSetBlockManager getBukkitBlockManager() { return BukkitSetBlockManager.setBlockManager; } - + /** * UUIDWrapper class has basic methods for getting UUIDS (it's recommended to use the UUIDHandler class instead) * @@ -217,11 +205,10 @@ public class PlotAPI * * @see com.intellectualcrafters.plot.uuid.UUIDWrapper */ - public UUIDWrapper getUUIDWrapper() - { + public UUIDWrapper getUUIDWrapper() { return UUIDHandler.getUUIDWrapper(); } - + /** * Do not use this. Instead use FlagManager.[method] in your code. * - Flag related stuff @@ -231,11 +218,10 @@ public class PlotAPI * @see com.intellectualcrafters.plot.flag.FlagManager */ @Deprecated - public FlagManager getFlagManager() - { + public FlagManager getFlagManager() { return new FlagManager(); } - + /** * Do not use this. Instead use ClusterManager.[method] in your code. * - Plot cluster related stuff @@ -245,11 +231,10 @@ public class PlotAPI * @see com.intellectualcrafters.plot.util.ClusterManager */ @Deprecated - public ClusterManager getClusterManager() - { + public ClusterManager getClusterManager() { return new ClusterManager(); } - + /** * Do not use this. Instead use MainUtil.[method] in your code. * - Basic plot management stuff @@ -259,11 +244,10 @@ public class PlotAPI * @see com.intellectualcrafters.plot.util.MainUtil */ @Deprecated - public MainUtil getMainUtil() - { + public MainUtil getMainUtil() { return new MainUtil(); } - + /** * Do not use this. Instead use C.PERMISSION_[method] in your code. * - Basic permission management stuff @@ -273,19 +257,16 @@ public class PlotAPI * @see com.intellectualcrafters.plot.util.Permissions */ @Deprecated - public String[] getPermissions() - { + public String[] getPermissions() { final ArrayList perms = new ArrayList<>(); - for (final C c : C.values()) - { - if (c.getCat().equals("static.permissions")) - { + for (final C c : C.values()) { + if (c.getCat().equals("static.permissions")) { perms.add(c.s()); } } return perms.toArray(new String[0]); } - + /** * SchematicHandler class contains methods related to pasting, reading and writing schematics * @@ -293,11 +274,10 @@ public class PlotAPI * * @see com.intellectualcrafters.plot.util.SchematicHandler */ - public SchematicHandler getSchematicHandler() - { + public SchematicHandler getSchematicHandler() { return SchematicHandler.manager; } - + /** * Use C.[caption] instead * @@ -306,11 +286,10 @@ public class PlotAPI * @see com.intellectualcrafters.plot.config.C */ @Deprecated - public C[] getCaptions() - { + public C[] getCaptions() { return C.values(); } - + /** * Get the plot manager for a world. - Most of these methods can be accessed through the MainUtil * @@ -321,11 +300,10 @@ public class PlotAPI * @see com.intellectualcrafters.plot.object.PlotManager * @see PS#getPlotManager(String) */ - public PlotManager getPlotManager(final World world) - { + public PlotManager getPlotManager(final World world) { return PS.get().getPlotManager(world.getName()); } - + /** * Get the plot manager for a world. - Contains useful low level methods for plot merging, clearing, and * tessellation @@ -337,11 +315,10 @@ public class PlotAPI * @see PS#getPlotManager(String) * @see com.intellectualcrafters.plot.object.PlotManager */ - public PlotManager getPlotManager(final String world) - { + public PlotManager getPlotManager(final String world) { return PS.get().getPlotManager(world); } - + /** * Get the settings for a world (settings bundled in PlotWorld class) - You will need to downcast for the specific * settings a Generator has. e.g. DefaultPlotWorld class implements PlotWorld @@ -353,11 +330,10 @@ public class PlotAPI * @see PS#getPlotWorld(String) * @see com.intellectualcrafters.plot.object.PlotWorld */ - public PlotWorld getWorldSettings(final World world) - { + public PlotWorld getWorldSettings(final World world) { return PS.get().getPlotWorld(world.getName()); } - + /** * Get the settings for a world (settings bundled in PlotWorld class) * @@ -368,11 +344,10 @@ public class PlotAPI * @see PS#getPlotWorld(String) * @see com.intellectualcrafters.plot.object.PlotWorld */ - public PlotWorld getWorldSettings(final String world) - { + public PlotWorld getWorldSettings(final String world) { return PS.get().getPlotWorld(world); } - + /** * Send a message to a player. * @@ -382,11 +357,10 @@ public class PlotAPI * @see com.intellectualcrafters.plot.util.MainUtil#sendMessage(PlotPlayer, C, String...) * com.intellectualcrafters.plot.config.C, String...) */ - public void sendMessage(final Player player, final C c) - { + public void sendMessage(final Player player, final C c) { MainUtil.sendMessage(BukkitUtil.getPlayer(player), c); } - + /** * Send a message to a player. - Supports color codes * @@ -395,11 +369,10 @@ public class PlotAPI * * @see com.intellectualcrafters.plot.util.MainUtil#sendMessage(PlotPlayer, String) */ - public void sendMessage(final Player player, final String string) - { + public void sendMessage(final Player player, final String string) { MainUtil.sendMessage(BukkitUtil.getPlayer(player), string); } - + /** * Send a message to the console. - Supports color codes * @@ -407,11 +380,10 @@ public class PlotAPI * * @see MainUtil#sendConsoleMessage(String) */ - public void sendConsoleMessage(final String msg) - { + public void sendConsoleMessage(final String msg) { MainUtil.sendConsoleMessage(msg); } - + /** * Send a message to the console * @@ -420,11 +392,10 @@ public class PlotAPI * @see #sendConsoleMessage(String) * @see com.intellectualcrafters.plot.config.C */ - public void sendConsoleMessage(final C c) - { + public void sendConsoleMessage(final C c) { sendConsoleMessage(c.s()); } - + /** * Register a flag for use in plots * @@ -433,11 +404,10 @@ public class PlotAPI * @see com.intellectualcrafters.plot.flag.FlagManager#addFlag(com.intellectualcrafters.plot.flag.AbstractFlag) * @see com.intellectualcrafters.plot.flag.AbstractFlag */ - public void addFlag(final AbstractFlag flag) - { + public void addFlag(final AbstractFlag flag) { FlagManager.addFlag(flag); } - + /** * get all the currently registered flags * @@ -446,11 +416,10 @@ public class PlotAPI * @see com.intellectualcrafters.plot.flag.FlagManager#getFlags() * @see com.intellectualcrafters.plot.flag.AbstractFlag */ - public AbstractFlag[] getFlags() - { + public AbstractFlag[] getFlags() { return FlagManager.getFlags().toArray(new AbstractFlag[FlagManager.getFlags().size()]); } - + /** * Get a plot based on the ID * @@ -463,11 +432,10 @@ public class PlotAPI * @see MainUtil#getPlot(String, com.intellectualcrafters.plot.object.PlotId) * @see com.intellectualcrafters.plot.object.Plot */ - public Plot getPlot(final World world, final int x, final int z) - { + public Plot getPlot(final World world, final int x, final int z) { return MainUtil.getPlot(world.getName(), new PlotId(x, z)); } - + /** * Get a plot based on the location * @@ -478,11 +446,10 @@ public class PlotAPI * @see MainUtil#getPlot(com.intellectualcrafters.plot.object.Location) * @see com.intellectualcrafters.plot.object.Plot */ - public Plot getPlot(final Location l) - { + public Plot getPlot(final Location l) { return MainUtil.getPlot(BukkitUtil.getLocation(l)); } - + /** * Get a plot based on the player location * @@ -493,11 +460,10 @@ public class PlotAPI * @see #getPlot(org.bukkit.Location) * @see com.intellectualcrafters.plot.object.Plot */ - public Plot getPlot(final Player player) - { + public Plot getPlot(final Player player) { return this.getPlot(player.getLocation()); } - + /** * Check whether or not a player has a plot * @@ -507,11 +473,10 @@ public class PlotAPI * * @see #getPlots(World, Player, boolean) */ - public boolean hasPlot(final World world, final Player player) - { + public boolean hasPlot(final World world, final Player player) { return (getPlots(world, player, true) != null) && (getPlots(world, player, true).length > 0); } - + /** * Get all plots for the player * @@ -520,29 +485,22 @@ public class PlotAPI * * @see com.intellectualcrafters.plot.object.Plot */ - public Plot[] getPlots(final World world, final Player plr, final boolean just_owner) - { + public Plot[] getPlots(final World world, final Player plr, final boolean just_owner) { final ArrayList pPlots = new ArrayList<>(); - for (final Plot plot : PS.get().getPlotsInWorld(world.getName())) - { - if (just_owner) - { - if ((plot.owner != null) && (plot.owner.equals(UUIDHandler.getUUID(BukkitUtil.getPlayer(plr))))) - { + for (final Plot plot : PS.get().getPlotsInWorld(world.getName())) { + if (just_owner) { + if ((plot.owner != null) && (plot.owner.equals(UUIDHandler.getUUID(BukkitUtil.getPlayer(plr))))) { pPlots.add(plot); } - } - else - { - if (plot.isAdded(UUIDHandler.getUUID(BukkitUtil.getPlayer(plr)))) - { + } else { + if (plot.isAdded(UUIDHandler.getUUID(BukkitUtil.getPlayer(plr)))) { pPlots.add(plot); } } } return pPlots.toArray(new Plot[pPlots.size()]); } - + /** * Get all plots for the world * @@ -553,12 +511,11 @@ public class PlotAPI * @see PS#getPlots(String) * @see com.intellectualcrafters.plot.object.Plot */ - public Plot[] getPlots(final World world) - { + public Plot[] getPlots(final World world) { final Collection plots = PS.get().getPlotsInWorld(world.getName()); return plots.toArray(new Plot[plots.size()]); } - + /** * Get all plot worlds * @@ -566,12 +523,11 @@ public class PlotAPI * * @see com.intellectualcrafters.plot.PS#getPlotWorlds() */ - public String[] getPlotWorlds() - { + public String[] getPlotWorlds() { final Set worlds = PS.get().getPlotWorlds(); return worlds.toArray(new String[worlds.size()]); } - + /** * Get if plot world * @@ -581,11 +537,10 @@ public class PlotAPI * * @see com.intellectualcrafters.plot.PS#isPlotWorld(String) */ - public boolean isPlotWorld(final World world) - { + public boolean isPlotWorld(final World world) { return PS.get().isPlotWorld(world.getName()); } - + /** * Get plot locations * @@ -601,14 +556,13 @@ public class PlotAPI * com.intellectualcrafters.plot.object.Plot) * @see com.intellectualcrafters.plot.object.Plot */ - public Location[] getLocations(final Plot p) - { + public Location[] getLocations(final Plot p) { return new Location[] { BukkitUtil.getLocation(MainUtil.getPlotBottomLoc(p.world, p.id)), BukkitUtil.getLocation(MainUtil.getPlotTopLoc(p.world, p.id)), BukkitUtil.getLocation(MainUtil.getPlotHome(p.world, p.id)) }; } - + /** * Get home location * @@ -620,11 +574,10 @@ public class PlotAPI * com.intellectualcrafters.plot.object.Plot) * @see com.intellectualcrafters.plot.object.Plot */ - public Location getHomeLocation(final Plot p) - { + public Location getHomeLocation(final Plot p) { return BukkitUtil.getLocation(MainUtil.getPlotHome(p.world, p.id)); } - + /** * Get Bottom Location (min, min, min) * @@ -636,11 +589,10 @@ public class PlotAPI * com.intellectualcrafters.plot.object.PlotId) * @see com.intellectualcrafters.plot.object.Plot */ - public Location getBottomLocation(final Plot p) - { + public Location getBottomLocation(final Plot p) { return BukkitUtil.getLocation(MainUtil.getPlotBottomLoc(p.world, p.id)); } - + /** * Get Top Location (max, max, max) * @@ -651,11 +603,10 @@ public class PlotAPI * @see MainUtil#getPlotTopLoc(String, com.intellectualcrafters.plot.object.PlotId) * @see com.intellectualcrafters.plot.object.Plot */ - public Location getTopLocation(final Plot p) - { + public Location getTopLocation(final Plot p) { return BukkitUtil.getLocation(MainUtil.getPlotTopLoc(p.world, p.id)); } - + /** * Check whether or not a player is in a plot * @@ -665,11 +616,10 @@ public class PlotAPI * * @see com.intellectualcrafters.plot.util.MainUtil#getPlot(com.intellectualcrafters.plot.object.Location) */ - public boolean isInPlot(final Player player) - { + public boolean isInPlot(final Player player) { return MainUtil.getPlot(BukkitUtil.getLocation(player)) != null; } - + /** * Register a subcommand * @@ -677,18 +627,14 @@ public class PlotAPI * * @see com.intellectualcrafters.plot.commands.SubCommand */ - public void registerCommand(final SubCommand c) - { - if (c.getCommand() != null) - { + public void registerCommand(final SubCommand c) { + if (c.getCommand() != null) { MainCommand.getInstance().addCommand(c); - } - else - { + } else { MainCommand.getInstance().createCommand(c); } } - + /** * Get the PlotSquared class * @@ -696,11 +642,10 @@ public class PlotAPI * * @see com.intellectualcrafters.plot.PS */ - public PS getPlotSquared() - { + public PS getPlotSquared() { return PS.get(); } - + /** * Get the player plot count * @@ -711,11 +656,10 @@ public class PlotAPI * * @see com.intellectualcrafters.plot.util.MainUtil#getPlayerPlotCount(String, PlotPlayer) */ - public int getPlayerPlotCount(final World world, final Player player) - { + public int getPlayerPlotCount(final World world, final Player player) { return MainUtil.getPlayerPlotCount(world.getName(), BukkitUtil.getPlayer(player)); } - + /** * Get a collection containing the players plots * @@ -728,11 +672,10 @@ public class PlotAPI * org.bukkit.entity.Player) * @see com.intellectualcrafters.plot.object.Plot */ - public Set getPlayerPlots(final World world, final Player player) - { + public Set getPlayerPlots(final World world, final Player player) { return PS.get().getPlots(world.getName(), BukkitUtil.getPlayer(player)); } - + /** * Get the numbers of plots, which the player is able to build in * @@ -741,12 +684,11 @@ public class PlotAPI * @return the number of allowed plots * */ - public int getAllowedPlots(final Player player) - { + public int getAllowedPlots(final Player player) { final PlotPlayer pp = BukkitUtil.getPlayer(player); return MainUtil.getAllowedPlots(pp); } - + /** * Get the PlotPlayer for a player
* - The PlotPlayer is usually cached and will provide useful functions relating to players @@ -756,11 +698,10 @@ public class PlotAPI * @param player * @return */ - public PlotPlayer wrapPlayer(final Player player) - { + public PlotPlayer wrapPlayer(final Player player) { return PlotPlayer.wrap(player); } - + /** * Get the PlotPlayer for a UUID (Please note that PlotSquared can be configured to provide different UUIDs than bukkit) * @@ -769,11 +710,10 @@ public class PlotAPI * @param player * @return */ - public PlotPlayer wrapPlayer(final UUID uuid) - { + public PlotPlayer wrapPlayer(final UUID uuid) { return PlotPlayer.wrap(uuid); } - + /** * Get the PlotPlayer for a username * @@ -782,11 +722,10 @@ public class PlotAPI * @param player * @return */ - public PlotPlayer wrapPlayer(final String player) - { + public PlotPlayer wrapPlayer(final String player) { return PlotPlayer.wrap(player); } - + /** * Get the PlotPlayer for an offline player
* Note that this will work if the player is offline, however not all functionality will work @@ -796,8 +735,7 @@ public class PlotAPI * @param player * @return */ - public PlotPlayer wrapPlayer(final OfflinePlayer player) - { + public PlotPlayer wrapPlayer(final OfflinePlayer player) { return PlotPlayer.wrap(player); } } diff --git a/src/main/java/com/intellectualcrafters/plot/commands/Add.java b/src/main/java/com/intellectualcrafters/plot/commands/Add.java index 63dabddd5..1f8d5f291 100644 --- a/src/main/java/com/intellectualcrafters/plot/commands/Add.java +++ b/src/main/java/com/intellectualcrafters/plot/commands/Add.java @@ -43,71 +43,55 @@ usage = "/plot add ", category = CommandCategory.ACTIONS, permission = "plots.add", requiredType = RequiredType.NONE) -public class Add extends SubCommand -{ - - public Add() - { - requiredArguments = new Argument[] { - Argument.PlayerName - }; +public class Add extends SubCommand { + + public Add() { + requiredArguments = new Argument[] { Argument.PlayerName }; } - + @Override - public boolean onCommand(final PlotPlayer plr, final String[] args) - { + public boolean onCommand(final PlotPlayer plr, final String[] args) { final Location loc = plr.getLocation(); final Plot plot = MainUtil.getPlot(loc); - if (plot == null) { return !sendMessage(plr, C.NOT_IN_PLOT); } - if (!plot.hasOwner()) - { + if (plot == null) { + return !sendMessage(plr, C.NOT_IN_PLOT); + } + if (!plot.hasOwner()) { MainUtil.sendMessage(plr, C.PLOT_UNOWNED); return false; } - if (!plot.isOwner(plr.getUUID()) && !Permissions.hasPermission(plr, "plots.admin.command.add")) - { + if (!plot.isOwner(plr.getUUID()) && !Permissions.hasPermission(plr, "plots.admin.command.add")) { MainUtil.sendMessage(plr, C.NO_PLOT_PERMS); return true; } UUID uuid; - if (args[0].equalsIgnoreCase("*")) - { + if (args[0].equalsIgnoreCase("*")) { uuid = DBFunc.everyone; - } - else - { + } else { // TODO have a runnable for fetch uuid = UUIDHandler.getUUID(args[0], null); } - if (uuid == null) - { + if (uuid == null) { MainUtil.sendMessage(plr, C.INVALID_PLAYER, args[0]); return false; } - if (plot.isOwner(uuid)) - { + if (plot.isOwner(uuid)) { MainUtil.sendMessage(plr, C.ALREADY_OWNER); return false; } - - if (plot.getMembers().contains(uuid)) - { + + if (plot.getMembers().contains(uuid)) { MainUtil.sendMessage(plr, C.ALREADY_ADDED); return false; } - if (plot.removeTrusted(uuid)) - { + if (plot.removeTrusted(uuid)) { plot.addMember(uuid); - } - else - { - if ((plot.getMembers().size() + plot.getTrusted().size()) >= PS.get().getPlotWorld(plot.world).MAX_PLOT_MEMBERS) - { + } else { + if ((plot.getMembers().size() + plot.getTrusted().size()) >= PS.get().getPlotWorld(plot.world).MAX_PLOT_MEMBERS) { MainUtil.sendMessage(plr, C.PLOT_MAX_MEMBERS); return false; } - if (plot.getDenied().contains(uuid)) - { + if (plot.getDenied().contains(uuid)) { plot.removeDenied(uuid); } plot.addMember(uuid); diff --git a/src/main/java/com/intellectualcrafters/plot/commands/Auto.java b/src/main/java/com/intellectualcrafters/plot/commands/Auto.java index 76d307673..f70b987aa 100644 --- a/src/main/java/com/intellectualcrafters/plot/commands/Auto.java +++ b/src/main/java/com/intellectualcrafters/plot/commands/Auto.java @@ -42,89 +42,69 @@ requiredType = RequiredType.NONE, description = "Claim the nearest plot", aliases = { "a" }, usage = "/plot auto") -public class Auto extends SubCommand -{ - - public static PlotId getNextPlot(final PlotId id, final int step) - { +public class Auto extends SubCommand { + + public static PlotId getNextPlot(final PlotId id, final int step) { final int absX = Math.abs(id.x); final int absY = Math.abs(id.y); - if (absX > absY) - { - if (id.x > 0) - { + if (absX > absY) { + if (id.x > 0) { return new PlotId(id.x, id.y + 1); - } - else - { + } else { return new PlotId(id.x, id.y - 1); } - } - else if (absY > absX) - { - if (id.y > 0) - { + } else if (absY > absX) { + if (id.y > 0) { return new PlotId(id.x - 1, id.y); - } - else - { + } else { return new PlotId(id.x + 1, id.y); } - } - else - { - if (id.x.equals(id.y) && (id.x > 0)) { return new PlotId(id.x, id.y + step); } - if (id.x == absX) { return new PlotId(id.x, id.y + 1); } - if (id.y == absY) { return new PlotId(id.x, id.y - 1); } + } else { + if (id.x.equals(id.y) && (id.x > 0)) { + return new PlotId(id.x, id.y + step); + } + if (id.x == absX) { + return new PlotId(id.x, id.y + 1); + } + if (id.y == absY) { + return new PlotId(id.x, id.y - 1); + } return new PlotId(id.x + 1, id.y); } } - + @Override - public boolean onCommand(final PlotPlayer plr, final String[] args) - { - + public boolean onCommand(final PlotPlayer plr, final String[] args) { + String world; int size_x = 1; int size_z = 1; String schematic = ""; - if (PS.get().getPlotWorlds().size() == 1) - { + if (PS.get().getPlotWorlds().size() == 1) { world = PS.get().getPlotWorlds().iterator().next(); - } - else - { + } else { world = plr.getLocation().getWorld(); - if (!PS.get().isPlotWorld(world)) - { + if (!PS.get().isPlotWorld(world)) { MainUtil.sendMessage(plr, C.NOT_IN_PLOT_WORLD); return false; } } - if (args.length > 0) - { - if (Permissions.hasPermission(plr, "plots.auto.mega")) - { - try - { + if (args.length > 0) { + if (Permissions.hasPermission(plr, "plots.auto.mega")) { + try { final String[] split = args[0].split(","); size_x = Integer.parseInt(split[0]); size_z = Integer.parseInt(split[1]); - if ((size_x < 1) || (size_z < 1)) - { + if ((size_x < 1) || (size_z < 1)) { MainUtil.sendMessage(plr, "&cError: size<=0"); } - if ((size_x > 4) || (size_z > 4)) - { + if ((size_x > 4) || (size_z > 4)) { MainUtil.sendMessage(plr, "&cError: size>4"); } - if (args.length > 1) - { + if (args.length > 1) { schematic = args[1]; } - } - catch (final Exception e) - { + } catch (final Exception e) { size_x = 1; size_z = 1; schematic = args[0]; @@ -132,42 +112,32 @@ public class Auto extends SubCommand // "&cError: Invalid size (X,Y)"); // return false; } - } - else - { + } else { schematic = args[0]; // PlayerFunctions.sendMessage(plr, C.NO_PERMISSION); // return false; } } - if ((size_x * size_z) > Settings.MAX_AUTO_SIZE) - { + if ((size_x * size_z) > Settings.MAX_AUTO_SIZE) { MainUtil.sendMessage(plr, C.CANT_CLAIM_MORE_PLOTS_NUM, Settings.MAX_AUTO_SIZE + ""); return false; } final int currentPlots = Settings.GLOBAL_LIMIT ? MainUtil.getPlayerPlotCount(plr) : MainUtil.getPlayerPlotCount(world, plr); final int diff = currentPlots - MainUtil.getAllowedPlots(plr); - if ((diff + (size_x * size_z)) > 0) - { - if (diff < 0) - { + if ((diff + (size_x * size_z)) > 0) { + if (diff < 0) { MainUtil.sendMessage(plr, C.CANT_CLAIM_MORE_PLOTS_NUM, (-diff) + ""); - } - else - { + } else { MainUtil.sendMessage(plr, C.CANT_CLAIM_MORE_PLOTS); } return false; } final PlotWorld pWorld = PS.get().getPlotWorld(world); - if ((EconHandler.manager != null) && pWorld.USE_ECONOMY) - { + if ((EconHandler.manager != null) && pWorld.USE_ECONOMY) { double cost = pWorld.PLOT_PRICE; cost = (size_x * size_z) * cost; - if (cost > 0d) - { - if (EconHandler.manager.getMoney(plr) < cost) - { + if (cost > 0d) { + if (EconHandler.manager.getMoney(plr) < cost) { sendMessage(plr, C.CANNOT_AFFORD_PLOT, "" + cost); return true; } @@ -175,16 +145,13 @@ public class Auto extends SubCommand sendMessage(plr, C.REMOVED_BALANCE, cost + ""); } } - if (!schematic.equals("")) - { + if (!schematic.equals("")) { // if (pWorld.SCHEMATIC_CLAIM_SPECIFY) { - if (!pWorld.SCHEMATICS.contains(schematic.toLowerCase())) - { + if (!pWorld.SCHEMATICS.contains(schematic.toLowerCase())) { sendMessage(plr, C.SCHEMATIC_INVALID, "non-existent: " + schematic); return true; } - if (!Permissions.hasPermission(plr, "plots.claim." + schematic) && !Permissions.hasPermission(plr, "plots.admin.command.schematic")) - { + if (!Permissions.hasPermission(plr, "plots.claim." + schematic) && !Permissions.hasPermission(plr, "plots.admin.command.schematic")) { MainUtil.sendMessage(plr, C.NO_SCHEMATIC_PERMISSION, schematic); return true; } @@ -192,15 +159,15 @@ public class Auto extends SubCommand } final String worldname = world; final PlotWorld plotworld = PS.get().getPlotWorld(worldname); - if (plotworld.TYPE == 2) - { + if (plotworld.TYPE == 2) { final Location loc = plr.getLocation(); final Plot plot = MainUtil.getPlot(new Location(worldname, loc.getX(), loc.getY(), loc.getZ())); - if (plot == null) { return sendMessage(plr, C.NOT_IN_PLOT); } + if (plot == null) { + return sendMessage(plr, C.NOT_IN_PLOT); + } final PlotCluster cluster = plot.getCluster(); // Must be standing in a cluster - if (cluster == null) - { + if (cluster == null) { MainUtil.sendMessage(plr, C.NOT_IN_CLUSTER); return false; } @@ -211,12 +178,10 @@ public class Auto extends SubCommand final int width = Math.max((top.x - bot.x) + 1, (top.y - bot.y) + 1); final int max = width * width; // - for (int i = 0; i <= max; i++) - { + for (int i = 0; i <= max; i++) { final PlotId currentId = new PlotId(origin.x + id.x, origin.y + id.y); final Plot current = MainUtil.getPlot(worldname, currentId); - if (MainUtil.canClaim(plr, current) && (current.getSettings().isMerged() == false) && cluster.equals(current.getCluster())) - { + if (MainUtil.canClaim(plr, current) && (current.getSettings().isMerged() == false) && cluster.equals(current.getCluster())) { Claim.claimPlot(plr, current, true, true); return true; } @@ -227,50 +192,39 @@ public class Auto extends SubCommand return false; } boolean br = false; - if ((size_x == 1) && (size_z == 1)) - { - while (!br) - { + if ((size_x == 1) && (size_z == 1)) { + while (!br) { final Plot plot = MainUtil.getPlot(worldname, getLastPlot(worldname)); - if (MainUtil.canClaim(plr, plot)) - { + if (MainUtil.canClaim(plr, plot)) { Claim.claimPlot(plr, plot, true, true); br = true; } MainUtil.lastPlot.put(worldname, getNextPlot(getLastPlot(worldname), 1)); } - } - else - { + } else { boolean lastPlot = true; - while (!br) - { + while (!br) { final PlotId start = getNextPlot(getLastPlot(worldname), 1); // Checking if the current set of plots is a viable option. MainUtil.lastPlot.put(worldname, start); - if (lastPlot) - {} - if ((PS.get().getPlot(worldname, start) != null) && (PS.get().getPlot(worldname, start).owner != null)) - { + if (lastPlot) {} + if ((PS.get().getPlot(worldname, start) != null) && (PS.get().getPlot(worldname, start).owner != null)) { continue; - } - else - { + } else { lastPlot = false; } final PlotId end = new PlotId((start.x + size_x) - 1, (start.y + size_z) - 1); - if (MainUtil.canClaim(plr, worldname, start, end)) - { - for (int i = start.x; i <= end.x; i++) - { - for (int j = start.y; j <= end.y; j++) - { + if (MainUtil.canClaim(plr, worldname, start, end)) { + for (int i = start.x; i <= end.x; i++) { + for (int j = start.y; j <= end.y; j++) { final Plot plot = MainUtil.getPlot(worldname, new PlotId(i, j)); final boolean teleport = ((i == end.x) && (j == end.y)); Claim.claimPlot(plr, plot, teleport, true); } } - if (!MainUtil.mergePlots(worldname, MainUtil.getPlotSelectionIds(start, end), true, true)) { return false; } + if (!MainUtil.mergePlots(worldname, MainUtil.getPlotSelectionIds(start, end), true, true)) { + return false; + } br = true; } } @@ -278,11 +232,9 @@ public class Auto extends SubCommand MainUtil.lastPlot.put(worldname, new PlotId(0, 0)); return true; } - - public PlotId getLastPlot(final String world) - { - if ((MainUtil.lastPlot == null) || !MainUtil.lastPlot.containsKey(world)) - { + + public PlotId getLastPlot(final String world) { + if ((MainUtil.lastPlot == null) || !MainUtil.lastPlot.containsKey(world)) { MainUtil.lastPlot.put(world, new PlotId(0, 0)); } return MainUtil.lastPlot.get(world); diff --git a/src/main/java/com/intellectualcrafters/plot/commands/BO3.java b/src/main/java/com/intellectualcrafters/plot/commands/BO3.java index a3710e056..87cc3dbd4 100644 --- a/src/main/java/com/intellectualcrafters/plot/commands/BO3.java +++ b/src/main/java/com/intellectualcrafters/plot/commands/BO3.java @@ -29,57 +29,44 @@ import com.intellectualcrafters.plot.util.MainUtil; import com.intellectualcrafters.plot.util.Permissions; import com.plotsquared.general.commands.CommandDeclaration; -@CommandDeclaration( -command = "bo3", -aliases = { "bo2" }, -description = "Mark a plot as done", -permission = "plots.bo3", -category = CommandCategory.ACTIONS, -requiredType = RequiredType.NONE) -public class BO3 extends SubCommand -{ - - public void noArgs(final PlotPlayer plr) - { +@CommandDeclaration(command = "bo3", aliases = { "bo2" }, description = "Mark a plot as done", permission = "plots.bo3", category = CommandCategory.ACTIONS, requiredType = RequiredType.NONE) +public class BO3 extends SubCommand { + + public void noArgs(final PlotPlayer plr) { MainUtil.sendMessage(plr, C.COMMAND_SYNTAX, "/plot bo3 export [category] [alias] [-r]"); MainUtil.sendMessage(plr, C.COMMAND_SYNTAX, "/plot bo3 import "); } - + @Override - public boolean onCommand(final PlotPlayer plr, final String[] args) - { + public boolean onCommand(final PlotPlayer plr, final String[] args) { final Location loc = plr.getLocation(); final Plot plot = MainUtil.getPlot(loc); - if ((plot == null) || !plot.hasOwner()) { return !sendMessage(plr, C.NOT_IN_PLOT); } - if ((!plot.isOwner(plr.getUUID())) && !Permissions.hasPermission(plr, "plots.admin.command.bo3")) - { + if ((plot == null) || !plot.hasOwner()) { + return !sendMessage(plr, C.NOT_IN_PLOT); + } + if ((!plot.isOwner(plr.getUUID())) && !Permissions.hasPermission(plr, "plots.admin.command.bo3")) { MainUtil.sendMessage(plr, C.NO_PLOT_PERMS); return false; } - if (args.length == 0) - { + if (args.length == 0) { noArgs(plr); return false; } - switch (args[0].toLowerCase()) - { + switch (args[0].toLowerCase()) { case "output": case "save": - case "export": - { + case "export": { return BO3Handler.saveBO3(plr, plot); } case "paste": case "load": case "import": - case "input": - { + case "input": { // TODO NOT IMPLEMENTED YET MainUtil.sendMessage(plr, "NOT IMPLEMENTED YET!!!"); return false; } - default: - { + default: { noArgs(plr); return false; } diff --git a/src/main/java/com/intellectualcrafters/plot/commands/Buy.java b/src/main/java/com/intellectualcrafters/plot/commands/Buy.java index fd23dda1a..ca9873fe9 100644 --- a/src/main/java/com/intellectualcrafters/plot/commands/Buy.java +++ b/src/main/java/com/intellectualcrafters/plot/commands/Buy.java @@ -45,70 +45,74 @@ usage = "/plot buy", permission = "plots.buy", category = CommandCategory.CLAIMING, requiredType = RequiredType.NONE) -public class Buy extends SubCommand -{ - +public class Buy extends SubCommand { + @Override - public boolean onCommand(final PlotPlayer plr, final String... args) - { - - if (EconHandler.manager == null) { return sendMessage(plr, C.ECON_DISABLED); } + public boolean onCommand(final PlotPlayer plr, final String... args) { + + if (EconHandler.manager == null) { + return sendMessage(plr, C.ECON_DISABLED); + } final Location loc = plr.getLocation(); final String world = loc.getWorld(); - if (!PS.get().isPlotWorld(world)) { return sendMessage(plr, C.NOT_IN_PLOT_WORLD); } + if (!PS.get().isPlotWorld(world)) { + return sendMessage(plr, C.NOT_IN_PLOT_WORLD); + } Plot plot; - if (args.length > 0) - { - try - { + if (args.length > 0) { + try { final String[] split = args[0].split(";"); final PlotId id = new PlotId(Integer.parseInt(split[0]), Integer.parseInt(split[1])); plot = MainUtil.getPlot(world, id); - } - catch (final Exception e) - { + } catch (final Exception e) { return sendMessage(plr, C.NOT_VALID_PLOT_ID); } - } - else - { + } else { plot = MainUtil.getPlot(loc); } - if (plot == null) { return sendMessage(plr, C.NOT_IN_PLOT); } + if (plot == null) { + return sendMessage(plr, C.NOT_IN_PLOT); + } final int currentPlots = Settings.GLOBAL_LIMIT ? MainUtil.getPlayerPlotCount(plr) : MainUtil.getPlayerPlotCount(world, plr); - if (currentPlots >= MainUtil.getAllowedPlots(plr)) { return sendMessage(plr, C.CANT_CLAIM_MORE_PLOTS); } - if (!plot.hasOwner()) { return sendMessage(plr, C.PLOT_UNOWNED); } - if (PlotHandler.isOwner(plot, plr.getUUID())) { return sendMessage(plr, C.CANNOT_BUY_OWN); } + if (currentPlots >= MainUtil.getAllowedPlots(plr)) { + return sendMessage(plr, C.CANT_CLAIM_MORE_PLOTS); + } + if (!plot.hasOwner()) { + return sendMessage(plr, C.PLOT_UNOWNED); + } + if (PlotHandler.isOwner(plot, plr.getUUID())) { + return sendMessage(plr, C.CANNOT_BUY_OWN); + } final Flag flag = FlagManager.getPlotFlag(plot, "price"); - if (flag == null) { return sendMessage(plr, C.NOT_FOR_SALE); } + if (flag == null) { + return sendMessage(plr, C.NOT_FOR_SALE); + } double initPrice = (double) flag.getValue(); double price = initPrice; final PlotId id = plot.id; final PlotId id2 = MainUtil.getTopPlot(plot).id; final int size = MainUtil.getPlotSelectionIds(id, id2).size(); final PlotWorld plotworld = PS.get().getPlotWorld(world); - if (plotworld.USE_ECONOMY) - { + if (plotworld.USE_ECONOMY) { price += plotworld.PLOT_PRICE * size; initPrice += plotworld.SELL_PRICE * size; } - if ((EconHandler.manager != null) && (price > 0d)) - { - if (EconHandler.manager.getMoney(plr) < price) { return sendMessage(plr, C.CANNOT_AFFORD_PLOT, "" + price); } + if ((EconHandler.manager != null) && (price > 0d)) { + if (EconHandler.manager.getMoney(plr) < price) { + return sendMessage(plr, C.CANNOT_AFFORD_PLOT, "" + price); + } EconHandler.manager.withdrawMoney(plr, price); sendMessage(plr, C.REMOVED_BALANCE, price + ""); EconHandler.manager.depositMoney(UUIDHandler.getUUIDWrapper().getOfflinePlayer(plot.owner), initPrice); final PlotPlayer owner = UUIDHandler.getPlayer(plot.owner); - if (owner != null) - { + if (owner != null) { sendMessage(plr, C.PLOT_SOLD, plot.id + "", plr.getName(), initPrice + ""); } FlagManager.removePlotFlag(plot, "price"); } final Plot top = MainUtil.getTopPlot(plot); - - for (final PlotId myId : MainUtil.getPlotSelectionIds(plot.id, top.id)) - { + + for (final PlotId myId : MainUtil.getPlotSelectionIds(plot.id, top.id)) { final Plot myPlot = MainUtil.getPlot(plot.world, myId); myPlot.owner = plr.getUUID(); DBFunc.setOwner(plot, myPlot.owner); diff --git a/src/main/java/com/intellectualcrafters/plot/commands/Chat.java b/src/main/java/com/intellectualcrafters/plot/commands/Chat.java index e34ab505f..db2a8e621 100644 --- a/src/main/java/com/intellectualcrafters/plot/commands/Chat.java +++ b/src/main/java/com/intellectualcrafters/plot/commands/Chat.java @@ -10,12 +10,10 @@ usage = "/plot chat [on|off]", permission = "plots.chat", category = CommandCategory.ACTIONS, requiredType = RequiredType.NONE) -public class Chat extends SubCommand -{ - +public class Chat extends SubCommand { + @Override - public boolean onCommand(final PlotPlayer player, final String... args) - { + public boolean onCommand(final PlotPlayer player, final String... args) { return MainCommand.onCommand(player, "plot", new String[] { "toggle", "chat" }); } } diff --git a/src/main/java/com/intellectualcrafters/plot/commands/Claim.java b/src/main/java/com/intellectualcrafters/plot/commands/Claim.java index e7e963cca..056ddfd98 100644 --- a/src/main/java/com/intellectualcrafters/plot/commands/Claim.java +++ b/src/main/java/com/intellectualcrafters/plot/commands/Claim.java @@ -44,57 +44,44 @@ category = CommandCategory.CLAIMING, requiredType = RequiredType.NONE, permission = "plots.claim", usage = "/plot claim") -public class Claim extends SubCommand -{ - - public static boolean claimPlot(final PlotPlayer player, final Plot plot, final boolean teleport, final boolean auto) - { +public class Claim extends SubCommand { + + public static boolean claimPlot(final PlotPlayer player, final Plot plot, final boolean teleport, final boolean auto) { return claimPlot(player, plot, teleport, "", auto); } - - public static boolean claimPlot(final PlotPlayer player, final Plot plot, final boolean teleport, final String schematic, final boolean auto) - { - if (plot.hasOwner() || plot.getSettings().isMerged()) { return false; } + + public static boolean claimPlot(final PlotPlayer player, final Plot plot, final boolean teleport, final String schematic, final boolean auto) { + if (plot.hasOwner() || plot.getSettings().isMerged()) { + return false; + } final boolean result = EventUtil.manager.callClaim(player, plot, false); - if (result) - { + if (result) { MainUtil.createPlot(player.getUUID(), plot); MainUtil.setSign(player.getName(), plot); MainUtil.sendMessage(player, C.CLAIMED); final Location loc = player.getLocation(); - if (teleport) - { + if (teleport) { MainUtil.teleportPlayer(player, loc, plot); } final String world = plot.world; final PlotWorld plotworld = PS.get().getPlotWorld(world); final Plot plot2 = PS.get().getPlot(world, plot.id); - if (plotworld.SCHEMATIC_ON_CLAIM) - { + if (plotworld.SCHEMATIC_ON_CLAIM) { Schematic sch; - if (schematic.equals("")) - { + if (schematic.equals("")) { sch = SchematicHandler.manager.getSchematic(plotworld.SCHEMATIC_FILE); - } - else - { + } else { sch = SchematicHandler.manager.getSchematic(schematic); - if (sch == null) - { + if (sch == null) { sch = SchematicHandler.manager.getSchematic(plotworld.SCHEMATIC_FILE); } } - SchematicHandler.manager.paste(sch, plot2, 0, 0, new RunnableVal() - { + SchematicHandler.manager.paste(sch, plot2, 0, 0, new RunnableVal() { @Override - public void run() - { - if (value) - { + public void run() { + if (value) { MainUtil.sendMessage(player, C.SCHEMATIC_PASTE_SUCCESS); - } - else - { + } else { MainUtil.sendMessage(player, C.SCHEMATIC_PASTE_FAILED); } } @@ -104,40 +91,45 @@ public class Claim extends SubCommand } return result; } - + @Override - public boolean onCommand(final PlotPlayer plr, final String... args) - { - + public boolean onCommand(final PlotPlayer plr, final String... args) { + String schematic = ""; - if (args.length >= 1) - { + if (args.length >= 1) { schematic = args[0]; } final Location loc = plr.getLocation(); final Plot plot = MainUtil.getPlot(loc); - if (plot == null) { return sendMessage(plr, C.NOT_IN_PLOT); } + if (plot == null) { + return sendMessage(plr, C.NOT_IN_PLOT); + } final int currentPlots = Settings.GLOBAL_LIMIT ? MainUtil.getPlayerPlotCount(plr) : MainUtil.getPlayerPlotCount(loc.getWorld(), plr); - if (currentPlots >= MainUtil.getAllowedPlots(plr)) { return sendMessage(plr, C.CANT_CLAIM_MORE_PLOTS); } - if (!MainUtil.canClaim(plr, plot)) { return sendMessage(plr, C.PLOT_IS_CLAIMED); } + if (currentPlots >= MainUtil.getAllowedPlots(plr)) { + return sendMessage(plr, C.CANT_CLAIM_MORE_PLOTS); + } + if (!MainUtil.canClaim(plr, plot)) { + return sendMessage(plr, C.PLOT_IS_CLAIMED); + } final PlotWorld world = PS.get().getPlotWorld(plot.world); - if ((EconHandler.manager != null) && world.USE_ECONOMY) - { + if ((EconHandler.manager != null) && world.USE_ECONOMY) { final double cost = world.PLOT_PRICE; - if (cost > 0d) - { - if (EconHandler.manager.getMoney(plr) < cost) { return sendMessage(plr, C.CANNOT_AFFORD_PLOT, "" + cost); } + if (cost > 0d) { + if (EconHandler.manager.getMoney(plr) < cost) { + return sendMessage(plr, C.CANNOT_AFFORD_PLOT, "" + cost); + } EconHandler.manager.withdrawMoney(plr, cost); sendMessage(plr, C.REMOVED_BALANCE, cost + ""); } } - if (!schematic.equals("")) - { - if (world.SCHEMATIC_CLAIM_SPECIFY) - { - if (!world.SCHEMATICS.contains(schematic.toLowerCase())) { return sendMessage(plr, C.SCHEMATIC_INVALID, "non-existent: " + schematic); } - if (!Permissions.hasPermission(plr, "plots.claim." + schematic) && !Permissions.hasPermission(plr, "plots.admin.command.schematic")) { return sendMessage(plr, - C.NO_SCHEMATIC_PERMISSION, schematic); } + if (!schematic.equals("")) { + if (world.SCHEMATIC_CLAIM_SPECIFY) { + if (!world.SCHEMATICS.contains(schematic.toLowerCase())) { + return sendMessage(plr, C.SCHEMATIC_INVALID, "non-existent: " + schematic); + } + if (!Permissions.hasPermission(plr, "plots.claim." + schematic) && !Permissions.hasPermission(plr, "plots.admin.command.schematic")) { + return sendMessage(plr, C.NO_SCHEMATIC_PERMISSION, schematic); + } } } return claimPlot(plr, plot, false, schematic, false) || sendMessage(plr, C.PLOT_NOT_CLAIMED); diff --git a/src/main/java/com/intellectualcrafters/plot/commands/Clear.java b/src/main/java/com/intellectualcrafters/plot/commands/Clear.java index 561e5a7bd..e48e0890a 100644 --- a/src/main/java/com/intellectualcrafters/plot/commands/Clear.java +++ b/src/main/java/com/intellectualcrafters/plot/commands/Clear.java @@ -37,106 +37,78 @@ import com.intellectualcrafters.plot.util.TaskManager; import com.intellectualcrafters.plot.util.UUIDHandler; import com.plotsquared.general.commands.CommandDeclaration; -@CommandDeclaration( -command = "clear", -description = "Clear a plot", -permission = "plots.clear", -category = CommandCategory.ACTIONS, -usage = "/plot clear [id]") -public class Clear extends SubCommand -{ - +@CommandDeclaration(command = "clear", description = "Clear a plot", permission = "plots.clear", category = CommandCategory.ACTIONS, usage = "/plot clear [id]") +public class Clear extends SubCommand { + @Override - public boolean onCommand(final PlotPlayer plr, final String... args) - { + public boolean onCommand(final PlotPlayer plr, final String... args) { final Location loc = plr.getLocation(); final Plot plot; - if (args.length == 2) - { + if (args.length == 2) { final PlotId id = PlotId.fromString(args[0]); - if (id == null) - { - if (args[1].equalsIgnoreCase("mine")) - { + if (id == null) { + if (args[1].equalsIgnoreCase("mine")) { final Set plots = PS.get().getPlots(plr); - if (plots.size() == 0) - { + if (plots.size() == 0) { MainUtil.sendMessage(plr, C.NO_PLOTS); return false; } plot = plots.iterator().next(); - } - else - { + } else { MainUtil.sendMessage(plr, C.COMMAND_SYNTAX, "/plot clear [X;Z|mine]"); return false; } - } - else - { + } else { plot = MainUtil.getPlot(loc.getWorld(), id); } - } - else - { + } else { plot = MainUtil.getPlot(loc); } - if (plot == null) - { + if (plot == null) { MainUtil.sendMessage(plr, C.COMMAND_SYNTAX, "/plot clear [X;Z|mine]"); return sendMessage(plr, C.NOT_IN_PLOT); } // if (!MainUtil.getTopPlot(plot).equals(MainUtil.getBottomPlot(plot))) { // return sendMessage(plr, C.UNLINK_REQUIRED); // } - if (((plot == null) || !plot.hasOwner() || !plot.isOwner(UUIDHandler.getUUID(plr))) && !Permissions.hasPermission(plr, "plots.admin.command.clear")) { return sendMessage(plr, C.NO_PLOT_PERMS); } + if (((plot == null) || !plot.hasOwner() || !plot.isOwner(UUIDHandler.getUUID(plr))) && !Permissions.hasPermission(plr, "plots.admin.command.clear")) { + return sendMessage(plr, C.NO_PLOT_PERMS); + } assert plot != null; - if (MainUtil.runners.containsKey(plot)) - { + if (MainUtil.runners.containsKey(plot)) { MainUtil.sendMessage(plr, C.WAIT_FOR_TIMER); return false; } if ((FlagManager.getPlotFlag(plot, "done") != null) - && (!Permissions.hasPermission(plr, "plots.continue") || (Settings.DONE_COUNTS_TOWARDS_LIMIT && (MainUtil.getAllowedPlots(plr) >= MainUtil.getPlayerPlotCount(plr))))) - { + && (!Permissions.hasPermission(plr, "plots.continue") || (Settings.DONE_COUNTS_TOWARDS_LIMIT && (MainUtil.getAllowedPlots(plr) >= MainUtil.getPlayerPlotCount(plr))))) { MainUtil.sendMessage(plr, C.DONE_ALREADY_DONE); return false; } - final Runnable runnable = new Runnable() - { + final Runnable runnable = new Runnable() { @Override - public void run() - { + public void run() { final long start = System.currentTimeMillis(); - final boolean result = MainUtil.clearAsPlayer(plot, plot.owner == null, new Runnable() - { + final boolean result = MainUtil.clearAsPlayer(plot, plot.owner == null, new Runnable() { @Override - public void run() - { + public void run() { // If the state changes, then mark it as no longer done - if (FlagManager.getPlotFlag(plot, "done") != null) - { + if (FlagManager.getPlotFlag(plot, "done") != null) { FlagManager.removePlotFlag(plot, "done"); } - if (FlagManager.getPlotFlag(plot, "analysis") != null) - { + if (FlagManager.getPlotFlag(plot, "analysis") != null) { FlagManager.removePlotFlag(plot, "analysis"); } MainUtil.sendMessage(plr, C.CLEARING_DONE, "" + (System.currentTimeMillis() - start)); } }); - if (!result) - { + if (!result) { MainUtil.sendMessage(plr, C.WAIT_FOR_TIMER); } } }; - if (Settings.CONFIRM_CLEAR && !(Permissions.hasPermission(plr, "plots.confirm.bypass"))) - { + if (Settings.CONFIRM_CLEAR && !(Permissions.hasPermission(plr, "plots.confirm.bypass"))) { CmdConfirm.addPending(plr, "/plot clear " + plot.id, runnable); - } - else - { + } else { TaskManager.runTask(runnable); } return true; diff --git a/src/main/java/com/intellectualcrafters/plot/commands/Cluster.java b/src/main/java/com/intellectualcrafters/plot/commands/Cluster.java index 111689323..0720ad397 100644 --- a/src/main/java/com/intellectualcrafters/plot/commands/Cluster.java +++ b/src/main/java/com/intellectualcrafters/plot/commands/Cluster.java @@ -59,71 +59,53 @@ category = CommandCategory.ACTIONS, requiredType = RequiredType.NONE, permission = "plots.cluster", description = "Manage a plot cluster") -public class Cluster extends SubCommand -{ - +public class Cluster extends SubCommand { + @Override - public boolean onCommand(final PlotPlayer plr, final String... args) - { - + public boolean onCommand(final PlotPlayer plr, final String... args) { + // list, create, delete, resize, invite, kick, leave, helpers, tp, sethome - if (args.length == 0) - { + if (args.length == 0) { // return arguments MainUtil.sendMessage(plr, C.CLUSTER_AVAILABLE_ARGS); return false; } final String sub = args[0].toLowerCase(); - switch (sub) - { + switch (sub) { case "l": - case "list": - { - if (!Permissions.hasPermission(plr, "plots.cluster.list")) - { + case "list": { + if (!Permissions.hasPermission(plr, "plots.cluster.list")) { MainUtil.sendMessage(plr, C.NO_PERMISSION, "plots.cluster.list"); return false; } - if (args.length != 1) - { + if (args.length != 1) { MainUtil.sendMessage(plr, C.COMMAND_SYNTAX, "/plot cluster list"); return false; } final HashSet clusters = ClusterManager.getClusters(plr.getLocation().getWorld()); MainUtil.sendMessage(plr, C.CLUSTER_LIST_HEADING, clusters.size() + ""); - for (final PlotCluster cluster : clusters) - { + for (final PlotCluster cluster : clusters) { // Ignore unmanaged clusters final String name = "'" + cluster.getName() + "' : " + cluster.toString(); - if (UUIDHandler.getUUID(plr).equals(cluster.owner)) - { + if (UUIDHandler.getUUID(plr).equals(cluster.owner)) { MainUtil.sendMessage(plr, C.CLUSTER_LIST_ELEMENT, "&a" + name); - } - else if (cluster.helpers.contains(UUIDHandler.getUUID(plr))) - { + } else if (cluster.helpers.contains(UUIDHandler.getUUID(plr))) { MainUtil.sendMessage(plr, C.CLUSTER_LIST_ELEMENT, "&3" + name); - } - else if (cluster.invited.contains(UUIDHandler.getUUID(plr))) - { + } else if (cluster.invited.contains(UUIDHandler.getUUID(plr))) { MainUtil.sendMessage(plr, C.CLUSTER_LIST_ELEMENT, "&9" + name); - } - else - { + } else { MainUtil.sendMessage(plr, C.CLUSTER_LIST_ELEMENT, cluster.toString()); } } return true; } case "c": - case "create": - { - if (!Permissions.hasPermission(plr, "plots.cluster.create")) - { + case "create": { + if (!Permissions.hasPermission(plr, "plots.cluster.create")) { MainUtil.sendMessage(plr, C.NO_PERMISSION, "plots.cluster.create"); return false; } - if (args.length != 4) - { + if (args.length != 4) { final PlotId id = ClusterManager.estimatePlotId(plr.getLocation()); MainUtil.sendMessage(plr, C.COMMAND_SYNTAX, "/plot cluster create "); MainUtil.sendMessage(plr, C.CLUSTER_CURRENT_PLOTID, "" + id); @@ -132,23 +114,19 @@ public class Cluster extends SubCommand // check pos1 / pos2 PlotId pos1 = MainUtil.parseId(args[2]); PlotId pos2 = MainUtil.parseId(args[3]); - if ((pos1 == null) || (pos2 == null)) - { + if ((pos1 == null) || (pos2 == null)) { MainUtil.sendMessage(plr, C.NOT_VALID_PLOT_ID); return false; } // check if name is taken final String name = args[1]; - for (final PlotCluster cluster : ClusterManager.getClusters(plr.getLocation().getWorld())) - { - if (name.equals(cluster.getName())) - { + for (final PlotCluster cluster : ClusterManager.getClusters(plr.getLocation().getWorld())) { + if (name.equals(cluster.getName())) { MainUtil.sendMessage(plr, C.ALIAS_IS_TAKEN); return false; } } - if ((pos2.x < pos1.x) || (pos2.y < pos1.y)) - { + if ((pos2.x < pos1.x) || (pos2.y < pos1.y)) { pos1 = new PlotId(Math.min(pos1.x, pos2.x), Math.min(pos1.y, pos2.y)); pos2 = new PlotId(Math.max(pos1.x, pos2.x), Math.max(pos1.y, pos2.y)); } @@ -156,22 +134,17 @@ public class Cluster extends SubCommand final String world = plr.getLocation().getWorld(); final PlotClusterId id = new PlotClusterId(pos1, pos2); final HashSet intersects = ClusterManager.getIntersects(world, id); - if ((intersects.size() > 0)) - { + if ((intersects.size() > 0)) { MainUtil.sendMessage(plr, C.CLUSTER_INTERSECTION, intersects.size() + ""); return false; } // Check if it occupies existing plots final Set plots = MainUtil.getPlotSelectionOwned(world, pos1, pos2); - if (plots.size() > 0) - { - if (!Permissions.hasPermission(plr, "plots.cluster.create.other")) - { + if (plots.size() > 0) { + if (!Permissions.hasPermission(plr, "plots.cluster.create.other")) { final UUID uuid = plr.getUUID(); - for (final Plot plot : plots) - { - if (!plot.isOwner(uuid)) - { + for (final Plot plot : plots) { + if (!plot.isOwner(uuid)) { MainUtil.sendMessage(plr, C.NO_PERMISSION, "plots.cluster.create.other"); return false; } @@ -181,41 +154,30 @@ public class Cluster extends SubCommand // Check allowed cluster size final PlotCluster cluster = new PlotCluster(world, pos1, pos2, UUIDHandler.getUUID(plr)); int current; - if (Settings.GLOBAL_LIMIT) - { + if (Settings.GLOBAL_LIMIT) { current = ClusterManager.getPlayerClusterCount(plr); - } - else - { + } else { current = ClusterManager.getPlayerClusterCount(world, plr); } final int allowed = Permissions.hasPermissionRange(plr, "plots.cluster", Settings.MAX_PLOTS); - if ((current + cluster.getArea()) > allowed) - { + if ((current + cluster.getArea()) > allowed) { MainUtil.sendMessage(plr, C.NO_PERMISSION, "plots.cluster." + (current + cluster.getArea())); return false; } // Set the generator (if applicable) final PlotWorld plotworld = PS.get().getPlotWorld(world); - if (plotworld == null) - { + if (plotworld == null) { PS.get().config.createSection("worlds." + world); PS.get().loadWorld(world, PS.get().IMP.getGenerator(world, null)); - } - else - { + } else { String gen_string = PS.get().config.getString("worlds." + world + "." + "generator.plugin"); - if (gen_string == null) - { + if (gen_string == null) { gen_string = "PlotSquared"; } final PlotGenerator wrapper = PS.get().IMP.getGenerator(world, gen_string); - if (wrapper.isFull()) - { + if (wrapper.isFull()) { wrapper.augment(cluster, plotworld); - } - else - { + } else { MainUtil.sendMessage(plr, C.SETUP_INVALID_GENERATOR, StringMan.join(SetupUtils.generators.keySet(), ",")); return false; } @@ -237,20 +199,16 @@ public class Cluster extends SubCommand // create cluster cluster.settings.setAlias(name); DBFunc.createCluster(world, cluster); - if (!ClusterManager.clusters.containsKey(world)) - { + if (!ClusterManager.clusters.containsKey(world)) { ClusterManager.clusters.put(world, new HashSet()); } ClusterManager.clusters.get(world).add(cluster); // Add any existing plots to the current cluster - for (final Plot plot : plots) - { - if (plot.hasOwner()) - { + for (final Plot plot : plots) { + if (plot.hasOwner()) { final Flag flag = new Flag(FlagManager.getFlag("cluster"), cluster); FlagManager.addPlotFlag(plot, flag); - if (!cluster.isAdded(plot.owner)) - { + if (!cluster.isAdded(plot.owner)) { cluster.invited.add(plot.owner); DBFunc.setInvited(world, cluster, plot.owner); } @@ -261,65 +219,50 @@ public class Cluster extends SubCommand } case "disband": case "del": - case "delete": - { - if (!Permissions.hasPermission(plr, "plots.cluster.delete")) - { + case "delete": { + if (!Permissions.hasPermission(plr, "plots.cluster.delete")) { MainUtil.sendMessage(plr, C.NO_PERMISSION, "plots.cluster.delete"); return false; } - if ((args.length != 1) && (args.length != 2)) - { + if ((args.length != 1) && (args.length != 2)) { MainUtil.sendMessage(plr, C.COMMAND_SYNTAX, "/plot cluster delete [name]"); return false; } PlotCluster cluster; - if (args.length == 2) - { + if (args.length == 2) { cluster = ClusterManager.getCluster(plr.getLocation().getWorld(), args[1]); - if (cluster == null) - { + if (cluster == null) { MainUtil.sendMessage(plr, C.INVALID_CLUSTER, args[1]); return false; } - } - else - { + } else { cluster = ClusterManager.getCluster(plr.getLocation()); - if (cluster == null) - { + if (cluster == null) { MainUtil.sendMessage(plr, C.NOT_IN_CLUSTER); return false; } } - if (!cluster.owner.equals(UUIDHandler.getUUID(plr))) - { - if (!Permissions.hasPermission(plr, "plots.cluster.delete.other")) - { + if (!cluster.owner.equals(UUIDHandler.getUUID(plr))) { + if (!Permissions.hasPermission(plr, "plots.cluster.delete.other")) { MainUtil.sendMessage(plr, C.NO_PERMISSION, "plots.cluster.delete.other"); return false; } } final PlotWorld plotworld = PS.get().getPlotWorld(plr.getLocation().getWorld()); - if (plotworld.TYPE == 2) - { + if (plotworld.TYPE == 2) { final ArrayList toRemove = new ArrayList<>(); - for (final Plot plot : PS.get().getPlotsInWorld(plr.getLocation().getWorld())) - { + for (final Plot plot : PS.get().getPlotsInWorld(plr.getLocation().getWorld())) { final PlotCluster other = ClusterManager.getCluster(plot); - if (cluster.equals(other)) - { + if (cluster.equals(other)) { toRemove.add(plot); } } - for (final Plot plot : toRemove) - { + for (final Plot plot : toRemove) { plot.unclaim(); } } DBFunc.delete(cluster); - if (plotworld.TYPE == 2) - { + if (plotworld.TYPE == 2) { SetupUtils.manager.removePopulator(plr.getLocation().getWorld(), cluster); } ClusterManager.last = null; @@ -329,28 +272,23 @@ public class Cluster extends SubCommand return true; } case "res": - case "resize": - { - if (!Permissions.hasPermission(plr, "plots.cluster.resize")) - { + case "resize": { + if (!Permissions.hasPermission(plr, "plots.cluster.resize")) { MainUtil.sendMessage(plr, C.NO_PERMISSION, "plots.cluster.resize"); return false; } - if (args.length != 3) - { + if (args.length != 3) { MainUtil.sendMessage(plr, C.COMMAND_SYNTAX, "/plot cluster resize "); return false; } // check pos1 / pos2 PlotId pos1 = MainUtil.parseId(args[1]); PlotId pos2 = MainUtil.parseId(args[2]); - if ((pos1 == null) || (pos2 == null)) - { + if ((pos1 == null) || (pos2 == null)) { MainUtil.sendMessage(plr, C.NOT_VALID_PLOT_ID); return false; } - if ((pos2.x < pos1.x) || (pos2.y < pos1.y)) - { + if ((pos2.x < pos1.x) || (pos2.y < pos1.y)) { pos1 = new PlotId(Math.min(pos1.x, pos2.x), Math.min(pos1.y, pos2.y)); pos2 = new PlotId(Math.max(pos1.x, pos2.x), Math.max(pos1.y, pos2.y)); } @@ -358,15 +296,12 @@ public class Cluster extends SubCommand final Location loc = plr.getLocation(); final String world = loc.getWorld(); final PlotCluster cluster = ClusterManager.getCluster(loc); - if (cluster == null) - { + if (cluster == null) { MainUtil.sendMessage(plr, C.NOT_IN_CLUSTER); return false; } - if (!cluster.hasHelperRights(UUIDHandler.getUUID(plr))) - { - if (!Permissions.hasPermission(plr, "plots.cluster.resize.other")) - { + if (!cluster.hasHelperRights(UUIDHandler.getUUID(plr))) { + if (!Permissions.hasPermission(plr, "plots.cluster.resize.other")) { MainUtil.sendMessage(plr, C.NO_PERMISSION, "plots.cluster.resize.other"); return false; } @@ -374,8 +309,7 @@ public class Cluster extends SubCommand //check if overlap final PlotClusterId id = new PlotClusterId(pos1, pos2); final HashSet intersects = ClusterManager.getIntersects(world, id); - if (intersects.size() > 1) - { + if (intersects.size() > 1) { MainUtil.sendMessage(plr, C.CLUSTER_INTERSECTION, (intersects.size() - 1) + ""); return false; } @@ -384,46 +318,36 @@ public class Cluster extends SubCommand final HashSet removed = ((HashSet) existing.clone()); removed.removeAll(newplots); // Check expand / shrink - if (removed.size() > 0) - { - if (!Permissions.hasPermission(plr, "plots.cluster.resize.shrink")) - { + if (removed.size() > 0) { + if (!Permissions.hasPermission(plr, "plots.cluster.resize.shrink")) { MainUtil.sendMessage(plr, C.NO_PERMISSION, "plots.cluster.resize.shrink"); return false; } } newplots.removeAll(existing); - if (newplots.size() > 0) - { - if (!Permissions.hasPermission(plr, "plots.cluster.resize.expand")) - { + if (newplots.size() > 0) { + if (!Permissions.hasPermission(plr, "plots.cluster.resize.expand")) { MainUtil.sendMessage(plr, C.NO_PERMISSION, "plots.cluster.resize.expand"); return false; } } // Check allowed cluster size int current; - if (Settings.GLOBAL_LIMIT) - { + if (Settings.GLOBAL_LIMIT) { current = ClusterManager.getPlayerClusterCount(plr); - } - else - { + } else { current = ClusterManager.getPlayerClusterCount(world, plr); } current -= cluster.getArea() + (((1 + pos2.x) - pos1.x) * ((1 + pos2.y) - pos1.y)); final int allowed = Permissions.hasPermissionRange(plr, "plots.cluster", Settings.MAX_PLOTS); - if ((current + cluster.getArea()) > allowed) - { + if ((current + cluster.getArea()) > allowed) { MainUtil.sendMessage(plr, C.NO_PERMISSION, "plots.cluster." + (current + cluster.getArea())); return false; } - for (final Plot plot : removed) - { + for (final Plot plot : removed) { FlagManager.removePlotFlag(plot, "cluster"); } - for (final Plot plot : newplots) - { + for (final Plot plot : newplots) { FlagManager.addPlotFlag(plot, new Flag(FlagManager.getFlag("cluster"), cluster)); } // resize cluster @@ -433,41 +357,31 @@ public class Cluster extends SubCommand } case "reg": case "regenerate": - case "regen": - { - if (!Permissions.hasPermission(plr, "plots.cluster.delete")) - { + case "regen": { + if (!Permissions.hasPermission(plr, "plots.cluster.delete")) { MainUtil.sendMessage(plr, C.NO_PERMISSION, "plots.cluster.regen"); return false; } - if ((args.length != 1) && (args.length != 2)) - { + if ((args.length != 1) && (args.length != 2)) { MainUtil.sendMessage(plr, C.COMMAND_SYNTAX, "/plot cluster regen [name]"); return false; } PlotCluster cluster; - if (args.length == 2) - { + if (args.length == 2) { cluster = ClusterManager.getCluster(plr.getLocation().getWorld(), args[1]); - if (cluster == null) - { + if (cluster == null) { MainUtil.sendMessage(plr, C.INVALID_CLUSTER, args[1]); return false; } - } - else - { + } else { cluster = ClusterManager.getCluster(plr.getLocation()); - if (cluster == null) - { + if (cluster == null) { MainUtil.sendMessage(plr, C.NOT_IN_CLUSTER); return false; } } - if (!cluster.owner.equals(UUIDHandler.getUUID(plr))) - { - if (!Permissions.hasPermission(plr, "plots.cluster.regen.other")) - { + if (!cluster.owner.equals(UUIDHandler.getUUID(plr))) { + if (!Permissions.hasPermission(plr, "plots.cluster.regen.other")) { MainUtil.sendMessage(plr, C.NO_PERMISSION, "plots.cluster.regen.other"); return false; } @@ -479,49 +393,40 @@ public class Cluster extends SubCommand } case "add": case "inv": - case "invite": - { - if (!Permissions.hasPermission(plr, "plots.cluster.invite")) - { + case "invite": { + if (!Permissions.hasPermission(plr, "plots.cluster.invite")) { MainUtil.sendMessage(plr, C.NO_PERMISSION, "plots.cluster.invite"); return false; } - if (args.length != 2) - { + if (args.length != 2) { MainUtil.sendMessage(plr, C.COMMAND_SYNTAX, "/plot cluster invite "); return false; } // check if in cluster final PlotCluster cluster = ClusterManager.getCluster(plr.getLocation()); - if (cluster == null) - { + if (cluster == null) { MainUtil.sendMessage(plr, C.NOT_IN_CLUSTER); return false; } - if (!cluster.hasHelperRights(UUIDHandler.getUUID(plr))) - { - if (!Permissions.hasPermission(plr, "plots.cluster.invite.other")) - { + if (!cluster.hasHelperRights(UUIDHandler.getUUID(plr))) { + if (!Permissions.hasPermission(plr, "plots.cluster.invite.other")) { MainUtil.sendMessage(plr, C.NO_PERMISSION, "plots.cluster.invite.other"); return false; } } // check uuid final UUID uuid = UUIDHandler.getUUID(args[1], null); - if (uuid == null) - { + if (uuid == null) { MainUtil.sendMessage(plr, C.INVALID_PLAYER, args[2]); return false; } - if (!cluster.isAdded(uuid)) - { + if (!cluster.isAdded(uuid)) { // add the user if not added cluster.invited.add(uuid); final String world = plr.getLocation().getWorld(); DBFunc.setInvited(world, cluster, uuid); final PlotPlayer player = UUIDHandler.getPlayer(uuid); - if (player != null) - { + if (player != null) { MainUtil.sendMessage(player, C.CLUSTER_INVITED, cluster.getName()); } } @@ -530,62 +435,50 @@ public class Cluster extends SubCommand } case "k": case "remove": - case "kick": - { - if (!Permissions.hasPermission(plr, "plots.cluster.kick")) - { + case "kick": { + if (!Permissions.hasPermission(plr, "plots.cluster.kick")) { MainUtil.sendMessage(plr, C.NO_PERMISSION, "plots.cluster.kick"); return false; } - if (args.length != 2) - { + if (args.length != 2) { MainUtil.sendMessage(plr, C.COMMAND_SYNTAX, "/plot cluster kick "); return false; } final PlotCluster cluster = ClusterManager.getCluster(plr.getLocation()); - if (cluster == null) - { + if (cluster == null) { MainUtil.sendMessage(plr, C.NOT_IN_CLUSTER); return false; } - if (!cluster.hasHelperRights(UUIDHandler.getUUID(plr))) - { - if (!Permissions.hasPermission(plr, "plots.cluster.kick.other")) - { + if (!cluster.hasHelperRights(UUIDHandler.getUUID(plr))) { + if (!Permissions.hasPermission(plr, "plots.cluster.kick.other")) { MainUtil.sendMessage(plr, C.NO_PERMISSION, "plots.cluster.kick.other"); return false; } } // check uuid final UUID uuid = UUIDHandler.getUUID(args[1], null); - if (uuid == null) - { + if (uuid == null) { MainUtil.sendMessage(plr, C.INVALID_PLAYER, args[1]); return false; } // Can't kick if the player is yourself, the owner, or not added to the cluster - if (uuid.equals(UUIDHandler.getUUID(plr)) || uuid.equals(cluster.owner) || !cluster.isAdded(uuid)) - { + if (uuid.equals(UUIDHandler.getUUID(plr)) || uuid.equals(cluster.owner) || !cluster.isAdded(uuid)) { MainUtil.sendMessage(plr, C.CANNOT_KICK_PLAYER, cluster.getName()); return false; } - if (cluster.helpers.contains(uuid)) - { + if (cluster.helpers.contains(uuid)) { cluster.helpers.remove(uuid); DBFunc.removeHelper(cluster, uuid); } cluster.invited.remove(uuid); DBFunc.removeInvited(cluster, uuid); final PlotPlayer player = UUIDHandler.getPlayer(uuid); - if (player != null) - { + if (player != null) { MainUtil.sendMessage(player, C.CLUSTER_REMOVED, cluster.getName()); } - for (final Plot plot : new ArrayList<>(PS.get().getPlots(plr.getLocation().getWorld(), uuid))) - { + for (final Plot plot : new ArrayList<>(PS.get().getPlots(plr.getLocation().getWorld(), uuid))) { final PlotCluster current = ClusterManager.getCluster(plot); - if ((current != null) && current.equals(cluster)) - { + if ((current != null) && current.equals(cluster)) { plr.getLocation().getWorld(); plot.unclaim(); } @@ -594,61 +487,48 @@ public class Cluster extends SubCommand return true; } case "quit": - case "leave": - { - if (!Permissions.hasPermission(plr, "plots.cluster.leave")) - { + case "leave": { + if (!Permissions.hasPermission(plr, "plots.cluster.leave")) { MainUtil.sendMessage(plr, C.NO_PERMISSION, "plots.cluster.leave"); return false; } - if ((args.length != 1) && (args.length != 2)) - { + if ((args.length != 1) && (args.length != 2)) { MainUtil.sendMessage(plr, C.COMMAND_SYNTAX, "/plot cluster leave [name]"); return false; } PlotCluster cluster; - if (args.length == 2) - { + if (args.length == 2) { cluster = ClusterManager.getCluster(plr.getLocation().getWorld(), args[1]); - if (cluster == null) - { + if (cluster == null) { MainUtil.sendMessage(plr, C.INVALID_CLUSTER, args[1]); return false; } - } - else - { + } else { cluster = ClusterManager.getCluster(plr.getLocation()); - if (cluster == null) - { + if (cluster == null) { MainUtil.sendMessage(plr, C.NOT_IN_CLUSTER); return false; } } final UUID uuid = UUIDHandler.getUUID(plr); - if (!cluster.isAdded(uuid)) - { + if (!cluster.isAdded(uuid)) { MainUtil.sendMessage(plr, C.CLUSTER_NOT_ADDED); return false; } - if (uuid.equals(cluster.owner)) - { + if (uuid.equals(cluster.owner)) { MainUtil.sendMessage(plr, C.CLUSTER_CANNOT_LEAVE); return false; } - if (cluster.helpers.contains(uuid)) - { + if (cluster.helpers.contains(uuid)) { cluster.helpers.remove(uuid); DBFunc.removeHelper(cluster, uuid); } cluster.invited.remove(uuid); DBFunc.removeInvited(cluster, uuid); MainUtil.sendMessage(plr, C.CLUSTER_REMOVED, cluster.getName()); - for (final Plot plot : new ArrayList<>(PS.get().getPlots(plr.getLocation().getWorld(), uuid))) - { + for (final Plot plot : new ArrayList<>(PS.get().getPlots(plr.getLocation().getWorld(), uuid))) { final PlotCluster current = ClusterManager.getCluster(plot); - if ((current != null) && current.equals(cluster)) - { + if ((current != null) && current.equals(cluster)) { plr.getLocation().getWorld(); plot.unclaim(); } @@ -657,38 +537,31 @@ public class Cluster extends SubCommand } case "admin": case "helper": - case "helpers": - { - if (!Permissions.hasPermission(plr, "plots.cluster.helpers")) - { + case "helpers": { + if (!Permissions.hasPermission(plr, "plots.cluster.helpers")) { MainUtil.sendMessage(plr, C.NO_PERMISSION, "plots.cluster.helpers"); return false; } - if (args.length != 3) - { + if (args.length != 3) { MainUtil.sendMessage(plr, C.COMMAND_SYNTAX, "/plot cluster helpers "); return false; } final PlotCluster cluster = ClusterManager.getCluster(plr.getLocation()); - if (cluster == null) - { + if (cluster == null) { MainUtil.sendMessage(plr, C.NOT_IN_CLUSTER); return false; } final UUID uuid = UUIDHandler.getUUID(args[2], null); - if (uuid == null) - { + if (uuid == null) { MainUtil.sendMessage(plr, C.INVALID_PLAYER, args[2]); return false; } - if (args[1].toLowerCase().equals("add")) - { + if (args[1].toLowerCase().equals("add")) { cluster.helpers.add(uuid); DBFunc.setHelper(cluster, uuid); return MainUtil.sendMessage(plr, C.CLUSTER_ADDED_HELPER); } - if (args[1].toLowerCase().equals("remove")) - { + if (args[1].toLowerCase().equals("remove")) { cluster.helpers.remove(uuid); DBFunc.removeHelper(cluster, uuid); return MainUtil.sendMessage(plr, C.CLUSTER_REMOVED_HELPER); @@ -698,29 +571,23 @@ public class Cluster extends SubCommand } case "spawn": case "home": - case "tp": - { - if (!Permissions.hasPermission(plr, "plots.cluster.tp")) - { + case "tp": { + if (!Permissions.hasPermission(plr, "plots.cluster.tp")) { MainUtil.sendMessage(plr, C.NO_PERMISSION, "plots.cluster.tp"); return false; } - if (args.length != 2) - { + if (args.length != 2) { MainUtil.sendMessage(plr, C.COMMAND_SYNTAX, "/plot cluster tp "); return false; } final PlotCluster cluster = ClusterManager.getCluster(plr.getLocation().getWorld(), args[1]); - if (cluster == null) - { + if (cluster == null) { MainUtil.sendMessage(plr, C.INVALID_CLUSTER, args[1]); return false; } final UUID uuid = UUIDHandler.getUUID(plr); - if (!cluster.isAdded(uuid)) - { - if (!Permissions.hasPermission(plr, "plots.cluster.tp.other")) - { + if (!cluster.isAdded(uuid)) { + if (!Permissions.hasPermission(plr, "plots.cluster.tp.other")) { MainUtil.sendMessage(plr, C.NO_PERMISSION, "plots.cluster.tp.other"); return false; } @@ -731,41 +598,32 @@ public class Cluster extends SubCommand case "i": case "info": case "show": - case "information": - { - if (!Permissions.hasPermission(plr, "plots.cluster.info")) - { + case "information": { + if (!Permissions.hasPermission(plr, "plots.cluster.info")) { MainUtil.sendMessage(plr, C.NO_PERMISSION, "plots.cluster.info"); return false; } - if ((args.length != 1) && (args.length != 2)) - { + if ((args.length != 1) && (args.length != 2)) { MainUtil.sendMessage(plr, C.COMMAND_SYNTAX, "/plot cluster info [name]"); return false; } PlotCluster cluster; - if (args.length == 2) - { + if (args.length == 2) { cluster = ClusterManager.getCluster(plr.getLocation().getWorld(), args[1]); - if (cluster == null) - { + if (cluster == null) { MainUtil.sendMessage(plr, C.INVALID_CLUSTER, args[1]); return false; } - } - else - { + } else { cluster = ClusterManager.getCluster(plr.getLocation()); - if (cluster == null) - { + if (cluster == null) { MainUtil.sendMessage(plr, C.NOT_IN_CLUSTER); return false; } } final String id = cluster.toString(); String owner = UUIDHandler.getName(cluster.owner); - if (owner == null) - { + if (owner == null) { owner = "unknown"; } final String name = cluster.getName(); @@ -782,28 +640,22 @@ public class Cluster extends SubCommand } case "sh": case "setspawn": - case "sethome": - { - if (!Permissions.hasPermission(plr, "plots.cluster.sethome")) - { + case "sethome": { + if (!Permissions.hasPermission(plr, "plots.cluster.sethome")) { MainUtil.sendMessage(plr, C.NO_PERMISSION, "plots.cluster.sethome"); return false; } - if ((args.length != 1) && (args.length != 2)) - { + if ((args.length != 1) && (args.length != 2)) { MainUtil.sendMessage(plr, C.COMMAND_SYNTAX, "/plot cluster sethome"); return false; } final PlotCluster cluster = ClusterManager.getCluster(plr.getLocation()); - if (cluster == null) - { + if (cluster == null) { MainUtil.sendMessage(plr, C.NOT_IN_CLUSTER); return false; } - if (!cluster.hasHelperRights(UUIDHandler.getUUID(plr))) - { - if (!Permissions.hasPermission(plr, "plots.cluster.sethome.other")) - { + if (!cluster.hasHelperRights(UUIDHandler.getUUID(plr))) { + if (!Permissions.hasPermission(plr, "plots.cluster.sethome.other")) { MainUtil.sendMessage(plr, C.NO_PERMISSION, "plots.cluster.sethome.other"); return false; } diff --git a/src/main/java/com/intellectualcrafters/plot/commands/CommandCategory.java b/src/main/java/com/intellectualcrafters/plot/commands/CommandCategory.java index 2f324404e..704528e4f 100644 --- a/src/main/java/com/intellectualcrafters/plot/commands/CommandCategory.java +++ b/src/main/java/com/intellectualcrafters/plot/commands/CommandCategory.java @@ -4,8 +4,7 @@ package com.intellectualcrafters.plot.commands; * CommandCategory * */ -public enum CommandCategory -{ +public enum CommandCategory { /** * Claiming Commands * @@ -40,20 +39,18 @@ public enum CommandCategory * The category name (Readable) */ private final String name; - + /** * Constructor * * @param name readable name */ - CommandCategory(final String name) - { + CommandCategory(final String name) { this.name = name; } - + @Override - public String toString() - { + public String toString() { return name; } } diff --git a/src/main/java/com/intellectualcrafters/plot/commands/CommandPermission.java b/src/main/java/com/intellectualcrafters/plot/commands/CommandPermission.java index ecd451c75..8c1fecf2e 100644 --- a/src/main/java/com/intellectualcrafters/plot/commands/CommandPermission.java +++ b/src/main/java/com/intellectualcrafters/plot/commands/CommandPermission.java @@ -27,28 +27,25 @@ import com.intellectualcrafters.plot.util.Permissions; * Created by Citymonstret on 2014-08-03. * */ -public class CommandPermission -{ +public class CommandPermission { /** * Permission Node */ public final String permission; - + /** * @param permission Command Permission */ - public CommandPermission(final String permission) - { + public CommandPermission(final String permission) { this.permission = permission.toLowerCase(); } - + /** * @param player Does the player have the permission? * * @return true of player has the required permission node */ - public boolean hasPermission(final PlotPlayer player) - { + public boolean hasPermission(final PlotPlayer player) { return Permissions.hasPermission(player, permission); } } diff --git a/src/main/java/com/intellectualcrafters/plot/commands/Comment.java b/src/main/java/com/intellectualcrafters/plot/commands/Comment.java index f7b16cf6b..381cd5dac 100644 --- a/src/main/java/com/intellectualcrafters/plot/commands/Comment.java +++ b/src/main/java/com/intellectualcrafters/plot/commands/Comment.java @@ -35,27 +35,17 @@ import com.intellectualcrafters.plot.util.StringMan; import com.intellectualcrafters.plot.util.UUIDHandler; import com.plotsquared.general.commands.CommandDeclaration; -@CommandDeclaration( -command = "comment", -aliases = { "msg" }, -description = "Comment on a plot", -category = CommandCategory.ACTIONS, -requiredType = RequiredType.NONE, -permission = "plots.comment") -public class Comment extends SubCommand -{ - +@CommandDeclaration(command = "comment", aliases = { "msg" }, description = "Comment on a plot", category = CommandCategory.ACTIONS, requiredType = RequiredType.NONE, permission = "plots.comment") +public class Comment extends SubCommand { + @Override - public boolean onCommand(final PlotPlayer player, final String[] args) - { - if (args.length < 2) - { + public boolean onCommand(final PlotPlayer player, final String[] args) { + if (args.length < 2) { sendMessage(player, C.COMMENT_SYNTAX, StringMan.join(CommentManager.inboxes.keySet(), "|")); return false; } final CommentInbox inbox = CommentManager.inboxes.get(args[0].toLowerCase()); - if (inbox == null) - { + if (inbox == null) { sendMessage(player, C.COMMENT_SYNTAX, StringMan.join(CommentManager.inboxes.keySet(), "|")); return false; } @@ -63,39 +53,31 @@ public class Comment extends SubCommand final Location loc = player.getLocation(); final PlotId id = PlotId.fromString(args[1]); int index; - if (id != null) - { - if (args.length < 4) - { + if (id != null) { + if (args.length < 4) { sendMessage(player, C.COMMENT_SYNTAX, StringMan.join(CommentManager.inboxes.keySet(), "|")); return false; } index = 2; plot = MainUtil.getPlot(loc.getWorld(), id); - } - else - { + } else { index = 1; plot = MainUtil.getPlot(loc); } - if (!inbox.canWrite(plot, player)) - { + if (!inbox.canWrite(plot, player)) { sendMessage(player, C.NO_PERM_INBOX, ""); return false; } final String message = StringMan.join(Arrays.copyOfRange(args, index, args.length), " "); final PlotComment comment = new PlotComment(loc.getWorld(), id, message, player.getName(), inbox.toString(), System.currentTimeMillis()); final boolean result = inbox.addComment(plot, comment); - if (!result) - { + if (!result) { sendMessage(player, C.NO_PLOT_INBOX, ""); sendMessage(player, C.COMMENT_SYNTAX, StringMan.join(CommentManager.inboxes.keySet(), "|")); return false; } - for (final PlotPlayer pp : UUIDHandler.getPlayers().values()) - { - if (pp.getAttribute("chatspy")) - { + for (final PlotPlayer pp : UUIDHandler.getPlayers().values()) { + if (pp.getAttribute("chatspy")) { MainUtil.sendMessage(pp, "/plot comment " + StringMan.join(args, " ")); } } diff --git a/src/main/java/com/intellectualcrafters/plot/commands/Condense.java b/src/main/java/com/intellectualcrafters/plot/commands/Condense.java index f57c54c96..461df81a3 100644 --- a/src/main/java/com/intellectualcrafters/plot/commands/Condense.java +++ b/src/main/java/com/intellectualcrafters/plot/commands/Condense.java @@ -35,52 +35,37 @@ import com.intellectualcrafters.plot.util.MainUtil; import com.intellectualcrafters.plot.util.MathMan; import com.plotsquared.general.commands.CommandDeclaration; -@CommandDeclaration( -command = "condense", -permission = "plots.admin", -description = "Condense a plotworld", -category = CommandCategory.DEBUG, -requiredType = RequiredType.CONSOLE) -public class Condense extends SubCommand -{ - +@CommandDeclaration(command = "condense", permission = "plots.admin", description = "Condense a plotworld", category = CommandCategory.DEBUG, requiredType = RequiredType.CONSOLE) +public class Condense extends SubCommand { + public static boolean TASK = false; - + @Override - public boolean onCommand(final PlotPlayer plr, final String... args) - { - if ((args.length != 2) && (args.length != 3)) - { + public boolean onCommand(final PlotPlayer plr, final String... args) { + if ((args.length != 2) && (args.length != 3)) { MainUtil.sendMessage(plr, "/plot condense [radius]"); return false; } final String worldname = args[0]; - if (!BlockManager.manager.isWorld(worldname) || !PS.get().isPlotWorld(worldname)) - { + if (!BlockManager.manager.isWorld(worldname) || !PS.get().isPlotWorld(worldname)) { MainUtil.sendMessage(plr, "INVALID WORLD"); return false; } - switch (args[1].toLowerCase()) - { - case "start": - { - if (args.length == 2) - { + switch (args[1].toLowerCase()) { + case "start": { + if (args.length == 2) { MainUtil.sendMessage(plr, "/plot condense " + worldname + " start "); return false; } - if (TASK) - { + if (TASK) { MainUtil.sendMessage(plr, "TASK ALREADY STARTED"); return false; } - if (args.length == 2) - { + if (args.length == 2) { MainUtil.sendMessage(plr, "/plot condense " + worldname + " start "); return false; } - if (!MathMan.isInteger(args[2])) - { + if (!MathMan.isInteger(args[2])) { MainUtil.sendMessage(plr, "INVALID RADIUS"); return false; } @@ -88,76 +73,61 @@ public class Condense extends SubCommand final Collection plots = PS.get().getPlotsInWorld(worldname); final int size = plots.size(); final int minimum_radius = (int) Math.ceil((Math.sqrt(size) / 2) + 1); - if (radius < minimum_radius) - { + if (radius < minimum_radius) { MainUtil.sendMessage(plr, "RADIUS TOO SMALL"); return false; } final List to_move = new ArrayList<>(getPlots(plots, radius)); final List free = new ArrayList<>(); PlotId start = new PlotId(0, 0); - while ((start.x <= minimum_radius) && (start.y <= minimum_radius)) - { + while ((start.x <= minimum_radius) && (start.y <= minimum_radius)) { final Plot plot = MainUtil.getPlot(worldname, start); - if (!plot.hasOwner()) - { + if (!plot.hasOwner()) { free.add(plot.id); } start = Auto.getNextPlot(start, 1); } - if ((free.size() == 0) || (to_move.size() == 0)) - { + if ((free.size() == 0) || (to_move.size() == 0)) { MainUtil.sendMessage(plr, "NO FREE PLOTS FOUND"); return false; } - MainUtil.move(MainUtil.getPlot(worldname, to_move.get(0)), MainUtil.getPlot(worldname, free.get(0)), new Runnable() - { + MainUtil.move(MainUtil.getPlot(worldname, to_move.get(0)), MainUtil.getPlot(worldname, free.get(0)), new Runnable() { @Override - public void run() - { - if (!TASK) - { + public void run() { + if (!TASK) { MainUtil.sendMessage(plr, "CONDENSE TASK CANCELLED"); return; } to_move.remove(0); free.remove(0); int index = 0; - for (final PlotId id : to_move) - { + for (final PlotId id : to_move) { final Plot plot = MainUtil.getPlot(worldname, id); - if (plot.hasOwner()) - { + if (plot.hasOwner()) { break; } index++; } - for (int i = 0; i < index; i++) - { + for (int i = 0; i < index; i++) { to_move.remove(0); } index = 0; - for (final PlotId id : free) - { + for (final PlotId id : free) { final Plot plot = MainUtil.getPlot(worldname, id); - if (!plot.hasOwner()) - { + if (!plot.hasOwner()) { break; } index++; } - for (int i = 0; i < index; i++) - { + for (int i = 0; i < index; i++) { free.remove(0); } - if (to_move.size() == 0) - { + if (to_move.size() == 0) { MainUtil.sendMessage(plr, "TASK COMPLETE. PLEASE VERIFY THAT NO NEW PLOTS HAVE BEEN CLAIMED DURING TASK."); TASK = false; return; } - if (free.size() == 0) - { + if (free.size() == 0) { MainUtil.sendMessage(plr, "TASK FAILED. NO FREE PLOTS FOUND!"); TASK = false; return; @@ -170,10 +140,8 @@ public class Condense extends SubCommand MainUtil.sendMessage(plr, "TASK STARTED..."); return true; } - case "stop": - { - if (!TASK) - { + case "stop": { + if (!TASK) { MainUtil.sendMessage(plr, "TASK ALREADY STOPPED"); return false; } @@ -181,15 +149,12 @@ public class Condense extends SubCommand MainUtil.sendMessage(plr, "TASK STOPPED"); return true; } - case "info": - { - if (args.length == 2) - { + case "info": { + if (args.length == 2) { MainUtil.sendMessage(plr, "/plot condense " + worldname + " info "); return false; } - if (!MathMan.isInteger(args[2])) - { + if (!MathMan.isInteger(args[2])) { MainUtil.sendMessage(plr, "INVALID RADIUS"); return false; } @@ -197,8 +162,7 @@ public class Condense extends SubCommand final Collection plots = PS.get().getPlotsInWorld(worldname); final int size = plots.size(); final int minimum_radius = (int) Math.ceil((Math.sqrt(size) / 2) + 1); - if (radius < minimum_radius) - { + if (radius < minimum_radius) { MainUtil.sendMessage(plr, "RADIUS TOO SMALL"); return false; } @@ -218,14 +182,11 @@ public class Condense extends SubCommand MainUtil.sendMessage(plr, "/plot condense " + worldname + " [radius]"); return false; } - - public Set getPlots(final Collection plots, final int radius) - { + + public Set getPlots(final Collection plots, final int radius) { final HashSet outside = new HashSet<>(); - for (final Plot plot : plots) - { - if ((plot.id.x > radius) || (plot.id.x < -radius) || (plot.id.y > radius) || (plot.id.y < -radius)) - { + for (final Plot plot : plots) { + if ((plot.id.x > radius) || (plot.id.x < -radius) || (plot.id.y > radius) || (plot.id.y < -radius)) { outside.add(plot.id); } } diff --git a/src/main/java/com/intellectualcrafters/plot/commands/Confirm.java b/src/main/java/com/intellectualcrafters/plot/commands/Confirm.java index 8d409a90e..88574f225 100644 --- a/src/main/java/com/intellectualcrafters/plot/commands/Confirm.java +++ b/src/main/java/com/intellectualcrafters/plot/commands/Confirm.java @@ -28,26 +28,18 @@ import com.intellectualcrafters.plot.util.MainUtil; import com.intellectualcrafters.plot.util.TaskManager; import com.plotsquared.general.commands.CommandDeclaration; -@CommandDeclaration( -command = "confirm", -permission = "plots.use", -description = "Confirm an action", -category = CommandCategory.ACTIONS) -public class Confirm extends SubCommand -{ - +@CommandDeclaration(command = "confirm", permission = "plots.use", description = "Confirm an action", category = CommandCategory.ACTIONS) +public class Confirm extends SubCommand { + @Override - public boolean onCommand(final PlotPlayer plr, final String... args) - { + public boolean onCommand(final PlotPlayer plr, final String... args) { final CmdInstance command = CmdConfirm.getPending(plr); - if (command == null) - { + if (command == null) { MainUtil.sendMessage(plr, C.FAILED_CONFIRM); return false; } CmdConfirm.removePending(plr); - if ((System.currentTimeMillis() - command.timestamp) > 20000) - { + if ((System.currentTimeMillis() - command.timestamp) > 20000) { MainUtil.sendMessage(plr, C.FAILED_CONFIRM); return false; } diff --git a/src/main/java/com/intellectualcrafters/plot/commands/Continue.java b/src/main/java/com/intellectualcrafters/plot/commands/Continue.java index 61fc281ee..12deb58f1 100644 --- a/src/main/java/com/intellectualcrafters/plot/commands/Continue.java +++ b/src/main/java/com/intellectualcrafters/plot/commands/Continue.java @@ -36,32 +36,28 @@ description = "Continue a plot that was previously marked as done", permission = "plots.continue", category = CommandCategory.ACTIONS, requiredType = RequiredType.NONE) -public class Continue extends SubCommand -{ - +public class Continue extends SubCommand { + @Override - public boolean onCommand(final PlotPlayer plr, final String[] args) - { + public boolean onCommand(final PlotPlayer plr, final String[] args) { final Location loc = plr.getLocation(); final Plot plot = MainUtil.getPlot(loc); - if ((plot == null) || !plot.hasOwner()) { return !sendMessage(plr, C.NOT_IN_PLOT); } - if ((!plot.isOwner(plr.getUUID())) && !Permissions.hasPermission(plr, "plots.admin.command.continue")) - { + if ((plot == null) || !plot.hasOwner()) { + return !sendMessage(plr, C.NOT_IN_PLOT); + } + if ((!plot.isOwner(plr.getUUID())) && !Permissions.hasPermission(plr, "plots.admin.command.continue")) { MainUtil.sendMessage(plr, C.NO_PLOT_PERMS); return false; } - if (!plot.getSettings().flags.containsKey("done")) - { + if (!plot.getSettings().flags.containsKey("done")) { MainUtil.sendMessage(plr, C.DONE_NOT_DONE); return false; } - if (Settings.DONE_COUNTS_TOWARDS_LIMIT && (MainUtil.getAllowedPlots(plr) >= MainUtil.getPlayerPlotCount(plr))) - { + if (Settings.DONE_COUNTS_TOWARDS_LIMIT && (MainUtil.getAllowedPlots(plr) >= MainUtil.getPlayerPlotCount(plr))) { MainUtil.sendMessage(plr, C.NO_PERMISSION, "plots.admin.command.continue"); return false; } - if (MainUtil.runners.containsKey(plot)) - { + if (MainUtil.runners.containsKey(plot)) { MainUtil.sendMessage(plr, C.WAIT_FOR_TIMER); return false; } diff --git a/src/main/java/com/intellectualcrafters/plot/commands/Copy.java b/src/main/java/com/intellectualcrafters/plot/commands/Copy.java index 76314bf6b..1393d5607 100644 --- a/src/main/java/com/intellectualcrafters/plot/commands/Copy.java +++ b/src/main/java/com/intellectualcrafters/plot/commands/Copy.java @@ -38,54 +38,43 @@ category = CommandCategory.ACTIONS, description = "Copy a plot", usage = "/plot copy ", requiredType = RequiredType.NONE) -public class Copy extends SubCommand -{ - - public Copy() - { - requiredArguments = new Argument[] { - Argument.PlotID - }; +public class Copy extends SubCommand { + + public Copy() { + requiredArguments = new Argument[] { Argument.PlotID }; } - + @Override - public boolean onCommand(final PlotPlayer plr, final String... args) - { + public boolean onCommand(final PlotPlayer plr, final String... args) { final Location loc = plr.getLocation(); final Plot plot1 = MainUtil.getPlot(loc); - if (plot1 == null) { return !MainUtil.sendMessage(plr, C.NOT_IN_PLOT); } - if (!plot1.isAdded(plr.getUUID()) && !Permissions.hasPermission(plr, C.PERMISSION_ADMIN.s())) - { + if (plot1 == null) { + return !MainUtil.sendMessage(plr, C.NOT_IN_PLOT); + } + if (!plot1.isAdded(plr.getUUID()) && !Permissions.hasPermission(plr, C.PERMISSION_ADMIN.s())) { MainUtil.sendMessage(plr, C.NO_PLOT_PERMS); return false; } final String world = loc.getWorld(); final PlotId plot2 = MainUtil.parseId(args[0]); - if ((plot2 == null)) - { + if ((plot2 == null)) { MainUtil.sendMessage(plr, C.NOT_VALID_PLOT_ID); MainUtil.sendMessage(plr, C.COMMAND_SYNTAX, "/plot copy "); return false; } - if (plot1.id.equals(plot2)) - { + if (plot1.id.equals(plot2)) { MainUtil.sendMessage(plr, C.NOT_VALID_PLOT_ID); MainUtil.sendMessage(plr, C.COMMAND_SYNTAX, "/plot copy "); return false; } - if (MainUtil.copy(world, plot1.id, plot2, new Runnable() - { + if (MainUtil.copy(world, plot1.id, plot2, new Runnable() { @Override - public void run() - { + public void run() { MainUtil.sendMessage(plr, C.COPY_SUCCESS); } - })) - { + })) { return true; - } - else - { + } else { MainUtil.sendMessage(plr, C.REQUIRES_UNOWNED); return false; } diff --git a/src/main/java/com/intellectualcrafters/plot/commands/CreateRoadSchematic.java b/src/main/java/com/intellectualcrafters/plot/commands/CreateRoadSchematic.java index a3c5ea544..d267581f2 100644 --- a/src/main/java/com/intellectualcrafters/plot/commands/CreateRoadSchematic.java +++ b/src/main/java/com/intellectualcrafters/plot/commands/CreateRoadSchematic.java @@ -38,16 +38,18 @@ requiredType = RequiredType.NONE, permission = "plots.createroadschematic", description = "Add a road schematic to your world using the roads around your current plot", usage = "/plot createroadschematic") -public class CreateRoadSchematic extends SubCommand -{ - +public class CreateRoadSchematic extends SubCommand { + @Override - public boolean onCommand(final PlotPlayer player, final String... args) - { + public boolean onCommand(final PlotPlayer player, final String... args) { final Location loc = player.getLocation(); final Plot plot = MainUtil.getPlot(loc); - if (plot == null) { return sendMessage(player, C.NOT_IN_PLOT); } - if (!(PS.get().getPlotWorld(loc.getWorld()) instanceof HybridPlotWorld)) { return sendMessage(player, C.NOT_IN_PLOT_WORLD); } + if (plot == null) { + return sendMessage(player, C.NOT_IN_PLOT); + } + if (!(PS.get().getPlotWorld(loc.getWorld()) instanceof HybridPlotWorld)) { + return sendMessage(player, C.NOT_IN_PLOT_WORLD); + } HybridUtils.manager.setupRoadSchematic(plot); MainUtil.sendMessage(player, "&6Saved new road schematic. To test the road, fly to a few other plots and use /plot debugroadregen"); return true; diff --git a/src/main/java/com/intellectualcrafters/plot/commands/Database.java b/src/main/java/com/intellectualcrafters/plot/commands/Database.java index b3b669038..72de12724 100644 --- a/src/main/java/com/intellectualcrafters/plot/commands/Database.java +++ b/src/main/java/com/intellectualcrafters/plot/commands/Database.java @@ -28,77 +28,57 @@ requiredType = RequiredType.CONSOLE, usage = "/plots database [world] " ) -public class Database extends SubCommand -{ - - public static void insertPlots(final SQLManager manager, final ArrayList plots, final PlotPlayer player) - { - TaskManager.runTaskAsync(new Runnable() - { +public class Database extends SubCommand { + + public static void insertPlots(final SQLManager manager, final ArrayList plots, final PlotPlayer player) { + TaskManager.runTaskAsync(new Runnable() { @Override - public void run() - { - try - { + public void run() { + try { final ArrayList ps = new ArrayList<>(); - for (final Plot p : plots) - { + for (final Plot p : plots) { ps.add(p); } MainUtil.sendMessage(player, "&6Starting..."); - manager.createPlotsAndData(ps, new Runnable() - { + manager.createPlotsAndData(ps, new Runnable() { @Override - public void run() - { + public void run() { MainUtil.sendMessage(player, "&6Database conversion finished!"); manager.close(); } }); - } - catch (final Exception e) - { + } catch (final Exception e) { MainUtil.sendMessage(player, "Failed to insert plot objects, see stacktrace for info"); e.printStackTrace(); } } }); } - + @Override - public boolean onCommand(final PlotPlayer player, String[] args) - { - if (args.length < 1) - { + public boolean onCommand(final PlotPlayer player, String[] args) { + if (args.length < 1) { MainUtil.sendMessage(player, "/plot database [world] "); return false; } ArrayList plots; - if (PS.get().isPlotWorld(args[0])) - { + if (PS.get().isPlotWorld(args[0])) { plots = PS.get().sortPlotsByTemp(PS.get().getPlotsInWorld(args[0])); args = Arrays.copyOfRange(args, 1, args.length); - } - else - { + } else { plots = PS.get().sortPlotsByTemp(PS.get().getPlotsRaw()); } - if (args.length < 1) - { + if (args.length < 1) { MainUtil.sendMessage(player, "/plot database [world] "); MainUtil.sendMessage(player, "[arg] indicates an optional argument"); return false; } - try - { + try { com.intellectualcrafters.plot.database.Database implementation; String prefix = ""; - switch (args[0].toLowerCase()) - { - case "import": - { - if (args.length < 2) - { + switch (args[0].toLowerCase()) { + case "import": { + if (args.length < 2) { MainUtil.sendMessage(player, "/plot database import [sqlite file] [prefix]"); return false; } @@ -107,13 +87,10 @@ public class Database extends SubCommand final SQLManager manager = new SQLManager(implementation, (args.length == 3) ? args[2] : "", true); final ConcurrentHashMap> map = manager.getPlots(); plots = new ArrayList(); - for (final Entry> entry : map.entrySet()) - { - for (final Entry entry2 : entry.getValue().entrySet()) - { + for (final Entry> entry : map.entrySet()) { + for (final Entry entry2 : entry.getValue().entrySet()) { final Plot plot = entry2.getValue(); - if (PS.get().getPlot(plot.world, plot.id) != null) - { + if (PS.get().getPlot(plot.world, plot.id) != null) { MainUtil.sendMessage(player, "Skipping duplicate plot: " + plot + " | id=" + plot.temp); continue; } @@ -121,44 +98,42 @@ public class Database extends SubCommand plots.add(entry2.getValue()); } } - DBFunc.createPlotsAndData(plots, new Runnable() - { + DBFunc.createPlotsAndData(plots, new Runnable() { @Override - public void run() - { + public void run() { MainUtil.sendMessage(player, "&6Database conversion finished!"); } }); return true; } case "mysql": - if (args.length < 6) { return MainUtil.sendMessage(player, "/plot database mysql [host] [port] [username] [password] [database] {prefix}"); } + if (args.length < 6) { + return MainUtil.sendMessage(player, "/plot database mysql [host] [port] [username] [password] [database] {prefix}"); + } final String host = args[1]; final String port = args[2]; final String username = args[3]; final String password = args[4]; final String database = args[5]; - if (args.length > 6) - { + if (args.length > 6) { prefix = args[6]; } implementation = new MySQL(host, port, database, username, password); break; case "sqlite": - if (args.length < 2) { return MainUtil.sendMessage(player, "/plot database sqlite [file]"); } + if (args.length < 2) { + return MainUtil.sendMessage(player, "/plot database sqlite [file]"); + } implementation = new SQLite(PS.get().IMP.getDirectory() + File.separator + args[1] + ".db"); break; default: return MainUtil.sendMessage(player, "/plot database [sqlite/mysql]"); } - try - { + try { final SQLManager manager = new SQLManager(implementation, prefix, true); insertPlots(manager, plots, player); return true; - } - catch (final Exception e) - { + } catch (final Exception e) { MainUtil.sendMessage(player, "$1Failed to save plots, read stacktrace for info"); MainUtil.sendMessage(player, "&d==== Here is an ugly stacktrace, if you are interested in those things ==="); e.printStackTrace(); @@ -166,9 +141,7 @@ public class Database extends SubCommand MainUtil.sendMessage(player, "$1Please make sure you are using the correct arguments!"); return false; } - } - catch (final Exception e) - { + } catch (final Exception e) { MainUtil.sendMessage(player, "$1Failed to open connection, read stacktrace for info"); MainUtil.sendMessage(player, "&d==== Here is an ugly stacktrace, if you are interested in those things ==="); e.printStackTrace(); diff --git a/src/main/java/com/intellectualcrafters/plot/commands/Debug.java b/src/main/java/com/intellectualcrafters/plot/commands/Debug.java index 7d7b107c9..fe1a44ffe 100644 --- a/src/main/java/com/intellectualcrafters/plot/commands/Debug.java +++ b/src/main/java/com/intellectualcrafters/plot/commands/Debug.java @@ -27,23 +27,14 @@ import com.intellectualcrafters.plot.util.Lag; import com.intellectualcrafters.plot.util.MainUtil; import com.plotsquared.general.commands.CommandDeclaration; -@CommandDeclaration( -command = "debug", -category = CommandCategory.DEBUG, -description = "Show debug information", -usage = "/plot debug [msg]", -permission = "plots.admin") -public class Debug extends SubCommand -{ - +@CommandDeclaration(command = "debug", category = CommandCategory.DEBUG, description = "Show debug information", usage = "/plot debug [msg]", permission = "plots.admin") +public class Debug extends SubCommand { + @Override - public boolean onCommand(final PlotPlayer plr, final String[] args) - { - if ((args.length > 0) && args[0].equalsIgnoreCase("msg")) - { + public boolean onCommand(final PlotPlayer plr, final String[] args) { + if ((args.length > 0) && args[0].equalsIgnoreCase("msg")) { final StringBuilder msg = new StringBuilder(); - for (final C c : C.values()) - { + for (final C c : C.values()) { msg.append(c.s()).append("\n"); } MainUtil.sendMessage(plr, msg.toString()); @@ -59,8 +50,7 @@ public class Debug extends SubCommand } { final StringBuilder worlds = new StringBuilder(""); - for (final String world : PS.get().getPlotWorlds()) - { + for (final String world : PS.get().getPlotWorlds()) { worlds.append(world).append(" "); } information.append(header); @@ -80,14 +70,12 @@ public class Debug extends SubCommand } return true; } - - private String getSection(final String line, final String val) - { + + private String getSection(final String line, final String val) { return line.replaceAll("%val%", val) + "\n"; } - - private String getLine(final String line, final String var, final Object val) - { + + private String getLine(final String line, final String var, final Object val) { return line.replaceAll("%var%", var).replaceAll("%val%", "" + val) + "\n"; } } diff --git a/src/main/java/com/intellectualcrafters/plot/commands/DebugAllowUnsafe.java b/src/main/java/com/intellectualcrafters/plot/commands/DebugAllowUnsafe.java index ce2738892..90bc2155d 100644 --- a/src/main/java/com/intellectualcrafters/plot/commands/DebugAllowUnsafe.java +++ b/src/main/java/com/intellectualcrafters/plot/commands/DebugAllowUnsafe.java @@ -15,26 +15,21 @@ usage = "/plot debugallowunsafe", category = CommandCategory.DEBUG, requiredType = RequiredType.NONE, permission = "plots.debugallowunsafe") -public class DebugAllowUnsafe extends SubCommand -{ - +public class DebugAllowUnsafe extends SubCommand { + public static final List unsafeAllowed = new ArrayList<>(); - + @Override - public boolean onCommand(final PlotPlayer plr, final String... args) - { - - if (unsafeAllowed.contains(plr.getUUID())) - { + public boolean onCommand(final PlotPlayer plr, final String... args) { + + if (unsafeAllowed.contains(plr.getUUID())) { unsafeAllowed.remove(plr.getUUID()); sendMessage(plr, C.DEBUGALLOWUNSAFE_OFF); - } - else - { + } else { unsafeAllowed.add(plr.getUUID()); sendMessage(plr, C.DEBUGALLOWUNSAFE_ON); } return true; } - + } diff --git a/src/main/java/com/intellectualcrafters/plot/commands/DebugClaimTest.java b/src/main/java/com/intellectualcrafters/plot/commands/DebugClaimTest.java index 3527ef53e..bd0d713f2 100644 --- a/src/main/java/com/intellectualcrafters/plot/commands/DebugClaimTest.java +++ b/src/main/java/com/intellectualcrafters/plot/commands/DebugClaimTest.java @@ -48,49 +48,44 @@ description = "If you accidentally delete your database, this command will attem category = CommandCategory.DEBUG, requiredType = RequiredType.CONSOLE, permission = "plots.debugclaimtest") -public class DebugClaimTest extends SubCommand -{ - - public static boolean claimPlot(final PlotPlayer player, final Plot plot, final boolean teleport) - { +public class DebugClaimTest extends SubCommand { + + public static boolean claimPlot(final PlotPlayer player, final Plot plot, final boolean teleport) { return claimPlot(player, plot, teleport, ""); } - - public static boolean claimPlot(final PlotPlayer player, final Plot plot, final boolean teleport, final String schematic) - { + + public static boolean claimPlot(final PlotPlayer player, final Plot plot, final boolean teleport, final String schematic) { final boolean result = EventUtil.manager.callClaim(player, plot, false); - if (result) - { + if (result) { MainUtil.createPlot(player.getUUID(), plot); MainUtil.setSign(player.getName(), plot); MainUtil.sendMessage(player, C.CLAIMED); - if (teleport) - { + if (teleport) { MainUtil.teleportPlayer(player, player.getLocation(), plot); } } return !result; } - + @Override - public boolean onCommand(final PlotPlayer plr, final String[] args) - { - if (args.length < 3) { return !MainUtil - .sendMessage( - null, - "If you accidentally delete your database, this command will attempt to restore all plots based on the data from the plot signs. \n\n&cMissing world arg /plot debugclaimtest {world} {PlotId min} {PlotId max}"); } + public boolean onCommand(final PlotPlayer plr, final String[] args) { + if (args.length < 3) { + return !MainUtil + .sendMessage( + null, + "If you accidentally delete your database, this command will attempt to restore all plots based on the data from the plot signs. \n\n&cMissing world arg /plot debugclaimtest {world} {PlotId min} {PlotId max}"); + } final String world = args[0]; - if (!BlockManager.manager.isWorld(world) || !PS.get().isPlotWorld(world)) { return !MainUtil.sendMessage(null, "&cInvalid plot world!"); } + if (!BlockManager.manager.isWorld(world) || !PS.get().isPlotWorld(world)) { + return !MainUtil.sendMessage(null, "&cInvalid plot world!"); + } PlotId min, max; - try - { + try { args[1].split(";"); args[2].split(";"); min = PlotId.fromString(args[1]); max = PlotId.fromString(args[2]); - } - catch (final Exception e) - { + } catch (final Exception e) { return !MainUtil.sendMessage(null, "&cInvalid min/max values. &7The values are to Plot IDs in the format &cX;Y &7where X;Y are the plot coords\nThe conversion will only check the plots in the selected area."); } @@ -99,77 +94,59 @@ public class DebugClaimTest extends SubCommand final PlotManager manager = PS.get().getPlotManager(world); final PlotWorld plotworld = PS.get().getPlotWorld(world); final ArrayList plots = new ArrayList<>(); - for (final PlotId id : MainUtil.getPlotSelectionIds(min, max)) - { + for (final PlotId id : MainUtil.getPlotSelectionIds(min, max)) { final Plot plot = MainUtil.getPlot(world, id); - if (PS.get().getPlot(world, plot.id) != null) - { + if (PS.get().getPlot(world, plot.id) != null) { MainUtil.sendMessage(null, " - &cDB Already contains: " + plot.id); continue; } final Location loc = manager.getSignLoc(plotworld, plot); final ChunkLoc chunk = new ChunkLoc(loc.getX() >> 4, loc.getZ() >> 4); final boolean result = ChunkManager.manager.loadChunk(world, chunk, false); - if (!result) - { + if (!result) { continue; } final String[] lines = BlockManager.manager.getSign(loc); - if (lines != null) - { + if (lines != null) { String line = lines[2]; - if ((line != null) && (line.length() > 2)) - { + if ((line != null) && (line.length() > 2)) { line = line.substring(2); final BiMap map = UUIDHandler.getUuidMap(); UUID uuid = (map.get(new StringWrapper(line))); - if (uuid == null) - { - for (final StringWrapper string : map.keySet()) - { - if (string.value.toLowerCase().startsWith(line.toLowerCase())) - { + if (uuid == null) { + for (final StringWrapper string : map.keySet()) { + if (string.value.toLowerCase().startsWith(line.toLowerCase())) { uuid = map.get(string); break; } } } - if (uuid == null) - { + if (uuid == null) { uuid = UUIDHandler.getUUID(line, null); } - if (uuid != null) - { + if (uuid != null) { MainUtil.sendMessage(null, " - &aFound plot: " + plot.id + " : " + line); plot.owner = uuid; plots.add(plot); - } - else - { + } else { MainUtil.sendMessage(null, " - &cInvalid playername: " + plot.id + " : " + line); } } } } - if (plots.size() > 0) - { + if (plots.size() > 0) { MainUtil.sendMessage(null, "&3Sign Block&8->&3PlotSquared&8: &7Updating '" + plots.size() + "' plots!"); - DBFunc.createPlotsAndData(plots, new Runnable() - { + DBFunc.createPlotsAndData(plots, new Runnable() { @Override - public void run() - { + public void run() { MainUtil.sendMessage(null, "&6Database update finished!"); } }); - for (final Plot plot : plots) - { + for (final Plot plot : plots) { PS.get().updatePlot(plot); } MainUtil.sendMessage(null, "&3Sign Block&8->&3PlotSquared&8: &7Complete!"); - } - else - { + } else { MainUtil.sendMessage(null, "No plots were found for the given search."); } return true; diff --git a/src/main/java/com/intellectualcrafters/plot/commands/DebugClear.java b/src/main/java/com/intellectualcrafters/plot/commands/DebugClear.java index f1b4df53d..506644ad1 100644 --- a/src/main/java/com/intellectualcrafters/plot/commands/DebugClear.java +++ b/src/main/java/com/intellectualcrafters/plot/commands/DebugClear.java @@ -32,35 +32,32 @@ import com.intellectualcrafters.plot.util.Permissions; import com.intellectualcrafters.plot.util.UUIDHandler; import com.plotsquared.general.commands.CommandDeclaration; -@CommandDeclaration( -command = "debugclear", -aliases = { "fastclear" }, -description = "Clear a plot using a fast experiment algorithm", -category = CommandCategory.DEBUG) -public class DebugClear extends SubCommand -{ - +@CommandDeclaration(command = "debugclear", aliases = { "fastclear" }, description = "Clear a plot using a fast experiment algorithm", category = CommandCategory.DEBUG) +public class DebugClear extends SubCommand { + @Override - public boolean onCommand(final PlotPlayer plr, final String[] args) - { + public boolean onCommand(final PlotPlayer plr, final String[] args) { final Location loc = plr.getLocation(); final Plot plot = MainUtil.getPlot(loc); - if ((plot == null) || !(PS.get().getPlotWorld(loc.getWorld()) instanceof SquarePlotWorld)) { return sendMessage(plr, C.NOT_IN_PLOT); } - if (!MainUtil.getTopPlot(plot).equals(MainUtil.getBottomPlot(plot))) { return sendMessage(plr, C.UNLINK_REQUIRED); } - if ((!plot.hasOwner() || !plot.isOwner(UUIDHandler.getUUID(plr))) && !Permissions.hasPermission(plr, "plots.admin.command.debugclear")) { return sendMessage(plr, C.NO_PLOT_PERMS); } + if ((plot == null) || !(PS.get().getPlotWorld(loc.getWorld()) instanceof SquarePlotWorld)) { + return sendMessage(plr, C.NOT_IN_PLOT); + } + if (!MainUtil.getTopPlot(plot).equals(MainUtil.getBottomPlot(plot))) { + return sendMessage(plr, C.UNLINK_REQUIRED); + } + if ((!plot.hasOwner() || !plot.isOwner(UUIDHandler.getUUID(plr))) && !Permissions.hasPermission(plr, "plots.admin.command.debugclear")) { + return sendMessage(plr, C.NO_PLOT_PERMS); + } final Location pos1 = MainUtil.getPlotBottomLoc(loc.getWorld(), plot.id).add(1, 0, 1); final Location pos2 = MainUtil.getPlotTopLoc(loc.getWorld(), plot.id); - if (MainUtil.runners.containsKey(plot)) - { + if (MainUtil.runners.containsKey(plot)) { MainUtil.sendMessage(plr, C.WAIT_FOR_TIMER); return false; } MainUtil.runners.put(plot, 1); - ChunkManager.manager.regenerateRegion(pos1, pos2, new Runnable() - { + ChunkManager.manager.regenerateRegion(pos1, pos2, new Runnable() { @Override - public void run() - { + public void run() { MainUtil.runners.remove(plot); MainUtil.sendMessage(plr, "&aDone!"); } diff --git a/src/main/java/com/intellectualcrafters/plot/commands/DebugExec.java b/src/main/java/com/intellectualcrafters/plot/commands/DebugExec.java index b2a6af5b1..165d2f74a 100644 --- a/src/main/java/com/intellectualcrafters/plot/commands/DebugExec.java +++ b/src/main/java/com/intellectualcrafters/plot/commands/DebugExec.java @@ -74,25 +74,16 @@ import com.plotsquared.bukkit.util.BukkitHybridUtils; import com.plotsquared.general.commands.Command; import com.plotsquared.general.commands.CommandDeclaration; -@CommandDeclaration( -command = "debugexec", -permission = "plots.admin", -description = "Mutli-purpose debug command", -aliases = { "exec" }, -category = CommandCategory.DEBUG) -public class DebugExec extends SubCommand -{ - +@CommandDeclaration(command = "debugexec", permission = "plots.admin", description = "Mutli-purpose debug command", aliases = { "exec" }, category = CommandCategory.DEBUG) +public class DebugExec extends SubCommand { + private ScriptEngine engine; private Bindings scope; - - public DebugExec() - { - try - { + + public DebugExec() { + try { final File file = new File(PS.get().IMP.getDirectory(), "scripts" + File.separator + "start.js"); - if (file.exists()) - { + if (file.exists()) { init(); final String script = StringMan.join(Files.readLines(new File(new File(PS.get().IMP.getDirectory() + File.separator + "scripts"), "start.js"), StandardCharsets.UTF_8), System.getProperty("line.separator")); @@ -100,39 +91,35 @@ public class DebugExec extends SubCommand scope.put("PlotPlayer", ConsolePlayer.getConsole()); engine.eval(script, scope); } - } - catch (final Exception e) - {} + } catch (final Exception e) {} } - - public ScriptEngine getEngine() - { + + public ScriptEngine getEngine() { return engine; } - - public Bindings getScope() - { + + public Bindings getScope() { return scope; } - - public void init() - { - if (engine != null) { return; } + + public void init() { + if (engine != null) { + return; + } engine = (new ScriptEngineManager(null)).getEngineByName("nashorn"); - if (engine == null) - { + if (engine == null) { engine = (new ScriptEngineManager(null)).getEngineByName("JavaScript"); } final ScriptContext context = new SimpleScriptContext(); scope = context.getBindings(ScriptContext.ENGINE_SCOPE); - + // stuff scope.put("MainUtil", new MainUtil()); scope.put("Settings", new Settings()); scope.put("StringMan", new StringMan()); scope.put("MathMan", new MathMan()); scope.put("FlagManager", new FlagManager()); - + // Classes scope.put("Location", Location.class); scope.put("PlotBlock", PlotBlock.class); @@ -140,7 +127,7 @@ public class DebugExec extends SubCommand scope.put("PlotId", PlotId.class); scope.put("Runnable", Runnable.class); scope.put("RunnableVal", RunnableVal.class); - + // Instances scope.put("PS", PS.get()); scope.put("TaskManager", PS.get().TASK); @@ -157,143 +144,110 @@ public class DebugExec extends SubCommand scope.put("HybridUtils", HybridUtils.manager); scope.put("IMP", PS.get().IMP); scope.put("MainCommand", MainCommand.getInstance()); - + // enums - for (final Enum value : C.values()) - { + for (final Enum value : C.values()) { scope.put("C_" + value.name(), value); } } - + @Override - public boolean onCommand(final PlotPlayer player, final String... args) - { + public boolean onCommand(final PlotPlayer player, final String... args) { final List allowed_params = Arrays.asList("calibrate-analysis", "remove-flag", "stop-expire", "start-expire", "show-expired", "update-expired", "seen", "trim-check"); - if (args.length > 0) - { + if (args.length > 0) { final String arg = args[0].toLowerCase(); String script; boolean async = false; - switch (arg) - { - case "analyze": - { + switch (arg) { + case "analyze": { final Plot plot = MainUtil.getPlot(player.getLocation()); - if (plot == null) - { + if (plot == null) { MainUtil.sendMessage(player, C.NOT_IN_PLOT); return false; } final PlotAnalysis analysis = plot.getComplexity(); - if (analysis != null) - { + if (analysis != null) { final int complexity = analysis.getComplexity(); MainUtil.sendMessage(player, "Changes: " + analysis.changes); MainUtil.sendMessage(player, "Complexity: " + complexity); return true; } MainUtil.sendMessage(player, "$1Starting task..."); - HybridUtils.manager.analyzePlot(plot, new RunnableVal() - { + HybridUtils.manager.analyzePlot(plot, new RunnableVal() { @Override - public void run() - { + public void run() { MainUtil.sendMessage(player, "$1Done: $2use $3/plot debugexec analyze$2 for more information"); } }); return true; } - case "calibrate-analysis": - { - if (args.length != 2) - { + case "calibrate-analysis": { + if (args.length != 2) { MainUtil.sendMessage(player, C.COMMAND_SYNTAX, "/plot debugexec analyze "); MainUtil.sendMessage(player, "$1 $2= $1The percentage of plots you want to clear (100 clears 100% of plots so no point calibrating it)"); return false; } double threshold; - try - { + try { threshold = Integer.parseInt(args[1]) / 100d; - } - catch (final NumberFormatException e) - { + } catch (final NumberFormatException e) { MainUtil.sendMessage(player, "$2Invalid threshold: " + args[1]); MainUtil.sendMessage(player, "$1 $2= $1The percentage of plots you want to clear as a number between 0 - 100"); return false; } - PlotAnalysis.calcOptimalModifiers(new Runnable() - { + PlotAnalysis.calcOptimalModifiers(new Runnable() { @Override - public void run() - { + public void run() { MainUtil.sendMessage(player, "$1Thank you for calibrating PlotSquared plot expiry"); } }, threshold); return true; } - case "stop-expire": - { - if (ExpireManager.task != -1) - { + case "stop-expire": { + if (ExpireManager.task != -1) { PS.get().TASK.cancelTask(ExpireManager.task); - } - else - { + } else { return MainUtil.sendMessage(player, "Task already halted"); } ExpireManager.task = -1; return MainUtil.sendMessage(player, "Cancelled task."); } - case "remove-flag": - { - if (args.length != 2) - { + case "remove-flag": { + if (args.length != 2) { MainUtil.sendMessage(player, C.COMMAND_SYNTAX, "/plot debugexec remove-flag "); return false; } final String flag = args[1]; - for (final Plot plot : PS.get().getPlots()) - { - if (FlagManager.getPlotFlag(plot, flag) != null) - { + for (final Plot plot : PS.get().getPlots()) { + if (FlagManager.getPlotFlag(plot, flag) != null) { FlagManager.removePlotFlag(plot, flag); } } return MainUtil.sendMessage(player, "Cleared flag: " + flag); } - case "start-rgar": - { - if (args.length != 2) - { + case "start-rgar": { + if (args.length != 2) { MainUtil.sendMessage(player, "&cInvalid syntax: /plot debugexec start-rgar "); return false; } boolean result; - if (!PS.get().isPlotWorld(args[1])) - { + if (!PS.get().isPlotWorld(args[1])) { MainUtil.sendMessage(player, C.NOT_VALID_PLOT_WORLD, args[1]); return false; } - if (HybridUtils.regions != null) - { + if (HybridUtils.regions != null) { result = ((BukkitHybridUtils) (HybridUtils.manager)).scheduleRoadUpdate(args[1], HybridUtils.regions, 0); - } - else - { + } else { result = HybridUtils.manager.scheduleRoadUpdate(args[1], 0); } - if (!result) - { + if (!result) { MainUtil.sendMessage(player, "&cCannot schedule mass schematic update! (Is one already in progress?)"); return false; } return true; } - case "stop-rgar": - { - if (!HybridUtils.UPDATE) - { + case "stop-rgar": { + if (!HybridUtils.UPDATE) { MainUtil.sendMessage(player, "&cTASK NOT RUNNING!"); return false; } @@ -301,53 +255,55 @@ public class DebugExec extends SubCommand MainUtil.sendMessage(player, "&cCancelling task... (please wait)"); return true; } - case "start-expire": - { - if (ExpireManager.task == -1) - { + case "start-expire": { + if (ExpireManager.task == -1) { ExpireManager.runTask(); - } - else - { + } else { return MainUtil.sendMessage(player, "Plot expiry task already started"); } return MainUtil.sendMessage(player, "Started plot expiry task"); } - case "update-expired": - { - if (args.length > 1) - { + case "update-expired": { + if (args.length > 1) { final String world = args[1]; - if (!BlockManager.manager.isWorld(world)) { return MainUtil.sendMessage(player, "Invalid world: " + args[1]); } + if (!BlockManager.manager.isWorld(world)) { + return MainUtil.sendMessage(player, "Invalid world: " + args[1]); + } MainUtil.sendMessage(player, "Updating expired plot list"); ExpireManager.updateExpired(args[1]); return true; } return MainUtil.sendMessage(player, "Use /plot debugexec update-expired "); } - case "show-expired": - { - if (args.length > 1) - { + case "show-expired": { + if (args.length > 1) { final String world = args[1]; - if (!BlockManager.manager.isWorld(world)) { return MainUtil.sendMessage(player, "Invalid world: " + args[1]); } - if (!ExpireManager.expiredPlots.containsKey(args[1])) { return MainUtil.sendMessage(player, "No task for world: " + args[1]); } + if (!BlockManager.manager.isWorld(world)) { + return MainUtil.sendMessage(player, "Invalid world: " + args[1]); + } + if (!ExpireManager.expiredPlots.containsKey(args[1])) { + return MainUtil.sendMessage(player, "No task for world: " + args[1]); + } MainUtil.sendMessage(player, "Expired plots (" + ExpireManager.expiredPlots.get(args[1]).size() + "):"); - for (final Plot plot : ExpireManager.expiredPlots.get(args[1])) - { + for (final Plot plot : ExpireManager.expiredPlots.get(args[1])) { MainUtil.sendMessage(player, " - " + plot.world + ";" + plot.id.x + ";" + plot.id.y + ";" + UUIDHandler.getName(plot.owner) + " : " + ExpireManager.dates.get(plot.owner)); } return true; } return MainUtil.sendMessage(player, "Use /plot debugexec show-expired "); } - case "seen": - { - if (args.length != 2) { return MainUtil.sendMessage(player, "Use /plot debugexec seen "); } + case "seen": { + if (args.length != 2) { + return MainUtil.sendMessage(player, "Use /plot debugexec seen "); + } final UUID uuid = UUIDHandler.getUUID(args[1], null); - if (uuid == null) { return MainUtil.sendMessage(player, "player not found: " + args[1]); } + if (uuid == null) { + return MainUtil.sendMessage(player, "player not found: " + args[1]); + } final OfflinePlotPlayer op = UUIDHandler.getUUIDWrapper().getOfflinePlayer(uuid); - if ((op == null) || (op.getLastPlayed() == 0)) { return MainUtil.sendMessage(player, "player hasn't connected before: " + args[1]); } + if ((op == null) || (op.getLastPlayed() == 0)) { + return MainUtil.sendMessage(player, "player hasn't connected before: " + args[1]); + } final Timestamp stamp = new Timestamp(op.getLastPlayed()); final Date date = new Date(stamp.getTime()); MainUtil.sendMessage(player, "PLAYER: " + args[1]); @@ -357,40 +313,34 @@ public class DebugExec extends SubCommand MainUtil.sendMessage(player, "Local: " + date.toLocaleString()); return true; } - case "trim-check": - { - if (args.length != 2) - { + case "trim-check": { + if (args.length != 2) { MainUtil.sendMessage(player, "Use /plot debugexec trim-check "); MainUtil.sendMessage(player, "&7 - Generates a list of regions to trim"); return MainUtil.sendMessage(player, "&7 - Run after plot expiry has run"); } final String world = args[1]; - if (!BlockManager.manager.isWorld(world) || !PS.get().isPlotWorld(args[1])) { return MainUtil.sendMessage(player, "Invalid world: " + args[1]); } + if (!BlockManager.manager.isWorld(world) || !PS.get().isPlotWorld(args[1])) { + return MainUtil.sendMessage(player, "Invalid world: " + args[1]); + } final ArrayList empty = new ArrayList<>(); - final boolean result = Trim.getTrimRegions(empty, world, new Runnable() - { + final boolean result = Trim.getTrimRegions(empty, world, new Runnable() { @Override - public void run() - { + public void run() { Trim.sendMessage("Processing is complete! Here's how many chunks would be deleted:"); Trim.sendMessage(" - MCA #: " + empty.size()); Trim.sendMessage(" - CHUNKS: " + (empty.size() * 1024) + " (max)"); Trim.sendMessage("Exporting log for manual approval..."); final File file = new File(PS.get().IMP.getDirectory() + File.separator + "trim.txt"); PrintWriter writer; - try - { + try { writer = new PrintWriter(file); - for (final ChunkLoc loc : empty) - { + for (final ChunkLoc loc : empty) { writer.println(world + "/region/r." + loc.x + "." + loc.z + ".mca"); } writer.close(); Trim.sendMessage("File saved to 'plugins/PlotSquared/trim.txt'"); - } - catch (final FileNotFoundException e) - { + } catch (final FileNotFoundException e) { e.printStackTrace(); Trim.sendMessage("File failed to save! :("); } @@ -400,8 +350,7 @@ public class DebugExec extends SubCommand Trim.sendMessage(" - Add 31 to each number to get the end position"); } }); - if (!result) - { + if (!result) { MainUtil.sendMessage(player, "Trim task already started!"); } return result; @@ -409,31 +358,23 @@ public class DebugExec extends SubCommand case "h": case "he": case "?": - case "help": - { + case "help": { MainUtil.sendMessage(player, "Possible sub commands: /plot debugexec <" + StringMan.join(allowed_params, "|") + ">"); return false; } - case "addcmd": - { - try - { + case "addcmd": { + try { final String cmd = StringMan.join(Files.readLines(new File(new File(PS.get().IMP.getDirectory() + File.separator + "scripts"), args[1]), StandardCharsets.UTF_8), System.getProperty("line.separator")); - final Command subcommand = new Command(args[1].split("\\.")[0]) - { + final Command subcommand = new Command(args[1].split("\\.")[0]) { @Override - public boolean onCommand(final PlotPlayer plr, final String[] args) - { - try - { + public boolean onCommand(final PlotPlayer plr, final String[] args) { + try { scope.put("PlotPlayer", plr); scope.put("args", args); engine.eval(cmd, scope); return true; - } - catch (final ScriptException e) - { + } catch (final ScriptException e) { e.printStackTrace(); MainUtil.sendMessage(player, C.COMMAND_WENT_WRONG); return false; @@ -442,87 +383,65 @@ public class DebugExec extends SubCommand }; MainCommand.getInstance().addCommand(subcommand); return true; - } - catch (final Exception e) - { + } catch (final Exception e) { e.printStackTrace(); MainUtil.sendMessage(player, C.COMMAND_SYNTAX, "/plot debugexec addcmd "); return false; } } - case "runasync": - { + case "runasync": { async = true; } - case "run": - { - try - { + case "run": { + try { script = StringMan.join(Files.readLines(new File(new File(PS.get().IMP.getDirectory() + File.separator + "scripts"), args[1]), StandardCharsets.UTF_8), System.getProperty("line.separator")); - if (args.length > 2) - { + if (args.length > 2) { final HashMap replacements = new HashMap<>(); - for (int i = 2; i < args.length; i++) - { + for (int i = 2; i < args.length; i++) { replacements.put("%s" + (i - 2), args[i]); } script = StringMan.replaceFromMap(script, replacements); } - } - catch (final IOException e) - { + } catch (final IOException e) { e.printStackTrace(); return false; } break; } - default: - { + default: { script = StringMan.join(args, " "); } } - if (!ConsolePlayer.isConsole(player)) - { + if (!ConsolePlayer.isConsole(player)) { MainUtil.sendMessage(player, C.NOT_CONSOLE); return false; } init(); scope.put("PlotPlayer", player); PS.debug("> " + script); - try - { - if (async) - { + try { + if (async) { final String toExec = script; - TaskManager.runTaskAsync(new Runnable() - { + TaskManager.runTaskAsync(new Runnable() { @Override - public void run() - { + public void run() { final long start = System.currentTimeMillis(); - try - { + try { engine.eval(toExec, scope); - } - catch (final ScriptException e) - { + } catch (final ScriptException e) { e.printStackTrace(); } PS.log("> " + (System.currentTimeMillis() - start) + "ms"); } }); - } - else - { + } else { final long start = System.currentTimeMillis(); engine.eval(script, scope); PS.log("> " + (System.currentTimeMillis() - start) + "ms"); } return true; - } - catch (final ScriptException e) - { + } catch (final ScriptException e) { e.printStackTrace(); return false; } diff --git a/src/main/java/com/intellectualcrafters/plot/commands/DebugFill.java b/src/main/java/com/intellectualcrafters/plot/commands/DebugFill.java index 6bc93fca5..9342901cf 100644 --- a/src/main/java/com/intellectualcrafters/plot/commands/DebugFill.java +++ b/src/main/java/com/intellectualcrafters/plot/commands/DebugFill.java @@ -39,32 +39,28 @@ usage = "/plot fill", aliases = { "debugfill" }, category = CommandCategory.DEBUG, requiredType = RequiredType.NONE) -public class DebugFill extends SubCommand -{ - +public class DebugFill extends SubCommand { + @Override - public boolean onCommand(final PlotPlayer player, final String... args) - { - if ((args.length != 1) || (!args[0].equalsIgnoreCase("outline") && !args[0].equalsIgnoreCase("all"))) - { + public boolean onCommand(final PlotPlayer player, final String... args) { + if ((args.length != 1) || (!args[0].equalsIgnoreCase("outline") && !args[0].equalsIgnoreCase("all"))) { MainUtil.sendMessage(player, C.COMMAND_SYNTAX, "/plot fill "); return true; } final Location loc = player.getLocation(); final Plot plot = MainUtil.getPlot(loc); - if (plot == null) { return !sendMessage(player, C.NOT_IN_PLOT); } - if (!plot.hasOwner()) - { + if (plot == null) { + return !sendMessage(player, C.NOT_IN_PLOT); + } + if (!plot.hasOwner()) { MainUtil.sendMessage(player, C.PLOT_UNOWNED); return false; } - if (!plot.isOwner(player.getUUID()) && !Permissions.hasPermission(player, "plots.admin.command.fill")) - { + if (!plot.isOwner(player.getUUID()) && !Permissions.hasPermission(player, "plots.admin.command.fill")) { MainUtil.sendMessage(player, C.NO_PLOT_PERMS); return true; } - if (MainUtil.runners.containsKey(plot)) - { + if (MainUtil.runners.containsKey(plot)) { MainUtil.sendMessage(player, C.WAIT_FOR_TIMER); return false; } @@ -72,119 +68,87 @@ public class DebugFill extends SubCommand final Location top = MainUtil.getPlotTopLoc(plot.world, plot.id); MainUtil.sendMessage(player, "&cPreparing task"); MainUtil.runners.put(plot, 1); - SetBlockQueue.addNotify(new Runnable() - { + SetBlockQueue.addNotify(new Runnable() { @Override - public void run() - { - TaskManager.runTaskAsync(new Runnable() - { + public void run() { + TaskManager.runTaskAsync(new Runnable() { @Override - public void run() - { + public void run() { MainUtil.sendMessage(player, "&7 - Starting"); - if (args[0].equalsIgnoreCase("all")) - { + if (args[0].equalsIgnoreCase("all")) { int height = 255; PlotBlock block = new PlotBlock((short) 7, (byte) 0); final PlotBlock air = new PlotBlock((short) 0, (byte) 0); - if (args.length > 2) - { - try - { + if (args.length > 2) { + try { block = new PlotBlock(Short.parseShort(args[1]), (byte) 0); - if (args.length == 3) - { + if (args.length == 3) { height = Integer.parseInt(args[2]); } - } - catch (final Exception e) - { + } catch (final Exception e) { MainUtil.sendMessage(player, C.COMMAND_SYNTAX, "/plot fill all "); MainUtil.runners.remove(plot); return; } } - for (int y = 0; y <= height; y++) - { - for (int x = bottom.getX(); x <= top.getX(); x++) - { - for (int z = bottom.getZ(); z <= top.getZ(); z++) - { + for (int y = 0; y <= height; y++) { + for (int x = bottom.getX(); x <= top.getX(); x++) { + for (int z = bottom.getZ(); z <= top.getZ(); z++) { SetBlockQueue.setBlock(plot.world, x, y, z, block); } } } - for (int y = height + 1; y <= 255; y++) - { - for (int x = bottom.getX(); x <= top.getX(); x++) - { - for (int z = bottom.getZ(); z <= top.getZ(); z++) - { + for (int y = height + 1; y <= 255; y++) { + for (int x = bottom.getX(); x <= top.getX(); x++) { + for (int z = bottom.getZ(); z <= top.getZ(); z++) { SetBlockQueue.setBlock(plot.world, x, y, z, air); } } } - SetBlockQueue.addNotify(new Runnable() - { + SetBlockQueue.addNotify(new Runnable() { @Override - public void run() - { + public void run() { MainUtil.runners.remove(plot); MainUtil.sendMessage(player, "&aFill task complete!"); } }); - } - else if (args[0].equals("outline")) - { + } else if (args[0].equals("outline")) { int x, z; z = bottom.getZ(); - for (x = bottom.getX(); x <= (top.getX() - 1); x++) - { - for (int y = 1; y <= 255; y++) - { + for (x = bottom.getX(); x <= (top.getX() - 1); x++) { + for (int y = 1; y <= 255; y++) { SetBlockQueue.setBlock(plot.world, x, y, z, 7); } } x = top.getX(); - for (z = bottom.getZ(); z <= (top.getZ() - 1); z++) - { - for (int y = 1; y <= 255; y++) - { + for (z = bottom.getZ(); z <= (top.getZ() - 1); z++) { + for (int y = 1; y <= 255; y++) { SetBlockQueue.setBlock(plot.world, x, y, z, 7); } } z = top.getZ(); - for (x = top.getX(); x >= (bottom.getX() + 1); x--) - { - for (int y = 1; y <= 255; y++) - { + for (x = top.getX(); x >= (bottom.getX() + 1); x--) { + for (int y = 1; y <= 255; y++) { SetBlockQueue.setBlock(plot.world, x, y, z, 7); } } x = bottom.getX(); - for (z = top.getZ(); z >= (bottom.getZ() + 1); z--) - { - for (int y = 1; y <= 255; y++) - { + for (z = top.getZ(); z >= (bottom.getZ() + 1); z--) { + for (int y = 1; y <= 255; y++) { SetBlockQueue.setBlock(plot.world, x, y, z, 7); } } - SetBlockQueue.addNotify(new Runnable() - { + SetBlockQueue.addNotify(new Runnable() { @Override - public void run() - { + public void run() { MainUtil.sendMessage(player, "&aWalls complete! The ceiling will take a while :("); bottom.setY(255); top.add(1, 0, 1); SetBlockQueue.setSlow(true); MainUtil.setSimpleCuboidAsync(plot.world, bottom, top, new PlotBlock((short) 7, (byte) 0)); - SetBlockQueue.addNotify(new Runnable() - { + SetBlockQueue.addNotify(new Runnable() { @Override - public void run() - { + public void run() { MainUtil.runners.remove(plot); MainUtil.sendMessage(player, "&aFill task complete!"); SetBlockQueue.setSlow(false); diff --git a/src/main/java/com/intellectualcrafters/plot/commands/DebugFixFlags.java b/src/main/java/com/intellectualcrafters/plot/commands/DebugFixFlags.java index 869d98724..094bd6040 100644 --- a/src/main/java/com/intellectualcrafters/plot/commands/DebugFixFlags.java +++ b/src/main/java/com/intellectualcrafters/plot/commands/DebugFixFlags.java @@ -43,41 +43,31 @@ permission = "plots.debugfixflags", description = "Attempt to fix all flags for a world", requiredType = RequiredType.CONSOLE, category = CommandCategory.DEBUG) -public class DebugFixFlags extends SubCommand -{ - - public DebugFixFlags() - { - requiredArguments = new Argument[] { - Argument.String - }; +public class DebugFixFlags extends SubCommand { + + public DebugFixFlags() { + requiredArguments = new Argument[] { Argument.String }; } - + @Override - public boolean onCommand(final PlotPlayer plr, final String[] args) - { + public boolean onCommand(final PlotPlayer plr, final String[] args) { final String world = args[0]; - if (!BlockManager.manager.isWorld(world) || !PS.get().isPlotWorld(world)) - { + if (!BlockManager.manager.isWorld(world) || !PS.get().isPlotWorld(world)) { MainUtil.sendMessage(plr, C.NOT_VALID_PLOT_WORLD, args[0]); return false; } MainUtil.sendMessage(plr, "&8--- &6Starting task &8 ---"); - for (final Plot plot : PS.get().getPlotsInWorld(world)) - { + for (final Plot plot : PS.get().getPlotsInWorld(world)) { final HashMap flags = plot.getSettings().flags; final Iterator> i = flags.entrySet().iterator(); boolean changed = false; - while (i.hasNext()) - { - if (FlagManager.getFlag(i.next().getKey()) == null) - { + while (i.hasNext()) { + if (FlagManager.getFlag(i.next().getKey()) == null) { changed = true; i.remove(); } } - if (changed) - { + if (changed) { DBFunc.setFlags(plot, plot.getSettings().flags.values()); } } diff --git a/src/main/java/com/intellectualcrafters/plot/commands/DebugLoadTest.java b/src/main/java/com/intellectualcrafters/plot/commands/DebugLoadTest.java index f87573a7d..7861d57ac 100644 --- a/src/main/java/com/intellectualcrafters/plot/commands/DebugLoadTest.java +++ b/src/main/java/com/intellectualcrafters/plot/commands/DebugLoadTest.java @@ -34,20 +34,15 @@ description = "This debug command will force the reload of all plots in the DB", usage = "/plot debugloadtest", category = CommandCategory.DEBUG, requiredType = RequiredType.CONSOLE) -public class DebugLoadTest extends SubCommand -{ - +public class DebugLoadTest extends SubCommand { + @Override - public boolean onCommand(final PlotPlayer plr, final String[] args) - { - try - { + public boolean onCommand(final PlotPlayer plr, final String[] args) { + try { final Field fPlots = PS.class.getDeclaredField("plots"); fPlots.setAccessible(true); fPlots.set(null, DBFunc.getPlots()); - } - catch (final Exception e) - { + } catch (final Exception e) { PS.debug("&3===FAILED&3==="); e.printStackTrace(); PS.debug("&3===END OF STACKTRACE==="); diff --git a/src/main/java/com/intellectualcrafters/plot/commands/DebugPaste.java b/src/main/java/com/intellectualcrafters/plot/commands/DebugPaste.java index cffb514dd..aeaacb70a 100644 --- a/src/main/java/com/intellectualcrafters/plot/commands/DebugPaste.java +++ b/src/main/java/com/intellectualcrafters/plot/commands/DebugPaste.java @@ -21,27 +21,19 @@ usage = "/plot debugpaste", description = "Upload settings.yml & latest.log to hastebin", permission = "plots.debugpaste", category = CommandCategory.DEBUG) -public class DebugPaste extends SubCommand -{ - +public class DebugPaste extends SubCommand { + @Override - public boolean onCommand(final PlotPlayer plr, final String[] args) - { - TaskManager.runTaskAsync(new Runnable() - { + public boolean onCommand(final PlotPlayer plr, final String[] args) { + TaskManager.runTaskAsync(new Runnable() { @Override - public void run() - { - try - { + public void run() { + try { final String settingsYML = HastebinUtility.upload(PS.get().configFile); String latestLOG; - try - { + try { latestLOG = HastebinUtility.upload(new File(BukkitMain.THIS.getDirectory(), "../../logs/latest.log")); - } - catch (final Exception e) - { + } catch (final Exception e) { plr.sendMessage("&clatest.log is too big to be pasted, will ignore"); latestLOG = "too big :("; } @@ -54,8 +46,7 @@ public class DebugPaste extends SubCommand b.append("version.bukkit: '").append(Bukkit.getBukkitVersion()).append("'\n"); b.append("online_mode: ").append(Bukkit.getServer().getOnlineMode()).append("\n"); b.append("plugins:"); - for (final Plugin p : Bukkit.getPluginManager().getPlugins()) - { + for (final Plugin p : Bukkit.getPluginManager().getPlugins()) { b.append("\n ").append(p.getName()).append(":\n ").append("version: '").append(p.getDescription().getVersion()).append("'").append("\n enabled: ").append(p.isEnabled()); } b.append("\n\n# YAY! Now, let's see what we can find in your JVM\n"); @@ -70,12 +61,10 @@ public class DebugPaste extends SubCommand b.append("os.version: '").append(System.getProperty("os.version")).append("'\n\n"); b.append("# Okay :D Great. You are now ready to create your bug report!"); b.append("\n# You can do so at https://github.com/IntellectualSites/PlotSquared/issues"); - + final String link = HastebinUtility.upload(b.toString()); plr.sendMessage(C.DEBUG_REPORT_CREATED.s().replace("%url%", link)); - } - catch (final IOException e) - { + } catch (final IOException e) { e.printStackTrace(); } } diff --git a/src/main/java/com/intellectualcrafters/plot/commands/DebugRoadRegen.java b/src/main/java/com/intellectualcrafters/plot/commands/DebugRoadRegen.java index ff789ba9c..613e39a36 100644 --- a/src/main/java/com/intellectualcrafters/plot/commands/DebugRoadRegen.java +++ b/src/main/java/com/intellectualcrafters/plot/commands/DebugRoadRegen.java @@ -41,31 +41,25 @@ requiredType = RequiredType.NONE, description = "Regenerate all roads based on the road schematic", category = CommandCategory.DEBUG, permission = "plots.debugroadregen") -public class DebugRoadRegen extends SubCommand -{ - +public class DebugRoadRegen extends SubCommand { + @Override - public boolean onCommand(final PlotPlayer player, final String... args) - { + public boolean onCommand(final PlotPlayer player, final String... args) { final Location loc = player.getLocation(); final String world = loc.getWorld(); final PlotWorld plotworld = PS.get().getPlotWorld(world); - if (!(plotworld instanceof HybridPlotWorld)) { return sendMessage(player, C.NOT_IN_PLOT_WORLD); } + if (!(plotworld instanceof HybridPlotWorld)) { + return sendMessage(player, C.NOT_IN_PLOT_WORLD); + } final Plot plot = player.getCurrentPlot(); - if (plot == null) - { + if (plot == null) { final ChunkLoc chunk = new ChunkLoc(loc.getX() >> 4, loc.getZ() >> 4); int extend = 0; - if (args.length == 1) - { - if (MathMan.isInteger(args[0])) - { - try - { + if (args.length == 1) { + if (MathMan.isInteger(args[0])) { + try { extend = Integer.parseInt(args[0]); - } - catch (final Exception e) - { + } catch (final Exception e) { C.NOT_VALID_NUMBER.send(player, "(0, )"); return false; } @@ -74,9 +68,7 @@ public class DebugRoadRegen extends SubCommand final boolean result = HybridUtils.manager.regenerateRoad(world, chunk, extend); MainUtil.sendMessage(player, "&6Regenerating chunk: " + chunk.x + "," + chunk.z + "\n&6 - Result: " + (result == true ? "&aSuccess" : "&cFailed")); MainUtil.sendMessage(player, "&cTo regenerate all roads: /plot regenallroads"); - } - else - { + } else { final HybridPlotManager manager = (HybridPlotManager) PS.get().getPlotManager(world); manager.createRoadEast(plotworld, plot); manager.createRoadSouth(plotworld, plot); diff --git a/src/main/java/com/intellectualcrafters/plot/commands/DebugSaveTest.java b/src/main/java/com/intellectualcrafters/plot/commands/DebugSaveTest.java index 81cd03e2f..f5aff3b28 100644 --- a/src/main/java/com/intellectualcrafters/plot/commands/DebugSaveTest.java +++ b/src/main/java/com/intellectualcrafters/plot/commands/DebugSaveTest.java @@ -36,20 +36,16 @@ category = CommandCategory.DEBUG, requiredType = RequiredType.CONSOLE, usage = "/plot debugsavetest", description = "This command will force the recreation of all plots in the DB") -public class DebugSaveTest extends SubCommand -{ - +public class DebugSaveTest extends SubCommand { + @Override - public boolean onCommand(final PlotPlayer plr, final String[] args) - { + public boolean onCommand(final PlotPlayer plr, final String[] args) { final ArrayList plots = new ArrayList(); plots.addAll(PS.get().getPlots()); MainUtil.sendMessage(null, "&6Starting `DEBUGSAVETEST`"); - DBFunc.createPlotsAndData(plots, new Runnable() - { + DBFunc.createPlotsAndData(plots, new Runnable() { @Override - public void run() - { + public void run() { MainUtil.sendMessage(null, "&6Database sync finished!"); } }); diff --git a/src/main/java/com/intellectualcrafters/plot/commands/DebugUUID.java b/src/main/java/com/intellectualcrafters/plot/commands/DebugUUID.java index 7ced00979..9ef6d921b 100644 --- a/src/main/java/com/intellectualcrafters/plot/commands/DebugUUID.java +++ b/src/main/java/com/intellectualcrafters/plot/commands/DebugUUID.java @@ -60,58 +60,44 @@ description = "Debug UUID conversion", usage = "/plot uuidconvert ", requiredType = RequiredType.CONSOLE, category = CommandCategory.DEBUG) -public class DebugUUID extends SubCommand -{ - - public DebugUUID() - { - requiredArguments = new Argument[] { - Argument.String - }; +public class DebugUUID extends SubCommand { + + public DebugUUID() { + requiredArguments = new Argument[] { Argument.String }; } - + @Override - public boolean onCommand(final PlotPlayer plr, final String[] args) - { + public boolean onCommand(final PlotPlayer plr, final String[] args) { final PlotPlayer player = null; - + final UUIDWrapper currentUUIDWrapper = UUIDHandler.getUUIDWrapper(); final UUIDWrapper newWrapper; - - switch (args[0].toLowerCase()) - { - case "lower": - { + + switch (args[0].toLowerCase()) { + case "lower": { newWrapper = new LowerOfflineUUIDWrapper(); break; } - case "offline": - { + case "offline": { newWrapper = new OfflineUUIDWrapper(); break; } - case "online": - { + case "online": { newWrapper = new DefaultUUIDWrapper(); break; } - default: - { - try - { + default: { + try { final Class clazz = Class.forName(args[0]); newWrapper = (UUIDWrapper) clazz.newInstance(); - } - catch (final Exception e) - { + } catch (final Exception e) { MainUtil.sendMessage(player, C.COMMAND_SYNTAX, "/plot uuidconvert "); return false; } } } - - if ((args.length != 2) || !args[1].equals("-o")) - { + + if ((args.length != 2) || !args[1].equals("-o")) { MainUtil.sendMessage(player, C.COMMAND_SYNTAX, "/plot uuidconvert " + args[0] + " - o"); MainUtil.sendMessage(player, "&cBe aware of the following!"); MainUtil.sendMessage(player, "&8 - &cUse the database command or another method to backup your plots beforehand"); @@ -122,294 +108,229 @@ public class DebugUUID extends SubCommand MainUtil.sendMessage(player, "&7Retype the command with the override parameter when ready :)"); return false; } - - if (currentUUIDWrapper.getClass().getCanonicalName().equals(newWrapper.getClass().getCanonicalName())) - { + + if (currentUUIDWrapper.getClass().getCanonicalName().equals(newWrapper.getClass().getCanonicalName())) { MainUtil.sendMessage(player, "&cUUID mode already in use!"); return false; } MainUtil.sendConsoleMessage("&6Beginning UUID mode conversion"); MainUtil.sendConsoleMessage("&7 - Disconnecting players"); - for (final PlotPlayer pp : UUIDHandler.getPlayers().values()) - { + for (final PlotPlayer pp : UUIDHandler.getPlayers().values()) { pp.kick("PlotSquared UUID conversion has been initiated. You may reconnect when finished."); } - + MainUtil.sendConsoleMessage("&7 - Initializing map"); - + final HashMap uCMap = new HashMap(); final HashMap uCReverse = new HashMap(); - + MainUtil.sendConsoleMessage("&7 - Collecting playerdata"); - + final HashSet worlds = new HashSet<>(); worlds.add(Bukkit.getWorlds().get(0).getName()); worlds.add("world"); final HashSet uuids = new HashSet<>(); final HashSet names = new HashSet<>(); - for (final String worldname : worlds) - { + for (final String worldname : worlds) { final File playerdataFolder = new File(worldname + File.separator + "playerdata"); - String[] dat = playerdataFolder.list(new FilenameFilter() - { + String[] dat = playerdataFolder.list(new FilenameFilter() { @Override - public boolean accept(final File f, final String s) - { + public boolean accept(final File f, final String s) { return s.endsWith(".dat"); } }); - if (dat != null) - { - for (final String current : dat) - { + if (dat != null) { + for (final String current : dat) { final String s = current.replaceAll(".dat$", ""); - try - { + try { final UUID uuid = UUID.fromString(s); uuids.add(uuid); - } - catch (final Exception e) - { + } catch (final Exception e) { MainUtil.sendMessage(plr, C.PREFIX.s() + "Invalid playerdata: " + current); } } } final File playersFolder = new File(worldname + File.separator + "players"); - dat = playersFolder.list(new FilenameFilter() - { + dat = playersFolder.list(new FilenameFilter() { @Override - public boolean accept(final File f, final String s) - { + public boolean accept(final File f, final String s) { return s.endsWith(".dat"); } }); - if (dat != null) - { - for (final String current : dat) - { + if (dat != null) { + for (final String current : dat) { names.add(current.replaceAll(".dat$", "")); } } } - + MainUtil.sendConsoleMessage("&7 - Populating map"); UUID uuid2; final UUIDWrapper wrapper = new DefaultUUIDWrapper(); - for (UUID uuid : uuids) - { - try - { + for (UUID uuid : uuids) { + try { final OfflinePlotPlayer op = wrapper.getOfflinePlayer(uuid); uuid = currentUUIDWrapper.getUUID(op); uuid2 = newWrapper.getUUID(op); - if (!uuid.equals(uuid2) && !uCMap.containsKey(uuid) && !uCReverse.containsKey(uuid2)) - { + if (!uuid.equals(uuid2) && !uCMap.containsKey(uuid) && !uCReverse.containsKey(uuid2)) { uCMap.put(uuid, uuid2); uCReverse.put(uuid2, uuid); } - } - catch (final Throwable e) - { + } catch (final Throwable e) { MainUtil.sendMessage(plr, C.PREFIX.s() + "&6Invalid playerdata: " + uuid.toString() + ".dat"); } } - for (final String name : names) - { + for (final String name : names) { final UUID uuid = currentUUIDWrapper.getUUID(name); uuid2 = newWrapper.getUUID(name); - if (!uuid.equals(uuid2)) - { + if (!uuid.equals(uuid2)) { uCMap.put(uuid, uuid2); uCReverse.put(uuid2, uuid); } } - if (uCMap.size() == 0) - { + if (uCMap.size() == 0) { MainUtil.sendConsoleMessage("&c - Error! Attempting to repopulate"); - for (final OfflinePlotPlayer op : currentUUIDWrapper.getOfflinePlayers()) - { - if (op.getLastPlayed() != 0) - { + for (final OfflinePlotPlayer op : currentUUIDWrapper.getOfflinePlayers()) { + if (op.getLastPlayed() != 0) { // String name = op.getName(); // StringWrapper wrap = new StringWrapper(name); final UUID uuid = currentUUIDWrapper.getUUID(op); uuid2 = newWrapper.getUUID(op); - if (!uuid.equals(uuid2)) - { + if (!uuid.equals(uuid2)) { uCMap.put(uuid, uuid2); uCReverse.put(uuid2, uuid); } } } - if (uCMap.size() == 0) - { + if (uCMap.size() == 0) { MainUtil.sendConsoleMessage("&cError. Failed to collect UUIDs!"); return false; - } - else - { + } else { MainUtil.sendConsoleMessage("&a - Successfully repopulated"); } } - + MainUtil.sendConsoleMessage("&7 - Replacing cache"); - TaskManager.runTaskAsync(new Runnable() - { + TaskManager.runTaskAsync(new Runnable() { @Override - public void run() - { - for (final Entry entry : uCMap.entrySet()) - { + public void run() { + for (final Entry entry : uCMap.entrySet()) { final String name = UUIDHandler.getName(entry.getKey()); - if (name != null) - { + if (name != null) { UUIDHandler.add(new StringWrapper(name), entry.getValue()); } } - + MainUtil.sendConsoleMessage("&7 - Scanning for applicable files (uuids.txt)"); - + final File file = new File(PS.get().IMP.getDirectory(), "uuids.txt"); - if (file.exists()) - { - try - { + if (file.exists()) { + try { final List lines = Files.readAllLines(file.toPath(), StandardCharsets.UTF_8); - for (String line : lines) - { - try - { + for (String line : lines) { + try { line = line.trim(); - if (line.length() == 0) - { + if (line.length() == 0) { continue; } line = line.replaceAll("[\\|][0-9]+[\\|][0-9]+[\\|]", ""); final String[] split = line.split("\\|"); final String name = split[0]; - if ((name.length() == 0) || (name.length() > 16) || !StringMan.isAlphanumericUnd(name)) - { + if ((name.length() == 0) || (name.length() > 16) || !StringMan.isAlphanumericUnd(name)) { continue; } final UUID old = currentUUIDWrapper.getUUID(name); - if (old == null) - { + if (old == null) { continue; } final UUID now = newWrapper.getUUID(name); UUIDHandler.add(new StringWrapper(name), now); uCMap.put(old, now); uCReverse.put(now, old); - } - catch (final Exception e2) - { + } catch (final Exception e2) { e2.printStackTrace(); } } - } - catch (final IOException e) - { + } catch (final IOException e) { e.printStackTrace(); } } - + MainUtil.sendConsoleMessage("&7 - Replacing wrapper"); UUIDHandler.setUUIDWrapper(newWrapper); - + MainUtil.sendConsoleMessage("&7 - Updating plot objects"); - - for (final Plot plot : PS.get().getPlotsRaw()) - { + + for (final Plot plot : PS.get().getPlotsRaw()) { final UUID value = uCMap.get(plot.owner); - if (value != null) - { + if (value != null) { plot.owner = value; } plot.getTrusted().clear(); plot.getMembers().clear(); plot.getDenied().clear(); } - + MainUtil.sendConsoleMessage("&7 - Deleting database"); final AbstractDB database = DBFunc.dbManager; final boolean result = database.deleteTables(); - + MainUtil.sendConsoleMessage("&7 - Creating tables"); - - try - { + + try { database.createTables(); - if (!result) - { + if (!result) { MainUtil.sendConsoleMessage("&cConversion failed! Attempting recovery"); - for (final Plot plot : PS.get().getPlots()) - { + for (final Plot plot : PS.get().getPlots()) { final UUID value = uCReverse.get(plot.owner); - if (value != null) - { + if (value != null) { plot.owner = value; } } - database.createPlotsAndData(new ArrayList<>(PS.get().getPlots()), new Runnable() - { + database.createPlotsAndData(new ArrayList<>(PS.get().getPlots()), new Runnable() { @Override - public void run() - { + public void run() { MainUtil.sendMessage(null, "&6Recovery was successful!"); } }); return; } - } - catch (final Exception e) - { + } catch (final Exception e) { e.printStackTrace(); return; } - - if (newWrapper instanceof OfflineUUIDWrapper) - { + + if (newWrapper instanceof OfflineUUIDWrapper) { PS.get().config.set("UUID.force-lowercase", false); PS.get().config.set("UUID.offline", true); - } - else if (newWrapper instanceof LowerOfflineUUIDWrapper) - { + } else if (newWrapper instanceof LowerOfflineUUIDWrapper) { PS.get().config.set("UUID.force-lowercase", true); PS.get().config.set("UUID.offline", true); - } - else if (newWrapper instanceof DefaultUUIDWrapper) - { + } else if (newWrapper instanceof DefaultUUIDWrapper) { PS.get().config.set("UUID.force-lowercase", false); PS.get().config.set("UUID.offline", false); } - try - { + try { PS.get().config.save(PS.get().configFile); - } - catch (final Exception e) - { + } catch (final Exception e) { MainUtil.sendConsoleMessage("Could not save configuration. It will need to be manuall set!"); } - + MainUtil.sendConsoleMessage("&7 - Populating tables"); - - TaskManager.runTaskAsync(new Runnable() - { + + TaskManager.runTaskAsync(new Runnable() { @Override - public void run() - { + public void run() { final ArrayList plots = new ArrayList<>(PS.get().getPlots()); - database.createPlotsAndData(plots, new Runnable() - { + database.createPlotsAndData(plots, new Runnable() { @Override - public void run() - { + public void run() { MainUtil.sendConsoleMessage("&aConversion complete!"); } }); } }); - + MainUtil.sendConsoleMessage("&aIt is now safe for players to join"); MainUtil.sendConsoleMessage("&cConversion is still in progress, you will be notified when it is complete"); } diff --git a/src/main/java/com/intellectualcrafters/plot/commands/Delete.java b/src/main/java/com/intellectualcrafters/plot/commands/Delete.java index a2fc99a94..437943666 100644 --- a/src/main/java/com/intellectualcrafters/plot/commands/Delete.java +++ b/src/main/java/com/intellectualcrafters/plot/commands/Delete.java @@ -43,66 +43,56 @@ usage = "/plot delete", aliases = { "dispose", "del" }, category = CommandCategory.ACTIONS, requiredType = RequiredType.NONE) -public class Delete extends SubCommand -{ - +public class Delete extends SubCommand { + @Override - public boolean onCommand(final PlotPlayer plr, final String[] args) - { - + public boolean onCommand(final PlotPlayer plr, final String[] args) { + final Location loc = plr.getLocation(); final Plot plot = MainUtil.getPlot(loc); - if (plot == null) { return !sendMessage(plr, C.NOT_IN_PLOT); } - if (!MainUtil.getTopPlot(plot).equals(MainUtil.getBottomPlot(plot))) { return !sendMessage(plr, C.UNLINK_REQUIRED); } - if (((!plot.hasOwner() || !plot.isOwner(plr.getUUID()))) && !Permissions.hasPermission(plr, "plots.admin.command.delete")) { return !sendMessage(plr, C.NO_PLOT_PERMS); } + if (plot == null) { + return !sendMessage(plr, C.NOT_IN_PLOT); + } + if (!MainUtil.getTopPlot(plot).equals(MainUtil.getBottomPlot(plot))) { + return !sendMessage(plr, C.UNLINK_REQUIRED); + } + if (((!plot.hasOwner() || !plot.isOwner(plr.getUUID()))) && !Permissions.hasPermission(plr, "plots.admin.command.delete")) { + return !sendMessage(plr, C.NO_PLOT_PERMS); + } final PlotWorld pWorld = PS.get().getPlotWorld(plot.world); - if (MainUtil.runners.containsKey(plot)) - { + if (MainUtil.runners.containsKey(plot)) { MainUtil.sendMessage(plr, C.WAIT_FOR_TIMER); return false; } - final Runnable runnable = new Runnable() - { + final Runnable runnable = new Runnable() { @Override - public void run() - { - if ((EconHandler.manager != null) && pWorld.USE_ECONOMY && plot.hasOwner() && plot.isOwner(UUIDHandler.getUUID(plr))) - { + public void run() { + if ((EconHandler.manager != null) && pWorld.USE_ECONOMY && plot.hasOwner() && plot.isOwner(UUIDHandler.getUUID(plr))) { final double c = pWorld.SELL_PRICE; - if (c > 0d) - { + if (c > 0d) { EconHandler.manager.depositMoney(plr, c); sendMessage(plr, C.ADDED_BALANCE, c + ""); } } - if (plot.unclaim()) - { + if (plot.unclaim()) { final long start = System.currentTimeMillis(); - final boolean result = MainUtil.clearAsPlayer(plot, true, new Runnable() - { + final boolean result = MainUtil.clearAsPlayer(plot, true, new Runnable() { @Override - public void run() - { + public void run() { MainUtil.sendMessage(plr, C.CLEARING_DONE, "" + (System.currentTimeMillis() - start)); } }); - if (!result) - { + if (!result) { MainUtil.sendMessage(plr, C.WAIT_FOR_TIMER); } - } - else - { + } else { MainUtil.sendMessage(plr, C.UNCLAIM_FAILED); } } }; - if (Settings.CONFIRM_DELETE && !(Permissions.hasPermission(plr, "plots.confirm.bypass"))) - { + if (Settings.CONFIRM_DELETE && !(Permissions.hasPermission(plr, "plots.confirm.bypass"))) { CmdConfirm.addPending(plr, "/plot delete " + plot.id, runnable); - } - else - { + } else { TaskManager.runTask(runnable); } return true; diff --git a/src/main/java/com/intellectualcrafters/plot/commands/Deny.java b/src/main/java/com/intellectualcrafters/plot/commands/Deny.java index 5f033a543..5685515c4 100644 --- a/src/main/java/com/intellectualcrafters/plot/commands/Deny.java +++ b/src/main/java/com/intellectualcrafters/plot/commands/Deny.java @@ -36,69 +36,49 @@ import com.plotsquared.bukkit.uuid.SQLUUIDHandler; import com.plotsquared.general.commands.Argument; import com.plotsquared.general.commands.CommandDeclaration; -@CommandDeclaration( -command = "deny", -aliases = { "d" }, -description = "Deny a user from a plot", -usage = "/plot deny ", -category = CommandCategory.ACTIONS, -requiredType = RequiredType.NONE) -public class Deny extends SubCommand -{ - - public Deny() - { - requiredArguments = new Argument[] { - Argument.PlayerName - }; +@CommandDeclaration(command = "deny", aliases = { "d" }, description = "Deny a user from a plot", usage = "/plot deny ", category = CommandCategory.ACTIONS, requiredType = RequiredType.NONE) +public class Deny extends SubCommand { + + public Deny() { + requiredArguments = new Argument[] { Argument.PlayerName }; } - + @Override - public boolean onCommand(final PlotPlayer plr, final String[] args) - { - + public boolean onCommand(final PlotPlayer plr, final String[] args) { + final Location loc = plr.getLocation(); final Plot plot = MainUtil.getPlot(loc); - if (plot == null) { return !sendMessage(plr, C.NOT_IN_PLOT); } - if ((plot == null) || !plot.hasOwner()) - { + if (plot == null) { + return !sendMessage(plr, C.NOT_IN_PLOT); + } + if ((plot == null) || !plot.hasOwner()) { MainUtil.sendMessage(plr, C.PLOT_UNOWNED); return false; } - if (!plot.isOwner(plr.getUUID()) && !Permissions.hasPermission(plr, "plots.admin.command.deny")) - { + if (!plot.isOwner(plr.getUUID()) && !Permissions.hasPermission(plr, "plots.admin.command.deny")) { MainUtil.sendMessage(plr, C.NO_PLOT_PERMS); return true; } UUID uuid; - if (args[0].equalsIgnoreCase("*")) - { + if (args[0].equalsIgnoreCase("*")) { uuid = DBFunc.everyone; - } - else - { + } else { uuid = UUIDHandler.getUUID(args[0], null); } - if (uuid == null) - { - if (UUIDHandler.implementation instanceof SQLUUIDHandler) - { + if (uuid == null) { + if (UUIDHandler.implementation instanceof SQLUUIDHandler) { MainUtil.sendMessage(plr, C.INVALID_PLAYER_WAIT, args[0]); - } - else - { + } else { MainUtil.sendMessage(plr, C.INVALID_PLAYER, args[0]); } return false; } - if (plot.isOwner(uuid)) - { + if (plot.isOwner(uuid)) { MainUtil.sendMessage(plr, C.ALREADY_OWNER); return false; } - - if (plot.getDenied().contains(uuid)) - { + + if (plot.getDenied().contains(uuid)) { MainUtil.sendMessage(plr, C.ALREADY_ADDED); return false; } @@ -107,18 +87,15 @@ public class Deny extends SubCommand plot.addDenied(uuid); EventUtil.manager.callDenied(plr, plot, uuid, true); MainUtil.sendMessage(plr, C.DENIED_ADDED); - if (!uuid.equals(DBFunc.everyone)) - { + if (!uuid.equals(DBFunc.everyone)) { handleKick(uuid, plot); } return true; } - - private void handleKick(final UUID uuid, final Plot plot) - { + + private void handleKick(final UUID uuid, final Plot plot) { final PlotPlayer pp = UUIDHandler.getPlayer(uuid); - if ((pp != null) && plot.equals(MainUtil.getPlot(pp.getLocation()))) - { + if ((pp != null) && plot.equals(MainUtil.getPlot(pp.getLocation()))) { pp.teleport(BlockManager.manager.getSpawn(pp.getLocation().getWorld())); MainUtil.sendMessage(pp, C.YOU_GOT_DENIED); } diff --git a/src/main/java/com/intellectualcrafters/plot/commands/Done.java b/src/main/java/com/intellectualcrafters/plot/commands/Done.java index 6cdf7ae22..505082ec0 100644 --- a/src/main/java/com/intellectualcrafters/plot/commands/Done.java +++ b/src/main/java/com/intellectualcrafters/plot/commands/Done.java @@ -34,53 +34,39 @@ import com.intellectualcrafters.plot.util.MainUtil; import com.intellectualcrafters.plot.util.Permissions; import com.plotsquared.general.commands.CommandDeclaration; -@CommandDeclaration( -command = "done", -aliases = { "submit" }, -description = "Mark a plot as done", -permission = "plots.done", -category = CommandCategory.ACTIONS, -requiredType = RequiredType.NONE) -public class Done extends SubCommand -{ - +@CommandDeclaration(command = "done", aliases = { "submit" }, description = "Mark a plot as done", permission = "plots.done", category = CommandCategory.ACTIONS, requiredType = RequiredType.NONE) +public class Done extends SubCommand { + @Override - public boolean onCommand(final PlotPlayer plr, final String[] args) - { + public boolean onCommand(final PlotPlayer plr, final String[] args) { final Location loc = plr.getLocation(); final Plot plot = MainUtil.getPlot(loc); - if ((plot == null) || !plot.hasOwner()) { return !sendMessage(plr, C.NOT_IN_PLOT); } - if ((!plot.isOwner(plr.getUUID())) && !Permissions.hasPermission(plr, "plots.admin.command.done")) - { + if ((plot == null) || !plot.hasOwner()) { + return !sendMessage(plr, C.NOT_IN_PLOT); + } + if ((!plot.isOwner(plr.getUUID())) && !Permissions.hasPermission(plr, "plots.admin.command.done")) { MainUtil.sendMessage(plr, C.NO_PLOT_PERMS); return false; } - if (plot.getSettings().flags.containsKey("done")) - { + if (plot.getSettings().flags.containsKey("done")) { MainUtil.sendMessage(plr, C.DONE_ALREADY_DONE); return false; } - if (MainUtil.runners.containsKey(plot)) - { + if (MainUtil.runners.containsKey(plot)) { MainUtil.sendMessage(plr, C.WAIT_FOR_TIMER); return false; } MainUtil.runners.put(plot, 1); MainUtil.sendMessage(plr, C.GENERATING_LINK); - HybridUtils.manager.analyzePlot(plot, new RunnableVal() - { + HybridUtils.manager.analyzePlot(plot, new RunnableVal() { @Override - public void run() - { + public void run() { MainUtil.runners.remove(plot); - if ((value == null) || (value.getComplexity() >= Settings.CLEAR_THRESHOLD)) - { + if ((value == null) || (value.getComplexity() >= Settings.CLEAR_THRESHOLD)) { final Flag flag = new Flag(FlagManager.getFlag("done"), (System.currentTimeMillis() / 1000)); FlagManager.addPlotFlag(plot, flag); MainUtil.sendMessage(plr, C.DONE_SUCCESS); - } - else - { + } else { MainUtil.sendMessage(plr, C.DONE_INSUFFICIENT_COMPLEXITY); } } diff --git a/src/main/java/com/intellectualcrafters/plot/commands/Download.java b/src/main/java/com/intellectualcrafters/plot/commands/Download.java index c9f0f8db3..be0c55819 100644 --- a/src/main/java/com/intellectualcrafters/plot/commands/Download.java +++ b/src/main/java/com/intellectualcrafters/plot/commands/Download.java @@ -16,59 +16,46 @@ import com.intellectualcrafters.plot.util.SchematicHandler; import com.intellectualcrafters.plot.util.TaskManager; import com.plotsquared.general.commands.CommandDeclaration; -@CommandDeclaration( -command = "download", -aliases = { "dl" }, -category = CommandCategory.ACTIONS, -requiredType = RequiredType.NONE, -description = "Download your plot", -permission = "plots.download") -public class Download extends SubCommand -{ - +@CommandDeclaration(command = "download", aliases = { "dl" }, category = CommandCategory.ACTIONS, requiredType = RequiredType.NONE, description = "Download your plot", permission = "plots.download") +public class Download extends SubCommand { + @Override - public boolean onCommand(final PlotPlayer plr, final String[] args) - { - - if (!Settings.METRICS) - { + public boolean onCommand(final PlotPlayer plr, final String[] args) { + + if (!Settings.METRICS) { MainUtil.sendMessage(plr, "&cPlease enable metrics in order to use this command.\n&7 - Or host it yourself if you don't like the free service"); return false; } final String world = plr.getLocation().getWorld(); - if (!PS.get().isPlotWorld(world)) { return !sendMessage(plr, C.NOT_IN_PLOT_WORLD); } + if (!PS.get().isPlotWorld(world)) { + return !sendMessage(plr, C.NOT_IN_PLOT_WORLD); + } final Plot plot = MainUtil.getPlot(plr.getLocation()); - if (plot == null) { return !sendMessage(plr, C.NOT_IN_PLOT); } - if (!plot.hasOwner()) - { + if (plot == null) { + return !sendMessage(plr, C.NOT_IN_PLOT); + } + if (!plot.hasOwner()) { MainUtil.sendMessage(plr, C.PLOT_UNOWNED); return false; } - if ((!plot.isOwner(plr.getUUID()) || (Settings.DOWNLOAD_REQUIRES_DONE && (FlagManager.getPlotFlag(plot, "done") != null))) && !Permissions.hasPermission(plr, "plots.admin.command.download")) - { + if ((!plot.isOwner(plr.getUUID()) || (Settings.DOWNLOAD_REQUIRES_DONE && (FlagManager.getPlotFlag(plot, "done") != null))) && !Permissions.hasPermission(plr, "plots.admin.command.download")) { MainUtil.sendMessage(plr, C.NO_PLOT_PERMS); return false; } - if (MainUtil.runners.containsKey(plot)) - { + if (MainUtil.runners.containsKey(plot)) { MainUtil.sendMessage(plr, C.WAIT_FOR_TIMER); return false; } MainUtil.runners.put(plot, 1); MainUtil.sendMessage(plr, C.GENERATING_LINK); - SchematicHandler.manager.getCompoundTag(plot.world, plot.id, new RunnableVal() - { + SchematicHandler.manager.getCompoundTag(plot.world, plot.id, new RunnableVal() { @Override - public void run() - { - TaskManager.runTaskAsync(new Runnable() - { + public void run() { + TaskManager.runTaskAsync(new Runnable() { @Override - public void run() - { + public void run() { final URL url = SchematicHandler.manager.upload(value, null, null); - if (url == null) - { + if (url == null) { MainUtil.sendMessage(plr, C.GENERATING_LINK_FAILED); MainUtil.runners.remove(plot); return; diff --git a/src/main/java/com/intellectualcrafters/plot/commands/FlagCmd.java b/src/main/java/com/intellectualcrafters/plot/commands/FlagCmd.java index 70d1df41a..4a851bdc5 100644 --- a/src/main/java/com/intellectualcrafters/plot/commands/FlagCmd.java +++ b/src/main/java/com/intellectualcrafters/plot/commands/FlagCmd.java @@ -46,19 +46,16 @@ description = "Manage plot flags", category = CommandCategory.ACTIONS, requiredType = RequiredType.NONE, permission = "plots.flag") -public class FlagCmd extends SubCommand -{ - +public class FlagCmd extends SubCommand { + @Override - public String getUsage() - { + public String getUsage() { return super.getUsage().replaceAll("", StringMan.join(FlagManager.getFlags(), "|")); } - + @Override - public boolean onCommand(final PlotPlayer player, final String... args) - { - + public boolean onCommand(final PlotPlayer player, final String... args) { + /* * plot flag set fly true * plot flag remove fly @@ -66,50 +63,40 @@ public class FlagCmd extends SubCommand * plot flag add use 2,4 * plot flag list */ - if (args.length == 0) - { + if (args.length == 0) { MainUtil.sendMessage(player, C.COMMAND_SYNTAX, "/plot flag "); return false; } final Location loc = player.getLocation(); final Plot plot = MainUtil.getPlot(loc); - if (plot == null) - { + if (plot == null) { MainUtil.sendMessage(player, C.NOT_IN_PLOT); return false; } - if (!plot.hasOwner()) - { + if (!plot.hasOwner()) { sendMessage(player, C.PLOT_NOT_CLAIMED); return false; } - if (!plot.isOwner(player.getUUID()) && !Permissions.hasPermission(player, "plots.set.flag.other")) - { + if (!plot.isOwner(player.getUUID()) && !Permissions.hasPermission(player, "plots.set.flag.other")) { MainUtil.sendMessage(player, C.NO_PERMISSION, "plots.set.flag.other"); return false; } - if ((args.length > 1) && FlagManager.isReserved(args[1])) - { + if ((args.length > 1) && FlagManager.isReserved(args[1])) { MainUtil.sendMessage(player, C.NOT_VALID_FLAG); return false; } - switch (args[0].toLowerCase()) - { - case "info": - { - if (!Permissions.hasPermission(player, "plots.set.flag")) - { + switch (args[0].toLowerCase()) { + case "info": { + if (!Permissions.hasPermission(player, "plots.set.flag")) { MainUtil.sendMessage(player, C.NO_PERMISSION, "plots.flag.info"); return false; } - if (args.length != 2) - { + if (args.length != 2) { MainUtil.sendMessage(player, C.COMMAND_SYNTAX, "/plot flag info "); return false; } final AbstractFlag af = FlagManager.getFlag(args[1]); - if (af == null) - { + if (af == null) { MainUtil.sendMessage(player, C.NOT_VALID_FLAG); MainUtil.sendMessage(player, C.COMMAND_SYNTAX, "/plot flag info "); return false; @@ -122,92 +109,73 @@ public class FlagCmd extends SubCommand MainUtil.sendMessage(player, C.FLAG_DESC, af.getValueDesc()); return true; } - case "set": - { - if (!Permissions.hasPermission(player, "plots.set.flag")) - { + case "set": { + if (!Permissions.hasPermission(player, "plots.set.flag")) { MainUtil.sendMessage(player, C.NO_PERMISSION, "plots.set.flag"); return false; } - if (args.length < 3) - { + if (args.length < 3) { MainUtil.sendMessage(player, C.COMMAND_SYNTAX, "/plot flag set "); return false; } final AbstractFlag af = FlagManager.getFlag(args[1].toLowerCase()); - if (af == null) - { + if (af == null) { MainUtil.sendMessage(player, C.NOT_VALID_FLAG); return false; } final String value = StringMan.join(Arrays.copyOfRange(args, 2, args.length), " "); - if (!Permissions.hasPermission(player, "plots.set.flag." + args[1].toLowerCase() + "." + value.toLowerCase())) - { + if (!Permissions.hasPermission(player, "plots.set.flag." + args[1].toLowerCase() + "." + value.toLowerCase())) { MainUtil.sendMessage(player, C.NO_PERMISSION, "plots.set.flag." + args[1].toLowerCase() + "." + value.toLowerCase()); return false; } final Object parsed = af.parseValueRaw(value); - if (parsed == null) - { + if (parsed == null) { MainUtil.sendMessage(player, "&c" + af.getValueDesc()); return false; } final Flag flag = new Flag(FlagManager.getFlag(args[1].toLowerCase(), true), parsed); final boolean result = FlagManager.addPlotFlag(plot, flag); - if (!result) - { + if (!result) { MainUtil.sendMessage(player, C.FLAG_NOT_ADDED); return false; } MainUtil.sendMessage(player, C.FLAG_ADDED); return true; } - case "remove": - { - if (!Permissions.hasPermission(player, "plots.flag.remove")) - { + case "remove": { + if (!Permissions.hasPermission(player, "plots.flag.remove")) { MainUtil.sendMessage(player, C.NO_PERMISSION, "plots.flag.remove"); return false; } - if ((args.length != 2) && (args.length != 3)) - { + if ((args.length != 2) && (args.length != 3)) { MainUtil.sendMessage(player, C.COMMAND_SYNTAX, "/plot flag remove [values]"); return false; } final AbstractFlag af = FlagManager.getFlag(args[1].toLowerCase()); - if (af == null) - { + if (af == null) { MainUtil.sendMessage(player, C.NOT_VALID_FLAG); return false; } final Flag flag = FlagManager.getPlotFlagAbs(plot, args[1].toLowerCase()); - if (!Permissions.hasPermission(player, "plots.set.flag." + args[1].toLowerCase())) - { - for (final String entry : args[2].split(",")) - { - if (!Permissions.hasPermission(player, "plots.set.flag." + args[1].toLowerCase() + "." + entry)) - { + if (!Permissions.hasPermission(player, "plots.set.flag." + args[1].toLowerCase())) { + for (final String entry : args[2].split(",")) { + if (!Permissions.hasPermission(player, "plots.set.flag." + args[1].toLowerCase() + "." + entry)) { MainUtil.sendMessage(player, C.NO_PERMISSION, "plots.set.flag." + args[1].toLowerCase() + "." + entry); return false; } } } - if (flag == null) - { + if (flag == null) { MainUtil.sendMessage(player, C.FLAG_NOT_IN_PLOT); return false; } - if ((args.length == 3) && flag.getAbstractFlag().isList()) - { + if ((args.length == 3) && flag.getAbstractFlag().isList()) { final String value = StringMan.join(Arrays.copyOfRange(args, 2, args.length), " "); ((FlagValue.ListValue) flag.getAbstractFlag().value).remove(flag.getValue(), value); DBFunc.setFlags(plot, plot.getSettings().flags.values()); - } - else - { + } else { final boolean result = FlagManager.removePlotFlag(plot, flag.getKey()); - if (!result) - { + if (!result) { MainUtil.sendMessage(player, C.FLAG_NOT_REMOVED); return false; } @@ -215,30 +183,23 @@ public class FlagCmd extends SubCommand MainUtil.sendMessage(player, C.FLAG_REMOVED); return true; } - case "add": - { - if (!Permissions.hasPermission(player, "plots.flag.add")) - { + case "add": { + if (!Permissions.hasPermission(player, "plots.flag.add")) { MainUtil.sendMessage(player, C.NO_PERMISSION, "plots.flag.add"); return false; } - if (args.length < 3) - { + if (args.length < 3) { MainUtil.sendMessage(player, C.COMMAND_SYNTAX, "/plot flag add "); return false; } final AbstractFlag af = FlagManager.getFlag(args[1].toLowerCase()); - if (af == null) - { + if (af == null) { MainUtil.sendMessage(player, C.NOT_VALID_FLAG); return false; } - if (!Permissions.hasPermission(player, "plots.set.flag." + args[1].toLowerCase())) - { - for (final String entry : args[2].split(",")) - { - if (!Permissions.hasPermission(player, "plots.set.flag." + args[1].toLowerCase() + "." + entry)) - { + if (!Permissions.hasPermission(player, "plots.set.flag." + args[1].toLowerCase())) { + for (final String entry : args[2].split(",")) { + if (!Permissions.hasPermission(player, "plots.set.flag." + args[1].toLowerCase() + "." + entry)) { MainUtil.sendMessage(player, C.NO_PERMISSION, "plots.set.flag." + args[1].toLowerCase() + "." + entry); return false; } @@ -246,23 +207,18 @@ public class FlagCmd extends SubCommand } final String value = StringMan.join(Arrays.copyOfRange(args, 2, args.length), " "); final Object parsed = af.parseValueRaw(value); - if (parsed == null) - { + if (parsed == null) { MainUtil.sendMessage(player, "&c" + af.getValueDesc()); return false; } Flag flag = FlagManager.getPlotFlag(plot, args[1].toLowerCase()); - if ((flag == null) || !flag.getAbstractFlag().isList()) - { + if ((flag == null) || !flag.getAbstractFlag().isList()) { flag = new Flag(FlagManager.getFlag(args[1].toLowerCase(), true), parsed); - } - else - { + } else { ((FlagValue.ListValue) flag.getAbstractFlag().value).add(flag.getValue(), value); } final boolean result = FlagManager.addPlotFlag(plot, flag); - if (!result) - { + if (!result) { MainUtil.sendMessage(player, C.FLAG_NOT_ADDED); return false; } @@ -270,32 +226,26 @@ public class FlagCmd extends SubCommand MainUtil.sendMessage(player, C.FLAG_ADDED); return true; } - case "list": - { - if (!Permissions.hasPermission(player, "plots.flag.list")) - { + case "list": { + if (!Permissions.hasPermission(player, "plots.flag.list")) { MainUtil.sendMessage(player, C.NO_PERMISSION, "plots.flag.list"); return false; } - if (args.length != 1) - { + if (args.length != 1) { MainUtil.sendMessage(player, C.COMMAND_SYNTAX, "/plot flag list"); return false; } final HashMap> flags = new HashMap<>(); - for (final AbstractFlag af : FlagManager.getFlags()) - { + for (final AbstractFlag af : FlagManager.getFlags()) { final String type = af.value.getClass().getSimpleName().replaceAll("Value", ""); - if (!flags.containsKey(type)) - { + if (!flags.containsKey(type)) { flags.put(type, new ArrayList()); } flags.get(type).add(af.getKey()); } String message = ""; String prefix = ""; - for (final String flag : flags.keySet()) - { + for (final String flag : flags.keySet()) { message += prefix + "&6" + flag + ": &7" + StringMan.join(flags.get(flag), ", "); prefix = "\n"; } diff --git a/src/main/java/com/intellectualcrafters/plot/commands/GenerateDocs.java b/src/main/java/com/intellectualcrafters/plot/commands/GenerateDocs.java index a4cc8b2d6..30e56feaa 100644 --- a/src/main/java/com/intellectualcrafters/plot/commands/GenerateDocs.java +++ b/src/main/java/com/intellectualcrafters/plot/commands/GenerateDocs.java @@ -13,10 +13,8 @@ import com.intellectualcrafters.plot.object.PlotPlayer; import com.intellectualcrafters.plot.util.StringMan; import com.plotsquared.general.commands.Command; -public class GenerateDocs -{ - public static void main(final String[] args) - { +public class GenerateDocs { + public static void main(final String[] args) { MainCommand.getInstance().addCommand(new WE_Anywhere()); MainCommand.getInstance().addCommand(new Cluster()); final ArrayList> commands = MainCommand.getInstance().getCommands(); @@ -26,69 +24,60 @@ public class GenerateDocs log(" - Then do a pull request and it will be added to this page"); log(""); log("# Contents"); - for (final CommandCategory category : CommandCategory.values()) - { + for (final CommandCategory category : CommandCategory.values()) { log("###### " + category.name()); - for (final Command command : MainCommand.getCommands(category, null)) - { + for (final Command command : MainCommand.getCommands(category, null)) { log(" - [/plot " + command.getCommand() + "](https://github.com/IntellectualSites/PlotSquared/wiki/Commands#" + command.getCommand() + ") "); } log(""); } log("# Commands"); - for (final Command command : commands) - { + for (final Command command : commands) { printCommand(command); } } - - public static void printCommand(final Command command) - { - try - { + + public static void printCommand(final Command command) { + try { final String clazz = command.getClass().getSimpleName(); final String name = command.getCommand(); - + // Header final String source = "https://github.com/IntellectualSites/PlotSquared/tree/master/src/main/java/com/intellectualcrafters/plot/commands/" + clazz + ".java"; log("## [" + name.toUpperCase() + "](" + source + ") "); - + final File file = new File("src/main/java/com/intellectualcrafters/plot/commands/" + clazz + ".java"); final List lines = Files.readAllLines(file.toPath(), StandardCharsets.UTF_8); final List perms = getPerms(name, lines); final String comment = getComments(lines); - + log("#### Description"); log("`" + command.getDescription() + "`"); - if (comment.length() > 0) - { + if (comment.length() > 0) { log("##### Comments"); log("``` java"); log(comment); log("```"); } - + log("#### Usage"); log("`" + command.getUsage().replaceAll("\\{label\\}", "plot") + "`"); - - if (command.getRequiredType() != RequiredType.NONE) - { + + if (command.getRequiredType() != RequiredType.NONE) { log("#### Required callers"); log("`" + command.getRequiredType().name() + "`"); } - + final Set aliases = command.getAliases(); - if (aliases.size() > 0) - { + if (aliases.size() > 0) { log("#### Aliases"); log("`" + StringMan.getString(command.getAliases()) + "`"); } - + log("#### Permissions"); log("##### Primary"); log(" - `" + command.getPermission() + "` "); - if (perms.size() > 0) - { + if (perms.size() > 0) { log(""); log("##### Other"); log(" - `" + StringMan.join(perms, "`\n - `") + "`"); @@ -96,69 +85,53 @@ public class GenerateDocs log(""); log("***"); log(""); - } - catch (final Exception e) - { + } catch (final Exception e) { e.printStackTrace(); } } - - public static List getPerms(final String cmd, final List lines) - { + + public static List getPerms(final String cmd, final List lines) { final ArrayList perms = new ArrayList(); final Pattern p = Pattern.compile("\"([^\"]*)\""); - for (final String line : lines) - { - if (line.contains("Permissions.hasPermission(")) - { + for (final String line : lines) { + if (line.contains("Permissions.hasPermission(")) { final Matcher m = p.matcher(line); - while (m.find()) - { + while (m.find()) { String perm = m.group(1); - if (perm.endsWith(".")) - { + if (perm.endsWith(".")) { perm += ""; } - if (perm.startsWith(".")) - { + if (perm.startsWith(".")) { perms.set(perms.size() - 1, perms.get(perms.size() - 1) + perm); - } - else if (perm.contains(".")) - { + } else if (perm.contains(".")) { perms.add(perm); } } } } - switch (cmd.toLowerCase()) - { + switch (cmd.toLowerCase()) { case "auto": - case "claim": - { + case "claim": { perms.add("plots.plot.#"); break; } } return perms; } - - public static String getComments(final List lines) - { + + public static String getComments(final List lines) { final StringBuilder result = new StringBuilder(); - for (String line : lines) - { + for (String line : lines) { line = line.trim(); - if (line.startsWith("/** ") || line.startsWith("*/ ") || line.startsWith("* ")) - { + if (line.startsWith("/** ") || line.startsWith("*/ ") || line.startsWith("* ")) { line = (line.replaceAll("/[*][*] ", "").replaceAll("[*]/ ", "").replaceAll("[*] ", "")).trim(); result.append(line + "\n"); } } return result.toString().trim(); } - - public static void log(final String s) - { + + public static void log(final String s) { System.out.println(s); } } diff --git a/src/main/java/com/intellectualcrafters/plot/commands/Help.java b/src/main/java/com/intellectualcrafters/plot/commands/Help.java index 5cac2dcb8..d9e5799ec 100644 --- a/src/main/java/com/intellectualcrafters/plot/commands/Help.java +++ b/src/main/java/com/intellectualcrafters/plot/commands/Help.java @@ -3,17 +3,11 @@ package com.intellectualcrafters.plot.commands; import com.intellectualcrafters.plot.object.PlotPlayer; import com.plotsquared.general.commands.CommandDeclaration; -@CommandDeclaration( -command = "help", -description = "Get this help menu", -aliases = { "he" }, -category = CommandCategory.INFO) -public class Help extends SubCommand -{ - +@CommandDeclaration(command = "help", description = "Get this help menu", aliases = { "he" }, category = CommandCategory.INFO) +public class Help extends SubCommand { + @Override - public boolean onCommand(final PlotPlayer plr, final String[] args) - { + public boolean onCommand(final PlotPlayer plr, final String[] args) { return true; } } diff --git a/src/main/java/com/intellectualcrafters/plot/commands/Home.java b/src/main/java/com/intellectualcrafters/plot/commands/Home.java index 0627a3b12..a76a38526 100644 --- a/src/main/java/com/intellectualcrafters/plot/commands/Home.java +++ b/src/main/java/com/intellectualcrafters/plot/commands/Home.java @@ -31,63 +31,43 @@ import com.intellectualcrafters.plot.object.PlotPlayer; import com.intellectualcrafters.plot.util.MainUtil; import com.plotsquared.general.commands.CommandDeclaration; -@CommandDeclaration( -command = "home", -aliases = { "h" }, -description = "Go to your plot", -usage = "/plot home [id|alias]", -category = CommandCategory.TELEPORT, -requiredType = RequiredType.NONE) -public class Home extends SubCommand -{ - - private Plot isAlias(final String a) - { - for (final Plot p : PS.get().getPlots()) - { - if ((p.getSettings().getAlias().length() > 0) && p.getSettings().getAlias().equalsIgnoreCase(a)) { return p; } +@CommandDeclaration(command = "home", aliases = { "h" }, description = "Go to your plot", usage = "/plot home [id|alias]", category = CommandCategory.TELEPORT, requiredType = RequiredType.NONE) +public class Home extends SubCommand { + + private Plot isAlias(final String a) { + for (final Plot p : PS.get().getPlots()) { + if ((p.getSettings().getAlias().length() > 0) && p.getSettings().getAlias().equalsIgnoreCase(a)) { + return p; + } } return null; } - + @Override - public boolean onCommand(final PlotPlayer plr, String[] args) - { + public boolean onCommand(final PlotPlayer plr, String[] args) { final Set all = PS.get().getPlots(plr); final Iterator iter = all.iterator(); - while (iter.hasNext()) - { - if (!iter.next().isBasePlot()) - { + while (iter.hasNext()) { + if (!iter.next().isBasePlot()) { iter.remove(); } } final ArrayList plots = PS.get().sortPlotsByTemp(all); - if (plots.size() == 1) - { + if (plots.size() == 1) { MainUtil.teleportPlayer(plr, plr.getLocation(), plots.get(0)); return true; - } - else if (plots.size() > 1) - { - if (args.length < 1) - { + } else if (plots.size() > 1) { + if (args.length < 1) { args = new String[] { "1" }; } int id = 0; - try - { + try { id = Integer.parseInt(args[0]); - } - catch (final Exception e) - { + } catch (final Exception e) { Plot temp; - if ((temp = isAlias(args[0])) != null) - { - if (temp.hasOwner()) - { - if (temp.isOwner(plr.getUUID())) - { + if ((temp = isAlias(args[0])) != null) { + if (temp.hasOwner()) { + if (temp.isOwner(plr.getUUID())) { MainUtil.teleportPlayer(plr, plr.getLocation(), temp); return true; } @@ -98,23 +78,19 @@ public class Home extends SubCommand MainUtil.sendMessage(plr, C.NOT_VALID_NUMBER, "(1, " + plots.size() + ")"); return true; } - if ((id > (plots.size())) || (id < 1)) - { + if ((id > (plots.size())) || (id < 1)) { MainUtil.sendMessage(plr, C.NOT_VALID_NUMBER, "(1, " + plots.size() + ")"); return false; } MainUtil.teleportPlayer(plr, plr.getLocation(), plots.get(id - 1)); return true; - } - else - { + } else { MainUtil.sendMessage(plr, C.FOUND_NO_PLOTS); return true; } } - - public void teleportPlayer(final PlotPlayer player, final Plot plot) - { + + public void teleportPlayer(final PlotPlayer player, final Plot plot) { MainUtil.teleportPlayer(player, player.getLocation(), plot); } } diff --git a/src/main/java/com/intellectualcrafters/plot/commands/Inbox.java b/src/main/java/com/intellectualcrafters/plot/commands/Inbox.java index 560fa5414..4397fa703 100644 --- a/src/main/java/com/intellectualcrafters/plot/commands/Inbox.java +++ b/src/main/java/com/intellectualcrafters/plot/commands/Inbox.java @@ -41,93 +41,70 @@ usage = "/plot inbox [inbox] [delete |clear|page]", permission = "plots.inbox", category = CommandCategory.ACTIONS, requiredType = RequiredType.NONE) -public class Inbox extends SubCommand -{ - - public void displayComments(final PlotPlayer player, final List oldComments, int page) - { - if ((oldComments == null) || (oldComments.size() == 0)) - { +public class Inbox extends SubCommand { + + public void displayComments(final PlotPlayer player, final List oldComments, int page) { + if ((oldComments == null) || (oldComments.size() == 0)) { MainUtil.sendMessage(player, C.INBOX_EMPTY); return; } final PlotComment[] comments = oldComments.toArray(new PlotComment[oldComments.size()]); - if (page < 0) - { + if (page < 0) { page = 0; } // Get the total pages // int totalPages = ((int) Math.ceil(12 * final int totalPages = (int) Math.ceil(comments.length / 12); - if (page > totalPages) - { + if (page > totalPages) { page = totalPages; } // Only display 12 per page int max = (page * 12) + 12; - if (max > comments.length) - { + if (max > comments.length) { max = comments.length; } final StringBuilder string = new StringBuilder(); string.append(StringMan.replaceAll(C.COMMENT_LIST_HEADER_PAGED.s(), "%amount%", comments.length, "%cur", page + 1, "%max", totalPages + 1, "%word", "all") + "\n"); PlotComment c; // This might work xD - for (int x = (page * 12); x < max; x++) - { + for (int x = (page * 12); x < max; x++) { c = comments[x]; String color; - if (player.getName().equals(c.senderName)) - { + if (player.getName().equals(c.senderName)) { color = "&a"; - } - else - { + } else { color = "&7"; } string.append("&8[&7#" + x + "&8][&7" + c.world + ";" + c.id + "&8][&6" + c.senderName + "&8]" + color + c.comment + "\n"); } MainUtil.sendMessage(player, string.toString()); } - + @Override - public boolean onCommand(final PlotPlayer player, final String[] args) - { - + public boolean onCommand(final PlotPlayer player, final String[] args) { + final Plot plot = MainUtil.getPlot(player.getLocation()); - if (args.length == 0) - { + if (args.length == 0) { sendMessage(player, C.COMMAND_SYNTAX, "/plot inbox [inbox] [delete |clear|page]"); - for (final CommentInbox inbox : CommentManager.inboxes.values()) - { - if (inbox.canRead(plot, player)) - { - if (!inbox.getComments(plot, new RunnableVal() - { + for (final CommentInbox inbox : CommentManager.inboxes.values()) { + if (inbox.canRead(plot, player)) { + if (!inbox.getComments(plot, new RunnableVal() { @Override - public void run() - { - if (value != null) - { + public void run() { + if (value != null) { int total = 0; int unread = 0; - for (final PlotComment comment : (ArrayList) value) - { + for (final PlotComment comment : (ArrayList) value) { total++; - if (comment.timestamp > CommentManager.getTimestamp(player, inbox.toString())) - { + if (comment.timestamp > CommentManager.getTimestamp(player, inbox.toString())) { unread++; } } - if (total != 0) - { + if (total != 0) { String color; - if (unread > 0) - { + if (unread > 0) { color = "&c"; - } - else - { + } else { color = ""; } sendMessage(player, C.INBOX_ITEM, color + inbox.toString() + " (" + total + "/" + unread + ")"); @@ -136,8 +113,7 @@ public class Inbox extends SubCommand } sendMessage(player, C.INBOX_ITEM, inbox.toString()); } - })) - { + })) { sendMessage(player, C.INBOX_ITEM, inbox.toString()); } } @@ -145,52 +121,39 @@ public class Inbox extends SubCommand return false; } final CommentInbox inbox = CommentManager.inboxes.get(args[0].toLowerCase()); - if (inbox == null) - { + if (inbox == null) { sendMessage(player, C.INVALID_INBOX, StringMan.join(CommentManager.inboxes.keySet(), ", ")); return false; } player.setMeta("inbox:" + inbox.toString(), System.currentTimeMillis()); final int page; - if (args.length > 1) - { - switch (args[1].toLowerCase()) - { - case "delete": - { - if (!inbox.canModify(plot, player)) - { + if (args.length > 1) { + switch (args[1].toLowerCase()) { + case "delete": { + if (!inbox.canModify(plot, player)) { sendMessage(player, C.NO_PERM_INBOX_MODIFY); return false; } - if (args.length != 3) - { + if (args.length != 3) { sendMessage(player, C.COMMAND_SYNTAX, "/plot inbox " + inbox.toString() + " delete "); } final int index; - try - { + try { index = Integer.parseInt(args[2]); - if (index < 1) - { + if (index < 1) { sendMessage(player, C.NOT_VALID_INBOX_INDEX, index + ""); return false; } - } - catch (final NumberFormatException e) - { + } catch (final NumberFormatException e) { sendMessage(player, C.COMMAND_SYNTAX, "/plot inbox " + inbox.toString() + " delete "); return false; } - - if (!inbox.getComments(plot, new RunnableVal() - { + + if (!inbox.getComments(plot, new RunnableVal() { @Override - public void run() - { + public void run() { final List comments = (List) value; - if (index > comments.size()) - { + if (index > comments.size()) { sendMessage(player, C.NOT_VALID_INBOX_INDEX, index + ""); } final PlotComment comment = comments.get(index - 1); @@ -198,67 +161,50 @@ public class Inbox extends SubCommand plot.getSettings().removeComment(comment); MainUtil.sendMessage(player, C.COMMENT_REMOVED, comment.comment); } - })) - { + })) { sendMessage(player, C.NOT_IN_PLOT); return false; } return true; } - case "clear": - { - if (!inbox.canModify(plot, player)) - { + case "clear": { + if (!inbox.canModify(plot, player)) { sendMessage(player, C.NO_PERM_INBOX_MODIFY); } inbox.clearInbox(plot); final ArrayList comments = plot.getSettings().getComments(inbox.toString()); - if (comments != null) - { + if (comments != null) { plot.getSettings().removeComments(comments); } MainUtil.sendMessage(player, C.COMMENT_REMOVED, "*"); return true; } - default: - { - try - { + default: { + try { page = Integer.parseInt(args[1]); - } - catch (final NumberFormatException e) - { + } catch (final NumberFormatException e) { sendMessage(player, C.COMMAND_SYNTAX, "/plot inbox [inbox] [delete |clear|page]"); return false; } } } - } - else - { + } else { page = 1; } - if (!inbox.canRead(plot, player)) - { + if (!inbox.canRead(plot, player)) { sendMessage(player, C.NO_PERM_INBOX); return false; } - if (!inbox.getComments(plot, new RunnableVal() - { + if (!inbox.getComments(plot, new RunnableVal() { @Override - public void run() - { + public void run() { final List comments = (List) value; displayComments(player, comments, page); } - })) - { - if (plot == null) - { + })) { + if (plot == null) { sendMessage(player, C.NOT_IN_PLOT); - } - else - { + } else { sendMessage(player, C.PLOT_UNOWNED); } return false; diff --git a/src/main/java/com/intellectualcrafters/plot/commands/Info.java b/src/main/java/com/intellectualcrafters/plot/commands/Info.java index 00823b6e4..3cf649b92 100644 --- a/src/main/java/com/intellectualcrafters/plot/commands/Info.java +++ b/src/main/java/com/intellectualcrafters/plot/commands/Info.java @@ -43,57 +43,49 @@ import com.intellectualcrafters.plot.util.TaskManager; import com.intellectualcrafters.plot.util.UUIDHandler; import com.plotsquared.general.commands.CommandDeclaration; -@CommandDeclaration( -command = "info", -aliases = { "i" }, -description = "Display plot info", -usage = "/plot info ", -category = CommandCategory.INFO) -public class Info extends SubCommand -{ - - public static String getPlayerList(final Collection uuids) - { +@CommandDeclaration(command = "info", aliases = { "i" }, description = "Display plot info", usage = "/plot info ", category = CommandCategory.INFO) +public class Info extends SubCommand { + + public static String getPlayerList(final Collection uuids) { final ArrayList l = new ArrayList<>(uuids); - if ((l == null) || (l.size() < 1)) { return C.NONE.s(); } + if ((l == null) || (l.size() < 1)) { + return C.NONE.s(); + } final String c = C.PLOT_USER_LIST.s(); final StringBuilder list = new StringBuilder(); - for (int x = 0; x < l.size(); x++) - { - if ((x + 1) == l.size()) - { + for (int x = 0; x < l.size(); x++) { + if ((x + 1) == l.size()) { list.append(c.replace("%user%", getPlayerName(l.get(x))).replace(",", "")); - } - else - { + } else { list.append(c.replace("%user%", getPlayerName(l.get(x)))); } } return list.toString(); } - - public static String getPlayerName(final UUID uuid) - { - if (uuid == null) { return C.UNKNOWN.s(); } - if (uuid.equals(DBFunc.everyone) || uuid.toString().equalsIgnoreCase(DBFunc.everyone.toString())) { return "everyone"; } + + public static String getPlayerName(final UUID uuid) { + if (uuid == null) { + return C.UNKNOWN.s(); + } + if (uuid.equals(DBFunc.everyone) || uuid.toString().equalsIgnoreCase(DBFunc.everyone.toString())) { + return "everyone"; + } final String name = UUIDHandler.getName(uuid); - if (name == null) { return "unknown"; } + if (name == null) { + return "unknown"; + } return name; } - + @Override - public boolean onCommand(final PlotPlayer player, String[] args) - { + public boolean onCommand(final PlotPlayer player, String[] args) { String arg = null; Plot plot; - if (args.length > 0) - { + if (args.length > 0) { arg = args[0] + ""; } - if (arg != null) - { - switch (arg) - { + if (arg != null) { + switch (arg) { case "trusted": case "alias": case "inv": @@ -109,48 +101,34 @@ public class Info extends SubCommand break; default: plot = MainUtil.getPlotFromString(player, arg, false); - if (args.length == 2) - { + if (args.length == 2) { arg = args[1]; - } - else - { + } else { arg = null; } break; } - } - else - { + } else { plot = MainUtil.getPlotFromString(player, null, false); } - if ((plot == null) && (arg != null)) - { + if ((plot == null) && (arg != null)) { plot = MainUtil.getPlotFromString(player, null, false); } - if (plot == null) - { + if (plot == null) { MainUtil.sendMessage(player, C.NOT_IN_PLOT); return false; } - if (arg != null) - { - if (args.length == 1) - { + if (arg != null) { + if (args.length == 1) { args = new String[0]; - } - else - { + } else { args = new String[] { args[1] }; } } - if ((args.length == 1) && args[0].equalsIgnoreCase("inv")) - { - final PlotInventory inv = new PlotInventory(player) - { + if ((args.length == 1) && args[0].equalsIgnoreCase("inv")) { + final PlotInventory inv = new PlotInventory(player) { @Override - public boolean onClick(final int index) - { + public boolean onClick(final int index) { // TODO InfoInventory not implemented yet!!!!!!!! // See plot rating or musicsubcommand on examples return false; @@ -159,12 +137,12 @@ public class Info extends SubCommand final UUID uuid = player.getUUID(); final String name = MainUtil.getName(plot.owner); inv.setItem(1, new PlotItemStack(388, (short) 0, 1, "&cPlot Info", new String[] { - "&cID: &6" + plot.getId().toString(), - "&cOwner: &6" + name, - "&cAlias: &6" + plot.getSettings().getAlias(), - "&cBiome: &6" + plot.getBiome().toString().replaceAll("_", "").toLowerCase(), - "&cCan Build: &6" + plot.isAdded(uuid), - "&cIs Denied: &6" + plot.isDenied(uuid) })); + "&cID: &6" + plot.getId().toString(), + "&cOwner: &6" + name, + "&cAlias: &6" + plot.getSettings().getAlias(), + "&cBiome: &6" + plot.getBiome().toString().replaceAll("_", "").toLowerCase(), + "&cCan Build: &6" + plot.isAdded(uuid), + "&cIs Denied: &6" + plot.isDenied(uuid) })); inv.setItem(1, new PlotItemStack(388, (short) 0, 1, "&cTrusted", new String[] { "&cAmount: &6" + plot.getTrusted().size(), "&8Click to view a list of the trusted users" })); inv.setItem(1, new PlotItemStack(388, (short) 0, 1, "&cMembers", new String[] { "&cAmount: &6" + plot.getMembers().size(), "&8Click to view a list of plot members" })); inv.setItem(1, new PlotItemStack(388, (short) 0, 1, "&cDenied", new String[] { "&cDenied", "&cAmount: &6" + plot.getDenied().size(), "&8Click to view a list of denied players" })); @@ -181,33 +159,26 @@ public class Info extends SubCommand trustedEveryone = (plot.getMembers() != null) && plot.getMembers().contains(DBFunc.everyone); } // Unclaimed? - if (!hasOwner && !containsEveryone && !trustedEveryone) - { + if (!hasOwner && !containsEveryone && !trustedEveryone) { MainUtil.sendMessage(player, C.PLOT_INFO_UNCLAIMED, (plot.id.x + ";" + plot.id.y)); return true; } String info = C.PLOT_INFO.s(); - if (arg != null) - { + if (arg != null) { info = getCaption(arg); - if (info == null) - { + if (info == null) { MainUtil.sendMessage(player, "&6Categories&7: &amembers&7, &aalias&7, &abiome&7, &adenied&7, &aflags&7, &aid&7, &asize&7, &atrusted&7, &aowner&7, &arating"); return false; } formatAndSend(info, plot.world, plot, player, true); - } - else - { + } else { formatAndSend(info, plot.world, plot, player, false); } return true; } - - private String getCaption(final String string) - { - switch (string) - { + + private String getCaption(final String string) { + switch (string) { case "trusted": return C.PLOT_INFO_TRUSTED.s(); case "alias": @@ -232,9 +203,8 @@ public class Info extends SubCommand return null; } } - - private void formatAndSend(String info, final String world, final Plot plot, final PlotPlayer player, final boolean full) - { + + private void formatAndSend(String info, final String world, final Plot plot, final PlotPlayer player, final boolean full) { final PlotId id = plot.id; final PlotId id2 = MainUtil.getTopPlot(plot).id; final int num = MainUtil.getPlotSelectionIds(id, id2).size(); @@ -245,18 +215,18 @@ public class Info extends SubCommand final String trusted = getPlayerList(plot.getTrusted()); final String members = getPlayerList(plot.getMembers()); final String denied = getPlayerList(plot.getDenied()); - + final Flag descriptionFlag = FlagManager.getPlotFlag(plot, "description"); final String description = descriptionFlag == null ? C.NONE.s() : descriptionFlag.getValueString(); - + final String flags = StringMan.replaceFromMap( "$2" + (StringMan.join(FlagManager.getPlotFlags(plot.world, plot.getSettings(), true).values(), "").length() > 0 ? StringMan.join(FlagManager.getPlotFlags(plot.world, plot.getSettings(), true) .values(), "$1, $2") : C.NONE.s()), C.replacements); final boolean build = plot.isAdded(player.getUUID()); - + final String owner = plot.owner == null ? "unowned" : getPlayerList(plot.getOwners()); - + info = info.replaceAll("%alias%", alias); info = info.replaceAll("%id%", id.toString()); info = info.replaceAll("%id2%", id2.toString()); @@ -271,34 +241,26 @@ public class Info extends SubCommand info = info.replaceAll("%flags%", Matcher.quoteReplacement(flags)); info = info.replaceAll("%build%", build + ""); info = info.replaceAll("%desc%", "No description set."); - if (info.contains("%rating%")) - { + if (info.contains("%rating%")) { final String newInfo = info; - TaskManager.runTaskAsync(new Runnable() - { + TaskManager.runTaskAsync(new Runnable() { @Override - public void run() - { + public void run() { int max = 10; - if ((Settings.RATING_CATEGORIES != null) && (Settings.RATING_CATEGORIES.size() > 0)) - { + if ((Settings.RATING_CATEGORIES != null) && (Settings.RATING_CATEGORIES.size() > 0)) { max = 8; } String info; - if (full && (Settings.RATING_CATEGORIES != null) && (Settings.RATING_CATEGORIES.size() > 1)) - { + if (full && (Settings.RATING_CATEGORIES != null) && (Settings.RATING_CATEGORIES.size() > 1)) { String rating = ""; String prefix = ""; final double[] ratings = MainUtil.getAverageRatings(plot); - for (int i = 0; i < ratings.length; i++) - { + for (int i = 0; i < ratings.length; i++) { rating += prefix + Settings.RATING_CATEGORIES.get(i) + "=" + String.format("%.1f", ratings[i]); prefix = ","; } info = newInfo.replaceAll("%rating%", rating); - } - else - { + } else { info = newInfo.replaceAll("%rating%", String.format("%.1f", MainUtil.getAverageRating(plot)) + "/" + max); } MainUtil.sendMessage(player, C.PLOT_INFO_HEADER); diff --git a/src/main/java/com/intellectualcrafters/plot/commands/Kick.java b/src/main/java/com/intellectualcrafters/plot/commands/Kick.java index 661598522..aad63aefb 100644 --- a/src/main/java/com/intellectualcrafters/plot/commands/Kick.java +++ b/src/main/java/com/intellectualcrafters/plot/commands/Kick.java @@ -30,42 +30,32 @@ import com.intellectualcrafters.plot.util.Permissions; import com.intellectualcrafters.plot.util.UUIDHandler; import com.plotsquared.general.commands.CommandDeclaration; -@CommandDeclaration( -command = "kick", -aliases = { "k" }, -description = "Kick a player from your plot", -permission = "plots.kick", -category = CommandCategory.ACTIONS, -requiredType = RequiredType.NONE) -public class Kick extends SubCommand -{ - +@CommandDeclaration(command = "kick", aliases = { "k" }, description = "Kick a player from your plot", permission = "plots.kick", category = CommandCategory.ACTIONS, requiredType = RequiredType.NONE) +public class Kick extends SubCommand { + @Override - public boolean onCommand(final PlotPlayer plr, final String[] args) - { - + public boolean onCommand(final PlotPlayer plr, final String[] args) { + final Location loc = plr.getLocation(); final Plot plot = MainUtil.getPlot(loc); - if (plot == null) { return !sendMessage(plr, C.NOT_IN_PLOT); } - if ((plot == null) || ((!plot.hasOwner() || !plot.isOwner(plr.getUUID())) && !Permissions.hasPermission(plr, "plots.admin.command.kick"))) - { + if (plot == null) { + return !sendMessage(plr, C.NOT_IN_PLOT); + } + if ((plot == null) || ((!plot.hasOwner() || !plot.isOwner(plr.getUUID())) && !Permissions.hasPermission(plr, "plots.admin.command.kick"))) { MainUtil.sendMessage(plr, C.NO_PLOT_PERMS); return false; } - if (args.length != 1) - { + if (args.length != 1) { MainUtil.sendMessage(plr, "&c/plot kick "); return false; } final PlotPlayer player = UUIDHandler.getPlayer(args[0]); - if (player == null) - { + if (player == null) { MainUtil.sendMessage(plr, C.INVALID_PLAYER, args[0]); return false; } final Location otherLoc = player.getLocation(); - if (!plr.getLocation().getWorld().equals(otherLoc.getWorld()) || !plot.equals(MainUtil.getPlot(otherLoc))) - { + if (!plr.getLocation().getWorld().equals(otherLoc.getWorld()) || !plot.equals(MainUtil.getPlot(otherLoc))) { MainUtil.sendMessage(plr, C.INVALID_PLAYER, args[0]); return false; } diff --git a/src/main/java/com/intellectualcrafters/plot/commands/Limit.java b/src/main/java/com/intellectualcrafters/plot/commands/Limit.java index 47c949c97..d1d0be6f2 100644 --- a/src/main/java/com/intellectualcrafters/plot/commands/Limit.java +++ b/src/main/java/com/intellectualcrafters/plot/commands/Limit.java @@ -36,34 +36,27 @@ description = "Set or increment player plot claim limits", aliases = { "setlimit" }, usage = "/plot limit ", category = CommandCategory.DEBUG) -public class Limit extends SubCommand -{ - - public Limit() - { - requiredArguments = new Argument[] { - Argument.String, - Argument.String - }; +public class Limit extends SubCommand { + + public Limit() { + requiredArguments = new Argument[] { Argument.String, Argument.String }; } - + @Override - public boolean onCommand(final PlotPlayer plr, final String[] args) - { + public boolean onCommand(final PlotPlayer plr, final String[] args) { final UUID uuid = UUIDHandler.getUUID(args[0], null); - if (uuid == null) - { + if (uuid == null) { MainUtil.sendMessage(plr, C.INVALID_PLAYER, args[0]); return false; } UUIDHandler.getUUIDWrapper().getOfflinePlayer(uuid); - + // get current plot limit // increase - + // EconHandler.manager.setPermission(op, perm, value); plr.sendMessage("TODO"); - + return true; } } diff --git a/src/main/java/com/intellectualcrafters/plot/commands/Load.java b/src/main/java/com/intellectualcrafters/plot/commands/Load.java index 73c066e6e..3ce4f803e 100644 --- a/src/main/java/com/intellectualcrafters/plot/commands/Load.java +++ b/src/main/java/com/intellectualcrafters/plot/commands/Load.java @@ -26,99 +26,80 @@ requiredType = RequiredType.NONE, description = "Load your plot", permission = "plots.load", usage = "/plot restore") -public class Load extends SubCommand -{ - +public class Load extends SubCommand { + @Override - public boolean onCommand(final PlotPlayer plr, final String[] args) - { - - if (!Settings.METRICS) - { + public boolean onCommand(final PlotPlayer plr, final String[] args) { + + if (!Settings.METRICS) { MainUtil.sendMessage(plr, "&cPlease enable metrics in order to use this command.\n&7 - Or host it yourself if you don't like the free service"); return false; } final String world = plr.getLocation().getWorld(); - if (!PS.get().isPlotWorld(world)) { return !sendMessage(plr, C.NOT_IN_PLOT_WORLD); } + if (!PS.get().isPlotWorld(world)) { + return !sendMessage(plr, C.NOT_IN_PLOT_WORLD); + } final Plot plot = MainUtil.getPlot(plr.getLocation()); - if (plot == null) { return !sendMessage(plr, C.NOT_IN_PLOT); } - if (!plot.hasOwner()) - { + if (plot == null) { + return !sendMessage(plr, C.NOT_IN_PLOT); + } + if (!plot.hasOwner()) { MainUtil.sendMessage(plr, C.PLOT_UNOWNED); return false; } - if (!plot.isOwner(plr.getUUID()) && !Permissions.hasPermission(plr, "plots.admin.command.load")) - { + if (!plot.isOwner(plr.getUUID()) && !Permissions.hasPermission(plr, "plots.admin.command.load")) { MainUtil.sendMessage(plr, C.NO_PLOT_PERMS); return false; } - if (MainUtil.runners.containsKey(plot)) - { + if (MainUtil.runners.containsKey(plot)) { MainUtil.sendMessage(plr, C.WAIT_FOR_TIMER); return false; } - - if (args.length != 0) - { - if (args.length == 1) - { + + if (args.length != 0) { + if (args.length == 1) { // TODO load save here final List schematics = (List) plr.getMeta("plot_schematics"); - if (schematics == null) - { + if (schematics == null) { // No schematics found: MainUtil.sendMessage(plr, C.LOAD_NULL); return false; } String schem; - try - { + try { schem = schematics.get(Integer.parseInt(args[0]) - 1); - } - catch (final Exception e) - { + } catch (final Exception e) { // use /plot load MainUtil.sendMessage(plr, C.NOT_VALID_NUMBER, "(1, " + schematics.size() + ")"); return false; } final URL url; - try - { + try { url = new URL(Settings.WEB_URL + "saves/" + plr.getUUID() + "/" + schem + ".schematic"); - } - catch (final MalformedURLException e) - { + } catch (final MalformedURLException e) { e.printStackTrace(); MainUtil.sendMessage(plr, C.LOAD_FAILED); return false; } - + MainUtil.runners.put(plot, 1); MainUtil.sendMessage(plr, C.GENERATING_COMPONENT); - TaskManager.runTaskAsync(new Runnable() - { + TaskManager.runTaskAsync(new Runnable() { @Override - public void run() - { + public void run() { final Schematic schematic = SchematicHandler.manager.getSchematic(url); - if (schematic == null) - { + if (schematic == null) { MainUtil.runners.remove(plot); sendMessage(plr, C.SCHEMATIC_INVALID, "non-existent or not in gzip format"); return; } - SchematicHandler.manager.paste(schematic, plot, 0, 0, new RunnableVal() - { + SchematicHandler.manager.paste(schematic, plot, 0, 0, new RunnableVal() { @Override - public void run() - { + public void run() { MainUtil.runners.remove(plot); - if (value) - { + if (value) { sendMessage(plr, C.SCHEMATIC_PASTE_SUCCESS); - } - else - { + } else { sendMessage(plr, C.SCHEMATIC_PASTE_FAILED); } } @@ -131,22 +112,18 @@ public class Load extends SubCommand MainUtil.sendMessage(plr, C.COMMAND_SYNTAX, "/plot load "); return false; } - + // list schematics - + final List schematics = (List) plr.getMeta("plot_schematics"); - if (schematics == null) - { + if (schematics == null) { MainUtil.runners.put(plot, 1); - TaskManager.runTaskAsync(new Runnable() - { + TaskManager.runTaskAsync(new Runnable() { @Override - public void run() - { + public void run() { final List schematics = SchematicHandler.manager.getSaves(plr.getUUID()); MainUtil.runners.remove(plot); - if ((schematics == null) || (schematics.size() == 0)) - { + if ((schematics == null) || (schematics.size() == 0)) { MainUtil.sendMessage(plr, C.LOAD_FAILED); return; } @@ -154,25 +131,19 @@ public class Load extends SubCommand displaySaves(plr, 0); } }); - } - else - { + } else { displaySaves(plr, 0); } return true; } - - public void displaySaves(final PlotPlayer player, final int page) - { + + public void displaySaves(final PlotPlayer player, final int page) { final List schematics = (List) player.getMeta("plot_schematics"); - for (int i = 0; i < Math.min(schematics.size(), 32); i++) - { - try - { + for (int i = 0; i < Math.min(schematics.size(), 32); i++) { + try { final String schem = schematics.get(i); final String[] split = schem.split("_"); - if (split.length != 6) - { + if (split.length != 6) { continue; } final String time = secToTime((System.currentTimeMillis() / 1000) - (Long.parseLong(split[0]))); @@ -181,64 +152,52 @@ public class Load extends SubCommand final String size = split[4]; final String server = split[5].replaceAll(".schematic", ""); String color; - if (PS.get().IMP.getServerName().replaceAll("[^A-Za-z0-9]", "").equals(server)) - { + if (PS.get().IMP.getServerName().replaceAll("[^A-Za-z0-9]", "").equals(server)) { color = "$4"; - } - else - { + } else { color = "$1"; } MainUtil.sendMessage(player, "$3[$2" + (i + 1) + "$3] " + color + time + "$3 | " + color + world + ";" + id + "$3 | " + color + size + "x" + size); - } - catch (final Exception e) - { + } catch (final Exception e) { e.printStackTrace(); } } MainUtil.sendMessage(player, C.LOAD_LIST); } - - public String secToTime(long time) - { + + public String secToTime(long time) { final StringBuilder toreturn = new StringBuilder(); int years = 0; int weeks = 0; int days = 0; int hours = 0; int minutes = 0; - if (time >= 33868800) - { + if (time >= 33868800) { years = (int) (time / 33868800); time -= years * 33868800; toreturn.append(years + "y "); } - if (time >= 604800) - { + if (time >= 604800) { weeks = (int) (time / 604800); time -= weeks * 604800; toreturn.append(weeks + "w "); } - if (time >= 86400) - { + if (time >= 86400) { days = (int) (time / 86400); time -= days * 86400; toreturn.append(days + "d "); } - if (time >= 3600) - { + if (time >= 3600) { hours = (int) (time / 3600); time -= hours * 3600; toreturn.append(hours + "h "); } - if (time >= 60) - { + if (time >= 60) { minutes = (int) (time / 60); time -= minutes * 60; toreturn.append(minutes + "m "); } - if (toreturn.equals("") || (time > 0)) - { + if (toreturn.equals("") || (time > 0)) { toreturn.append((time) + "s "); } return toreturn.toString().trim(); diff --git a/src/main/java/com/intellectualcrafters/plot/commands/MainCommand.java b/src/main/java/com/intellectualcrafters/plot/commands/MainCommand.java index 52b664fca..ab2267f01 100644 --- a/src/main/java/com/intellectualcrafters/plot/commands/MainCommand.java +++ b/src/main/java/com/intellectualcrafters/plot/commands/MainCommand.java @@ -48,22 +48,18 @@ import com.plotsquared.general.commands.CommandManager; * PlotSquared command class * */ -public class MainCommand extends CommandManager -{ - +public class MainCommand extends CommandManager { + private static MainCommand instance; - - public static MainCommand getInstance() - { - if (instance == null) - { + + public static MainCommand getInstance() { + if (instance == null) { instance = new MainCommand(); } return instance; } - - private MainCommand() - { + + private MainCommand() { super(null, new ArrayList>()); instance = this; createCommand(new Buy()); @@ -133,54 +129,44 @@ public class MainCommand extends CommandManager createCommand(new Done()); createCommand(new Continue()); createCommand(new BO3()); - if (Settings.ENABLE_CLUSTERS) - { + if (Settings.ENABLE_CLUSTERS) { MainCommand.getInstance().addCommand(new Cluster()); } } - - public static boolean no_permission(final PlotPlayer player, final String permission) - { + + public static boolean no_permission(final PlotPlayer player, final String permission) { MainUtil.sendMessage(player, C.NO_PERMISSION, permission); return false; } - - public static List> getCommandAndAliases(final CommandCategory category, final PlotPlayer player) - { + + public static List> getCommandAndAliases(final CommandCategory category, final PlotPlayer player) { final List> commands = new ArrayList<>(); - for (final Command command : getInstance().getCommands()) - { - if ((category != null) && !command.getCategory().equals(category)) - { + for (final Command command : getInstance().getCommands()) { + if ((category != null) && !command.getCategory().equals(category)) { continue; } - if ((player != null) && !Permissions.hasPermission(player, command.getPermission())) - { + if ((player != null) && !Permissions.hasPermission(player, command.getPermission())) { continue; } commands.add(command); } return commands; } - - public static List> getCommands(final CommandCategory category, final PlotPlayer player) - { + + public static List> getCommands(final CommandCategory category, final PlotPlayer player) { final List> commands = new ArrayList<>(); - for (final Command command : new HashSet<>(getInstance().getCommands())) - { - if ((category != null) && !command.getCategory().equals(category)) - { + for (final Command command : new HashSet<>(getInstance().getCommands())) { + if ((category != null) && !command.getCategory().equals(category)) { continue; } - if ((player != null) && !Permissions.hasPermission(player, command.getPermission())) - { + if ((player != null) && !Permissions.hasPermission(player, command.getPermission())) { continue; } commands.add(command); } return commands; } - + //// public static List helpMenu(final PlotPlayer player, final CommandCategory category, int page) { // List> commands; // // commands = getCommands(category, player); @@ -222,38 +208,28 @@ public class MainCommand extends CommandManager // return help; // } // - public static void displayHelp(final PlotPlayer player, String cat, int page, final String label) - { + public static void displayHelp(final PlotPlayer player, String cat, int page, final String label) { CommandCategory catEnum = null; - if (cat != null) - { - if (StringMan.isEqualIgnoreCase(cat, "all")) - { + if (cat != null) { + if (StringMan.isEqualIgnoreCase(cat, "all")) { catEnum = null; - } - else - { - for (final CommandCategory c : CommandCategory.values()) - { - if (StringMan.isEqualIgnoreCaseToAny(cat, c.name(), c.toString())) - { + } else { + for (final CommandCategory c : CommandCategory.values()) { + if (StringMan.isEqualIgnoreCaseToAny(cat, c.name(), c.toString())) { catEnum = c; cat = c.name(); break; } } - if (catEnum == null) - { + if (catEnum == null) { cat = null; } } } - if ((cat == null) && (page == 0)) - { + if ((cat == null) && (page == 0)) { final StringBuilder builder = new StringBuilder(); builder.append(C.HELP_HEADER.s()); - for (final CommandCategory c : CommandCategory.values()) - { + for (final CommandCategory c : CommandCategory.values()) { builder.append("\n" + StringMan.replaceAll(C.HELP_INFO_ITEM.s(), "%category%", c.toString().toLowerCase(), "%category_desc%", c.toString())); } builder.append("\n").append(C.HELP_INFO_ITEM.s().replaceAll("%category%", "all").replaceAll("%category_desc%", "Display all commands")); @@ -262,224 +238,157 @@ public class MainCommand extends CommandManager return; } page--; - new HelpMenu(player) - .setCategory(catEnum) - .getCommands() - .generateMaxPages() - .generatePage(page, label) - .render(); + new HelpMenu(player).setCategory(catEnum).getCommands().generateMaxPages().generatePage(page, label).render(); } - - public static boolean onCommand(final PlotPlayer player, final String cmd, String... args) - { + + public static boolean onCommand(final PlotPlayer player, final String cmd, String... args) { int help_index = -1; String category = null; - if (args.length == 0) - { + if (args.length == 0) { help_index = 0; - } - else if (StringMan.isEqualIgnoreCaseToAny(args[0], "he", "help", "?")) - { + } else if (StringMan.isEqualIgnoreCaseToAny(args[0], "he", "help", "?")) { help_index = 0; - switch (args.length) - { - case 3: - { + switch (args.length) { + case 3: { category = args[1]; - if (MathMan.isInteger(args[2])) - { - try - { + if (MathMan.isInteger(args[2])) { + try { help_index = Integer.parseInt(args[2]); - } - catch (final NumberFormatException e) - { + } catch (final NumberFormatException e) { help_index = 1; } } break; } - case 2: - { - if (MathMan.isInteger(args[1])) - { + case 2: { + if (MathMan.isInteger(args[1])) { category = null; - try - { + try { help_index = Integer.parseInt(args[1]); - } - catch (final NumberFormatException e) - { + } catch (final NumberFormatException e) { help_index = 1; } - } - else - { + } else { help_index = 1; category = args[1]; } break; } } - } - else if ((args.length == 1) && MathMan.isInteger(args[args.length - 1])) - { - try - { + } else if ((args.length == 1) && MathMan.isInteger(args[args.length - 1])) { + try { help_index = Integer.parseInt(args[args.length - 1]); - } - catch (final NumberFormatException e) - {} - } - else if (ConsolePlayer.isConsole(player) && (args.length >= 2)) - { + } catch (final NumberFormatException e) {} + } else if (ConsolePlayer.isConsole(player) && (args.length >= 2)) { final String[] split = args[0].split(";"); String world; PlotId id; - if (split.length == 2) - { + if (split.length == 2) { world = player.getLocation().getWorld(); id = PlotId.fromString(split[0] + ";" + split[1]); - } - else if (split.length == 3) - { + } else if (split.length == 3) { world = split[0]; id = PlotId.fromString(split[1] + ";" + split[2]); - } - else - { + } else { id = null; world = null; } - if ((id != null) && PS.get().isPlotWorld(world)) - { + if ((id != null) && PS.get().isPlotWorld(world)) { final Plot plot = MainUtil.getPlot(world, id); - if (plot != null) - { + if (plot != null) { player.teleport(MainUtil.getPlotCenter(plot)); args = Arrays.copyOfRange(args, 1, args.length); } } - + } - if (help_index != -1) - { + if (help_index != -1) { displayHelp(player, category, help_index, cmd); return true; } final StringBuilder builder = new StringBuilder(cmd).append(" "); final Iterator iterator = Arrays.asList(args).iterator(); - while (iterator.hasNext()) - { + while (iterator.hasNext()) { builder.append(iterator.next()); - if (iterator.hasNext()) - { + if (iterator.hasNext()) { builder.append(" "); } } getInstance().handle(player, builder.toString()); return true; } - + @Override - public int handle(final PlotPlayer plr, final String input) - { + public int handle(final PlotPlayer plr, final String input) { final String[] parts = input.split(" "); String[] args; String label; - if (parts.length == 1) - { + if (parts.length == 1) { label = null; args = new String[0]; - } - else - { + } else { label = parts[1]; args = new String[parts.length - 2]; System.arraycopy(parts, 2, args, 0, args.length); } Command cmd; - if (label != null) - { + if (label != null) { cmd = getInstance().commands.get(label); - } - else - { + } else { cmd = null; } - if (cmd == null) - { + if (cmd == null) { MainUtil.sendMessage(plr, C.NOT_VALID_SUBCOMMAND); { final List> cmds = getCommands(null, plr); - if ((label == null) || (cmds.size() == 0)) - { + if ((label == null) || (cmds.size() == 0)) { MainUtil.sendMessage(plr, C.DID_YOU_MEAN, "/plot help"); - } - else - { + } else { final HashSet setargs = new HashSet<>(args.length + 1); - for (final String arg : args) - { + for (final String arg : args) { setargs.add(arg.toLowerCase()); } setargs.add(label.toLowerCase()); final String[] allargs = setargs.toArray(new String[setargs.size()]); int best = 0; - for (final Command current : cmds) - { - if (current.getUsage() != null) - { + for (final Command current : cmds) { + if (current.getUsage() != null) { int count = 0; for (final String word : new HashSet(Arrays.asList((current.getUsage() + " " + current.getPermission() + " " + current.getCategory().name()).toLowerCase() - .replaceAll("\\||\\>|\\<|\\[|\\]|\\{|\\}|\\_|\\/", " ").trim().replaceAll("\\s+", " ").split(" ")))) - { - for (int i = 0; i < allargs.length; i++) - { + .replaceAll("\\||\\>|\\<|\\[|\\]|\\{|\\}|\\_|\\/", " ").trim().replaceAll("\\s+", " ").split(" ")))) { + for (int i = 0; i < allargs.length; i++) { final String arg = allargs[i]; - if ((best - count - ((allargs.length - i) * 3)) >= 0) - { + if ((best - count - ((allargs.length - i) * 3)) >= 0) { continue; } - if (StringMan.isEqual(arg, word)) - { + if (StringMan.isEqual(arg, word)) { count += 3; - } - else if ((word.length() > arg.length()) && word.contains(arg)) - { + } else if ((word.length() > arg.length()) && word.contains(arg)) { count += 2; } } } for (final String word : new HashSet(Arrays.asList((current.getDescription()).toLowerCase().replaceAll("\\||\\>|\\<|\\[|\\]|\\{|\\}|\\_|\\/", " ").trim() - .replaceAll("\\s+", " ").split(" ")))) - { - for (int i = 0; i < allargs.length; i++) - { + .replaceAll("\\s+", " ").split(" ")))) { + for (int i = 0; i < allargs.length; i++) { final String arg = allargs[i]; - if ((best - count - ((allargs.length - i) * 2)) >= 0) - { + if ((best - count - ((allargs.length - i) * 2)) >= 0) { continue; } - if (StringMan.isEqual(arg, word)) - { + if (StringMan.isEqual(arg, word)) { count += 2; - } - else if ((word.length() > arg.length()) && word.contains(arg)) - { + } else if ((word.length() > arg.length()) && word.contains(arg)) { count++; } } } - if (count > best) - { + if (count > best) { best = count; cmd = current; } } } - if (cmd == null) - { + if (cmd == null) { cmd = new StringComparison<>(label, getCommandAndAliases(null, plr)).getMatchObject(); } MainUtil.sendMessage(plr, C.DID_YOU_MEAN, cmd.getUsage().replaceAll("\\{label\\}", parts[0])); @@ -487,53 +396,39 @@ public class MainCommand extends CommandManager } return CommandHandlingOutput.NOT_FOUND; } - if (!cmd.getRequiredType().allows(plr)) - { - if (ConsolePlayer.isConsole(plr)) - { + if (!cmd.getRequiredType().allows(plr)) { + if (ConsolePlayer.isConsole(plr)) { MainUtil.sendMessage(plr, C.IS_CONSOLE); - } - else - { + } else { MainUtil.sendMessage(plr, C.NOT_CONSOLE); } return CommandHandlingOutput.CALLER_OF_WRONG_TYPE; } - if (!Permissions.hasPermission(plr, cmd.getPermission())) - { + if (!Permissions.hasPermission(plr, cmd.getPermission())) { MainUtil.sendMessage(plr, C.NO_PERMISSION, cmd.getPermission()); return CommandHandlingOutput.NOT_PERMITTED; } final Argument[] requiredArguments = cmd.getRequiredArguments(); - if ((requiredArguments != null) && (requiredArguments.length > 0)) - { + if ((requiredArguments != null) && (requiredArguments.length > 0)) { boolean success = true; - if (args.length < requiredArguments.length) - { + if (args.length < requiredArguments.length) { success = false; - } - else - { - for (int i = 0; i < requiredArguments.length; i++) - { - if (requiredArguments[i].parse(args[i]) == null) - { + } else { + for (int i = 0; i < requiredArguments.length; i++) { + if (requiredArguments[i].parse(args[i]) == null) { success = false; break; } } } - if (!success) - { + if (!success) { C.COMMAND_SYNTAX.send(plr, cmd.getUsage()); return CommandHandlingOutput.WRONG_USAGE; } } - try - { + try { final boolean result = cmd.onCommand(plr, args); - if (!result) - { + if (!result) { cmd.getUsage(); // Unecessary! // if (usage != null && !usage.isEmpty()) { @@ -541,9 +436,7 @@ public class MainCommand extends CommandManager // } return CommandHandlingOutput.WRONG_USAGE; } - } - catch (final Throwable t) - { + } catch (final Throwable t) { t.printStackTrace(); return CommandHandlingOutput.ERROR; } diff --git a/src/main/java/com/intellectualcrafters/plot/commands/Merge.java b/src/main/java/com/intellectualcrafters/plot/commands/Merge.java index 839f2b4fb..651da06e8 100644 --- a/src/main/java/com/intellectualcrafters/plot/commands/Merge.java +++ b/src/main/java/com/intellectualcrafters/plot/commands/Merge.java @@ -49,17 +49,14 @@ permission = "plots.merge", usage = "/plot merge [direction]", category = CommandCategory.ACTIONS, requiredType = RequiredType.NONE) -public class Merge extends SubCommand -{ +public class Merge extends SubCommand { public final static String[] values = new String[] { "north", "east", "south", "west" }; public final static String[] aliases = new String[] { "n", "e", "s", "w" }; - - public static String direction(float yaw) - { + + public static String direction(float yaw) { yaw = yaw / 90; final int i = Math.round(yaw); - switch (i) - { + switch (i) { case -4: case 0: case 4: @@ -77,30 +74,27 @@ public class Merge extends SubCommand return ""; } } - + @Override - public boolean onCommand(final PlotPlayer plr, final String[] args) - { - + public boolean onCommand(final PlotPlayer plr, final String[] args) { + final Location loc = plr.getLocationFull(); final Plot plot = MainUtil.getPlot(loc); - if (plot == null) { return !sendMessage(plr, C.NOT_IN_PLOT); } - if ((plot == null) || !plot.hasOwner()) - { + if (plot == null) { + return !sendMessage(plr, C.NOT_IN_PLOT); + } + if ((plot == null) || !plot.hasOwner()) { MainUtil.sendMessage(plr, C.PLOT_UNOWNED); return false; } final boolean admin = Permissions.hasPermission(plr, "plots.admin.command.merge"); - if (!plot.isOwner(plr.getUUID()) && !admin) - { + if (!plot.isOwner(plr.getUUID()) && !admin) { MainUtil.sendMessage(plr, C.NO_PLOT_PERMS); return false; } int direction = -1; - if (args.length == 0) - { - switch (direction(plr.getLocationFull().getYaw())) - { + if (args.length == 0) { + switch (direction(plr.getLocationFull().getYaw())) { case "NORTH": direction = 0; break; @@ -114,26 +108,20 @@ public class Merge extends SubCommand direction = 3; break; } - } - else - { - if (args[0].equalsIgnoreCase("all")) - { + } else { + if (args[0].equalsIgnoreCase("all")) { plot.autoMerge((args.length != 2) || !args[1].equalsIgnoreCase("false")); MainUtil.sendMessage(plr, C.SUCCESS_MERGE); return true; } - for (int i = 0; i < values.length; i++) - { - if (args[0].equalsIgnoreCase(values[i]) || args[0].equalsIgnoreCase(aliases[i])) - { + for (int i = 0; i < values.length; i++) { + if (args[0].equalsIgnoreCase(values[i]) || args[0].equalsIgnoreCase(aliases[i])) { direction = i; break; } } } - if (direction == -1) - { + if (direction == -1) { MainUtil.sendMessage(plr, C.SUBCOMMAND_SET_OPTIONS_HEADER.s() + StringMan.join(values, C.BLOCK_LIST_SEPARATER.s())); MainUtil.sendMessage(plr, C.DIRECTION.s().replaceAll("%dir%", direction(loc.getYaw()))); return false; @@ -142,8 +130,7 @@ public class Merge extends SubCommand PlotId top = MainUtil.getTopPlot(plot).id; ArrayList selPlots; final String world = loc.getWorld(); - switch (direction) - { + switch (direction) { case 0: // north = -y selPlots = MainUtil.getMaxPlotSelectionIds(world, new PlotId(bot.x, bot.y - 1), new PlotId(top.x, top.y)); break; @@ -160,8 +147,7 @@ public class Merge extends SubCommand return false; } final int size = selPlots.size(); - if (Permissions.hasPermissionRange(plr, "plots.merge", Settings.MAX_PLOTS) < size) - { + if (Permissions.hasPermissionRange(plr, "plots.merge", Settings.MAX_PLOTS) < size) { MainUtil.sendMessage(plr, C.NO_PERMISSION, "plots.merge." + size); return false; } @@ -178,22 +164,18 @@ public class Merge extends SubCommand final HashSet multiUUID = new HashSet(); final HashSet multiPlots = new HashSet<>(); final UUID u1 = plot.owner; - for (final PlotId myid : plots) - { + for (final PlotId myid : plots) { final Plot myplot = PS.get().getPlot(world, myid); - if ((myplot == null) || (myplot.owner == null)) - { + if ((myplot == null) || (myplot.owner == null)) { MainUtil.sendMessage(plr, C.NO_PERM_MERGE.s().replaceAll("%plot%", myid.toString())); return false; } final UUID u2 = myplot.owner; - if (u2.equals(u1)) - { + if (u2.equals(u1)) { continue; } final PlotPlayer p2 = UUIDHandler.getPlayer(u2); - if (p2 == null) - { + if (p2 == null) { MainUtil.sendMessage(plr, C.NO_PERM_MERGE.s().replaceAll("%plot%", myid.toString())); return false; } @@ -201,40 +183,30 @@ public class Merge extends SubCommand multiPlots.add(myid); multiUUID.add(u2); } - if (multiMerge) - { - if (!Permissions.hasPermission(plr, C.PERMISSION_MERGE_OTHER)) - { + if (multiMerge) { + if (!Permissions.hasPermission(plr, C.PERMISSION_MERGE_OTHER)) { MainUtil.sendMessage(plr, C.NO_PERMISSION, C.PERMISSION_MERGE_OTHER.s()); return false; } - for (final UUID uuid : multiUUID) - { + for (final UUID uuid : multiUUID) { final PlotPlayer accepter = UUIDHandler.getPlayer(uuid); - CmdConfirm.addPending(accepter, C.MERGE_REQUEST_CONFIRM.s().replaceAll("%s", plr.getName()), new Runnable() - { + CmdConfirm.addPending(accepter, C.MERGE_REQUEST_CONFIRM.s().replaceAll("%s", plr.getName()), new Runnable() { @Override - public void run() - { + public void run() { final PlotPlayer accepter = UUIDHandler.getPlayer(uuid); multiUUID.remove(uuid); - if (multiUUID.size() == 0) - { + if (multiUUID.size() == 0) { final PlotPlayer pp = UUIDHandler.getPlayer(u1); - if (pp == null) - { + if (pp == null) { sendMessage(accepter, C.MERGE_NOT_VALID); return; } final PlotWorld plotWorld = PS.get().getPlotWorld(world); - if ((EconHandler.manager != null) && plotWorld.USE_ECONOMY) - { + if ((EconHandler.manager != null) && plotWorld.USE_ECONOMY) { double cost = plotWorld.MERGE_PRICE; cost = plots.size() * cost; - if (cost > 0d) - { - if (EconHandler.manager.getMoney(plr) < cost) - { + if (cost > 0d) { + if (EconHandler.manager.getMoney(plr) < cost) { sendMessage(plr, C.CANNOT_AFFORD_MERGE, cost + ""); return; } @@ -243,8 +215,7 @@ public class Merge extends SubCommand } } final boolean result = EventUtil.manager.callMerge(world, plot, plots); - if (!result) - { + if (!result) { MainUtil.sendMessage(plr, "&cMerge has been cancelled"); return; } @@ -260,14 +231,11 @@ public class Merge extends SubCommand return true; } final PlotWorld plotWorld = PS.get().getPlotWorld(world); - if ((EconHandler.manager != null) && plotWorld.USE_ECONOMY) - { + if ((EconHandler.manager != null) && plotWorld.USE_ECONOMY) { double cost = plotWorld.MERGE_PRICE; cost = plots.size() * cost; - if (cost > 0d) - { - if (EconHandler.manager.getMoney(plr) < cost) - { + if (cost > 0d) { + if (EconHandler.manager.getMoney(plr) < cost) { sendMessage(plr, C.CANNOT_AFFORD_MERGE, cost + ""); return false; } @@ -276,8 +244,7 @@ public class Merge extends SubCommand } } final boolean result = EventUtil.manager.callMerge(world, plot, plots); - if (!result) - { + if (!result) { MainUtil.sendMessage(plr, "&cMerge has been cancelled"); return false; } diff --git a/src/main/java/com/intellectualcrafters/plot/commands/Move.java b/src/main/java/com/intellectualcrafters/plot/commands/Move.java index db03a384e..d4bacfb05 100644 --- a/src/main/java/com/intellectualcrafters/plot/commands/Move.java +++ b/src/main/java/com/intellectualcrafters/plot/commands/Move.java @@ -32,80 +32,59 @@ import com.intellectualcrafters.plot.util.Permissions; import com.plotsquared.general.commands.Argument; import com.plotsquared.general.commands.CommandDeclaration; -@CommandDeclaration( -command = "move", -description = "Move a plot", -aliases = { "debugmove" }, -permission = "plots.move", -category = CommandCategory.ACTIONS, -requiredType = RequiredType.NONE) -public class Move extends SubCommand -{ - - public Move() - { - requiredArguments = new Argument[] { - Argument.PlotID - }; +@CommandDeclaration(command = "move", description = "Move a plot", aliases = { "debugmove" }, permission = "plots.move", category = CommandCategory.ACTIONS, requiredType = RequiredType.NONE) +public class Move extends SubCommand { + + public Move() { + requiredArguments = new Argument[] { Argument.PlotID }; } - + @Override - public boolean onCommand(final PlotPlayer plr, final String[] args) - { - + public boolean onCommand(final PlotPlayer plr, final String[] args) { + final Location loc = plr.getLocation(); final Plot plot1 = MainUtil.getPlot(loc); - if (plot1 == null) { return !sendMessage(plr, C.NOT_IN_PLOT); } - if (!plot1.isAdded(plr.getUUID()) && !Permissions.hasPermission(plr, C.PERMISSION_ADMIN.s())) - { + if (plot1 == null) { + return !sendMessage(plr, C.NOT_IN_PLOT); + } + if (!plot1.isAdded(plr.getUUID()) && !Permissions.hasPermission(plr, C.PERMISSION_ADMIN.s())) { MainUtil.sendMessage(plr, C.NO_PLOT_PERMS); return false; } final String world = loc.getWorld(); final PlotId plot2id = MainUtil.parseId(args[0]); - if ((plot2id == null)) - { + if ((plot2id == null)) { MainUtil.sendMessage(plr, C.NOT_VALID_PLOT_ID); MainUtil.sendMessage(plr, C.COMMAND_SYNTAX, "/plot move "); return false; } String world2; - if (args.length == 2) - { + if (args.length == 2) { final PlotWorld other = PS.get().getPlotWorld(args[1]); final PlotWorld current = PS.get().getPlotWorld(loc.getWorld()); - if ((other == null) || (current == null) || !other.equals(current)) - { + if ((other == null) || (current == null) || !other.equals(current)) { MainUtil.sendMessage(plr, C.PLOTWORLD_INCOMPATIBLE); return false; } world2 = other.worldname; - } - else - { + } else { world2 = world; } final Plot plot2 = MainUtil.getPlot(world2, plot2id); - - if (plot1.equals(plot2)) - { + + if (plot1.equals(plot2)) { MainUtil.sendMessage(plr, C.NOT_VALID_PLOT_ID); MainUtil.sendMessage(plr, C.COMMAND_SYNTAX, "/plot move "); return false; } - if (MainUtil.move(plot1, plot2, new Runnable() - { + if (MainUtil.move(plot1, plot2, new Runnable() { @Override - public void run() - { + public void run() { MainUtil.sendMessage(plr, C.MOVE_SUCCESS); } - })) - { + })) { return true; - } - else - { + } else { MainUtil.sendMessage(plr, C.REQUIRES_UNOWNED); return false; } diff --git a/src/main/java/com/intellectualcrafters/plot/commands/MusicSubcommand.java b/src/main/java/com/intellectualcrafters/plot/commands/MusicSubcommand.java index 08fa2c4ca..69de9a966 100644 --- a/src/main/java/com/intellectualcrafters/plot/commands/MusicSubcommand.java +++ b/src/main/java/com/intellectualcrafters/plot/commands/MusicSubcommand.java @@ -33,59 +33,45 @@ import com.intellectualcrafters.plot.util.BlockManager; import com.intellectualcrafters.plot.util.MainUtil; import com.plotsquared.general.commands.CommandDeclaration; -@CommandDeclaration( -command = "music", -permission = "plots.music", -description = "Player music in a plot", -usage = "/plot music", -category = CommandCategory.ACTIONS, -requiredType = RequiredType.NONE) -public class MusicSubcommand extends SubCommand -{ - +@CommandDeclaration(command = "music", permission = "plots.music", description = "Player music in a plot", usage = "/plot music", category = CommandCategory.ACTIONS, requiredType = RequiredType.NONE) +public class MusicSubcommand extends SubCommand { + @Override - public boolean onCommand(final PlotPlayer player, final String[] args) - { + public boolean onCommand(final PlotPlayer player, final String[] args) { final Location loc = player.getLocation(); final Plot plot = MainUtil.getPlot(loc); - if (plot == null) { return !sendMessage(player, C.NOT_IN_PLOT); } - if (!plot.isAdded(player.getUUID())) - { + if (plot == null) { + return !sendMessage(player, C.NOT_IN_PLOT); + } + if (!plot.isAdded(player.getUUID())) { sendMessage(player, C.NO_PLOT_PERMS); return true; } - final PlotInventory inv = new PlotInventory(player, 2, "Plot Jukebox") - { + final PlotInventory inv = new PlotInventory(player, 2, "Plot Jukebox") { @Override - public boolean onClick(final int index) - { + public boolean onClick(final int index) { final PlotItemStack item = getItem(index); if (item == null) { return true; } final int id = item.id == 7 ? 0 : item.id; - if (id == 0) - { + if (id == 0) { FlagManager.removePlotFlag(plot, "music"); - } - else - { + } else { FlagManager.addPlotFlag(plot, new Flag(FlagManager.getFlag("music"), id)); } return false; } }; int index = 0; - for (int i = 2256; i < 2268; i++) - { + for (int i = 2256; i < 2268; i++) { final String name = "&r&6" + BlockManager.manager.getClosestMatchingName(new PlotBlock((short) i, (byte) 0)); final String[] lore = { "&r&aClick to play!" }; final PlotItemStack item = new PlotItemStack(i, (byte) 0, 1, name, lore); inv.setItem(index, item); index++; } - if (player.getMeta("music") != null) - { + if (player.getMeta("music") != null) { final String name = "&r&6Cancel music"; final String[] lore = { "&r&cClick to cancel!" }; inv.setItem(index, new PlotItemStack(7, (short) 0, 1, name, lore)); diff --git a/src/main/java/com/intellectualcrafters/plot/commands/Purge.java b/src/main/java/com/intellectualcrafters/plot/commands/Purge.java index 5343af9f6..5636e4b2a 100644 --- a/src/main/java/com/intellectualcrafters/plot/commands/Purge.java +++ b/src/main/java/com/intellectualcrafters/plot/commands/Purge.java @@ -35,144 +35,118 @@ import com.intellectualcrafters.plot.util.MainUtil; import com.intellectualcrafters.plot.util.UUIDHandler; import com.plotsquared.general.commands.CommandDeclaration; -@CommandDeclaration( -command = "purge", -permission = "plots.admin", -description = "Purge all plots for a world", -category = CommandCategory.ACTIONS, -requiredType = RequiredType.CONSOLE) -public class Purge extends SubCommand -{ - - public PlotId getId(final String id) - { - try - { +@CommandDeclaration(command = "purge", permission = "plots.admin", description = "Purge all plots for a world", category = CommandCategory.ACTIONS, requiredType = RequiredType.CONSOLE) +public class Purge extends SubCommand { + + public PlotId getId(final String id) { + try { final String[] split = id.split(";"); return new PlotId(Integer.parseInt(split[0]), Integer.parseInt(split[1])); - } - catch (final Exception e) - { + } catch (final Exception e) { return null; } } - + @Override - public boolean onCommand(final PlotPlayer plr, final String[] args) - { - if (args.length == 1) - { + public boolean onCommand(final PlotPlayer plr, final String[] args) { + if (args.length == 1) { final String arg = args[0].toLowerCase(); final PlotId id = getId(arg); - if (id != null) - { + if (id != null) { MainUtil.sendMessage(plr, "/plot purxe x;z &l"); return false; } final UUID uuid = UUIDHandler.getUUID(args[0], null); - if (uuid != null) - { + if (uuid != null) { MainUtil.sendMessage(plr, "/plot purge " + args[0] + " &l"); return false; } - if (arg.equals("player")) - { + if (arg.equals("player")) { MainUtil.sendMessage(plr, "/plot purge &l "); return false; } - if (arg.equals("unowned")) - { + if (arg.equals("unowned")) { MainUtil.sendMessage(plr, "/plot purge unowned &l"); return false; } - if (arg.equals("unknown")) - { + if (arg.equals("unknown")) { MainUtil.sendMessage(plr, "/plot purge unknown &l"); return false; } - if (arg.equals("all")) - { + if (arg.equals("all")) { MainUtil.sendMessage(plr, "/plot purge all &l"); return false; } MainUtil.sendMessage(plr, C.PURGE_SYNTAX); return false; } - if (args.length != 2) - { + if (args.length != 2) { MainUtil.sendMessage(plr, C.PURGE_SYNTAX); return false; } final String worldname = args[1]; - if (!PS.get().getAllPlotsRaw().containsKey(worldname)) - { + if (!PS.get().getAllPlotsRaw().containsKey(worldname)) { MainUtil.sendMessage(plr, "INVALID WORLD"); return false; } final String arg = args[0].toLowerCase(); final PlotId id = getId(arg); - if (id != null) - { + if (id != null) { final HashSet ids = new HashSet(); final int DBid = DBFunc.getId(MainUtil.getPlot(worldname, id)); - if (DBid != Integer.MAX_VALUE) - { + if (DBid != Integer.MAX_VALUE) { ids.add(DBid); } DBFunc.purgeIds(worldname, ids); return finishPurge(DBid == Integer.MAX_VALUE ? 1 : 0); } - if (arg.equals("all")) - { + if (arg.equals("all")) { final Set ids = PS.get().getPlots(worldname).keySet(); final int length = ids.size(); - if (length == 0) { return MainUtil.sendMessage(null, "&cNo plots found"); } + if (length == 0) { + return MainUtil.sendMessage(null, "&cNo plots found"); + } DBFunc.purge(worldname, ids); return finishPurge(length); } - if (arg.equals("unknown")) - { + if (arg.equals("unknown")) { final Collection plots = PS.get().getPlotsInWorld(worldname); final Set ids = new HashSet<>(); - for (final Plot plot : plots) - { - if (plot.owner != null) - { + for (final Plot plot : plots) { + if (plot.owner != null) { final String name = UUIDHandler.getName(plot.owner); - if (name == null) - { + if (name == null) { ids.add(plot.id); } } } final int length = ids.size(); - if (length == 0) { return MainUtil.sendMessage(null, "&cNo plots found"); } + if (length == 0) { + return MainUtil.sendMessage(null, "&cNo plots found"); + } DBFunc.purge(worldname, ids); return finishPurge(length); } - if (arg.equals("unowned")) - { + if (arg.equals("unowned")) { final Collection plots = PS.get().getPlotsInWorld(worldname); final Set ids = new HashSet<>(); - for (final Plot plot : plots) - { - if (plot.owner == null) - { + for (final Plot plot : plots) { + if (plot.owner == null) { ids.add(plot.id); } } final int length = ids.size(); - if (length == 0) { return MainUtil.sendMessage(null, "&cNo plots found"); } + if (length == 0) { + return MainUtil.sendMessage(null, "&cNo plots found"); + } DBFunc.purge(worldname, ids); return finishPurge(length); } final UUID uuid = UUIDHandler.getUUID(args[0], null); - if (uuid != null) - { + if (uuid != null) { final Set plots = PS.get().getPlots(worldname, uuid); final Set ids = new HashSet<>(); - for (final Plot plot : plots) - { + for (final Plot plot : plots) { ids.add(plot.id); } final int length = ids.size(); @@ -182,9 +156,8 @@ public class Purge extends SubCommand MainUtil.sendMessage(plr, C.PURGE_SYNTAX); return false; } - - private boolean finishPurge(final int amount) - { + + private boolean finishPurge(final int amount) { MainUtil.sendMessage(null, C.PURGE_SUCCESS, amount + ""); return false; } diff --git a/src/main/java/com/intellectualcrafters/plot/commands/Rate.java b/src/main/java/com/intellectualcrafters/plot/commands/Rate.java index d679dbf58..91440033d 100644 --- a/src/main/java/com/intellectualcrafters/plot/commands/Rate.java +++ b/src/main/java/com/intellectualcrafters/plot/commands/Rate.java @@ -55,35 +55,25 @@ usage = "/plot rate [#|next]", aliases = { "rt" }, category = CommandCategory.ACTIONS, requiredType = RequiredType.NONE) -public class Rate extends SubCommand -{ - +public class Rate extends SubCommand { + @Override - public boolean onCommand(final PlotPlayer player, final String[] args) - { - if (args.length == 1) - { - if (args[0].equalsIgnoreCase("next")) - { + public boolean onCommand(final PlotPlayer player, final String[] args) { + if (args.length == 1) { + if (args[0].equalsIgnoreCase("next")) { final ArrayList plots = new ArrayList<>(PS.get().getPlots()); - Collections.sort(plots, new Comparator() - { + Collections.sort(plots, new Comparator() { @Override - public int compare(final Plot p1, final Plot p2) - { + public int compare(final Plot p1, final Plot p2) { double v1 = 0; double v2 = 0; - if (p1.getSettings().ratings != null) - { - for (final Entry entry : p1.getRatings().entrySet()) - { + if (p1.getSettings().ratings != null) { + for (final Entry entry : p1.getRatings().entrySet()) { v1 -= 11 - entry.getValue().getAverageRating(); } } - if (p2.getSettings().ratings != null) - { - for (final Entry entry : p2.getRatings().entrySet()) - { + if (p2.getSettings().ratings != null) { + for (final Entry entry : p2.getRatings().entrySet()) { v2 -= 11 - entry.getValue().getAverageRating(); } } @@ -91,13 +81,11 @@ public class Rate extends SubCommand } }); final UUID uuid = player.getUUID(); - for (final Plot p : plots) - { + for (final Plot p : plots) { if ((!Settings.REQUIRE_DONE || p.getSettings().flags.containsKey("done")) && p.isBasePlot() && ((p.getSettings().ratings == null) || !p.getSettings().ratings.containsKey(uuid)) - && !p.isAdded(uuid)) - { + && !p.isAdded(uuid)) { MainUtil.teleportPlayer(player, player.getLocation(), p); MainUtil.sendMessage(player, C.RATE_THIS); return true; @@ -109,46 +97,38 @@ public class Rate extends SubCommand } final Location loc = player.getLocation(); final Plot plot = MainUtil.getPlot(loc); - if (plot == null) { return !sendMessage(player, C.NOT_IN_PLOT); } - if (!plot.hasOwner()) - { + if (plot == null) { + return !sendMessage(player, C.NOT_IN_PLOT); + } + if (!plot.hasOwner()) { sendMessage(player, C.RATING_NOT_OWNED); return false; } - if (plot.isOwner(player.getUUID())) - { + if (plot.isOwner(player.getUUID())) { sendMessage(player, C.RATING_NOT_YOUR_OWN); return false; } - if (Settings.REQUIRE_DONE && !plot.getSettings().flags.containsKey("done")) - { + if (Settings.REQUIRE_DONE && !plot.getSettings().flags.containsKey("done")) { sendMessage(player, C.RATING_NOT_DONE); return false; } - if ((Settings.RATING_CATEGORIES != null) && (Settings.RATING_CATEGORIES.size() != 0)) - { - final Runnable run = new Runnable() - { + if ((Settings.RATING_CATEGORIES != null) && (Settings.RATING_CATEGORIES.size() != 0)) { + final Runnable run = new Runnable() { @Override - public void run() - { - if (plot.getSettings().ratings.containsKey(player.getUUID())) - { + public void run() { + if (plot.getSettings().ratings.containsKey(player.getUUID())) { sendMessage(player, C.RATING_ALREADY_EXISTS, plot.getId().toString()); return; } final MutableInt index = new MutableInt(0); final MutableInt rating = new MutableInt(0); final String title = Settings.RATING_CATEGORIES.get(0); - final PlotInventory inventory = new PlotInventory(player, 1, title) - { + final PlotInventory inventory = new PlotInventory(player, 1, title) { @Override - public boolean onClick(final int i) - { + public boolean onClick(final int i) { rating.add((i + 1) * Math.pow(10, index.intValue())); index.increment(); - if (index.intValue() >= Settings.RATING_CATEGORIES.size()) - { + if (index.intValue() >= Settings.RATING_CATEGORIES.size()) { close(); final int rV = rating.intValue(); final Rating result = EventUtil.manager.callRating(player, plot, new Rating(rV)); @@ -159,11 +139,9 @@ public class Rate extends SubCommand return false; } setTitle(Settings.RATING_CATEGORIES.get(index.intValue())); - if (Permissions.hasPermission(player, "plots.comment")) - { + if (Permissions.hasPermission(player, "plots.comment")) { final Command command = MainCommand.getInstance().getCommand("comment"); - if (command != null) - { + if (command != null) { MainUtil.sendMessage(player, C.COMMENT_THIS, command.getUsage().replaceAll("{label}", "plot")); } } @@ -182,15 +160,11 @@ public class Rate extends SubCommand inventory.openInventory(); } }; - if (plot.getSettings().ratings == null) - { - if (!Settings.CACHE_RATINGS) - { - TaskManager.runTaskAsync(new Runnable() - { + if (plot.getSettings().ratings == null) { + if (!Settings.CACHE_RATINGS) { + TaskManager.runTaskAsync(new Runnable() { @Override - public void run() - { + public void run() { plot.getSettings().ratings = DBFunc.getRatings(plot); run.run(); } @@ -202,35 +176,27 @@ public class Rate extends SubCommand run.run(); return true; } - if (args.length < 1) - { + if (args.length < 1) { sendMessage(player, C.RATING_NOT_VALID); return true; } final String arg = args[0]; final int rating; - if (MathMan.isInteger(arg) && (arg.length() < 3) && (arg.length() > 0)) - { + if (MathMan.isInteger(arg) && (arg.length() < 3) && (arg.length() > 0)) { rating = Integer.parseInt(arg); - if (rating > 10) - { + if (rating > 10) { sendMessage(player, C.RATING_NOT_VALID); return false; } - } - else - { + } else { sendMessage(player, C.RATING_NOT_VALID); return false; } final UUID uuid = player.getUUID(); - final Runnable run = new Runnable() - { + final Runnable run = new Runnable() { @Override - public void run() - { - if (plot.getSettings().ratings.containsKey(uuid)) - { + public void run() { + if (plot.getSettings().ratings.containsKey(uuid)) { sendMessage(player, C.RATING_ALREADY_EXISTS, plot.getId().toString()); return; } @@ -241,15 +207,11 @@ public class Rate extends SubCommand sendMessage(player, C.RATING_APPLIED, plot.getId().toString()); } }; - if (plot.getSettings().ratings == null) - { - if (!Settings.CACHE_RATINGS) - { - TaskManager.runTaskAsync(new Runnable() - { + if (plot.getSettings().ratings == null) { + if (!Settings.CACHE_RATINGS) { + TaskManager.runTaskAsync(new Runnable() { @Override - public void run() - { + public void run() { plot.getSettings().ratings = DBFunc.getRatings(plot); run.run(); } diff --git a/src/main/java/com/intellectualcrafters/plot/commands/RegenAllRoads.java b/src/main/java/com/intellectualcrafters/plot/commands/RegenAllRoads.java index 5bc0d318e..9ff8e0258 100644 --- a/src/main/java/com/intellectualcrafters/plot/commands/RegenAllRoads.java +++ b/src/main/java/com/intellectualcrafters/plot/commands/RegenAllRoads.java @@ -42,28 +42,19 @@ usage = "/plot regenallroads ", category = CommandCategory.DEBUG, requiredType = RequiredType.CONSOLE, permission = "plots.regenallroads") -public class RegenAllRoads extends SubCommand -{ - - public RegenAllRoads() - { - requiredArguments = new Argument[] { - Argument.String - }; +public class RegenAllRoads extends SubCommand { + + public RegenAllRoads() { + requiredArguments = new Argument[] { Argument.String }; } - + @Override - public boolean onCommand(final PlotPlayer plr, final String[] args) - { + public boolean onCommand(final PlotPlayer plr, final String[] args) { int height = 0; - if (args.length == 2) - { - try - { + if (args.length == 2) { + try { height = Integer.parseInt(args[1]); - } - catch (final NumberFormatException e) - { + } catch (final NumberFormatException e) { MainUtil.sendMessage(plr, C.NOT_VALID_NUMBER, "(0, 256)"); MainUtil.sendMessage(plr, C.COMMAND_SYNTAX, "/plot regenallroads [height]"); return false; @@ -71,8 +62,7 @@ public class RegenAllRoads extends SubCommand } final String name = args[0]; final PlotManager manager = PS.get().getPlotManager(name); - if ((manager == null) || !(manager instanceof HybridPlotManager)) - { + if ((manager == null) || !(manager instanceof HybridPlotManager)) { MainUtil.sendMessage(plr, C.NOT_VALID_PLOT_WORLD); return false; } @@ -82,8 +72,7 @@ public class RegenAllRoads extends SubCommand MainUtil.sendMessage(plr, "&6Potential chunks to update: &7" + (chunks.size() * 1024)); MainUtil.sendMessage(plr, "&6Estimated time: &7" + (chunks.size()) + " seconds"); final boolean result = HybridUtils.manager.scheduleRoadUpdate(name, height); - if (!result) - { + if (!result) { MainUtil.sendMessage(plr, "&cCannot schedule mass schematic update! (Is one already in progress?)"); return false; } diff --git a/src/main/java/com/intellectualcrafters/plot/commands/Reload.java b/src/main/java/com/intellectualcrafters/plot/commands/Reload.java index 59b6b01a9..734fa8ebf 100644 --- a/src/main/java/com/intellectualcrafters/plot/commands/Reload.java +++ b/src/main/java/com/intellectualcrafters/plot/commands/Reload.java @@ -28,36 +28,25 @@ import com.intellectualcrafters.plot.object.PlotWorld; import com.intellectualcrafters.plot.util.MainUtil; import com.plotsquared.general.commands.CommandDeclaration; -@CommandDeclaration( -command = "reload", -permission = "plots.admin.command.reload", -description = "Reload configurations", -usage = "/plot reload", -category = CommandCategory.INFO) -public class Reload extends SubCommand -{ - +@CommandDeclaration(command = "reload", permission = "plots.admin.command.reload", description = "Reload configurations", usage = "/plot reload", category = CommandCategory.INFO) +public class Reload extends SubCommand { + @Override - public boolean onCommand(final PlotPlayer plr, final String[] args) - { - try - { + public boolean onCommand(final PlotPlayer plr, final String[] args) { + try { // The following won't affect world generation, as that has to be // loaded during startup unfortunately. PS.get().config.load(PS.get().configFile); PS.get().setupConfig(); C.load(PS.get().translationFile); - for (final String pw : PS.get().getPlotWorlds()) - { + for (final String pw : PS.get().getPlotWorlds()) { final PlotWorld plotworld = PS.get().getPlotWorld(pw); final ConfigurationSection section = PS.get().config.getConfigurationSection("worlds." + pw); plotworld.saveConfiguration(section); plotworld.loadDefaultConfiguration(section); } MainUtil.sendMessage(plr, C.RELOADED_CONFIGS); - } - catch (final Exception e) - { + } catch (final Exception e) { e.printStackTrace(); MainUtil.sendMessage(plr, C.RELOAD_FAILED); } diff --git a/src/main/java/com/intellectualcrafters/plot/commands/Remove.java b/src/main/java/com/intellectualcrafters/plot/commands/Remove.java index b581fdd22..1022de28c 100644 --- a/src/main/java/com/intellectualcrafters/plot/commands/Remove.java +++ b/src/main/java/com/intellectualcrafters/plot/commands/Remove.java @@ -43,77 +43,63 @@ usage = "/plot remove ", category = CommandCategory.ACTIONS, requiredType = RequiredType.NONE, permission = "plots.remove") -public class Remove extends SubCommand -{ - - public Remove() - { - requiredArguments = new Argument[] { - Argument.PlayerName - }; +public class Remove extends SubCommand { + + public Remove() { + requiredArguments = new Argument[] { Argument.PlayerName }; } - + @Override - public boolean onCommand(final PlotPlayer plr, final String[] args) - { - if (args.length != 1) - { + public boolean onCommand(final PlotPlayer plr, final String[] args) { + if (args.length != 1) { MainUtil.sendMessage(plr, C.COMMAND_SYNTAX, "/plot remove "); return true; } final Location loc = plr.getLocation(); final Plot plot = MainUtil.getPlot(loc); - if (plot == null) { return !sendMessage(plr, C.NOT_IN_PLOT); } - if ((plot == null) || !plot.hasOwner()) - { + if (plot == null) { + return !sendMessage(plr, C.NOT_IN_PLOT); + } + if ((plot == null) || !plot.hasOwner()) { MainUtil.sendMessage(plr, C.PLOT_UNOWNED); return false; } - if (!plot.isOwner(plr.getUUID()) && !Permissions.hasPermission(plr, "plots.admin.command.remove")) - { + if (!plot.isOwner(plr.getUUID()) && !Permissions.hasPermission(plr, "plots.admin.command.remove")) { MainUtil.sendMessage(plr, C.NO_PLOT_PERMS); return true; } int count = 0; - switch (args[0]) - { - case "unknown": - { + switch (args[0]) { + case "unknown": { final ArrayList toRemove = new ArrayList<>(); final HashSet all = new HashSet<>(); all.addAll(plot.getMembers()); all.addAll(plot.getTrusted()); all.addAll(plot.getDenied()); - for (final UUID uuid : all) - { - if (UUIDHandler.getName(uuid) == null) - { + for (final UUID uuid : all) { + if (UUIDHandler.getName(uuid) == null) { toRemove.add(uuid); count++; } } - for (final UUID uuid : toRemove) - { + for (final UUID uuid : toRemove) { plot.removeDenied(uuid); plot.removeTrusted(uuid); plot.removeMember(uuid); } break; } - case "*": - { + case "*": { final ArrayList toRemove = new ArrayList<>(); final HashSet all = new HashSet<>(); all.addAll(plot.getMembers()); all.addAll(plot.getTrusted()); all.addAll(plot.getDenied()); - for (final UUID uuid : all) - { + for (final UUID uuid : all) { toRemove.add(uuid); count++; } - for (final UUID uuid : toRemove) - { + for (final UUID uuid : toRemove) { plot.removeDenied(uuid); plot.removeTrusted(uuid); plot.removeMember(uuid); @@ -122,46 +108,31 @@ public class Remove extends SubCommand } default: final UUID uuid = UUIDHandler.getUUID(args[0], null); - if (uuid != null) - { - if (plot.getTrusted().contains(uuid)) - { - if (plot.removeTrusted(uuid)) - { + if (uuid != null) { + if (plot.getTrusted().contains(uuid)) { + if (plot.removeTrusted(uuid)) { count++; } - } - else if (plot.getMembers().contains(uuid)) - { - if (plot.removeMember(uuid)) - { + } else if (plot.getMembers().contains(uuid)) { + if (plot.removeMember(uuid)) { count++; } - } - else if (plot.getDenied().contains(uuid)) - { - if (plot.removeDenied(uuid)) - { + } else if (plot.getDenied().contains(uuid)) { + if (plot.removeDenied(uuid)) { count++; } } } break; } - if (count == 0) - { - if (UUIDHandler.implementation instanceof SQLUUIDHandler) - { + if (count == 0) { + if (UUIDHandler.implementation instanceof SQLUUIDHandler) { MainUtil.sendMessage(plr, C.INVALID_PLAYER_WAIT, args[0]); - } - else - { + } else { MainUtil.sendMessage(plr, C.INVALID_PLAYER, args[0]); } return false; - } - else - { + } else { MainUtil.sendMessage(plr, C.REMOVED_PLAYERS, count + ""); } return true; diff --git a/src/main/java/com/intellectualcrafters/plot/commands/RequiredType.java b/src/main/java/com/intellectualcrafters/plot/commands/RequiredType.java index fe8c90e07..dff31294b 100644 --- a/src/main/java/com/intellectualcrafters/plot/commands/RequiredType.java +++ b/src/main/java/com/intellectualcrafters/plot/commands/RequiredType.java @@ -2,16 +2,11 @@ package com.intellectualcrafters.plot.commands; import com.plotsquared.general.commands.CommandCaller; -public enum RequiredType -{ - CONSOLE, - PLAYER, - NONE; - - public boolean allows(final CommandCaller player) - { - switch (this) - { +public enum RequiredType { + CONSOLE, PLAYER, NONE; + + public boolean allows(final CommandCaller player) { + switch (this) { case NONE: return true; default: diff --git a/src/main/java/com/intellectualcrafters/plot/commands/Save.java b/src/main/java/com/intellectualcrafters/plot/commands/Save.java index a3486088b..b72b06d59 100644 --- a/src/main/java/com/intellectualcrafters/plot/commands/Save.java +++ b/src/main/java/com/intellectualcrafters/plot/commands/Save.java @@ -18,55 +18,43 @@ import com.intellectualcrafters.plot.util.SchematicHandler; import com.intellectualcrafters.plot.util.TaskManager; import com.plotsquared.general.commands.CommandDeclaration; -@CommandDeclaration( -command = "save", -aliases = { "backup" }, -description = "Save your plot", -category = CommandCategory.ACTIONS, -requiredType = RequiredType.NONE, -permission = "plots.save") -public class Save extends SubCommand -{ - +@CommandDeclaration(command = "save", aliases = { "backup" }, description = "Save your plot", category = CommandCategory.ACTIONS, requiredType = RequiredType.NONE, permission = "plots.save") +public class Save extends SubCommand { + @Override - public boolean onCommand(final PlotPlayer plr, final String[] args) - { - - if (!Settings.METRICS) - { + public boolean onCommand(final PlotPlayer plr, final String[] args) { + + if (!Settings.METRICS) { MainUtil.sendMessage(plr, "&cPlease enable metrics in order to use this command.\n&7 - Or host it yourself if you don't like the free service"); return false; } final String world = plr.getLocation().getWorld(); - if (!PS.get().isPlotWorld(world)) { return !sendMessage(plr, C.NOT_IN_PLOT_WORLD); } + if (!PS.get().isPlotWorld(world)) { + return !sendMessage(plr, C.NOT_IN_PLOT_WORLD); + } final Plot plot = MainUtil.getPlot(plr.getLocation()); - if (plot == null) { return !sendMessage(plr, C.NOT_IN_PLOT); } - if (!plot.hasOwner()) - { + if (plot == null) { + return !sendMessage(plr, C.NOT_IN_PLOT); + } + if (!plot.hasOwner()) { MainUtil.sendMessage(plr, C.PLOT_UNOWNED); return false; } - if (!plot.isOwner(plr.getUUID()) && !Permissions.hasPermission(plr, "plots.admin.command.save")) - { + if (!plot.isOwner(plr.getUUID()) && !Permissions.hasPermission(plr, "plots.admin.command.save")) { MainUtil.sendMessage(plr, C.NO_PLOT_PERMS); return false; } - if (MainUtil.runners.containsKey(plot)) - { + if (MainUtil.runners.containsKey(plot)) { MainUtil.sendMessage(plr, C.WAIT_FOR_TIMER); return false; } MainUtil.runners.put(plot, 1); - SchematicHandler.manager.getCompoundTag(plot.world, plot.id, new RunnableVal() - { + SchematicHandler.manager.getCompoundTag(plot.world, plot.id, new RunnableVal() { @Override - public void run() - { - TaskManager.runTaskAsync(new Runnable() - { + public void run() { + TaskManager.runTaskAsync(new Runnable() { @Override - public void run() - { + public void run() { final String time = (System.currentTimeMillis() / 1000) + ""; final String name = PS.get().IMP.getServerName().replaceAll("[^A-Za-z0-9]", ""); final int size = (plot.getTop().getX() - plot.getBottom().getX()) + 1; @@ -74,18 +62,16 @@ public class Save extends SubCommand final String world = plot.world.replaceAll("[^A-Za-z0-9]", ""); final String file = time + "_" + world + "_" + id.x + "_" + id.y + "_" + size + "_" + name; final UUID uuid = plr.getUUID(); - + final URL url = SchematicHandler.manager.upload(value, uuid, file); - if (url == null) - { + if (url == null) { MainUtil.sendMessage(plr, C.SAVE_FAILED); MainUtil.runners.remove(plot); return; } MainUtil.sendMessage(plr, C.SAVE_SUCCESS); final List schematics = (List) plr.getMeta("plot_schematics"); - if (schematics != null) - { + if (schematics != null) { schematics.add(file); } MainUtil.runners.remove(plot); diff --git a/src/main/java/com/intellectualcrafters/plot/commands/SchematicCmd.java b/src/main/java/com/intellectualcrafters/plot/commands/SchematicCmd.java index 9d577c2a3..77bd5ad1e 100644 --- a/src/main/java/com/intellectualcrafters/plot/commands/SchematicCmd.java +++ b/src/main/java/com/intellectualcrafters/plot/commands/SchematicCmd.java @@ -49,101 +49,79 @@ description = "Schematic command", aliases = { "sch" }, category = CommandCategory.ACTIONS, usage = "/plot schematic ") -public class SchematicCmd extends SubCommand -{ - +public class SchematicCmd extends SubCommand { + private boolean running = false; - + @Override - public boolean onCommand(final PlotPlayer plr, final String... args) - { - if (args.length < 1) - { + public boolean onCommand(final PlotPlayer plr, final String... args) { + if (args.length < 1) { sendMessage(plr, C.SCHEMATIC_MISSING_ARG); return true; } final String arg = args[0].toLowerCase(); final String file; final Schematic schematic; - switch (arg) - { - case "paste": - { - if (!Permissions.hasPermission(plr, "plots.schematic.paste")) - { + switch (arg) { + case "paste": { + if (!Permissions.hasPermission(plr, "plots.schematic.paste")) { MainUtil.sendMessage(plr, C.NO_PERMISSION, "plots.schematic.paste"); return false; } - if (args.length < 2) - { + if (args.length < 2) { sendMessage(plr, C.SCHEMATIC_MISSING_ARG); break; } final Location loc = plr.getLocation(); final Plot plot = MainUtil.getPlot(loc); - if (plot == null) { return !sendMessage(plr, C.NOT_IN_PLOT); } - if (!plot.hasOwner()) - { + if (plot == null) { + return !sendMessage(plr, C.NOT_IN_PLOT); + } + if (!plot.hasOwner()) { MainUtil.sendMessage(plr, C.PLOT_UNOWNED); return false; } - if (!plot.isOwner(plr.getUUID()) && !Permissions.hasPermission(plr, "plots.admin.command.schematic.paste")) - { + if (!plot.isOwner(plr.getUUID()) && !Permissions.hasPermission(plr, "plots.admin.command.schematic.paste")) { MainUtil.sendMessage(plr, C.NO_PLOT_PERMS); return false; } - if (running) - { + if (running) { MainUtil.sendMessage(plr, "&cTask is already running."); return false; } final String location = args[1]; running = true; - TaskManager.runTaskAsync(new Runnable() - { + TaskManager.runTaskAsync(new Runnable() { @Override - public void run() - { + public void run() { Schematic schematic; - if (location.startsWith("url:")) - { - try - { + if (location.startsWith("url:")) { + try { final UUID uuid = UUID.fromString(location.substring(4)); final URL base = new URL(Settings.WEB_URL); final URL url = new URL(base, "uploads/" + uuid + ".schematic"); schematic = SchematicHandler.manager.getSchematic(url); - } - catch (final Exception e) - { + } catch (final Exception e) { e.printStackTrace(); sendMessage(plr, C.SCHEMATIC_INVALID, "non-existent url: " + location); running = false; return; } - } - else - { + } else { schematic = SchematicHandler.manager.getSchematic(location); } - if (schematic == null) - { + if (schematic == null) { running = false; sendMessage(plr, C.SCHEMATIC_INVALID, "non-existent or not in gzip format"); return; } - SchematicHandler.manager.paste(schematic, plot, 0, 0, new RunnableVal() - { + SchematicHandler.manager.paste(schematic, plot, 0, 0, new RunnableVal() { @Override - public void run() - { + public void run() { running = false; - if (value) - { + if (value) { sendMessage(plr, C.SCHEMATIC_PASTE_SUCCESS); - } - else - { + } else { sendMessage(plr, C.SCHEMATIC_PASTE_FAILED); } } @@ -152,37 +130,31 @@ public class SchematicCmd extends SubCommand }); break; } - case "test": - { - if (!Permissions.hasPermission(plr, "plots.schematic.test")) - { + case "test": { + if (!Permissions.hasPermission(plr, "plots.schematic.test")) { MainUtil.sendMessage(plr, C.NO_PERMISSION, "plots.schematic.test"); return false; } - if (args.length < 2) - { + if (args.length < 2) { sendMessage(plr, C.SCHEMATIC_MISSING_ARG); return false; } final Location loc = plr.getLocation(); final Plot plot = MainUtil.getPlot(loc); - if (plot == null) - { + if (plot == null) { sendMessage(plr, C.NOT_IN_PLOT); return false; } file = args[1]; schematic = SchematicHandler.manager.getSchematic(file); - if (schematic == null) - { + if (schematic == null) { sendMessage(plr, C.SCHEMATIC_INVALID, "non-existent"); return false; } final int l1 = schematic.getSchematicDimension().getX(); final int l2 = schematic.getSchematicDimension().getZ(); final int length = MainUtil.getPlotWidth(loc.getWorld(), plot.id); - if ((l1 < length) || (l2 < length)) - { + if ((l1 < length) || (l2 < length)) { sendMessage(plr, C.SCHEMATIC_INVALID, String.format("Wrong size (x: %s, z: %d) vs %d ", l1, l2, length)); break; } @@ -190,68 +162,56 @@ public class SchematicCmd extends SubCommand break; } case "saveall": - case "exportall": - { - if (!ConsolePlayer.isConsole(plr)) - { + case "exportall": { + if (!ConsolePlayer.isConsole(plr)) { MainUtil.sendMessage(plr, C.NOT_CONSOLE); return false; } - if (args.length != 2) - { + if (args.length != 2) { MainUtil.sendMessage(null, "&cNeed world arg. Use &7/plots sch exportall "); return false; } final Collection plots = PS.get().getPlotsInWorld(args[1]); - if ((plots.size() == 0)) - { + if ((plots.size() == 0)) { MainUtil.sendMessage(plr, "&cInvalid world. Use &7/plots sch exportall "); return false; } - final boolean result = SchematicHandler.manager.exportAll(plots, null, null, new Runnable() - { + final boolean result = SchematicHandler.manager.exportAll(plots, null, null, new Runnable() { @Override - public void run() - { + public void run() { MainUtil.sendMessage(plr, "&aFinished mass export"); } }); - if (!result) - { + if (!result) { MainUtil.sendMessage(plr, "&cTask is already running."); return false; - } - else - { + } else { MainUtil.sendMessage(plr, "&3PlotSquared&8->&3Schemaitc&8: &7Mass export has started. This may take a while."); MainUtil.sendMessage(plr, "&3PlotSquared&8->&3Schemaitc&8: &7Found &c" + plots.size() + "&7 plots..."); } break; } case "export": - case "save": - { - if (!Permissions.hasPermission(plr, "plots.schematic.save")) - { + case "save": { + if (!Permissions.hasPermission(plr, "plots.schematic.save")) { MainUtil.sendMessage(plr, C.NO_PERMISSION, "plots.schematic.save"); return false; } - if (running) - { + if (running) { MainUtil.sendMessage(plr, "&cTask is already running."); return false; } final Plot p2; final Location loc = plr.getLocation(); final Plot plot = MainUtil.getPlot(loc); - if (plot == null) { return !sendMessage(plr, C.NOT_IN_PLOT); } - if (!plot.hasOwner()) - { + if (plot == null) { + return !sendMessage(plr, C.NOT_IN_PLOT); + } + if (!plot.hasOwner()) { MainUtil.sendMessage(plr, C.PLOT_UNOWNED); return false; } - if (!plot.isOwner(plr.getUUID()) && !Permissions.hasPermission(plr, "plots.admin.command.schematic.save")) - { + if (!plot.isOwner(plr.getUUID()) && !Permissions.hasPermission(plr, "plots.admin.command.schematic.save")) { MainUtil.sendMessage(plr, C.NO_PLOT_PERMS); return false; } @@ -259,28 +219,22 @@ public class SchematicCmd extends SubCommand loc.getWorld(); final Collection plots = new ArrayList(); plots.add(p2); - final boolean result = SchematicHandler.manager.exportAll(plots, null, null, new Runnable() - { + final boolean result = SchematicHandler.manager.exportAll(plots, null, null, new Runnable() { @Override - public void run() - { + public void run() { MainUtil.sendMessage(plr, "&aFinished export"); running = false; } }); - if (!result) - { + if (!result) { MainUtil.sendMessage(plr, "&cTask is already running."); return false; - } - else - { + } else { MainUtil.sendMessage(plr, "&7Starting export..."); } break; } - default: - { + default: { sendMessage(plr, C.SCHEMATIC_MISSING_ARG); break; } diff --git a/src/main/java/com/intellectualcrafters/plot/commands/Set.java b/src/main/java/com/intellectualcrafters/plot/commands/Set.java index 060f61e95..5db19f04b 100644 --- a/src/main/java/com/intellectualcrafters/plot/commands/Set.java +++ b/src/main/java/com/intellectualcrafters/plot/commands/Set.java @@ -46,7 +46,6 @@ import com.intellectualcrafters.plot.util.StringComparison; import com.intellectualcrafters.plot.util.StringMan; import com.intellectualcrafters.plot.util.UUIDHandler; import com.plotsquared.general.commands.CommandDeclaration; -import com.plotsquared.listener.PlotListener; // TODO Make sub-subcommands @CommandDeclaration( @@ -57,33 +56,29 @@ usage = "/plot set ", permission = "plots.set", category = CommandCategory.ACTIONS, requiredType = RequiredType.NONE) -public class Set extends SubCommand -{ +public class Set extends SubCommand { public final static String[] values = new String[] { "biome", "alias", "home", "flag" }; public final static String[] aliases = new String[] { "b", "w", "wf", "f", "a", "h", "fl" }; - + @Override - public boolean onCommand(final PlotPlayer plr, final String... args) - { - + public boolean onCommand(final PlotPlayer plr, final String... args) { + final Location loc = plr.getLocation(); final Plot plot = MainUtil.getPlot(loc); - if (plot == null) { return !sendMessage(plr, C.NOT_IN_PLOT); } - if (!plot.hasOwner()) - { + if (plot == null) { + return !sendMessage(plr, C.NOT_IN_PLOT); + } + if (!plot.hasOwner()) { sendMessage(plr, C.PLOT_NOT_CLAIMED); return false; } - if (!plot.isOwner(plr.getUUID())) - { - if (!Permissions.hasPermission(plr, "plots.set.other")) - { + if (!plot.isOwner(plr.getUUID())) { + if (!Permissions.hasPermission(plr, "plots.set.other")) { MainUtil.sendMessage(plr, C.NO_PERMISSION, "plots.set.other"); return false; } } - if (args.length < 1) - { + if (args.length < 1) { final PlotManager manager = PS.get().getPlotManager(loc.getWorld()); final ArrayList newValues = new ArrayList(); newValues.addAll(Arrays.asList(values)); @@ -91,33 +86,26 @@ public class Set extends SubCommand MainUtil.sendMessage(plr, C.SUBCOMMAND_SET_OPTIONS_HEADER.s() + getArgumentList(newValues)); return false; } - for (int i = 0; i < aliases.length; i++) - { - if (aliases[i].equalsIgnoreCase(args[0])) - { + for (int i = 0; i < aliases.length; i++) { + if (aliases[i].equalsIgnoreCase(args[0])) { args[0] = values[i]; break; } } - if (args[0].equalsIgnoreCase("flag")) - { + if (args[0].equalsIgnoreCase("flag")) { List arglist = Arrays.asList("flag", "set"); for (String arg : Arrays.copyOfRange(args, 1, args.length)) { arglist.add(arg); } return MainCommand.onCommand(plr, "plot", arglist.toArray(new String[0])); } - if (args[0].equalsIgnoreCase("home")) - { - if (!Permissions.hasPermission(plr, "plots.set.home")) - { + if (args[0].equalsIgnoreCase("home")) { + if (!Permissions.hasPermission(plr, "plots.set.home")) { MainUtil.sendMessage(plr, C.NO_PERMISSION, "plots.set.home"); return false; } - if (args.length > 1) - { - if (args[1].equalsIgnoreCase("none")) - { + if (args.length > 1) { + if (args[1].equalsIgnoreCase("none")) { plot.setHome(null); return true; } @@ -132,62 +120,50 @@ public class Set extends SubCommand plot.setHome(blockloc); return MainUtil.sendMessage(plr, C.POSITION_SET); } - if (args[0].equalsIgnoreCase("desc")) - { - if (!Permissions.hasPermission(plr, "plots.set.desc")) - { + if (args[0].equalsIgnoreCase("desc")) { + if (!Permissions.hasPermission(plr, "plots.set.desc")) { MainUtil.sendMessage(plr, C.NO_PERMISSION, "plots.set.desc"); return false; } - if (args.length < 2) - { + if (args.length < 2) { MainUtil.sendMessage(plr, C.MISSING_DESC); return false; } final StringBuilder desc = new StringBuilder(); - for (int i = 1; i < args.length; i++) - { + for (int i = 1; i < args.length; i++) { desc.append(args[i]).append(" "); } final String descValue = desc.substring(0, desc.length() - 1); - + final Flag flag = new Flag(FlagManager.getFlag("description"), descValue); final boolean result = FlagManager.addPlotFlag(plot, flag); - if (!result) - { + if (!result) { MainUtil.sendMessage(plr, C.FLAG_NOT_ADDED); return false; } MainUtil.sendMessage(plr, C.DESC_SET); return true; } - if (args[0].equalsIgnoreCase("alias")) - { - if (!Permissions.hasPermission(plr, "plots.set.alias")) - { + if (args[0].equalsIgnoreCase("alias")) { + if (!Permissions.hasPermission(plr, "plots.set.alias")) { MainUtil.sendMessage(plr, C.NO_PERMISSION, "plots.set.alias"); return false; } - if (args.length < 2) - { + if (args.length < 2) { MainUtil.sendMessage(plr, C.MISSING_ALIAS); return false; } final String alias = args[1]; - if (alias.length() >= 50) - { + if (alias.length() >= 50) { MainUtil.sendMessage(plr, C.ALIAS_TOO_LONG); return false; } - for (final Plot p : PS.get().getPlotsInWorld(plr.getLocation().getWorld())) - { - if (p.getSettings().getAlias().equalsIgnoreCase(alias)) - { + for (final Plot p : PS.get().getPlotsInWorld(plr.getLocation().getWorld())) { + if (p.getSettings().getAlias().equalsIgnoreCase(alias)) { MainUtil.sendMessage(plr, C.ALIAS_IS_TAKEN); return false; } - if (UUIDHandler.nameExists(new StringWrapper(alias))) - { + if (UUIDHandler.nameExists(new StringWrapper(alias))) { MainUtil.sendMessage(plr, C.ALIAS_IS_TAKEN); return false; } @@ -196,48 +172,39 @@ public class Set extends SubCommand MainUtil.sendMessage(plr, C.ALIAS_SET_TO.s().replaceAll("%alias%", alias)); return true; } - if (args[0].equalsIgnoreCase("biome")) - { - if (!Permissions.hasPermission(plr, "plots.set.biome")) - { + if (args[0].equalsIgnoreCase("biome")) { + if (!Permissions.hasPermission(plr, "plots.set.biome")) { MainUtil.sendMessage(plr, C.NO_PERMISSION, "plots.set.biome"); return false; } - if (args.length < 2) - { + if (args.length < 2) { MainUtil.sendMessage(plr, C.NEED_BIOME); return true; } - if (args[1].length() < 2) - { + if (args[1].length() < 2) { sendMessage(plr, C.NAME_LITTLE, "Biome", args[1].length() + "", "2"); return true; } final int biome = BlockManager.manager.getBiomeFromString(args[1]); - if (biome == -1) - { + if (biome == -1) { MainUtil.sendMessage(plr, getBiomeList(BlockManager.manager.getBiomeList())); return true; } - if (MainUtil.runners.containsKey(plot)) - { + if (MainUtil.runners.containsKey(plot)) { MainUtil.sendMessage(plr, C.WAIT_FOR_TIMER); return false; } MainUtil.runners.put(plot, 1); - plot.setBiome(args[1].toUpperCase(), new Runnable() - { + plot.setBiome(args[1].toUpperCase(), new Runnable() { @Override - public void run() - { + public void run() { MainUtil.runners.remove(plot); MainUtil.sendMessage(plr, C.BIOME_SET_TO.s() + args[1].toLowerCase()); } }); return true; } - if (args[0].equalsIgnoreCase("limit")) - { + if (args[0].equalsIgnoreCase("limit")) { // /plot set limit Empire92 +1 return true; } @@ -246,90 +213,68 @@ public class Set extends SubCommand final PlotWorld plotworld = PS.get().getPlotWorld(world); final PlotManager manager = PS.get().getPlotManager(world); final String[] components = manager.getPlotComponents(plotworld, plot.id); - + final boolean allowUnsafe = DebugAllowUnsafe.unsafeAllowed.contains(plr.getUUID()); - - for (final String component : components) - { - if (component.equalsIgnoreCase(args[0])) - { - if (!Permissions.hasPermission(plr, "plots.set." + component)) - { + + for (final String component : components) { + if (component.equalsIgnoreCase(args[0])) { + if (!Permissions.hasPermission(plr, "plots.set." + component)) { MainUtil.sendMessage(plr, C.NO_PERMISSION, "plots.set." + component); return false; } PlotBlock[] blocks; - try - { - if (args.length < 2) - { + try { + if (args.length < 2) { MainUtil.sendMessage(plr, C.NEED_BLOCK); return true; } final String[] split = args[1].split(","); blocks = Configuration.BLOCKLIST.parseString(args[1]); - for (int i = 0; i < blocks.length; i++) - { + for (int i = 0; i < blocks.length; i++) { final PlotBlock block = blocks[i]; - if (block == null) - { + if (block == null) { MainUtil.sendMessage(plr, C.NOT_VALID_BLOCK, split[i]); String name; - if (split[i].contains("%")) - { + if (split[i].contains("%")) { name = split[i].split("%")[1]; - } - else - { + } else { name = split[i]; } final StringComparison.ComparisonResult match = BlockManager.manager.getClosestBlock(name); - if (match != null) - { + if (match != null) { name = BlockManager.manager.getClosestMatchingName(match.best); - if (name != null) - { + if (name != null) { MainUtil.sendMessage(plr, C.DID_YOU_MEAN, name.toLowerCase()); } } return false; - } - else if (!allowUnsafe && !BlockManager.manager.isBlockSolid(block)) - { + } else if (!allowUnsafe && !BlockManager.manager.isBlockSolid(block)) { MainUtil.sendMessage(plr, C.NOT_ALLOWED_BLOCK, block.toString()); return false; } } - if (!allowUnsafe) - { - for (final PlotBlock block : blocks) - { - if (!BlockManager.manager.isBlockSolid(block)) - { + if (!allowUnsafe) { + for (final PlotBlock block : blocks) { + if (!BlockManager.manager.isBlockSolid(block)) { MainUtil.sendMessage(plr, C.NOT_ALLOWED_BLOCK, block.toString()); return false; } } } - } - catch (final Exception e2) - { + } catch (final Exception e2) { MainUtil.sendMessage(plr, C.NOT_VALID_BLOCK, args[1]); return false; } - if (MainUtil.runners.containsKey(plot)) - { + if (MainUtil.runners.containsKey(plot)) { MainUtil.sendMessage(plr, C.WAIT_FOR_TIMER); return false; } MainUtil.runners.put(plot, 1); manager.setComponent(plotworld, plot.id, component, blocks); MainUtil.sendMessage(plr, C.GENERATING_COMPONENT); - SetBlockQueue.addNotify(new Runnable() - { + SetBlockQueue.addNotify(new Runnable() { @Override - public void run() - { + public void run() { MainUtil.runners.remove(plot); } }); @@ -338,21 +283,15 @@ public class Set extends SubCommand } { AbstractFlag af; - try - { + try { af = new AbstractFlag(args[0].toLowerCase()); - } - catch (final Exception e) - { + } catch (final Exception e) { af = new AbstractFlag(""); } - if (FlagManager.getFlags().contains(af)) - { + if (FlagManager.getFlags().contains(af)) { final StringBuilder a = new StringBuilder(); - if (args.length > 1) - { - for (int x = 1; x < args.length; x++) - { + if (args.length > 1) { + for (int x = 1; x < args.length; x++) { a.append(" ").append(args[x]); } } @@ -366,28 +305,23 @@ public class Set extends SubCommand MainUtil.sendMessage(plr, C.SUBCOMMAND_SET_OPTIONS_HEADER.s() + getArgumentList(newValues)); return false; } - - private String getString(final String s) - { + + private String getString(final String s) { return StringMan.replaceAll(C.BLOCK_LIST_ITEM.s(), "%mat%", s); } - - private String getArgumentList(final List newValues) - { + + private String getArgumentList(final List newValues) { final StringBuilder builder = new StringBuilder(); - for (final String s : newValues) - { + for (final String s : newValues) { builder.append(getString(s)); } return builder.toString().substring(1, builder.toString().length() - 1); } - - private String getBiomeList(final String[] biomes) - { + + private String getBiomeList(final String[] biomes) { final StringBuilder builder = new StringBuilder(); builder.append(C.NEED_BIOME.s()); - for (final String b : biomes) - { + for (final String b : biomes) { builder.append(getString(b)); } return builder.toString().substring(1, builder.toString().length() - 1); diff --git a/src/main/java/com/intellectualcrafters/plot/commands/SetOwner.java b/src/main/java/com/intellectualcrafters/plot/commands/SetOwner.java index 0d0bbd781..9c3425c3e 100644 --- a/src/main/java/com/intellectualcrafters/plot/commands/SetOwner.java +++ b/src/main/java/com/intellectualcrafters/plot/commands/SetOwner.java @@ -45,91 +45,70 @@ usage = "/plot setowner ", aliases = { "so" }, category = CommandCategory.ACTIONS, requiredType = RequiredType.NONE) -public class SetOwner extends SubCommand -{ - - public SetOwner() - { - requiredArguments = new Argument[] { - Argument.PlayerName - }; +public class SetOwner extends SubCommand { + + public SetOwner() { + requiredArguments = new Argument[] { Argument.PlayerName }; } - - private UUID getUUID(final String string) - { + + private UUID getUUID(final String string) { return UUIDHandler.getUUID(string, null); } - + @Override - public boolean onCommand(final PlotPlayer plr, final String[] args) - { + public boolean onCommand(final PlotPlayer plr, final String[] args) { final Location loc = plr.getLocation(); final Plot plot = MainUtil.getPlot(loc); - if ((plot == null) || ((plot.owner == null) && !Permissions.hasPermission(plr, "plots.admin.command.setowner"))) - { + if ((plot == null) || ((plot.owner == null) && !Permissions.hasPermission(plr, "plots.admin.command.setowner"))) { MainUtil.sendMessage(plr, C.NOT_IN_PLOT); return false; } - if (args.length < 1) - { + if (args.length < 1) { MainUtil.sendMessage(plr, C.NEED_USER); return false; } - + final PlotId bot = MainUtil.getBottomPlot(plot).id; final PlotId top = MainUtil.getTopPlot(plot).id; final ArrayList plots = MainUtil.getPlotSelectionIds(bot, top); - + final PlotPlayer other = UUIDHandler.getPlayer(args[0]); - if (other == null) - { - if (!Permissions.hasPermission(plr, "plots.admin.command.setowner")) - { + if (other == null) { + if (!Permissions.hasPermission(plr, "plots.admin.command.setowner")) { MainUtil.sendMessage(plr, C.INVALID_PLAYER, args[0]); return false; } - } - else - { - if (!Permissions.hasPermission(plr, "plots.admin.command.setowner")) - { + } else { + if (!Permissions.hasPermission(plr, "plots.admin.command.setowner")) { final int size = plots.size(); final int currentPlots = (Settings.GLOBAL_LIMIT ? MainUtil.getPlayerPlotCount(other) : MainUtil.getPlayerPlotCount(loc.getWorld(), other)) + size; - if (currentPlots > MainUtil.getAllowedPlots(other)) - { + if (currentPlots > MainUtil.getAllowedPlots(other)) { sendMessage(plr, C.CANT_TRANSFER_MORE_PLOTS); return false; } } } - - if (!plot.isOwner(plr.getUUID())) - { - if (!Permissions.hasPermission(plr, "plots.admin.command.setowner")) - { + + if (!plot.isOwner(plr.getUUID())) { + if (!Permissions.hasPermission(plr, "plots.admin.command.setowner")) { MainUtil.sendMessage(plr, C.NO_PERMISSION, "plots.admin.command.setowner"); return false; } } - + final String world = loc.getWorld(); final UUID uuid = getUUID(args[0]); - if (uuid == null) - { + if (uuid == null) { MainUtil.sendMessage(plr, C.INVALID_PLAYER, args[0]); return false; } - for (final PlotId id : plots) - { + for (final PlotId id : plots) { Plot current = PS.get().getPlot(world, id); - if (current == null) - { + if (current == null) { current = MainUtil.getPlot(world, id); current.owner = uuid; current.create(); - } - else - { + } else { current.owner = uuid; DBFunc.setOwner(current, current.owner); } @@ -137,8 +116,7 @@ public class SetOwner extends SubCommand } MainUtil.setSign(args[0], plot); MainUtil.sendMessage(plr, C.SET_OWNER); - if (other != null) - { + if (other != null) { MainUtil.sendMessage(other, C.NOW_OWNER, plot.world + ";" + plot.id); } return true; diff --git a/src/main/java/com/intellectualcrafters/plot/commands/Setup.java b/src/main/java/com/intellectualcrafters/plot/commands/Setup.java index e18b84d0b..77e17f794 100644 --- a/src/main/java/com/intellectualcrafters/plot/commands/Setup.java +++ b/src/main/java/com/intellectualcrafters/plot/commands/Setup.java @@ -45,38 +45,28 @@ description = "Setup wizard for plot worlds", usage = "/plot setup", aliases = { "create" }, category = CommandCategory.ACTIONS) -public class Setup extends SubCommand -{ - - public void displayGenerators(final PlotPlayer plr) - { +public class Setup extends SubCommand { + + public void displayGenerators(final PlotPlayer plr) { final StringBuffer message = new StringBuffer(); message.append("&6What generator do you want?"); - for (final Entry> entry : SetupUtils.generators.entrySet()) - { - if (entry.getKey().equals("PlotSquared")) - { + for (final Entry> entry : SetupUtils.generators.entrySet()) { + if (entry.getKey().equals("PlotSquared")) { message.append("\n&8 - &2" + entry.getKey() + " (Default Generator)"); - } - else if (entry.getValue().isFull()) - { + } else if (entry.getValue().isFull()) { message.append("\n&8 - &7" + entry.getKey() + " (Plot Generator)"); - } - else - { + } else { message.append("\n&8 - &7" + entry.getKey() + " (Unknown structure)"); } } MainUtil.sendMessage(plr, message.toString()); } - + @Override - public boolean onCommand(final PlotPlayer plr, final String[] args) - { + public boolean onCommand(final PlotPlayer plr, final String[] args) { // going through setup final String name = plr.getName(); - if (!SetupUtils.setupMap.containsKey(name)) - { + if (!SetupUtils.setupMap.containsKey(name)) { final SetupObject object = new SetupObject(); SetupUtils.setupMap.put(name, object); SetupUtils.manager.updateGenerators(); @@ -84,38 +74,29 @@ public class Setup extends SubCommand displayGenerators(plr); return false; } - if (args.length == 1) - { - if (args[0].equalsIgnoreCase("cancel")) - { + if (args.length == 1) { + if (args[0].equalsIgnoreCase("cancel")) { SetupUtils.setupMap.remove(name); MainUtil.sendMessage(plr, "&aCancelled setup"); return false; } - if (args[0].equalsIgnoreCase("back")) - { + if (args[0].equalsIgnoreCase("back")) { final SetupObject object = SetupUtils.setupMap.get(name); - if (object.setup_index > 0) - { + if (object.setup_index > 0) { object.setup_index--; final ConfigurationNode node = object.step[object.setup_index]; sendMessage(plr, C.SETUP_STEP, object.setup_index + 1 + "", node.getDescription(), node.getType().getType(), node.getDefaultValue() + ""); return false; - } - else if (object.current > 0) - { + } else if (object.current > 0) { object.current--; } } } final SetupObject object = SetupUtils.setupMap.get(name); final int index = object.current; - switch (index) - { - case 0: - { // choose generator - if ((args.length != 1) || !SetupUtils.generators.containsKey(args[0])) - { + switch (index) { + case 0: { // choose generator + if ((args.length != 1) || !SetupUtils.generators.containsKey(args[0])) { final String prefix = "\n&8 - &7"; MainUtil.sendMessage(plr, "&cYou must choose a generator!" + prefix + StringMan.join(SetupUtils.generators.keySet(), prefix).replaceAll("PlotSquared", "&2PlotSquared")); sendMessage(plr, C.SETUP_INIT); @@ -127,32 +108,24 @@ public class Setup extends SubCommand 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); break; } - case 1: - { // choose world type + case 1: { // choose world type final List allTypes = Arrays.asList(new String[] { "default", "augmented", "partial" }); final List allDesc = Arrays.asList(new String[] { "Standard plot generation", "Plot generation with vanilla terrain", "Vanilla with clusters of plots" }); final ArrayList types = new ArrayList<>(); - if (SetupUtils.generators.get(object.setupGenerator).isFull()) - { + if (SetupUtils.generators.get(object.setupGenerator).isFull()) { types.add("default"); } types.add("augmented"); - if (Settings.ENABLE_CLUSTERS) - { + if (Settings.ENABLE_CLUSTERS) { 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!"); - for (final String type : types) - { + for (final String type : types) { final int i = allTypes.indexOf(type); - if (type.equals("default")) - { + if (type.equals("default")) { MainUtil.sendMessage(plr, "&8 - &2" + type + " &8-&7 " + allDesc.get(i)); - } - else - { + } else { MainUtil.sendMessage(plr, "&8 - &7" + type + " &8-&7 " + allDesc.get(i)); } } @@ -160,17 +133,14 @@ public class Setup extends SubCommand } object.type = allTypes.indexOf(args[0].toLowerCase()); final PlotGenerator gen = SetupUtils.generators.get(object.setupGenerator); - if (object.type == 0) - { + if (object.type == 0) { object.current++; - if (object.step == null) - { + if (object.step == null) { object.plotManager = object.setupGenerator; object.step = SetupUtils.generators.get(object.plotManager).getNewPlotWorld(null).getSettingNodes(); SetupUtils.generators.get(object.plotManager).processSetup(object); } - if (object.step.length == 0) - { + if (object.step.length == 0) { object.current = 4; MainUtil.sendMessage(plr, "&6What do you want your world to be called?"); object.setup_index = 0; @@ -178,18 +148,13 @@ public class Setup extends SubCommand } final ConfigurationNode step = object.step[object.setup_index]; sendMessage(plr, C.SETUP_STEP, object.setup_index + 1 + "", step.getDescription(), step.getType().getType(), step.getDefaultValue() + ""); - } - else - { - if (gen.isFull()) - { + } else { + if (gen.isFull()) { object.plotManager = object.setupGenerator; object.setupGenerator = null; object.step = SetupUtils.generators.get(object.plotManager).getNewPlotWorld(null).getSettingNodes(); SetupUtils.generators.get(object.plotManager).processSetup(object); - } - else - { + } else { object.plotManager = "PlotSquared"; MainUtil.sendMessage(plr, "&c[WARNING] The specified generator does not identify as BukkitPlotGenerator"); MainUtil.sendMessage(plr, "&7 - You may need to manually configure the other plugin"); @@ -204,11 +169,9 @@ public class Setup extends SubCommand object.current++; break; } - case 2: - { // Choose terrain + case 2: { // Choose terrain final List terrain = Arrays.asList(new String[] { "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!" + "\n&8 - &2NONE&8 - &7No terrain at all" + "\n&8 - &7ORE&8 - &7Just some ore veins and trees" @@ -218,62 +181,50 @@ public class Setup extends SubCommand } object.terrain = terrain.indexOf(args[0].toLowerCase()); object.current++; - if (object.step == null) - { + if (object.step == null) { object.step = SetupUtils.generators.get(object.plotManager).getNewPlotWorld(null).getSettingNodes(); } final ConfigurationNode step = object.step[object.setup_index]; sendMessage(plr, C.SETUP_STEP, object.setup_index + 1 + "", step.getDescription(), step.getType().getType(), step.getDefaultValue() + ""); break; } - case 3: - { // world setup - if (object.setup_index == object.step.length) - { + case 3: { // world setup + if (object.setup_index == object.step.length) { MainUtil.sendMessage(plr, "&6What do you want your world to be called?"); object.setup_index = 0; object.current++; return true; } ConfigurationNode step = object.step[object.setup_index]; - if (args.length < 1) - { + if (args.length < 1) { sendMessage(plr, C.SETUP_STEP, object.setup_index + 1 + "", step.getDescription(), step.getType().getType(), step.getDefaultValue() + ""); return false; } final boolean valid = step.isValid(args[0]); - if (valid) - { + if (valid) { sendMessage(plr, C.SETUP_VALID_ARG, step.getConstant(), args[0]); step.setValue(args[0]); object.setup_index++; - if (object.setup_index == object.step.length) - { + if (object.setup_index == object.step.length) { onCommand(plr, args); return false; } step = object.step[object.setup_index]; sendMessage(plr, C.SETUP_STEP, object.setup_index + 1 + "", step.getDescription(), step.getType().getType(), step.getDefaultValue() + ""); return false; - } - else - { + } else { sendMessage(plr, C.SETUP_INVALID_ARG, args[0], step.getConstant()); sendMessage(plr, C.SETUP_STEP, object.setup_index + 1 + "", step.getDescription(), step.getType().getType(), step.getDefaultValue() + ""); return false; } } - case 4: - { - if (args.length != 1) - { + case 4: { + if (args.length != 1) { MainUtil.sendMessage(plr, "&cYou need to choose a world name!"); return false; } - if (BlockManager.manager.isWorld(args[0])) - { - if (PS.get().isPlotWorld(args[0])) - { + if (BlockManager.manager.isWorld(args[0])) { + if (PS.get().isPlotWorld(args[0])) { MainUtil.sendMessage(plr, "&cThat world name is already taken!"); return false; } @@ -283,20 +234,14 @@ public class Setup extends SubCommand object.world = args[0]; SetupUtils.setupMap.remove(name); final String world; - if (object.setupManager == null) - { + if (object.setupManager == null) { world = SetupUtils.manager.setupWorld(object); - } - else - { + } else { world = object.setupManager.setupWorld(object); } - try - { + try { plr.teleport(BlockManager.manager.getSpawn(world)); - } - catch (final Exception e) - { + } catch (final Exception e) { plr.sendMessage("&cAn error occured. See console for more information"); e.printStackTrace(); } diff --git a/src/main/java/com/intellectualcrafters/plot/commands/SubCommand.java b/src/main/java/com/intellectualcrafters/plot/commands/SubCommand.java index 6311e5e95..89e6c1e19 100644 --- a/src/main/java/com/intellectualcrafters/plot/commands/SubCommand.java +++ b/src/main/java/com/intellectualcrafters/plot/commands/SubCommand.java @@ -28,14 +28,13 @@ import com.intellectualcrafters.plot.object.PlotPlayer; * */ @SuppressWarnings({ "deprecation", "unused" }) -public abstract class SubCommand extends com.plotsquared.general.commands.Command -{ - +public abstract class SubCommand extends com.plotsquared.general.commands.Command { + /** * The category */ public CommandCategory category; - + /** * Send a message * @@ -45,8 +44,7 @@ public abstract class SubCommand extends com.plotsquared.general.commands.Comman * * @see com.intellectualcrafters.plot.util.MainUtil#sendMessage(PlotPlayer, C, String...) */ - public boolean sendMessage(final PlotPlayer plr, final C c, final String... args) - { + public boolean sendMessage(final PlotPlayer plr, final C c, final String... args) { c.send(plr, args); return true; } diff --git a/src/main/java/com/intellectualcrafters/plot/commands/Swap.java b/src/main/java/com/intellectualcrafters/plot/commands/Swap.java index d7abf8d07..5e6e1d8d1 100644 --- a/src/main/java/com/intellectualcrafters/plot/commands/Swap.java +++ b/src/main/java/com/intellectualcrafters/plot/commands/Swap.java @@ -35,41 +35,33 @@ import com.intellectualcrafters.plot.util.MainUtil; import com.intellectualcrafters.plot.util.Permissions; import com.plotsquared.general.commands.CommandDeclaration; -@CommandDeclaration( -command = "swap", -description = "Swap two plots", -aliases = { "switch" }, -category = CommandCategory.ACTIONS, -requiredType = RequiredType.NONE) -public class Swap extends SubCommand -{ - +@CommandDeclaration(command = "swap", description = "Swap two plots", aliases = { "switch" }, category = CommandCategory.ACTIONS, requiredType = RequiredType.NONE) +public class Swap extends SubCommand { + @Override - public boolean onCommand(final PlotPlayer plr, final String[] args) - { - + public boolean onCommand(final PlotPlayer plr, final String[] args) { + MainUtil.sendMessage(plr, "&cThis command has not been optimized for large selections yet. Please bug me if this becomes an issue."); - if (args.length < 1) - { + if (args.length < 1) { MainUtil.sendMessage(plr, C.NEED_PLOT_ID); MainUtil.sendMessage(plr, C.SWAP_SYNTAX); return false; } final Location loc = plr.getLocation(); final Plot plot = MainUtil.getPlot(loc); - if (plot == null) { return !sendMessage(plr, C.NOT_IN_PLOT); } - if ((!plot.hasOwner() || !plot.isOwner(plr.getUUID())) && !Permissions.hasPermission(plr, "plots.admin.command.swap")) - { + if (plot == null) { + return !sendMessage(plr, C.NOT_IN_PLOT); + } + if ((!plot.hasOwner() || !plot.isOwner(plr.getUUID())) && !Permissions.hasPermission(plr, "plots.admin.command.swap")) { MainUtil.sendMessage(plr, C.NO_PLOT_PERMS); return false; } - + final Plot bot1 = MainUtil.getBottomPlot(plot); final Plot top1 = MainUtil.getTopPlot(plot); - + final PlotId id2 = PlotId.fromString(args[0]); - if (id2 == null) - { + if (id2 == null) { MainUtil.sendMessage(plr, C.NOT_VALID_PLOT_ID); MainUtil.sendMessage(plr, C.SWAP_SYNTAX); return false; @@ -78,62 +70,55 @@ public class Swap extends SubCommand final Plot plot2 = MainUtil.getPlot(world, id2); final PlotId id3 = new PlotId((id2.x + top1.id.x) - bot1.id.x, (id2.y + top1.id.y) - bot1.id.y); final Plot plot3 = MainUtil.getPlot(world, id3); - + // Getting secon selection final Plot bot2 = MainUtil.getBottomPlot(plot2); final Plot top2 = MainUtil.getTopPlot(plot3); - + // cancel swap if intersection final PlotCluster cluster1 = new PlotCluster(world, bot1.id, top1.id, null); final PlotClusterId cluster2id = new PlotClusterId(bot2.id, top2.id); - if (ClusterManager.intersects(cluster1, cluster2id)) - { + if (ClusterManager.intersects(cluster1, cluster2id)) { MainUtil.sendMessage(plr, C.SWAP_OVERLAP); return false; } - + // Check dimensions - if (((top1.id.x - bot1.id.x) != (top2.id.x - bot2.id.x)) || ((top1.id.y - bot1.id.y) != (top2.id.y - bot2.id.y))) - { + if (((top1.id.x - bot1.id.x) != (top2.id.x - bot2.id.x)) || ((top1.id.y - bot1.id.y) != (top2.id.y - bot2.id.y))) { MainUtil.sendMessage(plr, C.SWAP_DIMENSIONS, "1"); MainUtil.sendMessage(plr, C.SWAP_SYNTAX); return false; } - + // Getting selections as ids final ArrayList selection1 = MainUtil.getPlotSelectionIds(bot1.id, top1.id); final ArrayList selection2 = MainUtil.getPlotSelectionIds(bot2.id, top2.id); - + // Getting selections as location coordinates final Location pos1 = MainUtil.getPlotBottomLocAbs(world, bot1.id); final Location pos2 = MainUtil.getPlotTopLocAbs(world, top1.id).subtract(1, 0, 1); final Location pos3 = MainUtil.getPlotBottomLocAbs(world, bot2.id); final Location pos4 = MainUtil.getPlotTopLocAbs(world, top2.id).subtract(1, 0, 1); - - if (MainUtil.getPlot(pos2) != null) - { + + if (MainUtil.getPlot(pos2) != null) { pos1.add(1, 0, 1); pos2.add(1, 0, 1); pos3.add(1, 0, 1); pos4.add(1, 0, 1); } - + // Swapping the blocks, states and entites ChunkManager.manager.swap(world, pos1, pos2, pos3, pos4); - + // Swapping the plot data - for (int i = 0; i < selection1.size(); i++) - { + for (int i = 0; i < selection1.size(); i++) { final boolean last = i == (selection1.size() - 1); final PlotId swaper = selection1.get(i); final PlotId swapee = selection2.get(i); - MainUtil.swapData(world, swaper, swapee, new Runnable() - { + MainUtil.swapData(world, swaper, swapee, new Runnable() { @Override - public void run() - { - if (last) - { + public void run() { + if (last) { MainUtil.sendMessage(plr, C.SWAP_SUCCESS); } } diff --git a/src/main/java/com/intellectualcrafters/plot/commands/TP.java b/src/main/java/com/intellectualcrafters/plot/commands/TP.java index d414a2d66..72557396c 100644 --- a/src/main/java/com/intellectualcrafters/plot/commands/TP.java +++ b/src/main/java/com/intellectualcrafters/plot/commands/TP.java @@ -33,85 +33,66 @@ import com.intellectualcrafters.plot.util.UUIDHandler; import com.plotsquared.general.commands.Argument; import com.plotsquared.general.commands.CommandDeclaration; -@CommandDeclaration( -command = "tp", -description = "Teleport to a plot", -permission = "plots.tp", -usage = "/plot tp ", -requiredType = RequiredType.NONE, -category = CommandCategory.TELEPORT) -public class TP extends SubCommand -{ - - public TP() - { - requiredArguments = new Argument[] { - Argument.String - }; +@CommandDeclaration(command = "tp", description = "Teleport to a plot", permission = "plots.tp", usage = "/plot tp ", requiredType = RequiredType.NONE, category = CommandCategory.TELEPORT) +public class TP extends SubCommand { + + public TP() { + requiredArguments = new Argument[] { Argument.String }; } - + @Override - public boolean onCommand(final PlotPlayer plr, final String[] args) - { + public boolean onCommand(final PlotPlayer plr, final String[] args) { final String id = args[0]; PlotId plotid; final Location loc = plr.getLocation(); final String pworld = loc.getWorld(); String world = pworld; - if (args.length == 2) - { - if (BlockManager.manager.isWorld(args[1])) - { + if (args.length == 2) { + if (BlockManager.manager.isWorld(args[1])) { world = args[1]; } } - if (!PS.get().isPlotWorld(world)) - { + if (!PS.get().isPlotWorld(world)) { MainUtil.sendMessage(plr, C.NOT_IN_PLOT_WORLD); return false; } Plot temp; - if ((temp = isAlias(world, id)) != null) - { + if ((temp = isAlias(world, id)) != null) { MainUtil.teleportPlayer(plr, plr.getLocation(), temp); return true; } - try - { + try { plotid = new PlotId(Integer.parseInt(id.split(";")[0]), Integer.parseInt(id.split(";")[1])); MainUtil.teleportPlayer(plr, plr.getLocation(), MainUtil.getPlot(world, plotid)); return true; - } - catch (final Exception e) - { + } catch (final Exception e) { MainUtil.sendMessage(plr, C.NOT_VALID_PLOT_ID); } return false; } - - private Plot isAlias(final String world, String a) - { + + private Plot isAlias(final String world, String a) { int index = 0; - if (a.contains(";")) - { + if (a.contains(";")) { final String[] split = a.split(";"); - if ((split[1].length() > 0) && MathMan.isInteger(split[1])) - { + if ((split[1].length() > 0) && MathMan.isInteger(split[1])) { index = Integer.parseInt(split[1]); } a = split[0]; } final PlotPlayer player = UUIDHandler.getPlayer(a); - if (player != null) - { + if (player != null) { final java.util.Set plotMainPlots = PS.get().getPlots(world, player); final Plot[] plots = plotMainPlots.toArray(new Plot[plotMainPlots.size()]); - if (plots.length > index) { return plots[index]; } + if (plots.length > index) { + return plots[index]; + } return null; } - for (final Plot p : PS.get().getPlotsInWorld(world)) - { - if ((p.getSettings().getAlias().length() > 0) && p.getSettings().getAlias().equalsIgnoreCase(a)) { return p; } + for (final Plot p : PS.get().getPlotsInWorld(world)) { + if ((p.getSettings().getAlias().length() > 0) && p.getSettings().getAlias().equalsIgnoreCase(a)) { + return p; + } } return null; } diff --git a/src/main/java/com/intellectualcrafters/plot/commands/Target.java b/src/main/java/com/intellectualcrafters/plot/commands/Target.java index e4716a6b9..37a9e7c33 100644 --- a/src/main/java/com/intellectualcrafters/plot/commands/Target.java +++ b/src/main/java/com/intellectualcrafters/plot/commands/Target.java @@ -37,38 +37,29 @@ description = "Target a plot with your compass", permission = "plots.target", requiredType = RequiredType.NONE, category = CommandCategory.ACTIONS) -public class Target extends SubCommand -{ - +public class Target extends SubCommand { + @Override - public boolean onCommand(final PlotPlayer plr, final String[] args) - { + public boolean onCommand(final PlotPlayer plr, final String[] args) { final Location ploc = plr.getLocation(); - if (!PS.get().isPlotWorld(ploc.getWorld())) - { + if (!PS.get().isPlotWorld(ploc.getWorld())) { MainUtil.sendMessage(plr, C.NOT_IN_PLOT_WORLD); return false; } PlotId id = MainUtil.parseId(args[0]); - if (id == null) - { - if (StringMan.isEqualIgnoreCaseToAny(args[0], "near", "nearest")) - { + if (id == null) { + if (StringMan.isEqualIgnoreCaseToAny(args[0], "near", "nearest")) { Plot closest = null; int distance = Integer.MAX_VALUE; - for (final Plot plot : PS.get().getPlotsInWorld(ploc.getWorld())) - { + for (final Plot plot : PS.get().getPlotsInWorld(ploc.getWorld())) { final double current = plot.getBottom().getEuclideanDistanceSquared(ploc); - if (current < distance) - { + if (current < distance) { distance = (int) current; closest = plot; } } id = closest.id; - } - else - { + } else { MainUtil.sendMessage(plr, C.NOT_VALID_PLOT_ID); return false; } diff --git a/src/main/java/com/intellectualcrafters/plot/commands/Template.java b/src/main/java/com/intellectualcrafters/plot/commands/Template.java index a5f72d2f0..87ec652d6 100644 --- a/src/main/java/com/intellectualcrafters/plot/commands/Template.java +++ b/src/main/java/com/intellectualcrafters/plot/commands/Template.java @@ -52,33 +52,29 @@ permission = "plots.admin", description = "Create or use a world template", usage = "/plot template [import|export]