From 57fc51d013fa0ee8fd02de75792bfe5f21c54db5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexander=20S=C3=B6derberg?= Date: Sat, 9 Jan 2021 22:28:41 +0100 Subject: [PATCH] Initial annotation usage cleanup + EditorConfig --- .editorconfig | 1013 +++++++++++ .github/auto-comment.yml | 2 +- .github/workflows/build.yml | 16 +- Bukkit/build.gradle.kts | 1 - .../com/plotsquared/bukkit/BukkitCommand.java | 19 +- .../plotsquared/bukkit/BukkitPlatform.java | 238 ++- .../bukkit/entity/AgeableStats.java | 1 + .../bukkit/entity/ArmorStandStats.java | 1 + .../bukkit/entity/EntityBaseStats.java | 1 + .../bukkit/entity/EntityWrapper.java | 10 +- .../plotsquared/bukkit/entity/HorseStats.java | 1 + .../bukkit/entity/LivingEntityStats.java | 1 + .../entity/ReplicatingEntityWrapper.java | 41 +- .../bukkit/entity/TameableStats.java | 1 + .../bukkit/entity/TeleportEntityWrapper.java | 15 +- .../bukkit/generator/BlockStatePopulator.java | 10 +- .../generator/BukkitAugmentedGenerator.java | 5 +- .../bukkit/generator/BukkitPlotGenerator.java | 59 +- .../generator/DelegatePlotGenerator.java | 25 +- .../bukkit/inject/BackupModule.java | 5 +- .../bukkit/inject/BukkitModule.java | 24 +- .../bukkit/inject/PermissionModule.java | 4 +- .../bukkit/listener/BlockEventListener.java | 201 ++- .../bukkit/listener/ChunkListener.java | 21 +- .../bukkit/listener/EntityEventListener.java | 39 +- .../bukkit/listener/EntitySpawnListener.java | 35 +- .../bukkit/listener/ForceFieldListener.java | 17 +- .../bukkit/listener/PaperListener.java | 33 +- .../bukkit/listener/PaperListener113.java | 22 +- .../bukkit/listener/PlayerEventListener.java | 330 ++-- .../listener/ProjectileEventListener.java | 25 +- .../bukkit/listener/ServerListener.java | 10 +- .../bukkit/listener/SingleWorldListener.java | 4 +- .../bukkit/listener/WorldEvents.java | 7 +- .../bukkit/managers/BukkitWorldManager.java | 22 +- .../managers/HyperverseWorldManager.java | 19 +- .../managers/MultiverseWorldManager.java | 17 +- .../permissions/BukkitPermissionHandler.java | 34 +- .../permissions/VaultPermissionHandler.java | 44 +- .../bukkit/placeholder/MVdWPlaceholders.java | 33 +- .../bukkit/placeholder/PAPIPlaceholders.java | 28 +- .../placeholder/PlaceholderFormatter.java | 6 +- .../bukkit/player/BukkitOfflinePlayer.java | 35 +- .../bukkit/player/BukkitPlayer.java | 123 +- .../bukkit/player/BukkitPlayerManager.java | 31 +- .../bukkit/queue/BukkitChunkCoordinator.java | 61 +- .../bukkit/queue/BukkitQueueCoordinator.java | 52 +- .../plotsquared/bukkit/queue/GenChunk.java | 59 +- .../schematic/BukkitSchematicHandler.java | 10 +- .../bukkit/schematic/StateWrapper.java | 192 +- .../bukkit/util/BukkitChunkManager.java | 9 +- .../bukkit/util/BukkitEconHandler.java | 31 +- .../bukkit/util/BukkitEntityUtil.java | 104 +- .../bukkit/util/BukkitInventoryUtil.java | 80 +- .../bukkit/util/BukkitRegionManager.java | 96 +- .../bukkit/util/BukkitSetupUtils.java | 27 +- .../plotsquared/bukkit/util/BukkitUtil.java | 201 ++- .../plotsquared/bukkit/util/BukkitWorld.java | 13 +- .../plotsquared/bukkit/util/ContentMap.java | 7 +- .../bukkit/util/JavaVersionCheck.java | 1 + .../com/plotsquared/bukkit/util/SetGenCB.java | 5 +- .../bukkit/util/UpdateUtility.java | 15 +- .../util/task/BukkitPlotSquaredTask.java | 11 +- .../bukkit/util/task/BukkitTaskManager.java | 50 +- .../bukkit/util/task/PaperTimeConverter.java | 9 +- .../bukkit/util/task/SpigotTimeConverter.java | 9 +- .../bukkit/uuid/EssentialsUUIDService.java | 11 +- .../bukkit/uuid/LuckPermsUUIDService.java | 34 +- .../bukkit/uuid/OfflinePlayerUUIDService.java | 11 +- .../bukkit/uuid/PaperUUIDService.java | 8 +- .../bukkit/uuid/SQLiteUUIDService.java | 29 +- .../bukkit/uuid/SquirrelIdUUIDService.java | 8 +- Core/build.gradle.kts | 9 +- .../java/com/plotsquared/core/Platform.java | 31 - .../java/com/plotsquared/core/PlotAPI.java | 41 +- .../com/plotsquared/core/PlotPlatform.java | 74 +- .../com/plotsquared/core/PlotSquared.java | 375 ++-- .../com/plotsquared/core/PlotVersion.java | 39 +- .../com/plotsquared/core/backup/Backup.java | 9 +- .../core/backup/BackupManager.java | 12 +- .../core/backup/BackupProfile.java | 12 +- .../core/backup/NullBackupManager.java | 26 +- .../core/backup/NullBackupProfile.java | 19 +- .../core/backup/PlayerBackupProfile.java | 100 +- .../core/backup/SimpleBackupManager.java | 74 +- .../core/collection/ArrayUtil.java | 2 + .../core/collection/ByteArrayUtilities.java | 3 +- .../core/collection/FlatRandomCollection.java | 5 +- .../plotsquared/core/collection/QuadMap.java | 30 +- .../core/collection/RandomCollection.java | 2 + .../collection/SimpleRandomCollection.java | 4 +- .../com/plotsquared/core/command/Add.java | 73 +- .../com/plotsquared/core/command/Alias.java | 49 +- .../com/plotsquared/core/command/Area.java | 367 ++-- .../plotsquared/core/command/Argument.java | 39 +- .../com/plotsquared/core/command/Auto.java | 136 +- .../com/plotsquared/core/command/Backup.java | 127 +- .../com/plotsquared/core/command/Biome.java | 32 +- .../com/plotsquared/core/command/Buy.java | 40 +- .../com/plotsquared/core/command/Caps.java | 24 +- .../com/plotsquared/core/command/Chat.java | 12 +- .../com/plotsquared/core/command/Claim.java | 112 +- .../com/plotsquared/core/command/Clear.java | 54 +- .../com/plotsquared/core/command/Cluster.java | 282 +-- .../plotsquared/core/command/CmdConfirm.java | 18 +- .../plotsquared/core/command/CmdInstance.java | 2 + .../com/plotsquared/core/command/Command.java | 94 +- .../core/command/CommandCaller.java | 7 +- .../core/command/CommandCategory.java | 11 +- .../core/command/CommandDeclaration.java | 1 + .../com/plotsquared/core/command/Comment.java | 17 +- .../plotsquared/core/command/Condense.java | 26 +- .../com/plotsquared/core/command/Confirm.java | 10 +- .../plotsquared/core/command/Continue.java | 29 +- .../com/plotsquared/core/command/Copy.java | 18 +- .../core/command/CreateRoadSchematic.java | 26 +- .../core/command/DatabaseCommand.java | 75 +- .../com/plotsquared/core/command/Debug.java | 87 +- .../core/command/DebugAllowUnsafe.java | 11 +- .../plotsquared/core/command/DebugExec.java | 109 +- .../core/command/DebugImportWorlds.java | 26 +- .../core/command/DebugLoadTest.java | 12 +- .../plotsquared/core/command/DebugPaste.java | 43 +- .../core/command/DebugRoadRegen.java | 43 +- .../core/command/DebugSaveTest.java | 18 +- .../com/plotsquared/core/command/Delete.java | 37 +- .../com/plotsquared/core/command/Deny.java | 45 +- .../com/plotsquared/core/command/Desc.java | 41 +- .../com/plotsquared/core/command/Dislike.java | 20 +- .../com/plotsquared/core/command/Done.java | 38 +- .../plotsquared/core/command/Download.java | 70 +- .../plotsquared/core/command/FlagCommand.java | 263 +-- .../com/plotsquared/core/command/Grant.java | 78 +- .../com/plotsquared/core/command/Help.java | 51 +- .../plotsquared/core/command/HomeCommand.java | 40 +- .../com/plotsquared/core/command/Inbox.java | 58 +- .../com/plotsquared/core/command/Info.java | 26 +- .../com/plotsquared/core/command/Kick.java | 35 +- .../com/plotsquared/core/command/Leave.java | 26 +- .../com/plotsquared/core/command/Like.java | 92 +- .../com/plotsquared/core/command/ListCmd.java | 189 +- .../com/plotsquared/core/command/Load.java | 77 +- .../plotsquared/core/command/MainCommand.java | 47 +- .../com/plotsquared/core/command/Merge.java | 62 +- .../com/plotsquared/core/command/Middle.java | 12 +- .../com/plotsquared/core/command/Move.java | 32 +- .../com/plotsquared/core/command/Music.java | 48 +- .../com/plotsquared/core/command/Near.java | 18 +- .../com/plotsquared/core/command/Owner.java | 73 +- .../plotsquared/core/command/PluginCmd.java | 25 +- .../com/plotsquared/core/command/Purge.java | 32 +- .../com/plotsquared/core/command/Rate.java | 92 +- .../core/command/RegenAllRoads.java | 30 +- .../com/plotsquared/core/command/Reload.java | 27 +- .../com/plotsquared/core/command/Remove.java | 28 +- .../core/command/RequiredType.java | 5 +- .../com/plotsquared/core/command/Save.java | 24 +- .../core/command/SchematicCmd.java | 70 +- .../com/plotsquared/core/command/Set.java | 78 +- .../plotsquared/core/command/SetCommand.java | 15 +- .../com/plotsquared/core/command/SetHome.java | 17 +- .../com/plotsquared/core/command/Setup.java | 46 +- .../plotsquared/core/command/SubCommand.java | 12 +- .../com/plotsquared/core/command/Swap.java | 24 +- .../com/plotsquared/core/command/Target.java | 18 +- .../plotsquared/core/command/Template.java | 90 +- .../com/plotsquared/core/command/Toggle.java | 86 +- .../com/plotsquared/core/command/Trim.java | 51 +- .../com/plotsquared/core/command/Trust.java | 51 +- .../com/plotsquared/core/command/Unlink.java | 36 +- .../com/plotsquared/core/command/Visit.java | 163 +- .../plotsquared/core/command/WE_Anywhere.java | 13 +- .../core/components/ComponentCommand.java | 13 +- .../core/components/ComponentPreset.java | 20 +- .../components/ComponentPresetManager.java | 71 +- .../core/configuration/Config.java | 24 +- .../core/configuration/Configuration.java | 5 +- .../core/configuration/ConfigurationNode.java | 13 +- .../configuration/ConfigurationOptions.java | 2 + .../configuration/ConfigurationSection.java | 5 +- .../core/configuration/ConfigurationUtil.java | 73 +- .../InvalidConfigurationException.java | 1 + .../configuration/MemoryConfiguration.java | 23 +- .../MemoryConfigurationOptions.java | 7 +- .../core/configuration/MemorySection.java | 163 +- .../core/configuration/Settings.java | 617 ++++--- .../core/configuration/Storage.java | 18 +- .../core/configuration/caption/Caption.java | 4 +- .../configuration/caption/CaptionMap.java | 18 +- .../configuration/caption/CaptionUtility.java | 15 +- .../configuration/caption/ChatFormatter.java | 37 +- .../caption/DummyCaptionMap.java | 25 +- .../configuration/caption/LocaleHolder.java | 9 +- .../caption/LocalizedCaptionMap.java | 22 +- .../caption/NamespacedCaption.java | 6 +- .../caption/PerUserLocaleCaptionMap.java | 12 +- .../caption/PlotSquaredChatFormatter.java | 7 +- .../configuration/caption/StaticCaption.java | 8 +- .../core/configuration/caption/Templates.java | 24 +- .../caption/TranslatableCaption.java | 41 +- .../caption/load/CaptionLoader.java | 11 +- .../load/ClassLoaderCaptionProvider.java | 5 +- .../caption/load/DefaultCaptionProvider.java | 7 +- .../configuration/file/FileConfiguration.java | 14 +- .../file/FileConfigurationOptions.java | 8 +- .../configuration/file/YamlConfiguration.java | 13 +- .../file/YamlConfigurationOptions.java | 12 +- .../configuration/file/YamlConstructor.java | 9 +- .../configuration/file/YamlRepresenter.java | 17 +- .../ConfigurationSerializable.java | 1 + .../ConfigurationSerialization.java | 52 +- .../DelegateDeserialization.java | 2 + .../serialization/SerializableAs.java | 2 + .../plotsquared/core/database/AbstractDB.java | 5 +- .../com/plotsquared/core/database/DBFunc.java | 17 +- .../plotsquared/core/database/Database.java | 1 + .../com/plotsquared/core/database/MySQL.java | 26 +- .../plotsquared/core/database/SQLManager.java | 1566 ++++++++++------- .../com/plotsquared/core/database/SQLite.java | 22 +- .../plotsquared/core/database/StmtMod.java | 3 +- .../core/events/PlayerAutoPlotEvent.java | 30 +- .../core/events/PlayerClaimPlotEvent.java | 12 +- .../core/events/PlayerEnterPlotEvent.java | 1 + .../core/events/PlayerLeavePlotEvent.java | 1 + .../core/events/PlayerPlotDeniedEvent.java | 1 + .../core/events/PlayerPlotTrustedEvent.java | 1 + .../events/PlayerTeleportToPlotEvent.java | 7 +- .../core/events/PlotAutoMergeEvent.java | 15 +- .../core/events/PlotChangeOwnerEvent.java | 25 +- .../core/events/PlotClearEvent.java | 7 +- .../core/events/PlotDeleteEvent.java | 7 +- .../core/events/PlotDoneEvent.java | 7 +- .../plotsquared/core/events/PlotEvent.java | 5 +- .../core/events/PlotFlagAddEvent.java | 7 +- .../core/events/PlotFlagEvent.java | 2 + .../core/events/PlotFlagRemoveEvent.java | 7 +- .../core/events/PlotMergeEvent.java | 30 +- .../core/events/PlotRateEvent.java | 15 +- .../core/events/PlotUnlinkEvent.java | 40 +- .../com/plotsquared/core/events/Result.java | 4 +- .../core/events/TeleportCause.java | 4 +- .../core/generator/AugmentedUtils.java | 27 +- .../core/generator/ClassicPlotManager.java | 323 +++- .../ClassicPlotManagerComponent.java | 5 +- .../core/generator/ClassicPlotWorld.java | 96 +- .../core/generator/GeneratorWrapper.java | 7 +- .../core/generator/GridPlotManager.java | 2 + .../core/generator/GridPlotWorld.java | 12 +- .../plotsquared/core/generator/HybridGen.java | 58 +- .../core/generator/HybridPlotManager.java | 71 +- .../core/generator/HybridPlotWorld.java | 95 +- .../core/generator/HybridUtils.java | 80 +- .../generator/IndependentPlotGenerator.java | 4 +- .../core/generator/SingleWorldGenerator.java | 18 +- .../core/generator/SquarePlotManager.java | 45 +- .../core/generator/SquarePlotWorld.java | 25 +- .../annotations/BackgroundPipeline.java | 1 + .../core/inject/annotations/ConfigFile.java | 1 + .../core/inject/annotations/ConsoleActor.java | 1 + .../inject/annotations/DefaultGenerator.java | 1 + .../inject/annotations/ImpromptuPipeline.java | 1 + .../core/inject/annotations/WorldConfig.java | 1 + .../core/inject/annotations/WorldFile.java | 1 + .../ChunkCoordinatorBuilderFactory.java | 6 +- .../factory/ChunkCoordinatorFactory.java | 22 +- .../factory/HybridPlotWorldFactory.java | 17 +- .../factory/PlayerBackupProfileFactory.java | 4 +- .../factory/ProgressSubscriberFactory.java | 19 +- .../inject/modules/PlotSquaredModule.java | 3 +- .../core/listener/PlayerBlockEventType.java | 3 +- .../core/listener/PlotListener.java | 72 +- .../core/listener/ProcessedWEExtent.java | 51 +- .../plotsquared/core/listener/WEExtent.java | 25 +- .../core/listener/WESubscriber.java | 28 +- .../plotsquared/core/location/BlockLoc.java | 13 +- .../core/location/ChunkWrapper.java | 12 +- .../plotsquared/core/location/Direction.java | 18 +- .../plotsquared/core/location/Location.java | 131 +- .../plotsquared/core/location/PlotLoc.java | 22 +- .../com/plotsquared/core/location/World.java | 43 +- .../permissions/ConsolePermissionProfile.java | 11 +- .../permissions/NullPermissionProfile.java | 11 +- .../core/permissions/Permission.java | 4 +- .../core/permissions/PermissionHandler.java | 16 +- .../core/permissions/PermissionHolder.java | 24 +- .../core/permissions/PermissionProfile.java | 10 +- .../core/player/ConsolePlayer.java | 118 +- .../core/player/MetaDataAccess.java | 36 +- .../plotsquared/core/player/MetaDataKey.java | 25 +- .../core/player/OfflinePlotPlayer.java | 3 +- .../core/player/PersistentMetaDataAccess.java | 25 +- .../core/player/PlayerMetaDataKeys.java | 6 +- .../plotsquared/core/player/PlotPlayer.java | 187 +- .../core/player/TemporaryMetaDataAccess.java | 25 +- .../plotsquared/core/plot/BlockBucket.java | 49 +- .../java/com/plotsquared/core/plot/Plot.java | 784 +++++---- .../com/plotsquared/core/plot/PlotArea.java | 371 ++-- .../core/plot/PlotAreaTerrainType.java | 5 +- .../plotsquared/core/plot/PlotAreaType.java | 12 +- .../plotsquared/core/plot/PlotCluster.java | 59 +- .../core/plot/PlotCommentContainer.java | 17 +- .../plotsquared/core/plot/PlotHandler.java | 2 + .../com/plotsquared/core/plot/PlotId.java | 49 +- .../plotsquared/core/plot/PlotInventory.java | 30 +- .../plotsquared/core/plot/PlotItemStack.java | 14 +- .../plotsquared/core/plot/PlotManager.java | 65 +- .../core/plot/PlotModificationManager.java | 192 +- .../plotsquared/core/plot/PlotSettings.java | 26 +- .../plotsquared/core/plot/PlotWeather.java | 4 +- .../com/plotsquared/core/plot/PlotWorld.java | 20 +- .../com/plotsquared/core/plot/Rating.java | 5 +- .../core/plot/comment/CommentInbox.java | 14 +- .../core/plot/comment/CommentManager.java | 20 +- .../core/plot/comment/InboxOwner.java | 9 +- .../core/plot/comment/InboxPublic.java | 9 +- .../core/plot/comment/InboxReport.java | 12 +- .../core/plot/comment/PlotComment.java | 8 +- .../core/plot/expiration/ExpireManager.java | 120 +- .../core/plot/expiration/ExpiryTask.java | 18 +- .../core/plot/expiration/PlotAnalysis.java | 79 +- .../core/plot/flag/FlagContainer.java | 60 +- .../core/plot/flag/FlagParseException.java | 12 +- .../core/plot/flag/GlobalFlagContainer.java | 23 +- .../core/plot/flag/InternalFlag.java | 1 + .../plotsquared/core/plot/flag/PlotFlag.java | 40 +- .../flag/implementations/AnalysisFlag.java | 11 +- .../implementations/AnimalAttackFlag.java | 6 +- .../flag/implementations/AnimalCapFlag.java | 8 +- .../implementations/AnimalInteractFlag.java | 6 +- .../flag/implementations/BlockBurnFlag.java | 6 +- .../implementations/BlockIgnitionFlag.java | 6 +- .../flag/implementations/BlockedCmdsFlag.java | 16 +- .../plot/flag/implementations/BreakFlag.java | 5 +- .../plot/flag/implementations/ChatFlag.java | 6 +- .../flag/implementations/CoralDryFlag.java | 6 +- .../flag/implementations/DenyExitFlag.java | 6 +- .../implementations/DenyTeleportFlag.java | 46 +- .../flag/implementations/DescriptionFlag.java | 26 +- .../implementations/DeviceInteractFlag.java | 6 +- .../implementations/DisablePhysicsFlag.java | 6 +- .../plot/flag/implementations/DoneFlag.java | 20 +- .../implementations/DropProtectionFlag.java | 6 +- .../flag/implementations/EntityCapFlag.java | 8 +- .../flag/implementations/ExplosionFlag.java | 6 +- .../flag/implementations/FarewellFlag.java | 26 +- .../plot/flag/implementations/FeedFlag.java | 33 +- .../plot/flag/implementations/FlyFlag.java | 30 +- .../flag/implementations/ForcefieldFlag.java | 6 +- .../flag/implementations/GamemodeFlag.java | 30 +- .../flag/implementations/GrassGrowFlag.java | 6 +- .../flag/implementations/GreetingFlag.java | 26 +- .../implementations/GuestGamemodeFlag.java | 36 +- .../implementations/HangingBreakFlag.java | 6 +- .../implementations/HangingPlaceFlag.java | 6 +- .../plot/flag/implementations/HealFlag.java | 33 +- .../flag/implementations/HideInfoFlag.java | 6 +- .../implementations/HostileAttackFlag.java | 6 +- .../flag/implementations/HostileCapFlag.java | 10 +- .../implementations/HostileInteractFlag.java | 6 +- .../flag/implementations/IceFormFlag.java | 6 +- .../flag/implementations/IceMeltFlag.java | 6 +- .../flag/implementations/InstabreakFlag.java | 6 +- .../flag/implementations/InvincibleFlag.java | 6 +- .../flag/implementations/ItemDropFlag.java | 6 +- .../plot/flag/implementations/KeepFlag.java | 20 +- .../implementations/KeepInventoryFlag.java | 6 +- .../flag/implementations/KelpGrowFlag.java | 6 +- .../flag/implementations/LeafDecayFlag.java | 6 +- .../flag/implementations/LiquidFlowFlag.java | 32 +- .../flag/implementations/MiscBreakFlag.java | 6 +- .../flag/implementations/MiscCapFlag.java | 8 +- .../implementations/MiscInteractFlag.java | 6 +- .../flag/implementations/MiscPlaceFlag.java | 6 +- .../flag/implementations/MobBreakFlag.java | 6 +- .../plot/flag/implementations/MobCapFlag.java | 8 +- .../flag/implementations/MobPlaceFlag.java | 6 +- .../plot/flag/implementations/MusicFlag.java | 20 +- .../flag/implementations/MycelGrowFlag.java | 6 +- .../flag/implementations/NoWorldeditFlag.java | 6 +- .../flag/implementations/NotifyEnterFlag.java | 6 +- .../flag/implementations/NotifyLeaveFlag.java | 6 +- .../plot/flag/implementations/PlaceFlag.java | 5 +- .../implementations/PlayerInteractFlag.java | 6 +- .../PreventCreativeCopyFlag.java | 12 +- .../plot/flag/implementations/PriceFlag.java | 10 +- .../plot/flag/implementations/PveFlag.java | 6 +- .../plot/flag/implementations/PvpFlag.java | 6 +- .../flag/implementations/RedstoneFlag.java | 6 +- .../flag/implementations/ServerPlotFlag.java | 6 +- .../flag/implementations/SnowFormFlag.java | 6 +- .../flag/implementations/SnowMeltFlag.java | 6 +- .../flag/implementations/SoilDryFlag.java | 6 +- .../flag/implementations/TamedAttackFlag.java | 6 +- .../implementations/TamedInteractFlag.java | 6 +- .../plot/flag/implementations/TimeFlag.java | 10 +- .../plot/flag/implementations/TitlesFlag.java | 35 +- .../implementations/UntrustedVisitFlag.java | 6 +- .../plot/flag/implementations/UseFlag.java | 5 +- .../implementations/VehicleBreakFlag.java | 6 +- .../flag/implementations/VehicleCapFlag.java | 10 +- .../implementations/VehiclePlaceFlag.java | 6 +- .../flag/implementations/VehicleUseFlag.java | 6 +- .../implementations/VillagerInteractFlag.java | 10 +- .../flag/implementations/VineGrowFlag.java | 6 +- .../flag/implementations/WeatherFlag.java | 30 +- .../plot/flag/types/BlockTypeListFlag.java | 21 +- .../plot/flag/types/BlockTypeWrapper.java | 48 +- .../core/plot/flag/types/BooleanFlag.java | 22 +- .../core/plot/flag/types/DoubleFlag.java | 25 +- .../core/plot/flag/types/IntegerFlag.java | 25 +- .../core/plot/flag/types/ListFlag.java | 9 +- .../core/plot/flag/types/LongFlag.java | 32 +- .../flag/types/NonNegativeIntegerFlag.java | 8 +- .../core/plot/flag/types/NumberFlag.java | 24 +- .../core/plot/flag/types/TimedFlag.java | 39 +- .../core/plot/schematic/Schematic.java | 11 +- .../core/plot/schematic/StoredEntity.java | 9 +- .../plot/world/DefaultPlotAreaManager.java | 38 +- .../core/plot/world/PlotAreaManager.java | 43 +- .../core/plot/world/ScatteredPlotWorld.java | 21 +- .../core/plot/world/SinglePlot.java | 37 +- .../core/plot/world/SinglePlotArea.java | 86 +- .../plot/world/SinglePlotAreaManager.java | 77 +- .../core/plot/world/SinglePlotManager.java | 85 +- .../core/plot/world/StandardPlotWorld.java | 15 +- .../AreaBoundDelegateQueueCoordinator.java | 25 +- .../core/queue/BasicQueueCoordinator.java | 105 +- .../core/queue/ChunkCoordinator.java | 10 +- .../core/queue/ChunkCoordinatorBuilder.java | 45 +- .../core/queue/ChunkQueueCoordinator.java | 41 +- .../core/queue/DelegateQueueCoordinator.java | 98 +- .../core/queue/GlobalBlockQueue.java | 15 +- .../plotsquared/core/queue/LightingMode.java | 5 +- .../plotsquared/core/queue/LocalChunk.java | 27 +- ...ocationOffsetDelegateQueueCoordinator.java | 31 +- .../core/queue/QueueCoordinator.java | 63 +- .../plotsquared/core/queue/QueueProvider.java | 17 +- .../core/queue/ScopedQueueCoordinator.java | 37 +- .../subscriber/DefaultProgressSubscriber.java | 76 +- .../queue/subscriber/ProgressSubscriber.java | 6 +- .../core/services/plots/AutoService.java | 47 +- .../core/setup/CommonSetupSteps.java | 85 +- .../core/setup/PlotAreaBuilder.java | 1 + .../core/setup/SettingsNodeStep.java | 32 +- .../core/setup/SettingsNodesWrapper.java | 1 + .../plotsquared/core/setup/SetupProcess.java | 2 + .../com/plotsquared/core/setup/SetupStep.java | 12 +- .../core/synchronization/LockKey.java | 18 +- .../core/synchronization/LockRepository.java | 15 +- .../com/plotsquared/core/util/BlockUtil.java | 18 +- .../plotsquared/core/util/ChunkManager.java | 24 +- .../com/plotsquared/core/util/ChunkUtil.java | 5 +- .../plotsquared/core/util/EconHandler.java | 2 + .../com/plotsquared/core/util/EntityUtil.java | 7 +- .../core/util/EventDispatcher.java | 138 +- .../com/plotsquared/core/util/FileBytes.java | 1 + .../com/plotsquared/core/util/FileUtils.java | 9 +- .../com/plotsquared/core/util/HashUtil.java | 6 +- .../plotsquared/core/util/InventoryUtil.java | 7 +- .../com/plotsquared/core/util/ItemUtil.java | 11 +- .../core/util/LegacyConverter.java | 55 +- .../com/plotsquared/core/util/MainUtil.java | 6 +- .../com/plotsquared/core/util/MathMan.java | 43 +- .../plotsquared/core/util/PatternUtil.java | 14 +- .../plotsquared/core/util/Permissions.java | 18 +- .../core/util/PlatformWorldManager.java | 11 +- .../plotsquared/core/util/PlayerManager.java | 68 +- .../core/util/PlotAreaConverter.java | 9 +- .../plotsquared/core/util/PlotExpression.java | 16 +- .../plotsquared/core/util/PlotUploader.java | 36 +- .../core/util/ReflectionUtils.java | 12 +- .../plotsquared/core/util/RegionManager.java | 173 +- .../com/plotsquared/core/util/RegionUtil.java | 28 +- .../util/RuntimeExceptionRunnableVal.java | 3 +- .../core/util/SchematicHandler.java | 131 +- .../core/util/StringComparison.java | 4 + .../com/plotsquared/core/util/StringMan.java | 9 +- .../plotsquared/core/util/TabCompletions.java | 88 +- .../plotsquared/core/util/ThreadUtils.java | 2 +- .../com/plotsquared/core/util/TimeUtil.java | 9 +- .../com/plotsquared/core/util/WEManager.java | 12 +- .../com/plotsquared/core/util/WorldUtil.java | 90 +- .../core/util/entity/EntityCategory.java | 5 +- .../core/util/helpmenu/HelpMenu.java | 2 +- .../core/util/helpmenu/HelpObject.java | 20 +- .../core/util/helpmenu/HelpPage.java | 20 +- .../net/AbstractDelegateOutputStream.java | 17 +- .../plotsquared/core/util/net/HttpUtil.java | 3 +- .../core/util/placeholders/Placeholder.java | 9 +- .../placeholders/PlaceholderRegistry.java | 88 +- .../placeholders/PlotFlagPlaceholder.java | 13 +- .../placeholders/PlotSpecificPlaceholder.java | 14 +- .../core/util/query/AliasFilter.java | 8 +- .../util/query/AreaLimitedPlotProvider.java | 3 +- .../core/util/query/ExpiredPlotProvider.java | 3 +- .../core/util/query/FixedPlotProvider.java | 7 +- .../core/util/query/GlobalPlotProvider.java | 7 +- .../core/util/query/MemberFilter.java | 10 +- .../core/util/query/NullProvider.java | 3 +- .../core/util/query/OwnerFilter.java | 9 +- .../core/util/query/PaginatedPlotResult.java | 4 +- .../core/util/query/PlotFilter.java | 10 +- .../core/util/query/PlotProvider.java | 3 +- .../core/util/query/PlotQuery.java | 65 +- .../core/util/query/PredicateFilter.java | 7 +- .../core/util/query/SearchPlotProvider.java | 22 +- .../core/util/task/AutoClaimFinishTask.java | 17 +- .../core/util/task/ObjectTaskRunnable.java | 9 +- .../core/util/task/PlotSquaredTask.java | 31 +- .../core/util/task/RunnableVal.java | 5 +- .../core/util/task/RunnableVal2.java | 5 +- .../core/util/task/RunnableVal3.java | 5 +- .../core/util/task/TaskManager.java | 85 +- .../plotsquared/core/util/task/TaskTime.java | 57 +- .../core/util/task/YieldRunnable.java | 1 + .../core/uuid/CacheUUIDService.java | 22 +- .../plotsquared/core/uuid/ServiceError.java | 9 +- .../plotsquared/core/uuid/UUIDMapping.java | 10 +- .../plotsquared/core/uuid/UUIDPipeline.java | 95 +- .../plotsquared/core/uuid/UUIDService.java | 13 +- .../uuid/offline/OfflineModeUUIDService.java | 11 +- Core/src/main/resources/lang/messages_en.json | 82 - .../core/database/AbstractDBTest.java | 375 ++-- .../com/plotsquared/core/plot/FlagTest.java | 7 +- .../core/plot/PlotRangeIteratorTest.java | 1 + .../core/plot/PlotVersionTest.java | 4 +- build.gradle.kts | 10 +- 527 files changed, 13255 insertions(+), 7862 deletions(-) create mode 100644 .editorconfig delete mode 100644 Core/src/main/java/com/plotsquared/core/Platform.java diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 000000000..f72383ca5 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,1013 @@ +[*] +charset = utf-8 +end_of_line = lf +indent_size = 4 +indent_style = space +insert_final_newline = true +max_line_length = 130 +tab_width = 4 +ij_continuation_indent_size = 8 +ij_formatter_off_tag = @formatter:off +ij_formatter_on_tag = @formatter:on +ij_formatter_tags_enabled = false +ij_smart_tabs = false +ij_wrap_on_typing = true + +[*.conf] +indent_size = 2 +tab_width = 2 +ij_continuation_indent_size = 2 +ij_hocon_keep_blank_lines_before_right_brace = 2 +ij_hocon_keep_indents_on_empty_lines = false +ij_hocon_keep_line_breaks = true +ij_hocon_space_after_colon = true +ij_hocon_space_after_comma = true +ij_hocon_space_before_colon = true +ij_hocon_space_before_comma = false +ij_hocon_spaces_within_braces = false +ij_hocon_spaces_within_brackets = false +ij_hocon_spaces_within_method_call_parentheses = false + +[*.css] +ij_css_align_closing_brace_with_properties = false +ij_css_blank_lines_around_nested_selector = 1 +ij_css_blank_lines_between_blocks = 1 +ij_css_brace_placement = end_of_line +ij_css_enforce_quotes_on_format = false +ij_css_hex_color_long_format = false +ij_css_hex_color_lower_case = false +ij_css_hex_color_short_format = false +ij_css_hex_color_upper_case = false +ij_css_keep_blank_lines_in_code = 2 +ij_css_keep_indents_on_empty_lines = false +ij_css_keep_single_line_blocks = false +ij_css_properties_order = font, font-family, font-size, font-weight, font-style, font-variant, font-size-adjust, font-stretch, line-height, position, z-index, top, right, bottom, left, display, visibility, float, clear, overflow, overflow-x, overflow-y, clip, zoom, align-content, align-items, align-self, flex, flex-flow, flex-basis, flex-direction, flex-grow, flex-shrink, flex-wrap, justify-content, order, box-sizing, width, min-width, max-width, height, min-height, max-height, margin, margin-top, margin-right, margin-bottom, margin-left, padding, padding-top, padding-right, padding-bottom, padding-left, table-layout, empty-cells, caption-side, border-spacing, border-collapse, list-style, list-style-position, list-style-type, list-style-image, content, quotes, counter-reset, counter-increment, resize, cursor, user-select, nav-index, nav-up, nav-right, nav-down, nav-left, transition, transition-delay, transition-timing-function, transition-duration, transition-property, transform, transform-origin, animation, animation-name, animation-duration, animation-play-state, animation-timing-function, animation-delay, animation-iteration-count, animation-direction, text-align, text-align-last, vertical-align, white-space, text-decoration, text-emphasis, text-emphasis-color, text-emphasis-style, text-emphasis-position, text-indent, text-justify, letter-spacing, word-spacing, text-outline, text-transform, text-wrap, text-overflow, text-overflow-ellipsis, text-overflow-mode, word-wrap, word-break, tab-size, hyphens, pointer-events, opacity, color, border, border-width, border-style, border-color, border-top, border-top-width, border-top-style, border-top-color, border-right, border-right-width, border-right-style, border-right-color, border-bottom, border-bottom-width, border-bottom-style, border-bottom-color, border-left, border-left-width, border-left-style, border-left-color, border-radius, border-top-left-radius, border-top-right-radius, border-bottom-right-radius, border-bottom-left-radius, border-image, border-image-source, border-image-slice, border-image-width, border-image-outset, border-image-repeat, outline, outline-width, outline-style, outline-color, outline-offset, background, background-color, background-image, background-repeat, background-attachment, background-position, background-position-x, background-position-y, background-clip, background-origin, background-size, box-decoration-break, box-shadow, text-shadow +ij_css_space_after_colon = true +ij_css_space_before_opening_brace = true +ij_css_use_double_quotes = true +ij_css_value_alignment = do_not_align + +[*.java] +ij_java_align_consecutive_assignments = false +ij_java_align_consecutive_variable_declarations = false +ij_java_align_group_field_declarations = false +ij_java_align_multiline_annotation_parameters = false +ij_java_align_multiline_array_initializer_expression = false +ij_java_align_multiline_assignment = false +ij_java_align_multiline_binary_operation = false +ij_java_align_multiline_chained_methods = false +ij_java_align_multiline_extends_list = false +ij_java_align_multiline_for = true +ij_java_align_multiline_method_parentheses = false +ij_java_align_multiline_parameters = true +ij_java_align_multiline_parameters_in_calls = false +ij_java_align_multiline_parenthesized_expression = false +ij_java_align_multiline_records = true +ij_java_align_multiline_resources = true +ij_java_align_multiline_ternary_operation = false +ij_java_align_multiline_text_blocks = false +ij_java_align_multiline_throws_list = false +ij_java_align_subsequent_simple_methods = false +ij_java_align_throws_keyword = false +ij_java_annotation_parameter_wrap = off +ij_java_array_initializer_new_line_after_left_brace = false +ij_java_array_initializer_right_brace_on_new_line = false +ij_java_array_initializer_wrap = off +ij_java_assert_statement_colon_on_next_line = false +ij_java_assert_statement_wrap = off +ij_java_assignment_wrap = off +ij_java_binary_operation_sign_on_next_line = false +ij_java_binary_operation_wrap = off +ij_java_blank_lines_after_anonymous_class_header = 0 +ij_java_blank_lines_after_class_header = 1 +ij_java_blank_lines_after_imports = 1 +ij_java_blank_lines_after_package = 1 +ij_java_blank_lines_around_class = 1 +ij_java_blank_lines_around_field = 0 +ij_java_blank_lines_around_field_in_interface = 0 +ij_java_blank_lines_around_initializer = 1 +ij_java_blank_lines_around_method = 1 +ij_java_blank_lines_around_method_in_interface = 1 +ij_java_blank_lines_before_class_end = 1 +ij_java_blank_lines_before_imports = 1 +ij_java_blank_lines_before_method_body = 0 +ij_java_blank_lines_before_package = 0 +ij_java_block_brace_style = end_of_line +ij_java_block_comment_at_first_column = true +ij_java_call_parameters_new_line_after_left_paren = true +ij_java_call_parameters_right_paren_on_new_line = true +ij_java_call_parameters_wrap = on_every_item +ij_java_case_statement_on_separate_line = true +ij_java_catch_on_new_line = false +ij_java_class_annotation_wrap = split_into_lines +ij_java_class_brace_style = end_of_line +ij_java_class_count_to_use_import_on_demand = 100000 +ij_java_class_names_in_javadoc = 1 +ij_java_do_not_indent_top_level_class_members = false +ij_java_do_not_wrap_after_single_annotation = false +ij_java_do_while_brace_force = always +ij_java_doc_add_blank_line_after_description = true +ij_java_doc_add_blank_line_after_param_comments = false +ij_java_doc_add_blank_line_after_return = false +ij_java_doc_add_p_tag_on_empty_lines = true +ij_java_doc_align_exception_comments = true +ij_java_doc_align_param_comments = true +ij_java_doc_do_not_wrap_if_one_line = false +ij_java_doc_enable_formatting = true +ij_java_doc_enable_leading_asterisks = true +ij_java_doc_indent_on_continuation = true +ij_java_doc_keep_empty_lines = true +ij_java_doc_keep_empty_parameter_tag = true +ij_java_doc_keep_empty_return_tag = true +ij_java_doc_keep_empty_throws_tag = true +ij_java_doc_keep_invalid_tags = false +ij_java_doc_param_description_on_new_line = false +ij_java_doc_preserve_line_breaks = false +ij_java_doc_use_throws_not_exception_tag = true +ij_java_else_on_new_line = false +ij_java_enum_constants_wrap = split_into_lines +ij_java_extends_keyword_wrap = off +ij_java_extends_list_wrap = normal +ij_java_field_annotation_wrap = split_into_lines +ij_java_finally_on_new_line = false +ij_java_for_brace_force = always +ij_java_for_statement_new_line_after_left_paren = false +ij_java_for_statement_right_paren_on_new_line = false +ij_java_for_statement_wrap = off +ij_java_generate_final_locals = true +ij_java_generate_final_parameters = true +ij_java_if_brace_force = always +ij_java_imports_layout = *, |, javax.**, java.**, |, $* +ij_java_indent_case_from_switch = true +ij_java_insert_inner_class_imports = false +ij_java_insert_override_annotation = true +ij_java_keep_blank_lines_before_right_brace = 2 +ij_java_keep_blank_lines_between_package_declaration_and_header = 2 +ij_java_keep_blank_lines_in_code = 2 +ij_java_keep_blank_lines_in_declarations = 2 +ij_java_keep_control_statement_in_one_line = true +ij_java_keep_first_column_comment = true +ij_java_keep_indents_on_empty_lines = false +ij_java_keep_line_breaks = true +ij_java_keep_multiple_expressions_in_one_line = false +ij_java_keep_simple_blocks_in_one_line = false +ij_java_keep_simple_classes_in_one_line = false +ij_java_keep_simple_lambdas_in_one_line = false +ij_java_keep_simple_methods_in_one_line = false +ij_java_label_indent_absolute = false +ij_java_label_indent_size = 0 +ij_java_lambda_brace_style = end_of_line +ij_java_layout_static_imports_separately = true +ij_java_line_comment_add_space = false +ij_java_line_comment_at_first_column = true +ij_java_method_annotation_wrap = split_into_lines +ij_java_method_brace_style = end_of_line +ij_java_method_call_chain_wrap = on_every_item +ij_java_method_parameters_new_line_after_left_paren = true +ij_java_method_parameters_right_paren_on_new_line = true +ij_java_method_parameters_wrap = on_every_item +ij_java_modifier_list_wrap = false +ij_java_names_count_to_use_import_on_demand = 100000 +ij_java_new_line_after_lparen_in_record_header = false +ij_java_parameter_annotation_wrap = off +ij_java_parentheses_expression_new_line_after_left_paren = false +ij_java_parentheses_expression_right_paren_on_new_line = false +ij_java_place_assignment_sign_on_next_line = false +ij_java_prefer_longer_names = false +ij_java_prefer_parameters_wrap = true +ij_java_record_components_wrap = normal +ij_java_repeat_synchronized = true +ij_java_replace_instanceof_and_cast = false +ij_java_replace_null_check = true +ij_java_replace_sum_lambda_with_method_ref = true +ij_java_resource_list_new_line_after_left_paren = false +ij_java_resource_list_right_paren_on_new_line = false +ij_java_resource_list_wrap = off +ij_java_rparen_on_new_line_in_record_header = false +ij_java_space_after_closing_angle_bracket_in_type_argument = false +ij_java_space_after_colon = true +ij_java_space_after_comma = true +ij_java_space_after_comma_in_type_arguments = true +ij_java_space_after_for_semicolon = true +ij_java_space_after_quest = true +ij_java_space_after_type_cast = true +ij_java_space_before_annotation_array_initializer_left_brace = false +ij_java_space_before_annotation_parameter_list = false +ij_java_space_before_array_initializer_left_brace = false +ij_java_space_before_catch_keyword = true +ij_java_space_before_catch_left_brace = true +ij_java_space_before_catch_parentheses = true +ij_java_space_before_class_left_brace = true +ij_java_space_before_colon = true +ij_java_space_before_colon_in_foreach = true +ij_java_space_before_comma = false +ij_java_space_before_do_left_brace = true +ij_java_space_before_else_keyword = true +ij_java_space_before_else_left_brace = true +ij_java_space_before_finally_keyword = true +ij_java_space_before_finally_left_brace = true +ij_java_space_before_for_left_brace = true +ij_java_space_before_for_parentheses = true +ij_java_space_before_for_semicolon = false +ij_java_space_before_if_left_brace = true +ij_java_space_before_if_parentheses = true +ij_java_space_before_method_call_parentheses = false +ij_java_space_before_method_left_brace = true +ij_java_space_before_method_parentheses = false +ij_java_space_before_opening_angle_bracket_in_type_parameter = false +ij_java_space_before_quest = true +ij_java_space_before_switch_left_brace = true +ij_java_space_before_switch_parentheses = true +ij_java_space_before_synchronized_left_brace = true +ij_java_space_before_synchronized_parentheses = true +ij_java_space_before_try_left_brace = true +ij_java_space_before_try_parentheses = true +ij_java_space_before_type_parameter_list = false +ij_java_space_before_while_keyword = true +ij_java_space_before_while_left_brace = true +ij_java_space_before_while_parentheses = true +ij_java_space_inside_one_line_enum_braces = false +ij_java_space_within_empty_array_initializer_braces = false +ij_java_space_within_empty_method_call_parentheses = false +ij_java_space_within_empty_method_parentheses = false +ij_java_spaces_around_additive_operators = true +ij_java_spaces_around_assignment_operators = true +ij_java_spaces_around_bitwise_operators = true +ij_java_spaces_around_equality_operators = true +ij_java_spaces_around_lambda_arrow = true +ij_java_spaces_around_logical_operators = true +ij_java_spaces_around_method_ref_dbl_colon = false +ij_java_spaces_around_multiplicative_operators = true +ij_java_spaces_around_relational_operators = true +ij_java_spaces_around_shift_operators = true +ij_java_spaces_around_type_bounds_in_type_parameters = true +ij_java_spaces_around_unary_operator = false +ij_java_spaces_within_angle_brackets = false +ij_java_spaces_within_annotation_parentheses = false +ij_java_spaces_within_array_initializer_braces = false +ij_java_spaces_within_braces = false +ij_java_spaces_within_brackets = false +ij_java_spaces_within_cast_parentheses = false +ij_java_spaces_within_catch_parentheses = false +ij_java_spaces_within_for_parentheses = false +ij_java_spaces_within_if_parentheses = false +ij_java_spaces_within_method_call_parentheses = false +ij_java_spaces_within_method_parentheses = false +ij_java_spaces_within_parentheses = false +ij_java_spaces_within_switch_parentheses = false +ij_java_spaces_within_synchronized_parentheses = false +ij_java_spaces_within_try_parentheses = false +ij_java_spaces_within_while_parentheses = false +ij_java_special_else_if_treatment = true +ij_java_subclass_name_suffix = Impl +ij_java_ternary_operation_signs_on_next_line = true +ij_java_ternary_operation_wrap = on_every_item +ij_java_test_name_suffix = Test +ij_java_throws_keyword_wrap = off +ij_java_throws_list_wrap = normal +ij_java_use_external_annotations = false +ij_java_use_fq_class_names = false +ij_java_use_relative_indents = false +ij_java_use_single_class_imports = true +ij_java_variable_annotation_wrap = off +ij_java_visibility = public +ij_java_while_brace_force = always +ij_java_while_on_new_line = false +ij_java_wrap_comments = false +ij_java_wrap_first_method_in_call_chain = true +ij_java_wrap_long_lines = false + +[*.nbtt] +max_line_length = 150 +ij_continuation_indent_size = 4 +ij_nbtt_keep_indents_on_empty_lines = false +ij_nbtt_space_after_colon = true +ij_nbtt_space_after_comma = true +ij_nbtt_space_before_colon = true +ij_nbtt_space_before_comma = false +ij_nbtt_spaces_within_brackets = false +ij_nbtt_spaces_within_parentheses = false + +[*.properties] +ij_properties_align_group_field_declarations = false +ij_properties_keep_blank_lines = false +ij_properties_key_value_delimiter = equals +ij_properties_spaces_around_key_value_delimiter = false + +[*.sass] +indent_size = 2 +ij_sass_align_closing_brace_with_properties = false +ij_sass_blank_lines_around_nested_selector = 1 +ij_sass_blank_lines_between_blocks = 1 +ij_sass_brace_placement = 0 +ij_sass_enforce_quotes_on_format = false +ij_sass_hex_color_long_format = false +ij_sass_hex_color_lower_case = false +ij_sass_hex_color_short_format = false +ij_sass_hex_color_upper_case = false +ij_sass_keep_blank_lines_in_code = 2 +ij_sass_keep_indents_on_empty_lines = false +ij_sass_keep_single_line_blocks = false +ij_sass_properties_order = font, font-family, font-size, font-weight, font-style, font-variant, font-size-adjust, font-stretch, line-height, position, z-index, top, right, bottom, left, display, visibility, float, clear, overflow, overflow-x, overflow-y, clip, zoom, align-content, align-items, align-self, flex, flex-flow, flex-basis, flex-direction, flex-grow, flex-shrink, flex-wrap, justify-content, order, box-sizing, width, min-width, max-width, height, min-height, max-height, margin, margin-top, margin-right, margin-bottom, margin-left, padding, padding-top, padding-right, padding-bottom, padding-left, table-layout, empty-cells, caption-side, border-spacing, border-collapse, list-style, list-style-position, list-style-type, list-style-image, content, quotes, counter-reset, counter-increment, resize, cursor, user-select, nav-index, nav-up, nav-right, nav-down, nav-left, transition, transition-delay, transition-timing-function, transition-duration, transition-property, transform, transform-origin, animation, animation-name, animation-duration, animation-play-state, animation-timing-function, animation-delay, animation-iteration-count, animation-direction, text-align, text-align-last, vertical-align, white-space, text-decoration, text-emphasis, text-emphasis-color, text-emphasis-style, text-emphasis-position, text-indent, text-justify, letter-spacing, word-spacing, text-outline, text-transform, text-wrap, text-overflow, text-overflow-ellipsis, text-overflow-mode, word-wrap, word-break, tab-size, hyphens, pointer-events, opacity, color, border, border-width, border-style, border-color, border-top, border-top-width, border-top-style, border-top-color, border-right, border-right-width, border-right-style, border-right-color, border-bottom, border-bottom-width, border-bottom-style, border-bottom-color, border-left, border-left-width, border-left-style, border-left-color, border-radius, border-top-left-radius, border-top-right-radius, border-bottom-right-radius, border-bottom-left-radius, border-image, border-image-source, border-image-slice, border-image-width, border-image-outset, border-image-repeat, outline, outline-width, outline-style, outline-color, outline-offset, background, background-color, background-image, background-repeat, background-attachment, background-position, background-position-x, background-position-y, background-clip, background-origin, background-size, box-decoration-break, box-shadow, text-shadow +ij_sass_space_after_colon = true +ij_sass_space_before_opening_brace = true +ij_sass_use_double_quotes = true +ij_sass_value_alignment = 0 + +[*.scss] +indent_size = 2 +ij_scss_align_closing_brace_with_properties = false +ij_scss_blank_lines_around_nested_selector = 1 +ij_scss_blank_lines_between_blocks = 1 +ij_scss_brace_placement = 0 +ij_scss_enforce_quotes_on_format = false +ij_scss_hex_color_long_format = false +ij_scss_hex_color_lower_case = false +ij_scss_hex_color_short_format = false +ij_scss_hex_color_upper_case = false +ij_scss_keep_blank_lines_in_code = 2 +ij_scss_keep_indents_on_empty_lines = false +ij_scss_keep_single_line_blocks = false +ij_scss_properties_order = font, font-family, font-size, font-weight, font-style, font-variant, font-size-adjust, font-stretch, line-height, position, z-index, top, right, bottom, left, display, visibility, float, clear, overflow, overflow-x, overflow-y, clip, zoom, align-content, align-items, align-self, flex, flex-flow, flex-basis, flex-direction, flex-grow, flex-shrink, flex-wrap, justify-content, order, box-sizing, width, min-width, max-width, height, min-height, max-height, margin, margin-top, margin-right, margin-bottom, margin-left, padding, padding-top, padding-right, padding-bottom, padding-left, table-layout, empty-cells, caption-side, border-spacing, border-collapse, list-style, list-style-position, list-style-type, list-style-image, content, quotes, counter-reset, counter-increment, resize, cursor, user-select, nav-index, nav-up, nav-right, nav-down, nav-left, transition, transition-delay, transition-timing-function, transition-duration, transition-property, transform, transform-origin, animation, animation-name, animation-duration, animation-play-state, animation-timing-function, animation-delay, animation-iteration-count, animation-direction, text-align, text-align-last, vertical-align, white-space, text-decoration, text-emphasis, text-emphasis-color, text-emphasis-style, text-emphasis-position, text-indent, text-justify, letter-spacing, word-spacing, text-outline, text-transform, text-wrap, text-overflow, text-overflow-ellipsis, text-overflow-mode, word-wrap, word-break, tab-size, hyphens, pointer-events, opacity, color, border, border-width, border-style, border-color, border-top, border-top-width, border-top-style, border-top-color, border-right, border-right-width, border-right-style, border-right-color, border-bottom, border-bottom-width, border-bottom-style, border-bottom-color, border-left, border-left-width, border-left-style, border-left-color, border-radius, border-top-left-radius, border-top-right-radius, border-bottom-right-radius, border-bottom-left-radius, border-image, border-image-source, border-image-slice, border-image-width, border-image-outset, border-image-repeat, outline, outline-width, outline-style, outline-color, outline-offset, background, background-color, background-image, background-repeat, background-attachment, background-position, background-position-x, background-position-y, background-clip, background-origin, background-size, box-decoration-break, box-shadow, text-shadow +ij_scss_space_after_colon = true +ij_scss_space_before_opening_brace = true +ij_scss_use_double_quotes = true +ij_scss_value_alignment = 0 + +[.editorconfig] +ij_editorconfig_align_group_field_declarations = false +ij_editorconfig_space_after_colon = false +ij_editorconfig_space_after_comma = true +ij_editorconfig_space_before_colon = false +ij_editorconfig_space_before_comma = false +ij_editorconfig_spaces_around_assignment_operators = true + +[{*.ant, *.fxml, *.jhm, *.jnlp, *.jrxml, *.pom, *.rng, *.tld, *.wsdl, *.xml, *.xsd, *.xsl, *.xslt, *.xul}] +ij_xml_align_attributes = true +ij_xml_align_text = false +ij_xml_attribute_wrap = normal +ij_xml_block_comment_at_first_column = true +ij_xml_keep_blank_lines = 2 +ij_xml_keep_indents_on_empty_lines = false +ij_xml_keep_line_breaks = true +ij_xml_keep_line_breaks_in_text = true +ij_xml_keep_whitespaces = false +ij_xml_keep_whitespaces_around_cdata = preserve +ij_xml_keep_whitespaces_inside_cdata = false +ij_xml_line_comment_at_first_column = true +ij_xml_space_after_tag_name = false +ij_xml_space_around_equals_in_attribute = false +ij_xml_space_inside_empty_tag = false +ij_xml_text_wrap = normal + +[{*.ats, *.ts}] +ij_continuation_indent_size = 4 +ij_typescript_align_imports = false +ij_typescript_align_multiline_array_initializer_expression = false +ij_typescript_align_multiline_binary_operation = false +ij_typescript_align_multiline_chained_methods = false +ij_typescript_align_multiline_extends_list = false +ij_typescript_align_multiline_for = true +ij_typescript_align_multiline_parameters = true +ij_typescript_align_multiline_parameters_in_calls = false +ij_typescript_align_multiline_ternary_operation = false +ij_typescript_align_object_properties = 0 +ij_typescript_align_union_types = false +ij_typescript_align_var_statements = 0 +ij_typescript_array_initializer_new_line_after_left_brace = false +ij_typescript_array_initializer_right_brace_on_new_line = false +ij_typescript_array_initializer_wrap = off +ij_typescript_assignment_wrap = off +ij_typescript_binary_operation_sign_on_next_line = false +ij_typescript_binary_operation_wrap = off +ij_typescript_blacklist_imports = rxjs/Rx, node_modules/**, **/node_modules/**, @angular/material, @angular/material/typings/** +ij_typescript_blank_lines_after_imports = 1 +ij_typescript_blank_lines_around_class = 1 +ij_typescript_blank_lines_around_field = 0 +ij_typescript_blank_lines_around_field_in_interface = 0 +ij_typescript_blank_lines_around_function = 1 +ij_typescript_blank_lines_around_method = 1 +ij_typescript_blank_lines_around_method_in_interface = 1 +ij_typescript_block_brace_style = end_of_line +ij_typescript_call_parameters_new_line_after_left_paren = false +ij_typescript_call_parameters_right_paren_on_new_line = false +ij_typescript_call_parameters_wrap = off +ij_typescript_catch_on_new_line = false +ij_typescript_chained_call_dot_on_new_line = true +ij_typescript_class_brace_style = end_of_line +ij_typescript_comma_on_new_line = false +ij_typescript_do_while_brace_force = never +ij_typescript_else_on_new_line = false +ij_typescript_enforce_trailing_comma = keep +ij_typescript_extends_keyword_wrap = off +ij_typescript_extends_list_wrap = off +ij_typescript_field_prefix = _ +ij_typescript_file_name_style = relaxed +ij_typescript_finally_on_new_line = false +ij_typescript_for_brace_force = never +ij_typescript_for_statement_new_line_after_left_paren = false +ij_typescript_for_statement_right_paren_on_new_line = false +ij_typescript_for_statement_wrap = off +ij_typescript_force_quote_style = false +ij_typescript_force_semicolon_style = false +ij_typescript_function_expression_brace_style = end_of_line +ij_typescript_if_brace_force = never +ij_typescript_import_merge_members = global +ij_typescript_import_prefer_absolute_path = global +ij_typescript_import_sort_members = true +ij_typescript_import_sort_module_name = false +ij_typescript_import_use_node_resolution = true +ij_typescript_imports_wrap = on_every_item +ij_typescript_indent_case_from_switch = true +ij_typescript_indent_chained_calls = true +ij_typescript_indent_package_children = 0 +ij_typescript_jsdoc_include_types = false +ij_typescript_jsx_attribute_value = braces +ij_typescript_keep_blank_lines_in_code = 2 +ij_typescript_keep_first_column_comment = true +ij_typescript_keep_indents_on_empty_lines = false +ij_typescript_keep_line_breaks = true +ij_typescript_keep_simple_blocks_in_one_line = false +ij_typescript_keep_simple_methods_in_one_line = false +ij_typescript_line_comment_add_space = true +ij_typescript_line_comment_at_first_column = false +ij_typescript_method_brace_style = end_of_line +ij_typescript_method_call_chain_wrap = off +ij_typescript_method_parameters_new_line_after_left_paren = false +ij_typescript_method_parameters_right_paren_on_new_line = false +ij_typescript_method_parameters_wrap = off +ij_typescript_object_literal_wrap = on_every_item +ij_typescript_parentheses_expression_new_line_after_left_paren = false +ij_typescript_parentheses_expression_right_paren_on_new_line = false +ij_typescript_place_assignment_sign_on_next_line = false +ij_typescript_prefer_as_type_cast = false +ij_typescript_prefer_explicit_types_function_expression_returns = false +ij_typescript_prefer_explicit_types_function_returns = false +ij_typescript_prefer_explicit_types_vars_fields = false +ij_typescript_prefer_parameters_wrap = false +ij_typescript_reformat_c_style_comments = false +ij_typescript_space_after_colon = true +ij_typescript_space_after_comma = true +ij_typescript_space_after_dots_in_rest_parameter = false +ij_typescript_space_after_generator_mult = true +ij_typescript_space_after_property_colon = true +ij_typescript_space_after_quest = true +ij_typescript_space_after_type_colon = true +ij_typescript_space_after_unary_not = false +ij_typescript_space_before_async_arrow_lparen = true +ij_typescript_space_before_catch_keyword = true +ij_typescript_space_before_catch_left_brace = true +ij_typescript_space_before_catch_parentheses = true +ij_typescript_space_before_class_lbrace = true +ij_typescript_space_before_class_left_brace = true +ij_typescript_space_before_colon = true +ij_typescript_space_before_comma = false +ij_typescript_space_before_do_left_brace = true +ij_typescript_space_before_else_keyword = true +ij_typescript_space_before_else_left_brace = true +ij_typescript_space_before_finally_keyword = true +ij_typescript_space_before_finally_left_brace = true +ij_typescript_space_before_for_left_brace = true +ij_typescript_space_before_for_parentheses = true +ij_typescript_space_before_for_semicolon = false +ij_typescript_space_before_function_left_parenth = true +ij_typescript_space_before_generator_mult = false +ij_typescript_space_before_if_left_brace = true +ij_typescript_space_before_if_parentheses = true +ij_typescript_space_before_method_call_parentheses = false +ij_typescript_space_before_method_left_brace = true +ij_typescript_space_before_method_parentheses = false +ij_typescript_space_before_property_colon = false +ij_typescript_space_before_quest = true +ij_typescript_space_before_switch_left_brace = true +ij_typescript_space_before_switch_parentheses = true +ij_typescript_space_before_try_left_brace = true +ij_typescript_space_before_type_colon = false +ij_typescript_space_before_unary_not = false +ij_typescript_space_before_while_keyword = true +ij_typescript_space_before_while_left_brace = true +ij_typescript_space_before_while_parentheses = true +ij_typescript_spaces_around_additive_operators = true +ij_typescript_spaces_around_arrow_function_operator = true +ij_typescript_spaces_around_assignment_operators = true +ij_typescript_spaces_around_bitwise_operators = true +ij_typescript_spaces_around_equality_operators = true +ij_typescript_spaces_around_logical_operators = true +ij_typescript_spaces_around_multiplicative_operators = true +ij_typescript_spaces_around_relational_operators = true +ij_typescript_spaces_around_shift_operators = true +ij_typescript_spaces_around_unary_operator = false +ij_typescript_spaces_within_array_initializer_brackets = false +ij_typescript_spaces_within_brackets = false +ij_typescript_spaces_within_catch_parentheses = false +ij_typescript_spaces_within_for_parentheses = false +ij_typescript_spaces_within_if_parentheses = false +ij_typescript_spaces_within_imports = false +ij_typescript_spaces_within_interpolation_expressions = false +ij_typescript_spaces_within_method_call_parentheses = false +ij_typescript_spaces_within_method_parentheses = false +ij_typescript_spaces_within_object_literal_braces = false +ij_typescript_spaces_within_object_type_braces = true +ij_typescript_spaces_within_parentheses = false +ij_typescript_spaces_within_switch_parentheses = false +ij_typescript_spaces_within_type_assertion = false +ij_typescript_spaces_within_union_types = true +ij_typescript_spaces_within_while_parentheses = false +ij_typescript_special_else_if_treatment = true +ij_typescript_ternary_operation_signs_on_next_line = false +ij_typescript_ternary_operation_wrap = off +ij_typescript_union_types_wrap = on_every_item +ij_typescript_use_chained_calls_group_indents = false +ij_typescript_use_double_quotes = true +ij_typescript_use_explicit_js_extension = global +ij_typescript_use_path_mapping = always +ij_typescript_use_public_modifier = false +ij_typescript_use_semicolon_after_statement = true +ij_typescript_var_declaration_wrap = normal +ij_typescript_while_brace_force = never +ij_typescript_while_on_new_line = false +ij_typescript_wrap_comments = false + +[{*.bash, *.sh, *.zsh}] +indent_size = 2 +tab_width = 2 +ij_shell_binary_ops_start_line = false +ij_shell_keep_column_alignment_padding = false +ij_shell_minify_program = false +ij_shell_redirect_followed_by_space = false +ij_shell_switch_cases_indented = false + +[{*.cjs, *.js}] +ij_continuation_indent_size = 4 +ij_javascript_align_imports = false +ij_javascript_align_multiline_array_initializer_expression = false +ij_javascript_align_multiline_binary_operation = false +ij_javascript_align_multiline_chained_methods = false +ij_javascript_align_multiline_extends_list = false +ij_javascript_align_multiline_for = true +ij_javascript_align_multiline_parameters = true +ij_javascript_align_multiline_parameters_in_calls = false +ij_javascript_align_multiline_ternary_operation = false +ij_javascript_align_object_properties = 0 +ij_javascript_align_union_types = false +ij_javascript_align_var_statements = 0 +ij_javascript_array_initializer_new_line_after_left_brace = false +ij_javascript_array_initializer_right_brace_on_new_line = false +ij_javascript_array_initializer_wrap = off +ij_javascript_assignment_wrap = off +ij_javascript_binary_operation_sign_on_next_line = false +ij_javascript_binary_operation_wrap = off +ij_javascript_blacklist_imports = rxjs/Rx, node_modules/**, **/node_modules/**, @angular/material, @angular/material/typings/** +ij_javascript_blank_lines_after_imports = 1 +ij_javascript_blank_lines_around_class = 1 +ij_javascript_blank_lines_around_field = 0 +ij_javascript_blank_lines_around_function = 1 +ij_javascript_blank_lines_around_method = 1 +ij_javascript_block_brace_style = end_of_line +ij_javascript_call_parameters_new_line_after_left_paren = false +ij_javascript_call_parameters_right_paren_on_new_line = false +ij_javascript_call_parameters_wrap = off +ij_javascript_catch_on_new_line = false +ij_javascript_chained_call_dot_on_new_line = true +ij_javascript_class_brace_style = end_of_line +ij_javascript_comma_on_new_line = false +ij_javascript_do_while_brace_force = never +ij_javascript_else_on_new_line = false +ij_javascript_enforce_trailing_comma = keep +ij_javascript_extends_keyword_wrap = off +ij_javascript_extends_list_wrap = off +ij_javascript_field_prefix = _ +ij_javascript_file_name_style = relaxed +ij_javascript_finally_on_new_line = false +ij_javascript_for_brace_force = never +ij_javascript_for_statement_new_line_after_left_paren = false +ij_javascript_for_statement_right_paren_on_new_line = false +ij_javascript_for_statement_wrap = off +ij_javascript_force_quote_style = false +ij_javascript_force_semicolon_style = false +ij_javascript_function_expression_brace_style = end_of_line +ij_javascript_if_brace_force = never +ij_javascript_import_merge_members = global +ij_javascript_import_prefer_absolute_path = global +ij_javascript_import_sort_members = true +ij_javascript_import_sort_module_name = false +ij_javascript_import_use_node_resolution = true +ij_javascript_imports_wrap = on_every_item +ij_javascript_indent_case_from_switch = true +ij_javascript_indent_chained_calls = true +ij_javascript_indent_package_children = 0 +ij_javascript_jsx_attribute_value = braces +ij_javascript_keep_blank_lines_in_code = 2 +ij_javascript_keep_first_column_comment = true +ij_javascript_keep_indents_on_empty_lines = false +ij_javascript_keep_line_breaks = true +ij_javascript_keep_simple_blocks_in_one_line = false +ij_javascript_keep_simple_methods_in_one_line = false +ij_javascript_line_comment_add_space = true +ij_javascript_line_comment_at_first_column = false +ij_javascript_method_brace_style = end_of_line +ij_javascript_method_call_chain_wrap = off +ij_javascript_method_parameters_new_line_after_left_paren = false +ij_javascript_method_parameters_right_paren_on_new_line = false +ij_javascript_method_parameters_wrap = off +ij_javascript_object_literal_wrap = on_every_item +ij_javascript_parentheses_expression_new_line_after_left_paren = false +ij_javascript_parentheses_expression_right_paren_on_new_line = false +ij_javascript_place_assignment_sign_on_next_line = false +ij_javascript_prefer_as_type_cast = false +ij_javascript_prefer_explicit_types_function_expression_returns = false +ij_javascript_prefer_explicit_types_function_returns = false +ij_javascript_prefer_explicit_types_vars_fields = false +ij_javascript_prefer_parameters_wrap = false +ij_javascript_reformat_c_style_comments = false +ij_javascript_space_after_colon = true +ij_javascript_space_after_comma = true +ij_javascript_space_after_dots_in_rest_parameter = false +ij_javascript_space_after_generator_mult = true +ij_javascript_space_after_property_colon = true +ij_javascript_space_after_quest = true +ij_javascript_space_after_type_colon = true +ij_javascript_space_after_unary_not = false +ij_javascript_space_before_async_arrow_lparen = true +ij_javascript_space_before_catch_keyword = true +ij_javascript_space_before_catch_left_brace = true +ij_javascript_space_before_catch_parentheses = true +ij_javascript_space_before_class_lbrace = true +ij_javascript_space_before_class_left_brace = true +ij_javascript_space_before_colon = true +ij_javascript_space_before_comma = false +ij_javascript_space_before_do_left_brace = true +ij_javascript_space_before_else_keyword = true +ij_javascript_space_before_else_left_brace = true +ij_javascript_space_before_finally_keyword = true +ij_javascript_space_before_finally_left_brace = true +ij_javascript_space_before_for_left_brace = true +ij_javascript_space_before_for_parentheses = true +ij_javascript_space_before_for_semicolon = false +ij_javascript_space_before_function_left_parenth = true +ij_javascript_space_before_generator_mult = false +ij_javascript_space_before_if_left_brace = true +ij_javascript_space_before_if_parentheses = true +ij_javascript_space_before_method_call_parentheses = false +ij_javascript_space_before_method_left_brace = true +ij_javascript_space_before_method_parentheses = false +ij_javascript_space_before_property_colon = false +ij_javascript_space_before_quest = true +ij_javascript_space_before_switch_left_brace = true +ij_javascript_space_before_switch_parentheses = true +ij_javascript_space_before_try_left_brace = true +ij_javascript_space_before_type_colon = false +ij_javascript_space_before_unary_not = false +ij_javascript_space_before_while_keyword = true +ij_javascript_space_before_while_left_brace = true +ij_javascript_space_before_while_parentheses = true +ij_javascript_spaces_around_additive_operators = true +ij_javascript_spaces_around_arrow_function_operator = true +ij_javascript_spaces_around_assignment_operators = true +ij_javascript_spaces_around_bitwise_operators = true +ij_javascript_spaces_around_equality_operators = true +ij_javascript_spaces_around_logical_operators = true +ij_javascript_spaces_around_multiplicative_operators = true +ij_javascript_spaces_around_relational_operators = true +ij_javascript_spaces_around_shift_operators = true +ij_javascript_spaces_around_unary_operator = false +ij_javascript_spaces_within_array_initializer_brackets = false +ij_javascript_spaces_within_brackets = false +ij_javascript_spaces_within_catch_parentheses = false +ij_javascript_spaces_within_for_parentheses = false +ij_javascript_spaces_within_if_parentheses = false +ij_javascript_spaces_within_imports = false +ij_javascript_spaces_within_interpolation_expressions = false +ij_javascript_spaces_within_method_call_parentheses = false +ij_javascript_spaces_within_method_parentheses = false +ij_javascript_spaces_within_object_literal_braces = false +ij_javascript_spaces_within_object_type_braces = true +ij_javascript_spaces_within_parentheses = false +ij_javascript_spaces_within_switch_parentheses = false +ij_javascript_spaces_within_type_assertion = false +ij_javascript_spaces_within_union_types = true +ij_javascript_spaces_within_while_parentheses = false +ij_javascript_special_else_if_treatment = true +ij_javascript_ternary_operation_signs_on_next_line = false +ij_javascript_ternary_operation_wrap = off +ij_javascript_union_types_wrap = on_every_item +ij_javascript_use_chained_calls_group_indents = false +ij_javascript_use_double_quotes = true +ij_javascript_use_explicit_js_extension = global +ij_javascript_use_path_mapping = always +ij_javascript_use_public_modifier = false +ij_javascript_use_semicolon_after_statement = true +ij_javascript_var_declaration_wrap = normal +ij_javascript_while_brace_force = never +ij_javascript_while_on_new_line = false +ij_javascript_wrap_comments = false + +[{*.ft, *.vm, *.vsl}] +ij_vtl_keep_indents_on_empty_lines = false + +[{*.gant, *.gradle, *.groovy, *.gy}] +ij_groovy_align_group_field_declarations = false +ij_groovy_align_multiline_array_initializer_expression = false +ij_groovy_align_multiline_assignment = false +ij_groovy_align_multiline_binary_operation = false +ij_groovy_align_multiline_chained_methods = false +ij_groovy_align_multiline_extends_list = false +ij_groovy_align_multiline_for = true +ij_groovy_align_multiline_list_or_map = true +ij_groovy_align_multiline_method_parentheses = false +ij_groovy_align_multiline_parameters = true +ij_groovy_align_multiline_parameters_in_calls = false +ij_groovy_align_multiline_resources = true +ij_groovy_align_multiline_ternary_operation = false +ij_groovy_align_multiline_throws_list = false +ij_groovy_align_named_args_in_map = true +ij_groovy_align_throws_keyword = false +ij_groovy_array_initializer_new_line_after_left_brace = false +ij_groovy_array_initializer_right_brace_on_new_line = false +ij_groovy_array_initializer_wrap = off +ij_groovy_assert_statement_wrap = off +ij_groovy_assignment_wrap = off +ij_groovy_binary_operation_wrap = off +ij_groovy_blank_lines_after_class_header = 0 +ij_groovy_blank_lines_after_imports = 1 +ij_groovy_blank_lines_after_package = 1 +ij_groovy_blank_lines_around_class = 1 +ij_groovy_blank_lines_around_field = 0 +ij_groovy_blank_lines_around_field_in_interface = 0 +ij_groovy_blank_lines_around_method = 1 +ij_groovy_blank_lines_around_method_in_interface = 1 +ij_groovy_blank_lines_before_imports = 1 +ij_groovy_blank_lines_before_method_body = 0 +ij_groovy_blank_lines_before_package = 0 +ij_groovy_block_brace_style = end_of_line +ij_groovy_block_comment_at_first_column = true +ij_groovy_call_parameters_new_line_after_left_paren = false +ij_groovy_call_parameters_right_paren_on_new_line = false +ij_groovy_call_parameters_wrap = off +ij_groovy_catch_on_new_line = false +ij_groovy_class_annotation_wrap = split_into_lines +ij_groovy_class_brace_style = end_of_line +ij_groovy_class_count_to_use_import_on_demand = 5 +ij_groovy_do_while_brace_force = never +ij_groovy_else_on_new_line = false +ij_groovy_enum_constants_wrap = off +ij_groovy_extends_keyword_wrap = off +ij_groovy_extends_list_wrap = off +ij_groovy_field_annotation_wrap = split_into_lines +ij_groovy_finally_on_new_line = false +ij_groovy_for_brace_force = never +ij_groovy_for_statement_new_line_after_left_paren = false +ij_groovy_for_statement_right_paren_on_new_line = false +ij_groovy_for_statement_wrap = off +ij_groovy_if_brace_force = never +ij_groovy_import_annotation_wrap = 2 +ij_groovy_imports_layout = *, |, javax.**, java.**, |, $* +ij_groovy_indent_case_from_switch = true +ij_groovy_indent_label_blocks = true +ij_groovy_insert_inner_class_imports = false +ij_groovy_keep_blank_lines_before_right_brace = 2 +ij_groovy_keep_blank_lines_in_code = 2 +ij_groovy_keep_blank_lines_in_declarations = 2 +ij_groovy_keep_control_statement_in_one_line = true +ij_groovy_keep_first_column_comment = true +ij_groovy_keep_indents_on_empty_lines = false +ij_groovy_keep_line_breaks = true +ij_groovy_keep_multiple_expressions_in_one_line = false +ij_groovy_keep_simple_blocks_in_one_line = false +ij_groovy_keep_simple_classes_in_one_line = true +ij_groovy_keep_simple_lambdas_in_one_line = true +ij_groovy_keep_simple_methods_in_one_line = true +ij_groovy_label_indent_absolute = false +ij_groovy_label_indent_size = 0 +ij_groovy_lambda_brace_style = end_of_line +ij_groovy_layout_static_imports_separately = true +ij_groovy_line_comment_add_space = false +ij_groovy_line_comment_at_first_column = true +ij_groovy_method_annotation_wrap = split_into_lines +ij_groovy_method_brace_style = end_of_line +ij_groovy_method_call_chain_wrap = off +ij_groovy_method_parameters_new_line_after_left_paren = false +ij_groovy_method_parameters_right_paren_on_new_line = false +ij_groovy_method_parameters_wrap = off +ij_groovy_modifier_list_wrap = false +ij_groovy_names_count_to_use_import_on_demand = 3 +ij_groovy_parameter_annotation_wrap = off +ij_groovy_parentheses_expression_new_line_after_left_paren = false +ij_groovy_parentheses_expression_right_paren_on_new_line = false +ij_groovy_prefer_parameters_wrap = false +ij_groovy_resource_list_new_line_after_left_paren = false +ij_groovy_resource_list_right_paren_on_new_line = false +ij_groovy_resource_list_wrap = off +ij_groovy_space_after_assert_separator = true +ij_groovy_space_after_colon = true +ij_groovy_space_after_comma = true +ij_groovy_space_after_comma_in_type_arguments = true +ij_groovy_space_after_for_semicolon = true +ij_groovy_space_after_quest = true +ij_groovy_space_after_type_cast = true +ij_groovy_space_before_annotation_parameter_list = false +ij_groovy_space_before_array_initializer_left_brace = false +ij_groovy_space_before_assert_separator = false +ij_groovy_space_before_catch_keyword = true +ij_groovy_space_before_catch_left_brace = true +ij_groovy_space_before_catch_parentheses = true +ij_groovy_space_before_class_left_brace = true +ij_groovy_space_before_closure_left_brace = true +ij_groovy_space_before_colon = true +ij_groovy_space_before_comma = false +ij_groovy_space_before_do_left_brace = true +ij_groovy_space_before_else_keyword = true +ij_groovy_space_before_else_left_brace = true +ij_groovy_space_before_finally_keyword = true +ij_groovy_space_before_finally_left_brace = true +ij_groovy_space_before_for_left_brace = true +ij_groovy_space_before_for_parentheses = true +ij_groovy_space_before_for_semicolon = false +ij_groovy_space_before_if_left_brace = true +ij_groovy_space_before_if_parentheses = true +ij_groovy_space_before_method_call_parentheses = false +ij_groovy_space_before_method_left_brace = true +ij_groovy_space_before_method_parentheses = false +ij_groovy_space_before_quest = true +ij_groovy_space_before_switch_left_brace = true +ij_groovy_space_before_switch_parentheses = true +ij_groovy_space_before_synchronized_left_brace = true +ij_groovy_space_before_synchronized_parentheses = true +ij_groovy_space_before_try_left_brace = true +ij_groovy_space_before_try_parentheses = true +ij_groovy_space_before_while_keyword = true +ij_groovy_space_before_while_left_brace = true +ij_groovy_space_before_while_parentheses = true +ij_groovy_space_in_named_argument = true +ij_groovy_space_in_named_argument_before_colon = false +ij_groovy_space_within_empty_array_initializer_braces = false +ij_groovy_space_within_empty_method_call_parentheses = false +ij_groovy_spaces_around_additive_operators = true +ij_groovy_spaces_around_assignment_operators = true +ij_groovy_spaces_around_bitwise_operators = true +ij_groovy_spaces_around_equality_operators = true +ij_groovy_spaces_around_lambda_arrow = true +ij_groovy_spaces_around_logical_operators = true +ij_groovy_spaces_around_multiplicative_operators = true +ij_groovy_spaces_around_regex_operators = true +ij_groovy_spaces_around_relational_operators = true +ij_groovy_spaces_around_shift_operators = true +ij_groovy_spaces_within_annotation_parentheses = false +ij_groovy_spaces_within_array_initializer_braces = false +ij_groovy_spaces_within_braces = true +ij_groovy_spaces_within_brackets = false +ij_groovy_spaces_within_cast_parentheses = false +ij_groovy_spaces_within_catch_parentheses = false +ij_groovy_spaces_within_for_parentheses = false +ij_groovy_spaces_within_gstring_injection_braces = false +ij_groovy_spaces_within_if_parentheses = false +ij_groovy_spaces_within_list_or_map = false +ij_groovy_spaces_within_method_call_parentheses = false +ij_groovy_spaces_within_method_parentheses = false +ij_groovy_spaces_within_parentheses = false +ij_groovy_spaces_within_switch_parentheses = false +ij_groovy_spaces_within_synchronized_parentheses = false +ij_groovy_spaces_within_try_parentheses = false +ij_groovy_spaces_within_tuple_expression = false +ij_groovy_spaces_within_while_parentheses = false +ij_groovy_special_else_if_treatment = true +ij_groovy_ternary_operation_wrap = off +ij_groovy_throws_keyword_wrap = off +ij_groovy_throws_list_wrap = off +ij_groovy_use_flying_geese_braces = false +ij_groovy_use_fq_class_names = false +ij_groovy_use_fq_class_names_in_javadoc = true +ij_groovy_use_relative_indents = false +ij_groovy_use_single_class_imports = true +ij_groovy_variable_annotation_wrap = off +ij_groovy_while_brace_force = never +ij_groovy_while_on_new_line = false +ij_groovy_wrap_long_lines = false + +[{*.gradle.kts, *.kt, *.kts, *.main.kts}] +ij_kotlin_align_in_columns_case_branch = false +ij_kotlin_align_multiline_binary_operation = false +ij_kotlin_align_multiline_extends_list = false +ij_kotlin_align_multiline_method_parentheses = false +ij_kotlin_align_multiline_parameters = true +ij_kotlin_align_multiline_parameters_in_calls = false +ij_kotlin_allow_trailing_comma = false +ij_kotlin_allow_trailing_comma_on_call_site = false +ij_kotlin_assignment_wrap = off +ij_kotlin_blank_lines_after_class_header = 0 +ij_kotlin_blank_lines_around_block_when_branches = 0 +ij_kotlin_blank_lines_before_declaration_with_comment_or_annotation_on_separate_line = 1 +ij_kotlin_block_comment_at_first_column = true +ij_kotlin_call_parameters_new_line_after_left_paren = false +ij_kotlin_call_parameters_right_paren_on_new_line = false +ij_kotlin_call_parameters_wrap = off +ij_kotlin_catch_on_new_line = false +ij_kotlin_class_annotation_wrap = split_into_lines +ij_kotlin_continuation_indent_for_chained_calls = true +ij_kotlin_continuation_indent_for_expression_bodies = true +ij_kotlin_continuation_indent_in_argument_lists = true +ij_kotlin_continuation_indent_in_elvis = true +ij_kotlin_continuation_indent_in_if_conditions = true +ij_kotlin_continuation_indent_in_parameter_lists = true +ij_kotlin_continuation_indent_in_supertype_lists = true +ij_kotlin_else_on_new_line = false +ij_kotlin_enum_constants_wrap = off +ij_kotlin_extends_list_wrap = off +ij_kotlin_field_annotation_wrap = split_into_lines +ij_kotlin_finally_on_new_line = false +ij_kotlin_if_rparen_on_new_line = false +ij_kotlin_import_nested_classes = false +ij_kotlin_insert_whitespaces_in_simple_one_line_method = true +ij_kotlin_keep_blank_lines_before_right_brace = 2 +ij_kotlin_keep_blank_lines_in_code = 2 +ij_kotlin_keep_blank_lines_in_declarations = 2 +ij_kotlin_keep_first_column_comment = true +ij_kotlin_keep_indents_on_empty_lines = false +ij_kotlin_keep_line_breaks = true +ij_kotlin_lbrace_on_next_line = false +ij_kotlin_line_comment_add_space = false +ij_kotlin_line_comment_at_first_column = true +ij_kotlin_method_annotation_wrap = split_into_lines +ij_kotlin_method_call_chain_wrap = off +ij_kotlin_method_parameters_new_line_after_left_paren = false +ij_kotlin_method_parameters_right_paren_on_new_line = false +ij_kotlin_method_parameters_wrap = off +ij_kotlin_name_count_to_use_star_import = 5 +ij_kotlin_name_count_to_use_star_import_for_members = 3 +ij_kotlin_parameter_annotation_wrap = off +ij_kotlin_space_after_comma = true +ij_kotlin_space_after_extend_colon = true +ij_kotlin_space_after_type_colon = true +ij_kotlin_space_before_catch_parentheses = true +ij_kotlin_space_before_comma = false +ij_kotlin_space_before_extend_colon = true +ij_kotlin_space_before_for_parentheses = true +ij_kotlin_space_before_if_parentheses = true +ij_kotlin_space_before_lambda_arrow = true +ij_kotlin_space_before_type_colon = false +ij_kotlin_space_before_when_parentheses = true +ij_kotlin_space_before_while_parentheses = true +ij_kotlin_spaces_around_additive_operators = true +ij_kotlin_spaces_around_assignment_operators = true +ij_kotlin_spaces_around_equality_operators = true +ij_kotlin_spaces_around_function_type_arrow = true +ij_kotlin_spaces_around_logical_operators = true +ij_kotlin_spaces_around_multiplicative_operators = true +ij_kotlin_spaces_around_range = false +ij_kotlin_spaces_around_relational_operators = true +ij_kotlin_spaces_around_unary_operator = false +ij_kotlin_spaces_around_when_arrow = true +ij_kotlin_variable_annotation_wrap = off +ij_kotlin_while_on_new_line = false +ij_kotlin_wrap_elvis_expressions = 1 +ij_kotlin_wrap_expression_body_functions = 0 +ij_kotlin_wrap_first_method_in_call_chain = false + +[{*.har, *.jsb2, *.jsb3, *.json, .babelrc, .eslintrc, .stylelintrc, bowerrc, jest.config, mcmod.info}] +indent_size = 2 +ij_json_keep_blank_lines_in_code = 0 +ij_json_keep_indents_on_empty_lines = false +ij_json_keep_line_breaks = true +ij_json_space_after_colon = true +ij_json_space_after_comma = true +ij_json_space_before_colon = true +ij_json_space_before_comma = false +ij_json_spaces_within_braces = false +ij_json_spaces_within_brackets = false +ij_json_wrap_long_lines = false + +[{*.htm, *.html, *.sht, *.shtm, *.shtml}] +ij_html_add_new_line_before_tags = body, div, p, form, h1, h2, h3 +ij_html_align_attributes = true +ij_html_align_text = false +ij_html_attribute_wrap = normal +ij_html_block_comment_at_first_column = true +ij_html_do_not_align_children_of_min_lines = 0 +ij_html_do_not_break_if_inline_tags = title, h1, h2, h3, h4, h5, h6, p +ij_html_do_not_indent_children_of_tags = html, body, thead, tbody, tfoot +ij_html_enforce_quotes = false +ij_html_inline_tags = a, abbr, acronym, b, basefont, bdo, big, br, cite, cite, code, dfn, em, font, i, img, input, kbd, label, q, s, samp, select, small, span, strike, strong, sub, sup, textarea, tt, u, var +ij_html_keep_blank_lines = 2 +ij_html_keep_indents_on_empty_lines = false +ij_html_keep_line_breaks = true +ij_html_keep_line_breaks_in_text = true +ij_html_keep_whitespaces = false +ij_html_keep_whitespaces_inside = span, pre, textarea +ij_html_line_comment_at_first_column = true +ij_html_new_line_after_last_attribute = never +ij_html_new_line_before_first_attribute = never +ij_html_quote_style = double +ij_html_remove_new_line_before_tags = br +ij_html_space_after_tag_name = false +ij_html_space_around_equality_in_attribute = false +ij_html_space_inside_empty_tag = false +ij_html_text_wrap = normal +ij_html_uniform_ident = false + +[{*.yaml, *.yml}] +indent_size = 2 +ij_yaml_keep_indents_on_empty_lines = false +ij_yaml_keep_line_breaks = true +ij_yaml_space_before_colon = true +ij_yaml_spaces_within_braces = true +ij_yaml_spaces_within_brackets = true diff --git a/.github/auto-comment.yml b/.github/auto-comment.yml index 38721ffb9..1780bd8bc 100644 --- a/.github/auto-comment.yml +++ b/.github/auto-comment.yml @@ -4,5 +4,5 @@ issueOpened: > Please make sure that you followed the issue template, and provided all neccessary information. Failure to do so will prevent us from resolving the issue in a timely manner. - + Please note that suggestions are now to be submitted to https://git.io/fN5B4 rather than this issue tracker! diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 5344ca758..17b88d9ba 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -1,7 +1,7 @@ name: "build" on: ["pull_request", "push"] - + jobs: build: strategy: @@ -10,11 +10,11 @@ jobs: os: ["ubuntu-18.04"] runs-on: "${{ matrix.os }}" steps: - - name: "Checkout Repository" - uses: "actions/checkout@v2.3.4" - - name: "Setup JDK ${{ matrix.java }}" - uses: "actions/setup-java@v1.4.3" - with: + - name: "Checkout Repository" + uses: "actions/checkout@v2.3.4" + - name: "Setup JDK ${{ matrix.java }}" + uses: "actions/setup-java@v1.4.3" + with: java-version: "${{ matrix.java }}" - - name: "Clean Build" - run: "./gradlew clean build" \ No newline at end of file + - name: "Clean Build" + run: "./gradlew clean build" diff --git a/Bukkit/build.gradle.kts b/Bukkit/build.gradle.kts index 4df1e0176..7fb1184f2 100644 --- a/Bukkit/build.gradle.kts +++ b/Bukkit/build.gradle.kts @@ -93,7 +93,6 @@ tasks.named("shadowJar") { relocate("org.apache.logging.slf4j", "com.plotsquared.logging.apache.slf4j") relocate("org.slf4j", "com.plotsquared.logging.slf4j") relocate("com.google.inject", "com.plotsquared.google") - relocate("javax.inject", "com.plotsquared.core.inject.javax") relocate("org.aopalliance", "com.plotsquared.core.aopalliance") relocate("com.intellectualsites.services", "com.plotsquared.core.services") relocate("com.intellectualsites.arkitektonika", "com.plotsquared.core.arkitektonika") diff --git a/Bukkit/src/main/java/com/plotsquared/bukkit/BukkitCommand.java b/Bukkit/src/main/java/com/plotsquared/bukkit/BukkitCommand.java index f69f219c6..2c2017346 100644 --- a/Bukkit/src/main/java/com/plotsquared/bukkit/BukkitCommand.java +++ b/Bukkit/src/main/java/com/plotsquared/bukkit/BukkitCommand.java @@ -46,22 +46,26 @@ import java.util.List; public class BukkitCommand implements CommandExecutor, TabCompleter { @Override - public boolean onCommand(CommandSender commandSender, Command command, String commandLabel, - String[] args) { + public boolean onCommand( + CommandSender commandSender, Command command, String commandLabel, + String[] args + ) { if (commandSender instanceof Player) { return MainCommand.onCommand(BukkitUtil.adapt((Player) commandSender), args); } if (commandSender instanceof ConsoleCommandSender - || commandSender instanceof ProxiedCommandSender - || commandSender instanceof RemoteConsoleCommandSender) { + || commandSender instanceof ProxiedCommandSender + || commandSender instanceof RemoteConsoleCommandSender) { return MainCommand.onCommand(ConsolePlayer.getConsole(), args); } return false; } @Override - public List onTabComplete(CommandSender commandSender, Command command, String s, - String[] args) { + public List onTabComplete( + CommandSender commandSender, Command command, String s, + String[] args + ) { if (!(commandSender instanceof Player)) { return null; } @@ -70,7 +74,7 @@ public class BukkitCommand implements CommandExecutor, TabCompleter { return Collections.singletonList("plots"); } Collection objects = - MainCommand.getInstance().tab(player, args, s.endsWith(" ")); + MainCommand.getInstance().tab(player, args, s.endsWith(" ")); if (objects == null) { return null; } @@ -80,4 +84,5 @@ public class BukkitCommand implements CommandExecutor, TabCompleter { } return result; } + } diff --git a/Bukkit/src/main/java/com/plotsquared/bukkit/BukkitPlatform.java b/Bukkit/src/main/java/com/plotsquared/bukkit/BukkitPlatform.java index 67704d95f..075260bcb 100644 --- a/Bukkit/src/main/java/com/plotsquared/bukkit/BukkitPlatform.java +++ b/Bukkit/src/main/java/com/plotsquared/bukkit/BukkitPlatform.java @@ -136,11 +136,11 @@ import org.bukkit.metadata.FixedMetadataValue; import org.bukkit.metadata.MetadataValue; import org.bukkit.plugin.Plugin; import org.bukkit.plugin.java.JavaPlugin; +import org.checkerframework.checker.nullness.qual.NonNull; +import org.checkerframework.checker.nullness.qual.Nullable; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; import java.io.File; import java.lang.reflect.Method; import java.util.ArrayList; @@ -165,7 +165,8 @@ import static com.plotsquared.core.util.PremiumVerification.getResourceID; import static com.plotsquared.core.util.PremiumVerification.getUserID; import static com.plotsquared.core.util.ReflectionUtils.getRefClass; -@SuppressWarnings("unused") @Singleton +@SuppressWarnings("unused") +@Singleton public final class BukkitPlatform extends JavaPlugin implements Listener, PlotPlatform { private static final Logger logger = LoggerFactory.getLogger("P2/" + BukkitPlatform.class.getSimpleName()); @@ -188,19 +189,34 @@ public final class BukkitPlatform extends JavaPlugin implements Listener, PlotPl private Injector injector; - @Inject private PlotAreaManager plotAreaManager; - @Inject private EventDispatcher eventDispatcher; - @Inject private PlotListener plotListener; - @Inject @WorldConfig private YamlConfiguration worldConfiguration; - @Inject @WorldFile private File worldfile; - @Inject private BukkitPlayerManager playerManager; - @Inject private BackupManager backupManager; - @Inject @ImpromptuPipeline private UUIDPipeline impromptuPipeline; - @Inject @BackgroundPipeline private UUIDPipeline backgroundPipeline; - @Inject private PlatformWorldManager worldManager; + @Inject + private PlotAreaManager plotAreaManager; + @Inject + private EventDispatcher eventDispatcher; + @Inject + private PlotListener plotListener; + @Inject + @WorldConfig + private YamlConfiguration worldConfiguration; + @Inject + @WorldFile + private File worldfile; + @Inject + private BukkitPlayerManager playerManager; + @Inject + private BackupManager backupManager; + @Inject + @ImpromptuPipeline + private UUIDPipeline impromptuPipeline; + @Inject + @BackgroundPipeline + private UUIDPipeline backgroundPipeline; + @Inject + private PlatformWorldManager worldManager; private Locale serverLocale; - @Override @Nonnull public int[] serverVersion() { + @Override + public @NonNull int[] serverVersion() { if (this.version == null) { try { this.version = new int[3]; @@ -212,17 +228,19 @@ public final class BukkitPlatform extends JavaPlugin implements Listener, PlotPl } } catch (NumberFormatException e) { e.printStackTrace(); - return new int[] {1, 13, 0}; + return new int[]{1, 13, 0}; } } return this.version; } - @Override @Nonnull public String serverImplementation() { + @Override + public @NonNull String serverImplementation() { return Bukkit.getVersion(); } - @Override public void onEnable() { + @Override + public void onEnable() { this.pluginName = getDescription().getName(); final TaskTime.TimeConverter timeConverter; @@ -241,8 +259,13 @@ public final class BukkitPlatform extends JavaPlugin implements Listener, PlotPl // We create the injector after PlotSquared has been initialized, so that we have access // to generated instances and settings this.injector = Guice - .createInjector(Stage.PRODUCTION, new PermissionModule(), new WorldManagerModule(), new PlotSquaredModule(), new BukkitModule(this), - new BackupModule()); + .createInjector(Stage.PRODUCTION, + new PermissionModule(), + new WorldManagerModule(), + new PlotSquaredModule(), + new BukkitModule(this), + new BackupModule() + ); this.injector.injectMembers(this); this.serverLocale = Locale.forLanguageTag(Settings.Enabled_Components.DEFAULT_LOCALE); @@ -299,7 +322,8 @@ public final class BukkitPlatform extends JavaPlugin implements Listener, PlotPl new WE_Anywhere(); } } catch (Throwable e) { - logger.error("Incompatible version of WorldEdit, please upgrade: https://builds.enginehub.org/job/worldedit?branch=master"); + logger.error( + "Incompatible version of WorldEdit, please upgrade: https://builds.enginehub.org/job/worldedit?branch=master"); } } @@ -367,9 +391,13 @@ public final class BukkitPlatform extends JavaPlugin implements Listener, PlotPl continue; } if (!worldUtil.isWorld(world) && !world.equals("*")) { - logger.warn("`{}` was not properly loaded - {} will now try to load it properly", world, this.pluginName()); logger.warn( - " - Are you trying to delete this world? Remember to remove it from the worlds.yml, bukkit.yml and multiverse worlds.yml"); + "`{}` was not properly loaded - {} will now try to load it properly", + world, + this.pluginName() + ); + logger.warn( + " - Are you trying to delete this world? Remember to remove it from the worlds.yml, bukkit.yml and multiverse worlds.yml"); logger.warn(" - Your world management plugin may be faulty (or non existent)"); logger.warn(" This message may also be a false positive and could be ignored."); this.setGenerator(world); @@ -403,7 +431,9 @@ public final class BukkitPlatform extends JavaPlugin implements Listener, PlotPl final SQLiteUUIDService sqLiteUUIDService = new SQLiteUUIDService("user_cache.db"); final SQLiteUUIDService legacyUUIDService; - if (Settings.UUID.LEGACY_DATABASE_SUPPORT && FileUtils.getFile(PlotSquared.platform().getDirectory(), "usercache.db").exists()) { + if (Settings.UUID.LEGACY_DATABASE_SUPPORT && FileUtils + .getFile(PlotSquared.platform().getDirectory(), "usercache.db") + .exists()) { legacyUUIDService = new SQLiteUUIDService("usercache.db"); } else { legacyUUIDService = null; @@ -518,7 +548,12 @@ public final class BukkitPlatform extends JavaPlugin implements Listener, PlotPl this.methodUnloadSetup = true; try { ReflectionUtils.RefClass classCraftWorld = getRefClass("{cb}.CraftWorld"); - this.methodUnloadChunk0 = classCraftWorld.getRealClass().getDeclaredMethod("unloadChunk0", int.class, int.class, boolean.class); + this.methodUnloadChunk0 = classCraftWorld.getRealClass().getDeclaredMethod( + "unloadChunk0", + int.class, + int.class, + boolean.class + ); this.methodUnloadChunk0.setAccessible(true); } catch (Throwable event) { event.printStackTrace(); @@ -549,7 +584,10 @@ public final class BukkitPlatform extends JavaPlugin implements Listener, PlotPl } final Plot plot = area.getOwnedPlot(id); if (plot != null) { - if (!plot.getFlag(ServerPlotFlag.class) || PlotSquared.platform().playerManager().getPlayerIfExists(plot.getOwner()) == null) { + if (!plot.getFlag(ServerPlotFlag.class) || PlotSquared + .platform() + .playerManager() + .getPlayerIfExists(plot.getOwner()) == null) { if (world.getKeepSpawnInMemory()) { world.setKeepSpawnInMemory(false); return; @@ -590,7 +628,10 @@ public final class BukkitPlatform extends JavaPlugin implements Listener, PlotPl } } - private void startUuidCaching(@Nonnull final SQLiteUUIDService sqLiteUUIDService, @Nonnull final CacheUUIDService cacheUUIDService) { + private void startUuidCaching( + final @NonNull SQLiteUUIDService sqLiteUUIDService, + final @NonNull CacheUUIDService cacheUUIDService + ) { // Load all uuids into a big chunky boi queue final Queue uuidQueue = new LinkedBlockingQueue<>(); PlotSquared.get().forEachPlotRaw(plot -> { @@ -656,12 +697,14 @@ public final class BukkitPlatform extends JavaPlugin implements Listener, PlotPl }, 10, TimeUnit.SECONDS); } - @Override public void onDisable() { + @Override + public void onDisable() { PlotSquared.get().disable(); Bukkit.getScheduler().cancelTasks(this); } - @Override public void shutdown() { + @Override + public void shutdown() { this.getServer().getPluginManager().disablePlugin(this); } @@ -675,15 +718,18 @@ public final class BukkitPlatform extends JavaPlugin implements Listener, PlotPl } } - @Override @Nonnull public File getDirectory() { + @Override + public @NonNull File getDirectory() { return getDataFolder(); } - @Override @Nonnull public File worldContainer() { + @Override + public @NonNull File worldContainer() { return Bukkit.getWorldContainer(); } - @SuppressWarnings("deprecation") private void runEntityTask() { + @SuppressWarnings("deprecation") + private void runEntityTask() { TaskManager.runTaskRepeat(() -> this.plotAreaManager.forEachPlotArea(plotArea -> { final World world = Bukkit.getWorld(plotArea.getWorldName()); try { @@ -766,7 +812,7 @@ public final class BukkitPlatform extends JavaPlugin implements Listener, PlotPl case "DRAGON_FIREBALL": case "DROPPED_ITEM": if (Settings.Enabled_Components.KILL_ROAD_ITEMS - && plotArea.getOwnedPlotAbs(BukkitUtil.adapt(entity.getLocation())) == null) { + && plotArea.getOwnedPlotAbs(BukkitUtil.adapt(entity.getLocation())) == null) { entity.remove(); } // dropped item @@ -794,8 +840,9 @@ public final class BukkitPlatform extends JavaPlugin implements Listener, PlotPl PlotArea area = pLoc.getPlotArea(); if (area != null) { PlotId currentPlotId = area.getPlotAbs(pLoc).getId(); - if (!originalPlotId.equals(currentPlotId) && (currentPlotId == null || !area.getPlot(originalPlotId) - .equals(area.getPlot(currentPlotId)))) { + if (!originalPlotId.equals(currentPlotId) && (currentPlotId == null || !area.getPlot( + originalPlotId) + .equals(area.getPlot(currentPlotId)))) { if (entity.hasMetadata("ps-tmp-teleport")) { continue; } @@ -811,7 +858,10 @@ public final class BukkitPlatform extends JavaPlugin implements Listener, PlotPl if (area != null) { PlotId currentPlotId = area.getPlotAbs(pLoc).getId(); if (currentPlotId != null) { - entity.setMetadata("shulkerPlot", new FixedMetadataValue((Plugin) PlotSquared.platform(), currentPlotId)); + entity.setMetadata( + "shulkerPlot", + new FixedMetadataValue((Plugin) PlotSquared.platform(), currentPlotId) + ); } } } @@ -894,10 +944,10 @@ public final class BukkitPlatform extends JavaPlugin implements Listener, PlotPl if (entity instanceof LivingEntity) { LivingEntity livingEntity = (LivingEntity) entity; if ((Settings.Enabled_Components.KILL_OWNED_ROAD_MOBS || !livingEntity.isLeashed()) - || !entity.hasMetadata("keep")) { + || !entity.hasMetadata("keep")) { Entity passenger = entity.getPassenger(); if ((Settings.Enabled_Components.KILL_OWNED_ROAD_MOBS - || !(passenger instanceof Player)) && entity.getMetadata("keep").isEmpty()) { + || !(passenger instanceof Player)) && entity.getMetadata("keep").isEmpty()) { if (entity.hasMetadata("ps-tmp-teleport")) { continue; } @@ -909,7 +959,7 @@ public final class BukkitPlatform extends JavaPlugin implements Listener, PlotPl } else { Entity passenger = entity.getPassenger(); if ((Settings.Enabled_Components.KILL_OWNED_ROAD_MOBS - || !(passenger instanceof Player)) && entity.getMetadata("keep").isEmpty()) { + || !(passenger instanceof Player)) && entity.getMetadata("keep").isEmpty()) { if (entity.hasMetadata("ps-tmp-teleport")) { continue; } @@ -930,7 +980,8 @@ public final class BukkitPlatform extends JavaPlugin implements Listener, PlotPl }), TaskTime.seconds(1L)); } - @Override @Nullable public final ChunkGenerator getDefaultWorldGenerator(@Nonnull final String worldName, final String id) { + @Override + public @Nullable final ChunkGenerator getDefaultWorldGenerator(final @NonNull String worldName, final String id) { final IndependentPlotGenerator result; if (id != null && id.equalsIgnoreCase("single")) { result = injector().getInstance(SingleWorldGenerator.class); @@ -943,7 +994,8 @@ public final class BukkitPlatform extends JavaPlugin implements Listener, PlotPl return (ChunkGenerator) result.specify(worldName); } - @Override @Nullable public GeneratorWrapper getGenerator(@Nonnull final String world, @Nullable final String name) { + @Override + public @Nullable GeneratorWrapper getGenerator(final @NonNull String world, final @Nullable String name) { if (name == null) { return null; } @@ -955,12 +1007,15 @@ public final class BukkitPlatform extends JavaPlugin implements Listener, PlotPl } return new BukkitPlotGenerator(world, gen, this.plotAreaManager); } else { - return new BukkitPlotGenerator(world, injector().getInstance(Key.get(IndependentPlotGenerator.class, DefaultGenerator.class)), - this.plotAreaManager); + return new BukkitPlotGenerator(world, + injector().getInstance(Key.get(IndependentPlotGenerator.class, DefaultGenerator.class)), + this.plotAreaManager + ); } } - @Override public void startMetrics() { + @Override + public void startMetrics() { if (this.metricsStarted) { return; } @@ -977,33 +1032,50 @@ public final class BukkitPlatform extends JavaPlugin implements Listener, PlotPl } for (final PlotArea plotArea : this.plotAreaManager.getAllPlotAreas()) { final Map terrainTypeMap = map.get(plotArea.getType().name().toLowerCase()); - terrainTypeMap.put(plotArea.getTerrain().name().toLowerCase(), terrainTypeMap.get(plotArea.getTerrain().name().toLowerCase()) + 1); + terrainTypeMap.put( + plotArea.getTerrain().name().toLowerCase(), + terrainTypeMap.get(plotArea.getTerrain().name().toLowerCase()) + 1 + ); } return map; })); - metrics.addCustomChart(new Metrics.SimplePie("premium", () -> PremiumVerification.isPremium() ? "Premium" : "Non-Premium")); + metrics.addCustomChart(new Metrics.SimplePie( + "premium", + () -> PremiumVerification.isPremium() ? "Premium" : "Non-Premium" + )); metrics.addCustomChart(new Metrics.SimplePie("worlds", () -> Settings.Enabled_Components.WORLDS ? "true" : "false")); metrics.addCustomChart(new Metrics.SimplePie("economy", () -> Settings.Enabled_Components.ECONOMY ? "true" : "false")); - metrics.addCustomChart(new Metrics.SimplePie("plot_expiry", () -> Settings.Enabled_Components.PLOT_EXPIRY ? "true" : "false")); + metrics.addCustomChart(new Metrics.SimplePie( + "plot_expiry", + () -> Settings.Enabled_Components.PLOT_EXPIRY ? "true" : "false" + )); metrics.addCustomChart(new Metrics.SimplePie("database_type", () -> Storage.MySQL.USE ? "MySQL" : "SQLite")); - metrics.addCustomChart(new Metrics.SimplePie("worldedit_implementation", - () -> Bukkit.getPluginManager().getPlugin("FastAsyncWorldEdit") != null ? "FastAsyncWorldEdit" : "WorldEdit")); + metrics.addCustomChart(new Metrics.SimplePie( + "worldedit_implementation", + () -> Bukkit.getPluginManager().getPlugin("FastAsyncWorldEdit") != null ? "FastAsyncWorldEdit" : "WorldEdit" + )); } - @Override public void unregister(@Nonnull final PlotPlayer player) { + @Override + public void unregister(final @NonNull PlotPlayer player) { PlotSquared.platform().playerManager().removePlayer(player.getUUID()); } - @Override public void setGenerator(@Nonnull final String worldName) { + @Override + public void setGenerator(final @NonNull String worldName) { World world = BukkitUtil.getWorld(worldName); if (world == null) { // create world ConfigurationSection worldConfig = this.worldConfiguration.getConfigurationSection("worlds." + worldName); String manager = worldConfig.getString("generator.plugin", pluginName()); PlotAreaBuilder builder = - PlotAreaBuilder.newBuilder().plotManager(manager).generatorName(worldConfig.getString("generator.init", manager)) - .plotAreaType(ConfigurationUtil.getType(worldConfig)).terrainType(ConfigurationUtil.getTerrain(worldConfig)) - .settingsNodesWrapper(new SettingsNodesWrapper(new ConfigurationNode[0], null)).worldName(worldName); + PlotAreaBuilder.newBuilder().plotManager(manager).generatorName(worldConfig.getString( + "generator.init", + manager + )) + .plotAreaType(ConfigurationUtil.getType(worldConfig)).terrainType(ConfigurationUtil.getTerrain( + worldConfig)) + .settingsNodesWrapper(new SettingsNodesWrapper(new ConfigurationNode[0], null)).worldName(worldName); injector().getInstance(SetupUtils.class).setupWorld(builder); world = Bukkit.getWorld(worldName); } else { @@ -1028,41 +1100,50 @@ public final class BukkitPlatform extends JavaPlugin implements Listener, PlotPl } } - @Override @Nonnull public String serverNativePackage() { + @Override + public @NonNull String serverNativePackage() { final String name = Bukkit.getServer().getClass().getPackage().getName(); return name.substring(name.lastIndexOf('.') + 1); } - @Override @Nonnull public GeneratorWrapper wrapPlotGenerator(@Nullable final String world, @Nonnull final IndependentPlotGenerator generator) { + @Override + public @NonNull GeneratorWrapper wrapPlotGenerator( + final @Nullable String world, + final @NonNull IndependentPlotGenerator generator + ) { return new BukkitPlotGenerator(world, generator, this.plotAreaManager); } - @Override @Nonnull public String pluginsFormatted() { + @Override + public @NonNull String pluginsFormatted() { StringBuilder msg = new StringBuilder(); Plugin[] plugins = Bukkit.getServer().getPluginManager().getPlugins(); msg.append("Plugins (").append(plugins.length).append("): \n"); for (Plugin p : plugins) { msg.append(" - ").append(p.getName()).append(":").append("\n") - .append(" • Version: ").append(p.getDescription().getVersion()).append("\n") - .append(" • Enabled: ").append(p.isEnabled()).append("\n") - .append(" • Main: ").append(p.getDescription().getMain()).append("\n") - .append(" • Authors: ").append(p.getDescription().getAuthors()).append("\n") - .append(" • Load Before: ").append(p.getDescription().getLoadBefore()).append("\n") - .append(" • Dependencies: ").append(p.getDescription().getDepend()).append("\n") - .append(" • Soft Dependencies: ").append(p.getDescription().getSoftDepend()).append("\n"); + .append(" • Version: ").append(p.getDescription().getVersion()).append("\n") + .append(" • Enabled: ").append(p.isEnabled()).append("\n") + .append(" • Main: ").append(p.getDescription().getMain()).append("\n") + .append(" • Authors: ").append(p.getDescription().getAuthors()).append("\n") + .append(" • Load Before: ").append(p.getDescription().getLoadBefore()).append("\n") + .append(" • Dependencies: ").append(p.getDescription().getDepend()).append("\n") + .append(" • Soft Dependencies: ").append(p.getDescription().getSoftDepend()).append("\n"); } return msg.toString(); } - @Override @Nonnull public com.plotsquared.core.location.World getPlatformWorld(@Nonnull final String worldName) { + @Override + public com.plotsquared.core.location.@NonNull World getPlatformWorld(final @NonNull String worldName) { return BukkitWorld.of(worldName); } - @Override @Nonnull public Audience consoleAudience() { + @Override + public @NonNull Audience consoleAudience() { return BukkitUtil.BUKKIT_AUDIENCES.console(); } - @Override @Nonnull public String pluginName() { + @Override + public @NonNull String pluginName() { return this.pluginName; } @@ -1070,30 +1151,39 @@ public final class BukkitPlatform extends JavaPlugin implements Listener, PlotPl return this.singleWorldListener; } - @Override @Nonnull public Injector injector() { + @Override + public @NonNull Injector injector() { return this.injector; } - @Nonnull @Override public Locale getLocale() { + @NonNull + @Override + public Locale getLocale() { return this.serverLocale; } - @Override public void setLocale(@Nonnull final Locale locale) { + @Override + public void setLocale(final @NonNull Locale locale) { throw new UnsupportedOperationException("Cannot replace server locale"); } - @Override @Nonnull public PlatformWorldManager worldManager() { + @Override + public @NonNull PlatformWorldManager worldManager() { return injector().getInstance(Key.get(new TypeLiteral>() { })); } - @Override @Nonnull @SuppressWarnings("ALL") public PlayerManager, ? extends Player> playerManager() { + @Override + @NonNull + @SuppressWarnings("ALL") + public PlayerManager, ? extends Player> playerManager() { return (PlayerManager) injector().getInstance(PlayerManager.class); } - @Override public void copyCaptionMaps() { + @Override + public void copyCaptionMaps() { /* Make this prettier at some point */ - final String[] languages = new String[] { "en" }; + final String[] languages = new String[]{"en"}; for (final String language : languages) { if (!new File(new File(this.getDataFolder(), "lang"), String.format("messages_%s.json", language)).exists()) { this.saveResource(String.format("lang/messages_%s.json", language), false); @@ -1102,7 +1192,7 @@ public final class BukkitPlatform extends JavaPlugin implements Listener, PlotPl } } - @Nonnull + @NonNull @Override public String toLegacyPlatformString(Component component) { return LegacyComponentSerializer.legacyAmpersand().serialize(component); diff --git a/Bukkit/src/main/java/com/plotsquared/bukkit/entity/AgeableStats.java b/Bukkit/src/main/java/com/plotsquared/bukkit/entity/AgeableStats.java index 8331d0475..3b847661b 100644 --- a/Bukkit/src/main/java/com/plotsquared/bukkit/entity/AgeableStats.java +++ b/Bukkit/src/main/java/com/plotsquared/bukkit/entity/AgeableStats.java @@ -30,4 +30,5 @@ class AgeableStats { int age; boolean locked; boolean adult; + } diff --git a/Bukkit/src/main/java/com/plotsquared/bukkit/entity/ArmorStandStats.java b/Bukkit/src/main/java/com/plotsquared/bukkit/entity/ArmorStandStats.java index 822d327dd..3d964d7c6 100644 --- a/Bukkit/src/main/java/com/plotsquared/bukkit/entity/ArmorStandStats.java +++ b/Bukkit/src/main/java/com/plotsquared/bukkit/entity/ArmorStandStats.java @@ -37,4 +37,5 @@ class ArmorStandStats { boolean noPlate; boolean invisible; boolean small; + } diff --git a/Bukkit/src/main/java/com/plotsquared/bukkit/entity/EntityBaseStats.java b/Bukkit/src/main/java/com/plotsquared/bukkit/entity/EntityBaseStats.java index 05f2ab60a..b97767193 100644 --- a/Bukkit/src/main/java/com/plotsquared/bukkit/entity/EntityBaseStats.java +++ b/Bukkit/src/main/java/com/plotsquared/bukkit/entity/EntityBaseStats.java @@ -34,4 +34,5 @@ class EntityBaseStats { double vZ; double vY; double vX; + } diff --git a/Bukkit/src/main/java/com/plotsquared/bukkit/entity/EntityWrapper.java b/Bukkit/src/main/java/com/plotsquared/bukkit/entity/EntityWrapper.java index cdcd9c001..a46ab6f76 100644 --- a/Bukkit/src/main/java/com/plotsquared/bukkit/entity/EntityWrapper.java +++ b/Bukkit/src/main/java/com/plotsquared/bukkit/entity/EntityWrapper.java @@ -29,8 +29,7 @@ import org.bukkit.Location; import org.bukkit.World; import org.bukkit.entity.Entity; import org.bukkit.entity.EntityType; - -import javax.annotation.Nonnull; +import org.checkerframework.checker.nullness.qual.NonNull; public abstract class EntityWrapper { @@ -42,7 +41,7 @@ public abstract class EntityWrapper { public double y; public double z; - EntityWrapper(@Nonnull final Entity entity) { + EntityWrapper(final @NonNull Entity entity) { this.entity = entity; this.type = entity.getType(); @@ -54,7 +53,9 @@ public abstract class EntityWrapper { this.pitch = location.getPitch(); } - @SuppressWarnings("deprecation") @Override public String toString() { + @SuppressWarnings("deprecation") + @Override + public String toString() { return String.format("[%s, x=%s, y=%s, z=%s]", type.getName(), x, y, z); } @@ -89,4 +90,5 @@ public abstract class EntityWrapper { public double getZ() { return this.z; } + } diff --git a/Bukkit/src/main/java/com/plotsquared/bukkit/entity/HorseStats.java b/Bukkit/src/main/java/com/plotsquared/bukkit/entity/HorseStats.java index 0fbe78b8e..7b7c60b74 100644 --- a/Bukkit/src/main/java/com/plotsquared/bukkit/entity/HorseStats.java +++ b/Bukkit/src/main/java/com/plotsquared/bukkit/entity/HorseStats.java @@ -34,4 +34,5 @@ class HorseStats { Horse.Variant variant; Horse.Color color; Horse.Style style; + } diff --git a/Bukkit/src/main/java/com/plotsquared/bukkit/entity/LivingEntityStats.java b/Bukkit/src/main/java/com/plotsquared/bukkit/entity/LivingEntityStats.java index 2ae99c8e9..27a13c26d 100644 --- a/Bukkit/src/main/java/com/plotsquared/bukkit/entity/LivingEntityStats.java +++ b/Bukkit/src/main/java/com/plotsquared/bukkit/entity/LivingEntityStats.java @@ -50,4 +50,5 @@ class LivingEntityStats { ItemStack chestplate; Collection potions; ItemStack offHand; + } diff --git a/Bukkit/src/main/java/com/plotsquared/bukkit/entity/ReplicatingEntityWrapper.java b/Bukkit/src/main/java/com/plotsquared/bukkit/entity/ReplicatingEntityWrapper.java index cb7c3b6b6..5d1f369a9 100644 --- a/Bukkit/src/main/java/com/plotsquared/bukkit/entity/ReplicatingEntityWrapper.java +++ b/Bukkit/src/main/java/com/plotsquared/bukkit/entity/ReplicatingEntityWrapper.java @@ -241,9 +241,9 @@ public final class ReplicatingEntityWrapper extends EntityWrapper { case "ARMOR_STAND": ArmorStand stand = (ArmorStand) entity; this.inventory = - new ItemStack[] {stand.getItemInHand().clone(), stand.getHelmet().clone(), - stand.getChestplate().clone(), stand.getLeggings().clone(), - stand.getBoots().clone()}; + new ItemStack[]{stand.getItemInHand().clone(), stand.getHelmet().clone(), + stand.getChestplate().clone(), stand.getLeggings().clone(), + stand.getBoots().clone()}; storeLiving(stand); this.stand = new ArmorStandStats(); @@ -336,15 +336,17 @@ public final class ReplicatingEntityWrapper extends EntityWrapper { this.dataByte = (byte) 0; } storeLiving((LivingEntity) entity); - // END LIVING // + // END LIVING // } } - @Override public boolean equals(Object obj) { + @Override + public boolean equals(Object obj) { return this.hash == obj.hashCode(); } - @Override public int hashCode() { + @Override + public int hashCode() { return this.hash; } @@ -460,7 +462,8 @@ public final class ReplicatingEntityWrapper extends EntityWrapper { this.tamed.tamed = tamed.isTamed(); } - @Override public Entity spawn(World world, int xOffset, int zOffset) { + @Override + public Entity spawn(World world, int xOffset, int zOffset) { Location location = new Location(world, this.getX() + xOffset, this.getY(), this.z + zOffset); location.setYaw(this.yaw); location.setPitch(this.pitch); @@ -647,36 +650,40 @@ public final class ReplicatingEntityWrapper extends EntityWrapper { } if (this.stand.head[0] != 0 || this.stand.head[1] != 0 || this.stand.head[2] != 0) { EulerAngle pose = - new EulerAngle(this.stand.head[0], this.stand.head[1], this.stand.head[2]); + new EulerAngle(this.stand.head[0], this.stand.head[1], this.stand.head[2]); stand.setHeadPose(pose); } if (this.stand.body[0] != 0 || this.stand.body[1] != 0 || this.stand.body[2] != 0) { EulerAngle pose = - new EulerAngle(this.stand.body[0], this.stand.body[1], this.stand.body[2]); + new EulerAngle(this.stand.body[0], this.stand.body[1], this.stand.body[2]); stand.setBodyPose(pose); } if (this.stand.leftLeg[0] != 0 || this.stand.leftLeg[1] != 0 - || this.stand.leftLeg[2] != 0) { + || this.stand.leftLeg[2] != 0) { EulerAngle pose = new EulerAngle(this.stand.leftLeg[0], this.stand.leftLeg[1], - this.stand.leftLeg[2]); + this.stand.leftLeg[2] + ); stand.setLeftLegPose(pose); } if (this.stand.rightLeg[0] != 0 || this.stand.rightLeg[1] != 0 - || this.stand.rightLeg[2] != 0) { + || this.stand.rightLeg[2] != 0) { EulerAngle pose = new EulerAngle(this.stand.rightLeg[0], this.stand.rightLeg[1], - this.stand.rightLeg[2]); + this.stand.rightLeg[2] + ); stand.setRightLegPose(pose); } if (this.stand.leftArm[0] != 0 || this.stand.leftArm[1] != 0 - || this.stand.leftArm[2] != 0) { + || this.stand.leftArm[2] != 0) { EulerAngle pose = new EulerAngle(this.stand.leftArm[0], this.stand.leftArm[1], - this.stand.leftArm[2]); + this.stand.leftArm[2] + ); stand.setLeftArmPose(pose); } if (this.stand.rightArm[0] != 0 || this.stand.rightArm[1] != 0 - || this.stand.rightArm[2] != 0) { + || this.stand.rightArm[2] != 0) { EulerAngle pose = new EulerAngle(this.stand.rightArm[0], this.stand.rightArm[1], - this.stand.rightArm[2]); + this.stand.rightArm[2] + ); stand.setRightArmPose(pose); } if (this.stand.invisible) { diff --git a/Bukkit/src/main/java/com/plotsquared/bukkit/entity/TameableStats.java b/Bukkit/src/main/java/com/plotsquared/bukkit/entity/TameableStats.java index e48149ef7..e35b27aa1 100644 --- a/Bukkit/src/main/java/com/plotsquared/bukkit/entity/TameableStats.java +++ b/Bukkit/src/main/java/com/plotsquared/bukkit/entity/TameableStats.java @@ -31,4 +31,5 @@ class TameableStats { AnimalTamer owner; boolean tamed; + } diff --git a/Bukkit/src/main/java/com/plotsquared/bukkit/entity/TeleportEntityWrapper.java b/Bukkit/src/main/java/com/plotsquared/bukkit/entity/TeleportEntityWrapper.java index 5a3398106..6438e95fa 100644 --- a/Bukkit/src/main/java/com/plotsquared/bukkit/entity/TeleportEntityWrapper.java +++ b/Bukkit/src/main/java/com/plotsquared/bukkit/entity/TeleportEntityWrapper.java @@ -44,7 +44,8 @@ public class TeleportEntityWrapper extends EntityWrapper { super(entity); } - @Override public Entity spawn(final World world, final int xOffset, final int zOffset) { + @Override + public Entity spawn(final World world, final int xOffset, final int zOffset) { if (!getEntity().getLocation().getChunk().equals(oldLocation.getChunk())) { final Location oldLocation = this.oldLocation.clone(); oldLocation.add(xOffset, 0, xOffset); @@ -58,7 +59,8 @@ public class TeleportEntityWrapper extends EntityWrapper { return getEntity(); } - @Override public void saveEntity() { + @Override + public void saveEntity() { if (getEntity().hasMetadata("ps-tmp-teleport")) { this.oldLocation = (Location) this.getEntity().getMetadata("ps-tmp-teleport").get(0); } else { @@ -77,11 +79,13 @@ public class TeleportEntityWrapper extends EntityWrapper { this.getEntity().setInvulnerable(true); this.fireTicksOld = this.getEntity().getFireTicks(); this.livingTicksOld = this.getEntity().getTicksLived(); - this.getEntity().setMetadata("ps-tmp-teleport", - new FixedMetadataValue(BukkitPlatform.getPlugin(BukkitPlatform.class), oldLocation)); + this.getEntity().setMetadata( + "ps-tmp-teleport", + new FixedMetadataValue(BukkitPlatform.getPlugin(BukkitPlatform.class), oldLocation) + ); final Chunk newChunk = getNewChunk(); this.getEntity().teleport( - new Location(newChunk.getWorld(), newChunk.getX() << 4, 5000, newChunk.getZ() << 4)); + new Location(newChunk.getWorld(), newChunk.getX() << 4, 5000, newChunk.getZ() << 4)); } private Chunk getNewChunk() { @@ -115,4 +119,5 @@ public class TeleportEntityWrapper extends EntityWrapper { private Chunk getChunkRelative(final Chunk chunk, final int dx, final int dz) { return chunk.getWorld().getChunkAt(chunk.getX() + dx, chunk.getZ() + dz); } + } diff --git a/Bukkit/src/main/java/com/plotsquared/bukkit/generator/BlockStatePopulator.java b/Bukkit/src/main/java/com/plotsquared/bukkit/generator/BlockStatePopulator.java index 310ec5f49..44b7e8410 100644 --- a/Bukkit/src/main/java/com/plotsquared/bukkit/generator/BlockStatePopulator.java +++ b/Bukkit/src/main/java/com/plotsquared/bukkit/generator/BlockStatePopulator.java @@ -36,8 +36,8 @@ import com.sk89q.worldedit.bukkit.BukkitWorld; import org.bukkit.Chunk; import org.bukkit.World; import org.bukkit.generator.BlockPopulator; +import org.checkerframework.checker.nullness.qual.NonNull; -import javax.annotation.Nonnull; import java.util.Random; final class BlockStatePopulator extends BlockPopulator { @@ -47,12 +47,16 @@ final class BlockStatePopulator extends BlockPopulator { private QueueCoordinator queue; - public BlockStatePopulator(@Nonnull final IndependentPlotGenerator plotGenerator, @Nonnull final PlotAreaManager plotAreaManager) { + public BlockStatePopulator( + final @NonNull IndependentPlotGenerator plotGenerator, + final @NonNull PlotAreaManager plotAreaManager + ) { this.plotGenerator = plotGenerator; this.plotAreaManager = plotAreaManager; } - @Override public void populate(@Nonnull final World world, @Nonnull final Random random, @Nonnull final Chunk source) { + @Override + public void populate(final @NonNull World world, final @NonNull Random random, final @NonNull Chunk source) { if (this.queue == null) { this.queue = PlotSquared.platform().globalBlockQueue().getNewQueue(new BukkitWorld(world)); } diff --git a/Bukkit/src/main/java/com/plotsquared/bukkit/generator/BukkitAugmentedGenerator.java b/Bukkit/src/main/java/com/plotsquared/bukkit/generator/BukkitAugmentedGenerator.java index 8d2196483..15f7bb854 100644 --- a/Bukkit/src/main/java/com/plotsquared/bukkit/generator/BukkitAugmentedGenerator.java +++ b/Bukkit/src/main/java/com/plotsquared/bukkit/generator/BukkitAugmentedGenerator.java @@ -29,8 +29,8 @@ import com.plotsquared.core.generator.AugmentedUtils; import org.bukkit.Chunk; import org.bukkit.World; import org.bukkit.generator.BlockPopulator; +import org.checkerframework.checker.nullness.qual.NonNull; -import javax.annotation.Nonnull; import java.util.Random; public class BukkitAugmentedGenerator extends BlockPopulator { @@ -51,7 +51,8 @@ public class BukkitAugmentedGenerator extends BlockPopulator { } @Override - public void populate(@Nonnull World world, @Nonnull Random random, @Nonnull Chunk source) { + public void populate(@NonNull World world, @NonNull Random random, @NonNull Chunk source) { AugmentedUtils.generate(source, world.getName(), source.getX(), source.getZ(), null); } + } diff --git a/Bukkit/src/main/java/com/plotsquared/bukkit/generator/BukkitPlotGenerator.java b/Bukkit/src/main/java/com/plotsquared/bukkit/generator/BukkitPlotGenerator.java index 6dd42a2cd..d7b9c7024 100644 --- a/Bukkit/src/main/java/com/plotsquared/bukkit/generator/BukkitPlotGenerator.java +++ b/Bukkit/src/main/java/com/plotsquared/bukkit/generator/BukkitPlotGenerator.java @@ -41,30 +41,32 @@ import org.bukkit.World; import org.bukkit.block.Biome; import org.bukkit.generator.BlockPopulator; import org.bukkit.generator.ChunkGenerator; +import org.checkerframework.checker.nullness.qual.NonNull; -import javax.annotation.Nonnull; import java.util.ArrayList; import java.util.List; import java.util.Random; import java.util.Set; public class BukkitPlotGenerator extends ChunkGenerator - implements GeneratorWrapper { + implements GeneratorWrapper { - @SuppressWarnings("unused") public final boolean PAPER_ASYNC_SAFE = true; + @SuppressWarnings("unused") + public final boolean PAPER_ASYNC_SAFE = true; private final PlotAreaManager plotAreaManager; private final IndependentPlotGenerator plotGenerator; private final ChunkGenerator platformGenerator; private final boolean full; + private final String levelName; private List populators; private boolean loaded = false; - private final String levelName; - - public BukkitPlotGenerator(@Nonnull final String name, - @Nonnull final IndependentPlotGenerator generator, - @Nonnull final PlotAreaManager plotAreaManager) { + public BukkitPlotGenerator( + final @NonNull String name, + final @NonNull IndependentPlotGenerator generator, + final @NonNull PlotAreaManager plotAreaManager + ) { this.plotAreaManager = plotAreaManager; this.levelName = name; this.plotGenerator = generator; @@ -74,10 +76,10 @@ public class BukkitPlotGenerator extends ChunkGenerator this.full = true; } - public BukkitPlotGenerator(final String world, final ChunkGenerator cg, @Nonnull final PlotAreaManager plotAreaManager) { + public BukkitPlotGenerator(final String world, final ChunkGenerator cg, final @NonNull PlotAreaManager plotAreaManager) { if (cg instanceof BukkitPlotGenerator) { throw new IllegalArgumentException("ChunkGenerator: " + cg.getClass().getName() - + " is already a BukkitPlotGenerator!"); + + " is already a BukkitPlotGenerator!"); } this.plotAreaManager = plotAreaManager; this.levelName = world; @@ -86,23 +88,28 @@ public class BukkitPlotGenerator extends ChunkGenerator this.plotGenerator = new DelegatePlotGenerator(cg, world); } - @Override public void augment(PlotArea area) { + @Override + public void augment(PlotArea area) { BukkitAugmentedGenerator.get(BukkitUtil.getWorld(area.getWorldName())); } - @Override public boolean isFull() { + @Override + public boolean isFull() { return this.full; } - @Override public IndependentPlotGenerator getPlotGenerator() { + @Override + public IndependentPlotGenerator getPlotGenerator() { return this.plotGenerator; } - @Override public ChunkGenerator getPlatformGenerator() { + @Override + public ChunkGenerator getPlatformGenerator() { return this.platformGenerator; } - @Override @Nonnull public List getDefaultPopulators(@Nonnull World world) { + @Override + public @NonNull List getDefaultPopulators(@NonNull World world) { try { if (!this.loaded) { String name = world.getName(); @@ -146,9 +153,11 @@ public class BukkitPlotGenerator extends ChunkGenerator return toAdd; } - @Override @Nonnull - public ChunkData generateChunkData(@Nonnull World world, @Nonnull Random random, int x, int z, - @Nonnull BiomeGrid biome) { + @Override + public @NonNull ChunkData generateChunkData( + @NonNull World world, @NonNull Random random, int x, int z, + @NonNull BiomeGrid biome + ) { GenChunk result = new GenChunk(); if (this.getPlotGenerator() instanceof SingleWorldGenerator) { @@ -200,8 +209,8 @@ public class BukkitPlotGenerator extends ChunkGenerator PlotArea area = this.plotAreaManager.getPlotArea(world.getName(), null); if (area == null && (area = this.plotAreaManager.getPlotArea(this.levelName, null)) == null) { throw new IllegalStateException( - "Cannot regenerate chunk that does not belong to a plot area." + " Location: " + loc - + ", world: " + world); + "Cannot regenerate chunk that does not belong to a plot area." + " Location: " + loc + + ", world: " + world); } try { this.plotGenerator.generateChunk(result, area); @@ -212,7 +221,8 @@ public class BukkitPlotGenerator extends ChunkGenerator ChunkManager.postProcessChunk(loc, result); } - @Override public boolean canSpawn(@Nonnull final World world, final int x, final int z) { + @Override + public boolean canSpawn(final @NonNull World world, final int x, final int z) { return true; } @@ -236,7 +246,8 @@ public class BukkitPlotGenerator extends ChunkGenerator return true; } - @Override public String toString() { + @Override + public String toString() { if (this.platformGenerator == this) { return this.plotGenerator.getName(); } @@ -247,7 +258,8 @@ public class BukkitPlotGenerator extends ChunkGenerator } } - @Override public boolean equals(final Object obj) { + @Override + public boolean equals(final Object obj) { if (obj == null) { return false; } @@ -257,4 +269,5 @@ public class BukkitPlotGenerator extends ChunkGenerator public String getLevelName() { return this.levelName; } + } diff --git a/Bukkit/src/main/java/com/plotsquared/bukkit/generator/DelegatePlotGenerator.java b/Bukkit/src/main/java/com/plotsquared/bukkit/generator/DelegatePlotGenerator.java index 9de7ed5e8..f95f54c24 100644 --- a/Bukkit/src/main/java/com/plotsquared/bukkit/generator/DelegatePlotGenerator.java +++ b/Bukkit/src/main/java/com/plotsquared/bukkit/generator/DelegatePlotGenerator.java @@ -38,8 +38,8 @@ import org.bukkit.World; import org.bukkit.block.Biome; import org.bukkit.generator.BlockPopulator; import org.bukkit.generator.ChunkGenerator; +import org.checkerframework.checker.nullness.qual.NonNull; -import javax.annotation.Nonnull; import java.util.Random; final class DelegatePlotGenerator extends IndependentPlotGenerator { @@ -52,18 +52,22 @@ final class DelegatePlotGenerator extends IndependentPlotGenerator { this.world = world; } - @Override public void initialize(PlotArea area) { + @Override + public void initialize(PlotArea area) { } - @Override public String getName() { + @Override + public String getName() { return this.chunkGenerator.getClass().getName(); } - @Override public PlotArea getNewPlotArea(String world, String id, PlotId min, PlotId max) { + @Override + public PlotArea getNewPlotArea(String world, String id, PlotId min, PlotId max) { return PlotSquared.platform().defaultGenerator().getNewPlotArea(world, id, min, max); } - @Override public void generateChunk(final ScopedQueueCoordinator result, PlotArea settings) { + @Override + public void generateChunk(final ScopedQueueCoordinator result, PlotArea settings) { World world = BukkitUtil.getWorld(this.world); Location min = result.getMin(); int chunkX = min.getX() >> 4; @@ -71,21 +75,24 @@ final class DelegatePlotGenerator extends IndependentPlotGenerator { Random random = new Random(MathMan.pair((short) chunkX, (short) chunkZ)); try { ChunkGenerator.BiomeGrid grid = new ChunkGenerator.BiomeGrid() { - @Override public void setBiome(int x, int z, @Nonnull Biome biome) { + @Override + public void setBiome(int x, int z, @NonNull Biome biome) { result.setBiome(x, z, BukkitAdapter.adapt(biome)); } //do not annotate with Override until we discontinue support for 1.4.4 - public void setBiome(int x, int y, int z, @Nonnull Biome biome) { + public void setBiome(int x, int y, int z, @NonNull Biome biome) { result.setBiome(x, z, BukkitAdapter.adapt(biome)); } - @Override @Nonnull public Biome getBiome(int x, int z) { + @Override + public @NonNull Biome getBiome(int x, int z) { return Biome.FOREST; } - @Override public @Nonnull Biome getBiome(int x, int y, int z) { + @Override + public @NonNull Biome getBiome(int x, int y, int z) { return Biome.FOREST; } }; diff --git a/Bukkit/src/main/java/com/plotsquared/bukkit/inject/BackupModule.java b/Bukkit/src/main/java/com/plotsquared/bukkit/inject/BackupModule.java index 124087e4d..bdc64771b 100644 --- a/Bukkit/src/main/java/com/plotsquared/bukkit/inject/BackupModule.java +++ b/Bukkit/src/main/java/com/plotsquared/bukkit/inject/BackupModule.java @@ -40,10 +40,11 @@ public class BackupModule extends AbstractModule { private static final Logger logger = LoggerFactory.getLogger("P2/" + BackupModule.class.getSimpleName()); - @Override protected void configure() { + @Override + protected void configure() { try { install(new FactoryModuleBuilder() - .implement(BackupProfile.class, PlayerBackupProfile.class).build(PlayerBackupProfileFactory.class)); + .implement(BackupProfile.class, PlayerBackupProfile.class).build(PlayerBackupProfileFactory.class)); bind(BackupManager.class).to(SimpleBackupManager.class); } catch (final Exception e) { logger.error("Failed to initialize backup manager", e); diff --git a/Bukkit/src/main/java/com/plotsquared/bukkit/inject/BukkitModule.java b/Bukkit/src/main/java/com/plotsquared/bukkit/inject/BukkitModule.java index f7601c880..2f8025001 100644 --- a/Bukkit/src/main/java/com/plotsquared/bukkit/inject/BukkitModule.java +++ b/Bukkit/src/main/java/com/plotsquared/bukkit/inject/BukkitModule.java @@ -29,7 +29,6 @@ import com.google.inject.AbstractModule; import com.google.inject.Provides; import com.google.inject.Singleton; import com.google.inject.assistedinject.FactoryModuleBuilder; -import com.google.inject.assistedinject.FactoryProvider; import com.plotsquared.bukkit.BukkitPlatform; import com.plotsquared.bukkit.listener.SingleWorldListener; import com.plotsquared.bukkit.player.BukkitPlayerManager; @@ -73,32 +72,33 @@ import com.sk89q.worldedit.extension.platform.Actor; import org.bukkit.Bukkit; import org.bukkit.command.ConsoleCommandSender; import org.bukkit.plugin.java.JavaPlugin; - -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import org.checkerframework.checker.nullness.qual.NonNull; public class BukkitModule extends AbstractModule { private final BukkitPlatform bukkitPlatform; - public BukkitModule(@Nonnull final BukkitPlatform bukkitPlatform) { + public BukkitModule(final @NonNull BukkitPlatform bukkitPlatform) { this.bukkitPlatform = bukkitPlatform; } - @Override protected void configure() { + @Override + protected void configure() { bind(PlayerManager.class).to(BukkitPlayerManager.class); bind(JavaPlugin.class).toInstance(bukkitPlatform); bind(PlotPlatform.class).toInstance(bukkitPlatform); bind(BukkitPlatform.class).toInstance(bukkitPlatform); bind(IndependentPlotGenerator.class).annotatedWith(DefaultGenerator.class).to(HybridGen.class); // Console actor - @Nonnull ConsoleCommandSender console = Bukkit.getServer().getConsoleSender(); + @NonNull ConsoleCommandSender console = Bukkit.getServer().getConsoleSender(); WorldEditPlugin wePlugin = ((WorldEditPlugin) Bukkit.getPluginManager().getPlugin("WorldEdit")); bind(Actor.class).annotatedWith(ConsoleActor.class).toInstance(wePlugin.wrapCommandSender(console)); bind(InventoryUtil.class).to(BukkitInventoryUtil.class); bind(SetupUtils.class).to(BukkitSetupUtils.class); bind(WorldUtil.class).to(BukkitUtil.class); - install(new FactoryModuleBuilder().implement(ProgressSubscriber.class, DefaultProgressSubscriber.class).build(ProgressSubscriberFactory.class)); + install(new FactoryModuleBuilder() + .implement(ProgressSubscriber.class, DefaultProgressSubscriber.class) + .build(ProgressSubscriberFactory.class)); bind(GlobalBlockQueue.class).toInstance(new GlobalBlockQueue(QueueProvider.of(BukkitQueueCoordinator.class))); bind(ChunkManager.class).to(BukkitChunkManager.class); bind(RegionManager.class).to(BukkitRegionManager.class); @@ -114,11 +114,15 @@ public class BukkitModule extends AbstractModule { bind(PlotAreaManager.class).to(DefaultPlotAreaManager.class); } install(new FactoryModuleBuilder().build(HybridPlotWorldFactory.class)); - install(new FactoryModuleBuilder().implement(ChunkCoordinator.class, BukkitChunkCoordinator.class).build(ChunkCoordinatorFactory.class)); + install(new FactoryModuleBuilder() + .implement(ChunkCoordinator.class, BukkitChunkCoordinator.class) + .build(ChunkCoordinatorFactory.class)); install(new FactoryModuleBuilder().build(ChunkCoordinatorBuilderFactory.class)); } - @Provides @Singleton @Nonnull EconHandler provideEconHandler() { + @Provides + @Singleton + @NonNull EconHandler provideEconHandler() { if (Bukkit.getPluginManager().isPluginEnabled("Vault")) { try { return new BukkitEconHandler(); diff --git a/Bukkit/src/main/java/com/plotsquared/bukkit/inject/PermissionModule.java b/Bukkit/src/main/java/com/plotsquared/bukkit/inject/PermissionModule.java index 8aebc8aa1..3726b57fa 100644 --- a/Bukkit/src/main/java/com/plotsquared/bukkit/inject/PermissionModule.java +++ b/Bukkit/src/main/java/com/plotsquared/bukkit/inject/PermissionModule.java @@ -35,7 +35,9 @@ import org.bukkit.Bukkit; public class PermissionModule extends AbstractModule { - @Provides @Singleton PermissionHandler providePermissionHandler() { + @Provides + @Singleton + PermissionHandler providePermissionHandler() { try { if (Bukkit.getPluginManager().isPluginEnabled("Vault")) { return new VaultPermissionHandler(); diff --git a/Bukkit/src/main/java/com/plotsquared/bukkit/listener/BlockEventListener.java b/Bukkit/src/main/java/com/plotsquared/bukkit/listener/BlockEventListener.java index aa690bf06..3abb3ad1c 100644 --- a/Bukkit/src/main/java/com/plotsquared/bukkit/listener/BlockEventListener.java +++ b/Bukkit/src/main/java/com/plotsquared/bukkit/listener/BlockEventListener.java @@ -25,6 +25,7 @@ */ package com.plotsquared.bukkit.listener; +import com.google.inject.Inject; import com.plotsquared.bukkit.player.BukkitPlayer; import com.plotsquared.bukkit.util.BukkitUtil; import com.plotsquared.core.PlotSquared; @@ -102,9 +103,8 @@ import org.bukkit.event.world.StructureGrowEvent; import org.bukkit.material.Directional; import org.bukkit.projectiles.BlockProjectileSource; import org.bukkit.util.Vector; +import org.checkerframework.checker.nullness.qual.NonNull; -import javax.annotation.Nonnull; -import javax.inject.Inject; import java.util.Iterator; import java.util.List; import java.util.Objects; @@ -116,7 +116,8 @@ public class BlockEventListener implements Listener { private final PlotAreaManager plotAreaManager; private final WorldEdit worldEdit; - @Inject public BlockEventListener(@Nonnull final PlotAreaManager plotAreaManager, @Nonnull final WorldEdit worldEdit) { + @Inject + public BlockEventListener(final @NonNull PlotAreaManager plotAreaManager, final @NonNull WorldEdit worldEdit) { this.plotAreaManager = plotAreaManager; this.worldEdit = worldEdit; } @@ -140,7 +141,8 @@ public class BlockEventListener implements Listener { }, TaskTime.ticks(3L)); } - @EventHandler public void onRedstoneEvent(BlockRedstoneEvent event) { + @EventHandler + public void onRedstoneEvent(BlockRedstoneEvent event) { Block block = event.getBlock(); Location location = BukkitUtil.adapt(block.getLocation()); PlotArea area = location.getPlotArea(); @@ -281,19 +283,19 @@ public class BlockEventListener implements Listener { Plot plot = area.getPlot(location); if (plot != null) { if ((location.getY() > area.getMaxBuildHeight() || location.getY() < area - .getMinBuildHeight()) && !Permissions - .hasPermission(pp, Permission.PERMISSION_ADMIN_BUILD_HEIGHT_LIMIT)) { + .getMinBuildHeight()) && !Permissions + .hasPermission(pp, Permission.PERMISSION_ADMIN_BUILD_HEIGHT_LIMIT)) { event.setCancelled(true); pp.sendMessage( - TranslatableCaption.of("height.height_limit"), - Template.of("limit", String.valueOf(area.getMaxBuildHeight())) + TranslatableCaption.of("height.height_limit"), + Template.of("limit", String.valueOf(area.getMaxBuildHeight())) ); } if (!plot.hasOwner()) { if (!Permissions.hasPermission(pp, Permission.PERMISSION_ADMIN_BUILD_UNOWNED)) { pp.sendMessage( - TranslatableCaption.of("permission.no_permission_event"), - Template.of("node", String.valueOf(Permission.PERMISSION_ADMIN_BUILD_UNOWNED)) + TranslatableCaption.of("permission.no_permission_event"), + Template.of("node", String.valueOf(Permission.PERMISSION_ADMIN_BUILD_UNOWNED)) ); event.setCancelled(true); return; @@ -303,25 +305,25 @@ public class BlockEventListener implements Listener { if (place != null) { Block block = event.getBlock(); if (place.contains( - BlockTypeWrapper.get(BukkitAdapter.asBlockType(block.getType())))) { + BlockTypeWrapper.get(BukkitAdapter.asBlockType(block.getType())))) { return; } } if (!Permissions.hasPermission(pp, Permission.PERMISSION_ADMIN_BUILD_OTHER)) { pp.sendMessage( - TranslatableCaption.of("permission.no_permission_event"), - Template.of("node", String.valueOf(Permission.PERMISSION_ADMIN_BUILD_OTHER)) + TranslatableCaption.of("permission.no_permission_event"), + Template.of("node", String.valueOf(Permission.PERMISSION_ADMIN_BUILD_OTHER)) ); event.setCancelled(true); plot.debug(player.getName() + " could not place " + event.getBlock().getType() - + " because of the place flag"); + + " because of the place flag"); return; } } else if (Settings.Done.RESTRICT_BUILDING && DoneFlag.isDone(plot)) { if (!Permissions.hasPermission(pp, Permission.PERMISSION_ADMIN_BUILD_OTHER)) { pp.sendMessage( - TranslatableCaption.of("permission.no_permission_event"), - Template.of("node", String.valueOf(Permission.PERMISSION_ADMIN_BUILD_OTHER)) + TranslatableCaption.of("permission.no_permission_event"), + Template.of("node", String.valueOf(Permission.PERMISSION_ADMIN_BUILD_OTHER)) ); event.setCancelled(true); return; @@ -332,19 +334,20 @@ public class BlockEventListener implements Listener { if (block.getType().hasGravity()) { sendBlockChange(block.getLocation(), block.getBlockData()); plot.debug(event.getBlock().getType() - + " did not fall because of disable-physics = true"); + + " did not fall because of disable-physics = true"); } } } else if (!Permissions.hasPermission(pp, Permission.PERMISSION_ADMIN_BUILD_ROAD)) { pp.sendMessage( - TranslatableCaption.of("permission.no_permission_event"), - Template.of("node", String.valueOf(Permission.PERMISSION_ADMIN_BUILD_ROAD)) + TranslatableCaption.of("permission.no_permission_event"), + Template.of("node", String.valueOf(Permission.PERMISSION_ADMIN_BUILD_ROAD)) ); event.setCancelled(true); } } - @EventHandler(priority = EventPriority.LOWEST) public void blockDestroy(BlockBreakEvent event) { + @EventHandler(priority = EventPriority.LOWEST) + public void blockDestroy(BlockBreakEvent event) { Player player = event.getPlayer(); Location location = BukkitUtil.adapt(event.getBlock().getLocation()); PlotArea area = location.getPlotArea(); @@ -356,26 +359,26 @@ public class BlockEventListener implements Listener { BukkitPlayer plotPlayer = BukkitUtil.adapt(player); if (event.getBlock().getY() == 0) { if (!Permissions - .hasPermission(plotPlayer, Permission.PERMISSION_ADMIN_DESTROY_GROUNDLEVEL)) { + .hasPermission(plotPlayer, Permission.PERMISSION_ADMIN_DESTROY_GROUNDLEVEL)) { plotPlayer.sendMessage( - TranslatableCaption.of("permission.no_permission_event"), - Template.of("node", String.valueOf(Permission.PERMISSION_ADMIN_DESTROY_GROUNDLEVEL)) + TranslatableCaption.of("permission.no_permission_event"), + Template.of("node", String.valueOf(Permission.PERMISSION_ADMIN_DESTROY_GROUNDLEVEL)) ); event.setCancelled(true); return; } } else if ((location.getY() > area.getMaxBuildHeight() || location.getY() < area - .getMinBuildHeight()) && !Permissions - .hasPermission(plotPlayer, Permission.PERMISSION_ADMIN_BUILD_HEIGHT_LIMIT)) { + .getMinBuildHeight()) && !Permissions + .hasPermission(plotPlayer, Permission.PERMISSION_ADMIN_BUILD_HEIGHT_LIMIT)) { event.setCancelled(true); plotPlayer.sendMessage( - TranslatableCaption.of("height.height_limit"), - Template.of("limit", String.valueOf(area.getMaxBuildHeight())) + TranslatableCaption.of("height.height_limit"), + Template.of("limit", String.valueOf(area.getMaxBuildHeight())) ); } if (!plot.hasOwner()) { if (!Permissions - .hasPermission(plotPlayer, Permission.PERMISSION_ADMIN_DESTROY_UNOWNED, true)) { + .hasPermission(plotPlayer, Permission.PERMISSION_ADMIN_DESTROY_UNOWNED, true)) { event.setCancelled(true); } return; @@ -390,19 +393,19 @@ public class BlockEventListener implements Listener { } } if (Permissions - .hasPermission(plotPlayer, Permission.PERMISSION_ADMIN_DESTROY_OTHER)) { + .hasPermission(plotPlayer, Permission.PERMISSION_ADMIN_DESTROY_OTHER)) { return; } plotPlayer.sendMessage( - TranslatableCaption.of("permission.no_permission_event"), - Template.of("node", String.valueOf(Permission.PERMISSION_ADMIN_DESTROY_OTHER)) + TranslatableCaption.of("permission.no_permission_event"), + Template.of("node", String.valueOf(Permission.PERMISSION_ADMIN_DESTROY_OTHER)) ); event.setCancelled(true); } else if (Settings.Done.RESTRICT_BUILDING && DoneFlag.isDone(plot)) { if (!Permissions.hasPermission(plotPlayer, Permission.PERMISSION_ADMIN_BUILD_OTHER)) { plotPlayer.sendMessage( - TranslatableCaption.of("permission.no_permission_event"), - Template.of("node", String.valueOf(Permission.PERMISSION_ADMIN_DESTROY_OTHER)) + TranslatableCaption.of("permission.no_permission_event"), + Template.of("node", String.valueOf(Permission.PERMISSION_ADMIN_DESTROY_OTHER)) ); event.setCancelled(true); return; @@ -414,20 +417,21 @@ public class BlockEventListener implements Listener { if (Permissions.hasPermission(pp, Permission.PERMISSION_ADMIN_DESTROY_ROAD)) { return; } - if (this.worldEdit!= null && pp.getAttribute("worldedit")) { + if (this.worldEdit != null && pp.getAttribute("worldedit")) { if (player.getInventory().getItemInMainHand().getType() == Material - .getMaterial(this.worldEdit.getConfiguration().wandItem)) { + .getMaterial(this.worldEdit.getConfiguration().wandItem)) { return; } } pp.sendMessage( - TranslatableCaption.of("permission.no_permission_event"), - Template.of("node", String.valueOf(Permission.PERMISSION_ADMIN_DESTROY_ROAD)) + TranslatableCaption.of("permission.no_permission_event"), + Template.of("node", String.valueOf(Permission.PERMISSION_ADMIN_DESTROY_ROAD)) ); event.setCancelled(true); } - @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) public void onBlockSpread(BlockSpreadEvent event) { + @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) + public void onBlockSpread(BlockSpreadEvent event) { Block block = event.getBlock(); Location location = BukkitUtil.adapt(block.getLocation()); if (location.isPlotRoad()) { @@ -474,7 +478,9 @@ public class BlockEventListener implements Listener { @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) public void onBlockForm(BlockFormEvent event) { - if (event instanceof EntityBlockFormEvent) return; // handled below + if (event instanceof EntityBlockFormEvent) { + return; // handled below + } Block block = event.getBlock(); Location location = BukkitUtil.adapt(block.getLocation()); if (location.isPlotRoad()) { @@ -546,9 +552,11 @@ public class BlockEventListener implements Listener { if (allowed) { return; // player is not added but forming is allowed } - plot.debug(String.format("%s could not be formed because %s = false (entity is player)", + plot.debug(String.format( + "%s could not be formed because %s = false (entity is player)", event.getNewState().getType(), - flag == SnowFormFlag.class ? "snow-form" : "ice-form")); + flag == SnowFormFlag.class ? "snow-form" : "ice-form" + )); event.setCancelled(true); // player is not added and forming isn't allowed } return; // event is cancelled if not added and not allowed, otherwise forming is allowed @@ -557,9 +565,11 @@ public class BlockEventListener implements Listener { if (allowed) { return; } - plot.debug(String.format("%s could not be formed because %s = false (entity is not player)", + plot.debug(String.format( + "%s could not be formed because %s = false (entity is not player)", event.getNewState().getType(), - flag == SnowFormFlag.class ? "snow-form" : "ice-form")); + flag == SnowFormFlag.class ? "snow-form" : "ice-form" + )); event.setCancelled(true); } } @@ -592,7 +602,7 @@ public class BlockEventListener implements Listener { if (!plot.hasOwner()) { BukkitPlayer plotPlayer = BukkitUtil.adapt(player); if (Permissions - .hasPermission(plotPlayer, Permission.PERMISSION_ADMIN_DESTROY_UNOWNED)) { + .hasPermission(plotPlayer, Permission.PERMISSION_ADMIN_DESTROY_UNOWNED)) { return; } event.setCancelled(true); @@ -603,13 +613,13 @@ public class BlockEventListener implements Listener { List destroy = plot.getFlag(BreakFlag.class); Block block = event.getBlock(); if (destroy - .contains(BlockTypeWrapper.get(BukkitAdapter.asBlockType(block.getType()))) - || Permissions - .hasPermission(plotPlayer, Permission.PERMISSION_ADMIN_DESTROY_OTHER)) { + .contains(BlockTypeWrapper.get(BukkitAdapter.asBlockType(block.getType()))) + || Permissions + .hasPermission(plotPlayer, Permission.PERMISSION_ADMIN_DESTROY_OTHER)) { return; } plot.debug(player.getName() + " could not break " + block.getType() - + " because it was not in the break flag"); + + " because it was not in the break flag"); event.setCancelled(true); return; } @@ -622,7 +632,8 @@ public class BlockEventListener implements Listener { event.setCancelled(true); } - @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) public void onFade(BlockFadeEvent event) { + @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) + public void onFade(BlockFadeEvent event) { Block block = event.getBlock(); Location location = BukkitUtil.adapt(block.getLocation()); PlotArea area = location.getPlotArea(); @@ -681,7 +692,8 @@ public class BlockEventListener implements Listener { } } - @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) public void onChange(BlockFromToEvent event) { + @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) + public void onChange(BlockFromToEvent event) { Block from = event.getBlock(); // Check liquid flow flag inside of origin plot too @@ -689,7 +701,9 @@ public class BlockEventListener implements Listener { final PlotArea fromArea = fLocation.getPlotArea(); if (fromArea != null) { final Plot plot = fromArea.getOwnedPlot(fLocation); - if (plot != null && plot.getFlag(LiquidFlowFlag.class) == LiquidFlowFlag.FlowStatus.DISABLED && event.getBlock().isLiquid()) { + if (plot != null && plot.getFlag(LiquidFlowFlag.class) == LiquidFlowFlag.FlowStatus.DISABLED && event + .getBlock() + .isLiquid()) { plot.debug("Liquid could now flow because liquid-flow = disabled"); event.setCancelled(true); return; @@ -737,20 +751,21 @@ public class BlockEventListener implements Listener { <-----O-----> x */ if (BukkitUtil.adapt(location.clone().add(-1, 0, 1) /* A */).getPlot() != null - || BukkitUtil.adapt(location.clone().add(1, 0, 0) /* B */).getPlot() != null - || BukkitUtil.adapt(location.clone().add(1, 0, 1) /* C */).getPlot() != null - || BukkitUtil.adapt(location.clone().add(-1, 0, 0) /* D */).getPlot() != null - || BukkitUtil.adapt(location.clone().add(1, 0, 0) /* E */).getPlot() != null - || BukkitUtil.adapt(location.clone().add(-1, 0, -1) /* F */).getPlot() != null - || BukkitUtil.adapt(location.clone().add(0, 0, -1) /* G */).getPlot() != null - || BukkitUtil.adapt(location.clone().add(1, 0, 1) /* H */).getPlot() != null) { + || BukkitUtil.adapt(location.clone().add(1, 0, 0) /* B */).getPlot() != null + || BukkitUtil.adapt(location.clone().add(1, 0, 1) /* C */).getPlot() != null + || BukkitUtil.adapt(location.clone().add(-1, 0, 0) /* D */).getPlot() != null + || BukkitUtil.adapt(location.clone().add(1, 0, 0) /* E */).getPlot() != null + || BukkitUtil.adapt(location.clone().add(-1, 0, -1) /* F */).getPlot() != null + || BukkitUtil.adapt(location.clone().add(0, 0, -1) /* G */).getPlot() != null + || BukkitUtil.adapt(location.clone().add(1, 0, 1) /* H */).getPlot() != null) { event.setCancelled(true); } } } - @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) public void onGrow(BlockGrowEvent event) { + @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) + public void onGrow(BlockGrowEvent event) { Block block = event.getBlock(); Location location = BukkitUtil.adapt(block.getLocation()); if (location.isUnownedPlotArea()) { @@ -758,7 +773,8 @@ public class BlockEventListener implements Listener { } } - @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) public void onBlockPistonExtend(BlockPistonExtendEvent event) { + @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) + public void onBlockPistonExtend(BlockPistonExtendEvent event) { Block block = event.getBlock(); Location location = BukkitUtil.adapt(block.getLocation()); BlockFace face = event.getDirection(); @@ -770,7 +786,9 @@ public class BlockEventListener implements Listener { } for (Block block1 : event.getBlocks()) { Location bloc = BukkitUtil.adapt(block1.getLocation()); - if (bloc.isPlotArea() || bloc.add(relative.getBlockX(), relative.getBlockY(), relative.getBlockZ()).isPlotArea()) { + if (bloc.isPlotArea() || bloc + .add(relative.getBlockX(), relative.getBlockY(), relative.getBlockZ()) + .isPlotArea()) { event.setCancelled(true); return; } @@ -789,12 +807,15 @@ public class BlockEventListener implements Listener { } for (Block block1 : event.getBlocks()) { Location bloc = BukkitUtil.adapt(block1.getLocation()); - if (!area.contains(bloc.getX(), bloc.getZ()) || !area.contains(bloc.getX() + relative.getBlockX(), bloc.getZ() + relative.getBlockZ())) { + if (!area.contains(bloc.getX(), bloc.getZ()) || !area.contains( + bloc.getX() + relative.getBlockX(), + bloc.getZ() + relative.getBlockZ() + )) { event.setCancelled(true); return; } if (!plot.equals(area.getOwnedPlot(bloc)) || !plot - .equals(area.getOwnedPlot(bloc.add(relative.getBlockX(), relative.getBlockY(), relative.getBlockZ())))) { + .equals(area.getOwnedPlot(bloc.add(relative.getBlockX(), relative.getBlockY(), relative.getBlockZ())))) { event.setCancelled(true); return; } @@ -807,7 +828,8 @@ public class BlockEventListener implements Listener { } } - @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) public void onBlockPistonRetract(BlockPistonRetractEvent event) { + @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) + public void onBlockPistonRetract(BlockPistonRetractEvent event) { Block block = event.getBlock(); Location location = BukkitUtil.adapt(block.getLocation()); BlockFace face = event.getDirection(); @@ -819,7 +841,9 @@ public class BlockEventListener implements Listener { } for (Block block1 : event.getBlocks()) { Location bloc = BukkitUtil.adapt(block1.getLocation()); - if (bloc.isPlotArea() || bloc.add(relative.getBlockX(), relative.getBlockY(), relative.getBlockZ()).isPlotArea()) { + if (bloc.isPlotArea() || bloc + .add(relative.getBlockX(), relative.getBlockY(), relative.getBlockZ()) + .isPlotArea()) { event.setCancelled(true); return; } @@ -833,19 +857,23 @@ public class BlockEventListener implements Listener { } for (Block block1 : event.getBlocks()) { Location bloc = BukkitUtil.adapt(block1.getLocation()); - if (!area.contains(bloc.getX(), bloc.getZ()) || !area.contains(bloc.getX() + relative.getBlockX(), bloc.getZ() + relative.getBlockZ())) { + if (!area.contains(bloc.getX(), bloc.getZ()) || !area.contains( + bloc.getX() + relative.getBlockX(), + bloc.getZ() + relative.getBlockZ() + )) { event.setCancelled(true); return; } if (!plot.equals(area.getOwnedPlot(bloc)) || !plot - .equals(area.getOwnedPlot(bloc.add(relative.getBlockX(), relative.getBlockY(), relative.getBlockZ())))) { + .equals(area.getOwnedPlot(bloc.add(relative.getBlockX(), relative.getBlockY(), relative.getBlockZ())))) { event.setCancelled(true); return; } } } - @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) public void onBlockDispense(BlockDispenseEvent event) { + @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) + public void onBlockDispense(BlockDispenseEvent event) { Material type = event.getItem().getType(); switch (type) { case SHULKER_BOX: @@ -891,7 +919,8 @@ public class BlockEventListener implements Listener { } } - @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) public void onStructureGrow(StructureGrowEvent event) { + @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) + public void onStructureGrow(StructureGrowEvent event) { if (!this.plotAreaManager.hasPlotArea(event.getWorld().getName())) { return; } @@ -947,7 +976,8 @@ public class BlockEventListener implements Listener { } } - @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) public void onBigBoom(BlockExplodeEvent event) { + @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) + public void onBigBoom(BlockExplodeEvent event) { Block block = event.getBlock(); Location location = BukkitUtil.adapt(block.getLocation()); String world = location.getWorldName(); @@ -975,7 +1005,8 @@ public class BlockEventListener implements Listener { event.blockList().removeIf(blox -> !plot.equals(area.getOwnedPlot(BukkitUtil.adapt(blox.getLocation())))); } - @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) public void onBlockBurn(BlockBurnEvent event) { + @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) + public void onBlockBurn(BlockBurnEvent event) { Block block = event.getBlock(); Location location = BukkitUtil.adapt(block.getLocation()); @@ -1016,24 +1047,24 @@ public class BlockEventListener implements Listener { if (plot == null) { if (!Permissions.hasPermission(pp, Permission.PERMISSION_ADMIN_BUILD_ROAD)) { pp.sendMessage( - TranslatableCaption.of("permission.no_permission_event"), - Template.of("node", String.valueOf(Permission.PERMISSION_ADMIN_BUILD_ROAD)) + TranslatableCaption.of("permission.no_permission_event"), + Template.of("node", String.valueOf(Permission.PERMISSION_ADMIN_BUILD_ROAD)) ); event.setCancelled(true); } } else if (!plot.hasOwner()) { if (!Permissions.hasPermission(pp, Permission.PERMISSION_ADMIN_BUILD_UNOWNED)) { pp.sendMessage( - TranslatableCaption.of("permission.no_permission_event"), - Template.of("node", String.valueOf(Permission.PERMISSION_ADMIN_BUILD_UNOWNED)) + TranslatableCaption.of("permission.no_permission_event"), + Template.of("node", String.valueOf(Permission.PERMISSION_ADMIN_BUILD_UNOWNED)) ); event.setCancelled(true); } } else if (!plot.isAdded(pp.getUUID())) { if (!Permissions.hasPermission(pp, Permission.PERMISSION_ADMIN_BUILD_OTHER)) { pp.sendMessage( - TranslatableCaption.of("permission.no_permission_event"), - Template.of("node", String.valueOf(Permission.PERMISSION_ADMIN_BUILD_OTHER)) + TranslatableCaption.of("permission.no_permission_event"), + Template.of("node", String.valueOf(Permission.PERMISSION_ADMIN_BUILD_OTHER)) ); event.setCancelled(true); } @@ -1061,7 +1092,7 @@ public class BlockEventListener implements Listener { location = BukkitUtil.adapt(shooter.getLocation()); } else if (fireball.getShooter() instanceof BlockProjectileSource) { Block shooter = - ((BlockProjectileSource) fireball.getShooter()).getBlock(); + ((BlockProjectileSource) fireball.getShooter()).getBlock(); location = BukkitUtil.adapt(shooter.getLocation()); } if (location != null && !plot.equals(location.getPlot())) { @@ -1074,18 +1105,19 @@ public class BlockEventListener implements Listener { Block ignitingBlock = event.getIgnitingBlock(); Plot plotIgnited = BukkitUtil.adapt(ignitingBlock.getLocation()).getPlot(); if (igniteCause == BlockIgniteEvent.IgniteCause.FLINT_AND_STEEL && ( - !plot.getFlag(BlockIgnitionFlag.class) || plotIgnited == null || !plotIgnited - .equals(plot)) || (igniteCause == BlockIgniteEvent.IgniteCause.SPREAD - || igniteCause == BlockIgniteEvent.IgniteCause.LAVA) && ( - !plot.getFlag(BlockIgnitionFlag.class) || plotIgnited == null || !plotIgnited - .equals(plot))) { + !plot.getFlag(BlockIgnitionFlag.class) || plotIgnited == null || !plotIgnited + .equals(plot)) || (igniteCause == BlockIgniteEvent.IgniteCause.SPREAD + || igniteCause == BlockIgniteEvent.IgniteCause.LAVA) && ( + !plot.getFlag(BlockIgnitionFlag.class) || plotIgnited == null || !plotIgnited + .equals(plot))) { event.setCancelled(true); } } } } - @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) public void onLeavesDecay(LeavesDecayEvent event) { + @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) + public void onLeavesDecay(LeavesDecayEvent event) { Block block = event.getBlock(); Location location = BukkitUtil.adapt(block.getLocation()); @@ -1103,4 +1135,5 @@ public class BlockEventListener implements Listener { } } + } diff --git a/Bukkit/src/main/java/com/plotsquared/bukkit/listener/ChunkListener.java b/Bukkit/src/main/java/com/plotsquared/bukkit/listener/ChunkListener.java index a90387c82..b3e507dce 100644 --- a/Bukkit/src/main/java/com/plotsquared/bukkit/listener/ChunkListener.java +++ b/Bukkit/src/main/java/com/plotsquared/bukkit/listener/ChunkListener.java @@ -54,10 +54,10 @@ import org.bukkit.event.entity.CreatureSpawnEvent; import org.bukkit.event.entity.ItemSpawnEvent; import org.bukkit.event.world.ChunkLoadEvent; import org.bukkit.event.world.ChunkUnloadEvent; +import org.checkerframework.checker.nullness.qual.NonNull; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import javax.annotation.Nonnull; import java.lang.reflect.Method; import java.util.HashSet; import java.util.Objects; @@ -76,7 +76,8 @@ public class ChunkListener implements Listener { private Chunk lastChunk; private boolean ignoreUnload = false; - @Inject public ChunkListener(@Nonnull final PlotAreaManager plotAreaManager) { + @Inject + public ChunkListener(final @NonNull PlotAreaManager plotAreaManager) { this.plotAreaManager = plotAreaManager; if (Settings.Chunk_Processor.AUTO_TRIM) { try { @@ -105,11 +106,11 @@ public class ChunkListener implements Listener { Object w = world.getClass().getDeclaredMethod("getHandle").invoke(world); Object chunkMap = w.getClass().getDeclaredMethod("getPlayerChunkMap").invoke(w); Method methodIsChunkInUse = - chunkMap.getClass().getDeclaredMethod("isChunkInUse", int.class, int.class); + chunkMap.getClass().getDeclaredMethod("isChunkInUse", int.class, int.class); Chunk[] chunks = world.getLoadedChunks(); for (Chunk chunk : chunks) { if ((boolean) methodIsChunkInUse - .invoke(chunkMap, chunk.getX(), chunk.getZ())) { + .invoke(chunkMap, chunk.getX(), chunk.getZ())) { continue; } int x = chunk.getX(); @@ -179,7 +180,8 @@ public class ChunkListener implements Listener { return plot != null && plot.hasOwner(); } - @EventHandler public void onChunkUnload(ChunkUnloadEvent event) { + @EventHandler + public void onChunkUnload(ChunkUnloadEvent event) { if (ignoreUnload) { return; } @@ -197,11 +199,13 @@ public class ChunkListener implements Listener { } } - @EventHandler public void onChunkLoad(ChunkLoadEvent event) { + @EventHandler + public void onChunkLoad(ChunkLoadEvent event) { processChunk(event.getChunk(), false); } - @EventHandler(priority = EventPriority.LOWEST) public void onItemSpawn(ItemSpawnEvent event) { + @EventHandler(priority = EventPriority.LOWEST) + public void onItemSpawn(ItemSpawnEvent event) { Item entity = event.getEntity(); PaperLib.getChunkAtAsync(event.getLocation()).thenAccept(chunk -> { if (chunk == this.lastChunk) { @@ -306,10 +310,11 @@ public class ChunkListener implements Listener { return true; } - for (int i = 0 ; i < (tiles.length - Settings.Chunk_Processor.MAX_TILES); i++) { + for (int i = 0; i < (tiles.length - Settings.Chunk_Processor.MAX_TILES); i++) { tiles[i].getBlock().setType(Material.AIR, false); } } return false; } + } diff --git a/Bukkit/src/main/java/com/plotsquared/bukkit/listener/EntityEventListener.java b/Bukkit/src/main/java/com/plotsquared/bukkit/listener/EntityEventListener.java index df829d1b6..3c2988dae 100644 --- a/Bukkit/src/main/java/com/plotsquared/bukkit/listener/EntityEventListener.java +++ b/Bukkit/src/main/java/com/plotsquared/bukkit/listener/EntityEventListener.java @@ -25,6 +25,7 @@ */ package com.plotsquared.bukkit.listener; +import com.google.inject.Inject; import com.plotsquared.bukkit.util.BukkitEntityUtil; import com.plotsquared.bukkit.util.BukkitUtil; import com.plotsquared.core.PlotSquared; @@ -60,9 +61,8 @@ import org.bukkit.event.vehicle.VehicleCreateEvent; import org.bukkit.metadata.FixedMetadataValue; import org.bukkit.metadata.MetadataValue; import org.bukkit.plugin.Plugin; +import org.checkerframework.checker.nullness.qual.NonNull; -import javax.annotation.Nonnull; -import javax.inject.Inject; import java.util.Iterator; import java.util.List; @@ -72,20 +72,28 @@ public class EntityEventListener implements Listener { private final PlotAreaManager plotAreaManager; private float lastRadius; - @Inject public EntityEventListener(@Nonnull final PlotAreaManager plotAreaManager) { + @Inject + public EntityEventListener(final @NonNull PlotAreaManager plotAreaManager) { this.plotAreaManager = plotAreaManager; } - @EventHandler(priority = EventPriority.HIGHEST) public void onEntityCombustByEntity(EntityCombustByEntityEvent event) { + @EventHandler(priority = EventPriority.HIGHEST) + public void onEntityCombustByEntity(EntityCombustByEntityEvent event) { EntityDamageByEntityEvent eventChange = - new EntityDamageByEntityEvent(event.getCombuster(), event.getEntity(), EntityDamageEvent.DamageCause.FIRE_TICK, event.getDuration()); + new EntityDamageByEntityEvent( + event.getCombuster(), + event.getEntity(), + EntityDamageEvent.DamageCause.FIRE_TICK, + event.getDuration() + ); onEntityDamageByEntityEvent(eventChange); if (eventChange.isCancelled()) { event.setCancelled(true); } } - @EventHandler(priority = EventPriority.HIGHEST) public void onEntityDamageByEntityEvent(EntityDamageByEntityEvent event) { + @EventHandler(priority = EventPriority.HIGHEST) + public void onEntityDamageByEntityEvent(EntityDamageByEntityEvent event) { Entity damager = event.getDamager(); Location location = BukkitUtil.adapt(damager.getLocation()); if (!this.plotAreaManager.hasPlotArea(location.getWorldName())) { @@ -115,7 +123,8 @@ public class EntityEventListener implements Listener { } } - @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) public void creatureSpawnEvent(CreatureSpawnEvent event) { + @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) + public void creatureSpawnEvent(CreatureSpawnEvent event) { Entity entity = event.getEntity(); Location location = BukkitUtil.adapt(entity.getLocation()); PlotArea area = location.getPlotArea(); @@ -185,7 +194,8 @@ public class EntityEventListener implements Listener { } } - @EventHandler(ignoreCancelled = true, priority = EventPriority.HIGHEST) public void onEntityFall(EntityChangeBlockEvent event) { + @EventHandler(ignoreCancelled = true, priority = EventPriority.HIGHEST) + public void onEntityFall(EntityChangeBlockEvent event) { if (event.getEntityType() != EntityType.FALLING_BLOCK) { return; } @@ -227,7 +237,8 @@ public class EntityEventListener implements Listener { } } - @EventHandler(priority = EventPriority.HIGH) public void onDamage(EntityDamageEvent event) { + @EventHandler(priority = EventPriority.HIGH) + public void onDamage(EntityDamageEvent event) { if (event.getEntityType() != EntityType.PLAYER) { return; } @@ -249,7 +260,8 @@ public class EntityEventListener implements Listener { } } - @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) public void onBigBoom(EntityExplodeEvent event) { + @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) + public void onBigBoom(EntityExplodeEvent event) { Location location = BukkitUtil.adapt(event.getLocation()); PlotArea area = location.getPlotArea(); boolean plotArea = location.isPlotArea(); @@ -313,11 +325,13 @@ public class EntityEventListener implements Listener { } } - @EventHandler public void onPrime(ExplosionPrimeEvent event) { + @EventHandler + public void onPrime(ExplosionPrimeEvent event) { this.lastRadius = event.getRadius() + 1; } - @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) public void onVehicleCreate(VehicleCreateEvent event) { + @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) + public void onVehicleCreate(VehicleCreateEvent event) { Vehicle entity = event.getVehicle(); Location location = BukkitUtil.adapt(entity.getLocation()); PlotArea area = location.getPlotArea(); @@ -333,4 +347,5 @@ public class EntityEventListener implements Listener { entity.setMetadata("plot", new FixedMetadataValue((Plugin) PlotSquared.platform(), plot)); } } + } diff --git a/Bukkit/src/main/java/com/plotsquared/bukkit/listener/EntitySpawnListener.java b/Bukkit/src/main/java/com/plotsquared/bukkit/listener/EntitySpawnListener.java index 9e5f2d373..151c2f40a 100644 --- a/Bukkit/src/main/java/com/plotsquared/bukkit/listener/EntitySpawnListener.java +++ b/Bukkit/src/main/java/com/plotsquared/bukkit/listener/EntitySpawnListener.java @@ -54,8 +54,8 @@ import org.bukkit.event.world.ChunkLoadEvent; import org.bukkit.metadata.FixedMetadataValue; import org.bukkit.metadata.MetadataValue; import org.bukkit.plugin.Plugin; +import org.checkerframework.checker.nullness.qual.NonNull; -import javax.annotation.Nonnull; import java.util.List; public class EntitySpawnListener implements Listener { @@ -66,7 +66,7 @@ public class EntitySpawnListener implements Listener { private static String areaName = null; public static void testNether(final Entity entity) { - @Nonnull World world = entity.getWorld(); + @NonNull World world = entity.getWorld(); if (world.getEnvironment() != World.Environment.NETHER && world.getEnvironment() != World.Environment.THE_END) { return; } @@ -74,7 +74,7 @@ public class EntitySpawnListener implements Listener { } public static void testCreate(final Entity entity) { - @Nonnull World world = entity.getWorld(); + @NonNull World world = entity.getWorld(); if (areaName == world.getName()) { } else { areaName = world.getName(); @@ -87,7 +87,7 @@ public class EntitySpawnListener implements Listener { } public static void test(Entity entity) { - @Nonnull World world = entity.getWorld(); + @NonNull World world = entity.getWorld(); List meta = entity.getMetadata(KEY); if (meta.isEmpty()) { if (PlotSquared.get().getPlotAreaManager().hasPlotArea(world.getName())) { @@ -122,7 +122,8 @@ public class EntitySpawnListener implements Listener { } } - @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) public void creatureSpawnEvent(EntitySpawnEvent event) { + @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) + public void creatureSpawnEvent(EntitySpawnEvent event) { Entity entity = event.getEntity(); Location location = BukkitUtil.adapt(entity.getLocation()); PlotArea area = location.getPlotArea(); @@ -166,39 +167,47 @@ public class EntitySpawnListener implements Listener { } } - @EventHandler public void onChunkLoad(ChunkLoadEvent event) { - @Nonnull Chunk chunk = event.getChunk(); + @EventHandler + public void onChunkLoad(ChunkLoadEvent event) { + @NonNull Chunk chunk = event.getChunk(); for (final Entity entity : chunk.getEntities()) { testCreate(entity); } } - @EventHandler public void onVehicle(VehicleUpdateEvent event) { + @EventHandler + public void onVehicle(VehicleUpdateEvent event) { testNether(event.getVehicle()); } - @EventHandler public void onVehicle(VehicleCreateEvent event) { + @EventHandler + public void onVehicle(VehicleCreateEvent event) { testCreate(event.getVehicle()); } - @EventHandler public void onVehicle(VehicleBlockCollisionEvent event) { + @EventHandler + public void onVehicle(VehicleBlockCollisionEvent event) { testNether(event.getVehicle()); } - @EventHandler public void onTeleport(EntityTeleportEvent event) { + @EventHandler + public void onTeleport(EntityTeleportEvent event) { Entity ent = event.getEntity(); if (ent instanceof Vehicle || ent instanceof ArmorStand) { testNether(event.getEntity()); } } - @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) public void vehicleMove(VehicleMoveEvent event) { + @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) + public void vehicleMove(VehicleMoveEvent event) { testNether(event.getVehicle()); } - @EventHandler public void spawn(CreatureSpawnEvent event) { + @EventHandler + public void spawn(CreatureSpawnEvent event) { if (event.getEntityType() == EntityType.ARMOR_STAND) { testCreate(event.getEntity()); } } + } diff --git a/Bukkit/src/main/java/com/plotsquared/bukkit/listener/ForceFieldListener.java b/Bukkit/src/main/java/com/plotsquared/bukkit/listener/ForceFieldListener.java index ea1dd9216..b1b8af763 100644 --- a/Bukkit/src/main/java/com/plotsquared/bukkit/listener/ForceFieldListener.java +++ b/Bukkit/src/main/java/com/plotsquared/bukkit/listener/ForceFieldListener.java @@ -28,8 +28,8 @@ package com.plotsquared.bukkit.listener; import com.google.common.collect.Iterables; import com.plotsquared.bukkit.player.BukkitPlayer; import com.plotsquared.bukkit.util.BukkitUtil; -import com.plotsquared.core.permissions.Permission; import com.plotsquared.core.location.Location; +import com.plotsquared.core.permissions.Permission; import com.plotsquared.core.player.PlotPlayer; import com.plotsquared.core.plot.Plot; import com.plotsquared.core.plot.flag.implementations.ForcefieldFlag; @@ -47,10 +47,10 @@ public class ForceFieldListener { private static Set getNearbyPlayers(Player player, Plot plot) { Set players = new HashSet<>(); for (Player nearPlayer : Iterables - .filter(player.getNearbyEntities(5d, 5d, 5d), Player.class)) { + .filter(player.getNearbyEntities(5d, 5d, 5d), Player.class)) { PlotPlayer plotPlayer; if ((plotPlayer = BukkitUtil.adapt(nearPlayer)) == null || !plot - .equals(plotPlayer.getCurrentPlot())) { + .equals(plotPlayer.getCurrentPlot())) { continue; } if (!plot.isAdded(plotPlayer.getUUID())) { @@ -62,10 +62,10 @@ public class ForceFieldListener { private static PlotPlayer hasNearbyPermitted(Player player, Plot plot) { for (Player nearPlayer : Iterables - .filter(player.getNearbyEntities(5d, 5d, 5d), Player.class)) { + .filter(player.getNearbyEntities(5d, 5d, 5d), Player.class)) { PlotPlayer plotPlayer; if ((plotPlayer = BukkitUtil.adapt(nearPlayer)) == null || !plot - .equals(plotPlayer.getCurrentPlot())) { + .equals(plotPlayer.getCurrentPlot())) { continue; } if (plot.isAdded(plotPlayer.getUUID())) { @@ -112,9 +112,9 @@ public class ForceFieldListener { Set players = getNearbyPlayers(player, plot); for (PlotPlayer oPlayer : players) { if (!Permissions - .hasPermission(oPlayer, Permission.PERMISSION_ADMIN_ENTRY_FORCEFIELD)) { + .hasPermission(oPlayer, Permission.PERMISSION_ADMIN_ENTRY_FORCEFIELD)) { ((BukkitPlayer) oPlayer).player - .setVelocity(calculateVelocity(plotPlayer, oPlayer)); + .setVelocity(calculateVelocity(plotPlayer, oPlayer)); } } } else { @@ -123,10 +123,11 @@ public class ForceFieldListener { return; } if (!Permissions - .hasPermission(plotPlayer, Permission.PERMISSION_ADMIN_ENTRY_FORCEFIELD)) { + .hasPermission(plotPlayer, Permission.PERMISSION_ADMIN_ENTRY_FORCEFIELD)) { player.setVelocity(calculateVelocity(oPlayer, plotPlayer)); } } } } + } diff --git a/Bukkit/src/main/java/com/plotsquared/bukkit/listener/PaperListener.java b/Bukkit/src/main/java/com/plotsquared/bukkit/listener/PaperListener.java index 7cf95618e..9da845971 100644 --- a/Bukkit/src/main/java/com/plotsquared/bukkit/listener/PaperListener.java +++ b/Bukkit/src/main/java/com/plotsquared/bukkit/listener/PaperListener.java @@ -60,8 +60,8 @@ import org.bukkit.event.Listener; import org.bukkit.event.block.BlockPlaceEvent; import org.bukkit.event.entity.CreatureSpawnEvent; import org.bukkit.projectiles.ProjectileSource; +import org.checkerframework.checker.nullness.qual.NonNull; -import javax.annotation.Nonnull; import java.util.ArrayList; import java.util.Collection; import java.util.List; @@ -77,11 +77,13 @@ public class PaperListener implements Listener { private final PlotAreaManager plotAreaManager; private Chunk lastChunk; - @Inject public PaperListener(@Nonnull final PlotAreaManager plotAreaManager) { + @Inject + public PaperListener(final @NonNull PlotAreaManager plotAreaManager) { this.plotAreaManager = plotAreaManager; } - - @EventHandler public void onEntityPathfind(EntityPathfindEvent event) { + + @EventHandler + public void onEntityPathfind(EntityPathfindEvent event) { if (!Settings.Paper_Components.ENTITY_PATHING) { return; } @@ -114,7 +116,8 @@ public class PaperListener implements Listener { event.setCancelled(true); } - @EventHandler public void onEntityPathfind(SlimePathfindEvent event) { + @EventHandler + public void onEntityPathfind(SlimePathfindEvent event) { if (!Settings.Paper_Components.ENTITY_PATHING) { return; } @@ -155,7 +158,8 @@ public class PaperListener implements Listener { event.setCancelled(true); } - @EventHandler public void onPreCreatureSpawnEvent(PreCreatureSpawnEvent event) { + @EventHandler + public void onPreCreatureSpawnEvent(PreCreatureSpawnEvent event) { if (!Settings.Paper_Components.CREATURE_SPAWN) { return; } @@ -269,7 +273,8 @@ public class PaperListener implements Listener { } } - @EventHandler public void onPreSpawnerSpawnEvent(PreSpawnerSpawnEvent event) { + @EventHandler + public void onPreSpawnerSpawnEvent(PreSpawnerSpawnEvent event) { if (Settings.Paper_Components.SPAWNER_SPAWN) { Location location = BukkitUtil.adapt(event.getSpawnerLocation()); PlotArea area = location.getPlotArea(); @@ -280,7 +285,8 @@ public class PaperListener implements Listener { } } - @EventHandler(priority = EventPriority.HIGHEST) public void onBlockPlace(BlockPlaceEvent event) { + @EventHandler(priority = EventPriority.HIGHEST) + public void onBlockPlace(BlockPlaceEvent event) { if (!Settings.Paper_Components.TILE_ENTITY_CHECK || !Settings.Enabled_Components.CHUNK_PROCESSOR) { return; } @@ -310,7 +316,8 @@ public class PaperListener implements Listener { * * @param event Paper's PlayerLaunchProjectileEvent */ - @EventHandler public void onProjectileLaunch(PlayerLaunchProjectileEvent event) { + @EventHandler + public void onProjectileLaunch(PlayerLaunchProjectileEvent event) { if (!Settings.Paper_Components.PLAYER_PROJECTILE) { return; } @@ -334,7 +341,8 @@ public class PaperListener implements Listener { } } - @EventHandler public void onAsyncTabCompletion(final AsyncTabCompleteEvent event) { + @EventHandler + public void onAsyncTabCompletion(final AsyncTabCompleteEvent event) { if (!Settings.Paper_Components.ASYNC_TAB_COMPLETION) { return; } @@ -352,7 +360,7 @@ public class PaperListener implements Listener { if (unprocessedArgs.length == 1) { return; // We don't do anything in this case } else if (!Settings.Enabled_Components.TAB_COMPLETED_ALIASES - .contains(unprocessedArgs[0].toLowerCase(Locale.ENGLISH))) { + .contains(unprocessedArgs[0].toLowerCase(Locale.ENGLISH))) { return; } final String[] args = new String[unprocessedArgs.length - 1]; @@ -369,7 +377,8 @@ public class PaperListener implements Listener { } event.setCompletions(result); event.setHandled(true); - } catch (final Exception ignored) {} + } catch (final Exception ignored) { + } } } diff --git a/Bukkit/src/main/java/com/plotsquared/bukkit/listener/PaperListener113.java b/Bukkit/src/main/java/com/plotsquared/bukkit/listener/PaperListener113.java index f2c51a5bb..1e66d77c8 100644 --- a/Bukkit/src/main/java/com/plotsquared/bukkit/listener/PaperListener113.java +++ b/Bukkit/src/main/java/com/plotsquared/bukkit/listener/PaperListener113.java @@ -53,24 +53,25 @@ import org.bukkit.block.Skull; import org.bukkit.block.Structure; import org.bukkit.event.EventHandler; import org.bukkit.event.block.BlockPlaceEvent; - -import javax.annotation.Nonnull; +import org.checkerframework.checker.nullness.qual.NonNull; public class PaperListener113 extends PaperListener { - @Inject public PaperListener113(@Nonnull PlotAreaManager plotAreaManager) { + @Inject + public PaperListener113(@NonNull PlotAreaManager plotAreaManager) { super(plotAreaManager); } - @EventHandler public void onBlockPlace(BlockPlaceEvent event) { + @EventHandler + public void onBlockPlace(BlockPlaceEvent event) { if (!Settings.Paper_Components.TILE_ENTITY_CHECK || !Settings.Enabled_Components.CHUNK_PROCESSOR) { return; } BlockState state = event.getBlock().getState(false); if (!(state instanceof Banner || state instanceof Beacon || state instanceof Bed || state instanceof CommandBlock - || state instanceof Comparator || state instanceof Conduit || state instanceof Container || state instanceof CreatureSpawner - || state instanceof DaylightDetector || state instanceof EnchantingTable || state instanceof EnderChest || state instanceof EndGateway - || state instanceof Jukebox || state instanceof Sign || state instanceof Skull || state instanceof Structure)) { + || state instanceof Comparator || state instanceof Conduit || state instanceof Container || state instanceof CreatureSpawner + || state instanceof DaylightDetector || state instanceof EnchantingTable || state instanceof EnderChest || state instanceof EndGateway + || state instanceof Jukebox || state instanceof Sign || state instanceof Skull || state instanceof Structure)) { return; } final Location location = BukkitUtil.adapt(event.getBlock().getLocation()); @@ -81,10 +82,13 @@ public class PaperListener113 extends PaperListener { final int tileEntityCount = event.getBlock().getChunk().getTileEntities(false).length; if (tileEntityCount >= Settings.Chunk_Processor.MAX_TILES) { final PlotPlayer plotPlayer = BukkitUtil.adapt(event.getPlayer()); - plotPlayer.sendMessage(TranslatableCaption.of("errors.tile_entity_cap_reached"), - Template.of("amount", String.valueOf(Settings.Chunk_Processor.MAX_TILES))); + plotPlayer.sendMessage( + TranslatableCaption.of("errors.tile_entity_cap_reached"), + Template.of("amount", String.valueOf(Settings.Chunk_Processor.MAX_TILES)) + ); event.setCancelled(true); event.setBuild(false); } } + } diff --git a/Bukkit/src/main/java/com/plotsquared/bukkit/listener/PlayerEventListener.java b/Bukkit/src/main/java/com/plotsquared/bukkit/listener/PlayerEventListener.java index 2d6a09027..e8e453ad3 100644 --- a/Bukkit/src/main/java/com/plotsquared/bukkit/listener/PlayerEventListener.java +++ b/Bukkit/src/main/java/com/plotsquared/bukkit/listener/PlayerEventListener.java @@ -27,6 +27,7 @@ package com.plotsquared.bukkit.listener; import com.destroystokyo.paper.MaterialTags; import com.google.common.base.Charsets; +import com.google.inject.Inject; import com.plotsquared.bukkit.player.BukkitPlayer; import com.plotsquared.bukkit.util.BukkitEntityUtil; import com.plotsquared.bukkit.util.BukkitUtil; @@ -144,9 +145,8 @@ import org.bukkit.metadata.FixedMetadataValue; import org.bukkit.metadata.MetadataValue; import org.bukkit.plugin.Plugin; import org.bukkit.util.Vector; +import org.checkerframework.checker.nullness.qual.NonNull; -import javax.annotation.Nonnull; -import javax.inject.Inject; import java.lang.reflect.Field; import java.util.ArrayList; import java.util.HashSet; @@ -180,16 +180,20 @@ public class PlayerEventListener extends PlotListener implements Listener { } } - @Inject public PlayerEventListener(@Nonnull final PlotAreaManager plotAreaManager, - @Nonnull final EventDispatcher eventDispatcher, - @Nonnull final WorldEdit worldEdit) { + @Inject + public PlayerEventListener( + final @NonNull PlotAreaManager plotAreaManager, + final @NonNull EventDispatcher eventDispatcher, + final @NonNull WorldEdit worldEdit + ) { super(eventDispatcher); this.eventDispatcher = eventDispatcher; this.worldEdit = worldEdit; this.plotAreaManager = plotAreaManager; } - @EventHandler public void onVehicleEntityCollision(VehicleEntityCollisionEvent e) { + @EventHandler + public void onVehicleEntityCollision(VehicleEntityCollisionEvent e) { if (e.getVehicle().getType() == EntityType.BOAT) { Location location = BukkitUtil.adapt(e.getEntity().getLocation()); if (location.isPlotArea()) { @@ -236,7 +240,7 @@ public class PlayerEventListener extends PlotListener implements Listener { case "worldedit:up": case "worldedit:/up": if (plot == null || (!plot.isAdded(plotPlayer.getUUID()) && !Permissions - .hasPermission(plotPlayer, Permission.PERMISSION_ADMIN_BUILD_OTHER, true))) { + .hasPermission(plotPlayer, Permission.PERMISSION_ADMIN_BUILD_OTHER, true))) { event.setCancelled(true); return; } @@ -246,10 +250,10 @@ public class PlayerEventListener extends PlotListener implements Listener { } List blockedCommands = plot != null ? - plot.getFlag(BlockedCmdsFlag.class) : - area.getFlag(BlockedCmdsFlag.class); + plot.getFlag(BlockedCmdsFlag.class) : + area.getFlag(BlockedCmdsFlag.class); if (!blockedCommands.isEmpty() && !Permissions - .hasPermission(plotPlayer, Permission.PERMISSION_ADMIN_INTERACT_BLOCKED_CMDS)) { + .hasPermission(plotPlayer, Permission.PERMISSION_ADMIN_INTERACT_BLOCKED_CMDS)) { String part = parts[0]; if (parts[0].contains(":")) { part = parts[0].split(":")[1]; @@ -307,7 +311,8 @@ public class PlayerEventListener extends PlotListener implements Listener { } } - @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) public void onPreLogin(final AsyncPlayerPreLoginEvent event) { + @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) + public void onPreLogin(final AsyncPlayerPreLoginEvent event) { final UUID uuid; if (Settings.UUID.OFFLINE) { if (Settings.UUID.FORCE_LOWERCASE) { @@ -346,7 +351,7 @@ public class PlayerEventListener extends PlotListener implements Listener { }, TaskTime.seconds(1L)); if (pp.hasPermission(Permission.PERMISSION_ADMIN_UPDATE_NOTIFICATION.toString()) && Settings.Enabled_Components.UPDATE_NOTIFICATIONS - && PremiumVerification.isPremium() && UpdateUtility.hasUpdate) { + && PremiumVerification.isPremium() && UpdateUtility.hasUpdate) { Caption boundary = TranslatableCaption.of("update.update_boundary"); Caption updateNotification = TranslatableCaption.of("update.update_notification"); Template internalVersion = Template.of("p2version", String.valueOf(UpdateUtility.internalVersion.versionString())); @@ -358,7 +363,8 @@ public class PlayerEventListener extends PlotListener implements Listener { } } - @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) public void playerRespawn(PlayerRespawnEvent event) { + @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) + public void playerRespawn(PlayerRespawnEvent event) { Player player = event.getPlayer(); PlotPlayer pp = BukkitUtil.adapt(player); this.eventDispatcher.doRespawnTask(pp); @@ -369,7 +375,7 @@ public class PlayerEventListener extends PlotListener implements Listener { Player player = event.getPlayer(); BukkitPlayer pp = BukkitUtil.adapt(player); try (final MetaDataAccess lastPlotAccess = - pp.accessTemporaryMetaData(PlayerMetaDataKeys.TEMPORARY_LAST_PLOT)) { + pp.accessTemporaryMetaData(PlayerMetaDataKeys.TEMPORARY_LAST_PLOT)) { Plot lastPlot = lastPlotAccess.get().orElse(null); org.bukkit.Location to = event.getTo(); //noinspection ConstantConditions @@ -382,7 +388,7 @@ public class PlayerEventListener extends PlotListener implements Listener { lastPlotAccess.remove(); } try (final MetaDataAccess lastLocationAccess = - pp.accessTemporaryMetaData(PlayerMetaDataKeys.TEMPORARY_LOCATION)) { + pp.accessTemporaryMetaData(PlayerMetaDataKeys.TEMPORARY_LOCATION)) { lastLocationAccess.remove(); } return; @@ -394,26 +400,30 @@ public class PlayerEventListener extends PlotListener implements Listener { // to is identical to the plot's home location, and untrusted-visit is true // i.e. untrusted-visit can override deny-teleport // this is acceptable, because otherwise it wouldn't make sense to have both flags set - if (!result && !(plot.getFlag(UntrustedVisitFlag.class) && plot.getHomeSynchronous().equals(BukkitUtil.adaptComplete(to)))) { + if (!result && !(plot.getFlag(UntrustedVisitFlag.class) && plot + .getHomeSynchronous() + .equals(BukkitUtil.adaptComplete(to)))) { pp.sendMessage( - TranslatableCaption.of("permission.no_permission_event"), - Template.of("node", String.valueOf(Permission.PERMISSION_ADMIN_ENTRY_DENIED)) + TranslatableCaption.of("permission.no_permission_event"), + Template.of("node", String.valueOf(Permission.PERMISSION_ADMIN_ENTRY_DENIED)) ); - event.setCancelled(true);} + event.setCancelled(true); + } } } } playerMove(event); } - @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) public void vehicleMove(VehicleMoveEvent event) - throws IllegalAccessException { + @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) + public void vehicleMove(VehicleMoveEvent event) + throws IllegalAccessException { final org.bukkit.Location from = event.getFrom(); final org.bukkit.Location to = event.getTo(); int toX, toZ; if ((toX = MathMan.roundInt(to.getX())) != MathMan.roundInt(from.getX()) | (toZ = MathMan.roundInt(to.getZ())) != MathMan - .roundInt(from.getZ())) { + .roundInt(from.getZ())) { Vehicle vehicle = event.getVehicle(); // Check allowed @@ -437,7 +447,9 @@ public class PlayerEventListener extends PlotListener implements Listener { org.bukkit.Location dest; if (moveTmp.isCancelled()) { dest = from; - } else if (MathMan.roundInt(moveTmp.getTo().getX()) != toX || MathMan.roundInt(moveTmp.getTo().getZ()) != toZ) { + } else if (MathMan.roundInt(moveTmp.getTo().getX()) != toX || MathMan.roundInt(moveTmp + .getTo() + .getZ()) != toZ) { dest = to; } else { dest = null; @@ -487,13 +499,13 @@ public class PlayerEventListener extends PlotListener implements Listener { // Set last location Location location = BukkitUtil.adapt(to); try (final MetaDataAccess lastLocationAccess = - pp.accessTemporaryMetaData(PlayerMetaDataKeys.TEMPORARY_LOCATION)) { + pp.accessTemporaryMetaData(PlayerMetaDataKeys.TEMPORARY_LOCATION)) { lastLocationAccess.remove(); } PlotArea area = location.getPlotArea(); if (area == null) { try (final MetaDataAccess lastPlotAccess = - pp.accessTemporaryMetaData(PlayerMetaDataKeys.TEMPORARY_LAST_PLOT)) { + pp.accessTemporaryMetaData(PlayerMetaDataKeys.TEMPORARY_LAST_PLOT)) { lastPlotAccess.remove(); } return; @@ -501,16 +513,16 @@ public class PlayerEventListener extends PlotListener implements Listener { Plot now = area.getPlot(location); Plot lastPlot; try (final MetaDataAccess lastPlotAccess = - pp.accessTemporaryMetaData(PlayerMetaDataKeys.TEMPORARY_LAST_PLOT)) { + pp.accessTemporaryMetaData(PlayerMetaDataKeys.TEMPORARY_LAST_PLOT)) { lastPlot = lastPlotAccess.get().orElse(null); } if (now == null) { try (final MetaDataAccess kickAccess = - pp.accessTemporaryMetaData(PlayerMetaDataKeys.TEMPORARY_KICK)) { + pp.accessTemporaryMetaData(PlayerMetaDataKeys.TEMPORARY_KICK)) { if (lastPlot != null && !plotExit(pp, lastPlot) && this.tmpTeleport && !kickAccess.get().orElse(false)) { pp.sendMessage( - TranslatableCaption.of("permission.no_permission_event"), - Template.of("node", String.valueOf(Permission.PERMISSION_ADMIN_EXIT_DENIED)) + TranslatableCaption.of("permission.no_permission_event"), + Template.of("node", String.valueOf(Permission.PERMISSION_ADMIN_EXIT_DENIED)) ); this.tmpTeleport = false; if (lastPlot.equals(BukkitUtil.adapt(from).getPlot())) { @@ -520,14 +532,15 @@ public class PlayerEventListener extends PlotListener implements Listener { } this.tmpTeleport = true; event.setCancelled(true); - return;} + return; + } } } else if (now.equals(lastPlot)) { ForceFieldListener.handleForcefield(player, pp, now); } else if (!plotEntry(pp, now) && this.tmpTeleport) { pp.sendMessage( - TranslatableCaption.of("permission.no_permission_event"), - Template.of("node", String.valueOf(Permission.PERMISSION_ADMIN_ENTRY_DENIED)) + TranslatableCaption.of("permission.no_permission_event"), + Template.of("node", String.valueOf(Permission.PERMISSION_ADMIN_ENTRY_DENIED)) ); this.tmpTeleport = false; to.setX(from.getBlockX()); @@ -564,13 +577,13 @@ public class PlayerEventListener extends PlotListener implements Listener { // Set last location Location location = BukkitUtil.adapt(to); try (final MetaDataAccess lastLocationAccess = - pp.accessTemporaryMetaData(PlayerMetaDataKeys.TEMPORARY_LOCATION)) { + pp.accessTemporaryMetaData(PlayerMetaDataKeys.TEMPORARY_LOCATION)) { lastLocationAccess.set(location); } PlotArea area = location.getPlotArea(); if (area == null) { try (final MetaDataAccess lastPlotAccess = - pp.accessTemporaryMetaData(PlayerMetaDataKeys.TEMPORARY_LAST_PLOT)) { + pp.accessTemporaryMetaData(PlayerMetaDataKeys.TEMPORARY_LAST_PLOT)) { lastPlotAccess.remove(); } return; @@ -578,16 +591,16 @@ public class PlayerEventListener extends PlotListener implements Listener { Plot now = area.getPlot(location); Plot lastPlot; try (final MetaDataAccess lastPlotAccess = - pp.accessTemporaryMetaData(PlayerMetaDataKeys.TEMPORARY_LAST_PLOT)) { + pp.accessTemporaryMetaData(PlayerMetaDataKeys.TEMPORARY_LAST_PLOT)) { lastPlot = lastPlotAccess.get().orElse(null); } if (now == null) { try (final MetaDataAccess kickAccess = - pp.accessTemporaryMetaData(PlayerMetaDataKeys.TEMPORARY_KICK)) { + pp.accessTemporaryMetaData(PlayerMetaDataKeys.TEMPORARY_KICK)) { if (lastPlot != null && !plotExit(pp, lastPlot) && this.tmpTeleport && !kickAccess.get().orElse(false)) { pp.sendMessage( - TranslatableCaption.of("permission.no_permission_event"), - Template.of("node", String.valueOf(Permission.PERMISSION_ADMIN_EXIT_DENIED)) + TranslatableCaption.of("permission.no_permission_event"), + Template.of("node", String.valueOf(Permission.PERMISSION_ADMIN_EXIT_DENIED)) ); this.tmpTeleport = false; if (lastPlot.equals(BukkitUtil.adapt(from).getPlot())) { @@ -597,14 +610,15 @@ public class PlayerEventListener extends PlotListener implements Listener { } this.tmpTeleport = true; event.setCancelled(true); - return;} + return; + } } } else if (now.equals(lastPlot)) { ForceFieldListener.handleForcefield(player, pp, now); } else if (!plotEntry(pp, now) && this.tmpTeleport) { pp.sendMessage( - TranslatableCaption.of("permission.no_permission_event"), - Template.of("node", String.valueOf(Permission.PERMISSION_ADMIN_ENTRY_DENIED)) + TranslatableCaption.of("permission.no_permission_event"), + Template.of("node", String.valueOf(Permission.PERMISSION_ADMIN_ENTRY_DENIED)) ); this.tmpTeleport = false; player.teleport(from); @@ -632,7 +646,8 @@ public class PlayerEventListener extends PlotListener implements Listener { } } - @EventHandler(priority = EventPriority.LOW) public void onChat(AsyncPlayerChatEvent event) { + @EventHandler(priority = EventPriority.LOW) + public void onChat(AsyncPlayerChatEvent event) { if (event.isCancelled()) { return; } @@ -648,11 +663,11 @@ public class PlayerEventListener extends PlotListener implements Listener { return; } if (!((plot.getFlag(ChatFlag.class) && area.isPlotChat() && plotPlayer.getAttribute("chat")) - || area.isForcingPlotChat())) { + || area.isForcingPlotChat())) { return; } if (plot.isDenied(plotPlayer.getUUID()) && !Permissions - .hasPermission(plotPlayer, Permission.PERMISSION_ADMIN_CHAT_BYPASS)) { + .hasPermission(plotPlayer, Permission.PERMISSION_ADMIN_CHAT_BYPASS)) { return; } event.setCancelled(true); @@ -683,10 +698,15 @@ public class PlayerEventListener extends PlotListener implements Listener { // allowing colour. if (plotPlayer.hasPermission("plots.chat.color")) { msgTemplate = Template - .of("msg", BukkitUtil.LEGACY_COMPONENT_SERIALIZER.deserialize(ChatColor.translateAlternateColorCodes('&', message))); + .of("msg", + BukkitUtil.LEGACY_COMPONENT_SERIALIZER.deserialize(ChatColor.translateAlternateColorCodes( + '&', + message + )) + ); } else { msgTemplate = Template.of("msg", BukkitUtil.MINI_MESSAGE.deserialize( - ChatColor.stripColor(BukkitUtil.LEGACY_COMPONENT_SERIALIZER.serialize(Component.text(message))))); + ChatColor.stripColor(BukkitUtil.LEGACY_COMPONENT_SERIALIZER.serialize(Component.text(message))))); } for (PlotPlayer receiver : plotRecipients) { receiver.sendMessage(msg, msgTemplate, plotTemplate, senderTemplate); @@ -711,11 +731,11 @@ public class PlayerEventListener extends PlotListener implements Listener { // Delete last location Plot plot; try (final MetaDataAccess lastPlotAccess = - pp.accessTemporaryMetaData(PlayerMetaDataKeys.TEMPORARY_LAST_PLOT)) { + pp.accessTemporaryMetaData(PlayerMetaDataKeys.TEMPORARY_LAST_PLOT)) { plot = lastPlotAccess.remove(); } try (final MetaDataAccess lastLocationAccess = - pp.accessTemporaryMetaData(PlayerMetaDataKeys.TEMPORARY_LOCATION)) { + pp.accessTemporaryMetaData(PlayerMetaDataKeys.TEMPORARY_LOCATION)) { lastLocationAccess.remove(); } if (plot != null) { @@ -738,7 +758,8 @@ public class PlayerEventListener extends PlotListener implements Listener { } } - @SuppressWarnings("deprecation") @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) + @SuppressWarnings("deprecation") + @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) public void onInventoryClick(InventoryClickEvent event) { /*if (!event.isLeftClick() || (event.getAction() != InventoryAction.PLACE_ALL) || event .isShiftClick()) { @@ -746,7 +767,7 @@ public class PlayerEventListener extends PlotListener implements Listener { }*/ HumanEntity entity = event.getWhoClicked(); if (!(entity instanceof Player) || !this.plotAreaManager - .hasPlotArea(entity.getWorld().getName())) { + .hasPlotArea(entity.getWorld().getName())) { return; } @@ -778,20 +799,20 @@ public class PlayerEventListener extends PlotListener implements Listener { final Plot plot = pp.getCurrentPlot(); if (plot != null) { if (plot.getFlag(PreventCreativeCopyFlag.class) && !plot - .isAdded(player.getUniqueId()) && !Permissions - .hasPermission(pp, Permission.PERMISSION_ADMIN_INTERACT_OTHER)) { + .isAdded(player.getUniqueId()) && !Permissions + .hasPermission(pp, Permission.PERMISSION_ADMIN_INTERACT_OTHER)) { final ItemStack newStack = - new ItemStack(newItem.getType(), newItem.getAmount()); + new ItemStack(newItem.getType(), newItem.getAmount()); event.setCursor(newStack); plot.debug(player.getName() - + " could not creative-copy an item because prevent-creative-copy = true"); + + " could not creative-copy an item because prevent-creative-copy = true"); } } else { PlotArea area = pp.getPlotAreaAbs(); if (area != null && area.isRoadFlags() && area - .getRoadFlag(PreventCreativeCopyFlag.class)) { + .getRoadFlag(PreventCreativeCopyFlag.class)) { final ItemStack newStack = - new ItemStack(newItem.getType(), newItem.getAmount()); + new ItemStack(newItem.getType(), newItem.getAmount()); event.setCursor(newStack); } } @@ -852,16 +873,16 @@ public class PlayerEventListener extends PlotListener implements Listener { if (plot == null) { if (!Permissions.hasPermission(pp, Permission.PERMISSION_ADMIN_INTERACT_ROAD)) { pp.sendMessage( - TranslatableCaption.of("permission.no_permission_event"), - Template.of("node", String.valueOf(Permission.PERMISSION_ADMIN_INTERACT_ROAD)) + TranslatableCaption.of("permission.no_permission_event"), + Template.of("node", String.valueOf(Permission.PERMISSION_ADMIN_INTERACT_ROAD)) ); cancelled = true; } } else if (!plot.hasOwner()) { if (!Permissions.hasPermission(pp, Permission.PERMISSION_ADMIN_INTERACT_UNOWNED)) { pp.sendMessage( - TranslatableCaption.of("permission.no_permission_event"), - Template.of("node", String.valueOf(Permission.PERMISSION_ADMIN_INTERACT_UNOWNED)) + TranslatableCaption.of("permission.no_permission_event"), + Template.of("node", String.valueOf(Permission.PERMISSION_ADMIN_INTERACT_UNOWNED)) ); cancelled = true; } @@ -870,8 +891,8 @@ public class PlayerEventListener extends PlotListener implements Listener { if (!plot.isAdded(uuid)) { if (!Permissions.hasPermission(pp, Permission.PERMISSION_ADMIN_INTERACT_OTHER)) { pp.sendMessage( - TranslatableCaption.of("permission.no_permission_event"), - Template.of("node", String.valueOf(Permission.PERMISSION_ADMIN_INTERACT_OTHER)) + TranslatableCaption.of("permission.no_permission_event"), + Template.of("node", String.valueOf(Permission.PERMISSION_ADMIN_INTERACT_OTHER)) ); cancelled = true; } @@ -879,14 +900,14 @@ public class PlayerEventListener extends PlotListener implements Listener { } if (cancelled) { if ((current.getType() == newItem.getType()) && (current.getDurability() == newItem - .getDurability())) { + .getDurability())) { event.setCursor( - new ItemStack(newItem.getType(), newItem.getAmount(), newItem.getDurability())); + new ItemStack(newItem.getType(), newItem.getAmount(), newItem.getDurability())); event.setCancelled(true); return; } event.setCursor( - new ItemStack(newItem.getType(), newItem.getAmount(), newItem.getDurability())); + new ItemStack(newItem.getType(), newItem.getAmount(), newItem.getDurability())); } } @@ -906,10 +927,10 @@ public class PlayerEventListener extends PlotListener implements Listener { BukkitPlayer pp = BukkitUtil.adapt(e.getPlayer()); if (plot == null) { if (!area.isRoadFlags() && !area.getRoadFlag(MiscInteractFlag.class) && !Permissions - .hasPermission(pp, Permission.PERMISSION_ADMIN_INTERACT_ROAD)) { + .hasPermission(pp, Permission.PERMISSION_ADMIN_INTERACT_ROAD)) { pp.sendMessage( - TranslatableCaption.of("permission.no_permission_event"), - Template.of("node", String.valueOf(Permission.PERMISSION_ADMIN_INTERACT_ROAD)) + TranslatableCaption.of("permission.no_permission_event"), + Template.of("node", String.valueOf(Permission.PERMISSION_ADMIN_INTERACT_ROAD)) ); e.setCancelled(true); } @@ -917,8 +938,8 @@ public class PlayerEventListener extends PlotListener implements Listener { if (Settings.Done.RESTRICT_BUILDING && DoneFlag.isDone(plot)) { if (!Permissions.hasPermission(pp, Permission.PERMISSION_ADMIN_BUILD_OTHER)) { pp.sendMessage( - TranslatableCaption.of("permission.no_permission_event"), - Template.of("node", String.valueOf(Permission.PERMISSION_ADMIN_BUILD_OTHER)) + TranslatableCaption.of("permission.no_permission_event"), + Template.of("node", String.valueOf(Permission.PERMISSION_ADMIN_BUILD_OTHER)) ); e.setCancelled(true); return; @@ -927,8 +948,8 @@ public class PlayerEventListener extends PlotListener implements Listener { if (!plot.hasOwner()) { if (!Permissions.hasPermission(pp, "plots.admin.interact.unowned")) { pp.sendMessage( - TranslatableCaption.of("permission.no_permission_event"), - Template.of("node", String.valueOf(Permission.PERMISSION_ADMIN_INTERACT_UNOWNED)) + TranslatableCaption.of("permission.no_permission_event"), + Template.of("node", String.valueOf(Permission.PERMISSION_ADMIN_INTERACT_UNOWNED)) ); e.setCancelled(true); } @@ -942,18 +963,19 @@ public class PlayerEventListener extends PlotListener implements Listener { } if (!Permissions.hasPermission(pp, Permission.PERMISSION_ADMIN_INTERACT_OTHER)) { pp.sendMessage( - TranslatableCaption.of("permission.no_permission_event"), - Template.of("node", String.valueOf(Permission.PERMISSION_ADMIN_INTERACT_OTHER)) + TranslatableCaption.of("permission.no_permission_event"), + Template.of("node", String.valueOf(Permission.PERMISSION_ADMIN_INTERACT_OTHER)) ); e.setCancelled(true); plot.debug(pp.getName() + " could not interact with " + entity.getType() - + " because misc-interact = false"); + + " because misc-interact = false"); } } } } - @EventHandler(priority = EventPriority.LOW) public void onCancelledInteract(PlayerInteractEvent event) { + @EventHandler(priority = EventPriority.LOW) + public void onCancelledInteract(PlayerInteractEvent event) { if (event.isCancelled() && event.getAction() == Action.RIGHT_CLICK_AIR) { Player player = event.getPlayer(); BukkitPlayer pp = BukkitUtil.adapt(player); @@ -988,7 +1010,8 @@ public class PlayerEventListener extends PlotListener implements Listener { } } - @EventHandler(priority = EventPriority.LOW, ignoreCancelled = true) public void onInteract(PlayerInteractEvent event) { + @EventHandler(priority = EventPriority.LOW, ignoreCancelled = true) + public void onInteract(PlayerInteractEvent event) { Player player = event.getPlayer(); BukkitPlayer pp = BukkitUtil.adapt(player); PlotArea area = pp.getPlotAreaAbs(); @@ -1140,7 +1163,7 @@ public class PlayerEventListener extends PlotListener implements Listener { BlockType blockType = BukkitAdapter.asBlockType(block.getType()); Location location = BukkitUtil.adapt(block.getLocation()); if (!PlotSquared.get().getEventDispatcher() - .checkPlayerBlockEvent(pp, eventType, location, blockType, true)) { + .checkPlayerBlockEvent(pp, eventType, location, blockType, true)) { event.setCancelled(true); } } @@ -1156,7 +1179,7 @@ public class PlayerEventListener extends PlotListener implements Listener { } else { block = event.getBlockClicked().getLocation() .add(bf.getModX(), bf.getModY(), bf.getModZ()) - .getBlock(); + .getBlock(); } Location location = BukkitUtil.adapt(block.getLocation()); PlotArea area = location.getPlotArea(); @@ -1170,8 +1193,8 @@ public class PlayerEventListener extends PlotListener implements Listener { return; } pp.sendMessage( - TranslatableCaption.of("permission.no_permission_event"), - Template.of("node", String.valueOf(Permission.PERMISSION_ADMIN_BUILD_ROAD)) + TranslatableCaption.of("permission.no_permission_event"), + Template.of("node", String.valueOf(Permission.PERMISSION_ADMIN_BUILD_ROAD)) ); event.setCancelled(true); } else if (!plot.hasOwner()) { @@ -1179,8 +1202,8 @@ public class PlayerEventListener extends PlotListener implements Listener { return; } pp.sendMessage( - TranslatableCaption.of("permission.no_permission_event"), - Template.of("node", String.valueOf(Permission.PERMISSION_ADMIN_BUILD_UNOWNED)) + TranslatableCaption.of("permission.no_permission_event"), + Template.of("node", String.valueOf(Permission.PERMISSION_ADMIN_BUILD_UNOWNED)) ); event.setCancelled(true); } else if (!plot.isAdded(pp.getUUID())) { @@ -1195,22 +1218,23 @@ public class PlayerEventListener extends PlotListener implements Listener { return; } pp.sendMessage( - TranslatableCaption.of("permission.no_permission_event"), - Template.of("node", String.valueOf(Permission.PERMISSION_ADMIN_BUILD_OTHER)) + TranslatableCaption.of("permission.no_permission_event"), + Template.of("node", String.valueOf(Permission.PERMISSION_ADMIN_BUILD_OTHER)) ); event.setCancelled(true); } else if (Settings.Done.RESTRICT_BUILDING && DoneFlag.isDone(plot)) { if (!Permissions.hasPermission(pp, Permission.PERMISSION_ADMIN_BUILD_OTHER)) { pp.sendMessage( - TranslatableCaption.of("permission.no_permission_event"), - Template.of("node", String.valueOf(Permission.PERMISSION_ADMIN_BUILD_OTHER)) + TranslatableCaption.of("permission.no_permission_event"), + Template.of("node", String.valueOf(Permission.PERMISSION_ADMIN_BUILD_OTHER)) ); event.setCancelled(true); } } } - @EventHandler(priority = EventPriority.HIGHEST) public void onInventoryClose(InventoryCloseEvent event) { + @EventHandler(priority = EventPriority.HIGHEST) + public void onInventoryClose(InventoryCloseEvent event) { HumanEntity closer = event.getPlayer(); if (!(closer instanceof Player)) { return; @@ -1219,7 +1243,8 @@ public class PlayerEventListener extends PlotListener implements Listener { PlotInventory.removePlotInventoryOpen(BukkitUtil.adapt(player)); } - @EventHandler(priority = EventPriority.MONITOR) public void onLeave(PlayerQuitEvent event) { + @EventHandler(priority = EventPriority.MONITOR) + public void onLeave(PlayerQuitEvent event) { TaskManager.removeFromTeleportQueue(event.getPlayer().getName()); BukkitPlayer pp = BukkitUtil.adapt(event.getPlayer()); pp.unregister(); @@ -1242,8 +1267,8 @@ public class PlayerEventListener extends PlotListener implements Listener { return; } plotPlayer.sendMessage( - TranslatableCaption.of("permission.no_permission_event"), - Template.of("node", String.valueOf(Permission.PERMISSION_ADMIN_BUILD_ROAD)) + TranslatableCaption.of("permission.no_permission_event"), + Template.of("node", String.valueOf(Permission.PERMISSION_ADMIN_BUILD_ROAD)) ); event.setCancelled(true); } else if (!plot.hasOwner()) { @@ -1251,8 +1276,8 @@ public class PlayerEventListener extends PlotListener implements Listener { return; } plotPlayer.sendMessage( - TranslatableCaption.of("permission.no_permission_event"), - Template.of("node", String.valueOf(Permission.PERMISSION_ADMIN_BUILD_UNOWNED)) + TranslatableCaption.of("permission.no_permission_event"), + Template.of("node", String.valueOf(Permission.PERMISSION_ADMIN_BUILD_UNOWNED)) ); event.setCancelled(true); } else if (!plot.isAdded(plotPlayer.getUUID())) { @@ -1268,15 +1293,15 @@ public class PlayerEventListener extends PlotListener implements Listener { return; } plotPlayer.sendMessage( - TranslatableCaption.of("permission.no_permission_event"), - Template.of("node", String.valueOf(Permission.PERMISSION_ADMIN_BUILD_OTHER)) + TranslatableCaption.of("permission.no_permission_event"), + Template.of("node", String.valueOf(Permission.PERMISSION_ADMIN_BUILD_OTHER)) ); event.setCancelled(true); } else if (Settings.Done.RESTRICT_BUILDING && DoneFlag.isDone(plot)) { if (!Permissions.hasPermission(plotPlayer, Permission.PERMISSION_ADMIN_BUILD_OTHER)) { plotPlayer.sendMessage( - TranslatableCaption.of("permission.no_permission_event"), - Template.of("node", String.valueOf(Permission.PERMISSION_ADMIN_BUILD_OTHER)) + TranslatableCaption.of("permission.no_permission_event"), + Template.of("node", String.valueOf(Permission.PERMISSION_ADMIN_BUILD_OTHER)) ); event.setCancelled(true); } @@ -1301,8 +1326,8 @@ public class PlayerEventListener extends PlotListener implements Listener { if (plot == null) { if (!Permissions.hasPermission(pp, Permission.PERMISSION_ADMIN_BUILD_ROAD)) { pp.sendMessage( - TranslatableCaption.of("permission.no_permission_event"), - Template.of("node", String.valueOf(Permission.PERMISSION_ADMIN_BUILD_ROAD)) + TranslatableCaption.of("permission.no_permission_event"), + Template.of("node", String.valueOf(Permission.PERMISSION_ADMIN_BUILD_ROAD)) ); event.setCancelled(true); } @@ -1310,8 +1335,8 @@ public class PlayerEventListener extends PlotListener implements Listener { if (!plot.hasOwner()) { if (!Permissions.hasPermission(pp, Permission.PERMISSION_ADMIN_BUILD_UNOWNED)) { pp.sendMessage( - TranslatableCaption.of("permission.no_permission_event"), - Template.of("node", String.valueOf(Permission.PERMISSION_ADMIN_BUILD_UNOWNED)) + TranslatableCaption.of("permission.no_permission_event"), + Template.of("node", String.valueOf(Permission.PERMISSION_ADMIN_BUILD_UNOWNED)) ); event.setCancelled(true); } @@ -1321,8 +1346,8 @@ public class PlayerEventListener extends PlotListener implements Listener { if (!plot.getFlag(HangingPlaceFlag.class)) { if (!Permissions.hasPermission(pp, Permission.PERMISSION_ADMIN_BUILD_OTHER)) { pp.sendMessage( - TranslatableCaption.of("permission.no_permission_event"), - Template.of("node", String.valueOf(Permission.PERMISSION_ADMIN_BUILD_OTHER)) + TranslatableCaption.of("permission.no_permission_event"), + Template.of("node", String.valueOf(Permission.PERMISSION_ADMIN_BUILD_OTHER)) ); event.setCancelled(true); } @@ -1351,16 +1376,16 @@ public class PlayerEventListener extends PlotListener implements Listener { if (plot == null) { if (!Permissions.hasPermission(pp, Permission.PERMISSION_ADMIN_DESTROY_ROAD)) { pp.sendMessage( - TranslatableCaption.of("permission.no_permission_event"), - Template.of("node", String.valueOf(Permission.PERMISSION_ADMIN_DESTROY_ROAD)) + TranslatableCaption.of("permission.no_permission_event"), + Template.of("node", String.valueOf(Permission.PERMISSION_ADMIN_DESTROY_ROAD)) ); event.setCancelled(true); } } else if (!plot.hasOwner()) { if (!Permissions.hasPermission(pp, Permission.PERMISSION_ADMIN_DESTROY_UNOWNED)) { pp.sendMessage( - TranslatableCaption.of("permission.no_permission_event"), - Template.of("node", String.valueOf(Permission.PERMISSION_ADMIN_DESTROY_UNOWNED)) + TranslatableCaption.of("permission.no_permission_event"), + Template.of("node", String.valueOf(Permission.PERMISSION_ADMIN_DESTROY_UNOWNED)) ); event.setCancelled(true); } @@ -1370,12 +1395,12 @@ public class PlayerEventListener extends PlotListener implements Listener { } if (!Permissions.hasPermission(pp, Permission.PERMISSION_ADMIN_DESTROY_OTHER)) { pp.sendMessage( - TranslatableCaption.of("permission.no_permission_event"), - Template.of("node", String.valueOf(Permission.PERMISSION_ADMIN_DESTROY_OTHER)) + TranslatableCaption.of("permission.no_permission_event"), + Template.of("node", String.valueOf(Permission.PERMISSION_ADMIN_DESTROY_OTHER)) ); event.setCancelled(true); plot.debug(p.getName() - + " could not break hanging entity because hanging-break = false"); + + " could not break hanging entity because hanging-break = false"); } } } else if (remover instanceof Projectile) { @@ -1392,24 +1417,24 @@ public class PlayerEventListener extends PlotListener implements Listener { if (plot != null) { if (!plot.hasOwner()) { if (!Permissions - .hasPermission(player, Permission.PERMISSION_ADMIN_DESTROY_UNOWNED)) { + .hasPermission(player, Permission.PERMISSION_ADMIN_DESTROY_UNOWNED)) { player.sendMessage( - TranslatableCaption.of("permission.no_permission_event"), - Template.of("node", String.valueOf(Permission.PERMISSION_ADMIN_DESTROY_UNOWNED)) + TranslatableCaption.of("permission.no_permission_event"), + Template.of("node", String.valueOf(Permission.PERMISSION_ADMIN_DESTROY_UNOWNED)) ); event.setCancelled(true); } } else if (!plot.isAdded(player.getUUID())) { if (!plot.getFlag(HangingBreakFlag.class)) { if (!Permissions - .hasPermission(player, Permission.PERMISSION_ADMIN_DESTROY_OTHER)) { + .hasPermission(player, Permission.PERMISSION_ADMIN_DESTROY_OTHER)) { player.sendMessage( - TranslatableCaption.of("permission.no_permission_event"), - Template.of("node", String.valueOf(Permission.PERMISSION_ADMIN_DESTROY_OTHER)) + TranslatableCaption.of("permission.no_permission_event"), + Template.of("node", String.valueOf(Permission.PERMISSION_ADMIN_DESTROY_OTHER)) ); event.setCancelled(true); plot.debug(player.getName() - + " could not break hanging entity because hanging-break = false"); + + " could not break hanging entity because hanging-break = false"); } } } @@ -1433,24 +1458,24 @@ public class PlayerEventListener extends PlotListener implements Listener { if (plot == null && !area.isRoadFlags()) { if (!Permissions.hasPermission(pp, Permission.PERMISSION_ADMIN_INTERACT_ROAD)) { pp.sendMessage( - TranslatableCaption.of("permission.no_permission_event"), - Template.of("node", String.valueOf(Permission.PERMISSION_ADMIN_INTERACT_ROAD)) + TranslatableCaption.of("permission.no_permission_event"), + Template.of("node", String.valueOf(Permission.PERMISSION_ADMIN_INTERACT_ROAD)) ); event.setCancelled(true); } } else if (plot != null && !plot.hasOwner()) { if (!Permissions.hasPermission(pp, Permission.PERMISSION_ADMIN_INTERACT_UNOWNED)) { pp.sendMessage( - TranslatableCaption.of("permission.no_permission_event"), - Template.of("node", String.valueOf(Permission.PERMISSION_ADMIN_INTERACT_UNOWNED)) + TranslatableCaption.of("permission.no_permission_event"), + Template.of("node", String.valueOf(Permission.PERMISSION_ADMIN_INTERACT_UNOWNED)) ); event.setCancelled(true); } } else if ((plot != null && !plot.isAdded(pp.getUUID())) || (plot == null && area - .isRoadFlags())) { + .isRoadFlags())) { final Entity entity = event.getRightClicked(); final com.sk89q.worldedit.world.entity.EntityType entityType = - BukkitAdapter.adapt(entity.getType()); + BukkitAdapter.adapt(entity.getType()); FlagContainer flagContainer; if (plot == null) { @@ -1460,47 +1485,47 @@ public class PlayerEventListener extends PlotListener implements Listener { } if (EntityCategories.HOSTILE.contains(entityType) && flagContainer - .getFlag(HostileInteractFlag.class).getValue()) { + .getFlag(HostileInteractFlag.class).getValue()) { return; } if (EntityCategories.ANIMAL.contains(entityType) && flagContainer - .getFlag(AnimalInteractFlag.class).getValue()) { + .getFlag(AnimalInteractFlag.class).getValue()) { return; } // This actually makes use of the interface, so we don't use the // category if (entity instanceof Tameable && ((Tameable) entity).isTamed() && flagContainer - .getFlag(TamedInteractFlag.class).getValue()) { + .getFlag(TamedInteractFlag.class).getValue()) { return; } if (EntityCategories.VEHICLE.contains(entityType) && flagContainer - .getFlag(VehicleUseFlag.class).getValue()) { + .getFlag(VehicleUseFlag.class).getValue()) { return; } if (EntityCategories.PLAYER.contains(entityType) && flagContainer - .getFlag(PlayerInteractFlag.class).getValue()) { + .getFlag(PlayerInteractFlag.class).getValue()) { return; } if (EntityCategories.VILLAGER.contains(entityType) && flagContainer - .getFlag(VillagerInteractFlag.class).getValue()) { + .getFlag(VillagerInteractFlag.class).getValue()) { return; } if ((EntityCategories.HANGING.contains(entityType) || EntityCategories.OTHER - .contains(entityType)) && flagContainer.getFlag(MiscInteractFlag.class) - .getValue()) { + .contains(entityType)) && flagContainer.getFlag(MiscInteractFlag.class) + .getValue()) { return; } if (!Permissions.hasPermission(pp, Permission.PERMISSION_ADMIN_INTERACT_OTHER)) { pp.sendMessage( - TranslatableCaption.of("permission.no_permission_event"), - Template.of("node", String.valueOf(Permission.PERMISSION_ADMIN_INTERACT_OTHER)) + TranslatableCaption.of("permission.no_permission_event"), + Template.of("node", String.valueOf(Permission.PERMISSION_ADMIN_INTERACT_OTHER)) ); event.setCancelled(true); } @@ -1522,8 +1547,8 @@ public class PlayerEventListener extends PlotListener implements Listener { if (plot == null) { if (!Permissions.hasPermission(pp, Permission.PERMISSION_ADMIN_DESTROY_VEHICLE_ROAD)) { pp.sendMessage( - TranslatableCaption.of("permission.no_permission_event"), - Template.of("node", String.valueOf(Permission.PERMISSION_ADMIN_DESTROY_VEHICLE_ROAD)) + TranslatableCaption.of("permission.no_permission_event"), + Template.of("node", String.valueOf(Permission.PERMISSION_ADMIN_DESTROY_VEHICLE_ROAD)) ); event.setCancelled(true); } @@ -1531,8 +1556,8 @@ public class PlayerEventListener extends PlotListener implements Listener { if (!plot.hasOwner()) { if (!Permissions.hasPermission(pp, Permission.PERMISSION_ADMIN_DESTROY_VEHICLE_UNOWNED)) { pp.sendMessage( - TranslatableCaption.of("permission.no_permission_event"), - Template.of("node", String.valueOf(Permission.PERMISSION_ADMIN_DESTROY_VEHICLE_UNOWNED)) + TranslatableCaption.of("permission.no_permission_event"), + Template.of("node", String.valueOf(Permission.PERMISSION_ADMIN_DESTROY_VEHICLE_UNOWNED)) ); event.setCancelled(true); return; @@ -1545,12 +1570,12 @@ public class PlayerEventListener extends PlotListener implements Listener { } if (!Permissions.hasPermission(pp, Permission.PERMISSION_ADMIN_DESTROY_VEHICLE_OTHER)) { pp.sendMessage( - TranslatableCaption.of("permission.no_permission_event"), - Template.of("node", String.valueOf(Permission.PERMISSION_ADMIN_DESTROY_VEHICLE_OTHER)) + TranslatableCaption.of("permission.no_permission_event"), + Template.of("node", String.valueOf(Permission.PERMISSION_ADMIN_DESTROY_VEHICLE_OTHER)) ); event.setCancelled(true); plot.debug(pp.getName() - + " could not break vehicle because vehicle-break = false"); + + " could not break vehicle because vehicle-break = false"); } } } @@ -1570,31 +1595,32 @@ public class PlayerEventListener extends PlotListener implements Listener { if (plot == null) { if (!Permissions.hasPermission(plotPlayer, Permission.PERMISSION_ADMIN_PROJECTILE_ROAD)) { plotPlayer.sendMessage( - TranslatableCaption.of("permission.no_permission_event"), - Template.of("node", String.valueOf(Permission.PERMISSION_ADMIN_PROJECTILE_ROAD)) + TranslatableCaption.of("permission.no_permission_event"), + Template.of("node", String.valueOf(Permission.PERMISSION_ADMIN_PROJECTILE_ROAD)) ); event.setHatching(false); } } else if (!plot.hasOwner()) { if (!Permissions.hasPermission(plotPlayer, Permission.PERMISSION_ADMIN_PROJECTILE_UNOWNED)) { plotPlayer.sendMessage( - TranslatableCaption.of("permission.no_permission_event"), - Template.of("node", String.valueOf(Permission.PERMISSION_ADMIN_PROJECTILE_UNOWNED)) + TranslatableCaption.of("permission.no_permission_event"), + Template.of("node", String.valueOf(Permission.PERMISSION_ADMIN_PROJECTILE_UNOWNED)) ); event.setHatching(false); } } else if (!plot.isAdded(plotPlayer.getUUID())) { if (!Permissions.hasPermission(plotPlayer, Permission.PERMISSION_ADMIN_PROJECTILE_OTHER)) { plotPlayer.sendMessage( - TranslatableCaption.of("permission.no_permission_event"), - Template.of("node", String.valueOf(Permission.PERMISSION_ADMIN_PROJECTILE_OTHER)) + TranslatableCaption.of("permission.no_permission_event"), + Template.of("node", String.valueOf(Permission.PERMISSION_ADMIN_PROJECTILE_OTHER)) ); event.setHatching(false); } } } - @EventHandler public void onItemDrop(PlayerDropItemEvent event) { + @EventHandler + public void onItemDrop(PlayerDropItemEvent event) { Player player = event.getPlayer(); BukkitPlayer pp = BukkitUtil.adapt(player); Location location = pp.getLocation(); @@ -1618,7 +1644,8 @@ public class PlayerEventListener extends PlotListener implements Listener { } } - @EventHandler public void onItemPickup(EntityPickupItemEvent event) { + @EventHandler + public void onItemPickup(EntityPickupItemEvent event) { LivingEntity ent = event.getEntity(); if (ent instanceof Player) { Player player = (Player) ent; @@ -1643,7 +1670,8 @@ public class PlayerEventListener extends PlotListener implements Listener { } } - @EventHandler public void onDeath(final PlayerDeathEvent event) { + @EventHandler + public void onDeath(final PlayerDeathEvent event) { Location location = BukkitUtil.adapt(event.getEntity().getLocation()); PlotArea area = location.getPlotArea(); if (area == null) { @@ -1664,9 +1692,11 @@ public class PlayerEventListener extends PlotListener implements Listener { } } - @EventHandler public void onLocaleChange(final PlayerLocaleChangeEvent event) { + @EventHandler + public void onLocaleChange(final PlayerLocaleChangeEvent event) { BukkitPlayer player = BukkitUtil.adapt(event.getPlayer()); // we're stripping the country code as we don't want to differ between countries player.setLocale(Locale.forLanguageTag(event.getLocale().substring(0, 2))); } + } diff --git a/Bukkit/src/main/java/com/plotsquared/bukkit/listener/ProjectileEventListener.java b/Bukkit/src/main/java/com/plotsquared/bukkit/listener/ProjectileEventListener.java index e5164cc6d..7c9d40631 100644 --- a/Bukkit/src/main/java/com/plotsquared/bukkit/listener/ProjectileEventListener.java +++ b/Bukkit/src/main/java/com/plotsquared/bukkit/listener/ProjectileEventListener.java @@ -25,6 +25,7 @@ */ package com.plotsquared.bukkit.listener; +import com.google.inject.Inject; import com.plotsquared.bukkit.util.BukkitEntityUtil; import com.plotsquared.bukkit.util.BukkitUtil; import com.plotsquared.core.location.Location; @@ -49,20 +50,20 @@ import org.bukkit.event.entity.ProjectileHitEvent; import org.bukkit.event.entity.ProjectileLaunchEvent; import org.bukkit.projectiles.BlockProjectileSource; import org.bukkit.projectiles.ProjectileSource; - -import javax.annotation.Nonnull; -import javax.inject.Inject; +import org.checkerframework.checker.nullness.qual.NonNull; @SuppressWarnings("unused") public class ProjectileEventListener implements Listener { private final PlotAreaManager plotAreaManager; - @Inject public ProjectileEventListener(@Nonnull final PlotAreaManager plotAreaManager) { + @Inject + public ProjectileEventListener(final @NonNull PlotAreaManager plotAreaManager) { this.plotAreaManager = plotAreaManager; } - @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) public void onPotionSplash(LingeringPotionSplashEvent event) { + @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) + public void onPotionSplash(LingeringPotionSplashEvent event) { Projectile entity = event.getEntity(); Location location = BukkitUtil.adapt(entity.getLocation()); if (!this.plotAreaManager.hasPlotArea(location.getWorldName())) { @@ -73,7 +74,8 @@ public class ProjectileEventListener implements Listener { } } - @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) public void onPotionSplash(PotionSplashEvent event) { + @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) + public void onPotionSplash(PotionSplashEvent event) { ThrownPotion damager = event.getPotion(); Location location = BukkitUtil.adapt(damager.getLocation()); if (!this.plotAreaManager.hasPlotArea(location.getWorldName())) { @@ -91,7 +93,8 @@ public class ProjectileEventListener implements Listener { } } - @EventHandler public void onProjectileLaunch(ProjectileLaunchEvent event) { + @EventHandler + public void onProjectileLaunch(ProjectileLaunchEvent event) { Projectile entity = event.getEntity(); if (!(entity instanceof ThrownPotion)) { return; @@ -112,7 +115,8 @@ public class ProjectileEventListener implements Listener { } } - @SuppressWarnings({"BooleanMethodIsAlwaysInverted", "cos it's not... dum IntelliJ"}) @EventHandler + @SuppressWarnings({"BooleanMethodIsAlwaysInverted", "cos it's not... dum IntelliJ"}) + @EventHandler public boolean onProjectileHit(ProjectileHitEvent event) { Projectile entity = event.getEntity(); Location location = BukkitUtil.adapt(entity.getLocation()); @@ -135,7 +139,7 @@ public class ProjectileEventListener implements Listener { return true; } if (plot.isAdded(pp.getUUID()) || Permissions - .hasPermission(pp, Permission.PERMISSION_PROJECTILE_OTHER)) { + .hasPermission(pp, Permission.PERMISSION_PROJECTILE_OTHER)) { return true; } entity.remove(); @@ -147,7 +151,7 @@ public class ProjectileEventListener implements Listener { return false; } Location sLoc = - BukkitUtil.adapt(((BlockProjectileSource) shooter).getBlock().getLocation()); + BukkitUtil.adapt(((BlockProjectileSource) shooter).getBlock().getLocation()); if (!area.contains(sLoc.getX(), sLoc.getZ())) { entity.remove(); return false; @@ -160,4 +164,5 @@ public class ProjectileEventListener implements Listener { } return true; } + } diff --git a/Bukkit/src/main/java/com/plotsquared/bukkit/listener/ServerListener.java b/Bukkit/src/main/java/com/plotsquared/bukkit/listener/ServerListener.java index 388c2cc76..f10a2fc2e 100644 --- a/Bukkit/src/main/java/com/plotsquared/bukkit/listener/ServerListener.java +++ b/Bukkit/src/main/java/com/plotsquared/bukkit/listener/ServerListener.java @@ -35,21 +35,23 @@ import org.bukkit.Bukkit; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.server.ServerLoadEvent; - -import javax.annotation.Nonnull; +import org.checkerframework.checker.nullness.qual.NonNull; public class ServerListener implements Listener { private final BukkitPlatform plugin; - @Inject public ServerListener(@Nonnull final BukkitPlatform plugin) { + @Inject + public ServerListener(final @NonNull BukkitPlatform plugin) { this.plugin = plugin; } - @EventHandler public void onServerLoad(ServerLoadEvent event) { + @EventHandler + public void onServerLoad(ServerLoadEvent event) { if (Bukkit.getPluginManager().getPlugin("MVdWPlaceholderAPI") != null && Settings.Enabled_Components.USE_MVDWAPI) { new MVdWPlaceholders(this.plugin, this.plugin.placeholderRegistry()); ConsolePlayer.getConsole().sendMessage(TranslatableCaption.of("placeholder.hooked")); } } + } diff --git a/Bukkit/src/main/java/com/plotsquared/bukkit/listener/SingleWorldListener.java b/Bukkit/src/main/java/com/plotsquared/bukkit/listener/SingleWorldListener.java index 6f78034a2..e056218d8 100644 --- a/Bukkit/src/main/java/com/plotsquared/bukkit/listener/SingleWorldListener.java +++ b/Bukkit/src/main/java/com/plotsquared/bukkit/listener/SingleWorldListener.java @@ -95,7 +95,8 @@ public class SingleWorldListener implements Listener { // handle(event); // } - @EventHandler(priority = EventPriority.LOWEST) public void onChunkLoad(ChunkLoadEvent event) { + @EventHandler(priority = EventPriority.LOWEST) + public void onChunkLoad(ChunkLoadEvent event) { handle(event); } @@ -125,4 +126,5 @@ public class SingleWorldListener implements Listener { } return separator == 1; } + } diff --git a/Bukkit/src/main/java/com/plotsquared/bukkit/listener/WorldEvents.java b/Bukkit/src/main/java/com/plotsquared/bukkit/listener/WorldEvents.java index b5da4c114..f8dd2f337 100644 --- a/Bukkit/src/main/java/com/plotsquared/bukkit/listener/WorldEvents.java +++ b/Bukkit/src/main/java/com/plotsquared/bukkit/listener/WorldEvents.java @@ -37,15 +37,15 @@ import org.bukkit.event.EventPriority; import org.bukkit.event.Listener; import org.bukkit.event.world.WorldInitEvent; import org.bukkit.generator.ChunkGenerator; - -import javax.annotation.Nonnull; +import org.checkerframework.checker.nullness.qual.NonNull; @SuppressWarnings("unused") public class WorldEvents implements Listener { private final PlotAreaManager plotAreaManager; - @Inject public WorldEvents(@Nonnull final PlotAreaManager plotAreaManager) { + @Inject + public WorldEvents(final @NonNull PlotAreaManager plotAreaManager) { this.plotAreaManager = plotAreaManager; } @@ -67,4 +67,5 @@ public class WorldEvents implements Listener { PlotSquared.get().loadWorld(name, new BukkitPlotGenerator(name, gen, this.plotAreaManager)); } } + } diff --git a/Bukkit/src/main/java/com/plotsquared/bukkit/managers/BukkitWorldManager.java b/Bukkit/src/main/java/com/plotsquared/bukkit/managers/BukkitWorldManager.java index 92f638461..acdb56674 100644 --- a/Bukkit/src/main/java/com/plotsquared/bukkit/managers/BukkitWorldManager.java +++ b/Bukkit/src/main/java/com/plotsquared/bukkit/managers/BukkitWorldManager.java @@ -32,9 +32,9 @@ import org.bukkit.Bukkit; import org.bukkit.World; import org.bukkit.WorldCreator; import org.bukkit.WorldType; +import org.checkerframework.checker.nullness.qual.NonNull; +import org.checkerframework.checker.nullness.qual.Nullable; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; import java.io.File; import java.io.IOException; import java.util.ArrayList; @@ -45,13 +45,15 @@ import java.util.List; * Default Bukkit world manager. It will handle world creation by * registering the generator in bukkit.yml */ -@Singleton public class BukkitWorldManager implements PlatformWorldManager { +@Singleton +public class BukkitWorldManager implements PlatformWorldManager { - @Override public void initialize() { + @Override + public void initialize() { } - @Override @Nullable - public World handleWorldCreation(@Nonnull String worldName, @Nullable String generator) { + @Override + public @Nullable World handleWorldCreation(@NonNull String worldName, @Nullable String generator) { this.setGenerator(worldName, generator); final WorldCreator wc = new WorldCreator(worldName); wc.environment(World.Environment.NORMAL); @@ -62,7 +64,7 @@ import java.util.List; return Bukkit.createWorld(wc); } - protected void setGenerator(@Nullable final String worldName, @Nullable final String generator) { + protected void setGenerator(final @Nullable String worldName, final @Nullable String generator) { if (generator == null) { return; } @@ -76,11 +78,13 @@ import java.util.List; } } - @Override public String getName() { + @Override + public String getName() { return "bukkit"; } - @Override public Collection getWorlds() { + @Override + public Collection getWorlds() { final List worlds = Bukkit.getWorlds(); final List worldNames = new ArrayList<>(); for (final World world : worlds) { diff --git a/Bukkit/src/main/java/com/plotsquared/bukkit/managers/HyperverseWorldManager.java b/Bukkit/src/main/java/com/plotsquared/bukkit/managers/HyperverseWorldManager.java index f12d51562..fb09047be 100644 --- a/Bukkit/src/main/java/com/plotsquared/bukkit/managers/HyperverseWorldManager.java +++ b/Bukkit/src/main/java/com/plotsquared/bukkit/managers/HyperverseWorldManager.java @@ -27,41 +27,42 @@ package com.plotsquared.bukkit.managers; import com.google.inject.Singleton; import org.bukkit.World; +import org.checkerframework.checker.nullness.qual.NonNull; +import org.checkerframework.checker.nullness.qual.Nullable; import se.hyperver.hyperverse.Hyperverse; import se.hyperver.hyperverse.world.WorldConfiguration; import se.hyperver.hyperverse.world.WorldConfigurationBuilder; import se.hyperver.hyperverse.world.WorldFeatures; import se.hyperver.hyperverse.world.WorldType; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; - /** * Hyperverse specific manager that creates worlds * using Hyperverse's API */ -@Singleton public class HyperverseWorldManager extends BukkitWorldManager { +@Singleton +public class HyperverseWorldManager extends BukkitWorldManager { - @Override @Nullable - public World handleWorldCreation(@Nonnull String worldName, @Nullable String generator) { + @Override + public @Nullable World handleWorldCreation(@NonNull String worldName, @Nullable String generator) { // First let Bukkit register the world this.setGenerator(worldName, generator); // Create the world final WorldConfigurationBuilder worldConfigurationBuilder = WorldConfiguration.builder() - .setName(worldName).setType(WorldType.OVER_WORLD); + .setName(worldName).setType(WorldType.OVER_WORLD); if (generator != null) { worldConfigurationBuilder.setGenerator(generator).setWorldFeatures(WorldFeatures.FLATLAND); } try { return Hyperverse.getApi().createWorld(worldConfigurationBuilder.createWorldConfiguration()) - .getBukkitWorld(); + .getBukkitWorld(); } catch (final Exception e) { e.printStackTrace(); } return null; } - @Override public String getName() { + @Override + public String getName() { return "bukkit-hyperverse"; } diff --git a/Bukkit/src/main/java/com/plotsquared/bukkit/managers/MultiverseWorldManager.java b/Bukkit/src/main/java/com/plotsquared/bukkit/managers/MultiverseWorldManager.java index cb8f7a7e6..60e4f927d 100644 --- a/Bukkit/src/main/java/com/plotsquared/bukkit/managers/MultiverseWorldManager.java +++ b/Bukkit/src/main/java/com/plotsquared/bukkit/managers/MultiverseWorldManager.java @@ -28,23 +28,23 @@ package com.plotsquared.bukkit.managers; import com.google.inject.Singleton; import org.bukkit.Bukkit; import org.bukkit.World; - -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import org.checkerframework.checker.nullness.qual.NonNull; +import org.checkerframework.checker.nullness.qual.Nullable; /** * Multiverse specific manager that informs Multiverse of * world creation by executing a console command */ -@Singleton public class MultiverseWorldManager extends BukkitWorldManager { +@Singleton +public class MultiverseWorldManager extends BukkitWorldManager { - @Override @Nullable - public World handleWorldCreation(@Nonnull final String worldName, @Nullable final String generator) { + @Override + public @Nullable World handleWorldCreation(final @NonNull String worldName, final @Nullable String generator) { // First let Bukkit register the world this.setGenerator(worldName, generator); // Then we send the console command final StringBuilder commandBuilder = new StringBuilder("mv create ") - .append(worldName).append(" normal"); + .append(worldName).append(" normal"); if (generator != null) { commandBuilder.append(" -g ").append(generator); } @@ -52,7 +52,8 @@ import javax.annotation.Nullable; return Bukkit.getWorld(worldName); } - @Override public String getName() { + @Override + public String getName() { return "bukkit-multiverse"; } diff --git a/Bukkit/src/main/java/com/plotsquared/bukkit/permissions/BukkitPermissionHandler.java b/Bukkit/src/main/java/com/plotsquared/bukkit/permissions/BukkitPermissionHandler.java index 87e164100..f860af7c1 100644 --- a/Bukkit/src/main/java/com/plotsquared/bukkit/permissions/BukkitPermissionHandler.java +++ b/Bukkit/src/main/java/com/plotsquared/bukkit/permissions/BukkitPermissionHandler.java @@ -33,9 +33,9 @@ import com.plotsquared.core.player.ConsolePlayer; import com.plotsquared.core.player.OfflinePlotPlayer; import com.plotsquared.core.player.PlotPlayer; import org.bukkit.entity.Player; +import org.checkerframework.checker.nullness.qual.NonNull; +import org.checkerframework.checker.nullness.qual.Nullable; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; import java.lang.ref.WeakReference; import java.util.EnumSet; import java.util.Optional; @@ -43,11 +43,15 @@ import java.util.Set; public class BukkitPermissionHandler implements PermissionHandler { - @Override public void initialize() { + @Override + public void initialize() { } - @Nonnull @Override public Optional getPermissionProfile( - @Nonnull PlotPlayer playerPlotPlayer) { + @NonNull + @Override + public Optional getPermissionProfile( + @NonNull PlotPlayer playerPlotPlayer + ) { if (playerPlotPlayer instanceof BukkitPlayer) { final BukkitPlayer bukkitPlayer = (BukkitPlayer) playerPlotPlayer; return Optional.of(new BukkitPermissionProfile(bukkitPlayer.getPlatformPlayer())); @@ -57,12 +61,17 @@ public class BukkitPermissionHandler implements PermissionHandler { return Optional.empty(); } - @Nonnull @Override public Optional getPermissionProfile( - @Nonnull OfflinePlotPlayer offlinePlotPlayer) { + @NonNull + @Override + public Optional getPermissionProfile( + @NonNull OfflinePlotPlayer offlinePlotPlayer + ) { return Optional.empty(); } - @Nonnull @Override public Set getCapabilities() { + @NonNull + @Override + public Set getCapabilities() { return EnumSet.of(PermissionHandlerCapability.ONLINE_PERMISSIONS); } @@ -71,12 +80,15 @@ public class BukkitPermissionHandler implements PermissionHandler { private final WeakReference playerReference; - private BukkitPermissionProfile(@Nonnull final Player player) { + private BukkitPermissionProfile(final @NonNull Player player) { this.playerReference = new WeakReference<>(player); } - @Override public boolean hasPermission(@Nullable final String world, - @Nonnull final String permission) { + @Override + public boolean hasPermission( + final @Nullable String world, + final @NonNull String permission + ) { final Player player = this.playerReference.get(); return player != null && player.hasPermission(permission); } diff --git a/Bukkit/src/main/java/com/plotsquared/bukkit/permissions/VaultPermissionHandler.java b/Bukkit/src/main/java/com/plotsquared/bukkit/permissions/VaultPermissionHandler.java index 6a9ead11d..cc2f433b7 100644 --- a/Bukkit/src/main/java/com/plotsquared/bukkit/permissions/VaultPermissionHandler.java +++ b/Bukkit/src/main/java/com/plotsquared/bukkit/permissions/VaultPermissionHandler.java @@ -37,9 +37,9 @@ import net.milkbowl.vault.permission.Permission; import org.bukkit.Bukkit; import org.bukkit.OfflinePlayer; import org.bukkit.plugin.RegisteredServiceProvider; +import org.checkerframework.checker.nullness.qual.NonNull; +import org.checkerframework.checker.nullness.qual.Nullable; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; import java.util.EnumSet; import java.util.Optional; import java.util.Set; @@ -48,19 +48,23 @@ public class VaultPermissionHandler implements PermissionHandler { private Permission permissions; - @Override public void initialize() { + @Override + public void initialize() { if (Bukkit.getServer().getPluginManager().getPlugin("Vault") == null) { throw new IllegalStateException("Vault is not present on the server"); } RegisteredServiceProvider permissionProvider = - Bukkit.getServer().getServicesManager().getRegistration(Permission.class); + Bukkit.getServer().getServicesManager().getRegistration(Permission.class); if (permissionProvider != null) { this.permissions = permissionProvider.getProvider(); } } - @Nonnull @Override public Optional getPermissionProfile( - @Nonnull PlotPlayer playerPlotPlayer) { + @NonNull + @Override + public Optional getPermissionProfile( + @NonNull PlotPlayer playerPlotPlayer + ) { if (playerPlotPlayer instanceof BukkitPlayer) { final BukkitPlayer bukkitPlayer = (BukkitPlayer) playerPlotPlayer; return Optional.of(new VaultPermissionProfile(bukkitPlayer.getPlatformPlayer())); @@ -70,18 +74,25 @@ public class VaultPermissionHandler implements PermissionHandler { return Optional.empty(); } - @Nonnull @Override public Optional getPermissionProfile( - @Nonnull OfflinePlotPlayer offlinePlotPlayer) { + @NonNull + @Override + public Optional getPermissionProfile( + @NonNull OfflinePlotPlayer offlinePlotPlayer + ) { if (offlinePlotPlayer instanceof BukkitOfflinePlayer) { return Optional.of(new VaultPermissionProfile(((BukkitOfflinePlayer) offlinePlotPlayer).player)); } return Optional.empty(); } - @Nonnull @Override public Set getCapabilities() { - return EnumSet.of(PermissionHandlerCapability.PER_WORLD_PERMISSIONS, - PermissionHandlerCapability.ONLINE_PERMISSIONS, - PermissionHandlerCapability.OFFLINE_PERMISSIONS); + @NonNull + @Override + public Set getCapabilities() { + return EnumSet.of( + PermissionHandlerCapability.PER_WORLD_PERMISSIONS, + PermissionHandlerCapability.ONLINE_PERMISSIONS, + PermissionHandlerCapability.OFFLINE_PERMISSIONS + ); } @@ -89,12 +100,15 @@ public class VaultPermissionHandler implements PermissionHandler { private final OfflinePlayer offlinePlayer; - private VaultPermissionProfile(@Nonnull final OfflinePlayer offlinePlayer) { + private VaultPermissionProfile(final @NonNull OfflinePlayer offlinePlayer) { this.offlinePlayer = offlinePlayer; } - @Override public boolean hasPermission(@Nullable final String world, - @Nonnull final String permission) { + @Override + public boolean hasPermission( + final @Nullable String world, + final @NonNull String permission + ) { if (permissions == null) { return false; } diff --git a/Bukkit/src/main/java/com/plotsquared/bukkit/placeholder/MVdWPlaceholders.java b/Bukkit/src/main/java/com/plotsquared/bukkit/placeholder/MVdWPlaceholders.java index 7f0efa4a2..d46b73a48 100644 --- a/Bukkit/src/main/java/com/plotsquared/bukkit/placeholder/MVdWPlaceholders.java +++ b/Bukkit/src/main/java/com/plotsquared/bukkit/placeholder/MVdWPlaceholders.java @@ -34,8 +34,7 @@ import com.plotsquared.core.util.placeholders.Placeholder; import com.plotsquared.core.util.placeholders.PlaceholderRegistry; import org.bukkit.entity.Player; import org.bukkit.plugin.Plugin; - -import javax.annotation.Nonnull; +import org.checkerframework.checker.nullness.qual.NonNull; /** * Placeholder support for MVdWPlaceholderAPI @@ -46,7 +45,10 @@ public class MVdWPlaceholders { private final Plugin plugin; private final PlaceholderRegistry registry; - public MVdWPlaceholders(@Nonnull final Plugin plugin, @Nonnull final PlaceholderRegistry registry) { + public MVdWPlaceholders( + final @NonNull Plugin plugin, + final @NonNull PlaceholderRegistry registry + ) { this.plugin = plugin; this.registry = registry; for (final Placeholder placeholder : registry.getPlaceholders()) { @@ -55,19 +57,24 @@ public class MVdWPlaceholders { PlotSquared.get().getEventDispatcher().registerListener(this); } - @Subscribe public void onNewPlaceholder(@Nonnull final PlaceholderRegistry.PlaceholderAddedEvent event) { + @Subscribe + public void onNewPlaceholder(final PlaceholderRegistry.@NonNull PlaceholderAddedEvent event) { this.addPlaceholder(event.getPlaceholder()); } - private void addPlaceholder(@Nonnull final Placeholder placeholder) { - PlaceholderAPI.registerPlaceholder(plugin, PREFIX + String.format("%s", placeholder.getKey()), placeholderReplaceEvent -> { - if (!placeholderReplaceEvent.isOnline() || placeholderReplaceEvent.getPlayer() == null) { - return ""; - } - final PlotPlayer player = BukkitUtil.adapt(placeholderReplaceEvent.getPlayer()); - String key = placeholderReplaceEvent.getPlaceholder().substring(PREFIX.length()); - return registry.getPlaceholderValue(key, player); - }); + private void addPlaceholder(final @NonNull Placeholder placeholder) { + PlaceholderAPI.registerPlaceholder( + plugin, + PREFIX + String.format("%s", placeholder.getKey()), + placeholderReplaceEvent -> { + if (!placeholderReplaceEvent.isOnline() || placeholderReplaceEvent.getPlayer() == null) { + return ""; + } + final PlotPlayer player = BukkitUtil.adapt(placeholderReplaceEvent.getPlayer()); + String key = placeholderReplaceEvent.getPlaceholder().substring(PREFIX.length()); + return registry.getPlaceholderValue(key, player); + } + ); } } diff --git a/Bukkit/src/main/java/com/plotsquared/bukkit/placeholder/PAPIPlaceholders.java b/Bukkit/src/main/java/com/plotsquared/bukkit/placeholder/PAPIPlaceholders.java index faa076d1a..f518f967f 100644 --- a/Bukkit/src/main/java/com/plotsquared/bukkit/placeholder/PAPIPlaceholders.java +++ b/Bukkit/src/main/java/com/plotsquared/bukkit/placeholder/PAPIPlaceholders.java @@ -36,27 +36,33 @@ public class PAPIPlaceholders extends PlaceholderExpansion { public PAPIPlaceholders() { } - @Override public boolean persist() { + @Override + public boolean persist() { return true; } - @Override public boolean canRegister() { + @Override + public boolean canRegister() { return true; } - @Override public String getAuthor() { + @Override + public String getAuthor() { return "IntellectualSites"; } - @Override public String getIdentifier() { + @Override + public String getIdentifier() { return "plotsquared"; } - @Override public String getVersion() { + @Override + public String getVersion() { return "3"; } - @Override public String onPlaceholderRequest(Player p, String identifier) { + @Override + public String onPlaceholderRequest(Player p, String identifier) { final PlotPlayer pl = PlotSquared.platform().playerManager().getPlayerIfExists(p.getUniqueId()); if (pl == null) { @@ -66,18 +72,20 @@ public class PAPIPlaceholders extends PlaceholderExpansion { // PAPI specific ones that don't translate well over into other placeholder APIs if (identifier.startsWith("has_plot_")) { identifier = identifier.substring("has_plot_".length()); - if (identifier.isEmpty()) + if (identifier.isEmpty()) { return ""; + } return pl.getPlotCount(identifier) > 0 ? - PlaceholderAPIPlugin.booleanTrue() : - PlaceholderAPIPlugin.booleanFalse(); + PlaceholderAPIPlugin.booleanTrue() : + PlaceholderAPIPlugin.booleanFalse(); } if (identifier.startsWith("plot_count_")) { identifier = identifier.substring("plot_count_".length()); - if (identifier.isEmpty()) + if (identifier.isEmpty()) { return ""; + } return String.valueOf(pl.getPlotCount(identifier)); } diff --git a/Bukkit/src/main/java/com/plotsquared/bukkit/placeholder/PlaceholderFormatter.java b/Bukkit/src/main/java/com/plotsquared/bukkit/placeholder/PlaceholderFormatter.java index bf1ed825e..2499c0d51 100644 --- a/Bukkit/src/main/java/com/plotsquared/bukkit/placeholder/PlaceholderFormatter.java +++ b/Bukkit/src/main/java/com/plotsquared/bukkit/placeholder/PlaceholderFormatter.java @@ -30,12 +30,12 @@ import com.plotsquared.core.configuration.caption.ChatFormatter; import com.plotsquared.core.player.PlotPlayer; import me.clip.placeholderapi.PlaceholderAPI; import org.bukkit.entity.Player; - -import javax.annotation.Nonnull; +import org.checkerframework.checker.nullness.qual.NonNull; public class PlaceholderFormatter implements ChatFormatter { - @Override public void format(@Nonnull final ChatContext context) { + @Override + public void format(final @NonNull ChatContext context) { final PlotPlayer recipient = context.getRecipient(); if (recipient instanceof BukkitPlayer) { if (context.isRawOutput()) { diff --git a/Bukkit/src/main/java/com/plotsquared/bukkit/player/BukkitOfflinePlayer.java b/Bukkit/src/main/java/com/plotsquared/bukkit/player/BukkitOfflinePlayer.java index e7273c45f..461ce1f71 100644 --- a/Bukkit/src/main/java/com/plotsquared/bukkit/player/BukkitOfflinePlayer.java +++ b/Bukkit/src/main/java/com/plotsquared/bukkit/player/BukkitOfflinePlayer.java @@ -30,10 +30,9 @@ import com.plotsquared.core.permissions.PermissionHandler; import com.plotsquared.core.permissions.PermissionProfile; import com.plotsquared.core.player.OfflinePlotPlayer; import org.bukkit.OfflinePlayer; - -import javax.annotation.Nonnegative; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import org.checkerframework.checker.index.qual.NonNegative; +import org.checkerframework.checker.nullness.qual.NonNull; +import org.checkerframework.checker.nullness.qual.Nullable; import java.util.UUID; @@ -46,30 +45,40 @@ public class BukkitOfflinePlayer implements OfflinePlotPlayer { * Please do not use this method. Instead use BukkitUtil.getPlayer(Player), * as it caches player objects. * - * @param player Bukkit OfflinePlayer player to convert + * @param player Bukkit OfflinePlayer player to convert * @param permissionHandler Permission Profile to be used */ - public BukkitOfflinePlayer(@Nonnull final OfflinePlayer player, @Nonnull final - PermissionHandler permissionHandler) { + public BukkitOfflinePlayer( + final @NonNull OfflinePlayer player, final @NonNull + PermissionHandler permissionHandler + ) { this.player = player; this.permissionProfile = permissionHandler.getPermissionProfile(this) - .orElse(NullPermissionProfile.INSTANCE); + .orElse(NullPermissionProfile.INSTANCE); } - @Nonnull @Override public UUID getUUID() { + @NonNull + @Override + public UUID getUUID() { return this.player.getUniqueId(); } - @Override @Nonnegative public long getLastPlayed() { + @Override + @NonNegative + public long getLastPlayed() { return this.player.getLastSeen(); } - @Override public String getName() { + @Override + public String getName() { return this.player.getName(); } - @Override public boolean hasPermission(@Nullable final String world, - @Nonnull final String permission) { + @Override + public boolean hasPermission( + final @Nullable String world, + final @NonNull String permission + ) { return this.permissionProfile.hasPermission(world, permission); } diff --git a/Bukkit/src/main/java/com/plotsquared/bukkit/player/BukkitPlayer.java b/Bukkit/src/main/java/com/plotsquared/bukkit/player/BukkitPlayer.java index fd2c8a3c9..095533587 100644 --- a/Bukkit/src/main/java/com/plotsquared/bukkit/player/BukkitPlayer.java +++ b/Bukkit/src/main/java/com/plotsquared/bukkit/player/BukkitPlayer.java @@ -28,10 +28,10 @@ package com.plotsquared.bukkit.player; import com.google.common.base.Charsets; import com.plotsquared.bukkit.util.BukkitUtil; import com.plotsquared.core.PlotSquared; -import com.plotsquared.core.permissions.Permission; import com.plotsquared.core.configuration.Settings; import com.plotsquared.core.events.TeleportCause; import com.plotsquared.core.location.Location; +import com.plotsquared.core.permissions.Permission; import com.plotsquared.core.permissions.PermissionHandler; import com.plotsquared.core.player.ConsolePlayer; import com.plotsquared.core.player.PlotPlayer; @@ -54,10 +54,9 @@ import org.bukkit.event.EventException; import org.bukkit.event.player.PlayerTeleportEvent; import org.bukkit.permissions.PermissionAttachmentInfo; import org.bukkit.plugin.RegisteredListener; +import org.checkerframework.checker.index.qual.NonNegative; +import org.checkerframework.checker.nullness.qual.NonNull; -import javax.annotation.Nonnegative; - -import javax.annotation.Nonnull; import java.util.Arrays; import java.util.Set; import java.util.UUID; @@ -73,24 +72,29 @@ public class BukkitPlayer extends PlotPlayer { private static boolean CHECK_EFFECTIVE = true; public final Player player; private String name; + /** *

Please do not use this method. Instead use * BukkitUtil.getPlayer(Player), as it caches player objects.

* - * @param plotAreaManager PlotAreaManager instance - * @param eventDispatcher EventDispatcher instance - * @param player Bukkit player instance + * @param plotAreaManager PlotAreaManager instance + * @param eventDispatcher EventDispatcher instance + * @param player Bukkit player instance * @param permissionHandler PermissionHandler instance */ - public BukkitPlayer(@Nonnull final PlotAreaManager plotAreaManager, @Nonnull final EventDispatcher eventDispatcher, - @Nonnull final Player player, @Nonnull final PermissionHandler permissionHandler) { + public BukkitPlayer( + final @NonNull PlotAreaManager plotAreaManager, final @NonNull EventDispatcher eventDispatcher, + final @NonNull Player player, final @NonNull PermissionHandler permissionHandler + ) { this(plotAreaManager, eventDispatcher, player, false, permissionHandler); } - public BukkitPlayer(@Nonnull final PlotAreaManager plotAreaManager, @Nonnull final - EventDispatcher eventDispatcher, @Nonnull final Player player, - final boolean realPlayer, - @Nonnull final PermissionHandler permissionHandler) { + public BukkitPlayer( + final @NonNull PlotAreaManager plotAreaManager, final @NonNull + EventDispatcher eventDispatcher, final @NonNull Player player, + final boolean realPlayer, + final @NonNull PermissionHandler permissionHandler + ) { super(plotAreaManager, eventDispatcher, permissionHandler); this.player = player; this.setupPermissionProfile(); @@ -99,32 +103,39 @@ public class BukkitPlayer extends PlotPlayer { } } - @Override public Actor toActor() { + @Override + public Actor toActor() { return BukkitAdapter.adapt(player); } - @Override public Player getPlatformPlayer() { + @Override + public Player getPlatformPlayer() { return this.player; } - @Nonnull @Override public UUID getUUID() { + @NonNull + @Override + public UUID getUUID() { if (Settings.UUID.OFFLINE) { if (Settings.UUID.FORCE_LOWERCASE) { return UUID.nameUUIDFromBytes(("OfflinePlayer:" + - getName().toLowerCase()).getBytes(Charsets.UTF_8)); + getName().toLowerCase()).getBytes(Charsets.UTF_8)); } else { return UUID.nameUUIDFromBytes(("OfflinePlayer:" + - getName()).getBytes(Charsets.UTF_8)); + getName()).getBytes(Charsets.UTF_8)); } } return player.getUniqueId(); } - @Override @Nonnegative public long getLastPlayed() { + @Override + @NonNegative + public long getLastPlayed() { return this.player.getLastSeen(); } - @Override public boolean canTeleport(@Nonnull final Location location) { + @Override + public boolean canTeleport(final @NonNull Location location) { final org.bukkit.Location to = BukkitUtil.adapt(location); final org.bukkit.Location from = player.getLocation(); PlayerTeleportEvent event = new PlayerTeleportEvent(player, from, to); @@ -137,7 +148,7 @@ public class BukkitPlayer extends PlotPlayer { return true; } - private void callEvent(@Nonnull final Event event) { + private void callEvent(final @NonNull Event event) { final RegisteredListener[] listeners = event.getHandlers().getRegisteredListeners(); for (final RegisteredListener listener : listeners) { if (listener.getPlugin().getName().equals(PlotSquared.platform().pluginName())) { @@ -151,8 +162,12 @@ public class BukkitPlayer extends PlotPlayer { } } - @Override @Nonnegative public int hasPermissionRange(@Nonnull final String stub, - @Nonnegative final int range) { + @Override + @NonNegative + public int hasPermissionRange( + final @NonNull String stub, + @NonNegative final int range + ) { if (hasPermission(Permission.PERMISSION_ADMIN.toString())) { return Integer.MAX_VALUE; } @@ -213,34 +228,40 @@ public class BukkitPlayer extends PlotPlayer { } @Override - public void teleport(@Nonnull final Location location, @Nonnull final TeleportCause cause) { + public void teleport(final @NonNull Location location, final @NonNull TeleportCause cause) { if (Math.abs(location.getX()) >= 30000000 || Math.abs(location.getZ()) >= 30000000) { return; } final org.bukkit.Location bukkitLocation = - new org.bukkit.Location(BukkitUtil.getWorld(location.getWorldName()), location.getX() + 0.5, - location.getY(), location.getZ() + 0.5, location.getYaw(), location.getPitch()); + new org.bukkit.Location(BukkitUtil.getWorld(location.getWorldName()), location.getX() + 0.5, + location.getY(), location.getZ() + 0.5, location.getYaw(), location.getPitch() + ); PaperLib.teleportAsync(player, bukkitLocation, getTeleportCause(cause)); } - @Override public String getName() { + @Override + public String getName() { if (this.name == null) { this.name = this.player.getName(); } return this.name; } - @Override public void setCompassTarget(Location location) { + @Override + public void setCompassTarget(Location location) { this.player.setCompassTarget( - new org.bukkit.Location(BukkitUtil.getWorld(location.getWorldName()), location.getX(), - location.getY(), location.getZ())); + new org.bukkit.Location(BukkitUtil.getWorld(location.getWorldName()), location.getX(), + location.getY(), location.getZ() + )); } - @Override public Location getLocationFull() { + @Override + public Location getLocationFull() { return BukkitUtil.adaptComplete(this.player.getLocation()); } - @Override public void setWeather(@Nonnull final PlotWeather weather) { + @Override + public void setWeather(final @NonNull PlotWeather weather) { switch (weather) { case CLEAR: this.player.setPlayerWeather(WeatherType.CLEAR); @@ -255,7 +276,8 @@ public class BukkitPlayer extends PlotPlayer { } } - @Override public com.sk89q.worldedit.world.gamemode.GameMode getGameMode() { + @Override + public com.sk89q.worldedit.world.gamemode.GameMode getGameMode() { switch (this.player.getGameMode()) { case ADVENTURE: return ADVENTURE; @@ -282,7 +304,8 @@ public class BukkitPlayer extends PlotPlayer { } } - @Override public void setTime(final long time) { + @Override + public void setTime(final long time) { if (time != Long.MAX_VALUE) { this.player.setPlayerTime(time, false); } else { @@ -290,48 +313,57 @@ public class BukkitPlayer extends PlotPlayer { } } - @Override public boolean getFlight() { + @Override + public boolean getFlight() { return player.getAllowFlight(); } - @Override public void setFlight(boolean fly) { + @Override + public void setFlight(boolean fly) { this.player.setAllowFlight(fly); } - @Override public void playMusic(@Nonnull final Location location, @Nonnull final ItemType id) { + @Override + public void playMusic(final @NonNull Location location, final @NonNull ItemType id) { if (id == ItemTypes.AIR) { // Let's just stop all the discs because why not? for (final Sound sound : Arrays.stream(Sound.values()) - .filter(sound -> sound.name().contains("DISC")).collect(Collectors.toList())) { + .filter(sound -> sound.name().contains("DISC")).collect(Collectors.toList())) { player.stopSound(sound); } // this.player.playEffect(BukkitUtil.getLocation(location), Effect.RECORD_PLAY, Material.AIR); } else { // this.player.playEffect(BukkitUtil.getLocation(location), Effect.RECORD_PLAY, id.to(Material.class)); this.player.playSound(BukkitUtil.adapt(location), - Sound.valueOf(BukkitAdapter.adapt(id).name()), Float.MAX_VALUE, 1f); + Sound.valueOf(BukkitAdapter.adapt(id).name()), Float.MAX_VALUE, 1f + ); } } - @Override public void kick(final String message) { + @Override + public void kick(final String message) { this.player.kickPlayer(message); } - @Override public void stopSpectating() { + @Override + public void stopSpectating() { if (getGameMode() == SPECTATOR) { this.player.setSpectatorTarget(null); } } - @Override public boolean isBanned() { + @Override + public boolean isBanned() { return this.player.isBanned(); } - @Override @Nonnull public Audience getAudience() { + @Override + public @NonNull Audience getAudience() { return BukkitUtil.BUKKIT_AUDIENCES.player(this.player); } - @Override public boolean canSee(final PlotPlayer other) { + @Override + public boolean canSee(final PlotPlayer other) { if (other instanceof ConsolePlayer) { return true; } else { @@ -339,7 +371,7 @@ public class BukkitPlayer extends PlotPlayer { } } - public PlayerTeleportEvent.TeleportCause getTeleportCause(@Nonnull final TeleportCause cause) { + public PlayerTeleportEvent.TeleportCause getTeleportCause(final @NonNull TeleportCause cause) { switch (cause) { case COMMAND: return PlayerTeleportEvent.TeleportCause.COMMAND; @@ -349,4 +381,5 @@ public class BukkitPlayer extends PlotPlayer { return PlayerTeleportEvent.TeleportCause.UNKNOWN; } } + } diff --git a/Bukkit/src/main/java/com/plotsquared/bukkit/player/BukkitPlayerManager.java b/Bukkit/src/main/java/com/plotsquared/bukkit/player/BukkitPlayerManager.java index fc14eb3c6..226ea0f8c 100644 --- a/Bukkit/src/main/java/com/plotsquared/bukkit/player/BukkitPlayerManager.java +++ b/Bukkit/src/main/java/com/plotsquared/bukkit/player/BukkitPlayerManager.java @@ -33,29 +33,35 @@ import com.plotsquared.core.util.EventDispatcher; import com.plotsquared.core.util.PlayerManager; import org.bukkit.Bukkit; import org.bukkit.entity.Player; +import org.checkerframework.checker.nullness.qual.NonNull; +import org.checkerframework.checker.nullness.qual.Nullable; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; import java.util.UUID; /** * Player manager providing {@link BukkitPlayer Bukkit players} */ -@Singleton public class BukkitPlayerManager extends PlayerManager { +@Singleton +public class BukkitPlayerManager extends PlayerManager { private final PlotAreaManager plotAreaManager; private final EventDispatcher eventDispatcher; private final PermissionHandler permissionHandler; - @Inject public BukkitPlayerManager(@Nonnull final PlotAreaManager plotAreaManager, - @Nonnull final EventDispatcher eventDispatcher, - @Nonnull final PermissionHandler permissionHandler) { + @Inject + public BukkitPlayerManager( + final @NonNull PlotAreaManager plotAreaManager, + final @NonNull EventDispatcher eventDispatcher, + final @NonNull PermissionHandler permissionHandler + ) { this.plotAreaManager = plotAreaManager; this.eventDispatcher = eventDispatcher; this.permissionHandler = permissionHandler; } - @Nonnull @Override public BukkitPlayer getPlayer(@Nonnull final Player object) { + @NonNull + @Override + public BukkitPlayer getPlayer(final @NonNull Player object) { if (!object.isOnline()) { throw new NoSuchPlayerException(object.getUniqueId()); } @@ -66,7 +72,8 @@ import java.util.UUID; } } - @Override @Nonnull public BukkitPlayer createPlayer(@Nonnull final UUID uuid) { + @Override + public @NonNull BukkitPlayer createPlayer(final @NonNull UUID uuid) { final Player player = Bukkit.getPlayer(uuid); if (player == null || !player.isOnline()) { throw new NoSuchPlayerException(uuid); @@ -74,14 +81,18 @@ import java.util.UUID; return new BukkitPlayer(this.plotAreaManager, this.eventDispatcher, player, this.permissionHandler); } - @Nullable @Override public BukkitOfflinePlayer getOfflinePlayer(@Nullable final UUID uuid) { + @Nullable + @Override + public BukkitOfflinePlayer getOfflinePlayer(final @Nullable UUID uuid) { if (uuid == null) { return null; } return new BukkitOfflinePlayer(Bukkit.getOfflinePlayer(uuid), this.permissionHandler); } - @Nonnull @Override public BukkitOfflinePlayer getOfflinePlayer(@Nonnull final String username) { + @NonNull + @Override + public BukkitOfflinePlayer getOfflinePlayer(final @NonNull String username) { return new BukkitOfflinePlayer(Bukkit.getOfflinePlayer(username), this.permissionHandler); } diff --git a/Bukkit/src/main/java/com/plotsquared/bukkit/queue/BukkitChunkCoordinator.java b/Bukkit/src/main/java/com/plotsquared/bukkit/queue/BukkitChunkCoordinator.java index 63c1793dc..77d40d6ee 100644 --- a/Bukkit/src/main/java/com/plotsquared/bukkit/queue/BukkitChunkCoordinator.java +++ b/Bukkit/src/main/java/com/plotsquared/bukkit/queue/BukkitChunkCoordinator.java @@ -39,8 +39,8 @@ import org.bukkit.Bukkit; import org.bukkit.Chunk; import org.bukkit.plugin.Plugin; import org.bukkit.plugin.java.JavaPlugin; +import org.checkerframework.checker.nullness.qual.NonNull; -import javax.annotation.Nonnull; import java.util.Collection; import java.util.LinkedList; import java.util.List; @@ -76,15 +76,18 @@ public final class BukkitChunkCoordinator extends ChunkCoordinator { private final AtomicInteger expectedSize; private int batchSize; - @Inject private BukkitChunkCoordinator(@Assisted final long maxIterationTime, - @Assisted final int initialBatchSize, - @Assisted @Nonnull final Consumer chunkConsumer, - @Assisted @Nonnull final World world, - @Assisted @Nonnull final Collection requestedChunks, - @Assisted @Nonnull final Runnable whenDone, - @Assisted @Nonnull final Consumer throwableConsumer, - @Assisted final boolean unloadAfter, - @Assisted @Nonnull final Collection progressSubscribers) { + @Inject + private BukkitChunkCoordinator( + @Assisted final long maxIterationTime, + @Assisted final int initialBatchSize, + @Assisted final @NonNull Consumer chunkConsumer, + @Assisted final @NonNull World world, + @Assisted final @NonNull Collection requestedChunks, + @Assisted final @NonNull Runnable whenDone, + @Assisted final @NonNull Consumer throwableConsumer, + @Assisted final boolean unloadAfter, + @Assisted final @NonNull Collection progressSubscribers + ) { this.requestedChunks = new LinkedBlockingQueue<>(requestedChunks); this.availableChunks = new LinkedBlockingQueue<>(); this.totalSize = requestedChunks.size(); @@ -100,14 +103,16 @@ public final class BukkitChunkCoordinator extends ChunkCoordinator { this.progressSubscribers.addAll(progressSubscribers); } - @Override public void start() { + @Override + public void start() { // Request initial batch this.requestBatch(); // Wait until next tick to give the chunks a chance to be loaded TaskManager.runTaskLater(() -> TaskManager.runTaskRepeat(this, TaskTime.ticks(1)), TaskTime.ticks(1)); } - @Override public void runTask() { + @Override + public void runTask() { Chunk chunk = this.availableChunks.poll(); if (chunk == null) { return; @@ -166,22 +171,24 @@ public final class BukkitChunkCoordinator extends ChunkCoordinator { BlockVector2 chunk; for (int i = 0; i < this.batchSize && (chunk = this.requestedChunks.poll()) != null; i++) { // This required PaperLib to be bumped to version 1.0.4 to mark the request as urgent - PaperLib.getChunkAtAsync(this.bukkitWorld, chunk.getX(), chunk.getZ(), true, true).whenComplete((chunkObject, throwable) -> { - if (throwable != null) { - throwable.printStackTrace(); - // We want one less because this couldn't be processed - this.expectedSize.decrementAndGet(); - } else { - this.processChunk(chunkObject); - } - }); + PaperLib + .getChunkAtAsync(this.bukkitWorld, chunk.getX(), chunk.getZ(), true, true) + .whenComplete((chunkObject, throwable) -> { + if (throwable != null) { + throwable.printStackTrace(); + // We want one less because this couldn't be processed + this.expectedSize.decrementAndGet(); + } else { + this.processChunk(chunkObject); + } + }); } } /** * Once a chunk has been loaded, process it (add a plugin ticket and add to available chunks list) */ - private void processChunk(@Nonnull final Chunk chunk) { + private void processChunk(final @NonNull Chunk chunk) { if (!chunk.isLoaded()) { throw new IllegalArgumentException(String.format("Chunk %d;%d is is not loaded", chunk.getX(), chunk.getZ())); } @@ -192,18 +199,20 @@ public final class BukkitChunkCoordinator extends ChunkCoordinator { /** * Once a chunk has been used, free it up for unload by removing the plugin ticket */ - private void freeChunk(@Nonnull final Chunk chunk) { + private void freeChunk(final @NonNull Chunk chunk) { if (!chunk.isLoaded()) { throw new IllegalArgumentException(String.format("Chunk %d;%d is is not loaded", chunk.getX(), chunk.getZ())); } chunk.removePluginChunkTicket(this.plugin); } - @Override public int getRemainingChunks() { + @Override + public int getRemainingChunks() { return this.expectedSize.get(); } - @Override public int getTotalChunks() { + @Override + public int getTotalChunks() { return this.totalSize; } @@ -212,7 +221,7 @@ public final class BukkitChunkCoordinator extends ChunkCoordinator { * * @param subscriber Subscriber */ - public void subscribeToProgress(@Nonnull final ProgressSubscriber subscriber) { + public void subscribeToProgress(final @NonNull ProgressSubscriber subscriber) { this.progressSubscribers.add(subscriber); } diff --git a/Bukkit/src/main/java/com/plotsquared/bukkit/queue/BukkitQueueCoordinator.java b/Bukkit/src/main/java/com/plotsquared/bukkit/queue/BukkitQueueCoordinator.java index a4d18774d..d1445b343 100644 --- a/Bukkit/src/main/java/com/plotsquared/bukkit/queue/BukkitQueueCoordinator.java +++ b/Bukkit/src/main/java/com/plotsquared/bukkit/queue/BukkitQueueCoordinator.java @@ -54,8 +54,8 @@ import org.bukkit.Chunk; import org.bukkit.block.Block; import org.bukkit.block.Container; import org.bukkit.block.data.BlockData; +import org.checkerframework.checker.nullness.qual.NonNull; -import javax.annotation.Nonnull; import java.util.ArrayList; import java.util.Collection; import java.util.function.Consumer; @@ -65,31 +65,41 @@ public class BukkitQueueCoordinator extends BasicQueueCoordinator { private final SideEffectSet noSideEffectSet; private final SideEffectSet lightingSideEffectSet; private org.bukkit.World bukkitWorld; - @Inject private ChunkCoordinatorBuilderFactory chunkCoordinatorBuilderFactory; - @Inject private ChunkCoordinatorFactory chunkCoordinatorFactory; + @Inject + private ChunkCoordinatorBuilderFactory chunkCoordinatorBuilderFactory; + @Inject + private ChunkCoordinatorFactory chunkCoordinatorFactory; private ChunkCoordinator chunkCoordinator; - @Inject public BukkitQueueCoordinator(@Nonnull World world) { + @Inject + public BukkitQueueCoordinator(@NonNull World world) { super(world); - noSideEffectSet = SideEffectSet.none().with(SideEffect.LIGHTING, SideEffect.State.OFF).with(SideEffect.NEIGHBORS, SideEffect.State.OFF); + noSideEffectSet = SideEffectSet.none().with(SideEffect.LIGHTING, SideEffect.State.OFF).with( + SideEffect.NEIGHBORS, + SideEffect.State.OFF + ); lightingSideEffectSet = SideEffectSet.none().with(SideEffect.NEIGHBORS, SideEffect.State.OFF); } - @Override public BlockState getBlock(int x, int y, int z) { + @Override + public BlockState getBlock(int x, int y, int z) { Block block = getBukkitWorld().getBlockAt(x, y, z); return BukkitBlockUtil.get(block); } - @Override public void start() { + @Override + public void start() { chunkCoordinator.start(); } //TODO: implement cancellation - @Override public void cancel() { + @Override + public void cancel() { chunkCoordinator.cancel(); } - @Override public boolean enqueue() { + @Override + public boolean enqueue() { final Clipboard regenClipboard; if (isRegen()) { BlockVector3 start = BlockVector3.at(getRegenStart()[0] << 4, 0, getRegenStart()[1] << 4); @@ -110,8 +120,8 @@ public class BukkitQueueCoordinator extends BasicQueueCoordinator { consumer = blockVector2 -> { LocalChunk localChunk = getBlockChunks().get(blockVector2); boolean isRegenChunk = - regenClipboard != null && blockVector2.getBlockX() > getRegenStart()[0] && blockVector2.getBlockZ() > getRegenStart()[1] - && blockVector2.getBlockX() < getRegenEnd()[0] && blockVector2.getBlockZ() < getRegenEnd()[1]; + regenClipboard != null && blockVector2.getBlockX() > getRegenStart()[0] && blockVector2.getBlockZ() > getRegenStart()[1] + && blockVector2.getBlockX() < getRegenEnd()[0] && blockVector2.getBlockZ() < getRegenEnd()[1]; if (isRegenChunk) { for (int layer = 0; layer < 16; layer++) { for (int y = layer << 4; y < 16; y++) { @@ -190,16 +200,26 @@ public class BukkitQueueCoordinator extends BasicQueueCoordinator { read.addAll(getReadChunks()); } chunkCoordinator = - chunkCoordinatorBuilderFactory.create(chunkCoordinatorFactory).inWorld(getWorld()).withChunks(getBlockChunks().keySet()).withChunks(read) - .withInitialBatchSize(3).withMaxIterationTime(40).withThrowableConsumer(Throwable::printStackTrace).withFinalAction(getCompleteTask()) - .withConsumer(consumer).unloadAfter(isUnloadAfter()).withProgressSubscribers(getProgressSubscribers()).build(); + chunkCoordinatorBuilderFactory + .create(chunkCoordinatorFactory) + .inWorld(getWorld()) + .withChunks(getBlockChunks().keySet()) + .withChunks(read) + .withInitialBatchSize(3) + .withMaxIterationTime(40) + .withThrowableConsumer(Throwable::printStackTrace) + .withFinalAction(getCompleteTask()) + .withConsumer(consumer) + .unloadAfter(isUnloadAfter()) + .withProgressSubscribers(getProgressSubscribers()) + .build(); return super.enqueue(); } /** * Set a block to the world. First tries WNA but defaults to normal block setting methods if that fails */ - private void setWorldBlock(int x, int y, int z, @Nonnull BaseBlock block, @Nonnull BlockVector2 blockVector2) { + private void setWorldBlock(int x, int y, int z, @NonNull BaseBlock block, @NonNull BlockVector2 blockVector2) { try { BlockVector3 loc = BlockVector3.at(x, y, z); boolean lighting = false; @@ -211,7 +231,7 @@ public class BukkitQueueCoordinator extends BasicQueueCoordinator { break; case REPLACEMENT: lighting = block.getBlockType().getMaterial().getLightValue() > 0 - || getWorld().getBlock(loc).getBlockType().getMaterial().getLightValue() > 0; + || getWorld().getBlock(loc).getBlockType().getMaterial().getLightValue() > 0; break; default: // Can only be "all" diff --git a/Bukkit/src/main/java/com/plotsquared/bukkit/queue/GenChunk.java b/Bukkit/src/main/java/com/plotsquared/bukkit/queue/GenChunk.java index 6641a8ab9..4654a33f4 100644 --- a/Bukkit/src/main/java/com/plotsquared/bukkit/queue/GenChunk.java +++ b/Bukkit/src/main/java/com/plotsquared/bukkit/queue/GenChunk.java @@ -45,8 +45,9 @@ import org.bukkit.World; import org.bukkit.block.Biome; import org.bukkit.generator.ChunkGenerator.BiomeGrid; import org.bukkit.generator.ChunkGenerator.ChunkData; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import org.checkerframework.checker.nullness.qual.NonNull; +import org.checkerframework.checker.nullness.qual.Nullable; + import java.util.Arrays; public class GenChunk extends ScopedQueueCoordinator { @@ -65,7 +66,7 @@ public class GenChunk extends ScopedQueueCoordinator { this.biomes = Biome.values(); } - @Nullable public ChunkData getChunkData() { + public @Nullable ChunkData getChunkData() { return this.chunkData; } @@ -74,11 +75,11 @@ public class GenChunk extends ScopedQueueCoordinator { * * @param chunkData Bukkit ChunkData */ - public void setChunkData(@Nonnull ChunkData chunkData) { + public void setChunkData(@NonNull ChunkData chunkData) { this.chunkData = chunkData; } - @Nonnull public Chunk getChunk() { + public @NonNull Chunk getChunk() { if (chunk == null) { World worldObj = BukkitUtil.getWorld(world); if (worldObj != null) { @@ -93,7 +94,7 @@ public class GenChunk extends ScopedQueueCoordinator { * * @param chunk Bukkit Chunk */ - public void setChunk(@Nonnull Chunk chunk) { + public void setChunk(@NonNull Chunk chunk) { this.chunk = chunk; } @@ -103,14 +104,15 @@ public class GenChunk extends ScopedQueueCoordinator { * * @param wrap P2 ChunkWrapper */ - public void setChunk(@Nonnull ChunkWrapper wrap) { + public void setChunk(@NonNull ChunkWrapper wrap) { chunk = null; world = wrap.world; chunkX = wrap.x; chunkZ = wrap.z; } - @Override public void fillBiome(@Nonnull BiomeType biomeType) { + @Override + public void fillBiome(@NonNull BiomeType biomeType) { if (biomeGrid == null) { return; } @@ -124,7 +126,8 @@ public class GenChunk extends ScopedQueueCoordinator { } } - @Override public void setCuboid(@Nonnull Location pos1, @Nonnull Location pos2, @Nonnull BlockState block) { + @Override + public void setCuboid(@NonNull Location pos1, @NonNull Location pos2, @NonNull BlockState block) { if (result != null && pos1.getX() == 0 && pos1.getZ() == 0 && pos2.getX() == 15 && pos2.getZ() == 15) { for (int y = pos1.getY(); y <= pos2.getY(); y++) { int layer = y >> 4; @@ -146,20 +149,20 @@ public class GenChunk extends ScopedQueueCoordinator { chunkData.setRegion(minX, minY, minZ, maxX + 1, maxY + 1, maxZ + 1, BukkitAdapter.adapt(block)); } - @Override public boolean setBiome(int x, int z, @Nonnull BiomeType biomeType) { + @Override + public boolean setBiome(int x, int z, @NonNull BiomeType biomeType) { return setBiome(x, z, BukkitAdapter.adapt(biomeType)); } /** * Set the in the whole column of XZ * - * @param x Relative x location within the chunk (0 - 15) - * @param z Relative z location within the chunk (0 - 15) + * @param x Relative x location within the chunk (0 - 15) + * @param z Relative z location within the chunk (0 - 15) * @param biome Bukkit biome to set - * * @return if successful */ - public boolean setBiome(int x, int z, @Nonnull Biome biome) { + public boolean setBiome(int x, int z, @NonNull Biome biome) { if (this.biomeGrid != null) { for (int y = 0; y < 256; y++) { this.setBiome(x, y, z, biome); @@ -169,7 +172,7 @@ public class GenChunk extends ScopedQueueCoordinator { return false; } - public boolean setBiome(int x, int y, int z, @Nonnull Biome biome) { + public boolean setBiome(int x, int y, int z, @NonNull Biome biome) { if (this.biomeGrid != null) { this.biomeGrid.setBiome(x, y, z, biome); return true; @@ -177,11 +180,13 @@ public class GenChunk extends ScopedQueueCoordinator { return false; } - @Override public boolean setBlock(int x, int y, int z, @Nonnull Pattern pattern) { + @Override + public boolean setBlock(int x, int y, int z, @NonNull Pattern pattern) { return setBlock(x, y, z, PatternUtil.apply(Preconditions.checkNotNull(pattern, "Pattern may not be null"), x, y, z)); } - @Override public boolean setBlock(int x, int y, int z, @Nonnull BlockState id) { + @Override + public boolean setBlock(int x, int y, int z, @NonNull BlockState id) { if (this.result == null) { this.chunkData.setBlock(x, y, z, BukkitAdapter.adapt(id)); return true; @@ -191,7 +196,7 @@ public class GenChunk extends ScopedQueueCoordinator { return true; } - private void storeCache(final int x, final int y, final int z, @Nonnull final BlockState id) { + private void storeCache(final int x, final int y, final int z, final @NonNull BlockState id) { int i = y >> 4; BlockState[] v = this.result[i]; if (v == null) { @@ -201,7 +206,8 @@ public class GenChunk extends ScopedQueueCoordinator { v[j] = id; } - @Override public boolean setBlock(int x, int y, int z, @Nonnull BaseBlock id) { + @Override + public boolean setBlock(int x, int y, int z, @NonNull BaseBlock id) { if (this.result == null) { this.chunkData.setBlock(x, y, z, BukkitAdapter.adapt(id)); return true; @@ -211,7 +217,8 @@ public class GenChunk extends ScopedQueueCoordinator { return true; } - @Override @Nullable public BlockState getBlock(int x, int y, int z) { + @Override + public @Nullable BlockState getBlock(int x, int y, int z) { int i = y >> 4; if (result == null) { return BukkitBlockUtil.get(chunkData.getType(x, y, z)); @@ -232,19 +239,22 @@ public class GenChunk extends ScopedQueueCoordinator { return chunk == null ? chunkZ : chunk.getZ(); } - @Override @Nonnull public com.sk89q.worldedit.world.World getWorld() { + @Override + public com.sk89q.worldedit.world.@NonNull World getWorld() { return chunk == null ? BukkitAdapter.adapt(Bukkit.getWorld(world)) : BukkitAdapter.adapt(chunk.getWorld()); } - @Override @Nonnull public Location getMax() { + @Override + public @NonNull Location getMax() { return Location.at(getWorld().getName(), 15 + (getX() << 4), 255, 15 + (getZ() << 4)); } - @Override @Nonnull public Location getMin() { + @Override + public @NonNull Location getMin() { return Location.at(getWorld().getName(), getX() << 4, 0, getZ() << 4); } - @Nonnull public GenChunk clone() { + public @NonNull GenChunk clone() { GenChunk toReturn = new GenChunk(); if (this.result != null) { for (int i = 0; i < this.result.length; i++) { @@ -258,4 +268,5 @@ public class GenChunk extends ScopedQueueCoordinator { toReturn.chunkData = this.chunkData; return toReturn; } + } diff --git a/Bukkit/src/main/java/com/plotsquared/bukkit/schematic/BukkitSchematicHandler.java b/Bukkit/src/main/java/com/plotsquared/bukkit/schematic/BukkitSchematicHandler.java index cd023a9f5..289796560 100644 --- a/Bukkit/src/main/java/com/plotsquared/bukkit/schematic/BukkitSchematicHandler.java +++ b/Bukkit/src/main/java/com/plotsquared/bukkit/schematic/BukkitSchematicHandler.java @@ -32,15 +32,16 @@ import com.plotsquared.core.queue.QueueCoordinator; import com.plotsquared.core.util.SchematicHandler; import com.plotsquared.core.util.WorldUtil; import com.sk89q.jnbt.CompoundTag; - -import javax.annotation.Nonnull; +import org.checkerframework.checker.nullness.qual.NonNull; /** * Schematic Handler. */ -@Singleton public class BukkitSchematicHandler extends SchematicHandler { +@Singleton +public class BukkitSchematicHandler extends SchematicHandler { - @Inject public BukkitSchematicHandler(@Nonnull final WorldUtil worldUtil, @Nonnull ProgressSubscriberFactory subscriberFactory) { + @Inject + public BukkitSchematicHandler(final @NonNull WorldUtil worldUtil, @NonNull ProgressSubscriberFactory subscriberFactory) { super(worldUtil, subscriberFactory); } @@ -48,4 +49,5 @@ import javax.annotation.Nonnull; public boolean restoreTile(QueueCoordinator queue, CompoundTag ct, int x, int y, int z) { return new StateWrapper(ct).restoreTag(queue.getWorld().getName(), x, y, z); } + } diff --git a/Bukkit/src/main/java/com/plotsquared/bukkit/schematic/StateWrapper.java b/Bukkit/src/main/java/com/plotsquared/bukkit/schematic/StateWrapper.java index b3a01ddd9..1903d8e24 100644 --- a/Bukkit/src/main/java/com/plotsquared/bukkit/schematic/StateWrapper.java +++ b/Bukkit/src/main/java/com/plotsquared/bukkit/schematic/StateWrapper.java @@ -66,102 +66,102 @@ public class StateWrapper { public static String jsonToColourCode(String str) { str = str.replace("{\"extra\":", "").replace("],\"text\":\"\"}", "]") - .replace("[{\"color\":\"black\",\"text\":\"", "&0") - .replace("[{\"color\":\"dark_blue\",\"text\":\"", "&1") - .replace("[{\"color\":\"dark_green\",\"text\":\"", "&2") - .replace("[{\"color\":\"dark_aqua\",\"text\":\"", "&3") - .replace("[{\"color\":\"dark_red\",\"text\":\"", "&4") - .replace("[{\"color\":\"dark_purple\",\"text\":\"", "&5") - .replace("[{\"color\":\"gold\",\"text\":\"", "&6") - .replace("[{\"color\":\"gray\",\"text\":\"", "&7") - .replace("[{\"color\":\"dark_gray\",\"text\":\"", "&8") - .replace("[{\"color\":\"blue\",\"text\":\"", "&9") - .replace("[{\"color\":\"green\",\"text\":\"", "&a") - .replace("[{\"color\":\"aqua\",\"text\":\"", "&b") - .replace("[{\"color\":\"red\",\"text\":\"", "&c") - .replace("[{\"color\":\"light_purple\",\"text\":\"", "&d") - .replace("[{\"color\":\"yellow\",\"text\":\"", "&e") - .replace("[{\"color\":\"white\",\"text\":\"", "&f") - .replace("[{\"obfuscated\":true,\"text\":\"", "&k") - .replace("[{\"bold\":true,\"text\":\"", "&l") - .replace("[{\"strikethrough\":true,\"text\":\"", "&m") - .replace("[{\"underlined\":true,\"text\":\"", "&n") - .replace("[{\"italic\":true,\"text\":\"", "&o").replace("[{\"color\":\"black\",", "&0") - .replace("[{\"color\":\"dark_blue\",", "&1") - .replace("[{\"color\":\"dark_green\",", "&2") - .replace("[{\"color\":\"dark_aqua\",", "&3").replace("[{\"color\":\"dark_red\",", "&4") - .replace("[{\"color\":\"dark_purple\",", "&5").replace("[{\"color\":\"gold\",", "&6") - .replace("[{\"color\":\"gray\",", "&7").replace("[{\"color\":\"dark_gray\",", "&8") - .replace("[{\"color\":\"blue\",", "&9").replace("[{\"color\":\"green\",", "&a") - .replace("[{\"color\":\"aqua\",", "&b").replace("[{\"color\":\"red\",", "&c") - .replace("[{\"color\":\"light_purple\",", "&d").replace("[{\"color\":\"yellow\",", "&e") - .replace("[{\"color\":\"white\",", "&f").replace("[{\"obfuscated\":true,", "&k") - .replace("[{\"bold\":true,", "&l").replace("[{\"strikethrough\":true,", "&m") - .replace("[{\"underlined\":true,", "&n").replace("[{\"italic\":true,", "&o") - .replace("{\"color\":\"black\",\"text\":\"", "&0") - .replace("{\"color\":\"dark_blue\",\"text\":\"", "&1") - .replace("{\"color\":\"dark_green\",\"text\":\"", "&2") - .replace("{\"color\":\"dark_aqua\",\"text\":\"", "&3") - .replace("{\"color\":\"dark_red\",\"text\":\"", "&4") - .replace("{\"color\":\"dark_purple\",\"text\":\"", "&5") - .replace("{\"color\":\"gold\",\"text\":\"", "&6") - .replace("{\"color\":\"gray\",\"text\":\"", "&7") - .replace("{\"color\":\"dark_gray\",\"text\":\"", "&8") - .replace("{\"color\":\"blue\",\"text\":\"", "&9") - .replace("{\"color\":\"green\",\"text\":\"", "&a") - .replace("{\"color\":\"aqua\",\"text\":\"", "&b") - .replace("{\"color\":\"red\",\"text\":\"", "&c") - .replace("{\"color\":\"light_purple\",\"text\":\"", "&d") - .replace("{\"color\":\"yellow\",\"text\":\"", "&e") - .replace("{\"color\":\"white\",\"text\":\"", "&f") - .replace("{\"obfuscated\":true,\"text\":\"", "&k") - .replace("{\"bold\":true,\"text\":\"", "&l") - .replace("{\"strikethrough\":true,\"text\":\"", "&m") - .replace("{\"underlined\":true,\"text\":\"", "&n") - .replace("{\"italic\":true,\"text\":\"", "&o").replace("{\"color\":\"black\",", "&0") - .replace("{\"color\":\"dark_blue\",", "&1").replace("{\"color\":\"dark_green\",", "&2") - .replace("{\"color\":\"dark_aqua\",", "&3").replace("{\"color\":\"dark_red\",", "&4") - .replace("{\"color\":\"dark_purple\",", "&5").replace("{\"color\":\"gold\",", "&6") - .replace("{\"color\":\"gray\",", "&7").replace("{\"color\":\"dark_gray\",", "&8") - .replace("{\"color\":\"blue\",", "&9").replace("{\"color\":\"green\",", "&a") - .replace("{\"color\":\"aqua\",", "&b").replace("{\"color\":\"red\",", "&c") - .replace("{\"color\":\"light_purple\",", "&d").replace("{\"color\":\"yellow\",", "&e") - .replace("{\"color\":\"white\",", "&f").replace("{\"obfuscated\":true,", "&k") - .replace("{\"bold\":true,", "&l").replace("{\"strikethrough\":true,", "&m") - .replace("{\"underlined\":true,", "&n").replace("{\"italic\":true,", "&o") - .replace("\"color\":\"black\",\"text\":\"", "&0") - .replace("\"color\":\"dark_blue\",\"text\":\"", "&1") - .replace("\"color\":\"dark_green\",\"text\":\"", "&2") - .replace("\"color\":\"dark_aqua\",\"text\":\"", "&3") - .replace("\"color\":\"dark_red\",\"text\":\"", "&4") - .replace("\"color\":\"dark_purple\",\"text\":\"", "&5") - .replace("\"color\":\"gold\",\"text\":\"", "&6") - .replace("\"color\":\"gray\",\"text\":\"", "&7") - .replace("\"color\":\"dark_gray\",\"text\":\"", "&8") - .replace("\"color\":\"blue\",\"text\":\"", "&9") - .replace("\"color\":\"green\",\"text\":\"", "&a") - .replace("\"color\":\"aqua\",\"text\":\"", "&b") - .replace("\"color\":\"red\",\"text\":\"", "&c") - .replace("\"color\":\"light_purple\",\"text\":\"", "&d") - .replace("\"color\":\"yellow\",\"text\":\"", "&e") - .replace("\"color\":\"white\",\"text\":\"", "&f") - .replace("\"obfuscated\":true,\"text\":\"", "&k") - .replace("\"bold\":true,\"text\":\"", "&l") - .replace("\"strikethrough\":true,\"text\":\"", "&m") - .replace("\"underlined\":true,\"text\":\"", "&n") - .replace("\"italic\":true,\"text\":\"", "&o").replace("\"color\":\"black\",", "&0") - .replace("\"color\":\"dark_blue\",", "&1").replace("\"color\":\"dark_green\",", "&2") - .replace("\"color\":\"dark_aqua\",", "&3").replace("\"color\":\"dark_red\",", "&4") - .replace("\"color\":\"dark_purple\",", "&5").replace("\"color\":\"gold\",", "&6") - .replace("\"color\":\"gray\",", "&7").replace("\"color\":\"dark_gray\",", "&8") - .replace("\"color\":\"blue\",", "&9").replace("\"color\":\"green\",", "&a") - .replace("\"color\":\"aqua\",", "&b").replace("\"color\":\"red\",", "&c") - .replace("\"color\":\"light_purple\",", "&d").replace("\"color\":\"yellow\",", "&e") - .replace("\"color\":\"white\",", "&f").replace("\"obfuscated\":true,", "&k") - .replace("\"bold\":true,", "&l").replace("\"strikethrough\":true,", "&m") - .replace("\"underlined\":true,", "&n").replace("\"italic\":true,", "&o") - .replace("[{\"text\":\"", "&0").replace("{\"text\":\"", "&0").replace("\"},", "") - .replace("\"}]", "").replace("\"}", ""); + .replace("[{\"color\":\"black\",\"text\":\"", "&0") + .replace("[{\"color\":\"dark_blue\",\"text\":\"", "&1") + .replace("[{\"color\":\"dark_green\",\"text\":\"", "&2") + .replace("[{\"color\":\"dark_aqua\",\"text\":\"", "&3") + .replace("[{\"color\":\"dark_red\",\"text\":\"", "&4") + .replace("[{\"color\":\"dark_purple\",\"text\":\"", "&5") + .replace("[{\"color\":\"gold\",\"text\":\"", "&6") + .replace("[{\"color\":\"gray\",\"text\":\"", "&7") + .replace("[{\"color\":\"dark_gray\",\"text\":\"", "&8") + .replace("[{\"color\":\"blue\",\"text\":\"", "&9") + .replace("[{\"color\":\"green\",\"text\":\"", "&a") + .replace("[{\"color\":\"aqua\",\"text\":\"", "&b") + .replace("[{\"color\":\"red\",\"text\":\"", "&c") + .replace("[{\"color\":\"light_purple\",\"text\":\"", "&d") + .replace("[{\"color\":\"yellow\",\"text\":\"", "&e") + .replace("[{\"color\":\"white\",\"text\":\"", "&f") + .replace("[{\"obfuscated\":true,\"text\":\"", "&k") + .replace("[{\"bold\":true,\"text\":\"", "&l") + .replace("[{\"strikethrough\":true,\"text\":\"", "&m") + .replace("[{\"underlined\":true,\"text\":\"", "&n") + .replace("[{\"italic\":true,\"text\":\"", "&o").replace("[{\"color\":\"black\",", "&0") + .replace("[{\"color\":\"dark_blue\",", "&1") + .replace("[{\"color\":\"dark_green\",", "&2") + .replace("[{\"color\":\"dark_aqua\",", "&3").replace("[{\"color\":\"dark_red\",", "&4") + .replace("[{\"color\":\"dark_purple\",", "&5").replace("[{\"color\":\"gold\",", "&6") + .replace("[{\"color\":\"gray\",", "&7").replace("[{\"color\":\"dark_gray\",", "&8") + .replace("[{\"color\":\"blue\",", "&9").replace("[{\"color\":\"green\",", "&a") + .replace("[{\"color\":\"aqua\",", "&b").replace("[{\"color\":\"red\",", "&c") + .replace("[{\"color\":\"light_purple\",", "&d").replace("[{\"color\":\"yellow\",", "&e") + .replace("[{\"color\":\"white\",", "&f").replace("[{\"obfuscated\":true,", "&k") + .replace("[{\"bold\":true,", "&l").replace("[{\"strikethrough\":true,", "&m") + .replace("[{\"underlined\":true,", "&n").replace("[{\"italic\":true,", "&o") + .replace("{\"color\":\"black\",\"text\":\"", "&0") + .replace("{\"color\":\"dark_blue\",\"text\":\"", "&1") + .replace("{\"color\":\"dark_green\",\"text\":\"", "&2") + .replace("{\"color\":\"dark_aqua\",\"text\":\"", "&3") + .replace("{\"color\":\"dark_red\",\"text\":\"", "&4") + .replace("{\"color\":\"dark_purple\",\"text\":\"", "&5") + .replace("{\"color\":\"gold\",\"text\":\"", "&6") + .replace("{\"color\":\"gray\",\"text\":\"", "&7") + .replace("{\"color\":\"dark_gray\",\"text\":\"", "&8") + .replace("{\"color\":\"blue\",\"text\":\"", "&9") + .replace("{\"color\":\"green\",\"text\":\"", "&a") + .replace("{\"color\":\"aqua\",\"text\":\"", "&b") + .replace("{\"color\":\"red\",\"text\":\"", "&c") + .replace("{\"color\":\"light_purple\",\"text\":\"", "&d") + .replace("{\"color\":\"yellow\",\"text\":\"", "&e") + .replace("{\"color\":\"white\",\"text\":\"", "&f") + .replace("{\"obfuscated\":true,\"text\":\"", "&k") + .replace("{\"bold\":true,\"text\":\"", "&l") + .replace("{\"strikethrough\":true,\"text\":\"", "&m") + .replace("{\"underlined\":true,\"text\":\"", "&n") + .replace("{\"italic\":true,\"text\":\"", "&o").replace("{\"color\":\"black\",", "&0") + .replace("{\"color\":\"dark_blue\",", "&1").replace("{\"color\":\"dark_green\",", "&2") + .replace("{\"color\":\"dark_aqua\",", "&3").replace("{\"color\":\"dark_red\",", "&4") + .replace("{\"color\":\"dark_purple\",", "&5").replace("{\"color\":\"gold\",", "&6") + .replace("{\"color\":\"gray\",", "&7").replace("{\"color\":\"dark_gray\",", "&8") + .replace("{\"color\":\"blue\",", "&9").replace("{\"color\":\"green\",", "&a") + .replace("{\"color\":\"aqua\",", "&b").replace("{\"color\":\"red\",", "&c") + .replace("{\"color\":\"light_purple\",", "&d").replace("{\"color\":\"yellow\",", "&e") + .replace("{\"color\":\"white\",", "&f").replace("{\"obfuscated\":true,", "&k") + .replace("{\"bold\":true,", "&l").replace("{\"strikethrough\":true,", "&m") + .replace("{\"underlined\":true,", "&n").replace("{\"italic\":true,", "&o") + .replace("\"color\":\"black\",\"text\":\"", "&0") + .replace("\"color\":\"dark_blue\",\"text\":\"", "&1") + .replace("\"color\":\"dark_green\",\"text\":\"", "&2") + .replace("\"color\":\"dark_aqua\",\"text\":\"", "&3") + .replace("\"color\":\"dark_red\",\"text\":\"", "&4") + .replace("\"color\":\"dark_purple\",\"text\":\"", "&5") + .replace("\"color\":\"gold\",\"text\":\"", "&6") + .replace("\"color\":\"gray\",\"text\":\"", "&7") + .replace("\"color\":\"dark_gray\",\"text\":\"", "&8") + .replace("\"color\":\"blue\",\"text\":\"", "&9") + .replace("\"color\":\"green\",\"text\":\"", "&a") + .replace("\"color\":\"aqua\",\"text\":\"", "&b") + .replace("\"color\":\"red\",\"text\":\"", "&c") + .replace("\"color\":\"light_purple\",\"text\":\"", "&d") + .replace("\"color\":\"yellow\",\"text\":\"", "&e") + .replace("\"color\":\"white\",\"text\":\"", "&f") + .replace("\"obfuscated\":true,\"text\":\"", "&k") + .replace("\"bold\":true,\"text\":\"", "&l") + .replace("\"strikethrough\":true,\"text\":\"", "&m") + .replace("\"underlined\":true,\"text\":\"", "&n") + .replace("\"italic\":true,\"text\":\"", "&o").replace("\"color\":\"black\",", "&0") + .replace("\"color\":\"dark_blue\",", "&1").replace("\"color\":\"dark_green\",", "&2") + .replace("\"color\":\"dark_aqua\",", "&3").replace("\"color\":\"dark_red\",", "&4") + .replace("\"color\":\"dark_purple\",", "&5").replace("\"color\":\"gold\",", "&6") + .replace("\"color\":\"gray\",", "&7").replace("\"color\":\"dark_gray\",", "&8") + .replace("\"color\":\"blue\",", "&9").replace("\"color\":\"green\",", "&a") + .replace("\"color\":\"aqua\",", "&b").replace("\"color\":\"red\",", "&c") + .replace("\"color\":\"light_purple\",", "&d").replace("\"color\":\"yellow\",", "&e") + .replace("\"color\":\"white\",", "&f").replace("\"obfuscated\":true,", "&k") + .replace("\"bold\":true,", "&l").replace("\"strikethrough\":true,", "&m") + .replace("\"underlined\":true,", "&n").replace("\"italic\":true,", "&o") + .replace("[{\"text\":\"", "&0").replace("{\"text\":\"", "&0").replace("\"},", "") + .replace("\"}]", "").replace("\"}", ""); str = ChatColor.translateAlternateColorCodes('&', str); return str; } diff --git a/Bukkit/src/main/java/com/plotsquared/bukkit/util/BukkitChunkManager.java b/Bukkit/src/main/java/com/plotsquared/bukkit/util/BukkitChunkManager.java index 03888304e..3532c1317 100644 --- a/Bukkit/src/main/java/com/plotsquared/bukkit/util/BukkitChunkManager.java +++ b/Bukkit/src/main/java/com/plotsquared/bukkit/util/BukkitChunkManager.java @@ -37,11 +37,14 @@ import java.util.concurrent.CompletableFuture; public class BukkitChunkManager extends ChunkManager { public static boolean isIn(CuboidRegion region, int x, int z) { - return x >= region.getMinimumPoint().getX() && x <= region.getMaximumPoint().getX() && z >= region.getMinimumPoint().getZ() && z <= region - .getMaximumPoint().getZ(); + return x >= region.getMinimumPoint().getX() && x <= region.getMaximumPoint().getX() && z >= region + .getMinimumPoint() + .getZ() && z <= region + .getMaximumPoint().getZ(); } - @Override public CompletableFuture loadChunk(String world, BlockVector2 chunkLoc, boolean force) { + @Override + public CompletableFuture loadChunk(String world, BlockVector2 chunkLoc, boolean force) { return PaperLib.getChunkAtAsync(BukkitUtil.getWorld(world), chunkLoc.getX(), chunkLoc.getZ(), force); } diff --git a/Bukkit/src/main/java/com/plotsquared/bukkit/util/BukkitEconHandler.java b/Bukkit/src/main/java/com/plotsquared/bukkit/util/BukkitEconHandler.java index a60818d98..2a8e26121 100644 --- a/Bukkit/src/main/java/com/plotsquared/bukkit/util/BukkitEconHandler.java +++ b/Bukkit/src/main/java/com/plotsquared/bukkit/util/BukkitEconHandler.java @@ -38,11 +38,17 @@ import org.bukkit.OfflinePlayer; import org.bukkit.plugin.RegisteredServiceProvider; import org.checkerframework.checker.nullness.qual.NonNull; -@Singleton public class BukkitEconHandler extends EconHandler { +@Singleton +public class BukkitEconHandler extends EconHandler { private Economy econ; - @Override public boolean init() { + private static OfflinePlayer getBukkitOfflinePlayer(PlotPlayer plotPlayer) { + return ((BukkitPlayer) plotPlayer).player; + } + + @Override + public boolean init() { if (this.econ == null) { setupEconomy(); } @@ -54,13 +60,14 @@ import org.checkerframework.checker.nullness.qual.NonNull; return; } RegisteredServiceProvider economyProvider = - Bukkit.getServer().getServicesManager().getRegistration(Economy.class); + Bukkit.getServer().getServicesManager().getRegistration(Economy.class); if (economyProvider != null) { this.econ = economyProvider.getProvider(); } } - @Override public double getMoney(PlotPlayer player) { + @Override + public double getMoney(PlotPlayer player) { double bal = super.getMoney(player); if (Double.isNaN(bal)) { return this.econ.getBalance(getBukkitOfflinePlayer(player)); @@ -68,15 +75,18 @@ import org.checkerframework.checker.nullness.qual.NonNull; return bal; } - @Override public void withdrawMoney(PlotPlayer player, double amount) { + @Override + public void withdrawMoney(PlotPlayer player, double amount) { this.econ.withdrawPlayer(getBukkitOfflinePlayer(player), amount); } - @Override public void depositMoney(PlotPlayer player, double amount) { + @Override + public void depositMoney(PlotPlayer player, double amount) { this.econ.depositPlayer(getBukkitOfflinePlayer(player), amount); } - @Override public void depositMoney(OfflinePlotPlayer player, double amount) { + @Override + public void depositMoney(OfflinePlotPlayer player, double amount) { this.econ.depositPlayer(((BukkitOfflinePlayer) player).player, amount); } @@ -95,12 +105,9 @@ import org.checkerframework.checker.nullness.qual.NonNull; return true; } - @Override public double getBalance(PlotPlayer player) { + @Override + public double getBalance(PlotPlayer player) { return this.econ.getBalance(getBukkitOfflinePlayer(player)); } - private static OfflinePlayer getBukkitOfflinePlayer(PlotPlayer plotPlayer) { - return ((BukkitPlayer) plotPlayer).player; - } - } diff --git a/Bukkit/src/main/java/com/plotsquared/bukkit/util/BukkitEntityUtil.java b/Bukkit/src/main/java/com/plotsquared/bukkit/util/BukkitEntityUtil.java index 4a4c81a63..f094a8334 100644 --- a/Bukkit/src/main/java/com/plotsquared/bukkit/util/BukkitEntityUtil.java +++ b/Bukkit/src/main/java/com/plotsquared/bukkit/util/BukkitEntityUtil.java @@ -66,7 +66,7 @@ import java.util.Objects; public class BukkitEntityUtil { public static final com.sk89q.worldedit.world.entity.EntityType FAKE_ENTITY_TYPE = - new com.sk89q.worldedit.world.entity.EntityType("plotsquared:fake"); + new com.sk89q.worldedit.world.entity.EntityType("plotsquared:fake"); public static boolean entityDamage(Entity damager, Entity victim) { return entityDamage(damager, victim, null); @@ -152,7 +152,7 @@ public class BukkitEntityUtil { } else { // shooter is not player if (shooter instanceof BlockProjectileSource) { Location sLoc = BukkitUtil - .adapt(((BlockProjectileSource) shooter).getBlock().getLocation()); + .adapt(((BlockProjectileSource) shooter).getBlock().getLocation()); dplot = dArea.getPlot(sLoc); } player = null; @@ -174,13 +174,13 @@ public class BukkitEntityUtil { if (EntityCategories.HANGING.contains(entityType)) { // hanging if (plot != null && (plot.getFlag(HangingBreakFlag.class) || plot - .isAdded(plotPlayer.getUUID()))) { + .isAdded(plotPlayer.getUUID()))) { if (Settings.Done.RESTRICT_BUILDING && DoneFlag.isDone(plot)) { if (!Permissions - .hasPermission(plotPlayer, Permission.PERMISSION_ADMIN_BUILD_OTHER)) { + .hasPermission(plotPlayer, Permission.PERMISSION_ADMIN_BUILD_OTHER)) { plotPlayer.sendMessage( - TranslatableCaption.of("permission.no_permission_event"), - Template.of("node", String.valueOf(Permission.PERMISSION_ADMIN_BUILD_OTHER)) + TranslatableCaption.of("permission.no_permission_event"), + Template.of("node", String.valueOf(Permission.PERMISSION_ADMIN_BUILD_OTHER)) ); return false; } @@ -189,79 +189,79 @@ public class BukkitEntityUtil { } if (!Permissions.hasPermission(plotPlayer, Permission.PERMISSION_ADMIN_DESTROY + "." + stub)) { plotPlayer.sendMessage( - TranslatableCaption.of("permission.no_permission_event"), - Template.of("node", Permission.PERMISSION_ADMIN_DESTROY + "." + stub) + TranslatableCaption.of("permission.no_permission_event"), + Template.of("node", Permission.PERMISSION_ADMIN_DESTROY + "." + stub) ); return false; } } else if (victim.getType() == EntityType.ARMOR_STAND) { if (plot != null && (plot.getFlag(MiscBreakFlag.class) || plot - .isAdded(plotPlayer.getUUID()))) { + .isAdded(plotPlayer.getUUID()))) { return true; } if (!Permissions.hasPermission(plotPlayer, Permission.PERMISSION_ADMIN_DESTROY + "." + stub)) { plotPlayer.sendMessage( - TranslatableCaption.of("permission.no_permission_event"), - Template.of("node", Permission.PERMISSION_ADMIN_DESTROY + "." + stub) + TranslatableCaption.of("permission.no_permission_event"), + Template.of("node", Permission.PERMISSION_ADMIN_DESTROY + "." + stub) ); if (plot != null) { plot.debug(player.getName() - + " could not break armor stand because misc-break = false"); + + " could not break armor stand because misc-break = false"); } return false; } } else if (EntityCategories.HOSTILE.contains(entityType)) { if (isPlot) { if (plot.getFlag(HostileAttackFlag.class) || plot.getFlag(PveFlag.class) || plot - .isAdded(plotPlayer.getUUID())) { + .isAdded(plotPlayer.getUUID())) { return true; } } else if (roadFlags && (area.getRoadFlag(HostileAttackFlag.class) || area - .getFlag(PveFlag.class))) { + .getFlag(PveFlag.class))) { return true; } if (!Permissions.hasPermission(plotPlayer, Permission.PERMISSION_ADMIN_PVE + "." + stub)) { plotPlayer.sendMessage( - TranslatableCaption.of("permission.no_permission_event"), - Template.of("node", Permission.PERMISSION_ADMIN_PVE + "." + stub) + TranslatableCaption.of("permission.no_permission_event"), + Template.of("node", Permission.PERMISSION_ADMIN_PVE + "." + stub) ); if (plot != null) { plot.debug(player.getName() + " could not attack " + entityType - + " because pve = false OR hostile-attack = false"); + + " because pve = false OR hostile-attack = false"); } return false; } } else if (EntityCategories.TAMEABLE.contains(entityType)) { // victim is tameable if (isPlot) { if (plot.getFlag(TamedAttackFlag.class) || plot.getFlag(PveFlag.class) || plot - .isAdded(plotPlayer.getUUID())) { + .isAdded(plotPlayer.getUUID())) { return true; } } else if (roadFlags && (area.getRoadFlag(TamedAttackFlag.class) || area - .getFlag(PveFlag.class))) { + .getFlag(PveFlag.class))) { return true; } if (!Permissions.hasPermission(plotPlayer, Permission.PERMISSION_ADMIN_PVE + "." + stub)) { plotPlayer.sendMessage( - TranslatableCaption.of("permission.no_permission_event"), - Template.of("node", Permission.PERMISSION_ADMIN_PVE + "." + stub) + TranslatableCaption.of("permission.no_permission_event"), + Template.of("node", Permission.PERMISSION_ADMIN_PVE + "." + stub) ); if (plot != null) { plot.debug(player.getName() + " could not attack " + entityType - + " because pve = false OR tamed-attack = false"); + + " because pve = false OR tamed-attack = false"); } return false; } } else if (EntityCategories.PLAYER.contains(entityType)) { if (isPlot) { if (!plot.getFlag(PvpFlag.class) && !Permissions - .hasPermission(plotPlayer, Permission.PERMISSION_ADMIN_PVP + "." + stub)) { + .hasPermission(plotPlayer, Permission.PERMISSION_ADMIN_PVP + "." + stub)) { plotPlayer.sendMessage( - TranslatableCaption.of("permission.no_permission_event"), - Template.of("node", Permission.PERMISSION_ADMIN_PVP + "." + stub) + TranslatableCaption.of("permission.no_permission_event"), + Template.of("node", Permission.PERMISSION_ADMIN_PVP + "." + stub) ); plot.debug(player.getName() + " could not attack " + entityType - + " because pve = false"); + + " because pve = false"); return false; } else { return true; @@ -271,31 +271,31 @@ public class BukkitEntityUtil { } if (!Permissions.hasPermission(plotPlayer, Permission.PERMISSION_ADMIN_PVP + "." + stub)) { plotPlayer.sendMessage( - TranslatableCaption.of("permission.no_permission_event"), - Template.of("node", Permission.PERMISSION_ADMIN_PVP + "." + stub) + TranslatableCaption.of("permission.no_permission_event"), + Template.of("node", Permission.PERMISSION_ADMIN_PVP + "." + stub) ); return false; } } else if (EntityCategories.ANIMAL.contains(entityType)) { // victim is animal if (isPlot) { if (plot.getFlag(AnimalAttackFlag.class) || plot.getFlag(PveFlag.class) || plot - .isAdded(plotPlayer.getUUID())) { + .isAdded(plotPlayer.getUUID())) { plot.debug(player.getName() + " could not attack " + entityType - + " because pve = false OR animal-attack = false"); + + " because pve = false OR animal-attack = false"); return true; } } else if (roadFlags && (area.getRoadFlag(AnimalAttackFlag.class) || area - .getFlag(PveFlag.class))) { + .getFlag(PveFlag.class))) { if (!Permissions.hasPermission(plotPlayer, Permission.PERMISSION_ADMIN_PVE + "." + stub)) { plotPlayer.sendMessage( - TranslatableCaption.of("permission.no_permission_event"), - Template.of("node", Permission.PERMISSION_ADMIN_PVE + "." + stub) + TranslatableCaption.of("permission.no_permission_event"), + Template.of("node", Permission.PERMISSION_ADMIN_PVE + "." + stub) ); return false; } } } else if (EntityCategories.VEHICLE - .contains(entityType)) { // Vehicles are managed in vehicle destroy event + .contains(entityType)) { // Vehicles are managed in vehicle destroy event return true; } else { // victim is something else if (isPlot) { @@ -307,25 +307,25 @@ public class BukkitEntityUtil { } if (!Permissions.hasPermission(plotPlayer, Permission.PERMISSION_ADMIN_PVE + "." + stub)) { plotPlayer.sendMessage( - TranslatableCaption.of("permission.no_permission_event"), - Template.of("node", Permission.PERMISSION_ADMIN_PVE + "." + stub) + TranslatableCaption.of("permission.no_permission_event"), + Template.of("node", Permission.PERMISSION_ADMIN_PVE + "." + stub) ); if (plot != null) { plot.debug(player.getName() + " could not attack " + entityType - + " because pve = false"); + + " because pve = false"); } return false; } } return true; } else if (dplot != null && (!dplot.equals(vplot) || Objects - .equals(dplot.getOwnerAbs(), vplot.getOwnerAbs()))) { + .equals(dplot.getOwnerAbs(), vplot.getOwnerAbs()))) { return vplot != null && vplot.getFlag(PveFlag.class); } //disable the firework damage. too much of a headache to support at the moment. if (vplot != null) { if (EntityDamageEvent.DamageCause.ENTITY_EXPLOSION == cause - && damager.getType() == EntityType.FIREWORK) { + && damager.getType() == EntityType.FIREWORK) { return false; } } @@ -333,46 +333,50 @@ public class BukkitEntityUtil { return true; } return ((vplot != null && vplot.getFlag(PveFlag.class)) || !(damager instanceof Arrow - && !(victim instanceof Creature))); + && !(victim instanceof Creature))); } public static boolean checkEntity(Entity entity, Plot plot) { if (plot == null || !plot.hasOwner() || plot.getFlags().isEmpty() && plot.getArea() - .getFlagContainer().getFlagMap().isEmpty()) { + .getFlagContainer().getFlagMap().isEmpty()) { return false; } final com.sk89q.worldedit.world.entity.EntityType entityType = - BukkitAdapter.adapt(entity.getType()); + BukkitAdapter.adapt(entity.getType()); if (EntityCategories.PLAYER.contains(entityType)) { return false; } if (EntityCategories.PROJECTILE.contains(entityType) || EntityCategories.OTHER - .contains(entityType) || EntityCategories.HANGING.contains(entityType)) { + .contains(entityType) || EntityCategories.HANGING.contains(entityType)) { return EntityUtil.checkEntity(plot, EntityCapFlag.ENTITY_CAP_UNLIMITED, - MiscCapFlag.MISC_CAP_UNLIMITED); + MiscCapFlag.MISC_CAP_UNLIMITED + ); } // Has to go go before vehicle as horses are both // animals and vehicles if (EntityCategories.ANIMAL.contains(entityType) || EntityCategories.VILLAGER - .contains(entityType) || EntityCategories.TAMEABLE.contains(entityType)) { + .contains(entityType) || EntityCategories.TAMEABLE.contains(entityType)) { return EntityUtil - .checkEntity(plot, EntityCapFlag.ENTITY_CAP_UNLIMITED, MobCapFlag.MOB_CAP_UNLIMITED, - AnimalCapFlag.ANIMAL_CAP_UNLIMITED); + .checkEntity(plot, EntityCapFlag.ENTITY_CAP_UNLIMITED, MobCapFlag.MOB_CAP_UNLIMITED, + AnimalCapFlag.ANIMAL_CAP_UNLIMITED + ); } if (EntityCategories.HOSTILE.contains(entityType)) { return EntityUtil - .checkEntity(plot, EntityCapFlag.ENTITY_CAP_UNLIMITED, MobCapFlag.MOB_CAP_UNLIMITED, - HostileCapFlag.HOSTILE_CAP_UNLIMITED); + .checkEntity(plot, EntityCapFlag.ENTITY_CAP_UNLIMITED, MobCapFlag.MOB_CAP_UNLIMITED, + HostileCapFlag.HOSTILE_CAP_UNLIMITED + ); } if (EntityCategories.VEHICLE.contains(entityType)) { return EntityUtil.checkEntity(plot, EntityCapFlag.ENTITY_CAP_UNLIMITED, - VehicleCapFlag.VEHICLE_CAP_UNLIMITED); + VehicleCapFlag.VEHICLE_CAP_UNLIMITED + ); } return EntityUtil.checkEntity(plot, EntityCapFlag.ENTITY_CAP_UNLIMITED); diff --git a/Bukkit/src/main/java/com/plotsquared/bukkit/util/BukkitInventoryUtil.java b/Bukkit/src/main/java/com/plotsquared/bukkit/util/BukkitInventoryUtil.java index ebe7b2bfe..128ada1ef 100644 --- a/Bukkit/src/main/java/com/plotsquared/bukkit/util/BukkitInventoryUtil.java +++ b/Bukkit/src/main/java/com/plotsquared/bukkit/util/BukkitInventoryUtil.java @@ -47,39 +47,8 @@ import java.util.ArrayList; import java.util.List; import java.util.stream.IntStream; -@Singleton public class BukkitInventoryUtil extends InventoryUtil { - - @Override public void open(PlotInventory inv) { - BukkitPlayer bp = (BukkitPlayer) inv.getPlayer(); - Inventory inventory = Bukkit.createInventory(null, inv.getLines() * 9, - ChatColor.translateAlternateColorCodes('&', inv.getTitle())); - PlotItemStack[] items = inv.getItems(); - for (int i = 0; i < inv.getLines() * 9; i++) { - PlotItemStack item = items[i]; - if (item != null) { - inventory.setItem(i, getItem(item)); - } - } - bp.player.openInventory(inventory); - } - - @Override public void close(PlotInventory inv) { - if (!inv.isOpen()) { - return; - } - BukkitPlayer bp = (BukkitPlayer) inv.getPlayer(); - bp.player.closeInventory(); - } - - @Override public void setItem(PlotInventory inv, int index, PlotItemStack item) { - BukkitPlayer bp = (BukkitPlayer) inv.getPlayer(); - InventoryView opened = bp.player.getOpenInventory(); - if (!inv.isOpen()) { - return; - } - opened.setItem(index, getItem(item)); - bp.player.updateInventory(); - } +@Singleton +public class BukkitInventoryUtil extends InventoryUtil { private static ItemStack getItem(PlotItemStack item) { if (item == null) { @@ -108,6 +77,42 @@ import java.util.stream.IntStream; return stack; } + @Override + public void open(PlotInventory inv) { + BukkitPlayer bp = (BukkitPlayer) inv.getPlayer(); + Inventory inventory = Bukkit.createInventory(null, inv.getLines() * 9, + ChatColor.translateAlternateColorCodes('&', inv.getTitle()) + ); + PlotItemStack[] items = inv.getItems(); + for (int i = 0; i < inv.getLines() * 9; i++) { + PlotItemStack item = items[i]; + if (item != null) { + inventory.setItem(i, getItem(item)); + } + } + bp.player.openInventory(inventory); + } + + @Override + public void close(PlotInventory inv) { + if (!inv.isOpen()) { + return; + } + BukkitPlayer bp = (BukkitPlayer) inv.getPlayer(); + bp.player.closeInventory(); + } + + @Override + public void setItem(PlotInventory inv, int index, PlotItemStack item) { + BukkitPlayer bp = (BukkitPlayer) inv.getPlayer(); + InventoryView opened = bp.player.getOpenInventory(); + if (!inv.isOpen()) { + return; + } + opened.setItem(index, getItem(item)); + bp.player.updateInventory(); + } + public PlotItemStack getItem(ItemStack item) { if (item == null) { return null; @@ -132,14 +137,16 @@ import java.util.stream.IntStream; return new PlotItemStack(id.name(), amount, name, lore); } - @Override public PlotItemStack[] getItems(PlotPlayer player) { + @Override + public PlotItemStack[] getItems(PlotPlayer player) { BukkitPlayer bp = (BukkitPlayer) player; PlayerInventory inv = bp.player.getInventory(); return IntStream.range(0, 36).mapToObj(i -> getItem(inv.getItem(i))) - .toArray(PlotItemStack[]::new); + .toArray(PlotItemStack[]::new); } - @Override public boolean isOpen(PlotInventory plotInventory) { + @Override + public boolean isOpen(PlotInventory plotInventory) { if (!plotInventory.isOpen()) { return false; } @@ -152,4 +159,5 @@ import java.util.stream.IntStream; } return false; } + } diff --git a/Bukkit/src/main/java/com/plotsquared/bukkit/util/BukkitRegionManager.java b/Bukkit/src/main/java/com/plotsquared/bukkit/util/BukkitRegionManager.java index d205f9b93..4bed52398 100644 --- a/Bukkit/src/main/java/com/plotsquared/bukkit/util/BukkitRegionManager.java +++ b/Bukkit/src/main/java/com/plotsquared/bukkit/util/BukkitRegionManager.java @@ -55,9 +55,9 @@ import org.bukkit.Chunk; import org.bukkit.World; import org.bukkit.entity.Entity; import org.bukkit.entity.Player; +import org.checkerframework.checker.nullness.qual.NonNull; +import org.checkerframework.checker.nullness.qual.Nullable; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; import java.util.ArrayList; import java.util.HashSet; import java.util.List; @@ -75,18 +75,27 @@ public class BukkitRegionManager extends RegionManager { private final GlobalBlockQueue blockQueue; - @Inject public BukkitRegionManager(@Nonnull WorldUtil worldUtil, @Nonnull GlobalBlockQueue blockQueue, @Nonnull - ProgressSubscriberFactory subscriberFactory) { + @Inject + public BukkitRegionManager( + @NonNull WorldUtil worldUtil, @NonNull GlobalBlockQueue blockQueue, @NonNull + ProgressSubscriberFactory subscriberFactory + ) { super(worldUtil, blockQueue, subscriberFactory); this.blockQueue = blockQueue; } @Override - public boolean handleClear(@Nonnull Plot plot, @Nullable Runnable whenDone, @Nonnull PlotManager manager, @Nullable PlotPlayer player) { + public boolean handleClear( + @NonNull Plot plot, + @Nullable Runnable whenDone, + @NonNull PlotManager manager, + @Nullable PlotPlayer player + ) { return false; } - @Override public int[] countEntities(@Nonnull Plot plot) { + @Override + public int[] countEntities(@NonNull Plot plot) { int[] existing = (int[]) plot.getMeta("EntityCount"); if (existing != null && (System.currentTimeMillis() - (long) plot.getMeta("EntityCountTime") < 1000)) { return existing; @@ -160,10 +169,13 @@ public class BukkitRegionManager extends RegionManager { return count; } - @Override public boolean regenerateRegion(@Nonnull final Location pos1, - @Nonnull final Location pos2, - final boolean ignoreAugment, - @Nullable final Runnable whenDone) { + @Override + public boolean regenerateRegion( + final @NonNull Location pos1, + final @NonNull Location pos2, + final boolean ignoreAugment, + final @Nullable Runnable whenDone + ) { final BukkitWorld world = new BukkitWorld((World) pos1.getWorld()); final int p1x = pos1.getX(); @@ -251,35 +263,39 @@ public class BukkitRegionManager extends RegionManager { } CuboidRegion currentPlotClear = RegionUtil.createRegion(pos1.getX(), pos2.getX(), pos1.getZ(), pos2.getZ()); map.saveEntitiesOut(Bukkit.getWorld(world.getName()).getChunkAt(x, z), currentPlotClear); - AugmentedUtils.bypass(ignoreAugment, () -> ChunkManager.setChunkInPlotArea(null, new RunnableVal() { - @Override public void run(ScopedQueueCoordinator value) { - Location min = value.getMin(); - int bx = min.getX(); - int bz = min.getZ(); - for (int x1 = 0; x1 < 16; x1++) { - for (int z1 = 0; z1 < 16; z1++) { - PlotLoc plotLoc = new PlotLoc(bx + x1, bz + z1); - BaseBlock[] ids = map.allBlocks.get(plotLoc); - if (ids != null) { - for (int y = 0; y < Math.min(128, ids.length); y++) { - BaseBlock id = ids[y]; - if (id != null) { - value.setBlock(x1, y, z1, id); - } else { - value.setBlock(x1, y, z1, BlockTypes.AIR.getDefaultState()); - } - } - for (int y = Math.min(128, ids.length); y < ids.length; y++) { - BaseBlock id = ids[y]; - if (id != null) { - value.setBlock(x1, y, z1, id); + AugmentedUtils.bypass( + ignoreAugment, + () -> ChunkManager.setChunkInPlotArea(null, new RunnableVal() { + @Override + public void run(ScopedQueueCoordinator value) { + Location min = value.getMin(); + int bx = min.getX(); + int bz = min.getZ(); + for (int x1 = 0; x1 < 16; x1++) { + for (int z1 = 0; z1 < 16; z1++) { + PlotLoc plotLoc = new PlotLoc(bx + x1, bz + z1); + BaseBlock[] ids = map.allBlocks.get(plotLoc); + if (ids != null) { + for (int y = 0; y < Math.min(128, ids.length); y++) { + BaseBlock id = ids[y]; + if (id != null) { + value.setBlock(x1, y, z1, id); + } else { + value.setBlock(x1, y, z1, BlockTypes.AIR.getDefaultState()); + } + } + for (int y = Math.min(128, ids.length); y < ids.length; y++) { + BaseBlock id = ids[y]; + if (id != null) { + value.setBlock(x1, y, z1, id); + } + } } } } } - } - } - }, world.getName(), chunk)); + }, world.getName(), chunk) + ); //map.restoreBlocks(worldObj, 0, 0); map.restoreEntities(Bukkit.getWorld(world.getName()), 0, 0); }); @@ -289,7 +305,8 @@ public class BukkitRegionManager extends RegionManager { return true; } - @Override public void clearAllEntities(@Nonnull Location pos1, @Nonnull Location pos2) { + @Override + public void clearAllEntities(@NonNull Location pos1, @NonNull Location pos2) { String world = pos1.getWorldName(); final World bukkitWorld = BukkitUtil.getWorld(world); @@ -317,16 +334,16 @@ public class BukkitRegionManager extends RegionManager { } } - private void count(int[] count, @Nonnull Entity entity) { + private void count(int[] count, @NonNull Entity entity) { final com.sk89q.worldedit.world.entity.EntityType entityType = BukkitAdapter.adapt(entity.getType()); if (EntityCategories.PLAYER.contains(entityType)) { return; } else if (EntityCategories.PROJECTILE.contains(entityType) || EntityCategories.OTHER.contains(entityType) || EntityCategories.HANGING - .contains(entityType)) { + .contains(entityType)) { count[CAP_MISC]++; } else if (EntityCategories.ANIMAL.contains(entityType) || EntityCategories.VILLAGER.contains(entityType) || EntityCategories.TAMEABLE - .contains(entityType)) { + .contains(entityType)) { count[CAP_MOB]++; count[CAP_ANIMAL]++; } else if (EntityCategories.VEHICLE.contains(entityType)) { @@ -337,4 +354,5 @@ public class BukkitRegionManager extends RegionManager { } count[CAP_ENTITY]++; } + } diff --git a/Bukkit/src/main/java/com/plotsquared/bukkit/util/BukkitSetupUtils.java b/Bukkit/src/main/java/com/plotsquared/bukkit/util/BukkitSetupUtils.java index 4c740fe4e..9fed3dd1e 100644 --- a/Bukkit/src/main/java/com/plotsquared/bukkit/util/BukkitSetupUtils.java +++ b/Bukkit/src/main/java/com/plotsquared/bukkit/util/BukkitSetupUtils.java @@ -48,29 +48,34 @@ import org.bukkit.World; import org.bukkit.entity.Player; import org.bukkit.generator.ChunkGenerator; import org.bukkit.plugin.Plugin; +import org.checkerframework.checker.nullness.qual.NonNull; -import javax.annotation.Nonnull; import java.io.File; import java.io.IOException; import java.util.HashMap; import java.util.Map.Entry; import java.util.Objects; -@Singleton public class BukkitSetupUtils extends SetupUtils { +@Singleton +public class BukkitSetupUtils extends SetupUtils { private final PlotAreaManager plotAreaManager; private final YamlConfiguration worldConfiguration; private final File worldFile; - @Inject public BukkitSetupUtils(@Nonnull final PlotAreaManager plotAreaManager, - @WorldConfig @Nonnull final YamlConfiguration worldConfiguration, - @WorldFile @Nonnull final File worldFile) { + @Inject + public BukkitSetupUtils( + final @NonNull PlotAreaManager plotAreaManager, + @WorldConfig final @NonNull YamlConfiguration worldConfiguration, + @WorldFile final @NonNull File worldFile + ) { this.plotAreaManager = plotAreaManager; this.worldConfiguration = worldConfiguration; this.worldFile = worldFile; } - @Override public void updateGenerators() { + @Override + public void updateGenerators() { if (!SetupUtils.generators.isEmpty()) { return; } @@ -97,7 +102,8 @@ import java.util.Objects; } } - @Override public void unload(String worldName, boolean save) { + @Override + public void unload(String worldName, boolean save) { TaskManager.runTask(() -> { World world = Bukkit.getWorld(worldName); if (world == null) { @@ -120,7 +126,8 @@ import java.util.Objects; }); } - @Override public String setupWorld(PlotAreaBuilder builder) { + @Override + public String setupWorld(PlotAreaBuilder builder) { this.updateGenerators(); ConfigurationNode[] steps = builder.settingsNodesWrapper() == null ? new ConfigurationNode[0] : builder.settingsNodesWrapper().getSettingsNodes(); @@ -233,7 +240,8 @@ import java.util.Objects; return builder.worldName(); } - @Override public String getGenerator(PlotArea plotArea) { + @Override + public String getGenerator(PlotArea plotArea) { if (SetupUtils.generators.isEmpty()) { updateGenerators(); } @@ -253,4 +261,5 @@ import java.util.Objects; } return null; } + } diff --git a/Bukkit/src/main/java/com/plotsquared/bukkit/util/BukkitUtil.java b/Bukkit/src/main/java/com/plotsquared/bukkit/util/BukkitUtil.java index abffeae3b..dd8f752d6 100644 --- a/Bukkit/src/main/java/com/plotsquared/bukkit/util/BukkitUtil.java +++ b/Bukkit/src/main/java/com/plotsquared/bukkit/util/BukkitUtil.java @@ -94,12 +94,12 @@ import org.bukkit.entity.Snowman; import org.bukkit.entity.Tameable; import org.bukkit.entity.Vehicle; import org.bukkit.entity.WaterMob; +import org.checkerframework.checker.index.qual.NonNegative; +import org.checkerframework.checker.nullness.qual.NonNull; +import org.checkerframework.checker.nullness.qual.Nullable; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import javax.annotation.Nonnegative; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; import java.util.Collection; import java.util.HashSet; import java.util.Objects; @@ -113,12 +113,10 @@ import java.util.stream.Stream; @Singleton public class BukkitUtil extends WorldUtil { - private static final Logger logger = LoggerFactory.getLogger("P2/" + BukkitUtil.class.getSimpleName()); - public static final BukkitAudiences BUKKIT_AUDIENCES = BukkitAudiences.create(BukkitPlatform.getPlugin(BukkitPlatform.class)); public static final LegacyComponentSerializer LEGACY_COMPONENT_SERIALIZER = LegacyComponentSerializer.legacySection(); public static final MiniMessage MINI_MESSAGE = MiniMessage.builder().build(); - + private static final Logger logger = LoggerFactory.getLogger("P2/" + BukkitUtil.class.getSimpleName()); private final Collection tileEntityTypes = new HashSet<>(); /** @@ -127,7 +125,7 @@ public class BukkitUtil extends WorldUtil { * @param player Bukkit player * @return PlotSquared player */ - @Nonnull public static BukkitPlayer adapt(@Nonnull final Player player) { + public @NonNull static BukkitPlayer adapt(final @NonNull Player player) { final PlayerManager playerManager = PlotSquared.platform().playerManager(); return ((BukkitPlayerManager) playerManager).getPlayer(player); } @@ -139,10 +137,13 @@ public class BukkitUtil extends WorldUtil { * @param location Bukkit location * @return PlotSquared location */ - @Nonnull public static Location adapt(@Nonnull final org.bukkit.Location location) { + public @NonNull static Location adapt(final org.bukkit.@NonNull Location location) { return Location - .at(com.plotsquared.bukkit.util.BukkitWorld.of(location.getWorld()), MathMan.roundInt(location.getX()), MathMan.roundInt(location.getY()), - MathMan.roundInt(location.getZ())); + .at(com.plotsquared.bukkit.util.BukkitWorld.of(location.getWorld()), + MathMan.roundInt(location.getX()), + MathMan.roundInt(location.getY()), + MathMan.roundInt(location.getZ()) + ); } /** @@ -152,10 +153,15 @@ public class BukkitUtil extends WorldUtil { * @param location Bukkit location * @return PlotSquared location */ - @Nonnull public static Location adaptComplete(@Nonnull final org.bukkit.Location location) { + public @NonNull static Location adaptComplete(final org.bukkit.@NonNull Location location) { return Location - .at(com.plotsquared.bukkit.util.BukkitWorld.of(location.getWorld()), MathMan.roundInt(location.getX()), MathMan.roundInt(location.getY()), - MathMan.roundInt(location.getZ()), location.getYaw(), location.getPitch()); + .at(com.plotsquared.bukkit.util.BukkitWorld.of(location.getWorld()), + MathMan.roundInt(location.getX()), + MathMan.roundInt(location.getY()), + MathMan.roundInt(location.getZ()), + location.getYaw(), + location.getPitch() + ); } /** @@ -165,8 +171,13 @@ public class BukkitUtil extends WorldUtil { * @param location PlotSquared location * @return Bukkit location */ - @Nonnull public static org.bukkit.Location adapt(@Nonnull final Location location) { - return new org.bukkit.Location((World) location.getWorld().getPlatformWorld(), location.getX(), location.getY(), location.getZ()); + public static org.bukkit.@NonNull Location adapt(final @NonNull Location location) { + return new org.bukkit.Location( + (World) location.getWorld().getPlatformWorld(), + location.getX(), + location.getY(), + location.getZ() + ); } /** @@ -175,20 +186,25 @@ public class BukkitUtil extends WorldUtil { * @param string World name * @return World if it exists, or {@code null} */ - @Nullable public static World getWorld(@Nonnull final String string) { + public @Nullable static World getWorld(final @NonNull String string) { return Bukkit.getWorld(string); } - private static void ensureLoaded(@Nonnull final String world, final int x, final int z, @Nonnull final Consumer chunkConsumer) { + private static void ensureLoaded( + final @NonNull String world, + final int x, + final int z, + final @NonNull Consumer chunkConsumer + ) { PaperLib.getChunkAtAsync(Objects.requireNonNull(getWorld(world)), x >> 4, z >> 4, true) - .thenAccept(chunk -> ensureMainThread(chunkConsumer, chunk)); + .thenAccept(chunk -> ensureMainThread(chunkConsumer, chunk)); } - private static void ensureLoaded(@Nonnull final Location location, @Nonnull final Consumer chunkConsumer) { + private static void ensureLoaded(final @NonNull Location location, final @NonNull Consumer chunkConsumer) { PaperLib.getChunkAtAsync(adapt(location), true).thenAccept(chunk -> ensureMainThread(chunkConsumer, chunk)); } - private static void ensureMainThread(@Nonnull final Consumer consumer, @Nonnull final T value) { + private static void ensureMainThread(final @NonNull Consumer consumer, final @NonNull T value) { if (Bukkit.isPrimaryThread()) { consumer.accept(value); } else { @@ -196,7 +212,8 @@ public class BukkitUtil extends WorldUtil { } } - @Override public boolean isBlockSame(@Nonnull final BlockState block1, @Nonnull final BlockState block2) { + @Override + public boolean isBlockSame(final @NonNull BlockState block1, final @NonNull BlockState block2) { if (block1.equals(block2)) { return true; } @@ -205,19 +222,23 @@ public class BukkitUtil extends WorldUtil { return mat1 == mat2; } - @Override public boolean isWorld(@Nonnull final String worldName) { + @Override + public boolean isWorld(final @NonNull String worldName) { return getWorld(worldName) != null; } - @Override public void getBiome(@Nonnull final String world, final int x, final int z, @Nonnull final Consumer result) { + @Override + public void getBiome(final @NonNull String world, final int x, final int z, final @NonNull Consumer result) { ensureLoaded(world, x, z, chunk -> result.accept(BukkitAdapter.adapt(getWorld(world).getBiome(x, z)))); } - @Override @Nonnull public BiomeType getBiomeSynchronous(@Nonnull final String world, final int x, final int z) { + @Override + public @NonNull BiomeType getBiomeSynchronous(final @NonNull String world, final int x, final int z) { return BukkitAdapter.adapt(Objects.requireNonNull(getWorld(world)).getBiome(x, z)); } - @Override public void getHighestBlock(@Nonnull final String world, final int x, final int z, @Nonnull final IntConsumer result) { + @Override + public void getHighestBlock(final @NonNull String world, final int x, final int z, final @NonNull IntConsumer result) { ensureLoaded(world, x, z, chunk -> { final World bukkitWorld = Objects.requireNonNull(getWorld(world)); // Skip top and bottom block @@ -243,7 +264,9 @@ public class BukkitUtil extends WorldUtil { }); } - @Override @Nonnegative public int getHighestBlockSynchronous(@Nonnull final String world, final int x, final int z) { + @Override + @NonNegative + public int getHighestBlockSynchronous(final @NonNull String world, final int x, final int z) { final World bukkitWorld = Objects.requireNonNull(getWorld(world)); // Skip top and bottom block int air = 1; @@ -265,8 +288,13 @@ public class BukkitUtil extends WorldUtil { return bukkitWorld.getMaxHeight() - 1; } - @Override @Nonnull public String[] getSignSynchronous(@Nonnull final Location location) { - Block block = Objects.requireNonNull(getWorld(location.getWorldName())).getBlockAt(location.getX(), location.getY(), location.getZ()); + @Override + public @NonNull String[] getSignSynchronous(final @NonNull Location location) { + Block block = Objects.requireNonNull(getWorld(location.getWorldName())).getBlockAt( + location.getX(), + location.getY(), + location.getZ() + ); try { return TaskManager.getPlatformImplementation().sync(() -> { if (block.getState() instanceof Sign) { @@ -281,28 +309,34 @@ public class BukkitUtil extends WorldUtil { return new String[0]; } - @Override @Nonnull public Location getSpawn(@Nonnull final String world) { + @Override + public @NonNull Location getSpawn(final @NonNull String world) { final org.bukkit.Location temp = getWorld(world).getSpawnLocation(); return Location.at(world, temp.getBlockX(), temp.getBlockY(), temp.getBlockZ(), temp.getYaw(), temp.getPitch()); } - @Override public void setSpawn(@Nonnull final Location location) { + @Override + public void setSpawn(final @NonNull Location location) { final World world = getWorld(location.getWorldName()); if (world != null) { world.setSpawnLocation(location.getX(), location.getY(), location.getZ()); } } - @Override public void saveWorld(@Nonnull final String worldName) { + @Override + public void saveWorld(final @NonNull String worldName) { final World world = getWorld(worldName); if (world != null) { world.save(); } } - @Override @SuppressWarnings("deprecation") - public void setSign(@Nonnull final Location location, @Nonnull final Caption[] lines, - @Nonnull final Template ... replacements) { + @Override + @SuppressWarnings("deprecation") + public void setSign( + final @NonNull Location location, final @NonNull Caption[] lines, + final @NonNull Template... replacements + ) { ensureLoaded(location.getWorldName(), location.getX(), location.getZ(), chunk -> { final World world = getWorld(location.getWorldName()); final Block block = world.getBlockAt(location.getX(), location.getY(), location.getZ()); @@ -334,19 +368,25 @@ public class BukkitUtil extends WorldUtil { final Sign sign = (Sign) blockstate; for (int i = 0; i < lines.length; i++) { sign.setLine(i, LEGACY_COMPONENT_SERIALIZER - .serialize(MINI_MESSAGE.parse(lines[i].getComponent(LocaleHolder.console()), replacements))); + .serialize(MINI_MESSAGE.parse(lines[i].getComponent(LocaleHolder.console()), replacements))); } sign.update(true); } }); } - @Override @Nonnull public StringComparison.ComparisonResult getClosestBlock(@Nonnull String name) { + @Override + public @NonNull StringComparison.ComparisonResult getClosestBlock(@NonNull String name) { BlockState state = BlockUtil.get(name); return new StringComparison().new ComparisonResult(1, state); } - @Override public void setBiomes(@Nonnull final String worldName, @Nonnull final CuboidRegion region, @Nonnull final BiomeType biomeType) { + @Override + public void setBiomes( + final @NonNull String worldName, + final @NonNull CuboidRegion region, + final @NonNull BiomeType biomeType + ) { final World world = getWorld(worldName); if (world == null) { logger.warn("An error occurred while setting the biome because the world was null", new RuntimeException()); @@ -362,15 +402,18 @@ public class BukkitUtil extends WorldUtil { } } - @Override @Nonnull public com.sk89q.worldedit.world.World getWeWorld(@Nonnull final String world) { + @Override + public com.sk89q.worldedit.world.@NonNull World getWeWorld(final @NonNull String world) { return new BukkitWorld(Bukkit.getWorld(world)); } - @Override public void refreshChunk(int x, int z, String world) { + @Override + public void refreshChunk(int x, int z, String world) { Bukkit.getWorld(world).refreshChunk(x, z); } - @Override public void getBlock(@Nonnull final Location location, @Nonnull final Consumer result) { + @Override + public void getBlock(final @NonNull Location location, final @NonNull Consumer result) { ensureLoaded(location, chunk -> { final World world = getWorld(location.getWorldName()); final Block block = Objects.requireNonNull(world).getBlockAt(location.getX(), location.getY(), location.getZ()); @@ -378,29 +421,37 @@ public class BukkitUtil extends WorldUtil { }); } - @Override @Nonnull public BlockState getBlockSynchronous(@Nonnull final Location location) { + @Override + public @NonNull BlockState getBlockSynchronous(final @NonNull Location location) { final World world = getWorld(location.getWorldName()); final Block block = Objects.requireNonNull(world).getBlockAt(location.getX(), location.getY(), location.getZ()); return Objects.requireNonNull(BukkitAdapter.asBlockType(block.getType())).getDefaultState(); } - @Override @Nonnegative public double getHealth(@Nonnull final PlotPlayer player) { + @Override + @NonNegative + public double getHealth(final @NonNull PlotPlayer player) { return Objects.requireNonNull(Bukkit.getPlayer(player.getUUID())).getHealth(); } - @Override @Nonnegative public int getFoodLevel(@Nonnull final PlotPlayer player) { + @Override + @NonNegative + public int getFoodLevel(final @NonNull PlotPlayer player) { return Objects.requireNonNull(Bukkit.getPlayer(player.getUUID())).getFoodLevel(); } - @Override public void setHealth(@Nonnull final PlotPlayer player, @Nonnegative final double health) { + @Override + public void setHealth(final @NonNull PlotPlayer player, @NonNegative final double health) { Objects.requireNonNull(Bukkit.getPlayer(player.getUUID())).setHealth(health); } - @Override public void setFoodLevel(@Nonnull final PlotPlayer player, @Nonnegative final int foodLevel) { + @Override + public void setFoodLevel(final @NonNull PlotPlayer player, @NonNegative final int foodLevel) { Bukkit.getPlayer(player.getUUID()).setFoodLevel(foodLevel); } - @Override @Nonnull public Set getTypesInCategory(@Nonnull final String category) { + @Override + public @NonNull Set getTypesInCategory(final @NonNull String category) { final Collection> allowedInterfaces = new HashSet<>(); switch (category) { case "animal": { @@ -480,7 +531,8 @@ public class BukkitUtil extends WorldUtil { return types; } - @Override @Nonnull public Collection getTileEntityTypes() { + @Override + public @NonNull Collection getTileEntityTypes() { if (this.tileEntityTypes.isEmpty()) { // Categories tileEntityTypes.addAll(BlockCategories.BANNERS.getAll()); @@ -489,22 +541,59 @@ public class BukkitUtil extends WorldUtil { tileEntityTypes.addAll(BlockCategories.FLOWER_POTS.getAll()); // Individual Types // Add these from strings - Stream.of("barrel", "beacon", "beehive", "bee_nest", "bell", "blast_furnace", "brewing_stand", "campfire", "chest", "ender_chest", - "trapped_chest", "command_block", "end_gateway", "hopper", "jigsaw", "jubekox", "lectern", "note_block", "black_shulker_box", - "blue_shulker_box", "brown_shulker_box", "cyan_shulker_box", "gray_shulker_box", "green_shulker_box", "light_blue_shulker_box", - "light_gray_shulker_box", "lime_shulker_box", "magenta_shulker_box", "orange_shulker_box", "pink_shulker_box", "purple_shulker_box", - "red_shulker_box", "shulker_box", "white_shulker_box", "yellow_shulker_box", "smoker", "structure_block", "structure_void") - .map(BlockTypes::get).filter(Objects::nonNull).forEach(tileEntityTypes::add); + Stream.of("barrel", + "beacon", + "beehive", + "bee_nest", + "bell", + "blast_furnace", + "brewing_stand", + "campfire", + "chest", + "ender_chest", + "trapped_chest", + "command_block", + "end_gateway", + "hopper", + "jigsaw", + "jubekox", + "lectern", + "note_block", + "black_shulker_box", + "blue_shulker_box", + "brown_shulker_box", + "cyan_shulker_box", + "gray_shulker_box", + "green_shulker_box", + "light_blue_shulker_box", + "light_gray_shulker_box", + "lime_shulker_box", + "magenta_shulker_box", + "orange_shulker_box", + "pink_shulker_box", + "purple_shulker_box", + "red_shulker_box", + "shulker_box", + "white_shulker_box", + "yellow_shulker_box", + "smoker", + "structure_block", + "structure_void" + ) + .map(BlockTypes::get).filter(Objects::nonNull).forEach(tileEntityTypes::add); } return this.tileEntityTypes; } - @Override @Nonnegative public int getTileEntityCount(@Nonnull final String world, @Nonnull final BlockVector2 chunk) { + @Override + @NonNegative + public int getTileEntityCount(final @NonNull String world, final @NonNull BlockVector2 chunk) { return Objects.requireNonNull(getWorld(world)). - getChunkAt(chunk.getBlockX(), chunk.getBlockZ()).getTileEntities().length; + getChunkAt(chunk.getBlockX(), chunk.getBlockZ()).getTileEntities().length; } - @Override public Set getChunkChunks(String world) { + @Override + public Set getChunkChunks(String world) { Set chunks = super.getChunkChunks(world); if (Bukkit.isPrimaryThread()) { for (Chunk chunk : Objects.requireNonNull(Bukkit.getWorld(world)).getLoadedChunks()) { diff --git a/Bukkit/src/main/java/com/plotsquared/bukkit/util/BukkitWorld.java b/Bukkit/src/main/java/com/plotsquared/bukkit/util/BukkitWorld.java index 48d913fcd..009ae9db2 100644 --- a/Bukkit/src/main/java/com/plotsquared/bukkit/util/BukkitWorld.java +++ b/Bukkit/src/main/java/com/plotsquared/bukkit/util/BukkitWorld.java @@ -28,8 +28,8 @@ package com.plotsquared.bukkit.util; import com.google.common.collect.Maps; import com.plotsquared.core.location.World; import org.bukkit.Bukkit; +import org.checkerframework.checker.nullness.qual.NonNull; -import javax.annotation.Nonnull; import java.util.Map; import java.util.Objects; @@ -49,7 +49,7 @@ public class BukkitWorld implements World { * @param worldName World name * @return World instance */ - @Nonnull public static BukkitWorld of(@Nonnull final String worldName) { + public @NonNull static BukkitWorld of(final @NonNull String worldName) { final org.bukkit.World bukkitWorld = Bukkit.getWorld(worldName); if (bukkitWorld == null) { throw new IllegalArgumentException(String.format("There is no world with the name '%s'", worldName)); @@ -63,7 +63,7 @@ public class BukkitWorld implements World { * @param world Bukkit world * @return World instance */ - @Nonnull public static BukkitWorld of(final org.bukkit.World world) { + public @NonNull static BukkitWorld of(final org.bukkit.World world) { BukkitWorld bukkitWorld = worldMap.get(world.getName()); if (bukkitWorld != null && bukkitWorld.getPlatformWorld().equals(world)) { return bukkitWorld; @@ -73,11 +73,13 @@ public class BukkitWorld implements World { return bukkitWorld; } - @Override public org.bukkit.World getPlatformWorld() { + @Override + public org.bukkit.World getPlatformWorld() { return this.world; } - @Override @Nonnull public String getName() { + @Override + public @NonNull String getName() { return this.world.getName(); } @@ -113,4 +115,5 @@ public class BukkitWorld implements World { public String toString() { return "BukkitWorld(world=" + this.world + ")"; } + } diff --git a/Bukkit/src/main/java/com/plotsquared/bukkit/util/ContentMap.java b/Bukkit/src/main/java/com/plotsquared/bukkit/util/ContentMap.java index a02218844..8491e6a73 100644 --- a/Bukkit/src/main/java/com/plotsquared/bukkit/util/ContentMap.java +++ b/Bukkit/src/main/java/com/plotsquared/bukkit/util/ContentMap.java @@ -96,8 +96,10 @@ public class ContentMap { saveEntitiesIn(chunk, region, 0, 0, false); } - void saveEntitiesIn(Chunk chunk, CuboidRegion region, int offsetX, int offsetZ, - boolean delete) { + void saveEntitiesIn( + Chunk chunk, CuboidRegion region, int offsetX, int offsetZ, + boolean delete + ) { for (Entity entity : chunk.getEntities()) { Location location = BukkitUtil.adapt(entity.getLocation()); int x = location.getX(); @@ -143,4 +145,5 @@ public class ContentMap { PlotLoc loc = new PlotLoc(x + offsetX, z + offsetZ); this.allBlocks.put(loc, ids); } + } diff --git a/Bukkit/src/main/java/com/plotsquared/bukkit/util/JavaVersionCheck.java b/Bukkit/src/main/java/com/plotsquared/bukkit/util/JavaVersionCheck.java index 3b4928fd3..ba0499905 100644 --- a/Bukkit/src/main/java/com/plotsquared/bukkit/util/JavaVersionCheck.java +++ b/Bukkit/src/main/java/com/plotsquared/bukkit/util/JavaVersionCheck.java @@ -75,4 +75,5 @@ public class JavaVersionCheck { logger.error("************************************************************"); } } + } diff --git a/Bukkit/src/main/java/com/plotsquared/bukkit/util/SetGenCB.java b/Bukkit/src/main/java/com/plotsquared/bukkit/util/SetGenCB.java index 347026090..adee15e8c 100644 --- a/Bukkit/src/main/java/com/plotsquared/bukkit/util/SetGenCB.java +++ b/Bukkit/src/main/java/com/plotsquared/bukkit/util/SetGenCB.java @@ -69,9 +69,10 @@ public class SetGenCB { } if (!set) { world.getPopulators() - .removeIf(blockPopulator -> blockPopulator instanceof BukkitAugmentedGenerator); + .removeIf(blockPopulator -> blockPopulator instanceof BukkitAugmentedGenerator); } PlotSquared.get() - .loadWorld(world.getName(), PlotSquared.platform().getGenerator(world.getName(), null)); + .loadWorld(world.getName(), PlotSquared.platform().getGenerator(world.getName(), null)); } + } diff --git a/Bukkit/src/main/java/com/plotsquared/bukkit/util/UpdateUtility.java b/Bukkit/src/main/java/com/plotsquared/bukkit/util/UpdateUtility.java index 116ce7228..bd94ecebb 100644 --- a/Bukkit/src/main/java/com/plotsquared/bukkit/util/UpdateUtility.java +++ b/Bukkit/src/main/java/com/plotsquared/bukkit/util/UpdateUtility.java @@ -55,7 +55,8 @@ public class UpdateUtility implements Listener { public final JavaPlugin javaPlugin; private boolean notify = true; - @Inject public UpdateUtility(final JavaPlugin javaPlugin) { + @Inject + public UpdateUtility(final JavaPlugin javaPlugin) { this.javaPlugin = javaPlugin; internalVersion = PlotSquared.get().getVersion(); } @@ -64,12 +65,12 @@ public class UpdateUtility implements Listener { task = Bukkit.getScheduler().runTaskTimerAsynchronously(this.javaPlugin, () -> { try { HttpsURLConnection connection = (HttpsURLConnection) new URL( - "https://api.spigotmc.org/simple/0.1/index.php?action=getResource&id=77506") - .openConnection(); + "https://api.spigotmc.org/simple/0.1/index.php?action=getResource&id=77506") + .openConnection(); connection.setRequestMethod("GET"); JsonObject result = (new JsonParser()) - .parse(new JsonReader(new InputStreamReader(connection.getInputStream()))) - .getAsJsonObject(); + .parse(new JsonReader(new InputStreamReader(connection.getInputStream()))) + .getAsJsonObject(); spigotVersion = result.get("current_version").getAsString(); } catch (IOException e) { logger.error("Unable to check for updates. Error: {}", e.getMessage()); @@ -79,7 +80,8 @@ public class UpdateUtility implements Listener { if (internalVersion.isLaterVersion(spigotVersion)) { logger.info("There appears to be a PlotSquared update available!"); logger.info("You are running version {}, the latest version is {}", - internalVersion.versionString(), spigotVersion); + internalVersion.versionString(), spigotVersion + ); logger.info("https://www.spigotmc.org/resources/77506/updates"); hasUpdate = true; if (Settings.UpdateChecker.NOTIFY_ONCE) { @@ -95,4 +97,5 @@ public class UpdateUtility implements Listener { private void cancelTask() { Bukkit.getScheduler().runTaskLater(javaPlugin, () -> task.cancel(), 20L); } + } diff --git a/Bukkit/src/main/java/com/plotsquared/bukkit/util/task/BukkitPlotSquaredTask.java b/Bukkit/src/main/java/com/plotsquared/bukkit/util/task/BukkitPlotSquaredTask.java index 7f0cfc40d..7437a32e0 100644 --- a/Bukkit/src/main/java/com/plotsquared/bukkit/util/task/BukkitPlotSquaredTask.java +++ b/Bukkit/src/main/java/com/plotsquared/bukkit/util/task/BukkitPlotSquaredTask.java @@ -27,21 +27,22 @@ package com.plotsquared.bukkit.util.task; import com.plotsquared.core.util.task.PlotSquaredTask; import org.bukkit.scheduler.BukkitRunnable; - -import javax.annotation.Nonnull; +import org.checkerframework.checker.nullness.qual.NonNull; /** * Bukkit implementation of {@link PlotSquaredTask} */ public final class BukkitPlotSquaredTask extends BukkitRunnable implements PlotSquaredTask { - @Nonnull private final Runnable runnable; + @NonNull + private final Runnable runnable; - public BukkitPlotSquaredTask(@Nonnull final Runnable runnable) { + public BukkitPlotSquaredTask(final @NonNull Runnable runnable) { this.runnable = runnable; } - @Override public void runTask() { + @Override + public void runTask() { this.runnable.run(); } diff --git a/Bukkit/src/main/java/com/plotsquared/bukkit/util/task/BukkitTaskManager.java b/Bukkit/src/main/java/com/plotsquared/bukkit/util/task/BukkitTaskManager.java index 24bec8b38..16c7a0fc8 100644 --- a/Bukkit/src/main/java/com/plotsquared/bukkit/util/task/BukkitTaskManager.java +++ b/Bukkit/src/main/java/com/plotsquared/bukkit/util/task/BukkitTaskManager.java @@ -33,8 +33,8 @@ import com.plotsquared.core.util.task.PlotSquaredTask; import com.plotsquared.core.util.task.TaskManager; import com.plotsquared.core.util.task.TaskTime; import org.bukkit.Bukkit; +import org.checkerframework.checker.nullness.qual.NonNull; -import javax.annotation.Nonnull; import java.util.concurrent.Callable; import java.util.concurrent.Future; import java.util.concurrent.TimeUnit; @@ -43,20 +43,26 @@ import java.util.concurrent.TimeUnit; * Bukkit implementation of {@link TaskManager} using * by {@link org.bukkit.scheduler.BukkitScheduler} and {@link BukkitPlotSquaredTask} */ -@Singleton public class BukkitTaskManager extends TaskManager { +@Singleton +public class BukkitTaskManager extends TaskManager { private final BukkitPlatform bukkitMain; private final TaskTime.TimeConverter timeConverter; - @Inject public BukkitTaskManager(@Nonnull final BukkitPlatform bukkitMain, - @Nonnull final TaskTime.TimeConverter timeConverter) { + @Inject + public BukkitTaskManager( + final @NonNull BukkitPlatform bukkitMain, + final TaskTime.@NonNull TimeConverter timeConverter + ) { this.bukkitMain = bukkitMain; this.timeConverter = timeConverter; } @Override - public PlotSquaredTask taskRepeat(@Nonnull final Runnable runnable, - @Nonnull final TaskTime taskTime) { + public PlotSquaredTask taskRepeat( + final @NonNull Runnable runnable, + final @NonNull TaskTime taskTime + ) { final long ticks = this.timeConverter.toTicks(taskTime); final BukkitPlotSquaredTask bukkitPlotSquaredTask = new BukkitPlotSquaredTask(runnable); bukkitPlotSquaredTask.runTaskTimer(this.bukkitMain, ticks, ticks); @@ -64,15 +70,18 @@ import java.util.concurrent.TimeUnit; } @Override - public PlotSquaredTask taskRepeatAsync(@Nonnull final Runnable runnable, - @Nonnull final TaskTime taskTime) { + public PlotSquaredTask taskRepeatAsync( + final @NonNull Runnable runnable, + final @NonNull TaskTime taskTime + ) { final long ticks = this.timeConverter.toTicks(taskTime); final BukkitPlotSquaredTask bukkitPlotSquaredTask = new BukkitPlotSquaredTask(runnable); bukkitPlotSquaredTask.runTaskTimerAsynchronously(this.bukkitMain, ticks, ticks); return bukkitPlotSquaredTask; } - @Override public void taskAsync(@Nonnull final Runnable runnable) { + @Override + public void taskAsync(final @NonNull Runnable runnable) { if (this.bukkitMain.isEnabled()) { new BukkitPlotSquaredTask(runnable).runTaskAsynchronously(this.bukkitMain); } else { @@ -80,29 +89,38 @@ import java.util.concurrent.TimeUnit; } } - @Override public T sync(@Nonnull final Callable function, final int timeout) throws Exception { + @Override + public T sync(final @NonNull Callable function, final int timeout) throws Exception { if (PlotSquared.get().isMainThread(Thread.currentThread())) { return function.call(); } return this.callMethodSync(function).get(timeout, TimeUnit.MILLISECONDS); } - @Override public Future callMethodSync(@Nonnull final Callable method) { + @Override + public Future callMethodSync(final @NonNull Callable method) { return Bukkit.getScheduler().callSyncMethod(this.bukkitMain, method); } - @Override public void task(@Nonnull final Runnable runnable) { + @Override + public void task(final @NonNull Runnable runnable) { new BukkitPlotSquaredTask(runnable).runTask(this.bukkitMain); } - @Override public void taskLater(@Nonnull final Runnable runnable, - @Nonnull final TaskTime taskTime) { + @Override + public void taskLater( + final @NonNull Runnable runnable, + final @NonNull TaskTime taskTime + ) { final long delay = this.timeConverter.toTicks(taskTime); new BukkitPlotSquaredTask(runnable).runTaskLater(this.bukkitMain, delay); } - @Override public void taskLaterAsync(@Nonnull final Runnable runnable, - @Nonnull final TaskTime taskTime) { + @Override + public void taskLaterAsync( + final @NonNull Runnable runnable, + final @NonNull TaskTime taskTime + ) { final long delay = this.timeConverter.toTicks(taskTime); new BukkitPlotSquaredTask(runnable).runTaskLaterAsynchronously(this.bukkitMain, delay); } diff --git a/Bukkit/src/main/java/com/plotsquared/bukkit/util/task/PaperTimeConverter.java b/Bukkit/src/main/java/com/plotsquared/bukkit/util/task/PaperTimeConverter.java index c5d38dfdc..440df4f10 100644 --- a/Bukkit/src/main/java/com/plotsquared/bukkit/util/task/PaperTimeConverter.java +++ b/Bukkit/src/main/java/com/plotsquared/bukkit/util/task/PaperTimeConverter.java @@ -27,8 +27,7 @@ package com.plotsquared.bukkit.util.task; import com.plotsquared.core.util.task.TaskTime; import org.bukkit.Bukkit; - -import javax.annotation.Nonnegative; +import org.checkerframework.checker.index.qual.NonNegative; /** * Time converter that uses the server MSPT count to convert between @@ -38,11 +37,13 @@ public final class PaperTimeConverter implements TaskTime.TimeConverter { private static final long MIN_MS_PER_TICKS = 50L; - @Override public long msToTicks(@Nonnegative final long ms) { + @Override + public long msToTicks(@NonNegative final long ms) { return Math.max(1L, (long) (ms / Math.max(MIN_MS_PER_TICKS, Bukkit.getAverageTickTime()))); } - @Override public long ticksToMs(@Nonnegative final long ticks) { + @Override + public long ticksToMs(@NonNegative final long ticks) { return Math.max(1L, (long) (ticks * Math.max(MIN_MS_PER_TICKS, Bukkit.getAverageTickTime()))); } diff --git a/Bukkit/src/main/java/com/plotsquared/bukkit/util/task/SpigotTimeConverter.java b/Bukkit/src/main/java/com/plotsquared/bukkit/util/task/SpigotTimeConverter.java index be15e374c..ced8d52ca 100644 --- a/Bukkit/src/main/java/com/plotsquared/bukkit/util/task/SpigotTimeConverter.java +++ b/Bukkit/src/main/java/com/plotsquared/bukkit/util/task/SpigotTimeConverter.java @@ -26,8 +26,7 @@ package com.plotsquared.bukkit.util.task; import com.plotsquared.core.util.task.TaskTime; - -import javax.annotation.Nonnegative; +import org.checkerframework.checker.index.qual.NonNegative; /** * Naive time converter that assumes that all ticks are 50 milliseconds @@ -36,11 +35,13 @@ public final class SpigotTimeConverter implements TaskTime.TimeConverter { private static final long MS_PER_TICKS = 50L; - @Override public long msToTicks(@Nonnegative final long ms) { + @Override + public long msToTicks(@NonNegative final long ms) { return Math.max(1L, ms / MS_PER_TICKS); } - @Override public long ticksToMs(@Nonnegative final long ticks) { + @Override + public long ticksToMs(@NonNegative final long ticks) { return Math.max(1L, ticks * MS_PER_TICKS); } diff --git a/Bukkit/src/main/java/com/plotsquared/bukkit/uuid/EssentialsUUIDService.java b/Bukkit/src/main/java/com/plotsquared/bukkit/uuid/EssentialsUUIDService.java index b62f530b1..755946e69 100644 --- a/Bukkit/src/main/java/com/plotsquared/bukkit/uuid/EssentialsUUIDService.java +++ b/Bukkit/src/main/java/com/plotsquared/bukkit/uuid/EssentialsUUIDService.java @@ -29,8 +29,8 @@ import com.earth2me.essentials.Essentials; import com.earth2me.essentials.User; import com.plotsquared.core.uuid.UUIDMapping; import com.plotsquared.core.uuid.UUIDService; +import org.checkerframework.checker.nullness.qual.NonNull; -import javax.annotation.Nonnull; import java.util.ArrayList; import java.util.Collections; import java.util.List; @@ -47,11 +47,13 @@ public class EssentialsUUIDService implements UUIDService { this.essentials = Essentials.getPlugin(Essentials.class); } - @Override @Nonnull public List getNames(@Nonnull final List uuids) { + @Override + public @NonNull List getNames(final @NonNull List uuids) { return Collections.emptyList(); } - @Override @Nonnull public List getUUIDs(@Nonnull final List usernames) { + @Override + public @NonNull List getUUIDs(final @NonNull List usernames) { final List mappings = new ArrayList<>(usernames.size()); for (final String username : usernames) { try { @@ -62,7 +64,8 @@ public class EssentialsUUIDService implements UUIDService { mappings.add(new UUIDMapping(uuid, username)); } } - } catch (final Exception ignored){} + } catch (final Exception ignored) { + } } return mappings; } diff --git a/Bukkit/src/main/java/com/plotsquared/bukkit/uuid/LuckPermsUUIDService.java b/Bukkit/src/main/java/com/plotsquared/bukkit/uuid/LuckPermsUUIDService.java index ab6519fac..19bf2ab97 100644 --- a/Bukkit/src/main/java/com/plotsquared/bukkit/uuid/LuckPermsUUIDService.java +++ b/Bukkit/src/main/java/com/plotsquared/bukkit/uuid/LuckPermsUUIDService.java @@ -31,8 +31,8 @@ import net.luckperms.api.LuckPerms; import net.luckperms.api.model.user.UserManager; import org.bukkit.Bukkit; import org.bukkit.plugin.RegisteredServiceProvider; +import org.checkerframework.checker.nullness.qual.NonNull; -import javax.annotation.Nonnull; import java.util.ArrayList; import java.util.List; import java.util.UUID; @@ -53,21 +53,24 @@ public class LuckPermsUUIDService implements UUIDService { } } - @Override @Nonnull public List getNames(@Nonnull final List uuids) { - final List mappings = new ArrayList<>(uuids.size()); - final UserManager userManager = this.luckPerms.getUserManager(); - for (final UUID uuid : uuids) { - try { - final String username = userManager.lookupUsername(uuid).get(); - if (username != null) { - mappings.add(new UUIDMapping(uuid, username)); - } - } catch (final Exception ignored) {} - } - return mappings; + @Override + public @NonNull List getNames(final @NonNull List uuids) { + final List mappings = new ArrayList<>(uuids.size()); + final UserManager userManager = this.luckPerms.getUserManager(); + for (final UUID uuid : uuids) { + try { + final String username = userManager.lookupUsername(uuid).get(); + if (username != null) { + mappings.add(new UUIDMapping(uuid, username)); + } + } catch (final Exception ignored) { + } + } + return mappings; } - @Override @Nonnull public List getUUIDs(@Nonnull final List usernames) { + @Override + public @NonNull List getUUIDs(final @NonNull List usernames) { final List mappings = new ArrayList<>(usernames.size()); final UserManager userManager = this.luckPerms.getUserManager(); for (final String username : usernames) { @@ -76,7 +79,8 @@ public class LuckPermsUUIDService implements UUIDService { if (username != null) { mappings.add(new UUIDMapping(uuid, username)); } - } catch (final Exception ignored) {} + } catch (final Exception ignored) { + } } return mappings; } diff --git a/Bukkit/src/main/java/com/plotsquared/bukkit/uuid/OfflinePlayerUUIDService.java b/Bukkit/src/main/java/com/plotsquared/bukkit/uuid/OfflinePlayerUUIDService.java index da0454917..3ebc04db7 100644 --- a/Bukkit/src/main/java/com/plotsquared/bukkit/uuid/OfflinePlayerUUIDService.java +++ b/Bukkit/src/main/java/com/plotsquared/bukkit/uuid/OfflinePlayerUUIDService.java @@ -31,8 +31,8 @@ import com.plotsquared.core.uuid.UUIDMapping; import com.plotsquared.core.uuid.UUIDService; import org.bukkit.Bukkit; import org.bukkit.OfflinePlayer; +import org.checkerframework.checker.nullness.qual.NonNull; -import javax.annotation.Nonnull; import java.util.ArrayList; import java.util.Collections; import java.util.List; @@ -43,7 +43,8 @@ import java.util.UUID; */ public class OfflinePlayerUUIDService implements UUIDService { - @Override @Nonnull public List getNames(@Nonnull final List uuids) { + @Override + public @NonNull List getNames(final @NonNull List uuids) { if (Settings.UUID.FORCE_LOWERCASE || Bukkit.getWorlds().isEmpty()) { return Collections.emptyList(); // This is useless now } @@ -54,14 +55,16 @@ public class OfflinePlayerUUIDService implements UUIDService { if (offlinePlayer.hasPlayedBefore()) { wrappers.add(new UUIDMapping(uuid, offlinePlayer.getName())); } - } catch (final Exception ignored) {} /* This can be safely ignored. If this happens, it is + } catch (final Exception ignored) { + } /* This can be safely ignored. If this happens, it is probably because it's called before the worlds have been loaded. This is bad, but does not break anything */ } return wrappers; } - @Override @Nonnull public List getUUIDs(@Nonnull final List usernames) { + @Override + public @NonNull List getUUIDs(final @NonNull List usernames) { final List wrappers = new ArrayList<>(usernames.size()); for (final String username : usernames) { if (Settings.UUID.OFFLINE) { diff --git a/Bukkit/src/main/java/com/plotsquared/bukkit/uuid/PaperUUIDService.java b/Bukkit/src/main/java/com/plotsquared/bukkit/uuid/PaperUUIDService.java index 92941e1dc..5b9374cdc 100644 --- a/Bukkit/src/main/java/com/plotsquared/bukkit/uuid/PaperUUIDService.java +++ b/Bukkit/src/main/java/com/plotsquared/bukkit/uuid/PaperUUIDService.java @@ -29,8 +29,8 @@ import com.destroystokyo.paper.profile.PlayerProfile; import com.plotsquared.core.uuid.UUIDMapping; import com.plotsquared.core.uuid.UUIDService; import org.bukkit.Bukkit; +import org.checkerframework.checker.nullness.qual.NonNull; -import javax.annotation.Nonnull; import java.util.ArrayList; import java.util.List; import java.util.UUID; @@ -40,7 +40,8 @@ import java.util.UUID; */ public class PaperUUIDService implements UUIDService { - @Override @Nonnull public List getNames(@Nonnull final List uuids) { + @Override + public @NonNull List getNames(final @NonNull List uuids) { final List mappings = new ArrayList<>(uuids.size()); for (final UUID uuid : uuids) { final PlayerProfile playerProfile = Bukkit.createProfile(uuid); @@ -51,7 +52,8 @@ public class PaperUUIDService implements UUIDService { return mappings; } - @Override @Nonnull public List getUUIDs(@Nonnull final List usernames) { + @Override + public @NonNull List getUUIDs(final @NonNull List usernames) { final List mappings = new ArrayList<>(usernames.size()); for (final String username : usernames) { final PlayerProfile playerProfile = Bukkit.createProfile(username); diff --git a/Bukkit/src/main/java/com/plotsquared/bukkit/uuid/SQLiteUUIDService.java b/Bukkit/src/main/java/com/plotsquared/bukkit/uuid/SQLiteUUIDService.java index 4284bda9d..1481c58e3 100644 --- a/Bukkit/src/main/java/com/plotsquared/bukkit/uuid/SQLiteUUIDService.java +++ b/Bukkit/src/main/java/com/plotsquared/bukkit/uuid/SQLiteUUIDService.java @@ -30,8 +30,8 @@ import com.plotsquared.core.database.SQLite; import com.plotsquared.core.util.FileUtils; import com.plotsquared.core.uuid.UUIDMapping; import com.plotsquared.core.uuid.UUIDService; +import org.checkerframework.checker.nullness.qual.NonNull; -import javax.annotation.Nonnull; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; @@ -51,7 +51,7 @@ public class SQLiteUUIDService implements UUIDService, Consumer getNames(@Nonnull final List uuids) { + @Override + public @NonNull List getNames(final @NonNull List uuids) { final List mappings = new ArrayList<>(uuids.size()); try (final PreparedStatement statement = getConnection() - .prepareStatement("SELECT `username` FROM `usercache` WHERE `uuid` = ?")) { + .prepareStatement("SELECT `username` FROM `usercache` WHERE `uuid` = ?")) { for (final UUID uuid : uuids) { statement.setString(1, uuid.toString()); try (final ResultSet resultSet = statement.executeQuery()) { @@ -90,16 +91,19 @@ public class SQLiteUUIDService implements UUIDService, Consumer getUUIDs(@Nonnull List usernames) { + @Override + public @NonNull List getUUIDs(@NonNull List usernames) { final List mappings = new ArrayList<>(usernames.size()); try (final PreparedStatement statement = getConnection() - .prepareStatement("SELECT `uuid` FROM `usercache` WHERE `username` = ?")) { + .prepareStatement("SELECT `uuid` FROM `usercache` WHERE `username` = ?")) { for (final String username : usernames) { statement.setString(1, username); try (final ResultSet resultSet = statement.executeQuery()) { if (resultSet.next()) { - mappings.add(new UUIDMapping(UUID.fromString(resultSet.getString("uuid")), - username)); + mappings.add(new UUIDMapping( + UUID.fromString(resultSet.getString("uuid")), + username + )); } } } @@ -109,9 +113,10 @@ public class SQLiteUUIDService implements UUIDService, Consumer uuidWrappers) { + @Override + public void accept(final List uuidWrappers) { try (final PreparedStatement statement = getConnection() - .prepareStatement("INSERT OR REPLACE INTO `usercache` (`uuid`, `username`) VALUES(?, ?)")) { + .prepareStatement("INSERT OR REPLACE INTO `usercache` (`uuid`, `username`) VALUES(?, ?)")) { for (final UUIDMapping mapping : uuidWrappers) { statement.setString(1, mapping.getUuid().toString()); statement.setString(2, mapping.getUsername()); @@ -127,7 +132,7 @@ public class SQLiteUUIDService implements UUIDService, Consumer getAll() { + public @NonNull List getAll() { final List mappings = new LinkedList<>(); try (final PreparedStatement statement = getConnection().prepareStatement("SELECT * FROM `usercache`")) { try (final ResultSet resultSet = statement.executeQuery()) { diff --git a/Bukkit/src/main/java/com/plotsquared/bukkit/uuid/SquirrelIdUUIDService.java b/Bukkit/src/main/java/com/plotsquared/bukkit/uuid/SquirrelIdUUIDService.java index 1f957bc0c..e6c92dd82 100644 --- a/Bukkit/src/main/java/com/plotsquared/bukkit/uuid/SquirrelIdUUIDService.java +++ b/Bukkit/src/main/java/com/plotsquared/bukkit/uuid/SquirrelIdUUIDService.java @@ -32,10 +32,10 @@ import com.plotsquared.core.uuid.UUIDService; import com.sk89q.squirrelid.Profile; import com.sk89q.squirrelid.resolver.HttpRepositoryService; import com.sk89q.squirrelid.resolver.ProfileService; +import org.checkerframework.checker.nullness.qual.NonNull; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import javax.annotation.Nonnull; import java.io.IOException; import java.util.ArrayList; import java.util.Collections; @@ -67,7 +67,8 @@ public class SquirrelIdUUIDService implements UUIDService { this.rateLimiter = RateLimiter.create(rateLimit / 600.0D); } - @Override @Nonnull public List getNames(@Nonnull final List uuids) { + @Override + public @NonNull List getNames(final @NonNull List uuids) { final List results = new ArrayList<>(uuids.size()); this.rateLimiter.acquire(uuids.size()); try { @@ -101,7 +102,8 @@ public class SquirrelIdUUIDService implements UUIDService { return results; } - @Override @Nonnull public List getUUIDs(@Nonnull final List usernames) { + @Override + public @NonNull List getUUIDs(final @NonNull List usernames) { final List results = new ArrayList<>(usernames.size()); this.rateLimiter.acquire(usernames.size()); try { diff --git a/Core/build.gradle.kts b/Core/build.gradle.kts index 673accf91..49c68891b 100644 --- a/Core/build.gradle.kts +++ b/Core/build.gradle.kts @@ -2,7 +2,7 @@ import java.time.format.DateTimeFormatter dependencies { // Expected everywhere. - compileOnlyApi("javax.annotation:javax.annotation-api:1.3.2") + compileOnlyApi("org.checkerframework:checker-qual:3.9.0") // Minecraft expectations compileOnlyApi("com.google.guava:guava:21.0") // Minecraft uses v21.0 @@ -23,7 +23,6 @@ dependencies { exclude("com.google.inject", "guice") } compileOnlyApi("com.google.code.findbugs:annotations:3.0.1") - compileOnlyApi("javax.inject:javax.inject:1") // Plugins compileOnlyApi("com.sk89q.worldedit:worldedit-core:7.2.0") { @@ -52,9 +51,9 @@ dependencies { tasks.processResources { filesMatching("plugin.properties") { expand( - "version" to project.version.toString(), - "commit" to rootProject.grgit.head().abbreviatedId, - "date" to rootProject.grgit.head().dateTime.format(DateTimeFormatter.ofPattern("yy.MM.dd")) + "version" to project.version.toString(), + "commit" to rootProject.grgit.head().abbreviatedId, + "date" to rootProject.grgit.head().dateTime.format(DateTimeFormatter.ofPattern("yy.MM.dd")) ) } } diff --git a/Core/src/main/java/com/plotsquared/core/Platform.java b/Core/src/main/java/com/plotsquared/core/Platform.java deleted file mode 100644 index 262d09904..000000000 --- a/Core/src/main/java/com/plotsquared/core/Platform.java +++ /dev/null @@ -1,31 +0,0 @@ -/* - * _____ _ _ _____ _ - * | __ \| | | | / ____| | | - * | |__) | | ___ | |_| (___ __ _ _ _ __ _ _ __ ___ __| | - * | ___/| |/ _ \| __|\___ \ / _` | | | |/ _` | '__/ _ \/ _` | - * | | | | (_) | |_ ____) | (_| | |_| | (_| | | | __/ (_| | - * |_| |_|\___/ \__|_____/ \__, |\__,_|\__,_|_| \___|\__,_| - * | | - * |_| - * PlotSquared plot management system for Minecraft - * Copyright (C) 2021 IntellectualSites - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package com.plotsquared.core; - -public enum Platform { - Bukkit, Sponge, Spigot, Paper - -} diff --git a/Core/src/main/java/com/plotsquared/core/PlotAPI.java b/Core/src/main/java/com/plotsquared/core/PlotAPI.java index dc736a703..32fb84f6c 100644 --- a/Core/src/main/java/com/plotsquared/core/PlotAPI.java +++ b/Core/src/main/java/com/plotsquared/core/PlotAPI.java @@ -38,9 +38,9 @@ import com.plotsquared.core.util.EventDispatcher; import com.plotsquared.core.util.SchematicHandler; import com.plotsquared.core.util.query.PlotQuery; import net.kyori.adventure.text.minimessage.Template; +import org.checkerframework.checker.nullness.qual.NonNull; +import org.checkerframework.checker.nullness.qual.Nullable; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; import java.util.Collections; import java.util.Set; import java.util.UUID; @@ -59,7 +59,8 @@ import java.util.UUID; * * @version 5 */ -@SuppressWarnings({"unused", "WeakerAccess"}) public class PlotAPI { +@SuppressWarnings({"unused", "WeakerAccess"}) +public class PlotAPI { public PlotAPI() { } @@ -69,7 +70,7 @@ import java.util.UUID; * * @return all plots */ - public Set getAllPlots() { + public @NonNull Set<@NonNull Plot> getAllPlots() { return PlotQuery.newQuery().allPlots().asSet(); } @@ -79,7 +80,7 @@ import java.util.UUID; * @param player Player, whose plots to search for * @return all plots that a player owns */ - public Set getPlayerPlots(PlotPlayer player) { + public @NonNull Set<@NonNull Plot> getPlayerPlots(final @NonNull PlotPlayer player) { return PlotQuery.newQuery().ownedBy(player).asSet(); } @@ -89,7 +90,7 @@ import java.util.UUID; * @param plotArea Plot World Object * @see PlotSquared#addPlotArea(PlotArea) */ - public void addPlotArea(PlotArea plotArea) { + public void addPlotArea(final @NonNull PlotArea plotArea) { PlotSquared.get().addPlotArea(plotArea); } @@ -106,7 +107,7 @@ import java.util.UUID; * @return ChunkManager * @see ChunkManager */ - public ChunkManager getChunkManager() { + public @NonNull ChunkManager getChunkManager() { return PlotSquared.platform().injector().getInstance(ChunkManager.class); } @@ -115,7 +116,7 @@ import java.util.UUID; * * @return GlobalBlockQueue.IMP */ - public GlobalBlockQueue getBlockQueue() { + public @NonNull GlobalBlockQueue getBlockQueue() { return PlotSquared.platform().globalBlockQueue(); } @@ -126,7 +127,7 @@ import java.util.UUID; * @return SchematicHandler * @see SchematicHandler */ - public SchematicHandler getSchematicHandler() { + public @NonNull SchematicHandler getSchematicHandler() { return PlotSquared.platform().injector().getInstance(SchematicHandler.class); } @@ -136,7 +137,7 @@ import java.util.UUID; * @param world The world to check for plot areas * @return A set of PlotAreas */ - public Set getPlotAreas(String world) { + public @NonNull Set<@NonNull PlotArea> getPlotAreas(final @Nullable String world) { if (world == null) { return Collections.emptySet(); } @@ -149,7 +150,9 @@ import java.util.UUID; * @param message the message * @param replacements Variable replacements */ - public void sendConsoleMessage(@Nonnull final String message, final Template... replacements) { + public void sendConsoleMessage( + final @NonNull String message, + final @NonNull Template @NonNull... replacements) { ConsolePlayer.getConsole().sendMessage(StaticCaption.of(message), replacements); // TODO: Re-implement // PlotSquared.log(message); @@ -161,7 +164,10 @@ import java.util.UUID; * @param caption the message * @param replacements Variable replacements */ - public void sendConsoleMessage(@Nonnull final Caption caption, final Template... replacements) { + public void sendConsoleMessage( + final @NonNull Caption caption, + final @NonNull Template @NonNull... replacements + ) { ConsolePlayer.getConsole().sendMessage(caption, replacements); } @@ -171,7 +177,7 @@ import java.util.UUID; * @return PlotSquared Class * @see PlotSquared */ - public PlotSquared getPlotSquared() { + public @NonNull PlotSquared getPlotSquared() { return PlotSquared.get(); } @@ -179,12 +185,12 @@ import java.util.UUID; * Gets the PlotPlayer for a UUID. * *

Please note that PlotSquared can be configured to provide - * different UUIDs than bukkit + * different UUIDs than Bukkit * * @param uuid the uuid of the player to wrap * @return a {@code PlotPlayer} */ - @Nullable public PlotPlayer wrapPlayer(@Nonnull final UUID uuid) { + public @Nullable PlotPlayer wrapPlayer(final @NonNull UUID uuid) { return PlotSquared.platform().playerManager().getPlayerIfExists(uuid); } @@ -194,7 +200,7 @@ import java.util.UUID; * @param player the player to wrap * @return a {@code PlotPlayer} */ - @Nullable public PlotPlayer wrapPlayer(@Nonnull final String player) { + public @Nullable PlotPlayer wrapPlayer(final @NonNull String player) { return PlotSquared.platform().playerManager().getPlayerIfExists(player); } @@ -204,7 +210,8 @@ import java.util.UUID; * @param listener the listener class to register * @see EventDispatcher#registerListener(Object) */ - public void registerListener(Object listener) { + public void registerListener(final @NonNull Object listener) { PlotSquared.get().getEventDispatcher().registerListener(listener); } + } diff --git a/Core/src/main/java/com/plotsquared/core/PlotPlatform.java b/Core/src/main/java/com/plotsquared/core/PlotPlatform.java index 2a6d9b4a3..77f4f148c 100644 --- a/Core/src/main/java/com/plotsquared/core/PlotPlatform.java +++ b/Core/src/main/java/com/plotsquared/core/PlotPlatform.java @@ -49,9 +49,9 @@ import com.plotsquared.core.util.WorldUtil; import com.plotsquared.core.util.placeholders.PlaceholderRegistry; import net.kyori.adventure.audience.Audience; import net.kyori.adventure.text.Component; +import org.checkerframework.checker.nullness.qual.NonNull; +import org.checkerframework.checker.nullness.qual.Nullable; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; import java.io.File; /** @@ -66,14 +66,14 @@ public interface PlotPlatform

extends LocaleHolder { * * @return the PlotSquared directory */ - @Nonnull File getDirectory(); + @NonNull File getDirectory(); /** * Gets the folder where all world data is stored. * * @return the world folder */ - @Nonnull File worldContainer(); + @NonNull File worldContainer(); /** * Completely shuts down the plugin. @@ -85,7 +85,8 @@ public interface PlotPlatform

extends LocaleHolder { * * @return Plugin name */ - @Nonnull default String pluginName() { + @NonNull + default String pluginName() { return "PlotSquared"; } @@ -94,21 +95,21 @@ public interface PlotPlatform

extends LocaleHolder { * * @return server version as array of numbers */ - @Nonnull int[] serverVersion(); + int[] serverVersion(); /** * Gets the server implementation name and version * * @return server implementation and version as string */ - @Nonnull String serverImplementation(); + @NonNull String serverImplementation(); /** * Gets the native server code package prefix. * * @return The package prefix */ - @Nonnull String serverNativePackage(); + @NonNull String serverNativePackage(); /** * Start Metrics. @@ -120,14 +121,14 @@ public interface PlotPlatform

extends LocaleHolder { * * @param world The world to set the generator */ - void setGenerator(String world); + void setGenerator(@NonNull String world); /** * Unregisters a {@link PlotPlayer} from cache e.g. if they have logged off. * * @param player the player to remove */ - void unregister(PlotPlayer player); + void unregister(@NonNull PlotPlayer player); /** * Gets the generator wrapper for a world (world) and generator (name). @@ -136,7 +137,10 @@ public interface PlotPlatform

extends LocaleHolder { * @param name The name of the generator * @return The generator being used for the provided world */ - @Nullable GeneratorWrapper getGenerator(@Nonnull String world, @Nullable String name); + @Nullable GeneratorWrapper getGenerator( + @NonNull String world, + @Nullable String name + ); /** * Create a platform generator from a plot generator @@ -145,14 +149,17 @@ public interface PlotPlatform

extends LocaleHolder { * @param generator Plot generator * @return Platform generator wrapper */ - @Nonnull GeneratorWrapper wrapPlotGenerator(@Nonnull String world, @Nonnull IndependentPlotGenerator generator); + @NonNull GeneratorWrapper wrapPlotGenerator( + @NonNull String world, + @NonNull IndependentPlotGenerator generator + ); /** * Usually HybridGen * * @return Default implementation generator */ - @Nonnull default IndependentPlotGenerator defaultGenerator() { + default @NonNull IndependentPlotGenerator defaultGenerator() { return injector().getInstance(Key.get(IndependentPlotGenerator.class, DefaultGenerator.class)); } @@ -161,7 +168,7 @@ public interface PlotPlatform

extends LocaleHolder { * * @return Backup manager */ - @Nonnull default BackupManager backupManager() { + default @NonNull BackupManager backupManager() { return injector().getInstance(BackupManager.class); } @@ -170,7 +177,7 @@ public interface PlotPlatform

extends LocaleHolder { * * @return World manager */ - @Nonnull default PlatformWorldManager worldManager() { + default @NonNull PlatformWorldManager worldManager() { return injector().getInstance(PlatformWorldManager.class); } @@ -179,8 +186,9 @@ public interface PlotPlatform

extends LocaleHolder { * * @return Player manager */ - @Nonnull default PlayerManager, ? extends P> playerManager() { - return injector().getInstance(Key.get(new TypeLiteral, ? extends P>>() {})); + default @NonNull PlayerManager, ? extends P> playerManager() { + return injector().getInstance(Key.get(new TypeLiteral, ? extends P>>() { + })); } /** @@ -189,21 +197,21 @@ public interface PlotPlatform

extends LocaleHolder { * @param worldName World name * @return Platform world wrapper */ - @Nullable World getPlatformWorld(@Nonnull final String worldName); + @Nullable World getPlatformWorld(@NonNull String worldName); /** * Get the {@link com.google.inject.Injector} instance used by PlotSquared * * @return Injector instance */ - @Nonnull Injector injector(); + @NonNull Injector injector(); /** * Get the world utility implementation * * @return World utility */ - @Nonnull default WorldUtil worldUtil() { + default @NonNull WorldUtil worldUtil() { return injector().getInstance(WorldUtil.class); } @@ -212,7 +220,7 @@ public interface PlotPlatform

extends LocaleHolder { * * @return Global block queue implementation */ - @Nonnull default GlobalBlockQueue globalBlockQueue() { + default @NonNull GlobalBlockQueue globalBlockQueue() { return injector().getInstance(GlobalBlockQueue.class); } @@ -221,7 +229,7 @@ public interface PlotPlatform

extends LocaleHolder { * * @return Hybrid utils */ - @Nonnull default HybridUtils hybridUtils() { + default @NonNull HybridUtils hybridUtils() { return injector().getInstance(HybridUtils.class); } @@ -230,16 +238,16 @@ public interface PlotPlatform

extends LocaleHolder { * * @return Setup utils */ - @Nonnull default SetupUtils setupUtils() { + default @NonNull SetupUtils setupUtils() { return injector().getInstance(SetupUtils.class); } /** * Get the {@link EconHandler} implementation for the platform - * * + * * @return Econ handler */ - @Nonnull default EconHandler econHandler() { + default @NonNull EconHandler econHandler() { return injector().getInstance(EconHandler.class); } @@ -248,7 +256,7 @@ public interface PlotPlatform

extends LocaleHolder { * * @return Region manager */ - @Nonnull default RegionManager regionManager() { + default @NonNull RegionManager regionManager() { return injector().getInstance(RegionManager.class); } @@ -257,7 +265,7 @@ public interface PlotPlatform

extends LocaleHolder { * * @return Region manager */ - @Nonnull default ChunkManager chunkManager() { + default @NonNull ChunkManager chunkManager() { return injector().getInstance(ChunkManager.class); } @@ -266,7 +274,7 @@ public interface PlotPlatform

extends LocaleHolder { * * @return Console audience */ - @Nonnull Audience consoleAudience(); + @NonNull Audience consoleAudience(); /** * Get a formatted string containing all plugins on the server together @@ -274,7 +282,7 @@ public interface PlotPlatform

extends LocaleHolder { * * @return Formatted string */ - @Nonnull String pluginsFormatted(); + @NonNull String pluginsFormatted(); /** * Load the caption maps @@ -286,7 +294,7 @@ public interface PlotPlatform

extends LocaleHolder { * * @return Permission handler */ - @Nonnull default PermissionHandler permissionHandler() { + default @NonNull PermissionHandler permissionHandler() { return injector().getInstance(PermissionHandler.class); } @@ -295,7 +303,7 @@ public interface PlotPlatform

extends LocaleHolder { * * @return Service pipeline */ - @Nonnull default ServicePipeline servicePipeline() { + default @NonNull ServicePipeline servicePipeline() { return injector().getInstance(ServicePipeline.class); } @@ -304,10 +312,10 @@ public interface PlotPlatform

extends LocaleHolder { * * @return Placeholder registry */ - @Nonnull default PlaceholderRegistry placeholderRegistry() { + default @NonNull PlaceholderRegistry placeholderRegistry() { return injector().getInstance(PlaceholderRegistry.class); } - @Nonnull String toLegacyPlatformString(Component component); + @NonNull String toLegacyPlatformString(Component component); } diff --git a/Core/src/main/java/com/plotsquared/core/PlotSquared.java b/Core/src/main/java/com/plotsquared/core/PlotSquared.java index fb402609a..7991ad703 100644 --- a/Core/src/main/java/com/plotsquared/core/PlotSquared.java +++ b/Core/src/main/java/com/plotsquared/core/PlotSquared.java @@ -30,10 +30,10 @@ import com.plotsquared.core.configuration.ConfigurationUtil; import com.plotsquared.core.configuration.MemorySection; import com.plotsquared.core.configuration.Settings; import com.plotsquared.core.configuration.Storage; -import com.plotsquared.core.configuration.caption.load.CaptionLoader; import com.plotsquared.core.configuration.caption.CaptionMap; import com.plotsquared.core.configuration.caption.DummyCaptionMap; import com.plotsquared.core.configuration.caption.TranslatableCaption; +import com.plotsquared.core.configuration.caption.load.CaptionLoader; import com.plotsquared.core.configuration.caption.load.DefaultCaptionProvider; import com.plotsquared.core.configuration.file.YamlConfiguration; import com.plotsquared.core.configuration.serialization.ConfigurationSerialization; @@ -73,10 +73,12 @@ import com.plotsquared.core.util.task.TaskManager; import com.plotsquared.core.uuid.UUIDPipeline; import com.sk89q.worldedit.WorldEdit; import com.sk89q.worldedit.math.BlockVector2; +import org.checkerframework.checker.nullness.qual.MonotonicNonNull; +import org.checkerframework.checker.nullness.qual.NonNull; +import org.checkerframework.checker.nullness.qual.Nullable; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import javax.annotation.Nonnull; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; @@ -120,7 +122,7 @@ import java.util.zip.ZipInputStream; public class PlotSquared { private static final Logger logger = LoggerFactory.getLogger("P2/" + PlotSquared.class.getSimpleName()); - private static PlotSquared instance; + private static @MonotonicNonNull PlotSquared instance; // Implementation private final PlotPlatform platform; @@ -128,9 +130,13 @@ public class PlotSquared { private final Thread thread; // UUID pipelines private final UUIDPipeline impromptuUUIDPipeline = - new UUIDPipeline(Executors.newCachedThreadPool()); + new UUIDPipeline(Executors.newCachedThreadPool()); private final UUIDPipeline backgroundUUIDPipeline = - new UUIDPipeline(Executors.newSingleThreadExecutor()); + new UUIDPipeline(Executors.newSingleThreadExecutor()); + // Localization + private final CaptionLoader captionLoader; + private final Map captionMaps = new HashMap<>(); + public HashMap> plots_tmp; // WorldEdit instance private WorldEdit worldedit; private File configFile; @@ -138,11 +144,7 @@ public class PlotSquared { private YamlConfiguration worldConfiguration; // Temporary hold the plots/clusters before the worlds load private HashMap> clustersTmp; - public HashMap> plots_tmp; private YamlConfiguration config; - // Localization - private final CaptionLoader captionLoader; - private final Map captionMaps = new HashMap<>(); // Platform / Version / Update URL private PlotVersion version; // Files and configuration @@ -157,7 +159,10 @@ public class PlotSquared { * @param iPlotMain Implementation of {@link PlotPlatform} used * @param platform The platform being used */ - public PlotSquared(final PlotPlatform iPlotMain, final String platform) { + public PlotSquared( + final @NonNull PlotPlatform iPlotMain, + final @NonNull String platform + ) { if (instance != null) { throw new IllegalStateException("Cannot re-initialize the PlotSquared singleton"); } @@ -175,10 +180,14 @@ public class PlotSquared { // ConfigurationSerialization.registerClass(BlockBucket.class, "BlockBucket"); - this.captionLoader = CaptionLoader.of(Locale.ENGLISH, + this.captionLoader = CaptionLoader.of( + Locale.ENGLISH, CaptionLoader.patternExtractor(Pattern.compile("messages_(.*)\\.json")), - DefaultCaptionProvider.forClassLoaderFormatString(this.getClass().getClassLoader(), - "lang/messages_%s.json")); // the path in our jar file + DefaultCaptionProvider.forClassLoaderFormatString( + this.getClass().getClassLoader(), + "lang/messages_%s.json" + ) + ); // the path in our jar file // Load caption map try { this.loadCaptionMap(); @@ -194,14 +203,16 @@ public class PlotSquared { try { URL logurl = PlotSquared.class.getProtectionDomain().getCodeSource().getLocation(); this.jarFile = new File( - new URL(logurl.toURI().toString().split("\\!")[0].replaceAll("jar:file", "file")) - .toURI().getPath()); + new URL(logurl.toURI().toString().split("\\!")[0].replaceAll("jar:file", "file")) + .toURI().getPath()); } catch (MalformedURLException | URISyntaxException | SecurityException e) { e.printStackTrace(); this.jarFile = new File(this.platform.getDirectory().getParentFile(), "PlotSquared.jar"); if (!this.jarFile.exists()) { - this.jarFile = new File(this.platform.getDirectory().getParentFile(), - "PlotSquared-" + platform + ".jar"); + this.jarFile = new File( + this.platform.getDirectory().getParentFile(), + "PlotSquared-" + platform + ".jar" + ); } } @@ -234,6 +245,27 @@ public class PlotSquared { } } + /** + * Gets an instance of PlotSquared. + * + * @return instance of PlotSquared + */ + public static @NonNull PlotSquared get() { + return PlotSquared.instance; + } + + /** + * Get the platform specific implementation of PlotSquared + * + * @return Platform implementation + */ + public static @NonNull PlotPlatform platform() { + if (instance != null && instance.platform != null) { + return instance.platform; + } + throw new IllegalStateException("Plot platform implementation is missing"); + } + public void loadCaptionMap() throws Exception { this.platform.copyCaptionMaps(); // Setup localization @@ -245,8 +277,10 @@ public class PlotSquared { captionMap = this.captionLoader.loadSingle(this.platform.getDirectory().toPath().resolve("lang").resolve(fileName)); } this.captionMaps.put(TranslatableCaption.DEFAULT_NAMESPACE, captionMap); - logger.info("Loaded caption map for namespace 'plotsquared': {}", - this.captionMaps.get(TranslatableCaption.DEFAULT_NAMESPACE).getClass().getCanonicalName()); + logger.info( + "Loaded caption map for namespace 'plotsquared': {}", + this.captionMaps.get(TranslatableCaption.DEFAULT_NAMESPACE).getClass().getCanonicalName() + ); } /** @@ -254,31 +288,10 @@ public class PlotSquared { * * @return Plot area manager */ - @Nonnull public PlotAreaManager getPlotAreaManager() { + public @NonNull PlotAreaManager getPlotAreaManager() { return this.platform.injector().getInstance(PlotAreaManager.class); } - /** - * Gets an instance of PlotSquared. - * - * @return instance of PlotSquared - */ - public static PlotSquared get() { - return PlotSquared.instance; - } - - /** - * Get the platform specific implementation of PlotSquared - * - * @return Platform implementation - */ - @Nonnull public static PlotPlatform platform() { - if (instance != null && instance.platform != null) { - return instance.platform; - } - throw new IllegalStateException("Plot platform implementation is missing"); - } - public void startExpiryTasks() { if (Settings.Enabled_Components.PLOT_EXPIRY) { ExpireManager.IMP = new ExpireManager(this.eventDispatcher); @@ -290,7 +303,7 @@ public class PlotSquared { } } - public boolean isMainThread(Thread thread) { + public boolean isMainThread(final @NonNull Thread thread) { return this.thread == thread; } @@ -301,9 +314,12 @@ public class PlotSquared { * @param version2 Second version * @return true if `version` is >= `version2` */ - public boolean checkVersion(int[] version, int... version2) { + public boolean checkVersion( + final int[] version, + final int... version2 + ) { return version[0] > version2[0] || version[0] == version2[0] && version[1] > version2[1] - || version[0] == version2[0] && version[1] == version2[1] && version[2] >= version2[2]; + || version[0] == version2[0] && version[1] == version2[1] && version[2] >= version2[2]; } /** @@ -311,7 +327,7 @@ public class PlotSquared { * * @return current version in config or null */ - public PlotVersion getVersion() { + public @NonNull PlotVersion getVersion() { return this.version; } @@ -322,7 +338,7 @@ public class PlotSquared { * * @return the server implementation */ - public String getPlatform() { + public @NonNull String getPlatform() { return Settings.PLATFORM; } @@ -332,7 +348,7 @@ public class PlotSquared { * @param plotArea the {@code PlotArea} to add. * @see #removePlotArea(PlotArea) To remove the reference */ - public void addPlotArea(PlotArea plotArea) { + public void addPlotArea(final @NonNull PlotArea plotArea) { HashMap plots; if (plots_tmp == null || (plots = plots_tmp.remove(plotArea.toString())) == null) { if (plotArea.getType() == PlotAreaType.PARTIAL) { @@ -358,8 +374,8 @@ public class PlotSquared { if (clustersTmp == null || (clusters = clustersTmp.remove(plotArea.toString())) == null) { if (plotArea.getType() == PlotAreaType.PARTIAL) { clusters = this.clustersTmp != null ? - this.clustersTmp.get(plotArea.getWorldName()) : - null; + this.clustersTmp.get(plotArea.getWorldName()) : + null; if (clusters != null) { Iterator iterator = clusters.iterator(); while (iterator.hasNext()) { @@ -382,8 +398,8 @@ public class PlotSquared { return; } File file = new File( - this.platform.getDirectory() + File.separator + "persistent_regen_data_" + plotArea.getId() - + "_" + plotArea.getWorldName()); + this.platform.getDirectory() + File.separator + "persistent_regen_data_" + plotArea.getId() + + "_" + plotArea.getWorldName()); if (!file.exists()) { return; } @@ -397,7 +413,11 @@ public class PlotSquared { regionInts.forEach(l -> regions.add(BlockVector2.at(l[0], l[1]))); chunkInts.forEach(l -> chunks.add(BlockVector2.at(l[0], l[1]))); int height = (int) list.get(2); - logger.info("Incomplete road regeneration found. Restarting in world {} with height {}", plotArea.getWorldName(), height); + logger.info( + "Incomplete road regeneration found. Restarting in world {} with height {}", + plotArea.getWorldName(), + height + ); logger.info(" - Regions: {}", regions.size()); logger.info(" - Chunks: {}", chunks.size()); HybridUtils.UPDATE = true; @@ -417,12 +437,12 @@ public class PlotSquared { * * @param area the {@code PlotArea} to remove */ - public void removePlotArea(PlotArea area) { + public void removePlotArea(final @NonNull PlotArea area) { getPlotAreaManager().removePlotArea(area); setPlotsTmp(area); } - public void removePlotAreas(@Nonnull final String world) { + public void removePlotAreas(final @NonNull String world) { for (final PlotArea area : this.getPlotAreaManager().getPlotAreasSet(world)) { if (area.getWorldName().equals(world)) { removePlotArea(area); @@ -430,12 +450,12 @@ public class PlotSquared { } } - private void setPlotsTmp(PlotArea area) { + private void setPlotsTmp(final @NonNull PlotArea area) { if (this.plots_tmp == null) { this.plots_tmp = new HashMap<>(); } HashMap map = - this.plots_tmp.computeIfAbsent(area.toString(), k -> new HashMap<>()); + this.plots_tmp.computeIfAbsent(area.toString(), k -> new HashMap<>()); for (Plot plot : area.getPlots()) { map.put(plot.getId(), plot); } @@ -445,7 +465,7 @@ public class PlotSquared { this.clustersTmp.put(area.toString(), area.getClusters()); } - public Set getClusters(@Nonnull final String world) { + public Set getClusters(final @NonNull String world) { final Set set = new HashSet<>(); for (final PlotArea area : this.getPlotAreaManager().getPlotAreasSet(world)) { set.addAll(area.getClusters()); @@ -542,7 +562,7 @@ public class PlotSquared { * * @param input an array of plots to sort */ - private void sortPlotsByHash(Plot[] input) { + private void sortPlotsByHash(final @NonNull Plot @NonNull[] input) { List[] bucket = new ArrayList[32]; Arrays.fill(bucket, new ArrayList<>()); boolean maxLength = false; @@ -567,11 +587,11 @@ public class PlotSquared { } } - private ArrayList sortPlotsByTimestamp(Collection plots) { + private @NonNull List sortPlotsByTimestamp(final @NonNull Collection plots) { int hardMax = 256000; int max = 0; int overflowSize = 0; - for (Plot plot : plots) { + for (final Plot plot : plots) { int hash = MathMan.getPositiveId(plot.hashCode()); if (hash > max) { if (hash >= hardMax) { @@ -615,10 +635,10 @@ public class PlotSquared { /** * Sort plots by creation timestamp. * - * @param input - * @return + * @param input Plots to sort + * @return Sorted list */ - private List sortPlotsByModified(Collection input) { + private @NonNull List sortPlotsByModified(final @NonNull Collection input) { List list; if (input instanceof List) { list = (List) input; @@ -639,8 +659,11 @@ public class PlotSquared { * want default world order * @return ArrayList of plot */ - public ArrayList sortPlots(Collection plots, SortType type, - final PlotArea priorityArea) { + public @NonNull List sortPlots( + final @NonNull Collection plots, + final @NonNull SortType type, + final @Nullable PlotArea priorityArea + ) { // group by world // sort each HashMap> map = new HashMap<>(); @@ -698,7 +721,7 @@ public class PlotSquared { return toReturn; } - public void setPlots(@Nonnull final Map> plots) { + public void setPlots(final @NonNull Map> plots) { if (this.plots_tmp == null) { this.plots_tmp = new HashMap<>(); } @@ -724,7 +747,10 @@ public class PlotSquared { * @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(Plot plot, boolean callEvent) { + public boolean removePlot( + final @NonNull Plot plot, + final boolean callEvent + ) { if (plot == null) { return false; } @@ -761,7 +787,10 @@ public class PlotSquared { * @param world the world to load * @param baseGenerator The generator for that world, or null */ - public void loadWorld(String world, GeneratorWrapper baseGenerator) { + public void loadWorld( + final @NonNull String world, + final @Nullable GeneratorWrapper baseGenerator + ) { if (world.equals("CheckingPlotSquaredGenerator")) { return; } @@ -790,13 +819,13 @@ public class PlotSquared { } else if (worldSection != null) { String secondaryGeneratorName = worldSection.getString("generator.plugin"); GeneratorWrapper secondaryGenerator = - this.platform.getGenerator(world, secondaryGeneratorName); + this.platform.getGenerator(world, secondaryGeneratorName); if (secondaryGenerator != null && secondaryGenerator.isFull()) { plotGenerator = secondaryGenerator.getPlotGenerator(); } else { String primaryGeneratorName = worldSection.getString("generator.init"); GeneratorWrapper primaryGenerator = - this.platform.getGenerator(world, primaryGeneratorName); + this.platform.getGenerator(world, primaryGeneratorName); if (primaryGenerator != null && primaryGenerator.isFull()) { plotGenerator = primaryGenerator.getPlotGenerator(); } else { @@ -840,7 +869,7 @@ public class PlotSquared { String gen_string = worldSection.getString("generator.plugin", platform.pluginName()); if (type == PlotAreaType.PARTIAL) { Set clusters = - this.clustersTmp != null ? this.clustersTmp.get(world) : new HashSet<>(); + this.clustersTmp != null ? this.clustersTmp.get(world) : new HashSet<>(); if (clusters == null) { throw new IllegalArgumentException("No cluster exists for world: " + world); } @@ -858,7 +887,7 @@ public class PlotSquared { throw new IllegalArgumentException("Invalid Generator: " + gen_string); } PlotArea pa = - areaGen.getPlotGenerator().getNewPlotArea(world, name, pos1, pos2); + areaGen.getPlotGenerator().getNewPlotArea(world, name, pos1, pos2); pa.saveConfiguration(worldSection); pa.loadDefaultConfiguration(worldSection); try { @@ -901,22 +930,22 @@ public class PlotSquared { } if (type == PlotAreaType.AUGMENTED) { throw new IllegalArgumentException( - "Invalid type for multi-area world. Expected `PARTIAL`, got `" - + PlotAreaType.AUGMENTED + "`"); + "Invalid type for multi-area world. Expected `PARTIAL`, got `" + + PlotAreaType.AUGMENTED + "`"); } for (String areaId : areasSection.getKeys(false)) { logger.info(" - {}", areaId); String[] split = areaId.split("(?<=[^;-])-"); if (split.length != 3) { throw new IllegalArgumentException("Invalid Area identifier: " + areaId - + ". Expected form `--`"); + + ". Expected form `--`"); } String name = split[0]; PlotId pos1 = PlotId.fromString(split[1]); PlotId pos2 = PlotId.fromString(split[2]); if (name.isEmpty()) { throw new IllegalArgumentException("Invalid Area identifier: " + areaId - + ". Expected form `--`"); + + ". Expected form `--`"); } final PlotArea existing = this.getPlotAreaManager().getPlotArea(world, name); if (existing != null && name.equals(existing.getId())) { @@ -989,18 +1018,23 @@ public class PlotSquared { * @param generator the plot generator * @return boolean | if valid arguments were provided */ - public boolean setupPlotWorld(String world, String args, IndependentPlotGenerator generator) { + public boolean setupPlotWorld( + final @NonNull String world, + final @Nullable String args, + final @NonNull IndependentPlotGenerator generator + ) { if (args != null && !args.isEmpty()) { // save configuration final List validArguments = Arrays - .asList("s=", "size=", "g=", "gap=", "h=", "height=", "f=", "floor=", "m=", "main=", - "w=", "wall=", "b=", "border="); + .asList("s=", "size=", "g=", "gap=", "h=", "height=", "f=", "floor=", "m=", "main=", + "w=", "wall=", "b=", "border=" + ); // Calculate the number of expected arguments int expected = (int) validArguments.stream() - .filter(validArgument -> args.toLowerCase(Locale.ENGLISH).contains(validArgument)) - .count(); + .filter(validArgument -> args.toLowerCase(Locale.ENGLISH).contains(validArgument)) + .count(); String[] split = args.toLowerCase(Locale.ENGLISH).split(",(?![^\\(\\[]*[\\]\\)])"); @@ -1035,7 +1069,9 @@ public class PlotSquared { split = combinedArgs; } - final HybridPlotWorldFactory hybridPlotWorldFactory = this.platform.injector().getInstance(HybridPlotWorldFactory.class); + final HybridPlotWorldFactory hybridPlotWorldFactory = this.platform + .injector() + .getInstance(HybridPlotWorldFactory.class); final HybridPlotWorld plotWorld = hybridPlotWorldFactory.create(world, null, generator, null, null); for (String element : split) { @@ -1051,42 +1087,60 @@ public class PlotSquared { switch (key) { case "s": case "size": - this.worldConfiguration.set(base + "plot.size", - ConfigurationUtil.INTEGER.parseString(value).shortValue()); + this.worldConfiguration.set( + base + "plot.size", + ConfigurationUtil.INTEGER.parseString(value).shortValue() + ); break; case "g": case "gap": - this.worldConfiguration.set(base + "road.width", - ConfigurationUtil.INTEGER.parseString(value).shortValue()); + this.worldConfiguration.set( + base + "road.width", + ConfigurationUtil.INTEGER.parseString(value).shortValue() + ); break; case "h": case "height": - this.worldConfiguration.set(base + "road.height", - ConfigurationUtil.INTEGER.parseString(value).shortValue()); - this.worldConfiguration.set(base + "plot.height", - ConfigurationUtil.INTEGER.parseString(value).shortValue()); - this.worldConfiguration.set(base + "wall.height", - ConfigurationUtil.INTEGER.parseString(value).shortValue()); + this.worldConfiguration.set( + base + "road.height", + ConfigurationUtil.INTEGER.parseString(value).shortValue() + ); + this.worldConfiguration.set( + base + "plot.height", + ConfigurationUtil.INTEGER.parseString(value).shortValue() + ); + this.worldConfiguration.set( + base + "wall.height", + ConfigurationUtil.INTEGER.parseString(value).shortValue() + ); break; case "f": case "floor": - this.worldConfiguration.set(base + "plot.floor", - ConfigurationUtil.BLOCK_BUCKET.parseString(value).toString()); + this.worldConfiguration.set( + base + "plot.floor", + ConfigurationUtil.BLOCK_BUCKET.parseString(value).toString() + ); break; case "m": case "main": - this.worldConfiguration.set(base + "plot.filling", - ConfigurationUtil.BLOCK_BUCKET.parseString(value).toString()); + this.worldConfiguration.set( + base + "plot.filling", + ConfigurationUtil.BLOCK_BUCKET.parseString(value).toString() + ); break; case "w": case "wall": - this.worldConfiguration.set(base + "wall.filling", - ConfigurationUtil.BLOCK_BUCKET.parseString(value).toString()); + this.worldConfiguration.set( + base + "wall.filling", + ConfigurationUtil.BLOCK_BUCKET.parseString(value).toString() + ); break; case "b": case "border": - this.worldConfiguration.set(base + "wall.block", - ConfigurationUtil.BLOCK_BUCKET.parseString(value).toString()); + this.worldConfiguration.set( + base + "wall.block", + ConfigurationUtil.BLOCK_BUCKET.parseString(value).toString() + ); break; default: logger.error("Key not found: {}", element); @@ -1100,7 +1154,7 @@ public class PlotSquared { } try { ConfigurationSection section = - this.worldConfiguration.getConfigurationSection("worlds." + world); + this.worldConfiguration.getConfigurationSection("worlds." + world); plotWorld.saveConfiguration(section); plotWorld.loadDefaultConfiguration(section); this.worldConfiguration.save(this.worldsFile); @@ -1117,7 +1171,10 @@ public class PlotSquared { * @param file Name of the file inside PlotSquared.jar * @param folder The output location relative to /plugins/PlotSquared/ */ - public void copyFile(String file, String folder) { + public void copyFile( + final @NonNull String file, + final @NonNull String folder + ) { try { File output = this.platform.getDirectory(); if (!output.exists()) { @@ -1131,7 +1188,7 @@ public class PlotSquared { byte[] buffer = new byte[2048]; if (stream == null) { try (ZipInputStream zis = new ZipInputStream( - new FileInputStream(this.jarFile))) { + new FileInputStream(this.jarFile))) { ZipEntry ze = zis.getNextEntry(); while (ze != null) { String name = ze.getName(); @@ -1194,7 +1251,7 @@ public class PlotSquared { */ private void checkRoadRegenPersistence() { if (!HybridUtils.UPDATE || !Settings.Enabled_Components.PERSISTENT_ROAD_REGEN || ( - HybridUtils.regions.isEmpty() && HybridUtils.chunks.isEmpty())) { + HybridUtils.regions.isEmpty() && HybridUtils.chunks.isEmpty())) { return; } logger.info("Road regeneration incomplete. Saving incomplete regions to disk"); @@ -1203,24 +1260,24 @@ public class PlotSquared { ArrayList regions = new ArrayList<>(); ArrayList chunks = new ArrayList<>(); for (BlockVector2 r : HybridUtils.regions) { - regions.add(new int[] {r.getBlockX(), r.getBlockZ()}); + regions.add(new int[]{r.getBlockX(), r.getBlockZ()}); } for (BlockVector2 c : HybridUtils.chunks) { - chunks.add(new int[] {c.getBlockX(), c.getBlockZ()}); + chunks.add(new int[]{c.getBlockX(), c.getBlockZ()}); } List list = new ArrayList<>(); list.add(regions); list.add(chunks); list.add(HybridUtils.height); File file = new File( - this.platform.getDirectory() + File.separator + "persistent_regen_data_" + HybridUtils.area - .getId() + "_" + HybridUtils.area.getWorldName()); + this.platform.getDirectory() + File.separator + "persistent_regen_data_" + HybridUtils.area + .getId() + "_" + HybridUtils.area.getWorldName()); if (file.exists() && !file.delete()) { logger.error("persistent_regene_data file already exists and could not be deleted"); return; } try (ObjectOutputStream oos = new ObjectOutputStream( - Files.newOutputStream(file.toPath(), StandardOpenOption.CREATE_NEW))) { + Files.newOutputStream(file.toPath(), StandardOpenOption.CREATE_NEW))) { oos.writeObject(list); } catch (IOException e) { logger.error("Error creating persistent_region_data file", e); @@ -1238,7 +1295,8 @@ public class PlotSquared { Database database; if (Storage.MySQL.USE) { database = new MySQL(Storage.MySQL.HOST, Storage.MySQL.PORT, Storage.MySQL.DATABASE, - Storage.MySQL.USER, Storage.MySQL.PASSWORD); + Storage.MySQL.USER, Storage.MySQL.PASSWORD + ); } else if (Storage.SQLite.USE) { File file = FileUtils.getFile(platform.getDirectory(), Storage.SQLite.DB + ".db"); database = new SQLite(file); @@ -1247,7 +1305,13 @@ public class PlotSquared { this.platform.shutdown(); //shutdown used instead of disable because no database is set return; } - DBFunc.dbManager = new SQLManager(database, Storage.PREFIX, this.eventDispatcher, this.plotListener, this.worldConfiguration); + DBFunc.dbManager = new SQLManager( + database, + Storage.PREFIX, + this.eventDispatcher, + this.plotListener, + this.worldConfiguration + ); this.plots_tmp = DBFunc.getPlots(); if (getPlotAreaManager() instanceof SinglePlotAreaManager) { SinglePlotArea area = ((SinglePlotAreaManager) getPlotAreaManager()).getArea(); @@ -1261,32 +1325,35 @@ public class PlotSquared { } this.clustersTmp = DBFunc.getClusters(); } catch (ClassNotFoundException | SQLException e) { - logger.error("Failed to open database connection ({}). Disabling PlotSquared", Storage.MySQL.USE ? "MySQL" : "SQLite"); + logger.error( + "Failed to open database connection ({}). Disabling PlotSquared", + Storage.MySQL.USE ? "MySQL" : "SQLite" + ); logger.error("==== Here is an ugly stacktrace, if you are interested in those things ==="); e.printStackTrace(); logger.error("==== End of stacktrace ===="); - logger.error("Please go to the {} 'storage.yml' and configure the database correctly", - platform.pluginName()); + logger.error( + "Please go to the {} 'storage.yml' and configure the database correctly", + platform.pluginName() + ); this.platform.shutdown(); //shutdown used instead of disable because of database error } } /** * Setup the default configuration. - * - * @throws IOException if the config failed to save */ - public void setupConfig() throws IOException { + public void setupConfig() { String lastVersionString = this.getConfig().getString("version"); if (lastVersionString != null) { String[] split = lastVersionString.split("\\."); - int[] lastVersion = new int[] {Integer.parseInt(split[0]), Integer.parseInt(split[1]), - Integer.parseInt(split[2])}; - if (checkVersion(new int[] {3, 4, 0}, lastVersion)) { + int[] lastVersion = new int[]{Integer.parseInt(split[0]), Integer.parseInt(split[1]), + Integer.parseInt(split[2])}; + if (checkVersion(new int[]{3, 4, 0}, lastVersion)) { Settings.convertLegacy(configFile); if (getConfig().contains("worlds")) { ConfigurationSection worldSection = - getConfig().getConfigurationSection("worlds"); + getConfig().getConfigurationSection("worlds"); worldConfiguration.set("worlds", worldSection); try { worldConfiguration.save(worldsFile); @@ -1335,22 +1402,23 @@ public class PlotSquared { if (this.worldConfiguration.contains("worlds")) { if (!this.worldConfiguration.contains("configuration_version") || ( - !this.worldConfiguration.getString("configuration_version") - .equalsIgnoreCase(LegacyConverter.CONFIGURATION_VERSION) && !this.worldConfiguration - .getString("configuration_version").equalsIgnoreCase("v5"))) { + !this.worldConfiguration.getString("configuration_version") + .equalsIgnoreCase(LegacyConverter.CONFIGURATION_VERSION) && !this.worldConfiguration + .getString("configuration_version").equalsIgnoreCase("v5"))) { // Conversion needed logger.info("A legacy configuration file was detected. Conversion will be attempted."); try { com.google.common.io.Files - .copy(this.worldsFile, new File(folder, "worlds.yml.old")); + .copy(this.worldsFile, new File(folder, "worlds.yml.old")); logger.info("A copy of worlds.yml has been saved in the file worlds.yml.old"); final ConfigurationSection worlds = - this.worldConfiguration.getConfigurationSection("worlds"); + this.worldConfiguration.getConfigurationSection("worlds"); final LegacyConverter converter = new LegacyConverter(worlds); converter.convert(); this.worldConfiguration.set("worlds", worlds); this.setConfigurationVersion(LegacyConverter.CONFIGURATION_VERSION); - logger.info("The conversion has finished. PlotSquared will now be disabled and the new configuration file will be used at next startup. Please review the new worlds.yml file. Please note that schematics will not be converted, as we are now using WorldEdit to handle schematics. You need to re-generate the schematics."); + logger.info( + "The conversion has finished. PlotSquared will now be disabled and the new configuration file will be used at next startup. Please review the new worlds.yml file. Please note that schematics will not be converted, as we are now using WorldEdit to handle schematics. You need to re-generate the schematics."); } catch (final Exception e) { logger.error("Failed to convert the legacy configuration file. See stack trace for information.", e); } @@ -1387,12 +1455,12 @@ public class PlotSquared { return true; } - public String getConfigurationVersion() { + public @NonNull String getConfigurationVersion() { return this.worldConfiguration.get("configuration_version", LegacyConverter.CONFIGURATION_VERSION) - .toString(); + .toString(); } - public void setConfigurationVersion(final String newVersion) throws IOException { + public void setConfigurationVersion(final @NonNull String newVersion) throws IOException { this.worldConfiguration.set("configuration_version", newVersion); this.worldConfiguration.save(this.worldsFile); } @@ -1418,7 +1486,7 @@ public class PlotSquared { } } - public void forEachPlotRaw(Consumer consumer) { + public void forEachPlotRaw(final @NonNull Consumer consumer) { for (final PlotArea area : this.getPlotAreaManager().getAllPlotAreas()) { area.getPlots().forEach(consumer); } @@ -1436,8 +1504,10 @@ public class PlotSquared { * @param chunkCoordinates Chunk coordinates * @return True if the chunk uses non-standard generation, false if not */ - public boolean isNonStandardGeneration(@Nonnull final String world, - @Nonnull final BlockVector2 chunkCoordinates) { + public boolean isNonStandardGeneration( + final @NonNull String world, + final @NonNull BlockVector2 chunkCoordinates + ) { final Location location = Location.at(world, chunkCoordinates.getBlockX() << 4, 64, chunkCoordinates.getBlockZ() << 4); final PlotArea area = getPlotAreaManager().getApplicablePlotArea(location); if (area == null) { @@ -1446,31 +1516,31 @@ public class PlotSquared { return area.getTerrain() != PlotAreaTerrainType.NONE; } - public YamlConfiguration getConfig() { + public @NonNull YamlConfiguration getConfig() { return config; } - public UUIDPipeline getImpromptuUUIDPipeline() { + public @NonNull UUIDPipeline getImpromptuUUIDPipeline() { return this.impromptuUUIDPipeline; } - public UUIDPipeline getBackgroundUUIDPipeline() { + public @NonNull UUIDPipeline getBackgroundUUIDPipeline() { return this.backgroundUUIDPipeline; } - public WorldEdit getWorldEdit() { + public @NonNull WorldEdit getWorldEdit() { return this.worldedit; } - public File getConfigFile() { + public @NonNull File getConfigFile() { return this.configFile; } - public File getWorldsFile() { + public @NonNull File getWorldsFile() { return this.worldsFile; } - public YamlConfiguration getWorldConfiguration() { + public @NonNull YamlConfiguration getWorldConfiguration() { return this.worldConfiguration; } @@ -1482,33 +1552,42 @@ public class PlotSquared { * @return Map instance * @see #registerCaptionMap(String, CaptionMap) To register a caption map */ - @Nonnull public CaptionMap getCaptionMap(@Nonnull final String namespace) { - return this.captionMaps.computeIfAbsent(namespace.toLowerCase(Locale.ENGLISH), - missingNamespace -> new DummyCaptionMap()); + public @NonNull CaptionMap getCaptionMap(final @NonNull String namespace) { + return this.captionMaps.computeIfAbsent( + namespace.toLowerCase(Locale.ENGLISH), + missingNamespace -> new DummyCaptionMap() + ); } /** * Register a caption map * - * @param namespace Namespace + * @param namespace Namespace * @param captionMap Map instance */ - public void registerCaptionMap(@Nonnull final String namespace, @Nonnull final CaptionMap captionMap) { + public void registerCaptionMap( + final @NonNull String namespace, + final @NonNull CaptionMap captionMap + ) { if (namespace.equalsIgnoreCase(TranslatableCaption.DEFAULT_NAMESPACE)) { throw new IllegalArgumentException("Cannot replace default caption map"); } this.captionMaps.put(namespace.toLowerCase(Locale.ENGLISH), captionMap); } - public EventDispatcher getEventDispatcher() { + public @NonNull EventDispatcher getEventDispatcher() { return this.eventDispatcher; } - public PlotListener getPlotListener() { + public @NonNull PlotListener getPlotListener() { return this.plotListener; } public enum SortType { - CREATION_DATE, CREATION_DATE_TIMESTAMP, LAST_MODIFIED, DISTANCE_FROM_ORIGIN + CREATION_DATE, + CREATION_DATE_TIMESTAMP, + LAST_MODIFIED, + DISTANCE_FROM_ORIGIN } + } diff --git a/Core/src/main/java/com/plotsquared/core/PlotVersion.java b/Core/src/main/java/com/plotsquared/core/PlotVersion.java index 534b1759e..78adb46af 100644 --- a/Core/src/main/java/com/plotsquared/core/PlotVersion.java +++ b/Core/src/main/java/com/plotsquared/core/PlotVersion.java @@ -25,13 +25,23 @@ */ package com.plotsquared.core; -public class PlotVersion { +import org.checkerframework.checker.nullness.qual.NonNull; + +public final class PlotVersion { + public final int year, month, day, hash; public final String versionString; public final int[] version; public final String suffix; - public PlotVersion(int year, int month, int day, int hash, String versionString) { + public PlotVersion( + final int year, + final int month, + final int day, + final int hash, + final String rawVersion + ) { + String versionString = rawVersion; this.year = year; this.month = month; this.day = day; @@ -51,7 +61,12 @@ public class PlotVersion { version[2] = verArray.length > 2 ? Integer.parseInt(verArray[2]) : 0; } - public PlotVersion(String versionString, String commit, String date) { + public PlotVersion( + final String rawVersion, + final String commit, + final String date + ) { + String versionString = rawVersion; int dash = versionString.indexOf('-'); if (dash != -1) { suffix = versionString.substring(dash); @@ -73,7 +88,11 @@ public class PlotVersion { this.day = Integer.parseInt(split1[2]); } - public static PlotVersion tryParse(String versionString, String commit, String date) { + public static @NonNull PlotVersion tryParse( + final @NonNull String versionString, + final @NonNull String commit, + final @NonNull String date + ) { try { return new PlotVersion(versionString, commit, date); } catch (Exception e) { @@ -82,7 +101,7 @@ public class PlotVersion { } } - public String versionString() { + public @NonNull String versionString() { if (hash == 0 && versionString == null) { return "NoVer-SNAPSHOT"; } else { @@ -90,7 +109,8 @@ public class PlotVersion { } } - @Override public String toString() { + @Override + public String toString() { if (hash == 0 && versionString == null) { return "PlotSquared-NoVer-SNAPSHOT"; } else { @@ -104,10 +124,10 @@ public class PlotVersion { * @param versionString the version to compare * @return true if the given version is a "later" version */ - public boolean isLaterVersion(String versionString) { + public boolean isLaterVersion(final @NonNull String versionString) { int dash = versionString.indexOf('-'); String[] verArray = - versionString.substring(0, dash == -1 ? versionString.length() : dash).split("\\."); + versionString.substring(0, dash == -1 ? versionString.length() : dash).split("\\."); int one = Integer.parseInt(verArray[0]); int two = Integer.parseInt(verArray[1]); int three = Integer.parseInt(verArray[2]); @@ -133,9 +153,8 @@ public class PlotVersion { return true; } else { return verArray[0] == version[0] && verArray[1] == version[1] - && verArray[2] > version[2]; + && verArray[2] > version[2]; } } - } diff --git a/Core/src/main/java/com/plotsquared/core/backup/Backup.java b/Core/src/main/java/com/plotsquared/core/backup/Backup.java index 4a3d5a167..905dbd053 100644 --- a/Core/src/main/java/com/plotsquared/core/backup/Backup.java +++ b/Core/src/main/java/com/plotsquared/core/backup/Backup.java @@ -25,7 +25,8 @@ */ package com.plotsquared.core.backup; -import javax.annotation.Nullable; +import org.checkerframework.checker.nullness.qual.Nullable; + import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; @@ -38,7 +39,8 @@ public class Backup { private final BackupProfile owner; private final long creationTime; - @Nullable private final Path file; + @Nullable + private final Path file; Backup(final BackupProfile owner, final long creationTime, final Path file) { this.owner = owner; @@ -67,7 +69,8 @@ public class Backup { return this.creationTime; } - @Nullable public Path getFile() { + public @Nullable Path getFile() { return this.file; } + } diff --git a/Core/src/main/java/com/plotsquared/core/backup/BackupManager.java b/Core/src/main/java/com/plotsquared/core/backup/BackupManager.java index 4b7a1afe5..5e8249924 100644 --- a/Core/src/main/java/com/plotsquared/core/backup/BackupManager.java +++ b/Core/src/main/java/com/plotsquared/core/backup/BackupManager.java @@ -28,9 +28,9 @@ package com.plotsquared.core.backup; import com.plotsquared.core.PlotSquared; import com.plotsquared.core.player.PlotPlayer; import com.plotsquared.core.plot.Plot; +import org.checkerframework.checker.nullness.qual.NonNull; +import org.checkerframework.checker.nullness.qual.Nullable; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; import java.nio.file.Path; import java.util.Objects; @@ -45,7 +45,7 @@ public interface BackupManager { * @param plot Plot to perform the automatic backup on * @param whenDone Action that runs when the automatic backup has been completed */ - static void backup(@Nullable PlotPlayer player, @Nonnull final Plot plot, @Nonnull Runnable whenDone) { + static void backup(@Nullable PlotPlayer player, final @NonNull Plot plot, @NonNull Runnable whenDone) { Objects.requireNonNull(PlotSquared.platform()).backupManager().automaticBackup(player, plot, whenDone); } @@ -56,7 +56,7 @@ public interface BackupManager { * @param plot Plot to get the backup profile for * @return Backup profile */ - @Nonnull BackupProfile getProfile(@Nonnull final Plot plot); + @NonNull BackupProfile getProfile(final @NonNull Plot plot); /** * This will perform an automatic backup of the plot iff the plot has an owner, @@ -67,14 +67,14 @@ public interface BackupManager { * @param plot Plot to perform the automatic backup on * @param whenDone Action that runs when the automatic backup has been completed */ - void automaticBackup(@Nullable PlotPlayer player, @Nonnull final Plot plot, @Nonnull Runnable whenDone); + void automaticBackup(@Nullable PlotPlayer player, final @NonNull Plot plot, @NonNull Runnable whenDone); /** * Get the directory in which backups are stored * * @return Backup directory path */ - @Nonnull Path getBackupPath(); + @NonNull Path getBackupPath(); /** * Get the maximum amount of backups that may be stored for diff --git a/Core/src/main/java/com/plotsquared/core/backup/BackupProfile.java b/Core/src/main/java/com/plotsquared/core/backup/BackupProfile.java index 76c2ffd4c..5b5338b91 100644 --- a/Core/src/main/java/com/plotsquared/core/backup/BackupProfile.java +++ b/Core/src/main/java/com/plotsquared/core/backup/BackupProfile.java @@ -26,9 +26,9 @@ package com.plotsquared.core.backup; import com.plotsquared.core.player.PlotPlayer; +import org.checkerframework.checker.nullness.qual.NonNull; +import org.checkerframework.checker.nullness.qual.Nullable; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; import java.nio.file.Path; import java.util.List; import java.util.concurrent.CompletableFuture; @@ -40,7 +40,7 @@ public interface BackupProfile { * * @return Future that will be completed with available backups */ - @Nonnull CompletableFuture> listBackups(); + @NonNull CompletableFuture> listBackups(); /** * Remove all backups stored for this profile @@ -53,7 +53,7 @@ public interface BackupProfile { * * @return Folder that contains the backups for this profile */ - @Nonnull Path getBackupDirectory(); + @NonNull Path getBackupDirectory(); /** * Create a backup of the plot. If the profile is at the @@ -61,7 +61,7 @@ public interface BackupProfile { * * @return Future that completes with the created backup. */ - @Nonnull CompletableFuture createBackup(); + @NonNull CompletableFuture createBackup(); /** * Restore a backup @@ -70,6 +70,6 @@ public interface BackupProfile { * @param player The player restoring the backup * @return Future that completes when the backup has finished */ - @Nonnull CompletableFuture restoreBackup(@Nonnull final Backup backup, @Nullable PlotPlayer player); + @NonNull CompletableFuture restoreBackup(final @NonNull Backup backup, @Nullable PlotPlayer player); } diff --git a/Core/src/main/java/com/plotsquared/core/backup/NullBackupManager.java b/Core/src/main/java/com/plotsquared/core/backup/NullBackupManager.java index 75ada508f..428daddb5 100644 --- a/Core/src/main/java/com/plotsquared/core/backup/NullBackupManager.java +++ b/Core/src/main/java/com/plotsquared/core/backup/NullBackupManager.java @@ -29,35 +29,43 @@ import com.google.inject.Singleton; import com.plotsquared.core.PlotSquared; import com.plotsquared.core.player.PlotPlayer; import com.plotsquared.core.plot.Plot; +import org.checkerframework.checker.nullness.qual.NonNull; +import org.checkerframework.checker.nullness.qual.Nullable; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; import java.nio.file.Path; import java.util.Objects; /** * {@inheritDoc} */ -@Singleton public class NullBackupManager implements BackupManager { +@Singleton +public class NullBackupManager implements BackupManager { - @Override @Nonnull public BackupProfile getProfile(@Nonnull Plot plot) { + @Override + public @NonNull BackupProfile getProfile(@NonNull Plot plot) { return new NullBackupProfile(); } - @Override public void automaticBackup(@Nullable PlotPlayer plotPlayer, - @Nonnull Plot plot, @Nonnull Runnable whenDone) { + @Override + public void automaticBackup( + @Nullable PlotPlayer plotPlayer, + @NonNull Plot plot, @NonNull Runnable whenDone + ) { whenDone.run(); } - @Override @Nonnull public Path getBackupPath() { + @Override + public @NonNull Path getBackupPath() { return Objects.requireNonNull(PlotSquared.platform()).getDirectory().toPath(); } - @Override public int getBackupLimit() { + @Override + public int getBackupLimit() { return 0; } - @Override public boolean shouldAutomaticallyBackup() { + @Override + public boolean shouldAutomaticallyBackup() { return false; } diff --git a/Core/src/main/java/com/plotsquared/core/backup/NullBackupProfile.java b/Core/src/main/java/com/plotsquared/core/backup/NullBackupProfile.java index eb2ed97fd..69316322b 100644 --- a/Core/src/main/java/com/plotsquared/core/backup/NullBackupProfile.java +++ b/Core/src/main/java/com/plotsquared/core/backup/NullBackupProfile.java @@ -26,9 +26,9 @@ package com.plotsquared.core.backup; import com.plotsquared.core.player.PlotPlayer; +import org.checkerframework.checker.nullness.qual.NonNull; +import org.checkerframework.checker.nullness.qual.Nullable; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; import java.io.File; import java.nio.file.Path; import java.util.Collections; @@ -41,22 +41,27 @@ import java.util.concurrent.CompletableFuture; */ public class NullBackupProfile implements BackupProfile { - @Override @Nonnull public CompletableFuture> listBackups() { + @Override + public @NonNull CompletableFuture> listBackups() { return CompletableFuture.completedFuture(Collections.emptyList()); } - @Override public void destroy(){ + @Override + public void destroy() { } - @Override @Nonnull public Path getBackupDirectory() { + @Override + public @NonNull Path getBackupDirectory() { return new File(".").toPath(); } - @Override @Nonnull public CompletableFuture createBackup() { + @Override + public @NonNull CompletableFuture createBackup() { throw new UnsupportedOperationException("Cannot create backup of an unowned plot"); } - @Override @Nonnull public CompletableFuture restoreBackup(@Nonnull final Backup backup, @Nullable PlotPlayer player) { + @Override + public @NonNull CompletableFuture restoreBackup(final @NonNull Backup backup, @Nullable PlotPlayer player) { return CompletableFuture.completedFuture(null); } diff --git a/Core/src/main/java/com/plotsquared/core/backup/PlayerBackupProfile.java b/Core/src/main/java/com/plotsquared/core/backup/PlayerBackupProfile.java index 75c1195cf..c49257e24 100644 --- a/Core/src/main/java/com/plotsquared/core/backup/PlayerBackupProfile.java +++ b/Core/src/main/java/com/plotsquared/core/backup/PlayerBackupProfile.java @@ -36,9 +36,9 @@ import com.plotsquared.core.util.SchematicHandler; import com.plotsquared.core.util.task.RunnableVal; import com.plotsquared.core.util.task.TaskManager; import net.kyori.adventure.text.minimessage.MiniMessage; +import org.checkerframework.checker.nullness.qual.NonNull; +import org.checkerframework.checker.nullness.qual.Nullable; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; @@ -64,24 +64,42 @@ public class PlayerBackupProfile implements BackupProfile { private final Plot plot; private final BackupManager backupManager; private final SchematicHandler schematicHandler; - - @Inject public PlayerBackupProfile(@Assisted @Nonnull final UUID owner, @Assisted @Nonnull final Plot plot, - @Nonnull final BackupManager backupManager, @Nonnull final SchematicHandler schematicHandler) { + private final Object backupLock = new Object(); + private volatile List backupCache; + @Inject + public PlayerBackupProfile( + @Assisted final @NonNull UUID owner, @Assisted final @NonNull Plot plot, + final @NonNull BackupManager backupManager, final @NonNull SchematicHandler schematicHandler + ) { this.owner = owner; this.plot = plot; this.backupManager = backupManager; this.schematicHandler = schematicHandler; } - private volatile List backupCache; - private final Object backupLock = new Object(); - - private static boolean isValidFile(@Nonnull final Path path) { + private static boolean isValidFile(final @NonNull Path path) { final String name = path.getFileName().toString(); return name.endsWith(".schem") || name.endsWith(".schematic"); } - @Override @Nonnull public CompletableFuture> listBackups() { + private static Path resolve(final @NonNull Path parent, final String child) { + Path path = parent; + try { + if (!Files.exists(parent)) { + Files.createDirectory(parent); + } + path = parent.resolve(child); + if (!Files.exists(path)) { + Files.createDirectory(path); + } + } catch (final Exception e) { + e.printStackTrace(); + } + return path; + } + + @Override + public @NonNull CompletableFuture> listBackups() { synchronized (this.backupLock) { if (this.backupCache != null) { return CompletableFuture.completedFuture(backupCache); @@ -101,9 +119,9 @@ public class PlayerBackupProfile implements BackupProfile { Files.walk(path).filter(PlayerBackupProfile::isValidFile).forEach(file -> { try { final BasicFileAttributes basicFileAttributes = - Files.readAttributes(file, BasicFileAttributes.class); + Files.readAttributes(file, BasicFileAttributes.class); backups.add( - new Backup(this, basicFileAttributes.creationTime().toMillis(), file)); + new Backup(this, basicFileAttributes.creationTime().toMillis(), file)); } catch (IOException e) { e.printStackTrace(); } @@ -117,38 +135,26 @@ public class PlayerBackupProfile implements BackupProfile { } } - @Override public void destroy() { + @Override + public void destroy() { this.listBackups().whenCompleteAsync((backups, error) -> { - if (error != null) { - error.printStackTrace(); - } - backups.forEach(Backup::delete); - this.backupCache = null; + if (error != null) { + error.printStackTrace(); + } + backups.forEach(Backup::delete); + this.backupCache = null; }); } - @Nonnull public Path getBackupDirectory() { - return resolve(resolve(resolve(backupManager.getBackupPath(), Objects.requireNonNull(plot.getArea().toString(), "plot area id")), - Objects.requireNonNull(plot.getId().toDashSeparatedString(), "plot id")), Objects.requireNonNull(owner.toString(), "owner")); + public @NonNull Path getBackupDirectory() { + return resolve(resolve( + resolve(backupManager.getBackupPath(), Objects.requireNonNull(plot.getArea().toString(), "plot area id")), + Objects.requireNonNull(plot.getId().toDashSeparatedString(), "plot id") + ), Objects.requireNonNull(owner.toString(), "owner")); } - private static Path resolve(@Nonnull final Path parent, final String child) { - Path path = parent; - try { - if (!Files.exists(parent)) { - Files.createDirectory(parent); - } - path = parent.resolve(child); - if (!Files.exists(path)) { - Files.createDirectory(path); - } - } catch (final Exception e) { - e.printStackTrace(); - } - return path; - } - - @Override @Nonnull public CompletableFuture createBackup() { + @Override + public @NonNull CompletableFuture createBackup() { final CompletableFuture future = new CompletableFuture<>(); this.listBackups().thenAcceptAsync(backups -> { synchronized (this.backupLock) { @@ -157,8 +163,9 @@ public class PlayerBackupProfile implements BackupProfile { } final List plots = Collections.singletonList(plot); final boolean result = this.schematicHandler.exportAll(plots, getBackupDirectory().toFile(), - "%world%-%id%-" + System.currentTimeMillis(), () -> - future.complete(new Backup(this, System.currentTimeMillis(), null))); + "%world%-%id%-" + System.currentTimeMillis(), () -> + future.complete(new Backup(this, System.currentTimeMillis(), null)) + ); if (!result) { future.completeExceptionally(new RuntimeException("Failed to complete the backup")); } @@ -168,7 +175,8 @@ public class PlayerBackupProfile implements BackupProfile { return future; } - @Override @Nonnull public CompletableFuture restoreBackup(@Nonnull final Backup backup, @Nullable PlotPlayer player) { + @Override + public @NonNull CompletableFuture restoreBackup(final @NonNull Backup backup, @Nullable PlotPlayer player) { final CompletableFuture future = new CompletableFuture<>(); if (backup.getFile() == null || !Files.exists(backup.getFile())) { future.completeExceptionally(new IllegalArgumentException("The specific backup does not exist")); @@ -181,15 +189,19 @@ public class PlayerBackupProfile implements BackupProfile { e.printStackTrace(); } if (schematic == null) { - future.completeExceptionally(new IllegalArgumentException("The backup is non-existent or not in the correct format")); + future.completeExceptionally(new IllegalArgumentException( + "The backup is non-existent or not in the correct format")); } else { this.schematicHandler.paste(schematic, plot, 0, 1, 0, false, player, new RunnableVal() { - @Override public void run(Boolean value) { + @Override + public void run(Boolean value) { if (value) { future.complete(null); } else { future.completeExceptionally(new RuntimeException(MINI_MESSAGE.stripTokens( - TranslatableCaption.of("schematics.schematic_paste_failed").getComponent(ConsolePlayer.getConsole())))); + TranslatableCaption + .of("schematics.schematic_paste_failed") + .getComponent(ConsolePlayer.getConsole())))); } } }); diff --git a/Core/src/main/java/com/plotsquared/core/backup/SimpleBackupManager.java b/Core/src/main/java/com/plotsquared/core/backup/SimpleBackupManager.java index e89ef5bad..6c602122e 100644 --- a/Core/src/main/java/com/plotsquared/core/backup/SimpleBackupManager.java +++ b/Core/src/main/java/com/plotsquared/core/backup/SimpleBackupManager.java @@ -38,9 +38,9 @@ import com.plotsquared.core.player.PlotPlayer; import com.plotsquared.core.plot.Plot; import com.plotsquared.core.util.task.TaskManager; import net.kyori.adventure.text.minimessage.Template; +import org.checkerframework.checker.nullness.qual.NonNull; +import org.checkerframework.checker.nullness.qual.Nullable; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; import java.nio.file.Files; import java.nio.file.Path; import java.util.Objects; @@ -50,16 +50,18 @@ import java.util.concurrent.TimeUnit; /** * {@inheritDoc} */ -@Singleton public class SimpleBackupManager implements BackupManager { +@Singleton +public class SimpleBackupManager implements BackupManager { private final Path backupPath; private final boolean automaticBackup; private final int backupLimit; private final Cache backupProfileCache = CacheBuilder.newBuilder() - .expireAfterAccess(3, TimeUnit.MINUTES).build(); + .expireAfterAccess(3, TimeUnit.MINUTES).build(); private final PlayerBackupProfileFactory playerBackupProfileFactory; - @Inject public SimpleBackupManager(@Nonnull final PlayerBackupProfileFactory playerBackupProfileFactory) throws Exception { + @Inject + public SimpleBackupManager(final @NonNull PlayerBackupProfileFactory playerBackupProfileFactory) throws Exception { this.playerBackupProfileFactory = playerBackupProfileFactory; this.backupPath = Objects.requireNonNull(PlotSquared.platform()).getDirectory().toPath().resolve("backups"); if (!Files.exists(backupPath)) { @@ -69,18 +71,24 @@ import java.util.concurrent.TimeUnit; this.backupLimit = Settings.Backup.BACKUP_LIMIT; } - public SimpleBackupManager(final Path backupPath, final boolean automaticBackup, - final int backupLimit, final PlayerBackupProfileFactory playerBackupProfileFactory) { + public SimpleBackupManager( + final Path backupPath, final boolean automaticBackup, + final int backupLimit, final PlayerBackupProfileFactory playerBackupProfileFactory + ) { this.backupPath = backupPath; this.automaticBackup = automaticBackup; this.backupLimit = backupLimit; this.playerBackupProfileFactory = playerBackupProfileFactory; } - @Override @Nonnull public BackupProfile getProfile(@Nonnull final Plot plot) { + @Override + public @NonNull BackupProfile getProfile(final @NonNull Plot plot) { if (plot.hasOwner()) { try { - return backupProfileCache.get(new PlotCacheKey(plot), () -> this.playerBackupProfileFactory.create(plot.getOwnerAbs(), plot)); + return backupProfileCache.get( + new PlotCacheKey(plot), + () -> this.playerBackupProfileFactory.create(plot.getOwnerAbs(), plot) + ); } catch (ExecutionException e) { final BackupProfile profile = this.playerBackupProfileFactory.create(plot.getOwnerAbs(), plot); this.backupProfileCache.put(new PlotCacheKey(plot), profile); @@ -90,32 +98,39 @@ import java.util.concurrent.TimeUnit; return new NullBackupProfile(); } - @Override public void automaticBackup(@Nullable PlotPlayer player, @Nonnull final Plot plot, @Nonnull Runnable whenDone) { + @Override + public void automaticBackup(@Nullable PlotPlayer player, final @NonNull Plot plot, @NonNull Runnable whenDone) { final BackupProfile profile; if (!this.shouldAutomaticallyBackup() || (profile = getProfile(plot)) instanceof NullBackupProfile) { whenDone.run(); } else { if (player != null) { - player.sendMessage(TranslatableCaption.of("backups.backup_automatic_started"), Template.of("plot", String.valueOf(plot.getId()))); + player.sendMessage( + TranslatableCaption.of("backups.backup_automatic_started"), + Template.of("plot", String.valueOf(plot.getId())) + ); } profile.createBackup().whenComplete((backup, throwable) -> { - if (throwable != null) { - if (player != null) { - player.sendMessage(TranslatableCaption.of("backups.backup_automatic_failure"), - Templates.of("reason", throwable.getMessage())); - } - throwable.printStackTrace(); - } else { - if (player != null) { - player.sendMessage(TranslatableCaption.of("backups.backup_automatic_finished")); - TaskManager.runTaskAsync(whenDone); - } - } + if (throwable != null) { + if (player != null) { + player.sendMessage( + TranslatableCaption.of("backups.backup_automatic_failure"), + Templates.of("reason", throwable.getMessage()) + ); + } + throwable.printStackTrace(); + } else { + if (player != null) { + player.sendMessage(TranslatableCaption.of("backups.backup_automatic_finished")); + TaskManager.runTaskAsync(whenDone); + } + } }); } } - @Override public boolean shouldAutomaticallyBackup() { + @Override + public boolean shouldAutomaticallyBackup() { return this.automaticBackup; } @@ -135,7 +150,8 @@ import java.util.concurrent.TimeUnit; this.plot = plot; } - @Override public boolean equals(final Object o) { + @Override + public boolean equals(final Object o) { if (this == o) { return true; } @@ -144,13 +160,15 @@ import java.util.concurrent.TimeUnit; } final PlotCacheKey that = (PlotCacheKey) o; return Objects.equals(plot.getArea(), that.plot.getArea()) - && Objects.equals(plot.getId(), that.plot.getId()) - && Objects.equals(plot.getOwnerAbs(), that.plot.getOwnerAbs()); + && Objects.equals(plot.getId(), that.plot.getId()) + && Objects.equals(plot.getOwnerAbs(), that.plot.getOwnerAbs()); } - @Override public int hashCode() { + @Override + public int hashCode() { return Objects.hash(plot.getArea(), plot.getId(), plot.getOwnerAbs()); } + } } diff --git a/Core/src/main/java/com/plotsquared/core/collection/ArrayUtil.java b/Core/src/main/java/com/plotsquared/core/collection/ArrayUtil.java index 841413e50..c35912e3b 100644 --- a/Core/src/main/java/com/plotsquared/core/collection/ArrayUtil.java +++ b/Core/src/main/java/com/plotsquared/core/collection/ArrayUtil.java @@ -28,6 +28,7 @@ package com.plotsquared.core.collection; import java.util.Arrays; public class ArrayUtil { + public static final T[] concatAll(T[] first, T[]... rest) { int totalLength = first.length; for (T[] array : rest) { @@ -41,4 +42,5 @@ public class ArrayUtil { } return result; } + } diff --git a/Core/src/main/java/com/plotsquared/core/collection/ByteArrayUtilities.java b/Core/src/main/java/com/plotsquared/core/collection/ByteArrayUtilities.java index ab7c7574e..7dc2a6a1c 100644 --- a/Core/src/main/java/com/plotsquared/core/collection/ByteArrayUtilities.java +++ b/Core/src/main/java/com/plotsquared/core/collection/ByteArrayUtilities.java @@ -32,6 +32,7 @@ public class ByteArrayUtilities { } public static byte[] booleanToBytes(boolean b) { - return new byte[] {(byte) (b ? 1 : 0)}; + return new byte[]{(byte) (b ? 1 : 0)}; } + } diff --git a/Core/src/main/java/com/plotsquared/core/collection/FlatRandomCollection.java b/Core/src/main/java/com/plotsquared/core/collection/FlatRandomCollection.java index 1dc0427ff..486690d68 100644 --- a/Core/src/main/java/com/plotsquared/core/collection/FlatRandomCollection.java +++ b/Core/src/main/java/com/plotsquared/core/collection/FlatRandomCollection.java @@ -32,6 +32,7 @@ import java.util.Map; import java.util.Random; public class FlatRandomCollection extends RandomCollection { + private T[] values; public FlatRandomCollection(Map weights, Random random) { @@ -63,7 +64,9 @@ public class FlatRandomCollection extends RandomCollection { this.values = (T[]) parsed.toArray(); } - @Override public T next() { + @Override + public T next() { return values[random.nextInt(values.length)]; } + } diff --git a/Core/src/main/java/com/plotsquared/core/collection/QuadMap.java b/Core/src/main/java/com/plotsquared/core/collection/QuadMap.java index 413c62a02..f578680c3 100644 --- a/Core/src/main/java/com/plotsquared/core/collection/QuadMap.java +++ b/Core/src/main/java/com/plotsquared/core/collection/QuadMap.java @@ -127,8 +127,9 @@ public class QuadMap { if (region.getMinimumPoint().getZ() >= this.z) { if (this.one == null) { this.one = - newInstance(this.newsize, this.x + this.newsize, this.z + this.newsize, - this.min); + newInstance(this.newsize, this.x + this.newsize, this.z + this.newsize, + this.min + ); } this.one.add(area); recalculateSkip(); @@ -136,8 +137,9 @@ public class QuadMap { } else if (region.getMaximumPoint().getZ() < this.z) { if (this.two == null) { this.two = - newInstance(this.newsize, this.x + this.newsize, this.z - this.newsize, - this.min); + newInstance(this.newsize, this.x + this.newsize, this.z - this.newsize, + this.min + ); } this.two.add(area); recalculateSkip(); @@ -147,8 +149,9 @@ public class QuadMap { if (region.getMinimumPoint().getZ() >= this.z) { if (this.four == null) { this.four = - newInstance(this.newsize, this.x - this.newsize, this.z + this.newsize, - this.min); + newInstance(this.newsize, this.x - this.newsize, this.z + this.newsize, + this.min + ); } this.four.add(area); recalculateSkip(); @@ -156,8 +159,9 @@ public class QuadMap { } else if (region.getMaximumPoint().getZ() < this.z) { if (this.three == null) { this.three = - newInstance(this.newsize, this.x - this.newsize, this.z - this.newsize, - this.min); + newInstance(this.newsize, this.x - this.newsize, this.z - this.newsize, + this.min + ); } this.three.add(area); recalculateSkip(); @@ -177,7 +181,8 @@ public class QuadMap { public QuadMap newInstance(int newsize, int x, int z, int min) { try { return new QuadMap(newsize, x, z, min) { - @Override public CuboidRegion getRegion(T value) { + @Override + public CuboidRegion getRegion(T value) { return QuadMap.this.getRegion(value); } }; @@ -238,7 +243,7 @@ public class QuadMap { public void recalculateSkip() { QuadMap map = null; - for (QuadMap current : new QuadMap[] {this.one, this.two, this.three, this.four}) { + for (QuadMap current : new QuadMap[]{this.one, this.two, this.three, this.four}) { if (current != null) { if (map != null) { this.skip = null; @@ -282,8 +287,8 @@ public class QuadMap { public boolean intersects(CuboidRegion other) { return (other.getMinimumPoint().getX() <= this.x + this.size) && ( - other.getMaximumPoint().getX() >= this.x - this.size) && (other.getMinimumPoint().getZ() - <= this.z + this.size) && (other.getMaximumPoint().getZ() >= this.z - this.size); + other.getMaximumPoint().getX() >= this.x - this.size) && (other.getMinimumPoint().getZ() + <= this.z + this.size) && (other.getMaximumPoint().getZ() >= this.z - this.size); } public T get(int x, int z) { @@ -321,4 +326,5 @@ public class QuadMap { } return null; } + } diff --git a/Core/src/main/java/com/plotsquared/core/collection/RandomCollection.java b/Core/src/main/java/com/plotsquared/core/collection/RandomCollection.java index 3a7dca6b2..8d619e1b5 100644 --- a/Core/src/main/java/com/plotsquared/core/collection/RandomCollection.java +++ b/Core/src/main/java/com/plotsquared/core/collection/RandomCollection.java @@ -31,6 +31,7 @@ import java.util.Random; import static com.google.common.base.Preconditions.checkNotNull; public abstract class RandomCollection { + protected Random random; public RandomCollection(Map weights, Random random) { @@ -55,4 +56,5 @@ public abstract class RandomCollection { } public abstract T next(); + } diff --git a/Core/src/main/java/com/plotsquared/core/collection/SimpleRandomCollection.java b/Core/src/main/java/com/plotsquared/core/collection/SimpleRandomCollection.java index bfce745e6..1c891db7f 100644 --- a/Core/src/main/java/com/plotsquared/core/collection/SimpleRandomCollection.java +++ b/Core/src/main/java/com/plotsquared/core/collection/SimpleRandomCollection.java @@ -43,8 +43,9 @@ public class SimpleRandomCollection extends RandomCollection { } public void add(double weight, E result) { - if (weight <= 0) + if (weight <= 0) { return; + } total += weight; map.put(total, result); } @@ -52,4 +53,5 @@ public class SimpleRandomCollection extends RandomCollection { public E next() { return map.ceilingEntry(random.nextDouble()).getValue(); } + } diff --git a/Core/src/main/java/com/plotsquared/core/command/Add.java b/Core/src/main/java/com/plotsquared/core/command/Add.java index 975dc22a9..0a45795df 100644 --- a/Core/src/main/java/com/plotsquared/core/command/Add.java +++ b/Core/src/main/java/com/plotsquared/core/command/Add.java @@ -27,9 +27,9 @@ package com.plotsquared.core.command; import com.google.inject.Inject; import com.plotsquared.core.configuration.Settings; -import com.plotsquared.core.permissions.Permission; import com.plotsquared.core.configuration.caption.TranslatableCaption; import com.plotsquared.core.database.DBFunc; +import com.plotsquared.core.permissions.Permission; import com.plotsquared.core.player.PlotPlayer; import com.plotsquared.core.plot.Plot; import com.plotsquared.core.util.EventDispatcher; @@ -39,8 +39,8 @@ import com.plotsquared.core.util.TabCompletions; import com.plotsquared.core.util.task.RunnableVal2; import com.plotsquared.core.util.task.RunnableVal3; import net.kyori.adventure.text.minimessage.Template; +import org.checkerframework.checker.nullness.qual.NonNull; -import javax.annotation.Nonnull; import java.util.Collection; import java.util.Collections; import java.util.Iterator; @@ -49,66 +49,81 @@ import java.util.concurrent.CompletableFuture; import java.util.concurrent.TimeoutException; @CommandDeclaration(command = "add", - usage = "/plot add ", - category = CommandCategory.SETTINGS, - permission = "plots.add", - requiredType = RequiredType.PLAYER) + usage = "/plot add ", + category = CommandCategory.SETTINGS, + permission = "plots.add", + requiredType = RequiredType.PLAYER) public class Add extends Command { private final EventDispatcher eventDispatcher; - @Inject public Add(@Nonnull final EventDispatcher eventDispatcher) { + @Inject + public Add(final @NonNull EventDispatcher eventDispatcher) { super(MainCommand.getInstance(), true); this.eventDispatcher = eventDispatcher; } @Override - public CompletableFuture execute(final PlotPlayer player, String[] args, - RunnableVal3 confirm, - RunnableVal2 whenDone) throws CommandException { + public CompletableFuture execute( + final PlotPlayer player, String[] args, + RunnableVal3 confirm, + RunnableVal2 whenDone + ) throws CommandException { final Plot plot = check(player.getCurrentPlot(), TranslatableCaption.of("errors.not_in_plot")); checkTrue(plot.hasOwner(), TranslatableCaption.of("info.plot_unowned")); - checkTrue(plot.isOwner(player.getUUID()) || Permissions - .hasPermission(player, Permission.PERMISSION_ADMIN_COMMAND_TRUST), - TranslatableCaption.of("permission.no_plot_perms")); + checkTrue( + plot.isOwner(player.getUUID()) || Permissions + .hasPermission(player, Permission.PERMISSION_ADMIN_COMMAND_TRUST), + TranslatableCaption.of("permission.no_plot_perms") + ); checkTrue(args.length == 1, TranslatableCaption.of("commandconfig.command_syntax"), - Template.of("value", "/plot add ")); + Template.of("value", "/plot add ") + ); final CompletableFuture future = new CompletableFuture<>(); PlayerManager.getUUIDsFromString(args[0], (uuids, throwable) -> { if (throwable != null) { if (throwable instanceof TimeoutException) { player.sendMessage(TranslatableCaption.of("players.fetching_players_timeout")); } else { - player.sendMessage(TranslatableCaption.of("errors.invalid_player"), - Template.of("value", args[0])); + player.sendMessage( + TranslatableCaption.of("errors.invalid_player"), + Template.of("value", args[0]) + ); } future.completeExceptionally(throwable); return; } else { try { checkTrue(!uuids.isEmpty(), TranslatableCaption.of("errors.invalid_player"), - Template.of("value", args[0])); + Template.of("value", args[0]) + ); Iterator iterator = uuids.iterator(); int size = plot.getTrusted().size() + plot.getMembers().size(); while (iterator.hasNext()) { UUID uuid = iterator.next(); if (uuid == DBFunc.EVERYONE && !( - Permissions.hasPermission(player, Permission.PERMISSION_TRUST_EVERYONE) || Permissions - .hasPermission(player, Permission.PERMISSION_ADMIN_COMMAND_TRUST))) { - player.sendMessage(TranslatableCaption.of("errors.invalid_player"), - Template.of("value", PlayerManager.getName(uuid))); + Permissions.hasPermission(player, Permission.PERMISSION_TRUST_EVERYONE) || Permissions + .hasPermission(player, Permission.PERMISSION_ADMIN_COMMAND_TRUST))) { + player.sendMessage( + TranslatableCaption.of("errors.invalid_player"), + Template.of("value", PlayerManager.getName(uuid)) + ); iterator.remove(); continue; } if (plot.isOwner(uuid)) { - player.sendMessage(TranslatableCaption.of("member.already_added"), - Template.of("player", PlayerManager.getName(uuid))); + player.sendMessage( + TranslatableCaption.of("member.already_added"), + Template.of("player", PlayerManager.getName(uuid)) + ); iterator.remove(); continue; } if (plot.getMembers().contains(uuid)) { - player.sendMessage(TranslatableCaption.of("member.already_added"), - Template.of("player", PlayerManager.getName(uuid))); + player.sendMessage( + TranslatableCaption.of("member.already_added"), + Template.of("player", PlayerManager.getName(uuid)) + ); iterator.remove(); continue; } @@ -117,7 +132,10 @@ public class Add extends Command { checkTrue(!uuids.isEmpty(), null); int maxAddSize = Permissions.hasPermissionRange(player, Permission.PERMISSION_ADD, Settings.Limit.MAX_PLOTS); if (size > maxAddSize) { - player.sendMessage(TranslatableCaption.of("members.plot_max_members_added"), Template.of("amount", String.valueOf(size - 1))); + player.sendMessage( + TranslatableCaption.of("members.plot_max_members_added"), + Template.of("amount", String.valueOf(size - 1)) + ); return; } // Success @@ -145,7 +163,8 @@ public class Add extends Command { return future; } - @Override public Collection tab(final PlotPlayer player, final String[] args, final boolean space) { + @Override + public Collection tab(final PlotPlayer player, final String[] args, final boolean space) { return TabCompletions.completePlayers(String.join(",", args).trim(), Collections.emptyList()); } diff --git a/Core/src/main/java/com/plotsquared/core/command/Alias.java b/Core/src/main/java/com/plotsquared/core/command/Alias.java index a59414481..096558611 100644 --- a/Core/src/main/java/com/plotsquared/core/command/Alias.java +++ b/Core/src/main/java/com/plotsquared/core/command/Alias.java @@ -26,10 +26,10 @@ package com.plotsquared.core.command; import com.plotsquared.core.PlotSquared; -import com.plotsquared.core.permissions.Permission; -import com.plotsquared.core.configuration.caption.TranslatableCaption; import com.plotsquared.core.configuration.Settings; +import com.plotsquared.core.configuration.caption.TranslatableCaption; import com.plotsquared.core.location.Location; +import com.plotsquared.core.permissions.Permission; import com.plotsquared.core.player.PlotPlayer; import com.plotsquared.core.plot.Plot; import com.plotsquared.core.util.MathMan; @@ -44,16 +44,20 @@ import java.util.List; import java.util.concurrent.TimeoutException; @CommandDeclaration(command = "alias", - permission = "plots.alias", - usage = "/plot alias ", - aliases = {"setalias", "sa", "name", "rename", "setname", "seta", "nameplot"}, - category = CommandCategory.SETTINGS, - requiredType = RequiredType.PLAYER) + permission = "plots.alias", + usage = "/plot alias ", + aliases = {"setalias", "sa", "name", "rename", "setname", "seta", "nameplot"}, + category = CommandCategory.SETTINGS, + requiredType = RequiredType.PLAYER) public class Alias extends SubCommand { - private static final Command SET_COMMAND = new Command(null, false, "set", null, RequiredType.NONE, null) {}; - private static final Command REMOVE_COMMAND = new Command(null, false, "remove", null, RequiredType.NONE, null) {}; - @Override public boolean onCommand(PlotPlayer player, String[] args) { + private static final Command SET_COMMAND = new Command(null, false, "set", null, RequiredType.NONE, null) { + }; + private static final Command REMOVE_COMMAND = new Command(null, false, "remove", null, RequiredType.NONE, null) { + }; + + @Override + public boolean onCommand(PlotPlayer player, String[] args) { if (args.length == 0) { sendUsage(player); @@ -94,8 +98,10 @@ public class Alias extends SubCommand { setAlias(player, plot, args[1]); return true; } else { - player.sendMessage(TranslatableCaption.of("permission.no_permission"), - Template.of("node", String.valueOf(Permission.PERMISSION_ALIAS_SET))); + player.sendMessage( + TranslatableCaption.of("permission.no_permission"), + Template.of("node", String.valueOf(Permission.PERMISSION_ALIAS_SET)) + ); } break; @@ -109,8 +115,10 @@ public class Alias extends SubCommand { if (permission) { result = removeAlias(player, plot); } else { - player.sendMessage(TranslatableCaption.of("permission.no_permission"), - Template.of("node", String.valueOf(Permission.PERMISSION_ALIAS_REMOVE))); + player.sendMessage( + TranslatableCaption.of("permission.no_permission"), + Template.of("node", String.valueOf(Permission.PERMISSION_ALIAS_REMOVE)) + ); } break; default: @@ -162,8 +170,10 @@ public class Alias extends SubCommand { player.sendMessage(TranslatableCaption.of("alias.alias_is_taken")); } else { plot.setAlias(alias); - player.sendMessage(TranslatableCaption.of("alias.alias_set_to"), - Template.of("alias", alias)); + player.sendMessage( + TranslatableCaption.of("alias.alias_set_to"), + Template.of("alias", alias) + ); } })); } @@ -171,12 +181,15 @@ public class Alias extends SubCommand { private boolean removeAlias(PlotPlayer player, Plot plot) { plot.setAlias(null); - player.sendMessage(TranslatableCaption.of("permission.no_permission"), - Template.of("node", String.valueOf(Permission.PERMISSION_ALIAS_REMOVE))); + player.sendMessage( + TranslatableCaption.of("permission.no_permission"), + Template.of("node", String.valueOf(Permission.PERMISSION_ALIAS_REMOVE)) + ); return true; } private boolean isPermitted(PlotPlayer player, Permission permission) { return Permissions.hasPermission(player, permission); } + } diff --git a/Core/src/main/java/com/plotsquared/core/command/Area.java b/Core/src/main/java/com/plotsquared/core/command/Area.java index 6be75addf..a63a1a7ea 100644 --- a/Core/src/main/java/com/plotsquared/core/command/Area.java +++ b/Core/src/main/java/com/plotsquared/core/command/Area.java @@ -76,8 +76,8 @@ import com.sk89q.worldedit.math.BlockVector3; import com.sk89q.worldedit.regions.CuboidRegion; import com.sk89q.worldedit.regions.Region; import net.kyori.adventure.text.minimessage.Template; +import org.checkerframework.checker.nullness.qual.NonNull; -import javax.annotation.Nonnull; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; @@ -95,12 +95,12 @@ import java.util.UUID; import java.util.stream.Collectors; @CommandDeclaration(command = "area", - permission = "plots.area", - category = CommandCategory.ADMINISTRATION, - requiredType = RequiredType.NONE, - aliases = "world", - usage = "/plot area ", - confirmation = true) + permission = "plots.area", + category = CommandCategory.ADMINISTRATION, + requiredType = RequiredType.NONE, + aliases = "world", + usage = "/plot area ", + confirmation = true) public class Area extends SubCommand { private final PlotAreaManager plotAreaManager; @@ -114,14 +114,17 @@ public class Area extends SubCommand { private final Map> metaData = new HashMap<>(); - @Inject public Area(@Nonnull final PlotAreaManager plotAreaManager, - @WorldConfig @Nonnull final YamlConfiguration worldConfiguration, - @WorldFile @Nonnull final File worldFile, - @Nonnull final HybridPlotWorldFactory hybridPlotWorldFactory, - @Nonnull final SetupUtils setupUtils, - @Nonnull final WorldUtil worldUtil, - @Nonnull final RegionManager regionManager, - @Nonnull final GlobalBlockQueue blockQueue) { + @Inject + public Area( + final @NonNull PlotAreaManager plotAreaManager, + @WorldConfig final @NonNull YamlConfiguration worldConfiguration, + @WorldFile final @NonNull File worldFile, + final @NonNull HybridPlotWorldFactory hybridPlotWorldFactory, + final @NonNull SetupUtils setupUtils, + final @NonNull WorldUtil worldUtil, + final @NonNull RegionManager regionManager, + final @NonNull GlobalBlockQueue blockQueue + ) { this.plotAreaManager = plotAreaManager; this.worldConfiguration = worldConfiguration; this.worldFile = worldFile; @@ -132,7 +135,8 @@ public class Area extends SubCommand { this.blockQueue = blockQueue; } - @Override public boolean onCommand(final PlotPlayer player, String[] args) { + @Override + public boolean onCommand(final PlotPlayer player, String[] args) { if (args.length == 0) { sendUsage(player); return false; @@ -144,11 +148,17 @@ public class Area extends SubCommand { return false; } if (!Permissions.hasPermission(player, Permission.PERMISSION_AREA_CREATE)) { - player.sendMessage(TranslatableCaption.of("permission.no_permission"), Template.of("node", String.valueOf(Permission.PERMISSION_AREA_CREATE))); + player.sendMessage( + TranslatableCaption.of("permission.no_permission"), + Template.of("node", String.valueOf(Permission.PERMISSION_AREA_CREATE)) + ); return false; } if (args.length < 2) { - player.sendMessage(TranslatableCaption.of("single.single_area_needs_name"), Template.of("command", "/plot area single ")); + player.sendMessage( + TranslatableCaption.of("single.single_area_needs_name"), + Template.of("command", "/plot area single ") + ); return false; } final PlotArea existingArea = this.plotAreaManager.getPlotArea(player.getLocation().getWorldName(), args[1]); @@ -174,8 +184,10 @@ public class Area extends SubCommand { player.sendMessage(TranslatableCaption.of("single.single_area_not_square")); return false; } - if (this.plotAreaManager.getPlotAreas(Objects.requireNonNull(playerSelectedRegion.getWorld()).getName(), - CuboidRegion.makeCuboid(playerSelectedRegion)).length != 0) { + if (this.plotAreaManager.getPlotAreas( + Objects.requireNonNull(playerSelectedRegion.getWorld()).getName(), + CuboidRegion.makeCuboid(playerSelectedRegion) + ).length != 0) { player.sendMessage(TranslatableCaption.of("single.single_area_overlapping")); } // Alter the region @@ -183,13 +195,19 @@ public class Area extends SubCommand { final BlockVector3 playerSelectionMax = playerSelectedRegion.getMaximumPoint(); // Create a new selection that spans the entire vertical range of the world final CuboidRegion selectedRegion = - new CuboidRegion(playerSelectedRegion.getWorld(), BlockVector3.at(playerSelectionMin.getX(), 0, playerSelectionMin.getZ()), - BlockVector3.at(playerSelectionMax.getX(), 255, playerSelectionMax.getZ())); + new CuboidRegion(playerSelectedRegion.getWorld(), + BlockVector3.at(playerSelectionMin.getX(), 0, playerSelectionMin.getZ()), + BlockVector3.at(playerSelectionMax.getX(), 255, playerSelectionMax.getZ()) + ); // There's only one plot in the area... final PlotId plotId = PlotId.of(1, 1); final HybridPlotWorld hybridPlotWorld = this.hybridPlotWorldFactory - .create(player.getLocation().getWorldName(), args[1], Objects.requireNonNull(PlotSquared.platform()).defaultGenerator(), - plotId, plotId); + .create(player.getLocation().getWorldName(), + args[1], + Objects.requireNonNull(PlotSquared.platform()).defaultGenerator(), + plotId, + plotId + ); // Plot size is the same as the region width hybridPlotWorld.PLOT_WIDTH = hybridPlotWorld.SIZE = (short) selectedRegion.getWidth(); // We use a schematic generator @@ -204,19 +222,25 @@ public class Area extends SubCommand { hybridPlotWorld.PLOT_HEIGHT = hybridPlotWorld.ROAD_HEIGHT = hybridPlotWorld.WALL_HEIGHT = playerSelectionMin.getBlockY(); // No sign plz hybridPlotWorld.setAllowSigns(false); - final File parentFile = FileUtils.getFile(PlotSquared.platform().getDirectory(), - "schematics" + File.separator + "GEN_ROAD_SCHEMATIC" + File.separator + hybridPlotWorld.getWorldName() + File.separator - + hybridPlotWorld.getId()); + final File parentFile = FileUtils.getFile( + PlotSquared.platform().getDirectory(), + "schematics" + File.separator + "GEN_ROAD_SCHEMATIC" + File.separator + hybridPlotWorld.getWorldName() + File.separator + + hybridPlotWorld.getId() + ); if (!parentFile.exists() && !parentFile.mkdirs()) { player.sendMessage(TranslatableCaption.of("single.single_area_could_not_make_directories")); return false; } final File file = new File(parentFile, "plot.schem"); - try (final ClipboardWriter clipboardWriter = BuiltInClipboardFormat.SPONGE_SCHEMATIC.getWriter(new FileOutputStream(file))) { + try (final ClipboardWriter clipboardWriter = BuiltInClipboardFormat.SPONGE_SCHEMATIC.getWriter(new FileOutputStream( + file))) { final BlockArrayClipboard clipboard = new BlockArrayClipboard(selectedRegion); - final EditSession editSession = WorldEdit.getInstance().getEditSessionFactory().getEditSession(selectedRegion.getWorld(), -1); + final EditSession editSession = WorldEdit + .getInstance() + .getEditSessionFactory() + .getEditSession(selectedRegion.getWorld(), -1); final ForwardExtentCopy forwardExtentCopy = - new ForwardExtentCopy(editSession, selectedRegion, clipboard, selectedRegion.getMinimumPoint()); + new ForwardExtentCopy(editSession, selectedRegion, clipboard, selectedRegion.getMinimumPoint()); forwardExtentCopy.setCopyingBiomes(true); forwardExtentCopy.setCopyingEntities(true); Operations.complete(forwardExtentCopy); @@ -238,12 +262,15 @@ public class Area extends SubCommand { final BlockVector3 singlePos1 = selectedRegion.getMinimumPoint(); // Now the schematic is saved, which is wonderful! - PlotAreaBuilder singleBuilder = PlotAreaBuilder.ofPlotArea(hybridPlotWorld).plotManager(PlotSquared.platform().pluginName()) - .generatorName(PlotSquared.platform().pluginName()).maximumId(plotId).minimumId(plotId); + PlotAreaBuilder singleBuilder = PlotAreaBuilder.ofPlotArea(hybridPlotWorld).plotManager(PlotSquared + .platform() + .pluginName()) + .generatorName(PlotSquared.platform().pluginName()).maximumId(plotId).minimumId(plotId); Runnable singleRun = () -> { final String path = - "worlds." + hybridPlotWorld.getWorldName() + ".areas." + hybridPlotWorld.getId() + '-' + singleBuilder.minimumId() + '-' - + singleBuilder.maximumId(); + "worlds." + hybridPlotWorld.getWorldName() + ".areas." + hybridPlotWorld.getId() + '-' + singleBuilder + .minimumId() + '-' + + singleBuilder.maximumId(); final int offsetX = singlePos1.getX(); final int offsetZ = singlePos1.getZ(); if (offsetX != 0) { @@ -257,7 +284,10 @@ public class Area extends SubCommand { PlotSquared.get().loadWorld(world, null); player.sendMessage(TranslatableCaption.of("single.single_area_created")); } else { - player.sendMessage(TranslatableCaption.of("errors.error_create"), Template.of("world", hybridPlotWorld.getWorldName())); + player.sendMessage( + TranslatableCaption.of("errors.error_create"), + Template.of("world", hybridPlotWorld.getWorldName()) + ); } }; singleRun.run(); @@ -266,43 +296,67 @@ public class Area extends SubCommand { case "setup": case "create": if (!Permissions.hasPermission(player, Permission.PERMISSION_AREA_CREATE)) { - player.sendMessage(TranslatableCaption.of("permission.no_permission"), Template.of("node", String.valueOf(Permission.PERMISSION_AREA_CREATE))); + player.sendMessage( + TranslatableCaption.of("permission.no_permission"), + Template.of("node", String.valueOf(Permission.PERMISSION_AREA_CREATE)) + ); return false; } switch (args.length) { case 1: - player.sendMessage(TranslatableCaption.of("commandconfig.command_syntax"), - Templates.of("value", "/plot area create [world[:id]] [=]...")); + player.sendMessage( + TranslatableCaption.of("commandconfig.command_syntax"), + Templates.of("value", "/plot area create [world[:id]] [=]...") + ); return false; case 2: switch (args[1].toLowerCase()) { case "pos1": { // Set position 1 - HybridPlotWorld area = (HybridPlotWorld) metaData.computeIfAbsent(player.getUUID(), missingUUID -> new HashMap<>()) - .get("area_create_area"); + HybridPlotWorld area = (HybridPlotWorld) metaData.computeIfAbsent( + player.getUUID(), + missingUUID -> new HashMap<>() + ) + .get("area_create_area"); if (area == null) { - player.sendMessage(TranslatableCaption.of("commandconfig.command_syntax"), - Templates.of("value", "/plot area create [world[:id]] [=]...")); + player.sendMessage( + TranslatableCaption.of("commandconfig.command_syntax"), + Templates.of("value", "/plot area create [world[:id]] [=]...") + ); return false; } Location location = player.getLocation(); - metaData.computeIfAbsent(player.getUUID(), missingUUID -> new HashMap<>()).put("area_pos1", location); - player.sendMessage(TranslatableCaption.of("set.set_attribute"), Template.of("attribute", "area_pos1"), - Template.of("value", location.getX() + "," + location.getZ())); - player.sendMessage(TranslatableCaption.of("area.set_pos2"), Template.of("command", "/plot area create pos2")); + metaData.computeIfAbsent(player.getUUID(), missingUUID -> new HashMap<>()).put( + "area_pos1", + location + ); + player.sendMessage(TranslatableCaption.of("set.set_attribute"), + Template.of("attribute", "area_pos1"), + Template.of("value", location.getX() + "," + location.getZ()) + ); + player.sendMessage( + TranslatableCaption.of("area.set_pos2"), + Template.of("command", "/plot area create pos2") + ); return true; } case "pos2": // Set position 2 and finish creation for type=2 (partial) final HybridPlotWorld area = - (HybridPlotWorld) metaData.computeIfAbsent(player.getUUID(), missingUUID -> new HashMap<>()) - .get("area_create_area"); + (HybridPlotWorld) metaData.computeIfAbsent( + player.getUUID(), + missingUUID -> new HashMap<>() + ) + .get("area_create_area"); if (area == null) { - player.sendMessage(TranslatableCaption.of("commandconfig.command_syntax"), - Templates.of("value", "/plot area create [world[:id]] [=]...")); + player.sendMessage( + TranslatableCaption.of("commandconfig.command_syntax"), + Templates.of("value", "/plot area create [world[:id]] [=]...") + ); return false; } Location pos1 = player.getLocation(); Location pos2 = - (Location) metaData.computeIfAbsent(player.getUUID(), missingUUID -> new HashMap<>()).get("area_pos1"); + (Location) metaData.computeIfAbsent(player.getUUID(), missingUUID -> new HashMap<>()).get( + "area_pos1"); int dx = Math.abs(pos1.getX() - pos2.getX()); int dz = Math.abs(pos1.getZ() - pos2.getZ()); int numX = Math.max(1, (dx + 1 + area.ROAD_WIDTH + area.SIZE / 2) / area.SIZE); @@ -319,16 +373,20 @@ public class Area extends SubCommand { final CuboidRegion region = RegionUtil.createRegion(bx, tx, bz, tz); final Set areas = this.plotAreaManager.getPlotAreasSet(area.getWorldName(), region); if (!areas.isEmpty()) { - player.sendMessage(TranslatableCaption.of("cluster.cluster_intersection"), - Template.of("cluster", areas.iterator().next().toString())); + player.sendMessage( + TranslatableCaption.of("cluster.cluster_intersection"), + Template.of("cluster", areas.iterator().next().toString()) + ); return false; } - PlotAreaBuilder builder = PlotAreaBuilder.ofPlotArea(area).plotManager(PlotSquared.platform().pluginName()) - .generatorName(PlotSquared.platform().pluginName()).minimumId(PlotId.of(1, 1)) - .maximumId(PlotId.of(numX, numZ)); + PlotAreaBuilder builder = PlotAreaBuilder.ofPlotArea(area).plotManager(PlotSquared + .platform() + .pluginName()) + .generatorName(PlotSquared.platform().pluginName()).minimumId(PlotId.of(1, 1)) + .maximumId(PlotId.of(numX, numZ)); final String path = - "worlds." + area.getWorldName() + ".areas." + area.getId() + '-' + builder.minimumId() + '-' + builder - .maximumId(); + "worlds." + area.getWorldName() + ".areas." + area.getId() + '-' + builder.minimumId() + '-' + builder + .maximumId(); Runnable run = () -> { if (offsetX != 0) { this.worldConfiguration.set(path + ".road.offset.x", offsetX); @@ -343,12 +401,21 @@ public class Area extends SubCommand { player.teleport(this.worldUtil.getSpawn(world), TeleportCause.COMMAND); if (area.getTerrain() != PlotAreaTerrainType.ALL) { QueueCoordinator queue = blockQueue.getNewQueue(worldUtil.getWeWorld(world)); - queue.setChunkConsumer(chunk -> AugmentedUtils.generate(null, world, chunk.getX(), chunk.getZ(), null)); + queue.setChunkConsumer(chunk -> AugmentedUtils.generate( + null, + world, + chunk.getX(), + chunk.getZ(), + null + )); queue.addReadChunks(region.getChunks()); queue.enqueue(); } } else { - player.sendMessage(TranslatableCaption.of("errors.error_create"), Template.of("world", area.getWorldName())); + player.sendMessage( + TranslatableCaption.of("errors.error_create"), + Template.of("world", area.getWorldName()) + ); } }; if (hasConfirmation(player)) { @@ -369,10 +436,19 @@ public class Area extends SubCommand { PlotAreaBuilder builder = PlotAreaBuilder.newBuilder(); builder.worldName(split[0]); final HybridPlotWorld pa = - this.hybridPlotWorldFactory.create(builder.worldName(), id, PlotSquared.platform().defaultGenerator(), null, null); + this.hybridPlotWorldFactory.create( + builder.worldName(), + id, + PlotSquared.platform().defaultGenerator(), + null, + null + ); PlotArea other = this.plotAreaManager.getPlotArea(pa.getWorldName(), id); if (other != null && Objects.equals(pa.getId(), other.getId())) { - player.sendMessage(TranslatableCaption.of("setup.setup_world_taken"), Template.of("value", pa.toString())); + player.sendMessage( + TranslatableCaption.of("setup.setup_world_taken"), + Template.of("value", pa.toString()) + ); return false; } Set areas = this.plotAreaManager.getPlotAreasSet(pa.getWorldName()); @@ -384,9 +460,11 @@ public class Area extends SubCommand { for (int i = 2; i < args.length; i++) { String[] pair = args[i].split("="); if (pair.length != 2) { - player.sendMessage(TranslatableCaption.of("commandconfig.command_syntax_extended"), - Template.of("value1,", getCommandString()), - Template.of("value2", " create [world[:id]] [=]...")); + player.sendMessage( + TranslatableCaption.of("commandconfig.command_syntax_extended"), + Template.of("value1,", getCommandString()), + Template.of("value2", " create [world[:id]] [=]...") + ); return false; } switch (pair[0].toLowerCase()) { @@ -425,24 +503,29 @@ public class Area extends SubCommand { break; case "terrain": pa.setTerrain(PlotAreaTerrainType.fromString(pair[1]) - .orElseThrow(() -> new IllegalArgumentException(pair[1] + " is not a valid terrain."))); + .orElseThrow(() -> new IllegalArgumentException(pair[1] + " is not a valid terrain."))); builder.terrainType(pa.getTerrain()); break; case "type": pa.setType(PlotAreaType.fromString(pair[1]) - .orElseThrow(() -> new IllegalArgumentException(pair[1] + " is not a valid type."))); + .orElseThrow(() -> new IllegalArgumentException(pair[1] + " is not a valid type."))); builder.plotAreaType(pa.getType()); break; default: - player.sendMessage(TranslatableCaption.of("commandconfig.command_syntax_extended"), - Template.of("value1", getCommandString()), - Template.of("value2", " create [world[:id]] [=]...")); + player.sendMessage( + TranslatableCaption.of("commandconfig.command_syntax_extended"), + Template.of("value1", getCommandString()), + Template.of("value2", " create [world[:id]] [=]...") + ); return false; } } if (pa.getType() != PlotAreaType.PARTIAL) { if (this.worldUtil.isWorld(pa.getWorldName())) { - player.sendMessage(TranslatableCaption.of("setup.setup_world_taken"), Template.of("value", pa.getWorldName())); + player.sendMessage( + TranslatableCaption.of("setup.setup_world_taken"), + Template.of("value", pa.getWorldName()) + ); return false; } Runnable run = () -> { @@ -460,7 +543,10 @@ public class Area extends SubCommand { player.sendMessage(TranslatableCaption.of("setup.setup_finished")); player.teleport(this.worldUtil.getSpawn(world), TeleportCause.COMMAND); } else { - player.sendMessage(TranslatableCaption.of("errors.error_create"), Template.of("world", pa.getWorldName())); + player.sendMessage( + TranslatableCaption.of("errors.error_create"), + Template.of("world", pa.getWorldName()) + ); } try { this.worldConfiguration.save(this.worldFile); @@ -476,9 +562,14 @@ public class Area extends SubCommand { return true; } if (pa.getId() == null) { - player.sendMessage(TranslatableCaption.of("commandconfig.command_syntax"), Template.of("value", getUsage())); + player.sendMessage( + TranslatableCaption.of("commandconfig.command_syntax"), + Template.of("value", getUsage()) + ); player.sendMessage(TranslatableCaption.of("commandconfig.command_syntax_extended"), - Template.of("value1", getCommandString()), Template.of("value2", " create [world[:id]] [=]...")); + Template.of("value1", getCommandString()), + Template.of("value2", " create [world[:id]] [=]...") + ); return false; } if (this.worldUtil.isWorld(pa.getWorldName())) { @@ -492,14 +583,20 @@ public class Area extends SubCommand { player.teleport(this.worldUtil.getSpawn(pa.getWorldName()), TeleportCause.COMMAND); } metaData.computeIfAbsent(player.getUUID(), missingUUID -> new HashMap<>()).put("area_create_area", pa); - player.sendMessage(TranslatableCaption.of("single.get_position"), Template.of("command", getCommandString())); + player.sendMessage( + TranslatableCaption.of("single.get_position"), + Template.of("command", getCommandString()) + ); break; } return true; case "i": case "info": { if (!Permissions.hasPermission(player, Permission.PERMISSION_AREA_INFO)) { - player.sendMessage(TranslatableCaption.of("permission.no_permission"), Template.of("node", String.valueOf(Permission.PERMISSION_AREA_INFO))); + player.sendMessage( + TranslatableCaption.of("permission.no_permission"), + Template.of("node", String.valueOf(Permission.PERMISSION_AREA_INFO)) + ); return false; } PlotArea area; @@ -511,8 +608,10 @@ public class Area extends SubCommand { area = this.plotAreaManager.getPlotAreaByString(args[1]); break; default: - player.sendMessage(TranslatableCaption.of("commandconfig.command_syntax_extended"), Template.of("value1", getCommandString()), - Template.of("value2", " info [area]")); + player.sendMessage(TranslatableCaption.of("commandconfig.command_syntax_extended"), + Template.of("value1", getCommandString()), + Template.of("value2", " info [area]") + ); return false; } if (area == null) { @@ -541,7 +640,10 @@ public class Area extends SubCommand { percent = claimed == 0 ? 0 : 100d * claimed / Integer.MAX_VALUE; region = "N/A"; } - Template headerTemplate = Template.of("header", TranslatableCaption.of("info.plot_info_header").getComponent(player)); + Template headerTemplate = Template.of( + "header", + TranslatableCaption.of("info.plot_info_header").getComponent(player) + ); Template nameTemplate = Template.of("name", name); Template typeTemplate = Template.of("type", area.getType().name()); Template terrainTemplate = Template.of("terrain", area.getTerrain().name()); @@ -550,15 +652,31 @@ public class Area extends SubCommand { Template clustersTemplate = Template.of("clusters", String.valueOf(clusters)); Template regionTemplate = Template.of("region", region); Template generatorTemplate = Template.of("generator", generator); - Template footerTemplate = Template.of("footer", TranslatableCaption.of("info.plot_info_footer").getComponent(player)); - player.sendMessage(TranslatableCaption.of("info.area_info_format"), headerTemplate, nameTemplate, typeTemplate, terrainTemplate, - usageTemplate, claimedTemplate, clustersTemplate, regionTemplate, generatorTemplate, footerTemplate); + Template footerTemplate = Template.of( + "footer", + TranslatableCaption.of("info.plot_info_footer").getComponent(player) + ); + player.sendMessage(TranslatableCaption.of("info.area_info_format"), + headerTemplate, + nameTemplate, + typeTemplate, + terrainTemplate, + usageTemplate, + claimedTemplate, + clustersTemplate, + regionTemplate, + generatorTemplate, + footerTemplate + ); return true; } case "l": case "list": if (!Permissions.hasPermission(player, Permission.PERMISSION_AREA_LIST)) { - player.sendMessage(TranslatableCaption.of("permission.no_permission"), Template.of("node", String.valueOf(Permission.PERMISSION_AREA_LIST))); + player.sendMessage( + TranslatableCaption.of("permission.no_permission"), + Template.of("node", String.valueOf(Permission.PERMISSION_AREA_LIST)) + ); return false; } int page; @@ -572,13 +690,16 @@ public class Area extends SubCommand { break; } default: - player.sendMessage(TranslatableCaption.of("commandconfig.command_syntax_extended"), Template.of("value1", getCommandString()), - Template.of("value2", " list [#]")); + player.sendMessage(TranslatableCaption.of("commandconfig.command_syntax_extended"), + Template.of("value1", getCommandString()), + Template.of("value2", " list [#]") + ); return false; } final List areas = new ArrayList<>(Arrays.asList(this.plotAreaManager.getAllPlotAreas())); paginate(player, areas, 8, page, new RunnableVal3() { - @Override public void run(Integer i, PlotArea area, CaptionHolder caption) { + @Override + public void run(Integer i, PlotArea area, CaptionHolder caption) { String name; double percent; int claimed = area.getPlotCount(); @@ -603,8 +724,13 @@ public class Area extends SubCommand { Template regionTemplate = Template.of("region", region); Template generatorTemplate = Template.of("generator", generator); String tooltip = MINI_MESSAGE.serialize(MINI_MESSAGE - .parse(TranslatableCaption.of("info.area_list_tooltip").getComponent(player), claimedTemplate, usageTemplate, - clustersTemplate, regionTemplate, generatorTemplate)); + .parse(TranslatableCaption.of("info.area_list_tooltip").getComponent(player), + claimedTemplate, + usageTemplate, + clustersTemplate, + regionTemplate, + generatorTemplate + )); Template tooltipTemplate = Template.of("hover_info", tooltip); Template visitcmdTemplate = Template.of("command_tp", "/plot area tp " + area.toString()); Template infocmdTemplate = Template.of("command_info", "/plot area info " + area.toString()); @@ -613,8 +739,14 @@ public class Area extends SubCommand { Template typeTemplate = Template.of("area_type", area.getType().name()); Template terrainTemplate = Template.of("area_terrain", area.getTerrain().name()); caption.set(TranslatableCaption.of("info.area_list_item")); - caption.setTemplates(tooltipTemplate, visitcmdTemplate, numberTemplate, nameTemplate, typeTemplate, terrainTemplate, - infocmdTemplate); + caption.setTemplates(tooltipTemplate, + visitcmdTemplate, + numberTemplate, + nameTemplate, + typeTemplate, + terrainTemplate, + infocmdTemplate + ); } }, "/plot area list", TranslatableCaption.of("list.area_list_header_paged")); return true; @@ -623,7 +755,10 @@ public class Area extends SubCommand { case "reset": case "regenerate": { if (!Permissions.hasPermission(player, Permission.PERMISSION_AREA_REGEN)) { - player.sendMessage(TranslatableCaption.of("permission.no_permission"), Template.of("node", String.valueOf(Permission.PERMISSION_AREA_REGEN))); + player.sendMessage( + TranslatableCaption.of("permission.no_permission"), + Template.of("node", String.valueOf(Permission.PERMISSION_AREA_REGEN)) + ); return false; } final PlotArea area = player.getApplicablePlotArea(); @@ -632,11 +767,20 @@ public class Area extends SubCommand { return false; } if (area.getType() != PlotAreaType.PARTIAL) { - player.sendMessage(TranslatableCaption.of("single.delete_world_region"), Template.of("world", area.getWorldName())); + player.sendMessage( + TranslatableCaption.of("single.delete_world_region"), + Template.of("world", area.getWorldName()) + ); return false; } QueueCoordinator queue = blockQueue.getNewQueue(worldUtil.getWeWorld(area.getWorldName())); - queue.setChunkConsumer(chunk -> AugmentedUtils.generate(null, area.getWorldName(), chunk.getX(), chunk.getZ(), null)); + queue.setChunkConsumer(chunk -> AugmentedUtils.generate( + null, + area.getWorldName(), + chunk.getX(), + chunk.getZ(), + null + )); queue.addReadChunks(area.getRegion().getChunks()); queue.setCompleteTask(() -> player.sendMessage(TranslatableCaption.of("single.regeneration_complete"))); queue.enqueue(); @@ -648,11 +792,17 @@ public class Area extends SubCommand { case "visit": case "tp": if (!Permissions.hasPermission(player, Permission.PERMISSION_AREA_TP)) { - player.sendMessage(TranslatableCaption.of("permission.no_permission"), Template.of("node", String.valueOf(Permission.PERMISSION_AREA_TP))); + player.sendMessage( + TranslatableCaption.of("permission.no_permission"), + Template.of("node", String.valueOf(Permission.PERMISSION_AREA_TP)) + ); return false; } if (args.length != 2) { - player.sendMessage(TranslatableCaption.of("commandconfig.command_syntax"), Template.of("value", "/plot area tp [area]")); + player.sendMessage( + TranslatableCaption.of("commandconfig.command_syntax"), + Template.of("value", "/plot area tp [area]") + ); return false; } PlotArea area = this.plotAreaManager.getPlotAreaByString(args[1]); @@ -671,10 +821,16 @@ public class Area extends SubCommand { } else { CuboidRegion region = area.getRegion(); center = Location.at(area.getWorldName(), - region.getMinimumPoint().getX() + (region.getMaximumPoint().getX() - region.getMinimumPoint().getX()) / 2, 0, - region.getMinimumPoint().getZ() + (region.getMaximumPoint().getZ() - region.getMinimumPoint().getZ()) / 2); + region.getMinimumPoint().getX() + (region.getMaximumPoint().getX() - region + .getMinimumPoint() + .getX()) / 2, 0, + region.getMinimumPoint().getZ() + (region.getMaximumPoint().getZ() - region + .getMinimumPoint() + .getZ()) / 2 + ); this.worldUtil.getHighestBlock(area.getWorldName(), center.getX(), center.getZ(), - y -> player.teleport(center.withY(1 + y), TeleportCause.COMMAND)); + y -> player.teleport(center.withY(1 + y), TeleportCause.COMMAND) + ); } return true; case "delete": @@ -685,6 +841,7 @@ public class Area extends SubCommand { sendUsage(player); return false; } + @Override public Collection tab(final PlotPlayer player, final String[] args, final boolean space) { if (args.length == 1) { @@ -704,8 +861,17 @@ public class Area extends SubCommand { if (Permissions.hasPermission(player, Permission.PERMISSION_AREA_TP)) { completions.add("tp"); } - final List commands = completions.stream().filter(completion -> completion.toLowerCase().startsWith(args[0].toLowerCase())) - .map(completion -> new Command(null, true, completion, "", RequiredType.NONE, CommandCategory.ADMINISTRATION) { + final List commands = completions.stream().filter(completion -> completion + .toLowerCase() + .startsWith(args[0].toLowerCase())) + .map(completion -> new Command( + null, + true, + completion, + "", + RequiredType.NONE, + CommandCategory.ADMINISTRATION + ) { }).collect(Collectors.toCollection(LinkedList::new)); if (Permissions.hasPermission(player, Permission.PERMISSION_AREA) && args[0].length() > 0) { commands.addAll(TabCompletions.completePlayers(args[0], Collections.emptyList())); @@ -714,4 +880,5 @@ public class Area extends SubCommand { } return TabCompletions.completePlayers(String.join(",", args).trim(), Collections.emptyList()); } + } diff --git a/Core/src/main/java/com/plotsquared/core/command/Argument.java b/Core/src/main/java/com/plotsquared/core/command/Argument.java index 6f0290ba1..1030aea0e 100644 --- a/Core/src/main/java/com/plotsquared/core/command/Argument.java +++ b/Core/src/main/java/com/plotsquared/core/command/Argument.java @@ -30,7 +30,8 @@ import com.plotsquared.core.plot.PlotId; public abstract class Argument { public static final Argument Integer = new Argument("int", 16) { - @Override public Integer parse(String in) { + @Override + public Integer parse(String in) { Integer value = null; try { value = java.lang.Integer.parseInt(in); @@ -40,35 +41,39 @@ public abstract class Argument { } }; public static final Argument Boolean = new Argument("boolean", true) { - @Override public Boolean parse(String in) { + @Override + public Boolean parse(String in) { Boolean value = null; if (in.equalsIgnoreCase("true") || in.equalsIgnoreCase("Yes") || in - .equalsIgnoreCase("1")) { + .equalsIgnoreCase("1")) { value = true; } else if (in.equalsIgnoreCase("false") || in.equalsIgnoreCase("No") || in - .equalsIgnoreCase("0")) { + .equalsIgnoreCase("0")) { value = false; } return value; } }; public static final Argument String = new Argument("String", "Example") { - @Override public String parse(String in) { + @Override + public String parse(String in) { return in; } }; public static final Argument PlayerName = - new Argument("PlayerName", "") { - @Override public String parse(String in) { - return in.length() <= 16 ? in : null; - } - }; + new Argument("PlayerName", "") { + @Override + public String parse(String in) { + return in.length() <= 16 ? in : null; + } + }; public static final Argument PlotID = - new Argument("PlotID", PlotId.of(-6, 3)) { - @Override public PlotId parse(String in) { - return PlotId.fromString(in); - } - }; + new Argument("PlotID", PlotId.of(-6, 3)) { + @Override + public PlotId parse(String in) { + return PlotId.fromString(in); + } + }; private final String name; private final T example; @@ -79,7 +84,8 @@ public abstract class Argument { public abstract T parse(String in); - @Override public final String toString() { + @Override + public final String toString() { return this.getName(); } @@ -90,4 +96,5 @@ public abstract class Argument { public final T getExample() { return this.example; } + } diff --git a/Core/src/main/java/com/plotsquared/core/command/Auto.java b/Core/src/main/java/com/plotsquared/core/command/Auto.java index 9ffded70b..c6a17007d 100644 --- a/Core/src/main/java/com/plotsquared/core/command/Auto.java +++ b/Core/src/main/java/com/plotsquared/core/command/Auto.java @@ -52,20 +52,20 @@ import com.plotsquared.core.util.task.AutoClaimFinishTask; import com.plotsquared.core.util.task.RunnableVal; import com.plotsquared.core.util.task.TaskManager; import net.kyori.adventure.text.minimessage.Template; +import org.checkerframework.checker.nullness.qual.NonNull; +import org.checkerframework.checker.nullness.qual.Nullable; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; import java.util.Collections; import java.util.Iterator; import java.util.List; import java.util.stream.Collectors; @CommandDeclaration(command = "auto", - permission = "plots.auto", - category = CommandCategory.CLAIMING, - requiredType = RequiredType.NONE, - aliases = "a", - usage = "/plot auto [length, width]") + permission = "plots.auto", + category = CommandCategory.CLAIMING, + requiredType = RequiredType.NONE, + aliases = "a", + usage = "/plot auto [length, width]") public class Auto extends SubCommand { private final PlotAreaManager plotAreaManager; @@ -73,10 +73,13 @@ public class Auto extends SubCommand { private final EconHandler econHandler; private final ServicePipeline servicePipeline; - @Inject public Auto(@Nonnull final PlotAreaManager plotAreaManager, - @Nonnull final EventDispatcher eventDispatcher, - @Nonnull final EconHandler econHandler, - @Nonnull final ServicePipeline servicePipeline) { + @Inject + public Auto( + final @NonNull PlotAreaManager plotAreaManager, + final @NonNull EventDispatcher eventDispatcher, + final @NonNull EconHandler econHandler, + final @NonNull ServicePipeline servicePipeline + ) { this.plotAreaManager = plotAreaManager; this.eventDispatcher = eventDispatcher; this.econHandler = econHandler; @@ -84,14 +87,18 @@ public class Auto extends SubCommand { this.servicePipeline.registerServiceType(TypeToken.of(AutoService.class), new AutoService.DefaultAutoService()); final AutoService.MultiPlotService multiPlotService = new AutoService.MultiPlotService(); this.servicePipeline.registerServiceImplementation(AutoService.class, multiPlotService, - Collections.singletonList(multiPlotService)); + Collections.singletonList(multiPlotService) + ); final AutoService.SinglePlotService singlePlotService = new AutoService.SinglePlotService(); this.servicePipeline.registerServiceImplementation(AutoService.class, singlePlotService, - Collections.singletonList(singlePlotService)); + Collections.singletonList(singlePlotService) + ); } - public static boolean checkAllowedPlots(PlotPlayer player, PlotArea plotarea, - @Nullable Integer allowedPlots, int sizeX, int sizeZ) { + public static boolean checkAllowedPlots( + PlotPlayer player, PlotArea plotarea, + @Nullable Integer allowedPlots, int sizeX, int sizeZ + ) { if (allowedPlots == null) { allowedPlots = player.getAllowedPlots(); } @@ -104,16 +111,20 @@ public class Auto extends SubCommand { int diff = allowedPlots - currentPlots; if (diff - sizeX * sizeZ < 0) { try (final MetaDataAccess metaDataAccess = player.accessPersistentMetaData( - PlayerMetaDataKeys.PERSISTENT_GRANTED_PLOTS)) { + PlayerMetaDataKeys.PERSISTENT_GRANTED_PLOTS)) { if (metaDataAccess.isPresent()) { int grantedPlots = metaDataAccess.get().orElse(0); if (diff < 0 && grantedPlots < sizeX * sizeZ) { - player.sendMessage(TranslatableCaption.of("permission.cant_claim_more_plots"), - Template.of("amount", String.valueOf(diff + grantedPlots))); + player.sendMessage( + TranslatableCaption.of("permission.cant_claim_more_plots"), + Template.of("amount", String.valueOf(diff + grantedPlots)) + ); return false; } else if (diff >= 0 && grantedPlots + diff < sizeX * sizeZ) { - player.sendMessage(TranslatableCaption.of("permission.cant_claim_more_plots"), - Template.of("amount", String.valueOf(diff + grantedPlots))); + player.sendMessage( + TranslatableCaption.of("permission.cant_claim_more_plots"), + Template.of("amount", String.valueOf(diff + grantedPlots)) + ); return false; } else { int left = grantedPlots + diff < 0 ? 0 : diff - sizeX * sizeZ; @@ -122,13 +133,17 @@ public class Auto extends SubCommand { } else { metaDataAccess.set(left); } - player.sendMessage(TranslatableCaption.of("economy.removed_granted_plot"), - Template.of("usedGrants", String.valueOf(grantedPlots - left)), - Template.of("remainingGrants", String.valueOf(left))); + player.sendMessage( + TranslatableCaption.of("economy.removed_granted_plot"), + Template.of("usedGrants", String.valueOf(grantedPlots - left)), + Template.of("remainingGrants", String.valueOf(left)) + ); } } else { - player.sendMessage(TranslatableCaption.of("permission.cant_claim_more_plots"), - Template.of("amount", "0")); + player.sendMessage( + TranslatableCaption.of("permission.cant_claim_more_plots"), + Template.of("amount", "0") + ); return false; } } @@ -136,10 +151,12 @@ public class Auto extends SubCommand { return true; } - private void claimSingle(@Nonnull final PlotPlayer player, @Nonnull final Plot plot, - @Nonnull final PlotArea plotArea, @Nullable final String schematic) { + private void claimSingle( + final @NonNull PlotPlayer player, final @NonNull Plot plot, + final @NonNull PlotArea plotArea, final @Nullable String schematic + ) { try (final MetaDataAccess metaDataAccess = - player.accessTemporaryMetaData(PlayerMetaDataKeys.TEMPORARY_AUTO)) { + player.accessTemporaryMetaData(PlayerMetaDataKeys.TEMPORARY_AUTO)) { metaDataAccess.set(true); } plot.setOwnerAbs(player.getUUID()); @@ -149,11 +166,13 @@ public class Auto extends SubCommand { this.value = plot; } - @Override public void run(final Plot plot) { + @Override + public void run(final Plot plot) { try { TaskManager.getPlatformImplementation().sync( - new AutoClaimFinishTask(player, plot, plotArea, schematic, - PlotSquared.get().getEventDispatcher())); + new AutoClaimFinishTask(player, plot, plotArea, schematic, + PlotSquared.get().getEventDispatcher() + )); } catch (final Exception e) { e.printStackTrace(); } @@ -164,12 +183,13 @@ public class Auto extends SubCommand { } - @Override public boolean onCommand(final PlotPlayer player, String[] args) { + @Override + public boolean onCommand(final PlotPlayer player, String[] args) { PlotArea plotarea = player.getApplicablePlotArea(); if (plotarea == null) { final PermissionHandler permissionHandler = PlotSquared.platform().permissionHandler(); if (permissionHandler.hasCapability( - PermissionHandler.PermissionHandlerCapability.PER_WORLD_PERMISSIONS)) { + PermissionHandler.PermissionHandlerCapability.PER_WORLD_PERMISSIONS)) { for (final PlotArea area : this.plotAreaManager.getAllPlotAreas()) { if (player.hasPermission(area.getWorldName(), "plots.auto")) { if (plotarea != null) { @@ -228,11 +248,12 @@ public class Auto extends SubCommand { } } PlayerAutoPlotEvent event = this.eventDispatcher - .callAuto(player, plotarea, schematic, size_x, size_z); + .callAuto(player, plotarea, schematic, size_x, size_z); if (event.getEventResult() == Result.DENY) { player.sendMessage( TranslatableCaption.of("events.event_denied"), - Template.of("value", "Auto claim")); + Template.of("value", "Auto claim") + ); return true; } boolean force = event.getEventResult() == Result.FORCE; @@ -240,19 +261,24 @@ public class Auto extends SubCommand { size_z = event.getSize_z(); schematic = event.getSchematic(); if (!force && mega && !Permissions.hasPermission(player, Permission.PERMISSION_AUTO_MEGA)) { - player.sendMessage(TranslatableCaption.of("permission.no_permission"), - Template.of("node", String.valueOf(Permission.PERMISSION_AUTO_MEGA))); + player.sendMessage( + TranslatableCaption.of("permission.no_permission"), + Template.of("node", String.valueOf(Permission.PERMISSION_AUTO_MEGA)) + ); } if (!force && size_x * size_z > Settings.Claim.MAX_AUTO_AREA) { - player.sendMessage(TranslatableCaption.of("permission.cant_claim_more_plots_num"), - Template.of("amount", String.valueOf(Settings.Claim.MAX_AUTO_AREA))); + player.sendMessage( + TranslatableCaption.of("permission.cant_claim_more_plots_num"), + Template.of("amount", String.valueOf(Settings.Claim.MAX_AUTO_AREA)) + ); return false; } final int allowed_plots = player.getAllowedPlots(); try (final MetaDataAccess metaDataAccess = - player.accessTemporaryMetaData(PlayerMetaDataKeys.TEMPORARY_AUTO)) { + player.accessTemporaryMetaData(PlayerMetaDataKeys.TEMPORARY_AUTO)) { if (!force && (metaDataAccess.get().orElse(false) || !checkAllowedPlots(player, - plotarea, allowed_plots, size_x, size_z))) { + plotarea, allowed_plots, size_x, size_z + ))) { return false; } } @@ -266,8 +292,11 @@ public class Auto extends SubCommand { ); return true; } - if (!force && !Permissions.hasPermission(player, Permission.PERMISSION_CLAIM_SCHEMATIC.format(schematic)) && !Permissions - .hasPermission(player, "plots.admin.command.schematic")) { + if (!force && !Permissions.hasPermission( + player, + Permission.PERMISSION_CLAIM_SCHEMATIC.format(schematic) + ) && !Permissions + .hasPermission(player, "plots.admin.command.schematic")) { player.sendMessage( TranslatableCaption.of("permission.no_permission"), Template.of("node", "plots.claim.%s0") @@ -278,8 +307,8 @@ public class Auto extends SubCommand { if (this.econHandler != null && plotarea.useEconomy()) { PlotExpression costExp = plotarea.getPrices().get("claim"); double cost = costExp.evaluate(Settings.Limit.GLOBAL ? - player.getPlotCount() : - player.getPlotCount(plotarea.getWorldName())); + player.getPlotCount() : + player.getPlotCount(plotarea.getWorldName())); cost = (size_x * size_z) * cost; if (cost > 0d) { if (!force && this.econHandler.getMoney(player) < cost) { @@ -299,9 +328,9 @@ public class Auto extends SubCommand { } final List plots = this.servicePipeline - .pump(new AutoService.AutoQuery(player, null, size_x, size_z, plotarea)) - .through(AutoService.class) - .getResult(); + .pump(new AutoService.AutoQuery(player, null, size_x, size_z, plotarea)) + .through(AutoService.class) + .getResult(); if (plots.isEmpty()) { player.sendMessage(TranslatableCaption.of("errors.no_free_plots")); @@ -313,12 +342,14 @@ public class Auto extends SubCommand { while (plotIterator.hasNext()) { plotIterator.next().claim(player, !plotIterator.hasNext(), null); } - final PlotAutoMergeEvent mergeEvent = this.eventDispatcher.callAutoMerge(plots.get(0), - plots.stream().map(Plot::getId).collect(Collectors.toList())); + final PlotAutoMergeEvent mergeEvent = this.eventDispatcher.callAutoMerge( + plots.get(0), + plots.stream().map(Plot::getId).collect(Collectors.toList()) + ); if (!force && mergeEvent.getEventResult() == Result.DENY) { player.sendMessage( - TranslatableCaption.of("events.event_denied"), - Template.of("value", "Auto merge") + TranslatableCaption.of("events.event_denied"), + Template.of("value", "Auto merge") ); return false; } @@ -326,4 +357,5 @@ public class Auto extends SubCommand { } return true; } + } diff --git a/Core/src/main/java/com/plotsquared/core/command/Backup.java b/Core/src/main/java/com/plotsquared/core/command/Backup.java index 508a6fe83..139a22916 100644 --- a/Core/src/main/java/com/plotsquared/core/command/Backup.java +++ b/Core/src/main/java/com/plotsquared/core/command/Backup.java @@ -38,8 +38,8 @@ import com.plotsquared.core.util.Permissions; import com.plotsquared.core.util.task.RunnableVal2; import com.plotsquared.core.util.task.RunnableVal3; import net.kyori.adventure.text.minimessage.Template; +import org.checkerframework.checker.nullness.qual.NonNull; -import javax.annotation.Nonnull; import java.nio.file.Files; import java.time.Instant; import java.time.ZoneId; @@ -57,15 +57,16 @@ import java.util.stream.IntStream; import java.util.stream.Stream; @CommandDeclaration(command = "backup", - usage = "/plot backup ", - category = CommandCategory.SETTINGS, - requiredType = RequiredType.PLAYER, - permission = "plots.backup") + usage = "/plot backup ", + category = CommandCategory.SETTINGS, + requiredType = RequiredType.PLAYER, + permission = "plots.backup") public final class Backup extends Command { private final BackupManager backupManager; - @Inject public Backup(@Nonnull final BackupManager backupManager) { + @Inject + public Backup(final @NonNull BackupManager backupManager) { super(MainCommand.getInstance(), true); this.backupManager = backupManager; } @@ -79,22 +80,25 @@ public final class Backup extends Command { } @Override - public CompletableFuture execute(PlotPlayer player, String[] args, - RunnableVal3 confirm, - RunnableVal2 whenDone) throws CommandException { + public CompletableFuture execute( + PlotPlayer player, String[] args, + RunnableVal3 confirm, + RunnableVal2 whenDone + ) throws CommandException { if (args.length == 0 || !Arrays.asList("save", "list", "load") - .contains(args[0].toLowerCase(Locale.ENGLISH))) { + .contains(args[0].toLowerCase(Locale.ENGLISH))) { return CompletableFuture.completedFuture(sendMessage(player)); } return super.execute(player, args, confirm, whenDone); } - @Override public Collection tab(PlotPlayer player, String[] args, boolean space) { + @Override + public Collection tab(PlotPlayer player, String[] args, boolean space) { if (args.length == 1) { return Stream.of("save", "list", "load") - .filter(value -> value.startsWith(args[0].toLowerCase(Locale.ENGLISH))) - .map(value -> new Command(null, false, value, "", RequiredType.NONE, null) { - }).collect(Collectors.toList()); + .filter(value -> value.startsWith(args[0].toLowerCase(Locale.ENGLISH))) + .map(value -> new Command(null, false, value, "", RequiredType.NONE, null) { + }).collect(Collectors.toList()); } else if (args[0].equalsIgnoreCase("load")) { final Plot plot = player.getCurrentPlot(); @@ -102,17 +106,18 @@ public final class Backup extends Command { final BackupProfile backupProfile = Objects.requireNonNull(this.backupManager.getProfile(plot)); if (backupProfile instanceof PlayerBackupProfile) { final CompletableFuture> backupList = - backupProfile.listBackups(); + backupProfile.listBackups(); if (backupList.isDone()) { final List backups = - backupList.getNow(new ArrayList<>()); + backupList.getNow(new ArrayList<>()); if (backups.isEmpty()) { return new ArrayList<>(); } return IntStream.range(1, 1 + backups.size()).mapToObj( - i -> new Command(null, false, Integer.toString(i), "", - RequiredType.NONE, null) { - }).collect(Collectors.toList()); + i -> new Command(null, false, Integer.toString(i), "", + RequiredType.NONE, null + ) { + }).collect(Collectors.toList()); } } @@ -122,13 +127,15 @@ public final class Backup extends Command { } @CommandDeclaration(command = "save", - usage = "/plot backup save", - category = CommandCategory.SETTINGS, - requiredType = RequiredType.PLAYER, - permission = "plots.backup.save") - public void save(final Command command, final PlotPlayer player, final String[] args, - final RunnableVal3 confirm, - final RunnableVal2 whenDone) { + usage = "/plot backup save", + category = CommandCategory.SETTINGS, + requiredType = RequiredType.PLAYER, + permission = "plots.backup.save") + public void save( + final Command command, final PlotPlayer player, final String[] args, + final RunnableVal3 confirm, + final RunnableVal2 whenDone + ) { final Plot plot = player.getCurrentPlot(); if (plot == null) { player.sendMessage(TranslatableCaption.of("errors.not_in_plot")); @@ -145,7 +152,7 @@ public final class Backup extends Command { Template.of("plot", "generic.generic_merged") ); } else if (!plot.isOwner(player.getUUID()) && !Permissions - .hasPermission(player, Permission.PERMISSION_ADMIN_BACKUP_OTHER)) { + .hasPermission(player, Permission.PERMISSION_ADMIN_BACKUP_OTHER)) { player.sendMessage( TranslatableCaption.of("permission.no_permission"), Template.of("node", String.valueOf(Permission.PERMISSION_ADMIN_BACKUP_OTHER)) @@ -174,13 +181,15 @@ public final class Backup extends Command { } @CommandDeclaration(command = "list", - usage = "/plot backup list", - category = CommandCategory.SETTINGS, - requiredType = RequiredType.PLAYER, - permission = "plots.backup.list") - public void list(final Command command, final PlotPlayer player, final String[] args, - final RunnableVal3 confirm, - final RunnableVal2 whenDone) { + usage = "/plot backup list", + category = CommandCategory.SETTINGS, + requiredType = RequiredType.PLAYER, + permission = "plots.backup.list") + public void list( + final Command command, final PlotPlayer player, final String[] args, + final RunnableVal3 confirm, + final RunnableVal2 whenDone + ) { final Plot plot = player.getCurrentPlot(); if (plot == null) { player.sendMessage(TranslatableCaption.of("errors.not_in_plot")); @@ -195,7 +204,7 @@ public final class Backup extends Command { Template.of("plot", "generic.generic_merged") ); } else if (!plot.isOwner(player.getUUID()) && !Permissions - .hasPermission(player, Permission.PERMISSION_ADMIN_BACKUP_OTHER)) { + .hasPermission(player, Permission.PERMISSION_ADMIN_BACKUP_OTHER)) { player.sendMessage( TranslatableCaption.of("permission.no_permission"), Template.of("node", String.valueOf(Permission.PERMISSION_ADMIN_BACKUP_OTHER)) @@ -227,7 +236,8 @@ public final class Backup extends Command { Template.of("number", Integer.toString(i + 1)), Template.of("value", DateTimeFormatter.RFC_1123_DATE_TIME.format(ZonedDateTime.ofInstant( Instant.ofEpochMilli(backups.get(i).getCreationTime()), - ZoneId.systemDefault()))) + ZoneId.systemDefault() + ))) ); } } catch (final Exception e) { @@ -240,13 +250,15 @@ public final class Backup extends Command { } @CommandDeclaration(command = "load", - usage = "/plot backup load <#>", - category = CommandCategory.SETTINGS, - requiredType = RequiredType.PLAYER, - permission = "plots.backup.load") - public void load(final Command command, final PlotPlayer player, final String[] args, - final RunnableVal3 confirm, - final RunnableVal2 whenDone) { + usage = "/plot backup load <#>", + category = CommandCategory.SETTINGS, + requiredType = RequiredType.PLAYER, + permission = "plots.backup.load") + public void load( + final Command command, final PlotPlayer player, final String[] args, + final RunnableVal3 confirm, + final RunnableVal2 whenDone + ) { final Plot plot = player.getCurrentPlot(); if (plot == null) { player.sendMessage(TranslatableCaption.of("errors.not_in_plot")); @@ -265,7 +277,7 @@ public final class Backup extends Command { Template.of("plot", "generic.generic_merged") ); } else if (!plot.isOwner(player.getUUID()) && !Permissions - .hasPermission(player, Permission.PERMISSION_ADMIN_BACKUP_OTHER)) { + .hasPermission(player, Permission.PERMISSION_ADMIN_BACKUP_OTHER)) { player.sendMessage( TranslatableCaption.of("permission.no_permission"), Template.of("node", String.valueOf(Permission.PERMISSION_ADMIN_BACKUP_OTHER)) @@ -308,26 +320,27 @@ public final class Backup extends Command { ); } else { final com.plotsquared.core.backup.Backup backup = - backups.get(number - 1); + backups.get(number - 1); if (backup == null || backup.getFile() == null || !Files - .exists(backup.getFile())) { + .exists(backup.getFile())) { player.sendMessage( TranslatableCaption.of("backup_impossible"), Template.of("plot", "generic.generic_invalid_choice") ); } else { CmdConfirm.addPending(player, "/plot backup load " + number, - () -> backupProfile.restoreBackup(backup, player) - .whenComplete((n, error) -> { - if (error != null) { - player.sendMessage( - TranslatableCaption.of("backups.backup_load_failure"), - Template.of("reason", error.getMessage()) - ); - } else { - player.sendMessage(TranslatableCaption.of("backups.backup_load_success")); - } - })); + () -> backupProfile.restoreBackup(backup, player) + .whenComplete((n, error) -> { + if (error != null) { + player.sendMessage( + TranslatableCaption.of("backups.backup_load_failure"), + Template.of("reason", error.getMessage()) + ); + } else { + player.sendMessage(TranslatableCaption.of("backups.backup_load_success")); + } + }) + ); } } } diff --git a/Core/src/main/java/com/plotsquared/core/command/Biome.java b/Core/src/main/java/com/plotsquared/core/command/Biome.java index 342301bfb..3740e6e4b 100644 --- a/Core/src/main/java/com/plotsquared/core/command/Biome.java +++ b/Core/src/main/java/com/plotsquared/core/command/Biome.java @@ -39,26 +39,32 @@ import java.util.Locale; import java.util.stream.Collectors; @CommandDeclaration(command = "setbiome", - permission = "plots.set.biome", - usage = "/plot biome [biome]", - aliases = {"biome", "sb", "setb", "b"}, - category = CommandCategory.APPEARANCE, - requiredType = RequiredType.NONE) + permission = "plots.set.biome", + usage = "/plot biome [biome]", + aliases = {"biome", "sb", "setb", "b"}, + category = CommandCategory.APPEARANCE, + requiredType = RequiredType.NONE) public class Biome extends SetCommand { - @Override public boolean set(final PlotPlayer player, final Plot plot, final String value) { + @Override + public boolean set(final PlotPlayer player, final Plot plot, final String value) { BiomeType biome = null; try { biome = BiomeTypes.get(value.toLowerCase()); } catch (final Exception ignore) { } if (biome == null) { - String biomes = StringMan.join(BiomeType.REGISTRY.values(), - MINI_MESSAGE.serialize(MINI_MESSAGE.parse(TranslatableCaption.of("blocklist.block_list_separator").getComponent(player)))); + String biomes = StringMan.join( + BiomeType.REGISTRY.values(), + MINI_MESSAGE.serialize(MINI_MESSAGE.parse(TranslatableCaption + .of("blocklist.block_list_separator") + .getComponent(player))) + ); player.sendMessage(TranslatableCaption.of("biome.need_biome")); player.sendMessage( TranslatableCaption.of("commandconfig.subcommand_set_options_header"), - Template.of("values", biomes)); + Template.of("values", biomes) + ); return false; } if (plot.getRunning() > 0) { @@ -83,10 +89,10 @@ public class Biome extends SetCommand { @Override public Collection tab(final PlotPlayer player, final String[] args, final boolean space) { return SuggestionHelper.getNamespacedRegistrySuggestions(BiomeType.REGISTRY, args[0]) - .map(value -> value.toLowerCase(Locale.ENGLISH).replace("minecraft:", "")) - .filter(value -> value.startsWith(args[0].toLowerCase(Locale.ENGLISH))) - .map(value -> new Command(null, false, value, "", RequiredType.NONE, null) { - }).collect(Collectors.toList()); + .map(value -> value.toLowerCase(Locale.ENGLISH).replace("minecraft:", "")) + .filter(value -> value.startsWith(args[0].toLowerCase(Locale.ENGLISH))) + .map(value -> new Command(null, false, value, "", RequiredType.NONE, null) { + }).collect(Collectors.toList()); } } diff --git a/Core/src/main/java/com/plotsquared/core/command/Buy.java b/Core/src/main/java/com/plotsquared/core/command/Buy.java index ff7c0080e..3bc1efc8b 100644 --- a/Core/src/main/java/com/plotsquared/core/command/Buy.java +++ b/Core/src/main/java/com/plotsquared/core/command/Buy.java @@ -40,32 +40,37 @@ import com.plotsquared.core.util.EventDispatcher; import com.plotsquared.core.util.task.RunnableVal2; import com.plotsquared.core.util.task.RunnableVal3; import net.kyori.adventure.text.minimessage.Template; +import org.checkerframework.checker.nullness.qual.NonNull; -import javax.annotation.Nonnull; import java.util.Set; import java.util.concurrent.CompletableFuture; @CommandDeclaration(command = "buy", - usage = "/plot buy", - permission = "plots.buy", - category = CommandCategory.CLAIMING, - requiredType = RequiredType.NONE) + usage = "/plot buy", + permission = "plots.buy", + category = CommandCategory.CLAIMING, + requiredType = RequiredType.NONE) public class Buy extends Command { private final EventDispatcher eventDispatcher; private final EconHandler econHandler; - @Inject public Buy(@Nonnull final EventDispatcher eventDispatcher, - @Nonnull final EconHandler econHandler) { + @Inject + public Buy( + final @NonNull EventDispatcher eventDispatcher, + final @NonNull EconHandler econHandler + ) { super(MainCommand.getInstance(), true); this.eventDispatcher = eventDispatcher; this.econHandler = econHandler; } @Override - public CompletableFuture execute(final PlotPlayer player, String[] args, - RunnableVal3 confirm, - final RunnableVal2 whenDone) { + public CompletableFuture execute( + final PlotPlayer player, String[] args, + RunnableVal3 confirm, + final RunnableVal2 whenDone + ) { PlotArea area = player.getPlotAreaAbs(); check(area, TranslatableCaption.of("errors.not_in_plot_world")); @@ -83,17 +88,21 @@ public class Buy extends Command { checkTrue(plot.hasOwner(), TranslatableCaption.of("info.plot_unowned")); checkTrue(!plot.isOwner(player.getUUID()), TranslatableCaption.of("economy.cannot_buy_own")); Set plots = plot.getConnectedPlots(); - checkTrue(player.getPlotCount() + plots.size() <= player.getAllowedPlots(), - TranslatableCaption.of("permission.cant_claim_more_plots"), - Template.of("amount", String.valueOf(player.getAllowedPlots()))); + checkTrue( + player.getPlotCount() + plots.size() <= player.getAllowedPlots(), + TranslatableCaption.of("permission.cant_claim_more_plots"), + Template.of("amount", String.valueOf(player.getAllowedPlots())) + ); double price = plot.getFlag(PriceFlag.class); if (price <= 0) { throw new CommandException(TranslatableCaption.of("economy.not_for_sale")); } - checkTrue(this.econHandler.getMoney(player) >= price, + checkTrue( + this.econHandler.getMoney(player) >= price, TranslatableCaption.of("economy.cannot_afford_plot"), Template.of("money", this.econHandler.format(price)), - Template.of("balance", this.econHandler.format(this.econHandler.getMoney(player)))); + Template.of("balance", this.econHandler.format(this.econHandler.getMoney(player))) + ); this.econHandler.withdrawMoney(player, price); // Failure // Success @@ -128,4 +137,5 @@ public class Buy extends Command { }); return CompletableFuture.completedFuture(true); } + } diff --git a/Core/src/main/java/com/plotsquared/core/command/Caps.java b/Core/src/main/java/com/plotsquared/core/command/Caps.java index 25e912daf..32c856f6a 100644 --- a/Core/src/main/java/com/plotsquared/core/command/Caps.java +++ b/Core/src/main/java/com/plotsquared/core/command/Caps.java @@ -47,21 +47,23 @@ import static com.plotsquared.core.util.entity.EntityCategories.CAP_MONSTER; import static com.plotsquared.core.util.entity.EntityCategories.CAP_VEHICLE; @CommandDeclaration(command = "caps", - category = CommandCategory.INFO, - usage = "/plot caps") + category = CommandCategory.INFO, + usage = "/plot caps") public class Caps extends SubCommand { - @Override public boolean onCommand(final PlotPlayer player, final String[] args) { + @Override + public boolean onCommand(final PlotPlayer player, final String[] args) { final Plot plot = player.getCurrentPlot(); if (plot == null) { player.sendMessage(TranslatableCaption.of("errors.not_in_plot")); return false; } if (!plot.isAdded(player.getUUID()) && !Permissions - .hasPermission(player, Permission.PERMISSION_ADMIN_CAPS_OTHER)) { + .hasPermission(player, Permission.PERMISSION_ADMIN_CAPS_OTHER)) { player.sendMessage( TranslatableCaption.of("permission.no_permission"), - Template.of("node", String.valueOf(Permission.PERMISSION_ADMIN_CAPS_OTHER))); + Template.of("node", String.valueOf(Permission.PERMISSION_ADMIN_CAPS_OTHER)) + ); return false; } if (plot.getVolume() > Integer.MAX_VALUE) { @@ -79,9 +81,11 @@ public class Caps extends SubCommand { return true; } - private > void sendFormatted(final Plot plot, - final PlotPlayer player, final Class capFlag, final int[] countedEntities, - final String name, final int type) { + private > void sendFormatted( + final Plot plot, + final PlotPlayer player, final Class capFlag, final int[] countedEntities, + final String name, final int type + ) { final int current = countedEntities[type]; final int max = plot.getFlag(capFlag); final String percentage = String.format("%.1f", 100 * ((float) current / max)); @@ -90,6 +94,8 @@ public class Caps extends SubCommand { Template.of("cap", name), Template.of("current", String.valueOf(current)), Template.of("limit", String.valueOf(max)), - Template.of("percentage", percentage)); + Template.of("percentage", percentage) + ); } + } diff --git a/Core/src/main/java/com/plotsquared/core/command/Chat.java b/Core/src/main/java/com/plotsquared/core/command/Chat.java index 1b8c316fc..01d27d440 100644 --- a/Core/src/main/java/com/plotsquared/core/command/Chat.java +++ b/Core/src/main/java/com/plotsquared/core/command/Chat.java @@ -29,13 +29,14 @@ import com.plotsquared.core.configuration.caption.TranslatableCaption; import com.plotsquared.core.player.PlotPlayer; @CommandDeclaration(command = "chat", - usage = "/plot chat", - permission = "plots.chat", - category = CommandCategory.CHAT, - requiredType = RequiredType.PLAYER) + usage = "/plot chat", + permission = "plots.chat", + category = CommandCategory.CHAT, + requiredType = RequiredType.PLAYER) public class Chat extends SubCommand { - @Override public boolean onCommand(PlotPlayer player, String[] args) { + @Override + public boolean onCommand(PlotPlayer player, String[] args) { if (player.getPlotAreaAbs().isForcingPlotChat()) { player.sendMessage(TranslatableCaption.of("chat.plot_chat_forced")); return true; @@ -43,4 +44,5 @@ public class Chat extends SubCommand { MainCommand.getInstance().toggle.chat(this, player, args, null, null); return true; } + } diff --git a/Core/src/main/java/com/plotsquared/core/command/Claim.java b/Core/src/main/java/com/plotsquared/core/command/Claim.java index 5948dd748..b294de280 100644 --- a/Core/src/main/java/com/plotsquared/core/command/Claim.java +++ b/Core/src/main/java/com/plotsquared/core/command/Claim.java @@ -46,11 +46,10 @@ import com.plotsquared.core.util.Permissions; import com.plotsquared.core.util.PlotExpression; import com.plotsquared.core.util.task.TaskManager; import net.kyori.adventure.text.minimessage.Template; +import org.checkerframework.checker.nullness.qual.NonNull; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import javax.annotation.Nonnull; - @CommandDeclaration( command = "claim", aliases = "c", @@ -60,18 +59,22 @@ import javax.annotation.Nonnull; public class Claim extends SubCommand { private static final Logger logger = - LoggerFactory.getLogger("P2/" + Claim.class.getSimpleName()); + LoggerFactory.getLogger("P2/" + Claim.class.getSimpleName()); private final EventDispatcher eventDispatcher; private final EconHandler econHandler; - @Inject public Claim(@Nonnull final EventDispatcher eventDispatcher, - @Nonnull final EconHandler econHandler) { + @Inject + public Claim( + final @NonNull EventDispatcher eventDispatcher, + final @NonNull EconHandler econHandler + ) { this.eventDispatcher = eventDispatcher; this.econHandler = econHandler; } - @Override public boolean onCommand(final PlotPlayer player, String[] args) { + @Override + public boolean onCommand(final PlotPlayer player, String[] args) { String schematic = null; if (args.length >= 1) { schematic = args[0]; @@ -87,13 +90,14 @@ public class Claim extends SubCommand { if (event.getEventResult() == Result.DENY) { player.sendMessage( TranslatableCaption.of("events.event_denied"), - Template.of("value", "Claim")); + Template.of("value", "Claim") + ); return true; } boolean force = event.getEventResult() == Result.FORCE; int currentPlots = Settings.Limit.GLOBAL ? - player.getPlotCount() : - player.getPlotCount(location.getWorldName()); + player.getPlotCount() : + player.getPlotCount(location.getWorldName()); final PlotArea area = plot.getArea(); @@ -104,12 +108,16 @@ public class Claim extends SubCommand { grants = metaDataAccess.get().orElse(0); if (grants <= 0) { metaDataAccess.remove(); - player.sendMessage(TranslatableCaption.of("permission.cant_claim_more_plots"), - Template.of("amount", String.valueOf(grants))); + player.sendMessage( + TranslatableCaption.of("permission.cant_claim_more_plots"), + Template.of("amount", String.valueOf(grants)) + ); } } else { - player.sendMessage(TranslatableCaption.of("permission.cant_claim_more_plots"), - Template.of("amount", String.valueOf(grants))); + player.sendMessage( + TranslatableCaption.of("permission.cant_claim_more_plots"), + Template.of("amount", String.valueOf(grants)) + ); } } @@ -121,51 +129,54 @@ public class Claim extends SubCommand { if (area.isSchematicClaimSpecify()) { if (!area.hasSchematic(schematic)) { player.sendMessage( - TranslatableCaption.of("schematics.schematic_invalid_named"), - Template.of("schemname", schematic), - Template.of("reason", "non-existant") - ); - } - if (!Permissions.hasPermission(player, Permission.PERMISSION_CLAIM_SCHEMATIC - .format(schematic)) && !Permissions.hasPermission(player, "plots.admin.command.schematic") && !force) { + TranslatableCaption.of("schematics.schematic_invalid_named"), + Template.of("schemname", schematic), + Template.of("reason", "non-existant") + ); + } + if (!Permissions.hasPermission(player, Permission.PERMISSION_CLAIM_SCHEMATIC + .format(schematic)) && !Permissions.hasPermission( + player, + "plots.admin.command.schematic" + ) && !force) { player.sendMessage( - TranslatableCaption.of("permission.no_schematic_permission"), - Template.of("value", schematic) - ); + TranslatableCaption.of("permission.no_schematic_permission"), + Template.of("value", schematic) + ); + } } } - } - if (this.econHandler.isEnabled(area) && !force) { - PlotExpression costExr = area.getPrices().get("claim"); - double cost = costExr.evaluate(currentPlots); - if (cost > 0d) { - if (this.econHandler.getMoney(player) < cost) { + if (this.econHandler.isEnabled(area) && !force) { + PlotExpression costExr = area.getPrices().get("claim"); + double cost = costExr.evaluate(currentPlots); + if (cost > 0d) { + if (this.econHandler.getMoney(player) < cost) { + player.sendMessage( + TranslatableCaption.of("economy.cannot_afford_plot"), + Template.of("money", this.econHandler.format(cost)), + Template.of("balance", this.econHandler.format(this.econHandler.getMoney(player))) + ); + return false; + } + this.econHandler.withdrawMoney(player, cost); player.sendMessage( - TranslatableCaption.of("economy.cannot_afford_plot"), + TranslatableCaption.of("economy.removed_balance"), Template.of("money", this.econHandler.format(cost)), Template.of("balance", this.econHandler.format(this.econHandler.getMoney(player))) ); - return false; } - this.econHandler.withdrawMoney(player, cost); - player.sendMessage( - TranslatableCaption.of("economy.removed_balance"), - Template.of("money", this.econHandler.format(cost)), - Template.of("balance", this.econHandler.format(this.econHandler.getMoney(player))) - ); } - } - if (grants > 0) { - if (grants == 1) { - metaDataAccess.remove(); + if (grants > 0) { + if (grants == 1) { + metaDataAccess.remove(); } else { metaDataAccess.set(grants - 1); } player.sendMessage( - TranslatableCaption.of("economy.removed_granted_plot"), - Template.of("usedGrants", String.valueOf((grants -1))), - Template.of("remainingGrants", String.valueOf(grants)) - ); + TranslatableCaption.of("economy.removed_granted_plot"), + Template.of("usedGrants", String.valueOf((grants - 1))), + Template.of("remainingGrants", String.valueOf(grants)) + ); } } int border = area.getBorder(); @@ -184,14 +195,20 @@ public class Claim extends SubCommand { plot.setOwnerAbs(null); } else if (area.isAutoMerge()) { PlotMergeEvent mergeEvent = Claim.this.eventDispatcher - .callMerge(plot, Direction.ALL, Integer.MAX_VALUE, player); + .callMerge(plot, Direction.ALL, Integer.MAX_VALUE, player); if (mergeEvent.getEventResult() == Result.DENY) { player.sendMessage( TranslatableCaption.of("events.event_denied"), Template.of("value", "Auto merge on claim") ); } else { - plot.getPlotModificationManager().autoMerge(mergeEvent.getDir(), mergeEvent.getMax(), player.getUUID(), player, true); + plot.getPlotModificationManager().autoMerge( + mergeEvent.getDir(), + mergeEvent.getMax(), + player.getUUID(), + player, + true + ); } } return null; @@ -206,4 +223,5 @@ public class Claim extends SubCommand { }); return true; } + } diff --git a/Core/src/main/java/com/plotsquared/core/command/Clear.java b/Core/src/main/java/com/plotsquared/core/command/Clear.java index 155f9e26f..f093d2d8a 100644 --- a/Core/src/main/java/com/plotsquared/core/command/Clear.java +++ b/Core/src/main/java/com/plotsquared/core/command/Clear.java @@ -42,34 +42,40 @@ import com.plotsquared.core.util.EventDispatcher; import com.plotsquared.core.util.Permissions; import com.plotsquared.core.util.task.RunnableVal2; import com.plotsquared.core.util.task.RunnableVal3; -import net.kyori.adventure.text.minimessage.Template; import com.plotsquared.core.util.task.TaskManager; -import javax.annotation.Nonnull; +import net.kyori.adventure.text.minimessage.Template; +import org.checkerframework.checker.nullness.qual.NonNull; + import java.util.concurrent.CompletableFuture; @CommandDeclaration(command = "clear", - requiredType = RequiredType.NONE, - permission = "plots.clear", - category = CommandCategory.APPEARANCE, - usage = "/plot clear", - aliases = "reset", - confirmation = true) + requiredType = RequiredType.NONE, + permission = "plots.clear", + category = CommandCategory.APPEARANCE, + usage = "/plot clear", + aliases = "reset", + confirmation = true) public class Clear extends Command { private final EventDispatcher eventDispatcher; private final GlobalBlockQueue blockQueue; - @Inject public Clear(@Nonnull final EventDispatcher eventDispatcher, - @Nonnull final GlobalBlockQueue blockQueue) { + @Inject + public Clear( + final @NonNull EventDispatcher eventDispatcher, + final @NonNull GlobalBlockQueue blockQueue + ) { super(MainCommand.getInstance(), true); this.eventDispatcher = eventDispatcher; this.blockQueue = blockQueue; } @Override - public CompletableFuture execute(final PlotPlayer player, String[] args, - RunnableVal3 confirm, - RunnableVal2 whenDone) throws CommandException { + public CompletableFuture execute( + final PlotPlayer player, String[] args, + RunnableVal3 confirm, + RunnableVal2 whenDone + ) throws CommandException { if (args.length != 0) { sendUsage(player); return CompletableFuture.completedFuture(false); @@ -79,7 +85,8 @@ public class Clear extends Command { if (eventResult == Result.DENY) { player.sendMessage( TranslatableCaption.of("events.event_denied"), - Template.of("value", "Clear")); + Template.of("value", "Clear") + ); return CompletableFuture.completedFuture(true); } if (plot.getVolume() > Integer.MAX_VALUE) { @@ -87,12 +94,14 @@ public class Clear extends Command { return CompletableFuture.completedFuture(true); } boolean force = eventResult == Result.FORCE; - checkTrue(force || plot.isOwner(player.getUUID()) || Permissions - .hasPermission(player, "plots.admin.command.clear"), - TranslatableCaption.of("permission.no_plot_perms")); + checkTrue( + force || plot.isOwner(player.getUUID()) || Permissions + .hasPermission(player, "plots.admin.command.clear"), + TranslatableCaption.of("permission.no_plot_perms") + ); checkTrue(plot.getRunning() == 0, TranslatableCaption.of("errors.wait_for_timer")); checkTrue(force || !Settings.Done.RESTRICT_BUILDING || !DoneFlag.isDone(plot) || Permissions - .hasPermission(player, "plots.continue"), TranslatableCaption.of("done.done_already_done")); + .hasPermission(player, "plots.continue"), TranslatableCaption.of("done.done_already_done")); confirm.run(this, () -> { if (Settings.Teleport.ON_CLEAR) { plot.teleportPlayer(player, TeleportCause.COMMAND, result -> { @@ -107,18 +116,18 @@ public class Clear extends Command { // If the state changes, then mark it as no longer done if (DoneFlag.isDone(plot)) { PlotFlag plotFlag = - plot.getFlagContainer().getFlag(DoneFlag.class); + plot.getFlagContainer().getFlag(DoneFlag.class); PlotFlagRemoveEvent event = this.eventDispatcher - .callFlagRemove(plotFlag, plot); + .callFlagRemove(plotFlag, plot); if (event.getEventResult() != Result.DENY) { plot.removeFlag(event.getFlag()); } } if (!plot.getFlag(AnalysisFlag.class).isEmpty()) { PlotFlag plotFlag = - plot.getFlagContainer().getFlag(AnalysisFlag.class); + plot.getFlagContainer().getFlag(AnalysisFlag.class); PlotFlagRemoveEvent event = this.eventDispatcher - .callFlagRemove(plotFlag, plot); + .callFlagRemove(plotFlag, plot); if (event.getEventResult() != Result.DENY) { plot.removeFlag(event.getFlag()); } @@ -139,4 +148,5 @@ public class Clear extends Command { }, null); return CompletableFuture.completedFuture(true); } + } diff --git a/Core/src/main/java/com/plotsquared/core/command/Cluster.java b/Core/src/main/java/com/plotsquared/core/command/Cluster.java index 616adb5a2..a9008244c 100644 --- a/Core/src/main/java/com/plotsquared/core/command/Cluster.java +++ b/Core/src/main/java/com/plotsquared/core/command/Cluster.java @@ -26,7 +26,6 @@ package com.plotsquared.core.command; import com.plotsquared.core.PlotSquared; -import com.plotsquared.core.permissions.Permission; import com.plotsquared.core.configuration.Settings; import com.plotsquared.core.configuration.caption.Caption; import com.plotsquared.core.configuration.caption.TranslatableCaption; @@ -34,6 +33,7 @@ import com.plotsquared.core.database.DBFunc; import com.plotsquared.core.events.TeleportCause; import com.plotsquared.core.location.BlockLoc; import com.plotsquared.core.location.Location; +import com.plotsquared.core.permissions.Permission; import com.plotsquared.core.player.PlotPlayer; import com.plotsquared.core.plot.Plot; import com.plotsquared.core.plot.PlotArea; @@ -55,13 +55,14 @@ import java.util.concurrent.TimeoutException; import java.util.stream.Collectors; @CommandDeclaration(command = "cluster", - aliases = "clusters", - category = CommandCategory.ADMINISTRATION, - requiredType = RequiredType.NONE, - permission = "plots.cluster") + aliases = "clusters", + category = CommandCategory.ADMINISTRATION, + requiredType = RequiredType.NONE, + permission = "plots.cluster") public class Cluster extends SubCommand { - @Override public boolean onCommand(PlotPlayer player, String[] args) { + @Override + public boolean onCommand(PlotPlayer player, String[] args) { // list, create, delete, resize, invite, kick, leave, helpers, tp, sethome if (args.length == 0) { @@ -146,8 +147,8 @@ public class Cluster extends SubCommand { return false; } int currentClusters = Settings.Limit.GLOBAL ? - player.getClusterCount() : - player.getPlotCount(player.getLocation().getWorldName()); + player.getClusterCount() : + player.getPlotCount(player.getLocation().getWorldName()); if (currentClusters >= player.getAllowedPlots()) { player.sendMessage(TranslatableCaption.of("permission.cant_claim_more_clusters")); } @@ -192,7 +193,7 @@ public class Cluster extends SubCommand { Set plots = area.getPlotSelectionOwned(pos1, pos2); if (!plots.isEmpty()) { if (!Permissions - .hasPermission(player, Permission.PERMISSION_CLUSTER_CREATE_OTHER)) { + .hasPermission(player, Permission.PERMISSION_CLUSTER_CREATE_OTHER)) { UUID uuid = player.getUUID(); for (Plot plot : plots) { if (!plot.isOwner(uuid)) { @@ -214,8 +215,9 @@ public class Cluster extends SubCommand { current = player.getPlayerClusterCount(player.getLocation().getWorldName()); } int allowed = Permissions - .hasPermissionRange(player, Permission.PERMISSION_CLUSTER_SIZE, - Settings.Limit.MAX_PLOTS); + .hasPermissionRange(player, Permission.PERMISSION_CLUSTER_SIZE, + Settings.Limit.MAX_PLOTS + ); if (current + cluster.getArea() > allowed) { player.sendMessage( TranslatableCaption.of("permission.no_permission"), @@ -280,10 +282,11 @@ public class Cluster extends SubCommand { } if (!cluster.owner.equals(player.getUUID())) { if (!Permissions - .hasPermission(player, Permission.PERMISSION_CLUSTER_DELETE_OTHER)) { + .hasPermission(player, Permission.PERMISSION_CLUSTER_DELETE_OTHER)) { player.sendMessage( TranslatableCaption.of("permission.no_permission"), - Template.of("node", String.valueOf(Permission.PERMISSION_CLUSTER_DELETE_OTHER))); + Template.of("node", String.valueOf(Permission.PERMISSION_CLUSTER_DELETE_OTHER)) + ); return false; } } @@ -296,7 +299,8 @@ public class Cluster extends SubCommand { if (!Permissions.hasPermission(player, Permission.PERMISSION_CLUSTER_RESIZE)) { player.sendMessage( TranslatableCaption.of("permission.no_permission"), - Template.of("node", String.valueOf(Permission.PERMISSION_CLUSTER_RESIZE))); + Template.of("node", String.valueOf(Permission.PERMISSION_CLUSTER_RESIZE)) + ); return false; } if (args.length != 3) { @@ -333,10 +337,11 @@ public class Cluster extends SubCommand { } if (!cluster.hasHelperRights(player.getUUID())) { if (!Permissions - .hasPermission(player, Permission.PERMISSION_CLUSTER_RESIZE_OTHER)) { + .hasPermission(player, Permission.PERMISSION_CLUSTER_RESIZE_OTHER)) { player.sendMessage( TranslatableCaption.of("permission.no_permission"), - Template.of("node", String.valueOf(Permission.PERMISSION_CLUSTER_RESIZE_OTHER))); + Template.of("node", String.valueOf(Permission.PERMISSION_CLUSTER_RESIZE_OTHER)) + ); return false; } } @@ -358,7 +363,7 @@ public class Cluster extends SubCommand { // Check expand / shrink if (!removed.isEmpty()) { if (!Permissions - .hasPermission(player, Permission.PERMISSION_CLUSTER_RESIZE_SHRINK)) { + .hasPermission(player, Permission.PERMISSION_CLUSTER_RESIZE_SHRINK)) { player.sendMessage( TranslatableCaption.of("permission.no_permission"), Template.of("node", String.valueOf(Permission.PERMISSION_CLUSTER_RESIZE_SHRINK)) @@ -369,7 +374,7 @@ public class Cluster extends SubCommand { newPlots.removeAll(existing); if (!newPlots.isEmpty()) { if (!Permissions - .hasPermission(player, Permission.PERMISSION_CLUSTER_RESIZE_EXPAND)) { + .hasPermission(player, Permission.PERMISSION_CLUSTER_RESIZE_EXPAND)) { player.sendMessage( TranslatableCaption.of("permission.no_permission"), Template.of("node", String.valueOf(Permission.PERMISSION_CLUSTER_RESIZE_EXPAND)) @@ -386,7 +391,8 @@ public class Cluster extends SubCommand { } current -= cluster.getArea() + (1 + pos2.getX() - pos1.getX()) * (1 + pos2.getY() - pos1.getY()); int allowed = Permissions.hasPermissionRange(player, Permission.PERMISSION_CLUSTER, - Settings.Limit.MAX_PLOTS); + Settings.Limit.MAX_PLOTS + ); if (current + cluster.getArea() > allowed) { player.sendMessage( TranslatableCaption.of("permission.no_permission"), @@ -428,7 +434,7 @@ public class Cluster extends SubCommand { } if (!cluster.hasHelperRights(player.getUUID())) { if (!Permissions - .hasPermission(player, Permission.PERMISSION_CLUSTER_INVITE_OTHER)) { + .hasPermission(player, Permission.PERMISSION_CLUSTER_INVITE_OTHER)) { player.sendMessage( TranslatableCaption.of("permission.no_permission"), Template.of("node", Permission.PERMISSION_CLUSTER_INVITE_OTHER.toString()) @@ -438,31 +444,31 @@ public class Cluster extends SubCommand { } PlotSquared.get().getImpromptuUUIDPipeline() - .getSingle(args[1], (uuid, throwable) -> { - if (throwable instanceof TimeoutException) { - player.sendMessage(TranslatableCaption.of("players.fetching_players_timeout")); - } else if (throwable != null) { - player.sendMessage( - TranslatableCaption.of("errors.invalid_player"), - Template.of("value", args[1]) - ); - } else { - if (!cluster.isAdded(uuid)) { - // add the user if not added - cluster.invited.add(uuid); - DBFunc.setInvited(cluster, uuid); - final PlotPlayer otherPlayer = - PlotSquared.platform().playerManager().getPlayerIfExists(uuid); - if (otherPlayer != null) { - player.sendMessage( - TranslatableCaption.of("cluster.cluster_invited"), - Template.of("cluster", cluster.getName()) - ); + .getSingle(args[1], (uuid, throwable) -> { + if (throwable instanceof TimeoutException) { + player.sendMessage(TranslatableCaption.of("players.fetching_players_timeout")); + } else if (throwable != null) { + player.sendMessage( + TranslatableCaption.of("errors.invalid_player"), + Template.of("value", args[1]) + ); + } else { + if (!cluster.isAdded(uuid)) { + // add the user if not added + cluster.invited.add(uuid); + DBFunc.setInvited(cluster, uuid); + final PlotPlayer otherPlayer = + PlotSquared.platform().playerManager().getPlayerIfExists(uuid); + if (otherPlayer != null) { + player.sendMessage( + TranslatableCaption.of("cluster.cluster_invited"), + Template.of("cluster", cluster.getName()) + ); + } } + player.sendMessage(TranslatableCaption.of("cluster.cluster_added_user")); } - player.sendMessage(TranslatableCaption.of("cluster.cluster_added_user")); - } - }); + }); return true; } case "k": @@ -493,7 +499,7 @@ public class Cluster extends SubCommand { } if (!cluster.hasHelperRights(player.getUUID())) { if (!Permissions - .hasPermission(player, Permission.PERMISSION_CLUSTER_KICK_OTHER)) { + .hasPermission(player, Permission.PERMISSION_CLUSTER_KICK_OTHER)) { player.sendMessage( TranslatableCaption.of("permission.no_permission"), Template.of("node", Permission.PERMISSION_CLUSTER_KICK_OTHER.toString()) @@ -503,49 +509,49 @@ public class Cluster extends SubCommand { } // check uuid PlotSquared.get().getImpromptuUUIDPipeline() - .getSingle(args[1], (uuid, throwable) -> { - if (throwable instanceof TimeoutException) { - player.sendMessage(TranslatableCaption.of("players.fetching_players_timeout")); - } else if (throwable != null) { - player.sendMessage( - TranslatableCaption.of("errors.invalid_player"), - Template.of("value", args[1]) - ); - } else { - // Can't kick if the player is yourself, the owner, or not added to the cluster - if (uuid.equals(player.getUUID()) || uuid.equals(cluster.owner) - || !cluster.isAdded(uuid)) { + .getSingle(args[1], (uuid, throwable) -> { + if (throwable instanceof TimeoutException) { + player.sendMessage(TranslatableCaption.of("players.fetching_players_timeout")); + } else if (throwable != null) { player.sendMessage( - TranslatableCaption.of("cluster.cannot_kick_player"), - Template.of("value", cluster.getName()) + TranslatableCaption.of("errors.invalid_player"), + Template.of("value", args[1]) ); } else { - if (cluster.helpers.contains(uuid)) { - cluster.helpers.remove(uuid); - DBFunc.removeHelper(cluster, uuid); - } - cluster.invited.remove(uuid); - DBFunc.removeInvited(cluster, uuid); - - final PlotPlayer player2 = - PlotSquared.platform().playerManager().getPlayerIfExists(uuid); - if (player2 != null) { + // Can't kick if the player is yourself, the owner, or not added to the cluster + if (uuid.equals(player.getUUID()) || uuid.equals(cluster.owner) + || !cluster.isAdded(uuid)) { player.sendMessage( - TranslatableCaption.of("cluster.cluster_removed"), - Template.of("cluster", cluster.getName()) + TranslatableCaption.of("cluster.cannot_kick_player"), + Template.of("value", cluster.getName()) ); - } - for (final Plot plot : PlotQuery.newQuery().inWorld(player2.getLocation() - .getWorldName()).ownedBy(uuid)) { - PlotCluster current = plot.getCluster(); - if (current != null && current.equals(cluster)) { - plot.unclaim(); + } else { + if (cluster.helpers.contains(uuid)) { + cluster.helpers.remove(uuid); + DBFunc.removeHelper(cluster, uuid); } + cluster.invited.remove(uuid); + DBFunc.removeInvited(cluster, uuid); + + final PlotPlayer player2 = + PlotSquared.platform().playerManager().getPlayerIfExists(uuid); + if (player2 != null) { + player.sendMessage( + TranslatableCaption.of("cluster.cluster_removed"), + Template.of("cluster", cluster.getName()) + ); + } + for (final Plot plot : PlotQuery.newQuery().inWorld(player2.getLocation() + .getWorldName()).ownedBy(uuid)) { + PlotCluster current = plot.getCluster(); + if (current != null && current.equals(cluster)) { + plot.unclaim(); + } + } + player.sendMessage(TranslatableCaption.of("cluster.cluster_kicked_user")); } - player.sendMessage(TranslatableCaption.of("cluster.cluster_kicked_user")); } - } - }); + }); return true; } case "quit": @@ -605,7 +611,7 @@ public class Cluster extends SubCommand { Template.of("cluster", cluster.getName()) ); for (final Plot plot : PlotQuery.newQuery().inWorld(player.getLocation().getWorldName()) - .ownedBy(uuid)) { + .ownedBy(uuid)) { PlotCluster current = plot.getCluster(); if (current != null && current.equals(cluster)) { plot.unclaim(); @@ -639,31 +645,31 @@ public class Cluster extends SubCommand { } PlotSquared.get().getImpromptuUUIDPipeline() - .getSingle(args[2], (uuid, throwable) -> { - if (throwable instanceof TimeoutException) { - player.sendMessage(TranslatableCaption.of("players.fetching_players_timeout")); - } else if (throwable != null) { - player.sendMessage( - TranslatableCaption.of("errors.invalid_player"), - Template.of("value", args[2]) - ); - } else { - if (args[1].equalsIgnoreCase("add")) { - cluster.helpers.add(uuid); - DBFunc.setHelper(cluster, uuid); - player.sendMessage(TranslatableCaption.of("cluster.cluster_added_helper")); - } else if (args[1].equalsIgnoreCase("remove")) { - cluster.helpers.remove(uuid); - DBFunc.removeHelper(cluster, uuid); - player.sendMessage(TranslatableCaption.of("cluster.cluster_removed_helper")); - } else { + .getSingle(args[2], (uuid, throwable) -> { + if (throwable instanceof TimeoutException) { + player.sendMessage(TranslatableCaption.of("players.fetching_players_timeout")); + } else if (throwable != null) { player.sendMessage( - TranslatableCaption.of("commandconfig.command_syntax"), - Template.of("value", "/plot cluster members ") + TranslatableCaption.of("errors.invalid_player"), + Template.of("value", args[2]) ); + } else { + if (args[1].equalsIgnoreCase("add")) { + cluster.helpers.add(uuid); + DBFunc.setHelper(cluster, uuid); + player.sendMessage(TranslatableCaption.of("cluster.cluster_added_helper")); + } else if (args[1].equalsIgnoreCase("remove")) { + cluster.helpers.remove(uuid); + DBFunc.removeHelper(cluster, uuid); + player.sendMessage(TranslatableCaption.of("cluster.cluster_removed_helper")); + } else { + player.sendMessage( + TranslatableCaption.of("commandconfig.command_syntax"), + Template.of("value", "/plot cluster members ") + ); + } } - } - }); + }); return true; } case "spawn": @@ -752,29 +758,36 @@ public class Cluster extends SubCommand { String id = cluster.toString(); PlotSquared.get().getImpromptuUUIDPipeline() - .getSingle(cluster.owner, (username, throwable) -> { - if (throwable instanceof TimeoutException) { - player.sendMessage(TranslatableCaption.of("players.fetching_players_timeout")); - } else { - final String owner; - if (username == null) { - owner = "unknown"; + .getSingle(cluster.owner, (username, throwable) -> { + if (throwable instanceof TimeoutException) { + player.sendMessage(TranslatableCaption.of("players.fetching_players_timeout")); } else { - owner = username; + final String owner; + if (username == null) { + owner = "unknown"; + } else { + owner = username; + } + String name = cluster.getName(); + String size = (cluster.getP2().getX() - cluster.getP1().getX() + 1) + "x" + ( + cluster.getP2().getY() - cluster.getP1().getY() + 1); + String rights = cluster.isAdded(player.getUUID()) + ""; + Caption message = TranslatableCaption.of("cluster.cluster_info"); + Template idTemplate = Template.of("id", id); + Template ownerTemplate = Template.of("owner", owner); + Template nameTemplate = Template.of("name", name); + Template sizeTemplate = Template.of("size", size); + Template rightsTemplate = Template.of("rights", rights); + player.sendMessage( + message, + idTemplate, + ownerTemplate, + nameTemplate, + sizeTemplate, + rightsTemplate + ); } - String name = cluster.getName(); - String size = (cluster.getP2().getX() - cluster.getP1().getX() + 1) + "x" + ( - cluster.getP2().getY() - cluster.getP1().getY() + 1); - String rights = cluster.isAdded(player.getUUID()) + ""; - Caption message = TranslatableCaption.of("cluster.cluster_info"); - Template idTemplate = Template.of("id", id); - Template ownerTemplate = Template.of("owner", owner); - Template nameTemplate = Template.of("name", name); - Template sizeTemplate = Template.of("size", size); - Template rightsTemplate = Template.of("rights", rights); - player.sendMessage(message, idTemplate, ownerTemplate, nameTemplate, sizeTemplate, rightsTemplate); - } - }); + }); return true; } case "sh": @@ -805,7 +818,7 @@ public class Cluster extends SubCommand { } if (!cluster.hasHelperRights(player.getUUID())) { if (!Permissions - .hasPermission(player, Permission.PERMISSION_CLUSTER_SETHOME_OTHER)) { + .hasPermission(player, Permission.PERMISSION_CLUSTER_SETHOME_OTHER)) { player.sendMessage( TranslatableCaption.of("permission.no_permission"), Template.of("node", Permission.PERMISSION_CLUSTER_SETHOME_OTHER.toString()) @@ -817,13 +830,16 @@ public class Cluster extends SubCommand { Location relative = player.getLocation().subtract(base.getX(), 0, base.getZ()); BlockLoc blockloc = new BlockLoc(relative.getX(), relative.getY(), relative.getZ()); cluster.settings.setPosition(blockloc); - DBFunc.setPosition(cluster, - relative.getX() + "," + relative.getY() + "," + relative.getZ()); + DBFunc.setPosition( + cluster, + relative.getX() + "," + relative.getY() + "," + relative.getZ() + ); player.sendMessage(TranslatableCaption.of("position.position_set")); } player.sendMessage(TranslatableCaption.of("cluster.cluster_available_args")); return false; } + @Override public Collection tab(final PlotPlayer player, final String[] args, final boolean space) { if (args.length == 1) { @@ -861,8 +877,17 @@ public class Cluster extends SubCommand { if (Permissions.hasPermission(player, Permission.PERMISSION_CLUSTER_SETHOME)) { completions.add("sethome"); } - final List commands = completions.stream().filter(completion -> completion.toLowerCase().startsWith(args[0].toLowerCase())) - .map(completion -> new Command(null, true, completion, "", RequiredType.NONE, CommandCategory.ADMINISTRATION) { + final List commands = completions.stream().filter(completion -> completion + .toLowerCase() + .startsWith(args[0].toLowerCase())) + .map(completion -> new Command( + null, + true, + completion, + "", + RequiredType.NONE, + CommandCategory.ADMINISTRATION + ) { }).collect(Collectors.toCollection(LinkedList::new)); if (Permissions.hasPermission(player, Permission.PERMISSION_CLUSTER) && args[0].length() > 0) { commands.addAll(TabCompletions.completePlayers(args[0], Collections.emptyList())); @@ -871,4 +896,5 @@ public class Cluster extends SubCommand { } return TabCompletions.completePlayers(String.join(",", args).trim(), Collections.emptyList()); } + } diff --git a/Core/src/main/java/com/plotsquared/core/command/CmdConfirm.java b/Core/src/main/java/com/plotsquared/core/command/CmdConfirm.java index ca36d38c7..d1dc9406b 100644 --- a/Core/src/main/java/com/plotsquared/core/command/CmdConfirm.java +++ b/Core/src/main/java/com/plotsquared/core/command/CmdConfirm.java @@ -32,27 +32,28 @@ import com.plotsquared.core.player.PlotPlayer; import com.plotsquared.core.util.task.TaskManager; import com.plotsquared.core.util.task.TaskTime; import net.kyori.adventure.text.minimessage.Template; - -import javax.annotation.Nullable; +import org.checkerframework.checker.nullness.qual.Nullable; public class CmdConfirm { - @Nullable public static CmdInstance getPending(PlotPlayer player) { + public @Nullable static CmdInstance getPending(PlotPlayer player) { try (final MetaDataAccess metaDataAccess = player.accessTemporaryMetaData( - PlayerMetaDataKeys.TEMPORARY_CONFIRM)) { + PlayerMetaDataKeys.TEMPORARY_CONFIRM)) { return metaDataAccess.get().orElse(null); } } public static void removePending(PlotPlayer player) { try (final MetaDataAccess metaDataAccess = player.accessTemporaryMetaData( - PlayerMetaDataKeys.TEMPORARY_CONFIRM)) { + PlayerMetaDataKeys.TEMPORARY_CONFIRM)) { metaDataAccess.remove(); } } - public static void addPending(final PlotPlayer player, String commandStr, - final Runnable runnable) { + public static void addPending( + final PlotPlayer player, String commandStr, + final Runnable runnable + ) { removePending(player); if (commandStr != null) { player.sendMessage( @@ -64,9 +65,10 @@ public class CmdConfirm { TaskManager.runTaskLater(() -> { CmdInstance cmd = new CmdInstance(runnable); try (final MetaDataAccess metaDataAccess = player.accessTemporaryMetaData( - PlayerMetaDataKeys.TEMPORARY_CONFIRM)) { + PlayerMetaDataKeys.TEMPORARY_CONFIRM)) { metaDataAccess.set(cmd); } }, TaskTime.ticks(1L)); } + } diff --git a/Core/src/main/java/com/plotsquared/core/command/CmdInstance.java b/Core/src/main/java/com/plotsquared/core/command/CmdInstance.java index 3793c3fd9..0bcfa68f7 100644 --- a/Core/src/main/java/com/plotsquared/core/command/CmdInstance.java +++ b/Core/src/main/java/com/plotsquared/core/command/CmdInstance.java @@ -26,6 +26,7 @@ package com.plotsquared.core.command; public class CmdInstance { + public final Runnable command; public final long timestamp; @@ -33,4 +34,5 @@ public class CmdInstance { this.command = command; timestamp = System.currentTimeMillis(); } + } diff --git a/Core/src/main/java/com/plotsquared/core/command/Command.java b/Core/src/main/java/com/plotsquared/core/command/Command.java index a6affb7c4..7ea66a600 100644 --- a/Core/src/main/java/com/plotsquared/core/command/Command.java +++ b/Core/src/main/java/com/plotsquared/core/command/Command.java @@ -39,8 +39,8 @@ import com.plotsquared.core.util.task.RunnableVal2; import com.plotsquared.core.util.task.RunnableVal3; import net.kyori.adventure.text.minimessage.MiniMessage; import net.kyori.adventure.text.minimessage.Template; +import org.checkerframework.checker.nullness.qual.Nullable; -import javax.annotation.Nullable; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.util.ArrayList; @@ -77,8 +77,10 @@ public abstract class Command { private CommandCategory category; private Argument[] arguments; - public Command(Command parent, boolean isStatic, String id, String permission, - RequiredType required, CommandCategory category) { + public Command( + Command parent, boolean isStatic, String id, String permission, + RequiredType required, CommandCategory category + ) { this.parent = parent; this.isStatic = isStatic; this.id = id; @@ -104,13 +106,15 @@ public abstract class Command { // final PlotPlayer player, String[] args, RunnableVal3 confirm, RunnableVal2 // whenDone if (types.length == 5 && types[0] == Command.class && types[1] == PlotPlayer.class - && types[2] == String[].class && types[3] == RunnableVal3.class - && types[4] == RunnableVal2.class) { + && types[2] == String[].class && types[3] == RunnableVal3.class + && types[4] == RunnableVal2.class) { Command tmp = new Command(this, true) { @Override - public CompletableFuture execute(PlotPlayer player, String[] args, - RunnableVal3 confirm, - RunnableVal2 whenDone) { + public CompletableFuture execute( + PlotPlayer player, String[] args, + RunnableVal3 confirm, + RunnableVal2 whenDone + ) { try { method.invoke(Command.this, this, player, args, confirm, whenDone); return CompletableFuture.completedFuture(true); @@ -242,8 +246,10 @@ public abstract class Command { return "plots." + getFullId(); } - public void paginate(PlotPlayer player, List c, int size, int page, - RunnableVal3 add, String baseCommand, Caption header) { + public void paginate( + PlotPlayer player, List c, int size, int page, + RunnableVal3 add, String baseCommand, Caption header + ) { // Calculate pages & index if (page < 0) { page = 0; @@ -299,11 +305,13 @@ public abstract class Command { * @param confirm Instance, Success, Failure * @param whenDone task to run when done * @return CompletableFuture true if the command executed fully, false in - * any other case + * any other case */ - public CompletableFuture execute(PlotPlayer player, String[] args, - RunnableVal3 confirm, - RunnableVal2 whenDone) throws CommandException { + public CompletableFuture execute( + PlotPlayer player, String[] args, + RunnableVal3 confirm, + RunnableVal2 whenDone + ) throws CommandException { if (args.length == 0 || args[0] == null) { if (this.parent == null) { MainCommand.getInstance().help.displayHelp(player, null, 0); @@ -338,8 +346,10 @@ public abstract class Command { player.sendMessage(TranslatableCaption.of("commandconfig.not_valid_subcommand")); List commands = getCommands(player); if (commands.isEmpty()) { - player.sendMessage(TranslatableCaption.of("commandconfig.did_you_mean"), - Template.of("value", MainCommand.getInstance().help.getUsage())); + player.sendMessage( + TranslatableCaption.of("commandconfig.did_you_mean"), + Template.of("value", MainCommand.getInstance().help.getUsage()) + ); return CompletableFuture.completedFuture(false); } HashSet setArgs = new HashSet<>(args.length); @@ -357,8 +367,10 @@ public abstract class Command { if (cmd == null) { cmd = new StringComparison<>(args[0], this.allCommands).getMatchObject(); } - player.sendMessage(TranslatableCaption.of("commandconfig.did_you_mean"), - Template.of("value", cmd.getUsage())); + player.sendMessage( + TranslatableCaption.of("commandconfig.did_you_mean"), + Template.of("value", cmd.getUsage()) + ); return CompletableFuture.completedFuture(false); } String[] newArgs = Arrays.copyOfRange(args, 1, args.length); @@ -391,8 +403,10 @@ public abstract class Command { } if (failed) { // TODO improve or remove the Argument system - player.sendMessage(TranslatableCaption.of("commandconfig.command_syntax"), - Template.of("value", StringMan.join(fullSplit, " "))); + player.sendMessage( + TranslatableCaption.of("commandconfig.command_syntax"), + Template.of("value", StringMan.join(fullSplit, " ")) + ); return false; } } @@ -402,7 +416,7 @@ public abstract class Command { public int getMatch(String[] args, Command cmd, PlotPlayer player) { String perm = cmd.getPermission(); int count = cmd.getAliases().stream().filter(alias -> alias.startsWith(args[0])) - .mapToInt(alias -> 5).sum(); + .mapToInt(alias -> 5).sum(); HashSet desc = new HashSet<>(); Collections.addAll(desc, cmd.getDescription().getComponent(player).split(" ")); for (String arg : args) { @@ -478,8 +492,10 @@ public abstract class Command { } } else if (!Permissions.hasPermission(player, getPermission())) { if (message) { - player.sendMessage(TranslatableCaption.of("permission.no_permission"), - Template.of("node", getPermission())); + player.sendMessage( + TranslatableCaption.of("permission.no_permission"), + Template.of("node", getPermission()) + ); } } else { return true; @@ -501,8 +517,10 @@ public abstract class Command { } public void sendUsage(PlotPlayer player) { - player.sendMessage(TranslatableCaption.of("commandconfig.command_syntax"), - Template.of("value", getUsage())); + player.sendMessage( + TranslatableCaption.of("commandconfig.command_syntax"), + Template.of("value", getUsage()) + ); } public String getUsage() { @@ -524,8 +542,10 @@ public abstract class Command { return getCommandString() + " " + args + "]"; } - public Collection tabOf(PlotPlayer player, String[] input, boolean space, - String... args) { + public Collection tabOf( + PlotPlayer player, String[] input, boolean space, + String... args + ) { if (!space) { return null; } @@ -562,7 +582,7 @@ public abstract class Command { Set commands = new HashSet<>(); for (Map.Entry entry : this.staticCommands.entrySet()) { if (entry.getKey().startsWith(arg) && entry.getValue() - .canExecute(player, false)) { + .canExecute(player, false)) { commands.add(entry.getValue()); } } @@ -578,11 +598,13 @@ public abstract class Command { } } - @Override public String toString() { + @Override + public String toString() { return !this.aliases.isEmpty() ? this.aliases.get(0) : this.id; } - @Override public boolean equals(Object obj) { + @Override + public boolean equals(Object obj) { if (this == obj) { return true; } @@ -596,7 +618,8 @@ public abstract class Command { return this.getFullId().equals(other.getFullId()); } - @Override public int hashCode() { + @Override + public int hashCode() { return this.getFullId().hashCode(); } @@ -615,7 +638,8 @@ public abstract class Command { public enum CommandResult { - FAILURE, SUCCESS + FAILURE, + SUCCESS } @@ -624,15 +648,17 @@ public abstract class Command { private final Template[] args; private final Caption message; - public CommandException(@Nullable final Caption message, final Template... args) { + public CommandException(final @Nullable Caption message, final Template... args) { this.message = message; this.args = args; } - public void perform(@Nullable final PlotPlayer player) { + public void perform(final @Nullable PlotPlayer player) { if (player != null && message != null) { player.sendMessage(message, args); } } + } + } diff --git a/Core/src/main/java/com/plotsquared/core/command/CommandCaller.java b/Core/src/main/java/com/plotsquared/core/command/CommandCaller.java index a46c1b45b..4249bbde6 100644 --- a/Core/src/main/java/com/plotsquared/core/command/CommandCaller.java +++ b/Core/src/main/java/com/plotsquared/core/command/CommandCaller.java @@ -27,8 +27,7 @@ package com.plotsquared.core.command; import com.plotsquared.core.configuration.caption.Caption; import net.kyori.adventure.text.minimessage.Template; - -import javax.annotation.Nonnull; +import org.checkerframework.checker.nullness.qual.NonNull; /** * Any entity that is able to execute commands, receive messages & and have @@ -42,7 +41,7 @@ public interface CommandCaller { * @param caption Caption to send * @param replacements Variable replacements */ - void sendMessage(@Nonnull Caption caption, @Nonnull Template... replacements); + void sendMessage(@NonNull Caption caption, @NonNull Template... replacements); /** * Check the player's permissions. Will be cached if permission caching is enabled. @@ -50,7 +49,7 @@ public interface CommandCaller { * @param permission the name of the permission * @return if permission is had */ - boolean hasPermission(@Nonnull String permission); + boolean hasPermission(@NonNull String permission); /** * Get the type of the caller diff --git a/Core/src/main/java/com/plotsquared/core/command/CommandCategory.java b/Core/src/main/java/com/plotsquared/core/command/CommandCategory.java index 9c22eb4bc..d3cde4d75 100644 --- a/Core/src/main/java/com/plotsquared/core/command/CommandCategory.java +++ b/Core/src/main/java/com/plotsquared/core/command/CommandCategory.java @@ -28,8 +28,7 @@ package com.plotsquared.core.command; import com.plotsquared.core.configuration.caption.Caption; import com.plotsquared.core.configuration.caption.LocaleHolder; import com.plotsquared.core.configuration.caption.TranslatableCaption; - -import javax.annotation.Nonnull; +import org.checkerframework.checker.nullness.qual.NonNull; /** * CommandCategory. @@ -85,13 +84,15 @@ public enum CommandCategory implements Caption { } // TODO this method shouldn't be invoked - @Deprecated @Override public String toString() { + @Deprecated + @Override + public String toString() { return this.caption.getComponent(LocaleHolder.console()); } - @Nonnull + @NonNull @Override - public String getComponent(@Nonnull LocaleHolder localeHolder) { + public String getComponent(@NonNull LocaleHolder localeHolder) { return this.caption.getComponent(localeHolder); } } diff --git a/Core/src/main/java/com/plotsquared/core/command/CommandDeclaration.java b/Core/src/main/java/com/plotsquared/core/command/CommandDeclaration.java index ce87c5ffc..695446098 100644 --- a/Core/src/main/java/com/plotsquared/core/command/CommandDeclaration.java +++ b/Core/src/main/java/com/plotsquared/core/command/CommandDeclaration.java @@ -49,4 +49,5 @@ public @interface CommandDeclaration { CommandCategory category() default CommandCategory.INFO; boolean confirmation() default false; + } diff --git a/Core/src/main/java/com/plotsquared/core/command/Comment.java b/Core/src/main/java/com/plotsquared/core/command/Comment.java index 231e001a8..7b8747b83 100644 --- a/Core/src/main/java/com/plotsquared/core/command/Comment.java +++ b/Core/src/main/java/com/plotsquared/core/command/Comment.java @@ -40,13 +40,14 @@ import java.util.Arrays; import java.util.Locale; @CommandDeclaration(command = "comment", - aliases = {"msg"}, - category = CommandCategory.CHAT, - requiredType = RequiredType.PLAYER, - permission = "plots.comment") + aliases = {"msg"}, + category = CommandCategory.CHAT, + requiredType = RequiredType.PLAYER, + permission = "plots.comment") public class Comment extends SubCommand { - @Override public boolean onCommand(PlotPlayer player, String[] args) { + @Override + public boolean onCommand(PlotPlayer player, String[] args) { if (args.length < 2) { player.sendMessage( TranslatableCaption.of("comment.comment_syntax"), @@ -95,8 +96,9 @@ public class Comment extends SubCommand { String message = StringMan.join(Arrays.copyOfRange(args, index, args.length), " "); PlotComment comment = - new PlotComment(player.getLocation().getWorldName(), plot.getId(), message, - player.getName(), inbox.toString(), System.currentTimeMillis()); + new PlotComment(player.getLocation().getWorldName(), plot.getId(), message, + player.getName(), inbox.toString(), System.currentTimeMillis() + ); boolean result = inbox.addComment(plot, comment); if (!result) { player.sendMessage(TranslatableCaption.of("comment.no_plot_inbox")); @@ -117,4 +119,5 @@ public class Comment extends SubCommand { player.sendMessage(TranslatableCaption.of("comment.comment_added")); return true; } + } diff --git a/Core/src/main/java/com/plotsquared/core/command/Condense.java b/Core/src/main/java/com/plotsquared/core/command/Condense.java index ffc95a793..b5b07646c 100644 --- a/Core/src/main/java/com/plotsquared/core/command/Condense.java +++ b/Core/src/main/java/com/plotsquared/core/command/Condense.java @@ -37,8 +37,8 @@ import com.plotsquared.core.util.WorldUtil; import com.plotsquared.core.util.task.TaskManager; import com.plotsquared.core.util.task.TaskTime; import net.kyori.adventure.text.minimessage.Template; +import org.checkerframework.checker.nullness.qual.NonNull; -import javax.annotation.Nonnull; import java.util.ArrayList; import java.util.Collection; import java.util.HashSet; @@ -49,10 +49,10 @@ import java.util.concurrent.ExecutionException; import java.util.concurrent.atomic.AtomicBoolean; @CommandDeclaration(command = "condense", - permission = "plots.admin", - usage = "/plot condense [radius]", - category = CommandCategory.ADMINISTRATION, - requiredType = RequiredType.CONSOLE) + permission = "plots.admin", + usage = "/plot condense [radius]", + category = CommandCategory.ADMINISTRATION, + requiredType = RequiredType.CONSOLE) public class Condense extends SubCommand { public static boolean TASK = false; @@ -60,13 +60,17 @@ public class Condense extends SubCommand { private final PlotAreaManager plotAreaManager; private final WorldUtil worldUtil; - @Inject public Condense(@Nonnull final PlotAreaManager plotAreaManager, - @Nonnull final WorldUtil worldUtil) { + @Inject + public Condense( + final @NonNull PlotAreaManager plotAreaManager, + final @NonNull WorldUtil worldUtil + ) { this.plotAreaManager = plotAreaManager; this.worldUtil = worldUtil; } - @Override public boolean onCommand(final PlotPlayer player, String[] args) { + @Override + public boolean onCommand(final PlotPlayer player, String[] args) { if (args.length != 2 && args.length != 3) { player.sendMessage( TranslatableCaption.of("commandconfig.command_syntax"), @@ -157,7 +161,8 @@ public class Condense extends SubCommand { player.sendMessage(TranslatableCaption.of("condense.task_started")); Condense.TASK = true; Runnable run = new Runnable() { - @Override public void run() { + @Override + public void run() { if (!Condense.TASK) { player.sendMessage(TranslatableCaption.of("condense.task_cancelled")); } @@ -274,10 +279,11 @@ public class Condense extends SubCommand { HashSet outside = new HashSet<>(); for (Plot plot : plots) { if (plot.getId().getX() > radius || plot.getId().getX() < -radius || plot.getId().getY() > radius - || plot.getId().getY() < -radius) { + || plot.getId().getY() < -radius) { outside.add(plot.getId()); } } return outside; } + } diff --git a/Core/src/main/java/com/plotsquared/core/command/Confirm.java b/Core/src/main/java/com/plotsquared/core/command/Confirm.java index f01f735be..d5f91860b 100644 --- a/Core/src/main/java/com/plotsquared/core/command/Confirm.java +++ b/Core/src/main/java/com/plotsquared/core/command/Confirm.java @@ -31,11 +31,12 @@ import com.plotsquared.core.player.PlotPlayer; import com.plotsquared.core.util.task.TaskManager; @CommandDeclaration(command = "confirm", - permission = "plots.confirm", - category = CommandCategory.INFO) + permission = "plots.confirm", + category = CommandCategory.INFO) public class Confirm extends SubCommand { - @Override public boolean onCommand(PlotPlayer player, String[] args) { + @Override + public boolean onCommand(PlotPlayer player, String[] args) { CmdInstance command = CmdConfirm.getPending(player); if (command == null) { player.sendMessage(TranslatableCaption.of("confirm.failed_confirm")); @@ -43,11 +44,12 @@ public class Confirm extends SubCommand { } CmdConfirm.removePending(player); if ((System.currentTimeMillis() - command.timestamp) - > Settings.Confirmation.CONFIRMATION_TIMEOUT_SECONDS * 1000) { + > Settings.Confirmation.CONFIRMATION_TIMEOUT_SECONDS * 1000) { player.sendMessage(TranslatableCaption.of("confirm.expired_confirm")); return false; } TaskManager.runTaskAsync(command.command); return true; } + } diff --git a/Core/src/main/java/com/plotsquared/core/command/Continue.java b/Core/src/main/java/com/plotsquared/core/command/Continue.java index dfeebed75..536839191 100644 --- a/Core/src/main/java/com/plotsquared/core/command/Continue.java +++ b/Core/src/main/java/com/plotsquared/core/command/Continue.java @@ -26,11 +26,11 @@ package com.plotsquared.core.command; import com.google.inject.Inject; -import com.plotsquared.core.permissions.Permission; import com.plotsquared.core.configuration.Settings; import com.plotsquared.core.configuration.caption.TranslatableCaption; import com.plotsquared.core.events.PlotFlagRemoveEvent; import com.plotsquared.core.events.Result; +import com.plotsquared.core.permissions.Permission; import com.plotsquared.core.player.PlotPlayer; import com.plotsquared.core.plot.Plot; import com.plotsquared.core.plot.flag.PlotFlag; @@ -38,29 +38,30 @@ import com.plotsquared.core.plot.flag.implementations.DoneFlag; import com.plotsquared.core.util.EventDispatcher; import com.plotsquared.core.util.Permissions; import net.kyori.adventure.text.minimessage.Template; - -import javax.annotation.Nonnull; +import org.checkerframework.checker.nullness.qual.NonNull; @CommandDeclaration(command = "continue", - permission = "plots.continue", - category = CommandCategory.SETTINGS, - requiredType = RequiredType.PLAYER) + permission = "plots.continue", + category = CommandCategory.SETTINGS, + requiredType = RequiredType.PLAYER) public class Continue extends SubCommand { private final EventDispatcher eventDispatcher; - - @Inject public Continue(@Nonnull final EventDispatcher eventDispatcher) { + + @Inject + public Continue(final @NonNull EventDispatcher eventDispatcher) { this.eventDispatcher = eventDispatcher; } - @Override public boolean onCommand(PlotPlayer player, String[] args) { + @Override + public boolean onCommand(PlotPlayer player, String[] args) { Plot plot = player.getCurrentPlot(); if ((plot == null) || !plot.hasOwner()) { player.sendMessage(TranslatableCaption.of("errors.not_in_plot")); return false; } if (!plot.isOwner(player.getUUID()) && !Permissions - .hasPermission(player, Permission.PERMISSION_ADMIN_COMMAND_CONTINUE)) { + .hasPermission(player, Permission.PERMISSION_ADMIN_COMMAND_CONTINUE)) { player.sendMessage( TranslatableCaption.of("permission.no_permission"), Template.of("node", TranslatableCaption.of("permission.no_plot_perms").getComponent(player)) @@ -73,7 +74,7 @@ public class Continue extends SubCommand { } int size = plot.getConnectedPlots().size(); if (Settings.Done.COUNTS_TOWARDS_LIMIT && (player.getAllowedPlots() - < player.getPlotCount() + size)) { + < player.getPlotCount() + size)) { player.sendMessage( TranslatableCaption.of("permission.no_permission"), Template.of("node", Permission.PERMISSION_ADMIN_COMMAND_CONTINUE.toString()) @@ -86,15 +87,17 @@ public class Continue extends SubCommand { } PlotFlag plotFlag = plot.getFlagContainer().getFlag(DoneFlag.class); PlotFlagRemoveEvent event = - this.eventDispatcher.callFlagRemove(plotFlag, plot); + this.eventDispatcher.callFlagRemove(plotFlag, plot); if (event.getEventResult() == Result.DENY) { player.sendMessage( TranslatableCaption.of("events.event_denied"), - Template.of("value", "Done flag removal")); + Template.of("value", "Done flag removal") + ); return true; } plot.removeFlag(event.getFlag()); player.sendMessage(TranslatableCaption.of("done.done_removed")); return true; } + } diff --git a/Core/src/main/java/com/plotsquared/core/command/Copy.java b/Core/src/main/java/com/plotsquared/core/command/Copy.java index bebe236d9..194f48cbc 100644 --- a/Core/src/main/java/com/plotsquared/core/command/Copy.java +++ b/Core/src/main/java/com/plotsquared/core/command/Copy.java @@ -25,23 +25,24 @@ */ package com.plotsquared.core.command; -import com.plotsquared.core.permissions.Permission; import com.plotsquared.core.configuration.caption.TranslatableCaption; import com.plotsquared.core.location.Location; +import com.plotsquared.core.permissions.Permission; import com.plotsquared.core.player.PlotPlayer; import com.plotsquared.core.plot.Plot; import com.plotsquared.core.util.Permissions; import net.kyori.adventure.text.minimessage.Template; @CommandDeclaration(command = "copy", - permission = "plots.copy", - aliases = {"copypaste"}, - category = CommandCategory.CLAIMING, - usage = "/plot copy ", - requiredType = RequiredType.NONE) + permission = "plots.copy", + aliases = {"copypaste"}, + category = CommandCategory.CLAIMING, + usage = "/plot copy ", + requiredType = RequiredType.NONE) public class Copy extends SubCommand { - @Override public boolean onCommand(final PlotPlayer player, String[] args) { + @Override + public boolean onCommand(final PlotPlayer player, String[] args) { Location location = player.getLocation(); Plot plot1 = location.getPlotAbs(); if (plot1 == null) { @@ -49,7 +50,7 @@ public class Copy extends SubCommand { return false; } if (!plot1.isOwner(player.getUUID()) && !Permissions - .hasPermission(player, Permission.PERMISSION_ADMIN.toString())) { + .hasPermission(player, Permission.PERMISSION_ADMIN.toString())) { player.sendMessage(TranslatableCaption.of("permission.no_plot_perms")); return false; } @@ -87,4 +88,5 @@ public class Copy extends SubCommand { return true; } + } diff --git a/Core/src/main/java/com/plotsquared/core/command/CreateRoadSchematic.java b/Core/src/main/java/com/plotsquared/core/command/CreateRoadSchematic.java index 8e4beb967..b8eb8f2a4 100644 --- a/Core/src/main/java/com/plotsquared/core/command/CreateRoadSchematic.java +++ b/Core/src/main/java/com/plotsquared/core/command/CreateRoadSchematic.java @@ -33,24 +33,25 @@ import com.plotsquared.core.location.Location; import com.plotsquared.core.player.PlotPlayer; import com.plotsquared.core.plot.Plot; import net.kyori.adventure.text.minimessage.Template; - -import javax.annotation.Nonnull; +import org.checkerframework.checker.nullness.qual.NonNull; @CommandDeclaration(command = "createroadschematic", - aliases = {"crs"}, - category = CommandCategory.ADMINISTRATION, - requiredType = RequiredType.PLAYER, - permission = "plots.createroadschematic", - usage = "/plot createroadschematic") + aliases = {"crs"}, + category = CommandCategory.ADMINISTRATION, + requiredType = RequiredType.PLAYER, + permission = "plots.createroadschematic", + usage = "/plot createroadschematic") public class CreateRoadSchematic extends SubCommand { private final HybridUtils hybridUtils; - @Inject public CreateRoadSchematic(@Nonnull final HybridUtils hybridUtils) { + @Inject + public CreateRoadSchematic(final @NonNull HybridUtils hybridUtils) { this.hybridUtils = hybridUtils; } - @Override public boolean onCommand(PlotPlayer player, String[] args) { + @Override + public boolean onCommand(PlotPlayer player, String[] args) { Location location = player.getLocation(); Plot plot = location.getPlotAbs(); if (plot == null) { @@ -61,8 +62,11 @@ public class CreateRoadSchematic extends SubCommand { player.sendMessage(TranslatableCaption.of("errors.not_in_plot_world")); } this.hybridUtils.setupRoadSchematic(plot); - player.sendMessage(TranslatableCaption.of("schematics.schematic_road_created"), - Template.of("command", "/plot debugroadregen")); + player.sendMessage( + TranslatableCaption.of("schematics.schematic_road_created"), + Template.of("command", "/plot debugroadregen") + ); return true; } + } diff --git a/Core/src/main/java/com/plotsquared/core/command/DatabaseCommand.java b/Core/src/main/java/com/plotsquared/core/command/DatabaseCommand.java index ccc3b3071..7408de850 100644 --- a/Core/src/main/java/com/plotsquared/core/command/DatabaseCommand.java +++ b/Core/src/main/java/com/plotsquared/core/command/DatabaseCommand.java @@ -48,8 +48,8 @@ import com.plotsquared.core.util.FileUtils; import com.plotsquared.core.util.query.PlotQuery; import com.plotsquared.core.util.task.TaskManager; import net.kyori.adventure.text.minimessage.Template; +import org.checkerframework.checker.nullness.qual.NonNull; -import javax.annotation.Nonnull; import java.io.File; import java.sql.SQLException; import java.util.ArrayList; @@ -59,11 +59,11 @@ import java.util.List; import java.util.Map.Entry; @CommandDeclaration(command = "database", - aliases = {"convert"}, - category = CommandCategory.ADMINISTRATION, - permission = "plots.database", - requiredType = RequiredType.CONSOLE, - usage = "/plot database [area] ") + aliases = {"convert"}, + category = CommandCategory.ADMINISTRATION, + permission = "plots.database", + requiredType = RequiredType.CONSOLE, + usage = "/plot database [area] ") public class DatabaseCommand extends SubCommand { private final PlotAreaManager plotAreaManager; @@ -71,18 +71,23 @@ public class DatabaseCommand extends SubCommand { private final PlotListener plotListener; private final YamlConfiguration worldConfiguration; - @Inject public DatabaseCommand(@Nonnull final PlotAreaManager plotAreaManager, - @Nonnull final EventDispatcher eventDispatcher, - @Nonnull final PlotListener plotListener, - @WorldConfig @Nonnull final YamlConfiguration worldConfiguration) { + @Inject + public DatabaseCommand( + final @NonNull PlotAreaManager plotAreaManager, + final @NonNull EventDispatcher eventDispatcher, + final @NonNull PlotListener plotListener, + @WorldConfig final @NonNull YamlConfiguration worldConfiguration + ) { this.plotAreaManager = plotAreaManager; this.eventDispatcher = eventDispatcher; this.plotListener = plotListener; this.worldConfiguration = worldConfiguration; } - public static void insertPlots(final SQLManager manager, final List plots, - final PlotPlayer player) { + public static void insertPlots( + final SQLManager manager, final List plots, + final PlotPlayer player + ) { TaskManager.runTaskAsync(() -> { try { ArrayList ps = new ArrayList<>(plots); @@ -98,7 +103,8 @@ public class DatabaseCommand extends SubCommand { }); } - @Override public boolean onCommand(final PlotPlayer player, String[] args) { + @Override + public boolean onCommand(final PlotPlayer player, String[] args) { if (args.length < 1) { player.sendMessage( TranslatableCaption.of("commandconfig.command_syntax"), @@ -134,8 +140,10 @@ public class DatabaseCommand extends SubCommand { ); return false; } - File file = FileUtils.getFile(PlotSquared.platform().getDirectory(), - args[1].endsWith(".db") ? args[1] : args[1] + ".db"); + File file = FileUtils.getFile( + PlotSquared.platform().getDirectory(), + args[1].endsWith(".db") ? args[1] : args[1] + ".db" + ); if (!file.exists()) { player.sendMessage( TranslatableCaption.of("database.does_not_exist"), @@ -146,7 +154,8 @@ public class DatabaseCommand extends SubCommand { player.sendMessage(TranslatableCaption.of("database.starting_conversion")); implementation = new SQLite(file); SQLManager manager = new SQLManager(implementation, args.length == 3 ? args[2] : "", - this.eventDispatcher, this.plotListener, this.worldConfiguration); + this.eventDispatcher, this.plotListener, this.worldConfiguration + ); HashMap> map = manager.getPlots(); plots = new ArrayList<>(); for (Entry> entry : map.entrySet()) { @@ -162,12 +171,16 @@ public class DatabaseCommand extends SubCommand { PlotId newId = newPlot.getId(); PlotId id = plot.getId(); File worldFile = - new File(PlotSquared.platform().worldContainer(), - id.toCommaSeparatedString()); + new File( + PlotSquared.platform().worldContainer(), + id.toCommaSeparatedString() + ); if (worldFile.exists()) { File newFile = - new File(PlotSquared.platform().worldContainer(), - newId.toCommaSeparatedString()); + new File( + PlotSquared.platform().worldContainer(), + newId.toCommaSeparatedString() + ); worldFile.renameTo(newFile); } plot.setId(newId.copy()); @@ -188,16 +201,19 @@ public class DatabaseCommand extends SubCommand { } } else { HashMap plotMap = PlotSquared.get().plots_tmp - .computeIfAbsent(areaName, k -> new HashMap<>()); + .computeIfAbsent(areaName, k -> new HashMap<>()); plotMap.putAll(entry.getValue()); } } - DBFunc.createPlotsAndData(plots, - () -> player.sendMessage(TranslatableCaption.of("database.conversion_done"))); + DBFunc.createPlotsAndData( + plots, + () -> player.sendMessage(TranslatableCaption.of("database.conversion_done")) + ); return true; case "mysql": if (args.length < 6) { - player.sendMessage(StaticCaption.of("/plot database mysql [host] [port] [username] [password] [database] {prefix}")); + player.sendMessage(StaticCaption.of( + "/plot database mysql [host] [port] [username] [password] [database] {prefix}")); } String host = args[1]; String port = args[2]; @@ -214,7 +230,7 @@ public class DatabaseCommand extends SubCommand { player.sendMessage(StaticCaption.of("/plot database sqlite [file]")); } File sqliteFile = - FileUtils.getFile(PlotSquared.platform().getDirectory(), args[1] + ".db"); + FileUtils.getFile(PlotSquared.platform().getDirectory(), args[1] + ".db"); implementation = new SQLite(sqliteFile); break; default: @@ -222,7 +238,13 @@ public class DatabaseCommand extends SubCommand { return false; } try { - SQLManager manager = new SQLManager(implementation, prefix, this.eventDispatcher, this.plotListener, this.worldConfiguration); + SQLManager manager = new SQLManager( + implementation, + prefix, + this.eventDispatcher, + this.plotListener, + this.worldConfiguration + ); DatabaseCommand.insertPlots(manager, plots, player); return true; } catch (ClassNotFoundException | SQLException e) { @@ -242,4 +264,5 @@ public class DatabaseCommand extends SubCommand { return false; } } + } diff --git a/Core/src/main/java/com/plotsquared/core/command/Debug.java b/Core/src/main/java/com/plotsquared/core/command/Debug.java index 769dbf120..3d847247b 100644 --- a/Core/src/main/java/com/plotsquared/core/command/Debug.java +++ b/Core/src/main/java/com/plotsquared/core/command/Debug.java @@ -44,19 +44,19 @@ import com.sk89q.worldedit.world.entity.EntityType; import net.kyori.adventure.text.Component; import net.kyori.adventure.text.TextComponent; import net.kyori.adventure.text.minimessage.Template; +import org.checkerframework.checker.nullness.qual.NonNull; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import javax.annotation.Nonnull; import java.util.Collection; import java.util.Comparator; import java.util.Map; import java.util.Set; @CommandDeclaration(command = "debug", - category = CommandCategory.DEBUG, - usage = "/plot debug [msg]", - permission = "plots.admin") + category = CommandCategory.DEBUG, + usage = "/plot debug [msg]", + permission = "plots.admin") public class Debug extends SubCommand { private static final Logger logger = LoggerFactory.getLogger("P2/" + Debug.class.getSimpleName()); @@ -64,21 +64,29 @@ public class Debug extends SubCommand { private final PlotAreaManager plotAreaManager; private final WorldUtil worldUtil; - @Inject public Debug(@Nonnull final PlotAreaManager plotAreaManager, - @Nonnull final WorldUtil worldUtil) { + @Inject + public Debug( + final @NonNull PlotAreaManager plotAreaManager, + final @NonNull WorldUtil worldUtil + ) { this.plotAreaManager = plotAreaManager; this.worldUtil = worldUtil; } - @Override public boolean onCommand(PlotPlayer player, String[] args) { - if (args.length == 0 ) { - player.sendMessage(TranslatableCaption.of("commandconfig.command_syntax"), - Template.of("value", "/plot debug ")); + @Override + public boolean onCommand(PlotPlayer player, String[] args) { + if (args.length == 0) { + player.sendMessage( + TranslatableCaption.of("commandconfig.command_syntax"), + Template.of("value", "/plot debug ") + ); } if (args.length > 0) { if ("player".equalsIgnoreCase(args[0])) { for (Map.Entry meta : player.getMeta().entrySet()) { - player.sendMessage(StaticCaption.of("Key: " + meta.getKey() + " Value: " + meta.getValue().toString() + " , ")); + player.sendMessage(StaticCaption.of("Key: " + meta.getKey() + " Value: " + meta + .getValue() + .toString() + " , ")); } } } @@ -86,8 +94,10 @@ public class Debug extends SubCommand { final long start = System.currentTimeMillis(); player.sendMessage(TranslatableCaption.of("debug.fetching_loaded_chunks")); TaskManager.runTaskAsync(() -> player.sendMessage(StaticCaption - .of("Loaded chunks: " + this.worldUtil.getChunkChunks(player.getLocation().getWorldName()).size() + " (" + (System.currentTimeMillis() - - start) + "ms) using thread: " + Thread.currentThread().getName()))); + .of("Loaded chunks: " + this.worldUtil + .getChunkChunks(player.getLocation().getWorldName()) + .size() + " (" + (System.currentTimeMillis() + - start) + "ms) using thread: " + Thread.currentThread().getName()))); return true; } if (args.length > 0 && "uuids".equalsIgnoreCase(args[0])) { @@ -120,25 +130,29 @@ public class Debug extends SubCommand { player.sendMessage(TranslatableCaption.of("debug.entity_categories")); EntityCategory.REGISTRY.forEach(category -> { final StringBuilder builder = - new StringBuilder("§7- §6").append(category.getId()).append("§7: §6"); + new StringBuilder("§7- §6").append(category.getId()).append("§7: §6"); for (final EntityType entityType : category.getAll()) { builder.append(entityType.getId()).append(" "); } player.sendMessage(StaticCaption.of("" + builder.toString())); }); EntityType.REGISTRY.values().stream().sorted(Comparator.comparing(EntityType::getId)) - .forEach(entityType -> { - long categoryCount = EntityCategory.REGISTRY.values().stream() - .filter(category -> category.contains(entityType)).count(); - if (categoryCount > 0) { - return; - } - player.sendMessage(StaticCaption.of("" + entityType.getName() + " is in " - + categoryCount + " categories")); - }); + .forEach(entityType -> { + long categoryCount = EntityCategory.REGISTRY.values().stream() + .filter(category -> category.contains(entityType)).count(); + if (categoryCount > 0) { + return; + } + player.sendMessage(StaticCaption.of("" + entityType.getName() + " is in " + + categoryCount + " categories")); + }); return true; } - Set captions = PlotSquared.get().getCaptionMap(TranslatableCaption.DEFAULT_NAMESPACE).getCaptions().keySet(); + Set captions = PlotSquared + .get() + .getCaptionMap(TranslatableCaption.DEFAULT_NAMESPACE) + .getCaptions() + .keySet(); if ((args.length > 0) && args[0].equalsIgnoreCase("msg")) { StringBuilder msg = new StringBuilder(); for (Caption caption : captions) { @@ -154,13 +168,30 @@ public class Debug extends SubCommand { information.append(header); information.append(MINI_MESSAGE.parse(section, Template.of("val", "PlotArea"))); information.append(MINI_MESSAGE - .parse(line, Template.of("var", "Plot Worlds"), Template.of("val", StringMan.join(this.plotAreaManager.getAllPlotAreas(), ", ")))); + .parse( + line, + Template.of("var", "Plot Worlds"), + Template.of("val", StringMan.join(this.plotAreaManager.getAllPlotAreas(), ", ")) + )); information.append( - MINI_MESSAGE.parse(line, Template.of("var", "Owned Plots"), Template.of("val", String.valueOf(PlotQuery.newQuery().allPlots().count())))); + MINI_MESSAGE.parse( + line, + Template.of("var", "Owned Plots"), + Template.of("val", String.valueOf(PlotQuery.newQuery().allPlots().count())) + )); information.append(MINI_MESSAGE.parse(section, Template.of("val", "Messages"))); - information.append(MINI_MESSAGE.parse(line, Template.of("var", "Total Messages"), Template.of("val", String.valueOf(captions.size())))); - information.append(MINI_MESSAGE.parse(line, Template.of("var", "View all captions"), Template.of("val", "/plot debug msg"))); + information.append(MINI_MESSAGE.parse( + line, + Template.of("var", "Total Messages"), + Template.of("val", String.valueOf(captions.size())) + )); + information.append(MINI_MESSAGE.parse( + line, + Template.of("var", "View all captions"), + Template.of("val", "/plot debug msg") + )); player.sendMessage(StaticCaption.of(information.toString())); return true; } + } diff --git a/Core/src/main/java/com/plotsquared/core/command/DebugAllowUnsafe.java b/Core/src/main/java/com/plotsquared/core/command/DebugAllowUnsafe.java index 61fbcb8cf..2525f3460 100644 --- a/Core/src/main/java/com/plotsquared/core/command/DebugAllowUnsafe.java +++ b/Core/src/main/java/com/plotsquared/core/command/DebugAllowUnsafe.java @@ -33,15 +33,16 @@ import java.util.List; import java.util.UUID; @CommandDeclaration(command = "debugallowunsafe", - usage = "/plot debugallowunsafe", - category = CommandCategory.DEBUG, - requiredType = RequiredType.NONE, - permission = "plots.debugallowunsafe") + usage = "/plot debugallowunsafe", + category = CommandCategory.DEBUG, + requiredType = RequiredType.NONE, + permission = "plots.debugallowunsafe") public class DebugAllowUnsafe extends SubCommand { public static final List unsafeAllowed = new ArrayList<>(); - @Override public boolean onCommand(PlotPlayer player, String[] args) { + @Override + public boolean onCommand(PlotPlayer player, String[] args) { if (unsafeAllowed.contains(player.getUUID())) { unsafeAllowed.remove(player.getUUID()); diff --git a/Core/src/main/java/com/plotsquared/core/command/DebugExec.java b/Core/src/main/java/com/plotsquared/core/command/DebugExec.java index cd334b116..3c7732e28 100644 --- a/Core/src/main/java/com/plotsquared/core/command/DebugExec.java +++ b/Core/src/main/java/com/plotsquared/core/command/DebugExec.java @@ -28,7 +28,6 @@ package com.plotsquared.core.command; import com.google.common.io.Files; import com.google.inject.Inject; import com.plotsquared.core.PlotSquared; -import com.plotsquared.core.permissions.Permission; import com.plotsquared.core.configuration.Settings; import com.plotsquared.core.configuration.caption.CaptionHolder; import com.plotsquared.core.configuration.caption.StaticCaption; @@ -38,6 +37,7 @@ import com.plotsquared.core.events.PlotFlagRemoveEvent; import com.plotsquared.core.events.Result; import com.plotsquared.core.generator.HybridUtils; import com.plotsquared.core.location.Location; +import com.plotsquared.core.permissions.Permission; import com.plotsquared.core.player.ConsolePlayer; import com.plotsquared.core.player.PlotPlayer; import com.plotsquared.core.plot.Plot; @@ -67,11 +67,11 @@ import com.plotsquared.core.util.task.TaskManager; import com.sk89q.worldedit.WorldEdit; import com.sk89q.worldedit.world.block.BlockState; import net.kyori.adventure.text.minimessage.Template; +import org.checkerframework.checker.nullness.qual.NonNull; +import org.checkerframework.checker.nullness.qual.Nullable; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; import javax.script.Bindings; import javax.script.ScriptContext; import javax.script.ScriptEngine; @@ -88,9 +88,9 @@ import java.util.List; import java.util.concurrent.CompletableFuture; @CommandDeclaration(command = "debugexec", - permission = "plots.admin", - aliases = {"exec", "$"}, - category = CommandCategory.DEBUG) + permission = "plots.admin", + aliases = {"exec", "$"}, + category = CommandCategory.DEBUG) public class DebugExec extends SubCommand { private static final Logger logger = LoggerFactory.getLogger("P2/" + DebugExec.class.getSimpleName()); @@ -109,16 +109,19 @@ public class DebugExec extends SubCommand { private ScriptEngine engine; private Bindings scope; - @Inject public DebugExec(@Nonnull final PlotAreaManager plotAreaManager, - @Nonnull final EventDispatcher eventDispatcher, - @Nullable final WorldEdit worldEdit, - @Nonnull final GlobalBlockQueue blockQueue, - @Nonnull final SchematicHandler schematicHandler, - @Nonnull final EconHandler econHandler, - @Nonnull final ChunkManager chunkManager, - @Nonnull final WorldUtil worldUtil, - @Nonnull final SetupUtils setupUtils, - @Nonnull final HybridUtils hybridUtils) { + @Inject + public DebugExec( + final @NonNull PlotAreaManager plotAreaManager, + final @NonNull EventDispatcher eventDispatcher, + final @Nullable WorldEdit worldEdit, + final @NonNull GlobalBlockQueue blockQueue, + final @NonNull SchematicHandler schematicHandler, + final @NonNull EconHandler econHandler, + final @NonNull ChunkManager chunkManager, + final @NonNull WorldUtil worldUtil, + final @NonNull SetupUtils setupUtils, + final @NonNull HybridUtils hybridUtils + ) { this.plotAreaManager = plotAreaManager; this.eventDispatcher = eventDispatcher; this.worldEdit = worldEdit; @@ -202,11 +205,13 @@ public class DebugExec extends SubCommand { } } - @Override public boolean onCommand(final PlotPlayer player, String[] args) { + @Override + public boolean onCommand(final PlotPlayer player, String[] args) { List allowed_params = Arrays - .asList("analyze", "calibrate-analysis", "remove-flag", "stop-expire", "start-expire", - "seen", "list-scripts", "start-rgar", "stop-rgar", "help", "addcmd", "runasync", - "run", "allcmd", "all"); + .asList("analyze", "calibrate-analysis", "remove-flag", "stop-expire", "start-expire", + "seen", "list-scripts", "start-rgar", "stop-rgar", "help", "addcmd", "runasync", + "run", "allcmd", "all" + ); if (args.length > 0) { String arg = args[0].toLowerCase(); String script; @@ -228,7 +233,8 @@ public class DebugExec extends SubCommand { } player.sendMessage(TranslatableCaption.of("debugexec.starting_task")); this.hybridUtils.analyzePlot(plot, new RunnableVal() { - @Override public void run(PlotAnalysis value) { + @Override + public void run(PlotAnalysis value) { player.sendMessage( TranslatableCaption.of("debugexec.analyze_done"), Template.of("command", "/plot debugexec analyze") @@ -257,7 +263,10 @@ public class DebugExec extends SubCommand { player.sendMessage(TranslatableCaption.of("debugexec.threshold_default_double")); return false; } - PlotAnalysis.calcOptimalModifiers(() -> player.sendMessage(TranslatableCaption.of("debugexec.calibration_done")), threshold); + PlotAnalysis.calcOptimalModifiers( + () -> player.sendMessage(TranslatableCaption.of("debugexec.calibration_done")), + threshold + ); return true; case "stop-expire": if (ExpireManager.IMP == null || !ExpireManager.IMP.cancelTask()) { @@ -274,11 +283,11 @@ public class DebugExec extends SubCommand { } String flag = args[1]; final PlotFlag flagInstance = - GlobalFlagContainer.getInstance().getFlagFromString(flag); + GlobalFlagContainer.getInstance().getFlagFromString(flag); if (flagInstance != null) { for (Plot plot : PlotQuery.newQuery().whereBasePlot()) { PlotFlagRemoveEvent event = this.eventDispatcher - .callFlagRemove(flagInstance, plot); + .callFlagRemove(flagInstance, plot); if (event.getEventResult() != Result.DENY) { plot.removeFlag(event.getFlag()); } @@ -335,20 +344,26 @@ public class DebugExec extends SubCommand { } case "?": case "help": - player.sendMessage(StaticCaption.of("Possible sub commands: /plot debugexec <" + StringMan.join(allowed_params, " | ") + ">")); + player.sendMessage(StaticCaption.of("Possible sub commands: /plot debugexec <" + StringMan + .join(allowed_params, " | ") + ">")); return false; case "addcmd": try { - final String cmd = StringMan.join(Files.readLines(FileUtils.getFile(new File( - PlotSquared.platform().getDirectory() + File.separator - + Settings.Paths.SCRIPTS), args[1]), StandardCharsets.UTF_8), - System.getProperty("line.separator")); + final String cmd = StringMan.join( + Files.readLines(FileUtils.getFile(new File( + PlotSquared.platform().getDirectory() + File.separator + + Settings.Paths.SCRIPTS), args[1]), StandardCharsets.UTF_8), + System.getProperty("line.separator") + ); new Command(MainCommand.getInstance(), true, args[1].split("\\.")[0], null, - RequiredType.NONE, CommandCategory.DEBUG) { + RequiredType.NONE, CommandCategory.DEBUG + ) { @Override - public CompletableFuture execute(PlotPlayer player, - String[] args, RunnableVal3 confirm, - RunnableVal2 whenDone) { + public CompletableFuture execute( + PlotPlayer player, + String[] args, RunnableVal3 confirm, + RunnableVal2 whenDone + ) { try { DebugExec.this.scope.put("PlotPlayer", player); DebugExec.this.scope.put("args", args); @@ -373,10 +388,12 @@ public class DebugExec extends SubCommand { async = true; case "run": try { - script = StringMan.join(Files.readLines(FileUtils.getFile(new File( - PlotSquared.platform().getDirectory() + File.separator - + Settings.Paths.SCRIPTS), args[1]), StandardCharsets.UTF_8), - System.getProperty("line.separator")); + script = StringMan.join( + Files.readLines(FileUtils.getFile(new File( + PlotSquared.platform().getDirectory() + File.separator + + Settings.Paths.SCRIPTS), args[1]), StandardCharsets.UTF_8), + System.getProperty("line.separator") + ); if (args.length > 2) { HashMap replacements = new HashMap<>(); for (int i = 2; i < args.length; i++) { @@ -391,7 +408,7 @@ public class DebugExec extends SubCommand { break; case "list-scripts": String path = PlotSquared.platform().getDirectory() + File.separator - + Settings.Paths.SCRIPTS; + + Settings.Paths.SCRIPTS; File folder = new File(path); File[] filesArray = folder.listFiles(); @@ -415,12 +432,17 @@ public class DebugExec extends SubCommand { List allFiles = Arrays.asList(filesArray); paginate(player, allFiles, 8, page, new RunnableVal3() { - @Override public void run(Integer i, File file, CaptionHolder message) { + @Override + public void run(Integer i, File file, CaptionHolder message) { String name = file.getName(); Template numTemplate = Template.of("number", String.valueOf(i)); Template nameTemplate = Template.of("name", name); message.set(StaticCaption.of(MINI_MESSAGE.serialize(MINI_MESSAGE - .parse(TranslatableCaption.of("debugexec.script_list_item").getComponent(player), numTemplate, nameTemplate)))); + .parse( + TranslatableCaption.of("debugexec.script_list_item").getComponent(player), + numTemplate, + nameTemplate + )))); } }, "/plot debugexec list-scripts", TranslatableCaption.of("scripts.script_list")); return true; @@ -433,9 +455,9 @@ public class DebugExec extends SubCommand { return false; } script = - "_1=PS.getBasePlots().iterator();while(_1.hasNext()){plot=_1.next();if(" - + args[1] + "){" + StringMan - .join(Arrays.copyOfRange(args, 2, args.length), " ") + "}}"; + "_1=PS.getBasePlots().iterator();while(_1.hasNext()){plot=_1.next();if(" + + args[1] + "){" + StringMan + .join(Arrays.copyOfRange(args, 2, args.length), " ") + "}}"; break; default: @@ -473,4 +495,5 @@ public class DebugExec extends SubCommand { } return false; } + } diff --git a/Core/src/main/java/com/plotsquared/core/command/DebugImportWorlds.java b/Core/src/main/java/com/plotsquared/core/command/DebugImportWorlds.java index 7ad649269..2334c0461 100644 --- a/Core/src/main/java/com/plotsquared/core/command/DebugImportWorlds.java +++ b/Core/src/main/java/com/plotsquared/core/command/DebugImportWorlds.java @@ -37,32 +37,37 @@ import com.plotsquared.core.plot.world.SinglePlotAreaManager; import com.plotsquared.core.util.WorldUtil; import com.plotsquared.core.util.task.RunnableVal2; import com.plotsquared.core.util.task.RunnableVal3; +import org.checkerframework.checker.nullness.qual.NonNull; -import javax.annotation.Nonnull; import java.io.File; import java.util.UUID; import java.util.concurrent.CompletableFuture; @CommandDeclaration(command = "debugimportworlds", - permission = "plots.admin", - requiredType = RequiredType.CONSOLE, - category = CommandCategory.TELEPORT) + permission = "plots.admin", + requiredType = RequiredType.CONSOLE, + category = CommandCategory.TELEPORT) public class DebugImportWorlds extends Command { private final PlotAreaManager plotAreaManager; private final WorldUtil worldUtil; - @Inject public DebugImportWorlds(@Nonnull final PlotAreaManager plotAreaManager, - @Nonnull final WorldUtil worldUtil) { + @Inject + public DebugImportWorlds( + final @NonNull PlotAreaManager plotAreaManager, + final @NonNull WorldUtil worldUtil + ) { super(MainCommand.getInstance(), true); this.plotAreaManager = plotAreaManager; this.worldUtil = worldUtil; } @Override - public CompletableFuture execute(PlotPlayer player, String[] args, - RunnableVal3 confirm, - RunnableVal2 whenDone) throws CommandException { + public CompletableFuture execute( + PlotPlayer player, String[] args, + RunnableVal3 confirm, + RunnableVal2 whenDone + ) throws CommandException { // UUID.nameUUIDFromBytes(("OfflinePlayer:" + player.getName()).getBytes(Charsets.UTF_8)) if (!(this.plotAreaManager instanceof SinglePlotAreaManager)) { player.sendMessage(TranslatableCaption.of("debugimportworlds.single_plot_area")); @@ -87,7 +92,7 @@ public class DebugImportWorlds extends Command { } if (uuid == null) { uuid = - UUID.nameUUIDFromBytes(("OfflinePlayer:" + name).getBytes(Charsets.UTF_8)); + UUID.nameUUIDFromBytes(("OfflinePlayer:" + name).getBytes(Charsets.UTF_8)); } while (new File(container, id.toCommaSeparatedString()).exists()) { id = id.getNextId(); @@ -101,4 +106,5 @@ public class DebugImportWorlds extends Command { player.sendMessage(TranslatableCaption.of("players.done")); return CompletableFuture.completedFuture(true); } + } diff --git a/Core/src/main/java/com/plotsquared/core/command/DebugLoadTest.java b/Core/src/main/java/com/plotsquared/core/command/DebugLoadTest.java index e8c77a7ad..fc04e133c 100644 --- a/Core/src/main/java/com/plotsquared/core/command/DebugLoadTest.java +++ b/Core/src/main/java/com/plotsquared/core/command/DebugLoadTest.java @@ -30,14 +30,16 @@ import com.plotsquared.core.database.DBFunc; import com.plotsquared.core.player.PlotPlayer; @CommandDeclaration(command = "debugloadtest", - permission = "plots.debugloadtest", - usage = "/plot debugloadtest", - category = CommandCategory.DEBUG, - requiredType = RequiredType.CONSOLE) + permission = "plots.debugloadtest", + usage = "/plot debugloadtest", + category = CommandCategory.DEBUG, + requiredType = RequiredType.CONSOLE) public class DebugLoadTest extends SubCommand { - @Override public boolean onCommand(PlotPlayer player, String[] args) { + @Override + public boolean onCommand(PlotPlayer player, String[] args) { PlotSquared.get().plots_tmp = DBFunc.getPlots(); return true; } + } diff --git a/Core/src/main/java/com/plotsquared/core/command/DebugPaste.java b/Core/src/main/java/com/plotsquared/core/command/DebugPaste.java index 8bae2f925..959f1e0e9 100644 --- a/Core/src/main/java/com/plotsquared/core/command/DebugPaste.java +++ b/Core/src/main/java/com/plotsquared/core/command/DebugPaste.java @@ -39,8 +39,8 @@ import com.plotsquared.core.player.PlotPlayer; import com.plotsquared.core.util.PremiumVerification; import com.plotsquared.core.util.task.TaskManager; import net.kyori.adventure.text.minimessage.Template; +import org.checkerframework.checker.nullness.qual.NonNull; -import javax.annotation.Nonnull; import java.io.File; import java.io.IOException; import java.lang.management.ManagementFactory; @@ -60,13 +60,17 @@ public class DebugPaste extends SubCommand { private final File configFile; private final File worldfile; - @Inject public DebugPaste(@ConfigFile @Nonnull final File configFile, - @WorldFile @Nonnull final File worldFile) { + @Inject + public DebugPaste( + @ConfigFile final @NonNull File configFile, + @WorldFile final @NonNull File worldFile + ) { this.configFile = configFile; this.worldfile = worldFile; } - @Override public boolean onCommand(final PlotPlayer player, String[] args) { + @Override + public boolean onCommand(final PlotPlayer player, String[] args) { TaskManager.runTaskAsync(() -> { try { StringBuilder b = new StringBuilder(); @@ -121,7 +125,8 @@ public class DebugPaste extends SubCommand { final File logFile = new File(PlotSquared.platform().getDirectory(), "../../logs/latest.log"); if (Files.size(logFile.toPath()) > 14_000_000) { - throw new IOException("The latest.log is larger than 14MB. Please reboot your server and submit a new paste."); + throw new IOException( + "The latest.log is larger than 14MB. Please reboot your server and submit a new paste."); } incendoPaster .addFile(logFile); @@ -129,29 +134,38 @@ public class DebugPaste extends SubCommand { player.sendMessage( TranslatableCaption.of("debugpaste.latest_log"), Template.of("file", "latest.log"), - Template.of("size", "14MB")); + Template.of("size", "14MB") + ); } try { incendoPaster.addFile(this.configFile); } catch (final IllegalArgumentException ignored) { - player.sendMessage(TranslatableCaption.of("debugpaste.empty_file"), - Template.of("file", "settings.yml")); + player.sendMessage( + TranslatableCaption.of("debugpaste.empty_file"), + Template.of("file", "settings.yml") + ); } try { incendoPaster.addFile(this.worldfile); } catch (final IllegalArgumentException ignored) { - player.sendMessage(TranslatableCaption.of("debugpaste.empty_file"), - Template.of("file", "worlds.yml")); + player.sendMessage( + TranslatableCaption.of("debugpaste.empty_file"), + Template.of("file", "worlds.yml") + ); } try { - final File MultiverseWorlds = new File(PlotSquared.platform().getDirectory(), - "../Multiverse-Core/worlds.yml"); + final File MultiverseWorlds = new File( + PlotSquared.platform().getDirectory(), + "../Multiverse-Core/worlds.yml" + ); incendoPaster.addFile(MultiverseWorlds, "Multiverse-Core/worlds.yml"); } catch (final IOException ignored) { - player.sendMessage(TranslatableCaption.of("debugpaste.skip_multiverse"), - Template.of("file", "worlds.yml")); + player.sendMessage( + TranslatableCaption.of("debugpaste.skip_multiverse"), + Template.of("file", "worlds.yml") + ); } try { @@ -187,4 +201,5 @@ public class DebugPaste extends SubCommand { }); return true; } + } diff --git a/Core/src/main/java/com/plotsquared/core/command/DebugRoadRegen.java b/Core/src/main/java/com/plotsquared/core/command/DebugRoadRegen.java index 32d1b0f00..97a4b0e7d 100644 --- a/Core/src/main/java/com/plotsquared/core/command/DebugRoadRegen.java +++ b/Core/src/main/java/com/plotsquared/core/command/DebugRoadRegen.java @@ -34,28 +34,30 @@ import com.plotsquared.core.player.PlotPlayer; import com.plotsquared.core.plot.Plot; import com.plotsquared.core.plot.PlotArea; import com.plotsquared.core.plot.PlotManager; -import net.kyori.adventure.text.minimessage.Template; import com.plotsquared.core.queue.QueueCoordinator; +import net.kyori.adventure.text.minimessage.Template; +import org.checkerframework.checker.nullness.qual.NonNull; -import javax.annotation.Nonnull; import java.util.Arrays; @CommandDeclaration(command = "debugroadregen", - usage = DebugRoadRegen.USAGE, - requiredType = RequiredType.NONE, - category = CommandCategory.DEBUG, - permission = "plots.debugroadregen") + usage = DebugRoadRegen.USAGE, + requiredType = RequiredType.NONE, + category = CommandCategory.DEBUG, + permission = "plots.debugroadregen") public class DebugRoadRegen extends SubCommand { public static final String USAGE = "/plot debugroadregen "; private final HybridUtils hybridUtils; - @Inject public DebugRoadRegen(@Nonnull final HybridUtils hybridUtils) { + @Inject + public DebugRoadRegen(final @NonNull HybridUtils hybridUtils) { this.hybridUtils = hybridUtils; } - @Override public boolean onCommand(PlotPlayer player, String[] args) { + @Override + public boolean onCommand(PlotPlayer player, String[] args) { if (args.length < 1) { player.sendMessage( TranslatableCaption.of("commandconfig.command_syntax"), @@ -97,10 +99,14 @@ public class DebugRoadRegen extends SubCommand { manager.createRoadSouthEast(plot, queue); queue.setCompleteTask(() -> { ; - player.sendMessage(TranslatableCaption.of("debugroadregen.regen_done"), - Template.of("value", String.valueOf(plot.getId()))); - player.sendMessage(TranslatableCaption.of("debugroadregen.regen_all"), - Template.of("value", "/plot regenallroads")); + player.sendMessage( + TranslatableCaption.of("debugroadregen.regen_done"), + Template.of("value", String.valueOf(plot.getId())) + ); + player.sendMessage( + TranslatableCaption.of("debugroadregen.regen_all"), + Template.of("value", "/plot regenallroads") + ); }); queue.enqueue(); } @@ -142,10 +148,14 @@ public class DebugRoadRegen extends SubCommand { player.sendMessage(TranslatableCaption.of("errors.invalid_plot_world")); return true; } - player.sendMessage(TranslatableCaption.of("debugroadregen.schematic"), - Template.of("command", "/plot createroadschematic")); - player.sendMessage(TranslatableCaption.of("debugroadregen.regenallroads"), - Template.of("command", "/plot regenallroads")); + player.sendMessage( + TranslatableCaption.of("debugroadregen.schematic"), + Template.of("command", "/plot createroadschematic") + ); + player.sendMessage( + TranslatableCaption.of("debugroadregen.regenallroads"), + Template.of("command", "/plot regenallroads") + ); boolean result = this.hybridUtils.scheduleSingleRegionRoadUpdate(plot, height); if (!result) { player.sendMessage(TranslatableCaption.of("debugexec.mass_schematic_update_in_progress")); @@ -153,4 +163,5 @@ public class DebugRoadRegen extends SubCommand { } return true; } + } diff --git a/Core/src/main/java/com/plotsquared/core/command/DebugSaveTest.java b/Core/src/main/java/com/plotsquared/core/command/DebugSaveTest.java index 09bbc8196..9bc8a03a8 100644 --- a/Core/src/main/java/com/plotsquared/core/command/DebugSaveTest.java +++ b/Core/src/main/java/com/plotsquared/core/command/DebugSaveTest.java @@ -34,17 +34,21 @@ import com.plotsquared.core.util.query.PlotQuery; import java.util.List; @CommandDeclaration(command = "debugsavetest", - permission = "plots.debugsavetest", - category = CommandCategory.DEBUG, - requiredType = RequiredType.CONSOLE, - usage = "/plot debugsavetest") + permission = "plots.debugsavetest", + category = CommandCategory.DEBUG, + requiredType = RequiredType.CONSOLE, + usage = "/plot debugsavetest") public class DebugSaveTest extends SubCommand { - @Override public boolean onCommand(final PlotPlayer player, String[] args) { + @Override + public boolean onCommand(final PlotPlayer player, String[] args) { final List plots = PlotQuery.newQuery().allPlots().asList(); player.sendMessage(TranslatableCaption.of("debugsavetest.starting")); - DBFunc.createPlotsAndData(plots, - () -> player.sendMessage(TranslatableCaption.of("debugsavetest.done"))); + DBFunc.createPlotsAndData( + plots, + () -> player.sendMessage(TranslatableCaption.of("debugsavetest.done")) + ); return true; } + } diff --git a/Core/src/main/java/com/plotsquared/core/command/Delete.java b/Core/src/main/java/com/plotsquared/core/command/Delete.java index 8632be51a..1b3a8033c 100644 --- a/Core/src/main/java/com/plotsquared/core/command/Delete.java +++ b/Core/src/main/java/com/plotsquared/core/command/Delete.java @@ -41,29 +41,32 @@ import com.plotsquared.core.util.Permissions; import com.plotsquared.core.util.PlotExpression; import com.plotsquared.core.util.task.TaskManager; import net.kyori.adventure.text.minimessage.Template; - -import javax.annotation.Nonnull; +import org.checkerframework.checker.nullness.qual.NonNull; @CommandDeclaration(command = "delete", - permission = "plots.delete", - usage = "/plot delete", - aliases = {"dispose", "del"}, - category = CommandCategory.CLAIMING, - requiredType = RequiredType.NONE, - confirmation = true) + permission = "plots.delete", + usage = "/plot delete", + aliases = {"dispose", "del"}, + category = CommandCategory.CLAIMING, + requiredType = RequiredType.NONE, + confirmation = true) public class Delete extends SubCommand { private final EventDispatcher eventDispatcher; private final EconHandler econHandler; - @Inject public Delete(@Nonnull final EventDispatcher eventDispatcher, - @Nonnull final EconHandler econHandler) { + @Inject + public Delete( + final @NonNull EventDispatcher eventDispatcher, + final @NonNull EconHandler econHandler + ) { this.eventDispatcher = eventDispatcher; this.econHandler = econHandler; } - - @Override public boolean onCommand(final PlotPlayer player, String[] args) { + + @Override + public boolean onCommand(final PlotPlayer player, String[] args) { Location location = player.getLocation(); final Plot plot = location.getPlotAbs(); if (plot == null) { @@ -82,20 +85,21 @@ public class Delete extends SubCommand { if (eventResult == Result.DENY) { player.sendMessage( TranslatableCaption.of("events.event_denied"), - Template.of("value", "Delete")); + Template.of("value", "Delete") + ); return true; } boolean force = eventResult == Result.FORCE; if (!force && !plot.isOwner(player.getUUID()) && !Permissions - .hasPermission(player, Permission.PERMISSION_ADMIN_COMMAND_DELETE)) { + .hasPermission(player, Permission.PERMISSION_ADMIN_COMMAND_DELETE)) { player.sendMessage(TranslatableCaption.of("permission.no_plot_perms")); return false; } final PlotArea plotArea = plot.getArea(); final java.util.Set plots = plot.getConnectedPlots(); final int currentPlots = Settings.Limit.GLOBAL ? - player.getPlotCount() : - player.getPlotCount(location.getWorldName()); + player.getPlotCount() : + player.getPlotCount(location.getWorldName()); Runnable run = () -> { if (plot.getRunning() > 0) { player.sendMessage(TranslatableCaption.of("errors.wait_for_timer")); @@ -138,4 +142,5 @@ public class Delete extends SubCommand { } return true; } + } diff --git a/Core/src/main/java/com/plotsquared/core/command/Deny.java b/Core/src/main/java/com/plotsquared/core/command/Deny.java index f8adf09cb..04f10ab1f 100644 --- a/Core/src/main/java/com/plotsquared/core/command/Deny.java +++ b/Core/src/main/java/com/plotsquared/core/command/Deny.java @@ -27,10 +27,10 @@ package com.plotsquared.core.command; import com.google.inject.Inject; import com.plotsquared.core.PlotSquared; -import com.plotsquared.core.permissions.Permission; import com.plotsquared.core.configuration.caption.TranslatableCaption; import com.plotsquared.core.database.DBFunc; import com.plotsquared.core.location.Location; +import com.plotsquared.core.permissions.Permission; import com.plotsquared.core.player.PlotPlayer; import com.plotsquared.core.plot.Plot; import com.plotsquared.core.plot.world.PlotAreaManager; @@ -41,34 +41,38 @@ import com.plotsquared.core.util.TabCompletions; import com.plotsquared.core.util.WorldUtil; import com.sk89q.worldedit.world.gamemode.GameModes; import net.kyori.adventure.text.minimessage.Template; +import org.checkerframework.checker.nullness.qual.NonNull; -import javax.annotation.Nonnull; import java.util.Collection; import java.util.Collections; import java.util.UUID; import java.util.concurrent.TimeoutException; @CommandDeclaration(command = "deny", - aliases = {"d", "ban"}, - usage = "/plot deny ", - category = CommandCategory.SETTINGS, - requiredType = RequiredType.PLAYER) + aliases = {"d", "ban"}, + usage = "/plot deny ", + category = CommandCategory.SETTINGS, + requiredType = RequiredType.PLAYER) public class Deny extends SubCommand { private final PlotAreaManager plotAreaManager; private final EventDispatcher eventDispatcher; private final WorldUtil worldUtil; - @Inject public Deny(@Nonnull final PlotAreaManager plotAreaManager, - @Nonnull final EventDispatcher eventDispatcher, - @Nonnull final WorldUtil worldUtil) { + @Inject + public Deny( + final @NonNull PlotAreaManager plotAreaManager, + final @NonNull EventDispatcher eventDispatcher, + final @NonNull WorldUtil worldUtil + ) { super(Argument.PlayerName); this.plotAreaManager = plotAreaManager; this.eventDispatcher = eventDispatcher; this.worldUtil = worldUtil; } - @Override public boolean onCommand(PlotPlayer player, String[] args) { + @Override + public boolean onCommand(PlotPlayer player, String[] args) { Location location = player.getLocation(); Plot plot = location.getPlotAbs(); @@ -83,13 +87,20 @@ public class Deny extends SubCommand { return false; } if (!plot.isOwner(player.getUUID()) && !Permissions - .hasPermission(player, Permission.PERMISSION_ADMIN_COMMAND_DENY)) { + .hasPermission(player, Permission.PERMISSION_ADMIN_COMMAND_DENY)) { player.sendMessage(TranslatableCaption.of("permission.no_plot_perms")); return true; } - if (!(player.hasPermission("plots.deny." + size) || Permissions.hasPermission(player, Permission.PERMISSION_ADMIN_COMMAND_DENY))) - player.sendMessage(TranslatableCaption.of("members.plot_max_members_denied"), Template.of("amount", String.valueOf(size))); + if (!(player.hasPermission("plots.deny." + size) || Permissions.hasPermission( + player, + Permission.PERMISSION_ADMIN_COMMAND_DENY + ))) { + player.sendMessage( + TranslatableCaption.of("members.plot_max_members_denied"), + Template.of("amount", String.valueOf(size)) + ); + } PlayerManager.getUUIDsFromString(args[0], (uuids, throwable) -> { if (throwable instanceof TimeoutException) { @@ -102,8 +113,8 @@ public class Deny extends SubCommand { } else { for (UUID uuid : uuids) { if (uuid == DBFunc.EVERYONE && !( - Permissions.hasPermission(player, Permission.PERMISSION_DENY_EVERYONE) || Permissions - .hasPermission(player, Permission.PERMISSION_ADMIN_COMMAND_DENY))) { + Permissions.hasPermission(player, Permission.PERMISSION_DENY_EVERYONE) || Permissions + .hasPermission(player, Permission.PERMISSION_ADMIN_COMMAND_DENY))) { player.sendMessage( TranslatableCaption.of("errors.invalid_player"), Template.of("value", args[0]) @@ -144,7 +155,8 @@ public class Deny extends SubCommand { return true; } - @Override public Collection tab(final PlotPlayer player, final String[] args, final boolean space) { + @Override + public Collection tab(final PlotPlayer player, final String[] args, final boolean space) { return TabCompletions.completePlayers(String.join(",", args).trim(), Collections.emptyList()); } @@ -176,4 +188,5 @@ public class Deny extends SubCommand { player.teleport(spawn); } } + } diff --git a/Core/src/main/java/com/plotsquared/core/command/Desc.java b/Core/src/main/java/com/plotsquared/core/command/Desc.java index fb9eaf004..3ef364c6b 100644 --- a/Core/src/main/java/com/plotsquared/core/command/Desc.java +++ b/Core/src/main/java/com/plotsquared/core/command/Desc.java @@ -35,41 +35,49 @@ import com.plotsquared.core.plot.Plot; import com.plotsquared.core.plot.flag.implementations.DescriptionFlag; import com.plotsquared.core.util.EventDispatcher; import net.kyori.adventure.text.minimessage.Template; - -import javax.annotation.Nonnull; +import org.checkerframework.checker.nullness.qual.NonNull; @CommandDeclaration(command = "setdescription", - permission = "plots.set.desc", - usage = "/plot desc ", - aliases = {"desc", "setdesc", "setd", "description"}, - category = CommandCategory.SETTINGS, - requiredType = RequiredType.PLAYER) + permission = "plots.set.desc", + usage = "/plot desc ", + aliases = {"desc", "setdesc", "setd", "description"}, + category = CommandCategory.SETTINGS, + requiredType = RequiredType.PLAYER) public class Desc extends SetCommand { private final EventDispatcher eventDispatcher; - - @Inject public Desc(@Nonnull final EventDispatcher eventDispatcher) { + + @Inject + public Desc(final @NonNull EventDispatcher eventDispatcher) { this.eventDispatcher = eventDispatcher; } - - @Override public boolean set(PlotPlayer player, Plot plot, String desc) { + + @Override + public boolean set(PlotPlayer player, Plot plot, String desc) { if (desc.isEmpty()) { - PlotFlagRemoveEvent event = this.eventDispatcher.callFlagRemove(plot.getFlagContainer().getFlag(DescriptionFlag.class), plot); + PlotFlagRemoveEvent event = this.eventDispatcher.callFlagRemove(plot + .getFlagContainer() + .getFlag(DescriptionFlag.class), plot); if (event.getEventResult() == Result.DENY) { player.sendMessage( - TranslatableCaption.of("events.event_denied"), - Template.of("value", "Description removal")); + TranslatableCaption.of("events.event_denied"), + Template.of("value", "Description removal") + ); return false; } plot.removeFlag(event.getFlag()); player.sendMessage(TranslatableCaption.of("desc.desc_unset")); return true; } - PlotFlagAddEvent event = this.eventDispatcher.callFlagAdd(plot.getFlagContainer().getFlag(DescriptionFlag.class).createFlagInstance(desc), plot); + PlotFlagAddEvent event = this.eventDispatcher.callFlagAdd(plot + .getFlagContainer() + .getFlag(DescriptionFlag.class) + .createFlagInstance(desc), plot); if (event.getEventResult() == Result.DENY) { player.sendMessage( TranslatableCaption.of("events.event_denied"), - Template.of("value", "Description set")); + Template.of("value", "Description set") + ); return false; } boolean result = plot.setFlag(event.getFlag()); @@ -80,4 +88,5 @@ public class Desc extends SetCommand { player.sendMessage(TranslatableCaption.of("desc.desc_set")); return true; } + } diff --git a/Core/src/main/java/com/plotsquared/core/command/Dislike.java b/Core/src/main/java/com/plotsquared/core/command/Dislike.java index b4aa51661..023a22943 100644 --- a/Core/src/main/java/com/plotsquared/core/command/Dislike.java +++ b/Core/src/main/java/com/plotsquared/core/command/Dislike.java @@ -30,8 +30,8 @@ import com.plotsquared.core.permissions.Permission; import com.plotsquared.core.player.PlotPlayer; import com.plotsquared.core.util.Permissions; import com.plotsquared.core.util.TabCompletions; +import org.checkerframework.checker.nullness.qual.NonNull; -import javax.annotation.Nonnull; import java.util.Collection; import java.util.Collections; import java.util.LinkedList; @@ -39,19 +39,21 @@ import java.util.List; import java.util.stream.Collectors; @CommandDeclaration(command = "dislike", - permission = "plots.dislike", - usage = "/plot dislike [next|purge]", - category = CommandCategory.INFO, - requiredType = RequiredType.PLAYER) + permission = "plots.dislike", + usage = "/plot dislike [next|purge]", + category = CommandCategory.INFO, + requiredType = RequiredType.PLAYER) public class Dislike extends SubCommand { private final Like like; - @Inject public Dislike(@Nonnull final Like like) { + @Inject + public Dislike(final @NonNull Like like) { this.like = like; } - @Override public boolean onCommand(PlotPlayer player, String[] args) { + @Override + public boolean onCommand(PlotPlayer player, String[] args) { return this.like.handleLike(player, args, false); } @@ -62,7 +64,9 @@ public class Dislike extends SubCommand { if (Permissions.hasPermission(player, Permission.PERMISSION_ADMIN_COMMAND_PURGE_RATINGS)) { completions.add("purge"); } - final List commands = completions.stream().filter(completion -> completion.toLowerCase().startsWith(args[0].toLowerCase())) + final List commands = completions.stream().filter(completion -> completion + .toLowerCase() + .startsWith(args[0].toLowerCase())) .map(completion -> new Command(null, true, completion, "", RequiredType.PLAYER, CommandCategory.INFO) { }).collect(Collectors.toCollection(LinkedList::new)); if (Permissions.hasPermission(player, Permission.PERMISSION_RATE) && args[0].length() > 0) { diff --git a/Core/src/main/java/com/plotsquared/core/command/Done.java b/Core/src/main/java/com/plotsquared/core/command/Done.java index a82caf1c8..4a3347e9f 100644 --- a/Core/src/main/java/com/plotsquared/core/command/Done.java +++ b/Core/src/main/java/com/plotsquared/core/command/Done.java @@ -26,7 +26,6 @@ package com.plotsquared.core.command; import com.google.inject.Inject; -import com.plotsquared.core.permissions.Permission; import com.plotsquared.core.configuration.Settings; import com.plotsquared.core.configuration.caption.TranslatableCaption; import com.plotsquared.core.events.PlotDoneEvent; @@ -34,6 +33,7 @@ import com.plotsquared.core.events.PlotFlagAddEvent; import com.plotsquared.core.events.Result; import com.plotsquared.core.generator.HybridUtils; import com.plotsquared.core.location.Location; +import com.plotsquared.core.permissions.Permission; import com.plotsquared.core.player.PlotPlayer; import com.plotsquared.core.plot.Plot; import com.plotsquared.core.plot.expiration.ExpireManager; @@ -44,26 +44,29 @@ import com.plotsquared.core.util.EventDispatcher; import com.plotsquared.core.util.Permissions; import com.plotsquared.core.util.task.RunnableVal; import net.kyori.adventure.text.minimessage.Template; - -import javax.annotation.Nonnull; +import org.checkerframework.checker.nullness.qual.NonNull; @CommandDeclaration(command = "done", - aliases = {"submit"}, - permission = "plots.done", - category = CommandCategory.SETTINGS, - requiredType = RequiredType.NONE) + aliases = {"submit"}, + permission = "plots.done", + category = CommandCategory.SETTINGS, + requiredType = RequiredType.NONE) public class Done extends SubCommand { private final EventDispatcher eventDispatcher; private final HybridUtils hybridUtils; - @Inject public Done(@Nonnull final EventDispatcher eventDispatcher, - @Nonnull final HybridUtils hybridUtils) { + @Inject + public Done( + final @NonNull EventDispatcher eventDispatcher, + final @NonNull HybridUtils hybridUtils + ) { this.eventDispatcher = eventDispatcher; this.hybridUtils = hybridUtils; } - - @Override public boolean onCommand(final PlotPlayer player, String[] args) { + + @Override + public boolean onCommand(final PlotPlayer player, String[] args) { Location location = player.getLocation(); final Plot plot = location.getPlotAbs(); if ((plot == null) || !plot.hasOwner()) { @@ -74,12 +77,13 @@ public class Done extends SubCommand { if (event.getEventResult() == Result.DENY) { player.sendMessage( TranslatableCaption.of("events.event_denied"), - Template.of("value", "Done")); + Template.of("value", "Done") + ); return true; } boolean force = event.getEventResult() == Result.FORCE; if (!force && !plot.isOwner(player.getUUID()) && !Permissions - .hasPermission(player, Permission.PERMISSION_ADMIN_COMMAND_DONE)) { + .hasPermission(player, Permission.PERMISSION_ADMIN_COMMAND_DONE)) { player.sendMessage(TranslatableCaption.of("permission.no_plot_perms")); return false; } @@ -99,10 +103,11 @@ public class Done extends SubCommand { plot.removeRunning(); } else { this.hybridUtils.analyzePlot(plot, new RunnableVal() { - @Override public void run(PlotAnalysis value) { + @Override + public void run(PlotAnalysis value) { plot.removeRunning(); boolean result = - value.getComplexity(doneRequirements) <= doneRequirements.THRESHOLD; + value.getComplexity(doneRequirements) <= doneRequirements.THRESHOLD; finish(plot, player, result); } }); @@ -117,7 +122,7 @@ public class Done extends SubCommand { } long flagValue = System.currentTimeMillis() / 1000; PlotFlag plotFlag = plot.getFlagContainer().getFlag(DoneFlag.class) - .createFlagInstance(Long.toString(flagValue)); + .createFlagInstance(Long.toString(flagValue)); PlotFlagAddEvent event = new PlotFlagAddEvent(plotFlag, plot); if (event.getEventResult() == Result.DENY) { player.sendMessage(TranslatableCaption.of("events.event_denied")); @@ -126,4 +131,5 @@ public class Done extends SubCommand { plot.setFlag(plotFlag); player.sendMessage(TranslatableCaption.of("done.done_success")); } + } diff --git a/Core/src/main/java/com/plotsquared/core/command/Download.java b/Core/src/main/java/com/plotsquared/core/command/Download.java index 8b3942951..67426b452 100644 --- a/Core/src/main/java/com/plotsquared/core/command/Download.java +++ b/Core/src/main/java/com/plotsquared/core/command/Download.java @@ -42,8 +42,8 @@ import com.plotsquared.core.util.TabCompletions; import com.plotsquared.core.util.WorldUtil; import com.plotsquared.core.util.task.RunnableVal; import net.kyori.adventure.text.minimessage.Template; +import org.checkerframework.checker.nullness.qual.NonNull; -import javax.annotation.Nonnull; import java.net.URL; import java.util.Collection; import java.util.Collections; @@ -52,29 +52,34 @@ import java.util.List; import java.util.stream.Collectors; @CommandDeclaration(usage = "/plot download [schem | world]", - command = "download", - aliases = {"dl"}, - category = CommandCategory.SCHEMATIC, - requiredType = RequiredType.NONE, - permission = "plots.download") + command = "download", + aliases = {"dl"}, + category = CommandCategory.SCHEMATIC, + requiredType = RequiredType.NONE, + permission = "plots.download") public class Download extends SubCommand { private final PlotAreaManager plotAreaManager; private final PlotUploader plotUploader; - @Nonnull private final SchematicHandler schematicHandler; + @NonNull + private final SchematicHandler schematicHandler; private final WorldUtil worldUtil; - @Inject public Download(@Nonnull final PlotAreaManager plotAreaManager, - @Nonnull final PlotUploader plotUploader, - @Nonnull final SchematicHandler schematicHandler, - @Nonnull final WorldUtil worldUtil) { + @Inject + public Download( + final @NonNull PlotAreaManager plotAreaManager, + final @NonNull PlotUploader plotUploader, + final @NonNull SchematicHandler schematicHandler, + final @NonNull WorldUtil worldUtil + ) { this.plotAreaManager = plotAreaManager; this.plotUploader = plotUploader; this.schematicHandler = schematicHandler; this.worldUtil = worldUtil; } - @Override public boolean onCommand(final PlotPlayer player, String[] args) { + @Override + public boolean onCommand(final PlotPlayer player, String[] args) { String world = player.getLocation().getWorldName(); if (!this.plotAreaManager.hasPlotArea(world)) { player.sendMessage(TranslatableCaption.of("errors.not_in_plot_world")); @@ -90,12 +95,12 @@ public class Download extends SubCommand { return false; } if ((Settings.Done.REQUIRED_FOR_DOWNLOAD && (!DoneFlag.isDone(plot))) && !Permissions - .hasPermission(player, Permission.PERMISSION_ADMIN_COMMAND_DOWNLOAD)) { + .hasPermission(player, Permission.PERMISSION_ADMIN_COMMAND_DOWNLOAD)) { player.sendMessage(TranslatableCaption.of("done.done_not_done")); return false; } if ((!plot.isOwner(player.getUUID())) && !Permissions - .hasPermission(player, Permission.PERMISSION_ADMIN.toString())) { + .hasPermission(player, Permission.PERMISSION_ADMIN.toString())) { player.sendMessage(TranslatableCaption.of("permission.no_plot_perms")); return false; } @@ -104,7 +109,7 @@ public class Download extends SubCommand { return false; } if (args.length == 0 || (args.length == 1 && StringMan - .isEqualIgnoreCaseToAny(args[0], "sch", "schem", "schematic"))) { + .isEqualIgnoreCaseToAny(args[0], "sch", "schem", "schematic"))) { if (plot.getVolume() > Integer.MAX_VALUE) { player.sendMessage(TranslatableCaption.of("schematics.schematic_too_large")); return false; @@ -112,7 +117,7 @@ public class Download extends SubCommand { plot.addRunning(); upload(player, plot); } else if (args.length == 1 && StringMan - .isEqualIgnoreCaseToAny(args[0], "mcr", "world", "mca")) { + .isEqualIgnoreCaseToAny(args[0], "mcr", "world", "mca")) { if (!Permissions.hasPermission(player, Permission.PERMISSION_DOWNLOAD_WORLD)) { player.sendMessage( TranslatableCaption.of("permission.no_permission"), @@ -124,10 +129,14 @@ public class Download extends SubCommand { plot.addRunning(); this.worldUtil.saveWorld(world); this.worldUtil.upload(plot, null, null, new RunnableVal() { - @Override public void run(URL url) { + @Override + public void run(URL url) { plot.removeRunning(); if (url == null) { - player.sendMessage(TranslatableCaption.of("web.generating_link_failed"), Template.of("plot", String.valueOf(plot.getId()))); + player.sendMessage( + TranslatableCaption.of("web.generating_link_failed"), + Template.of("plot", String.valueOf(plot.getId())) + ); return; } player.sendMessage(TranslatableCaption.of("web.generation_link_success"), Template.of("url", url.toString())); @@ -151,8 +160,17 @@ public class Download extends SubCommand { if (Permissions.hasPermission(player, Permission.PERMISSION_DOWNLOAD_WORLD)) { completions.add("world"); } - final List commands = completions.stream().filter(completion -> completion.toLowerCase().startsWith(args[0].toLowerCase())) - .map(completion -> new Command(null, true, completion, "", RequiredType.NONE, CommandCategory.ADMINISTRATION) { + final List commands = completions.stream().filter(completion -> completion + .toLowerCase() + .startsWith(args[0].toLowerCase())) + .map(completion -> new Command( + null, + true, + completion, + "", + RequiredType.NONE, + CommandCategory.ADMINISTRATION + ) { }).collect(Collectors.toCollection(LinkedList::new)); if (Permissions.hasPermission(player, Permission.PERMISSION_DOWNLOAD) && args[0].length() > 0) { commands.addAll(TabCompletions.completePlayers(args[0], Collections.emptyList())); @@ -173,7 +191,8 @@ public class Download extends SubCommand { player.sendMessage( TranslatableCaption.of("web.generation_link_success"), Template.of("download", value.toString()), - Template.of("delete", "Not available")); + Template.of("delete", "Not available") + ); player.sendMessage(StaticCaption.of(value.toString())); } }); @@ -184,13 +203,18 @@ public class Download extends SubCommand { this.plotUploader.upload(plot) .whenComplete((result, throwable) -> { if (throwable != null || !result.isSuccess()) { - player.sendMessage(TranslatableCaption.of("web.generating_link_failed"), Template.of("plot", String.valueOf(plot.getId()))); + player.sendMessage( + TranslatableCaption.of("web.generating_link_failed"), + Template.of("plot", String.valueOf(plot.getId())) + ); } else { player.sendMessage( TranslatableCaption.of("web.generation_link_success"), Template.of("download", result.getDownloadUrl()), - Template.of("delete", result.getDeletionUrl())); + Template.of("delete", result.getDeletionUrl()) + ); } }); } + } diff --git a/Core/src/main/java/com/plotsquared/core/command/FlagCommand.java b/Core/src/main/java/com/plotsquared/core/command/FlagCommand.java index f72409e6d..d6260c5e8 100644 --- a/Core/src/main/java/com/plotsquared/core/command/FlagCommand.java +++ b/Core/src/main/java/com/plotsquared/core/command/FlagCommand.java @@ -53,9 +53,9 @@ import com.plotsquared.core.util.task.RunnableVal3; import net.kyori.adventure.text.Component; import net.kyori.adventure.text.TextComponent; import net.kyori.adventure.text.minimessage.Template; +import org.checkerframework.checker.nullness.qual.NonNull; +import org.checkerframework.checker.nullness.qual.Nullable; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; @@ -70,11 +70,11 @@ import java.util.stream.Collectors; import java.util.stream.Stream; @CommandDeclaration(command = "flag", - aliases = {"f", "flag"}, - usage = "/plot flag ", - category = CommandCategory.SETTINGS, - requiredType = RequiredType.NONE, - permission = "plots.flag") + aliases = {"f", "flag"}, + usage = "/plot flag ", + category = CommandCategory.SETTINGS, + requiredType = RequiredType.NONE, + permission = "plots.flag") @SuppressWarnings("unused") public final class FlagCommand extends Command { @@ -90,8 +90,10 @@ public final class FlagCommand extends Command { return true; } - private static boolean checkPermValue(@Nonnull final PlotPlayer player, - @Nonnull final PlotFlag flag, @Nonnull String key, @Nonnull String value) { + private static boolean checkPermValue( + final @NonNull PlotPlayer player, + final @NonNull PlotFlag flag, @NonNull String key, @NonNull String value + ) { key = key.toLowerCase(); value = value.toLowerCase(); String perm = Permission.PERMISSION_SET_FLAG_KEY_VALUE.format(key.toLowerCase(), value.toLowerCase()); @@ -101,12 +103,17 @@ public final class FlagCommand extends Command { perm = perm.substring(0, perm.length() - value.length() - 1); if (numeric > 0) { int checkRange = PlotSquared.get().getPlatform().equalsIgnoreCase("bukkit") ? - numeric : - Settings.Limit.MAX_PLOTS; + numeric : + Settings.Limit.MAX_PLOTS; final boolean result = player.hasPermissionRange(perm, checkRange) >= numeric; if (!result) { - player.sendMessage(TranslatableCaption.of("permission.no_permission"), - Template.of("node", Permission.PERMISSION_SET_FLAG_KEY_VALUE.format(key.toLowerCase(), value.toLowerCase()))); + player.sendMessage( + TranslatableCaption.of("permission.no_permission"), + Template.of( + "node", + Permission.PERMISSION_SET_FLAG_KEY_VALUE.format(key.toLowerCase(), value.toLowerCase()) + ) + ); } return result; } @@ -117,7 +124,10 @@ public final class FlagCommand extends Command { try { PlotFlag, ?> parsedFlag = listFlag.parse(value); for (final Object entry : parsedFlag.getValue()) { - final String permission = Permission.PERMISSION_SET_FLAG_KEY_VALUE.format(key.toLowerCase(), entry.toString().toLowerCase()); + final String permission = Permission.PERMISSION_SET_FLAG_KEY_VALUE.format( + key.toLowerCase(), + entry.toString().toLowerCase() + ); final boolean result = Permissions.hasPermission(player, permission); if (!result) { player.sendMessage(TranslatableCaption.of("permission.no_permission"), Template.of("node", permission)); @@ -149,7 +159,7 @@ public final class FlagCommand extends Command { * * @return true if the player is allowed to modify the flags at their current location */ - private static boolean checkRequirements(@Nonnull final PlotPlayer player) { + private static boolean checkRequirements(final @NonNull PlotPlayer player) { final Location location = player.getLocation(); final Plot plot = location.getPlotAbs(); if (plot == null) { @@ -161,7 +171,7 @@ public final class FlagCommand extends Command { return false; } if (!plot.isOwner(player.getUUID()) && !Permissions - .hasPermission(player, Permission.PERMISSION_SET_FLAG_OTHER)) { + .hasPermission(player, Permission.PERMISSION_SET_FLAG_OTHER)) { player.sendMessage( TranslatableCaption.of("permission.no_permission"), Template.of("node", String.valueOf(Permission.PERMISSION_SET_FLAG_OTHER)) @@ -179,16 +189,21 @@ public final class FlagCommand extends Command { * @param arg String to extract flag from * @return The flag, if found, else null */ - @Nullable private static PlotFlag getFlag(@Nonnull final PlotPlayer player, - @Nonnull final String arg) { + @Nullable + private static PlotFlag getFlag( + final @NonNull PlotPlayer player, + final @NonNull String arg + ) { if (arg.length() > 0) { final PlotFlag flag = GlobalFlagContainer.getInstance().getFlagFromString(arg); if (flag instanceof InternalFlag || flag == null) { boolean suggested = false; try { final StringComparison> stringComparison = - new StringComparison<>(arg, - GlobalFlagContainer.getInstance().getFlagMap().values()); + new StringComparison<>( + arg, + GlobalFlagContainer.getInstance().getFlagMap().values() + ); final String best = stringComparison.getBestMatch(); if (best != null) { player.sendMessage( @@ -209,41 +224,45 @@ public final class FlagCommand extends Command { } @Override - public CompletableFuture execute(PlotPlayer player, String[] args, - RunnableVal3 confirm, - RunnableVal2 whenDone) throws CommandException { + public CompletableFuture execute( + PlotPlayer player, String[] args, + RunnableVal3 confirm, + RunnableVal2 whenDone + ) throws CommandException { if (args.length == 0 || !Arrays - .asList("set", "s", "list", "l", "delete", "remove", "r", "add", "a", "info", "i") - .contains(args[0].toLowerCase(Locale.ENGLISH))) { + .asList("set", "s", "list", "l", "delete", "remove", "r", "add", "a", "info", "i") + .contains(args[0].toLowerCase(Locale.ENGLISH))) { new HelpMenu(player).setCategory(CommandCategory.SETTINGS) - .setCommands(this.getCommands()).generateMaxPages() - .generatePage(0, getParent().toString(), player).render(); + .setCommands(this.getCommands()).generateMaxPages() + .generatePage(0, getParent().toString(), player).render(); return CompletableFuture.completedFuture(true); } return super.execute(player, args, confirm, whenDone); } @Override - public Collection tab(final PlotPlayer player, final String[] args, - final boolean space) { + public Collection tab( + final PlotPlayer player, final String[] args, + final boolean space + ) { if (args.length == 1) { return Stream - .of("set", "add", "remove", "delete", "info", "list") - .filter(value -> value.startsWith(args[0].toLowerCase(Locale.ENGLISH))) - .map(value -> new Command(null, false, value, "", RequiredType.NONE, null) { - }).collect(Collectors.toList()); + .of("set", "add", "remove", "delete", "info", "list") + .filter(value -> value.startsWith(args[0].toLowerCase(Locale.ENGLISH))) + .map(value -> new Command(null, false, value, "", RequiredType.NONE, null) { + }).collect(Collectors.toList()); } else if (Arrays.asList("set", "add", "remove", "delete", "info") - .contains(args[0].toLowerCase(Locale.ENGLISH)) && args.length == 2) { + .contains(args[0].toLowerCase(Locale.ENGLISH)) && args.length == 2) { return GlobalFlagContainer.getInstance().getRecognizedPlotFlags().stream() - .filter(flag -> !(flag instanceof InternalFlag)) - .filter(flag -> flag.getName().startsWith(args[1].toLowerCase(Locale.ENGLISH))) - .map(flag -> new Command(null, false, flag.getName(), "", RequiredType.NONE, null) { - }).collect(Collectors.toList()); + .filter(flag -> !(flag instanceof InternalFlag)) + .filter(flag -> flag.getName().startsWith(args[1].toLowerCase(Locale.ENGLISH))) + .map(flag -> new Command(null, false, flag.getName(), "", RequiredType.NONE, null) { + }).collect(Collectors.toList()); } else if (Arrays.asList("set", "add", "remove", "delete") - .contains(args[0].toLowerCase(Locale.ENGLISH)) && args.length == 3) { + .contains(args[0].toLowerCase(Locale.ENGLISH)) && args.length == 3) { try { final PlotFlag flag = - GlobalFlagContainer.getInstance().getFlagFromString(args[1]); + GlobalFlagContainer.getInstance().getFlagFromString(args[1]); if (flag != null) { Stream stream = flag.getTabCompletions().stream(); if (flag instanceof ListFlag && args[2].contains(",")) { @@ -261,16 +280,18 @@ public final class FlagCommand extends Command { cmp = ""; } return stream - .filter(value -> value.startsWith(cmp.toLowerCase(Locale.ENGLISH))).map( - value -> new Command(null, false, prefix + value, "", - RequiredType.NONE, null) { - }).collect(Collectors.toList()); + .filter(value -> value.startsWith(cmp.toLowerCase(Locale.ENGLISH))).map( + value -> new Command(null, false, prefix + value, "", + RequiredType.NONE, null + ) { + }).collect(Collectors.toList()); } else { return stream - .filter(value -> value.startsWith(args[2].toLowerCase(Locale.ENGLISH))) - .map(value -> new Command(null, false, value, "", RequiredType.NONE, - null) { - }).collect(Collectors.toList()); + .filter(value -> value.startsWith(args[2].toLowerCase(Locale.ENGLISH))) + .map(value -> new Command(null, false, value, "", RequiredType.NONE, + null + ) { + }).collect(Collectors.toList()); } } } catch (final Exception e) { @@ -280,14 +301,16 @@ public final class FlagCommand extends Command { } @CommandDeclaration(command = "set", - aliases = {"s", "set"}, - usage = "/plot flag set ", - category = CommandCategory.SETTINGS, - requiredType = RequiredType.NONE, - permission = "plots.set.flag") - public void set(final Command command, final PlotPlayer player, final String[] args, - final RunnableVal3 confirm, - final RunnableVal2 whenDone) { + aliases = {"s", "set"}, + usage = "/plot flag set ", + category = CommandCategory.SETTINGS, + requiredType = RequiredType.NONE, + permission = "plots.set.flag") + public void set( + final Command command, final PlotPlayer player, final String[] args, + final RunnableVal3 confirm, + final RunnableVal2 whenDone + ) { if (!checkRequirements(player)) { return; } @@ -307,7 +330,8 @@ public final class FlagCommand extends Command { if (event.getEventResult() == Result.DENY) { player.sendMessage( TranslatableCaption.of("events.event_denied"), - Template.of("value", "Flag set")); + Template.of("value", "Flag set") + ); return; } boolean force = event.getEventResult() == Result.FORCE; @@ -332,14 +356,16 @@ public final class FlagCommand extends Command { } @CommandDeclaration(command = "add", - aliases = {"a", "add"}, - usage = "/plot flag add ", - category = CommandCategory.SETTINGS, - requiredType = RequiredType.NONE, - permission = "plots.flag.add") - public void add(final Command command, PlotPlayer player, final String[] args, - final RunnableVal3 confirm, - final RunnableVal2 whenDone) { + aliases = {"a", "add"}, + usage = "/plot flag add ", + category = CommandCategory.SETTINGS, + requiredType = RequiredType.NONE, + permission = "plots.flag.add") + public void add( + final Command command, PlotPlayer player, final String[] args, + final RunnableVal3 confirm, + final RunnableVal2 whenDone + ) { if (!checkRequirements(player)) { return; } @@ -359,12 +385,13 @@ public final class FlagCommand extends Command { if (event.getEventResult() == Result.DENY) { player.sendMessage( TranslatableCaption.of("events.event_denied"), - Template.of("value", "Flag add")); + Template.of("value", "Flag add") + ); return; } boolean force = event.getEventResult() == Result.FORCE; final PlotFlag localFlag = player.getLocation().getPlotAbs().getFlagContainer() - .getFlag(event.getFlag().getClass()); + .getFlag(event.getFlag().getClass()); if (!force) { for (String entry : args[1].split(",")) { if (!checkPermValue(player, event.getFlag(), args[0], entry)) { @@ -386,7 +413,7 @@ public final class FlagCommand extends Command { return; } boolean result = - player.getLocation().getPlotAbs().setFlag(localFlag.merge(parsed.getValue())); + player.getLocation().getPlotAbs().setFlag(localFlag.merge(parsed.getValue())); if (!result) { player.sendMessage(TranslatableCaption.of("flag.flag_not_added")); return; @@ -395,14 +422,16 @@ public final class FlagCommand extends Command { } @CommandDeclaration(command = "remove", - aliases = {"r", "remove", "delete"}, - usage = "/plot flag remove [values]", - category = CommandCategory.SETTINGS, - requiredType = RequiredType.NONE, - permission = "plots.flag.remove") - public void remove(final Command command, PlotPlayer player, final String[] args, - final RunnableVal3 confirm, - final RunnableVal2 whenDone) { + aliases = {"r", "remove", "delete"}, + usage = "/plot flag remove [values]", + category = CommandCategory.SETTINGS, + requiredType = RequiredType.NONE, + permission = "plots.flag.remove") + public void remove( + final Command command, PlotPlayer player, final String[] args, + final RunnableVal3 confirm, + final RunnableVal2 whenDone + ) { if (!checkRequirements(player)) { return; } @@ -422,15 +451,18 @@ public final class FlagCommand extends Command { if (event.getEventResult() == Result.DENY) { player.sendMessage( TranslatableCaption.of("events.event_denied"), - Template.of("value", "Flag remove")); + Template.of("value", "Flag remove") + ); return; } boolean force = event.getEventResult() == Result.FORCE; flag = event.getFlag(); if (!force && !Permissions.hasPermission(player, Permission.PERMISSION_SET_FLAG_KEY.format(args[0].toLowerCase()))) { if (args.length != 2) { - player.sendMessage(TranslatableCaption.of("permission.no_permission"), - Template.of("node", Permission.PERMISSION_SET_FLAG_KEY.format(args[0].toLowerCase()))); + player.sendMessage( + TranslatableCaption.of("permission.no_permission"), + Template.of("node", Permission.PERMISSION_SET_FLAG_KEY.format(args[0].toLowerCase())) + ); return; } } @@ -438,7 +470,7 @@ public final class FlagCommand extends Command { String value = StringMan.join(Arrays.copyOfRange(args, 1, args.length), " "); final ListFlag listFlag = (ListFlag) flag; final List list = - new ArrayList(plot.getFlag((Class>) listFlag.getClass())); + new ArrayList(plot.getFlag((Class>) listFlag.getClass())); final PlotFlag parsedFlag; try { parsedFlag = listFlag.parse(value); @@ -498,14 +530,16 @@ public final class FlagCommand extends Command { } @CommandDeclaration(command = "list", - aliases = {"l", "list", "flags"}, - usage = "/plot flag list", - category = CommandCategory.SETTINGS, - requiredType = RequiredType.NONE, - permission = "plots.flag.list") - public void list(final Command command, final PlotPlayer player, final String[] args, - final RunnableVal3 confirm, - final RunnableVal2 whenDone) { + aliases = {"l", "list", "flags"}, + usage = "/plot flag list", + category = CommandCategory.SETTINGS, + requiredType = RequiredType.NONE, + permission = "plots.flag.list") + public void list( + final Command command, final PlotPlayer player, final String[] args, + final RunnableVal3 confirm, + final RunnableVal2 whenDone + ) { if (!checkRequirements(player)) { return; } @@ -517,36 +551,43 @@ public final class FlagCommand extends Command { } final String category = MINI_MESSAGE.stripTokens(plotFlag.getFlagCategory().getComponent(player)); final Collection flagList = - flags.computeIfAbsent(category, k -> new ArrayList<>()); + flags.computeIfAbsent(category, k -> new ArrayList<>()); flagList.add(plotFlag.getName()); } for (final Map.Entry> entry : flags.entrySet()) { Collections.sort(entry.getValue()); Component category = - MINI_MESSAGE.parse(TranslatableCaption.of("flag.flag_list_categories").getComponent(player), - Template.of("category", entry.getKey())); + MINI_MESSAGE.parse( + TranslatableCaption.of("flag.flag_list_categories").getComponent(player), + Template.of("category", entry.getKey()) + ); TextComponent.Builder builder = Component.text().append(category); final Iterator flagIterator = entry.getValue().iterator(); while (flagIterator.hasNext()) { final String flag = flagIterator.next(); builder.append(MINI_MESSAGE - .parse(TranslatableCaption.of("flag.flag_list_flag").getComponent(player), Template.of("command", "/plot flag info " + flag), - Template.of("flag", flag), Template.of("suffix", flagIterator.hasNext() ? ", " : ""))); + .parse(TranslatableCaption.of("flag.flag_list_flag").getComponent(player), + Template.of("command", "/plot flag info " + flag), + Template.of("flag", flag), + Template.of("suffix", flagIterator.hasNext() ? ", " : "") + )); } player.sendMessage(StaticCaption.of(MINI_MESSAGE.serialize(builder.build()))); } } @CommandDeclaration(command = "info", - aliases = {"i", "info"}, - usage = "/plot flag info ", - category = CommandCategory.SETTINGS, - requiredType = RequiredType.NONE, - permission = "plots.flag.info") - public void info(final Command command, final PlotPlayer player, final String[] args, - final RunnableVal3 confirm, - final RunnableVal2 whenDone) { + aliases = {"i", "info"}, + usage = "/plot flag info ", + category = CommandCategory.SETTINGS, + requiredType = RequiredType.NONE, + permission = "plots.flag.info") + public void info( + final Command command, final PlotPlayer player, final String[] args, + final RunnableVal3 confirm, + final RunnableVal2 whenDone + ) { if (!checkRequirements(player)) { return; } @@ -563,21 +604,27 @@ public final class FlagCommand extends Command { // Flag name player.sendMessage(TranslatableCaption.of("flag.flag_info_name"), Template.of("flag", plotFlag.getName())); // Flag category - player.sendMessage(TranslatableCaption.of("flag.flag_info_category"), - Templates.of(player, "value", plotFlag.getFlagCategory())); + player.sendMessage( + TranslatableCaption.of("flag.flag_info_category"), + Templates.of(player, "value", plotFlag.getFlagCategory()) + ); // Flag description // TODO maybe merge and \n instead? player.sendMessage(TranslatableCaption.of("flag.flag_info_description")); player.sendMessage(plotFlag.getFlagDescription()); // Flag example - player.sendMessage(TranslatableCaption.of("flag.flag_info_example"), + player.sendMessage( + TranslatableCaption.of("flag.flag_info_example"), Template.of("flag", plotFlag.getName()), - Template.of("value", plotFlag.getExample())); + Template.of("value", plotFlag.getExample()) + ); // Default value final String defaultValue = player.getLocation().getPlotArea().getFlagContainer() - .getFlagErased(plotFlag.getClass()).toString(); - player.sendMessage(TranslatableCaption.of("flag.flag_info_default_value"), - Template.of("value", defaultValue)); + .getFlagErased(plotFlag.getClass()).toString(); + player.sendMessage( + TranslatableCaption.of("flag.flag_info_default_value"), + Template.of("value", defaultValue) + ); // Footer. Done this way to prevent the duplicate-message-thingy from catching it player.sendMessage(TranslatableCaption.of("flag.flag_info_footer")); } diff --git a/Core/src/main/java/com/plotsquared/core/command/Grant.java b/Core/src/main/java/com/plotsquared/core/command/Grant.java index f28ee6a5b..b621f5b2d 100644 --- a/Core/src/main/java/com/plotsquared/core/command/Grant.java +++ b/Core/src/main/java/com/plotsquared/core/command/Grant.java @@ -39,23 +39,23 @@ import com.plotsquared.core.util.TabCompletions; import com.plotsquared.core.util.task.RunnableVal; import com.plotsquared.core.util.task.RunnableVal2; import com.plotsquared.core.util.task.RunnableVal3; +import com.plotsquared.core.uuid.UUIDMapping; +import net.kyori.adventure.text.minimessage.Template; + import java.util.Collection; import java.util.Collections; import java.util.LinkedList; import java.util.List; -import net.kyori.adventure.text.minimessage.Template; -import com.plotsquared.core.uuid.UUIDMapping; - import java.util.Map; import java.util.concurrent.CompletableFuture; import java.util.concurrent.TimeoutException; import java.util.stream.Collectors; @CommandDeclaration(command = "grant", - category = CommandCategory.CLAIMING, - usage = "/plot grant [player]", - permission = "plots.grant", - requiredType = RequiredType.NONE) + category = CommandCategory.CLAIMING, + usage = "/plot grant [player]", + permission = "plots.grant", + requiredType = RequiredType.NONE) public class Grant extends Command { public Grant() { @@ -63,17 +63,25 @@ public class Grant extends Command { } @Override - public CompletableFuture execute(final PlotPlayer player, String[] args, - RunnableVal3 confirm, - RunnableVal2 whenDone) throws CommandException { - checkTrue(args.length >= 1 && args.length <= 2, TranslatableCaption.of("commandconfig.command_syntax"), Template.of("value", "/plot grant [player]")); + public CompletableFuture execute( + final PlotPlayer player, String[] args, + RunnableVal3 confirm, + RunnableVal2 whenDone + ) throws CommandException { + checkTrue( + args.length >= 1 && args.length <= 2, + TranslatableCaption.of("commandconfig.command_syntax"), + Template.of("value", "/plot grant [player]") + ); final String arg0 = args[0].toLowerCase(); switch (arg0) { case "add": case "check": if (!Permissions.hasPermission(player, Permission.PERMISSION_GRANT.format(arg0))) { - player.sendMessage(TranslatableCaption.of("permission.no_permission"), - Template.of("node", Permission.PERMISSION_GRANT.format(arg0))); + player.sendMessage( + TranslatableCaption.of("permission.no_permission"), + Template.of("node", Permission.PERMISSION_GRANT.format(arg0)) + ); return CompletableFuture.completedFuture(false); } if (args.length > 2) { @@ -92,17 +100,20 @@ public class Grant extends Command { PlotPlayer pp = PlotSquared.platform().playerManager().getPlayerIfExists(uuid.getUuid()); if (pp != null) { try (final MetaDataAccess access = pp.accessPersistentMetaData( - PlayerMetaDataKeys.PERSISTENT_GRANTED_PLOTS)) { + PlayerMetaDataKeys.PERSISTENT_GRANTED_PLOTS)) { if (args[0].equalsIgnoreCase("check")) { - player.sendMessage(TranslatableCaption.of("grants.granted_plots"), - Template.of("amount", String.valueOf(access.get().orElse(0)))); + player.sendMessage( + TranslatableCaption.of("grants.granted_plots"), + Template.of("amount", String.valueOf(access.get().orElse(0))) + ); } else { access.set(access.get().orElse(0) + 1); } } } else { DBFunc.getPersistentMeta(uuid.getUuid(), new RunnableVal>() { - @Override public void run(Map value) { + @Override + public void run(Map value) { final byte[] array = value.get("grantedPlots"); if (arg0.equals("check")) { // check int granted; @@ -112,9 +123,9 @@ public class Grant extends Command { granted = Ints.fromByteArray(array); } player.sendMessage( - TranslatableCaption.of("grants.granted_plots"), - Template.of("amount", String.valueOf(granted)) - ); + TranslatableCaption.of("grants.granted_plots"), + Template.of("amount", String.valueOf(granted)) + ); } else { // add int amount; if (array == null) { @@ -127,8 +138,8 @@ public class Grant extends Command { byte[] rawData = Ints.toByteArray(amount); DBFunc.addPersistentMeta(uuid.getUuid(), key, rawData, replace); player.sendMessage( - TranslatableCaption.of("grants.added"), - Template.of("grants", String.valueOf(amount)) + TranslatableCaption.of("grants.added"), + Template.of("grants", String.valueOf(amount)) ); } } @@ -141,7 +152,9 @@ public class Grant extends Command { sendUsage(player); return CompletableFuture.completedFuture(true); } - @Override public Collection tab(final PlotPlayer player, final String[] args, final boolean space) { + + @Override + public Collection tab(final PlotPlayer player, final String[] args, final boolean space) { if (args.length == 1) { final List completions = new LinkedList<>(); if (Permissions.hasPermission(player, Permission.PERMISSION_GRANT_ADD)) { @@ -150,13 +163,24 @@ public class Grant extends Command { if (Permissions.hasPermission(player, Permission.PERMISSION_GRANT_CHECK)) { completions.add("check"); } - final List commands = completions.stream().filter(completion -> completion.toLowerCase().startsWith(args[0].toLowerCase())) - .map(completion -> new Command(null, true, completion, "", RequiredType.NONE, CommandCategory.ADMINISTRATION) { - }).collect(Collectors.toCollection(LinkedList::new)); + final List commands = completions.stream().filter(completion -> completion + .toLowerCase() + .startsWith(args[0].toLowerCase())) + .map(completion -> new Command( + null, + true, + completion, + "", + RequiredType.NONE, + CommandCategory.ADMINISTRATION + ) { + }).collect(Collectors.toCollection(LinkedList::new)); if (Permissions.hasPermission(player, Permission.PERMISSION_GRANT_SINGLE) && args[0].length() > 0) { commands.addAll(TabCompletions.completePlayers(args[0], Collections.emptyList())); } return commands; - } return TabCompletions.completePlayers(String.join(",", args).trim(), Collections.emptyList()); + } + return TabCompletions.completePlayers(String.join(",", args).trim(), Collections.emptyList()); } + } diff --git a/Core/src/main/java/com/plotsquared/core/command/Help.java b/Core/src/main/java/com/plotsquared/core/command/Help.java index 27612de9e..1dc2e597b 100644 --- a/Core/src/main/java/com/plotsquared/core/command/Help.java +++ b/Core/src/main/java/com/plotsquared/core/command/Help.java @@ -40,23 +40,27 @@ import net.kyori.adventure.text.minimessage.Template; import java.util.concurrent.CompletableFuture; @CommandDeclaration(command = "help", - aliases = "?", - category = CommandCategory.INFO, - usage = "help [category|#]", - permission = "plots.use") + aliases = "?", + category = CommandCategory.INFO, + usage = "help [category|#]", + permission = "plots.use") public class Help extends Command { + public Help(Command parent) { super(parent, true); } - @Override public boolean canExecute(PlotPlayer player, boolean message) { + @Override + public boolean canExecute(PlotPlayer player, boolean message) { return true; } @Override - public CompletableFuture execute(PlotPlayer player, String[] args, - RunnableVal3 confirm, - RunnableVal2 whenDone) { + public CompletableFuture execute( + PlotPlayer player, String[] args, + RunnableVal3 confirm, + RunnableVal2 whenDone + ) { switch (args.length) { case 0: return displayHelp(player, null, 0); @@ -85,8 +89,10 @@ public class Help extends Command { return CompletableFuture.completedFuture(true); } - public CompletableFuture displayHelp(final PlotPlayer player, final String catRaw, - final int page) { + public CompletableFuture displayHelp( + final PlotPlayer player, final String catRaw, + final int page + ) { return CompletableFuture.supplyAsync(() -> { String cat = catRaw; @@ -110,19 +116,30 @@ public class Help extends Command { builder.append(MINI_MESSAGE.parse(TranslatableCaption.of("help.help_header").getComponent(player))); for (CommandCategory c : CommandCategory.values()) { builder.append(Component.newline()).append(MINI_MESSAGE - .parse(TranslatableCaption.of("help.help_info_item").getComponent(player), Template.of("category", c.name().toLowerCase()), - Template.of("category_desc", c.getComponent(player)))); + .parse(TranslatableCaption.of("help.help_info_item").getComponent(player), + Template.of("category", c.name().toLowerCase()), + Template.of("category_desc", c.getComponent(player)) + )); } builder.append(Component.newline()).append(MINI_MESSAGE - .parse(TranslatableCaption.of("help.help_info_item").getComponent(player), Template.of("category", "all"), - Template.of("category_desc", "Display all commands"))); - builder.append(Component.newline()).append(MINI_MESSAGE.parse(TranslatableCaption.of("help.help_footer").getComponent(player))); + .parse(TranslatableCaption.of("help.help_info_item").getComponent(player), + Template.of("category", "all"), + Template.of("category_desc", "Display all commands") + )); + builder.append(Component.newline()).append(MINI_MESSAGE.parse(TranslatableCaption + .of("help.help_footer") + .getComponent(player))); player.sendMessage(StaticCaption.of(MINI_MESSAGE.serialize(builder.asComponent()))); return true; } - new HelpMenu(player).setCategory(catEnum).getCommands().generateMaxPages().generatePage(page - 1, getParent().toString(), player) - .render(); + new HelpMenu(player).setCategory(catEnum).getCommands().generateMaxPages().generatePage( + page - 1, + getParent().toString(), + player + ) + .render(); return true; }); } + } diff --git a/Core/src/main/java/com/plotsquared/core/command/HomeCommand.java b/Core/src/main/java/com/plotsquared/core/command/HomeCommand.java index 8bbc4101a..9db1e74ce 100644 --- a/Core/src/main/java/com/plotsquared/core/command/HomeCommand.java +++ b/Core/src/main/java/com/plotsquared/core/command/HomeCommand.java @@ -26,9 +26,9 @@ package com.plotsquared.core.command; import com.google.inject.Inject; -import com.plotsquared.core.permissions.Permission; import com.plotsquared.core.configuration.caption.TranslatableCaption; import com.plotsquared.core.events.TeleportCause; +import com.plotsquared.core.permissions.Permission; import com.plotsquared.core.player.PlotPlayer; import com.plotsquared.core.plot.Plot; import com.plotsquared.core.plot.PlotArea; @@ -42,32 +42,35 @@ import com.plotsquared.core.util.query.SortingStrategy; import com.plotsquared.core.util.task.RunnableVal2; import com.plotsquared.core.util.task.RunnableVal3; import net.kyori.adventure.text.minimessage.Template; +import org.checkerframework.checker.nullness.qual.NonNull; -import javax.annotation.Nonnull; import java.util.ArrayList; import java.util.Collection; import java.util.List; import java.util.concurrent.CompletableFuture; @CommandDeclaration(command = "home", - permission = "plots.home", - usage = "/plot home [ | | | | ]", - aliases = {"h"}, - requiredType = RequiredType.PLAYER, - category = CommandCategory.TELEPORT) + permission = "plots.home", + usage = "/plot home [ | | | | ]", + aliases = {"h"}, + requiredType = RequiredType.PLAYER, + category = CommandCategory.TELEPORT) public class HomeCommand extends Command { private final PlotAreaManager plotAreaManager; - @Inject public HomeCommand(@Nonnull final PlotAreaManager plotAreaManager) { + @Inject + public HomeCommand(final @NonNull PlotAreaManager plotAreaManager) { super(MainCommand.getInstance(), true); this.plotAreaManager = plotAreaManager; } - private void home(@Nonnull final PlotPlayer player, - @Nonnull final PlotQuery query, final int page, - final RunnableVal3 confirm, - final RunnableVal2 whenDone) { + private void home( + final @NonNull PlotPlayer player, + final @NonNull PlotQuery query, final int page, + final RunnableVal3 confirm, + final RunnableVal2 whenDone + ) { List plots = query.asList(); if (plots.isEmpty()) { player.sendMessage(TranslatableCaption.of("invalid.found_no_plots")); @@ -90,14 +93,18 @@ public class HomeCommand extends Command { }), () -> whenDone.run(HomeCommand.this, CommandResult.FAILURE)); } - @Nonnull private PlotQuery query(@Nonnull final PlotPlayer player) { + @NonNull + private PlotQuery query(final @NonNull PlotPlayer player) { // everything plots need to have in common here return PlotQuery.newQuery().thatPasses(plot -> plot.isOwner(player.getUUID())); } - @Override public CompletableFuture execute(PlotPlayer player, String[] args, - RunnableVal3 confirm, - RunnableVal2 whenDone) throws CommandException { + @Override + public CompletableFuture execute( + PlotPlayer player, String[] args, + RunnableVal3 confirm, + RunnableVal2 whenDone + ) throws CommandException { // /plot home (or page, whatever it's called) // /plot home // /plot home <[area;]x;y> @@ -229,4 +236,5 @@ public class HomeCommand extends Command { } return completions; } + } diff --git a/Core/src/main/java/com/plotsquared/core/command/Inbox.java b/Core/src/main/java/com/plotsquared/core/command/Inbox.java index c6aea8682..4da26bcda 100644 --- a/Core/src/main/java/com/plotsquared/core/command/Inbox.java +++ b/Core/src/main/java/com/plotsquared/core/command/Inbox.java @@ -51,10 +51,10 @@ import java.util.List; import java.util.stream.Collectors; @CommandDeclaration(command = "inbox", - usage = "/plot inbox [inbox] [delete | clear | page]", - permission = "plots.inbox", - category = CommandCategory.CHAT, - requiredType = RequiredType.PLAYER) + usage = "/plot inbox [inbox] [delete | clear | page]", + permission = "plots.inbox", + category = CommandCategory.CHAT, + requiredType = RequiredType.PLAYER) public class Inbox extends SubCommand { public void displayComments(PlotPlayer player, List oldComments, int page) { @@ -79,8 +79,9 @@ public class Inbox extends SubCommand { } TextComponent.Builder builder = Component.text(); builder.append(MINI_MESSAGE.parse(TranslatableCaption.of("list.comment_list_header_paged").getComponent(player) + '\n', - Template.of("amount", String.valueOf(comments.length)), Template.of("cur", String.valueOf(page + 1)), - Template.of("max", String.valueOf(totalPages + 1)), Template.of("word", "all"))); + Template.of("amount", String.valueOf(comments.length)), Template.of("cur", String.valueOf(page + 1)), + Template.of("max", String.valueOf(totalPages + 1)), Template.of("word", "all") + )); // This might work xD for (int x = page * 12; x < max; x++) { @@ -88,10 +89,16 @@ public class Inbox extends SubCommand { Component commentColored; if (player.getName().equals(comment.senderName)) { commentColored = MINI_MESSAGE - .parse(TranslatableCaption.of("list.comment_list_by_lister").getComponent(player), Template.of("comment", comment.comment)); + .parse( + TranslatableCaption.of("list.comment_list_by_lister").getComponent(player), + Template.of("comment", comment.comment) + ); } else { commentColored = MINI_MESSAGE - .parse(TranslatableCaption.of("list.comment_list_by_other").getComponent(player), Template.of("comment", comment.comment)); + .parse( + TranslatableCaption.of("list.comment_list_by_other").getComponent(player), + Template.of("comment", comment.comment) + ); } Template number = Template.of("number", String.valueOf(x)); Template world = Template.of("world", comment.world); @@ -99,12 +106,20 @@ public class Inbox extends SubCommand { Template commenter = Template.of("commenter", comment.senderName); Template commentTemplate = Template.of("comment", commentColored); builder.append(MINI_MESSAGE - .parse(TranslatableCaption.of("list.comment_list_comment").getComponent(player), number, world, plot_id, commenter, commentTemplate)); + .parse( + TranslatableCaption.of("list.comment_list_comment").getComponent(player), + number, + world, + plot_id, + commenter, + commentTemplate + )); } player.sendMessage(StaticCaption.of(MINI_MESSAGE.serialize(builder.build()))); } - @Override public boolean onCommand(final PlotPlayer player, String[] args) { + @Override + public boolean onCommand(final PlotPlayer player, String[] args) { final Plot plot = player.getCurrentPlot(); if (plot == null) { player.sendMessage(TranslatableCaption.of("errors.not_in_plot")); @@ -119,14 +134,15 @@ public class Inbox extends SubCommand { for (final CommentInbox inbox : CommentManager.inboxes.values()) { if (inbox.canRead(plot, player)) { if (!inbox.getComments(plot, new RunnableVal>() { - @Override public void run(List value) { + @Override + public void run(List value) { if (value != null) { int total = 0; int unread = 0; for (PlotComment comment : value) { total++; if (comment.timestamp > CommentManager - .getTimestamp(player, inbox.toString())) { + .getTimestamp(player, inbox.toString())) { unread++; } } @@ -167,7 +183,11 @@ public class Inbox extends SubCommand { ); return false; } - final MetaDataKey metaDataKey = MetaDataKey.of(String.format("inbox:%s", inbox.toString()), new TypeLiteral() {}); + final MetaDataKey metaDataKey = MetaDataKey.of( + String.format("inbox:%s", inbox.toString()), + new TypeLiteral() { + } + ); try (final MetaDataAccess metaDataAccess = player.accessTemporaryMetaData(metaDataKey)) { metaDataAccess.set(System.currentTimeMillis()); } @@ -204,7 +224,8 @@ public class Inbox extends SubCommand { } if (!inbox.getComments(plot, new RunnableVal>() { - @Override public void run(List value) { + @Override + public void run(List value) { if (index > value.size()) { player.sendMessage( TranslatableCaption.of("comment.not_valid_inbox_index"), @@ -262,7 +283,8 @@ public class Inbox extends SubCommand { return false; } if (!inbox.getComments(plot, new RunnableVal>() { - @Override public void run(List value) { + @Override + public void run(List value) { displayComments(player, value, page); } })) { @@ -271,6 +293,7 @@ public class Inbox extends SubCommand { } return true; } + @Override public Collection tab(final PlotPlayer player, final String[] args, final boolean space) { if (args.length == 1) { @@ -284,7 +307,9 @@ public class Inbox extends SubCommand { if (Permissions.hasPermission(player, Permission.PERMISSION_INBOX_READ_REPORT)) { completions.add("report"); } - final List commands = completions.stream().filter(completion -> completion.toLowerCase().startsWith(args[0].toLowerCase())) + final List commands = completions.stream().filter(completion -> completion + .toLowerCase() + .startsWith(args[0].toLowerCase())) .map(completion -> new Command(null, true, completion, "", RequiredType.PLAYER, CommandCategory.CHAT) { }).collect(Collectors.toCollection(LinkedList::new)); if (Permissions.hasPermission(player, Permission.PERMISSION_INBOX) && args[0].length() > 0) { @@ -294,4 +319,5 @@ public class Inbox extends SubCommand { } return TabCompletions.completePlayers(String.join(",", args).trim(), Collections.emptyList()); } + } diff --git a/Core/src/main/java/com/plotsquared/core/command/Info.java b/Core/src/main/java/com/plotsquared/core/command/Info.java index ea27e134d..aadffa3f5 100644 --- a/Core/src/main/java/com/plotsquared/core/command/Info.java +++ b/Core/src/main/java/com/plotsquared/core/command/Info.java @@ -25,24 +25,25 @@ */ package com.plotsquared.core.command; -import com.plotsquared.core.permissions.Permission; import com.plotsquared.core.configuration.Settings; import com.plotsquared.core.configuration.caption.Caption; import com.plotsquared.core.configuration.caption.StaticCaption; import com.plotsquared.core.configuration.caption.TranslatableCaption; import com.plotsquared.core.database.DBFunc; +import com.plotsquared.core.permissions.Permission; import com.plotsquared.core.player.PlotPlayer; import com.plotsquared.core.plot.Plot; import com.plotsquared.core.plot.flag.implementations.HideInfoFlag; import net.kyori.adventure.text.minimessage.Template; @CommandDeclaration(command = "info", - aliases = "i", - usage = "/plot info [-f to force info]", - category = CommandCategory.INFO) + aliases = "i", + usage = "/plot info [-f to force info]", + category = CommandCategory.INFO) public class Info extends SubCommand { - @Override public boolean onCommand(final PlotPlayer player, String[] args) { + @Override + public boolean onCommand(final PlotPlayer player, String[] args) { Plot plot; String arg; if (args.length > 0) { @@ -89,7 +90,7 @@ public class Info extends SubCommand { if (args.length == 1) { args = new String[0]; } else { - args = new String[] {args[1]}; + args = new String[]{args[1]}; } } @@ -99,7 +100,7 @@ public class Info extends SubCommand { for (final String argument : args) { if (argument.equalsIgnoreCase("-f")) { if (!player - .hasPermission(Permission.PERMISSION_AREA_INFO_FORCE.toString())) { + .hasPermission(Permission.PERMISSION_AREA_INFO_FORCE.toString())) { player.sendMessage( TranslatableCaption.of("permission.no_permission"), Template.of("node", Permission.PERMISSION_AREA_INFO_FORCE.toString()) @@ -134,11 +135,13 @@ public class Info extends SubCommand { info = getCaption(arg); if (info == null) { if (Settings.Ratings.USE_LIKES) { - player.sendMessage(StaticCaption.of("&6Categories&7: &amembers&7, &aalias&7, &abiome&7, &aseen&7, &adenied&7, &aflags&7, &aid&7, &asize&7, &atrusted&7, " - + "&aowner&7, " + " &alikes")); + player.sendMessage(StaticCaption.of( + "&6Categories&7: &amembers&7, &aalias&7, &abiome&7, &aseen&7, &adenied&7, &aflags&7, &aid&7, &asize&7, &atrusted&7, " + + "&aowner&7, " + " &alikes")); } else { - player.sendMessage(StaticCaption.of("&6Categories&7: &amembers&7, &aalias&7, &abiome&7, &aseen&7, &adenied&7, &aflags&7, &aid&7, &asize&7, &atrusted&7, " - + "&aowner&7, " + " &arating")); + player.sendMessage(StaticCaption.of( + "&6Categories&7: &amembers&7, &aalias&7, &abiome&7, &aseen&7, &adenied&7, &aflags&7, &aid&7, &asize&7, &atrusted&7, " + + "&aowner&7, " + " &arating")); } return false; } @@ -182,4 +185,5 @@ public class Info extends SubCommand { return null; } } + } diff --git a/Core/src/main/java/com/plotsquared/core/command/Kick.java b/Core/src/main/java/com/plotsquared/core/command/Kick.java index aeb0363a0..ff9f40acc 100644 --- a/Core/src/main/java/com/plotsquared/core/command/Kick.java +++ b/Core/src/main/java/com/plotsquared/core/command/Kick.java @@ -27,10 +27,10 @@ package com.plotsquared.core.command; import com.google.inject.Inject; import com.plotsquared.core.PlotSquared; -import com.plotsquared.core.permissions.Permission; import com.plotsquared.core.configuration.caption.TranslatableCaption; import com.plotsquared.core.database.DBFunc; import com.plotsquared.core.location.Location; +import com.plotsquared.core.permissions.Permission; import com.plotsquared.core.player.PlotPlayer; import com.plotsquared.core.plot.Plot; import com.plotsquared.core.plot.world.PlotAreaManager; @@ -39,8 +39,8 @@ import com.plotsquared.core.util.PlayerManager; import com.plotsquared.core.util.TabCompletions; import com.plotsquared.core.util.WorldUtil; import net.kyori.adventure.text.minimessage.Template; +import org.checkerframework.checker.nullness.qual.NonNull; -import javax.annotation.Nonnull; import java.util.Collection; import java.util.Collections; import java.util.HashSet; @@ -49,24 +49,28 @@ import java.util.UUID; import java.util.concurrent.TimeoutException; @CommandDeclaration(command = "kick", - aliases = "k", - permission = "plots.kick", - usage = "/plot kick ", - category = CommandCategory.TELEPORT, - requiredType = RequiredType.PLAYER) + aliases = "k", + permission = "plots.kick", + usage = "/plot kick ", + category = CommandCategory.TELEPORT, + requiredType = RequiredType.PLAYER) public class Kick extends SubCommand { private final PlotAreaManager plotAreaManager; private final WorldUtil worldUtil; - @Inject public Kick(@Nonnull final PlotAreaManager plotAreaManager, - @Nonnull final WorldUtil worldUtil) { + @Inject + public Kick( + final @NonNull PlotAreaManager plotAreaManager, + final @NonNull WorldUtil worldUtil + ) { super(Argument.PlayerName); this.plotAreaManager = plotAreaManager; this.worldUtil = worldUtil; } - @Override public boolean onCommand(PlotPlayer player, String[] args) { + @Override + public boolean onCommand(PlotPlayer player, String[] args) { Location location = player.getLocation(); Plot plot = location.getPlot(); if (plot == null) { @@ -74,7 +78,7 @@ public class Kick extends SubCommand { return false; } if ((!plot.hasOwner() || !plot.isOwner(player.getUUID())) && !Permissions - .hasPermission(player, Permission.PERMISSION_ADMIN_COMMAND_KICK)) { + .hasPermission(player, Permission.PERMISSION_ADMIN_COMMAND_KICK)) { player.sendMessage(TranslatableCaption.of("permission.no_permission")); return false; } @@ -93,7 +97,7 @@ public class Kick extends SubCommand { if (uuid == DBFunc.EVERYONE) { for (PlotPlayer pp : plot.getPlayersInPlot()) { if (pp == player || Permissions - .hasPermission(pp, Permission.PERMISSION_ADMIN_ENTRY_DENIED)) { + .hasPermission(pp, Permission.PERMISSION_ADMIN_ENTRY_DENIED)) { continue; } players.add(pp); @@ -148,13 +152,16 @@ public class Kick extends SubCommand { return true; } - @Override public Collection tab(final PlotPlayer player, final String[] args, final boolean space) { + @Override + public Collection tab(final PlotPlayer player, final String[] args, final boolean space) { Location location = player.getLocation(); Plot plot = location.getPlotAbs(); if (plot == null) { return Collections.emptyList(); } return TabCompletions.completePlayersInPlot(plot, String.join(",", args).trim(), - Collections.singletonList(player.getName())); + Collections.singletonList(player.getName()) + ); } + } diff --git a/Core/src/main/java/com/plotsquared/core/command/Leave.java b/Core/src/main/java/com/plotsquared/core/command/Leave.java index 6ada079e3..a5672d88c 100644 --- a/Core/src/main/java/com/plotsquared/core/command/Leave.java +++ b/Core/src/main/java/com/plotsquared/core/command/Leave.java @@ -33,29 +33,32 @@ import com.plotsquared.core.util.EventDispatcher; import com.plotsquared.core.util.task.RunnableVal2; import com.plotsquared.core.util.task.RunnableVal3; import net.kyori.adventure.text.minimessage.Template; +import org.checkerframework.checker.nullness.qual.NonNull; -import javax.annotation.Nonnull; import java.util.UUID; import java.util.concurrent.CompletableFuture; @CommandDeclaration(command = "leave", - permission = "plots.leave", - usage = "/plot leave", - category = CommandCategory.CLAIMING, - requiredType = RequiredType.PLAYER) + permission = "plots.leave", + usage = "/plot leave", + category = CommandCategory.CLAIMING, + requiredType = RequiredType.PLAYER) public class Leave extends Command { - + private final EventDispatcher eventDispatcher; - - @Inject public Leave(@Nonnull final EventDispatcher eventDispatcher) { + + @Inject + public Leave(final @NonNull EventDispatcher eventDispatcher) { super(MainCommand.getInstance(), true); this.eventDispatcher = eventDispatcher; } @Override - public CompletableFuture execute(PlotPlayer player, String[] args, - RunnableVal3 confirm, - RunnableVal2 whenDone) throws CommandException { + public CompletableFuture execute( + PlotPlayer player, String[] args, + RunnableVal3 confirm, + RunnableVal2 whenDone + ) throws CommandException { final Plot plot = check(player.getCurrentPlot(), TranslatableCaption.of("errors.not_in_plot")); checkTrue(plot.hasOwner(), TranslatableCaption.of("info.plot_unowned")); checkTrue(plot.isAdded(player.getUUID()), TranslatableCaption.of("members.not_added_trusted")); @@ -84,4 +87,5 @@ public class Leave extends Command { } return CompletableFuture.completedFuture(true); } + } diff --git a/Core/src/main/java/com/plotsquared/core/command/Like.java b/Core/src/main/java/com/plotsquared/core/command/Like.java index 523d7057a..892df4b67 100644 --- a/Core/src/main/java/com/plotsquared/core/command/Like.java +++ b/Core/src/main/java/com/plotsquared/core/command/Like.java @@ -26,12 +26,12 @@ package com.plotsquared.core.command; import com.google.inject.Inject; -import com.plotsquared.core.permissions.Permission; import com.plotsquared.core.configuration.Settings; import com.plotsquared.core.configuration.caption.TranslatableCaption; import com.plotsquared.core.database.DBFunc; import com.plotsquared.core.events.PlotRateEvent; import com.plotsquared.core.events.TeleportCause; +import com.plotsquared.core.permissions.Permission; import com.plotsquared.core.player.PlotPlayer; import com.plotsquared.core.plot.Plot; import com.plotsquared.core.plot.Rating; @@ -42,8 +42,8 @@ import com.plotsquared.core.util.TabCompletions; import com.plotsquared.core.util.query.PlotQuery; import com.plotsquared.core.util.task.TaskManager; import net.kyori.adventure.text.minimessage.Template; +import org.checkerframework.checker.nullness.qual.NonNull; -import javax.annotation.Nonnull; import java.util.Collection; import java.util.Collections; import java.util.HashMap; @@ -53,20 +53,50 @@ import java.util.UUID; import java.util.stream.Collectors; @CommandDeclaration(command = "like", - permission = "plots.like", - usage = "/plot like [next | purge]", - category = CommandCategory.INFO, - requiredType = RequiredType.PLAYER) + permission = "plots.like", + usage = "/plot like [next | purge]", + category = CommandCategory.INFO, + requiredType = RequiredType.PLAYER) public class Like extends SubCommand { private final EventDispatcher eventDispatcher; - - @Inject public Like(@Nonnull final EventDispatcher eventDispatcher) { + + @Inject + public Like(final @NonNull EventDispatcher eventDispatcher) { this.eventDispatcher = eventDispatcher; } - - protected boolean handleLike(final PlotPlayer player, String[] args, - final boolean like) { + + /** + * Get the likes to dislike ratio of a plot as a percentage (in decimal form) + * + * @param plot plot + * @return likes to dislike ratio, returns zero if the plot has no likes + */ + public static double getLikesPercentage(final Plot plot) { + if (!plot.hasRatings()) { + return 0; + } + final Collection reactions = plot.getLikes().values(); + double numLikes = 0, numDislikes = 0; + for (final boolean reaction : reactions) { + if (reaction) { + numLikes += 1; + } else { + numDislikes += 1; + } + } + if (numLikes == 0 && numDislikes == 0) { + return 0D; + } else if (numDislikes == 0) { + return 1.0D; + } + return numLikes / (numLikes + numDislikes); + } + + protected boolean handleLike( + final PlotPlayer player, String[] args, + final boolean like + ) { final UUID uuid = player.getUUID(); if (args.length == 1) { switch (args[0].toLowerCase()) { @@ -82,7 +112,7 @@ public class Like extends SubCommand { }); for (final Plot plot : plots) { if ((!Settings.Done.REQUIRED_FOR_RATINGS || DoneFlag.isDone(plot)) && plot - .isBasePlot() && (!plot.getLikes().containsKey(uuid))) { + .isBasePlot() && (!plot.getLikes().containsKey(uuid))) { plot.teleportPlayer(player, TeleportCause.COMMAND, result -> { }); player.sendMessage(TranslatableCaption.of("tutorial.rate_this")); @@ -99,7 +129,7 @@ public class Like extends SubCommand { return false; } if (!Permissions - .hasPermission(player, Permission.PERMISSION_ADMIN_COMMAND_PURGE_RATINGS, true)) { + .hasPermission(player, Permission.PERMISSION_ADMIN_COMMAND_PURGE_RATINGS, true)) { return false; } plot.clearRatings(); @@ -142,7 +172,7 @@ public class Like extends SubCommand { } plot.addRating(uuid, new Rating(rating)); final PlotRateEvent event = - this.eventDispatcher.callRating(player, plot, new Rating(rating)); + this.eventDispatcher.callRating(player, plot, new Rating(rating)); if (event.getRating() != null) { plot.addRating(uuid, event.getRating()); if (like) { @@ -172,34 +202,8 @@ public class Like extends SubCommand { return true; } - /** - * Get the likes to dislike ratio of a plot as a percentage (in decimal form) - * - * @param plot plot - * @return likes to dislike ratio, returns zero if the plot has no likes - */ - public static double getLikesPercentage(final Plot plot) { - if (!plot.hasRatings()) { - return 0; - } - final Collection reactions = plot.getLikes().values(); - double numLikes = 0, numDislikes = 0; - for (final boolean reaction : reactions) { - if (reaction) { - numLikes += 1; - } else { - numDislikes += 1; - } - } - if (numLikes == 0 && numDislikes == 0) { - return 0D; - } else if (numDislikes == 0) { - return 1.0D; - } - return numLikes / (numLikes + numDislikes); - } - - @Override public boolean onCommand(PlotPlayer player, String[] args) { + @Override + public boolean onCommand(PlotPlayer player, String[] args) { return handleLike(player, args, true); } @@ -210,7 +214,9 @@ public class Like extends SubCommand { if (Permissions.hasPermission(player, Permission.PERMISSION_ADMIN_COMMAND_PURGE_RATINGS)) { completions.add("purge"); } - final List commands = completions.stream().filter(completion -> completion.toLowerCase().startsWith(args[0].toLowerCase())) + final List commands = completions.stream().filter(completion -> completion + .toLowerCase() + .startsWith(args[0].toLowerCase())) .map(completion -> new Command(null, true, completion, "", RequiredType.PLAYER, CommandCategory.INFO) { }).collect(Collectors.toCollection(LinkedList::new)); if (Permissions.hasPermission(player, Permission.PERMISSION_RATE) && args[0].length() > 0) { diff --git a/Core/src/main/java/com/plotsquared/core/command/ListCmd.java b/Core/src/main/java/com/plotsquared/core/command/ListCmd.java index c5707ab62..a2f158509 100644 --- a/Core/src/main/java/com/plotsquared/core/command/ListCmd.java +++ b/Core/src/main/java/com/plotsquared/core/command/ListCmd.java @@ -54,8 +54,8 @@ import com.plotsquared.core.uuid.UUIDMapping; import net.kyori.adventure.text.Component; import net.kyori.adventure.text.TextComponent; import net.kyori.adventure.text.minimessage.Template; +import org.checkerframework.checker.nullness.qual.NonNull; -import javax.annotation.Nonnull; import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; @@ -71,16 +71,17 @@ import java.util.function.Consumer; import java.util.stream.Collectors; @CommandDeclaration(command = "list", - aliases = {"l", "find", "search"}, - permission = "plots.list", - category = CommandCategory.INFO, - usage = "/plot list > [#]") + aliases = {"l", "find", "search"}, + permission = "plots.list", + category = CommandCategory.INFO, + usage = "/plot list > [#]") public class ListCmd extends SubCommand { private final PlotAreaManager plotAreaManager; private final EconHandler econHandler; - @Inject public ListCmd(@Nonnull final PlotAreaManager plotAreaManager, @Nonnull final EconHandler econHandler) { + @Inject + public ListCmd(final @NonNull PlotAreaManager plotAreaManager, final @NonNull EconHandler econHandler) { this.plotAreaManager = plotAreaManager; this.econHandler = econHandler; } @@ -127,11 +128,14 @@ public class ListCmd extends SubCommand { } public void noArgs(PlotPlayer player) { - player.sendMessage(TranslatableCaption.of("commandconfig.subcommand_set_options_header"), - Templates.of("values", Arrays.toString(getArgumentList(player)))); + player.sendMessage( + TranslatableCaption.of("commandconfig.subcommand_set_options_header"), + Templates.of("values", Arrays.toString(getArgumentList(player))) + ); } - @Override public boolean onCommand(PlotPlayer player, String[] args) { + @Override + public boolean onCommand(PlotPlayer player, String[] args) { if (args.length < 1) { noArgs(player); return false; @@ -156,12 +160,17 @@ public class ListCmd extends SubCommand { String world = player.getLocation().getWorldName(); PlotArea area = player.getApplicablePlotArea(); String arg = args[0].toLowerCase(); - final boolean[] sort = new boolean[] {true}; + final boolean[] sort = new boolean[]{true}; final Consumer plotConsumer = query -> { if (query == null) { - player.sendMessage(TranslatableCaption.of("commandconfig.did_you_mean"), - Template.of("value", new StringComparison<>(args[0], new String[] {"mine", "shared", "world", "all"}).getBestMatch())); + player.sendMessage( + TranslatableCaption.of("commandconfig.did_you_mean"), + Template.of( + "value", + new StringComparison<>(args[0], new String[]{"mine", "shared", "world", "all"}).getBestMatch() + ) + ); return; } @@ -185,33 +194,55 @@ public class ListCmd extends SubCommand { switch (arg) { case "mine": if (!Permissions.hasPermission(player, Permission.PERMISSION_LIST_MINE)) { - player.sendMessage(TranslatableCaption.of("permission.no_permission"), Templates.of("node", "plots.list.mine")); + player.sendMessage( + TranslatableCaption.of("permission.no_permission"), + Templates.of("node", "plots.list.mine") + ); return false; } sort[0] = false; - plotConsumer.accept(PlotQuery.newQuery().ownedBy(player).whereBasePlot().withSortingStrategy(SortingStrategy.SORT_BY_TEMP)); + plotConsumer.accept(PlotQuery + .newQuery() + .ownedBy(player) + .whereBasePlot() + .withSortingStrategy(SortingStrategy.SORT_BY_TEMP)); break; case "shared": if (!Permissions.hasPermission(player, Permission.PERMISSION_LIST_SHARED)) { - player.sendMessage(TranslatableCaption.of("permission.no_permission"), Templates.of("node", "plots.list.shared")); + player.sendMessage( + TranslatableCaption.of("permission.no_permission"), + Templates.of("node", "plots.list.shared") + ); return false; } - plotConsumer.accept(PlotQuery.newQuery().withMember(player.getUUID()).thatPasses(plot -> !plot.isOwnerAbs(player.getUUID()))); + plotConsumer.accept(PlotQuery + .newQuery() + .withMember(player.getUUID()) + .thatPasses(plot -> !plot.isOwnerAbs(player.getUUID()))); break; case "world": if (!Permissions.hasPermission(player, Permission.PERMISSION_LIST_WORLD)) { - player.sendMessage(TranslatableCaption.of("permission.no_permission"), Templates.of("node", "plots.list.world")); + player.sendMessage( + TranslatableCaption.of("permission.no_permission"), + Templates.of("node", "plots.list.world") + ); return false; } if (!Permissions.hasPermission(player, "plots.list.world." + world)) { - player.sendMessage(TranslatableCaption.of("permission.no_permission"), Templates.of("node", "plots.list.world." + world)); + player.sendMessage( + TranslatableCaption.of("permission.no_permission"), + Templates.of("node", "plots.list.world." + world) + ); return false; } plotConsumer.accept(PlotQuery.newQuery().inWorld(world)); break; case "expired": if (!Permissions.hasPermission(player, Permission.PERMISSION_LIST_EXPIRED)) { - player.sendMessage(TranslatableCaption.of("permission.no_permission"), Templates.of("node", "plots.list.expired")); + player.sendMessage( + TranslatableCaption.of("permission.no_permission"), + Templates.of("node", "plots.list.expired") + ); return false; } if (ExpireManager.IMP == null) { @@ -222,11 +253,17 @@ public class ListCmd extends SubCommand { break; case "area": if (!Permissions.hasPermission(player, Permission.PERMISSION_LIST_AREA)) { - player.sendMessage(TranslatableCaption.of("permission.no_permission"), Templates.of("node", "plots.list.area")); + player.sendMessage( + TranslatableCaption.of("permission.no_permission"), + Templates.of("node", "plots.list.area") + ); return false; } if (!Permissions.hasPermission(player, "plots.list.world." + world)) { - player.sendMessage(TranslatableCaption.of("permission.no_permission"), Templates.of("node", "plots.list.world." + world)); + player.sendMessage( + TranslatableCaption.of("permission.no_permission"), + Templates.of("node", "plots.list.world." + world) + ); return false; } if (area == null) { @@ -237,22 +274,35 @@ public class ListCmd extends SubCommand { break; case "all": if (!Permissions.hasPermission(player, Permission.PERMISSION_LIST_ALL)) { - player.sendMessage(TranslatableCaption.of("permission.no_permission"), Templates.of("node", "plots.list.all")); + player.sendMessage( + TranslatableCaption.of("permission.no_permission"), + Templates.of("node", "plots.list.all") + ); return false; } plotConsumer.accept(PlotQuery.newQuery().allPlots()); break; case "done": if (!Permissions.hasPermission(player, Permission.PERMISSION_LIST_DONE)) { - player.sendMessage(TranslatableCaption.of("permission.no_permission"), Templates.of("node", "plots.list.done")); + player.sendMessage( + TranslatableCaption.of("permission.no_permission"), + Templates.of("node", "plots.list.done") + ); return false; } sort[0] = false; - plotConsumer.accept(PlotQuery.newQuery().allPlots().thatPasses(DoneFlag::isDone).withSortingStrategy(SortingStrategy.SORT_BY_DONE)); + plotConsumer.accept(PlotQuery + .newQuery() + .allPlots() + .thatPasses(DoneFlag::isDone) + .withSortingStrategy(SortingStrategy.SORT_BY_DONE)); break; case "top": if (!Permissions.hasPermission(player, Permission.PERMISSION_LIST_TOP)) { - player.sendMessage(TranslatableCaption.of("permission.no_permission"), Templates.of("node", "plots.list.top")); + player.sendMessage( + TranslatableCaption.of("permission.no_permission"), + Templates.of("node", "plots.list.top") + ); return false; } sort[0] = false; @@ -260,7 +310,10 @@ public class ListCmd extends SubCommand { break; case "forsale": if (!Permissions.hasPermission(player, Permission.PERMISSION_LIST_FOR_SALE)) { - player.sendMessage(TranslatableCaption.of("permission.no_permission"), Templates.of("node", "plots.list.forsale")); + player.sendMessage( + TranslatableCaption.of("permission.no_permission"), + Templates.of("node", "plots.list.forsale") + ); return false; } if (this.econHandler.isSupported()) { @@ -270,19 +323,27 @@ public class ListCmd extends SubCommand { break; case "unowned": if (!Permissions.hasPermission(player, Permission.PERMISSION_LIST_UNOWNED)) { - player.sendMessage(TranslatableCaption.of("permission.no_permission"), Templates.of("node", "plots.list.unowned")); + player.sendMessage( + TranslatableCaption.of("permission.no_permission"), + Templates.of("node", "plots.list.unowned") + ); return false; } plotConsumer.accept(PlotQuery.newQuery().allPlots().thatPasses(plot -> plot.getOwner() == null)); break; case "fuzzy": if (!Permissions.hasPermission(player, Permission.PERMISSION_LIST_FUZZY)) { - player.sendMessage(TranslatableCaption.of("permission.no_permission"), Templates.of("node", "plots.list.fuzzy")); + player.sendMessage( + TranslatableCaption.of("permission.no_permission"), + Templates.of("node", "plots.list.fuzzy") + ); return false; } if (args.length < (page == -1 ? 2 : 3)) { - player.sendMessage(TranslatableCaption.of("commandconfig.command_syntax"), - Templates.of("value", "/plot list fuzzy [#]")); + player.sendMessage( + TranslatableCaption.of("commandconfig.command_syntax"), + Templates.of("value", "/plot list fuzzy [#]") + ); return false; } String term; @@ -297,11 +358,17 @@ public class ListCmd extends SubCommand { default: if (this.plotAreaManager.hasPlotArea(args[0])) { if (!Permissions.hasPermission(player, Permission.PERMISSION_LIST_WORLD)) { - player.sendMessage(TranslatableCaption.of("permission.no_permission"), Templates.of("node", "plots.list.world")); + player.sendMessage( + TranslatableCaption.of("permission.no_permission"), + Templates.of("node", "plots.list.world") + ); return false; } if (!Permissions.hasPermission(player, "plots.list.world." + args[0])) { - player.sendMessage(TranslatableCaption.of("permission.no_permission"), Templates.of("node", "plots.list.world." + args[0])); + player.sendMessage( + TranslatableCaption.of("permission.no_permission"), + Templates.of("node", "plots.list.world." + args[0]) + ); return false; } plotConsumer.accept(PlotQuery.newQuery().inWorld(args[0])); @@ -323,10 +390,16 @@ public class ListCmd extends SubCommand { player.sendMessage(TranslatableCaption.of("errors.invalid_player"), Templates.of("value", args[0])); } else { if (!Permissions.hasPermission(player, Permission.PERMISSION_LIST_PLAYER)) { - player.sendMessage(TranslatableCaption.of("permission.no_permission"), Templates.of("node", "plots.list.player")); + player.sendMessage( + TranslatableCaption.of("permission.no_permission"), + Templates.of("node", "plots.list.player") + ); } else { sort[0] = false; - plotConsumer.accept(PlotQuery.newQuery().ownedBy(uuid).withSortingStrategy(SortingStrategy.SORT_BY_TEMP)); + plotConsumer.accept(PlotQuery + .newQuery() + .ownedBy(uuid) + .withSortingStrategy(SortingStrategy.SORT_BY_TEMP)); } } }); @@ -339,7 +412,8 @@ public class ListCmd extends SubCommand { // Header plots.removeIf(plot -> !plot.isBasePlot()); this.paginate(player, plots, pageSize, page, new RunnableVal3() { - @Override public void run(Integer i, Plot plot, CaptionHolder caption) { + @Override + public void run(Integer i, Plot plot, CaptionHolder caption) { Caption color; if (plot.getOwner() == null) { color = TranslatableCaption.of("info.plot_list_no_owner"); @@ -352,16 +426,31 @@ public class ListCmd extends SubCommand { } else { color = TranslatableCaption.of("info.plot_list_default"); } - Component trusted = MINI_MESSAGE.parse(TranslatableCaption.of("info.plot_info_trusted").getComponent(player), - Template.of("trusted", PlayerManager.getPlayerList(plot.getTrusted(), player))); - Component members = MINI_MESSAGE.parse(TranslatableCaption.of("info.plot_info_members").getComponent(player), - Template.of("members", PlayerManager.getPlayerList(plot.getMembers(), player))); + Component trusted = MINI_MESSAGE.parse( + TranslatableCaption.of("info.plot_info_trusted").getComponent(player), + Template.of("trusted", PlayerManager.getPlayerList(plot.getTrusted(), player)) + ); + Component members = MINI_MESSAGE.parse( + TranslatableCaption.of("info.plot_info_members").getComponent(player), + Template.of("members", PlayerManager.getPlayerList(plot.getMembers(), player)) + ); Template command_tp = Template.of("command_tp", "/plot visit " + plot.getArea() + ";" + plot.getId()); Template command_info = Template.of("command_info", "/plot info " + plot.getArea() + ";" + plot.getId()); Template hover_info = - Template.of("hover_info", MINI_MESSAGE.serialize(Component.text().append(trusted).append(Component.newline()).append(members).asComponent())); + Template.of( + "hover_info", + MINI_MESSAGE.serialize(Component + .text() + .append(trusted) + .append(Component.newline()) + .append(members) + .asComponent()) + ); Template numberTemplate = Template.of("number", String.valueOf(i)); - Template plotTemplate = Template.of("plot", MINI_MESSAGE.parse(color.getComponent(player), Template.of("plot", plot.toString()))); + Template plotTemplate = Template.of( + "plot", + MINI_MESSAGE.parse(color.getComponent(player), Template.of("plot", plot.toString())) + ); String prefix = ""; String online = TranslatableCaption.of("info.plot_list_player_online").getComponent(player); @@ -369,7 +458,7 @@ public class ListCmd extends SubCommand { TextComponent.Builder builder = Component.text(); try { final List names = PlotSquared.get().getImpromptuUUIDPipeline().getNames(plot.getOwners()) - .get(Settings.UUID.BLOCKING_TIMEOUT, TimeUnit.MILLISECONDS); + .get(Settings.UUID.BLOCKING_TIMEOUT, TimeUnit.MILLISECONDS); for (final UUIDMapping uuidMapping : names) { PlotPlayer pp = PlotSquared.platform().playerManager().getPlayerIfExists(uuidMapping.getUuid()); Template prefixTemplate = Template.of("prefix", prefix); @@ -391,7 +480,10 @@ public class ListCmd extends SubCommand { playerBuilder.append(", "); } } - player.sendMessage(TranslatableCaption.of("errors.invalid_player"), Templates.of("value", playerBuilder.toString())); + player.sendMessage( + TranslatableCaption.of("errors.invalid_player"), + Templates.of("value", playerBuilder.toString()) + ); } catch (TimeoutException e) { player.sendMessage(TranslatableCaption.of("players.fetching_players_timeout")); } @@ -402,7 +494,8 @@ public class ListCmd extends SubCommand { }, "/plot list " + args[0], TranslatableCaption.of("list.plot_list_header_paged")); } - @Override public Collection tab(PlotPlayer player, String[] args, boolean space) { + @Override + public Collection tab(PlotPlayer player, String[] args, boolean space) { final List completions = new LinkedList<>(); if (this.econHandler.isSupported() && Permissions.hasPermission(player, Permission.PERMISSION_LIST_FOR_SALE)) { completions.add("forsale"); @@ -432,9 +525,11 @@ public class ListCmd extends SubCommand { completions.add("expired"); } - final List commands = completions.stream().filter(completion -> completion.toLowerCase().startsWith(args[0].toLowerCase())) - .map(completion -> new Command(null, true, completion, "", RequiredType.NONE, CommandCategory.TELEPORT) { - }).collect(Collectors.toCollection(LinkedList::new)); + final List commands = completions.stream().filter(completion -> completion + .toLowerCase() + .startsWith(args[0].toLowerCase())) + .map(completion -> new Command(null, true, completion, "", RequiredType.NONE, CommandCategory.TELEPORT) { + }).collect(Collectors.toCollection(LinkedList::new)); if (Permissions.hasPermission(player, Permission.PERMISSION_LIST_PLAYER) && args[0].length() > 0) { commands.addAll(TabCompletions.completePlayers(args[0], Collections.emptyList())); diff --git a/Core/src/main/java/com/plotsquared/core/command/Load.java b/Core/src/main/java/com/plotsquared/core/command/Load.java index d230717ab..bde98bc32 100644 --- a/Core/src/main/java/com/plotsquared/core/command/Load.java +++ b/Core/src/main/java/com/plotsquared/core/command/Load.java @@ -43,31 +43,35 @@ import com.plotsquared.core.util.SchematicHandler; import com.plotsquared.core.util.task.RunnableVal; import com.plotsquared.core.util.task.TaskManager; import net.kyori.adventure.text.minimessage.Template; +import org.checkerframework.checker.nullness.qual.NonNull; -import javax.annotation.Nonnull; import java.net.MalformedURLException; import java.net.URL; import java.util.Collections; import java.util.List; @CommandDeclaration(command = "load", - aliases = "restore", - category = CommandCategory.SCHEMATIC, - requiredType = RequiredType.NONE, - permission = "plots.load", - usage = "/plot load") + aliases = "restore", + category = CommandCategory.SCHEMATIC, + requiredType = RequiredType.NONE, + permission = "plots.load", + usage = "/plot load") public class Load extends SubCommand { private final PlotAreaManager plotAreaManager; private final SchematicHandler schematicHandler; - @Inject public Load(@Nonnull final PlotAreaManager plotAreaManager, - @Nonnull final SchematicHandler schematicHandler) { + @Inject + public Load( + final @NonNull PlotAreaManager plotAreaManager, + final @NonNull SchematicHandler schematicHandler + ) { this.plotAreaManager = plotAreaManager; this.schematicHandler = schematicHandler; } - @Override public boolean onCommand(final PlotPlayer player, final String[] args) { + @Override + public boolean onCommand(final PlotPlayer player, final String[] args) { final String world = player.getLocation().getWorldName(); if (!this.plotAreaManager.hasPlotArea(world)) { player.sendMessage(TranslatableCaption.of("errors.not_in_plot_world")); @@ -83,7 +87,7 @@ public class Load extends SubCommand { return false; } if (!plot.isOwner(player.getUUID()) && !Permissions - .hasPermission(player, Permission.PERMISSION_ADMIN_COMMAND_LOAD)) { + .hasPermission(player, Permission.PERMISSION_ADMIN_COMMAND_LOAD)) { player.sendMessage(TranslatableCaption.of("permission.no_plot_perms")); return false; } @@ -93,7 +97,7 @@ public class Load extends SubCommand { } try (final MetaDataAccess> metaDataAccess = - player.accessTemporaryMetaData(PlayerMetaDataKeys.TEMPORARY_SCHEMATICS)) { + player.accessTemporaryMetaData(PlayerMetaDataKeys.TEMPORARY_SCHEMATICS)) { if (args.length != 0) { if (args.length == 1) { List schematics = metaDataAccess.get().orElse(null); @@ -111,9 +115,9 @@ public class Load extends SubCommand { } catch (Exception ignored) { // use /plot load player.sendMessage( - TranslatableCaption.of("invalid.not_valid_number"), - Template.of("value", "(1, " + schematics.size() + ')') - ); + TranslatableCaption.of("invalid.not_valid_number"), + Template.of("value", "(1, " + schematics.size() + ')') + ); return false; } final URL url; @@ -131,30 +135,40 @@ public class Load extends SubCommand { if (taskSchematic == null) { plot.removeRunning(); player.sendMessage( - TranslatableCaption.of("schematics.schematic_invalid"), - Template.of("reason", "non-existent or not in gzip format") - ); + TranslatableCaption.of("schematics.schematic_invalid"), + Template.of("reason", "non-existent or not in gzip format") + ); return; } PlotArea area = plot.getArea(); - this.schematicHandler.paste(taskSchematic, plot, 0, area.getMinBuildHeight(), 0, false, player, new RunnableVal() { - @Override public void run(Boolean value) { - plot.removeRunning(); - if (value) { - player.sendMessage(TranslatableCaption.of("schematics.schematic_paste_success")); - } else { - player.sendMessage(TranslatableCaption.of("schematics.schematic_paste_failed")); + this.schematicHandler.paste( + taskSchematic, + plot, + 0, + area.getMinBuildHeight(), + 0, + false, + player, + new RunnableVal() { + @Override + public void run(Boolean value) { + plot.removeRunning(); + if (value) { + player.sendMessage(TranslatableCaption.of("schematics.schematic_paste_success")); + } else { + player.sendMessage(TranslatableCaption.of("schematics.schematic_paste_failed")); + } + } } - } - }); + ); }); return true; } plot.removeRunning(); player.sendMessage( - TranslatableCaption.of("commandconfig.command_syntax"), - Template.of("value", "/plot load ") - ); + TranslatableCaption.of("commandconfig.command_syntax"), + Template.of("value", "/plot load ") + ); return false; } @@ -182,7 +196,7 @@ public class Load extends SubCommand { public void displaySaves(PlotPlayer player) { try (final MetaDataAccess> metaDataAccess = - player.accessTemporaryMetaData(PlayerMetaDataKeys.TEMPORARY_SCHEMATICS)) { + player.accessTemporaryMetaData(PlayerMetaDataKeys.TEMPORARY_SCHEMATICS)) { List schematics = metaDataAccess.get().orElse(Collections.emptyList()); for (int i = 0; i < Math.min(schematics.size(), 32); i++) { try { @@ -197,7 +211,7 @@ public class Load extends SubCommand { String size = split[4]; String color = ""; player.sendMessage(StaticCaption.of("[" + (i + 1) + "] " + color + time + " | " + color + world + ';' + id - + " | " + color + size + 'x' + size)); + + " | " + color + size + 'x' + size)); } catch (Exception e) { e.printStackTrace(); } @@ -241,4 +255,5 @@ public class Load extends SubCommand { } return toreturn.toString().trim(); } + } diff --git a/Core/src/main/java/com/plotsquared/core/command/MainCommand.java b/Core/src/main/java/com/plotsquared/core/command/MainCommand.java index 6a92cbb90..ca7640721 100644 --- a/Core/src/main/java/com/plotsquared/core/command/MainCommand.java +++ b/Core/src/main/java/com/plotsquared/core/command/MainCommand.java @@ -37,7 +37,6 @@ import com.plotsquared.core.player.PlayerMetaDataKeys; import com.plotsquared.core.player.PlotPlayer; import com.plotsquared.core.plot.Plot; import com.plotsquared.core.plot.PlotArea; -import com.plotsquared.core.plot.world.SinglePlot; import com.plotsquared.core.plot.world.SinglePlotArea; import com.plotsquared.core.util.EconHandler; import com.plotsquared.core.util.Permissions; @@ -56,7 +55,7 @@ import java.util.concurrent.CompletableFuture; * PlotSquared command class. */ @CommandDeclaration(command = "plot", - aliases = {"plots", "p", "plotsquared", "plot2", "p2", "ps", "2", "plotme", "plotz", "ap"}) + aliases = {"plots", "p", "plotsquared", "plot2", "p2", "ps", "2", "plotme", "plotz", "ap"}) public class MainCommand extends Command { private static final Logger logger = LoggerFactory.getLogger("P2/" + MainCommand.class.getSimpleName()); @@ -193,7 +192,7 @@ public class MainCommand extends Command { PlotArea area = player.getApplicablePlotArea(); if (area != null && econHandler.isEnabled(area)) { PlotExpression priceEval = - area.getPrices().get(cmd.getFullId()); + area.getPrices().get(cmd.getFullId()); double price = priceEval != null ? priceEval.evaluate(0d) : 0d; if (econHandler.getMoney(player) < price) { if (failure != null) { @@ -224,7 +223,8 @@ public class MainCommand extends Command { } } }, new RunnableVal2() { - @Override public void run(Command cmd, CommandResult result) { + @Override + public void run(Command cmd, CommandResult result) { // Post command stuff!? } }).thenAccept(result -> { @@ -238,9 +238,11 @@ public class MainCommand extends Command { } @Override - public CompletableFuture execute(final PlotPlayer player, String[] args, - RunnableVal3 confirm, - RunnableVal2 whenDone) { + public CompletableFuture execute( + final PlotPlayer player, String[] args, + RunnableVal3 confirm, + RunnableVal2 whenDone + ) { // Optional command scope // Location location = null; Plot plot = null; @@ -249,9 +251,9 @@ public class MainCommand extends Command { PlotArea area = player.getApplicablePlotArea(); Plot newPlot = Plot.fromString(area, args[0]); if (newPlot != null && (player instanceof ConsolePlayer || newPlot.getArea() - .equals(area) || Permissions.hasPermission(player, Permission.PERMISSION_ADMIN) - || Permissions.hasPermission(player, Permission.PERMISSION_ADMIN_AREA_SUDO)) - && !newPlot.isDenied(player.getUUID())) { + .equals(area) || Permissions.hasPermission(player, Permission.PERMISSION_ADMIN) + || Permissions.hasPermission(player, Permission.PERMISSION_ADMIN_AREA_SUDO)) + && !newPlot.isDenied(player.getUUID())) { final Location newLoc; if (newPlot.getArea() instanceof SinglePlotArea) { newLoc = newPlot.isLoaded() ? newPlot.getCenterSynchronous() : Location.at("", 0, 0, 0); @@ -261,12 +263,12 @@ public class MainCommand extends Command { if (player.canTeleport(newLoc)) { // Save meta try (final MetaDataAccess locationMetaDataAccess - = player.accessTemporaryMetaData(PlayerMetaDataKeys.TEMPORARY_LOCATION)) { + = player.accessTemporaryMetaData(PlayerMetaDataKeys.TEMPORARY_LOCATION)) { location = locationMetaDataAccess.get().orElse(null); locationMetaDataAccess.set(newLoc); } try (final MetaDataAccess plotMetaDataAccess - = player.accessTemporaryMetaData(PlayerMetaDataKeys.TEMPORARY_LAST_PLOT)) { + = player.accessTemporaryMetaData(PlayerMetaDataKeys.TEMPORARY_LAST_PLOT)) { plot = plotMetaDataAccess.get().orElse(null); plotMetaDataAccess.set(newPlot); } @@ -280,13 +282,14 @@ public class MainCommand extends Command { if (args.length >= 2 && !args[0].isEmpty() && args[0].charAt(0) == '-') { if ("f".equals(args[0].substring(1))) { confirm = new RunnableVal3() { - @Override public void run(Command cmd, Runnable success, Runnable failure) { + @Override + public void run(Command cmd, Runnable success, Runnable failure) { if (area != null && PlotSquared.platform().econHandler().isEnabled(area)) { PlotExpression priceEval = - area.getPrices().get(cmd.getFullId()); + area.getPrices().get(cmd.getFullId()); double price = priceEval != null ? priceEval.evaluate(0d) : 0d; if (price != 0d - && PlotSquared.platform().econHandler().getMoney(player) < price) { + && PlotSquared.platform().econHandler().getMoney(player) < price) { if (failure != null) { failure.run(); } @@ -313,8 +316,10 @@ public class MainCommand extends Command { e.printStackTrace(); String message = e.getMessage(); if (message != null) { - player.sendMessage(TranslatableCaption.of("errors.error"), - net.kyori.adventure.text.minimessage.Template.of("value", message)); + player.sendMessage( + TranslatableCaption.of("errors.error"), + net.kyori.adventure.text.minimessage.Template.of("value", message) + ); } else { player.sendMessage( TranslatableCaption.of("errors.error_console")); @@ -323,7 +328,7 @@ public class MainCommand extends Command { // Reset command scope // if (tp && !(player instanceof ConsolePlayer)) { try (final MetaDataAccess locationMetaDataAccess - = player.accessTemporaryMetaData(PlayerMetaDataKeys.TEMPORARY_LOCATION)) { + = player.accessTemporaryMetaData(PlayerMetaDataKeys.TEMPORARY_LOCATION)) { if (location == null) { locationMetaDataAccess.remove(); } else { @@ -331,7 +336,7 @@ public class MainCommand extends Command { } } try (final MetaDataAccess plotMetaDataAccess - = player.accessTemporaryMetaData(PlayerMetaDataKeys.TEMPORARY_LAST_PLOT)) { + = player.accessTemporaryMetaData(PlayerMetaDataKeys.TEMPORARY_LAST_PLOT)) { if (plot == null) { plotMetaDataAccess.remove(); } else { @@ -342,7 +347,9 @@ public class MainCommand extends Command { return CompletableFuture.completedFuture(true); } - @Override public boolean canExecute(PlotPlayer player, boolean message) { + @Override + public boolean canExecute(PlotPlayer player, boolean message) { return true; } + } diff --git a/Core/src/main/java/com/plotsquared/core/command/Merge.java b/Core/src/main/java/com/plotsquared/core/command/Merge.java index e369fd653..ac41b1f8c 100644 --- a/Core/src/main/java/com/plotsquared/core/command/Merge.java +++ b/Core/src/main/java/com/plotsquared/core/command/Merge.java @@ -43,31 +43,34 @@ import com.plotsquared.core.util.Permissions; import com.plotsquared.core.util.PlotExpression; import com.plotsquared.core.util.StringMan; import net.kyori.adventure.text.minimessage.Template; +import org.checkerframework.checker.nullness.qual.NonNull; -import javax.annotation.Nonnull; import java.util.UUID; @CommandDeclaration(command = "merge", - aliases = "m", - permission = "plots.merge", - usage = "/plot merge [removeroads]", - category = CommandCategory.SETTINGS, - requiredType = RequiredType.NONE, - confirmation = true) + aliases = "m", + permission = "plots.merge", + usage = "/plot merge [removeroads]", + category = CommandCategory.SETTINGS, + requiredType = RequiredType.NONE, + confirmation = true) public class Merge extends SubCommand { - public static final String[] values = new String[] {"north", "east", "south", "west"}; - public static final String[] aliases = new String[] {"n", "e", "s", "w"}; + public static final String[] values = new String[]{"north", "east", "south", "west"}; + public static final String[] aliases = new String[]{"n", "e", "s", "w"}; private final EventDispatcher eventDispatcher; private final EconHandler econHandler; - @Inject public Merge(@Nonnull final EventDispatcher eventDispatcher, - @Nonnull final EconHandler econHandler) { + @Inject + public Merge( + final @NonNull EventDispatcher eventDispatcher, + final @NonNull EconHandler econHandler + ) { this.eventDispatcher = eventDispatcher; this.econHandler = econHandler; } - + public static String direction(float yaw) { yaw = yaw / 90; int i = Math.round(yaw); @@ -90,7 +93,8 @@ public class Merge extends SubCommand { } } - @Override public boolean onCommand(final PlotPlayer player, String[] args) { + @Override + public boolean onCommand(final PlotPlayer player, String[] args) { Location location = player.getLocationFull(); final Plot plot = location.getPlotAbs(); if (plot == null) { @@ -125,7 +129,7 @@ public class Merge extends SubCommand { } } if (direction == null && (args[0].equalsIgnoreCase("all") || args[0] - .equalsIgnoreCase("auto"))) { + .equalsIgnoreCase("auto"))) { direction = Direction.ALL; } } @@ -143,11 +147,12 @@ public class Merge extends SubCommand { final int size = plot.getConnectedPlots().size(); int max = Permissions.hasPermissionRange(player, "plots.merge", Settings.Limit.MAX_PLOTS); PlotMergeEvent event = - this.eventDispatcher.callMerge(plot, direction, max, player); + this.eventDispatcher.callMerge(plot, direction, max, player); if (event.getEventResult() == Result.DENY) { player.sendMessage( TranslatableCaption.of("events.event_denied"), - Template.of("value", "Merge")); + Template.of("value", "Merge") + ); return false; } boolean force = event.getEventResult() == Result.FORCE; @@ -172,11 +177,11 @@ public class Merge extends SubCommand { terrain = "true".equalsIgnoreCase(args[1]); } if (!force && !terrain && !Permissions - .hasPermission(player, Permission.PERMISSION_MERGE_KEEP_ROAD)) { - player.sendMessage( - TranslatableCaption.of("permission.no_permission"), - Template.of("node", String.valueOf(Permission.PERMISSION_MERGE_KEEP_ROAD)) - ); + .hasPermission(player, Permission.PERMISSION_MERGE_KEEP_ROAD)) { + player.sendMessage( + TranslatableCaption.of("permission.no_permission"), + Template.of("node", String.valueOf(Permission.PERMISSION_MERGE_KEEP_ROAD)) + ); return true; } if (plot.getPlotModificationManager().autoMerge(Direction.ALL, maxSize, uuid, player, terrain)) { @@ -203,7 +208,7 @@ public class Merge extends SubCommand { } } if (!force && this.econHandler.isEnabled(plotArea) && price > 0d - && this.econHandler.getMoney(player) < price) { + && this.econHandler.getMoney(player) < price) { player.sendMessage( TranslatableCaption.of("economy.cannot_afford_merge"), Template.of("money", this.econHandler.format(price)) @@ -217,7 +222,7 @@ public class Merge extends SubCommand { terrain = true; } if (!force && !terrain && !Permissions - .hasPermission(player, Permission.PERMISSION_MERGE_KEEP_ROAD)) { + .hasPermission(player, Permission.PERMISSION_MERGE_KEEP_ROAD)) { player.sendMessage( TranslatableCaption.of("permission.no_permission"), Template.of("node", String.valueOf(Permission.PERMISSION_MERGE_KEEP_ROAD)) @@ -237,7 +242,7 @@ public class Merge extends SubCommand { } Plot adjacent = plot.getRelative(direction); if (adjacent == null || !adjacent.hasOwner() || adjacent - .isMerged((direction.getIndex() + 2) % 4) || (!force && adjacent.isOwner(uuid))) { + .isMerged((direction.getIndex() + 2) % 4) || (!force && adjacent.isOwner(uuid))) { player.sendMessage(TranslatableCaption.of("merge.no_available_automerge")); return false; } @@ -283,8 +288,12 @@ public class Merge extends SubCommand { }; if (!force && hasConfirmation(player)) { CmdConfirm.addPending(accepter, MINI_MESSAGE.serialize(MINI_MESSAGE - .parse(TranslatableCaption.of("merge.merge_request_confirm").getComponent(player), Template.of("player", player.getName()))), - run); + .parse( + TranslatableCaption.of("merge.merge_request_confirm").getComponent(player), + Template.of("player", player.getName()) + )), + run + ); } else { run.run(); } @@ -296,4 +305,5 @@ public class Merge extends SubCommand { player.sendMessage(TranslatableCaption.of("merge.merge_requested")); return true; } + } diff --git a/Core/src/main/java/com/plotsquared/core/command/Middle.java b/Core/src/main/java/com/plotsquared/core/command/Middle.java index c76a788e3..5c2837ddb 100644 --- a/Core/src/main/java/com/plotsquared/core/command/Middle.java +++ b/Core/src/main/java/com/plotsquared/core/command/Middle.java @@ -35,13 +35,14 @@ import com.plotsquared.core.plot.Plot; * @author manuelgu, altered by Citymonstret */ @CommandDeclaration(command = "middle", - aliases = {"center", "centre"}, - usage = "/plot middle", - category = CommandCategory.TELEPORT, - requiredType = RequiredType.PLAYER) + aliases = {"center", "centre"}, + usage = "/plot middle", + category = CommandCategory.TELEPORT, + requiredType = RequiredType.PLAYER) public class Middle extends SubCommand { - @Override public boolean onCommand(PlotPlayer player, String[] arguments) { + @Override + public boolean onCommand(PlotPlayer player, String[] arguments) { Location location = player.getLocation(); Plot plot = location.getPlot(); if (plot == null) { @@ -52,4 +53,5 @@ public class Middle extends SubCommand { player.sendMessage(TranslatableCaption.of("teleport.teleported_to_plot")); return true; } + } diff --git a/Core/src/main/java/com/plotsquared/core/command/Move.java b/Core/src/main/java/com/plotsquared/core/command/Move.java index 7f0a3c93a..c4abb199d 100644 --- a/Core/src/main/java/com/plotsquared/core/command/Move.java +++ b/Core/src/main/java/com/plotsquared/core/command/Move.java @@ -26,9 +26,9 @@ package com.plotsquared.core.command; import com.google.inject.Inject; -import com.plotsquared.core.permissions.Permission; import com.plotsquared.core.configuration.caption.TranslatableCaption; import com.plotsquared.core.location.Location; +import com.plotsquared.core.permissions.Permission; import com.plotsquared.core.player.PlotPlayer; import com.plotsquared.core.plot.Plot; import com.plotsquared.core.plot.PlotArea; @@ -37,27 +37,30 @@ import com.plotsquared.core.util.Permissions; import com.plotsquared.core.util.task.RunnableVal2; import com.plotsquared.core.util.task.RunnableVal3; import net.kyori.adventure.text.minimessage.Template; +import org.checkerframework.checker.nullness.qual.NonNull; -import javax.annotation.Nonnull; import java.util.concurrent.CompletableFuture; @CommandDeclaration(usage = "/plot move ", - command = "move", - permission = "plots.move", - category = CommandCategory.CLAIMING, - requiredType = RequiredType.PLAYER) + command = "move", + permission = "plots.move", + category = CommandCategory.CLAIMING, + requiredType = RequiredType.PLAYER) public class Move extends SubCommand { private final PlotAreaManager plotAreaManager; - @Inject public Move(@Nonnull final PlotAreaManager plotAreaManager) { + @Inject + public Move(final @NonNull PlotAreaManager plotAreaManager) { this.plotAreaManager = plotAreaManager; } @Override - public CompletableFuture execute(PlotPlayer player, String[] args, - RunnableVal3 confirm, - RunnableVal2 whenDone) { + public CompletableFuture execute( + PlotPlayer player, String[] args, + RunnableVal3 confirm, + RunnableVal2 whenDone + ) { Location location = player.getLocation(); Plot plot1 = location.getPlotAbs(); if (plot1 == null) { @@ -65,13 +68,13 @@ public class Move extends SubCommand { return CompletableFuture.completedFuture(false); } if (!plot1.isOwner(player.getUUID()) && !Permissions - .hasPermission(player, Permission.PERMISSION_ADMIN)) { + .hasPermission(player, Permission.PERMISSION_ADMIN)) { player.sendMessage(TranslatableCaption.of("permission.no_plot_perms")); return CompletableFuture.completedFuture(false); } boolean override = false; if (args.length == 2 && args[1].equalsIgnoreCase("-f")) { - args = new String[] {args[0]}; + args = new String[]{args[0]}; override = true; } if (args.length != 1) { @@ -97,7 +100,7 @@ public class Move extends SubCommand { return CompletableFuture.completedFuture(false); } if (!plot1.getArea().isCompatible(plot2.getArea()) && (!override || !Permissions - .hasPermission(player, Permission.PERMISSION_ADMIN))) { + .hasPermission(player, Permission.PERMISSION_ADMIN))) { player.sendMessage(TranslatableCaption.of("errors.plotworld_incompatible")); return CompletableFuture.completedFuture(false); } @@ -118,7 +121,8 @@ public class Move extends SubCommand { }); } - @Override public boolean onCommand(final PlotPlayer player, String[] args) { + @Override + public boolean onCommand(final PlotPlayer player, String[] args) { return true; } diff --git a/Core/src/main/java/com/plotsquared/core/command/Music.java b/Core/src/main/java/com/plotsquared/core/command/Music.java index f9e73f2ee..4a0ccf70b 100644 --- a/Core/src/main/java/com/plotsquared/core/command/Music.java +++ b/Core/src/main/java/com/plotsquared/core/command/Music.java @@ -42,31 +42,34 @@ import com.plotsquared.core.util.InventoryUtil; import com.plotsquared.core.util.Permissions; import com.sk89q.worldedit.world.item.ItemTypes; import net.kyori.adventure.text.minimessage.Template; +import org.checkerframework.checker.nullness.qual.Nullable; -import javax.annotation.Nullable; import java.util.Arrays; import java.util.Collection; import java.util.Locale; @CommandDeclaration(command = "music", - permission = "plots.music", - usage = "/plot music", - category = CommandCategory.APPEARANCE, - requiredType = RequiredType.PLAYER) + permission = "plots.music", + usage = "/plot music", + category = CommandCategory.APPEARANCE, + requiredType = RequiredType.PLAYER) public class Music extends SubCommand { private static final Collection DISCS = Arrays - .asList("music_disc_13", "music_disc_cat", "music_disc_blocks", "music_disc_chirp", - "music_disc_far", "music_disc_mall", "music_disc_mellohi", "music_disc_stal", - "music_disc_strad", "music_disc_ward", "music_disc_11", "music_disc_wait", "music_disc_pigstep"); + .asList("music_disc_13", "music_disc_cat", "music_disc_blocks", "music_disc_chirp", + "music_disc_far", "music_disc_mall", "music_disc_mellohi", "music_disc_stal", + "music_disc_strad", "music_disc_ward", "music_disc_11", "music_disc_wait", "music_disc_pigstep" + ); private final InventoryUtil inventoryUtil; - @Inject public Music(@Nullable final InventoryUtil inventoryUtil) { + @Inject + public Music(final @Nullable InventoryUtil inventoryUtil) { this.inventoryUtil = inventoryUtil; } - @Override public boolean onCommand(PlotPlayer player, String[] args) { + @Override + public boolean onCommand(PlotPlayer player, String[] args) { Location location = player.getLocation(); final Plot plot = location.getPlotAbs(); if (plot == null) { @@ -74,38 +77,42 @@ public class Music extends SubCommand { return false; } if (!plot.isAdded(player.getUUID()) && !Permissions - .hasPermission(player, Permission.PERMISSION_ADMIN_MUSIC_OTHER)) { + .hasPermission(player, Permission.PERMISSION_ADMIN_MUSIC_OTHER)) { player.sendMessage( - TranslatableCaption.of("permission.no_permission"), - Template.of("node", String.valueOf(Permission.PERMISSION_ADMIN_MUSIC_OTHER))); + TranslatableCaption.of("permission.no_permission"), + Template.of("node", String.valueOf(Permission.PERMISSION_ADMIN_MUSIC_OTHER)) + ); return true; } PlotInventory inv = new PlotInventory(this.inventoryUtil, player, 2, "Plot Jukebox") { - @Override public boolean onClick(int index) { + @Override + public boolean onClick(int index) { PlotItemStack item = getItem(index); if (item == null) { return true; } if (item.getType() == ItemTypes.BEDROCK) { PlotFlag plotFlag = plot.getFlagContainer().getFlag(MusicFlag.class) - .createFlagInstance(item.getType()); + .createFlagInstance(item.getType()); PlotFlagRemoveEvent event = new PlotFlagRemoveEvent(plotFlag, plot); if (event.getEventResult() == Result.DENY) { getPlayer().sendMessage( - TranslatableCaption.of("events.event_denied"), - Template.of("value", "Music removal")); + TranslatableCaption.of("events.event_denied"), + Template.of("value", "Music removal") + ); return true; } plot.removeFlag(event.getFlag()); getPlayer().sendMessage(TranslatableCaption.of("flag.flag_removed")); } else if (item.getName().toLowerCase(Locale.ENGLISH).contains("disc")) { PlotFlag plotFlag = plot.getFlagContainer().getFlag(MusicFlag.class) - .createFlagInstance(item.getType()); + .createFlagInstance(item.getType()); PlotFlagAddEvent event = new PlotFlagAddEvent(plotFlag, plot); if (event.getEventResult() == Result.DENY) { getPlayer().sendMessage( - TranslatableCaption.of("events.event_denied"), - Template.of("value", "Music addition")); + TranslatableCaption.of("events.event_denied"), + Template.of("value", "Music addition") + ); return true; } plot.setFlag(event.getFlag()); @@ -135,4 +142,5 @@ public class Music extends SubCommand { inv.openInventory(); return true; } + } diff --git a/Core/src/main/java/com/plotsquared/core/command/Near.java b/Core/src/main/java/com/plotsquared/core/command/Near.java index 5496d3354..7d02485ee 100644 --- a/Core/src/main/java/com/plotsquared/core/command/Near.java +++ b/Core/src/main/java/com/plotsquared/core/command/Near.java @@ -36,19 +36,22 @@ import net.kyori.adventure.text.minimessage.Template; import java.util.concurrent.CompletableFuture; @CommandDeclaration(command = "near", - aliases = "n", - usage = "/plot near", - category = CommandCategory.INFO, - requiredType = RequiredType.PLAYER) + aliases = "n", + usage = "/plot near", + category = CommandCategory.INFO, + requiredType = RequiredType.PLAYER) public class Near extends Command { + public Near() { super(MainCommand.getInstance(), true); } @Override - public CompletableFuture execute(PlotPlayer player, String[] args, - RunnableVal3 confirm, - RunnableVal2 whenDone) throws CommandException { + public CompletableFuture execute( + PlotPlayer player, String[] args, + RunnableVal3 confirm, + RunnableVal2 whenDone + ) throws CommandException { final Plot plot = check(player.getCurrentPlot(), TranslatableCaption.of("errors.not_in_plot")); player.sendMessage( TranslatableCaption.of("near.plot_near"), @@ -56,4 +59,5 @@ public class Near extends Command { ); return CompletableFuture.completedFuture(true); } + } diff --git a/Core/src/main/java/com/plotsquared/core/command/Owner.java b/Core/src/main/java/com/plotsquared/core/command/Owner.java index db7371ce5..e2782fc6f 100644 --- a/Core/src/main/java/com/plotsquared/core/command/Owner.java +++ b/Core/src/main/java/com/plotsquared/core/command/Owner.java @@ -27,12 +27,12 @@ package com.plotsquared.core.command; import com.google.inject.Inject; import com.plotsquared.core.PlotSquared; -import com.plotsquared.core.permissions.Permission; import com.plotsquared.core.configuration.Settings; import com.plotsquared.core.configuration.caption.TranslatableCaption; import com.plotsquared.core.events.PlotChangeOwnerEvent; import com.plotsquared.core.events.PlotUnlinkEvent; import com.plotsquared.core.events.Result; +import com.plotsquared.core.permissions.Permission; import com.plotsquared.core.player.PlotPlayer; import com.plotsquared.core.plot.Plot; import com.plotsquared.core.util.EventDispatcher; @@ -41,8 +41,8 @@ import com.plotsquared.core.util.PlayerManager; import com.plotsquared.core.util.TabCompletions; import com.plotsquared.core.util.task.TaskManager; import net.kyori.adventure.text.minimessage.Template; +import org.checkerframework.checker.nullness.qual.NonNull; -import javax.annotation.Nonnull; import java.util.Collection; import java.util.Collections; import java.util.Set; @@ -50,21 +50,23 @@ import java.util.UUID; import java.util.function.Consumer; @CommandDeclaration(command = "setowner", - permission = "plots.set.owner", - usage = "/plot setowner ", - aliases = {"owner", "so", "seto"}, - category = CommandCategory.CLAIMING, - requiredType = RequiredType.NONE, - confirmation = true) + permission = "plots.set.owner", + usage = "/plot setowner ", + aliases = {"owner", "so", "seto"}, + category = CommandCategory.CLAIMING, + requiredType = RequiredType.NONE, + confirmation = true) public class Owner extends SetCommand { private final EventDispatcher eventDispatcher; - - @Inject public Owner(@Nonnull final EventDispatcher eventDispatcher) { + + @Inject + public Owner(final @NonNull EventDispatcher eventDispatcher) { this.eventDispatcher = eventDispatcher; } - - @Override public boolean set(final PlotPlayer player, final Plot plot, String value) { + + @Override + public boolean set(final PlotPlayer player, final Plot plot, String value) { if (value == null || value.isEmpty()) { player.sendMessage(TranslatableCaption.of("owner.set_owner_missing_player")); player.sendMessage( @@ -77,34 +79,47 @@ public class Owner extends SetCommand { final Consumer uuidConsumer = uuid -> { if (uuid == null && !value.equalsIgnoreCase("none") && !value.equalsIgnoreCase("null") - && !value.equalsIgnoreCase("-")) { + && !value.equalsIgnoreCase("-")) { player.sendMessage( TranslatableCaption.of("errors.invalid_player"), Template.of("value", value) ); return; } - PlotChangeOwnerEvent event = this.eventDispatcher.callOwnerChange(player, plot, plot.hasOwner() ? plot.getOwnerAbs() : null, uuid, - plot.hasOwner()); + PlotChangeOwnerEvent event = this.eventDispatcher.callOwnerChange(player, + plot, + plot.hasOwner() ? plot.getOwnerAbs() : null, + uuid, + plot.hasOwner() + ); if (event.getEventResult() == Result.DENY) { player.sendMessage( - TranslatableCaption.of("events.event_denied"), - Template.of("value", "Owner change")); + TranslatableCaption.of("events.event_denied"), + Template.of("value", "Owner change") + ); return; } uuid = event.getNewOwner(); boolean force = event.getEventResult() == Result.FORCE; if (uuid == null) { if (!force && !Permissions - .hasPermission(player, Permission.PERMISSION_ADMIN_COMMAND_SET_OWNER, - true)) { + .hasPermission(player, Permission.PERMISSION_ADMIN_COMMAND_SET_OWNER, + true + )) { return; } - PlotUnlinkEvent unlinkEvent = this.eventDispatcher.callUnlink(plot.getArea(), plot, false, false, PlotUnlinkEvent.REASON.NEW_OWNER); + PlotUnlinkEvent unlinkEvent = this.eventDispatcher.callUnlink( + plot.getArea(), + plot, + false, + false, + PlotUnlinkEvent.REASON.NEW_OWNER + ); if (unlinkEvent.getEventResult() == Result.DENY) { player.sendMessage( - TranslatableCaption.of("events.event_denied"), - Template.of("value", "Unlink on owner change")); + TranslatableCaption.of("events.event_denied"), + Template.of("value", "Unlink on owner change") + ); return; } plot.getPlotModificationManager().unlinkPlot(unlinkEvent.isCreateRoad(), unlinkEvent.isCreateRoad()); @@ -125,7 +140,7 @@ public class Owner extends SetCommand { return; } if (!force && !Permissions - .hasPermission(player, Permission.PERMISSION_ADMIN_COMMAND_SET_OWNER)) { + .hasPermission(player, Permission.PERMISSION_ADMIN_COMMAND_SET_OWNER)) { if (other == null) { player.sendMessage( TranslatableCaption.of("invalid_player_offline"), @@ -135,8 +150,8 @@ public class Owner extends SetCommand { } int size = plots.size(); int currentPlots = (Settings.Limit.GLOBAL ? - other.getPlotCount() : - other.getPlotCount(plot.getWorldName())) + size; + other.getPlotCount() : + other.getPlotCount(plot.getWorldName())) + size; if (currentPlots > other.getAllowedPlots()) { player.sendMessage(TranslatableCaption.of("permission.cant_transfer_more_plots")); return; @@ -147,8 +162,9 @@ public class Owner extends SetCommand { final boolean removeDenied = plot.isDenied(finalUUID); Runnable run = () -> { if (plot.setOwner(finalUUID, player)) { - if (removeDenied) + if (removeDenied) { plot.removeDenied(finalUUID); + } plot.getPlotModificationManager().setSign(finalName); player.sendMessage(TranslatableCaption.of("owner.set_owner")); if (other != null) { @@ -179,7 +195,10 @@ public class Owner extends SetCommand { } return true; } - @Override public Collection tab(final PlotPlayer player, final String[] args, final boolean space) { + + @Override + public Collection tab(final PlotPlayer player, final String[] args, final boolean space) { return TabCompletions.completePlayers(String.join(",", args).trim(), Collections.emptyList()); } + } diff --git a/Core/src/main/java/com/plotsquared/core/command/PluginCmd.java b/Core/src/main/java/com/plotsquared/core/command/PluginCmd.java index 055819013..307fe2f65 100644 --- a/Core/src/main/java/com/plotsquared/core/command/PluginCmd.java +++ b/Core/src/main/java/com/plotsquared/core/command/PluginCmd.java @@ -33,21 +33,27 @@ import com.plotsquared.core.util.task.TaskManager; import net.kyori.adventure.text.minimessage.Template; @CommandDeclaration(command = "plugin", - permission = "plots.use", - usage = "/plot plugin", - aliases = "version", - category = CommandCategory.INFO) + permission = "plots.use", + usage = "/plot plugin", + aliases = "version", + category = CommandCategory.INFO) public class PluginCmd extends SubCommand { - @Override public boolean onCommand(final PlotPlayer player, String[] args) { + @Override + public boolean onCommand(final PlotPlayer player, String[] args) { TaskManager.getPlatformImplementation().taskAsync(() -> { player.sendMessage( - StaticCaption.of(">> " + PlotSquared.platform().pluginName() + " (Version: )"), + StaticCaption.of(">> " + PlotSquared + .platform() + .pluginName() + " (Version: )"), Template.of("version", String.valueOf(PlotSquared.get().getVersion())) ); - player.sendMessage(StaticCaption.of(">> Authors: Citymonstret & Empire92 & MattBDev & dordsor21 & NotMyFault & SirYwell")); - player.sendMessage(StaticCaption.of(">> Wiki: https://wiki.intellectualsites.com/plotsquared/home")); - player.sendMessage(StaticCaption.of(">> Discord: https://discord.gg/KxkjDVg")); + player.sendMessage(StaticCaption.of( + ">> Authors: Citymonstret & Empire92 & MattBDev & dordsor21 & NotMyFault & SirYwell")); + player.sendMessage(StaticCaption.of( + ">> Wiki: https://wiki.intellectualsites.com/plotsquared/home")); + player.sendMessage(StaticCaption.of( + ">> Discord: https://discord.gg/KxkjDVg")); player.sendMessage( StaticCaption.of(">> Premium: "), Template.of("value", String.valueOf(PremiumVerification.isPremium())) @@ -55,4 +61,5 @@ public class PluginCmd extends SubCommand { }); return true; } + } diff --git a/Core/src/main/java/com/plotsquared/core/command/Purge.java b/Core/src/main/java/com/plotsquared/core/command/Purge.java index 18d547276..b20b156c5 100644 --- a/Core/src/main/java/com/plotsquared/core/command/Purge.java +++ b/Core/src/main/java/com/plotsquared/core/command/Purge.java @@ -41,10 +41,10 @@ import com.plotsquared.core.util.query.PlotQuery; import com.plotsquared.core.util.task.TaskManager; import com.plotsquared.core.uuid.UUIDMapping; import net.kyori.adventure.text.minimessage.Template; +import org.checkerframework.checker.nullness.qual.NonNull; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import javax.annotation.Nonnull; import java.util.HashMap; import java.util.HashSet; import java.util.Iterator; @@ -53,11 +53,11 @@ import java.util.UUID; import java.util.concurrent.atomic.AtomicBoolean; @CommandDeclaration(usage = "/plot purge world: area: id: owner: shared: unknown:[true | false] clear:[true | false]", - command = "purge", - permission = "plots.admin", - category = CommandCategory.ADMINISTRATION, - requiredType = RequiredType.CONSOLE, - confirmation = true) + command = "purge", + permission = "plots.admin", + category = CommandCategory.ADMINISTRATION, + requiredType = RequiredType.CONSOLE, + confirmation = true) public class Purge extends SubCommand { private static final Logger logger = LoggerFactory.getLogger("P2/" + Purge.class.getSimpleName()); @@ -65,13 +65,17 @@ public class Purge extends SubCommand { private final PlotAreaManager plotAreaManager; private final PlotListener plotListener; - @Inject public Purge(@Nonnull final PlotAreaManager plotAreaManager, - @Nonnull final PlotListener plotListener) { + @Inject + public Purge( + final @NonNull PlotAreaManager plotAreaManager, + final @NonNull PlotListener plotListener + ) { this.plotAreaManager = plotAreaManager; this.plotListener = plotListener; } - @Override public boolean onCommand(final PlotPlayer player, String[] args) { + @Override + public boolean onCommand(final PlotPlayer player, String[] args) { if (args.length == 0) { sendUsage(player); return false; @@ -174,7 +178,7 @@ public class Purge extends SubCommand { } if (PlotSquared.get().plots_tmp != null) { for (Entry> entry : PlotSquared.get().plots_tmp - .entrySet()) { + .entrySet()) { String worldName = entry.getKey(); if (world != null && !world.equalsIgnoreCase(worldName)) { continue; @@ -199,7 +203,7 @@ public class Purge extends SubCommand { return false; } String cmd = - "/plot purge " + StringMan.join(args, " ") + " (" + toDelete.size() + " plots)"; + "/plot purge " + StringMan.join(args, " ") + " (" + toDelete.size() + " plots)"; boolean finalClear = clear; Runnable run = () -> { if (Settings.DEBUG) { @@ -209,7 +213,8 @@ public class Purge extends SubCommand { Iterator iterator = toDelete.iterator(); AtomicBoolean cleared = new AtomicBoolean(true); Runnable runasync = new Runnable() { - @Override public void run() { + @Override + public void run() { while (iterator.hasNext() && cleared.get()) { cleared.set(false); Plot plot = iterator.next(); @@ -231,7 +236,7 @@ public class Purge extends SubCommand { } } catch (NullPointerException e) { logger.error("NullPointer during purge detected. This is likely" - + " because you are deleting a world that has been removed", e); + + " because you are deleting a world that has been removed", e); } } cleared.set(true); @@ -258,4 +263,5 @@ public class Purge extends SubCommand { } return true; } + } diff --git a/Core/src/main/java/com/plotsquared/core/command/Rate.java b/Core/src/main/java/com/plotsquared/core/command/Rate.java index 1607b1694..0f9515721 100644 --- a/Core/src/main/java/com/plotsquared/core/command/Rate.java +++ b/Core/src/main/java/com/plotsquared/core/command/Rate.java @@ -26,12 +26,12 @@ package com.plotsquared.core.command; import com.google.inject.Inject; -import com.plotsquared.core.permissions.Permission; import com.plotsquared.core.configuration.Settings; import com.plotsquared.core.configuration.caption.TranslatableCaption; import com.plotsquared.core.database.DBFunc; import com.plotsquared.core.events.PlotRateEvent; import com.plotsquared.core.events.TeleportCause; +import com.plotsquared.core.permissions.Permission; import com.plotsquared.core.player.PlotPlayer; import com.plotsquared.core.plot.Plot; import com.plotsquared.core.plot.PlotInventory; @@ -46,8 +46,8 @@ import com.plotsquared.core.util.TabCompletions; import com.plotsquared.core.util.query.PlotQuery; import com.plotsquared.core.util.task.TaskManager; import net.kyori.adventure.text.minimessage.Template; +import org.checkerframework.checker.nullness.qual.NonNull; -import javax.annotation.Nonnull; import java.util.Collection; import java.util.Collections; import java.util.HashMap; @@ -58,23 +58,27 @@ import java.util.UUID; import java.util.stream.Collectors; @CommandDeclaration(command = "rate", - permission = "plots.rate", - usage = "/plot rate [# | next | purge]", - aliases = "rt", - category = CommandCategory.INFO, - requiredType = RequiredType.PLAYER) + permission = "plots.rate", + usage = "/plot rate [# | next | purge]", + aliases = "rt", + category = CommandCategory.INFO, + requiredType = RequiredType.PLAYER) public class Rate extends SubCommand { private final EventDispatcher eventDispatcher; private final InventoryUtil inventoryUtil; - - @Inject public Rate(@Nonnull final EventDispatcher eventDispatcher, - @Nonnull final InventoryUtil inventoryUtil) { + + @Inject + public Rate( + final @NonNull EventDispatcher eventDispatcher, + final @NonNull InventoryUtil inventoryUtil + ) { this.eventDispatcher = eventDispatcher; this.inventoryUtil = inventoryUtil; } - - @Override public boolean onCommand(final PlotPlayer player, String[] args) { + + @Override + public boolean onCommand(final PlotPlayer player, String[] args) { if (args.length == 1) { switch (args[0].toLowerCase()) { case "next": { @@ -100,8 +104,8 @@ public class Rate extends SubCommand { UUID uuid = player.getUUID(); for (Plot p : plots) { if ((!Settings.Done.REQUIRED_FOR_RATINGS || DoneFlag.isDone(p)) && p - .isBasePlot() && (!p.getRatings().containsKey(uuid)) && !p - .isAdded(uuid)) { + .isBasePlot() && (!p.getRatings().containsKey(uuid)) && !p + .isAdded(uuid)) { p.teleportPlayer(player, TeleportCause.COMMAND, result -> { }); player.sendMessage(TranslatableCaption.of("tutorial.rate_this")); @@ -118,7 +122,7 @@ public class Rate extends SubCommand { return false; } if (!Permissions - .hasPermission(player, Permission.PERMISSION_ADMIN_COMMAND_PURGE_RATINGS, true)) { + .hasPermission(player, Permission.PERMISSION_ADMIN_COMMAND_PURGE_RATINGS, true)) { return false; } plot.clearRatings(); @@ -146,7 +150,8 @@ public class Rate extends SubCommand { } if (Settings.Ratings.CATEGORIES != null && !Settings.Ratings.CATEGORIES.isEmpty()) { final Runnable run = new Runnable() { - @Override public void run() { + @Override + public void run() { if (plot.getRatings().containsKey(player.getUUID())) { player.sendMessage( TranslatableCaption.of("ratings.rating_already_exists"), @@ -158,13 +163,14 @@ public class Rate extends SubCommand { final MutableInt rating = new MutableInt(0); String title = Settings.Ratings.CATEGORIES.get(0); PlotInventory inventory = new PlotInventory(inventoryUtil, player, 1, title) { - @Override public boolean onClick(int i) { + @Override + public boolean onClick(int i) { rating.add((i + 1) * Math.pow(10, index.getValue())); index.increment(); if (index.getValue() >= Settings.Ratings.CATEGORIES.size()) { int rV = rating.getValue(); PlotRateEvent event = Rate.this.eventDispatcher - .callRating(this.getPlayer(), plot, new Rating(rV)); + .callRating(this.getPlayer(), plot, new Rating(rV)); if (event.getRating() != null) { plot.addRating(this.getPlayer().getUUID(), event.getRating()); getPlayer().sendMessage( @@ -172,9 +178,9 @@ public class Rate extends SubCommand { Template.of("plot", plot.getId().toString()) ); if (Permissions - .hasPermission(this.getPlayer(), Permission.PERMISSION_COMMENT)) { + .hasPermission(this.getPlayer(), Permission.PERMISSION_COMMENT)) { Command command = - MainCommand.getInstance().getCommand(Comment.class); + MainCommand.getInstance().getCommand(Comment.class); if (command != null) { getPlayer().sendMessage( TranslatableCaption.of("tutorial.comment_this"), @@ -240,7 +246,7 @@ public class Rate extends SubCommand { return; } PlotRateEvent event = - this.eventDispatcher.callRating(player, plot, new Rating(rating)); + this.eventDispatcher.callRating(player, plot, new Rating(rating)); if (event.getRating() != null) { plot.addRating(uuid, event.getRating()); player.sendMessage( @@ -263,6 +269,29 @@ public class Rate extends SubCommand { return true; } + @Override + public Collection tab(final PlotPlayer player, final String[] args, final boolean space) { + if (args.length == 1) { + final List completions = new LinkedList<>(); + if (Permissions.hasPermission(player, Permission.PERMISSION_RATE)) { + completions.add("1 - 10"); + } + if (Permissions.hasPermission(player, Permission.PERMISSION_ADMIN_COMMAND_PURGE_RATINGS)) { + completions.add("purge"); + } + final List commands = completions.stream().filter(completion -> completion + .toLowerCase() + .startsWith(args[0].toLowerCase())) + .map(completion -> new Command(null, true, completion, "", RequiredType.PLAYER, CommandCategory.INFO) { + }).collect(Collectors.toCollection(LinkedList::new)); + if (Permissions.hasPermission(player, Permission.PERMISSION_RATE) && args[0].length() > 0) { + commands.addAll(TabCompletions.completePlayers(args[0], Collections.emptyList())); + } + return commands; + } + return TabCompletions.completePlayers(String.join(",", args).trim(), Collections.emptyList()); + } + private class MutableInt { private int value; @@ -286,26 +315,7 @@ public class Rate extends SubCommand { void add(Number v) { this.value += v.intValue(); } + } - @Override - public Collection tab(final PlotPlayer player, final String[] args, final boolean space) { - if (args.length == 1) { - final List completions = new LinkedList<>(); - if (Permissions.hasPermission(player, Permission.PERMISSION_RATE)) { - completions.add("1 - 10"); - } - if (Permissions.hasPermission(player, Permission.PERMISSION_ADMIN_COMMAND_PURGE_RATINGS)) { - completions.add("purge"); - } - final List commands = completions.stream().filter(completion -> completion.toLowerCase().startsWith(args[0].toLowerCase())) - .map(completion -> new Command(null, true, completion, "", RequiredType.PLAYER, CommandCategory.INFO) { - }).collect(Collectors.toCollection(LinkedList::new)); - if (Permissions.hasPermission(player, Permission.PERMISSION_RATE) && args[0].length() > 0) { - commands.addAll(TabCompletions.completePlayers(args[0], Collections.emptyList())); - } - return commands; - } - return TabCompletions.completePlayers(String.join(",", args).trim(), Collections.emptyList()); - } } diff --git a/Core/src/main/java/com/plotsquared/core/command/RegenAllRoads.java b/Core/src/main/java/com/plotsquared/core/command/RegenAllRoads.java index ae4ec38a2..d9b6356f6 100644 --- a/Core/src/main/java/com/plotsquared/core/command/RegenAllRoads.java +++ b/Core/src/main/java/com/plotsquared/core/command/RegenAllRoads.java @@ -34,27 +34,30 @@ import com.plotsquared.core.plot.PlotArea; import com.plotsquared.core.plot.PlotManager; import com.plotsquared.core.plot.world.PlotAreaManager; import net.kyori.adventure.text.minimessage.Template; - -import javax.annotation.Nonnull; +import org.checkerframework.checker.nullness.qual.NonNull; @CommandDeclaration(command = "regenallroads", - aliases = {"rgar"}, - usage = "/plot regenallroads [height]", - category = CommandCategory.ADMINISTRATION, - requiredType = RequiredType.CONSOLE, - permission = "plots.regenallroads") + aliases = {"rgar"}, + usage = "/plot regenallroads [height]", + category = CommandCategory.ADMINISTRATION, + requiredType = RequiredType.CONSOLE, + permission = "plots.regenallroads") public class RegenAllRoads extends SubCommand { private final PlotAreaManager plotAreaManager; private final HybridUtils hybridUtils; - @Inject public RegenAllRoads(@Nonnull final PlotAreaManager plotAreaManager, - @Nonnull final HybridUtils hybridUtils) { + @Inject + public RegenAllRoads( + final @NonNull PlotAreaManager plotAreaManager, + final @NonNull HybridUtils hybridUtils + ) { this.plotAreaManager = plotAreaManager; this.hybridUtils = hybridUtils; } - @Override public boolean onCommand(PlotPlayer player, String[] args) { + @Override + public boolean onCommand(PlotPlayer player, String[] args) { int height = 0; if (args.length == 2) { try { @@ -91,8 +94,10 @@ public class RegenAllRoads extends SubCommand { player.sendMessage(TranslatableCaption.of("errors.invalid_plot_world")); return false; } - player.sendMessage(TranslatableCaption.of("debugroadregen.schematic"), - Template.of("command", "/plot createroadschematic")); + player.sendMessage( + TranslatableCaption.of("debugroadregen.schematic"), + Template.of("command", "/plot createroadschematic") + ); player.sendMessage(TranslatableCaption.of("debugroadregen.regenallroads_started")); boolean result = this.hybridUtils.scheduleRoadUpdate(area, height); if (!result) { @@ -101,4 +106,5 @@ public class RegenAllRoads extends SubCommand { } return true; } + } diff --git a/Core/src/main/java/com/plotsquared/core/command/Reload.java b/Core/src/main/java/com/plotsquared/core/command/Reload.java index 219e8a500..f74d92f53 100644 --- a/Core/src/main/java/com/plotsquared/core/command/Reload.java +++ b/Core/src/main/java/com/plotsquared/core/command/Reload.java @@ -36,31 +36,35 @@ import com.plotsquared.core.inject.annotations.WorldFile; import com.plotsquared.core.player.PlotPlayer; import com.plotsquared.core.plot.PlotAreaType; import com.plotsquared.core.plot.world.PlotAreaManager; +import org.checkerframework.checker.nullness.qual.NonNull; -import javax.annotation.Nonnull; import java.io.File; import java.util.Objects; @CommandDeclaration(command = "reload", - aliases = "rl", - permission = "plots.admin.command.reload", - usage = "/plot reload", - category = CommandCategory.ADMINISTRATION) + aliases = "rl", + permission = "plots.admin.command.reload", + usage = "/plot reload", + category = CommandCategory.ADMINISTRATION) public class Reload extends SubCommand { private final PlotAreaManager plotAreaManager; private final YamlConfiguration worldConfiguration; private final File worldFile; - @Inject public Reload(@Nonnull final PlotAreaManager plotAreaManager, - @WorldConfig @Nonnull final YamlConfiguration worldConfiguration, - @WorldFile @Nonnull final File worldFile) { + @Inject + public Reload( + final @NonNull PlotAreaManager plotAreaManager, + @WorldConfig final @NonNull YamlConfiguration worldConfiguration, + @WorldFile final @NonNull File worldFile + ) { this.plotAreaManager = plotAreaManager; this.worldConfiguration = worldConfiguration; this.worldFile = worldFile; } - @Override public boolean onCommand(PlotPlayer player, String[] args) { + @Override + public boolean onCommand(PlotPlayer player, String[] args) { try { // The following won't affect world generation, as that has to be // loaded during startup unfortunately. @@ -68,7 +72,7 @@ public class Reload extends SubCommand { PlotSquared.get().loadCaptionMap(); this.plotAreaManager.forEachPlotArea(area -> { ConfigurationSection worldSection = this.worldConfiguration - .getConfigurationSection("worlds." + area.getWorldName()); + .getConfigurationSection("worlds." + area.getWorldName()); if (worldSection == null) { return; } @@ -77,7 +81,7 @@ public class Reload extends SubCommand { area.loadDefaultConfiguration(worldSection); } else { ConfigurationSection areaSection = worldSection.getConfigurationSection( - "areas." + area.getId() + "-" + area.getMin() + "-" + area.getMax()); + "areas." + area.getId() + "-" + area.getMin() + "-" + area.getMax()); YamlConfiguration clone = new YamlConfiguration(); for (String key : areaSection.getKeys(true)) { if (areaSection.get(key) instanceof MemorySection) { @@ -121,4 +125,5 @@ public class Reload extends SubCommand { } return true; } + } diff --git a/Core/src/main/java/com/plotsquared/core/command/Remove.java b/Core/src/main/java/com/plotsquared/core/command/Remove.java index 69e3a801d..6cb580d68 100644 --- a/Core/src/main/java/com/plotsquared/core/command/Remove.java +++ b/Core/src/main/java/com/plotsquared/core/command/Remove.java @@ -26,10 +26,10 @@ package com.plotsquared.core.command; import com.google.inject.Inject; -import com.plotsquared.core.permissions.Permission; import com.plotsquared.core.configuration.caption.TranslatableCaption; import com.plotsquared.core.database.DBFunc; import com.plotsquared.core.location.Location; +import com.plotsquared.core.permissions.Permission; import com.plotsquared.core.player.PlotPlayer; import com.plotsquared.core.plot.Plot; import com.plotsquared.core.util.EventDispatcher; @@ -37,29 +37,31 @@ import com.plotsquared.core.util.Permissions; import com.plotsquared.core.util.PlayerManager; import com.plotsquared.core.util.TabCompletions; import net.kyori.adventure.text.minimessage.Template; +import org.checkerframework.checker.nullness.qual.NonNull; -import javax.annotation.Nonnull; import java.util.Collection; import java.util.Collections; import java.util.UUID; import java.util.concurrent.TimeoutException; @CommandDeclaration(command = "remove", - aliases = {"r", "untrust", "ut", "undeny", "unban", "ud"}, - usage = "/plot remove ", - category = CommandCategory.SETTINGS, - requiredType = RequiredType.NONE, - permission = "plots.remove") + aliases = {"r", "untrust", "ut", "undeny", "unban", "ud"}, + usage = "/plot remove ", + category = CommandCategory.SETTINGS, + requiredType = RequiredType.NONE, + permission = "plots.remove") public class Remove extends SubCommand { private final EventDispatcher eventDispatcher; - @Inject public Remove(@Nonnull final EventDispatcher eventDispatcher) { + @Inject + public Remove(final @NonNull EventDispatcher eventDispatcher) { super(Argument.PlayerName); this.eventDispatcher = eventDispatcher; } - @Override public boolean onCommand(PlotPlayer player, String[] args) { + @Override + public boolean onCommand(PlotPlayer player, String[] args) { Location location = player.getLocation(); Plot plot = location.getPlotAbs(); if (plot == null) { @@ -71,7 +73,7 @@ public class Remove extends SubCommand { return false; } if (!plot.isOwner(player.getUUID()) && !Permissions - .hasPermission(player, Permission.PERMISSION_ADMIN_COMMAND_REMOVE)) { + .hasPermission(player, Permission.PERMISSION_ADMIN_COMMAND_REMOVE)) { player.sendMessage(TranslatableCaption.of("permission.no_plot_perms")); return true; } @@ -133,14 +135,16 @@ public class Remove extends SubCommand { return true; } - @Override public Collection tab(final PlotPlayer player, final String[] args, final boolean space) { + @Override + public Collection tab(final PlotPlayer player, final String[] args, final boolean space) { Location location = player.getLocation(); Plot plot = location.getPlotAbs(); if (plot == null) { return Collections.emptyList(); } return TabCompletions.completeAddedPlayers(plot, String.join(",", args).trim(), - Collections.singletonList(player.getName())); + Collections.singletonList(player.getName()) + ); } } diff --git a/Core/src/main/java/com/plotsquared/core/command/RequiredType.java b/Core/src/main/java/com/plotsquared/core/command/RequiredType.java index 1126a2208..ad2057acc 100644 --- a/Core/src/main/java/com/plotsquared/core/command/RequiredType.java +++ b/Core/src/main/java/com/plotsquared/core/command/RequiredType.java @@ -28,8 +28,7 @@ package com.plotsquared.core.command; import com.plotsquared.core.configuration.caption.Caption; import com.plotsquared.core.configuration.caption.StaticCaption; import com.plotsquared.core.configuration.caption.TranslatableCaption; - -import javax.annotation.Nonnull; +import org.checkerframework.checker.nullness.qual.NonNull; public enum RequiredType { CONSOLE(TranslatableCaption.of("console.not_console")), @@ -49,7 +48,7 @@ public enum RequiredType { return this == player.getSuperCaller(); } - @Nonnull public Caption getErrorMessage() { + public @NonNull Caption getErrorMessage() { return this.caption; } } diff --git a/Core/src/main/java/com/plotsquared/core/command/Save.java b/Core/src/main/java/com/plotsquared/core/command/Save.java index 45b4e0bc6..78179e109 100644 --- a/Core/src/main/java/com/plotsquared/core/command/Save.java +++ b/Core/src/main/java/com/plotsquared/core/command/Save.java @@ -26,9 +26,9 @@ package com.plotsquared.core.command; import com.google.inject.Inject; -import com.plotsquared.core.permissions.Permission; import com.plotsquared.core.configuration.caption.TranslatableCaption; import com.plotsquared.core.location.Location; +import com.plotsquared.core.permissions.Permission; import com.plotsquared.core.player.MetaDataAccess; import com.plotsquared.core.player.PlayerMetaDataKeys; import com.plotsquared.core.player.PlotPlayer; @@ -39,29 +39,32 @@ import com.plotsquared.core.util.Permissions; import com.plotsquared.core.util.SchematicHandler; import com.plotsquared.core.util.task.RunnableVal; import com.plotsquared.core.util.task.TaskManager; -import com.sk89q.jnbt.CompoundTag; +import org.checkerframework.checker.nullness.qual.NonNull; -import javax.annotation.Nonnull; import java.net.URL; import java.util.List; import java.util.UUID; @CommandDeclaration(command = "save", - category = CommandCategory.SCHEMATIC, - requiredType = RequiredType.NONE, - permission = "plots.save") + category = CommandCategory.SCHEMATIC, + requiredType = RequiredType.NONE, + permission = "plots.save") public class Save extends SubCommand { private final PlotAreaManager plotAreaManager; private final SchematicHandler schematicHandler; - @Inject public Save(@Nonnull final PlotAreaManager plotAreaManager, - @Nonnull final SchematicHandler schematicHandler) { + @Inject + public Save( + final @NonNull PlotAreaManager plotAreaManager, + final @NonNull SchematicHandler schematicHandler + ) { this.plotAreaManager = plotAreaManager; this.schematicHandler = schematicHandler; } - @Override public boolean onCommand(final PlotPlayer player, final String[] args) { + @Override + public boolean onCommand(final PlotPlayer player, final String[] args) { final String world = player.getLocation().getWorldName(); if (!this.plotAreaManager.hasPlotArea(world)) { player.sendMessage(TranslatableCaption.of("errors.not_in_plot_world")); @@ -77,7 +80,7 @@ public class Save extends SubCommand { return false; } if (!plot.isOwner(player.getUUID()) && !Permissions - .hasPermission(player, Permission.PERMISSION_ADMIN_COMMAND_SAVE)) { + .hasPermission(player, Permission.PERMISSION_ADMIN_COMMAND_SAVE)) { player.sendMessage(TranslatableCaption.of("permission.no_plot_perms")); return false; } @@ -118,4 +121,5 @@ public class Save extends SubCommand { }); return true; } + } diff --git a/Core/src/main/java/com/plotsquared/core/command/SchematicCmd.java b/Core/src/main/java/com/plotsquared/core/command/SchematicCmd.java index 85635d62c..4b73fdf4d 100644 --- a/Core/src/main/java/com/plotsquared/core/command/SchematicCmd.java +++ b/Core/src/main/java/com/plotsquared/core/command/SchematicCmd.java @@ -44,8 +44,8 @@ import com.plotsquared.core.util.TabCompletions; import com.plotsquared.core.util.task.RunnableVal; import com.plotsquared.core.util.task.TaskManager; import net.kyori.adventure.text.minimessage.Template; +import org.checkerframework.checker.nullness.qual.NonNull; -import javax.annotation.Nonnull; import java.net.URL; import java.util.ArrayList; import java.util.Collection; @@ -56,23 +56,27 @@ import java.util.UUID; import java.util.stream.Collectors; @CommandDeclaration(command = "schematic", - permission = "plots.schematic", - aliases = {"sch", "schem"}, - category = CommandCategory.SCHEMATIC, - usage = "/plot schematic ") + permission = "plots.schematic", + aliases = {"sch", "schem"}, + category = CommandCategory.SCHEMATIC, + usage = "/plot schematic ") public class SchematicCmd extends SubCommand { private final PlotAreaManager plotAreaManager; private final SchematicHandler schematicHandler; private boolean running = false; - @Inject public SchematicCmd(@Nonnull final PlotAreaManager plotAreaManager, - @Nonnull final SchematicHandler schematicHandler) { + @Inject + public SchematicCmd( + final @NonNull PlotAreaManager plotAreaManager, + final @NonNull SchematicHandler schematicHandler + ) { this.plotAreaManager = plotAreaManager; this.schematicHandler = schematicHandler; } - @Override public boolean onCommand(final PlotPlayer player, String[] args) { + @Override + public boolean onCommand(final PlotPlayer player, String[] args) { if (args.length < 1) { player.sendMessage( TranslatableCaption.of("commandconfig.command_syntax"), @@ -108,7 +112,7 @@ public class SchematicCmd extends SubCommand { return false; } if (!plot.isOwner(player.getUUID()) && !Permissions - .hasPermission(player, "plots.admin.command.schematic.paste")) { + .hasPermission(player, "plots.admin.command.schematic.paste")) { player.sendMessage(TranslatableCaption.of("permission.no_plot_perms")); return false; } @@ -150,16 +154,26 @@ public class SchematicCmd extends SubCommand { ); return; } - this.schematicHandler.paste(schematic, plot, 0, plot.getArea().getMinBuildHeight(), 0, false, player, new RunnableVal() { - @Override public void run(Boolean value) { - SchematicCmd.this.running = false; - if (value) { - player.sendMessage(TranslatableCaption.of("schematics.schematic_paste_success")); - } else { - player.sendMessage(TranslatableCaption.of("schematics.schematic_paste_failed")); + this.schematicHandler.paste( + schematic, + plot, + 0, + plot.getArea().getMinBuildHeight(), + 0, + false, + player, + new RunnableVal() { + @Override + public void run(Boolean value) { + SchematicCmd.this.running = false; + if (value) { + player.sendMessage(TranslatableCaption.of("schematics.schematic_paste_success")); + } else { + player.sendMessage(TranslatableCaption.of("schematics.schematic_paste_failed")); + } + } } - } - }); + ); }); break; } @@ -195,7 +209,8 @@ public class SchematicCmd extends SubCommand { return false; } boolean result = this.schematicHandler.exportAll(plots, null, null, - () -> player.sendMessage(TranslatableCaption.of("schematics.schematic_exportall_finished"))); + () -> player.sendMessage(TranslatableCaption.of("schematics.schematic_exportall_finished")) + ); if (!result) { player.sendMessage(TranslatableCaption.of("error.task_in_process")); return false; @@ -232,7 +247,7 @@ public class SchematicCmd extends SubCommand { return false; } if (!plot.isOwner(player.getUUID()) && !Permissions - .hasPermission(player, "plots.admin.command.schematic.save")) { + .hasPermission(player, "plots.admin.command.schematic.save")) { player.sendMessage(TranslatableCaption.of("permission.no_plot_perms")); return false; } @@ -272,6 +287,7 @@ public class SchematicCmd extends SubCommand { } return true; } + @Override public Collection tab(final PlotPlayer player, final String[] args, final boolean space) { if (args.length == 1) { @@ -285,8 +301,17 @@ public class SchematicCmd extends SubCommand { if (Permissions.hasPermission(player, Permission.PERMISSION_SCHEMATIC_PASTE)) { completions.add("paste"); } - final List commands = completions.stream().filter(completion -> completion.toLowerCase().startsWith(args[0].toLowerCase())) - .map(completion -> new Command(null, true, completion, "", RequiredType.NONE, CommandCategory.ADMINISTRATION) { + final List commands = completions.stream().filter(completion -> completion + .toLowerCase() + .startsWith(args[0].toLowerCase())) + .map(completion -> new Command( + null, + true, + completion, + "", + RequiredType.NONE, + CommandCategory.ADMINISTRATION + ) { }).collect(Collectors.toCollection(LinkedList::new)); if (Permissions.hasPermission(player, Permission.PERMISSION_SCHEMATIC) && args[0].length() > 0) { commands.addAll(TabCompletions.completePlayers(args[0], Collections.emptyList())); @@ -295,4 +320,5 @@ public class SchematicCmd extends SubCommand { } return TabCompletions.completePlayers(String.join(",", args).trim(), Collections.emptyList()); } + } diff --git a/Core/src/main/java/com/plotsquared/core/command/Set.java b/Core/src/main/java/com/plotsquared/core/command/Set.java index 7b048d796..88991fc27 100644 --- a/Core/src/main/java/com/plotsquared/core/command/Set.java +++ b/Core/src/main/java/com/plotsquared/core/command/Set.java @@ -48,8 +48,8 @@ import com.sk89q.worldedit.world.block.BlockCategory; import com.sk89q.worldedit.world.block.BlockType; import com.sk89q.worldedit.world.block.BlockTypes; import net.kyori.adventure.text.minimessage.Template; +import org.checkerframework.checker.nullness.qual.NonNull; -import javax.annotation.Nonnull; import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; @@ -61,26 +61,29 @@ import java.util.Locale; import java.util.stream.Collectors; @CommandDeclaration(command = "set", - aliases = {"s"}, - usage = "/plot set ", - permission = "plots.set", - category = CommandCategory.APPEARANCE, - requiredType = RequiredType.NONE) + aliases = {"s"}, + usage = "/plot set ", + permission = "plots.set", + category = CommandCategory.APPEARANCE, + requiredType = RequiredType.NONE) public class Set extends SubCommand { - public static final String[] values = new String[] {"biome", "alias", "home"}; - public static final String[] aliases = new String[] {"b", "w", "wf", "a", "h"}; + public static final String[] values = new String[]{"biome", "alias", "home"}; + public static final String[] aliases = new String[]{"b", "w", "wf", "a", "h"}; private final SetCommand component; - @Inject public Set(@Nonnull final WorldUtil worldUtil) { + @Inject + public Set(final @NonNull WorldUtil worldUtil) { this.component = new SetCommand() { - @Override public String getId() { + @Override + public String getId() { return "set.component"; } - @Override public boolean set(PlotPlayer player, final Plot plot, String value) { + @Override + public boolean set(PlotPlayer player, final Plot plot, String value) { final PlotArea plotArea = player.getLocation().getPlotArea(); if (plotArea == null) { return false; @@ -91,17 +94,17 @@ public class Set extends SubCommand { String[] args = value.split(" "); String material = - StringMan.join(Arrays.copyOfRange(args, 1, args.length), ",").trim(); + StringMan.join(Arrays.copyOfRange(args, 1, args.length), ",").trim(); final List forbiddenTypes = new ArrayList<>(Settings.General.INVALID_BLOCKS); if (Settings.Enabled_Components.CHUNK_PROCESSOR) { forbiddenTypes.addAll(worldUtil.getTileEntityTypes().stream().map( - BlockType::getName).collect(Collectors.toList())); + BlockType::getName).collect(Collectors.toList())); } if (!Permissions.hasPermission(player, Permission.PERMISSION_ADMIN_ALLOW_UNSAFE) && - !forbiddenTypes.isEmpty()) { + !forbiddenTypes.isEmpty()) { for (String forbiddenType : forbiddenTypes) { forbiddenType = forbiddenType.toLowerCase(Locale.ENGLISH); if (forbiddenType.startsWith("minecraft:")) { @@ -116,7 +119,7 @@ public class Set extends SubCommand { if (blockType.startsWith("##")) { try { final BlockCategory category = BlockCategory.REGISTRY.get(blockType.substring(2) - .replaceAll("[*^|]+", "").toLowerCase(Locale.ENGLISH)); + .replaceAll("[*^|]+", "").toLowerCase(Locale.ENGLISH)); if (category == null || !category.contains(BlockTypes.get(forbiddenType))) { continue; } @@ -137,8 +140,10 @@ public class Set extends SubCommand { for (String component : components) { if (component.equalsIgnoreCase(args[0])) { if (!Permissions.hasPermission(player, Permission.PERMISSION_SET_COMPONENT.format(component))) { - player.sendMessage(TranslatableCaption.of("permission.no_permission"), - Template.of("node", Permission.PERMISSION_SET_COMPONENT.format(component))); + player.sendMessage( + TranslatableCaption.of("permission.no_permission"), + Template.of("node", Permission.PERMISSION_SET_COMPONENT.format(component)) + ); return false; } if (args.length < 2) { @@ -161,11 +166,18 @@ public class Set extends SubCommand { } queue.setCompleteTask(() -> { plot.removeRunning(); - player.sendMessage(TranslatableCaption.of("working.component_complete"), Template.of("plot", String.valueOf(plot.getId()))); + player.sendMessage( + TranslatableCaption.of("working.component_complete"), + Template.of("plot", String.valueOf(plot.getId())) + ); }); if (Settings.QUEUE.NOTIFY_PROGRESS) { queue.addProgressSubscriber( - PlotSquared.platform().injector().getInstance(ProgressSubscriberFactory.class).createWithActor(player)); + PlotSquared + .platform() + .injector() + .getInstance(ProgressSubscriberFactory.class) + .createWithActor(player)); } queue.enqueue(); player.sendMessage(TranslatableCaption.of("working.generating_component")); @@ -177,8 +189,10 @@ public class Set extends SubCommand { } @Override - public Collection tab(final PlotPlayer player, final String[] args, - final boolean space) { + public Collection tab( + final PlotPlayer player, final String[] args, + final boolean space + ) { return TabCompletions.completePatterns(StringMan.join(args, ",")); } }; @@ -190,12 +204,15 @@ public class Set extends SubCommand { if (plot != null) { newValues.addAll(Arrays.asList(plot.getManager().getPlotComponents(plot.getId()))); } - player.sendMessage(StaticCaption.of(TranslatableCaption.of("commandconfig.subcommand_set_options_header_only").getComponent(player) + StringMan - .join(newValues, TranslatableCaption.of("blocklist.block_list_separator").getComponent(player)))); + player.sendMessage(StaticCaption.of(TranslatableCaption + .of("commandconfig.subcommand_set_options_header_only") + .getComponent(player) + StringMan + .join(newValues, TranslatableCaption.of("blocklist.block_list_separator").getComponent(player)))); return false; } - @Override public boolean onCommand(PlotPlayer player, String[] args) { + @Override + public boolean onCommand(PlotPlayer player, String[] args) { if (args.length == 0) { return noArgs(player); } @@ -215,7 +232,7 @@ public class Set extends SubCommand { } // components HashSet components = - new HashSet<>(Arrays.asList(plot.getManager().getPlotComponents(plot.getId()))); + new HashSet<>(Arrays.asList(plot.getManager().getPlotComponents(plot.getId()))); if (components.contains(args[0].toLowerCase())) { return this.component.onCommand(player, Arrays.copyOfRange(args, 0, args.length)); } @@ -260,9 +277,11 @@ public class Set extends SubCommand { if (Permissions.hasPermission(player, Permission.PERMISSION_SET_MIDDLE)) { completions.add("middle"); } - final List commands = completions.stream().filter(completion -> completion.toLowerCase().startsWith(args[0].toLowerCase())) - .map(completion -> new Command(null, true, completion, "", RequiredType.NONE, CommandCategory.APPEARANCE) { - }).collect(Collectors.toCollection(LinkedList::new)); + final List commands = completions.stream().filter(completion -> completion + .toLowerCase() + .startsWith(args[0].toLowerCase())) + .map(completion -> new Command(null, true, completion, "", RequiredType.NONE, CommandCategory.APPEARANCE) { + }).collect(Collectors.toCollection(LinkedList::new)); if (Permissions.hasPermission(player, Permission.PERMISSION_SET) && args[0].length() > 0) { commands.addAll(TabCompletions.completePlayers(args[0], Collections.emptyList())); @@ -288,11 +307,12 @@ public class Set extends SubCommand { // components HashSet components = - new HashSet<>(Arrays.asList(plot.getManager().getPlotComponents(plot.getId()))); + new HashSet<>(Arrays.asList(plot.getManager().getPlotComponents(plot.getId()))); if (components.contains(args[0].toLowerCase())) { return this.component.tab(player, newArgs, space); } } return tabOf(player, args, space); } + } diff --git a/Core/src/main/java/com/plotsquared/core/command/SetCommand.java b/Core/src/main/java/com/plotsquared/core/command/SetCommand.java index 947ab4ec5..df2e9f120 100644 --- a/Core/src/main/java/com/plotsquared/core/command/SetCommand.java +++ b/Core/src/main/java/com/plotsquared/core/command/SetCommand.java @@ -36,7 +36,8 @@ import net.kyori.adventure.text.minimessage.Template; public abstract class SetCommand extends SubCommand { - @Override public boolean onCommand(PlotPlayer player, String[] args) { + @Override + public boolean onCommand(PlotPlayer player, String[] args) { Location location = player.getLocation(); Plot plot = location.getPlotAbs(); if (plot == null) { @@ -45,16 +46,20 @@ public abstract class SetCommand extends SubCommand { } if (!plot.hasOwner()) { if (!Permissions.hasPermission(player, Permission.PERMISSION_ADMIN_COMMAND.format(getFullId()))) { - player.sendMessage(TranslatableCaption.of("permission.no_permission"), - Template.of("node", Permission.PERMISSION_ADMIN_COMMAND.format(getFullId()))); + player.sendMessage( + TranslatableCaption.of("permission.no_permission"), + Template.of("node", Permission.PERMISSION_ADMIN_COMMAND.format(getFullId())) + ); player.sendMessage(TranslatableCaption.of("working.plot_not_claimed")); return false; } } if (!plot.isOwner(player.getUUID())) { if (!Permissions.hasPermission(player, Permission.PERMISSION_ADMIN_COMMAND.format(getFullId()))) { - player.sendMessage(TranslatableCaption.of("permission.no_permission"), - Template.of("node", Permission.PERMISSION_ADMIN_COMMAND.format(getFullId()))); + player.sendMessage( + TranslatableCaption.of("permission.no_permission"), + Template.of("node", Permission.PERMISSION_ADMIN_COMMAND.format(getFullId())) + ); player.sendMessage(TranslatableCaption.of("permission.no_plot_perms")); return false; } diff --git a/Core/src/main/java/com/plotsquared/core/command/SetHome.java b/Core/src/main/java/com/plotsquared/core/command/SetHome.java index 5cd359d1a..9fd3d37b9 100644 --- a/Core/src/main/java/com/plotsquared/core/command/SetHome.java +++ b/Core/src/main/java/com/plotsquared/core/command/SetHome.java @@ -33,14 +33,15 @@ import com.plotsquared.core.plot.Plot; import net.kyori.adventure.text.minimessage.Template; @CommandDeclaration(command = "sethome", - permission = "plots.set.home", - usage = "/plot sethome [none]", - aliases = {"sh", "seth"}, - category = CommandCategory.SETTINGS, - requiredType = RequiredType.PLAYER) + permission = "plots.set.home", + usage = "/plot sethome [none]", + aliases = {"sh", "seth"}, + category = CommandCategory.SETTINGS, + requiredType = RequiredType.PLAYER) public class SetHome extends SetCommand { - @Override public boolean set(PlotPlayer player, Plot plot, String value) { + @Override + public boolean set(PlotPlayer player, Plot plot, String value) { switch (value.toLowerCase()) { case "unset": case "reset": @@ -55,7 +56,8 @@ public class SetHome extends SetCommand { Location bottom = base.getBottomAbs(); Location location = player.getLocationFull(); BlockLoc rel = new BlockLoc(location.getX() - bottom.getX(), location.getY(), - location.getZ() - bottom.getZ(), location.getYaw(), location.getPitch()); + location.getZ() - bottom.getZ(), location.getYaw(), location.getPitch() + ); base.setHome(rel); player.sendMessage(TranslatableCaption.of("position.position_set")); default: @@ -66,4 +68,5 @@ public class SetHome extends SetCommand { return false; } } + } diff --git a/Core/src/main/java/com/plotsquared/core/command/Setup.java b/Core/src/main/java/com/plotsquared/core/command/Setup.java index f98679645..d00ab9f82 100644 --- a/Core/src/main/java/com/plotsquared/core/command/Setup.java +++ b/Core/src/main/java/com/plotsquared/core/command/Setup.java @@ -37,8 +37,8 @@ import com.plotsquared.core.setup.SetupProcess; import com.plotsquared.core.setup.SetupStep; import com.plotsquared.core.util.SetupUtils; import net.kyori.adventure.text.minimessage.Template; +import org.checkerframework.checker.nullness.qual.NonNull; -import javax.annotation.Nonnull; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; @@ -46,15 +46,16 @@ import java.util.List; import java.util.Map.Entry; @CommandDeclaration(command = "setup", - permission = "plots.admin.command.setup", - usage = "/plot setup", - aliases = {"create"}, - category = CommandCategory.ADMINISTRATION) + permission = "plots.admin.command.setup", + usage = "/plot setup", + aliases = {"create"}, + category = CommandCategory.ADMINISTRATION) public class Setup extends SubCommand { private final SetupUtils setupUtils; - @Inject public Setup(@Nonnull final SetupUtils setupUtils) { + @Inject + public Setup(final @NonNull SetupUtils setupUtils) { this.setupUtils = setupUtils; } @@ -63,7 +64,8 @@ public class Setup extends SubCommand { message.append("What generator do you want?"); for (Entry> entry : SetupUtils.generators.entrySet()) { if (entry.getKey().equals(PlotSquared.platform().pluginName())) { - message.append("\n - ").append(entry.getKey()).append(" (Default Generator)"); + message.append("\n - ").append(entry.getKey()).append( + " (Default Generator)"); } else if (entry.getValue().isFull()) { message.append("\n - ").append(entry.getKey()).append(" (Plot Generator)"); } else { @@ -73,21 +75,22 @@ public class Setup extends SubCommand { player.sendMessage(StaticCaption.of(message.toString())); } - @Override public boolean onCommand(PlotPlayer player, String[] args) { + @Override + public boolean onCommand(PlotPlayer player, String[] args) { try (final MetaDataAccess metaDataAccess = - player.accessTemporaryMetaData(PlayerMetaDataKeys.TEMPORARY_SETUP)) { + player.accessTemporaryMetaData(PlayerMetaDataKeys.TEMPORARY_SETUP)) { SetupProcess process = metaDataAccess.get().orElse(null); if (process == null) { if (args.length > 0) { player.sendMessage(TranslatableCaption.of("setup.setup_not_started")); - player.sendMessage( - TranslatableCaption.of("commandconfig.command_syntax"), - Template.of("value", "Use /plot setup to start a setup process.") - ); - return true; - } - process = new SetupProcess(); - metaDataAccess.set(process); + player.sendMessage( + TranslatableCaption.of("commandconfig.command_syntax"), + Template.of("value", "Use /plot setup to start a setup process.") + ); + return true; + } + process = new SetupProcess(); + metaDataAccess.set(process); this.setupUtils.updateGenerators(); SetupStep step = process.getCurrentStep(); step.announce(player); @@ -114,10 +117,11 @@ public class Setup extends SubCommand { } } - @Override public Collection tab(PlotPlayer player, String[] args, boolean space) { + @Override + public Collection tab(PlotPlayer player, String[] args, boolean space) { SetupProcess process; try (final MetaDataAccess metaDataAccess = - player.accessTemporaryMetaData(PlayerMetaDataKeys.TEMPORARY_SETUP)) { + player.accessTemporaryMetaData(PlayerMetaDataKeys.TEMPORARY_SETUP)) { process = metaDataAccess.get().orElse(null); } if (process == null) { @@ -136,7 +140,9 @@ public class Setup extends SubCommand { private void tryAddSubCommand(String subCommand, String argument, List suggestions) { if (!argument.isEmpty() && subCommand.startsWith(argument)) { - suggestions.add(new Command(null, false, subCommand, "", RequiredType.NONE, null) {}); + suggestions.add(new Command(null, false, subCommand, "", RequiredType.NONE, null) { + }); } } + } diff --git a/Core/src/main/java/com/plotsquared/core/command/SubCommand.java b/Core/src/main/java/com/plotsquared/core/command/SubCommand.java index 6b8462488..f69cb5e1a 100644 --- a/Core/src/main/java/com/plotsquared/core/command/SubCommand.java +++ b/Core/src/main/java/com/plotsquared/core/command/SubCommand.java @@ -34,10 +34,11 @@ import java.util.concurrent.CompletableFuture; /** * SubCommand class * + * @see Command#Command(Command, boolean) * @deprecated In favor of normal Command class - * @see Command#Command(Command, boolean) */ public abstract class SubCommand extends Command { + public SubCommand() { super(MainCommand.getInstance(), true); } @@ -48,11 +49,14 @@ public abstract class SubCommand extends Command { } @Override - public CompletableFuture execute(PlotPlayer player, String[] args, - RunnableVal3 confirm, - RunnableVal2 whenDone) { + public CompletableFuture execute( + PlotPlayer player, String[] args, + RunnableVal3 confirm, + RunnableVal2 whenDone + ) { return CompletableFuture.completedFuture(onCommand(player, args)); } public abstract boolean onCommand(PlotPlayer player, String[] args); + } diff --git a/Core/src/main/java/com/plotsquared/core/command/Swap.java b/Core/src/main/java/com/plotsquared/core/command/Swap.java index bbb173437..d2070a67b 100644 --- a/Core/src/main/java/com/plotsquared/core/command/Swap.java +++ b/Core/src/main/java/com/plotsquared/core/command/Swap.java @@ -25,9 +25,9 @@ */ package com.plotsquared.core.command; -import com.plotsquared.core.permissions.Permission; import com.plotsquared.core.configuration.caption.TranslatableCaption; import com.plotsquared.core.location.Location; +import com.plotsquared.core.permissions.Permission; import com.plotsquared.core.player.PlotPlayer; import com.plotsquared.core.plot.Plot; import com.plotsquared.core.util.Permissions; @@ -38,16 +38,18 @@ import net.kyori.adventure.text.minimessage.Template; import java.util.concurrent.CompletableFuture; @CommandDeclaration(usage = "/plot swap ", - command = "swap", - aliases = {"switch"}, - category = CommandCategory.CLAIMING, - requiredType = RequiredType.PLAYER) + command = "swap", + aliases = {"switch"}, + category = CommandCategory.CLAIMING, + requiredType = RequiredType.PLAYER) public class Swap extends SubCommand { @Override - public CompletableFuture execute(PlotPlayer player, String[] args, - RunnableVal3 confirm, - RunnableVal2 whenDone) { + public CompletableFuture execute( + PlotPlayer player, String[] args, + RunnableVal3 confirm, + RunnableVal2 whenDone + ) { Location location = player.getLocation(); Plot plot1 = location.getPlotAbs(); if (plot1 == null) { @@ -55,7 +57,7 @@ public class Swap extends SubCommand { return CompletableFuture.completedFuture(false); } if (!plot1.isOwner(player.getUUID()) && !Permissions - .hasPermission(player, Permission.PERMISSION_ADMIN)) { + .hasPermission(player, Permission.PERMISSION_ADMIN)) { player.sendMessage(TranslatableCaption.of("permission.no_plot_perms")); return CompletableFuture.completedFuture(false); } @@ -96,7 +98,9 @@ public class Swap extends SubCommand { }); } - @Override public boolean onCommand(final PlotPlayer player, String[] args) { + @Override + public boolean onCommand(final PlotPlayer player, String[] args) { return true; } + } diff --git a/Core/src/main/java/com/plotsquared/core/command/Target.java b/Core/src/main/java/com/plotsquared/core/command/Target.java index 73561d496..dfc0cdbed 100644 --- a/Core/src/main/java/com/plotsquared/core/command/Target.java +++ b/Core/src/main/java/com/plotsquared/core/command/Target.java @@ -30,28 +30,27 @@ import com.plotsquared.core.location.Location; import com.plotsquared.core.player.PlotPlayer; import com.plotsquared.core.plot.Plot; import com.plotsquared.core.util.StringMan; -import com.plotsquared.core.util.TabCompletions; import com.plotsquared.core.util.query.PlotQuery; import net.kyori.adventure.text.minimessage.Template; import java.util.Collection; -import java.util.Collections; import java.util.Locale; import java.util.stream.Collectors; import java.util.stream.Stream; @CommandDeclaration(command = "target", - usage = "/plot target < | nearest>", - permission = "plots.target", - requiredType = RequiredType.PLAYER, - category = CommandCategory.INFO) + usage = "/plot target < | nearest>", + permission = "plots.target", + requiredType = RequiredType.PLAYER, + category = CommandCategory.INFO) public class Target extends SubCommand { public Target() { super(); } - @Override public boolean onCommand(PlotPlayer player, String[] args) { + @Override + public boolean onCommand(PlotPlayer player, String[] args) { Location location = player.getLocation(); if (!location.isPlotArea()) { player.sendMessage(TranslatableCaption.of("errors.not_in_plot_world")); @@ -85,10 +84,13 @@ public class Target extends SubCommand { player.sendMessage(TranslatableCaption.of("compass.compass_target")); return true; } - @Override public Collection tab(final PlotPlayer player, String[] args, boolean space) { + + @Override + public Collection tab(final PlotPlayer player, String[] args, boolean space) { return Stream.of("", "nearest") .filter(value -> value.startsWith(args[0].toLowerCase(Locale.ENGLISH))) .map(value -> new Command(null, false, value, "plots.target", RequiredType.PLAYER, null) { }).collect(Collectors.toList()); } + } diff --git a/Core/src/main/java/com/plotsquared/core/command/Template.java b/Core/src/main/java/com/plotsquared/core/command/Template.java index d9bb7de2b..051c62879 100644 --- a/Core/src/main/java/com/plotsquared/core/command/Template.java +++ b/Core/src/main/java/com/plotsquared/core/command/Template.java @@ -27,16 +27,16 @@ package com.plotsquared.core.command; import com.google.inject.Inject; import com.plotsquared.core.PlotSquared; -import com.plotsquared.core.configuration.ConfigurationUtil; -import com.plotsquared.core.configuration.caption.TranslatableCaption; -import com.plotsquared.core.inject.annotations.WorldConfig; -import com.plotsquared.core.inject.annotations.WorldFile; import com.plotsquared.core.configuration.ConfigurationNode; import com.plotsquared.core.configuration.ConfigurationSection; +import com.plotsquared.core.configuration.ConfigurationUtil; import com.plotsquared.core.configuration.InvalidConfigurationException; import com.plotsquared.core.configuration.Settings; +import com.plotsquared.core.configuration.caption.TranslatableCaption; import com.plotsquared.core.configuration.file.YamlConfiguration; import com.plotsquared.core.events.TeleportCause; +import com.plotsquared.core.inject.annotations.WorldConfig; +import com.plotsquared.core.inject.annotations.WorldFile; import com.plotsquared.core.permissions.Permission; import com.plotsquared.core.player.PlotPlayer; import com.plotsquared.core.plot.PlotArea; @@ -51,16 +51,16 @@ import com.plotsquared.core.util.SetupUtils; import com.plotsquared.core.util.TabCompletions; import com.plotsquared.core.util.WorldUtil; import com.plotsquared.core.util.task.TaskManager; +import org.checkerframework.checker.nullness.qual.NonNull; -import java.util.Collections; -import java.util.LinkedList; -import java.util.List; -import javax.annotation.Nonnull; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.util.Collection; +import java.util.Collections; +import java.util.LinkedList; +import java.util.List; import java.util.Set; import java.util.stream.Collectors; import java.util.zip.ZipEntry; @@ -68,9 +68,9 @@ import java.util.zip.ZipInputStream; import java.util.zip.ZipOutputStream; @CommandDeclaration(command = "template", - permission = "plots.admin", - usage = "/plot template [import | export]