From 07fb13c284fb909f0bf780ea6991fc0e9e995b54 Mon Sep 17 00:00:00 2001
From: fullwall
Date: Sun, 5 Nov 2023 20:58:37 +0800
Subject: [PATCH] Add /npc hologram viewrange, add /npc playerfilter
--applywithin, work towards auto-hologram-sneak
---
.../main/java/net/citizensnpcs/Citizens.java | 64 ++--
.../citizensnpcs/CitizensPlaceholders.java | 1 -
.../java/net/citizensnpcs/EventListen.java | 78 ++--
.../main/java/net/citizensnpcs/Metrics.java | 96 ++---
.../citizensnpcs/NPCNeedsRespawnEvent.java | 4 +-
.../net/citizensnpcs/ProtocolLibListener.java | 109 +++---
.../main/java/net/citizensnpcs/Settings.java | 7 +-
.../java/net/citizensnpcs/StoredShops.java | 3 +-
.../citizensnpcs/commands/AdminCommands.java | 3 +-
.../citizensnpcs/commands/EditorCommands.java | 1 -
.../commands/NPCCommandSelector.java | 9 +-
.../citizensnpcs/commands/NPCCommands.java | 361 +++++++-----------
.../citizensnpcs/commands/TraitCommands.java | 9 +-
.../commands/WaypointCommands.java | 4 +-
.../commands/gui/NPCConfigurator.java | 16 +-
.../history/CreateNPCHistoryItem.java | 2 +-
.../history/RemoveNPCHistoryItem.java | 8 +-
.../net/citizensnpcs/editor/CopierEditor.java | 4 +-
.../java/net/citizensnpcs/editor/Editor.java | 2 +-
.../editor/GenericEquipperGUI.java | 12 +-
.../npc/AbstractEntityController.java | 3 +-
.../net/citizensnpcs/npc/CitizensNPC.java | 60 +--
.../citizensnpcs/npc/CitizensNPCRegistry.java | 21 +-
.../npc/CitizensTraitFactory.java | 6 +-
.../citizensnpcs/npc/EntityControllers.java | 3 +-
.../net/citizensnpcs/npc/NPCSelector.java | 9 +-
.../java/net/citizensnpcs/npc/Template.java | 5 +-
.../npc/ai/AStarNavigationStrategy.java | 26 +-
.../npc/ai/BoundingBoxExaminer.java | 4 +-
.../npc/ai/CitizensNavigator.java | 84 +---
.../npc/ai/FlyingAStarNavigationStrategy.java | 22 +-
.../npc/ai/MCNavigationStrategy.java | 16 +-
.../citizensnpcs/npc/ai/MCTargetStrategy.java | 18 +-
.../ai/StraightLineNavigationStrategy.java | 10 +-
.../npc/profile/ProfileFetchResult.java | 16 +-
.../npc/profile/ProfileFetchThread.java | 30 +-
.../npc/profile/ProfileFetcher.java | 1 -
.../npc/profile/ProfileRequest.java | 29 +-
.../java/net/citizensnpcs/npc/skin/Skin.java | 144 +++----
.../npc/skin/SkinPacketTracker.java | 26 +-
.../npc/skin/SkinUpdateTracker.java | 92 ++---
.../citizensnpcs/npc/skin/TabListRemover.java | 17 +-
.../main/java/net/citizensnpcs/trait/Age.java | 12 +-
.../java/net/citizensnpcs/trait/Anchors.java | 9 +-
.../citizensnpcs/trait/ArmorStandTrait.java | 4 +-
.../citizensnpcs/trait/BoundingBoxTrait.java | 2 +-
.../trait/ClickRedirectTrait.java | 2 +-
.../net/citizensnpcs/trait/CommandTrait.java | 49 +--
.../net/citizensnpcs/trait/Controllable.java | 35 +-
.../citizensnpcs/trait/CurrentLocation.java | 2 +-
.../net/citizensnpcs/trait/DropsTrait.java | 9 +-
.../net/citizensnpcs/trait/FollowTrait.java | 4 +-
.../java/net/citizensnpcs/trait/Gravity.java | 2 +-
.../net/citizensnpcs/trait/HologramTrait.java | 71 ++--
.../net/citizensnpcs/trait/LookClose.java | 39 +-
.../citizensnpcs/trait/OcelotModifiers.java | 2 +-
.../net/citizensnpcs/trait/PacketNPC.java | 5 +-
.../trait/PausePathfindingTrait.java | 6 +-
.../java/net/citizensnpcs/trait/Poses.java | 9 +-
.../java/net/citizensnpcs/trait/Powered.java | 8 +-
.../net/citizensnpcs/trait/RotationTrait.java | 39 +-
.../citizensnpcs/trait/ScoreboardTrait.java | 32 +-
.../net/citizensnpcs/trait/SheepTrait.java | 2 +-
.../java/net/citizensnpcs/trait/SitTrait.java | 7 +-
.../net/citizensnpcs/trait/SkinLayers.java | 4 +-
.../net/citizensnpcs/trait/SkinTrait.java | 10 +-
.../net/citizensnpcs/trait/SleepTrait.java | 4 +-
.../net/citizensnpcs/trait/SneakTrait.java | 2 +-
.../net/citizensnpcs/trait/WolfModifiers.java | 2 +-
.../trait/shop/CommandAction.java | 8 +-
.../trait/shop/ExperienceAction.java | 16 +-
.../citizensnpcs/trait/shop/ItemAction.java | 59 ++-
.../citizensnpcs/trait/shop/MoneyAction.java | 24 +-
.../trait/shop/NPCShopAction.java | 7 +-
.../trait/shop/PermissionAction.java | 16 +-
.../net/citizensnpcs/trait/text/Text.java | 31 +-
.../trait/text/TextBasePrompt.java | 5 +-
.../trait/versioned/AllayTrait.java | 5 +-
.../trait/versioned/AxolotlTrait.java | 6 +-
.../trait/versioned/BeeTrait.java | 6 +-
.../trait/versioned/BossBarTrait.java | 24 +-
.../trait/versioned/CamelTrait.java | 1 -
.../trait/versioned/CatTrait.java | 25 +-
.../trait/versioned/FoxTrait.java | 6 +-
.../trait/versioned/FrogTrait.java | 3 +-
.../trait/versioned/GoatTrait.java | 4 +-
.../trait/versioned/LlamaTrait.java | 3 -
.../trait/versioned/MushroomCowTrait.java | 3 +-
.../trait/versioned/PandaTrait.java | 13 +-
.../trait/versioned/ParrotTrait.java | 3 +-
.../trait/versioned/PhantomTrait.java | 6 +-
.../trait/versioned/PiglinTrait.java | 3 +-
.../trait/versioned/PolarBearTrait.java | 3 +-
.../trait/versioned/PufferFishTrait.java | 2 +-
.../trait/versioned/ShulkerTrait.java | 3 +-
.../trait/versioned/SnifferTrait.java | 3 +-
.../trait/versioned/SnowmanTrait.java | 5 +-
.../trait/versioned/SpellcasterTrait.java | 4 +-
.../trait/versioned/TropicalFishTrait.java | 16 +-
.../trait/versioned/VillagerTrait.java | 12 +-
.../trait/versioned/WardenTrait.java | 5 +-
.../waypoint/GuidedWaypointProvider.java | 37 +-
.../waypoint/LinearWaypointProvider.java | 49 +--
.../LinearWaypointsCompleteEvent.java | 6 +-
.../waypoint/WanderWaypointProvider.java | 19 +-
.../citizensnpcs/trait/waypoint/Waypoint.java | 37 +-
.../trait/waypoint/Waypoints.java | 2 +-
.../waypoint/triggers/AnimationTrigger.java | 1 -
.../triggers/AnimationTriggerPrompt.java | 6 +-
.../triggers/CommandTriggerPrompt.java | 3 +-
.../trait/waypoint/triggers/DelayTrigger.java | 15 +-
.../triggers/TeleportTriggerPrompt.java | 2 +-
.../waypoint/triggers/TriggerEditPrompt.java | 2 +-
.../triggers/WaypointTriggerPrompt.java | 4 +-
.../triggers/WaypointTriggerRegistry.java | 4 +-
.../util/AbstractBlockBreaker.java | 7 +-
.../java/net/citizensnpcs/util/Anchor.java | 4 +-
.../net/citizensnpcs/util/ChunkCoord.java | 18 +-
.../util/EntityPacketTracker.java | 18 +-
.../java/net/citizensnpcs/util/Messages.java | 2 +
.../util/MojangSkinGenerator.java | 2 -
.../main/java/net/citizensnpcs/util/NMS.java | 20 +-
.../java/net/citizensnpcs/util/NMSBridge.java | 14 +-
.../citizensnpcs/util/PlayerAnimation.java | 6 -
.../main/java/net/citizensnpcs/util/Util.java | 58 ++-
.../net/citizensnpcs/util/XORShiftRNG.java | 14 +-
main/src/main/resources/en.json | 2 +
.../v1_10_R1/entity/ArmorStandController.java | 5 -
.../nms/v1_10_R1/entity/BatController.java | 6 -
.../nms/v1_10_R1/entity/BlazeController.java | 5 -
.../v1_10_R1/entity/CaveSpiderController.java | 9 -
.../v1_10_R1/entity/ChickenController.java | 10 -
.../nms/v1_10_R1/entity/CowController.java | 9 -
.../v1_10_R1/entity/CreeperController.java | 11 -
.../entity/EnderDragonController.java | 20 -
.../v1_10_R1/entity/EndermanController.java | 9 -
.../v1_10_R1/entity/EndermiteController.java | 9 -
.../nms/v1_10_R1/entity/EntityHumanNPC.java | 29 --
.../nms/v1_10_R1/entity/GhastController.java | 5 -
.../nms/v1_10_R1/entity/GiantController.java | 9 -
.../v1_10_R1/entity/GuardianController.java | 10 -
.../nms/v1_10_R1/entity/HorseController.java | 13 -
.../nms/v1_10_R1/entity/HumanController.java | 3 -
.../v1_10_R1/entity/IronGolemController.java | 9 -
.../v1_10_R1/entity/MagmaCubeController.java | 11 -
.../v1_10_R1/entity/MobEntityController.java | 7 -
.../entity/MushroomCowController.java | 9 -
.../nms/v1_10_R1/entity/OcelotController.java | 10 -
.../nms/v1_10_R1/entity/PigController.java | 10 -
.../v1_10_R1/entity/PigZombieController.java | 8 -
.../v1_10_R1/entity/PolarBearController.java | 6 -
.../nms/v1_10_R1/entity/RabbitController.java | 10 -
.../nms/v1_10_R1/entity/SheepController.java | 9 -
.../v1_10_R1/entity/ShulkerController.java | 10 -
.../v1_10_R1/entity/SilverfishController.java | 9 -
.../v1_10_R1/entity/SkeletonController.java | 9 -
.../nms/v1_10_R1/entity/SlimeController.java | 11 -
.../v1_10_R1/entity/SnowmanController.java | 9 -
.../nms/v1_10_R1/entity/SpiderController.java | 9 -
.../nms/v1_10_R1/entity/SquidController.java | 9 -
.../v1_10_R1/entity/VillagerController.java | 12 -
.../nms/v1_10_R1/entity/WitchController.java | 9 -
.../nms/v1_10_R1/entity/WitherController.java | 5 -
.../nms/v1_10_R1/entity/WolfController.java | 9 -
.../nms/v1_10_R1/entity/ZombieController.java | 8 -
.../nonliving/AreaEffectCloudController.java | 4 -
.../entity/nonliving/BoatController.java | 5 -
.../nonliving/DragonFireballController.java | 6 -
.../entity/nonliving/EggController.java | 5 -
.../nonliving/EnderCrystalController.java | 4 -
.../nonliving/EnderPearlController.java | 5 -
.../nonliving/EnderSignalController.java | 4 -
.../nonliving/ExperienceOrbController.java | 4 -
.../nonliving/FallingBlockController.java | 6 -
.../entity/nonliving/FireworkController.java | 4 -
.../nonliving/FishingHookController.java | 4 -
.../entity/nonliving/ItemController.java | 5 -
.../entity/nonliving/ItemFrameController.java | 4 -
.../nonliving/LargeFireballController.java | 6 -
.../entity/nonliving/LeashController.java | 4 -
.../nonliving/MinecartChestController.java | 4 -
.../nonliving/MinecartCommandController.java | 4 -
.../nonliving/MinecartFurnaceController.java | 4 -
.../nonliving/MinecartHopperController.java | 3 -
.../nonliving/MinecartRideableController.java | 4 -
.../nonliving/MinecartSpawnerController.java | 3 -
.../nonliving/MinecartTNTController.java | 3 -
.../entity/nonliving/PaintingController.java | 4 -
.../nonliving/ShulkerBulletController.java | 4 -
.../nonliving/SmallFireballController.java | 5 -
.../entity/nonliving/SnowballController.java | 4 -
.../nonliving/SpectralArrowController.java | 4 -
.../entity/nonliving/TNTPrimedController.java | 4 -
.../nonliving/ThrownExpBottleController.java | 5 -
.../nonliving/ThrownPotionController.java | 5 -
.../nonliving/TippedArrowController.java | 4 -
.../nonliving/WitherSkullController.java | 4 -
.../v1_10_R1/util/CitizensBlockBreaker.java | 9 -
.../nms/v1_10_R1/util/NMSImpl.java | 127 ------
.../v1_10_R1/util/PlayerAnimationImpl.java | 3 -
.../v1_10_R1/util/PlayerControllerMove.java | 6 -
.../nms/v1_10_R1/util/PlayerNavigation.java | 38 --
.../nms/v1_10_R1/util/PlayerPathfinder.java | 9 -
.../util/PlayerPathfinderAbstract.java | 1 -
.../v1_10_R1/util/PlayerPathfinderNormal.java | 56 ---
.../v1_10_R1/util/PlayerlistTrackerEntry.java | 9 -
.../v1_11_R1/entity/ArmorStandController.java | 4 -
.../nms/v1_11_R1/entity/BatController.java | 6 -
.../nms/v1_11_R1/entity/BlazeController.java | 5 -
.../v1_11_R1/entity/CaveSpiderController.java | 9 -
.../v1_11_R1/entity/ChickenController.java | 10 -
.../nms/v1_11_R1/entity/CowController.java | 9 -
.../v1_11_R1/entity/CreeperController.java | 11 -
.../entity/EnderDragonController.java | 20 -
.../v1_11_R1/entity/EndermanController.java | 9 -
.../v1_11_R1/entity/EndermiteController.java | 9 -
.../nms/v1_11_R1/entity/EntityHumanNPC.java | 29 --
.../nms/v1_11_R1/entity/EvokerController.java | 8 -
.../nms/v1_11_R1/entity/GhastController.java | 5 -
.../nms/v1_11_R1/entity/GiantController.java | 9 -
.../v1_11_R1/entity/GuardianController.java | 9 -
.../entity/GuardianElderController.java | 9 -
.../nms/v1_11_R1/entity/HorseController.java | 12 -
.../entity/HorseDonkeyController.java | 12 -
.../v1_11_R1/entity/HorseMuleController.java | 12 -
.../entity/HorseSkeletonController.java | 12 -
.../entity/HorseZombieController.java | 12 -
.../nms/v1_11_R1/entity/HumanController.java | 3 -
.../v1_11_R1/entity/IronGolemController.java | 9 -
.../nms/v1_11_R1/entity/LlamaController.java | 10 -
.../v1_11_R1/entity/MagmaCubeController.java | 11 -
.../v1_11_R1/entity/MobEntityController.java | 7 -
.../entity/MushroomCowController.java | 9 -
.../nms/v1_11_R1/entity/OcelotController.java | 10 -
.../nms/v1_11_R1/entity/PigController.java | 10 -
.../v1_11_R1/entity/PigZombieController.java | 8 -
.../v1_11_R1/entity/PolarBearController.java | 6 -
.../nms/v1_11_R1/entity/RabbitController.java | 10 -
.../nms/v1_11_R1/entity/SheepController.java | 9 -
.../v1_11_R1/entity/ShulkerController.java | 10 -
.../v1_11_R1/entity/SilverfishController.java | 9 -
.../v1_11_R1/entity/SkeletonController.java | 9 -
.../entity/SkeletonStrayController.java | 9 -
.../entity/SkeletonWitherController.java | 9 -
.../nms/v1_11_R1/entity/SlimeController.java | 11 -
.../v1_11_R1/entity/SnowmanController.java | 9 -
.../nms/v1_11_R1/entity/SpiderController.java | 9 -
.../nms/v1_11_R1/entity/SquidController.java | 9 -
.../nms/v1_11_R1/entity/VexController.java | 6 -
.../v1_11_R1/entity/VillagerController.java | 13 -
.../v1_11_R1/entity/VindicatorController.java | 9 -
.../nms/v1_11_R1/entity/WitchController.java | 9 -
.../nms/v1_11_R1/entity/WitherController.java | 5 -
.../nms/v1_11_R1/entity/WolfController.java | 9 -
.../nms/v1_11_R1/entity/ZombieController.java | 8 -
.../v1_11_R1/entity/ZombieHuskController.java | 8 -
.../entity/ZombieVillagerController.java | 8 -
.../nonliving/AreaEffectCloudController.java | 4 -
.../entity/nonliving/BoatController.java | 5 -
.../nonliving/DragonFireballController.java | 6 -
.../entity/nonliving/EggController.java | 5 -
.../nonliving/EnderCrystalController.java | 4 -
.../nonliving/EnderPearlController.java | 5 -
.../nonliving/EnderSignalController.java | 4 -
.../nonliving/EvokerFangsController.java | 4 -
.../nonliving/ExperienceOrbController.java | 4 -
.../nonliving/FallingBlockController.java | 6 -
.../entity/nonliving/FireworkController.java | 4 -
.../nonliving/FishingHookController.java | 4 -
.../entity/nonliving/ItemController.java | 5 -
.../entity/nonliving/ItemFrameController.java | 4 -
.../nonliving/LargeFireballController.java | 6 -
.../entity/nonliving/LeashController.java | 4 -
.../entity/nonliving/LlamaSpitController.java | 5 -
.../nonliving/MinecartChestController.java | 4 -
.../nonliving/MinecartCommandController.java | 4 -
.../nonliving/MinecartFurnaceController.java | 4 -
.../nonliving/MinecartHopperController.java | 3 -
.../nonliving/MinecartRideableController.java | 4 -
.../nonliving/MinecartSpawnerController.java | 3 -
.../nonliving/MinecartTNTController.java | 3 -
.../entity/nonliving/PaintingController.java | 4 -
.../nonliving/ShulkerBulletController.java | 4 -
.../nonliving/SmallFireballController.java | 5 -
.../entity/nonliving/SnowballController.java | 4 -
.../nonliving/SpectralArrowController.java | 4 -
.../entity/nonliving/TNTPrimedController.java | 4 -
.../nonliving/ThrownExpBottleController.java | 5 -
.../nonliving/ThrownPotionController.java | 5 -
.../nonliving/TippedArrowController.java | 4 -
.../nonliving/WitherSkullController.java | 4 -
.../v1_11_R1/util/CitizensBlockBreaker.java | 9 -
.../nms/v1_11_R1/util/NMSImpl.java | 131 -------
.../v1_11_R1/util/PlayerAnimationImpl.java | 3 -
.../v1_11_R1/util/PlayerControllerMove.java | 7 -
.../nms/v1_11_R1/util/PlayerNavigation.java | 38 --
.../nms/v1_11_R1/util/PlayerPathfinder.java | 9 -
.../util/PlayerPathfinderAbstract.java | 1 -
.../v1_11_R1/util/PlayerPathfinderNormal.java | 53 ---
.../v1_11_R1/util/PlayerlistTrackerEntry.java | 14 -
.../v1_12_R1/entity/ArmorStandController.java | 4 -
.../nms/v1_12_R1/entity/BatController.java | 6 -
.../nms/v1_12_R1/entity/BlazeController.java | 5 -
.../v1_12_R1/entity/CaveSpiderController.java | 9 -
.../v1_12_R1/entity/ChickenController.java | 10 -
.../nms/v1_12_R1/entity/CowController.java | 9 -
.../v1_12_R1/entity/CreeperController.java | 11 -
.../entity/EnderDragonController.java | 20 -
.../v1_12_R1/entity/EndermanController.java | 9 -
.../v1_12_R1/entity/EndermiteController.java | 9 -
.../nms/v1_12_R1/entity/EntityHumanNPC.java | 30 --
.../nms/v1_12_R1/entity/EvokerController.java | 8 -
.../nms/v1_12_R1/entity/GhastController.java | 5 -
.../nms/v1_12_R1/entity/GiantController.java | 9 -
.../v1_12_R1/entity/GuardianController.java | 9 -
.../entity/GuardianElderController.java | 9 -
.../nms/v1_12_R1/entity/HorseController.java | 12 -
.../entity/HorseDonkeyController.java | 12 -
.../v1_12_R1/entity/HorseMuleController.java | 12 -
.../entity/HorseSkeletonController.java | 12 -
.../entity/HorseZombieController.java | 12 -
.../nms/v1_12_R1/entity/HumanController.java | 3 -
.../v1_12_R1/entity/IllusionerController.java | 8 -
.../v1_12_R1/entity/IronGolemController.java | 9 -
.../nms/v1_12_R1/entity/LlamaController.java | 12 -
.../v1_12_R1/entity/MagmaCubeController.java | 11 -
.../v1_12_R1/entity/MobEntityController.java | 7 -
.../entity/MushroomCowController.java | 9 -
.../nms/v1_12_R1/entity/OcelotController.java | 10 -
.../nms/v1_12_R1/entity/ParrotController.java | 5 -
.../nms/v1_12_R1/entity/PigController.java | 10 -
.../v1_12_R1/entity/PigZombieController.java | 8 -
.../v1_12_R1/entity/PolarBearController.java | 6 -
.../nms/v1_12_R1/entity/RabbitController.java | 10 -
.../nms/v1_12_R1/entity/SheepController.java | 9 -
.../v1_12_R1/entity/ShulkerController.java | 10 -
.../v1_12_R1/entity/SilverfishController.java | 9 -
.../v1_12_R1/entity/SkeletonController.java | 9 -
.../entity/SkeletonStrayController.java | 9 -
.../entity/SkeletonWitherController.java | 9 -
.../nms/v1_12_R1/entity/SlimeController.java | 11 -
.../v1_12_R1/entity/SnowmanController.java | 9 -
.../nms/v1_12_R1/entity/SpiderController.java | 9 -
.../nms/v1_12_R1/entity/SquidController.java | 9 -
.../nms/v1_12_R1/entity/VexController.java | 6 -
.../v1_12_R1/entity/VillagerController.java | 13 -
.../v1_12_R1/entity/VindicatorController.java | 9 -
.../nms/v1_12_R1/entity/WitchController.java | 9 -
.../nms/v1_12_R1/entity/WitherController.java | 5 -
.../nms/v1_12_R1/entity/WolfController.java | 9 -
.../nms/v1_12_R1/entity/ZombieController.java | 8 -
.../v1_12_R1/entity/ZombieHuskController.java | 8 -
.../entity/ZombieVillagerController.java | 8 -
.../nonliving/AreaEffectCloudController.java | 4 -
.../entity/nonliving/BoatController.java | 5 -
.../nonliving/DragonFireballController.java | 6 -
.../entity/nonliving/EggController.java | 5 -
.../nonliving/EnderCrystalController.java | 4 -
.../nonliving/EnderPearlController.java | 5 -
.../nonliving/EnderSignalController.java | 4 -
.../nonliving/EvokerFangsController.java | 4 -
.../nonliving/ExperienceOrbController.java | 4 -
.../nonliving/FallingBlockController.java | 6 -
.../entity/nonliving/FireworkController.java | 4 -
.../nonliving/FishingHookController.java | 4 -
.../entity/nonliving/ItemController.java | 5 -
.../entity/nonliving/ItemFrameController.java | 4 -
.../nonliving/LargeFireballController.java | 6 -
.../entity/nonliving/LeashController.java | 4 -
.../entity/nonliving/LlamaSpitController.java | 5 -
.../nonliving/MinecartChestController.java | 4 -
.../nonliving/MinecartCommandController.java | 4 -
.../nonliving/MinecartFurnaceController.java | 4 -
.../nonliving/MinecartHopperController.java | 3 -
.../nonliving/MinecartRideableController.java | 4 -
.../nonliving/MinecartSpawnerController.java | 3 -
.../nonliving/MinecartTNTController.java | 3 -
.../entity/nonliving/PaintingController.java | 4 -
.../nonliving/ShulkerBulletController.java | 4 -
.../nonliving/SmallFireballController.java | 5 -
.../entity/nonliving/SnowballController.java | 4 -
.../nonliving/SpectralArrowController.java | 4 -
.../entity/nonliving/TNTPrimedController.java | 4 -
.../nonliving/ThrownExpBottleController.java | 5 -
.../nonliving/ThrownPotionController.java | 5 -
.../nonliving/TippedArrowController.java | 4 -
.../nonliving/WitherSkullController.java | 4 -
.../v1_12_R1/util/CitizensBlockBreaker.java | 9 -
.../util/EmptyAdvancementDataPlayer.java | 1 -
.../nms/v1_12_R1/util/NMSImpl.java | 131 -------
.../v1_12_R1/util/PlayerAnimationImpl.java | 3 -
.../v1_12_R1/util/PlayerControllerMove.java | 7 -
.../nms/v1_12_R1/util/PlayerNavigation.java | 35 --
.../nms/v1_12_R1/util/PlayerPathfinder.java | 9 -
.../util/PlayerPathfinderAbstract.java | 1 -
.../v1_12_R1/util/PlayerPathfinderNormal.java | 46 ---
.../v1_12_R1/util/PlayerlistTrackerEntry.java | 16 -
.../v1_13_R2/entity/ArmorStandController.java | 5 -
.../nms/v1_13_R2/entity/BatController.java | 7 -
.../nms/v1_13_R2/entity/BlazeController.java | 6 -
.../v1_13_R2/entity/CaveSpiderController.java | 10 -
.../v1_13_R2/entity/ChickenController.java | 13 -
.../nms/v1_13_R2/entity/CodController.java | 14 -
.../nms/v1_13_R2/entity/CowController.java | 10 -
.../v1_13_R2/entity/CreeperController.java | 12 -
.../v1_13_R2/entity/DolphinController.java | 12 -
.../v1_13_R2/entity/DrownedController.java | 9 -
.../entity/EnderDragonController.java | 23 --
.../v1_13_R2/entity/EndermanController.java | 10 -
.../v1_13_R2/entity/EndermiteController.java | 10 -
.../nms/v1_13_R2/entity/EntityHumanNPC.java | 30 --
.../nms/v1_13_R2/entity/EvokerController.java | 9 -
.../nms/v1_13_R2/entity/GhastController.java | 6 -
.../nms/v1_13_R2/entity/GiantController.java | 10 -
.../v1_13_R2/entity/GuardianController.java | 12 -
.../entity/GuardianElderController.java | 12 -
.../nms/v1_13_R2/entity/HorseController.java | 13 -
.../entity/HorseDonkeyController.java | 13 -
.../v1_13_R2/entity/HorseMuleController.java | 13 -
.../entity/HorseSkeletonController.java | 13 -
.../entity/HorseZombieController.java | 13 -
.../nms/v1_13_R2/entity/HumanController.java | 3 -
.../v1_13_R2/entity/IllusionerController.java | 9 -
.../v1_13_R2/entity/IronGolemController.java | 10 -
.../nms/v1_13_R2/entity/LlamaController.java | 13 -
.../v1_13_R2/entity/MagmaCubeController.java | 12 -
.../v1_13_R2/entity/MobEntityController.java | 7 -
.../entity/MushroomCowController.java | 10 -
.../nms/v1_13_R2/entity/OcelotController.java | 11 -
.../nms/v1_13_R2/entity/ParrotController.java | 6 -
.../v1_13_R2/entity/PhantomController.java | 15 -
.../nms/v1_13_R2/entity/PigController.java | 11 -
.../v1_13_R2/entity/PigZombieController.java | 9 -
.../v1_13_R2/entity/PolarBearController.java | 7 -
.../v1_13_R2/entity/PufferFishController.java | 14 -
.../nms/v1_13_R2/entity/RabbitController.java | 12 -
.../nms/v1_13_R2/entity/SalmonController.java | 14 -
.../nms/v1_13_R2/entity/SheepController.java | 10 -
.../v1_13_R2/entity/ShulkerController.java | 13 -
.../v1_13_R2/entity/SilverfishController.java | 10 -
.../v1_13_R2/entity/SkeletonController.java | 10 -
.../entity/SkeletonStrayController.java | 10 -
.../entity/SkeletonWitherController.java | 10 -
.../nms/v1_13_R2/entity/SlimeController.java | 12 -
.../v1_13_R2/entity/SnowmanController.java | 10 -
.../nms/v1_13_R2/entity/SpiderController.java | 10 -
.../nms/v1_13_R2/entity/SquidController.java | 10 -
.../entity/TropicalFishController.java | 14 -
.../nms/v1_13_R2/entity/TurtleController.java | 11 -
.../nms/v1_13_R2/entity/VexController.java | 7 -
.../v1_13_R2/entity/VillagerController.java | 14 -
.../v1_13_R2/entity/VindicatorController.java | 10 -
.../nms/v1_13_R2/entity/WitchController.java | 10 -
.../nms/v1_13_R2/entity/WitherController.java | 6 -
.../nms/v1_13_R2/entity/WolfController.java | 10 -
.../nms/v1_13_R2/entity/ZombieController.java | 9 -
.../v1_13_R2/entity/ZombieHuskController.java | 9 -
.../entity/ZombieVillagerController.java | 9 -
.../nonliving/AreaEffectCloudController.java | 5 -
.../entity/nonliving/BoatController.java | 6 -
.../nonliving/DragonFireballController.java | 7 -
.../entity/nonliving/EggController.java | 6 -
.../nonliving/EnderCrystalController.java | 5 -
.../nonliving/EnderPearlController.java | 6 -
.../nonliving/EnderSignalController.java | 5 -
.../nonliving/EvokerFangsController.java | 5 -
.../nonliving/ExperienceOrbController.java | 5 -
.../nonliving/FallingBlockController.java | 7 -
.../entity/nonliving/FireworkController.java | 5 -
.../nonliving/FishingHookController.java | 5 -
.../entity/nonliving/ItemController.java | 6 -
.../entity/nonliving/ItemFrameController.java | 5 -
.../nonliving/LargeFireballController.java | 7 -
.../entity/nonliving/LeashController.java | 5 -
.../entity/nonliving/LlamaSpitController.java | 6 -
.../nonliving/MinecartChestController.java | 5 -
.../nonliving/MinecartCommandController.java | 5 -
.../nonliving/MinecartFurnaceController.java | 5 -
.../nonliving/MinecartHopperController.java | 4 -
.../nonliving/MinecartRideableController.java | 5 -
.../nonliving/MinecartSpawnerController.java | 4 -
.../nonliving/MinecartTNTController.java | 4 -
.../entity/nonliving/PaintingController.java | 5 -
.../nonliving/ShulkerBulletController.java | 5 -
.../nonliving/SmallFireballController.java | 6 -
.../entity/nonliving/SnowballController.java | 5 -
.../nonliving/SpectralArrowController.java | 5 -
.../entity/nonliving/TNTPrimedController.java | 5 -
.../nonliving/ThrownExpBottleController.java | 6 -
.../nonliving/ThrownPotionController.java | 6 -
.../nonliving/ThrownTridentController.java | 5 -
.../nonliving/TippedArrowController.java | 5 -
.../nonliving/WitherSkullController.java | 5 -
.../v1_13_R2/util/CitizensBlockBreaker.java | 9 -
.../v1_13_R2/util/CustomEntityRegistry.java | 1 -
.../util/EmptyAdvancementDataPlayer.java | 1 -
.../nms/v1_13_R2/util/NMSBoundingBox.java | 2 -
.../nms/v1_13_R2/util/NMSImpl.java | 149 --------
.../v1_13_R2/util/PlayerAnimationImpl.java | 3 -
.../v1_13_R2/util/PlayerControllerMove.java | 7 -
.../nms/v1_13_R2/util/PlayerNavigation.java | 44 ---
.../nms/v1_13_R2/util/PlayerPathfinder.java | 9 -
.../util/PlayerPathfinderAbstract.java | 1 -
.../v1_13_R2/util/PlayerPathfinderNormal.java | 62 ---
.../v1_13_R2/util/PlayerlistTrackerEntry.java | 16 -
.../v1_14_R1/entity/ArmorStandController.java | 5 -
.../nms/v1_14_R1/entity/BatController.java | 7 -
.../nms/v1_14_R1/entity/BlazeController.java | 6 -
.../nms/v1_14_R1/entity/CatController.java | 10 -
.../v1_14_R1/entity/CaveSpiderController.java | 10 -
.../v1_14_R1/entity/ChickenController.java | 11 -
.../nms/v1_14_R1/entity/CodController.java | 14 -
.../nms/v1_14_R1/entity/CowController.java | 10 -
.../v1_14_R1/entity/CreeperController.java | 12 -
.../v1_14_R1/entity/DolphinController.java | 12 -
.../v1_14_R1/entity/DrownedController.java | 9 -
.../entity/EnderDragonController.java | 21 -
.../v1_14_R1/entity/EndermanController.java | 10 -
.../v1_14_R1/entity/EndermiteController.java | 10 -
.../nms/v1_14_R1/entity/EntityHumanNPC.java | 29 --
.../nms/v1_14_R1/entity/EvokerController.java | 9 -
.../nms/v1_14_R1/entity/FoxController.java | 10 -
.../nms/v1_14_R1/entity/GhastController.java | 6 -
.../nms/v1_14_R1/entity/GiantController.java | 10 -
.../v1_14_R1/entity/GuardianController.java | 10 -
.../entity/GuardianElderController.java | 10 -
.../nms/v1_14_R1/entity/HorseController.java | 14 -
.../entity/HorseDonkeyController.java | 14 -
.../v1_14_R1/entity/HorseMuleController.java | 14 -
.../entity/HorseSkeletonController.java | 14 -
.../entity/HorseZombieController.java | 14 -
.../nms/v1_14_R1/entity/HumanController.java | 3 -
.../v1_14_R1/entity/IllusionerController.java | 9 -
.../v1_14_R1/entity/IronGolemController.java | 10 -
.../nms/v1_14_R1/entity/LlamaController.java | 14 -
.../v1_14_R1/entity/MagmaCubeController.java | 12 -
.../v1_14_R1/entity/MobEntityController.java | 8 -
.../entity/MushroomCowController.java | 10 -
.../nms/v1_14_R1/entity/OcelotController.java | 11 -
.../nms/v1_14_R1/entity/PandaController.java | 10 -
.../nms/v1_14_R1/entity/ParrotController.java | 6 -
.../v1_14_R1/entity/PhantomController.java | 13 -
.../nms/v1_14_R1/entity/PigController.java | 11 -
.../v1_14_R1/entity/PigZombieController.java | 9 -
.../v1_14_R1/entity/PillagerController.java | 10 -
.../v1_14_R1/entity/PolarBearController.java | 7 -
.../v1_14_R1/entity/PufferFishController.java | 16 -
.../nms/v1_14_R1/entity/RabbitController.java | 12 -
.../v1_14_R1/entity/RavagerController.java | 10 -
.../nms/v1_14_R1/entity/SalmonController.java | 14 -
.../nms/v1_14_R1/entity/SheepController.java | 10 -
.../v1_14_R1/entity/ShulkerController.java | 11 -
.../v1_14_R1/entity/SilverfishController.java | 10 -
.../v1_14_R1/entity/SkeletonController.java | 10 -
.../entity/SkeletonStrayController.java | 10 -
.../entity/SkeletonWitherController.java | 10 -
.../nms/v1_14_R1/entity/SlimeController.java | 12 -
.../v1_14_R1/entity/SnowmanController.java | 10 -
.../nms/v1_14_R1/entity/SpiderController.java | 10 -
.../nms/v1_14_R1/entity/SquidController.java | 10 -
.../entity/TraderLlamaController.java | 13 -
.../entity/TropicalFishController.java | 14 -
.../nms/v1_14_R1/entity/TurtleController.java | 11 -
.../nms/v1_14_R1/entity/VexController.java | 8 -
.../v1_14_R1/entity/VillagerController.java | 17 -
.../v1_14_R1/entity/VindicatorController.java | 10 -
.../entity/WanderingTraderController.java | 19 -
.../nms/v1_14_R1/entity/WitchController.java | 10 -
.../nms/v1_14_R1/entity/WitherController.java | 6 -
.../nms/v1_14_R1/entity/WolfController.java | 10 -
.../nms/v1_14_R1/entity/ZombieController.java | 9 -
.../v1_14_R1/entity/ZombieHuskController.java | 9 -
.../entity/ZombieVillagerController.java | 9 -
.../nonliving/AreaEffectCloudController.java | 5 -
.../entity/nonliving/BoatController.java | 6 -
.../nonliving/DragonFireballController.java | 7 -
.../entity/nonliving/EggController.java | 6 -
.../nonliving/EnderCrystalController.java | 5 -
.../nonliving/EnderPearlController.java | 6 -
.../nonliving/EnderSignalController.java | 5 -
.../nonliving/EvokerFangsController.java | 5 -
.../nonliving/ExperienceOrbController.java | 5 -
.../nonliving/FallingBlockController.java | 7 -
.../entity/nonliving/FireworkController.java | 5 -
.../nonliving/FishingHookController.java | 6 -
.../entity/nonliving/ItemController.java | 6 -
.../entity/nonliving/ItemFrameController.java | 5 -
.../nonliving/LargeFireballController.java | 7 -
.../entity/nonliving/LeashController.java | 5 -
.../entity/nonliving/LlamaSpitController.java | 6 -
.../nonliving/MinecartChestController.java | 5 -
.../nonliving/MinecartCommandController.java | 5 -
.../nonliving/MinecartFurnaceController.java | 5 -
.../nonliving/MinecartHopperController.java | 4 -
.../nonliving/MinecartRideableController.java | 5 -
.../nonliving/MinecartSpawnerController.java | 4 -
.../nonliving/MinecartTNTController.java | 4 -
.../entity/nonliving/PaintingController.java | 5 -
.../nonliving/ShulkerBulletController.java | 5 -
.../nonliving/SmallFireballController.java | 6 -
.../entity/nonliving/SnowballController.java | 5 -
.../nonliving/SpectralArrowController.java | 5 -
.../entity/nonliving/TNTPrimedController.java | 5 -
.../nonliving/ThrownExpBottleController.java | 6 -
.../nonliving/ThrownPotionController.java | 6 -
.../nonliving/ThrownTridentController.java | 5 -
.../nonliving/TippedArrowController.java | 5 -
.../nonliving/WitherSkullController.java | 5 -
.../v1_14_R1/util/CitizensBlockBreaker.java | 9 -
.../util/EmptyAdvancementDataPlayer.java | 1 -
.../nms/v1_14_R1/util/NMSImpl.java | 136 -------
.../v1_14_R1/util/PitchableLookControl.java | 1 -
.../v1_14_R1/util/PlayerAnimationImpl.java | 3 -
.../v1_14_R1/util/PlayerControllerMove.java | 7 -
.../nms/v1_14_R1/util/PlayerNavigation.java | 44 ---
.../nms/v1_14_R1/util/PlayerPathfinder.java | 11 -
.../v1_14_R1/util/PlayerPathfinderNormal.java | 57 ---
.../nms/v1_14_R1/util/PlayerlistTracker.java | 15 -
.../v1_15_R1/entity/ArmorStandController.java | 5 -
.../nms/v1_15_R1/entity/BatController.java | 8 -
.../nms/v1_15_R1/entity/BeeController.java | 7 -
.../nms/v1_15_R1/entity/BlazeController.java | 6 -
.../nms/v1_15_R1/entity/CatController.java | 9 -
.../v1_15_R1/entity/CaveSpiderController.java | 9 -
.../v1_15_R1/entity/ChickenController.java | 10 -
.../nms/v1_15_R1/entity/CodController.java | 16 -
.../nms/v1_15_R1/entity/CowController.java | 9 -
.../v1_15_R1/entity/CreeperController.java | 11 -
.../v1_15_R1/entity/DolphinController.java | 13 -
.../v1_15_R1/entity/DrownedController.java | 8 -
.../entity/EnderDragonController.java | 21 -
.../v1_15_R1/entity/EndermanController.java | 9 -
.../v1_15_R1/entity/EndermiteController.java | 9 -
.../nms/v1_15_R1/entity/EntityHumanNPC.java | 28 --
.../nms/v1_15_R1/entity/EvokerController.java | 8 -
.../nms/v1_15_R1/entity/FoxController.java | 9 -
.../nms/v1_15_R1/entity/GhastController.java | 6 -
.../nms/v1_15_R1/entity/GiantController.java | 9 -
.../v1_15_R1/entity/GuardianController.java | 10 -
.../entity/GuardianElderController.java | 10 -
.../nms/v1_15_R1/entity/HorseController.java | 12 -
.../entity/HorseDonkeyController.java | 13 -
.../v1_15_R1/entity/HorseMuleController.java | 13 -
.../entity/HorseSkeletonController.java | 13 -
.../entity/HorseZombieController.java | 13 -
.../nms/v1_15_R1/entity/HumanController.java | 3 -
.../v1_15_R1/entity/IllusionerController.java | 8 -
.../v1_15_R1/entity/IronGolemController.java | 9 -
.../nms/v1_15_R1/entity/LlamaController.java | 13 -
.../v1_15_R1/entity/MagmaCubeController.java | 13 -
.../v1_15_R1/entity/MobEntityController.java | 8 -
.../entity/MushroomCowController.java | 9 -
.../nms/v1_15_R1/entity/OcelotController.java | 10 -
.../nms/v1_15_R1/entity/PandaController.java | 9 -
.../nms/v1_15_R1/entity/ParrotController.java | 7 -
.../v1_15_R1/entity/PhantomController.java | 12 -
.../nms/v1_15_R1/entity/PigController.java | 10 -
.../v1_15_R1/entity/PigZombieController.java | 8 -
.../v1_15_R1/entity/PillagerController.java | 9 -
.../v1_15_R1/entity/PolarBearController.java | 7 -
.../v1_15_R1/entity/PufferFishController.java | 17 -
.../nms/v1_15_R1/entity/RabbitController.java | 11 -
.../v1_15_R1/entity/RavagerController.java | 9 -
.../nms/v1_15_R1/entity/SalmonController.java | 15 -
.../nms/v1_15_R1/entity/SheepController.java | 9 -
.../v1_15_R1/entity/ShulkerController.java | 11 -
.../v1_15_R1/entity/SilverfishController.java | 9 -
.../v1_15_R1/entity/SkeletonController.java | 9 -
.../entity/SkeletonStrayController.java | 9 -
.../entity/SkeletonWitherController.java | 9 -
.../nms/v1_15_R1/entity/SlimeController.java | 13 -
.../v1_15_R1/entity/SnowmanController.java | 9 -
.../nms/v1_15_R1/entity/SpiderController.java | 9 -
.../nms/v1_15_R1/entity/SquidController.java | 9 -
.../entity/TraderLlamaController.java | 13 -
.../entity/TropicalFishController.java | 16 -
.../nms/v1_15_R1/entity/TurtleController.java | 12 -
.../nms/v1_15_R1/entity/VexController.java | 7 -
.../v1_15_R1/entity/VillagerController.java | 15 -
.../v1_15_R1/entity/VindicatorController.java | 9 -
.../entity/WanderingTraderController.java | 16 -
.../nms/v1_15_R1/entity/WitchController.java | 9 -
.../nms/v1_15_R1/entity/WitherController.java | 7 -
.../nms/v1_15_R1/entity/WolfController.java | 9 -
.../nms/v1_15_R1/entity/ZombieController.java | 8 -
.../v1_15_R1/entity/ZombieHuskController.java | 8 -
.../entity/ZombieVillagerController.java | 8 -
.../nonliving/AreaEffectCloudController.java | 5 -
.../entity/nonliving/BoatController.java | 26 --
.../nonliving/DragonFireballController.java | 7 -
.../entity/nonliving/EggController.java | 6 -
.../nonliving/EnderCrystalController.java | 5 -
.../nonliving/EnderPearlController.java | 6 -
.../nonliving/EnderSignalController.java | 5 -
.../nonliving/EvokerFangsController.java | 5 -
.../nonliving/ExperienceOrbController.java | 5 -
.../nonliving/FallingBlockController.java | 7 -
.../entity/nonliving/FireworkController.java | 5 -
.../nonliving/FishingHookController.java | 6 -
.../entity/nonliving/ItemController.java | 6 -
.../entity/nonliving/ItemFrameController.java | 5 -
.../nonliving/LargeFireballController.java | 7 -
.../entity/nonliving/LeashController.java | 5 -
.../entity/nonliving/LlamaSpitController.java | 6 -
.../nonliving/MinecartChestController.java | 5 -
.../nonliving/MinecartCommandController.java | 5 -
.../nonliving/MinecartFurnaceController.java | 5 -
.../nonliving/MinecartHopperController.java | 4 -
.../nonliving/MinecartRideableController.java | 5 -
.../nonliving/MinecartSpawnerController.java | 4 -
.../nonliving/MinecartTNTController.java | 4 -
.../entity/nonliving/PaintingController.java | 5 -
.../nonliving/ShulkerBulletController.java | 5 -
.../nonliving/SmallFireballController.java | 6 -
.../entity/nonliving/SnowballController.java | 5 -
.../nonliving/SpectralArrowController.java | 5 -
.../entity/nonliving/TNTPrimedController.java | 5 -
.../nonliving/ThrownExpBottleController.java | 6 -
.../nonliving/ThrownPotionController.java | 6 -
.../nonliving/ThrownTridentController.java | 5 -
.../nonliving/TippedArrowController.java | 5 -
.../nonliving/WitherSkullController.java | 5 -
.../v1_15_R1/util/CitizensBlockBreaker.java | 9 -
.../util/EmptyAdvancementDataPlayer.java | 1 -
.../v1_15_R1/util/ForwardingNPCHolder.java | 1 -
.../nms/v1_15_R1/util/NMSImpl.java | 145 -------
.../v1_15_R1/util/PitchableLookControl.java | 1 -
.../v1_15_R1/util/PlayerAnimationImpl.java | 3 -
.../v1_15_R1/util/PlayerControllerMove.java | 7 -
.../nms/v1_15_R1/util/PlayerNavigation.java | 45 ---
.../nms/v1_15_R1/util/PlayerPathfinder.java | 11 -
.../v1_15_R1/util/PlayerPathfinderNormal.java | 61 ---
.../nms/v1_15_R1/util/PlayerlistTracker.java | 15 -
.../v1_16_R3/entity/ArmorStandController.java | 6 -
.../nms/v1_16_R3/entity/BatController.java | 8 -
.../nms/v1_16_R3/entity/BeeController.java | 7 -
.../nms/v1_16_R3/entity/BlazeController.java | 6 -
.../nms/v1_16_R3/entity/CatController.java | 9 -
.../v1_16_R3/entity/CaveSpiderController.java | 9 -
.../v1_16_R3/entity/ChickenController.java | 10 -
.../nms/v1_16_R3/entity/CodController.java | 16 -
.../nms/v1_16_R3/entity/CowController.java | 9 -
.../v1_16_R3/entity/CreeperController.java | 11 -
.../v1_16_R3/entity/DolphinController.java | 13 -
.../v1_16_R3/entity/DrownedController.java | 8 -
.../entity/EnderDragonController.java | 21 -
.../v1_16_R3/entity/EndermanController.java | 10 -
.../v1_16_R3/entity/EndermiteController.java | 9 -
.../nms/v1_16_R3/entity/EntityHumanNPC.java | 27 --
.../nms/v1_16_R3/entity/EvokerController.java | 8 -
.../nms/v1_16_R3/entity/FoxController.java | 9 -
.../nms/v1_16_R3/entity/GhastController.java | 6 -
.../nms/v1_16_R3/entity/GiantController.java | 9 -
.../v1_16_R3/entity/GuardianController.java | 10 -
.../entity/GuardianElderController.java | 10 -
.../nms/v1_16_R3/entity/HoglinController.java | 9 -
.../nms/v1_16_R3/entity/HorseController.java | 12 -
.../entity/HorseDonkeyController.java | 13 -
.../v1_16_R3/entity/HorseMuleController.java | 13 -
.../entity/HorseSkeletonController.java | 13 -
.../entity/HorseZombieController.java | 13 -
.../nms/v1_16_R3/entity/HumanController.java | 3 -
.../v1_16_R3/entity/IllusionerController.java | 8 -
.../v1_16_R3/entity/IronGolemController.java | 9 -
.../nms/v1_16_R3/entity/LlamaController.java | 13 -
.../v1_16_R3/entity/MagmaCubeController.java | 13 -
.../v1_16_R3/entity/MobEntityController.java | 8 -
.../entity/MushroomCowController.java | 9 -
.../nms/v1_16_R3/entity/OcelotController.java | 10 -
.../nms/v1_16_R3/entity/PandaController.java | 9 -
.../nms/v1_16_R3/entity/ParrotController.java | 7 -
.../v1_16_R3/entity/PhantomController.java | 13 -
.../nms/v1_16_R3/entity/PigController.java | 10 -
.../v1_16_R3/entity/PigZombieController.java | 8 -
.../entity/PiglinBruteController.java | 9 -
.../nms/v1_16_R3/entity/PiglinController.java | 9 -
.../v1_16_R3/entity/PillagerController.java | 9 -
.../v1_16_R3/entity/PolarBearController.java | 7 -
.../v1_16_R3/entity/PufferFishController.java | 17 -
.../nms/v1_16_R3/entity/RabbitController.java | 11 -
.../v1_16_R3/entity/RavagerController.java | 9 -
.../nms/v1_16_R3/entity/SalmonController.java | 15 -
.../nms/v1_16_R3/entity/SheepController.java | 9 -
.../v1_16_R3/entity/ShulkerController.java | 11 -
.../v1_16_R3/entity/SilverfishController.java | 9 -
.../v1_16_R3/entity/SkeletonController.java | 9 -
.../entity/SkeletonStrayController.java | 9 -
.../entity/SkeletonWitherController.java | 9 -
.../nms/v1_16_R3/entity/SlimeController.java | 13 -
.../v1_16_R3/entity/SnowmanController.java | 9 -
.../nms/v1_16_R3/entity/SpiderController.java | 9 -
.../nms/v1_16_R3/entity/SquidController.java | 9 -
.../v1_16_R3/entity/StriderController.java | 8 -
.../entity/TraderLlamaController.java | 13 -
.../entity/TropicalFishController.java | 16 -
.../nms/v1_16_R3/entity/TurtleController.java | 12 -
.../nms/v1_16_R3/entity/VexController.java | 7 -
.../v1_16_R3/entity/VillagerController.java | 15 -
.../v1_16_R3/entity/VindicatorController.java | 9 -
.../entity/WanderingTraderController.java | 16 -
.../nms/v1_16_R3/entity/WitchController.java | 9 -
.../nms/v1_16_R3/entity/WitherController.java | 7 -
.../nms/v1_16_R3/entity/WolfController.java | 9 -
.../nms/v1_16_R3/entity/ZoglinController.java | 9 -
.../nms/v1_16_R3/entity/ZombieController.java | 8 -
.../v1_16_R3/entity/ZombieHuskController.java | 8 -
.../entity/ZombieVillagerController.java | 8 -
.../nonliving/AreaEffectCloudController.java | 5 -
.../entity/nonliving/BoatController.java | 21 -
.../nonliving/DragonFireballController.java | 7 -
.../entity/nonliving/EggController.java | 6 -
.../nonliving/EnderCrystalController.java | 5 -
.../nonliving/EnderPearlController.java | 6 -
.../nonliving/EnderSignalController.java | 5 -
.../nonliving/EvokerFangsController.java | 5 -
.../nonliving/ExperienceOrbController.java | 5 -
.../nonliving/FallingBlockController.java | 7 -
.../entity/nonliving/FireworkController.java | 5 -
.../nonliving/FishingHookController.java | 6 -
.../entity/nonliving/ItemController.java | 6 -
.../entity/nonliving/ItemFrameController.java | 5 -
.../nonliving/LargeFireballController.java | 7 -
.../entity/nonliving/LeashController.java | 5 -
.../entity/nonliving/LlamaSpitController.java | 6 -
.../nonliving/MinecartChestController.java | 5 -
.../nonliving/MinecartCommandController.java | 5 -
.../nonliving/MinecartFurnaceController.java | 5 -
.../nonliving/MinecartHopperController.java | 4 -
.../nonliving/MinecartRideableController.java | 5 -
.../nonliving/MinecartSpawnerController.java | 4 -
.../nonliving/MinecartTNTController.java | 4 -
.../entity/nonliving/PaintingController.java | 5 -
.../nonliving/ShulkerBulletController.java | 5 -
.../nonliving/SmallFireballController.java | 6 -
.../entity/nonliving/SnowballController.java | 5 -
.../nonliving/SpectralArrowController.java | 5 -
.../entity/nonliving/TNTPrimedController.java | 5 -
.../nonliving/ThrownExpBottleController.java | 6 -
.../nonliving/ThrownPotionController.java | 6 -
.../nonliving/ThrownTridentController.java | 5 -
.../nonliving/TippedArrowController.java | 5 -
.../nonliving/WitherSkullController.java | 5 -
.../v1_16_R3/util/CitizensBlockBreaker.java | 9 -
.../util/EmptyAdvancementDataPlayer.java | 1 -
.../nms/v1_16_R3/util/EntityMoveControl.java | 7 -
.../nms/v1_16_R3/util/EntityNavigation.java | 36 --
.../nms/v1_16_R3/util/EntityPathfinder.java | 11 -
.../v1_16_R3/util/EntityPathfinderNormal.java | 53 ---
.../v1_16_R3/util/ForwardingNPCHolder.java | 2 -
.../citizensnpcs/nms/v1_16_R3/util/MobAI.java | 2 -
.../nms/v1_16_R3/util/NMSImpl.java | 141 -------
.../v1_16_R3/util/PitchableLookControl.java | 1 -
.../v1_16_R3/util/PlayerAnimationImpl.java | 3 -
.../nms/v1_16_R3/util/PlayerlistTracker.java | 15 -
.../v1_17_R1/entity/ArmorStandController.java | 6 -
.../v1_17_R1/entity/AxolotlController.java | 12 -
.../nms/v1_17_R1/entity/BatController.java | 8 -
.../nms/v1_17_R1/entity/BeeController.java | 7 -
.../nms/v1_17_R1/entity/BlazeController.java | 6 -
.../nms/v1_17_R1/entity/CatController.java | 9 -
.../v1_17_R1/entity/CaveSpiderController.java | 9 -
.../v1_17_R1/entity/ChickenController.java | 10 -
.../nms/v1_17_R1/entity/CodController.java | 16 -
.../nms/v1_17_R1/entity/CowController.java | 9 -
.../v1_17_R1/entity/CreeperController.java | 11 -
.../v1_17_R1/entity/DolphinController.java | 13 -
.../v1_17_R1/entity/DrownedController.java | 8 -
.../entity/EnderDragonController.java | 21 -
.../v1_17_R1/entity/EndermanController.java | 10 -
.../v1_17_R1/entity/EndermiteController.java | 9 -
.../nms/v1_17_R1/entity/EntityHumanNPC.java | 24 --
.../nms/v1_17_R1/entity/EvokerController.java | 8 -
.../nms/v1_17_R1/entity/FoxController.java | 9 -
.../nms/v1_17_R1/entity/GhastController.java | 6 -
.../nms/v1_17_R1/entity/GiantController.java | 9 -
.../v1_17_R1/entity/GlowSquidController.java | 9 -
.../nms/v1_17_R1/entity/GoatController.java | 9 -
.../v1_17_R1/entity/GuardianController.java | 10 -
.../entity/GuardianElderController.java | 10 -
.../nms/v1_17_R1/entity/HoglinController.java | 9 -
.../nms/v1_17_R1/entity/HorseController.java | 12 -
.../entity/HorseDonkeyController.java | 13 -
.../v1_17_R1/entity/HorseMuleController.java | 13 -
.../entity/HorseSkeletonController.java | 13 -
.../entity/HorseZombieController.java | 13 -
.../nms/v1_17_R1/entity/HumanController.java | 3 -
.../v1_17_R1/entity/IllusionerController.java | 8 -
.../v1_17_R1/entity/IronGolemController.java | 9 -
.../nms/v1_17_R1/entity/LlamaController.java | 13 -
.../v1_17_R1/entity/MagmaCubeController.java | 13 -
.../v1_17_R1/entity/MobEntityController.java | 7 -
.../entity/MushroomCowController.java | 9 -
.../nms/v1_17_R1/entity/OcelotController.java | 10 -
.../nms/v1_17_R1/entity/PandaController.java | 9 -
.../nms/v1_17_R1/entity/ParrotController.java | 7 -
.../v1_17_R1/entity/PhantomController.java | 13 -
.../nms/v1_17_R1/entity/PigController.java | 10 -
.../v1_17_R1/entity/PigZombieController.java | 9 -
.../entity/PiglinBruteController.java | 9 -
.../nms/v1_17_R1/entity/PiglinController.java | 9 -
.../v1_17_R1/entity/PillagerController.java | 9 -
.../v1_17_R1/entity/PolarBearController.java | 7 -
.../v1_17_R1/entity/PufferFishController.java | 17 -
.../nms/v1_17_R1/entity/RabbitController.java | 11 -
.../v1_17_R1/entity/RavagerController.java | 9 -
.../nms/v1_17_R1/entity/SalmonController.java | 15 -
.../nms/v1_17_R1/entity/SheepController.java | 9 -
.../v1_17_R1/entity/ShulkerController.java | 11 -
.../v1_17_R1/entity/SilverfishController.java | 9 -
.../v1_17_R1/entity/SkeletonController.java | 9 -
.../entity/SkeletonStrayController.java | 9 -
.../entity/SkeletonWitherController.java | 9 -
.../nms/v1_17_R1/entity/SlimeController.java | 13 -
.../v1_17_R1/entity/SnowmanController.java | 9 -
.../nms/v1_17_R1/entity/SpiderController.java | 9 -
.../nms/v1_17_R1/entity/SquidController.java | 9 -
.../v1_17_R1/entity/StriderController.java | 8 -
.../entity/TraderLlamaController.java | 11 -
.../entity/TropicalFishController.java | 16 -
.../nms/v1_17_R1/entity/TurtleController.java | 12 -
.../nms/v1_17_R1/entity/VexController.java | 7 -
.../v1_17_R1/entity/VillagerController.java | 15 -
.../v1_17_R1/entity/VindicatorController.java | 9 -
.../entity/WanderingTraderController.java | 14 -
.../nms/v1_17_R1/entity/WitchController.java | 9 -
.../nms/v1_17_R1/entity/WitherController.java | 7 -
.../nms/v1_17_R1/entity/WolfController.java | 9 -
.../nms/v1_17_R1/entity/ZoglinController.java | 9 -
.../nms/v1_17_R1/entity/ZombieController.java | 8 -
.../v1_17_R1/entity/ZombieHuskController.java | 8 -
.../entity/ZombieVillagerController.java | 8 -
.../nonliving/AreaEffectCloudController.java | 5 -
.../entity/nonliving/BoatController.java | 21 -
.../nonliving/DragonFireballController.java | 7 -
.../entity/nonliving/EggController.java | 6 -
.../nonliving/EnderCrystalController.java | 5 -
.../nonliving/EnderPearlController.java | 6 -
.../nonliving/EnderSignalController.java | 5 -
.../nonliving/EvokerFangsController.java | 5 -
.../nonliving/ExperienceOrbController.java | 5 -
.../nonliving/FallingBlockController.java | 7 -
.../entity/nonliving/FireworkController.java | 5 -
.../nonliving/FishingHookController.java | 5 -
.../nonliving/GlowItemFrameController.java | 5 -
.../entity/nonliving/ItemController.java | 6 -
.../entity/nonliving/ItemFrameController.java | 5 -
.../nonliving/LargeFireballController.java | 7 -
.../entity/nonliving/LeashController.java | 5 -
.../entity/nonliving/LlamaSpitController.java | 6 -
.../entity/nonliving/MarkerController.java | 5 -
.../nonliving/MinecartChestController.java | 5 -
.../nonliving/MinecartCommandController.java | 5 -
.../nonliving/MinecartFurnaceController.java | 5 -
.../nonliving/MinecartHopperController.java | 4 -
.../nonliving/MinecartRideableController.java | 5 -
.../nonliving/MinecartSpawnerController.java | 4 -
.../nonliving/MinecartTNTController.java | 4 -
.../entity/nonliving/PaintingController.java | 5 -
.../nonliving/ShulkerBulletController.java | 5 -
.../nonliving/SmallFireballController.java | 6 -
.../entity/nonliving/SnowballController.java | 5 -
.../nonliving/SpectralArrowController.java | 5 -
.../entity/nonliving/TNTPrimedController.java | 5 -
.../nonliving/ThrownExpBottleController.java | 6 -
.../nonliving/ThrownPotionController.java | 6 -
.../nonliving/ThrownTridentController.java | 5 -
.../nonliving/TippedArrowController.java | 5 -
.../nonliving/WitherSkullController.java | 5 -
.../v1_17_R1/util/CitizensBlockBreaker.java | 9 -
.../util/EmptyAdvancementDataPlayer.java | 1 -
.../nms/v1_17_R1/util/EntityMoveControl.java | 9 -
.../nms/v1_17_R1/util/EntityNavigation.java | 36 --
.../v1_17_R1/util/EntityNodeEvaluator.java | 55 ---
.../nms/v1_17_R1/util/EntityPathfinder.java | 10 -
.../v1_17_R1/util/ForwardingNPCHolder.java | 1 -
.../citizensnpcs/nms/v1_17_R1/util/MobAI.java | 2 -
.../nms/v1_17_R1/util/NMSImpl.java | 144 -------
.../v1_17_R1/util/PitchableLookControl.java | 1 -
.../v1_17_R1/util/PlayerAnimationImpl.java | 3 -
.../nms/v1_17_R1/util/PlayerlistTracker.java | 10 -
.../v1_18_R2/entity/ArmorStandController.java | 6 -
.../v1_18_R2/entity/AxolotlController.java | 12 -
.../nms/v1_18_R2/entity/BatController.java | 8 -
.../nms/v1_18_R2/entity/BeeController.java | 7 -
.../nms/v1_18_R2/entity/BlazeController.java | 6 -
.../nms/v1_18_R2/entity/CatController.java | 9 -
.../v1_18_R2/entity/CaveSpiderController.java | 9 -
.../v1_18_R2/entity/ChickenController.java | 10 -
.../nms/v1_18_R2/entity/CodController.java | 16 -
.../nms/v1_18_R2/entity/CowController.java | 9 -
.../v1_18_R2/entity/CreeperController.java | 11 -
.../v1_18_R2/entity/DolphinController.java | 13 -
.../v1_18_R2/entity/DrownedController.java | 8 -
.../entity/EnderDragonController.java | 21 -
.../v1_18_R2/entity/EndermanController.java | 9 -
.../v1_18_R2/entity/EndermiteController.java | 9 -
.../nms/v1_18_R2/entity/EntityHumanNPC.java | 24 --
.../nms/v1_18_R2/entity/EvokerController.java | 8 -
.../nms/v1_18_R2/entity/FoxController.java | 9 -
.../nms/v1_18_R2/entity/GhastController.java | 6 -
.../nms/v1_18_R2/entity/GiantController.java | 9 -
.../v1_18_R2/entity/GlowSquidController.java | 9 -
.../nms/v1_18_R2/entity/GoatController.java | 9 -
.../v1_18_R2/entity/GuardianController.java | 10 -
.../entity/GuardianElderController.java | 10 -
.../nms/v1_18_R2/entity/HoglinController.java | 9 -
.../nms/v1_18_R2/entity/HorseController.java | 12 -
.../entity/HorseDonkeyController.java | 13 -
.../v1_18_R2/entity/HorseMuleController.java | 13 -
.../entity/HorseSkeletonController.java | 13 -
.../entity/HorseZombieController.java | 13 -
.../nms/v1_18_R2/entity/HumanController.java | 3 -
.../v1_18_R2/entity/IllusionerController.java | 8 -
.../v1_18_R2/entity/IronGolemController.java | 9 -
.../nms/v1_18_R2/entity/LlamaController.java | 13 -
.../v1_18_R2/entity/MagmaCubeController.java | 13 -
.../v1_18_R2/entity/MobEntityController.java | 7 -
.../entity/MushroomCowController.java | 9 -
.../nms/v1_18_R2/entity/OcelotController.java | 10 -
.../nms/v1_18_R2/entity/PandaController.java | 9 -
.../nms/v1_18_R2/entity/ParrotController.java | 8 -
.../v1_18_R2/entity/PhantomController.java | 13 -
.../nms/v1_18_R2/entity/PigController.java | 10 -
.../v1_18_R2/entity/PigZombieController.java | 8 -
.../entity/PiglinBruteController.java | 9 -
.../nms/v1_18_R2/entity/PiglinController.java | 9 -
.../v1_18_R2/entity/PillagerController.java | 9 -
.../v1_18_R2/entity/PolarBearController.java | 7 -
.../v1_18_R2/entity/PufferFishController.java | 17 -
.../nms/v1_18_R2/entity/RabbitController.java | 11 -
.../v1_18_R2/entity/RavagerController.java | 9 -
.../nms/v1_18_R2/entity/SalmonController.java | 15 -
.../nms/v1_18_R2/entity/SheepController.java | 9 -
.../v1_18_R2/entity/ShulkerController.java | 11 -
.../v1_18_R2/entity/SilverfishController.java | 9 -
.../v1_18_R2/entity/SkeletonController.java | 9 -
.../entity/SkeletonStrayController.java | 9 -
.../entity/SkeletonWitherController.java | 9 -
.../nms/v1_18_R2/entity/SlimeController.java | 13 -
.../v1_18_R2/entity/SnowmanController.java | 9 -
.../nms/v1_18_R2/entity/SpiderController.java | 9 -
.../nms/v1_18_R2/entity/SquidController.java | 9 -
.../v1_18_R2/entity/StriderController.java | 8 -
.../entity/TraderLlamaController.java | 11 -
.../entity/TropicalFishController.java | 16 -
.../nms/v1_18_R2/entity/TurtleController.java | 12 -
.../nms/v1_18_R2/entity/VexController.java | 7 -
.../v1_18_R2/entity/VillagerController.java | 15 -
.../v1_18_R2/entity/VindicatorController.java | 9 -
.../entity/WanderingTraderController.java | 14 -
.../nms/v1_18_R2/entity/WitchController.java | 9 -
.../nms/v1_18_R2/entity/WitherController.java | 7 -
.../nms/v1_18_R2/entity/WolfController.java | 9 -
.../nms/v1_18_R2/entity/ZoglinController.java | 9 -
.../nms/v1_18_R2/entity/ZombieController.java | 8 -
.../v1_18_R2/entity/ZombieHuskController.java | 8 -
.../entity/ZombieVillagerController.java | 8 -
.../nonliving/AreaEffectCloudController.java | 5 -
.../entity/nonliving/BoatController.java | 21 -
.../nonliving/DragonFireballController.java | 7 -
.../entity/nonliving/EggController.java | 6 -
.../nonliving/EnderCrystalController.java | 5 -
.../nonliving/EnderPearlController.java | 6 -
.../nonliving/EnderSignalController.java | 5 -
.../nonliving/EvokerFangsController.java | 5 -
.../nonliving/ExperienceOrbController.java | 5 -
.../nonliving/FallingBlockController.java | 7 -
.../entity/nonliving/FireworkController.java | 5 -
.../nonliving/FishingHookController.java | 5 -
.../nonliving/GlowItemFrameController.java | 5 -
.../entity/nonliving/ItemController.java | 6 -
.../entity/nonliving/ItemFrameController.java | 5 -
.../nonliving/LargeFireballController.java | 7 -
.../entity/nonliving/LeashController.java | 5 -
.../entity/nonliving/LlamaSpitController.java | 6 -
.../entity/nonliving/MarkerController.java | 5 -
.../nonliving/MinecartChestController.java | 5 -
.../nonliving/MinecartCommandController.java | 5 -
.../nonliving/MinecartFurnaceController.java | 5 -
.../nonliving/MinecartHopperController.java | 4 -
.../nonliving/MinecartRideableController.java | 5 -
.../nonliving/MinecartSpawnerController.java | 4 -
.../nonliving/MinecartTNTController.java | 4 -
.../entity/nonliving/PaintingController.java | 5 -
.../nonliving/ShulkerBulletController.java | 5 -
.../nonliving/SmallFireballController.java | 6 -
.../entity/nonliving/SnowballController.java | 5 -
.../nonliving/SpectralArrowController.java | 5 -
.../entity/nonliving/TNTPrimedController.java | 5 -
.../nonliving/ThrownExpBottleController.java | 6 -
.../nonliving/ThrownPotionController.java | 6 -
.../nonliving/ThrownTridentController.java | 5 -
.../nonliving/TippedArrowController.java | 5 -
.../nonliving/WitherSkullController.java | 5 -
.../v1_18_R2/util/CitizensBlockBreaker.java | 9 -
.../util/EmptyAdvancementDataPlayer.java | 1 -
.../nms/v1_18_R2/util/EntityMoveControl.java | 8 -
.../nms/v1_18_R2/util/EntityNavigation.java | 27 --
.../v1_18_R2/util/EntityNodeEvaluator.java | 55 ---
.../nms/v1_18_R2/util/EntityPathfinder.java | 10 -
.../v1_18_R2/util/ForwardingNPCHolder.java | 1 -
.../citizensnpcs/nms/v1_18_R2/util/MobAI.java | 2 -
.../nms/v1_18_R2/util/NMSImpl.java | 146 -------
.../v1_18_R2/util/PitchableLookControl.java | 1 -
.../v1_18_R2/util/PlayerAnimationImpl.java | 3 -
.../nms/v1_18_R2/util/PlayerlistTracker.java | 10 -
.../nms/v1_19_R3/entity/AllayController.java | 10 -
.../v1_19_R3/entity/ArmorStandController.java | 6 -
.../v1_19_R3/entity/AxolotlController.java | 12 -
.../nms/v1_19_R3/entity/BatController.java | 8 -
.../nms/v1_19_R3/entity/BeeController.java | 7 -
.../nms/v1_19_R3/entity/BlazeController.java | 6 -
.../nms/v1_19_R3/entity/CamelController.java | 13 -
.../nms/v1_19_R3/entity/CatController.java | 9 -
.../v1_19_R3/entity/CaveSpiderController.java | 9 -
.../v1_19_R3/entity/ChickenController.java | 10 -
.../nms/v1_19_R3/entity/CodController.java | 16 -
.../nms/v1_19_R3/entity/CowController.java | 9 -
.../v1_19_R3/entity/CreeperController.java | 11 -
.../v1_19_R3/entity/DolphinController.java | 13 -
.../v1_19_R3/entity/DrownedController.java | 8 -
.../entity/EnderDragonController.java | 21 -
.../v1_19_R3/entity/EndermanController.java | 9 -
.../v1_19_R3/entity/EndermiteController.java | 9 -
.../nms/v1_19_R3/entity/EntityHumanNPC.java | 24 --
.../nms/v1_19_R3/entity/EvokerController.java | 8 -
.../nms/v1_19_R3/entity/FoxController.java | 9 -
.../nms/v1_19_R3/entity/FrogController.java | 10 -
.../nms/v1_19_R3/entity/GhastController.java | 6 -
.../nms/v1_19_R3/entity/GiantController.java | 9 -
.../v1_19_R3/entity/GlowSquidController.java | 9 -
.../nms/v1_19_R3/entity/GoatController.java | 9 -
.../v1_19_R3/entity/GuardianController.java | 10 -
.../entity/GuardianElderController.java | 10 -
.../nms/v1_19_R3/entity/HoglinController.java | 10 -
.../nms/v1_19_R3/entity/HorseController.java | 12 -
.../entity/HorseDonkeyController.java | 13 -
.../v1_19_R3/entity/HorseMuleController.java | 13 -
.../entity/HorseSkeletonController.java | 13 -
.../entity/HorseZombieController.java | 13 -
.../nms/v1_19_R3/entity/HumanController.java | 3 -
.../v1_19_R3/entity/IllusionerController.java | 8 -
.../v1_19_R3/entity/IronGolemController.java | 9 -
.../nms/v1_19_R3/entity/LlamaController.java | 13 -
.../v1_19_R3/entity/MagmaCubeController.java | 13 -
.../v1_19_R3/entity/MobEntityController.java | 7 -
.../entity/MushroomCowController.java | 9 -
.../nms/v1_19_R3/entity/OcelotController.java | 10 -
.../nms/v1_19_R3/entity/PandaController.java | 9 -
.../nms/v1_19_R3/entity/ParrotController.java | 7 -
.../v1_19_R3/entity/PhantomController.java | 13 -
.../nms/v1_19_R3/entity/PigController.java | 10 -
.../v1_19_R3/entity/PigZombieController.java | 8 -
.../entity/PiglinBruteController.java | 9 -
.../nms/v1_19_R3/entity/PiglinController.java | 9 -
.../v1_19_R3/entity/PillagerController.java | 9 -
.../v1_19_R3/entity/PolarBearController.java | 7 -
.../v1_19_R3/entity/PufferFishController.java | 17 -
.../nms/v1_19_R3/entity/RabbitController.java | 11 -
.../v1_19_R3/entity/RavagerController.java | 9 -
.../nms/v1_19_R3/entity/SalmonController.java | 15 -
.../nms/v1_19_R3/entity/SheepController.java | 9 -
.../v1_19_R3/entity/ShulkerController.java | 11 -
.../v1_19_R3/entity/SilverfishController.java | 9 -
.../v1_19_R3/entity/SkeletonController.java | 9 -
.../entity/SkeletonStrayController.java | 9 -
.../entity/SkeletonWitherController.java | 9 -
.../nms/v1_19_R3/entity/SlimeController.java | 13 -
.../v1_19_R3/entity/SnifferController.java | 9 -
.../v1_19_R3/entity/SnowmanController.java | 9 -
.../nms/v1_19_R3/entity/SpiderController.java | 9 -
.../nms/v1_19_R3/entity/SquidController.java | 9 -
.../v1_19_R3/entity/StriderController.java | 8 -
.../v1_19_R3/entity/TadpoleController.java | 15 -
.../entity/TraderLlamaController.java | 11 -
.../entity/TropicalFishController.java | 16 -
.../nms/v1_19_R3/entity/TurtleController.java | 12 -
.../nms/v1_19_R3/entity/VexController.java | 7 -
.../v1_19_R3/entity/VillagerController.java | 16 -
.../v1_19_R3/entity/VindicatorController.java | 9 -
.../entity/WanderingTraderController.java | 14 -
.../nms/v1_19_R3/entity/WardenController.java | 9 -
.../nms/v1_19_R3/entity/WitchController.java | 9 -
.../nms/v1_19_R3/entity/WitherController.java | 7 -
.../nms/v1_19_R3/entity/WolfController.java | 9 -
.../nms/v1_19_R3/entity/ZoglinController.java | 9 -
.../nms/v1_19_R3/entity/ZombieController.java | 8 -
.../v1_19_R3/entity/ZombieHuskController.java | 8 -
.../entity/ZombieVillagerController.java | 8 -
.../nonliving/AreaEffectCloudController.java | 5 -
.../nonliving/BlockDisplayController.java | 6 -
.../entity/nonliving/BoatController.java | 21 -
.../entity/nonliving/ChestBoatController.java | 21 -
.../nonliving/DragonFireballController.java | 7 -
.../entity/nonliving/EggController.java | 6 -
.../nonliving/EnderCrystalController.java | 5 -
.../nonliving/EnderPearlController.java | 6 -
.../nonliving/EnderSignalController.java | 5 -
.../nonliving/EvokerFangsController.java | 5 -
.../nonliving/ExperienceOrbController.java | 5 -
.../nonliving/FallingBlockController.java | 7 -
.../entity/nonliving/FireworkController.java | 5 -
.../nonliving/FishingHookController.java | 5 -
.../nonliving/GlowItemFrameController.java | 5 -
.../nonliving/InteractionController.java | 5 -
.../entity/nonliving/ItemController.java | 6 -
.../nonliving/ItemDisplayController.java | 6 -
.../entity/nonliving/ItemFrameController.java | 5 -
.../nonliving/LargeFireballController.java | 7 -
.../entity/nonliving/LeashController.java | 5 -
.../entity/nonliving/LlamaSpitController.java | 6 -
.../entity/nonliving/MarkerController.java | 5 -
.../nonliving/MinecartChestController.java | 5 -
.../nonliving/MinecartCommandController.java | 5 -
.../nonliving/MinecartFurnaceController.java | 5 -
.../nonliving/MinecartHopperController.java | 4 -
.../nonliving/MinecartRideableController.java | 5 -
.../nonliving/MinecartSpawnerController.java | 4 -
.../nonliving/MinecartTNTController.java | 4 -
.../entity/nonliving/PaintingController.java | 5 -
.../nonliving/ShulkerBulletController.java | 5 -
.../nonliving/SmallFireballController.java | 6 -
.../entity/nonliving/SnowballController.java | 5 -
.../nonliving/SpectralArrowController.java | 5 -
.../entity/nonliving/TNTPrimedController.java | 5 -
.../nonliving/TextDisplayController.java | 5 -
.../nonliving/ThrownExpBottleController.java | 6 -
.../nonliving/ThrownPotionController.java | 6 -
.../nonliving/ThrownTridentController.java | 5 -
.../nonliving/TippedArrowController.java | 5 -
.../nonliving/WitherSkullController.java | 5 -
.../v1_19_R3/util/CitizensBlockBreaker.java | 9 -
.../v1_19_R3/util/CitizensEntityTracker.java | 11 -
.../util/EmptyAdvancementDataPlayer.java | 2 -
.../nms/v1_19_R3/util/EntityMoveControl.java | 8 -
.../nms/v1_19_R3/util/EntityNavigation.java | 28 --
.../v1_19_R3/util/EntityNodeEvaluator.java | 53 ---
.../nms/v1_19_R3/util/EntityPathfinder.java | 10 -
.../v1_19_R3/util/ForwardingNPCHolder.java | 1 -
.../citizensnpcs/nms/v1_19_R3/util/MobAI.java | 2 -
.../nms/v1_19_R3/util/NMSImpl.java | 164 --------
.../v1_19_R3/util/PitchableLookControl.java | 1 -
.../v1_19_R3/util/PlayerAnimationImpl.java | 3 -
.../nms/v1_20_R2/entity/AllayController.java | 10 -
.../v1_20_R2/entity/ArmorStandController.java | 6 -
.../v1_20_R2/entity/AxolotlController.java | 12 -
.../nms/v1_20_R2/entity/BatController.java | 8 -
.../nms/v1_20_R2/entity/BeeController.java | 7 -
.../nms/v1_20_R2/entity/BlazeController.java | 6 -
.../nms/v1_20_R2/entity/CamelController.java | 13 -
.../nms/v1_20_R2/entity/CatController.java | 9 -
.../v1_20_R2/entity/CaveSpiderController.java | 9 -
.../v1_20_R2/entity/ChickenController.java | 10 -
.../nms/v1_20_R2/entity/CodController.java | 16 -
.../nms/v1_20_R2/entity/CowController.java | 9 -
.../v1_20_R2/entity/CreeperController.java | 11 -
.../v1_20_R2/entity/DolphinController.java | 13 -
.../v1_20_R2/entity/DrownedController.java | 8 -
.../entity/EnderDragonController.java | 21 -
.../v1_20_R2/entity/EndermanController.java | 9 -
.../v1_20_R2/entity/EndermiteController.java | 9 -
.../nms/v1_20_R2/entity/EntityHumanNPC.java | 24 --
.../nms/v1_20_R2/entity/EvokerController.java | 8 -
.../nms/v1_20_R2/entity/FoxController.java | 9 -
.../nms/v1_20_R2/entity/FrogController.java | 10 -
.../nms/v1_20_R2/entity/GhastController.java | 6 -
.../nms/v1_20_R2/entity/GiantController.java | 9 -
.../v1_20_R2/entity/GlowSquidController.java | 9 -
.../nms/v1_20_R2/entity/GoatController.java | 9 -
.../v1_20_R2/entity/GuardianController.java | 10 -
.../entity/GuardianElderController.java | 10 -
.../nms/v1_20_R2/entity/HoglinController.java | 10 -
.../nms/v1_20_R2/entity/HorseController.java | 12 -
.../entity/HorseDonkeyController.java | 13 -
.../v1_20_R2/entity/HorseMuleController.java | 13 -
.../entity/HorseSkeletonController.java | 13 -
.../entity/HorseZombieController.java | 13 -
.../nms/v1_20_R2/entity/HumanController.java | 3 -
.../v1_20_R2/entity/IllusionerController.java | 8 -
.../v1_20_R2/entity/IronGolemController.java | 9 -
.../nms/v1_20_R2/entity/LlamaController.java | 13 -
.../v1_20_R2/entity/MagmaCubeController.java | 13 -
.../v1_20_R2/entity/MobEntityController.java | 7 -
.../entity/MushroomCowController.java | 9 -
.../nms/v1_20_R2/entity/OcelotController.java | 10 -
.../nms/v1_20_R2/entity/PandaController.java | 9 -
.../nms/v1_20_R2/entity/ParrotController.java | 7 -
.../v1_20_R2/entity/PhantomController.java | 13 -
.../nms/v1_20_R2/entity/PigController.java | 10 -
.../v1_20_R2/entity/PigZombieController.java | 8 -
.../entity/PiglinBruteController.java | 9 -
.../nms/v1_20_R2/entity/PiglinController.java | 9 -
.../v1_20_R2/entity/PillagerController.java | 9 -
.../v1_20_R2/entity/PolarBearController.java | 7 -
.../v1_20_R2/entity/PufferFishController.java | 17 -
.../nms/v1_20_R2/entity/RabbitController.java | 11 -
.../v1_20_R2/entity/RavagerController.java | 9 -
.../nms/v1_20_R2/entity/SalmonController.java | 15 -
.../nms/v1_20_R2/entity/SheepController.java | 9 -
.../v1_20_R2/entity/ShulkerController.java | 11 -
.../v1_20_R2/entity/SilverfishController.java | 9 -
.../v1_20_R2/entity/SkeletonController.java | 9 -
.../entity/SkeletonStrayController.java | 9 -
.../entity/SkeletonWitherController.java | 9 -
.../nms/v1_20_R2/entity/SlimeController.java | 13 -
.../v1_20_R2/entity/SnifferController.java | 9 -
.../v1_20_R2/entity/SnowmanController.java | 9 -
.../nms/v1_20_R2/entity/SpiderController.java | 9 -
.../nms/v1_20_R2/entity/SquidController.java | 9 -
.../v1_20_R2/entity/StriderController.java | 8 -
.../v1_20_R2/entity/TadpoleController.java | 15 -
.../entity/TraderLlamaController.java | 11 -
.../entity/TropicalFishController.java | 16 -
.../nms/v1_20_R2/entity/TurtleController.java | 12 -
.../nms/v1_20_R2/entity/VexController.java | 7 -
.../v1_20_R2/entity/VillagerController.java | 16 -
.../v1_20_R2/entity/VindicatorController.java | 9 -
.../entity/WanderingTraderController.java | 14 -
.../nms/v1_20_R2/entity/WardenController.java | 9 -
.../nms/v1_20_R2/entity/WitchController.java | 9 -
.../nms/v1_20_R2/entity/WitherController.java | 7 -
.../nms/v1_20_R2/entity/WolfController.java | 9 -
.../nms/v1_20_R2/entity/ZoglinController.java | 9 -
.../nms/v1_20_R2/entity/ZombieController.java | 8 -
.../v1_20_R2/entity/ZombieHuskController.java | 8 -
.../entity/ZombieVillagerController.java | 8 -
.../nonliving/AreaEffectCloudController.java | 5 -
.../nonliving/BlockDisplayController.java | 6 -
.../entity/nonliving/BoatController.java | 21 -
.../entity/nonliving/ChestBoatController.java | 21 -
.../nonliving/DragonFireballController.java | 7 -
.../entity/nonliving/EggController.java | 6 -
.../nonliving/EnderCrystalController.java | 5 -
.../nonliving/EnderPearlController.java | 6 -
.../nonliving/EnderSignalController.java | 5 -
.../nonliving/EvokerFangsController.java | 5 -
.../nonliving/ExperienceOrbController.java | 5 -
.../nonliving/FallingBlockController.java | 7 -
.../entity/nonliving/FireworkController.java | 5 -
.../nonliving/FishingHookController.java | 5 -
.../nonliving/GlowItemFrameController.java | 5 -
.../nonliving/InteractionController.java | 5 -
.../entity/nonliving/ItemController.java | 6 -
.../nonliving/ItemDisplayController.java | 6 -
.../entity/nonliving/ItemFrameController.java | 5 -
.../nonliving/LargeFireballController.java | 7 -
.../entity/nonliving/LeashController.java | 5 -
.../entity/nonliving/LlamaSpitController.java | 6 -
.../entity/nonliving/MarkerController.java | 5 -
.../nonliving/MinecartChestController.java | 5 -
.../nonliving/MinecartCommandController.java | 5 -
.../nonliving/MinecartFurnaceController.java | 5 -
.../nonliving/MinecartHopperController.java | 4 -
.../nonliving/MinecartRideableController.java | 5 -
.../nonliving/MinecartSpawnerController.java | 4 -
.../nonliving/MinecartTNTController.java | 4 -
.../entity/nonliving/PaintingController.java | 5 -
.../nonliving/ShulkerBulletController.java | 5 -
.../nonliving/SmallFireballController.java | 6 -
.../entity/nonliving/SnowballController.java | 5 -
.../nonliving/SpectralArrowController.java | 5 -
.../entity/nonliving/TNTPrimedController.java | 5 -
.../nonliving/TextDisplayController.java | 5 -
.../nonliving/ThrownExpBottleController.java | 6 -
.../nonliving/ThrownPotionController.java | 6 -
.../nonliving/ThrownTridentController.java | 5 -
.../nonliving/TippedArrowController.java | 5 -
.../nonliving/WitherSkullController.java | 5 -
.../nms/v1_20_R2/network/EmptyConnection.java | 1 -
.../v1_20_R2/util/CitizensBlockBreaker.java | 9 -
.../v1_20_R2/util/CitizensEntityTracker.java | 11 -
.../util/EmptyAdvancementDataPlayer.java | 2 -
.../nms/v1_20_R2/util/EntityMoveControl.java | 7 -
.../nms/v1_20_R2/util/EntityNavigation.java | 28 --
.../v1_20_R2/util/EntityNodeEvaluator.java | 54 ---
.../nms/v1_20_R2/util/EntityPathfinder.java | 12 -
.../v1_20_R2/util/ForwardingNPCHolder.java | 1 -
.../citizensnpcs/nms/v1_20_R2/util/MobAI.java | 2 -
.../nms/v1_20_R2/util/NMSImpl.java | 166 --------
.../v1_20_R2/util/PitchableLookControl.java | 1 -
.../v1_20_R2/util/PlayerAnimationImpl.java | 3 -
.../v1_8_R3/entity/ArmorStandController.java | 5 -
.../nms/v1_8_R3/entity/BatController.java | 6 -
.../nms/v1_8_R3/entity/BlazeController.java | 5 -
.../v1_8_R3/entity/CaveSpiderController.java | 9 -
.../nms/v1_8_R3/entity/ChickenController.java | 10 -
.../nms/v1_8_R3/entity/CowController.java | 9 -
.../nms/v1_8_R3/entity/CreeperController.java | 11 -
.../v1_8_R3/entity/EnderDragonController.java | 17 -
.../v1_8_R3/entity/EndermanController.java | 9 -
.../v1_8_R3/entity/EndermiteController.java | 9 -
.../nms/v1_8_R3/entity/EntityHumanNPC.java | 29 --
.../nms/v1_8_R3/entity/GhastController.java | 5 -
.../nms/v1_8_R3/entity/GiantController.java | 9 -
.../v1_8_R3/entity/GuardianController.java | 10 -
.../nms/v1_8_R3/entity/HorseController.java | 13 -
.../nms/v1_8_R3/entity/HumanController.java | 3 -
.../v1_8_R3/entity/IronGolemController.java | 9 -
.../v1_8_R3/entity/MagmaCubeController.java | 11 -
.../v1_8_R3/entity/MobEntityController.java | 7 -
.../v1_8_R3/entity/MushroomCowController.java | 9 -
.../nms/v1_8_R3/entity/OcelotController.java | 10 -
.../nms/v1_8_R3/entity/PigController.java | 10 -
.../v1_8_R3/entity/PigZombieController.java | 8 -
.../nms/v1_8_R3/entity/RabbitController.java | 10 -
.../nms/v1_8_R3/entity/SheepController.java | 9 -
.../v1_8_R3/entity/SilverfishController.java | 9 -
.../v1_8_R3/entity/SkeletonController.java | 9 -
.../nms/v1_8_R3/entity/SlimeController.java | 11 -
.../nms/v1_8_R3/entity/SnowmanController.java | 9 -
.../nms/v1_8_R3/entity/SpiderController.java | 9 -
.../nms/v1_8_R3/entity/SquidController.java | 9 -
.../v1_8_R3/entity/VillagerController.java | 12 -
.../nms/v1_8_R3/entity/WitchController.java | 9 -
.../nms/v1_8_R3/entity/WitherController.java | 5 -
.../nms/v1_8_R3/entity/WolfController.java | 10 -
.../nms/v1_8_R3/entity/ZombieController.java | 8 -
.../entity/nonliving/ArrowController.java | 4 -
.../entity/nonliving/BoatController.java | 29 --
.../entity/nonliving/EggController.java | 5 -
.../nonliving/EnderCrystalController.java | 4 -
.../nonliving/EnderPearlController.java | 5 -
.../nonliving/EnderSignalController.java | 4 -
.../nonliving/ExperienceOrbController.java | 4 -
.../nonliving/FallingBlockController.java | 6 -
.../entity/nonliving/FireworkController.java | 4 -
.../nonliving/FishingHookController.java | 4 -
.../entity/nonliving/ItemController.java | 5 -
.../entity/nonliving/ItemFrameController.java | 4 -
.../nonliving/LargeFireballController.java | 6 -
.../entity/nonliving/LeashController.java | 4 -
.../nonliving/MinecartChestController.java | 4 -
.../nonliving/MinecartCommandController.java | 4 -
.../nonliving/MinecartFurnaceController.java | 4 -
.../nonliving/MinecartHopperController.java | 3 -
.../nonliving/MinecartRideableController.java | 4 -
.../nonliving/MinecartSpawnerController.java | 3 -
.../nonliving/MinecartTNTController.java | 3 -
.../entity/nonliving/PaintingController.java | 4 -
.../nonliving/SmallFireballController.java | 5 -
.../entity/nonliving/SnowballController.java | 4 -
.../nonliving/SplashPotionController.java | 5 -
.../entity/nonliving/TNTPrimedController.java | 4 -
.../nonliving/ThrownExpBottleController.java | 5 -
.../nonliving/WitherSkullController.java | 4 -
.../v1_8_R3/util/CitizensBlockBreaker.java | 9 -
.../nms/v1_8_R3/util/NMSImpl.java | 111 ------
.../nms/v1_8_R3/util/PlayerAnimationImpl.java | 3 -
.../v1_8_R3/util/PlayerControllerMove.java | 5 -
.../nms/v1_8_R3/util/PlayerNavigation.java | 26 --
.../nms/v1_8_R3/util/PlayerPathfinder.java | 11 -
.../util/PlayerPathfinderAbstract.java | 1 -
.../v1_8_R3/util/PlayerPathfinderNormal.java | 21 -
.../v1_8_R3/util/PlayerlistTrackerEntry.java | 12 -
1454 files changed, 964 insertions(+), 14929 deletions(-)
diff --git a/main/src/main/java/net/citizensnpcs/Citizens.java b/main/src/main/java/net/citizensnpcs/Citizens.java
index ec3b8a40c..ee4d30118 100644
--- a/main/src/main/java/net/citizensnpcs/Citizens.java
+++ b/main/src/main/java/net/citizensnpcs/Citizens.java
@@ -102,7 +102,7 @@ public class Citizens extends JavaPlugin implements CitizensPlugin {
@Override
public OfflinePlayer getPlayer(BlockCommandSender sender) {
Entity entity = NMS.getSource(sender);
- return entity != null && entity instanceof OfflinePlayer ? (OfflinePlayer) entity : null;
+ return entity instanceof OfflinePlayer ? (OfflinePlayer) entity : null;
}
@Override
@@ -182,11 +182,9 @@ public class Citizens extends JavaPlugin implements CitizensPlugin {
if (type.equalsIgnoreCase("nbt")) {
saves = new NBTStorage(new File(folder, Setting.STORAGE_FILE.asString()), "Citizens NPC Storage");
}
-
if (saves == null) {
saves = new YamlStorage(new File(folder, Setting.STORAGE_FILE.asString()), "Citizens NPC Storage");
}
-
if (!saves.load())
return null;
@@ -195,8 +193,9 @@ public class Citizens extends JavaPlugin implements CitizensPlugin {
private void despawnNPCs(boolean save) {
for (NPCRegistry registry : Iterables.concat(Arrays.asList(npcRegistry), citizensBackedRegistries)) {
- if (registry == null)
+ if (registry == null) {
continue;
+ }
if (save) {
if (registry == npcRegistry) {
storeNPCs(false);
@@ -237,33 +236,27 @@ public class Citizens extends JavaPlugin implements CitizensPlugin {
@Override
public Iterable getNPCRegistries() {
- return new Iterable() {
+ return () -> new Iterator() {
+ Iterator stored;
+
@Override
- public Iterator iterator() {
- return new Iterator() {
- Iterator stored;
+ public boolean hasNext() {
+ return stored == null ? true : stored.hasNext();
+ }
- @Override
- public boolean hasNext() {
- return stored == null ? true : stored.hasNext();
- }
+ @Override
+ public NPCRegistry next() {
+ if (stored == null) {
+ stored = Iterables.concat(storedRegistries.values(), anonymousRegistries, citizensBackedRegistries)
+ .iterator();
+ return npcRegistry;
+ }
+ return stored.next();
+ }
- @Override
- public NPCRegistry next() {
- if (stored == null) {
- stored = Iterables
- .concat(storedRegistries.values(), anonymousRegistries, citizensBackedRegistries)
- .iterator();
- return npcRegistry;
- }
- return stored.next();
- }
-
- @Override
- public void remove() {
- throw new UnsupportedOperationException();
- }
- };
+ @Override
+ public void remove() {
+ throw new UnsupportedOperationException();
}
};
}
@@ -392,7 +385,6 @@ public class Citizens extends JavaPlugin implements CitizensPlugin {
Bukkit.getPluginManager().disablePlugin(this);
return;
}
-
registerScriptHelpers();
saves = createStorage(getDataFolder());
@@ -402,15 +394,12 @@ public class Citizens extends JavaPlugin implements CitizensPlugin {
Bukkit.getPluginManager().disablePlugin(this);
return;
}
-
locationLookup = new LocationLookup();
locationLookup.runTaskTimer(CitizensAPI.getPlugin(), 0, 5);
npcRegistry = new CitizensNPCRegistry(saves, "citizens");
traitFactory = new CitizensTraitFactory(this);
- traitFactory.registerTrait(TraitInfo.create(ShopTrait.class).withSupplier(() -> {
- return new ShopTrait(shops);
- }));
+ traitFactory.registerTrait(TraitInfo.create(ShopTrait.class).withSupplier(() -> new ShopTrait(shops)));
selector = new NPCSelector(this);
Bukkit.getPluginManager().registerEvents(new EventListen(), this);
@@ -426,7 +415,6 @@ public class Citizens extends JavaPlugin implements CitizensPlugin {
if (papi != null && papi.isEnabled()) {
new CitizensPlaceholders(selector).register();
}
-
setupEconomy();
registerCommands();
@@ -506,12 +494,11 @@ public class Citizens extends JavaPlugin implements CitizensPlugin {
@Override
public void setDefaultNPCDataStore(NPCDataStore store) {
- if (store == null) {
+ if (store == null)
throw new IllegalArgumentException("must be non-null");
- }
despawnNPCs(true);
- this.saves = store;
- this.npcRegistry = new CitizensNPCRegistry(saves, "citizens-global-" + UUID.randomUUID().toString());
+ saves = store;
+ npcRegistry = new CitizensNPCRegistry(saves, "citizens-global-" + UUID.randomUUID().toString());
saves.loadInto(npcRegistry);
}
@@ -614,7 +601,6 @@ public class Citizens extends JavaPlugin implements CitizensPlugin {
}
}
}
-
saves.loadInto(npcRegistry);
shops.load();
diff --git a/main/src/main/java/net/citizensnpcs/CitizensPlaceholders.java b/main/src/main/java/net/citizensnpcs/CitizensPlaceholders.java
index 6c10adee9..06d5154cc 100644
--- a/main/src/main/java/net/citizensnpcs/CitizensPlaceholders.java
+++ b/main/src/main/java/net/citizensnpcs/CitizensPlaceholders.java
@@ -55,7 +55,6 @@ public class CitizensPlaceholders extends PlaceholderExpansion {
b.getEntity().getLocation().distanceSquared(location)));
return closestNPC.isPresent() ? Integer.toString(closestNPC.get().getId()) : "";
}
-
return null;
}
diff --git a/main/src/main/java/net/citizensnpcs/EventListen.java b/main/src/main/java/net/citizensnpcs/EventListen.java
index 5a21a1174..be36e334d 100644
--- a/main/src/main/java/net/citizensnpcs/EventListen.java
+++ b/main/src/main/java/net/citizensnpcs/EventListen.java
@@ -120,11 +120,11 @@ import net.citizensnpcs.util.Util;
public class EventListen implements Listener {
private Listener chunkEventListener;
- private final SkinUpdateTracker skinUpdateTracker;
+ private SkinUpdateTracker skinUpdateTracker;
private final ListMultimap toRespawn = ArrayListMultimap.create(64, 4);
EventListen() {
- this.skinUpdateTracker = new SkinUpdateTracker();
+ skinUpdateTracker = new SkinUpdateTracker();
try {
Class.forName("org.bukkit.event.world.EntitiesLoadEvent");
Bukkit.getPluginManager().registerEvents(new Listener() {
@@ -140,7 +140,6 @@ public class EventListen implements Listener {
}, CitizensAPI.getPlugin());
} catch (Throwable ex) {
}
-
try {
Class.forName("org.bukkit.event.entity.EntityTransformEvent");
Bukkit.getPluginManager().registerEvents(new Listener() {
@@ -156,23 +155,19 @@ public class EventListen implements Listener {
}, CitizensAPI.getPlugin());
} catch (Throwable ex) {
}
-
Class> kbc = null;
try {
kbc = Class.forName("com.destroystokyo.paper.event.entity.EntityKnockbackByEntityEvent");
} catch (ClassNotFoundException e) {
}
-
if (kbc != null) {
registerKnockbackEvent(kbc);
}
-
Class> pbeac = null;
try {
pbeac = Class.forName("io.papermc.paper.event.entity.EntityPushedByEntityAttackEvent");
} catch (ClassNotFoundException e) {
}
-
if (pbeac != null) {
registerPushEvent(pbeac);
}
@@ -184,8 +179,9 @@ public class EventListen implements Listener {
int limit = Setting.DEFAULT_NPC_LIMIT.asInt();
int maxChecks = Setting.MAX_NPC_LIMIT_CHECKS.asInt();
for (int i = maxChecks; i >= 0; i--) {
- if (!event.getCreator().hasPermission("citizens.npc.limit." + i))
+ if (!event.getCreator().hasPermission("citizens.npc.limit." + i)) {
continue;
+ }
limit = i;
break;
}
@@ -215,7 +211,6 @@ public class EventListen implements Listener {
if (Messaging.isDebugging() && Setting.DEBUG_CHUNK_LOADS.asBoolean() && toRespawn.containsKey(coord)) {
new Exception("CITIZENS CHUNK LOAD DEBUG " + coord).printStackTrace();
}
-
if (event instanceof Cancellable) {
runnable.run();
} else {
@@ -231,7 +226,7 @@ public class EventListen implements Listener {
}
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
- public void onChunkUnload(final ChunkUnloadEvent event) {
+ public void onChunkUnload(ChunkUnloadEvent event) {
if (chunkEventListener != null)
return;
@@ -290,7 +285,6 @@ public class EventListen implements Listener {
}
return;
}
-
event.setCancelled(npc.isProtected());
if (event instanceof EntityDamageByEntityEvent) {
@@ -306,7 +300,6 @@ public class EventListen implements Listener {
if (npc == null)
return;
}
-
NPCLeftClickEvent leftClickEvent = new NPCLeftClickEvent(npc, damager);
Bukkit.getPluginManager().callEvent(leftClickEvent);
if (npc.hasTrait(CommandTrait.class)) {
@@ -321,15 +314,14 @@ public class EventListen implements Listener {
@EventHandler(ignoreCancelled = true)
public void onEntityDeath(EntityDeathEvent event) {
- final NPC npc = CitizensAPI.getNPCRegistry().getNPC(event.getEntity());
+ NPC npc = CitizensAPI.getNPCRegistry().getNPC(event.getEntity());
if (npc == null)
return;
if (!npc.data().get(NPC.Metadata.DROPS_ITEMS, false)) {
event.getDrops().clear();
}
-
- final Location location = npc.getStoredLocation();
+ Location location = npc.getStoredLocation();
Bukkit.getPluginManager().callEvent(new NPCDeathEvent(npc, event));
npc.despawn(DespawnReason.DEATH);
@@ -438,7 +430,6 @@ public class EventListen implements Listener {
if (npc.isSpawned() && npc.getEntity().getType() == EntityType.PLAYER) {
onNPCPlayerLinkToPlayer(event);
}
-
ClickRedirectTrait crt = npc.getTraitNullable(ClickRedirectTrait.class);
if (crt != null) {
HologramTrait ht = crt.getRedirectNPC().getTraitNullable(HologramTrait.class);
@@ -468,7 +459,6 @@ public class EventListen implements Listener {
}
return;
}
-
Bukkit.getScheduler().scheduleSyncDelayedTask(CitizensAPI.getPlugin(), () -> {
if (!tracker.isValid() || !event.getPlayer().isValid())
return;
@@ -488,12 +478,15 @@ public class EventListen implements Listener {
@EventHandler(ignoreCancelled = true)
public void onNPCSeenByPlayer(NPCSeenByPlayerEvent event) {
NPC npc = event.getNPC();
+ PlayerFilter pf = npc.getTraitNullable(PlayerFilter.class);
+ if (pf != null) {
+ event.setCancelled(pf.onSeenByPlayer(event.getPlayer()));
+ }
ClickRedirectTrait crt = npc.getTraitNullable(ClickRedirectTrait.class);
if (crt != null) {
npc = crt.getRedirectNPC();
}
-
- PlayerFilter pf = npc.getTraitNullable(PlayerFilter.class);
+ pf = npc.getTraitNullable(PlayerFilter.class);
if (pf != null) {
event.setCancelled(pf.onSeenByPlayer(event.getPlayer()));
}
@@ -561,27 +554,22 @@ public class EventListen implements Listener {
if (event.getPlayer().getItemInHand().getType() == Material.NAME_TAG) {
rightClickEvent.setCancelled(npc.isProtected());
}
-
Bukkit.getPluginManager().callEvent(rightClickEvent);
if (rightClickEvent.isCancelled()) {
event.setCancelled(true);
return;
}
-
if (npc.hasTrait(CommandTrait.class)) {
npc.getTraitNullable(CommandTrait.class).dispatch(player, CommandTrait.Hand.RIGHT);
rightClickEvent.setDelayedCancellation(true);
}
-
if (npc.hasTrait(ShopTrait.class)) {
npc.getTraitNullable(ShopTrait.class).onRightClick(player);
rightClickEvent.setDelayedCancellation(true);
}
-
if (rightClickEvent.isDelayedCancellation()) {
event.setCancelled(true);
}
-
if (event.isCancelled()) {
if (SUPPORT_STOP_USE_ITEM) {
try {
@@ -617,7 +605,7 @@ public class EventListen implements Listener {
// recalculate player NPCs the first time a player moves and every time
// a player moves a certain distance from their last position.
@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
- public void onPlayerMove(final PlayerMoveEvent event) {
+ public void onPlayerMove(PlayerMoveEvent event) {
skinUpdateTracker.onPlayerMove(event.getPlayer());
}
@@ -630,7 +618,6 @@ public class EventListen implements Listener {
event.getPlayer().leaveVehicle();
}
}
-
skinUpdateTracker.removePlayer(event.getPlayer().getUniqueId());
CitizensAPI.getLocationLookup().onQuit(event);
}
@@ -641,7 +628,7 @@ public class EventListen implements Listener {
}
@EventHandler(ignoreCancelled = true)
- public void onPlayerTeleport(final PlayerTeleportEvent event) {
+ public void onPlayerTeleport(PlayerTeleportEvent event) {
NPC npc = CitizensAPI.getNPCRegistry().getNPC(event.getPlayer());
if (event.getCause() == TeleportCause.PLUGIN && npc != null && !npc.data().has("citizens-force-teleporting")
&& Setting.PLAYER_TELEPORT_DELAY.asTicks() > 0) {
@@ -652,7 +639,6 @@ public class EventListen implements Listener {
npc.data().remove("citizens-force-teleporting");
}, Setting.PLAYER_TELEPORT_DELAY.asTicks());
}
-
skinUpdateTracker.updatePlayer(event.getPlayer(), 15, true);
}
@@ -673,9 +659,9 @@ public class EventListen implements Listener {
public void onPotionSplashEvent(PotionSplashEvent event) {
for (LivingEntity entity : event.getAffectedEntities()) {
NPC npc = CitizensAPI.getNPCRegistry().getNPC(entity);
- if (npc == null)
+ if (npc == null) {
continue;
-
+ }
if (npc.isProtected()) {
event.setIntensity(entity, 0);
}
@@ -683,7 +669,7 @@ public class EventListen implements Listener {
}
@EventHandler(ignoreCancelled = true)
- public void onProjectileHit(final ProjectileHitEvent event) {
+ public void onProjectileHit(ProjectileHitEvent event) {
if (!(event.getEntity() instanceof FishHook))
return;
NMS.removeHookIfNecessary((FishHook) event.getEntity());
@@ -696,7 +682,6 @@ public class EventListen implements Listener {
cancel();
return;
}
-
NMS.removeHookIfNecessary((FishHook) event.getEntity());
}
}.runTaskTimer(CitizensAPI.getPlugin(), 0, 1);
@@ -735,7 +720,7 @@ public class EventListen implements Listener {
}
@EventHandler(ignoreCancelled = true)
- public void onVehicleEnter(final VehicleEnterEvent event) {
+ public void onVehicleEnter(VehicleEnterEvent event) {
NPC npc = CitizensAPI.getNPCRegistry().getNPC(event.getVehicle());
NPC rider = CitizensAPI.getNPCRegistry().getNPC(event.getEntered());
if (npc == null) {
@@ -743,10 +728,8 @@ public class EventListen implements Listener {
|| event.getVehicle() instanceof Minecart)) {
event.setCancelled(true);
}
-
return;
}
-
if (rider != null || !(npc instanceof Vehicle))
return;
@@ -758,8 +741,10 @@ public class EventListen implements Listener {
@EventHandler(ignoreCancelled = true)
public void onWorldLoad(WorldLoadEvent event) {
for (ChunkCoord chunk : toRespawn.keySet()) {
- if (!chunk.worldUUID.equals(event.getWorld().getUID()) || !event.getWorld().isChunkLoaded(chunk.x, chunk.z))
+ if (!chunk.worldUUID.equals(event.getWorld().getUID())
+ || !event.getWorld().isChunkLoaded(chunk.x, chunk.z)) {
continue;
+ }
respawnAllFromCoord(chunk, event);
}
}
@@ -767,9 +752,9 @@ public class EventListen implements Listener {
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
public void onWorldUnload(WorldUnloadEvent event) {
for (NPC npc : getAllNPCs()) {
- if (npc == null || !npc.isSpawned() || !npc.getEntity().getWorld().equals(event.getWorld()))
+ if (npc == null || !npc.isSpawned() || !npc.getEntity().getWorld().equals(event.getWorld())) {
continue;
-
+ }
boolean despawned = npc.despawn(DespawnReason.WORLD_UNLOAD);
if (event.isCancelled() || !despawned) {
for (ChunkCoord coord : toRespawn.keySet()) {
@@ -780,7 +765,6 @@ public class EventListen implements Listener {
event.setCancelled(true);
return;
}
-
if (npc.isSpawned()) {
toRespawn.put(new ChunkCoord(npc.getEntity().getLocation()), npc);
Messaging.debug("Despawned", npc, "due to world unload at", event.getWorld().getName());
@@ -829,9 +813,7 @@ public class EventListen implements Listener {
Method getAcceleration = clazz.getMethod("getAcceleration");
handlers.register(new RegisteredListener(new Listener() {
}, (listener, event) -> {
- if (NPCPushEvent.getHandlerList().getRegisteredListeners().length == 0)
- return;
- if (event.getClass() != clazz)
+ if (NPCPushEvent.getHandlerList().getRegisteredListeners().length == 0 || event.getClass() != clazz)
return;
try {
Entity entity = (Entity) getEntity.invoke(event);
@@ -858,26 +840,22 @@ public class EventListen implements Listener {
if (ids.size() > 0) {
Messaging.debug("Respawning all NPCs at", coord, "due to", event);
}
-
for (int i = 0; i < ids.size(); i++) {
NPC npc = ids.get(i);
if (npc.getOwningRegistry().getById(npc.getId()) != npc) {
Messaging.idebug(() -> "Prevented deregistered NPC from respawning " + npc);
continue;
}
-
if (npc.isSpawned()) {
Messaging.idebug(() -> "Can't respawn NPC " + npc + ": already spawned");
continue;
}
-
boolean success = spawn(npc);
if (!success) {
ids.remove(i--);
Messaging.idebug(() -> Joiner.on(' ').join("Couldn't respawn", npc, "during", event, "at", coord));
continue;
}
-
Messaging.idebug(() -> Joiner.on(' ').join("Spawned", npc, "during", event, "at", coord));
}
for (NPC npc : ids) {
@@ -895,16 +873,16 @@ public class EventListen implements Listener {
}
void unloadNPCs(ChunkEvent event, List entities) {
- final List toDespawn = Lists.newArrayList();
+ List toDespawn = Lists.newArrayList();
for (Entity entity : entities) {
NPC npc = CitizensAPI.getNPCRegistry().getNPC(entity);
// XXX : npc#isSpawned() checks entity valid status which is now inconsistent on chunk unload between
// different server software (e.g. Paper and Spigot), so check for npc.getEntity() == null instead.
- if (npc == null || npc.getEntity() == null)
+ if (npc == null || npc.getEntity() == null) {
continue;
+ }
toDespawn.add(npc);
}
-
if (toDespawn.isEmpty())
return;
@@ -918,7 +896,6 @@ public class EventListen implements Listener {
toRespawn.put(coord, npc);
continue;
}
-
((Cancellable) event).setCancelled(true);
Messaging.debug("Cancelled chunk unload at", coord);
respawnAllFromCoord(coord, event);
@@ -930,7 +907,6 @@ public class EventListen implements Listener {
if (Messaging.isDebugging() && Setting.DEBUG_CHUNK_LOADS.asBoolean()) {
new Exception("CITIZENS CHUNK UNLOAD DEBUG " + coord).printStackTrace();
}
-
if (loadChunk) {
Messaging.idebug(() -> Joiner.on(' ').join("Loading chunk in 10 ticks due to forced chunk load at", coord));
Bukkit.getScheduler().scheduleSyncDelayedTask(CitizensAPI.getPlugin(), () -> {
diff --git a/main/src/main/java/net/citizensnpcs/Metrics.java b/main/src/main/java/net/citizensnpcs/Metrics.java
index 056927201..fc52c1d08 100644
--- a/main/src/main/java/net/citizensnpcs/Metrics.java
+++ b/main/src/main/java/net/citizensnpcs/Metrics.java
@@ -91,7 +91,7 @@ public class Metrics {
metricsBase = new MetricsBase("bukkit", serverUUID, serviceId, enabled, this::appendPlatformData,
this::appendServiceData, submitDataTask -> Bukkit.getScheduler().runTask(plugin, submitDataTask),
plugin::isEnabled, (message, error) -> this.plugin.getLogger().log(Level.WARNING, message, error),
- (message) -> this.plugin.getLogger().log(Level.INFO, message), logErrors, logSentData,
+ message -> this.plugin.getLogger().log(Level.INFO, message), logErrors, logSentData,
logResponseStatusText);
}
@@ -156,10 +156,9 @@ public class Metrics {
protected JsonObjectBuilder.JsonObject getChartData() throws Exception {
JsonObjectBuilder valuesBuilder = new JsonObjectBuilder();
Map map = callable.call();
- if (map == null || map.isEmpty()) {
+ if (map == null || map.isEmpty())
// Null = skip the chart
return null;
- }
boolean allSkipped = true;
for (Map.Entry entry : map.entrySet()) {
if (entry.getValue().length == 0) {
@@ -169,10 +168,9 @@ public class Metrics {
allSkipped = false;
valuesBuilder.appendField(entry.getKey(), entry.getValue());
}
- if (allSkipped) {
+ if (allSkipped)
// Null = skip the chart
return null;
- }
return new JsonObjectBuilder().appendField("values", valuesBuilder.build()).build();
}
}
@@ -198,10 +196,9 @@ public class Metrics {
protected JsonObjectBuilder.JsonObject getChartData() throws Exception {
JsonObjectBuilder valuesBuilder = new JsonObjectBuilder();
Map map = callable.call();
- if (map == null || map.isEmpty()) {
+ if (map == null || map.isEmpty())
// Null = skip the chart
return null;
- }
boolean allSkipped = true;
for (Map.Entry entry : map.entrySet()) {
if (entry.getValue() == 0) {
@@ -211,10 +208,9 @@ public class Metrics {
allSkipped = false;
valuesBuilder.appendField(entry.getKey(), entry.getValue());
}
- if (allSkipped) {
+ if (allSkipped)
// Null = skip the chart
return null;
- }
return new JsonObjectBuilder().appendField("values", valuesBuilder.build()).build();
}
}
@@ -224,9 +220,8 @@ public class Metrics {
private final String chartId;
protected CustomChart(String chartId) {
- if (chartId == null) {
+ if (chartId == null)
throw new IllegalArgumentException("chartId must not be null");
- }
this.chartId = chartId;
}
@@ -238,10 +233,9 @@ public class Metrics {
builder.appendField("chartId", chartId);
try {
JsonObjectBuilder.JsonObject data = getChartData();
- if (data == null) {
+ if (data == null)
// If the data is null we don't send the chart.
return null;
- }
builder.appendField("data", data);
} catch (Throwable t) {
if (logErrors) {
@@ -274,10 +268,9 @@ public class Metrics {
public JsonObjectBuilder.JsonObject getChartData() throws Exception {
JsonObjectBuilder valuesBuilder = new JsonObjectBuilder();
Map> map = callable.call();
- if (map == null || map.isEmpty()) {
+ if (map == null || map.isEmpty())
// Null = skip the chart
return null;
- }
boolean reallyAllSkipped = true;
for (Map.Entry> entryValues : map.entrySet()) {
JsonObjectBuilder valueBuilder = new JsonObjectBuilder();
@@ -291,10 +284,9 @@ public class Metrics {
valuesBuilder.appendField(entryValues.getKey(), valueBuilder.build());
}
}
- if (reallyAllSkipped) {
+ if (reallyAllSkipped)
// Null = skip the chart
return null;
- }
return new JsonObjectBuilder().appendField("values", valuesBuilder.build()).build();
}
}
@@ -339,9 +331,8 @@ public class Metrics {
* @return A reference to this object.
*/
public JsonObjectBuilder appendField(String key, int[] values) {
- if (values == null) {
+ if (values == null)
throw new IllegalArgumentException("JSON values must not be null");
- }
String escapedValues = Arrays.stream(values).mapToObj(String::valueOf).collect(Collectors.joining(","));
appendFieldUnescaped(key, "[" + escapedValues + "]");
return this;
@@ -357,9 +348,8 @@ public class Metrics {
* @return A reference to this object.
*/
public JsonObjectBuilder appendField(String key, JsonObject object) {
- if (object == null) {
+ if (object == null)
throw new IllegalArgumentException("JSON object must not be null");
- }
appendFieldUnescaped(key, object.toString());
return this;
}
@@ -374,9 +364,8 @@ public class Metrics {
* @return A reference to this object.
*/
public JsonObjectBuilder appendField(String key, JsonObject[] values) {
- if (values == null) {
+ if (values == null)
throw new IllegalArgumentException("JSON values must not be null");
- }
String escapedValues = Arrays.stream(values).map(JsonObject::toString).collect(Collectors.joining(","));
appendFieldUnescaped(key, "[" + escapedValues + "]");
return this;
@@ -392,9 +381,8 @@ public class Metrics {
* @return A reference to this object.
*/
public JsonObjectBuilder appendField(String key, String value) {
- if (value == null) {
+ if (value == null)
throw new IllegalArgumentException("JSON value must not be null");
- }
appendFieldUnescaped(key, "\"" + escape(value) + "\"");
return this;
}
@@ -409,9 +397,8 @@ public class Metrics {
* @return A reference to this object.
*/
public JsonObjectBuilder appendField(String key, String[] values) {
- if (values == null) {
+ if (values == null)
throw new IllegalArgumentException("JSON values must not be null");
- }
String escapedValues = Arrays.stream(values).map(value -> "\"" + escape(value) + "\"")
.collect(Collectors.joining(","));
appendFieldUnescaped(key, "[" + escapedValues + "]");
@@ -427,12 +414,10 @@ public class Metrics {
* The escaped value of the field.
*/
private void appendFieldUnescaped(String key, String escapedValue) {
- if (builder == null) {
+ if (builder == null)
throw new IllegalStateException("JSON has already been built");
- }
- if (key == null) {
+ if (key == null)
throw new IllegalArgumentException("JSON key must not be null");
- }
if (hasAtLeastOneField) {
builder.append(",");
}
@@ -458,9 +443,8 @@ public class Metrics {
* @return The built JSON string.
*/
public JsonObject build() {
- if (builder == null) {
+ if (builder == null)
throw new IllegalStateException("JSON has already been built");
- }
JsonObject object = new JsonObject(builder.append("}").toString());
builder = null;
return object;
@@ -499,7 +483,7 @@ public class Metrics {
* @return The escaped value.
*/
private static String escape(String value) {
- final StringBuilder builder = new StringBuilder();
+ StringBuilder builder = new StringBuilder();
for (int i = 0; i < value.length(); i++) {
char c = value.charAt(i);
if (c == '"') {
@@ -605,7 +589,7 @@ public class Metrics {
}
public void addCustomChart(CustomChart chart) {
- this.customCharts.add(chart);
+ customCharts.add(chart);
}
/** Checks that the class was properly relocated. */
@@ -615,16 +599,14 @@ public class Metrics {
|| !System.getProperty("bstats.relocatecheck").equals("false")) {
// Maven's Relocate is clever and changes strings, too. So we have to use this little
// "trick" ... :D
- final String defaultPackage = new String(
- new byte[] { 'o', 'r', 'g', '.', 'b', 's', 't', 'a', 't', 's' });
- final String examplePackage = new String(
+ String defaultPackage = new String(new byte[] { 'o', 'r', 'g', '.', 'b', 's', 't', 'a', 't', 's' });
+ String examplePackage = new String(
new byte[] { 'y', 'o', 'u', 'r', '.', 'p', 'a', 'c', 'k', 'a', 'g', 'e' });
// We want to make sure no one just copy & pastes the example and uses the wrong package
// names
if (MetricsBase.class.getPackage().getName().startsWith(defaultPackage)
- || MetricsBase.class.getPackage().getName().startsWith(examplePackage)) {
+ || MetricsBase.class.getPackage().getName().startsWith(examplePackage))
throw new IllegalStateException("bStats Metrics class has not been relocated correctly!");
- }
}
}
@@ -661,7 +643,7 @@ public class Metrics {
}
private void startSubmitting() {
- final Runnable submitTask = () -> {
+ Runnable submitTask = () -> {
if (!enabled || !checkServiceEnabledSupplier.get()) {
// Submitting data or service is disabled
scheduler.shutdown();
@@ -670,7 +652,7 @@ public class Metrics {
if (submitTaskConsumer != null) {
submitTaskConsumer.accept(this::submitData);
} else {
- this.submitData();
+ submitData();
}
};
// Many servers tend to restart at a fixed time at xx:00 which causes an uneven distribution
@@ -688,9 +670,9 @@ public class Metrics {
}
private void submitData() {
- final JsonObjectBuilder baseJsonBuilder = new JsonObjectBuilder();
+ JsonObjectBuilder baseJsonBuilder = new JsonObjectBuilder();
appendPlatformDataConsumer.accept(baseJsonBuilder);
- final JsonObjectBuilder serviceJsonBuilder = new JsonObjectBuilder();
+ JsonObjectBuilder serviceJsonBuilder = new JsonObjectBuilder();
appendServiceDataConsumer.accept(serviceJsonBuilder);
JsonObjectBuilder.JsonObject[] chartData = customCharts.stream()
.map(customChart -> customChart.getRequestJsonObject(errorLogger, logErrors))
@@ -721,10 +703,9 @@ public class Metrics {
* The string to gzip.
* @return The gzipped string.
*/
- private static byte[] compress(final String str) throws IOException {
- if (str == null) {
+ private static byte[] compress(String str) throws IOException {
+ if (str == null)
return null;
- }
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
try (GZIPOutputStream gzip = new GZIPOutputStream(outputStream)) {
gzip.write(str.getBytes(StandardCharsets.UTF_8));
@@ -733,11 +714,11 @@ public class Metrics {
}
/** The version of the Metrics class. */
- public static final String METRICS_VERSION = "3.0.0";
+ public static String METRICS_VERSION = "3.0.0";
- private static final String REPORT_URL = "https://bStats.org/api/v2/data/%s";
+ private static String REPORT_URL = "https://bStats.org/api/v2/data/%s";
- private static final ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1,
+ private static ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1,
task -> new Thread(task, "bStats-Metrics"));
}
@@ -762,10 +743,9 @@ public class Metrics {
protected JsonObjectBuilder.JsonObject getChartData() throws Exception {
JsonObjectBuilder valuesBuilder = new JsonObjectBuilder();
Map map = callable.call();
- if (map == null || map.isEmpty()) {
+ if (map == null || map.isEmpty())
// Null = skip the chart
return null;
- }
boolean allSkipped = true;
for (Map.Entry entry : map.entrySet()) {
if (entry.getValue() == 0) {
@@ -775,10 +755,9 @@ public class Metrics {
allSkipped = false;
valuesBuilder.appendField(entry.getKey(), entry.getValue());
}
- if (allSkipped) {
+ if (allSkipped)
// Null = skip the chart
return null;
- }
return new JsonObjectBuilder().appendField("values", valuesBuilder.build()).build();
}
}
@@ -804,10 +783,9 @@ public class Metrics {
protected JsonObjectBuilder.JsonObject getChartData() throws Exception {
JsonObjectBuilder valuesBuilder = new JsonObjectBuilder();
Map map = callable.call();
- if (map == null || map.isEmpty()) {
+ if (map == null || map.isEmpty())
// Null = skip the chart
return null;
- }
for (Map.Entry entry : map.entrySet()) {
valuesBuilder.appendField(entry.getKey(), new int[] { entry.getValue() });
}
@@ -835,10 +813,9 @@ public class Metrics {
@Override
protected JsonObjectBuilder.JsonObject getChartData() throws Exception {
String value = callable.call();
- if (value == null || value.isEmpty()) {
+ if (value == null || value.isEmpty())
// Null = skip the chart
return null;
- }
return new JsonObjectBuilder().appendField("value", value).build();
}
}
@@ -863,10 +840,9 @@ public class Metrics {
@Override
protected JsonObjectBuilder.JsonObject getChartData() throws Exception {
int value = callable.call();
- if (value == 0) {
+ if (value == 0)
// Null = skip the chart
return null;
- }
return new JsonObjectBuilder().appendField("value", value).build();
}
}
diff --git a/main/src/main/java/net/citizensnpcs/NPCNeedsRespawnEvent.java b/main/src/main/java/net/citizensnpcs/NPCNeedsRespawnEvent.java
index d510ab016..12bb93e79 100644
--- a/main/src/main/java/net/citizensnpcs/NPCNeedsRespawnEvent.java
+++ b/main/src/main/java/net/citizensnpcs/NPCNeedsRespawnEvent.java
@@ -11,7 +11,7 @@ public class NPCNeedsRespawnEvent extends NPCEvent {
public NPCNeedsRespawnEvent(NPC npc, Location at) {
super(npc);
- this.spawn = at;
+ spawn = at;
}
@Override
@@ -27,5 +27,5 @@ public class NPCNeedsRespawnEvent extends NPCEvent {
return handlers;
}
- private static final HandlerList handlers = new HandlerList();
+ private static HandlerList handlers = new HandlerList();
}
diff --git a/main/src/main/java/net/citizensnpcs/ProtocolLibListener.java b/main/src/main/java/net/citizensnpcs/ProtocolLibListener.java
index 42dfe2cbc..405b94aa5 100644
--- a/main/src/main/java/net/citizensnpcs/ProtocolLibListener.java
+++ b/main/src/main/java/net/citizensnpcs/ProtocolLibListener.java
@@ -48,6 +48,8 @@ import net.citizensnpcs.api.npc.NPC;
import net.citizensnpcs.api.trait.trait.MobType;
import net.citizensnpcs.api.util.Messaging;
import net.citizensnpcs.npc.ai.NPCHolder;
+import net.citizensnpcs.trait.ClickRedirectTrait;
+import net.citizensnpcs.trait.HologramTrait;
import net.citizensnpcs.trait.MirrorTrait;
import net.citizensnpcs.trait.RotationTrait;
import net.citizensnpcs.trait.RotationTrait.PacketRotationSession;
@@ -55,15 +57,15 @@ import net.citizensnpcs.util.NMS;
import net.citizensnpcs.util.SkinProperty;
public class ProtocolLibListener implements Listener {
- private final Class> flagsClass;
- private final ProtocolManager manager;
+ private Class> flagsClass;
+ private ProtocolManager manager;
private final Map mirrorTraits = Maps.newConcurrentMap();
- private final Citizens plugin;
+ private Citizens plugin;
private final Map rotationTraits = Maps.newConcurrentMap();
public ProtocolLibListener(Citizens plugin) {
this.plugin = plugin;
- this.manager = ProtocolLibrary.getProtocolManager();
+ manager = ProtocolLibrary.getProtocolManager();
flagsClass = MinecraftReflection.getMinecraftClass("RelativeMovement", "world.entity.RelativeMovement",
"EnumPlayerTeleportFlags", "PacketPlayOutPosition$EnumPlayerTeleportFlags",
"network.protocol.game.PacketPlayOutPosition$EnumPlayerTeleportFlags");
@@ -72,50 +74,59 @@ public class ProtocolLibListener implements Listener {
@Override
public void onPacketSending(PacketEvent event) {
NPC npc = getNPCFromPacket(event);
- if (npc == null || !npc.data().has(NPC.Metadata.HOLOGRAM_LINE_SUPPLIER))
+ if (npc == null)
return;
- Function hvs = npc.data().get(NPC.Metadata.HOLOGRAM_LINE_SUPPLIER);
- int version = manager.getProtocolVersion(event.getPlayer());
PacketContainer packet = event.getPacket();
- if (version < 761) {
- List wwo = packet.getWatchableCollectionModifier().readSafely(0);
- if (wwo == null)
- return;
-
+ int version = manager.getProtocolVersion(event.getPlayer());
+ if (npc.data().has(NPC.Metadata.HOLOGRAM_FOR) || npc.data().has(NPC.Metadata.HOLOGRAM_LINE_SUPPLIER)) {
+ Function hvs = npc.data().get(NPC.Metadata.HOLOGRAM_LINE_SUPPLIER);
+ Object fakeName = null;
+ if (hvs != null) {
+ String suppliedName = hvs.apply(event.getPlayer());
+ fakeName = version <= 340 ? suppliedName
+ : Optional.of(Messaging.minecraftComponentFromRawMessage(suppliedName));
+ }
+ boolean sneaking = npc.getOrAddTrait(ClickRedirectTrait.class).getRedirectNPC()
+ .getOrAddTrait(HologramTrait.class).isHologramSneaking(npc, event.getPlayer());
boolean delta = false;
- String text = hvs.apply(event.getPlayer());
- for (WrappedWatchableObject wo : wwo) {
- if (wo.getIndex() != 2)
- continue;
- if (version <= 340) {
- wo.setValue(text);
- } else {
- wo.setValue(Optional.of(Messaging.minecraftComponentFromRawMessage(text)));
+
+ if (version < 761) {
+ List wwo = packet.getWatchableCollectionModifier().readSafely(0);
+ if (wwo == null)
+ return;
+
+ for (WrappedWatchableObject wo : wwo) {
+ if (fakeName != null && wo.getIndex() == 2) {
+ wo.setValue(fakeName);
+ delta = true;
+ } else if (sneaking && wo.getIndex() == 0) {
+ byte b = (byte) (((Number) wo.getValue()).byteValue() | 0x02);
+ wo.setValue(b);
+ delta = true;
+ }
}
- delta = true;
- break;
- }
+ if (delta) {
+ packet.getWatchableCollectionModifier().write(0, wwo);
+ }
+ } else {
+ List wdvs = packet.getDataValueCollectionModifier().readSafely(0);
+ if (wdvs == null)
+ return;
- if (delta) {
- packet.getWatchableCollectionModifier().write(0, wwo);
- }
- } else {
- List wdvs = packet.getDataValueCollectionModifier().readSafely(0);
- if (wdvs == null)
- return;
-
- boolean delta = false;
- String text = hvs.apply(event.getPlayer());
- for (WrappedDataValue wdv : wdvs) {
- if (wdv.getIndex() != 2)
- continue;
- wdv.setValue(Optional.of(Messaging.minecraftComponentFromRawMessage(text)));
- break;
- }
-
- if (delta) {
- packet.getDataValueCollectionModifier().write(0, wdvs);
+ for (WrappedDataValue wdv : wdvs) {
+ if (fakeName != null && wdv.getIndex() == 2) {
+ wdv.setValue(fakeName);
+ delta = true;
+ } else if (sneaking && wdv.getIndex() == 0) {
+ byte b = (byte) (((Number) wdv.getValue()).byteValue() | 0x02);
+ wdv.setValue(b);
+ delta = true;
+ }
+ }
+ if (delta) {
+ packet.getDataValueCollectionModifier().write(0, wdvs);
+ }
}
}
}
@@ -130,7 +141,6 @@ public class ProtocolLibListener implements Listener {
uuid -> mirrorTraits.get(uuid));
return;
}
-
List list = event.getPacket().getPlayerInfoDataLists().readSafely(0);
if (list == null)
return;
@@ -153,13 +163,11 @@ public class ProtocolLibListener implements Listener {
wgp = WrappedGameProfile.fromPlayer(event.getPlayer());
playerName = WrappedChatComponent.fromText(event.getPlayer().getDisplayName());
}
-
if (trait.mirrorName()) {
list.set(i, new PlayerInfoData(wgp.withId(npcInfo.getProfile().getId()), npcInfo.getLatency(),
npcInfo.getGameMode(), playerName));
continue;
}
-
Collection textures = playerProfile.getProperties().get("textures");
if (textures == null || textures.size() == 0)
continue;
@@ -174,7 +182,6 @@ public class ProtocolLibListener implements Listener {
}
changed = true;
}
-
if (changed) {
event.getPacket().getPlayerInfoDataLists().write(0, list);
}
@@ -202,7 +209,6 @@ public class ProtocolLibListener implements Listener {
}
return;
}
-
RotationTrait trait = rotationTraits.get(eid);
if (trait == null)
return;
@@ -215,10 +221,8 @@ public class ProtocolLibListener implements Listener {
PacketType type = event.getPacketType();
if (type == Server.ENTITY_HEAD_ROTATION) {
packet.getBytes().write(0, degToByte(session.getHeadYaw()));
- } else if (type == Server.ENTITY_LOOK) {
- packet.getBytes().write(0, degToByte(session.getBodyYaw()));
- packet.getBytes().write(1, degToByte(session.getPitch()));
- } else if (type == Server.ENTITY_MOVE_LOOK || type == Server.REL_ENTITY_MOVE_LOOK) {
+ } else if (type == Server.ENTITY_LOOK || type == Server.ENTITY_MOVE_LOOK
+ || type == Server.REL_ENTITY_MOVE_LOOK) {
packet.getBytes().write(0, degToByte(session.getBodyYaw()));
packet.getBytes().write(1, degToByte(session.getPitch()));
} else if (type == Server.POSITION) {
@@ -231,7 +235,6 @@ public class ProtocolLibListener implements Listener {
packet.getFloat().write(0, session.getBodyYaw());
packet.getFloat().write(1, session.getPitch());
}
-
session.onPacketOverwritten();
Messaging.debug("OVERWRITTEN " + type + " " + packet.getHandle());
}
@@ -258,7 +261,6 @@ public class ProtocolLibListener implements Listener {
}
return null;
}
-
return entity instanceof NPCHolder ? ((NPCHolder) entity).getNPC() : null;
}
@@ -278,7 +280,6 @@ public class ProtocolLibListener implements Listener {
rotationTraits.put(event.getNPC().getEntity().getEntityId(),
event.getNPC().getTraitNullable(RotationTrait.class));
}
-
if (event.getNPC().hasTrait(MirrorTrait.class)
&& event.getNPC().getOrAddTrait(MobType.class).getType() == EntityType.PLAYER) {
mirrorTraits.put(event.getNPC().getEntity().getUniqueId(),
diff --git a/main/src/main/java/net/citizensnpcs/Settings.java b/main/src/main/java/net/citizensnpcs/Settings.java
index cd47fd3d3..97781235d 100644
--- a/main/src/main/java/net/citizensnpcs/Settings.java
+++ b/main/src/main/java/net/citizensnpcs/Settings.java
@@ -147,7 +147,7 @@ public class Settings {
DEFAULT_TEXT("npc.default.talk-close.text.0", "Hi, I'm !") {
@Override
public void loadFromKey(DataKey root) {
- List list = new ArrayList();
+ List list = new ArrayList<>();
for (DataKey key : root.getRelative("npc.default.talk-close.text").getSubKeys()) {
list.add(key.getString(""));
}
@@ -290,7 +290,7 @@ public class Settings {
if (migrate.contains(".")) {
this.migrate = migrate;
} else {
- this.comments = migrate;
+ comments = migrate;
}
this.path = path;
this.value = value;
@@ -316,9 +316,8 @@ public class Settings {
}
public int asInt() {
- if (value instanceof String) {
+ if (value instanceof String)
return Integer.parseInt(value.toString());
- }
return ((Number) value).intValue();
}
diff --git a/main/src/main/java/net/citizensnpcs/StoredShops.java b/main/src/main/java/net/citizensnpcs/StoredShops.java
index 3bec9b9a8..268d4f566 100644
--- a/main/src/main/java/net/citizensnpcs/StoredShops.java
+++ b/main/src/main/java/net/citizensnpcs/StoredShops.java
@@ -38,9 +38,8 @@ public class StoredShops {
}
public NPCShop getShop(String name) {
- if (npcShops.containsKey(name)) {
+ if (npcShops.containsKey(name))
return npcShops.get(name);
- }
return getGlobalShop(name);
}
diff --git a/main/src/main/java/net/citizensnpcs/commands/AdminCommands.java b/main/src/main/java/net/citizensnpcs/commands/AdminCommands.java
index fa42d6c06..2a7f6bd01 100644
--- a/main/src/main/java/net/citizensnpcs/commands/AdminCommands.java
+++ b/main/src/main/java/net/citizensnpcs/commands/AdminCommands.java
@@ -20,7 +20,7 @@ import net.citizensnpcs.util.StringHelper;
@Requirements
public class AdminCommands {
private final Citizens plugin;
- private final Map reloadTimeouts = new WeakHashMap();
+ private final Map reloadTimeouts = new WeakHashMap<>();
public AdminCommands(Citizens plugin) {
this.plugin = plugin;
@@ -51,7 +51,6 @@ public class AdminCommands {
return;
}
}
-
Messaging.sendTr(sender, Messages.CITIZENS_RELOADING);
try {
plugin.reload();
diff --git a/main/src/main/java/net/citizensnpcs/commands/EditorCommands.java b/main/src/main/java/net/citizensnpcs/commands/EditorCommands.java
index d9c919f81..5b5505a45 100644
--- a/main/src/main/java/net/citizensnpcs/commands/EditorCommands.java
+++ b/main/src/main/java/net/citizensnpcs/commands/EditorCommands.java
@@ -60,7 +60,6 @@ public class EditorCommands {
player.acceptConversationInput(args.getJoinedStrings(1));
return;
}
-
Editor.enterOrLeave(player, editor);
}
diff --git a/main/src/main/java/net/citizensnpcs/commands/NPCCommandSelector.java b/main/src/main/java/net/citizensnpcs/commands/NPCCommandSelector.java
index a16d2371d..b9d0d698e 100644
--- a/main/src/main/java/net/citizensnpcs/commands/NPCCommandSelector.java
+++ b/main/src/main/java/net/citizensnpcs/commands/NPCCommandSelector.java
@@ -34,7 +34,7 @@ public class NPCCommandSelector extends NumericPrompt {
public NPCCommandSelector(Callback callback, List possible) {
this.callback = callback;
- this.choices = possible;
+ choices = possible;
}
@Override
@@ -86,7 +86,7 @@ public class NPCCommandSelector extends NumericPrompt {
}
public static void start(Callback callback, Conversable player, List possible) {
- final Conversation conversation = new ConversationFactory(CitizensAPI.getPlugin()).withLocalEcho(false)
+ Conversation conversation = new ConversationFactory(CitizensAPI.getPlugin()).withLocalEcho(false)
.withEscapeSequence("exit").withModality(false)
.withFirstPrompt(new NPCCommandSelector(callback, possible)).buildConversation(player);
conversation.begin();
@@ -100,7 +100,6 @@ public class NPCCommandSelector extends NumericPrompt {
return;
} catch (IllegalArgumentException e) {
}
-
Integer id = Ints.tryParse(raw);
if (id != null) {
callback.run(npcRegistry.getById(id));
@@ -112,12 +111,12 @@ public class NPCCommandSelector extends NumericPrompt {
if (args.hasValueFlag("range")) {
range = Math.abs(args.getFlagDouble("range"));
}
-
for (NPC test : npcRegistry) {
if (test.getName().equalsIgnoreCase(name)) {
if (range > 0 && test.isSpawned()
- && !Util.locationWithinRange(args.getSenderLocation(), test.getEntity().getLocation(), range))
+ && !Util.locationWithinRange(args.getSenderLocation(), test.getEntity().getLocation(), range)) {
continue;
+ }
possible.add(test);
}
}
diff --git a/main/src/main/java/net/citizensnpcs/commands/NPCCommands.java b/main/src/main/java/net/citizensnpcs/commands/NPCCommands.java
index 26f471cdb..cb7c84206 100644
--- a/main/src/main/java/net/citizensnpcs/commands/NPCCommands.java
+++ b/main/src/main/java/net/citizensnpcs/commands/NPCCommands.java
@@ -187,7 +187,6 @@ public class NPCCommands {
} else {
npc.data().setPersistent(NPC.Metadata.ACTIVATION_RANGE, range);
}
-
Messaging.sendTr(sender, Messages.ACTIVATION_RANGE_SET, range);
}
@@ -202,8 +201,8 @@ public class NPCCommands {
max = 2,
permission = "citizens.npc.age")
public void age(CommandContext args, CommandSender sender, NPC npc) throws CommandException {
- if (!npc.isSpawned() || (!(npc.getEntity() instanceof Ageable) && !(npc.getEntity() instanceof Zombie)
- && !npc.getEntity().getType().name().equals("TADPOLE")))
+ if (!npc.isSpawned() || !(npc.getEntity() instanceof Ageable) && !(npc.getEntity() instanceof Zombie)
+ && !npc.getEntity().getType().name().equals("TADPOLE"))
throw new CommandException(Messages.MOBTYPE_CANNOT_BE_AGED, npc.getName());
Age trait = npc.getOrAddTrait(Age.class);
boolean toggleLock = args.hasFlag('l');
@@ -233,7 +232,6 @@ public class NPCCommands {
} else
throw new CommandException(Messages.INVALID_AGE);
}
-
trait.setAge(age);
}
@@ -290,12 +288,10 @@ public class NPCCommands {
Messaging.sendTr(sender, Messages.ANCHOR_ADDED);
} else
throw new CommandException(Messages.ANCHOR_ALREADY_EXISTS, save);
- } else {
- if (trait.addAnchor(save, args.getSenderLocation())) {
- Messaging.sendTr(sender, Messages.ANCHOR_ADDED);
- } else
- throw new CommandException(Messages.ANCHOR_ALREADY_EXISTS, save);
- }
+ } else if (trait.addAnchor(save, args.getSenderLocation())) {
+ Messaging.sendTr(sender, Messages.ANCHOR_ADDED);
+ } else
+ throw new CommandException(Messages.ANCHOR_ALREADY_EXISTS, save);
} else if (assume != null) {
if (assume.isEmpty())
throw new CommandException(Messages.INVALID_ANCHOR_NAME);
@@ -307,9 +303,9 @@ public class NPCCommands {
} else if (remove != null) {
if (remove.isEmpty())
throw new CommandException(Messages.INVALID_ANCHOR_NAME);
- if (trait.removeAnchor(trait.getAnchor(remove)))
+ if (trait.removeAnchor(trait.getAnchor(remove))) {
Messaging.sendTr(sender, Messages.ANCHOR_REMOVED);
- else
+ } else
throw new CommandException(Messages.ANCHOR_MISSING, remove);
} else if (!args.hasFlag('a')) {
Paginator paginator = new Paginator().header("Anchors").console(sender instanceof ConsoleCommandSender);
@@ -329,13 +325,10 @@ public class NPCCommands {
paginator.addLine(line);
}
}
-
int page = args.getInteger(1, 1);
- if (!paginator.sendPage(sender, page)) {
+ if (!paginator.sendPage(sender, page))
throw new CommandException(Messages.COMMAND_PAGE_MISSING, page);
- }
}
-
// Assume Player's position
if (!args.hasFlag('a'))
return;
@@ -409,7 +402,6 @@ public class NPCCommands {
} else if (Setting.DEFAULT_BLOCK_BREAKER_RADIUS.asDouble() > 0) {
cfg.radius(Setting.DEFAULT_BLOCK_BREAKER_RADIUS.asDouble());
}
-
if (npc.getEntity() instanceof InventoryHolder) {
cfg.blockBreaker((block, itemstack) -> {
org.bukkit.inventory.Inventory inventory = ((InventoryHolder) npc.getEntity()).getInventory();
@@ -421,7 +413,6 @@ public class NPCCommands {
}
});
}
-
BlockBreaker breaker = npc.getBlockBreaker(args.getSenderTargetBlockLocation().getBlock(), cfg);
npc.getDefaultGoalController().addBehavior(StatusMapper.singleUse(breaker), 1);
}
@@ -497,12 +488,10 @@ public class NPCCommands {
if (args.hasFlag('s') && hand != CommandTrait.Hand.BOTH) {
hand = hand == CommandTrait.Hand.LEFT ? CommandTrait.Hand.SHIFT_LEFT : CommandTrait.Hand.SHIFT_RIGHT;
}
-
List perms = Lists.newArrayList();
if (permissions != null) {
perms.addAll(Arrays.asList(permissions.split(",")));
}
-
if (command.toLowerCase().startsWith("npc select"))
throw new CommandException("npc select not currently supported within commands. Use --id instead");
@@ -556,9 +545,8 @@ public class NPCCommands {
Messaging.sendTr(sender, Messages.COMMAND_TEMPORARY_PERMISSIONS_SET,
Joiner.on(' ').join(temporaryPermissions));
} else if (action.equalsIgnoreCase("cost")) {
- if (args.argsLength() == 2) {
+ if (args.argsLength() == 2)
throw new CommandException(Messages.COMMAND_MISSING_COST);
- }
if (args.argsLength() == 4) {
commands.setCost(args.getDouble(2), args.getInteger(3));
Messaging.sendTr(sender, Messages.COMMAND_INDIVIDUAL_COST_SET,
@@ -568,9 +556,8 @@ public class NPCCommands {
Messaging.sendTr(sender, Messages.COMMAND_COST_SET, args.getDouble(2));
}
} else if (action.equalsIgnoreCase("expcost")) {
- if (args.argsLength() == 2) {
+ if (args.argsLength() == 2)
throw new CommandException(Messages.COMMAND_MISSING_COST);
- }
if (args.argsLength() == 4) {
commands.setExperienceCost(args.getInteger(2), args.getInteger(3));
Messaging.sendTr(sender, Messages.COMMAND_INDIVIDUAL_EXPERIENCE_COST_SET,
@@ -592,10 +579,10 @@ public class NPCCommands {
if (!(sender instanceof Player))
throw new CommandException(CommandMessages.MUST_BE_INGAME);
if (args.argsLength() == 2) {
- InventoryMenu.createSelfRegistered(new ItemRequirementGUI(commands)).present(((Player) sender));
+ InventoryMenu.createSelfRegistered(new ItemRequirementGUI(commands)).present((Player) sender);
} else {
InventoryMenu.createSelfRegistered(new ItemRequirementGUI(commands, args.getInteger(2)))
- .present(((Player) sender));
+ .present((Player) sender);
}
} else if (action.equalsIgnoreCase("errormsg")) {
CommandTraitError which = Util.matchEnum(CommandTraitError.values(), args.getString(2));
@@ -603,9 +590,8 @@ public class NPCCommands {
throw new CommandException(Messages.NPC_COMMAND_INVALID_ERROR_MESSAGE,
Util.listValuesPretty(CommandTraitError.values()));
commands.setCustomErrorMessage(which, args.getString(3));
- } else {
+ } else
throw new CommandUsageException();
- }
}
@Command(
@@ -629,14 +615,14 @@ public class NPCCommands {
max = 1,
flags = "myno")
public void controllable(CommandContext args, CommandSender sender, NPC npc) throws CommandException {
- if ((npc.isSpawned() && !sender.hasPermission(
- "citizens.npc.controllable." + npc.getEntity().getType().name().toLowerCase().replace("_", "")))
+ if (npc.isSpawned()
+ && !sender.hasPermission(
+ "citizens.npc.controllable." + npc.getEntity().getType().name().toLowerCase().replace("_", ""))
|| !sender.hasPermission("citizens.npc.controllable"))
throw new NoPermissionsException();
if (!npc.hasTrait(Controllable.class)) {
npc.addTrait(new Controllable(false));
}
-
Controllable trait = npc.getOrAddTrait(Controllable.class);
boolean enabled = trait.toggle();
if (args.hasFlag('y')) {
@@ -644,7 +630,6 @@ public class NPCCommands {
} else if (args.hasFlag('n')) {
enabled = trait.setEnabled(false);
}
-
trait.setOwnerRequired(args.hasFlag('o'));
String key = enabled ? Messages.CONTROLLABLE_SET : Messages.CONTROLLABLE_REMOVED;
Messaging.sendTr(sender, key, npc.getName());
@@ -670,14 +655,12 @@ public class NPCCommands {
if (!copy.getRawName().equals(name)) {
copy.setName(name);
}
-
if (copy.getOrAddTrait(Spawned.class).shouldSpawn() && args.getSenderLocation() != null) {
Location location = args.getSenderLocation();
location.getChunk().load();
copy.teleport(location, TeleportCause.COMMAND);
copy.getOrAddTrait(CurrentLocation.class).setLocation(location);
}
-
CommandSenderCreateNPCEvent event = sender instanceof Player
? new PlayerCloneNPCEvent((Player) sender, npc, copy)
: new CommandSenderCloneNPCEvent(sender, npc, copy);
@@ -685,11 +668,11 @@ public class NPCCommands {
if (event.isCancelled()) {
event.getNPC().destroy();
String reason = "Couldn't create NPC.";
- if (!event.getCancelReason().isEmpty())
+ if (!event.getCancelReason().isEmpty()) {
reason += " Reason: " + event.getCancelReason();
+ }
throw new CommandException(reason);
}
-
Messaging.sendTr(sender, Messages.NPC_COPIED, npc.getName());
selector.select(sender, copy);
history.add(sender, new CreateNPCHistoryItem(copy));
@@ -711,19 +694,16 @@ public class NPCCommands {
@Flag("template") String templateName, @Flag("registry") String registryName) throws CommandException {
String name = args.getJoinedStrings(1).trim();
if (args.hasValueFlag("type")) {
- if (type == null) {
+ if (type == null)
throw new CommandException(Messaging.tr(Messages.NPC_CREATE_INVALID_MOBTYPE, args.getFlag("type")));
- } else if (!EntityControllers.controllerExistsForType(type)) {
+ else if (!EntityControllers.controllerExistsForType(type))
throw new CommandException(Messaging.tr(Messages.NPC_CREATE_MISSING_MOBTYPE, args.getFlag("type")));
- }
}
-
int nameLength = SpigotUtil.getMaxNameLength(type);
if (Placeholders.replace(Messaging.parseComponents(name), sender, npc).length() > nameLength) {
Messaging.sendErrorTr(sender, Messages.NPC_NAME_TOO_LONG, nameLength);
name = name.substring(0, nameLength);
}
-
if (name.length() == 0)
throw new CommandException();
@@ -743,53 +723,44 @@ public class NPCCommands {
Messaging.send(sender, "An in-memory registry has been created named [[" + registryName + "]].");
}
}
-
if (args.hasFlag('t') || temporaryTicks != null) {
registry = temporaryRegistry;
}
-
if (item != null) {
ItemStack stack = Util.parseItemStack(null, item);
npc = registry.createNPCUsingItem(type, name, stack);
} else {
npc = registry.createNPC(type, name);
}
-
String msg = "Created [[" + npc.getName() + "]] (ID [[" + npc.getId() + "]])";
if (args.hasFlag('b')) {
msg += " as a baby";
npc.getOrAddTrait(Age.class).setAge(-24000);
}
-
if (args.hasFlag('s')) {
npc.data().set(NPC.Metadata.SILENT, true);
}
-
if (nameplate != null) {
npc.data().set(NPC.Metadata.NAMEPLATE_VISIBLE,
nameplate.equalsIgnoreCase("hover") ? nameplate.toLowerCase() : Boolean.parseBoolean(nameplate));
}
-
if (!Setting.SERVER_OWNS_NPCS.asBoolean()) {
npc.getOrAddTrait(Owner.class).setOwner(sender);
}
-
if (temporaryTicks != null) {
- final NPC temp = npc;
+ NPC temp = npc;
Bukkit.getScheduler().scheduleSyncDelayedTask(CitizensAPI.getPlugin(), () -> {
if (temporaryRegistry.getByUniqueId(temp.getUniqueId()) == temp) {
temp.destroy();
}
}, temporaryTicks);
}
-
npc.getOrAddTrait(MobType.class).setType(type);
if (args.hasFlag('p')) {
npc.addTrait(PacketNPC.class);
}
-
Location spawnLoc = args.getSenderLocation();
CommandSenderCreateNPCEvent event = sender instanceof Player ? new PlayerCreateNPCEvent((Player) sender, npc)
@@ -798,63 +769,57 @@ public class NPCCommands {
if (event.isCancelled()) {
npc.destroy();
String reason = "Couldn't create NPC.";
- if (!event.getCancelReason().isEmpty())
+ if (!event.getCancelReason().isEmpty()) {
reason += " Reason: " + event.getCancelReason();
+ }
throw new CommandException(reason);
}
-
if (at != null) {
spawnLoc = at;
spawnLoc.getChunk().load();
}
-
if (spawnLoc == null) {
npc.destroy();
throw new CommandException(Messages.INVALID_SPAWN_LOCATION);
}
-
if (args.hasFlag('c')) {
spawnLoc = Util.getCenterLocation(spawnLoc.getBlock());
}
-
if (!args.hasFlag('u')) {
npc.spawn(spawnLoc, SpawnReason.CREATE);
}
-
if (traits != null) {
Iterable parts = Splitter.on(',').trimResults().split(traits);
StringBuilder builder = new StringBuilder();
for (String tr : parts) {
Trait trait = CitizensAPI.getTraitFactory().getTrait(tr);
- if (trait == null)
+ if (trait == null) {
continue;
+ }
npc.addTrait(trait);
builder.append(StringHelper.wrap(tr) + ", ");
}
if (builder.length() > 0) {
builder.delete(builder.length() - 2, builder.length());
}
-
msg += " with traits " + builder.toString();
}
-
if (templateName != null) {
Iterable parts = Splitter.on(',').trimResults().split(templateName);
StringBuilder builder = new StringBuilder();
for (String part : parts) {
Template template = Template.byName(part);
- if (template == null)
+ if (template == null) {
continue;
+ }
template.apply(npc);
builder.append(StringHelper.wrap(part) + ", ");
}
if (builder.length() > 0) {
builder.delete(builder.length() - 2, builder.length());
}
-
msg += " with templates " + builder.toString();
}
-
selector.select(sender, npc);
history.add(sender, new CreateNPCHistoryItem(npc));
Messaging.send(sender, msg + '.');
@@ -896,7 +861,7 @@ public class NPCCommands {
max = 1,
permission = "citizens.npc.deselect")
@Requirements
- public void deselect(CommandContext args, final CommandSender sender, final NPC npc) {
+ public void deselect(CommandContext args, CommandSender sender, NPC npc) {
selector.deselect(sender);
Messaging.sendTr(sender, Messages.DESELECTED_NPC);
}
@@ -910,19 +875,17 @@ public class NPCCommands {
max = 2,
permission = "citizens.npc.despawn")
@Requirements
- public void despawn(final CommandContext args, final CommandSender sender, NPC npc) throws CommandException {
+ public void despawn(CommandContext args, CommandSender sender, NPC npc) throws CommandException {
NPCCommandSelector.Callback callback = npc1 -> {
- if (npc1 == null) {
+ if (npc1 == null)
throw new CommandException(Messages.NO_NPC_WITH_ID_FOUND, args.getString(1));
- }
npc1.getOrAddTrait(Spawned.class).setSpawned(false);
npc1.despawn(DespawnReason.REMOVAL);
Messaging.sendTr(sender, Messages.NPC_DESPAWNED, npc1.getName());
};
if (npc == null || args.argsLength() == 2) {
- if (args.argsLength() < 2) {
+ if (args.argsLength() < 2)
throw new CommandException(CommandMessages.MUST_HAVE_SELECTED);
- }
NPCCommandSelector.startWithCallback(callback, CitizensAPI.getNPCRegistry(), sender, args,
args.getString(1));
} else {
@@ -1024,13 +987,11 @@ public class NPCCommands {
Messaging.sendTr(sender, Messages.FOLLOW_MARGIN_SET, npc.getName(), margin);
return;
}
-
trait.setProtect(protect);
String name = sender.getName();
if (args.argsLength() > 1) {
name = args.getString(1);
}
-
OfflinePlayer player = Bukkit.getOfflinePlayer(name);
if (!player.hasPlayedBefore() && !player.isOnline()) {
NPCCommandSelector.Callback callback = followingNPC -> {
@@ -1048,7 +1009,6 @@ public class NPCCommands {
args.getString(1));
return;
}
-
boolean following = explicit == null ? !trait.isEnabled() : explicit;
trait.follow(following ? player.getPlayer() : null);
Messaging.sendTr(sender, following ? Messages.FOLLOW_SET : Messages.FOLLOW_UNSET, npc.getName(),
@@ -1098,7 +1058,6 @@ public class NPCCommands {
Messaging.sendTr(sender, Messages.GLOWING_COLOR_SET, npc.getName(), color + Util.prettyEnum(color));
return;
}
-
npc.data().setPersistent(NPC.Metadata.GLOWING, !npc.data().get(NPC.Metadata.GLOWING, false));
boolean glowing = npc.data().get(NPC.Metadata.GLOWING);
Messaging.sendTr(sender, glowing ? Messages.GLOWING_SET : Messages.GLOWING_UNSET, npc.getName());
@@ -1143,15 +1102,17 @@ public class NPCCommands {
@Command(
aliases = { "npc" },
- usage = "hologram add [text] | set [line #] [text] | remove [line #] | clear | lineheight [height] | margintop [line #] [margin] | marginbottom [line #] [margin]",
+ usage = "hologram add [text] | set [line #] [text] | remove [line #] | clear | lineheight [height] | viewrange [range] | margintop [line #] [margin] | marginbottom [line #] [margin]",
desc = "Controls NPC hologram text",
modifiers = { "hologram" },
min = 1,
max = -1,
permission = "citizens.npc.hologram")
- public void hologram(CommandContext args, CommandSender sender, NPC npc, @Arg(
- value = 1,
- completions = { "add", "set", "remove", "clear", "lineheight", "margintop", "marginbottom" }) String action,
+ public void hologram(CommandContext args, CommandSender sender, NPC npc,
+ @Arg(
+ value = 1,
+ completions = { "add", "set", "remove", "clear", "lineheight", "viewrange", "margintop",
+ "marginbottom" }) String action,
@Arg(value = 2, completionsProvider = HologramTrait.TabCompletions.class) String secondCompletion)
throws CommandException {
HologramTrait trait = npc.getOrAddTrait(HologramTrait.class);
@@ -1165,39 +1126,38 @@ public class NPCCommands {
Messaging.send(sender, output);
return;
}
-
if (action.equalsIgnoreCase("set")) {
- if (args.argsLength() == 2) {
+ if (args.argsLength() == 2)
throw new CommandException(Messages.HOLOGRAM_INVALID_LINE);
- }
int idx = Math.max(0, args.getInteger(2));
- if (idx >= trait.getLines().size()) {
+ if (idx >= trait.getLines().size())
throw new CommandException(Messages.HOLOGRAM_INVALID_LINE);
- }
- if (args.argsLength() == 3) {
+ if (args.argsLength() == 3)
throw new CommandException(Messages.HOLOGRAM_TEXT_MISSING);
- }
trait.setLine(idx, args.getJoinedStrings(3));
Messaging.sendTr(sender, Messages.HOLOGRAM_LINE_SET, idx, args.getJoinedStrings(3));
+ } else if (action.equalsIgnoreCase("viewrange")) {
+ if (args.argsLength() == 2)
+ throw new CommandUsageException();
+
+ trait.setViewRange(args.getInteger(2));
+ Messaging.sendTr(sender, Messages.HOLOGRAM_VIEW_RANGE_SET, npc.getName(), args.getInteger(2));
} else if (action.equalsIgnoreCase("add")) {
- if (args.argsLength() == 2) {
+ if (args.argsLength() == 2)
throw new CommandException(Messages.HOLOGRAM_TEXT_MISSING);
- }
trait.addLine(args.getJoinedStrings(2));
Messaging.sendTr(sender, Messages.HOLOGRAM_LINE_ADD, args.getJoinedStrings(2));
} else if (action.equalsIgnoreCase("remove")) {
- if (args.argsLength() == 2) {
+ if (args.argsLength() == 2)
throw new CommandException(Messages.HOLOGRAM_INVALID_LINE);
- }
int idx = Math.max(0, args.getInteger(2));
- if (idx >= trait.getLines().size()) {
+ if (idx >= trait.getLines().size())
throw new CommandException(Messages.HOLOGRAM_INVALID_LINE);
- }
trait.removeLine(idx);
Messaging.sendTr(sender, Messages.HOLOGRAM_LINE_REMOVED, idx);
@@ -1205,32 +1165,35 @@ public class NPCCommands {
trait.clear();
Messaging.sendTr(sender, Messages.HOLOGRAM_CLEARED);
} else if (action.equalsIgnoreCase("lineheight")) {
+ if (args.argsLength() == 2)
+ throw new CommandUsageException();
+
trait.setLineHeight(args.getDouble(2));
Messaging.sendTr(sender, Messages.HOLOGRAM_LINE_HEIGHT_SET, args.getDouble(2));
} else if (action.equalsIgnoreCase("margintop")) {
- if (args.argsLength() == 2) {
+ if (args.argsLength() == 2)
throw new CommandException(Messages.HOLOGRAM_INVALID_LINE);
- }
+
int idx = Math.max(0, args.getInteger(2));
- if (idx >= trait.getLines().size()) {
+ if (idx >= trait.getLines().size())
throw new CommandException(Messages.HOLOGRAM_INVALID_LINE);
- }
- if (args.argsLength() == 3) {
+
+ if (args.argsLength() == 3)
throw new CommandException(Messages.HOLOGRAM_MARGIN_MISSING);
- }
+
trait.setMargin(idx, "top", args.getDouble(3));
Messaging.sendTr(sender, Messages.HOLOGRAM_MARGIN_SET, idx, "top", args.getDouble(3));
} else if (action.equalsIgnoreCase("marginbottom")) {
- if (args.argsLength() == 2) {
+ if (args.argsLength() == 2)
throw new CommandException(Messages.HOLOGRAM_INVALID_LINE);
- }
+
int idx = Math.max(0, args.getInteger(2));
- if (idx >= trait.getLines().size()) {
+ if (idx >= trait.getLines().size())
throw new CommandException(Messages.HOLOGRAM_INVALID_LINE);
- }
- if (args.argsLength() == 3) {
+
+ if (args.argsLength() == 3)
throw new CommandException(Messages.HOLOGRAM_MARGIN_MISSING);
- }
+
trait.setMargin(idx, "bottom", args.getDouble(3));
Messaging.sendTr(sender, Messages.HOLOGRAM_MARGIN_SET, idx, "bottom", args.getDouble(3));
}
@@ -1296,9 +1259,8 @@ public class NPCCommands {
public void horse(CommandContext args, CommandSender sender, NPC npc,
@Flag({ "color", "colour" }) Horse.Color color, @Flag("style") Horse.Style style) throws CommandException {
EntityType type = npc.getOrAddTrait(MobType.class).getType();
- if (!Util.isHorse(type)) {
+ if (!Util.isHorse(type))
throw new CommandException(CommandMessages.REQUIREMENTS_INVALID_MOB_TYPE, Util.prettyEnum(type));
- }
HorseModifiers horse = npc.getOrAddTrait(HorseModifiers.class);
String output = "";
@@ -1309,7 +1271,6 @@ public class NPCCommands {
horse.setCarryingChest(false);
output += Messaging.tr(Messages.HORSE_CHEST_UNSET) + " ";
}
-
if (type == EntityType.HORSE && (args.hasValueFlag("color") || args.hasValueFlag("colour"))) {
if (color == null) {
String valid = Util.listValuesPretty(Horse.Color.values());
@@ -1400,7 +1361,6 @@ public class NPCCommands {
if (modify != null) {
stack = Util.parseItemStack(stack, modify);
}
-
if (mat == null && !args.hasFlag('h'))
throw new CommandException(Messages.UNKNOWN_MATERIAL);
ItemStack fstack = stack.clone();
@@ -1410,7 +1370,6 @@ public class NPCCommands {
npc.despawn(DespawnReason.PENDING_RESPAWN);
npc.spawn(npc.getStoredLocation(), SpawnReason.RESPAWN);
}
-
Messaging.sendTr(sender, Messages.ITEM_SET, Util.prettyEnum(stack.getType()));
}
@@ -1481,7 +1440,7 @@ public class NPCCommands {
: CitizensAPI.getNPCRegistry();
if (source == null)
throw new CommandException();
- List npcs = new ArrayList();
+ List npcs = new ArrayList<>();
if (args.hasFlag('a')) {
for (NPC add : source.sorted()) {
@@ -1500,7 +1459,6 @@ public class NPCCommands {
}
}
}
-
if (args.hasValueFlag("type")) {
if (type == null)
throw new CommandException(Messages.COMMAND_INVALID_MOBTYPE, type);
@@ -1511,7 +1469,6 @@ public class NPCCommands {
}
}
}
-
Paginator paginator = new Paginator().header("NPCs").console(sender instanceof ConsoleCommandSender)
.enablePageSwitcher('/' + args.getRawCommand() + " --page $page");
for (int i = 0; i < npcs.size(); i++) {
@@ -1524,11 +1481,9 @@ public class NPCCommands {
+ id + ">-)";
paginator.addLine(line);
}
-
int op = page == null ? args.getInteger(1, 1) : page;
- if (!paginator.sendPage(sender, op)) {
+ if (!paginator.sendPage(sender, op))
throw new CommandException(Messages.COMMAND_PAGE_MISSING, op);
- }
}
@Command(
@@ -1669,43 +1624,37 @@ public class NPCCommands {
} catch (NumberFormatException nfe2) {
}
}
-
if (args.hasFlag('t')) {
if (enumKey != null) {
npc.data().set(enumKey, metadata);
} else {
npc.data().set(key, metadata);
}
+ } else if (enumKey != null) {
+ npc.data().setPersistent(enumKey, metadata);
} else {
- if (enumKey != null) {
- npc.data().setPersistent(enumKey, metadata);
- } else {
- npc.data().setPersistent(key, metadata);
- }
+ npc.data().setPersistent(key, metadata);
}
Messaging.sendTr(sender, Messages.METADATA_SET, enumKey != null ? enumKey : key, args.getString(3));
} else if (command.equals("get")) {
- if (args.argsLength() != 3) {
+ if (args.argsLength() != 3)
throw new CommandException();
- }
Object data = enumKey != null ? npc.data().get(enumKey) : npc.data().get(key);
if (data == null) {
data = "null";
}
sender.sendMessage(data.toString());
} else if (command.equals("remove")) {
- if (args.argsLength() != 3) {
+ if (args.argsLength() != 3)
throw new CommandException();
- }
if (enumKey != null) {
npc.data().remove(enumKey);
} else {
npc.data().remove(key);
}
Messaging.sendTr(sender, Messages.METADATA_UNSET, enumKey != null ? enumKey : key, npc.getName());
- } else {
+ } else
throw new CommandUsageException();
- }
}
@Command(
@@ -1741,7 +1690,6 @@ public class NPCCommands {
if (args.hasValueFlag("offset")) {
npc.data().setPersistent(NPC.Metadata.MINECART_OFFSET, args.getFlagInteger("offset"));
}
-
Messaging.sendTr(sender, Messages.MINECART_SET, npc.data().get(NPC.Metadata.MINECART_ITEM, ""),
npc.data().get(NPC.Metadata.MINECART_ITEM_DATA, 0), npc.data().get(NPC.Metadata.MINECART_OFFSET, 0));
}
@@ -1787,7 +1735,6 @@ public class NPCCommands {
} catch (IllegalArgumentException ex) {
mount = CitizensAPI.getNPCRegistry().getById(args.getFlagInteger("onnpc"));
}
-
if (mount == null || !mount.isSpawned())
throw new CommandException(Messaging.tr(Messages.MOUNT_NPC_MUST_BE_SPAWNED, onnpc));
@@ -1797,18 +1744,15 @@ public class NPCCommands {
NMS.mount(mount.getEntity(), npc.getEntity());
return;
}
-
if (args.hasFlag('c')) {
npc.getOrAddTrait(MountTrait.class).unmount();
return;
}
-
boolean enabled = npc.hasTrait(Controllable.class) && npc.getOrAddTrait(Controllable.class).isEnabled();
if (!enabled) {
Messaging.sendTr(sender, Messages.NPC_NOT_CONTROLLABLE, npc.getName());
return;
}
-
if (!(sender instanceof Player))
throw new CommandException(CommandMessages.MUST_BE_INGAME);
@@ -1831,9 +1775,8 @@ public class NPCCommands {
public void moveto(CommandContext args, CommandSender sender, NPC npc) throws CommandException {
if (!npc.isSpawned()) {
npc.spawn(npc.getOrAddTrait(CurrentLocation.class).getLocation(), SpawnReason.COMMAND);
- if (!npc.isSpawned()) {
+ if (!npc.isSpawned())
throw new CommandException("NPC could not be spawned.");
- }
}
Location current = npc.getEntity().getLocation();
Location to;
@@ -1850,16 +1793,21 @@ public class NPCCommands {
to = new Location(world, x, y, z, current.getYaw(), current.getPitch());
} else {
to = current.clone();
- if (args.hasValueFlag("x"))
+ if (args.hasValueFlag("x")) {
to.setX(args.getFlagDouble("x"));
- if (args.hasValueFlag("y"))
+ }
+ if (args.hasValueFlag("y")) {
to.setY(args.getFlagDouble("y"));
- if (args.hasValueFlag("z"))
+ }
+ if (args.hasValueFlag("z")) {
to.setZ(args.getFlagDouble("z"));
- if (args.hasValueFlag("yaw"))
+ }
+ if (args.hasValueFlag("yaw")) {
to.setYaw((float) args.getFlagDouble("yaw"));
- if (args.hasValueFlag("pitch"))
+ }
+ if (args.hasValueFlag("pitch")) {
to.setPitch((float) args.getFlagDouble("pitch"));
+ }
if (args.hasValueFlag("world")) {
World world = Bukkit.getWorld(args.getFlag("world"));
if (world == null)
@@ -1867,7 +1815,6 @@ public class NPCCommands {
to.setWorld(world);
}
}
-
npc.teleport(to, TeleportCause.COMMAND);
NMS.look(npc.getEntity(), to.getYaw(), to.getPitch());
Messaging.sendTr(sender, Messages.MOVETO_TELEPORTED, npc.getName(), Util.prettyPrintLocation(to));
@@ -1896,7 +1843,7 @@ public class NPCCommands {
}
@Command(aliases = { "npc" }, desc = "Show basic NPC information", max = 0, permission = "citizens.npc.info")
- public void npc(CommandContext args, CommandSender sender, final NPC npc) {
+ public void npc(CommandContext args, CommandSender sender, NPC npc) {
Messaging.send(sender, StringHelper.wrapHeader(npc.getName()));
Messaging.send(sender, " ID: [[" + npc.getId());
EntityType type = npc.getOrAddTrait(MobType.class).getType();
@@ -1962,7 +1909,6 @@ public class NPCCommands {
Messaging.sendTr(sender, Messages.NPC_OWNER, npc.getName(), ownerTrait.getOwner());
return;
}
-
OfflinePlayer p;
UUID uuid;
if (args.getString(1).equalsIgnoreCase("SERVER")) {
@@ -1972,7 +1918,6 @@ public class NPCCommands {
} else {
uuid = UUID.fromString(args.getString(1));
}
-
if (ownerTrait.isOwnedBy(uuid))
throw new CommandException(Messages.ALREADY_OWNER, uuid, npc.getName());
@@ -1995,7 +1940,6 @@ public class NPCCommands {
if (explicit == null) {
explicit = !npc.hasTrait(PacketNPC.class);
}
-
if (explicit) {
npc.getOrAddTrait(PacketNPC.class);
Messaging.sendTr(sender, Messages.NPC_PACKET_ENABLED, npc.getName());
@@ -2022,7 +1966,6 @@ public class NPCCommands {
Messaging.sendTr(sender, Messages.PAINTING_ART_SET, npc.getName(), Util.prettyEnum(art));
return;
}
-
throw new CommandUsageException();
}
@@ -2103,9 +2046,9 @@ public class NPCCommands {
output += " "
+ Messaging.tr(Messages.PATHFINDING_OPTIONS_FALLING_DISTANCE_SET, npc.getName(), fallingDistance);
}
- if (output.isEmpty()) {
+ if (output.isEmpty())
throw new CommandUsageException();
- } else {
+ else {
Messaging.send(sender, output.trim());
}
}
@@ -2137,13 +2080,12 @@ public class NPCCommands {
throws CommandException {
Location loc = npc.getStoredLocation();
if (args.argsLength() == 2) {
- if ((option.equalsIgnoreCase("me") || option.equalsIgnoreCase("here"))) {
+ if (option.equalsIgnoreCase("me") || option.equalsIgnoreCase("here")) {
loc = args.getSenderLocation();
} else if (option.equalsIgnoreCase("cursor")) {
loc = ((Player) sender).getTargetBlockExact(32).getLocation();
- } else {
+ } else
throw new CommandUsageException();
- }
} else {
loc.setX(args.getDouble(1));
loc.setY(args.getDouble(2));
@@ -2221,7 +2163,7 @@ public class NPCCommands {
@Command(
aliases = { "npc" },
- usage = "playerfilter -a(llowlist) -e(mpty) -d(enylist) --add [uuid] --remove [uuid] --addgroup [group] --removegroup [group] -c(lear)",
+ usage = "playerfilter -a(llowlist) -e(mpty) -d(enylist) --add [uuid] --remove [uuid] --addgroup [group] --removegroup [group] -c(lear) --applywithin [blocks range]",
desc = "Sets the NPC filter",
modifiers = { "playerfilter" },
min = 1,
@@ -2229,7 +2171,8 @@ public class NPCCommands {
flags = "adce",
permission = "citizens.npc.playerfilter")
public void playerfilter(CommandContext args, CommandSender sender, NPC npc, @Flag("add") UUID add,
- @Flag("remove") UUID remove, @Flag("removegroup") String removegroup, @Flag("addgroup") String addgroup) {
+ @Flag("remove") UUID remove, @Flag("removegroup") String removegroup, @Flag("addgroup") String addgroup,
+ @Flag("applywithin") Double applyRange) {
PlayerFilter trait = npc.getOrAddTrait(PlayerFilter.class);
if (add != null) {
trait.addPlayer(add);
@@ -2247,6 +2190,10 @@ public class NPCCommands {
trait.removeGroup(removegroup);
Messaging.sendTr(sender, Messages.PLAYERFILTER_GROUP_REMOVED, removegroup, npc.getName());
}
+ if (applyRange != null) {
+ trait.setApplyRange(applyRange);
+ Messaging.sendTr(sender, Messages.PLAYERFILTER_APPLYRANGE_SET, npc.getName(), applyRange);
+ }
if (args.hasFlag('e')) {
trait.setPlayers(Collections.emptySet());
Messaging.sendTr(sender, Messages.PLAYERFILTER_EMPTY_SET, npc.getName());
@@ -2331,16 +2278,13 @@ public class NPCCommands {
if (yaw != null) {
loc.setYaw(yaw);
}
-
if (pitch != null) {
loc.setPitch(pitch);
}
-
if (trait.addPose(save, loc, args.hasFlag('d'))) {
Messaging.sendTr(sender, Messages.POSE_ADDED);
- } else {
+ } else
throw new CommandException(Messages.POSE_ALREADY_EXISTS, save);
- }
} else if (mirror != null) {
if (mirror.isEmpty())
throw new CommandException(Messages.INVALID_POSE_NAME);
@@ -2350,9 +2294,8 @@ public class NPCCommands {
if (trait.addPose(mirror, args.getSenderLocation(), args.hasFlag('d'))) {
Messaging.sendTr(sender, Messages.POSE_ADDED);
- } else {
+ } else
throw new CommandException(Messages.POSE_ALREADY_EXISTS, mirror);
- }
} else if (defaultPose != null) {
if (!trait.hasPose(defaultPose))
throw new CommandException(Messages.POSE_MISSING, defaultPose);
@@ -2377,7 +2320,6 @@ public class NPCCommands {
} else if (!args.hasFlag('a')) {
trait.describe(sender, args.getInteger(1, 1));
}
-
if (args.hasFlag('a')) {
if (args.getSenderLocation() == null)
throw new ServerCommandException();
@@ -2447,7 +2389,7 @@ public class NPCCommands {
min = 1,
max = 2)
@Requirements
- public void remove(final CommandContext args, final CommandSender sender, NPC npc, @Flag("owner") String owner,
+ public void remove(CommandContext args, CommandSender sender, NPC npc, @Flag("owner") String owner,
@Flag("eid") UUID eid, @Flag("world") String world, @Arg(value = 1, completions = "all") String action)
throws CommandException {
if (owner != null) {
@@ -2461,12 +2403,11 @@ public class NPCCommands {
}
}
for (NPC rem : Lists.newArrayList(CitizensAPI.getNPCRegistry())) {
- if (!rem.getOrAddTrait(Owner.class).isOwnedBy(sender))
+ if (!rem.getOrAddTrait(Owner.class).isOwnedBy(sender)) {
continue;
- if (uuid != null && rem.getOrAddTrait(Owner.class).isOwnedBy(uuid)) {
- history.add(sender, new RemoveNPCHistoryItem(rem));
- rem.destroy(sender);
- } else if (rem.getOrAddTrait(Owner.class).isOwnedBy(owner)) {
+ }
+ if (uuid != null && rem.getOrAddTrait(Owner.class).isOwnedBy(uuid)
+ || rem.getOrAddTrait(Owner.class).isOwnedBy(owner)) {
history.add(sender, new RemoveNPCHistoryItem(rem));
rem.destroy(sender);
}
@@ -2474,7 +2415,6 @@ public class NPCCommands {
Messaging.sendTr(sender, Messages.NPCS_REMOVED);
return;
}
-
if (world != null) {
for (NPC rem : Lists.newArrayList(CitizensAPI.getNPCRegistry())) {
Location loc = rem.getStoredLocation();
@@ -2488,7 +2428,6 @@ public class NPCCommands {
Messaging.sendTr(sender, Messages.NPCS_REMOVED);
return;
}
-
if (eid != null) {
Entity entity = Bukkit.getServer().getEntity(eid);
if (entity != null && (npc = CitizensAPI.getNPCRegistry().getNPC(entity)) != null
@@ -2496,13 +2435,11 @@ public class NPCCommands {
history.add(sender, new RemoveNPCHistoryItem(npc));
npc.destroy(sender);
Messaging.sendTr(sender, Messages.NPC_REMOVED, npc.getName(), npc.getId());
- return;
} else {
Messaging.sendErrorTr(sender, Messages.NPC_NOT_FOUND);
- return;
}
+ return;
}
-
if (args.argsLength() == 2) {
if ("all".equalsIgnoreCase(action)) {
if (!sender.hasPermission("citizens.admin.remove.all") && !sender.hasPermission("citizens.admin"))
@@ -2512,7 +2449,6 @@ public class NPCCommands {
}
CitizensAPI.getNPCRegistry().deregisterAll();
Messaging.sendTr(sender, Messages.REMOVED_ALL_NPCS);
- return;
} else {
NPCCommandSelector.Callback callback = npc1 -> {
if (npc1 == null)
@@ -2527,8 +2463,8 @@ public class NPCCommands {
};
NPCCommandSelector.startWithCallback(callback, CitizensAPI.getNPCRegistry(), sender, args,
args.getString(1));
- return;
}
+ return;
}
if (npc == null)
throw new CommandException(CommandMessages.MUST_HAVE_SELECTED);
@@ -2606,7 +2542,6 @@ public class NPCCommands {
npc.getOrAddTrait(RotationTrait.class).getPhysicalSession().rotateToHave(yaw, pitch);
return;
}
-
if (yaw != null) {
NMS.setBodyYaw(npc.getEntity(), yaw);
if (npc.getEntity().getType() == EntityType.PLAYER) {
@@ -2614,11 +2549,9 @@ public class NPCCommands {
PlayerAnimation.ARM_SWING.play((Player) npc.getEntity());
}
}
-
if (pitch != null) {
NMS.setPitch(npc.getEntity(), pitch);
}
-
if (head != null) {
NMS.setHeadYaw(npc.getEntity(), head);
}
@@ -2633,7 +2566,7 @@ public class NPCCommands {
max = 2,
permission = "citizens.npc.select")
@Requirements
- public void select(CommandContext args, final CommandSender sender, final NPC npc,
+ public void select(CommandContext args, CommandSender sender, NPC npc,
@Flag(value = "range", defValue = "10") double range, @Flag("registry") String registryName)
throws CommandException {
NPCCommandSelector.Callback callback = toSelect -> {
@@ -2653,7 +2586,7 @@ public class NPCCommands {
if (args.argsLength() <= 1) {
if (args.getSenderLocation() == null)
throw new ServerCommandException();
- final Location location = args.getSenderLocation();
+ Location location = args.getSenderLocation();
List search = location.getWorld().getNearbyEntities(location, range, range, range).stream()
.map(e -> registry.getNPC(e)).filter(e -> e != null).collect(Collectors.toList());
Collections.sort(search, (o1, o2) -> Double.compare(o1.getEntity().getLocation().distanceSquared(location),
@@ -2718,9 +2651,8 @@ public class NPCCommands {
}
hasArg = true;
}
- if (!hasArg) {
+ if (!hasArg)
throw new CommandException();
- }
}
@Command(
@@ -2759,9 +2691,8 @@ public class NPCCommands {
shop.displayEditor(npc == null ? null : npc.getOrAddTrait(ShopTrait.class), sender);
} else if (action.equalsIgnoreCase("show")) {
shop.display(sender);
- } else {
+ } else
throw new CommandUsageException();
- }
}
@Command(
@@ -2799,10 +2730,10 @@ public class NPCCommands {
flags = "ectls",
permission = "citizens.npc.skin")
@Requirements(types = EntityType.PLAYER, selected = true, ownership = true)
- public void skin(final CommandContext args, final CommandSender sender, final NPC npc, @Flag("url") String url,
+ public void skin(CommandContext args, CommandSender sender, NPC npc, @Flag("url") String url,
@Flag("file") String file) throws CommandException {
String skinName = npc.getName();
- final SkinTrait trait = npc.getOrAddTrait(SkinTrait.class);
+ SkinTrait trait = npc.getOrAddTrait(SkinTrait.class);
if (args.hasFlag('c')) {
trait.clearTexture();
Messaging.sendTr(sender, Messages.SKIN_CLEARED);
@@ -2832,12 +2763,10 @@ public class NPCCommands {
FileOutputStream out = new FileOutputStream(skin)) {
out.getChannel().transferFrom(in, 0, 10000);
}
-
Messaging.send(sender, Messages.SKIN_EXPORTED, skin.getName());
} catch (Exception e) {
throw new CommandException("Couldn't parse texture: " + e.getMessage());
}
-
return;
} else if (url != null || file != null) {
Messaging.sendTr(sender, Messages.FETCHING_SKIN, url == null ? file : url);
@@ -2853,14 +2782,12 @@ public class NPCCommands {
() -> Messaging.sendErrorTr(sender, Messages.INVALID_SKIN_FILE, file));
return;
}
-
data = MojangSkinGenerator.generateFromPNG(Files.readAllBytes(skin.toPath()),
args.hasFlag('s'));
} else {
data = MojangSkinGenerator.generateFromURL(Placeholders.replace(url, sender, npc),
args.hasFlag('s'));
}
-
String uuid = (String) data.get("uuid");
JSONObject texture = (JSONObject) data.get("texture");
String textureEncoded = (String) texture.get("value");
@@ -2898,16 +2825,14 @@ public class NPCCommands {
if (sender instanceof Player && ((Player) sender).getInventory().addItem(is).isEmpty()) {
} else if (args.getSenderLocation() != null) {
args.getSenderLocation().getWorld().dropItem(args.getSenderLocation(), is);
- } else {
+ } else
throw new ServerCommandException();
- }
} else {
if (args.argsLength() != 2)
throw new CommandException(Messages.SKIN_REQUIRED);
if (args.hasFlag('l')) {
trait.setShouldUpdateSkins(true);
}
-
skinName = args.getString(1);
}
Messaging.sendTr(sender, Messages.SKIN_SET, npc.getName(), skinName);
@@ -2923,32 +2848,27 @@ public class NPCCommands {
max = 5,
permission = "citizens.npc.skinlayers")
@Requirements(types = EntityType.PLAYER, selected = true, ownership = true)
- public void skinLayers(final CommandContext args, final CommandSender sender, final NPC npc,
- @Flag("cape") Boolean cape, @Flag("hat") Boolean hat, @Flag("jacket") Boolean jacket,
- @Flag("sleeves") Boolean sleeves, @Flag("pants") Boolean pants) throws CommandException {
+ public void skinLayers(CommandContext args, CommandSender sender, NPC npc, @Flag("cape") Boolean cape,
+ @Flag("hat") Boolean hat, @Flag("jacket") Boolean jacket, @Flag("sleeves") Boolean sleeves,
+ @Flag("pants") Boolean pants) throws CommandException {
SkinLayers trait = npc.getOrAddTrait(SkinLayers.class);
if (cape != null) {
trait.setVisible(Layer.CAPE, cape);
}
-
if (hat != null) {
trait.setVisible(Layer.HAT, hat);
}
-
if (jacket != null) {
trait.setVisible(Layer.JACKET, jacket);
}
-
if (sleeves != null) {
trait.setVisible(Layer.LEFT_SLEEVE, sleeves);
trait.setVisible(Layer.RIGHT_SLEEVE, sleeves);
}
-
if (pants != null) {
trait.setVisible(Layer.LEFT_PANTS, pants);
trait.setVisible(Layer.RIGHT_PANTS, pants);
}
-
Messaging.sendTr(sender, Messages.SKIN_LAYERS_SET, npc.getName(), trait.isVisible(Layer.CAPE),
trait.isVisible(Layer.HAT), trait.isVisible(Layer.JACKET),
trait.isVisible(Layer.LEFT_SLEEVE) || trait.isVisible(Layer.RIGHT_SLEEVE),
@@ -2970,7 +2890,6 @@ public class NPCCommands {
trait.describe(sender);
return;
}
-
int size = Math.max(-2, args.getInteger(1));
trait.setSize(size);
Messaging.sendTr(sender, Messages.SIZE_SET, npc.getName(), size);
@@ -2995,16 +2914,13 @@ public class NPCCommands {
Messaging.sendTr(sender, Messages.SOUND_INFO, npc.getName(), ambientSound, hurtSound, deathSound);
return;
}
-
if (args.hasFlag('n')) {
ambientSound = deathSound = hurtSound = "";
npc.data().setPersistent(NPC.Metadata.SILENT, true);
}
-
if (args.hasFlag('s')) {
npc.data().setPersistent(NPC.Metadata.SILENT, !npc.data().get(NPC.Metadata.SILENT, false));
}
-
if (args.hasFlag('d')) {
ambientSound = deathSound = hurtSound = null;
npc.data().setPersistent(NPC.Metadata.SILENT, false);
@@ -3014,56 +2930,46 @@ public class NPCCommands {
} else if (args.hasValueFlag("death")) {
deathSound = args.getFlag("death").equals("d") ? null : args.getFlag("death");
}
-
if (ambient != null) {
ambientSound = NMS.getSoundPath(ambient);
} else if (args.hasValueFlag("ambient")) {
ambientSound = args.getFlag("ambient").equals("d") ? null : args.getFlag("ambient");
}
-
if (hurt != null) {
hurtSound = NMS.getSoundPath(hurt);
} else if (args.hasValueFlag("hurt")) {
hurtSound = args.getFlag("hurt").equals("d") ? null : args.getFlag("hurt");
}
}
-
if (deathSound == null) {
npc.data().remove(NPC.Metadata.DEATH_SOUND);
} else {
npc.data().setPersistent(NPC.Metadata.DEATH_SOUND, deathSound);
}
-
if (hurtSound == null) {
npc.data().remove(NPC.Metadata.HURT_SOUND);
} else {
npc.data().setPersistent(NPC.Metadata.HURT_SOUND, hurtSound);
}
-
if (ambientSound == null) {
npc.data().remove(NPC.Metadata.AMBIENT_SOUND);
} else {
npc.data().setPersistent(NPC.Metadata.AMBIENT_SOUND, ambientSound);
}
-
if (ambientSound != null && ambientSound.isEmpty()) {
ambientSound = "none";
}
-
if (hurtSound != null && hurtSound.isEmpty()) {
hurtSound = "none";
}
-
if (deathSound != null && deathSound.isEmpty()) {
deathSound = "none";
}
-
- if ((!Strings.isNullOrEmpty(ambientSound) && !ambientSound.equals("none"))
- || (!Strings.isNullOrEmpty(deathSound) && !deathSound.equals("none"))
- || (!Strings.isNullOrEmpty(hurtSound) && !hurtSound.equals("none"))) {
+ if (!Strings.isNullOrEmpty(ambientSound) && !ambientSound.equals("none")
+ || !Strings.isNullOrEmpty(deathSound) && !deathSound.equals("none")
+ || !Strings.isNullOrEmpty(hurtSound) && !hurtSound.equals("none")) {
npc.data().setPersistent(NPC.Metadata.SILENT, false);
}
-
Messaging.sendTr(sender, Messages.SOUND_SET, npc.getName(), ambientSound, hurtSound, deathSound);
}
@@ -3077,18 +2983,16 @@ public class NPCCommands {
flags = "l",
permission = "citizens.npc.spawn")
@Requirements(ownership = true)
- public void spawn(final CommandContext args, final CommandSender sender, NPC npc) throws CommandException {
+ public void spawn(CommandContext args, CommandSender sender, NPC npc) throws CommandException {
NPCCommandSelector.Callback callback = respawn -> {
if (respawn == null) {
- if (args.argsLength() > 1) {
+ if (args.argsLength() > 1)
throw new CommandException(Messages.NO_NPC_WITH_ID_FOUND, args.getString(1));
- } else {
+ else
throw new CommandException(CommandMessages.MUST_HAVE_SELECTED);
- }
}
- if (respawn.isSpawned()) {
+ if (respawn.isSpawned())
throw new CommandException(Messages.NPC_ALREADY_SPAWNED, respawn.getName());
- }
Location location = respawn.getOrAddTrait(CurrentLocation.class).getLocation();
if (location == null || args.hasValueFlag("location")) {
if (args.getSenderLocation() == null)
@@ -3130,9 +3034,10 @@ public class NPCCommands {
Player playerRecipient = null;
if (target != null) {
if (target.matches("\\d+")) {
- NPC targetNPC = CitizensAPI.getNPCRegistry().getById(Integer.valueOf(args.getFlag("target")));
- if (targetNPC != null)
+ NPC targetNPC = CitizensAPI.getNPCRegistry().getById(Integer.parseInt(args.getFlag("target")));
+ if (targetNPC != null) {
context.addRecipient(targetNPC.getEntity());
+ }
} else {
Player player = Bukkit.getPlayerExact(target);
if (player != null) {
@@ -3141,13 +3046,11 @@ public class NPCCommands {
}
}
}
-
if (bubbleDuration != null) {
HologramTrait trait = npc.getOrAddTrait(HologramTrait.class);
trait.addTemporaryLine(Placeholders.replace(message, playerRecipient, npc), Util.toTicks(bubbleDuration));
return;
}
-
if (range != null) {
npc.getEntity().getNearbyEntities(range, range, range).forEach(e -> {
if (!CitizensAPI.getNPCRegistry().isNPC(e)) {
@@ -3155,7 +3058,6 @@ public class NPCCommands {
}
});
}
-
npc.getDefaultSpeechController().speak(context);
}
@@ -3276,9 +3178,8 @@ public class NPCCommands {
to = target.getRelative(BlockFace.UP).getLocation();
}
if (!sender.hasPermission("citizens.npc.tphere.multiworld")
- && npc.getStoredLocation().getWorld() != args.getSenderLocation().getWorld()) {
+ && npc.getStoredLocation().getWorld() != args.getSenderLocation().getWorld())
throw new CommandException(Messages.CANNOT_TELEPORT_ACROSS_WORLDS);
- }
if (args.hasFlag('c')) {
to = to.getBlock().getLocation();
to.setX(to.getX() + 0.5);
@@ -3463,8 +3364,8 @@ public class NPCCommands {
permission = "citizens.npc.wander")
public void wander(CommandContext args, CommandSender sender, NPC npc) throws CommandException {
Waypoints trait = npc.getOrAddTrait(Waypoints.class);
- if (sender instanceof Player && Editor.hasEditor(((Player) sender))) {
- Editor.leave(((Player) sender));
+ if (sender instanceof Player && Editor.hasEditor((Player) sender)) {
+ Editor.leave((Player) sender);
}
trait.setWaypointProvider(trait.getCurrentProviderName().equals("wander") ? "linear" : "wander");
Messaging.sendTr(sender, Messages.WAYPOINT_PROVIDER_SET, trait.getCurrentProviderName());
@@ -3508,15 +3409,12 @@ public class NPCCommands {
if (args.hasFlag('a')) {
trait.setAngry(!trait.isAngry());
}
-
if (args.hasFlag('s')) {
trait.setSitting(!trait.isSitting());
}
-
if (args.hasFlag('t')) {
trait.setTamed(!trait.isTamed());
}
-
if (collar != null) {
String unparsed = collar;
DyeColor color = null;
@@ -3534,7 +3432,6 @@ public class NPCCommands {
throw new CommandException(Messages.COLLAR_COLOUR_NOT_SUPPORTED, unparsed);
trait.setCollarColor(color);
}
-
Messaging.sendTr(sender, Messages.WOLF_TRAIT_UPDATED, npc.getName(), trait.isAngry(), trait.isSitting(),
trait.isTamed(), trait.getCollarColor().name());
}
diff --git a/main/src/main/java/net/citizensnpcs/commands/TraitCommands.java b/main/src/main/java/net/citizensnpcs/commands/TraitCommands.java
index b10cf4987..407e78401 100644
--- a/main/src/main/java/net/citizensnpcs/commands/TraitCommands.java
+++ b/main/src/main/java/net/citizensnpcs/commands/TraitCommands.java
@@ -42,7 +42,6 @@ public class TraitCommands {
failed.add(String.format("%s: No permission", traitName));
continue;
}
-
Class extends Trait> clazz = CitizensAPI.getTraitFactory().getTraitClass(traitName);
if (clazz == null) {
failed.add(String.format("%s: Trait not found", traitName));
@@ -108,7 +107,6 @@ public class TraitCommands {
failed.add(String.format("%s: No permission", traitName));
continue;
}
-
Class extends Trait> clazz = CitizensAPI.getTraitFactory().getTraitClass(traitName);
if (clazz == null) {
failed.add(String.format("%s: Trait not found", traitName));
@@ -122,10 +120,12 @@ public class TraitCommands {
removeTrait(npc, clazz, sender);
removed.add(StringHelper.wrap(traitName));
}
- if (removed.size() > 0)
+ if (removed.size() > 0) {
Messaging.sendTr(sender, Messages.TRAITS_REMOVED, Joiner.on(", ").join(removed));
- if (failed.size() > 0)
+ }
+ if (failed.size() > 0) {
Messaging.sendTr(sender, Messages.FAILED_TO_REMOVE, Joiner.on(", ").join(failed));
+ }
}
private void removeTrait(NPC npc, Class extends Trait> clazz, CommandSender sender) {
@@ -150,7 +150,6 @@ public class TraitCommands {
failed.add(String.format("%s: No permission", traitName));
continue;
}
-
Class extends Trait> clazz = CitizensAPI.getTraitFactory().getTraitClass(traitName);
if (clazz == null) {
failed.add(String.format("%s: Trait not found", traitName));
diff --git a/main/src/main/java/net/citizensnpcs/commands/WaypointCommands.java b/main/src/main/java/net/citizensnpcs/commands/WaypointCommands.java
index 1f58237bf..2bb563459 100644
--- a/main/src/main/java/net/citizensnpcs/commands/WaypointCommands.java
+++ b/main/src/main/java/net/citizensnpcs/commands/WaypointCommands.java
@@ -130,8 +130,8 @@ public class WaypointCommands {
waypoints.describeProviders(sender);
return;
}
- if (sender instanceof Player && Editor.hasEditor(((Player) sender))) {
- Editor.leave(((Player) sender));
+ if (sender instanceof Player && Editor.hasEditor((Player) sender)) {
+ Editor.leave((Player) sender);
}
boolean success = waypoints.setWaypointProvider(args.getString(1));
if (!success)
diff --git a/main/src/main/java/net/citizensnpcs/commands/gui/NPCConfigurator.java b/main/src/main/java/net/citizensnpcs/commands/gui/NPCConfigurator.java
index af0955b69..cf9409ef5 100644
--- a/main/src/main/java/net/citizensnpcs/commands/gui/NPCConfigurator.java
+++ b/main/src/main/java/net/citizensnpcs/commands/gui/NPCConfigurator.java
@@ -20,7 +20,7 @@ import net.citizensnpcs.util.Util;
@Menu(title = "Configure NPC", type = InventoryType.CHEST, dimensions = { 5, 9 })
public class NPCConfigurator extends InventoryMenuPage {
- private final NPC npc;
+ private NPC npc;
private NPCConfigurator() {
throw new UnsupportedOperationException();
@@ -36,7 +36,7 @@ public class NPCConfigurator extends InventoryMenuPage {
ConfiguratorInfo info = entry.getValue();
InventoryMenuSlot slot = ctx.getSlot(entry.getKey());
slot.setItemStack(new ItemStack(info.material, 1));
- slot.setClickHandler((evt) -> info.clickHandler.accept(new ConfiguratorEvent(ctx, npc, slot, evt)));
+ slot.setClickHandler(evt -> info.clickHandler.accept(new ConfiguratorEvent(ctx, npc, slot, evt)));
info.clickHandler.accept(new ConfiguratorEvent(ctx, npc, slot, null));
}
}
@@ -51,7 +51,7 @@ public class NPCConfigurator extends InventoryMenuPage {
this.ctx = ctx;
this.npc = npc;
this.slot = slot;
- this.event = evt;
+ event = evt;
}
}
@@ -60,18 +60,18 @@ public class NPCConfigurator extends InventoryMenuPage {
private final Material material;
public ConfiguratorInfo(Material mat, Consumer con) {
- this.material = mat;
- this.clickHandler = con;
+ material = mat;
+ clickHandler = con;
}
}
private static final Map SLOT_MAP = Maps.newHashMap();
static {
- SLOT_MAP.put(0, new ConfiguratorInfo(Util.getFallbackMaterial("OAK_SIGN", "SIGN"), (evt) -> {
+ SLOT_MAP.put(0, new ConfiguratorInfo(Util.getFallbackMaterial("OAK_SIGN", "SIGN"), evt -> {
evt.slot.setDescription("Edit NPC name\n" + evt.npc.getName());
if (evt.event != null) {
- evt.ctx.getMenu().transition(
- InputMenus.stringSetter(() -> evt.npc.getName(), (input) -> evt.npc.setName(input)));
+ evt.ctx.getMenu()
+ .transition(InputMenus.stringSetter(() -> evt.npc.getName(), input -> evt.npc.setName(input)));
}
}));
}
diff --git a/main/src/main/java/net/citizensnpcs/commands/history/CreateNPCHistoryItem.java b/main/src/main/java/net/citizensnpcs/commands/history/CreateNPCHistoryItem.java
index 35ec596d4..37c7e44a3 100644
--- a/main/src/main/java/net/citizensnpcs/commands/history/CreateNPCHistoryItem.java
+++ b/main/src/main/java/net/citizensnpcs/commands/history/CreateNPCHistoryItem.java
@@ -12,7 +12,7 @@ public class CreateNPCHistoryItem implements CommandHistoryItem {
private final UUID uuid;
public CreateNPCHistoryItem(NPC npc) {
- this.uuid = npc.getUniqueId();
+ uuid = npc.getUniqueId();
}
@Override
diff --git a/main/src/main/java/net/citizensnpcs/commands/history/RemoveNPCHistoryItem.java b/main/src/main/java/net/citizensnpcs/commands/history/RemoveNPCHistoryItem.java
index fac6b5fa2..6f8e0ca08 100644
--- a/main/src/main/java/net/citizensnpcs/commands/history/RemoveNPCHistoryItem.java
+++ b/main/src/main/java/net/citizensnpcs/commands/history/RemoveNPCHistoryItem.java
@@ -19,11 +19,11 @@ public class RemoveNPCHistoryItem implements CommandHistoryItem {
private final UUID uuid;
public RemoveNPCHistoryItem(NPC from) {
- this.key = new MemoryDataKey();
+ key = new MemoryDataKey();
from.save(key);
- this.type = from.getOrAddTrait(MobType.class).getType();
- this.uuid = from.getUniqueId();
- this.id = from.getId();
+ type = from.getOrAddTrait(MobType.class).getType();
+ uuid = from.getUniqueId();
+ id = from.getId();
}
@Override
diff --git a/main/src/main/java/net/citizensnpcs/editor/CopierEditor.java b/main/src/main/java/net/citizensnpcs/editor/CopierEditor.java
index f7864d995..92c75600b 100644
--- a/main/src/main/java/net/citizensnpcs/editor/CopierEditor.java
+++ b/main/src/main/java/net/citizensnpcs/editor/CopierEditor.java
@@ -19,7 +19,7 @@ public class CopierEditor extends Editor {
public CopierEditor(Player player, NPC npc) {
this.player = player;
this.npc = npc;
- this.name = npc.getRawName();
+ name = npc.getRawName();
}
@Override
@@ -41,7 +41,6 @@ public class CopierEditor extends Editor {
if (!copy.getRawName().equals(name)) {
copy.setName(name);
}
-
if (copy.isSpawned() && player.isOnline()) {
Location location = event.getClickedBlock().getLocation();
location.setYaw(player.getLocation().getYaw());
@@ -50,7 +49,6 @@ public class CopierEditor extends Editor {
copy.teleport(location, TeleportCause.PLUGIN);
copy.getOrAddTrait(CurrentLocation.class).setLocation(location);
}
-
Messaging.sendTr(player, Messages.NPC_COPIED, npc.getName());
event.setCancelled(true);
}
diff --git a/main/src/main/java/net/citizensnpcs/editor/Editor.java b/main/src/main/java/net/citizensnpcs/editor/Editor.java
index 0a12c9566..a8f4c0212 100644
--- a/main/src/main/java/net/citizensnpcs/editor/Editor.java
+++ b/main/src/main/java/net/citizensnpcs/editor/Editor.java
@@ -58,5 +58,5 @@ public abstract class Editor implements Listener {
EDITING.clear();
}
- private static final Map EDITING = new HashMap();
+ private static final Map EDITING = new HashMap<>();
}
\ No newline at end of file
diff --git a/main/src/main/java/net/citizensnpcs/editor/GenericEquipperGUI.java b/main/src/main/java/net/citizensnpcs/editor/GenericEquipperGUI.java
index 54b4c4904..8c87f4a4f 100644
--- a/main/src/main/java/net/citizensnpcs/editor/GenericEquipperGUI.java
+++ b/main/src/main/java/net/citizensnpcs/editor/GenericEquipperGUI.java
@@ -73,32 +73,32 @@ public class GenericEquipperGUI extends InventoryMenuPage {
@ClickHandler(slot = { 1, 5 })
public void setBoots(InventoryMenuSlot slot, CitizensInventoryClickEvent event) {
- set(EquipmentSlot.BOOTS, event, (type) -> type == Material.AIR || type.name().endsWith("BOOTS"));
+ set(EquipmentSlot.BOOTS, event, type -> type == Material.AIR || type.name().endsWith("BOOTS"));
}
@ClickHandler(slot = { 1, 3 })
public void setChest(InventoryMenuSlot slot, CitizensInventoryClickEvent event) {
set(EquipmentSlot.CHESTPLATE, event,
- (type) -> type == Material.AIR || type.name().endsWith("CHESTPLATE") || type.name().equals("ELYTRA"));
+ type -> type == Material.AIR || type.name().endsWith("CHESTPLATE") || type.name().equals("ELYTRA"));
}
@ClickHandler(slot = { 1, 0 })
public void setHand(InventoryMenuSlot slot, CitizensInventoryClickEvent event) {
- set(EquipmentSlot.HAND, event, (type) -> true);
+ set(EquipmentSlot.HAND, event, type -> true);
}
@ClickHandler(slot = { 1, 2 })
public void setHelmet(InventoryMenuSlot slot, CitizensInventoryClickEvent event) {
- set(EquipmentSlot.HELMET, event, (type) -> true);
+ set(EquipmentSlot.HELMET, event, type -> true);
}
@ClickHandler(slot = { 1, 4 })
public void setLeggings(InventoryMenuSlot slot, CitizensInventoryClickEvent event) {
- set(EquipmentSlot.LEGGINGS, event, (type) -> type == Material.AIR || type.name().endsWith("LEGGINGS"));
+ set(EquipmentSlot.LEGGINGS, event, type -> type == Material.AIR || type.name().endsWith("LEGGINGS"));
}
@ClickHandler(slot = { 1, 1 })
public void setOffhand(InventoryMenuSlot slot, CitizensInventoryClickEvent event) {
- set(EquipmentSlot.OFF_HAND, event, (type) -> true);
+ set(EquipmentSlot.OFF_HAND, event, type -> true);
}
}
diff --git a/main/src/main/java/net/citizensnpcs/npc/AbstractEntityController.java b/main/src/main/java/net/citizensnpcs/npc/AbstractEntityController.java
index df5554b8e..2e9b3bc41 100644
--- a/main/src/main/java/net/citizensnpcs/npc/AbstractEntityController.java
+++ b/main/src/main/java/net/citizensnpcs/npc/AbstractEntityController.java
@@ -43,11 +43,10 @@ public abstract class AbstractEntityController implements EntityController {
if (bukkitEntity instanceof Player) {
NMS.removeFromWorld(bukkitEntity);
NMS.remove(bukkitEntity);
- bukkitEntity = null;
} else {
bukkitEntity.remove();
- bukkitEntity = null;
}
+ bukkitEntity = null;
}
@Override
diff --git a/main/src/main/java/net/citizensnpcs/npc/CitizensNPC.java b/main/src/main/java/net/citizensnpcs/npc/CitizensNPC.java
index f3b368273..6a8b84d1f 100644
--- a/main/src/main/java/net/citizensnpcs/npc/CitizensNPC.java
+++ b/main/src/main/java/net/citizensnpcs/npc/CitizensNPC.java
@@ -82,54 +82,44 @@ public class CitizensNPC extends AbstractNPC {
}
return true;
}
-
NPCDespawnEvent event = new NPCDespawnEvent(this, reason);
if (reason == DespawnReason.CHUNK_UNLOAD) {
event.setCancelled(data().get(NPC.Metadata.KEEP_CHUNK_LOADED, Setting.KEEP_CHUNKS_LOADED.asBoolean()));
}
-
Bukkit.getPluginManager().callEvent(event);
if (event.isCancelled() && reason != DespawnReason.DEATH) {
Messaging.debug("Couldn't despawn", this, "due to despawn event cancellation. Will load chunk.",
getEntity().isValid(), ", DespawnReason." + reason);
return false;
}
-
boolean keepSelected = getOrAddTrait(Spawned.class).shouldSpawn();
if (!keepSelected) {
data().remove("selectors");
}
-
if (getEntity() != null) {
getEntity().removeMetadata("NPC", CitizensAPI.getPlugin());
getEntity().removeMetadata("NPC-ID", CitizensAPI.getPlugin());
}
-
if (getEntity() instanceof Player) {
PlayerUpdateTask.deregisterPlayer(getEntity());
}
-
navigator.onDespawn();
if (reason == DespawnReason.RELOAD) {
unloadEvents();
}
-
- for (Trait trait : new ArrayList(traits.values())) {
+ for (Trait trait : new ArrayList<>(traits.values())) {
trait.onDespawn(reason);
}
-
Messaging.debug("Despawned", this, "DespawnReason." + reason);
if (getEntity() instanceof SkinnableEntity) {
((SkinnableEntity) getEntity()).getSkinTracker().onRemoveNPC();
}
-
if (reason == DespawnReason.DEATH) {
entityController.die();
} else {
entityController.remove();
}
-
return true;
}
@@ -190,7 +180,7 @@ public class CitizensNPC extends AbstractNPC {
}
@Override
- public void load(final DataKey root) {
+ public void load(DataKey root) {
super.load(root);
CurrentLocation spawnLocation = getOrAddTrait(CurrentLocation.class);
@@ -201,14 +191,13 @@ public class CitizensNPC extends AbstractNPC {
Messaging.debug("Tried to spawn", this, "on load but world was null");
}
}
-
navigator.load(root.getRelative("navigator"));
}
@Override
public boolean requiresNameHologram() {
return super.requiresNameHologram()
- || (Setting.ALWAYS_USE_NAME_HOLOGRAM.asBoolean() && !data().has(NPC.Metadata.HOLOGRAM_FOR));
+ || Setting.ALWAYS_USE_NAME_HOLOGRAM.asBoolean() && !data().has(NPC.Metadata.HOLOGRAM_FOR);
}
private void resetCachedCoord() {
@@ -255,12 +244,10 @@ public class CitizensNPC extends AbstractNPC {
prev = getEntity().getLocation();
despawn(DespawnReason.PENDING_RESPAWN);
}
-
PacketNPC packet = getTraitNullable(PacketNPC.class);
if (packet != null) {
newController = packet.wrap(newController);
}
-
entityController = newController;
if (wasSpawned) {
spawn(prev, SpawnReason.RESPAWN);
@@ -315,7 +302,6 @@ public class CitizensNPC extends AbstractNPC {
if (reason == SpawnReason.CHUNK_LOAD || reason == SpawnReason.COMMAND) {
at.getChunk().load();
}
-
getOrAddTrait(CurrentLocation.class).setLocation(at);
entityController.create(at.clone(), this);
getEntity().setMetadata("NPC", new FixedMetadataValue(CitizensAPI.getPlugin(), true));
@@ -324,7 +310,6 @@ public class CitizensNPC extends AbstractNPC {
if (getEntity() instanceof SkinnableEntity && !hasTrait(SkinLayers.class)) {
((SkinnableEntity) getEntity()).setSkinFlags(EnumSet.allOf(SkinLayers.Layer.class));
}
-
Collection onPreSpawn = traits.values();
for (Trait trait : onPreSpawn.toArray(new Trait[onPreSpawn.size()])) {
try {
@@ -334,7 +319,6 @@ public class CitizensNPC extends AbstractNPC {
ex.printStackTrace();
}
}
-
boolean loaded = Messaging.isDebugging() ? false : Util.isLoaded(at);
boolean couldSpawn = entityController.spawn(at);
@@ -343,30 +327,27 @@ public class CitizensNPC extends AbstractNPC {
Messaging.debug("Retrying spawn of", this, "later, SpawnReason." + reason + ". Was loaded", loaded,
"is loaded", Util.isLoaded(at));
}
-
// we need to wait before trying to spawn
entityController.remove();
Bukkit.getPluginManager().callEvent(new NPCNeedsRespawnEvent(this, at));
return false;
}
-
// send skin packets, if applicable, before other NMS packets are sent
- SkinnableEntity skinnable = getEntity() instanceof SkinnableEntity ? ((SkinnableEntity) getEntity()) : null;
+ SkinnableEntity skinnable = getEntity() instanceof SkinnableEntity ? (SkinnableEntity) getEntity() : null;
if (skinnable != null) {
skinnable.getSkinTracker().onSpawnNPC();
}
-
NMS.setLocationDirectly(getEntity(), at);
NMS.setHeadYaw(getEntity(), at.getYaw());
NMS.setBodyYaw(getEntity(), at.getYaw());
- final Location to = at;
+ Location to = at;
Consumer postSpawn = new Consumer() {
private int timer;
@Override
public void accept(Runnable cancel) {
- if (getEntity() == null || (!hasTrait(PacketNPC.class) && !getEntity().isValid())) {
+ if (getEntity() == null || !hasTrait(PacketNPC.class) && !getEntity().isValid()) {
if (timer++ > Setting.ENTITY_SPAWN_WAIT_DURATION.asTicks()) {
Messaging.debug("Couldn't spawn ", CitizensNPC.this, "waited", timer,
"ticks but entity not added to world");
@@ -374,10 +355,8 @@ public class CitizensNPC extends AbstractNPC {
cancel.run();
Bukkit.getPluginManager().callEvent(new NPCNeedsRespawnEvent(CitizensNPC.this, to));
}
-
return;
}
-
// Set the spawned state
getOrAddTrait(CurrentLocation.class).setLocation(to);
getOrAddTrait(Spawned.class).setSpawned(true);
@@ -392,7 +371,6 @@ public class CitizensNPC extends AbstractNPC {
cancel.run();
return;
}
-
navigator.onSpawn();
for (Trait trait : Iterables.toArray(traits.values(), Trait.class)) {
@@ -403,7 +381,6 @@ public class CitizensNPC extends AbstractNPC {
ex.printStackTrace();
}
}
-
EntityType type = getEntity().getType();
NMS.replaceTracker(getEntity());
@@ -414,13 +391,11 @@ public class CitizensNPC extends AbstractNPC {
if (NMS.getStepHeight(entity) < 1) {
NMS.setStepHeight(entity, 1);
}
-
if (type == EntityType.PLAYER) {
PlayerUpdateTask.registerPlayer(getEntity());
} else if (data().has(NPC.Metadata.AGGRESSIVE)) {
NMS.setAggressive(entity, data(). get(NPC.Metadata.AGGRESSIVE));
}
-
if (SUPPORT_NODAMAGE_TICKS && (Setting.DEFAULT_SPAWN_NODAMAGE_DURATION.asTicks() != 20
|| data().has(NPC.Metadata.SPAWN_NODAMAGE_TICKS))) {
try {
@@ -431,11 +406,9 @@ public class CitizensNPC extends AbstractNPC {
}
}
}
-
if (requiresNameHologram() && !hasTrait(HologramTrait.class)) {
addTrait(HologramTrait.class);
}
-
updateFlyableState();
updateCustomNameVisibility();
updateScoreboard();
@@ -451,11 +424,10 @@ public class CitizensNPC extends AbstractNPC {
new BukkitRunnable() {
@Override
public void run() {
- postSpawn.accept(() -> cancel());
+ postSpawn.accept(this::cancel);
}
}.runTaskTimer(CitizensAPI.getPlugin(), 0, 1);
}
-
return true;
}
@@ -467,13 +439,11 @@ public class CitizensNPC extends AbstractNPC {
if (hasTrait(SitTrait.class) && getOrAddTrait(SitTrait.class).isSitting()) {
getOrAddTrait(SitTrait.class).setSitting(location);
}
-
Location npcLoc = getEntity().getLocation();
if (isSpawned() && npcLoc.getWorld() == location.getWorld()) {
if (npcLoc.distance(location) < 1) {
NMS.setHeadYaw(getEntity(), location.getYaw());
}
-
if (getEntity().getType() == EntityType.PLAYER && !getEntity().isInsideVehicle()
&& NMS.getPassengers(getEntity()).size() == 0) {
NPCTeleportEvent event = new NPCTeleportEvent(this, location);
@@ -484,7 +454,6 @@ public class CitizensNPC extends AbstractNPC {
return;
}
}
-
super.teleport(location, reason);
}
@@ -502,7 +471,6 @@ public class CitizensNPC extends AbstractNPC {
resetCachedCoord();
return;
}
-
if (data().has(NPC.Metadata.ACTIVATION_RANGE)) {
int range = data().get(NPC.Metadata.ACTIVATION_RANGE);
if (range == -1 || CitizensAPI.getLocationLookup().getNearbyPlayers(getStoredLocation(), range)
@@ -510,7 +478,6 @@ public class CitizensNPC extends AbstractNPC {
NMS.activate(getEntity());
}
}
-
boolean shouldSwim = data().get(NPC.Metadata.SWIMMING, SwimmingExaminer.isWaterMob(getEntity()))
&& MinecraftBlockExaminer.isLiquid(getEntity().getLocation().getBlock().getType());
if (navigator.isNavigating()) {
@@ -528,7 +495,6 @@ public class CitizensNPC extends AbstractNPC {
NMS.trySwim(getEntity());
}
}
-
if (SUPPORT_GLOWING && data().has(NPC.Metadata.GLOWING)) {
try {
getEntity().setGlowing(data().get(NPC.Metadata.GLOWING, false));
@@ -536,7 +502,6 @@ public class CitizensNPC extends AbstractNPC {
SUPPORT_GLOWING = false;
}
}
-
if (SUPPORT_SILENT && data().has(NPC.Metadata.SILENT)) {
try {
getEntity().setSilent(Boolean.parseBoolean(data().get(NPC.Metadata.SILENT).toString()));
@@ -544,7 +509,6 @@ public class CitizensNPC extends AbstractNPC {
SUPPORT_SILENT = false;
}
}
-
boolean isLiving = getEntity() instanceof LivingEntity;
if (isUpdating(NPCUpdate.PACKET)) {
if (data().get(NPC.Metadata.KEEP_CHUNK_LOADED, Setting.KEEP_CHUNKS_LOADED.asBoolean())) {
@@ -572,7 +536,6 @@ public class CitizensNPC extends AbstractNPC {
SUPPORT_PICKUP_ITEMS = false;
}
}
-
if (getEntity() instanceof Player) {
updateUsingItemState((Player) getEntity());
if (data().has(NPC.Metadata.SNEAKING) && !hasTrait(SneakTrait.class)) {
@@ -580,7 +543,6 @@ public class CitizensNPC extends AbstractNPC {
}
}
}
-
navigator.run();
updateCounter++;
@@ -616,16 +578,12 @@ public class CitizensNPC extends AbstractNPC {
return;
EntityType type = isSpawned() ? getEntity().getType() : getOrAddTrait(MobType.class).getType();
- if (type == null)
- return;
-
- if (!Util.isAlwaysFlyable(type))
+ if (type == null || !Util.isAlwaysFlyable(type))
return;
if (!data().has(NPC.Metadata.FLYABLE)) {
data().setPersistent(NPC.Metadata.FLYABLE, true);
}
-
if (!hasTrait(Gravity.class)) {
getOrAddTrait(Gravity.class).setEnabled(true);
}
@@ -657,7 +615,7 @@ public class CitizensNPC extends AbstractNPC {
}
}
- private static final SetMultimap CHUNK_LOADERS = HashMultimap.create();
+ private static SetMultimap CHUNK_LOADERS = HashMultimap.create();
private static boolean SUPPORT_GLOWING = true;
private static boolean SUPPORT_NODAMAGE_TICKS = true;
private static boolean SUPPORT_PICKUP_ITEMS = true;
diff --git a/main/src/main/java/net/citizensnpcs/npc/CitizensNPCRegistry.java b/main/src/main/java/net/citizensnpcs/npc/CitizensNPCRegistry.java
index f0950d1c1..726a47d18 100644
--- a/main/src/main/java/net/citizensnpcs/npc/CitizensNPCRegistry.java
+++ b/main/src/main/java/net/citizensnpcs/npc/CitizensNPCRegistry.java
@@ -2,6 +2,7 @@ package net.citizensnpcs.npc;
import java.util.ArrayList;
import java.util.Collections;
+import java.util.Comparator;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
@@ -37,7 +38,7 @@ import net.citizensnpcs.util.NMS;
public class CitizensNPCRegistry implements NPCRegistry {
private final String name;
- private final TIntObjectHashMap npcs = new TIntObjectHashMap();
+ private final TIntObjectHashMap npcs = new TIntObjectHashMap<>();
private final NPCDataStore saves;
private final Map uniqueNPCs = Maps.newHashMap();
@@ -74,11 +75,9 @@ public class CitizensNPCRegistry implements NPCRegistry {
if (type == EntityType.ARMOR_STAND && !npc.hasTrait(ArmorStandTrait.class)) {
npc.addTrait(ArmorStandTrait.class);
}
-
if (Setting.DEFAULT_LOOK_CLOSE.asBoolean()) {
npc.addTrait(LookClose.class);
}
-
npc.addTrait(MountTrait.class);
return npc;
}
@@ -93,9 +92,8 @@ public class CitizensNPCRegistry implements NPCRegistry {
npc.data().set(NPC.Metadata.ITEM_ID, item.getType().name());
npc.data().set(NPC.Metadata.ITEM_DATA, item.getData().getData());
npc.setItemProvider(() -> item);
- } else {
+ } else
throw new UnsupportedOperationException("Not an item entity type");
- }
return npc;
}
@@ -174,14 +172,13 @@ public class CitizensNPCRegistry implements NPCRegistry {
if (npc != null)
return npc;
for (NPCRegistry registry : CitizensAPI.getNPCRegistries()) {
- if (registry == this)
+ if (registry == this) {
continue;
- NPC other = registry.getByUniqueId(uuid);
- if (other != null) {
- return other;
}
+ NPC other = registry.getByUniqueId(uuid);
+ if (other != null)
+ return other;
}
-
return null;
}
@@ -243,8 +240,8 @@ public class CitizensNPCRegistry implements NPCRegistry {
@Override
public Iterable sorted() {
- List vals = new ArrayList(npcs.valueCollection());
- Collections.sort(vals, (a, b) -> Integer.compare(a.getId(), b.getId()));
+ List vals = new ArrayList<>(npcs.valueCollection());
+ Collections.sort(vals, Comparator.comparing(NPC::getId));
return vals;
}
}
diff --git a/main/src/main/java/net/citizensnpcs/npc/CitizensTraitFactory.java b/main/src/main/java/net/citizensnpcs/npc/CitizensTraitFactory.java
index 12461f341..d445e1520 100644
--- a/main/src/main/java/net/citizensnpcs/npc/CitizensTraitFactory.java
+++ b/main/src/main/java/net/citizensnpcs/npc/CitizensTraitFactory.java
@@ -157,9 +157,8 @@ public class CitizensTraitFactory implements TraitFactory {
@Override
public T getTrait(Class clazz) {
for (TraitInfo entry : registered.values()) {
- if (clazz == entry.getTraitClass()) {
+ if (clazz == entry.getTraitClass())
return create(entry);
- }
}
return null;
}
@@ -183,9 +182,8 @@ public class CitizensTraitFactory implements TraitFactory {
public void registerTrait(TraitInfo info) {
Preconditions.checkNotNull(info, "info cannot be null");
info.checkValid();
- if (registered.containsKey(info.getTraitName())) {
+ if (registered.containsKey(info.getTraitName()))
throw new IllegalArgumentException("Trait name " + info.getTraitName() + " already registered");
- }
registered.put(info.getTraitName(), info);
if (info.isDefaultTrait()) {
defaultTraits.add(info);
diff --git a/main/src/main/java/net/citizensnpcs/npc/EntityControllers.java b/main/src/main/java/net/citizensnpcs/npc/EntityControllers.java
index 3f4fc7818..88db2bfc3 100644
--- a/main/src/main/java/net/citizensnpcs/npc/EntityControllers.java
+++ b/main/src/main/java/net/citizensnpcs/npc/EntityControllers.java
@@ -37,6 +37,5 @@ public class EntityControllers {
}
}
- private static final Map> TYPES = Maps
- .newEnumMap(EntityType.class);
+ private static Map> TYPES = Maps.newEnumMap(EntityType.class);
}
diff --git a/main/src/main/java/net/citizensnpcs/npc/NPCSelector.java b/main/src/main/java/net/citizensnpcs/npc/NPCSelector.java
index bc19c6114..175190f4b 100644
--- a/main/src/main/java/net/citizensnpcs/npc/NPCSelector.java
+++ b/main/src/main/java/net/citizensnpcs/npc/NPCSelector.java
@@ -57,11 +57,11 @@ public class NPCSelector implements Listener, net.citizensnpcs.api.npc.NPCSelect
if (event.getSelected() != null)
return event.getSelected();
- if (sender instanceof Player) {
+ if (sender instanceof Player)
return getSelectedFromMetadatable((Player) sender);
- } else if (sender instanceof BlockCommandSender) {
+ else if (sender instanceof BlockCommandSender)
return getSelectedFromMetadatable(((BlockCommandSender) sender).getBlock());
- } else if (sender instanceof ConsoleCommandSender) {
+ else if (sender instanceof ConsoleCommandSender) {
if (consoleSelectedNPC == null)
return null;
return CitizensAPI.getNPCRegistry().getByUniqueIdGlobal(consoleSelectedNPC);
@@ -90,7 +90,7 @@ public class NPCSelector implements Listener, net.citizensnpcs.api.npc.NPCSelect
if (value.equals("console")) {
consoleSelectedNPC = null;
} else if (value.startsWith("@")) {
- String[] parts = value.substring(1, value.length()).split(":");
+ String[] parts = value.substring(1).split(":");
World world = Bukkit.getWorld(parts[0]);
if (world != null) {
Block block = world.getBlockAt(Integer.parseInt(parts[1]), Integer.parseInt(parts[2]),
@@ -159,7 +159,6 @@ public class NPCSelector implements Listener, net.citizensnpcs.api.npc.NPCSelect
consoleSelectedNPC = npc.getUniqueId();
selectors.add("console");
}
-
Bukkit.getPluginManager().callEvent(new NPCSelectEvent(npc, sender));
}
diff --git a/main/src/main/java/net/citizensnpcs/npc/Template.java b/main/src/main/java/net/citizensnpcs/npc/Template.java
index ecc696609..f351108d6 100644
--- a/main/src/main/java/net/citizensnpcs/npc/Template.java
+++ b/main/src/main/java/net/citizensnpcs/npc/Template.java
@@ -50,9 +50,10 @@ public class Template {
queue.add(new Node(fullKey, (Map) entry.getValue()));
continue;
}
- boolean overwrite = memoryKey.keyExists(fullKey) | override;
- if (!overwrite || fullKey.equals("uuid"))
+ boolean overwrite = memoryKey.keyExists(fullKey) || override;
+ if (!overwrite || fullKey.equals("uuid")) {
continue;
+ }
memoryKey.setRaw(fullKey, entry.getValue());
}
}
diff --git a/main/src/main/java/net/citizensnpcs/npc/ai/AStarNavigationStrategy.java b/main/src/main/java/net/citizensnpcs/npc/ai/AStarNavigationStrategy.java
index 630e3ae4b..fa9444789 100644
--- a/main/src/main/java/net/citizensnpcs/npc/ai/AStarNavigationStrategy.java
+++ b/main/src/main/java/net/citizensnpcs/npc/ai/AStarNavigationStrategy.java
@@ -40,15 +40,15 @@ public class AStarNavigationStrategy extends AbstractPathStrategy {
super(TargetType.LOCATION);
List list = Lists.newArrayList(path);
this.params = params;
- this.destination = list.get(list.size() - 1).toLocation(npc.getStoredLocation().getWorld());
+ destination = list.get(list.size() - 1).toLocation(npc.getStoredLocation().getWorld());
this.npc = npc;
- this.plan = new Path(list);
+ plan = new Path(list);
}
public AStarNavigationStrategy(NPC npc, Location dest, NavigatorParameters params) {
super(TargetType.LOCATION);
this.params = params;
- this.destination = dest;
+ destination = dest;
this.npc = npc;
}
@@ -91,9 +91,8 @@ public class AStarNavigationStrategy extends AbstractPathStrategy {
planner = null;
}
}
- if (getCancelReason() != null || plan == null || plan.isComplete()) {
+ if (getCancelReason() != null || plan == null || plan.isComplete())
return true;
- }
if (vector == null) {
vector = plan.getCurrentVector();
}
@@ -116,23 +115,20 @@ public class AStarNavigationStrategy extends AbstractPathStrategy {
double xzDistance = dX * dX + dZ * dZ;
if (Math.abs(dY) < 1 && Math.sqrt(xzDistance) <= params.distanceMargin()) {
plan.update(npc);
- if (plan.isComplete()) {
+ if (plan.isComplete())
return true;
- }
vector = plan.getCurrentVector();
return false;
}
-
if (params.debug()) {
npc.getEntity().getWorld().playEffect(dest, Effect.ENDER_SIGNAL, 0);
}
-
if (npc.getEntity() instanceof LivingEntity && !npc.getEntity().getType().name().contains("ARMOR_STAND")) {
NMS.setDestination(npc.getEntity(), dest.getX(), dest.getY(), dest.getZ(), params.speed());
} else {
Vector dir = dest.toVector().subtract(npc.getEntity().getLocation().toVector()).normalize().multiply(0.2);
boolean liquidOrInLiquid = MinecraftBlockExaminer.isLiquidOrInLiquid(loc.getBlock());
- if ((dY >= 1 && Math.sqrt(xzDistance) <= 0.4) || (dY >= 0.2 && liquidOrInLiquid)) {
+ if (dY >= 1 && Math.sqrt(xzDistance) <= 0.4 || dY >= 0.2 && liquidOrInLiquid) {
dir.add(new Vector(0, 0.75, 0));
}
npc.getEntity().setVelocity(dir);
@@ -176,18 +172,16 @@ public class AStarNavigationStrategy extends AbstractPathStrategy {
}
public CancelReason tick(int iterationsPerTick, int maxIterations) {
- if (this.plan != null)
+ if (plan != null)
return null;
Path plan = ASTAR.run(state, iterationsPerTick);
if (plan == null) {
- if (state.isEmpty()) {
+ if (state.isEmpty())
return CancelReason.STUCK;
- }
if (iterationsPerTick > 0 && maxIterations > 0) {
iterations += iterationsPerTick;
- if (iterations > maxIterations) {
+ if (iterations > maxIterations)
return CancelReason.STUCK;
- }
}
} else {
this.plan = plan;
@@ -200,5 +194,5 @@ public class AStarNavigationStrategy extends AbstractPathStrategy {
}
}
- private static final AStarMachine ASTAR = AStarMachine.createWithDefaultStorage();
+ private static AStarMachine ASTAR = AStarMachine.createWithDefaultStorage();
}
diff --git a/main/src/main/java/net/citizensnpcs/npc/ai/BoundingBoxExaminer.java b/main/src/main/java/net/citizensnpcs/npc/ai/BoundingBoxExaminer.java
index 1b488e5ec..19e0f6139 100644
--- a/main/src/main/java/net/citizensnpcs/npc/ai/BoundingBoxExaminer.java
+++ b/main/src/main/java/net/citizensnpcs/npc/ai/BoundingBoxExaminer.java
@@ -18,8 +18,8 @@ public class BoundingBoxExaminer implements BlockExaminer {
public BoundingBoxExaminer(Entity entity) {
if (entity != null) {
- this.height = NMS.getHeight(entity);
- this.width = NMS.getWidth(entity);
+ height = NMS.getHeight(entity);
+ width = NMS.getWidth(entity);
}
}
diff --git a/main/src/main/java/net/citizensnpcs/npc/ai/CitizensNavigator.java b/main/src/main/java/net/citizensnpcs/npc/ai/CitizensNavigator.java
index 7f08145fc..097947b23 100644
--- a/main/src/main/java/net/citizensnpcs/npc/ai/CitizensNavigator.java
+++ b/main/src/main/java/net/citizensnpcs/npc/ai/CitizensNavigator.java
@@ -73,7 +73,6 @@ public class CitizensNavigator implements Navigator, Runnable {
!Setting.DEFAULT_STUCK_ACTION.asString().contains("teleport"))) {
defaultParams.stuckAction(null);
}
-
defaultParams.examiner(new SwimmingExaminer(npc));
}
@@ -116,9 +115,8 @@ public class CitizensNavigator implements Navigator, Runnable {
@Override
public NavigatorParameters getLocalParameters() {
- if (!isNavigating()) {
+ if (!isNavigating())
return defaultParams;
- }
return localParams;
}
@@ -156,23 +154,18 @@ public class CitizensNavigator implements Navigator, Runnable {
if (root.keyExists("pathfindingrange")) {
defaultParams.range((float) root.getDouble("pathfindingrange"));
}
-
if (root.keyExists("stationaryticks")) {
defaultParams.stationaryTicks(root.getInt("stationaryticks"));
}
-
if (root.keyExists("distancemargin")) {
defaultParams.distanceMargin(root.getDouble("distancemargin"));
}
-
if (root.keyExists("destinationteleportmargin")) {
defaultParams.destinationTeleportMargin(root.getDouble("destinationteleportmargin"));
}
-
if (root.keyExists("updatepathrate")) {
defaultParams.updatePathRate(root.getInt("updatepathrate"));
}
-
defaultParams.speedModifier((float) root.getDouble("speedmodifier", 1F));
defaultParams.avoidWater(root.getBoolean("avoidwater"));
if (!root.getBoolean("usedefaultstuckaction") && defaultParams.stuckAction() == TeleportStuckAction.INSTANCE) {
@@ -188,7 +181,6 @@ public class CitizensNavigator implements Navigator, Runnable {
if (defaultParams.baseSpeed() == UNINITIALISED_SPEED) {
defaultParams.baseSpeed(NMS.getSpeedFor(npc));
}
-
updatePathfindingRange();
}
@@ -205,7 +197,6 @@ public class CitizensNavigator implements Navigator, Runnable {
stopNavigating(CancelReason.STUCK);
return;
}
-
if (updateStationaryStatus())
return;
@@ -214,7 +205,6 @@ public class CitizensNavigator implements Navigator, Runnable {
if (!finished) {
localParams.run();
}
-
if (localParams.lookAtFunction() != null) {
if (session == null) {
RotationTrait trait = npc.getOrAddTrait(RotationTrait.class);
@@ -223,14 +213,12 @@ public class CitizensNavigator implements Navigator, Runnable {
}
session.getSession().rotateToFace(localParams.lookAtFunction().apply(this));
}
-
if (localParams.destinationTeleportMargin() > 0
&& npcLoc.distance(targetLoc) <= localParams.destinationTeleportMargin()) {
// TODO: easing?
npc.teleport(targetLoc, TeleportCause.PLUGIN);
finished = true;
}
-
if (!finished)
return;
@@ -252,37 +240,31 @@ public class CitizensNavigator implements Navigator, Runnable {
} else {
root.removeKey("pathfindingrange");
}
-
if (defaultParams.stationaryTicks() != Setting.DEFAULT_STATIONARY_DURATION.asTicks()) {
root.setInt("stationaryticks", defaultParams.stationaryTicks());
} else {
root.removeKey("stationaryticks");
}
-
if (defaultParams.destinationTeleportMargin() != Setting.DEFAULT_DESTINATION_TELEPORT_MARGIN.asDouble()) {
root.setDouble("destinationteleportmargin", defaultParams.destinationTeleportMargin());
} else {
root.removeKey("destinationteleportmargin");
}
-
if (defaultParams.distanceMargin() != Setting.DEFAULT_DISTANCE_MARGIN.asDouble()) {
root.setDouble("distancemargin", defaultParams.distanceMargin());
} else {
root.removeKey("distancemargin");
}
-
if (defaultParams.updatePathRate() != Setting.DEFAULT_PATHFINDER_UPDATE_PATH_RATE.asTicks()) {
root.setInt("updatepathrate", defaultParams.updatePathRate());
} else {
root.removeKey("updatepathrate");
}
-
if (defaultParams.useNewPathfinder() != Setting.USE_NEW_PATHFINDER.asBoolean()) {
root.setBoolean("usenewpathfinder", defaultParams.useNewPathfinder());
} else {
root.removeKey("usenewpathfinder");
}
-
root.setDouble("speedmodifier", defaultParams.speedModifier());
root.setBoolean("avoidwater", defaultParams.avoidWater());
root.setBoolean("usedefaultstuckaction", defaultParams.stuckAction() == TeleportStuckAction.INSTANCE);
@@ -305,7 +287,6 @@ public class CitizensNavigator implements Navigator, Runnable {
cancelNavigation();
return;
}
-
setTarget(params -> {
params.straightLineTargetingDistance(100000);
return new MCTargetStrategy(npc, target, aggressive, params);
@@ -321,7 +302,6 @@ public class CitizensNavigator implements Navigator, Runnable {
cancelNavigation();
return;
}
-
setTarget(params -> new StraightLineNavigationStrategy(npc, target.clone(), params));
}
@@ -334,7 +314,6 @@ public class CitizensNavigator implements Navigator, Runnable {
cancelNavigation();
return;
}
-
setTarget(params -> new MCTargetStrategy(npc, target, aggressive, params));
}
@@ -354,15 +333,13 @@ public class CitizensNavigator implements Navigator, Runnable {
cancelNavigation();
return;
}
-
setTarget(params -> {
- if (npc.isFlyable()) {
+ if (npc.isFlyable())
return new FlyingAStarNavigationStrategy(npc, path, params);
- } else if (params.useNewPathfinder() || !(npc.getEntity() instanceof LivingEntity)) {
+ else if (params.useNewPathfinder() || !(npc.getEntity() instanceof LivingEntity))
return new AStarNavigationStrategy(npc, path, params);
- } else {
+ else
return new MCNavigationStrategy(npc, path, params);
- }
});
}
@@ -374,16 +351,14 @@ public class CitizensNavigator implements Navigator, Runnable {
cancelNavigation();
return;
}
-
- final Location target = targetIn.clone();
+ Location target = targetIn.clone();
setTarget(params -> {
- if (npc.isFlyable()) {
+ if (npc.isFlyable())
return new FlyingAStarNavigationStrategy(npc, target, params);
- } else if (params.useNewPathfinder() || !(npc.getEntity() instanceof LivingEntity)) {
+ else if (params.useNewPathfinder() || !(npc.getEntity() instanceof LivingEntity))
return new AStarNavigationStrategy(npc, target, params);
- } else {
+ else
return new MCNavigationStrategy(npc, target, params);
- }
});
}
@@ -391,7 +366,6 @@ public class CitizensNavigator implements Navigator, Runnable {
if (executing != null) {
executing.stop();
}
-
executing = null;
localParams = defaultParams;
@@ -402,16 +376,11 @@ public class CitizensNavigator implements Navigator, Runnable {
npc.getEntity().setVelocity(velocity);
NMS.cancelMoveDestination(npc.getEntity());
}
-
if (!SUPPORT_CHUNK_TICKETS || !CitizensAPI.hasImplementation() || !CitizensAPI.getPlugin().isEnabled())
return;
- Bukkit.getScheduler().scheduleSyncDelayedTask(CitizensAPI.getPlugin(), new Runnable() {
- @Override
- public void run() {
- updateTicket(isNavigating() ? executing.getTargetAsLocation() : null);
- }
- }, 10);
+ Bukkit.getScheduler().scheduleSyncDelayedTask(CitizensAPI.getPlugin(),
+ () -> updateTicket(isNavigating() ? executing.getTargetAsLocation() : null), 10);
// Location loc = npc.getEntity().getLocation(STATIONARY_LOCATION);
// NMS.look(npc.getEntity(), loc.getYaw(), 0);
@@ -424,28 +393,23 @@ public class CitizensNavigator implements Navigator, Runnable {
if (reason == CancelReason.STUCK && Messaging.isDebugging()) {
Messaging.debug(npc, "navigation ended, stuck", executing);
}
-
if (session != null) {
session.end();
session = null;
}
-
Iterator itr = localParams.callbacks().iterator();
- List callbacks = new ArrayList();
+ List callbacks = new ArrayList<>();
while (itr.hasNext()) {
callbacks.add(itr.next());
itr.remove();
}
-
for (NavigatorCallback callback : callbacks) {
callback.onCompletion(reason);
}
-
if (reason == null) {
stopNavigating();
return;
}
-
if (reason == CancelReason.STUCK) {
StuckAction action = localParams.stuckAction();
NavigationStuckEvent event = new NavigationStuckEvent(this, action);
@@ -458,7 +422,6 @@ public class CitizensNavigator implements Navigator, Runnable {
return;
}
}
-
NavigationCancelEvent event = new NavigationCancelEvent(this, reason);
PathStrategy old = executing;
Bukkit.getPluginManager().callEvent(event);
@@ -534,7 +497,6 @@ public class CitizensNavigator implements Navigator, Runnable {
stopNavigating(CancelReason.STUCK);
return true;
}
-
if (lastX == current.getBlockX() && lastY == current.getBlockY() && lastZ == current.getBlockZ()) {
if (++stationaryTicks >= localParams.stationaryTicks()) {
stopNavigating(CancelReason.STUCK);
@@ -543,7 +505,6 @@ public class CitizensNavigator implements Navigator, Runnable {
} else {
stationaryTicks = 0;
}
-
lastX = current.getBlockX();
lastY = current.getBlockY();
lastZ = current.getBlockZ();
@@ -554,32 +515,29 @@ public class CitizensNavigator implements Navigator, Runnable {
if (!SUPPORT_CHUNK_TICKETS || !CitizensAPI.hasImplementation() || !CitizensAPI.getPlugin().isEnabled())
return;
- if (target != null && this.activeTicket != null
- && new ChunkCoord(target.getChunk()).equals(new ChunkCoord(this.activeTicket.getChunk()))) {
- this.activeTicket = target.clone();
+ if (target != null && activeTicket != null
+ && new ChunkCoord(target.getChunk()).equals(new ChunkCoord(activeTicket.getChunk()))) {
+ activeTicket = target.clone();
return;
}
-
- if (this.activeTicket != null) {
+ if (activeTicket != null) {
try {
- this.activeTicket.getChunk().removePluginChunkTicket(CitizensAPI.getPlugin());
+ activeTicket.getChunk().removePluginChunkTicket(CitizensAPI.getPlugin());
} catch (NoSuchMethodError e) {
SUPPORT_CHUNK_TICKETS = false;
- this.activeTicket = null;
+ activeTicket = null;
}
}
-
if (target == null) {
- this.activeTicket = null;
+ activeTicket = null;
return;
}
-
- this.activeTicket = target.clone();
+ activeTicket = target.clone();
try {
- this.activeTicket.getChunk().addPluginChunkTicket(CitizensAPI.getPlugin());
+ activeTicket.getChunk().addPluginChunkTicket(CitizensAPI.getPlugin());
} catch (NoSuchMethodError e) {
SUPPORT_CHUNK_TICKETS = false;
- this.activeTicket = null;
+ activeTicket = null;
}
}
diff --git a/main/src/main/java/net/citizensnpcs/npc/ai/FlyingAStarNavigationStrategy.java b/main/src/main/java/net/citizensnpcs/npc/ai/FlyingAStarNavigationStrategy.java
index 4deecab50..cb5adb22d 100644
--- a/main/src/main/java/net/citizensnpcs/npc/ai/FlyingAStarNavigationStrategy.java
+++ b/main/src/main/java/net/citizensnpcs/npc/ai/FlyingAStarNavigationStrategy.java
@@ -43,16 +43,16 @@ public class FlyingAStarNavigationStrategy extends AbstractPathStrategy {
public FlyingAStarNavigationStrategy(NPC npc, Iterable path, NavigatorParameters params) {
super(TargetType.LOCATION);
List list = Lists.newArrayList(path);
- this.target = list.get(list.size() - 1).toLocation(npc.getStoredLocation().getWorld());
- this.parameters = params;
+ target = list.get(list.size() - 1).toLocation(npc.getStoredLocation().getWorld());
+ parameters = params;
this.npc = npc;
setPlan(new Path(list));
}
- public FlyingAStarNavigationStrategy(final NPC npc, Location dest, NavigatorParameters params) {
+ public FlyingAStarNavigationStrategy(NPC npc, Location dest, NavigatorParameters params) {
super(TargetType.LOCATION);
- this.target = dest;
- this.parameters = params;
+ target = dest;
+ parameters = params;
this.npc = npc;
}
@@ -89,7 +89,7 @@ public class FlyingAStarNavigationStrategy extends AbstractPathStrategy {
}
public void setPlan(Path path) {
- this.plan = path;
+ plan = path;
if (plan == null || plan.isComplete()) {
setCancelReason(CancelReason.STUCK);
} else {
@@ -133,15 +133,13 @@ public class FlyingAStarNavigationStrategy extends AbstractPathStrategy {
setPlan(plan);
}
}
- if (getCancelReason() != null || plan == null || plan.isComplete()) {
+ if (getCancelReason() != null || plan == null || plan.isComplete())
return true;
- }
Location current = npc.getEntity().getLocation();
if (current.toVector().distance(vector) <= parameters.distanceMargin()) {
plan.update(npc);
- if (plan.isComplete()) {
+ if (plan.isComplete())
return true;
- }
vector = plan.getCurrentVector();
}
if (parameters.debug()) {
@@ -159,7 +157,6 @@ public class FlyingAStarNavigationStrategy extends AbstractPathStrategy {
// 1.8 compatibility
}
}
-
Vector centeredDest = new Vector(vector.getX() + 0.5D, vector.getY() + 0.1D, vector.getZ() + 0.5D);
double d0 = centeredDest.getX() - current.getX();
double d1 = centeredDest.getY() - current.getY();
@@ -178,10 +175,9 @@ public class FlyingAStarNavigationStrategy extends AbstractPathStrategy {
NMS.setVerticalMovement(npc.getEntity(), 0.5);
Util.faceLocation(npc.getEntity(), centeredDest.toLocation(npc.getEntity().getWorld()));
}
-
plan.run(npc);
return false;
}
- private static final AStarMachine ASTAR = AStarMachine.createWithDefaultStorage();
+ private static AStarMachine ASTAR = AStarMachine.createWithDefaultStorage();
}
diff --git a/main/src/main/java/net/citizensnpcs/npc/ai/MCNavigationStrategy.java b/main/src/main/java/net/citizensnpcs/npc/ai/MCNavigationStrategy.java
index d1f32cb25..886a61f17 100644
--- a/main/src/main/java/net/citizensnpcs/npc/ai/MCNavigationStrategy.java
+++ b/main/src/main/java/net/citizensnpcs/npc/ai/MCNavigationStrategy.java
@@ -23,24 +23,24 @@ public class MCNavigationStrategy extends AbstractPathStrategy {
private final NavigatorParameters parameters;
private final Location target;
- MCNavigationStrategy(final NPC npc, Iterable path, NavigatorParameters params) {
+ MCNavigationStrategy(NPC npc, Iterable path, NavigatorParameters params) {
super(TargetType.LOCATION);
List list = Lists.newArrayList(path);
- this.target = list.get(list.size() - 1).toLocation(npc.getStoredLocation().getWorld());
- this.parameters = params;
+ target = list.get(list.size() - 1).toLocation(npc.getStoredLocation().getWorld());
+ parameters = params;
entity = npc.getEntity();
- this.navigator = NMS.getTargetNavigator(npc.getEntity(), list, params);
+ navigator = NMS.getTargetNavigator(npc.getEntity(), list, params);
}
- MCNavigationStrategy(final NPC npc, Location dest, NavigatorParameters params) {
+ MCNavigationStrategy(NPC npc, Location dest, NavigatorParameters params) {
super(TargetType.LOCATION);
if (!MinecraftBlockExaminer.canStandIn(dest.getBlock())) {
dest = MinecraftBlockExaminer.findValidLocationAbove(dest, 2);
}
- this.target = Util.getCenterLocation(dest.getBlock());
- this.parameters = params;
+ target = Util.getCenterLocation(dest.getBlock());
+ parameters = params;
entity = npc.getEntity();
- this.navigator = NMS.getTargetNavigator(entity, target, params);
+ navigator = NMS.getTargetNavigator(entity, target, params);
}
@Override
diff --git a/main/src/main/java/net/citizensnpcs/npc/ai/MCTargetStrategy.java b/main/src/main/java/net/citizensnpcs/npc/ai/MCTargetStrategy.java
index b3fff6fc4..a66588e98 100644
--- a/main/src/main/java/net/citizensnpcs/npc/ai/MCTargetStrategy.java
+++ b/main/src/main/java/net/citizensnpcs/npc/ai/MCTargetStrategy.java
@@ -31,17 +31,17 @@ public class MCTargetStrategy implements PathStrategy, EntityTarget {
public MCTargetStrategy(NPC npc, org.bukkit.entity.Entity target, boolean aggro, NavigatorParameters params) {
this.npc = npc;
- this.parameters = params;
- this.handle = npc.getEntity();
+ parameters = params;
+ handle = npc.getEntity();
this.target = target;
TargetNavigator nms = NMS.getTargetNavigator(npc.getEntity(), target, params);
- this.targetNavigator = nms != null && !params.useNewPathfinder() ? nms : new AStarTargeter();
+ targetNavigator = nms != null && !params.useNewPathfinder() ? nms : new AStarTargeter();
this.aggro = aggro;
}
private boolean canAttack() {
BoundingBox handleBB = NMS.getBoundingBox(handle), targetBB = NMS.getBoundingBox(target);
- return attackTicks <= 0 && (handleBB.maxY > targetBB.minY && handleBB.minY < targetBB.maxY)
+ return attackTicks <= 0 && handleBB.maxY > targetBB.minY && handleBB.minY < targetBB.maxY
&& distance() <= parameters.attackRange() && ((LivingEntity) handle).hasLineOfSight(target);
}
@@ -105,19 +105,16 @@ public class MCTargetStrategy implements PathStrategy, EntityTarget {
cancelReason = CancelReason.TARGET_DIED;
return true;
}
-
if (target.getWorld() != handle.getWorld()) {
cancelReason = CancelReason.TARGET_MOVED_WORLD;
return true;
}
-
if (cancelReason != null)
return true;
if (parameters.straightLineTargetingDistance() > 0 && !(targetNavigator instanceof StraightLineTargeter)) {
targetNavigator = new StraightLineTargeter(targetNavigator);
}
-
if (!aggro && distance() <= parameters.distanceMargin()) {
stop();
return false;
@@ -125,7 +122,6 @@ public class MCTargetStrategy implements PathStrategy, EntityTarget {
targetNavigator.setPath();
updateCounter = 0;
}
-
targetNavigator.update();
NMS.look(handle, target);
@@ -137,11 +133,9 @@ public class MCTargetStrategy implements PathStrategy, EntityTarget {
}
attackTicks = parameters.attackDelayTicks();
}
-
if (attackTicks > 0) {
attackTicks--;
}
-
return false;
}
@@ -179,9 +173,8 @@ public class MCTargetStrategy implements PathStrategy, EntityTarget {
private void setStrategy() {
Location location = parameters.entityTargetLocationMapper().apply(target);
- if (location == null) {
+ if (location == null)
throw new IllegalStateException("mapper should not return null");
- }
if (!npc.isFlyable()) {
Block block = location.getBlock();
while (!MinecraftBlockExaminer.canStandOn(block.getRelative(BlockFace.DOWN))) {
@@ -239,7 +232,6 @@ public class MCTargetStrategy implements PathStrategy, EntityTarget {
active = new StraightLineNavigationStrategy(npc, target, parameters);
return;
}
-
active = null;
fallback.setPath();
}
diff --git a/main/src/main/java/net/citizensnpcs/npc/ai/StraightLineNavigationStrategy.java b/main/src/main/java/net/citizensnpcs/npc/ai/StraightLineNavigationStrategy.java
index d6cd45a98..18bb33a7f 100644
--- a/main/src/main/java/net/citizensnpcs/npc/ai/StraightLineNavigationStrategy.java
+++ b/main/src/main/java/net/citizensnpcs/npc/ai/StraightLineNavigationStrategy.java
@@ -27,13 +27,13 @@ public class StraightLineNavigationStrategy extends AbstractPathStrategy {
this.params = params;
this.target = target;
this.npc = npc;
- this.destination = params.entityTargetLocationMapper().apply(target);
+ destination = params.entityTargetLocationMapper().apply(target);
}
public StraightLineNavigationStrategy(NPC npc, Location dest, NavigatorParameters params) {
super(TargetType.LOCATION);
this.params = params;
- this.destination = dest;
+ destination = dest;
this.npc = npc;
}
@@ -68,7 +68,6 @@ public class StraightLineNavigationStrategy extends AbstractPathStrategy {
if (target != null) {
destination = params.entityTargetLocationMapper().apply(target);
}
-
Vector destVector = currLoc.toVector().add(destination.toVector().subtract(currLoc.toVector()).normalize());
Location destLoc = destVector.toLocation(destination.getWorld());
if (!npc.isFlyable() && destVector.getBlockY() > currLoc.getBlockY()) {
@@ -84,7 +83,6 @@ public class StraightLineNavigationStrategy extends AbstractPathStrategy {
destLoc = block.getLocation();
destVector = destLoc.toVector();
}
-
double dX = destVector.getX() - currLoc.getX();
double dZ = destVector.getZ() - currLoc.getZ();
double dY = destVector.getY() - currLoc.getY();
@@ -105,11 +103,9 @@ public class StraightLineNavigationStrategy extends AbstractPathStrategy {
while (normalisedTargetYaw >= 180.0F) {
normalisedTargetYaw -= 360.0F;
}
-
while (normalisedTargetYaw < -180.0F) {
normalisedTargetYaw += 360.0F;
}
-
if (npc.getEntity().getType() != EntityType.ENDER_DRAGON) {
NMS.setVerticalMovement(npc.getEntity(), 0.5);
NMS.setHeadYaw(npc.getEntity(), currLoc.getYaw() + normalisedTargetYaw);
@@ -121,7 +117,7 @@ public class StraightLineNavigationStrategy extends AbstractPathStrategy {
Vector dir = destVector.subtract(currLoc.toVector()).normalize().multiply(0.2);
Block in = currLoc.getBlock();
if (distance > 0 && dY >= 1 && xzDistance <= 2.75
- || (dY >= 0.2 && MinecraftBlockExaminer.isLiquidOrInLiquid(in))) {
+ || dY >= 0.2 && MinecraftBlockExaminer.isLiquidOrInLiquid(in)) {
dir.add(new Vector(0, 0.75, 0));
}
Util.faceLocation(npc.getEntity(), destLoc);
diff --git a/main/src/main/java/net/citizensnpcs/npc/profile/ProfileFetchResult.java b/main/src/main/java/net/citizensnpcs/npc/profile/ProfileFetchResult.java
index be70c648d..1e563c44d 100644
--- a/main/src/main/java/net/citizensnpcs/npc/profile/ProfileFetchResult.java
+++ b/main/src/main/java/net/citizensnpcs/npc/profile/ProfileFetchResult.java
@@ -4,14 +4,6 @@ package net.citizensnpcs.npc.profile;
* The result status of a profile fetch.
*/
public enum ProfileFetchResult {
- /**
- * The profile has not been fetched yet.
- */
- PENDING,
- /**
- * The profile was successfully fetched.
- */
- SUCCESS,
/**
* The profile request failed for unknown reasons.
*/
@@ -20,6 +12,14 @@ public enum ProfileFetchResult {
* The profile request failed because the profile was not found.
*/
NOT_FOUND,
+ /**
+ * The profile has not been fetched yet.
+ */
+ PENDING,
+ /**
+ * The profile was successfully fetched.
+ */
+ SUCCESS,
/**
* The profile request failed because too many requests were sent.
*/
diff --git a/main/src/main/java/net/citizensnpcs/npc/profile/ProfileFetchThread.java b/main/src/main/java/net/citizensnpcs/npc/profile/ProfileFetchThread.java
index a75d3f23d..7808be69a 100644
--- a/main/src/main/java/net/citizensnpcs/npc/profile/ProfileFetchThread.java
+++ b/main/src/main/java/net/citizensnpcs/npc/profile/ProfileFetchThread.java
@@ -31,8 +31,8 @@ import net.citizensnpcs.util.NMS;
* @see ProfileFetcher
*/
class ProfileFetchThread implements Runnable {
- private final Deque queue = new ArrayDeque();
- private final Map requested = new HashMap(40);
+ private final Deque queue = new ArrayDeque<>();
+ private final Map requested = new HashMap<>(40);
private final Object sync = new Object(); // sync for queue & requested fields
ProfileFetchThread() {
@@ -65,7 +65,6 @@ class ProfileFetchThread implements Runnable {
queue.add(request);
}
}
-
if (handler != null) {
if (request.getResult() == ProfileFetchResult.PENDING
|| request.getResult() == ProfileFetchResult.TOO_MANY_REQUESTS) {
@@ -100,7 +99,6 @@ class ProfileFetchThread implements Runnable {
return;
}
}
-
if (handler != null) {
if (request.getResult() == ProfileFetchResult.PENDING
|| request.getResult() == ProfileFetchResult.TOO_MANY_REQUESTS) {
@@ -117,7 +115,7 @@ class ProfileFetchThread implements Runnable {
* @param requests
* The profile requests.
*/
- private void fetchRequests(final Collection requests) {
+ private void fetchRequests(Collection requests) {
Preconditions.checkNotNull(requests);
String[] playerNames = new String[requests.size()];
@@ -126,7 +124,6 @@ class ProfileFetchThread implements Runnable {
for (ProfileRequest request : requests) {
playerNames[i++] = request.getPlayerName();
}
-
NMS.findProfilesByNames(playerNames, new ProfileLookupCallback() {
@SuppressWarnings("unused")
public void onProfileLookupFailed(GameProfile profile, Exception e) {
@@ -139,7 +136,6 @@ class ProfileFetchThread implements Runnable {
Messaging.debug("Profile lookup for player '" + profileName + "' failed: " + getExceptionMsg(e));
Messaging.debug(Throwables.getStackTraceAsString(e));
}
-
ProfileRequest request = findRequest(profileName, requests);
if (request == null)
return;
@@ -154,7 +150,7 @@ class ProfileFetchThread implements Runnable {
}
@Override
- public void onProfileLookupSucceeded(final GameProfile profile) {
+ public void onProfileLookupSucceeded(GameProfile profile) {
Messaging.idebug(() -> "Fetched profile " + profile.getId() + " for player " + profile.getName());
ProfileRequest request = findRequest(profile.getName(), requests);
@@ -169,7 +165,6 @@ class ProfileFetchThread implements Runnable {
+ getExceptionMsg(e) + " " + isTooManyRequests(e));
Messaging.debug(Throwables.getStackTraceAsString(e));
}
-
if (isTooManyRequests(e)) {
request.setResult(null, ProfileFetchResult.TOO_MANY_REQUESTS);
} else {
@@ -188,10 +183,9 @@ class ProfileFetchThread implements Runnable {
if (queue.isEmpty())
return;
- requests = new ArrayList(queue);
+ requests = new ArrayList<>(queue);
queue.clear();
}
-
try {
fetchRequests(requests);
} catch (Exception ex) {
@@ -202,7 +196,7 @@ class ProfileFetchThread implements Runnable {
}
}
- private static void addHandler(final ProfileRequest request, final ProfileFetchHandler handler) {
+ private static void addHandler(ProfileRequest request, ProfileFetchHandler handler) {
Bukkit.getScheduler().scheduleSyncDelayedTask(CitizensAPI.getPlugin(), () -> request.addHandler(handler), 1);
}
@@ -211,9 +205,8 @@ class ProfileFetchThread implements Runnable {
name = name.toLowerCase();
for (ProfileRequest request : requests) {
- if (request.getPlayerName().equals(name)) {
+ if (request.getPlayerName().equals(name))
return request;
- }
}
return null;
}
@@ -226,19 +219,18 @@ class ProfileFetchThread implements Runnable {
String message = e.getMessage();
String cause = e.getCause() != null ? e.getCause().getMessage() : null;
- return (message != null && message.contains("did not find"))
- || (cause != null && cause.contains("did not find"));
+ return message != null && message.contains("did not find") || cause != null && cause.contains("did not find");
}
private static boolean isTooManyRequests(Throwable e) {
String message = e.getMessage();
String cause = e.getCause() != null ? e.getCause().getMessage() : null;
- return (message != null && message.contains("too many requests"))
- || (cause != null && cause.contains("too many requests"));
+ return message != null && message.contains("too many requests")
+ || cause != null && cause.contains("too many requests");
}
- private static void sendResult(final ProfileFetchHandler handler, final ProfileRequest request) {
+ private static void sendResult(ProfileFetchHandler handler, ProfileRequest request) {
Bukkit.getScheduler().scheduleSyncDelayedTask(CitizensAPI.getPlugin(), () -> handler.onResult(request), 1);
}
}
diff --git a/main/src/main/java/net/citizensnpcs/npc/profile/ProfileFetcher.java b/main/src/main/java/net/citizensnpcs/npc/profile/ProfileFetcher.java
index 844553e6f..caa3cd325 100644
--- a/main/src/main/java/net/citizensnpcs/npc/profile/ProfileFetcher.java
+++ b/main/src/main/java/net/citizensnpcs/npc/profile/ProfileFetcher.java
@@ -48,7 +48,6 @@ public class ProfileFetcher {
if (THREAD_TASK != null) {
THREAD_TASK.cancel();
}
-
PROFILE_THREAD = new ProfileFetchThread();
THREAD_TASK = Bukkit.getScheduler().runTaskTimerAsynchronously(CitizensAPI.getPlugin(), PROFILE_THREAD, 21, 20);
}
diff --git a/main/src/main/java/net/citizensnpcs/npc/profile/ProfileRequest.java b/main/src/main/java/net/citizensnpcs/npc/profile/ProfileRequest.java
index 4fe5167f2..184a98b52 100644
--- a/main/src/main/java/net/citizensnpcs/npc/profile/ProfileRequest.java
+++ b/main/src/main/java/net/citizensnpcs/npc/profile/ProfileRequest.java
@@ -61,10 +61,9 @@ public class ProfileRequest {
handler.onResult(this);
return;
}
-
- if (handlers == null)
- handlers = new ArrayDeque();
-
+ if (handlers == null) {
+ handlers = new ArrayDeque<>();
+ }
handlers.addLast(handler);
}
@@ -105,24 +104,20 @@ public class ProfileRequest {
* @param result
* The result of the request.
*/
- void setResult(final @Nullable GameProfile profile, final ProfileFetchResult result) {
+ void setResult(@Nullable GameProfile profile, ProfileFetchResult result) {
if (!CitizensAPI.hasImplementation())
return;
- Bukkit.getScheduler().scheduleSyncDelayedTask(CitizensAPI.getPlugin(), new Runnable() {
- @Override
- public void run() {
- ProfileRequest.this.profile = profile;
- ProfileRequest.this.result = result;
+ Bukkit.getScheduler().scheduleSyncDelayedTask(CitizensAPI.getPlugin(), () -> {
+ ProfileRequest.this.profile = profile;
+ ProfileRequest.this.result = result;
- if (handlers == null)
- return;
+ if (handlers == null)
+ return;
- while (!handlers.isEmpty()) {
- handlers.removeFirst().onResult(ProfileRequest.this);
- }
-
- handlers = null;
+ while (!handlers.isEmpty()) {
+ handlers.removeFirst().onResult(ProfileRequest.this);
}
+ handlers = null;
});
}
}
diff --git a/main/src/main/java/net/citizensnpcs/npc/skin/Skin.java b/main/src/main/java/net/citizensnpcs/npc/skin/Skin.java
index c8cfe1eb4..5129560d2 100644
--- a/main/src/main/java/net/citizensnpcs/npc/skin/Skin.java
+++ b/main/src/main/java/net/citizensnpcs/npc/skin/Skin.java
@@ -22,9 +22,7 @@ import net.citizensnpcs.api.event.DespawnReason;
import net.citizensnpcs.api.event.SpawnReason;
import net.citizensnpcs.api.npc.NPC;
import net.citizensnpcs.api.util.Messaging;
-import net.citizensnpcs.npc.profile.ProfileFetchHandler;
import net.citizensnpcs.npc.profile.ProfileFetcher;
-import net.citizensnpcs.npc.profile.ProfileRequest;
import net.citizensnpcs.trait.SkinTrait;
import net.citizensnpcs.util.SkinProperty;
@@ -36,7 +34,7 @@ public class Skin {
private int fetchRetries = -1;
private boolean hasFetched;
private volatile boolean isValid = true;
- private final Map pending = new WeakHashMap(15);
+ private final Map pending = new WeakHashMap<>(15);
private BukkitTask retryTask;
private volatile SkinProperty skinData;
private volatile UUID skinId;
@@ -58,7 +56,6 @@ public class Skin {
CACHE.put(this.skinName, this);
}
-
// fetch();
}
@@ -84,29 +81,27 @@ public class Skin {
// If npc requires latest skin, cache is used for faster availability until the latest skin can be loaded.
String cachedName = npc.data().get(CACHED_SKIN_UUID_NAME_METADATA);
String texture = skinTrait.getTexture();
- if (this.skinName.equals(cachedName) && texture != null && !texture.equals("cache")) {
+ if (skinName.equals(cachedName) && texture != null && !texture.equals("cache")) {
setNPCTexture(entity, new SkinProperty("textures", texture, skinTrait.getSignature()));
// check if NPC prefers to use cached skin over the latest skin.
if (entity.getNPC().data().has("player-skin-use-latest")) {
entity.getNPC().data().remove("player-skin-use-latest");
}
- if (!skinTrait.shouldUpdateSkins()) {
+ if (!skinTrait.shouldUpdateSkins())
// cache preferred
return true;
- }
}
-
if (!hasSkinData()) {
String defaultSkinName = ChatColor.stripColor(npc.getName()).toLowerCase();
- if (npc.hasTrait(SkinTrait.class) && this.skinName.equals(defaultSkinName)
+ if (npc.hasTrait(SkinTrait.class) && skinName.equals(defaultSkinName)
&& !npc.getOrAddTrait(SkinTrait.class).fetchDefaultSkin())
return false;
- if (hasFetched) {
+ if (hasFetched)
return true;
- } else {
+ else {
if (!fetching) {
fetch();
}
@@ -114,7 +109,6 @@ public class Skin {
return false;
}
}
-
setNPCSkinData(entity, skinName, skinId, skinData);
return true;
@@ -144,64 +138,54 @@ public class Skin {
}
private void fetch() {
- final int maxRetries = Setting.MAX_NPC_SKIN_RETRIES.asInt();
+ int maxRetries = Setting.MAX_NPC_SKIN_RETRIES.asInt();
if (maxRetries > -1 && fetchRetries >= maxRetries) {
if (Messaging.isDebugging()) {
Messaging.debug("Reached max skin fetch retries for '" + skinName + "'");
}
return;
}
-
if (skinName.length() < 3 || skinName.length() > 16) {
if (Messaging.isDebugging()) {
Messaging.debug("Skin name invalid length '" + skinName + "'");
}
return;
}
-
- if (skinName.toLowerCase().startsWith("cit-")) {
+ if (skinName.toLowerCase().startsWith("cit-"))
return;
- }
fetching = true;
- ProfileFetcher.fetch(this.skinName, new ProfileFetchHandler() {
- @Override
- public void onResult(ProfileRequest request) {
- hasFetched = true;
+ ProfileFetcher.fetch(skinName, request -> {
+ hasFetched = true;
- switch (request.getResult()) {
- case NOT_FOUND:
- isValid = false;
+ switch (request.getResult()) {
+ case NOT_FOUND:
+ isValid = false;
+ break;
+ case TOO_MANY_REQUESTS:
+ if (maxRetries == 0) {
break;
- case TOO_MANY_REQUESTS:
- if (maxRetries == 0) {
- break;
- }
- fetchRetries++;
- long delay = Setting.NPC_SKIN_RETRY_DELAY.asTicks();
- retryTask = Bukkit.getScheduler().runTaskLater(CitizensAPI.getPlugin(), new Runnable() {
- @Override
- public void run() {
- fetch();
- }
- }, delay);
+ }
+ fetchRetries++;
+ long delay = Setting.NPC_SKIN_RETRY_DELAY.asTicks();
+ retryTask = Bukkit.getScheduler().runTaskLater(CitizensAPI.getPlugin(), (Runnable) this::fetch,
+ delay);
- Messaging.idebug(() -> "Retrying skin fetch for '" + skinName + "' in " + delay + " ticks.");
- break;
- case SUCCESS:
- GameProfile profile = request.getProfile();
- setData(profile);
- break;
- default:
- break;
- }
+ Messaging.idebug(() -> "Retrying skin fetch for '" + skinName + "' in " + delay + " ticks.");
+ break;
+ case SUCCESS:
+ GameProfile profile = request.getProfile();
+ setData(profile);
+ break;
+ default:
+ break;
}
});
}
private void fetchForced() {
- final int maxRetries = Setting.MAX_NPC_SKIN_RETRIES.asInt();
+ int maxRetries = Setting.MAX_NPC_SKIN_RETRIES.asInt();
if (maxRetries > -1 && fetchRetries >= maxRetries) {
Messaging.idebug(() -> "Reached max skin fetch retries for '" + skinName + "'");
return;
@@ -210,44 +194,35 @@ public class Skin {
Messaging.idebug(() -> "Skin name invalid length '" + skinName + "'");
return;
}
-
- if (skinName.toLowerCase().startsWith("cit-")) {
+ if (skinName.toLowerCase().startsWith("cit-"))
return;
- }
fetching = true;
- ProfileFetcher.fetchForced(this.skinName, new ProfileFetchHandler() {
- @Override
- public void onResult(ProfileRequest request) {
- hasFetched = true;
+ ProfileFetcher.fetchForced(skinName, request -> {
+ hasFetched = true;
- switch (request.getResult()) {
- case NOT_FOUND:
- isValid = false;
+ switch (request.getResult()) {
+ case NOT_FOUND:
+ isValid = false;
+ break;
+ case TOO_MANY_REQUESTS:
+ if (maxRetries == 0) {
break;
- case TOO_MANY_REQUESTS:
- if (maxRetries == 0) {
- break;
- }
- fetchRetries++;
- int delay = Setting.NPC_SKIN_RETRY_DELAY.asTicks();
- retryTask = Bukkit.getScheduler().runTaskLater(CitizensAPI.getPlugin(), new Runnable() {
- @Override
- public void run() {
- fetchForced();
- }
- }, delay);
+ }
+ fetchRetries++;
+ int delay = Setting.NPC_SKIN_RETRY_DELAY.asTicks();
+ retryTask = Bukkit.getScheduler().runTaskLater(CitizensAPI.getPlugin(),
+ (Runnable) this::fetchForced, delay);
- Messaging.idebug(() -> "Retrying skin fetch for '" + skinName + "' in " + delay + " ticks.");
- break;
- case SUCCESS:
- GameProfile profile = request.getProfile();
- setData(profile);
- break;
- default:
- break;
- }
+ Messaging.idebug(() -> "Retrying skin fetch for '" + skinName + "' in " + delay + " ticks.");
+ break;
+ case SUCCESS:
+ GameProfile profile = request.getProfile();
+ setData(profile);
+ break;
+ default:
+ break;
}
});
}
@@ -288,16 +263,14 @@ public class Skin {
isValid = false;
return;
}
-
if (!profile.getName().toLowerCase().equals(skinName)) {
Messaging.debug("GameProfile name (" + profile.getName() + ") and " + "skin name (" + skinName
+ ") do not match. Has the user renamed recently?");
}
-
skinId = profile.getId();
skinData = SkinProperty.fromMojangProfile(profile);
- List entities = new ArrayList(pending.keySet());
+ List entities = new ArrayList<>(pending.keySet());
for (SkinnableEntity entity : entities) {
applyAndRespawn(entity);
}
@@ -371,13 +344,11 @@ public class Skin {
synchronized (CACHE) {
skin = CACHE.get(skinName);
}
-
if (skin == null) {
skin = new Skin(skinName);
} else if (forceUpdate) {
skin.fetchForced();
}
-
return skin;
}
@@ -405,14 +376,13 @@ public class Skin {
// packet errors that disconnect the client.
SkinProperty current = SkinProperty.fromMojangProfile(profile);
if (current != null && current.value.equals(skinProperty.value) && current.signature != null
- && current.signature.equals(skinProperty.signature)) {
+ && current.signature.equals(skinProperty.signature))
return;
- }
skinProperty.apply(profile);
}
- private static final Map CACHE = new HashMap(20);
- public static final String CACHED_SKIN_UUID_METADATA = "cached-skin-uuid";
- public static final String CACHED_SKIN_UUID_NAME_METADATA = "cached-skin-uuid-name";
+ private static Map CACHE = new HashMap<>(20);
+ public static String CACHED_SKIN_UUID_METADATA = "cached-skin-uuid";
+ public static String CACHED_SKIN_UUID_NAME_METADATA = "cached-skin-uuid-name";
}
diff --git a/main/src/main/java/net/citizensnpcs/npc/skin/SkinPacketTracker.java b/main/src/main/java/net/citizensnpcs/npc/skin/SkinPacketTracker.java
index f851370f8..06412cad2 100644
--- a/main/src/main/java/net/citizensnpcs/npc/skin/SkinPacketTracker.java
+++ b/main/src/main/java/net/citizensnpcs/npc/skin/SkinPacketTracker.java
@@ -28,7 +28,7 @@ import net.citizensnpcs.util.NMS;
*/
public class SkinPacketTracker {
private final SkinnableEntity entity;
- private final Map inProgress = new HashMap(
+ private final Map inProgress = new HashMap<>(
Math.max(128, Math.min(1024, Bukkit.getMaxPlayers() / 2)));
private boolean isRemoved;
private Skin skin;
@@ -43,7 +43,7 @@ public class SkinPacketTracker {
Preconditions.checkNotNull(entity);
this.entity = entity;
- this.skin = Skin.get(entity);
+ skin = Skin.get(entity);
if (LISTENER == null) {
LISTENER = new PlayerListener();
@@ -76,10 +76,7 @@ public class SkinPacketTracker {
*/
void notifyRemovePacketSent(UUID playerId) {
PlayerEntry entry = inProgress.get(playerId);
- if (entry == null)
- return;
-
- if (entry.removeCount == 0)
+ if (entry == null || entry.removeCount == 0)
return;
entry.removeCount -= 1;
@@ -94,7 +91,7 @@ public class SkinPacketTracker {
* Notify that the NPC skin has been changed.
*/
public void notifySkinChange(boolean forceUpdate) {
- this.skin = Skin.get(entity, forceUpdate);
+ skin = Skin.get(entity, forceUpdate);
skin.applyAndRespawn(entity);
}
@@ -111,9 +108,9 @@ public class SkinPacketTracker {
Collection extends Player> players = Bukkit.getOnlinePlayers();
for (Player player : players) {
- if (player.hasMetadata("NPC"))
+ if (player.hasMetadata("NPC")) {
continue;
-
+ }
// send packet now and later to ensure removal from player list
NMS.sendTabListRemove(player, entity.getBukkitEntity());
TAB_LIST_REMOVER.sendPacket(player, entity);
@@ -137,7 +134,7 @@ public class SkinPacketTracker {
}.runTaskLater(CitizensAPI.getPlugin(), 15);
}
- private void scheduleRemovePacket(final PlayerEntry entry) {
+ private void scheduleRemovePacket(PlayerEntry entry) {
if (isRemoved || !CitizensAPI.hasImplementation() || !CitizensAPI.getPlugin().isEnabled()
|| !shouldRemoveFromTabList())
return;
@@ -177,7 +174,7 @@ public class SkinPacketTracker {
* @param player
* The player.
*/
- public void updateViewer(final Player player) {
+ public void updateViewer(Player player) {
Preconditions.checkNotNull(player);
if (isRemoved || player.hasMetadata("NPC"))
@@ -189,7 +186,6 @@ public class SkinPacketTracker {
} else {
entry = new PlayerEntry(player);
}
-
TAB_LIST_REMOVER.cancelPackets(player, entity);
inProgress.put(player.getUniqueId(), entry);
@@ -199,7 +195,7 @@ public class SkinPacketTracker {
}
}
- private class PlayerEntry {
+ private static class PlayerEntry {
Player player;
int removeCount;
BukkitTask removeTask;
@@ -228,6 +224,6 @@ public class SkinPacketTracker {
}
private static PlayerListener LISTENER;
- private static final int PACKET_DELAY_REMOVE = 2;
- private static final TabListRemover TAB_LIST_REMOVER = new TabListRemover();
+ private static int PACKET_DELAY_REMOVE = 2;
+ private static TabListRemover TAB_LIST_REMOVER = new TabListRemover();
}
diff --git a/main/src/main/java/net/citizensnpcs/npc/skin/SkinUpdateTracker.java b/main/src/main/java/net/citizensnpcs/npc/skin/SkinUpdateTracker.java
index 111012e02..bb5775928 100644
--- a/main/src/main/java/net/citizensnpcs/npc/skin/SkinUpdateTracker.java
+++ b/main/src/main/java/net/citizensnpcs/npc/skin/SkinUpdateTracker.java
@@ -37,8 +37,8 @@ import net.citizensnpcs.util.Util;
* @see net.citizensnpcs.EventListen
*/
public class SkinUpdateTracker {
- private final Map navigating = new WeakHashMap(25);
- private final Map playerTrackers = new HashMap(
+ private final Map navigating = new WeakHashMap<>(25);
+ private final Map playerTrackers = new HashMap<>(
Math.max(128, Math.min(1024, Bukkit.getMaxPlayers() / 2)));
private final NPCNavigationUpdater updater = new NPCNavigationUpdater();
@@ -57,13 +57,7 @@ public class SkinUpdateTracker {
// skinnable entity is within the player's field of view.
private boolean canSee(Player player, SkinnableEntity skinnable, boolean checkFov) {
Player entity = skinnable.getBukkitEntity();
- if (entity == null)
- return false;
-
- if (!player.canSee(entity))
- return false;
-
- if (!player.getWorld().equals(entity.getWorld()))
+ if (entity == null || !player.canSee(entity) || !player.getWorld().equals(entity.getWorld()))
return false;
Location playerLoc = player.getLocation();
@@ -92,7 +86,6 @@ public class SkinUpdateTracker {
}
return hasMoved;
}
-
return true;
}
@@ -101,17 +94,14 @@ public class SkinUpdateTracker {
}
private List getNearbyNPCs(Player player, boolean reset, boolean checkFov) {
- List results = new ArrayList();
+ List results = new ArrayList<>();
PlayerTracker tracker = getTracker(player, reset);
for (NPC npc : getAllNPCs()) {
SkinnableEntity skinnable = getSkinnable(npc);
- if (skinnable == null)
- continue;
-
// if checking field of view, don't add skins that have already been updated for FOV
- if (checkFov && tracker.fovVisibleSkins.contains(skinnable))
+ if (skinnable == null || checkFov && tracker.fovVisibleSkins.contains(skinnable)) {
continue;
-
+ }
if (canSee(player, skinnable, checkFov)) {
results.add(skinnable);
}
@@ -126,9 +116,9 @@ public class SkinUpdateTracker {
for (SkinnableEntity skinnable : navigating.keySet()) {
// make sure player hasn't already been updated to prevent excessive tab list flashing
// while NPC's are navigating and to reduce the number of times #canSee is invoked.
- if (tracker.fovVisibleSkins.contains(skinnable))
+ if (tracker.fovVisibleSkins.contains(skinnable)) {
continue;
-
+ }
if (canSee(player, skinnable, true)) {
output.add(skinnable);
}
@@ -231,10 +221,7 @@ public class SkinUpdateTracker {
public void onPlayerMove(Player player) {
Preconditions.checkNotNull(player);
PlayerTracker updateTracker = playerTrackers.get(player.getUniqueId());
- if (updateTracker == null)
- return;
-
- if (!updateTracker.shouldUpdate(player))
+ if (updateTracker == null || !updateTracker.shouldUpdate(player))
return;
updatePlayer(player, 10, false);
@@ -277,14 +264,13 @@ public class SkinUpdateTracker {
Location location = entity.getLocation();
List players = entity.getWorld().getPlayers();
for (Player player : players) {
- if (player.hasMetadata("NPC"))
+ if (player.hasMetadata("NPC")) {
continue;
+ }
Location ploc = player.getLocation();
- if (ploc.getWorld() != location.getWorld())
+ if (ploc.getWorld() != location.getWorld() || ploc.distance(location) > viewDistance) {
continue;
- if (ploc.distance(location) > viewDistance)
- continue;
-
+ }
PlayerTracker tracker = playerTrackers.get(player.getUniqueId());
if (tracker != null) {
tracker.hardReset(player);
@@ -302,7 +288,7 @@ public class SkinUpdateTracker {
* @param reset
* True to hard reset the players tracking info, otherwise false.
*/
- public void updatePlayer(final Player player, long delay, final boolean reset) {
+ public void updatePlayer(Player player, long delay, boolean reset) {
if (player.hasMetadata("NPC"))
return;
@@ -328,13 +314,13 @@ public class SkinUpdateTracker {
if (navigating.isEmpty() || playerTrackers.isEmpty())
return;
- List nearby = new ArrayList(10);
+ List nearby = new ArrayList<>(10);
Set seen = Sets.newHashSet();
for (Player player : Bukkit.getOnlinePlayers()) {
seen.add(player.getUniqueId());
- if (player.hasMetadata("NPC"))
+ if (player.hasMetadata("NPC")) {
continue;
-
+ }
getNewVisibleNavigating(player, nearby);
for (SkinnableEntity skinnable : nearby) {
@@ -342,7 +328,6 @@ public class SkinUpdateTracker {
tracker.fovVisibleSkins.add(skinnable);
updater.queue.offer(new UpdateInfo(player, skinnable));
}
-
nearby.clear();
}
playerTrackers.keySet().removeIf(uuid -> !seen.contains(uuid));
@@ -351,8 +336,8 @@ public class SkinUpdateTracker {
// Updates players. Repeating task used to schedule updates without
// causing excessive scheduling.
- private class NPCNavigationUpdater extends BukkitRunnable {
- Queue queue = new ArrayDeque(20);
+ private static class NPCNavigationUpdater extends BukkitRunnable {
+ Queue queue = new ArrayDeque<>(20);
@Override
public void run() {
@@ -365,10 +350,10 @@ public class SkinUpdateTracker {
// Tracks player location and yaw to determine when the player should be updated
// with nearby skins.
- private class PlayerTracker {
- final Set fovVisibleSkins = new HashSet(10);
+ private static class PlayerTracker {
+ Set fovVisibleSkins = new HashSet<>(10);
boolean hasMoved;
- final Location location = new Location(null, 0, 0, 0);
+ Location location = new Location(null, 0, 0, 0);
float lowerBound;
int rotationCount;
float startYaw;
@@ -380,22 +365,22 @@ public class SkinUpdateTracker {
// reset all
void hardReset(Player player) {
- this.hasMoved = false;
- this.rotationCount = 0;
- this.lowerBound = this.upperBound = this.startYaw = 0;
- this.fovVisibleSkins.clear();
+ hasMoved = false;
+ rotationCount = 0;
+ lowerBound = upperBound = startYaw = 0;
+ fovVisibleSkins.clear();
reset(player);
}
// resets initial yaw and location to the players current location and yaw.
void reset(Player player) {
- player.getLocation(this.location);
+ player.getLocation(location);
if (rotationCount < 3) {
float rotationDegrees = Setting.NPC_SKIN_ROTATION_UPDATE_DEGREES.asFloat();
- float yaw = Util.clamp(this.location.getYaw());
- this.startYaw = yaw;
- this.upperBound = Util.clamp(yaw + rotationDegrees);
- this.lowerBound = Util.clamp(yaw - rotationDegrees);
+ float yaw = Util.clamp(location.getYaw());
+ startYaw = yaw;
+ upperBound = Util.clamp(yaw + rotationDegrees);
+ lowerBound = Util.clamp(yaw - rotationDegrees);
if (upperBound == -180.0 && startYaw > 0) {
upperBound = 0;
}
@@ -406,16 +391,14 @@ public class SkinUpdateTracker {
Location currentLoc = player.getLocation();
// make sure player is in same world
- if (!currentLoc.getWorld().equals(this.location.getWorld())) {
+ if (!currentLoc.getWorld().equals(location.getWorld())) {
hardReset(player);
return true;
}
-
if (!hasMoved) {
hasMoved = true;
return true;
}
-
if (rotationCount < 3) {
float yaw = Util.clamp(currentLoc.getYaw());
boolean hasRotated;
@@ -424,7 +407,6 @@ public class SkinUpdateTracker {
} else {
hasRotated = yaw < lowerBound || yaw > upperBound;
}
-
// update the first 3 times the player rotates. helps load skins around player
// after the player logs/teleports.
if (hasRotated) {
@@ -433,14 +415,12 @@ public class SkinUpdateTracker {
return true;
}
}
-
// update every time a player moves a certain distance
- if (currentLoc.distance(this.location) > MOVEMENT_SKIN_UPDATE_DISTANCE) {
+ if (currentLoc.distance(location) > MOVEMENT_SKIN_UPDATE_DISTANCE) {
reset(player);
return true;
- } else {
+ } else
return false;
- }
}
}
@@ -454,6 +434,6 @@ public class SkinUpdateTracker {
}
}
- private static final float FIELD_OF_VIEW = 70F;
- private static final int MOVEMENT_SKIN_UPDATE_DISTANCE = 25;
+ private static float FIELD_OF_VIEW = 70F;
+ private static int MOVEMENT_SKIN_UPDATE_DISTANCE = 25;
}
diff --git a/main/src/main/java/net/citizensnpcs/npc/skin/TabListRemover.java b/main/src/main/java/net/citizensnpcs/npc/skin/TabListRemover.java
index 7eb70eafe..e818fe5b1 100644
--- a/main/src/main/java/net/citizensnpcs/npc/skin/TabListRemover.java
+++ b/main/src/main/java/net/citizensnpcs/npc/skin/TabListRemover.java
@@ -26,7 +26,7 @@ import net.citizensnpcs.util.NMS;
*
*/
public class TabListRemover {
- private final Map pending = new HashMap(
+ private final Map pending = new HashMap<>(
Math.max(128, Math.min(1024, Bukkit.getMaxPlayers() / 2)));
TabListRemover() {
@@ -70,7 +70,6 @@ public class TabListRemover {
if (entry.toRemove.remove(skinnable)) {
skinnable.getSkinTracker().notifyRemovePacketCancelled(player.getUniqueId());
}
-
if (entry.toRemove.isEmpty()) {
pending.remove(player.getUniqueId());
}
@@ -82,7 +81,6 @@ public class TabListRemover {
entry = new PlayerEntry(player);
pending.put(player.getUniqueId(), entry);
}
-
return entry;
}
@@ -103,9 +101,9 @@ public class TabListRemover {
entry.toRemove.add(entity);
}
- private class PlayerEntry {
+ private static class PlayerEntry {
Player player;
- Set toRemove = new HashSet(20);
+ Set toRemove = new HashSet<>(20);
PlayerEntry(Player player) {
this.player = player;
@@ -125,30 +123,27 @@ public class TabListRemover {
int listSize = Math.min(maxPacketEntries, entry.toRemove.size());
boolean sendAll = listSize == entry.toRemove.size();
- List skinnableList = new ArrayList(listSize);
+ List skinnableList = new ArrayList<>(listSize);
int i = 0;
Iterator skinIterator = entry.toRemove.iterator();
while (skinIterator.hasNext()) {
- if (i >= maxPacketEntries)
+ if (i >= maxPacketEntries) {
break;
-
+ }
SkinnableEntity skinnable = skinIterator.next();
skinnableList.add(skinnable);
skinIterator.remove();
i++;
}
-
if (entry.player.isOnline()) {
NMS.sendTabListRemove(entry.player, skinnableList);
}
-
// notify skin trackers that a remove packet has been sent to a player
for (SkinnableEntity entity : skinnableList) {
entity.getSkinTracker().notifyRemovePacketSent(entry.player.getUniqueId());
}
-
if (sendAll) {
entryIterator.remove();
}
diff --git a/main/src/main/java/net/citizensnpcs/trait/Age.java b/main/src/main/java/net/citizensnpcs/trait/Age.java
index 8f5eb7c17..aba7969a6 100644
--- a/main/src/main/java/net/citizensnpcs/trait/Age.java
+++ b/main/src/main/java/net/citizensnpcs/trait/Age.java
@@ -50,13 +50,12 @@ public class Age extends Trait implements Toggleable {
entity.setAge(age);
entity.setAgeLock(locked);
ageable = entity;
- } else if (npc.getEntity() instanceof Zombie) {
- ((Zombie) npc.getEntity()).setBaby(age < 0);
- ageable = null;
- } else if (npc.isSpawned() && npc.getEntity().getType().name().equals("TADPOLE")) {
- ((Tadpole) npc.getEntity()).setAge(age);
- ageable = null;
} else {
+ if (npc.getEntity() instanceof Zombie) {
+ ((Zombie) npc.getEntity()).setBaby(age < 0);
+ } else if (npc.isSpawned() && npc.getEntity().getType().name().equals("TADPOLE")) {
+ ((Tadpole) npc.getEntity()).setAge(age);
+ }
ageable = null;
}
}
@@ -78,7 +77,6 @@ public class Age extends Trait implements Toggleable {
if (isAgeable()) {
ageable.setAgeLock(locked);
}
-
}
/**
diff --git a/main/src/main/java/net/citizensnpcs/trait/Anchors.java b/main/src/main/java/net/citizensnpcs/trait/Anchors.java
index 48fc8f834..5031a154a 100644
--- a/main/src/main/java/net/citizensnpcs/trait/Anchors.java
+++ b/main/src/main/java/net/citizensnpcs/trait/Anchors.java
@@ -21,7 +21,7 @@ import net.citizensnpcs.util.Messages;
*/
@TraitName("anchors")
public class Anchors extends Trait {
- private final List anchors = new ArrayList();
+ private final List anchors = new ArrayList<>();
public Anchors() {
super("anchors");
@@ -61,8 +61,8 @@ public class Anchors extends Trait {
String[] parts = sub.getString("").split(";");
Location location;
try {
- location = new Location(Bukkit.getServer().getWorld(parts[1]), Double.valueOf(parts[2]),
- Double.valueOf(parts[3]), Double.valueOf(parts[4]));
+ location = new Location(Bukkit.getServer().getWorld(parts[1]), Double.parseDouble(parts[2]),
+ Double.parseDouble(parts[3]), Double.parseDouble(parts[4]));
anchors.add(new Anchor(parts[0], location));
} catch (NumberFormatException e) {
Messaging.logTr(Messages.SKIPPING_INVALID_ANCHOR, sub.name(), e.getMessage());
@@ -85,8 +85,9 @@ public class Anchors extends Trait {
@Override
public void save(DataKey key) {
key.removeKey("list");
- for (int i = 0; i < anchors.size(); i++)
+ for (int i = 0; i < anchors.size(); i++) {
key.setString("list." + String.valueOf(i), anchors.get(i).stringValue());
+ }
}
}
diff --git a/main/src/main/java/net/citizensnpcs/trait/ArmorStandTrait.java b/main/src/main/java/net/citizensnpcs/trait/ArmorStandTrait.java
index 53b0c4d7b..2a1631699 100644
--- a/main/src/main/java/net/citizensnpcs/trait/ArmorStandTrait.java
+++ b/main/src/main/java/net/citizensnpcs/trait/ArmorStandTrait.java
@@ -158,14 +158,14 @@ public class ArmorStandTrait extends Trait {
* @see ArmorStand#setArms(boolean)
*/
public void setHasArms(boolean arms) {
- this.hasarms = arms;
+ hasarms = arms;
}
/**
* @see ArmorStand#setBasePlate(boolean)
*/
public void setHasBaseplate(boolean baseplate) {
- this.hasbaseplate = baseplate;
+ hasbaseplate = baseplate;
}
/**
diff --git a/main/src/main/java/net/citizensnpcs/trait/BoundingBoxTrait.java b/main/src/main/java/net/citizensnpcs/trait/BoundingBoxTrait.java
index 02c7ce3d6..e541f9785 100644
--- a/main/src/main/java/net/citizensnpcs/trait/BoundingBoxTrait.java
+++ b/main/src/main/java/net/citizensnpcs/trait/BoundingBoxTrait.java
@@ -67,7 +67,7 @@ public class BoundingBoxTrait extends Trait implements Supplier {
}
public void setBoundingBoxFunction(Function func) {
- this.function = func;
+ function = func;
}
public void setHeight(float height) {
diff --git a/main/src/main/java/net/citizensnpcs/trait/ClickRedirectTrait.java b/main/src/main/java/net/citizensnpcs/trait/ClickRedirectTrait.java
index bbc9d9ed0..49fae855a 100644
--- a/main/src/main/java/net/citizensnpcs/trait/ClickRedirectTrait.java
+++ b/main/src/main/java/net/citizensnpcs/trait/ClickRedirectTrait.java
@@ -25,7 +25,7 @@ public class ClickRedirectTrait extends Trait {
public ClickRedirectTrait(NPC npc) {
this();
- this.redirectNPC = npc;
+ redirectNPC = npc;
if (redirectNPC != null && redirectNPC.hasTrait(PlayerFilter.class)) {
redirectNPC.getOrAddTrait(PlayerFilter.class).addChildNPC(npc);
}
diff --git a/main/src/main/java/net/citizensnpcs/trait/CommandTrait.java b/main/src/main/java/net/citizensnpcs/trait/CommandTrait.java
index 7fd7f6cce..306ed9d2d 100644
--- a/main/src/main/java/net/citizensnpcs/trait/CommandTrait.java
+++ b/main/src/main/java/net/citizensnpcs/trait/CommandTrait.java
@@ -3,6 +3,7 @@ package net.citizensnpcs.trait;
import java.time.Duration;
import java.util.Collection;
import java.util.Collections;
+import java.util.Comparator;
import java.util.EnumSet;
import java.util.Iterator;
import java.util.List;
@@ -218,13 +219,11 @@ public class CommandTrait extends Trait {
} else {
outputList.add(0, executionMode.toString());
}
-
StringBuilder output = new StringBuilder();
for (String item : outputList) {
output.append(item);
output.append(" ");
}
-
Messaging.send(sender, output.toString().trim());
}
@@ -252,9 +251,9 @@ public class CommandTrait extends Trait {
return output;
}
- public void dispatch(final Player player, Hand handIn) {
- final Hand hand = player.isSneaking()
- ? (handIn == CommandTrait.Hand.LEFT ? CommandTrait.Hand.SHIFT_LEFT : CommandTrait.Hand.SHIFT_RIGHT)
+ public void dispatch(Player player, Hand handIn) {
+ Hand hand = player.isSneaking()
+ ? handIn == CommandTrait.Hand.LEFT ? CommandTrait.Hand.SHIFT_LEFT : CommandTrait.Hand.SHIFT_RIGHT
: handIn;
NPCCommandDispatchEvent event = new NPCCommandDispatchEvent(npc, player);
Bukkit.getServer().getPluginManager().callEvent(event);
@@ -266,9 +265,8 @@ public class CommandTrait extends Trait {
@Override
public void run() {
- List commandList = Lists.newArrayList(Iterables.filter(commands.values(), command -> {
- return command.hand == hand || command.hand == Hand.BOTH;
- }));
+ List commandList = Lists.newArrayList(Iterables.filter(commands.values(),
+ command -> (command.hand == hand || command.hand == Hand.BOTH)));
if (executionMode == ExecutionMode.RANDOM) {
if (commandList.size() > 0) {
runCommand(player, commandList.get(Util.getFastRandom().nextInt(commandList.size())));
@@ -277,7 +275,7 @@ public class CommandTrait extends Trait {
}
int max = -1;
if (executionMode == ExecutionMode.SEQUENTIAL) {
- Collections.sort(commandList, (o1, o2) -> Integer.compare(o1.id, o2.id));
+ Collections.sort(commandList, Comparator.comparing(o1 -> o1.id));
max = commandList.size() > 0 ? commandList.get(commandList.size() - 1).id : -1;
}
if (executionMode == ExecutionMode.LINEAR) {
@@ -299,13 +297,13 @@ public class CommandTrait extends Trait {
}
}
runCommand(player, command);
- if (executionMode == ExecutionMode.SEQUENTIAL || (charged != null && charged == false)) {
+ if (executionMode == ExecutionMode.SEQUENTIAL || charged != null && !charged) {
break;
}
}
}
- private void runCommand(final Player player, NPCCommand command) {
+ private void runCommand(Player player, NPCCommand command) {
Runnable runnable = () -> {
PlayerNPCCommand info = playerTracking.get(player.getUniqueId());
if (info == null && (executionMode == ExecutionMode.SEQUENTIAL
@@ -320,14 +318,12 @@ public class CommandTrait extends Trait {
return;
}
}
-
if (info != null && !info.canUse(CommandTrait.this, player, command))
return;
if (charged == null) {
charge.run();
}
-
if (temporaryPermissions.size() > 0) {
PermissionAttachment attachment = player.addAttachment(CitizensAPI.getPlugin());
if (attachment != null) {
@@ -434,9 +430,8 @@ public class CommandTrait extends Trait {
private void sendErrorMessage(Player player, CommandTraitError msg, Function transform,
Object... objects) {
- if (hideErrorMessages) {
+ if (hideErrorMessages)
return;
- }
Set sent = executionErrors.get(player.getUniqueId().toString());
if (sent != null) {
if (sent.contains(msg))
@@ -465,7 +460,7 @@ public class CommandTrait extends Trait {
}
public void setExecutionMode(ExecutionMode mode) {
- this.executionMode = mode;
+ executionMode = mode;
}
public void setExperienceCost(int experienceCost) {
@@ -477,7 +472,7 @@ public class CommandTrait extends Trait {
}
public void setHideErrorMessages(boolean hide) {
- this.hideErrorMessages = hide;
+ hideErrorMessages = hide;
}
public void setItemCost(List itemCost, int id) {
@@ -550,7 +545,7 @@ public class CommandTrait extends Trait {
@Override
public void initialise(MenuContext ctx) {
- this.inventory = ctx.getInventory();
+ inventory = ctx.getInventory();
if (id == -1) {
for (ItemStack stack : trait.itemRequirements) {
inventory.addItem(stack.clone());
@@ -576,10 +571,10 @@ public class CommandTrait extends Trait {
}
}
if (id == -1) {
- this.trait.itemRequirements.clear();
- this.trait.itemRequirements.addAll(requirements);
+ trait.itemRequirements.clear();
+ trait.itemRequirements.addAll(requirements);
} else {
- this.trait.setItemCost(requirements, id);
+ trait.setItemCost(requirements, id);
}
}
}
@@ -649,7 +644,7 @@ public class CommandTrait extends Trait {
}
public NPCCommandBuilder addPerm(String permission) {
- this.perms.add(permission);
+ perms.add(permission);
return this;
}
@@ -697,7 +692,7 @@ public class CommandTrait extends Trait {
}
public NPCCommandBuilder globalCooldown(int cooldown) {
- this.globalCooldown = cooldown;
+ globalCooldown = cooldown;
return this;
}
@@ -739,8 +734,8 @@ public class CommandTrait extends Trait {
double cost = root.keyExists("cost") ? root.getDouble("cost") : -1;
int exp = root.keyExists("experienceCost") ? root.getInt("experienceCost") : -1;
return new NPCCommand(Integer.parseInt(root.name()), root.getString("command"),
- Hand.valueOf(root.getString("hand")), Boolean.valueOf(root.getString("player")),
- Boolean.valueOf(root.getString("op")), root.getInt("cooldown"), perms, root.getInt("n"),
+ Hand.valueOf(root.getString("hand")), Boolean.parseBoolean(root.getString("player")),
+ Boolean.parseBoolean(root.getString("op")), root.getInt("cooldown"), perms, root.getInt("n"),
root.getInt("delay"), root.getInt("globalcooldown"), cost, exp, items);
}
@@ -848,14 +843,12 @@ public class CommandTrait extends Trait {
}
}
}
-
Set diff = Sets.newHashSet(lastUsed.keySet());
diff.removeAll(commandKeys);
for (String key : diff) {
lastUsed.remove(key);
nUsed.remove(key);
}
-
if (globalCooldowns != null) {
diff = Sets.newHashSet(globalCooldowns.keySet());
diff.removeAll(commandKeys);
@@ -867,7 +860,7 @@ public class CommandTrait extends Trait {
public static boolean requiresTracking(NPCCommand command) {
return command.globalCooldown > 0 || command.cooldown > 0 || command.n > 0
- || (command.perms != null && command.perms.size() > 0)
+ || command.perms != null && command.perms.size() > 0
|| Setting.NPC_COMMAND_GLOBAL_COMMAND_COOLDOWN.asSeconds() > 0;
}
}
diff --git a/main/src/main/java/net/citizensnpcs/trait/Controllable.java b/main/src/main/java/net/citizensnpcs/trait/Controllable.java
index b1e92f864..8b929343c 100644
--- a/main/src/main/java/net/citizensnpcs/trait/Controllable.java
+++ b/main/src/main/java/net/citizensnpcs/trait/Controllable.java
@@ -74,7 +74,6 @@ public class Controllable extends Trait implements Toggleable, CommandConfigurab
} else if (args.hasValueFlag("explicittype")) {
explicitType = Util.matchEnum(EntityType.values(), args.getFlag("explicittype"));
}
-
if (npc.isSpawned()) {
loadController();
}
@@ -90,10 +89,8 @@ public class Controllable extends Trait implements Toggleable, CommandConfigurab
}
if (!player.hasPermission(
"citizens.npc.controllable." + npc.getEntity().getType().name().toLowerCase().replace("_", ""))
- || !player.hasPermission("citizens.npc.controllable"))
- return;
-
- if (ownerRequired && !npc.getOrAddTrait(Owner.class).isOwnedBy(player))
+ || !player.hasPermission("citizens.npc.controllable")
+ || ownerRequired && !npc.getOrAddTrait(Owner.class).isOwnedBy(player))
return;
NMS.mount(npc.getEntity(), player);
@@ -146,9 +143,8 @@ public class Controllable extends Trait implements Toggleable, CommandConfigurab
*/
public boolean mount(Player toMount) {
List passengers = NMS.getPassengers(npc.getEntity());
- if (passengers.size() != 0) {
+ if (passengers.size() != 0)
return false;
- }
boolean found = false;
for (Entity passenger : passengers) {
if (passenger != null && passenger == toMount) {
@@ -156,9 +152,8 @@ public class Controllable extends Trait implements Toggleable, CommandConfigurab
break;
}
}
- if (found) {
+ if (found)
return false;
- }
enterOrLeaveVehicle(toMount);
return true;
}
@@ -232,7 +227,7 @@ public class Controllable extends Trait implements Toggleable, CommandConfigurab
* the explicit type
*/
public void setExplicitType(EntityType type) {
- this.explicitType = type;
+ explicitType = type;
}
private void setMountedYaw(Entity entity) {
@@ -240,9 +235,8 @@ public class Controllable extends Trait implements Toggleable, CommandConfigurab
return; // EnderDragon handles this separately
Location loc = entity.getLocation();
Vector vel = entity.getVelocity();
- if (vel.lengthSquared() == 0) {
+ if (vel.lengthSquared() == 0)
return;
- }
double tX = loc.getX() + vel.getX();
double tZ = loc.getZ() + vel.getZ();
@@ -287,7 +281,6 @@ public class Controllable extends Trait implements Toggleable, CommandConfigurab
vel = vel.setX(dXcos * speed * speedMod).setZ(dXsin * speed * speedMod);
}
-
vel = vel.add(new Vector(
passenger.getVelocity().getX() * speedMod * Setting.CONTROLLABLE_GROUND_DIRECTION_MODIFIER.asDouble(),
0D,
@@ -301,11 +294,10 @@ public class Controllable extends Trait implements Toggleable, CommandConfigurab
}
handle.setVelocity(vel);
- if (newSpeed > oldSpeed && speed < maxSpeed) {
- return (float) Math.min(maxSpeed, (speed + ((maxSpeed - speed) / 50.0D)));
- } else {
- return (float) Math.max(0, (speed - (speed / 50.0D)));
- }
+ if (newSpeed > oldSpeed && speed < maxSpeed)
+ return (float) Math.min(maxSpeed, speed + (maxSpeed - speed) / 50.0D);
+ else
+ return (float) Math.max(0, speed - speed / 50.0D);
}
public class GroundController implements MovementController {
@@ -329,13 +321,12 @@ public class Controllable extends Trait implements Toggleable, CommandConfigurab
public void run(Player rider) {
boolean onGround = NMS.isOnGround(npc.getEntity());
float speedMod = npc.getNavigator().getDefaultParameters()
- .modifiedSpeed((onGround ? GROUND_SPEED : AIR_SPEED));
+ .modifiedSpeed(onGround ? GROUND_SPEED : AIR_SPEED);
if (!Util.isHorse(npc.getEntity().getType())) {
// use minecraft horse physics
speed = updateHorizontalSpeed(npc.getEntity(), rider, speed, speedMod,
Setting.MAX_CONTROLLABLE_GROUND_SPEED.asDouble());
}
-
boolean shouldJump = NMS.shouldJump(rider);
if (shouldJump) {
if (onGround && jumpTicks == 0) {
@@ -420,14 +411,12 @@ public class Controllable extends Trait implements Toggleable, CommandConfigurab
npc.getEntity().setVelocity(npc.getEntity().getVelocity().setY(0.001F));
return;
}
-
speed = updateHorizontalSpeed(npc.getEntity(), rider, speed, 1F,
Setting.MAX_CONTROLLABLE_FLIGHT_SPEED.asDouble());
boolean shouldJump = NMS.shouldJump(rider);
if (shouldJump) {
npc.getEntity().setVelocity(npc.getEntity().getVelocity().setY(0.25F));
}
-
npc.getEntity().setVelocity(npc.getEntity().getVelocity().multiply(new Vector(1, 0.98, 1)));
setMountedYaw(npc.getEntity());
}
@@ -461,7 +450,7 @@ public class Controllable extends Trait implements Toggleable, CommandConfigurab
}
}
- private static final Map> CONTROLLER_TYPES = Maps
+ private static Map> CONTROLLER_TYPES = Maps
.newEnumMap(EntityType.class);
static {
diff --git a/main/src/main/java/net/citizensnpcs/trait/CurrentLocation.java b/main/src/main/java/net/citizensnpcs/trait/CurrentLocation.java
index 3c22dc18f..e4cfa3e7c 100644
--- a/main/src/main/java/net/citizensnpcs/trait/CurrentLocation.java
+++ b/main/src/main/java/net/citizensnpcs/trait/CurrentLocation.java
@@ -51,7 +51,7 @@ public class CurrentLocation extends Trait {
}
public void setLocation(Location loc) {
- this.location = loc.clone();
+ location = loc.clone();
}
@Override
diff --git a/main/src/main/java/net/citizensnpcs/trait/DropsTrait.java b/main/src/main/java/net/citizensnpcs/trait/DropsTrait.java
index 031c93db3..f3d2beff5 100644
--- a/main/src/main/java/net/citizensnpcs/trait/DropsTrait.java
+++ b/main/src/main/java/net/citizensnpcs/trait/DropsTrait.java
@@ -70,7 +70,7 @@ public class DropsTrait extends Trait {
@Override
public void initialise(MenuContext ctx) {
- this.inventory = ctx.getInventory();
+ inventory = ctx.getInventory();
int k = 0;
for (int i = 1; i < 5; i += 2) {
for (int j = 0; j < 9; j++) {
@@ -87,7 +87,7 @@ public class DropsTrait extends Trait {
InventoryMenuSlot slot = ctx.getSlot(i * 9 + j);
slot.setItemStack(new ItemStack(Util.getFallbackMaterial("BARRIER", "FIRE")),
"Drop chance " + chance + "%");
- slot.setClickHandler(new PercentageSlotHandler((pct) -> {
+ slot.setClickHandler(new PercentageSlotHandler(pct -> {
if (chances.containsKey(islot)) {
chances.put(islot, pct / 100.0);
}
@@ -116,12 +116,13 @@ public class DropsTrait extends Trait {
for (int j = 0; j < 9; j++) {
int slot = i * 9 + j;
ItemStack stack = inventory.getItem(slot);
- if (stack == null || stack.getType() == Material.AIR)
+ if (stack == null || stack.getType() == Material.AIR) {
continue;
+ }
drops.add(new ItemDrop(stack.clone(), chances.getOrDefault(slot, 1.0)));
}
}
- this.trait.drops = drops;
+ trait.drops = drops;
}
}
diff --git a/main/src/main/java/net/citizensnpcs/trait/FollowTrait.java b/main/src/main/java/net/citizensnpcs/trait/FollowTrait.java
index ed71d5fe8..513961c7d 100644
--- a/main/src/main/java/net/citizensnpcs/trait/FollowTrait.java
+++ b/main/src/main/java/net/citizensnpcs/trait/FollowTrait.java
@@ -40,7 +40,7 @@ public class FollowTrait extends Trait {
* Sets the {@link Entity} to follow
*/
public void follow(Entity entity) {
- this.followingUUID = entity == null ? null : entity.getUniqueId();
+ followingUUID = entity == null ? null : entity.getUniqueId();
if (npc.getNavigator().isNavigating() && this.entity != null && npc.getNavigator().getEntityTarget() != null
&& this.entity == npc.getNavigator().getEntityTarget().getTarget()) {
npc.getNavigator().cancelNavigation();
@@ -112,13 +112,11 @@ public class FollowTrait extends Trait {
}
return;
}
-
if (!npc.getNavigator().isNavigating()) {
npc.getNavigator().setTarget(entity, false);
if (margin > 0) {
npc.getNavigator().getLocalParameters().distanceMargin(margin);
}
-
} else {
flock.run();
}
diff --git a/main/src/main/java/net/citizensnpcs/trait/Gravity.java b/main/src/main/java/net/citizensnpcs/trait/Gravity.java
index 60748fe48..2ea7b1e4e 100644
--- a/main/src/main/java/net/citizensnpcs/trait/Gravity.java
+++ b/main/src/main/java/net/citizensnpcs/trait/Gravity.java
@@ -51,7 +51,7 @@ public class Gravity extends Trait implements Toggleable {
}
public void setEnabled(boolean enabled) {
- this.nogravity = enabled;
+ nogravity = enabled;
}
@Override
diff --git a/main/src/main/java/net/citizensnpcs/trait/HologramTrait.java b/main/src/main/java/net/citizensnpcs/trait/HologramTrait.java
index 997036643..d8db1ac01 100644
--- a/main/src/main/java/net/citizensnpcs/trait/HologramTrait.java
+++ b/main/src/main/java/net/citizensnpcs/trait/HologramTrait.java
@@ -35,7 +35,6 @@ import net.citizensnpcs.api.persistence.Persist;
import net.citizensnpcs.api.trait.Trait;
import net.citizensnpcs.api.trait.TraitName;
import net.citizensnpcs.api.util.DataKey;
-import net.citizensnpcs.api.util.Messaging;
import net.citizensnpcs.api.util.Placeholders;
import net.citizensnpcs.api.util.SpigotUtil;
import net.citizensnpcs.util.NMS;
@@ -59,6 +58,8 @@ public class HologramTrait extends Trait {
private final NPCRegistry registry = CitizensAPI.createCitizensBackedNPCRegistry(new MemoryNPCDataStore());
private int t;
private boolean useDisplayEntities = Setting.DISPLAY_ENTITY_HOLOGRAMS.asBoolean();
+ @Persist
+ private int viewRange = -1;
public HologramTrait() {
super("hologramtrait");
@@ -109,12 +110,13 @@ public class HologramTrait extends Trait {
hologramNPC = registry.createNPC(EntityType.ARMOR_STAND, line);
hologramNPC.getOrAddTrait(ArmorStandTrait.class).setAsHelperEntityWithName(npc);
}
-
if (Setting.PACKET_HOLOGRAMS.asBoolean()) {
hologramNPC.addTrait(PacketNPC.class);
}
-
hologramNPC.data().set(NPC.Metadata.HOLOGRAM_FOR, npc.getUniqueId().toString());
+ if (viewRange != -1) {
+ hologramNPC.data().set(NPC.Metadata.TRACKING_RANGE, viewRange);
+ }
hologramNPC.spawn(currentLoc.clone().add(0, getEntityHeight() + heightOffset, 0));
Matcher itemMatcher = ITEM_MATCHER.matcher(line);
@@ -122,7 +124,7 @@ public class HologramTrait extends Trait {
Material item = SpigotUtil.isUsing1_13API() ? Material.matchMaterial(itemMatcher.group(1), false)
: Material.matchMaterial(itemMatcher.group(1));
ItemStack itemStack = new ItemStack(item, 1);
- final NPC itemNPC = registry.createNPCUsingItem(EntityType.DROPPED_ITEM, "", itemStack);
+ NPC itemNPC = registry.createNPCUsingItem(EntityType.DROPPED_ITEM, "", itemStack);
itemNPC.data().setPersistent(NPC.Metadata.NAMEPLATE_VISIBLE, false);
if (itemMatcher.group(2) != null) {
if (itemMatcher.group(2).charAt(1) == '{') {
@@ -135,14 +137,13 @@ public class HologramTrait extends Trait {
}
itemNPC.getOrAddTrait(MountTrait.class).setMountedOn(hologramNPC.getUniqueId());
itemNPC.spawn(currentLoc);
- final NPC hn = hologramNPC;
+ NPC hn = hologramNPC;
itemNPC.addRunnable(() -> {
if (!itemNPC.isSpawned() || !hn.isSpawned()) {
itemNPC.destroy();
}
});
}
-
lastEntityHeight = getEntityHeight();
return hologramNPC;
}
@@ -152,7 +153,7 @@ public class HologramTrait extends Trait {
}
private double getHeight(int lineNumber) {
- double base = (lastNameplateVisible ? 0 : -getLineHeight());
+ double base = lastNameplateVisible ? 0 : -getLineHeight();
for (int i = 0; i <= lineNumber; i++) {
HologramLine line = lines.get(i);
base += line.mb + getLineHeight();
@@ -192,6 +193,17 @@ public class HologramTrait extends Trait {
return nameLine != null && nameLine.hologram.isSpawned() ? nameLine.hologram.getEntity() : null;
}
+ public double getViewRange() {
+ return viewRange;
+ }
+
+ public boolean isHologramSneaking(NPC hologram, Player player) {
+ if (nameLine != null && hologram == nameLine.hologram && npc.getEntity() instanceof Player
+ && ((Player) npc.getEntity()).isSneaking())
+ return true;
+ return false;
+ }
+
@Override
public void load(DataKey root) {
clear();
@@ -210,7 +222,6 @@ public class HologramTrait extends Trait {
nameLine.removeNPC();
nameLine = null;
}
-
for (HologramLine line : lines) {
line.removeNPC();
}
@@ -229,11 +240,9 @@ public class HologramTrait extends Trait {
}
}
}
-
if (height == -1)
return;
- Messaging.debug(npc, "hologram interaction ", hologram.getEntity(), "height offset set to", height);
NMS.linkTextInteraction(player, hologram.getEntity(), npc.getEntity(), height);
}
}
@@ -255,7 +264,6 @@ public class HologramTrait extends Trait {
nameLine = new HologramLine(npc.getRawName(), false);
nameLine.spawnNPC(0);
}
-
for (int i = 0; i < lines.size(); i++) {
lines.get(i).spawnNPC(getHeight(i));
}
@@ -265,7 +273,6 @@ public class HologramTrait extends Trait {
for (HologramLine line : lines) {
line.removeNPC();
}
-
if (!npc.isSpawned())
return;
@@ -294,11 +301,9 @@ public class HologramTrait extends Trait {
onDespawn();
return;
}
-
if (currentLoc == null) {
currentLoc = npc.getStoredLocation().clone();
}
-
boolean nameplateVisible = Boolean
.parseBoolean(npc.data().