From 70c40dcb22903d730e42a2a286c327f2b31a5004 Mon Sep 17 00:00:00 2001 From: fullwall Date: Wed, 24 Apr 2024 05:34:31 +0800 Subject: [PATCH] Initial 1.20.5 update. TODO: refactor NBT to remove JNBT and work with trees instead --- main/pom.xml | 4 +- .../citizensnpcs/commands/NPCCommands.java | 19 +- .../citizensnpcs/npc/CitizensNPCRegistry.java | 3 +- .../net/citizensnpcs/trait/HologramTrait.java | 2 +- .../citizensnpcs/trait/ScoreboardTrait.java | 6 - .../citizensnpcs/trait/shop/ItemAction.java | 2 +- .../trait/versioned/MushroomCowTrait.java | 9 +- .../trait/versioned/SnowmanTrait.java | 9 +- .../trait/waypoint/EntityMarkers.java | 9 +- .../main/java/net/citizensnpcs/util/Util.java | 19 +- pom.xml | 20 +- v1_10_R1/pom.xml | 2 +- v1_11_R1/pom.xml | 2 +- v1_12_R1/pom.xml | 2 +- v1_13_R2/pom.xml | 2 +- v1_14_R1/pom.xml | 2 +- v1_15_R1/pom.xml | 2 +- v1_16_R3/pom.xml | 2 +- v1_17_R1/pom.xml | 2 +- v1_18_R2/pom.xml | 2 +- .../v1_18_R2/util/CustomEntityRegistry.java | 26 +- v1_19_R3/pom.xml | 2 +- .../nms/v1_19_R3/entity/EntityHumanNPC.java | 2 - .../v1_19_R3/util/CustomEntityRegistry.java | 42 +- .../v1_20_R3/util/EntityNodeEvaluator.java | 565 ------------------ {v1_20_R3 => v1_20_R4}/pom.xml | 8 +- .../nms/v1_20_R4}/entity/AllayController.java | 14 +- .../v1_20_R4/entity/ArmadilloController.java | 225 +++++++ .../entity/ArmorStandController.java | 18 +- .../v1_20_R4}/entity/AxolotlController.java | 14 +- .../nms/v1_20_R4}/entity/BatController.java | 14 +- .../nms/v1_20_R4}/entity/BeeController.java | 14 +- .../nms/v1_20_R4}/entity/BlazeController.java | 14 +- .../nms/v1_20_R4/entity/BoggedController.java | 225 +++++++ .../nms/v1_20_R4/entity/BreezeController.java | 225 +++++++ .../nms/v1_20_R4}/entity/CamelController.java | 14 +- .../nms/v1_20_R4}/entity/CatController.java | 14 +- .../entity/CaveSpiderController.java | 14 +- .../v1_20_R4}/entity/ChickenController.java | 14 +- .../nms/v1_20_R4}/entity/CodController.java | 16 +- .../nms/v1_20_R4}/entity/CowController.java | 14 +- .../v1_20_R4}/entity/CreeperController.java | 14 +- .../v1_20_R4}/entity/DolphinController.java | 14 +- .../v1_20_R4}/entity/DrownedController.java | 14 +- .../entity/EnderDragonController.java | 14 +- .../v1_20_R4}/entity/EndermanController.java | 14 +- .../v1_20_R4}/entity/EndermiteController.java | 14 +- .../nms/v1_20_R4}/entity/EntityHumanNPC.java | 22 +- .../v1_20_R4}/entity/EvokerController.java | 14 +- .../nms/v1_20_R4}/entity/FoxController.java | 14 +- .../nms/v1_20_R4}/entity/FrogController.java | 14 +- .../nms/v1_20_R4}/entity/GhastController.java | 14 +- .../nms/v1_20_R4}/entity/GiantController.java | 14 +- .../v1_20_R4}/entity/GlowSquidController.java | 14 +- .../nms/v1_20_R4}/entity/GoatController.java | 14 +- .../v1_20_R4}/entity/GuardianController.java | 14 +- .../entity/GuardianElderController.java | 14 +- .../v1_20_R4}/entity/HoglinController.java | 14 +- .../nms/v1_20_R4}/entity/HorseController.java | 14 +- .../entity/HorseDonkeyController.java | 14 +- .../v1_20_R4}/entity/HorseMuleController.java | 14 +- .../entity/HorseSkeletonController.java | 14 +- .../entity/HorseZombieController.java | 14 +- .../nms/v1_20_R4}/entity/HumanController.java | 4 +- .../entity/IllusionerController.java | 14 +- .../v1_20_R4}/entity/IronGolemController.java | 14 +- .../nms/v1_20_R4}/entity/LlamaController.java | 14 +- .../v1_20_R4}/entity/MagmaCubeController.java | 16 +- .../v1_20_R4}/entity/MobEntityController.java | 8 +- .../entity/MushroomCowController.java | 14 +- .../v1_20_R4}/entity/OcelotController.java | 14 +- .../nms/v1_20_R4}/entity/PandaController.java | 14 +- .../v1_20_R4}/entity/ParrotController.java | 14 +- .../v1_20_R4}/entity/PhantomController.java | 18 +- .../nms/v1_20_R4}/entity/PigController.java | 14 +- .../v1_20_R4}/entity/PigZombieController.java | 14 +- .../entity/PiglinBruteController.java | 14 +- .../v1_20_R4}/entity/PiglinController.java | 14 +- .../v1_20_R4}/entity/PillagerController.java | 14 +- .../v1_20_R4}/entity/PolarBearController.java | 14 +- .../entity/PufferFishController.java | 22 +- .../v1_20_R4}/entity/RabbitController.java | 14 +- .../v1_20_R4}/entity/RavagerController.java | 14 +- .../v1_20_R4}/entity/SalmonController.java | 16 +- .../nms/v1_20_R4}/entity/SheepController.java | 14 +- .../v1_20_R4}/entity/ShulkerController.java | 14 +- .../entity/SilverfishController.java | 14 +- .../v1_20_R4}/entity/SkeletonController.java | 14 +- .../entity/SkeletonStrayController.java | 14 +- .../entity/SkeletonWitherController.java | 14 +- .../nms/v1_20_R4}/entity/SlimeController.java | 16 +- .../v1_20_R4}/entity/SnifferController.java | 14 +- .../v1_20_R4}/entity/SnowmanController.java | 14 +- .../v1_20_R4}/entity/SpiderController.java | 14 +- .../nms/v1_20_R4}/entity/SquidController.java | 14 +- .../v1_20_R4}/entity/StriderController.java | 14 +- .../v1_20_R4}/entity/TadpoleController.java | 20 +- .../entity/TraderLlamaController.java | 14 +- .../entity/TropicalFishController.java | 16 +- .../v1_20_R4}/entity/TurtleController.java | 16 +- .../nms/v1_20_R4}/entity/VexController.java | 14 +- .../v1_20_R4}/entity/VillagerController.java | 14 +- .../entity/VindicatorController.java | 14 +- .../entity/WanderingTraderController.java | 14 +- .../v1_20_R4}/entity/WardenController.java | 14 +- .../nms/v1_20_R4}/entity/WitchController.java | 14 +- .../v1_20_R4}/entity/WitherController.java | 14 +- .../nms/v1_20_R4}/entity/WolfController.java | 14 +- .../v1_20_R4}/entity/ZoglinController.java | 14 +- .../v1_20_R4}/entity/ZombieController.java | 14 +- .../entity/ZombieHuskController.java | 14 +- .../entity/ZombieVillagerController.java | 14 +- .../nonliving/AreaEffectCloudController.java | 16 +- .../nonliving/BlockDisplayController.java | 18 +- .../entity/nonliving/BoatController.java | 16 +- .../nonliving/BreezeWindChargeController.java | 128 ++++ .../entity/nonliving/ChestBoatController.java | 16 +- .../nonliving/DragonFireballController.java | 16 +- .../entity/nonliving/EggController.java | 16 +- .../nonliving/EnderCrystalController.java | 16 +- .../nonliving/EnderPearlController.java | 16 +- .../nonliving/EvokerFangsController.java | 16 +- .../nonliving/ExperienceOrbController.java | 16 +- .../nonliving/EyeOfEnderController.java | 20 +- .../nonliving/FallingBlockController.java | 16 +- .../entity/nonliving/FireworkController.java | 16 +- .../nonliving/FishingHookController.java | 18 +- .../nonliving/GlowItemFrameController.java | 14 +- .../nonliving/InteractionController.java | 16 +- .../entity/nonliving/ItemController.java | 16 +- .../nonliving/ItemDisplayController.java | 20 +- .../entity/nonliving/ItemFrameController.java | 14 +- .../nonliving/LargeFireballController.java | 16 +- .../entity/nonliving/LeashController.java | 16 +- .../entity/nonliving/LlamaSpitController.java | 16 +- .../entity/nonliving/MarkerController.java | 16 +- .../nonliving/MinecartChestController.java | 16 +- .../nonliving/MinecartCommandController.java | 16 +- .../nonliving/MinecartFurnaceController.java | 16 +- .../nonliving/MinecartHopperController.java | 8 +- .../nonliving/MinecartRideableController.java | 16 +- .../nonliving/MinecartSpawnerController.java | 8 +- .../nonliving/MinecartTNTController.java | 8 +- .../OminousItemSpawnerController.java | 149 +++++ .../entity/nonliving/PaintingController.java | 16 +- .../nonliving/ShulkerBulletController.java | 16 +- .../nonliving/SmallFireballController.java | 16 +- .../entity/nonliving/SnowballController.java | 16 +- .../nonliving/SpectralArrowController.java | 18 +- .../entity/nonliving/TNTPrimedController.java | 16 +- .../nonliving/TextDisplayController.java | 16 +- .../nonliving/ThrownExpBottleController.java | 16 +- .../nonliving/ThrownPotionController.java | 16 +- .../nonliving/ThrownTridentController.java | 16 +- .../nonliving/TippedArrowController.java | 18 +- .../nonliving/WindChargeController.java | 128 ++++ .../nonliving/WitherSkullController.java | 16 +- .../v1_20_R4}/network/EmptyConnection.java | 6 +- .../network/EmptyPacketListener.java | 2 +- .../v1_20_R4}/util/CitizensBlockBreaker.java | 4 +- .../v1_20_R4}/util/CitizensEntityTracker.java | 4 +- .../v1_20_R4}/util/CustomEntityRegistry.java | 62 +- .../util/EmptyAdvancementDataPlayer.java | 2 +- .../util/EmptyServerStatsCounter.java | 2 +- .../nms/v1_20_R4}/util/EntityJumpControl.java | 2 +- .../nms/v1_20_R4}/util/EntityMoveControl.java | 2 +- .../nms/v1_20_R4}/util/EntityNavigation.java | 18 +- .../v1_20_R4/util/EntityNodeEvaluator.java | 520 ++++++++++++++++ .../util/EntityNodeEvaluatorBase.java | 29 +- .../nms/v1_20_R4}/util/EntityPathfinder.java | 37 +- .../util/EntityPathfindingContext.java | 119 ++++ .../v1_20_R4}/util/ForwardingNPCHolder.java | 2 +- .../nms/v1_20_R4}/util/MobAI.java | 26 +- .../nms/v1_20_R4}/util/NMSBoundingBox.java | 2 +- .../nms/v1_20_R4}/util/NMSImpl.java | 509 ++++++++-------- .../v1_20_R4}/util/PitchableLookControl.java | 2 +- .../v1_20_R4}/util/PlayerAnimationImpl.java | 2 +- v1_8_R3/pom.xml | 2 +- 178 files changed, 3115 insertions(+), 1932 deletions(-) delete mode 100644 v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/util/EntityNodeEvaluator.java rename {v1_20_R3 => v1_20_R4}/pom.xml (95%) rename {v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3 => v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4}/entity/AllayController.java (95%) create mode 100644 v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/ArmadilloController.java rename {v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3 => v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4}/entity/ArmorStandController.java (90%) rename {v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3 => v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4}/entity/AxolotlController.java (95%) rename {v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3 => v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4}/entity/BatController.java (94%) rename {v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3 => v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4}/entity/BeeController.java (93%) rename {v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3 => v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4}/entity/BlazeController.java (93%) create mode 100644 v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/BoggedController.java create mode 100644 v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/BreezeController.java rename {v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3 => v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4}/entity/CamelController.java (96%) rename {v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3 => v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4}/entity/CatController.java (95%) rename {v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3 => v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4}/entity/CaveSpiderController.java (94%) rename {v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3 => v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4}/entity/ChickenController.java (95%) rename {v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3 => v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4}/entity/CodController.java (95%) rename {v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3 => v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4}/entity/CowController.java (95%) rename {v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3 => v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4}/entity/CreeperController.java (95%) rename {v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3 => v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4}/entity/DolphinController.java (95%) rename {v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3 => v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4}/entity/DrownedController.java (94%) rename {v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3 => v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4}/entity/EnderDragonController.java (96%) rename {v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3 => v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4}/entity/EndermanController.java (95%) rename {v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3 => v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4}/entity/EndermiteController.java (94%) rename {v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3 => v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4}/entity/EntityHumanNPC.java (96%) rename {v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3 => v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4}/entity/EvokerController.java (94%) rename {v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3 => v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4}/entity/FoxController.java (95%) rename {v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3 => v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4}/entity/FrogController.java (95%) rename {v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3 => v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4}/entity/GhastController.java (93%) rename {v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3 => v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4}/entity/GiantController.java (94%) rename {v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3 => v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4}/entity/GlowSquidController.java (94%) rename {v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3 => v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4}/entity/GoatController.java (95%) rename {v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3 => v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4}/entity/GuardianController.java (95%) rename {v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3 => v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4}/entity/GuardianElderController.java (95%) rename {v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3 => v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4}/entity/HoglinController.java (94%) rename {v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3 => v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4}/entity/HorseController.java (95%) rename {v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3 => v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4}/entity/HorseDonkeyController.java (96%) rename {v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3 => v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4}/entity/HorseMuleController.java (96%) rename {v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3 => v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4}/entity/HorseSkeletonController.java (96%) rename {v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3 => v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4}/entity/HorseZombieController.java (96%) rename {v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3 => v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4}/entity/HumanController.java (96%) rename {v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3 => v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4}/entity/IllusionerController.java (94%) rename {v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3 => v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4}/entity/IronGolemController.java (94%) rename {v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3 => v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4}/entity/LlamaController.java (96%) rename {v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3 => v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4}/entity/MagmaCubeController.java (94%) rename {v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3 => v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4}/entity/MobEntityController.java (93%) rename {v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3 => v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4}/entity/MushroomCowController.java (95%) rename {v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3 => v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4}/entity/OcelotController.java (95%) rename {v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3 => v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4}/entity/PandaController.java (95%) rename {v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3 => v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4}/entity/ParrotController.java (94%) rename {v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3 => v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4}/entity/PhantomController.java (94%) rename {v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3 => v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4}/entity/PigController.java (95%) rename {v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3 => v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4}/entity/PigZombieController.java (94%) rename {v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3 => v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4}/entity/PiglinBruteController.java (94%) rename {v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3 => v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4}/entity/PiglinController.java (95%) rename {v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3 => v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4}/entity/PillagerController.java (95%) rename {v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3 => v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4}/entity/PolarBearController.java (94%) rename {v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3 => v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4}/entity/PufferFishController.java (93%) rename {v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3 => v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4}/entity/RabbitController.java (95%) rename {v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3 => v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4}/entity/RavagerController.java (95%) rename {v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3 => v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4}/entity/SalmonController.java (95%) rename {v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3 => v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4}/entity/SheepController.java (95%) rename {v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3 => v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4}/entity/ShulkerController.java (95%) rename {v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3 => v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4}/entity/SilverfishController.java (94%) rename {v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3 => v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4}/entity/SkeletonController.java (94%) rename {v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3 => v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4}/entity/SkeletonStrayController.java (94%) rename {v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3 => v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4}/entity/SkeletonWitherController.java (94%) rename {v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3 => v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4}/entity/SlimeController.java (94%) rename {v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3 => v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4}/entity/SnifferController.java (95%) rename {v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3 => v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4}/entity/SnowmanController.java (94%) rename {v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3 => v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4}/entity/SpiderController.java (94%) rename {v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3 => v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4}/entity/SquidController.java (94%) rename {v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3 => v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4}/entity/StriderController.java (94%) rename {v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3 => v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4}/entity/TadpoleController.java (93%) rename {v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3 => v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4}/entity/TraderLlamaController.java (95%) rename {v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3 => v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4}/entity/TropicalFishController.java (95%) rename {v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3 => v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4}/entity/TurtleController.java (94%) rename {v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3 => v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4}/entity/VexController.java (93%) rename {v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3 => v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4}/entity/VillagerController.java (95%) rename {v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3 => v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4}/entity/VindicatorController.java (95%) rename {v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3 => v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4}/entity/WanderingTraderController.java (95%) rename {v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3 => v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4}/entity/WardenController.java (94%) rename {v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3 => v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4}/entity/WitchController.java (94%) rename {v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3 => v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4}/entity/WitherController.java (94%) rename {v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3 => v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4}/entity/WolfController.java (95%) rename {v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3 => v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4}/entity/ZoglinController.java (94%) rename {v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3 => v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4}/entity/ZombieController.java (94%) rename {v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3 => v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4}/entity/ZombieHuskController.java (94%) rename {v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3 => v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4}/entity/ZombieVillagerController.java (94%) rename {v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3 => v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4}/entity/nonliving/AreaEffectCloudController.java (89%) rename {v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3 => v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4}/entity/nonliving/BlockDisplayController.java (89%) rename {v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3 => v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4}/entity/nonliving/BoatController.java (95%) create mode 100644 v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/nonliving/BreezeWindChargeController.java rename {v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3 => v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4}/entity/nonliving/ChestBoatController.java (95%) rename {v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3 => v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4}/entity/nonliving/DragonFireballController.java (90%) rename {v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3 => v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4}/entity/nonliving/EggController.java (91%) rename {v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3 => v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4}/entity/nonliving/EnderCrystalController.java (89%) rename {v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3 => v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4}/entity/nonliving/EnderPearlController.java (89%) rename {v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3 => v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4}/entity/nonliving/EvokerFangsController.java (91%) rename {v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3 => v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4}/entity/nonliving/ExperienceOrbController.java (89%) rename v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/nonliving/EnderSignalController.java => v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/nonliving/EyeOfEnderController.java (87%) rename {v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3 => v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4}/entity/nonliving/FallingBlockController.java (92%) rename {v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3 => v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4}/entity/nonliving/FireworkController.java (89%) rename {v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3 => v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4}/entity/nonliving/FishingHookController.java (91%) rename {v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3 => v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4}/entity/nonliving/GlowItemFrameController.java (92%) rename {v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3 => v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4}/entity/nonliving/InteractionController.java (89%) rename {v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3 => v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4}/entity/nonliving/ItemController.java (91%) rename {v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3 => v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4}/entity/nonliving/ItemDisplayController.java (88%) rename {v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3 => v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4}/entity/nonliving/ItemFrameController.java (92%) rename {v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3 => v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4}/entity/nonliving/LargeFireballController.java (90%) rename {v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3 => v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4}/entity/nonliving/LeashController.java (89%) rename {v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3 => v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4}/entity/nonliving/LlamaSpitController.java (91%) rename {v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3 => v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4}/entity/nonliving/MarkerController.java (89%) rename {v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3 => v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4}/entity/nonliving/MinecartChestController.java (89%) rename {v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3 => v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4}/entity/nonliving/MinecartCommandController.java (89%) rename {v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3 => v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4}/entity/nonliving/MinecartFurnaceController.java (89%) rename {v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3 => v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4}/entity/nonliving/MinecartHopperController.java (93%) rename {v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3 => v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4}/entity/nonliving/MinecartRideableController.java (89%) rename {v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3 => v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4}/entity/nonliving/MinecartSpawnerController.java (93%) rename {v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3 => v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4}/entity/nonliving/MinecartTNTController.java (93%) create mode 100644 v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/nonliving/OminousItemSpawnerController.java rename {v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3 => v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4}/entity/nonliving/PaintingController.java (89%) rename {v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3 => v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4}/entity/nonliving/ShulkerBulletController.java (89%) rename {v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3 => v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4}/entity/nonliving/SmallFireballController.java (89%) rename {v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3 => v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4}/entity/nonliving/SnowballController.java (89%) rename {v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3 => v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4}/entity/nonliving/SpectralArrowController.java (87%) rename {v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3 => v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4}/entity/nonliving/TNTPrimedController.java (89%) rename {v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3 => v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4}/entity/nonliving/TextDisplayController.java (90%) rename {v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3 => v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4}/entity/nonliving/ThrownExpBottleController.java (90%) rename {v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3 => v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4}/entity/nonliving/ThrownPotionController.java (91%) rename {v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3 => v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4}/entity/nonliving/ThrownTridentController.java (89%) rename {v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3 => v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4}/entity/nonliving/TippedArrowController.java (87%) create mode 100644 v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/nonliving/WindChargeController.java rename {v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3 => v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4}/entity/nonliving/WitherSkullController.java (89%) rename {v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3 => v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4}/network/EmptyConnection.java (88%) rename {v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3 => v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4}/network/EmptyPacketListener.java (93%) rename {v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3 => v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4}/util/CitizensBlockBreaker.java (97%) rename {v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3 => v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4}/util/CitizensEntityTracker.java (98%) rename {v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3 => v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4}/util/CustomEntityRegistry.java (95%) rename {v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3 => v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4}/util/EmptyAdvancementDataPlayer.java (98%) rename {v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3 => v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4}/util/EmptyServerStatsCounter.java (95%) rename {v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3 => v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4}/util/EntityJumpControl.java (93%) rename {v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3 => v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4}/util/EntityMoveControl.java (98%) rename {v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3 => v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4}/util/EntityNavigation.java (97%) create mode 100644 v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/util/EntityNodeEvaluator.java rename {v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3 => v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4}/util/EntityNodeEvaluatorBase.java (70%) rename {v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3 => v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4}/util/EntityPathfinder.java (86%) create mode 100644 v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/util/EntityPathfindingContext.java rename {v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3 => v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4}/util/ForwardingNPCHolder.java (93%) rename {v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3 => v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4}/util/MobAI.java (85%) rename {v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3 => v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4}/util/NMSBoundingBox.java (94%) rename {v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3 => v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4}/util/NMSImpl.java (89%) rename {v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3 => v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4}/util/PitchableLookControl.java (94%) rename {v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3 => v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4}/util/PlayerAnimationImpl.java (98%) diff --git a/main/pom.xml b/main/pom.xml index a5639c1d3..ae7f49d62 100644 --- a/main/pom.xml +++ b/main/pom.xml @@ -4,12 +4,12 @@ net.citizensnpcs citizens-parent - 2.0.33-SNAPSHOT + 2.0.34-SNAPSHOT citizens-main UTF-8 - 1.20.4-R0.1-SNAPSHOT + 1.20.5-R0.1-SNAPSHOT 2.11.5 ${project.version} 7.1.0-SNAPSHOT diff --git a/main/src/main/java/net/citizensnpcs/commands/NPCCommands.java b/main/src/main/java/net/citizensnpcs/commands/NPCCommands.java index fa3dfa366..a35c37aff 100644 --- a/main/src/main/java/net/citizensnpcs/commands/NPCCommands.java +++ b/main/src/main/java/net/citizensnpcs/commands/NPCCommands.java @@ -960,8 +960,11 @@ public class NPCCommands { max = 1, flags = "b", permission = "citizens.npc.endercrystal") - @Requirements(ownership = true, selected = true, types = EntityType.ENDER_CRYSTAL) + @Requirements(ownership = true, selected = true) public void endercrystal(CommandContext args, CommandSender sender, NPC npc) throws CommandException { + if (!npc.getOrAddTrait(MobType.class).getType().name().equals("END_CRYSTAL") + && !npc.getOrAddTrait(MobType.class).getType().name().equals("ENDER_CRYSTAL")) + throw new CommandException(); if (args.hasFlag('b')) { EnderCrystalTrait trait = npc.getOrAddTrait(EnderCrystalTrait.class); boolean showing = !trait.isShowBase(); @@ -1396,8 +1399,9 @@ public class NPCCommands { public void item(CommandContext args, CommandSender sender, NPC npc, @Arg(1) Material mat, @Arg(2) String modify) throws CommandException { EntityType type = npc.getOrAddTrait(MobType.class).getType(); - if (!type.name().contains("ITEM_FRAME") && !type.name().contains("ITEM_DISPLAY") - && !type.name().contains("BLOCK_DISPLAY") && type != EntityType.DROPPED_ITEM + if (!type.name().equals("OMINOUS_ITEM_SPAWNER") && !type.name().contains("ITEM_FRAME") + && !type.name().contains("ITEM_DISPLAY") && !type.name().contains("BLOCK_DISPLAY") + && !type.name().equals("DROPPED_ITEM") && !type.name().equals("ITEM") && type != EntityType.FALLING_BLOCK) throw new CommandException(CommandMessages.REQUIREMENTS_INVALID_MOB_TYPE, Util.prettyEnum(type)); ItemStack stack = args.hasFlag('h') ? ((Player) sender).getItemInHand() : new ItemStack(mat, 1); @@ -1745,14 +1749,11 @@ public class NPCCommands { max = 1, flags = "", permission = "citizens.npc.minecart") - @Requirements( - selected = true, - ownership = true, - types = { EntityType.MINECART, EntityType.MINECART_CHEST, EntityType.MINECART_COMMAND, - EntityType.MINECART_FURNACE, EntityType.MINECART_HOPPER, EntityType.MINECART_MOB_SPAWNER, - EntityType.MINECART_TNT }) + @Requirements(selected = true, ownership = true) public void minecart(CommandContext args, CommandSender sender, NPC npc, @Flag("item") String item) throws CommandException { + if (!npc.getOrAddTrait(MobType.class).getType().name().contains("MINECRAFT")) + throw new CommandUsageException(); if (item != null) { int data = 0; if (item.contains(":")) { diff --git a/main/src/main/java/net/citizensnpcs/npc/CitizensNPCRegistry.java b/main/src/main/java/net/citizensnpcs/npc/CitizensNPCRegistry.java index 44bb5292b..5676e3eab 100644 --- a/main/src/main/java/net/citizensnpcs/npc/CitizensNPCRegistry.java +++ b/main/src/main/java/net/citizensnpcs/npc/CitizensNPCRegistry.java @@ -85,7 +85,8 @@ public class CitizensNPCRegistry implements NPCRegistry { @Override public NPC createNPCUsingItem(EntityType type, String name, ItemStack item) { NPC npc = createNPC(type, name); - if (type == EntityType.DROPPED_ITEM || type == EntityType.FALLING_BLOCK || type == EntityType.ITEM_FRAME + if (type.name().equals("OMINOUS_ITEM_SPAWNER") || type.name().equals("DROPPED_ITEM") + || type.name().equals("ITEM") || type == EntityType.FALLING_BLOCK || type == EntityType.ITEM_FRAME || type.name().equals("GLOW_ITEM_FRAME") || type.name().equals("ITEM_DISPLAY") || type.name().equals("BLOCK_DISPLAY")) { npc.data().set(NPC.Metadata.ITEM_AMOUNT, item.getAmount()); diff --git a/main/src/main/java/net/citizensnpcs/trait/HologramTrait.java b/main/src/main/java/net/citizensnpcs/trait/HologramTrait.java index b790bb66a..4b39a073d 100644 --- a/main/src/main/java/net/citizensnpcs/trait/HologramTrait.java +++ b/main/src/main/java/net/citizensnpcs/trait/HologramTrait.java @@ -538,7 +538,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); - itemNPC = registry.createNPCUsingItem(EntityType.DROPPED_ITEM, "", itemStack); + itemNPC = registry.createNPCUsingItem(Util.getFallbackEntityType("ITEM", "DROPPED_ITEM"), "", itemStack); itemNPC.data().setPersistent(NPC.Metadata.NAMEPLATE_VISIBLE, false); if (itemMatcher.group(2) != null) { if (itemMatcher.group(2).charAt(1) == '{') { diff --git a/main/src/main/java/net/citizensnpcs/trait/ScoreboardTrait.java b/main/src/main/java/net/citizensnpcs/trait/ScoreboardTrait.java index 548a2442f..78c90ecaf 100644 --- a/main/src/main/java/net/citizensnpcs/trait/ScoreboardTrait.java +++ b/main/src/main/java/net/citizensnpcs/trait/ScoreboardTrait.java @@ -245,12 +245,6 @@ public class ScoreboardTrait extends Trait { changed = false; } - public enum TeamPacketMode { - ADD, - REMOVE, - UPDATE; - } - private static boolean SUPPORT_COLLIDABLE_SETOPTION = true; private static boolean SUPPORT_GLOWING_COLOR = true; private static boolean SUPPORT_TAGS = true; diff --git a/main/src/main/java/net/citizensnpcs/trait/shop/ItemAction.java b/main/src/main/java/net/citizensnpcs/trait/shop/ItemAction.java index 99c94f6a2..aaf0e80c9 100644 --- a/main/src/main/java/net/citizensnpcs/trait/shop/ItemAction.java +++ b/main/src/main/java/net/citizensnpcs/trait/shop/ItemAction.java @@ -279,7 +279,7 @@ public class ItemAction extends NPCShopAction { "Compare item similarity", base.compareSimilarity ? ChatColor.GREEN + "On" : ChatColor.RED + "Off"); ctx.getSlot(3 * 9 + 2) .addClickHandler(InputMenus.toggler(res -> base.compareSimilarity = res, base.compareSimilarity)); - ctx.getSlot(3 * 9 + 3).setItemStack(new ItemStack(Material.BOOK), "NBT comparison filter", + ctx.getSlot(3 * 9 + 3).setItemStack(new ItemStack(Material.BOOK), "Component comparison filter", Joiner.on("\n").join(base.metaFilter)); ctx.getSlot(3 * 9 + 3) .addClickHandler(event -> ctx.getMenu() diff --git a/main/src/main/java/net/citizensnpcs/trait/versioned/MushroomCowTrait.java b/main/src/main/java/net/citizensnpcs/trait/versioned/MushroomCowTrait.java index 8de113c26..ef1b0d861 100644 --- a/main/src/main/java/net/citizensnpcs/trait/versioned/MushroomCowTrait.java +++ b/main/src/main/java/net/citizensnpcs/trait/versioned/MushroomCowTrait.java @@ -1,7 +1,6 @@ package net.citizensnpcs.trait.versioned; import org.bukkit.command.CommandSender; -import org.bukkit.entity.EntityType; import org.bukkit.entity.MushroomCow; import org.bukkit.entity.MushroomCow.Variant; @@ -15,6 +14,7 @@ import net.citizensnpcs.api.npc.NPC; import net.citizensnpcs.api.persistence.Persist; import net.citizensnpcs.api.trait.Trait; import net.citizensnpcs.api.trait.TraitName; +import net.citizensnpcs.api.trait.trait.MobType; import net.citizensnpcs.api.util.Messaging; import net.citizensnpcs.util.Messages; import net.citizensnpcs.util.Util; @@ -52,13 +52,16 @@ public class MushroomCowTrait extends Trait { aliases = { "npc" }, usage = "mushroomcow (--variant [variant])", desc = "", - modifiers = { "mushroomcow" }, + modifiers = { "mushroomcow", "mooshroom" }, min = 1, max = 1, permission = "citizens.npc.mushroomcow") - @Requirements(selected = true, ownership = true, types = { EntityType.MUSHROOM_COW }) + @Requirements(selected = true, ownership = true) public static void mushroomcow(CommandContext args, CommandSender sender, NPC npc, @Flag("variant") MushroomCow.Variant variant) throws CommandException { + if (!npc.getOrAddTrait(MobType.class).getType().name().equals("MOOSHROOM") + && !npc.getOrAddTrait(MobType.class).getType().name().equals("MUSHROOM_COW")) + throw new CommandUsageException(); MushroomCowTrait trait = npc.getOrAddTrait(MushroomCowTrait.class); boolean hasArg = false; if (args.hasValueFlag("variant")) { diff --git a/main/src/main/java/net/citizensnpcs/trait/versioned/SnowmanTrait.java b/main/src/main/java/net/citizensnpcs/trait/versioned/SnowmanTrait.java index be4130a20..ae8134673 100644 --- a/main/src/main/java/net/citizensnpcs/trait/versioned/SnowmanTrait.java +++ b/main/src/main/java/net/citizensnpcs/trait/versioned/SnowmanTrait.java @@ -1,7 +1,6 @@ package net.citizensnpcs.trait.versioned; import org.bukkit.command.CommandSender; -import org.bukkit.entity.EntityType; import org.bukkit.entity.Snowman; import net.citizensnpcs.api.command.Command; @@ -13,6 +12,7 @@ import net.citizensnpcs.api.npc.NPC; import net.citizensnpcs.api.persistence.Persist; import net.citizensnpcs.api.trait.Trait; import net.citizensnpcs.api.trait.TraitName; +import net.citizensnpcs.api.trait.trait.MobType; import net.citizensnpcs.api.util.Messaging; import net.citizensnpcs.util.Messages; @@ -58,13 +58,16 @@ public class SnowmanTrait extends Trait { aliases = { "npc" }, usage = "snowman (-d[erp]) (-f[orm snow])", desc = "", - modifiers = { "snowman" }, + modifiers = { "snowman", "snowgolem" }, min = 1, max = 1, flags = "df", permission = "citizens.npc.snowman") - @Requirements(selected = true, ownership = true, types = { EntityType.SNOWMAN }) + @Requirements(selected = true, ownership = true) public static void snowman(CommandContext args, CommandSender sender, NPC npc) throws CommandException { + if (!npc.getOrAddTrait(MobType.class).getType().name().equals("SNOWMAN") + && !npc.getOrAddTrait(MobType.class).getType().name().equals("SNOW_GOLEM")) + throw new CommandUsageException(); SnowmanTrait trait = npc.getOrAddTrait(SnowmanTrait.class); boolean hasArg = false; if (args.hasFlag('d')) { diff --git a/main/src/main/java/net/citizensnpcs/trait/waypoint/EntityMarkers.java b/main/src/main/java/net/citizensnpcs/trait/waypoint/EntityMarkers.java index 157d41680..69f605726 100644 --- a/main/src/main/java/net/citizensnpcs/trait/waypoint/EntityMarkers.java +++ b/main/src/main/java/net/citizensnpcs/trait/waypoint/EntityMarkers.java @@ -15,6 +15,7 @@ import net.citizensnpcs.api.npc.MemoryNPCDataStore; import net.citizensnpcs.api.npc.NPC; import net.citizensnpcs.api.npc.NPCRegistry; import net.citizensnpcs.npc.ai.NPCHolder; +import net.citizensnpcs.util.Util; /** * A helper class for storing a number of entity markers. By default an entity marker is a non-persisted EnderSignal. @@ -78,12 +79,6 @@ public class EntityMarkers { return npc.getEntity(); } - private static EntityType DEFAULT_ENTITY_TYPE = EntityType.ENDER_SIGNAL; + private static final EntityType DEFAULT_ENTITY_TYPE = Util.getFallbackEntityType("SHULKER_BULLET", "ENDER_SIGNAL"); - static { - try { - DEFAULT_ENTITY_TYPE = EntityType.valueOf("SHULKER_BULLET"); - } catch (IllegalArgumentException e) { - } - } } \ No newline at end of file diff --git a/main/src/main/java/net/citizensnpcs/util/Util.java b/main/src/main/java/net/citizensnpcs/util/Util.java index 63fd00ae9..2dc863573 100644 --- a/main/src/main/java/net/citizensnpcs/util/Util.java +++ b/main/src/main/java/net/citizensnpcs/util/Util.java @@ -240,6 +240,16 @@ public class Util { return entity instanceof LivingEntity ? ((LivingEntity) entity).getEyeLocation() : entity.getLocation(); } + public static EntityType getFallbackEntityType(String first, String second) { + for (EntityType type : EntityType.values()) { + if (type.name().equals(first)) + return type; + if (type.name().equals(second)) + return type; + } + return null; + } + public static Material getFallbackMaterial(String first, String... second) { try { return Material.valueOf(first); @@ -274,10 +284,8 @@ public class Util { } public static boolean isAlwaysFlyable(EntityType type) { - if (type.name().toLowerCase().equals("vex") || type.name().toLowerCase().equals("parrot") - || type.name().toLowerCase().equals("allay") || type.name().toLowerCase().equals("bee") - || type.name().toLowerCase().equals("phantom")) - // 1.8.8 compatibility + if (type.name().equals("VEX") || type.name().equals("PARROT") || type.name().equals("ALLAY") + || type.name().equals("BEE") || type.name().equals("PHANTOM") || type.name().equals("BREEZE")) return true; switch (type) { case BAT: @@ -339,7 +347,7 @@ public class Util { toMatch = toMatch.toLowerCase().replace('-', '_').replace(' ', '_'); for (T check : values) { if (toMatch.equals(check.name().toLowerCase()) - || toMatch.equals("item") && check == EntityType.DROPPED_ITEM) + || toMatch.equals("item") && check.name().equals("DROPPED_ITEM")) return check; // check for an exact match first } @@ -600,6 +608,7 @@ public class Util { private static final Scoreboard DUMMY_SCOREBOARD = Bukkit.getScoreboardManager().getNewScoreboard(); private static boolean SUPPORTS_BUKKIT_GETENTITY = true; private static boolean SUPPORTS_ENTITY_CANSEE = true; + private static final DecimalFormat TWO_DIGIT_DECIMAL = new DecimalFormat(); static { diff --git a/pom.xml b/pom.xml index ddd473b47..070c8163e 100644 --- a/pom.xml +++ b/pom.xml @@ -6,16 +6,16 @@ pom net.citizensnpcs citizens-parent - 2.0.33-SNAPSHOT + 2.0.34-SNAPSHOT Unknown - 2.0.33 - 3.5.0 - 3.5.0 + 2.0.34 + 3.6.3 + 3.7.1 3.1.1 - 3.11.0 - 3.3.0 - 3.4.1 + 3.13.0 + 3.4.1 + 3.5.2 @@ -44,7 +44,7 @@ v1_16_R3 v1_18_R2 v1_19_R3 - v1_20_R3 + v1_20_R4 dist @@ -63,7 +63,7 @@ v1_17_R1 v1_18_R2 v1_19_R3 - v1_20_R3 + v1_20_R4 dist @@ -71,7 +71,7 @@ dev main - v1_20_R3 + v1_20_R4 dist diff --git a/v1_10_R1/pom.xml b/v1_10_R1/pom.xml index 5a34ce579..da6921ff6 100644 --- a/v1_10_R1/pom.xml +++ b/v1_10_R1/pom.xml @@ -6,7 +6,7 @@ net.citizensnpcs citizens-parent - 2.0.33-SNAPSHOT + 2.0.34-SNAPSHOT citizens-v1_10_R1 diff --git a/v1_11_R1/pom.xml b/v1_11_R1/pom.xml index 38d6cdf42..88e223af9 100644 --- a/v1_11_R1/pom.xml +++ b/v1_11_R1/pom.xml @@ -6,7 +6,7 @@ net.citizensnpcs citizens-parent - 2.0.33-SNAPSHOT + 2.0.34-SNAPSHOT citizens-v1_11_R1 diff --git a/v1_12_R1/pom.xml b/v1_12_R1/pom.xml index 15dced94e..d5830357f 100644 --- a/v1_12_R1/pom.xml +++ b/v1_12_R1/pom.xml @@ -6,7 +6,7 @@ net.citizensnpcs citizens-parent - 2.0.33-SNAPSHOT + 2.0.34-SNAPSHOT citizens-v1_12_R1 diff --git a/v1_13_R2/pom.xml b/v1_13_R2/pom.xml index 2bd21559a..6e4d3e20e 100644 --- a/v1_13_R2/pom.xml +++ b/v1_13_R2/pom.xml @@ -6,7 +6,7 @@ net.citizensnpcs citizens-parent - 2.0.33-SNAPSHOT + 2.0.34-SNAPSHOT citizens-v1_13_R2 diff --git a/v1_14_R1/pom.xml b/v1_14_R1/pom.xml index 2c5cd717f..30461c6ae 100644 --- a/v1_14_R1/pom.xml +++ b/v1_14_R1/pom.xml @@ -6,7 +6,7 @@ net.citizensnpcs citizens-parent - 2.0.33-SNAPSHOT + 2.0.34-SNAPSHOT citizens-v1_14_R1 diff --git a/v1_15_R1/pom.xml b/v1_15_R1/pom.xml index ca5718a63..dc87f710f 100644 --- a/v1_15_R1/pom.xml +++ b/v1_15_R1/pom.xml @@ -4,7 +4,7 @@ net.citizensnpcs citizens-parent - 2.0.33-SNAPSHOT + 2.0.34-SNAPSHOT citizens-v1_15_R1 diff --git a/v1_16_R3/pom.xml b/v1_16_R3/pom.xml index 2b14af460..b4d1f4f6f 100644 --- a/v1_16_R3/pom.xml +++ b/v1_16_R3/pom.xml @@ -4,7 +4,7 @@ net.citizensnpcs citizens-parent - 2.0.33-SNAPSHOT + 2.0.34-SNAPSHOT citizens-v1_16_R3 diff --git a/v1_17_R1/pom.xml b/v1_17_R1/pom.xml index 419fa00f2..748235957 100644 --- a/v1_17_R1/pom.xml +++ b/v1_17_R1/pom.xml @@ -6,7 +6,7 @@ net.citizensnpcs citizens-parent - 2.0.33-SNAPSHOT + 2.0.34-SNAPSHOT citizens-v1_17_R1 diff --git a/v1_18_R2/pom.xml b/v1_18_R2/pom.xml index 0e70aee77..7450f89d7 100644 --- a/v1_18_R2/pom.xml +++ b/v1_18_R2/pom.xml @@ -6,7 +6,7 @@ net.citizensnpcs citizens-parent - 2.0.33-SNAPSHOT + 2.0.34-SNAPSHOT citizens-v1_18_R2 diff --git a/v1_18_R2/src/main/java/net/citizensnpcs/nms/v1_18_R2/util/CustomEntityRegistry.java b/v1_18_R2/src/main/java/net/citizensnpcs/nms/v1_18_R2/util/CustomEntityRegistry.java index 970ac8ca5..ef11f1001 100644 --- a/v1_18_R2/src/main/java/net/citizensnpcs/nms/v1_18_R2/util/CustomEntityRegistry.java +++ b/v1_18_R2/src/main/java/net/citizensnpcs/nms/v1_18_R2/util/CustomEntityRegistry.java @@ -311,26 +311,32 @@ public class CustomEntityRegistry extends DefaultedRegistry implements Supplier< minecraftClassMap.put(EntityType.BOAT, Boat.class); minecraftClassMap.put(EntityType.CAT, Cat.class); minecraftClassMap.put(EntityType.CAVE_SPIDER, CaveSpider.class); + minecraftClassMap.put(EntityType.CHEST_MINECART, MinecartChest.class); minecraftClassMap.put(EntityType.CHICKEN, Chicken.class); minecraftClassMap.put(EntityType.COD, Cod.class); + minecraftClassMap.put(EntityType.COMMAND_BLOCK_MINECART, MinecartCommandBlock.class); minecraftClassMap.put(EntityType.COW, Cow.class); minecraftClassMap.put(EntityType.CREEPER, Creeper.class); minecraftClassMap.put(EntityType.DOLPHIN, Dolphin.class); minecraftClassMap.put(EntityType.DONKEY, Donkey.class); minecraftClassMap.put(EntityType.DRAGON_FIREBALL, DragonFireball.class); minecraftClassMap.put(EntityType.DROWNED, Drowned.class); + minecraftClassMap.put(EntityType.EGG, ThrownEgg.class); minecraftClassMap.put(EntityType.ELDER_GUARDIAN, ElderGuardian.class); minecraftClassMap.put(EntityType.END_CRYSTAL, EndCrystal.class); minecraftClassMap.put(EntityType.ENDER_DRAGON, EnderDragon.class); + minecraftClassMap.put(EntityType.ENDER_PEARL, ThrownEnderpearl.class); minecraftClassMap.put(EntityType.ENDERMAN, EnderMan.class); minecraftClassMap.put(EntityType.ENDERMITE, Endermite.class); minecraftClassMap.put(EntityType.EVOKER, Evoker.class); minecraftClassMap.put(EntityType.EVOKER_FANGS, EvokerFangs.class); + minecraftClassMap.put(EntityType.EXPERIENCE_BOTTLE, ThrownExperienceBottle.class); minecraftClassMap.put(EntityType.EXPERIENCE_ORB, ExperienceOrb.class); minecraftClassMap.put(EntityType.EYE_OF_ENDER, EyeOfEnder.class); minecraftClassMap.put(EntityType.FALLING_BLOCK, FallingBlockEntity.class); minecraftClassMap.put(EntityType.FIREWORK_ROCKET, FireworkRocketEntity.class); minecraftClassMap.put(EntityType.FOX, Fox.class); + minecraftClassMap.put(EntityType.FURNACE_MINECART, MinecartFurnace.class); minecraftClassMap.put(EntityType.GHAST, Ghast.class); minecraftClassMap.put(EntityType.GIANT, Giant.class); minecraftClassMap.put(EntityType.GLOW_ITEM_FRAME, GlowItemFrame.class); @@ -338,6 +344,7 @@ public class CustomEntityRegistry extends DefaultedRegistry implements Supplier< minecraftClassMap.put(EntityType.GOAT, Goat.class); minecraftClassMap.put(EntityType.GUARDIAN, Guardian.class); minecraftClassMap.put(EntityType.HOGLIN, Hoglin.class); + minecraftClassMap.put(EntityType.HOPPER_MINECART, MinecartHopper.class); minecraftClassMap.put(EntityType.HORSE, Horse.class); minecraftClassMap.put(EntityType.HUSK, Husk.class); minecraftClassMap.put(EntityType.ILLUSIONER, Illusioner.class); @@ -352,14 +359,8 @@ public class CustomEntityRegistry extends DefaultedRegistry implements Supplier< minecraftClassMap.put(EntityType.MAGMA_CUBE, MagmaCube.class); minecraftClassMap.put(EntityType.MARKER, Marker.class); minecraftClassMap.put(EntityType.MINECART, Minecart.class); - minecraftClassMap.put(EntityType.CHEST_MINECART, MinecartChest.class); - minecraftClassMap.put(EntityType.COMMAND_BLOCK_MINECART, MinecartCommandBlock.class); - minecraftClassMap.put(EntityType.FURNACE_MINECART, MinecartFurnace.class); - minecraftClassMap.put(EntityType.HOPPER_MINECART, MinecartHopper.class); - minecraftClassMap.put(EntityType.SPAWNER_MINECART, MinecartSpawner.class); - minecraftClassMap.put(EntityType.TNT_MINECART, MinecartTNT.class); - minecraftClassMap.put(EntityType.MULE, Mule.class); minecraftClassMap.put(EntityType.MOOSHROOM, MushroomCow.class); + minecraftClassMap.put(EntityType.MULE, Mule.class); minecraftClassMap.put(EntityType.OCELOT, Ocelot.class); minecraftClassMap.put(EntityType.PAINTING, Painting.class); minecraftClassMap.put(EntityType.PANDA, Panda.class); @@ -370,7 +371,7 @@ public class CustomEntityRegistry extends DefaultedRegistry implements Supplier< minecraftClassMap.put(EntityType.PIGLIN_BRUTE, PiglinBrute.class); minecraftClassMap.put(EntityType.PILLAGER, Pillager.class); minecraftClassMap.put(EntityType.POLAR_BEAR, PolarBear.class); - minecraftClassMap.put(EntityType.TNT, PrimedTnt.class); + minecraftClassMap.put(EntityType.POTION, ThrownPotion.class); minecraftClassMap.put(EntityType.PUFFERFISH, Pufferfish.class); minecraftClassMap.put(EntityType.RABBIT, Rabbit.class); minecraftClassMap.put(EntityType.RAVAGER, Ravager.class); @@ -385,17 +386,16 @@ public class CustomEntityRegistry extends DefaultedRegistry implements Supplier< minecraftClassMap.put(EntityType.SMALL_FIREBALL, SmallFireball.class); minecraftClassMap.put(EntityType.SNOW_GOLEM, SnowGolem.class); minecraftClassMap.put(EntityType.SNOWBALL, Snowball.class); + minecraftClassMap.put(EntityType.SPAWNER_MINECART, MinecartSpawner.class); minecraftClassMap.put(EntityType.SPECTRAL_ARROW, SpectralArrow.class); minecraftClassMap.put(EntityType.SPIDER, Spider.class); minecraftClassMap.put(EntityType.SQUID, Squid.class); minecraftClassMap.put(EntityType.STRAY, Stray.class); minecraftClassMap.put(EntityType.STRIDER, Strider.class); - minecraftClassMap.put(EntityType.EGG, ThrownEgg.class); - minecraftClassMap.put(EntityType.ENDER_PEARL, ThrownEnderpearl.class); - minecraftClassMap.put(EntityType.EXPERIENCE_BOTTLE, ThrownExperienceBottle.class); - minecraftClassMap.put(EntityType.POTION, ThrownPotion.class); - minecraftClassMap.put(EntityType.TRIDENT, ThrownTrident.class); + minecraftClassMap.put(EntityType.TNT, PrimedTnt.class); + minecraftClassMap.put(EntityType.TNT_MINECART, MinecartTNT.class); minecraftClassMap.put(EntityType.TRADER_LLAMA, TraderLlama.class); + minecraftClassMap.put(EntityType.TRIDENT, ThrownTrident.class); minecraftClassMap.put(EntityType.TROPICAL_FISH, TropicalFish.class); minecraftClassMap.put(EntityType.TURTLE, Turtle.class); minecraftClassMap.put(EntityType.VEX, Vex.class); diff --git a/v1_19_R3/pom.xml b/v1_19_R3/pom.xml index 447b66baf..8cbdd265b 100644 --- a/v1_19_R3/pom.xml +++ b/v1_19_R3/pom.xml @@ -4,7 +4,7 @@ net.citizensnpcs citizens-parent - 2.0.33-SNAPSHOT + 2.0.34-SNAPSHOT citizens-v1_19_R3 diff --git a/v1_19_R3/src/main/java/net/citizensnpcs/nms/v1_19_R3/entity/EntityHumanNPC.java b/v1_19_R3/src/main/java/net/citizensnpcs/nms/v1_19_R3/entity/EntityHumanNPC.java index 9b2d2d218..aec83859e 100644 --- a/v1_19_R3/src/main/java/net/citizensnpcs/nms/v1_19_R3/entity/EntityHumanNPC.java +++ b/v1_19_R3/src/main/java/net/citizensnpcs/nms/v1_19_R3/entity/EntityHumanNPC.java @@ -469,9 +469,7 @@ public class EntityHumanNPC extends ServerPlayer implements NPCHolder, Skinnable } private static final float EPSILON = 0.003F; - private static final MethodHandle GAMEMODE_SETTING = NMS.getFirstMethodHandle(ServerPlayerGameMode.class, true, GameType.class, GameType.class); private static final Location LOADED_LOCATION = new Location(null, 0, 0, 0); - private static int MAX_LENGTH = 0; } diff --git a/v1_19_R3/src/main/java/net/citizensnpcs/nms/v1_19_R3/util/CustomEntityRegistry.java b/v1_19_R3/src/main/java/net/citizensnpcs/nms/v1_19_R3/util/CustomEntityRegistry.java index c5b3b96f0..2300d743b 100644 --- a/v1_19_R3/src/main/java/net/citizensnpcs/nms/v1_19_R3/util/CustomEntityRegistry.java +++ b/v1_19_R3/src/main/java/net/citizensnpcs/nms/v1_19_R3/util/CustomEntityRegistry.java @@ -36,6 +36,7 @@ import net.minecraft.world.entity.Display; import net.minecraft.world.entity.EntityType; import net.minecraft.world.entity.ExperienceOrb; import net.minecraft.world.entity.GlowSquid; +import net.minecraft.world.entity.Interaction; import net.minecraft.world.entity.LightningBolt; import net.minecraft.world.entity.Marker; import net.minecraft.world.entity.ambient.Bat; @@ -75,6 +76,7 @@ import net.minecraft.world.entity.animal.horse.Mule; import net.minecraft.world.entity.animal.horse.SkeletonHorse; import net.minecraft.world.entity.animal.horse.TraderLlama; import net.minecraft.world.entity.animal.horse.ZombieHorse; +import net.minecraft.world.entity.animal.sniffer.Sniffer; import net.minecraft.world.entity.boss.enderdragon.EndCrystal; import net.minecraft.world.entity.boss.enderdragon.EnderDragon; import net.minecraft.world.entity.boss.wither.WitherBoss; @@ -353,32 +355,39 @@ public class CustomEntityRegistry extends DefaultedMappedRegistry> minecraftClassMap.put(EntityType.BAT, Bat.class); minecraftClassMap.put(EntityType.BEE, Bee.class); minecraftClassMap.put(EntityType.BLAZE, Blaze.class); + minecraftClassMap.put(EntityType.BLOCK_DISPLAY, Display.BlockDisplay.class); minecraftClassMap.put(EntityType.BOAT, Boat.class); - minecraftClassMap.put(EntityType.CHEST_BOAT, ChestBoat.class); - minecraftClassMap.put(EntityType.CAT, Cat.class); minecraftClassMap.put(EntityType.CAMEL, Camel.class); + minecraftClassMap.put(EntityType.CAT, Cat.class); minecraftClassMap.put(EntityType.CAVE_SPIDER, CaveSpider.class); + minecraftClassMap.put(EntityType.CHEST_BOAT, ChestBoat.class); + minecraftClassMap.put(EntityType.CHEST_MINECART, MinecartChest.class); minecraftClassMap.put(EntityType.CHICKEN, Chicken.class); minecraftClassMap.put(EntityType.COD, Cod.class); + minecraftClassMap.put(EntityType.COMMAND_BLOCK_MINECART, MinecartCommandBlock.class); minecraftClassMap.put(EntityType.COW, Cow.class); minecraftClassMap.put(EntityType.CREEPER, Creeper.class); minecraftClassMap.put(EntityType.DOLPHIN, Dolphin.class); minecraftClassMap.put(EntityType.DONKEY, Donkey.class); minecraftClassMap.put(EntityType.DRAGON_FIREBALL, DragonFireball.class); minecraftClassMap.put(EntityType.DROWNED, Drowned.class); + minecraftClassMap.put(EntityType.EGG, ThrownEgg.class); minecraftClassMap.put(EntityType.ELDER_GUARDIAN, ElderGuardian.class); minecraftClassMap.put(EntityType.END_CRYSTAL, EndCrystal.class); minecraftClassMap.put(EntityType.ENDER_DRAGON, EnderDragon.class); + minecraftClassMap.put(EntityType.ENDER_PEARL, ThrownEnderpearl.class); minecraftClassMap.put(EntityType.ENDERMAN, EnderMan.class); minecraftClassMap.put(EntityType.ENDERMITE, Endermite.class); minecraftClassMap.put(EntityType.EVOKER, Evoker.class); minecraftClassMap.put(EntityType.EVOKER_FANGS, EvokerFangs.class); + minecraftClassMap.put(EntityType.EXPERIENCE_BOTTLE, ThrownExperienceBottle.class); minecraftClassMap.put(EntityType.EXPERIENCE_ORB, ExperienceOrb.class); minecraftClassMap.put(EntityType.EYE_OF_ENDER, EyeOfEnder.class); minecraftClassMap.put(EntityType.FALLING_BLOCK, FallingBlockEntity.class); minecraftClassMap.put(EntityType.FIREWORK_ROCKET, FireworkRocketEntity.class); minecraftClassMap.put(EntityType.FOX, Fox.class); minecraftClassMap.put(EntityType.FROG, Frog.class); + minecraftClassMap.put(EntityType.FURNACE_MINECART, MinecartFurnace.class); minecraftClassMap.put(EntityType.GHAST, Ghast.class); minecraftClassMap.put(EntityType.GIANT, Giant.class); minecraftClassMap.put(EntityType.GLOW_ITEM_FRAME, GlowItemFrame.class); @@ -386,11 +395,14 @@ public class CustomEntityRegistry extends DefaultedMappedRegistry> minecraftClassMap.put(EntityType.GOAT, Goat.class); minecraftClassMap.put(EntityType.GUARDIAN, Guardian.class); minecraftClassMap.put(EntityType.HOGLIN, Hoglin.class); + minecraftClassMap.put(EntityType.HOPPER_MINECART, MinecartHopper.class); minecraftClassMap.put(EntityType.HORSE, Horse.class); minecraftClassMap.put(EntityType.HUSK, Husk.class); minecraftClassMap.put(EntityType.ILLUSIONER, Illusioner.class); + minecraftClassMap.put(EntityType.INTERACTION, Interaction.class); minecraftClassMap.put(EntityType.IRON_GOLEM, IronGolem.class); minecraftClassMap.put(EntityType.ITEM, ItemEntity.class); + minecraftClassMap.put(EntityType.ITEM_DISPLAY, Display.ItemDisplay.class); minecraftClassMap.put(EntityType.ITEM_FRAME, ItemFrame.class); minecraftClassMap.put(EntityType.FIREBALL, LargeFireball.class); minecraftClassMap.put(EntityType.LEASH_KNOT, LeashFenceKnotEntity.class); @@ -400,14 +412,8 @@ public class CustomEntityRegistry extends DefaultedMappedRegistry> minecraftClassMap.put(EntityType.MAGMA_CUBE, MagmaCube.class); minecraftClassMap.put(EntityType.MARKER, Marker.class); minecraftClassMap.put(EntityType.MINECART, Minecart.class); - minecraftClassMap.put(EntityType.CHEST_MINECART, MinecartChest.class); - minecraftClassMap.put(EntityType.COMMAND_BLOCK_MINECART, MinecartCommandBlock.class); - minecraftClassMap.put(EntityType.FURNACE_MINECART, MinecartFurnace.class); - minecraftClassMap.put(EntityType.HOPPER_MINECART, MinecartHopper.class); - minecraftClassMap.put(EntityType.SPAWNER_MINECART, MinecartSpawner.class); - minecraftClassMap.put(EntityType.TNT_MINECART, MinecartTNT.class); - minecraftClassMap.put(EntityType.MULE, Mule.class); minecraftClassMap.put(EntityType.MOOSHROOM, MushroomCow.class); + minecraftClassMap.put(EntityType.MULE, Mule.class); minecraftClassMap.put(EntityType.OCELOT, Ocelot.class); minecraftClassMap.put(EntityType.PAINTING, Painting.class); minecraftClassMap.put(EntityType.PANDA, Panda.class); @@ -418,7 +424,7 @@ public class CustomEntityRegistry extends DefaultedMappedRegistry> minecraftClassMap.put(EntityType.PIGLIN_BRUTE, PiglinBrute.class); minecraftClassMap.put(EntityType.PILLAGER, Pillager.class); minecraftClassMap.put(EntityType.POLAR_BEAR, PolarBear.class); - minecraftClassMap.put(EntityType.TNT, PrimedTnt.class); + minecraftClassMap.put(EntityType.POTION, ThrownPotion.class); minecraftClassMap.put(EntityType.PUFFERFISH, Pufferfish.class); minecraftClassMap.put(EntityType.RABBIT, Rabbit.class); minecraftClassMap.put(EntityType.RAVAGER, Ravager.class); @@ -426,30 +432,26 @@ public class CustomEntityRegistry extends DefaultedMappedRegistry> minecraftClassMap.put(EntityType.SHEEP, Sheep.class); minecraftClassMap.put(EntityType.SHULKER, Shulker.class); minecraftClassMap.put(EntityType.SHULKER_BULLET, ShulkerBullet.class); - minecraftClassMap.put(EntityType.SNIFFER, net.minecraft.world.entity.animal.sniffer.Sniffer.class); - minecraftClassMap.put(EntityType.BLOCK_DISPLAY, Display.BlockDisplay.class); - minecraftClassMap.put(EntityType.ITEM_DISPLAY, Display.ItemDisplay.class); - minecraftClassMap.put(EntityType.TEXT_DISPLAY, Display.TextDisplay.class); - minecraftClassMap.put(EntityType.INTERACTION, net.minecraft.world.entity.Interaction.class); minecraftClassMap.put(EntityType.SILVERFISH, Silverfish.class); minecraftClassMap.put(EntityType.SKELETON, Skeleton.class); minecraftClassMap.put(EntityType.SKELETON_HORSE, SkeletonHorse.class); minecraftClassMap.put(EntityType.SLIME, Slime.class); minecraftClassMap.put(EntityType.SMALL_FIREBALL, SmallFireball.class); + minecraftClassMap.put(EntityType.SNIFFER, Sniffer.class); minecraftClassMap.put(EntityType.SNOW_GOLEM, SnowGolem.class); minecraftClassMap.put(EntityType.SNOWBALL, Snowball.class); + minecraftClassMap.put(EntityType.SPAWNER_MINECART, MinecartSpawner.class); minecraftClassMap.put(EntityType.SPECTRAL_ARROW, SpectralArrow.class); minecraftClassMap.put(EntityType.SPIDER, Spider.class); minecraftClassMap.put(EntityType.SQUID, Squid.class); minecraftClassMap.put(EntityType.STRAY, Stray.class); minecraftClassMap.put(EntityType.STRIDER, Strider.class); minecraftClassMap.put(EntityType.TADPOLE, Tadpole.class); - minecraftClassMap.put(EntityType.EGG, ThrownEgg.class); - minecraftClassMap.put(EntityType.ENDER_PEARL, ThrownEnderpearl.class); - minecraftClassMap.put(EntityType.EXPERIENCE_BOTTLE, ThrownExperienceBottle.class); - minecraftClassMap.put(EntityType.POTION, ThrownPotion.class); - minecraftClassMap.put(EntityType.TRIDENT, ThrownTrident.class); + minecraftClassMap.put(EntityType.TEXT_DISPLAY, Display.TextDisplay.class); + minecraftClassMap.put(EntityType.TNT, PrimedTnt.class); + minecraftClassMap.put(EntityType.TNT_MINECART, MinecartTNT.class); minecraftClassMap.put(EntityType.TRADER_LLAMA, TraderLlama.class); + minecraftClassMap.put(EntityType.TRIDENT, ThrownTrident.class); minecraftClassMap.put(EntityType.TROPICAL_FISH, TropicalFish.class); minecraftClassMap.put(EntityType.TURTLE, Turtle.class); minecraftClassMap.put(EntityType.VEX, Vex.class); diff --git a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/util/EntityNodeEvaluator.java b/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/util/EntityNodeEvaluator.java deleted file mode 100644 index 82804db56..000000000 --- a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/util/EntityNodeEvaluator.java +++ /dev/null @@ -1,565 +0,0 @@ -package net.citizensnpcs.nms.v1_20_R3.util; - -import java.util.EnumSet; -import java.util.Iterator; - -import it.unimi.dsi.fastutil.longs.Long2ObjectMap; -import it.unimi.dsi.fastutil.longs.Long2ObjectOpenHashMap; -import it.unimi.dsi.fastutil.objects.Object2BooleanMap; -import it.unimi.dsi.fastutil.objects.Object2BooleanOpenHashMap; -import net.minecraft.core.BlockPos; -import net.minecraft.core.Direction; -import net.minecraft.core.Direction.Axis; -import net.minecraft.tags.BlockTags; -import net.minecraft.tags.FluidTags; -import net.minecraft.util.Mth; -import net.minecraft.world.entity.LivingEntity; -import net.minecraft.world.entity.Mob; -import net.minecraft.world.level.BlockGetter; -import net.minecraft.world.level.PathNavigationRegion; -import net.minecraft.world.level.block.BaseRailBlock; -import net.minecraft.world.level.block.Block; -import net.minecraft.world.level.block.Blocks; -import net.minecraft.world.level.block.CampfireBlock; -import net.minecraft.world.level.block.DoorBlock; -import net.minecraft.world.level.block.FenceGateBlock; -import net.minecraft.world.level.block.LeavesBlock; -import net.minecraft.world.level.block.state.BlockState; -import net.minecraft.world.level.material.FluidState; -import net.minecraft.world.level.material.Fluids; -import net.minecraft.world.level.pathfinder.BlockPathTypes; -import net.minecraft.world.level.pathfinder.Node; -import net.minecraft.world.level.pathfinder.PathComputationType; -import net.minecraft.world.level.pathfinder.Target; -import net.minecraft.world.phys.AABB; -import net.minecraft.world.phys.Vec3; -import net.minecraft.world.phys.shapes.VoxelShape; - -public class EntityNodeEvaluator extends EntityNodeEvaluatorBase { - private final Object2BooleanMap collisionCache = new Object2BooleanOpenHashMap(); - protected float oldWaterCost; - private final Long2ObjectMap pathTypesByPosCache = new Long2ObjectOpenHashMap(); - - private boolean canReachWithoutCollision(Node var0) { - AABB var1 = this.mob.getBoundingBox(); - Vec3 var2 = new Vec3(var0.x - this.mob.getX() + var1.getXsize() / 2.0, - var0.y - this.mob.getY() + var1.getYsize() / 2.0, var0.z - this.mob.getZ() + var1.getZsize() / 2.0); - int var3 = Mth.ceil(var2.length() / var1.getSize()); - var2 = var2.scale(1.0F / var3); - - for (int var4 = 1; var4 <= var3; ++var4) { - var1 = var1.move(var2); - if (this.hasCollisions(var1)) - return false; - } - return true; - } - - protected boolean canStartAt(BlockPos var0) { - BlockPathTypes var1 = this.getBlockPathType(this.mob, var0); - return var1 != BlockPathTypes.OPEN && this.mvmt.getPathfindingMalus(var1) >= 0.0F; - } - - @Override - public void done() { - this.mvmt.setPathfindingMalus(BlockPathTypes.WATER, this.oldWaterCost); - this.pathTypesByPosCache.clear(); - this.collisionCache.clear(); - super.done(); - } - - protected BlockPathTypes evaluateBlockPathType(BlockGetter var0, BlockPos var1, BlockPathTypes var2) { - boolean var3 = this.canPassDoors(); - if (var2 == BlockPathTypes.DOOR_WOOD_CLOSED && this.canOpenDoors() && var3) { - var2 = BlockPathTypes.WALKABLE_DOOR; - } - if (var2 == BlockPathTypes.DOOR_OPEN && !var3) { - var2 = BlockPathTypes.BLOCKED; - } - if (var2 == BlockPathTypes.RAIL && !(var0.getBlockState(var1).getBlock() instanceof BaseRailBlock) - && !(var0.getBlockState(var1.below()).getBlock() instanceof BaseRailBlock)) { - var2 = BlockPathTypes.UNPASSABLE_RAIL; - } - return var2; - } - - protected Node findAcceptedNode(int var0, int var1, int var2, int var3, double var4, Direction var6, - BlockPathTypes var7) { - Node var8 = null; - BlockPos.MutableBlockPos var9 = new BlockPos.MutableBlockPos(); - double var10 = this.getFloorLevel(var9.set(var0, var1, var2)); - if (var10 - var4 > this.getMobJumpHeight()) { - return null; - } else { - BlockPathTypes var12 = this.getCachedBlockType(this.mob, var0, var1, var2); - float var13 = this.mvmt.getPathfindingMalus(var12); - double var14 = this.mob.getBbWidth() / 2.0; - if (var13 >= 0.0F) { - var8 = this.getNodeAndUpdateCostToMax(var0, var1, var2, var12, var13); - } - if (doesBlockHavePartialCollision(var7) && var8 != null && var8.costMalus >= 0.0F - && !this.canReachWithoutCollision(var8)) { - var8 = null; - } - if (var12 == BlockPathTypes.WALKABLE || this.isAmphibious() && var12 == BlockPathTypes.WATER) { - return var8; - } else { - if ((var8 == null || var8.costMalus < 0.0F) && var3 > 0 - && (var12 != BlockPathTypes.FENCE || this.canWalkOverFences()) - && var12 != BlockPathTypes.UNPASSABLE_RAIL && var12 != BlockPathTypes.TRAPDOOR - && var12 != BlockPathTypes.POWDER_SNOW) { - var8 = this.findAcceptedNode(var0, var1 + 1, var2, var3 - 1, var4, var6, var7); - if (var8 != null && (var8.type == BlockPathTypes.OPEN || var8.type == BlockPathTypes.WALKABLE) - && this.mob.getBbWidth() < 1.0F) { - double var16 = var0 - var6.getStepX() + 0.5; - double var18 = var2 - var6.getStepZ() + 0.5; - AABB var20 = new AABB(var16 - var14, - this.getFloorLevel(var9.set(var16, var1 + 1, var18)) + 0.001, var18 - var14, - var16 + var14, - this.mob.getBbHeight() + this - .getFloorLevel(var9.set((double) var8.x, (double) var8.y, (double) var8.z)) - - 0.002, - var18 + var14); - if (this.hasCollisions(var20)) { - var8 = null; - } - } - } - if (!this.isAmphibious() && var12 == BlockPathTypes.WATER && !this.canFloat()) { - if (this.getCachedBlockType(this.mob, var0, var1 - 1, var2) != BlockPathTypes.WATER) { - return var8; - } - while (var1 > this.mob.level().getMinBuildHeight()) { - --var1; - var12 = this.getCachedBlockType(this.mob, var0, var1, var2); - if (var12 != BlockPathTypes.WATER) { - return var8; - } - var8 = this.getNodeAndUpdateCostToMax(var0, var1, var2, var12, - this.mvmt.getPathfindingMalus(var12)); - } - } - if (var12 == BlockPathTypes.OPEN) { - int var16 = 0; - int var17 = var1; - - while (var12 == BlockPathTypes.OPEN) { - --var1; - if (var1 < this.mob.level().getMinBuildHeight()) { - return this.getBlockedNode(var0, var17, var2); - } - if (var16++ >= this.mob.getMaxFallDistance()) { - return this.getBlockedNode(var0, var1, var2); - } - var12 = this.getCachedBlockType(this.mob, var0, var1, var2); - var13 = this.mvmt.getPathfindingMalus(var12); - if (var12 != BlockPathTypes.OPEN && var13 >= 0.0F) { - var8 = this.getNodeAndUpdateCostToMax(var0, var1, var2, var12, var13); - break; - } - if (var13 < 0.0F) { - return this.getBlockedNode(var0, var1, var2); - } - } - } - if (doesBlockHavePartialCollision(var12) && var8 == null) { - var8 = this.getNode(var0, var1, var2); - var8.closed = true; - var8.type = var12; - var8.costMalus = var12.getMalus(); - } - return var8; - } - } - } - - private Node getBlockedNode(int var0, int var1, int var2) { - Node var3 = this.getNode(var0, var1, var2); - var3.type = BlockPathTypes.BLOCKED; - var3.costMalus = -1.0F; - return var3; - } - - @Override - public BlockPathTypes getBlockPathType(BlockGetter var0, int var1, int var2, int var3) { - return getBlockPathTypeStatic(var0, new BlockPos.MutableBlockPos(var1, var2, var3)); - } - - public BlockPathTypes getBlockPathType(BlockGetter var0, int var1, int var2, int var3, LivingEntity var4) { - EnumSet var5 = EnumSet.noneOf(BlockPathTypes.class); - BlockPathTypes var6 = BlockPathTypes.BLOCKED; - var6 = this.getBlockPathTypes(var0, var1, var2, var3, var5, var6, var4.blockPosition()); - if (var5.contains(BlockPathTypes.FENCE)) - return BlockPathTypes.FENCE; - else if (var5.contains(BlockPathTypes.UNPASSABLE_RAIL)) - return BlockPathTypes.UNPASSABLE_RAIL; - else { - BlockPathTypes var7 = BlockPathTypes.BLOCKED; - Iterator var9 = var5.iterator(); - - while (var9.hasNext()) { - BlockPathTypes varr9 = (BlockPathTypes) var9.next(); - if (mvmt.getPathfindingMalus(varr9) < 0.0F) - return varr9; - - if (mvmt.getPathfindingMalus(varr9) >= mvmt.getPathfindingMalus(var7)) { - var7 = varr9; - } - } - if (var6 == BlockPathTypes.OPEN && mvmt.getPathfindingMalus(var7) == 0.0F && this.entityWidth <= 1) - return BlockPathTypes.OPEN; - else - return var7; - } - } - - @Override - public BlockPathTypes getBlockPathType(BlockGetter var0, int var1, int var2, int var3, Mob var4) { - EnumSet var5 = EnumSet.noneOf(BlockPathTypes.class); - BlockPathTypes var6 = BlockPathTypes.BLOCKED; - var6 = this.getBlockPathTypes(var0, var1, var2, var3, var5, var6, var4.blockPosition()); - if (var5.contains(BlockPathTypes.FENCE)) - return BlockPathTypes.FENCE; - else if (var5.contains(BlockPathTypes.UNPASSABLE_RAIL)) - return BlockPathTypes.UNPASSABLE_RAIL; - else { - BlockPathTypes var7 = BlockPathTypes.BLOCKED; - Iterator var9 = var5.iterator(); - - while (var9.hasNext()) { - BlockPathTypes varr9 = (BlockPathTypes) var9.next(); - if (mvmt.getPathfindingMalus(varr9) < 0.0F) - return varr9; - - if (mvmt.getPathfindingMalus(varr9) >= mvmt.getPathfindingMalus(var7)) { - var7 = varr9; - } - } - if (var6 == BlockPathTypes.OPEN && mvmt.getPathfindingMalus(var7) == 0.0F && this.entityWidth <= 1) - return BlockPathTypes.OPEN; - else - return var7; - } - } - - protected BlockPathTypes getBlockPathType(LivingEntity var0, BlockPos var1) { - return this.getCachedBlockType(var0, var1.getX(), var1.getY(), var1.getZ()); - } - - public BlockPathTypes getBlockPathTypes(BlockGetter var0, int var1, int var2, int var3, EnumSet var4, - BlockPathTypes var5, BlockPos var6) { - for (int var7 = 0; var7 < this.entityWidth; ++var7) { - for (int var8 = 0; var8 < this.entityHeight; ++var8) { - for (int var9 = 0; var9 < this.entityDepth; ++var9) { - int var10 = var7 + var1; - int var11 = var8 + var2; - int var12 = var9 + var3; - BlockPathTypes var13 = this.getBlockPathType(var0, var10, var11, var12); - var13 = this.evaluateBlockPathType(var0, var6, var13); - if (var7 == 0 && var8 == 0 && var9 == 0) { - var5 = var13; - } - var4.add(var13); - } - } - } - return var5; - } - - protected BlockPathTypes getCachedBlockType(LivingEntity var0, int var1, int var2, int var3) { - return (BlockPathTypes) this.pathTypesByPosCache.computeIfAbsent(BlockPos.asLong(var1, var2, var3), - var4 -> this.getBlockPathType(this.level, var1, var2, var3, var0)); - } - - protected double getFloorLevel(BlockPos var0) { - return (this.canFloat() || this.isAmphibious()) && this.level.getFluidState(var0).is(FluidTags.WATER) - ? var0.getY() + 0.5 - : getFloorLevel(this.level, var0); - } - - @Override - public Target getGoal(double var0, double var2, double var4) { - return this.getTargetFromNode(this.getNode(Mth.floor(var0), Mth.floor(var2), Mth.floor(var4))); - } - - private double getMobJumpHeight() { - return Math.max(1.125, this.mob.maxUpStep()); - } - - @Override - public int getNeighbors(Node[] var0, Node var1) { - int var2 = 0; - int var3 = 0; - BlockPathTypes var4 = this.getCachedBlockType(this.mob, var1.x, var1.y + 1, var1.z); - BlockPathTypes var5 = this.getCachedBlockType(this.mob, var1.x, var1.y, var1.z); - if (this.mvmt.getPathfindingMalus(var4) >= 0.0F && var5 != BlockPathTypes.STICKY_HONEY) { - var3 = Mth.floor(Math.max(1.0F, this.mob.maxUpStep())); - } - double var6 = this.getFloorLevel(new BlockPos(var1.x, var1.y, var1.z)); - Node var8 = this.findAcceptedNode(var1.x, var1.y, var1.z + 1, var3, var6, Direction.SOUTH, var5); - if (this.isNeighborValid(var8, var1)) { - var0[var2++] = var8; - } - Node var9 = this.findAcceptedNode(var1.x - 1, var1.y, var1.z, var3, var6, Direction.WEST, var5); - if (this.isNeighborValid(var9, var1)) { - var0[var2++] = var9; - } - Node var10 = this.findAcceptedNode(var1.x + 1, var1.y, var1.z, var3, var6, Direction.EAST, var5); - if (this.isNeighborValid(var10, var1)) { - var0[var2++] = var10; - } - Node var11 = this.findAcceptedNode(var1.x, var1.y, var1.z - 1, var3, var6, Direction.NORTH, var5); - if (this.isNeighborValid(var11, var1)) { - var0[var2++] = var11; - } - Node var12 = this.findAcceptedNode(var1.x - 1, var1.y, var1.z - 1, var3, var6, Direction.NORTH, var5); - if (this.isDiagonalValid(var1, var9, var11, var12)) { - var0[var2++] = var12; - } - Node var13 = this.findAcceptedNode(var1.x + 1, var1.y, var1.z - 1, var3, var6, Direction.NORTH, var5); - if (this.isDiagonalValid(var1, var10, var11, var13)) { - var0[var2++] = var13; - } - Node var14 = this.findAcceptedNode(var1.x - 1, var1.y, var1.z + 1, var3, var6, Direction.SOUTH, var5); - if (this.isDiagonalValid(var1, var9, var8, var14)) { - var0[var2++] = var14; - } - Node var15 = this.findAcceptedNode(var1.x + 1, var1.y, var1.z + 1, var3, var6, Direction.SOUTH, var5); - if (this.isDiagonalValid(var1, var10, var8, var15)) { - var0[var2++] = var15; - } - return var2; - } - - private Node getNodeAndUpdateCostToMax(int var0, int var1, int var2, BlockPathTypes var3, float var4) { - Node var5 = this.getNode(var0, var1, var2); - var5.type = var3; - var5.costMalus = Math.max(var5.costMalus, var4); - return var5; - } - - @Override - public Node getStart() { - BlockPos.MutableBlockPos var1 = new BlockPos.MutableBlockPos(); - int var0 = this.mob.getBlockY(); - BlockState var2 = this.level.getBlockState(var1.set(this.mob.getX(), var0, this.mob.getZ())); - BlockPos var3; - if (!this.mob.canStandOnFluid(var2.getFluidState())) { - if (this.canFloat() && this.mob.isInWater()) { - while (true) { - if (!var2.is(Blocks.WATER) && var2.getFluidState() != Fluids.WATER.getSource(false)) { - --var0; - break; - } - ++var0; - var2 = this.level.getBlockState(var1.set(this.mob.getX(), var0, this.mob.getZ())); - } - } else if (this.mob.onGround()) { - var0 = Mth.floor(this.mob.getY() + 0.5); - } else { - for (var3 = this.mob.blockPosition(); (this.level.getBlockState(var3).isAir() - || this.level.getBlockState(var3).isPathfindable(this.level, var3, PathComputationType.LAND)) - && var3.getY() > this.mob.level().getMinBuildHeight(); var3 = var3.below()) { - } - var0 = var3.above().getY(); - } - } else { - while (true) { - if (!this.mob.canStandOnFluid(var2.getFluidState())) { - --var0; - break; - } - ++var0; - var2 = this.level.getBlockState(var1.set(this.mob.getX(), var0, this.mob.getZ())); - } - } - var3 = this.mob.blockPosition(); - if (!this.canStartAt(var1.set(var3.getX(), var0, var3.getZ()))) { - AABB var4 = this.mob.getBoundingBox(); - if (this.canStartAt(var1.set(var4.minX, var0, var4.minZ)) - || this.canStartAt(var1.set(var4.minX, var0, var4.maxZ)) - || this.canStartAt(var1.set(var4.maxX, var0, var4.minZ)) - || this.canStartAt(var1.set(var4.maxX, var0, var4.maxZ))) { - return this.getStartNode(var1); - } - } - return this.getStartNode(new BlockPos(var3.getX(), var0, var3.getZ())); - } - - protected Node getStartNode(BlockPos var0) { - Node var1 = this.getNode(var0); - var1.type = this.getBlockPathType(this.mob, var1.asBlockPos()); - var1.costMalus = this.mvmt.getPathfindingMalus(var1.type); - return var1; - } - - private boolean hasCollisions(AABB var0) { - return this.collisionCache.computeIfAbsent(var0, var1 -> !this.level.noCollision(this.mob, var0)); - } - - protected boolean isAmphibious() { - return false; - } - - protected boolean isDiagonalValid(Node var0, Node var1, Node var2, Node var3) { - if (var3 != null && var2 != null && var1 != null) { - if (var3.closed) { - return false; - } else if (var2.y <= var0.y && var1.y <= var0.y) { - if (var1.type != BlockPathTypes.WALKABLE_DOOR && var2.type != BlockPathTypes.WALKABLE_DOOR - && var3.type != BlockPathTypes.WALKABLE_DOOR) { - boolean var4 = var2.type == BlockPathTypes.FENCE && var1.type == BlockPathTypes.FENCE - && this.mob.getBbWidth() < 0.5; - return var3.costMalus >= 0.0F && (var2.y < var0.y || var2.costMalus >= 0.0F || var4) - && (var1.y < var0.y || var1.costMalus >= 0.0F || var4); - } else { - return false; - } - } else { - return false; - } - } else { - return false; - } - } - - protected boolean isNeighborValid(Node var0, Node var1) { - return var0 != null && !var0.closed && (var0.costMalus >= 0.0F || var1.costMalus < 0.0F); - } - - @Override - public void prepare(PathNavigationRegion var0, LivingEntity var1) { - super.prepare(var0, var1); - this.oldWaterCost = mvmt.getPathfindingMalus(BlockPathTypes.WATER); - } - - @Override - public void prepare(PathNavigationRegion var0, Mob var1) { - super.prepare(var0, var1); - this.oldWaterCost = mvmt.getPathfindingMalus(BlockPathTypes.WATER); - } - - public static BlockPathTypes checkNeighbourBlocks(BlockGetter var0, BlockPos.MutableBlockPos var1, - BlockPathTypes var2) { - int var3 = var1.getX(); - int var4 = var1.getY(); - int var5 = var1.getZ(); - - for (int var6 = -1; var6 <= 1; ++var6) { - for (int var7 = -1; var7 <= 1; ++var7) { - for (int var8 = -1; var8 <= 1; ++var8) { - if (var6 != 0 || var8 != 0) { - var1.set(var3 + var6, var4 + var7, var5 + var8); - BlockState var9 = var0.getBlockState(var1); - if (var9.is(Blocks.CACTUS) || var9.is(Blocks.SWEET_BERRY_BUSH)) - return BlockPathTypes.DANGER_OTHER; - - if (isBurningBlock(var9)) - return BlockPathTypes.DANGER_FIRE; - - if (var0.getFluidState(var1).is(FluidTags.WATER)) - return BlockPathTypes.WATER_BORDER; - - if (var9.is(Blocks.WITHER_ROSE) || var9.is(Blocks.POINTED_DRIPSTONE)) - return BlockPathTypes.DAMAGE_CAUTIOUS; - } - } - } - } - return var2; - } - - private static boolean doesBlockHavePartialCollision(BlockPathTypes var0) { - return var0 == BlockPathTypes.FENCE || var0 == BlockPathTypes.DOOR_WOOD_CLOSED - || var0 == BlockPathTypes.DOOR_IRON_CLOSED; - } - - protected static BlockPathTypes getBlockPathTypeRaw(BlockGetter var0, BlockPos var1) { - BlockState var2 = var0.getBlockState(var1); - Block var3 = var2.getBlock(); - if (var2.isAir()) - return BlockPathTypes.OPEN; - else if (!var2.is(BlockTags.TRAPDOORS) && !var2.is(Blocks.LILY_PAD) && !var2.is(Blocks.BIG_DRIPLEAF)) { - if (var2.is(Blocks.POWDER_SNOW)) - return BlockPathTypes.POWDER_SNOW; - else if (!var2.is(Blocks.CACTUS) && !var2.is(Blocks.SWEET_BERRY_BUSH)) { - if (var2.is(Blocks.HONEY_BLOCK)) - return BlockPathTypes.STICKY_HONEY; - else if (var2.is(Blocks.COCOA)) - return BlockPathTypes.COCOA; - else if (!var2.is(Blocks.WITHER_ROSE) && !var2.is(Blocks.POINTED_DRIPSTONE)) { - FluidState var4 = var0.getFluidState(var1); - if (var4.is(FluidTags.LAVA)) - return BlockPathTypes.LAVA; - else if (isBurningBlock(var2)) - return BlockPathTypes.DAMAGE_FIRE; - else if (var3 instanceof DoorBlock) { - DoorBlock var5 = (DoorBlock) var3; - if (var2.getValue(DoorBlock.OPEN)) - return BlockPathTypes.DOOR_OPEN; - else - return var5.type().canOpenByHand() ? BlockPathTypes.DOOR_WOOD_CLOSED - : BlockPathTypes.DOOR_IRON_CLOSED; - } else if (var3 instanceof BaseRailBlock) - return BlockPathTypes.RAIL; - else if (var3 instanceof LeavesBlock) - return BlockPathTypes.LEAVES; - else if (var2.is(BlockTags.FENCES) || var2.is(BlockTags.WALLS) - || var3 instanceof FenceGateBlock && !(Boolean) var2.getValue(FenceGateBlock.OPEN)) - return BlockPathTypes.FENCE; - else if (!var2.isPathfindable(var0, var1, PathComputationType.LAND)) - return BlockPathTypes.BLOCKED; - else - return var4.is(FluidTags.WATER) ? BlockPathTypes.WATER : BlockPathTypes.OPEN; - } else - return BlockPathTypes.DAMAGE_CAUTIOUS; - } else - return BlockPathTypes.DAMAGE_OTHER; - } else - return BlockPathTypes.TRAPDOOR; - } - - public static BlockPathTypes getBlockPathTypeStatic(BlockGetter var0, BlockPos.MutableBlockPos var1) { - int var2 = var1.getX(); - int var3 = var1.getY(); - int var4 = var1.getZ(); - BlockPathTypes var5 = getBlockPathTypeRaw(var0, var1); - if (var5 == BlockPathTypes.OPEN && var3 >= var0.getMinBuildHeight() + 1) { - BlockPathTypes var6 = getBlockPathTypeRaw(var0, var1.set(var2, var3 - 1, var4)); - var5 = var6 != BlockPathTypes.WALKABLE && var6 != BlockPathTypes.OPEN && var6 != BlockPathTypes.WATER - && var6 != BlockPathTypes.LAVA ? BlockPathTypes.WALKABLE : BlockPathTypes.OPEN; - if (var6 == BlockPathTypes.DAMAGE_FIRE) { - var5 = BlockPathTypes.DAMAGE_FIRE; - } - if (var6 == BlockPathTypes.DAMAGE_OTHER) { - var5 = BlockPathTypes.DAMAGE_OTHER; - } - if (var6 == BlockPathTypes.STICKY_HONEY) { - var5 = BlockPathTypes.STICKY_HONEY; - } - if (var6 == BlockPathTypes.POWDER_SNOW) { - var5 = BlockPathTypes.DANGER_POWDER_SNOW; - } - if (var6 == BlockPathTypes.DAMAGE_CAUTIOUS) { - var5 = BlockPathTypes.DAMAGE_CAUTIOUS; - } - } - if (var5 == BlockPathTypes.WALKABLE) { - var5 = checkNeighbourBlocks(var0, var1.set(var2, var3, var4), var5); - } - return var5; - } - - public static double getFloorLevel(BlockGetter var0, BlockPos var1) { - BlockPos var2 = var1.below(); - VoxelShape var3 = var0.getBlockState(var2).getCollisionShape(var0, var2); - return var2.getY() + (var3.isEmpty() ? 0.0 : var3.max(Axis.Y)); - } - - public static boolean isBurningBlock(BlockState var0) { - return var0.is(BlockTags.FIRE) || var0.is(Blocks.LAVA) || var0.is(Blocks.MAGMA_BLOCK) - || CampfireBlock.isLitCampfire(var0) || var0.is(Blocks.LAVA_CAULDRON); - } - - public static final double SPACE_BETWEEN_WALL_POSTS = 0.5; -} diff --git a/v1_20_R3/pom.xml b/v1_20_R4/pom.xml similarity index 95% rename from v1_20_R3/pom.xml rename to v1_20_R4/pom.xml index 5b436509d..e022441fa 100644 --- a/v1_20_R3/pom.xml +++ b/v1_20_R4/pom.xml @@ -4,12 +4,12 @@ net.citizensnpcs citizens-parent - 2.0.33-SNAPSHOT + 2.0.34-SNAPSHOT - citizens-v1_20_R3 + citizens-v1_20_R4 UTF-8 - 1.20.4-R0.1-SNAPSHOT + 1.20.5-R0.1-SNAPSHOT @@ -55,7 +55,7 @@ net.md-5 specialsource-maven-plugin - 1.2.4 + 2.0.2 package diff --git a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/AllayController.java b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/AllayController.java similarity index 95% rename from v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/AllayController.java rename to v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/AllayController.java index f220a3209..0b15d6ba1 100644 --- a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/AllayController.java +++ b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/AllayController.java @@ -1,18 +1,18 @@ -package net.citizensnpcs.nms.v1_20_R3.entity; +package net.citizensnpcs.nms.v1_20_R4.entity; import org.bukkit.Bukkit; -import org.bukkit.craftbukkit.v1_20_R3.CraftServer; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftAllay; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftEntity; +import org.bukkit.craftbukkit.v1_20_R4.CraftServer; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftAllay; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftEntity; import com.google.common.collect.Lists; import com.mojang.datafixers.util.Pair; import net.citizensnpcs.api.CitizensAPI; import net.citizensnpcs.api.npc.NPC; -import net.citizensnpcs.nms.v1_20_R3.util.ForwardingNPCHolder; -import net.citizensnpcs.nms.v1_20_R3.util.NMSBoundingBox; -import net.citizensnpcs.nms.v1_20_R3.util.NMSImpl; +import net.citizensnpcs.nms.v1_20_R4.util.ForwardingNPCHolder; +import net.citizensnpcs.nms.v1_20_R4.util.NMSBoundingBox; +import net.citizensnpcs.nms.v1_20_R4.util.NMSImpl; import net.citizensnpcs.npc.CitizensNPC; import net.citizensnpcs.npc.ai.NPCHolder; import net.citizensnpcs.util.NMS; diff --git a/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/ArmadilloController.java b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/ArmadilloController.java new file mode 100644 index 000000000..774c13468 --- /dev/null +++ b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/ArmadilloController.java @@ -0,0 +1,225 @@ +package net.citizensnpcs.nms.v1_20_R4.entity; + +import org.bukkit.Bukkit; +import org.bukkit.craftbukkit.v1_20_R4.CraftServer; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftArmadillo; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftEntity; + +import net.citizensnpcs.api.npc.NPC; +import net.citizensnpcs.nms.v1_20_R4.util.ForwardingNPCHolder; +import net.citizensnpcs.nms.v1_20_R4.util.NMSBoundingBox; +import net.citizensnpcs.nms.v1_20_R4.util.NMSImpl; +import net.citizensnpcs.npc.CitizensNPC; +import net.citizensnpcs.npc.ai.NPCHolder; +import net.citizensnpcs.util.NMS; +import net.citizensnpcs.util.Util; +import net.minecraft.core.BlockPos; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.network.syncher.EntityDataAccessor; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.sounds.SoundEvent; +import net.minecraft.tags.TagKey; +import net.minecraft.world.damagesource.DamageSource; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.animal.armadillo.Armadillo; +import net.minecraft.world.entity.vehicle.AbstractMinecart; +import net.minecraft.world.entity.vehicle.Boat; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.material.Fluid; +import net.minecraft.world.level.material.PushReaction; +import net.minecraft.world.phys.AABB; +import net.minecraft.world.phys.Vec3; + +public class ArmadilloController extends MobEntityController { + public ArmadilloController() { + super(EntityArmadilloNPC.class); + } + + @Override + public org.bukkit.entity.Armadillo getBukkitEntity() { + return (org.bukkit.entity.Armadillo) super.getBukkitEntity(); + } + + public static class ArmadilloNPC extends CraftArmadillo implements ForwardingNPCHolder { + public ArmadilloNPC(EntityArmadilloNPC entity) { + super((CraftServer) Bukkit.getServer(), entity); + } + } + + public static class EntityArmadilloNPC extends Armadillo implements NPCHolder { + private final CitizensNPC npc; + + public EntityArmadilloNPC(EntityType types, Level level) { + this(types, level, null); + } + + public EntityArmadilloNPC(EntityType types, Level level, NPC npc) { + super(types, level); + this.npc = (CitizensNPC) npc; + } + + @Override + protected boolean canRide(Entity entity) { + if (npc != null && (entity instanceof Boat || entity instanceof AbstractMinecart)) + return !npc.isProtected(); + return super.canRide(entity); + } + + @Override + public boolean causeFallDamage(float f, float f1, DamageSource damagesource) { + if (npc == null || !npc.isFlyable()) + return super.causeFallDamage(f, f1, damagesource); + return false; + } + + @Override + public void checkDespawn() { + if (npc == null) { + super.checkDespawn(); + } + } + + @Override + protected void checkFallDamage(double d0, boolean flag, BlockState iblockdata, BlockPos blockposition) { + if (npc == null || !npc.isFlyable()) { + super.checkFallDamage(d0, flag, iblockdata, blockposition); + } + } + + @Override + public void customServerAiStep() { + super.customServerAiStep(); + if (npc != null) { + NMSImpl.updateMinecraftAIState(npc, this); + npc.update(); + } + } + + @Override + protected SoundEvent getAmbientSound() { + return NMSImpl.getSoundEffect(npc, super.getAmbientSound(), NPC.Metadata.AMBIENT_SOUND); + } + + @Override + public CraftEntity getBukkitEntity() { + if (npc != null && !(super.getBukkitEntity() instanceof NPCHolder)) { + NMSImpl.setBukkitEntity(this, new ArmadilloNPC(this)); + } + return super.getBukkitEntity(); + } + + @Override + protected SoundEvent getDeathSound() { + return NMSImpl.getSoundEffect(npc, super.getDeathSound(), NPC.Metadata.DEATH_SOUND); + } + + @Override + protected SoundEvent getHurtSound(DamageSource damagesource) { + return NMSImpl.getSoundEffect(npc, super.getHurtSound(damagesource), NPC.Metadata.HURT_SOUND); + } + + @Override + public float getJumpPower() { + return NMS.getJumpPower(npc, super.getJumpPower()); + } + + @Override + public int getMaxFallDistance() { + return NMS.getFallDistance(npc, super.getMaxFallDistance()); + } + + @Override + public NPC getNPC() { + return npc; + } + + @Override + public PushReaction getPistonPushReaction() { + return Util.callPistonPushEvent(npc) ? PushReaction.IGNORE : super.getPistonPushReaction(); + } + + @Override + public boolean isLeashed() { + return NMSImpl.isLeashed(npc, super::isLeashed, this); + } + + @Override + public boolean isPushable() { + return npc == null ? super.isPushable() + : npc.data(). get(NPC.Metadata.COLLIDABLE, !npc.isProtected()); + } + + @Override + public void knockback(double strength, double dx, double dz) { + NMS.callKnockbackEvent(npc, (float) strength, dx, dz, evt -> super.knockback((float) evt.getStrength(), + evt.getKnockbackVector().getX(), evt.getKnockbackVector().getZ())); + } + + @Override + protected AABB makeBoundingBox() { + return NMSBoundingBox.makeBB(npc, super.makeBoundingBox()); + } + + @Override + public boolean onClimbable() { + if (npc == null || !npc.isFlyable()) + return super.onClimbable(); + else + return false; + } + + @Override + public void onSyncedDataUpdated(EntityDataAccessor datawatcherobject) { + if (npc == null) { + super.onSyncedDataUpdated(datawatcherobject); + return; + } + NMSImpl.checkAndUpdateHeight(this, datawatcherobject, super::onSyncedDataUpdated); + } + + @Override + public void push(Entity entity) { + // this method is called by both the entities involved - cancelling + // it will not stop the NPC from moving. + super.push(entity); + if (npc != null) { + Util.callCollisionEvent(npc, entity.getBukkitEntity()); + } + } + + @Override + public boolean save(CompoundTag save) { + return npc == null ? super.save(save) : false; + } + + @Override + public Entity teleportTo(ServerLevel worldserver, Vec3 location) { + if (npc == null) + return super.teleportTo(worldserver, location); + return NMSImpl.teleportAcrossWorld(this, worldserver, location); + } + + @Override + public void travel(Vec3 vec3d) { + if (npc == null || !npc.isFlyable()) { + super.travel(vec3d); + } else { + NMSImpl.flyingMoveLogic(this, vec3d); + } + } + + @Override + public boolean updateFluidHeightAndDoFluidPushing(TagKey tagkey, double d0) { + if (npc == null) + return super.updateFluidHeightAndDoFluidPushing(tagkey, d0); + Vec3 old = getDeltaMovement().add(0, 0, 0); + boolean res = super.updateFluidHeightAndDoFluidPushing(tagkey, d0); + if (!npc.isPushableByFluids()) { + setDeltaMovement(old); + } + return res; + } + } +} diff --git a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/ArmorStandController.java b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/ArmorStandController.java similarity index 90% rename from v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/ArmorStandController.java rename to v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/ArmorStandController.java index 439bbf987..0056647cb 100644 --- a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/ArmorStandController.java +++ b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/ArmorStandController.java @@ -1,17 +1,17 @@ -package net.citizensnpcs.nms.v1_20_R3.entity; +package net.citizensnpcs.nms.v1_20_R4.entity; import org.bukkit.Bukkit; -import org.bukkit.craftbukkit.v1_20_R3.CraftServer; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftArmorStand; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftEntity; +import org.bukkit.craftbukkit.v1_20_R4.CraftServer; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftArmorStand; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftEntity; import org.bukkit.event.player.PlayerInteractEntityEvent; import net.citizensnpcs.api.npc.NPC; -import net.citizensnpcs.nms.v1_20_R3.util.ForwardingNPCHolder; -import net.citizensnpcs.nms.v1_20_R3.util.MobAI; -import net.citizensnpcs.nms.v1_20_R3.util.MobAI.ForwardingMobAI; -import net.citizensnpcs.nms.v1_20_R3.util.NMSBoundingBox; -import net.citizensnpcs.nms.v1_20_R3.util.NMSImpl; +import net.citizensnpcs.nms.v1_20_R4.util.ForwardingNPCHolder; +import net.citizensnpcs.nms.v1_20_R4.util.MobAI; +import net.citizensnpcs.nms.v1_20_R4.util.MobAI.ForwardingMobAI; +import net.citizensnpcs.nms.v1_20_R4.util.NMSBoundingBox; +import net.citizensnpcs.nms.v1_20_R4.util.NMSImpl; import net.citizensnpcs.npc.CitizensNPC; import net.citizensnpcs.npc.ai.NPCHolder; import net.citizensnpcs.util.Util; diff --git a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/AxolotlController.java b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/AxolotlController.java similarity index 95% rename from v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/AxolotlController.java rename to v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/AxolotlController.java index 85de92f7d..7009212ab 100644 --- a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/AxolotlController.java +++ b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/AxolotlController.java @@ -1,16 +1,16 @@ -package net.citizensnpcs.nms.v1_20_R3.entity; +package net.citizensnpcs.nms.v1_20_R4.entity; import org.bukkit.Bukkit; -import org.bukkit.craftbukkit.v1_20_R3.CraftServer; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftAxolotl; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftEntity; +import org.bukkit.craftbukkit.v1_20_R4.CraftServer; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftAxolotl; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftEntity; import com.mojang.serialization.Dynamic; import net.citizensnpcs.api.npc.NPC; -import net.citizensnpcs.nms.v1_20_R3.util.ForwardingNPCHolder; -import net.citizensnpcs.nms.v1_20_R3.util.NMSBoundingBox; -import net.citizensnpcs.nms.v1_20_R3.util.NMSImpl; +import net.citizensnpcs.nms.v1_20_R4.util.ForwardingNPCHolder; +import net.citizensnpcs.nms.v1_20_R4.util.NMSBoundingBox; +import net.citizensnpcs.nms.v1_20_R4.util.NMSImpl; import net.citizensnpcs.npc.CitizensNPC; import net.citizensnpcs.npc.ai.NPCHolder; import net.citizensnpcs.util.NMS; diff --git a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/BatController.java b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/BatController.java similarity index 94% rename from v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/BatController.java rename to v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/BatController.java index b117643a1..ce3ea6b2d 100644 --- a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/BatController.java +++ b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/BatController.java @@ -1,14 +1,14 @@ -package net.citizensnpcs.nms.v1_20_R3.entity; +package net.citizensnpcs.nms.v1_20_R4.entity; import org.bukkit.Bukkit; -import org.bukkit.craftbukkit.v1_20_R3.CraftServer; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftBat; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftEntity; +import org.bukkit.craftbukkit.v1_20_R4.CraftServer; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftBat; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftEntity; import net.citizensnpcs.api.npc.NPC; -import net.citizensnpcs.nms.v1_20_R3.util.ForwardingNPCHolder; -import net.citizensnpcs.nms.v1_20_R3.util.NMSBoundingBox; -import net.citizensnpcs.nms.v1_20_R3.util.NMSImpl; +import net.citizensnpcs.nms.v1_20_R4.util.ForwardingNPCHolder; +import net.citizensnpcs.nms.v1_20_R4.util.NMSBoundingBox; +import net.citizensnpcs.nms.v1_20_R4.util.NMSImpl; import net.citizensnpcs.npc.CitizensNPC; import net.citizensnpcs.npc.ai.NPCHolder; import net.citizensnpcs.util.NMS; diff --git a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/BeeController.java b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/BeeController.java similarity index 93% rename from v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/BeeController.java rename to v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/BeeController.java index 831578a95..edd77cf3c 100644 --- a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/BeeController.java +++ b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/BeeController.java @@ -1,14 +1,14 @@ -package net.citizensnpcs.nms.v1_20_R3.entity; +package net.citizensnpcs.nms.v1_20_R4.entity; import org.bukkit.Bukkit; -import org.bukkit.craftbukkit.v1_20_R3.CraftServer; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftBee; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftEntity; +import org.bukkit.craftbukkit.v1_20_R4.CraftServer; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftBee; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftEntity; import net.citizensnpcs.api.npc.NPC; -import net.citizensnpcs.nms.v1_20_R3.util.ForwardingNPCHolder; -import net.citizensnpcs.nms.v1_20_R3.util.NMSBoundingBox; -import net.citizensnpcs.nms.v1_20_R3.util.NMSImpl; +import net.citizensnpcs.nms.v1_20_R4.util.ForwardingNPCHolder; +import net.citizensnpcs.nms.v1_20_R4.util.NMSBoundingBox; +import net.citizensnpcs.nms.v1_20_R4.util.NMSImpl; import net.citizensnpcs.npc.CitizensNPC; import net.citizensnpcs.npc.ai.NPCHolder; import net.citizensnpcs.util.NMS; diff --git a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/BlazeController.java b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/BlazeController.java similarity index 93% rename from v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/BlazeController.java rename to v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/BlazeController.java index d8ccd6798..8ae4c0494 100644 --- a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/BlazeController.java +++ b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/BlazeController.java @@ -1,14 +1,14 @@ -package net.citizensnpcs.nms.v1_20_R3.entity; +package net.citizensnpcs.nms.v1_20_R4.entity; import org.bukkit.Bukkit; -import org.bukkit.craftbukkit.v1_20_R3.CraftServer; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftBlaze; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftEntity; +import org.bukkit.craftbukkit.v1_20_R4.CraftServer; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftBlaze; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftEntity; import net.citizensnpcs.api.npc.NPC; -import net.citizensnpcs.nms.v1_20_R3.util.ForwardingNPCHolder; -import net.citizensnpcs.nms.v1_20_R3.util.NMSBoundingBox; -import net.citizensnpcs.nms.v1_20_R3.util.NMSImpl; +import net.citizensnpcs.nms.v1_20_R4.util.ForwardingNPCHolder; +import net.citizensnpcs.nms.v1_20_R4.util.NMSBoundingBox; +import net.citizensnpcs.nms.v1_20_R4.util.NMSImpl; import net.citizensnpcs.npc.CitizensNPC; import net.citizensnpcs.npc.ai.NPCHolder; import net.citizensnpcs.util.NMS; diff --git a/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/BoggedController.java b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/BoggedController.java new file mode 100644 index 000000000..8e3220422 --- /dev/null +++ b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/BoggedController.java @@ -0,0 +1,225 @@ +package net.citizensnpcs.nms.v1_20_R4.entity; + +import org.bukkit.Bukkit; +import org.bukkit.craftbukkit.v1_20_R4.CraftServer; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftBogged; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftEntity; + +import net.citizensnpcs.api.npc.NPC; +import net.citizensnpcs.nms.v1_20_R4.util.ForwardingNPCHolder; +import net.citizensnpcs.nms.v1_20_R4.util.NMSBoundingBox; +import net.citizensnpcs.nms.v1_20_R4.util.NMSImpl; +import net.citizensnpcs.npc.CitizensNPC; +import net.citizensnpcs.npc.ai.NPCHolder; +import net.citizensnpcs.util.NMS; +import net.citizensnpcs.util.Util; +import net.minecraft.core.BlockPos; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.network.syncher.EntityDataAccessor; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.sounds.SoundEvent; +import net.minecraft.tags.TagKey; +import net.minecraft.world.damagesource.DamageSource; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.monster.Bogged; +import net.minecraft.world.entity.vehicle.AbstractMinecart; +import net.minecraft.world.entity.vehicle.Boat; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.material.Fluid; +import net.minecraft.world.level.material.PushReaction; +import net.minecraft.world.phys.AABB; +import net.minecraft.world.phys.Vec3; + +public class BoggedController extends MobEntityController { + public BoggedController() { + super(EntityBoggedNPC.class); + } + + @Override + public org.bukkit.entity.Bogged getBukkitEntity() { + return (org.bukkit.entity.Bogged) super.getBukkitEntity(); + } + + public static class BoggedNPC extends CraftBogged implements ForwardingNPCHolder { + public BoggedNPC(EntityBoggedNPC entity) { + super((CraftServer) Bukkit.getServer(), entity); + } + } + + public static class EntityBoggedNPC extends Bogged implements NPCHolder { + private final CitizensNPC npc; + + public EntityBoggedNPC(EntityType types, Level level) { + this(types, level, null); + } + + public EntityBoggedNPC(EntityType types, Level level, NPC npc) { + super(types, level); + this.npc = (CitizensNPC) npc; + } + + @Override + protected boolean canRide(Entity entity) { + if (npc != null && (entity instanceof Boat || entity instanceof AbstractMinecart)) + return !npc.isProtected(); + return super.canRide(entity); + } + + @Override + public boolean causeFallDamage(float f, float f1, DamageSource damagesource) { + if (npc == null || !npc.isFlyable()) + return super.causeFallDamage(f, f1, damagesource); + return false; + } + + @Override + public void checkDespawn() { + if (npc == null) { + super.checkDespawn(); + } + } + + @Override + protected void checkFallDamage(double d0, boolean flag, BlockState iblockdata, BlockPos blockposition) { + if (npc == null || !npc.isFlyable()) { + super.checkFallDamage(d0, flag, iblockdata, blockposition); + } + } + + @Override + public void customServerAiStep() { + super.customServerAiStep(); + if (npc != null) { + NMSImpl.updateMinecraftAIState(npc, this); + npc.update(); + } + } + + @Override + protected SoundEvent getAmbientSound() { + return NMSImpl.getSoundEffect(npc, super.getAmbientSound(), NPC.Metadata.AMBIENT_SOUND); + } + + @Override + public CraftEntity getBukkitEntity() { + if (npc != null && !(super.getBukkitEntity() instanceof NPCHolder)) { + NMSImpl.setBukkitEntity(this, new BoggedNPC(this)); + } + return super.getBukkitEntity(); + } + + @Override + protected SoundEvent getDeathSound() { + return NMSImpl.getSoundEffect(npc, super.getDeathSound(), NPC.Metadata.DEATH_SOUND); + } + + @Override + protected SoundEvent getHurtSound(DamageSource damagesource) { + return NMSImpl.getSoundEffect(npc, super.getHurtSound(damagesource), NPC.Metadata.HURT_SOUND); + } + + @Override + public float getJumpPower() { + return NMS.getJumpPower(npc, super.getJumpPower()); + } + + @Override + public int getMaxFallDistance() { + return NMS.getFallDistance(npc, super.getMaxFallDistance()); + } + + @Override + public NPC getNPC() { + return npc; + } + + @Override + public PushReaction getPistonPushReaction() { + return Util.callPistonPushEvent(npc) ? PushReaction.IGNORE : super.getPistonPushReaction(); + } + + @Override + public boolean isLeashed() { + return NMSImpl.isLeashed(npc, super::isLeashed, this); + } + + @Override + public boolean isPushable() { + return npc == null ? super.isPushable() + : npc.data(). get(NPC.Metadata.COLLIDABLE, !npc.isProtected()); + } + + @Override + public void knockback(double strength, double dx, double dz) { + NMS.callKnockbackEvent(npc, (float) strength, dx, dz, evt -> super.knockback((float) evt.getStrength(), + evt.getKnockbackVector().getX(), evt.getKnockbackVector().getZ())); + } + + @Override + protected AABB makeBoundingBox() { + return NMSBoundingBox.makeBB(npc, super.makeBoundingBox()); + } + + @Override + public boolean onClimbable() { + if (npc == null || !npc.isFlyable()) + return super.onClimbable(); + else + return false; + } + + @Override + public void onSyncedDataUpdated(EntityDataAccessor datawatcherobject) { + if (npc == null) { + super.onSyncedDataUpdated(datawatcherobject); + return; + } + NMSImpl.checkAndUpdateHeight(this, datawatcherobject, super::onSyncedDataUpdated); + } + + @Override + public void push(Entity entity) { + // this method is called by both the entities involved - cancelling + // it will not stop the NPC from moving. + super.push(entity); + if (npc != null) { + Util.callCollisionEvent(npc, entity.getBukkitEntity()); + } + } + + @Override + public boolean save(CompoundTag save) { + return npc == null ? super.save(save) : false; + } + + @Override + public Entity teleportTo(ServerLevel worldserver, Vec3 location) { + if (npc == null) + return super.teleportTo(worldserver, location); + return NMSImpl.teleportAcrossWorld(this, worldserver, location); + } + + @Override + public void travel(Vec3 vec3d) { + if (npc == null || !npc.isFlyable()) { + super.travel(vec3d); + } else { + NMSImpl.flyingMoveLogic(this, vec3d); + } + } + + @Override + public boolean updateFluidHeightAndDoFluidPushing(TagKey tagkey, double d0) { + if (npc == null) + return super.updateFluidHeightAndDoFluidPushing(tagkey, d0); + Vec3 old = getDeltaMovement().add(0, 0, 0); + boolean res = super.updateFluidHeightAndDoFluidPushing(tagkey, d0); + if (!npc.isPushableByFluids()) { + setDeltaMovement(old); + } + return res; + } + } +} diff --git a/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/BreezeController.java b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/BreezeController.java new file mode 100644 index 000000000..2d286580e --- /dev/null +++ b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/BreezeController.java @@ -0,0 +1,225 @@ +package net.citizensnpcs.nms.v1_20_R4.entity; + +import org.bukkit.Bukkit; +import org.bukkit.craftbukkit.v1_20_R4.CraftServer; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftBreeze; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftEntity; + +import net.citizensnpcs.api.npc.NPC; +import net.citizensnpcs.nms.v1_20_R4.util.ForwardingNPCHolder; +import net.citizensnpcs.nms.v1_20_R4.util.NMSBoundingBox; +import net.citizensnpcs.nms.v1_20_R4.util.NMSImpl; +import net.citizensnpcs.npc.CitizensNPC; +import net.citizensnpcs.npc.ai.NPCHolder; +import net.citizensnpcs.util.NMS; +import net.citizensnpcs.util.Util; +import net.minecraft.core.BlockPos; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.network.syncher.EntityDataAccessor; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.sounds.SoundEvent; +import net.minecraft.tags.TagKey; +import net.minecraft.world.damagesource.DamageSource; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.monster.breeze.Breeze; +import net.minecraft.world.entity.vehicle.AbstractMinecart; +import net.minecraft.world.entity.vehicle.Boat; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.material.Fluid; +import net.minecraft.world.level.material.PushReaction; +import net.minecraft.world.phys.AABB; +import net.minecraft.world.phys.Vec3; + +public class BreezeController extends MobEntityController { + public BreezeController() { + super(EntityBreezeNPC.class); + } + + @Override + public org.bukkit.entity.Breeze getBukkitEntity() { + return (org.bukkit.entity.Breeze) super.getBukkitEntity(); + } + + public static class BreezeNPC extends CraftBreeze implements ForwardingNPCHolder { + public BreezeNPC(EntityBreezeNPC entity) { + super((CraftServer) Bukkit.getServer(), entity); + } + } + + public static class EntityBreezeNPC extends Breeze implements NPCHolder { + private final CitizensNPC npc; + + public EntityBreezeNPC(EntityType types, Level level) { + this(types, level, null); + } + + public EntityBreezeNPC(EntityType types, Level level, NPC npc) { + super(types, level); + this.npc = (CitizensNPC) npc; + } + + @Override + protected boolean canRide(Entity entity) { + if (npc != null && (entity instanceof Boat || entity instanceof AbstractMinecart)) + return !npc.isProtected(); + return super.canRide(entity); + } + + @Override + public boolean causeFallDamage(float f, float f1, DamageSource damagesource) { + if (npc == null || !npc.isFlyable()) + return super.causeFallDamage(f, f1, damagesource); + return false; + } + + @Override + public void checkDespawn() { + if (npc == null) { + super.checkDespawn(); + } + } + + @Override + protected void checkFallDamage(double d0, boolean flag, BlockState iblockdata, BlockPos blockposition) { + if (npc == null || !npc.isFlyable()) { + super.checkFallDamage(d0, flag, iblockdata, blockposition); + } + } + + @Override + public void customServerAiStep() { + super.customServerAiStep(); + if (npc != null) { + NMSImpl.updateMinecraftAIState(npc, this); + npc.update(); + } + } + + @Override + protected SoundEvent getAmbientSound() { + return NMSImpl.getSoundEffect(npc, super.getAmbientSound(), NPC.Metadata.AMBIENT_SOUND); + } + + @Override + public CraftEntity getBukkitEntity() { + if (npc != null && !(super.getBukkitEntity() instanceof NPCHolder)) { + NMSImpl.setBukkitEntity(this, new BreezeNPC(this)); + } + return super.getBukkitEntity(); + } + + @Override + protected SoundEvent getDeathSound() { + return NMSImpl.getSoundEffect(npc, super.getDeathSound(), NPC.Metadata.DEATH_SOUND); + } + + @Override + protected SoundEvent getHurtSound(DamageSource damagesource) { + return NMSImpl.getSoundEffect(npc, super.getHurtSound(damagesource), NPC.Metadata.HURT_SOUND); + } + + @Override + public float getJumpPower() { + return NMS.getJumpPower(npc, super.getJumpPower()); + } + + @Override + public int getMaxFallDistance() { + return NMS.getFallDistance(npc, super.getMaxFallDistance()); + } + + @Override + public NPC getNPC() { + return npc; + } + + @Override + public PushReaction getPistonPushReaction() { + return Util.callPistonPushEvent(npc) ? PushReaction.IGNORE : super.getPistonPushReaction(); + } + + @Override + public boolean isLeashed() { + return NMSImpl.isLeashed(npc, super::isLeashed, this); + } + + @Override + public boolean isPushable() { + return npc == null ? super.isPushable() + : npc.data(). get(NPC.Metadata.COLLIDABLE, !npc.isProtected()); + } + + @Override + public void knockback(double strength, double dx, double dz) { + NMS.callKnockbackEvent(npc, (float) strength, dx, dz, evt -> super.knockback((float) evt.getStrength(), + evt.getKnockbackVector().getX(), evt.getKnockbackVector().getZ())); + } + + @Override + protected AABB makeBoundingBox() { + return NMSBoundingBox.makeBB(npc, super.makeBoundingBox()); + } + + @Override + public boolean onClimbable() { + if (npc == null || !npc.isFlyable()) + return super.onClimbable(); + else + return false; + } + + @Override + public void onSyncedDataUpdated(EntityDataAccessor datawatcherobject) { + if (npc == null) { + super.onSyncedDataUpdated(datawatcherobject); + return; + } + NMSImpl.checkAndUpdateHeight(this, datawatcherobject, super::onSyncedDataUpdated); + } + + @Override + public void push(Entity entity) { + // this method is called by both the entities involved - cancelling + // it will not stop the NPC from moving. + super.push(entity); + if (npc != null) { + Util.callCollisionEvent(npc, entity.getBukkitEntity()); + } + } + + @Override + public boolean save(CompoundTag save) { + return npc == null ? super.save(save) : false; + } + + @Override + public Entity teleportTo(ServerLevel worldserver, Vec3 location) { + if (npc == null) + return super.teleportTo(worldserver, location); + return NMSImpl.teleportAcrossWorld(this, worldserver, location); + } + + @Override + public void travel(Vec3 vec3d) { + if (npc == null || !npc.isFlyable()) { + super.travel(vec3d); + } else { + NMSImpl.flyingMoveLogic(this, vec3d); + } + } + + @Override + public boolean updateFluidHeightAndDoFluidPushing(TagKey tagkey, double d0) { + if (npc == null) + return super.updateFluidHeightAndDoFluidPushing(tagkey, d0); + Vec3 old = getDeltaMovement().add(0, 0, 0); + boolean res = super.updateFluidHeightAndDoFluidPushing(tagkey, d0); + if (!npc.isPushableByFluids()) { + setDeltaMovement(old); + } + return res; + } + } +} diff --git a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/CamelController.java b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/CamelController.java similarity index 96% rename from v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/CamelController.java rename to v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/CamelController.java index 9281b9059..e3c4449ed 100644 --- a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/CamelController.java +++ b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/CamelController.java @@ -1,15 +1,15 @@ -package net.citizensnpcs.nms.v1_20_R3.entity; +package net.citizensnpcs.nms.v1_20_R4.entity; import org.bukkit.Bukkit; import org.bukkit.Location; -import org.bukkit.craftbukkit.v1_20_R3.CraftServer; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftCamel; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftEntity; +import org.bukkit.craftbukkit.v1_20_R4.CraftServer; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftCamel; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftEntity; import net.citizensnpcs.api.npc.NPC; -import net.citizensnpcs.nms.v1_20_R3.util.ForwardingNPCHolder; -import net.citizensnpcs.nms.v1_20_R3.util.NMSBoundingBox; -import net.citizensnpcs.nms.v1_20_R3.util.NMSImpl; +import net.citizensnpcs.nms.v1_20_R4.util.ForwardingNPCHolder; +import net.citizensnpcs.nms.v1_20_R4.util.NMSBoundingBox; +import net.citizensnpcs.nms.v1_20_R4.util.NMSImpl; import net.citizensnpcs.npc.CitizensNPC; import net.citizensnpcs.npc.ai.NPCHolder; import net.citizensnpcs.trait.Controllable; diff --git a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/CatController.java b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/CatController.java similarity index 95% rename from v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/CatController.java rename to v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/CatController.java index 16c7c6edc..bbe51263c 100644 --- a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/CatController.java +++ b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/CatController.java @@ -1,14 +1,14 @@ -package net.citizensnpcs.nms.v1_20_R3.entity; +package net.citizensnpcs.nms.v1_20_R4.entity; import org.bukkit.Bukkit; -import org.bukkit.craftbukkit.v1_20_R3.CraftServer; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftCat; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftEntity; +import org.bukkit.craftbukkit.v1_20_R4.CraftServer; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftCat; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftEntity; import net.citizensnpcs.api.npc.NPC; -import net.citizensnpcs.nms.v1_20_R3.util.ForwardingNPCHolder; -import net.citizensnpcs.nms.v1_20_R3.util.NMSBoundingBox; -import net.citizensnpcs.nms.v1_20_R3.util.NMSImpl; +import net.citizensnpcs.nms.v1_20_R4.util.ForwardingNPCHolder; +import net.citizensnpcs.nms.v1_20_R4.util.NMSBoundingBox; +import net.citizensnpcs.nms.v1_20_R4.util.NMSImpl; import net.citizensnpcs.npc.CitizensNPC; import net.citizensnpcs.npc.ai.NPCHolder; import net.citizensnpcs.util.NMS; diff --git a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/CaveSpiderController.java b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/CaveSpiderController.java similarity index 94% rename from v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/CaveSpiderController.java rename to v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/CaveSpiderController.java index 03e31e1fd..70a23257a 100644 --- a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/CaveSpiderController.java +++ b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/CaveSpiderController.java @@ -1,14 +1,14 @@ -package net.citizensnpcs.nms.v1_20_R3.entity; +package net.citizensnpcs.nms.v1_20_R4.entity; import org.bukkit.Bukkit; -import org.bukkit.craftbukkit.v1_20_R3.CraftServer; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftCaveSpider; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftEntity; +import org.bukkit.craftbukkit.v1_20_R4.CraftServer; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftCaveSpider; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftEntity; import net.citizensnpcs.api.npc.NPC; -import net.citizensnpcs.nms.v1_20_R3.util.ForwardingNPCHolder; -import net.citizensnpcs.nms.v1_20_R3.util.NMSBoundingBox; -import net.citizensnpcs.nms.v1_20_R3.util.NMSImpl; +import net.citizensnpcs.nms.v1_20_R4.util.ForwardingNPCHolder; +import net.citizensnpcs.nms.v1_20_R4.util.NMSBoundingBox; +import net.citizensnpcs.nms.v1_20_R4.util.NMSImpl; import net.citizensnpcs.npc.CitizensNPC; import net.citizensnpcs.npc.ai.NPCHolder; import net.citizensnpcs.util.NMS; diff --git a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/ChickenController.java b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/ChickenController.java similarity index 95% rename from v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/ChickenController.java rename to v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/ChickenController.java index 1ca592c71..7d96fa945 100644 --- a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/ChickenController.java +++ b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/ChickenController.java @@ -1,14 +1,14 @@ -package net.citizensnpcs.nms.v1_20_R3.entity; +package net.citizensnpcs.nms.v1_20_R4.entity; import org.bukkit.Bukkit; -import org.bukkit.craftbukkit.v1_20_R3.CraftServer; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftChicken; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftEntity; +import org.bukkit.craftbukkit.v1_20_R4.CraftServer; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftChicken; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftEntity; import net.citizensnpcs.api.npc.NPC; -import net.citizensnpcs.nms.v1_20_R3.util.ForwardingNPCHolder; -import net.citizensnpcs.nms.v1_20_R3.util.NMSBoundingBox; -import net.citizensnpcs.nms.v1_20_R3.util.NMSImpl; +import net.citizensnpcs.nms.v1_20_R4.util.ForwardingNPCHolder; +import net.citizensnpcs.nms.v1_20_R4.util.NMSBoundingBox; +import net.citizensnpcs.nms.v1_20_R4.util.NMSImpl; import net.citizensnpcs.npc.CitizensNPC; import net.citizensnpcs.npc.ai.NPCHolder; import net.citizensnpcs.util.NMS; diff --git a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/CodController.java b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/CodController.java similarity index 95% rename from v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/CodController.java rename to v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/CodController.java index c65d3c99e..c4dc871e8 100644 --- a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/CodController.java +++ b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/CodController.java @@ -1,15 +1,15 @@ -package net.citizensnpcs.nms.v1_20_R3.entity; +package net.citizensnpcs.nms.v1_20_R4.entity; import org.bukkit.Bukkit; -import org.bukkit.craftbukkit.v1_20_R3.CraftServer; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftCod; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftEntity; +import org.bukkit.craftbukkit.v1_20_R4.CraftServer; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftCod; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftEntity; import net.citizensnpcs.api.npc.NPC; -import net.citizensnpcs.nms.v1_20_R3.util.EntityMoveControl; -import net.citizensnpcs.nms.v1_20_R3.util.ForwardingNPCHolder; -import net.citizensnpcs.nms.v1_20_R3.util.NMSBoundingBox; -import net.citizensnpcs.nms.v1_20_R3.util.NMSImpl; +import net.citizensnpcs.nms.v1_20_R4.util.EntityMoveControl; +import net.citizensnpcs.nms.v1_20_R4.util.ForwardingNPCHolder; +import net.citizensnpcs.nms.v1_20_R4.util.NMSBoundingBox; +import net.citizensnpcs.nms.v1_20_R4.util.NMSImpl; import net.citizensnpcs.npc.CitizensNPC; import net.citizensnpcs.npc.ai.NPCHolder; import net.citizensnpcs.util.NMS; diff --git a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/CowController.java b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/CowController.java similarity index 95% rename from v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/CowController.java rename to v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/CowController.java index 46c1aa6f4..6817c7280 100644 --- a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/CowController.java +++ b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/CowController.java @@ -1,14 +1,14 @@ -package net.citizensnpcs.nms.v1_20_R3.entity; +package net.citizensnpcs.nms.v1_20_R4.entity; import org.bukkit.Bukkit; -import org.bukkit.craftbukkit.v1_20_R3.CraftServer; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftCow; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftEntity; +import org.bukkit.craftbukkit.v1_20_R4.CraftServer; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftCow; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftEntity; import net.citizensnpcs.api.npc.NPC; -import net.citizensnpcs.nms.v1_20_R3.util.ForwardingNPCHolder; -import net.citizensnpcs.nms.v1_20_R3.util.NMSBoundingBox; -import net.citizensnpcs.nms.v1_20_R3.util.NMSImpl; +import net.citizensnpcs.nms.v1_20_R4.util.ForwardingNPCHolder; +import net.citizensnpcs.nms.v1_20_R4.util.NMSBoundingBox; +import net.citizensnpcs.nms.v1_20_R4.util.NMSImpl; import net.citizensnpcs.npc.CitizensNPC; import net.citizensnpcs.npc.ai.NPCHolder; import net.citizensnpcs.util.NMS; diff --git a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/CreeperController.java b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/CreeperController.java similarity index 95% rename from v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/CreeperController.java rename to v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/CreeperController.java index ed1834ee4..21b1f3ac7 100644 --- a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/CreeperController.java +++ b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/CreeperController.java @@ -1,14 +1,14 @@ -package net.citizensnpcs.nms.v1_20_R3.entity; +package net.citizensnpcs.nms.v1_20_R4.entity; import org.bukkit.Bukkit; -import org.bukkit.craftbukkit.v1_20_R3.CraftServer; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftCreeper; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftEntity; +import org.bukkit.craftbukkit.v1_20_R4.CraftServer; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftCreeper; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftEntity; import net.citizensnpcs.api.npc.NPC; -import net.citizensnpcs.nms.v1_20_R3.util.ForwardingNPCHolder; -import net.citizensnpcs.nms.v1_20_R3.util.NMSBoundingBox; -import net.citizensnpcs.nms.v1_20_R3.util.NMSImpl; +import net.citizensnpcs.nms.v1_20_R4.util.ForwardingNPCHolder; +import net.citizensnpcs.nms.v1_20_R4.util.NMSBoundingBox; +import net.citizensnpcs.nms.v1_20_R4.util.NMSImpl; import net.citizensnpcs.npc.CitizensNPC; import net.citizensnpcs.npc.ai.NPCHolder; import net.citizensnpcs.util.NMS; diff --git a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/DolphinController.java b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/DolphinController.java similarity index 95% rename from v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/DolphinController.java rename to v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/DolphinController.java index 02900bca5..7a05f8b36 100644 --- a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/DolphinController.java +++ b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/DolphinController.java @@ -1,14 +1,14 @@ -package net.citizensnpcs.nms.v1_20_R3.entity; +package net.citizensnpcs.nms.v1_20_R4.entity; import org.bukkit.Bukkit; -import org.bukkit.craftbukkit.v1_20_R3.CraftServer; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftDolphin; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftEntity; +import org.bukkit.craftbukkit.v1_20_R4.CraftServer; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftDolphin; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftEntity; import net.citizensnpcs.api.npc.NPC; -import net.citizensnpcs.nms.v1_20_R3.util.ForwardingNPCHolder; -import net.citizensnpcs.nms.v1_20_R3.util.NMSBoundingBox; -import net.citizensnpcs.nms.v1_20_R3.util.NMSImpl; +import net.citizensnpcs.nms.v1_20_R4.util.ForwardingNPCHolder; +import net.citizensnpcs.nms.v1_20_R4.util.NMSBoundingBox; +import net.citizensnpcs.nms.v1_20_R4.util.NMSImpl; import net.citizensnpcs.npc.CitizensNPC; import net.citizensnpcs.npc.ai.NPCHolder; import net.citizensnpcs.util.NMS; diff --git a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/DrownedController.java b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/DrownedController.java similarity index 94% rename from v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/DrownedController.java rename to v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/DrownedController.java index 12c7a745e..68b102d48 100644 --- a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/DrownedController.java +++ b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/DrownedController.java @@ -1,14 +1,14 @@ -package net.citizensnpcs.nms.v1_20_R3.entity; +package net.citizensnpcs.nms.v1_20_R4.entity; import org.bukkit.Bukkit; -import org.bukkit.craftbukkit.v1_20_R3.CraftServer; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftDrowned; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftEntity; +import org.bukkit.craftbukkit.v1_20_R4.CraftServer; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftDrowned; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftEntity; import net.citizensnpcs.api.npc.NPC; -import net.citizensnpcs.nms.v1_20_R3.util.ForwardingNPCHolder; -import net.citizensnpcs.nms.v1_20_R3.util.NMSBoundingBox; -import net.citizensnpcs.nms.v1_20_R3.util.NMSImpl; +import net.citizensnpcs.nms.v1_20_R4.util.ForwardingNPCHolder; +import net.citizensnpcs.nms.v1_20_R4.util.NMSBoundingBox; +import net.citizensnpcs.nms.v1_20_R4.util.NMSImpl; import net.citizensnpcs.npc.CitizensNPC; import net.citizensnpcs.npc.ai.NPCHolder; import net.citizensnpcs.util.NMS; diff --git a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/EnderDragonController.java b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/EnderDragonController.java similarity index 96% rename from v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/EnderDragonController.java rename to v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/EnderDragonController.java index 598e86f1d..deae5d04a 100644 --- a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/EnderDragonController.java +++ b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/EnderDragonController.java @@ -1,14 +1,14 @@ -package net.citizensnpcs.nms.v1_20_R3.entity; +package net.citizensnpcs.nms.v1_20_R4.entity; import org.bukkit.Bukkit; -import org.bukkit.craftbukkit.v1_20_R3.CraftServer; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftEnderDragon; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftEntity; +import org.bukkit.craftbukkit.v1_20_R4.CraftServer; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftEnderDragon; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftEntity; import net.citizensnpcs.api.npc.NPC; -import net.citizensnpcs.nms.v1_20_R3.util.ForwardingNPCHolder; -import net.citizensnpcs.nms.v1_20_R3.util.NMSBoundingBox; -import net.citizensnpcs.nms.v1_20_R3.util.NMSImpl; +import net.citizensnpcs.nms.v1_20_R4.util.ForwardingNPCHolder; +import net.citizensnpcs.nms.v1_20_R4.util.NMSBoundingBox; +import net.citizensnpcs.nms.v1_20_R4.util.NMSImpl; import net.citizensnpcs.npc.CitizensNPC; import net.citizensnpcs.npc.ai.NPCHolder; import net.citizensnpcs.trait.versioned.EnderDragonTrait; diff --git a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/EndermanController.java b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/EndermanController.java similarity index 95% rename from v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/EndermanController.java rename to v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/EndermanController.java index 11ba9c0d0..d34497362 100644 --- a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/EndermanController.java +++ b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/EndermanController.java @@ -1,17 +1,17 @@ -package net.citizensnpcs.nms.v1_20_R3.entity; +package net.citizensnpcs.nms.v1_20_R4.entity; import java.util.Optional; import org.bukkit.Bukkit; -import org.bukkit.craftbukkit.v1_20_R3.CraftServer; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftEnderman; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftEntity; +import org.bukkit.craftbukkit.v1_20_R4.CraftServer; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftEnderman; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftEntity; import org.bukkit.event.player.PlayerTeleportEvent; import net.citizensnpcs.api.npc.NPC; -import net.citizensnpcs.nms.v1_20_R3.util.ForwardingNPCHolder; -import net.citizensnpcs.nms.v1_20_R3.util.NMSBoundingBox; -import net.citizensnpcs.nms.v1_20_R3.util.NMSImpl; +import net.citizensnpcs.nms.v1_20_R4.util.ForwardingNPCHolder; +import net.citizensnpcs.nms.v1_20_R4.util.NMSBoundingBox; +import net.citizensnpcs.nms.v1_20_R4.util.NMSImpl; import net.citizensnpcs.npc.CitizensNPC; import net.citizensnpcs.npc.ai.NPCHolder; import net.citizensnpcs.util.NMS; diff --git a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/EndermiteController.java b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/EndermiteController.java similarity index 94% rename from v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/EndermiteController.java rename to v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/EndermiteController.java index 3c07b7597..f74002b51 100644 --- a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/EndermiteController.java +++ b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/EndermiteController.java @@ -1,14 +1,14 @@ -package net.citizensnpcs.nms.v1_20_R3.entity; +package net.citizensnpcs.nms.v1_20_R4.entity; import org.bukkit.Bukkit; -import org.bukkit.craftbukkit.v1_20_R3.CraftServer; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftEndermite; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftEntity; +import org.bukkit.craftbukkit.v1_20_R4.CraftServer; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftEndermite; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftEntity; import net.citizensnpcs.api.npc.NPC; -import net.citizensnpcs.nms.v1_20_R3.util.ForwardingNPCHolder; -import net.citizensnpcs.nms.v1_20_R3.util.NMSBoundingBox; -import net.citizensnpcs.nms.v1_20_R3.util.NMSImpl; +import net.citizensnpcs.nms.v1_20_R4.util.ForwardingNPCHolder; +import net.citizensnpcs.nms.v1_20_R4.util.NMSBoundingBox; +import net.citizensnpcs.nms.v1_20_R4.util.NMSImpl; import net.citizensnpcs.npc.CitizensNPC; import net.citizensnpcs.npc.ai.NPCHolder; import net.citizensnpcs.util.NMS; diff --git a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/EntityHumanNPC.java b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/EntityHumanNPC.java similarity index 96% rename from v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/EntityHumanNPC.java rename to v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/EntityHumanNPC.java index ce30381e5..a8525fb12 100644 --- a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/EntityHumanNPC.java +++ b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/EntityHumanNPC.java @@ -1,12 +1,12 @@ -package net.citizensnpcs.nms.v1_20_R3.entity; +package net.citizensnpcs.nms.v1_20_R4.entity; import java.io.IOException; import java.lang.invoke.MethodHandle; import java.util.List; import org.bukkit.Bukkit; -import org.bukkit.craftbukkit.v1_20_R3.CraftServer; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftPlayer; +import org.bukkit.craftbukkit.v1_20_R4.CraftServer; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftPlayer; import org.bukkit.entity.Player; import org.bukkit.metadata.MetadataValue; import org.bukkit.plugin.Plugin; @@ -18,13 +18,13 @@ import net.citizensnpcs.api.npc.NPC; import net.citizensnpcs.api.npc.NPC.NPCUpdate; import net.citizensnpcs.api.trait.trait.Inventory; import net.citizensnpcs.api.util.SpigotUtil; -import net.citizensnpcs.nms.v1_20_R3.network.EmptyConnection; -import net.citizensnpcs.nms.v1_20_R3.network.EmptyPacketListener; -import net.citizensnpcs.nms.v1_20_R3.util.EmptyAdvancementDataPlayer; -import net.citizensnpcs.nms.v1_20_R3.util.EmptyServerStatsCounter; -import net.citizensnpcs.nms.v1_20_R3.util.MobAI; -import net.citizensnpcs.nms.v1_20_R3.util.MobAI.ForwardingMobAI; -import net.citizensnpcs.nms.v1_20_R3.util.NMSImpl; +import net.citizensnpcs.nms.v1_20_R4.network.EmptyConnection; +import net.citizensnpcs.nms.v1_20_R4.network.EmptyPacketListener; +import net.citizensnpcs.nms.v1_20_R4.util.EmptyAdvancementDataPlayer; +import net.citizensnpcs.nms.v1_20_R4.util.EmptyServerStatsCounter; +import net.citizensnpcs.nms.v1_20_R4.util.MobAI; +import net.citizensnpcs.nms.v1_20_R4.util.MobAI.ForwardingMobAI; +import net.citizensnpcs.nms.v1_20_R4.util.NMSImpl; import net.citizensnpcs.npc.CitizensNPC; import net.citizensnpcs.npc.ai.NPCHolder; import net.citizensnpcs.npc.skin.SkinPacketTracker; @@ -237,7 +237,7 @@ public class EntityHumanNPC extends ServerPlayer implements NPCHolder, Skinnable try { EmptyConnection conn = new EmptyConnection(PacketFlow.CLIENTBOUND); connection = new EmptyPacketListener(minecraftServer, conn, this, - new CommonListenerCookie(getProfile(), 0, clientInfo)); + new CommonListenerCookie(getProfile(), 0, clientInfo, false)); } catch (IOException e) { e.printStackTrace(); } diff --git a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/EvokerController.java b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/EvokerController.java similarity index 94% rename from v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/EvokerController.java rename to v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/EvokerController.java index 06389e956..bbf796ad7 100644 --- a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/EvokerController.java +++ b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/EvokerController.java @@ -1,14 +1,14 @@ -package net.citizensnpcs.nms.v1_20_R3.entity; +package net.citizensnpcs.nms.v1_20_R4.entity; import org.bukkit.Bukkit; -import org.bukkit.craftbukkit.v1_20_R3.CraftServer; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftEntity; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftEvoker; +import org.bukkit.craftbukkit.v1_20_R4.CraftServer; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftEntity; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftEvoker; import net.citizensnpcs.api.npc.NPC; -import net.citizensnpcs.nms.v1_20_R3.util.ForwardingNPCHolder; -import net.citizensnpcs.nms.v1_20_R3.util.NMSBoundingBox; -import net.citizensnpcs.nms.v1_20_R3.util.NMSImpl; +import net.citizensnpcs.nms.v1_20_R4.util.ForwardingNPCHolder; +import net.citizensnpcs.nms.v1_20_R4.util.NMSBoundingBox; +import net.citizensnpcs.nms.v1_20_R4.util.NMSImpl; import net.citizensnpcs.npc.CitizensNPC; import net.citizensnpcs.npc.ai.NPCHolder; import net.citizensnpcs.util.NMS; diff --git a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/FoxController.java b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/FoxController.java similarity index 95% rename from v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/FoxController.java rename to v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/FoxController.java index 8e44d8606..592239bc8 100644 --- a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/FoxController.java +++ b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/FoxController.java @@ -1,16 +1,16 @@ -package net.citizensnpcs.nms.v1_20_R3.entity; +package net.citizensnpcs.nms.v1_20_R4.entity; import java.lang.invoke.MethodHandle; import org.bukkit.Bukkit; -import org.bukkit.craftbukkit.v1_20_R3.CraftServer; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftEntity; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftFox; +import org.bukkit.craftbukkit.v1_20_R4.CraftServer; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftEntity; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftFox; import net.citizensnpcs.api.npc.NPC; -import net.citizensnpcs.nms.v1_20_R3.util.ForwardingNPCHolder; -import net.citizensnpcs.nms.v1_20_R3.util.NMSBoundingBox; -import net.citizensnpcs.nms.v1_20_R3.util.NMSImpl; +import net.citizensnpcs.nms.v1_20_R4.util.ForwardingNPCHolder; +import net.citizensnpcs.nms.v1_20_R4.util.NMSBoundingBox; +import net.citizensnpcs.nms.v1_20_R4.util.NMSImpl; import net.citizensnpcs.npc.CitizensNPC; import net.citizensnpcs.npc.ai.NPCHolder; import net.citizensnpcs.trait.versioned.FoxTrait; diff --git a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/FrogController.java b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/FrogController.java similarity index 95% rename from v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/FrogController.java rename to v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/FrogController.java index 6a400636f..0ff4e016d 100644 --- a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/FrogController.java +++ b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/FrogController.java @@ -1,14 +1,14 @@ -package net.citizensnpcs.nms.v1_20_R3.entity; +package net.citizensnpcs.nms.v1_20_R4.entity; import org.bukkit.Bukkit; -import org.bukkit.craftbukkit.v1_20_R3.CraftServer; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftEntity; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftFrog; +import org.bukkit.craftbukkit.v1_20_R4.CraftServer; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftEntity; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftFrog; import net.citizensnpcs.api.npc.NPC; -import net.citizensnpcs.nms.v1_20_R3.util.ForwardingNPCHolder; -import net.citizensnpcs.nms.v1_20_R3.util.NMSBoundingBox; -import net.citizensnpcs.nms.v1_20_R3.util.NMSImpl; +import net.citizensnpcs.nms.v1_20_R4.util.ForwardingNPCHolder; +import net.citizensnpcs.nms.v1_20_R4.util.NMSBoundingBox; +import net.citizensnpcs.nms.v1_20_R4.util.NMSImpl; import net.citizensnpcs.npc.CitizensNPC; import net.citizensnpcs.npc.ai.NPCHolder; import net.citizensnpcs.util.NMS; diff --git a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/GhastController.java b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/GhastController.java similarity index 93% rename from v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/GhastController.java rename to v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/GhastController.java index b181be40e..91bf3d303 100644 --- a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/GhastController.java +++ b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/GhastController.java @@ -1,14 +1,14 @@ -package net.citizensnpcs.nms.v1_20_R3.entity; +package net.citizensnpcs.nms.v1_20_R4.entity; import org.bukkit.Bukkit; -import org.bukkit.craftbukkit.v1_20_R3.CraftServer; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftEntity; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftGhast; +import org.bukkit.craftbukkit.v1_20_R4.CraftServer; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftEntity; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftGhast; import net.citizensnpcs.api.npc.NPC; -import net.citizensnpcs.nms.v1_20_R3.util.ForwardingNPCHolder; -import net.citizensnpcs.nms.v1_20_R3.util.NMSBoundingBox; -import net.citizensnpcs.nms.v1_20_R3.util.NMSImpl; +import net.citizensnpcs.nms.v1_20_R4.util.ForwardingNPCHolder; +import net.citizensnpcs.nms.v1_20_R4.util.NMSBoundingBox; +import net.citizensnpcs.nms.v1_20_R4.util.NMSImpl; import net.citizensnpcs.npc.CitizensNPC; import net.citizensnpcs.npc.ai.NPCHolder; import net.citizensnpcs.util.NMS; diff --git a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/GiantController.java b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/GiantController.java similarity index 94% rename from v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/GiantController.java rename to v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/GiantController.java index cb36c506e..db70dabca 100644 --- a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/GiantController.java +++ b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/GiantController.java @@ -1,14 +1,14 @@ -package net.citizensnpcs.nms.v1_20_R3.entity; +package net.citizensnpcs.nms.v1_20_R4.entity; import org.bukkit.Bukkit; -import org.bukkit.craftbukkit.v1_20_R3.CraftServer; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftEntity; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftGiant; +import org.bukkit.craftbukkit.v1_20_R4.CraftServer; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftEntity; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftGiant; import net.citizensnpcs.api.npc.NPC; -import net.citizensnpcs.nms.v1_20_R3.util.ForwardingNPCHolder; -import net.citizensnpcs.nms.v1_20_R3.util.NMSBoundingBox; -import net.citizensnpcs.nms.v1_20_R3.util.NMSImpl; +import net.citizensnpcs.nms.v1_20_R4.util.ForwardingNPCHolder; +import net.citizensnpcs.nms.v1_20_R4.util.NMSBoundingBox; +import net.citizensnpcs.nms.v1_20_R4.util.NMSImpl; import net.citizensnpcs.npc.CitizensNPC; import net.citizensnpcs.npc.ai.NPCHolder; import net.citizensnpcs.util.NMS; diff --git a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/GlowSquidController.java b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/GlowSquidController.java similarity index 94% rename from v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/GlowSquidController.java rename to v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/GlowSquidController.java index fcd9b4111..2676acbac 100644 --- a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/GlowSquidController.java +++ b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/GlowSquidController.java @@ -1,14 +1,14 @@ -package net.citizensnpcs.nms.v1_20_R3.entity; +package net.citizensnpcs.nms.v1_20_R4.entity; import org.bukkit.Bukkit; -import org.bukkit.craftbukkit.v1_20_R3.CraftServer; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftEntity; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftGlowSquid; +import org.bukkit.craftbukkit.v1_20_R4.CraftServer; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftEntity; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftGlowSquid; import net.citizensnpcs.api.npc.NPC; -import net.citizensnpcs.nms.v1_20_R3.util.ForwardingNPCHolder; -import net.citizensnpcs.nms.v1_20_R3.util.NMSBoundingBox; -import net.citizensnpcs.nms.v1_20_R3.util.NMSImpl; +import net.citizensnpcs.nms.v1_20_R4.util.ForwardingNPCHolder; +import net.citizensnpcs.nms.v1_20_R4.util.NMSBoundingBox; +import net.citizensnpcs.nms.v1_20_R4.util.NMSImpl; import net.citizensnpcs.npc.CitizensNPC; import net.citizensnpcs.npc.ai.NPCHolder; import net.citizensnpcs.util.NMS; diff --git a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/GoatController.java b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/GoatController.java similarity index 95% rename from v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/GoatController.java rename to v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/GoatController.java index 547c49077..547b0ac1e 100644 --- a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/GoatController.java +++ b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/GoatController.java @@ -1,14 +1,14 @@ -package net.citizensnpcs.nms.v1_20_R3.entity; +package net.citizensnpcs.nms.v1_20_R4.entity; import org.bukkit.Bukkit; -import org.bukkit.craftbukkit.v1_20_R3.CraftServer; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftEntity; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftGoat; +import org.bukkit.craftbukkit.v1_20_R4.CraftServer; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftEntity; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftGoat; import net.citizensnpcs.api.npc.NPC; -import net.citizensnpcs.nms.v1_20_R3.util.ForwardingNPCHolder; -import net.citizensnpcs.nms.v1_20_R3.util.NMSBoundingBox; -import net.citizensnpcs.nms.v1_20_R3.util.NMSImpl; +import net.citizensnpcs.nms.v1_20_R4.util.ForwardingNPCHolder; +import net.citizensnpcs.nms.v1_20_R4.util.NMSBoundingBox; +import net.citizensnpcs.nms.v1_20_R4.util.NMSImpl; import net.citizensnpcs.npc.CitizensNPC; import net.citizensnpcs.npc.ai.NPCHolder; import net.citizensnpcs.util.NMS; diff --git a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/GuardianController.java b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/GuardianController.java similarity index 95% rename from v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/GuardianController.java rename to v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/GuardianController.java index 396f666ac..286835fcb 100644 --- a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/GuardianController.java +++ b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/GuardianController.java @@ -1,14 +1,14 @@ -package net.citizensnpcs.nms.v1_20_R3.entity; +package net.citizensnpcs.nms.v1_20_R4.entity; import org.bukkit.Bukkit; -import org.bukkit.craftbukkit.v1_20_R3.CraftServer; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftEntity; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftGuardian; +import org.bukkit.craftbukkit.v1_20_R4.CraftServer; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftEntity; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftGuardian; import net.citizensnpcs.api.npc.NPC; -import net.citizensnpcs.nms.v1_20_R3.util.ForwardingNPCHolder; -import net.citizensnpcs.nms.v1_20_R3.util.NMSBoundingBox; -import net.citizensnpcs.nms.v1_20_R3.util.NMSImpl; +import net.citizensnpcs.nms.v1_20_R4.util.ForwardingNPCHolder; +import net.citizensnpcs.nms.v1_20_R4.util.NMSBoundingBox; +import net.citizensnpcs.nms.v1_20_R4.util.NMSImpl; import net.citizensnpcs.npc.CitizensNPC; import net.citizensnpcs.npc.ai.NPCHolder; import net.citizensnpcs.util.NMS; diff --git a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/GuardianElderController.java b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/GuardianElderController.java similarity index 95% rename from v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/GuardianElderController.java rename to v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/GuardianElderController.java index f459b0581..a898feadb 100644 --- a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/GuardianElderController.java +++ b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/GuardianElderController.java @@ -1,14 +1,14 @@ -package net.citizensnpcs.nms.v1_20_R3.entity; +package net.citizensnpcs.nms.v1_20_R4.entity; import org.bukkit.Bukkit; -import org.bukkit.craftbukkit.v1_20_R3.CraftServer; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftElderGuardian; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftEntity; +import org.bukkit.craftbukkit.v1_20_R4.CraftServer; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftElderGuardian; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftEntity; import net.citizensnpcs.api.npc.NPC; -import net.citizensnpcs.nms.v1_20_R3.util.ForwardingNPCHolder; -import net.citizensnpcs.nms.v1_20_R3.util.NMSBoundingBox; -import net.citizensnpcs.nms.v1_20_R3.util.NMSImpl; +import net.citizensnpcs.nms.v1_20_R4.util.ForwardingNPCHolder; +import net.citizensnpcs.nms.v1_20_R4.util.NMSBoundingBox; +import net.citizensnpcs.nms.v1_20_R4.util.NMSImpl; import net.citizensnpcs.npc.CitizensNPC; import net.citizensnpcs.npc.ai.NPCHolder; import net.citizensnpcs.util.NMS; diff --git a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/HoglinController.java b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/HoglinController.java similarity index 94% rename from v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/HoglinController.java rename to v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/HoglinController.java index ccef1b7a2..24387e5d2 100644 --- a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/HoglinController.java +++ b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/HoglinController.java @@ -1,14 +1,14 @@ -package net.citizensnpcs.nms.v1_20_R3.entity; +package net.citizensnpcs.nms.v1_20_R4.entity; import org.bukkit.Bukkit; -import org.bukkit.craftbukkit.v1_20_R3.CraftServer; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftEntity; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftHoglin; +import org.bukkit.craftbukkit.v1_20_R4.CraftServer; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftEntity; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftHoglin; import net.citizensnpcs.api.npc.NPC; -import net.citizensnpcs.nms.v1_20_R3.util.ForwardingNPCHolder; -import net.citizensnpcs.nms.v1_20_R3.util.NMSBoundingBox; -import net.citizensnpcs.nms.v1_20_R3.util.NMSImpl; +import net.citizensnpcs.nms.v1_20_R4.util.ForwardingNPCHolder; +import net.citizensnpcs.nms.v1_20_R4.util.NMSBoundingBox; +import net.citizensnpcs.nms.v1_20_R4.util.NMSImpl; import net.citizensnpcs.npc.CitizensNPC; import net.citizensnpcs.npc.ai.NPCHolder; import net.citizensnpcs.util.NMS; diff --git a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/HorseController.java b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/HorseController.java similarity index 95% rename from v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/HorseController.java rename to v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/HorseController.java index f9aa757a4..7f12097b7 100644 --- a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/HorseController.java +++ b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/HorseController.java @@ -1,15 +1,15 @@ -package net.citizensnpcs.nms.v1_20_R3.entity; +package net.citizensnpcs.nms.v1_20_R4.entity; import org.bukkit.Bukkit; import org.bukkit.Location; -import org.bukkit.craftbukkit.v1_20_R3.CraftServer; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftEntity; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftHorse; +import org.bukkit.craftbukkit.v1_20_R4.CraftServer; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftEntity; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftHorse; import net.citizensnpcs.api.npc.NPC; -import net.citizensnpcs.nms.v1_20_R3.util.ForwardingNPCHolder; -import net.citizensnpcs.nms.v1_20_R3.util.NMSBoundingBox; -import net.citizensnpcs.nms.v1_20_R3.util.NMSImpl; +import net.citizensnpcs.nms.v1_20_R4.util.ForwardingNPCHolder; +import net.citizensnpcs.nms.v1_20_R4.util.NMSBoundingBox; +import net.citizensnpcs.nms.v1_20_R4.util.NMSImpl; import net.citizensnpcs.npc.CitizensNPC; import net.citizensnpcs.npc.ai.NPCHolder; import net.citizensnpcs.trait.Controllable; diff --git a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/HorseDonkeyController.java b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/HorseDonkeyController.java similarity index 96% rename from v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/HorseDonkeyController.java rename to v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/HorseDonkeyController.java index 9d22b3cc5..2a3b090c5 100644 --- a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/HorseDonkeyController.java +++ b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/HorseDonkeyController.java @@ -1,15 +1,15 @@ -package net.citizensnpcs.nms.v1_20_R3.entity; +package net.citizensnpcs.nms.v1_20_R4.entity; import org.bukkit.Bukkit; import org.bukkit.Location; -import org.bukkit.craftbukkit.v1_20_R3.CraftServer; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftDonkey; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftEntity; +import org.bukkit.craftbukkit.v1_20_R4.CraftServer; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftDonkey; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftEntity; import net.citizensnpcs.api.npc.NPC; -import net.citizensnpcs.nms.v1_20_R3.util.ForwardingNPCHolder; -import net.citizensnpcs.nms.v1_20_R3.util.NMSBoundingBox; -import net.citizensnpcs.nms.v1_20_R3.util.NMSImpl; +import net.citizensnpcs.nms.v1_20_R4.util.ForwardingNPCHolder; +import net.citizensnpcs.nms.v1_20_R4.util.NMSBoundingBox; +import net.citizensnpcs.nms.v1_20_R4.util.NMSImpl; import net.citizensnpcs.npc.CitizensNPC; import net.citizensnpcs.npc.ai.NPCHolder; import net.citizensnpcs.trait.Controllable; diff --git a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/HorseMuleController.java b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/HorseMuleController.java similarity index 96% rename from v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/HorseMuleController.java rename to v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/HorseMuleController.java index 0d66e92c9..0489b8c92 100644 --- a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/HorseMuleController.java +++ b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/HorseMuleController.java @@ -1,15 +1,15 @@ -package net.citizensnpcs.nms.v1_20_R3.entity; +package net.citizensnpcs.nms.v1_20_R4.entity; import org.bukkit.Bukkit; import org.bukkit.Location; -import org.bukkit.craftbukkit.v1_20_R3.CraftServer; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftEntity; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftMule; +import org.bukkit.craftbukkit.v1_20_R4.CraftServer; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftEntity; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftMule; import net.citizensnpcs.api.npc.NPC; -import net.citizensnpcs.nms.v1_20_R3.util.ForwardingNPCHolder; -import net.citizensnpcs.nms.v1_20_R3.util.NMSBoundingBox; -import net.citizensnpcs.nms.v1_20_R3.util.NMSImpl; +import net.citizensnpcs.nms.v1_20_R4.util.ForwardingNPCHolder; +import net.citizensnpcs.nms.v1_20_R4.util.NMSBoundingBox; +import net.citizensnpcs.nms.v1_20_R4.util.NMSImpl; import net.citizensnpcs.npc.CitizensNPC; import net.citizensnpcs.npc.ai.NPCHolder; import net.citizensnpcs.trait.Controllable; diff --git a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/HorseSkeletonController.java b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/HorseSkeletonController.java similarity index 96% rename from v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/HorseSkeletonController.java rename to v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/HorseSkeletonController.java index e545106a8..a9bff6b5b 100644 --- a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/HorseSkeletonController.java +++ b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/HorseSkeletonController.java @@ -1,15 +1,15 @@ -package net.citizensnpcs.nms.v1_20_R3.entity; +package net.citizensnpcs.nms.v1_20_R4.entity; import org.bukkit.Bukkit; import org.bukkit.Location; -import org.bukkit.craftbukkit.v1_20_R3.CraftServer; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftEntity; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftSkeletonHorse; +import org.bukkit.craftbukkit.v1_20_R4.CraftServer; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftEntity; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftSkeletonHorse; import net.citizensnpcs.api.npc.NPC; -import net.citizensnpcs.nms.v1_20_R3.util.ForwardingNPCHolder; -import net.citizensnpcs.nms.v1_20_R3.util.NMSBoundingBox; -import net.citizensnpcs.nms.v1_20_R3.util.NMSImpl; +import net.citizensnpcs.nms.v1_20_R4.util.ForwardingNPCHolder; +import net.citizensnpcs.nms.v1_20_R4.util.NMSBoundingBox; +import net.citizensnpcs.nms.v1_20_R4.util.NMSImpl; import net.citizensnpcs.npc.CitizensNPC; import net.citizensnpcs.npc.ai.NPCHolder; import net.citizensnpcs.trait.Controllable; diff --git a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/HorseZombieController.java b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/HorseZombieController.java similarity index 96% rename from v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/HorseZombieController.java rename to v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/HorseZombieController.java index ad402161c..1fe92a52b 100644 --- a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/HorseZombieController.java +++ b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/HorseZombieController.java @@ -1,15 +1,15 @@ -package net.citizensnpcs.nms.v1_20_R3.entity; +package net.citizensnpcs.nms.v1_20_R4.entity; import org.bukkit.Bukkit; import org.bukkit.Location; -import org.bukkit.craftbukkit.v1_20_R3.CraftServer; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftEntity; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftZombieHorse; +import org.bukkit.craftbukkit.v1_20_R4.CraftServer; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftEntity; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftZombieHorse; import net.citizensnpcs.api.npc.NPC; -import net.citizensnpcs.nms.v1_20_R3.util.ForwardingNPCHolder; -import net.citizensnpcs.nms.v1_20_R3.util.NMSBoundingBox; -import net.citizensnpcs.nms.v1_20_R3.util.NMSImpl; +import net.citizensnpcs.nms.v1_20_R4.util.ForwardingNPCHolder; +import net.citizensnpcs.nms.v1_20_R4.util.NMSBoundingBox; +import net.citizensnpcs.nms.v1_20_R4.util.NMSImpl; import net.citizensnpcs.npc.CitizensNPC; import net.citizensnpcs.npc.ai.NPCHolder; import net.citizensnpcs.trait.Controllable; diff --git a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/HumanController.java b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/HumanController.java similarity index 96% rename from v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/HumanController.java rename to v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/HumanController.java index 45cd30b8a..ced4d551e 100644 --- a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/HumanController.java +++ b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/HumanController.java @@ -1,10 +1,10 @@ -package net.citizensnpcs.nms.v1_20_R3.entity; +package net.citizensnpcs.nms.v1_20_R4.entity; import java.util.UUID; import org.bukkit.Bukkit; import org.bukkit.Location; -import org.bukkit.craftbukkit.v1_20_R3.CraftWorld; +import org.bukkit.craftbukkit.v1_20_R4.CraftWorld; import org.bukkit.entity.Entity; import org.bukkit.entity.Player; diff --git a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/IllusionerController.java b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/IllusionerController.java similarity index 94% rename from v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/IllusionerController.java rename to v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/IllusionerController.java index 2378d143f..fd8aefb22 100644 --- a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/IllusionerController.java +++ b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/IllusionerController.java @@ -1,14 +1,14 @@ -package net.citizensnpcs.nms.v1_20_R3.entity; +package net.citizensnpcs.nms.v1_20_R4.entity; import org.bukkit.Bukkit; -import org.bukkit.craftbukkit.v1_20_R3.CraftServer; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftEntity; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftIllusioner; +import org.bukkit.craftbukkit.v1_20_R4.CraftServer; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftEntity; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftIllusioner; import net.citizensnpcs.api.npc.NPC; -import net.citizensnpcs.nms.v1_20_R3.util.ForwardingNPCHolder; -import net.citizensnpcs.nms.v1_20_R3.util.NMSBoundingBox; -import net.citizensnpcs.nms.v1_20_R3.util.NMSImpl; +import net.citizensnpcs.nms.v1_20_R4.util.ForwardingNPCHolder; +import net.citizensnpcs.nms.v1_20_R4.util.NMSBoundingBox; +import net.citizensnpcs.nms.v1_20_R4.util.NMSImpl; import net.citizensnpcs.npc.CitizensNPC; import net.citizensnpcs.npc.ai.NPCHolder; import net.citizensnpcs.util.NMS; diff --git a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/IronGolemController.java b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/IronGolemController.java similarity index 94% rename from v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/IronGolemController.java rename to v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/IronGolemController.java index a229d646d..0b37d9a37 100644 --- a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/IronGolemController.java +++ b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/IronGolemController.java @@ -1,14 +1,14 @@ -package net.citizensnpcs.nms.v1_20_R3.entity; +package net.citizensnpcs.nms.v1_20_R4.entity; import org.bukkit.Bukkit; -import org.bukkit.craftbukkit.v1_20_R3.CraftServer; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftEntity; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftIronGolem; +import org.bukkit.craftbukkit.v1_20_R4.CraftServer; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftEntity; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftIronGolem; import net.citizensnpcs.api.npc.NPC; -import net.citizensnpcs.nms.v1_20_R3.util.ForwardingNPCHolder; -import net.citizensnpcs.nms.v1_20_R3.util.NMSBoundingBox; -import net.citizensnpcs.nms.v1_20_R3.util.NMSImpl; +import net.citizensnpcs.nms.v1_20_R4.util.ForwardingNPCHolder; +import net.citizensnpcs.nms.v1_20_R4.util.NMSBoundingBox; +import net.citizensnpcs.nms.v1_20_R4.util.NMSImpl; import net.citizensnpcs.npc.CitizensNPC; import net.citizensnpcs.npc.ai.NPCHolder; import net.citizensnpcs.util.NMS; diff --git a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/LlamaController.java b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/LlamaController.java similarity index 96% rename from v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/LlamaController.java rename to v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/LlamaController.java index 7b2a7f906..18eb9012f 100644 --- a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/LlamaController.java +++ b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/LlamaController.java @@ -1,15 +1,15 @@ -package net.citizensnpcs.nms.v1_20_R3.entity; +package net.citizensnpcs.nms.v1_20_R4.entity; import org.bukkit.Bukkit; import org.bukkit.Location; -import org.bukkit.craftbukkit.v1_20_R3.CraftServer; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftEntity; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftLlama; +import org.bukkit.craftbukkit.v1_20_R4.CraftServer; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftEntity; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftLlama; import net.citizensnpcs.api.npc.NPC; -import net.citizensnpcs.nms.v1_20_R3.util.ForwardingNPCHolder; -import net.citizensnpcs.nms.v1_20_R3.util.NMSBoundingBox; -import net.citizensnpcs.nms.v1_20_R3.util.NMSImpl; +import net.citizensnpcs.nms.v1_20_R4.util.ForwardingNPCHolder; +import net.citizensnpcs.nms.v1_20_R4.util.NMSBoundingBox; +import net.citizensnpcs.nms.v1_20_R4.util.NMSImpl; import net.citizensnpcs.npc.CitizensNPC; import net.citizensnpcs.npc.ai.NPCHolder; import net.citizensnpcs.trait.Controllable; diff --git a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/MagmaCubeController.java b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/MagmaCubeController.java similarity index 94% rename from v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/MagmaCubeController.java rename to v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/MagmaCubeController.java index 0d11e065f..8e8ba20f8 100644 --- a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/MagmaCubeController.java +++ b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/MagmaCubeController.java @@ -1,15 +1,15 @@ -package net.citizensnpcs.nms.v1_20_R3.entity; +package net.citizensnpcs.nms.v1_20_R4.entity; import org.bukkit.Bukkit; -import org.bukkit.craftbukkit.v1_20_R3.CraftServer; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftEntity; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftMagmaCube; +import org.bukkit.craftbukkit.v1_20_R4.CraftServer; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftEntity; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftMagmaCube; import net.citizensnpcs.api.npc.NPC; -import net.citizensnpcs.nms.v1_20_R3.util.EntityMoveControl; -import net.citizensnpcs.nms.v1_20_R3.util.ForwardingNPCHolder; -import net.citizensnpcs.nms.v1_20_R3.util.NMSBoundingBox; -import net.citizensnpcs.nms.v1_20_R3.util.NMSImpl; +import net.citizensnpcs.nms.v1_20_R4.util.EntityMoveControl; +import net.citizensnpcs.nms.v1_20_R4.util.ForwardingNPCHolder; +import net.citizensnpcs.nms.v1_20_R4.util.NMSBoundingBox; +import net.citizensnpcs.nms.v1_20_R4.util.NMSImpl; import net.citizensnpcs.npc.CitizensNPC; import net.citizensnpcs.npc.ai.NPCHolder; import net.citizensnpcs.util.NMS; diff --git a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/MobEntityController.java b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/MobEntityController.java similarity index 93% rename from v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/MobEntityController.java rename to v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/MobEntityController.java index 03694f3e4..d4a7c490e 100644 --- a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/MobEntityController.java +++ b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/MobEntityController.java @@ -1,4 +1,4 @@ -package net.citizensnpcs.nms.v1_20_R3.entity; +package net.citizensnpcs.nms.v1_20_R4.entity; import java.lang.reflect.Constructor; import java.util.Map; @@ -6,13 +6,13 @@ import java.util.WeakHashMap; import org.bukkit.Location; import org.bukkit.block.BlockFace; -import org.bukkit.craftbukkit.v1_20_R3.CraftWorld; +import org.bukkit.craftbukkit.v1_20_R4.CraftWorld; import org.bukkit.entity.Entity; import net.citizensnpcs.Settings.Setting; import net.citizensnpcs.api.npc.NPC; -import net.citizensnpcs.nms.v1_20_R3.util.NMSImpl; -import net.citizensnpcs.nms.v1_20_R3.util.PitchableLookControl; +import net.citizensnpcs.nms.v1_20_R4.util.NMSImpl; +import net.citizensnpcs.nms.v1_20_R4.util.PitchableLookControl; import net.citizensnpcs.npc.AbstractEntityController; import net.citizensnpcs.trait.ScoreboardTrait; import net.minecraft.world.entity.EntityType; diff --git a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/MushroomCowController.java b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/MushroomCowController.java similarity index 95% rename from v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/MushroomCowController.java rename to v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/MushroomCowController.java index 511bc4fa2..86680c383 100644 --- a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/MushroomCowController.java +++ b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/MushroomCowController.java @@ -1,14 +1,14 @@ -package net.citizensnpcs.nms.v1_20_R3.entity; +package net.citizensnpcs.nms.v1_20_R4.entity; import org.bukkit.Bukkit; -import org.bukkit.craftbukkit.v1_20_R3.CraftServer; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftEntity; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftMushroomCow; +import org.bukkit.craftbukkit.v1_20_R4.CraftServer; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftEntity; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftMushroomCow; import net.citizensnpcs.api.npc.NPC; -import net.citizensnpcs.nms.v1_20_R3.util.ForwardingNPCHolder; -import net.citizensnpcs.nms.v1_20_R3.util.NMSBoundingBox; -import net.citizensnpcs.nms.v1_20_R3.util.NMSImpl; +import net.citizensnpcs.nms.v1_20_R4.util.ForwardingNPCHolder; +import net.citizensnpcs.nms.v1_20_R4.util.NMSBoundingBox; +import net.citizensnpcs.nms.v1_20_R4.util.NMSImpl; import net.citizensnpcs.npc.CitizensNPC; import net.citizensnpcs.npc.ai.NPCHolder; import net.citizensnpcs.util.NMS; diff --git a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/OcelotController.java b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/OcelotController.java similarity index 95% rename from v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/OcelotController.java rename to v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/OcelotController.java index 2eb9b1d99..ed6c307a6 100644 --- a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/OcelotController.java +++ b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/OcelotController.java @@ -1,14 +1,14 @@ -package net.citizensnpcs.nms.v1_20_R3.entity; +package net.citizensnpcs.nms.v1_20_R4.entity; import org.bukkit.Bukkit; -import org.bukkit.craftbukkit.v1_20_R3.CraftServer; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftEntity; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftOcelot; +import org.bukkit.craftbukkit.v1_20_R4.CraftServer; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftEntity; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftOcelot; import net.citizensnpcs.api.npc.NPC; -import net.citizensnpcs.nms.v1_20_R3.util.ForwardingNPCHolder; -import net.citizensnpcs.nms.v1_20_R3.util.NMSBoundingBox; -import net.citizensnpcs.nms.v1_20_R3.util.NMSImpl; +import net.citizensnpcs.nms.v1_20_R4.util.ForwardingNPCHolder; +import net.citizensnpcs.nms.v1_20_R4.util.NMSBoundingBox; +import net.citizensnpcs.nms.v1_20_R4.util.NMSImpl; import net.citizensnpcs.npc.CitizensNPC; import net.citizensnpcs.npc.ai.NPCHolder; import net.citizensnpcs.util.NMS; diff --git a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/PandaController.java b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/PandaController.java similarity index 95% rename from v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/PandaController.java rename to v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/PandaController.java index 432f0e84a..384a682e2 100644 --- a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/PandaController.java +++ b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/PandaController.java @@ -1,14 +1,14 @@ -package net.citizensnpcs.nms.v1_20_R3.entity; +package net.citizensnpcs.nms.v1_20_R4.entity; import org.bukkit.Bukkit; -import org.bukkit.craftbukkit.v1_20_R3.CraftServer; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftEntity; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftPanda; +import org.bukkit.craftbukkit.v1_20_R4.CraftServer; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftEntity; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftPanda; import net.citizensnpcs.api.npc.NPC; -import net.citizensnpcs.nms.v1_20_R3.util.ForwardingNPCHolder; -import net.citizensnpcs.nms.v1_20_R3.util.NMSBoundingBox; -import net.citizensnpcs.nms.v1_20_R3.util.NMSImpl; +import net.citizensnpcs.nms.v1_20_R4.util.ForwardingNPCHolder; +import net.citizensnpcs.nms.v1_20_R4.util.NMSBoundingBox; +import net.citizensnpcs.nms.v1_20_R4.util.NMSImpl; import net.citizensnpcs.npc.CitizensNPC; import net.citizensnpcs.npc.ai.NPCHolder; import net.citizensnpcs.util.NMS; diff --git a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/ParrotController.java b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/ParrotController.java similarity index 94% rename from v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/ParrotController.java rename to v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/ParrotController.java index 53ff1a557..4154d7a64 100644 --- a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/ParrotController.java +++ b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/ParrotController.java @@ -1,14 +1,14 @@ -package net.citizensnpcs.nms.v1_20_R3.entity; +package net.citizensnpcs.nms.v1_20_R4.entity; import org.bukkit.Bukkit; -import org.bukkit.craftbukkit.v1_20_R3.CraftServer; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftEntity; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftParrot; +import org.bukkit.craftbukkit.v1_20_R4.CraftServer; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftEntity; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftParrot; import net.citizensnpcs.api.npc.NPC; -import net.citizensnpcs.nms.v1_20_R3.util.ForwardingNPCHolder; -import net.citizensnpcs.nms.v1_20_R3.util.NMSBoundingBox; -import net.citizensnpcs.nms.v1_20_R3.util.NMSImpl; +import net.citizensnpcs.nms.v1_20_R4.util.ForwardingNPCHolder; +import net.citizensnpcs.nms.v1_20_R4.util.NMSBoundingBox; +import net.citizensnpcs.nms.v1_20_R4.util.NMSImpl; import net.citizensnpcs.npc.CitizensNPC; import net.citizensnpcs.npc.ai.NPCHolder; import net.citizensnpcs.util.NMS; diff --git a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/PhantomController.java b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/PhantomController.java similarity index 94% rename from v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/PhantomController.java rename to v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/PhantomController.java index 4b6b6b779..193aa954d 100644 --- a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/PhantomController.java +++ b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/PhantomController.java @@ -1,15 +1,15 @@ -package net.citizensnpcs.nms.v1_20_R3.entity; +package net.citizensnpcs.nms.v1_20_R4.entity; import org.bukkit.Bukkit; -import org.bukkit.craftbukkit.v1_20_R3.CraftServer; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftEntity; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftPhantom; +import org.bukkit.craftbukkit.v1_20_R4.CraftServer; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftEntity; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftPhantom; import net.citizensnpcs.api.npc.NPC; -import net.citizensnpcs.nms.v1_20_R3.util.EntityMoveControl; -import net.citizensnpcs.nms.v1_20_R3.util.ForwardingNPCHolder; -import net.citizensnpcs.nms.v1_20_R3.util.NMSBoundingBox; -import net.citizensnpcs.nms.v1_20_R3.util.NMSImpl; +import net.citizensnpcs.nms.v1_20_R4.util.EntityMoveControl; +import net.citizensnpcs.nms.v1_20_R4.util.ForwardingNPCHolder; +import net.citizensnpcs.nms.v1_20_R4.util.NMSBoundingBox; +import net.citizensnpcs.nms.v1_20_R4.util.NMSImpl; import net.citizensnpcs.npc.CitizensNPC; import net.citizensnpcs.npc.ai.NPCHolder; import net.citizensnpcs.util.NMS; @@ -82,7 +82,7 @@ public class PhantomController extends MobEntityController { this.lookControl = new LookControl(this); } if (npc.isProtected()) { - setSecondsOnFire(0); + igniteForSeconds(0); } npc.update(); } diff --git a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/PigController.java b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/PigController.java similarity index 95% rename from v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/PigController.java rename to v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/PigController.java index 430b6c156..f679723e7 100644 --- a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/PigController.java +++ b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/PigController.java @@ -1,14 +1,14 @@ -package net.citizensnpcs.nms.v1_20_R3.entity; +package net.citizensnpcs.nms.v1_20_R4.entity; import org.bukkit.Bukkit; -import org.bukkit.craftbukkit.v1_20_R3.CraftServer; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftEntity; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftPig; +import org.bukkit.craftbukkit.v1_20_R4.CraftServer; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftEntity; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftPig; import net.citizensnpcs.api.npc.NPC; -import net.citizensnpcs.nms.v1_20_R3.util.ForwardingNPCHolder; -import net.citizensnpcs.nms.v1_20_R3.util.NMSBoundingBox; -import net.citizensnpcs.nms.v1_20_R3.util.NMSImpl; +import net.citizensnpcs.nms.v1_20_R4.util.ForwardingNPCHolder; +import net.citizensnpcs.nms.v1_20_R4.util.NMSBoundingBox; +import net.citizensnpcs.nms.v1_20_R4.util.NMSImpl; import net.citizensnpcs.npc.CitizensNPC; import net.citizensnpcs.npc.ai.NPCHolder; import net.citizensnpcs.util.NMS; diff --git a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/PigZombieController.java b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/PigZombieController.java similarity index 94% rename from v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/PigZombieController.java rename to v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/PigZombieController.java index c08f296ee..8c20cdf19 100644 --- a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/PigZombieController.java +++ b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/PigZombieController.java @@ -1,14 +1,14 @@ -package net.citizensnpcs.nms.v1_20_R3.entity; +package net.citizensnpcs.nms.v1_20_R4.entity; import org.bukkit.Bukkit; -import org.bukkit.craftbukkit.v1_20_R3.CraftServer; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftEntity; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftPigZombie; +import org.bukkit.craftbukkit.v1_20_R4.CraftServer; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftEntity; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftPigZombie; import net.citizensnpcs.api.npc.NPC; -import net.citizensnpcs.nms.v1_20_R3.util.ForwardingNPCHolder; -import net.citizensnpcs.nms.v1_20_R3.util.NMSBoundingBox; -import net.citizensnpcs.nms.v1_20_R3.util.NMSImpl; +import net.citizensnpcs.nms.v1_20_R4.util.ForwardingNPCHolder; +import net.citizensnpcs.nms.v1_20_R4.util.NMSBoundingBox; +import net.citizensnpcs.nms.v1_20_R4.util.NMSImpl; import net.citizensnpcs.npc.CitizensNPC; import net.citizensnpcs.npc.ai.NPCHolder; import net.citizensnpcs.util.NMS; diff --git a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/PiglinBruteController.java b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/PiglinBruteController.java similarity index 94% rename from v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/PiglinBruteController.java rename to v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/PiglinBruteController.java index 936db62ba..8c593e771 100644 --- a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/PiglinBruteController.java +++ b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/PiglinBruteController.java @@ -1,14 +1,14 @@ -package net.citizensnpcs.nms.v1_20_R3.entity; +package net.citizensnpcs.nms.v1_20_R4.entity; import org.bukkit.Bukkit; -import org.bukkit.craftbukkit.v1_20_R3.CraftServer; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftEntity; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftPiglinBrute; +import org.bukkit.craftbukkit.v1_20_R4.CraftServer; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftEntity; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftPiglinBrute; import net.citizensnpcs.api.npc.NPC; -import net.citizensnpcs.nms.v1_20_R3.util.ForwardingNPCHolder; -import net.citizensnpcs.nms.v1_20_R3.util.NMSBoundingBox; -import net.citizensnpcs.nms.v1_20_R3.util.NMSImpl; +import net.citizensnpcs.nms.v1_20_R4.util.ForwardingNPCHolder; +import net.citizensnpcs.nms.v1_20_R4.util.NMSBoundingBox; +import net.citizensnpcs.nms.v1_20_R4.util.NMSImpl; import net.citizensnpcs.npc.CitizensNPC; import net.citizensnpcs.npc.ai.NPCHolder; import net.citizensnpcs.util.NMS; diff --git a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/PiglinController.java b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/PiglinController.java similarity index 95% rename from v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/PiglinController.java rename to v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/PiglinController.java index ccd75bb74..2035fbdd6 100644 --- a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/PiglinController.java +++ b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/PiglinController.java @@ -1,14 +1,14 @@ -package net.citizensnpcs.nms.v1_20_R3.entity; +package net.citizensnpcs.nms.v1_20_R4.entity; import org.bukkit.Bukkit; -import org.bukkit.craftbukkit.v1_20_R3.CraftServer; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftEntity; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftPiglin; +import org.bukkit.craftbukkit.v1_20_R4.CraftServer; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftEntity; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftPiglin; import net.citizensnpcs.api.npc.NPC; -import net.citizensnpcs.nms.v1_20_R3.util.ForwardingNPCHolder; -import net.citizensnpcs.nms.v1_20_R3.util.NMSBoundingBox; -import net.citizensnpcs.nms.v1_20_R3.util.NMSImpl; +import net.citizensnpcs.nms.v1_20_R4.util.ForwardingNPCHolder; +import net.citizensnpcs.nms.v1_20_R4.util.NMSBoundingBox; +import net.citizensnpcs.nms.v1_20_R4.util.NMSImpl; import net.citizensnpcs.npc.CitizensNPC; import net.citizensnpcs.npc.ai.NPCHolder; import net.citizensnpcs.util.NMS; diff --git a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/PillagerController.java b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/PillagerController.java similarity index 95% rename from v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/PillagerController.java rename to v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/PillagerController.java index 29db069a2..767ba0ac1 100644 --- a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/PillagerController.java +++ b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/PillagerController.java @@ -1,14 +1,14 @@ -package net.citizensnpcs.nms.v1_20_R3.entity; +package net.citizensnpcs.nms.v1_20_R4.entity; import org.bukkit.Bukkit; -import org.bukkit.craftbukkit.v1_20_R3.CraftServer; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftEntity; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftPillager; +import org.bukkit.craftbukkit.v1_20_R4.CraftServer; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftEntity; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftPillager; import net.citizensnpcs.api.npc.NPC; -import net.citizensnpcs.nms.v1_20_R3.util.ForwardingNPCHolder; -import net.citizensnpcs.nms.v1_20_R3.util.NMSBoundingBox; -import net.citizensnpcs.nms.v1_20_R3.util.NMSImpl; +import net.citizensnpcs.nms.v1_20_R4.util.ForwardingNPCHolder; +import net.citizensnpcs.nms.v1_20_R4.util.NMSBoundingBox; +import net.citizensnpcs.nms.v1_20_R4.util.NMSImpl; import net.citizensnpcs.npc.CitizensNPC; import net.citizensnpcs.npc.ai.NPCHolder; import net.citizensnpcs.util.NMS; diff --git a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/PolarBearController.java b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/PolarBearController.java similarity index 94% rename from v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/PolarBearController.java rename to v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/PolarBearController.java index 805d2f230..c3784d524 100644 --- a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/PolarBearController.java +++ b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/PolarBearController.java @@ -1,14 +1,14 @@ -package net.citizensnpcs.nms.v1_20_R3.entity; +package net.citizensnpcs.nms.v1_20_R4.entity; import org.bukkit.Bukkit; -import org.bukkit.craftbukkit.v1_20_R3.CraftServer; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftEntity; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftPolarBear; +import org.bukkit.craftbukkit.v1_20_R4.CraftServer; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftEntity; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftPolarBear; import net.citizensnpcs.api.npc.NPC; -import net.citizensnpcs.nms.v1_20_R3.util.ForwardingNPCHolder; -import net.citizensnpcs.nms.v1_20_R3.util.NMSBoundingBox; -import net.citizensnpcs.nms.v1_20_R3.util.NMSImpl; +import net.citizensnpcs.nms.v1_20_R4.util.ForwardingNPCHolder; +import net.citizensnpcs.nms.v1_20_R4.util.NMSBoundingBox; +import net.citizensnpcs.nms.v1_20_R4.util.NMSImpl; import net.citizensnpcs.npc.CitizensNPC; import net.citizensnpcs.npc.ai.NPCHolder; import net.citizensnpcs.util.NMS; diff --git a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/PufferFishController.java b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/PufferFishController.java similarity index 93% rename from v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/PufferFishController.java rename to v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/PufferFishController.java index f844da571..61c83dfa9 100644 --- a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/PufferFishController.java +++ b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/PufferFishController.java @@ -1,15 +1,15 @@ -package net.citizensnpcs.nms.v1_20_R3.entity; +package net.citizensnpcs.nms.v1_20_R4.entity; import org.bukkit.Bukkit; -import org.bukkit.craftbukkit.v1_20_R3.CraftServer; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftEntity; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftPufferFish; +import org.bukkit.craftbukkit.v1_20_R4.CraftServer; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftEntity; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftPufferFish; import net.citizensnpcs.api.npc.NPC; -import net.citizensnpcs.nms.v1_20_R3.util.EntityMoveControl; -import net.citizensnpcs.nms.v1_20_R3.util.ForwardingNPCHolder; -import net.citizensnpcs.nms.v1_20_R3.util.NMSBoundingBox; -import net.citizensnpcs.nms.v1_20_R3.util.NMSImpl; +import net.citizensnpcs.nms.v1_20_R4.util.EntityMoveControl; +import net.citizensnpcs.nms.v1_20_R4.util.ForwardingNPCHolder; +import net.citizensnpcs.nms.v1_20_R4.util.NMSBoundingBox; +import net.citizensnpcs.nms.v1_20_R4.util.NMSImpl; import net.citizensnpcs.npc.CitizensNPC; import net.citizensnpcs.npc.ai.NPCHolder; import net.citizensnpcs.trait.versioned.PufferFishTrait; @@ -146,10 +146,10 @@ public class PufferFishController extends MobEntityController { } @Override - public EntityDimensions getDimensions(Pose entitypose) { + public EntityDimensions getDefaultDimensions(Pose entitypose) { if (npc == null) - return super.getDimensions(entitypose); - return super.getDimensions(entitypose).scale(1 / s(getPuffState())).scale(0.5F); + return super.getDefaultDimensions(entitypose); + return super.getDefaultDimensions(entitypose).scale(1 / s(getPuffState())).scale(0.5F); } @Override diff --git a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/RabbitController.java b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/RabbitController.java similarity index 95% rename from v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/RabbitController.java rename to v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/RabbitController.java index e782d8df8..419aef64c 100644 --- a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/RabbitController.java +++ b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/RabbitController.java @@ -1,14 +1,14 @@ -package net.citizensnpcs.nms.v1_20_R3.entity; +package net.citizensnpcs.nms.v1_20_R4.entity; import org.bukkit.Bukkit; -import org.bukkit.craftbukkit.v1_20_R3.CraftServer; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftEntity; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftRabbit; +import org.bukkit.craftbukkit.v1_20_R4.CraftServer; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftEntity; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftRabbit; import net.citizensnpcs.api.npc.NPC; -import net.citizensnpcs.nms.v1_20_R3.util.ForwardingNPCHolder; -import net.citizensnpcs.nms.v1_20_R3.util.NMSBoundingBox; -import net.citizensnpcs.nms.v1_20_R3.util.NMSImpl; +import net.citizensnpcs.nms.v1_20_R4.util.ForwardingNPCHolder; +import net.citizensnpcs.nms.v1_20_R4.util.NMSBoundingBox; +import net.citizensnpcs.nms.v1_20_R4.util.NMSImpl; import net.citizensnpcs.npc.CitizensNPC; import net.citizensnpcs.npc.ai.NPCHolder; import net.citizensnpcs.util.NMS; diff --git a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/RavagerController.java b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/RavagerController.java similarity index 95% rename from v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/RavagerController.java rename to v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/RavagerController.java index 585c42afc..0c5f21690 100644 --- a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/RavagerController.java +++ b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/RavagerController.java @@ -1,14 +1,14 @@ -package net.citizensnpcs.nms.v1_20_R3.entity; +package net.citizensnpcs.nms.v1_20_R4.entity; import org.bukkit.Bukkit; -import org.bukkit.craftbukkit.v1_20_R3.CraftServer; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftEntity; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftRavager; +import org.bukkit.craftbukkit.v1_20_R4.CraftServer; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftEntity; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftRavager; import net.citizensnpcs.api.npc.NPC; -import net.citizensnpcs.nms.v1_20_R3.util.ForwardingNPCHolder; -import net.citizensnpcs.nms.v1_20_R3.util.NMSBoundingBox; -import net.citizensnpcs.nms.v1_20_R3.util.NMSImpl; +import net.citizensnpcs.nms.v1_20_R4.util.ForwardingNPCHolder; +import net.citizensnpcs.nms.v1_20_R4.util.NMSBoundingBox; +import net.citizensnpcs.nms.v1_20_R4.util.NMSImpl; import net.citizensnpcs.npc.CitizensNPC; import net.citizensnpcs.npc.ai.NPCHolder; import net.citizensnpcs.util.NMS; diff --git a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/SalmonController.java b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/SalmonController.java similarity index 95% rename from v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/SalmonController.java rename to v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/SalmonController.java index f690d02ea..3812022e3 100644 --- a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/SalmonController.java +++ b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/SalmonController.java @@ -1,15 +1,15 @@ -package net.citizensnpcs.nms.v1_20_R3.entity; +package net.citizensnpcs.nms.v1_20_R4.entity; import org.bukkit.Bukkit; -import org.bukkit.craftbukkit.v1_20_R3.CraftServer; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftEntity; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftSalmon; +import org.bukkit.craftbukkit.v1_20_R4.CraftServer; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftEntity; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftSalmon; import net.citizensnpcs.api.npc.NPC; -import net.citizensnpcs.nms.v1_20_R3.util.EntityMoveControl; -import net.citizensnpcs.nms.v1_20_R3.util.ForwardingNPCHolder; -import net.citizensnpcs.nms.v1_20_R3.util.NMSBoundingBox; -import net.citizensnpcs.nms.v1_20_R3.util.NMSImpl; +import net.citizensnpcs.nms.v1_20_R4.util.EntityMoveControl; +import net.citizensnpcs.nms.v1_20_R4.util.ForwardingNPCHolder; +import net.citizensnpcs.nms.v1_20_R4.util.NMSBoundingBox; +import net.citizensnpcs.nms.v1_20_R4.util.NMSImpl; import net.citizensnpcs.npc.CitizensNPC; import net.citizensnpcs.npc.ai.NPCHolder; import net.citizensnpcs.util.NMS; diff --git a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/SheepController.java b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/SheepController.java similarity index 95% rename from v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/SheepController.java rename to v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/SheepController.java index 41b58d32e..b7651a36f 100644 --- a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/SheepController.java +++ b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/SheepController.java @@ -1,14 +1,14 @@ -package net.citizensnpcs.nms.v1_20_R3.entity; +package net.citizensnpcs.nms.v1_20_R4.entity; import org.bukkit.Bukkit; -import org.bukkit.craftbukkit.v1_20_R3.CraftServer; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftEntity; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftSheep; +import org.bukkit.craftbukkit.v1_20_R4.CraftServer; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftEntity; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftSheep; import net.citizensnpcs.api.npc.NPC; -import net.citizensnpcs.nms.v1_20_R3.util.ForwardingNPCHolder; -import net.citizensnpcs.nms.v1_20_R3.util.NMSBoundingBox; -import net.citizensnpcs.nms.v1_20_R3.util.NMSImpl; +import net.citizensnpcs.nms.v1_20_R4.util.ForwardingNPCHolder; +import net.citizensnpcs.nms.v1_20_R4.util.NMSBoundingBox; +import net.citizensnpcs.nms.v1_20_R4.util.NMSImpl; import net.citizensnpcs.npc.CitizensNPC; import net.citizensnpcs.npc.ai.NPCHolder; import net.citizensnpcs.util.NMS; diff --git a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/ShulkerController.java b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/ShulkerController.java similarity index 95% rename from v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/ShulkerController.java rename to v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/ShulkerController.java index 3a2da28f8..e63b116b9 100644 --- a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/ShulkerController.java +++ b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/ShulkerController.java @@ -1,14 +1,14 @@ -package net.citizensnpcs.nms.v1_20_R3.entity; +package net.citizensnpcs.nms.v1_20_R4.entity; import org.bukkit.Bukkit; -import org.bukkit.craftbukkit.v1_20_R3.CraftServer; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftEntity; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftShulker; +import org.bukkit.craftbukkit.v1_20_R4.CraftServer; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftEntity; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftShulker; import net.citizensnpcs.api.npc.NPC; -import net.citizensnpcs.nms.v1_20_R3.util.ForwardingNPCHolder; -import net.citizensnpcs.nms.v1_20_R3.util.NMSBoundingBox; -import net.citizensnpcs.nms.v1_20_R3.util.NMSImpl; +import net.citizensnpcs.nms.v1_20_R4.util.ForwardingNPCHolder; +import net.citizensnpcs.nms.v1_20_R4.util.NMSBoundingBox; +import net.citizensnpcs.nms.v1_20_R4.util.NMSImpl; import net.citizensnpcs.npc.CitizensNPC; import net.citizensnpcs.npc.ai.NPCHolder; import net.citizensnpcs.util.NMS; diff --git a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/SilverfishController.java b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/SilverfishController.java similarity index 94% rename from v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/SilverfishController.java rename to v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/SilverfishController.java index c4c762121..cff94b273 100644 --- a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/SilverfishController.java +++ b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/SilverfishController.java @@ -1,14 +1,14 @@ -package net.citizensnpcs.nms.v1_20_R3.entity; +package net.citizensnpcs.nms.v1_20_R4.entity; import org.bukkit.Bukkit; -import org.bukkit.craftbukkit.v1_20_R3.CraftServer; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftEntity; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftSilverfish; +import org.bukkit.craftbukkit.v1_20_R4.CraftServer; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftEntity; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftSilverfish; import net.citizensnpcs.api.npc.NPC; -import net.citizensnpcs.nms.v1_20_R3.util.ForwardingNPCHolder; -import net.citizensnpcs.nms.v1_20_R3.util.NMSBoundingBox; -import net.citizensnpcs.nms.v1_20_R3.util.NMSImpl; +import net.citizensnpcs.nms.v1_20_R4.util.ForwardingNPCHolder; +import net.citizensnpcs.nms.v1_20_R4.util.NMSBoundingBox; +import net.citizensnpcs.nms.v1_20_R4.util.NMSImpl; import net.citizensnpcs.npc.CitizensNPC; import net.citizensnpcs.npc.ai.NPCHolder; import net.citizensnpcs.util.NMS; diff --git a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/SkeletonController.java b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/SkeletonController.java similarity index 94% rename from v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/SkeletonController.java rename to v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/SkeletonController.java index d93a99f1d..eb80ff29e 100644 --- a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/SkeletonController.java +++ b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/SkeletonController.java @@ -1,14 +1,14 @@ -package net.citizensnpcs.nms.v1_20_R3.entity; +package net.citizensnpcs.nms.v1_20_R4.entity; import org.bukkit.Bukkit; -import org.bukkit.craftbukkit.v1_20_R3.CraftServer; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftEntity; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftSkeleton; +import org.bukkit.craftbukkit.v1_20_R4.CraftServer; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftEntity; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftSkeleton; import net.citizensnpcs.api.npc.NPC; -import net.citizensnpcs.nms.v1_20_R3.util.ForwardingNPCHolder; -import net.citizensnpcs.nms.v1_20_R3.util.NMSBoundingBox; -import net.citizensnpcs.nms.v1_20_R3.util.NMSImpl; +import net.citizensnpcs.nms.v1_20_R4.util.ForwardingNPCHolder; +import net.citizensnpcs.nms.v1_20_R4.util.NMSBoundingBox; +import net.citizensnpcs.nms.v1_20_R4.util.NMSImpl; import net.citizensnpcs.npc.CitizensNPC; import net.citizensnpcs.npc.ai.NPCHolder; import net.citizensnpcs.util.NMS; diff --git a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/SkeletonStrayController.java b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/SkeletonStrayController.java similarity index 94% rename from v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/SkeletonStrayController.java rename to v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/SkeletonStrayController.java index 4ed944668..fd44a81d6 100644 --- a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/SkeletonStrayController.java +++ b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/SkeletonStrayController.java @@ -1,14 +1,14 @@ -package net.citizensnpcs.nms.v1_20_R3.entity; +package net.citizensnpcs.nms.v1_20_R4.entity; import org.bukkit.Bukkit; -import org.bukkit.craftbukkit.v1_20_R3.CraftServer; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftEntity; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftStray; +import org.bukkit.craftbukkit.v1_20_R4.CraftServer; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftEntity; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftStray; import net.citizensnpcs.api.npc.NPC; -import net.citizensnpcs.nms.v1_20_R3.util.ForwardingNPCHolder; -import net.citizensnpcs.nms.v1_20_R3.util.NMSBoundingBox; -import net.citizensnpcs.nms.v1_20_R3.util.NMSImpl; +import net.citizensnpcs.nms.v1_20_R4.util.ForwardingNPCHolder; +import net.citizensnpcs.nms.v1_20_R4.util.NMSBoundingBox; +import net.citizensnpcs.nms.v1_20_R4.util.NMSImpl; import net.citizensnpcs.npc.CitizensNPC; import net.citizensnpcs.npc.ai.NPCHolder; import net.citizensnpcs.util.NMS; diff --git a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/SkeletonWitherController.java b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/SkeletonWitherController.java similarity index 94% rename from v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/SkeletonWitherController.java rename to v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/SkeletonWitherController.java index 11f81f898..c4aafc40e 100644 --- a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/SkeletonWitherController.java +++ b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/SkeletonWitherController.java @@ -1,14 +1,14 @@ -package net.citizensnpcs.nms.v1_20_R3.entity; +package net.citizensnpcs.nms.v1_20_R4.entity; import org.bukkit.Bukkit; -import org.bukkit.craftbukkit.v1_20_R3.CraftServer; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftEntity; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftWitherSkeleton; +import org.bukkit.craftbukkit.v1_20_R4.CraftServer; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftEntity; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftWitherSkeleton; import net.citizensnpcs.api.npc.NPC; -import net.citizensnpcs.nms.v1_20_R3.util.ForwardingNPCHolder; -import net.citizensnpcs.nms.v1_20_R3.util.NMSBoundingBox; -import net.citizensnpcs.nms.v1_20_R3.util.NMSImpl; +import net.citizensnpcs.nms.v1_20_R4.util.ForwardingNPCHolder; +import net.citizensnpcs.nms.v1_20_R4.util.NMSBoundingBox; +import net.citizensnpcs.nms.v1_20_R4.util.NMSImpl; import net.citizensnpcs.npc.CitizensNPC; import net.citizensnpcs.npc.ai.NPCHolder; import net.citizensnpcs.util.NMS; diff --git a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/SlimeController.java b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/SlimeController.java similarity index 94% rename from v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/SlimeController.java rename to v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/SlimeController.java index db6c82755..8e078926e 100644 --- a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/SlimeController.java +++ b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/SlimeController.java @@ -1,15 +1,15 @@ -package net.citizensnpcs.nms.v1_20_R3.entity; +package net.citizensnpcs.nms.v1_20_R4.entity; import org.bukkit.Bukkit; -import org.bukkit.craftbukkit.v1_20_R3.CraftServer; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftEntity; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftSlime; +import org.bukkit.craftbukkit.v1_20_R4.CraftServer; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftEntity; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftSlime; import net.citizensnpcs.api.npc.NPC; -import net.citizensnpcs.nms.v1_20_R3.util.EntityMoveControl; -import net.citizensnpcs.nms.v1_20_R3.util.ForwardingNPCHolder; -import net.citizensnpcs.nms.v1_20_R3.util.NMSBoundingBox; -import net.citizensnpcs.nms.v1_20_R3.util.NMSImpl; +import net.citizensnpcs.nms.v1_20_R4.util.EntityMoveControl; +import net.citizensnpcs.nms.v1_20_R4.util.ForwardingNPCHolder; +import net.citizensnpcs.nms.v1_20_R4.util.NMSBoundingBox; +import net.citizensnpcs.nms.v1_20_R4.util.NMSImpl; import net.citizensnpcs.npc.CitizensNPC; import net.citizensnpcs.npc.ai.NPCHolder; import net.citizensnpcs.util.NMS; diff --git a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/SnifferController.java b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/SnifferController.java similarity index 95% rename from v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/SnifferController.java rename to v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/SnifferController.java index d4ac759a1..01d5c265e 100644 --- a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/SnifferController.java +++ b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/SnifferController.java @@ -1,14 +1,14 @@ -package net.citizensnpcs.nms.v1_20_R3.entity; +package net.citizensnpcs.nms.v1_20_R4.entity; import org.bukkit.Bukkit; -import org.bukkit.craftbukkit.v1_20_R3.CraftServer; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftEntity; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftSniffer; +import org.bukkit.craftbukkit.v1_20_R4.CraftServer; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftEntity; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftSniffer; import net.citizensnpcs.api.npc.NPC; -import net.citizensnpcs.nms.v1_20_R3.util.ForwardingNPCHolder; -import net.citizensnpcs.nms.v1_20_R3.util.NMSBoundingBox; -import net.citizensnpcs.nms.v1_20_R3.util.NMSImpl; +import net.citizensnpcs.nms.v1_20_R4.util.ForwardingNPCHolder; +import net.citizensnpcs.nms.v1_20_R4.util.NMSBoundingBox; +import net.citizensnpcs.nms.v1_20_R4.util.NMSImpl; import net.citizensnpcs.npc.CitizensNPC; import net.citizensnpcs.npc.ai.NPCHolder; import net.citizensnpcs.util.NMS; diff --git a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/SnowmanController.java b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/SnowmanController.java similarity index 94% rename from v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/SnowmanController.java rename to v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/SnowmanController.java index 78bd96cf3..8908483c0 100644 --- a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/SnowmanController.java +++ b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/SnowmanController.java @@ -1,14 +1,14 @@ -package net.citizensnpcs.nms.v1_20_R3.entity; +package net.citizensnpcs.nms.v1_20_R4.entity; import org.bukkit.Bukkit; -import org.bukkit.craftbukkit.v1_20_R3.CraftServer; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftEntity; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftSnowman; +import org.bukkit.craftbukkit.v1_20_R4.CraftServer; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftEntity; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftSnowman; import net.citizensnpcs.api.npc.NPC; -import net.citizensnpcs.nms.v1_20_R3.util.ForwardingNPCHolder; -import net.citizensnpcs.nms.v1_20_R3.util.NMSBoundingBox; -import net.citizensnpcs.nms.v1_20_R3.util.NMSImpl; +import net.citizensnpcs.nms.v1_20_R4.util.ForwardingNPCHolder; +import net.citizensnpcs.nms.v1_20_R4.util.NMSBoundingBox; +import net.citizensnpcs.nms.v1_20_R4.util.NMSImpl; import net.citizensnpcs.npc.CitizensNPC; import net.citizensnpcs.npc.ai.NPCHolder; import net.citizensnpcs.util.NMS; diff --git a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/SpiderController.java b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/SpiderController.java similarity index 94% rename from v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/SpiderController.java rename to v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/SpiderController.java index 949d29007..336a93a1c 100644 --- a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/SpiderController.java +++ b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/SpiderController.java @@ -1,14 +1,14 @@ -package net.citizensnpcs.nms.v1_20_R3.entity; +package net.citizensnpcs.nms.v1_20_R4.entity; import org.bukkit.Bukkit; -import org.bukkit.craftbukkit.v1_20_R3.CraftServer; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftEntity; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftSpider; +import org.bukkit.craftbukkit.v1_20_R4.CraftServer; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftEntity; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftSpider; import net.citizensnpcs.api.npc.NPC; -import net.citizensnpcs.nms.v1_20_R3.util.ForwardingNPCHolder; -import net.citizensnpcs.nms.v1_20_R3.util.NMSBoundingBox; -import net.citizensnpcs.nms.v1_20_R3.util.NMSImpl; +import net.citizensnpcs.nms.v1_20_R4.util.ForwardingNPCHolder; +import net.citizensnpcs.nms.v1_20_R4.util.NMSBoundingBox; +import net.citizensnpcs.nms.v1_20_R4.util.NMSImpl; import net.citizensnpcs.npc.CitizensNPC; import net.citizensnpcs.npc.ai.NPCHolder; import net.citizensnpcs.util.NMS; diff --git a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/SquidController.java b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/SquidController.java similarity index 94% rename from v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/SquidController.java rename to v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/SquidController.java index 737e43fac..343b860a3 100644 --- a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/SquidController.java +++ b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/SquidController.java @@ -1,14 +1,14 @@ -package net.citizensnpcs.nms.v1_20_R3.entity; +package net.citizensnpcs.nms.v1_20_R4.entity; import org.bukkit.Bukkit; -import org.bukkit.craftbukkit.v1_20_R3.CraftServer; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftEntity; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftSquid; +import org.bukkit.craftbukkit.v1_20_R4.CraftServer; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftEntity; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftSquid; import net.citizensnpcs.api.npc.NPC; -import net.citizensnpcs.nms.v1_20_R3.util.ForwardingNPCHolder; -import net.citizensnpcs.nms.v1_20_R3.util.NMSBoundingBox; -import net.citizensnpcs.nms.v1_20_R3.util.NMSImpl; +import net.citizensnpcs.nms.v1_20_R4.util.ForwardingNPCHolder; +import net.citizensnpcs.nms.v1_20_R4.util.NMSBoundingBox; +import net.citizensnpcs.nms.v1_20_R4.util.NMSImpl; import net.citizensnpcs.npc.CitizensNPC; import net.citizensnpcs.npc.ai.NPCHolder; import net.citizensnpcs.util.NMS; diff --git a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/StriderController.java b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/StriderController.java similarity index 94% rename from v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/StriderController.java rename to v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/StriderController.java index 51b774f28..01f5fd17e 100644 --- a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/StriderController.java +++ b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/StriderController.java @@ -1,14 +1,14 @@ -package net.citizensnpcs.nms.v1_20_R3.entity; +package net.citizensnpcs.nms.v1_20_R4.entity; import org.bukkit.Bukkit; -import org.bukkit.craftbukkit.v1_20_R3.CraftServer; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftEntity; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftStrider; +import org.bukkit.craftbukkit.v1_20_R4.CraftServer; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftEntity; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftStrider; import net.citizensnpcs.api.npc.NPC; -import net.citizensnpcs.nms.v1_20_R3.util.ForwardingNPCHolder; -import net.citizensnpcs.nms.v1_20_R3.util.NMSBoundingBox; -import net.citizensnpcs.nms.v1_20_R3.util.NMSImpl; +import net.citizensnpcs.nms.v1_20_R4.util.ForwardingNPCHolder; +import net.citizensnpcs.nms.v1_20_R4.util.NMSBoundingBox; +import net.citizensnpcs.nms.v1_20_R4.util.NMSImpl; import net.citizensnpcs.npc.CitizensNPC; import net.citizensnpcs.npc.ai.NPCHolder; import net.citizensnpcs.util.NMS; diff --git a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/TadpoleController.java b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/TadpoleController.java similarity index 93% rename from v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/TadpoleController.java rename to v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/TadpoleController.java index c01a878ef..2bf683e6c 100644 --- a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/TadpoleController.java +++ b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/TadpoleController.java @@ -1,15 +1,15 @@ -package net.citizensnpcs.nms.v1_20_R3.entity; +package net.citizensnpcs.nms.v1_20_R4.entity; import org.bukkit.Bukkit; -import org.bukkit.craftbukkit.v1_20_R3.CraftServer; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftEntity; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftTadpole; +import org.bukkit.craftbukkit.v1_20_R4.CraftServer; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftEntity; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftTadpole; import net.citizensnpcs.api.npc.NPC; -import net.citizensnpcs.nms.v1_20_R3.util.EntityMoveControl; -import net.citizensnpcs.nms.v1_20_R3.util.ForwardingNPCHolder; -import net.citizensnpcs.nms.v1_20_R3.util.NMSBoundingBox; -import net.citizensnpcs.nms.v1_20_R3.util.NMSImpl; +import net.citizensnpcs.nms.v1_20_R4.util.EntityMoveControl; +import net.citizensnpcs.nms.v1_20_R4.util.ForwardingNPCHolder; +import net.citizensnpcs.nms.v1_20_R4.util.NMSBoundingBox; +import net.citizensnpcs.nms.v1_20_R4.util.NMSImpl; import net.citizensnpcs.npc.CitizensNPC; import net.citizensnpcs.npc.ai.NPCHolder; import net.citizensnpcs.util.NMS; @@ -18,6 +18,7 @@ import net.minecraft.core.BlockPos; import net.minecraft.nbt.CompoundTag; import net.minecraft.server.level.ServerLevel; import net.minecraft.sounds.SoundEvent; +import net.minecraft.tags.ItemTags; import net.minecraft.tags.TagKey; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; @@ -25,7 +26,6 @@ import net.minecraft.world.damagesource.DamageSource; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.EntityType; import net.minecraft.world.entity.ai.control.MoveControl; -import net.minecraft.world.entity.animal.frog.Frog; import net.minecraft.world.entity.animal.frog.Tadpole; import net.minecraft.world.entity.player.Player; import net.minecraft.world.entity.vehicle.AbstractMinecart; @@ -194,7 +194,7 @@ public class TadpoleController extends MobEntityController { if (npc == null || !npc.isProtected()) return super.mobInteract(entityhuman, enumhand); ItemStack itemstack = entityhuman.getItemInHand(enumhand); - if ((Frog.TEMPTATION_ITEM.test(itemstack) || itemstack.getItem() == Items.WATER_BUCKET) && isAlive()) + if ((itemstack.is(ItemTags.FROG_FOOD) || itemstack.getItem() == Items.WATER_BUCKET) && isAlive()) return InteractionResult.FAIL; return super.mobInteract(entityhuman, enumhand); } diff --git a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/TraderLlamaController.java b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/TraderLlamaController.java similarity index 95% rename from v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/TraderLlamaController.java rename to v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/TraderLlamaController.java index 4f0934415..f041d65f1 100644 --- a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/TraderLlamaController.java +++ b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/TraderLlamaController.java @@ -1,15 +1,15 @@ -package net.citizensnpcs.nms.v1_20_R3.entity; +package net.citizensnpcs.nms.v1_20_R4.entity; import org.bukkit.Bukkit; import org.bukkit.Location; -import org.bukkit.craftbukkit.v1_20_R3.CraftServer; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftEntity; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftTraderLlama; +import org.bukkit.craftbukkit.v1_20_R4.CraftServer; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftEntity; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftTraderLlama; import net.citizensnpcs.api.npc.NPC; -import net.citizensnpcs.nms.v1_20_R3.util.ForwardingNPCHolder; -import net.citizensnpcs.nms.v1_20_R3.util.NMSBoundingBox; -import net.citizensnpcs.nms.v1_20_R3.util.NMSImpl; +import net.citizensnpcs.nms.v1_20_R4.util.ForwardingNPCHolder; +import net.citizensnpcs.nms.v1_20_R4.util.NMSBoundingBox; +import net.citizensnpcs.nms.v1_20_R4.util.NMSImpl; import net.citizensnpcs.npc.CitizensNPC; import net.citizensnpcs.npc.ai.NPCHolder; import net.citizensnpcs.trait.HorseModifiers; diff --git a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/TropicalFishController.java b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/TropicalFishController.java similarity index 95% rename from v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/TropicalFishController.java rename to v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/TropicalFishController.java index 96581d12e..85d9fb575 100644 --- a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/TropicalFishController.java +++ b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/TropicalFishController.java @@ -1,15 +1,15 @@ -package net.citizensnpcs.nms.v1_20_R3.entity; +package net.citizensnpcs.nms.v1_20_R4.entity; import org.bukkit.Bukkit; -import org.bukkit.craftbukkit.v1_20_R3.CraftServer; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftEntity; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftTropicalFish; +import org.bukkit.craftbukkit.v1_20_R4.CraftServer; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftEntity; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftTropicalFish; import net.citizensnpcs.api.npc.NPC; -import net.citizensnpcs.nms.v1_20_R3.util.EntityMoveControl; -import net.citizensnpcs.nms.v1_20_R3.util.ForwardingNPCHolder; -import net.citizensnpcs.nms.v1_20_R3.util.NMSBoundingBox; -import net.citizensnpcs.nms.v1_20_R3.util.NMSImpl; +import net.citizensnpcs.nms.v1_20_R4.util.EntityMoveControl; +import net.citizensnpcs.nms.v1_20_R4.util.ForwardingNPCHolder; +import net.citizensnpcs.nms.v1_20_R4.util.NMSBoundingBox; +import net.citizensnpcs.nms.v1_20_R4.util.NMSImpl; import net.citizensnpcs.npc.CitizensNPC; import net.citizensnpcs.npc.ai.NPCHolder; import net.citizensnpcs.util.NMS; diff --git a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/TurtleController.java b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/TurtleController.java similarity index 94% rename from v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/TurtleController.java rename to v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/TurtleController.java index 9a84cf11d..c2ab7b643 100644 --- a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/TurtleController.java +++ b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/TurtleController.java @@ -1,15 +1,15 @@ -package net.citizensnpcs.nms.v1_20_R3.entity; +package net.citizensnpcs.nms.v1_20_R4.entity; import org.bukkit.Bukkit; -import org.bukkit.craftbukkit.v1_20_R3.CraftServer; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftEntity; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftTurtle; +import org.bukkit.craftbukkit.v1_20_R4.CraftServer; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftEntity; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftTurtle; import net.citizensnpcs.api.npc.NPC; -import net.citizensnpcs.nms.v1_20_R3.util.EntityMoveControl; -import net.citizensnpcs.nms.v1_20_R3.util.ForwardingNPCHolder; -import net.citizensnpcs.nms.v1_20_R3.util.NMSBoundingBox; -import net.citizensnpcs.nms.v1_20_R3.util.NMSImpl; +import net.citizensnpcs.nms.v1_20_R4.util.EntityMoveControl; +import net.citizensnpcs.nms.v1_20_R4.util.ForwardingNPCHolder; +import net.citizensnpcs.nms.v1_20_R4.util.NMSBoundingBox; +import net.citizensnpcs.nms.v1_20_R4.util.NMSImpl; import net.citizensnpcs.npc.CitizensNPC; import net.citizensnpcs.npc.ai.NPCHolder; import net.citizensnpcs.util.NMS; diff --git a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/VexController.java b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/VexController.java similarity index 93% rename from v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/VexController.java rename to v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/VexController.java index 93af98c02..e0c002289 100644 --- a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/VexController.java +++ b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/VexController.java @@ -1,14 +1,14 @@ -package net.citizensnpcs.nms.v1_20_R3.entity; +package net.citizensnpcs.nms.v1_20_R4.entity; import org.bukkit.Bukkit; -import org.bukkit.craftbukkit.v1_20_R3.CraftServer; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftEntity; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftVex; +import org.bukkit.craftbukkit.v1_20_R4.CraftServer; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftEntity; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftVex; import net.citizensnpcs.api.npc.NPC; -import net.citizensnpcs.nms.v1_20_R3.util.ForwardingNPCHolder; -import net.citizensnpcs.nms.v1_20_R3.util.NMSBoundingBox; -import net.citizensnpcs.nms.v1_20_R3.util.NMSImpl; +import net.citizensnpcs.nms.v1_20_R4.util.ForwardingNPCHolder; +import net.citizensnpcs.nms.v1_20_R4.util.NMSBoundingBox; +import net.citizensnpcs.nms.v1_20_R4.util.NMSImpl; import net.citizensnpcs.npc.CitizensNPC; import net.citizensnpcs.npc.ai.NPCHolder; import net.citizensnpcs.util.NMS; diff --git a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/VillagerController.java b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/VillagerController.java similarity index 95% rename from v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/VillagerController.java rename to v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/VillagerController.java index b6f3cad0a..e497a72e3 100644 --- a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/VillagerController.java +++ b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/VillagerController.java @@ -1,14 +1,14 @@ -package net.citizensnpcs.nms.v1_20_R3.entity; +package net.citizensnpcs.nms.v1_20_R4.entity; import org.bukkit.Bukkit; -import org.bukkit.craftbukkit.v1_20_R3.CraftServer; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftEntity; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftVillager; +import org.bukkit.craftbukkit.v1_20_R4.CraftServer; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftEntity; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftVillager; import net.citizensnpcs.api.npc.NPC; -import net.citizensnpcs.nms.v1_20_R3.util.ForwardingNPCHolder; -import net.citizensnpcs.nms.v1_20_R3.util.NMSBoundingBox; -import net.citizensnpcs.nms.v1_20_R3.util.NMSImpl; +import net.citizensnpcs.nms.v1_20_R4.util.ForwardingNPCHolder; +import net.citizensnpcs.nms.v1_20_R4.util.NMSBoundingBox; +import net.citizensnpcs.nms.v1_20_R4.util.NMSImpl; import net.citizensnpcs.npc.CitizensNPC; import net.citizensnpcs.npc.ai.NPCHolder; import net.citizensnpcs.util.NMS; diff --git a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/VindicatorController.java b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/VindicatorController.java similarity index 95% rename from v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/VindicatorController.java rename to v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/VindicatorController.java index d4cf6bea3..a096622be 100644 --- a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/VindicatorController.java +++ b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/VindicatorController.java @@ -1,14 +1,14 @@ -package net.citizensnpcs.nms.v1_20_R3.entity; +package net.citizensnpcs.nms.v1_20_R4.entity; import org.bukkit.Bukkit; -import org.bukkit.craftbukkit.v1_20_R3.CraftServer; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftEntity; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftVindicator; +import org.bukkit.craftbukkit.v1_20_R4.CraftServer; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftEntity; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftVindicator; import net.citizensnpcs.api.npc.NPC; -import net.citizensnpcs.nms.v1_20_R3.util.ForwardingNPCHolder; -import net.citizensnpcs.nms.v1_20_R3.util.NMSBoundingBox; -import net.citizensnpcs.nms.v1_20_R3.util.NMSImpl; +import net.citizensnpcs.nms.v1_20_R4.util.ForwardingNPCHolder; +import net.citizensnpcs.nms.v1_20_R4.util.NMSBoundingBox; +import net.citizensnpcs.nms.v1_20_R4.util.NMSImpl; import net.citizensnpcs.npc.CitizensNPC; import net.citizensnpcs.npc.ai.NPCHolder; import net.citizensnpcs.util.NMS; diff --git a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/WanderingTraderController.java b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/WanderingTraderController.java similarity index 95% rename from v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/WanderingTraderController.java rename to v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/WanderingTraderController.java index 8d3726a45..fb6dee00a 100644 --- a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/WanderingTraderController.java +++ b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/WanderingTraderController.java @@ -1,14 +1,14 @@ -package net.citizensnpcs.nms.v1_20_R3.entity; +package net.citizensnpcs.nms.v1_20_R4.entity; import org.bukkit.Bukkit; -import org.bukkit.craftbukkit.v1_20_R3.CraftServer; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftEntity; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftWanderingTrader; +import org.bukkit.craftbukkit.v1_20_R4.CraftServer; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftEntity; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftWanderingTrader; import net.citizensnpcs.api.npc.NPC; -import net.citizensnpcs.nms.v1_20_R3.util.ForwardingNPCHolder; -import net.citizensnpcs.nms.v1_20_R3.util.NMSBoundingBox; -import net.citizensnpcs.nms.v1_20_R3.util.NMSImpl; +import net.citizensnpcs.nms.v1_20_R4.util.ForwardingNPCHolder; +import net.citizensnpcs.nms.v1_20_R4.util.NMSBoundingBox; +import net.citizensnpcs.nms.v1_20_R4.util.NMSImpl; import net.citizensnpcs.npc.CitizensNPC; import net.citizensnpcs.npc.ai.NPCHolder; import net.citizensnpcs.util.NMS; diff --git a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/WardenController.java b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/WardenController.java similarity index 94% rename from v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/WardenController.java rename to v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/WardenController.java index c89a05b78..f43ecdd31 100644 --- a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/WardenController.java +++ b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/WardenController.java @@ -1,14 +1,14 @@ -package net.citizensnpcs.nms.v1_20_R3.entity; +package net.citizensnpcs.nms.v1_20_R4.entity; import org.bukkit.Bukkit; -import org.bukkit.craftbukkit.v1_20_R3.CraftServer; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftEntity; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftWarden; +import org.bukkit.craftbukkit.v1_20_R4.CraftServer; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftEntity; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftWarden; import net.citizensnpcs.api.npc.NPC; -import net.citizensnpcs.nms.v1_20_R3.util.ForwardingNPCHolder; -import net.citizensnpcs.nms.v1_20_R3.util.NMSBoundingBox; -import net.citizensnpcs.nms.v1_20_R3.util.NMSImpl; +import net.citizensnpcs.nms.v1_20_R4.util.ForwardingNPCHolder; +import net.citizensnpcs.nms.v1_20_R4.util.NMSBoundingBox; +import net.citizensnpcs.nms.v1_20_R4.util.NMSImpl; import net.citizensnpcs.npc.CitizensNPC; import net.citizensnpcs.npc.ai.NPCHolder; import net.citizensnpcs.util.NMS; diff --git a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/WitchController.java b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/WitchController.java similarity index 94% rename from v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/WitchController.java rename to v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/WitchController.java index 701dfd54c..a81f14f6d 100644 --- a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/WitchController.java +++ b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/WitchController.java @@ -1,14 +1,14 @@ -package net.citizensnpcs.nms.v1_20_R3.entity; +package net.citizensnpcs.nms.v1_20_R4.entity; import org.bukkit.Bukkit; -import org.bukkit.craftbukkit.v1_20_R3.CraftServer; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftEntity; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftWitch; +import org.bukkit.craftbukkit.v1_20_R4.CraftServer; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftEntity; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftWitch; import net.citizensnpcs.api.npc.NPC; -import net.citizensnpcs.nms.v1_20_R3.util.ForwardingNPCHolder; -import net.citizensnpcs.nms.v1_20_R3.util.NMSBoundingBox; -import net.citizensnpcs.nms.v1_20_R3.util.NMSImpl; +import net.citizensnpcs.nms.v1_20_R4.util.ForwardingNPCHolder; +import net.citizensnpcs.nms.v1_20_R4.util.NMSBoundingBox; +import net.citizensnpcs.nms.v1_20_R4.util.NMSImpl; import net.citizensnpcs.npc.CitizensNPC; import net.citizensnpcs.npc.ai.NPCHolder; import net.citizensnpcs.util.NMS; diff --git a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/WitherController.java b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/WitherController.java similarity index 94% rename from v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/WitherController.java rename to v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/WitherController.java index 3d2dd8183..e6898ba7f 100644 --- a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/WitherController.java +++ b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/WitherController.java @@ -1,14 +1,14 @@ -package net.citizensnpcs.nms.v1_20_R3.entity; +package net.citizensnpcs.nms.v1_20_R4.entity; import org.bukkit.Bukkit; -import org.bukkit.craftbukkit.v1_20_R3.CraftServer; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftEntity; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftWither; +import org.bukkit.craftbukkit.v1_20_R4.CraftServer; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftEntity; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftWither; import net.citizensnpcs.api.npc.NPC; -import net.citizensnpcs.nms.v1_20_R3.util.ForwardingNPCHolder; -import net.citizensnpcs.nms.v1_20_R3.util.NMSBoundingBox; -import net.citizensnpcs.nms.v1_20_R3.util.NMSImpl; +import net.citizensnpcs.nms.v1_20_R4.util.ForwardingNPCHolder; +import net.citizensnpcs.nms.v1_20_R4.util.NMSBoundingBox; +import net.citizensnpcs.nms.v1_20_R4.util.NMSImpl; import net.citizensnpcs.npc.CitizensNPC; import net.citizensnpcs.npc.ai.NPCHolder; import net.citizensnpcs.util.NMS; diff --git a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/WolfController.java b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/WolfController.java similarity index 95% rename from v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/WolfController.java rename to v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/WolfController.java index b4fd5990c..febc2e8ca 100644 --- a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/WolfController.java +++ b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/WolfController.java @@ -1,15 +1,15 @@ -package net.citizensnpcs.nms.v1_20_R3.entity; +package net.citizensnpcs.nms.v1_20_R4.entity; import org.bukkit.Bukkit; -import org.bukkit.craftbukkit.v1_20_R3.CraftServer; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftEntity; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftWolf; +import org.bukkit.craftbukkit.v1_20_R4.CraftServer; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftEntity; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftWolf; import org.bukkit.event.entity.EntityTargetEvent; import net.citizensnpcs.api.npc.NPC; -import net.citizensnpcs.nms.v1_20_R3.util.ForwardingNPCHolder; -import net.citizensnpcs.nms.v1_20_R3.util.NMSBoundingBox; -import net.citizensnpcs.nms.v1_20_R3.util.NMSImpl; +import net.citizensnpcs.nms.v1_20_R4.util.ForwardingNPCHolder; +import net.citizensnpcs.nms.v1_20_R4.util.NMSBoundingBox; +import net.citizensnpcs.nms.v1_20_R4.util.NMSImpl; import net.citizensnpcs.npc.CitizensNPC; import net.citizensnpcs.npc.ai.NPCHolder; import net.citizensnpcs.util.NMS; diff --git a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/ZoglinController.java b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/ZoglinController.java similarity index 94% rename from v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/ZoglinController.java rename to v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/ZoglinController.java index dfade2117..e95d4630c 100644 --- a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/ZoglinController.java +++ b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/ZoglinController.java @@ -1,14 +1,14 @@ -package net.citizensnpcs.nms.v1_20_R3.entity; +package net.citizensnpcs.nms.v1_20_R4.entity; import org.bukkit.Bukkit; -import org.bukkit.craftbukkit.v1_20_R3.CraftServer; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftEntity; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftZoglin; +import org.bukkit.craftbukkit.v1_20_R4.CraftServer; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftEntity; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftZoglin; import net.citizensnpcs.api.npc.NPC; -import net.citizensnpcs.nms.v1_20_R3.util.ForwardingNPCHolder; -import net.citizensnpcs.nms.v1_20_R3.util.NMSBoundingBox; -import net.citizensnpcs.nms.v1_20_R3.util.NMSImpl; +import net.citizensnpcs.nms.v1_20_R4.util.ForwardingNPCHolder; +import net.citizensnpcs.nms.v1_20_R4.util.NMSBoundingBox; +import net.citizensnpcs.nms.v1_20_R4.util.NMSImpl; import net.citizensnpcs.npc.CitizensNPC; import net.citizensnpcs.npc.ai.NPCHolder; import net.citizensnpcs.util.NMS; diff --git a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/ZombieController.java b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/ZombieController.java similarity index 94% rename from v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/ZombieController.java rename to v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/ZombieController.java index bf6a8d039..90e9dc888 100644 --- a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/ZombieController.java +++ b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/ZombieController.java @@ -1,14 +1,14 @@ -package net.citizensnpcs.nms.v1_20_R3.entity; +package net.citizensnpcs.nms.v1_20_R4.entity; import org.bukkit.Bukkit; -import org.bukkit.craftbukkit.v1_20_R3.CraftServer; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftEntity; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftZombie; +import org.bukkit.craftbukkit.v1_20_R4.CraftServer; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftEntity; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftZombie; import net.citizensnpcs.api.npc.NPC; -import net.citizensnpcs.nms.v1_20_R3.util.ForwardingNPCHolder; -import net.citizensnpcs.nms.v1_20_R3.util.NMSBoundingBox; -import net.citizensnpcs.nms.v1_20_R3.util.NMSImpl; +import net.citizensnpcs.nms.v1_20_R4.util.ForwardingNPCHolder; +import net.citizensnpcs.nms.v1_20_R4.util.NMSBoundingBox; +import net.citizensnpcs.nms.v1_20_R4.util.NMSImpl; import net.citizensnpcs.npc.CitizensNPC; import net.citizensnpcs.npc.ai.NPCHolder; import net.citizensnpcs.util.NMS; diff --git a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/ZombieHuskController.java b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/ZombieHuskController.java similarity index 94% rename from v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/ZombieHuskController.java rename to v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/ZombieHuskController.java index 6e1bcb3e5..1aa2cc515 100644 --- a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/ZombieHuskController.java +++ b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/ZombieHuskController.java @@ -1,14 +1,14 @@ -package net.citizensnpcs.nms.v1_20_R3.entity; +package net.citizensnpcs.nms.v1_20_R4.entity; import org.bukkit.Bukkit; -import org.bukkit.craftbukkit.v1_20_R3.CraftServer; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftEntity; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftHusk; +import org.bukkit.craftbukkit.v1_20_R4.CraftServer; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftEntity; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftHusk; import net.citizensnpcs.api.npc.NPC; -import net.citizensnpcs.nms.v1_20_R3.util.ForwardingNPCHolder; -import net.citizensnpcs.nms.v1_20_R3.util.NMSBoundingBox; -import net.citizensnpcs.nms.v1_20_R3.util.NMSImpl; +import net.citizensnpcs.nms.v1_20_R4.util.ForwardingNPCHolder; +import net.citizensnpcs.nms.v1_20_R4.util.NMSBoundingBox; +import net.citizensnpcs.nms.v1_20_R4.util.NMSImpl; import net.citizensnpcs.npc.CitizensNPC; import net.citizensnpcs.npc.ai.NPCHolder; import net.citizensnpcs.util.NMS; diff --git a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/ZombieVillagerController.java b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/ZombieVillagerController.java similarity index 94% rename from v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/ZombieVillagerController.java rename to v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/ZombieVillagerController.java index 0cbbe5cfa..b614150aa 100644 --- a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/ZombieVillagerController.java +++ b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/ZombieVillagerController.java @@ -1,14 +1,14 @@ -package net.citizensnpcs.nms.v1_20_R3.entity; +package net.citizensnpcs.nms.v1_20_R4.entity; import org.bukkit.Bukkit; -import org.bukkit.craftbukkit.v1_20_R3.CraftServer; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftEntity; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftVillagerZombie; +import org.bukkit.craftbukkit.v1_20_R4.CraftServer; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftEntity; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftVillagerZombie; import net.citizensnpcs.api.npc.NPC; -import net.citizensnpcs.nms.v1_20_R3.util.ForwardingNPCHolder; -import net.citizensnpcs.nms.v1_20_R3.util.NMSBoundingBox; -import net.citizensnpcs.nms.v1_20_R3.util.NMSImpl; +import net.citizensnpcs.nms.v1_20_R4.util.ForwardingNPCHolder; +import net.citizensnpcs.nms.v1_20_R4.util.NMSBoundingBox; +import net.citizensnpcs.nms.v1_20_R4.util.NMSImpl; import net.citizensnpcs.npc.CitizensNPC; import net.citizensnpcs.npc.ai.NPCHolder; import net.citizensnpcs.util.NMS; diff --git a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/nonliving/AreaEffectCloudController.java b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/nonliving/AreaEffectCloudController.java similarity index 89% rename from v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/nonliving/AreaEffectCloudController.java rename to v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/nonliving/AreaEffectCloudController.java index b1c468463..fc54eff58 100644 --- a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/nonliving/AreaEffectCloudController.java +++ b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/nonliving/AreaEffectCloudController.java @@ -1,15 +1,15 @@ -package net.citizensnpcs.nms.v1_20_R3.entity.nonliving; +package net.citizensnpcs.nms.v1_20_R4.entity.nonliving; import org.bukkit.Bukkit; -import org.bukkit.craftbukkit.v1_20_R3.CraftServer; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftAreaEffectCloud; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftEntity; +import org.bukkit.craftbukkit.v1_20_R4.CraftServer; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftAreaEffectCloud; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftEntity; import net.citizensnpcs.api.npc.NPC; -import net.citizensnpcs.nms.v1_20_R3.entity.MobEntityController; -import net.citizensnpcs.nms.v1_20_R3.util.ForwardingNPCHolder; -import net.citizensnpcs.nms.v1_20_R3.util.NMSBoundingBox; -import net.citizensnpcs.nms.v1_20_R3.util.NMSImpl; +import net.citizensnpcs.nms.v1_20_R4.entity.MobEntityController; +import net.citizensnpcs.nms.v1_20_R4.util.ForwardingNPCHolder; +import net.citizensnpcs.nms.v1_20_R4.util.NMSBoundingBox; +import net.citizensnpcs.nms.v1_20_R4.util.NMSImpl; import net.citizensnpcs.npc.CitizensNPC; import net.citizensnpcs.npc.ai.NPCHolder; import net.citizensnpcs.util.Util; diff --git a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/nonliving/BlockDisplayController.java b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/nonliving/BlockDisplayController.java similarity index 89% rename from v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/nonliving/BlockDisplayController.java rename to v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/nonliving/BlockDisplayController.java index 8c992ce67..30ef10262 100644 --- a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/nonliving/BlockDisplayController.java +++ b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/nonliving/BlockDisplayController.java @@ -1,17 +1,17 @@ -package net.citizensnpcs.nms.v1_20_R3.entity.nonliving; +package net.citizensnpcs.nms.v1_20_R4.entity.nonliving; import org.bukkit.Bukkit; import org.bukkit.Location; -import org.bukkit.craftbukkit.v1_20_R3.CraftServer; -import org.bukkit.craftbukkit.v1_20_R3.CraftWorld; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftBlockDisplay; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftEntity; +import org.bukkit.craftbukkit.v1_20_R4.CraftServer; +import org.bukkit.craftbukkit.v1_20_R4.CraftWorld; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftBlockDisplay; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftEntity; import net.citizensnpcs.api.npc.NPC; -import net.citizensnpcs.nms.v1_20_R3.entity.MobEntityController; -import net.citizensnpcs.nms.v1_20_R3.util.ForwardingNPCHolder; -import net.citizensnpcs.nms.v1_20_R3.util.NMSBoundingBox; -import net.citizensnpcs.nms.v1_20_R3.util.NMSImpl; +import net.citizensnpcs.nms.v1_20_R4.entity.MobEntityController; +import net.citizensnpcs.nms.v1_20_R4.util.ForwardingNPCHolder; +import net.citizensnpcs.nms.v1_20_R4.util.NMSBoundingBox; +import net.citizensnpcs.nms.v1_20_R4.util.NMSImpl; import net.citizensnpcs.npc.CitizensNPC; import net.citizensnpcs.npc.ai.NPCHolder; import net.citizensnpcs.util.Util; diff --git a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/nonliving/BoatController.java b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/nonliving/BoatController.java similarity index 95% rename from v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/nonliving/BoatController.java rename to v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/nonliving/BoatController.java index d1b91c3bd..8a315a8c2 100644 --- a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/nonliving/BoatController.java +++ b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/nonliving/BoatController.java @@ -1,15 +1,15 @@ -package net.citizensnpcs.nms.v1_20_R3.entity.nonliving; +package net.citizensnpcs.nms.v1_20_R4.entity.nonliving; import org.bukkit.Bukkit; -import org.bukkit.craftbukkit.v1_20_R3.CraftServer; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftBoat; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftEntity; +import org.bukkit.craftbukkit.v1_20_R4.CraftServer; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftBoat; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftEntity; import net.citizensnpcs.api.npc.NPC; -import net.citizensnpcs.nms.v1_20_R3.entity.MobEntityController; -import net.citizensnpcs.nms.v1_20_R3.util.ForwardingNPCHolder; -import net.citizensnpcs.nms.v1_20_R3.util.NMSBoundingBox; -import net.citizensnpcs.nms.v1_20_R3.util.NMSImpl; +import net.citizensnpcs.nms.v1_20_R4.entity.MobEntityController; +import net.citizensnpcs.nms.v1_20_R4.util.ForwardingNPCHolder; +import net.citizensnpcs.nms.v1_20_R4.util.NMSBoundingBox; +import net.citizensnpcs.nms.v1_20_R4.util.NMSImpl; import net.citizensnpcs.npc.CitizensNPC; import net.citizensnpcs.npc.ai.NPCHolder; import net.citizensnpcs.util.Util; diff --git a/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/nonliving/BreezeWindChargeController.java b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/nonliving/BreezeWindChargeController.java new file mode 100644 index 000000000..28db64de0 --- /dev/null +++ b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/nonliving/BreezeWindChargeController.java @@ -0,0 +1,128 @@ +package net.citizensnpcs.nms.v1_20_R4.entity.nonliving; + +import org.bukkit.Bukkit; +import org.bukkit.craftbukkit.v1_20_R4.CraftServer; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftBreezeWindCharge; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftEntity; + +import net.citizensnpcs.api.npc.NPC; +import net.citizensnpcs.nms.v1_20_R4.entity.MobEntityController; +import net.citizensnpcs.nms.v1_20_R4.util.ForwardingNPCHolder; +import net.citizensnpcs.nms.v1_20_R4.util.NMSBoundingBox; +import net.citizensnpcs.nms.v1_20_R4.util.NMSImpl; +import net.citizensnpcs.npc.CitizensNPC; +import net.citizensnpcs.npc.ai.NPCHolder; +import net.citizensnpcs.util.Util; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.tags.TagKey; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.projectile.windcharge.BreezeWindCharge; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.material.Fluid; +import net.minecraft.world.level.material.PushReaction; +import net.minecraft.world.phys.AABB; +import net.minecraft.world.phys.Vec3; + +public class BreezeWindChargeController extends MobEntityController { + public BreezeWindChargeController() { + super(EntityBreezeWindChargeNPC.class); + } + + @Override + public org.bukkit.entity.BreezeWindCharge getBukkitEntity() { + return (org.bukkit.entity.BreezeWindCharge) super.getBukkitEntity(); + } + + public static class BreezeWindChargeNPC extends CraftBreezeWindCharge implements ForwardingNPCHolder { + public BreezeWindChargeNPC(EntityBreezeWindChargeNPC entity) { + super((CraftServer) Bukkit.getServer(), entity); + } + } + + public static class EntityBreezeWindChargeNPC extends BreezeWindCharge implements NPCHolder { + private final CitizensNPC npc; + + public EntityBreezeWindChargeNPC(EntityType types, Level level) { + this(types, level, null); + } + + public EntityBreezeWindChargeNPC(EntityType types, Level level, NPC npc) { + super(types, level); + this.npc = (CitizensNPC) npc; + } + + @Override + public CraftEntity getBukkitEntity() { + if (npc != null && !(super.getBukkitEntity() instanceof NPCHolder)) { + NMSImpl.setBukkitEntity(this, new BreezeWindChargeNPC(this)); + } + return super.getBukkitEntity(); + } + + @Override + public NPC getNPC() { + return npc; + } + + @Override + public PushReaction getPistonPushReaction() { + return Util.callPistonPushEvent(npc) ? PushReaction.IGNORE : super.getPistonPushReaction(); + } + + @Override + public boolean isPushable() { + return npc == null ? super.isPushable() + : npc.data(). get(NPC.Metadata.COLLIDABLE, !npc.isProtected()); + } + + @Override + protected AABB makeBoundingBox() { + return NMSBoundingBox.makeBB(npc, super.makeBoundingBox()); + } + + @Override + public void push(Entity entity) { + // this method is called by both the entities involved - cancelling + // it will not stop the NPC from moving. + super.push(entity); + if (npc != null) { + Util.callCollisionEvent(npc, entity.getBukkitEntity()); + } + } + + @Override + public boolean save(CompoundTag save) { + return npc == null ? super.save(save) : false; + } + + @Override + public Entity teleportTo(ServerLevel worldserver, Vec3 location) { + if (npc == null) + return super.teleportTo(worldserver, location); + return NMSImpl.teleportAcrossWorld(this, worldserver, location); + } + + @Override + public void tick() { + if (npc != null) { + npc.update(); + } else { + super.tick(); + } + } + + @Override + public boolean updateFluidHeightAndDoFluidPushing(TagKey tagkey, double d0) { + if (npc == null) + return super.updateFluidHeightAndDoFluidPushing(tagkey, d0); + Vec3 old = getDeltaMovement().add(0, 0, 0); + boolean res = super.updateFluidHeightAndDoFluidPushing(tagkey, d0); + if (!npc.isPushableByFluids()) { + setDeltaMovement(old); + } + return res; + } + } +} diff --git a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/nonliving/ChestBoatController.java b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/nonliving/ChestBoatController.java similarity index 95% rename from v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/nonliving/ChestBoatController.java rename to v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/nonliving/ChestBoatController.java index 5e3678adc..4ec3b6758 100644 --- a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/nonliving/ChestBoatController.java +++ b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/nonliving/ChestBoatController.java @@ -1,15 +1,15 @@ -package net.citizensnpcs.nms.v1_20_R3.entity.nonliving; +package net.citizensnpcs.nms.v1_20_R4.entity.nonliving; import org.bukkit.Bukkit; -import org.bukkit.craftbukkit.v1_20_R3.CraftServer; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftChestBoat; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftEntity; +import org.bukkit.craftbukkit.v1_20_R4.CraftServer; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftChestBoat; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftEntity; import net.citizensnpcs.api.npc.NPC; -import net.citizensnpcs.nms.v1_20_R3.entity.MobEntityController; -import net.citizensnpcs.nms.v1_20_R3.util.ForwardingNPCHolder; -import net.citizensnpcs.nms.v1_20_R3.util.NMSBoundingBox; -import net.citizensnpcs.nms.v1_20_R3.util.NMSImpl; +import net.citizensnpcs.nms.v1_20_R4.entity.MobEntityController; +import net.citizensnpcs.nms.v1_20_R4.util.ForwardingNPCHolder; +import net.citizensnpcs.nms.v1_20_R4.util.NMSBoundingBox; +import net.citizensnpcs.nms.v1_20_R4.util.NMSImpl; import net.citizensnpcs.npc.CitizensNPC; import net.citizensnpcs.npc.ai.NPCHolder; import net.citizensnpcs.util.Util; diff --git a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/nonliving/DragonFireballController.java b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/nonliving/DragonFireballController.java similarity index 90% rename from v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/nonliving/DragonFireballController.java rename to v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/nonliving/DragonFireballController.java index 982263d0f..bd906662a 100644 --- a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/nonliving/DragonFireballController.java +++ b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/nonliving/DragonFireballController.java @@ -1,15 +1,15 @@ -package net.citizensnpcs.nms.v1_20_R3.entity.nonliving; +package net.citizensnpcs.nms.v1_20_R4.entity.nonliving; import org.bukkit.Bukkit; -import org.bukkit.craftbukkit.v1_20_R3.CraftServer; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftDragonFireball; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftEntity; +import org.bukkit.craftbukkit.v1_20_R4.CraftServer; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftDragonFireball; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftEntity; import net.citizensnpcs.api.npc.NPC; -import net.citizensnpcs.nms.v1_20_R3.entity.MobEntityController; -import net.citizensnpcs.nms.v1_20_R3.util.ForwardingNPCHolder; -import net.citizensnpcs.nms.v1_20_R3.util.NMSBoundingBox; -import net.citizensnpcs.nms.v1_20_R3.util.NMSImpl; +import net.citizensnpcs.nms.v1_20_R4.entity.MobEntityController; +import net.citizensnpcs.nms.v1_20_R4.util.ForwardingNPCHolder; +import net.citizensnpcs.nms.v1_20_R4.util.NMSBoundingBox; +import net.citizensnpcs.nms.v1_20_R4.util.NMSImpl; import net.citizensnpcs.npc.CitizensNPC; import net.citizensnpcs.npc.ai.NPCHolder; import net.citizensnpcs.util.Util; diff --git a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/nonliving/EggController.java b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/nonliving/EggController.java similarity index 91% rename from v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/nonliving/EggController.java rename to v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/nonliving/EggController.java index edcce2c52..897b5e716 100644 --- a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/nonliving/EggController.java +++ b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/nonliving/EggController.java @@ -1,16 +1,16 @@ -package net.citizensnpcs.nms.v1_20_R3.entity.nonliving; +package net.citizensnpcs.nms.v1_20_R4.entity.nonliving; import org.bukkit.Bukkit; import org.bukkit.Location; -import org.bukkit.craftbukkit.v1_20_R3.CraftServer; -import org.bukkit.craftbukkit.v1_20_R3.CraftWorld; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftEgg; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftEntity; +import org.bukkit.craftbukkit.v1_20_R4.CraftServer; +import org.bukkit.craftbukkit.v1_20_R4.CraftWorld; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftEgg; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftEntity; import net.citizensnpcs.api.npc.NPC; -import net.citizensnpcs.nms.v1_20_R3.util.ForwardingNPCHolder; -import net.citizensnpcs.nms.v1_20_R3.util.NMSBoundingBox; -import net.citizensnpcs.nms.v1_20_R3.util.NMSImpl; +import net.citizensnpcs.nms.v1_20_R4.util.ForwardingNPCHolder; +import net.citizensnpcs.nms.v1_20_R4.util.NMSBoundingBox; +import net.citizensnpcs.nms.v1_20_R4.util.NMSImpl; import net.citizensnpcs.npc.AbstractEntityController; import net.citizensnpcs.npc.CitizensNPC; import net.citizensnpcs.npc.ai.NPCHolder; diff --git a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/nonliving/EnderCrystalController.java b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/nonliving/EnderCrystalController.java similarity index 89% rename from v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/nonliving/EnderCrystalController.java rename to v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/nonliving/EnderCrystalController.java index 9e9b46fe3..eed54a5e9 100644 --- a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/nonliving/EnderCrystalController.java +++ b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/nonliving/EnderCrystalController.java @@ -1,15 +1,15 @@ -package net.citizensnpcs.nms.v1_20_R3.entity.nonliving; +package net.citizensnpcs.nms.v1_20_R4.entity.nonliving; import org.bukkit.Bukkit; -import org.bukkit.craftbukkit.v1_20_R3.CraftServer; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftEnderCrystal; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftEntity; +import org.bukkit.craftbukkit.v1_20_R4.CraftServer; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftEnderCrystal; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftEntity; import net.citizensnpcs.api.npc.NPC; -import net.citizensnpcs.nms.v1_20_R3.entity.MobEntityController; -import net.citizensnpcs.nms.v1_20_R3.util.ForwardingNPCHolder; -import net.citizensnpcs.nms.v1_20_R3.util.NMSBoundingBox; -import net.citizensnpcs.nms.v1_20_R3.util.NMSImpl; +import net.citizensnpcs.nms.v1_20_R4.entity.MobEntityController; +import net.citizensnpcs.nms.v1_20_R4.util.ForwardingNPCHolder; +import net.citizensnpcs.nms.v1_20_R4.util.NMSBoundingBox; +import net.citizensnpcs.nms.v1_20_R4.util.NMSImpl; import net.citizensnpcs.npc.CitizensNPC; import net.citizensnpcs.npc.ai.NPCHolder; import net.citizensnpcs.util.Util; diff --git a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/nonliving/EnderPearlController.java b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/nonliving/EnderPearlController.java similarity index 89% rename from v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/nonliving/EnderPearlController.java rename to v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/nonliving/EnderPearlController.java index d7d354777..b377b1dd3 100644 --- a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/nonliving/EnderPearlController.java +++ b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/nonliving/EnderPearlController.java @@ -1,16 +1,16 @@ -package net.citizensnpcs.nms.v1_20_R3.entity.nonliving; +package net.citizensnpcs.nms.v1_20_R4.entity.nonliving; import org.bukkit.Bukkit; -import org.bukkit.craftbukkit.v1_20_R3.CraftServer; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftEnderPearl; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftEntity; +import org.bukkit.craftbukkit.v1_20_R4.CraftServer; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftEnderPearl; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftEntity; import org.bukkit.entity.EnderPearl; import net.citizensnpcs.api.npc.NPC; -import net.citizensnpcs.nms.v1_20_R3.entity.MobEntityController; -import net.citizensnpcs.nms.v1_20_R3.util.ForwardingNPCHolder; -import net.citizensnpcs.nms.v1_20_R3.util.NMSBoundingBox; -import net.citizensnpcs.nms.v1_20_R3.util.NMSImpl; +import net.citizensnpcs.nms.v1_20_R4.entity.MobEntityController; +import net.citizensnpcs.nms.v1_20_R4.util.ForwardingNPCHolder; +import net.citizensnpcs.nms.v1_20_R4.util.NMSBoundingBox; +import net.citizensnpcs.nms.v1_20_R4.util.NMSImpl; import net.citizensnpcs.npc.CitizensNPC; import net.citizensnpcs.npc.ai.NPCHolder; import net.citizensnpcs.util.Util; diff --git a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/nonliving/EvokerFangsController.java b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/nonliving/EvokerFangsController.java similarity index 91% rename from v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/nonliving/EvokerFangsController.java rename to v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/nonliving/EvokerFangsController.java index 9bae43cd2..a35307c4b 100644 --- a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/nonliving/EvokerFangsController.java +++ b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/nonliving/EvokerFangsController.java @@ -1,16 +1,16 @@ -package net.citizensnpcs.nms.v1_20_R3.entity.nonliving; +package net.citizensnpcs.nms.v1_20_R4.entity.nonliving; import org.bukkit.Bukkit; -import org.bukkit.craftbukkit.v1_20_R3.CraftServer; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftEntity; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftEvokerFangs; +import org.bukkit.craftbukkit.v1_20_R4.CraftServer; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftEntity; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftEvokerFangs; import org.bukkit.event.player.PlayerInteractEntityEvent; import net.citizensnpcs.api.npc.NPC; -import net.citizensnpcs.nms.v1_20_R3.entity.MobEntityController; -import net.citizensnpcs.nms.v1_20_R3.util.ForwardingNPCHolder; -import net.citizensnpcs.nms.v1_20_R3.util.NMSBoundingBox; -import net.citizensnpcs.nms.v1_20_R3.util.NMSImpl; +import net.citizensnpcs.nms.v1_20_R4.entity.MobEntityController; +import net.citizensnpcs.nms.v1_20_R4.util.ForwardingNPCHolder; +import net.citizensnpcs.nms.v1_20_R4.util.NMSBoundingBox; +import net.citizensnpcs.nms.v1_20_R4.util.NMSImpl; import net.citizensnpcs.npc.CitizensNPC; import net.citizensnpcs.npc.ai.NPCHolder; import net.citizensnpcs.util.Util; diff --git a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/nonliving/ExperienceOrbController.java b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/nonliving/ExperienceOrbController.java similarity index 89% rename from v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/nonliving/ExperienceOrbController.java rename to v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/nonliving/ExperienceOrbController.java index 4d4028312..4c286dadd 100644 --- a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/nonliving/ExperienceOrbController.java +++ b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/nonliving/ExperienceOrbController.java @@ -1,15 +1,15 @@ -package net.citizensnpcs.nms.v1_20_R3.entity.nonliving; +package net.citizensnpcs.nms.v1_20_R4.entity.nonliving; import org.bukkit.Bukkit; -import org.bukkit.craftbukkit.v1_20_R3.CraftServer; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftEntity; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftExperienceOrb; +import org.bukkit.craftbukkit.v1_20_R4.CraftServer; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftEntity; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftExperienceOrb; import net.citizensnpcs.api.npc.NPC; -import net.citizensnpcs.nms.v1_20_R3.entity.MobEntityController; -import net.citizensnpcs.nms.v1_20_R3.util.ForwardingNPCHolder; -import net.citizensnpcs.nms.v1_20_R3.util.NMSBoundingBox; -import net.citizensnpcs.nms.v1_20_R3.util.NMSImpl; +import net.citizensnpcs.nms.v1_20_R4.entity.MobEntityController; +import net.citizensnpcs.nms.v1_20_R4.util.ForwardingNPCHolder; +import net.citizensnpcs.nms.v1_20_R4.util.NMSBoundingBox; +import net.citizensnpcs.nms.v1_20_R4.util.NMSImpl; import net.citizensnpcs.npc.CitizensNPC; import net.citizensnpcs.npc.ai.NPCHolder; import net.citizensnpcs.util.Util; diff --git a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/nonliving/EnderSignalController.java b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/nonliving/EyeOfEnderController.java similarity index 87% rename from v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/nonliving/EnderSignalController.java rename to v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/nonliving/EyeOfEnderController.java index e64787387..7df1b079b 100644 --- a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/nonliving/EnderSignalController.java +++ b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/nonliving/EyeOfEnderController.java @@ -1,16 +1,16 @@ -package net.citizensnpcs.nms.v1_20_R3.entity.nonliving; +package net.citizensnpcs.nms.v1_20_R4.entity.nonliving; import org.bukkit.Bukkit; -import org.bukkit.craftbukkit.v1_20_R3.CraftServer; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftEnderSignal; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftEntity; +import org.bukkit.craftbukkit.v1_20_R4.CraftServer; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftEnderSignal; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftEntity; import org.bukkit.entity.EnderSignal; import net.citizensnpcs.api.npc.NPC; -import net.citizensnpcs.nms.v1_20_R3.entity.MobEntityController; -import net.citizensnpcs.nms.v1_20_R3.util.ForwardingNPCHolder; -import net.citizensnpcs.nms.v1_20_R3.util.NMSBoundingBox; -import net.citizensnpcs.nms.v1_20_R3.util.NMSImpl; +import net.citizensnpcs.nms.v1_20_R4.entity.MobEntityController; +import net.citizensnpcs.nms.v1_20_R4.util.ForwardingNPCHolder; +import net.citizensnpcs.nms.v1_20_R4.util.NMSBoundingBox; +import net.citizensnpcs.nms.v1_20_R4.util.NMSImpl; import net.citizensnpcs.npc.CitizensNPC; import net.citizensnpcs.npc.ai.NPCHolder; import net.citizensnpcs.util.Util; @@ -26,8 +26,8 @@ import net.minecraft.world.level.material.PushReaction; import net.minecraft.world.phys.AABB; import net.minecraft.world.phys.Vec3; -public class EnderSignalController extends MobEntityController { - public EnderSignalController() { +public class EyeOfEnderController extends MobEntityController { + public EyeOfEnderController() { super(EntityEnderSignalNPC.class); } diff --git a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/nonliving/FallingBlockController.java b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/nonliving/FallingBlockController.java similarity index 92% rename from v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/nonliving/FallingBlockController.java rename to v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/nonliving/FallingBlockController.java index 1fa8a72e8..3b4757489 100644 --- a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/nonliving/FallingBlockController.java +++ b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/nonliving/FallingBlockController.java @@ -1,17 +1,17 @@ -package net.citizensnpcs.nms.v1_20_R3.entity.nonliving; +package net.citizensnpcs.nms.v1_20_R4.entity.nonliving; import org.bukkit.Bukkit; import org.bukkit.Location; -import org.bukkit.craftbukkit.v1_20_R3.CraftServer; -import org.bukkit.craftbukkit.v1_20_R3.CraftWorld; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftEntity; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftFallingBlock; -import org.bukkit.craftbukkit.v1_20_R3.util.CraftMagicNumbers; +import org.bukkit.craftbukkit.v1_20_R4.CraftServer; +import org.bukkit.craftbukkit.v1_20_R4.CraftWorld; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftEntity; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftFallingBlock; +import org.bukkit.craftbukkit.v1_20_R4.util.CraftMagicNumbers; import org.bukkit.entity.FallingBlock; import net.citizensnpcs.api.npc.NPC; -import net.citizensnpcs.nms.v1_20_R3.util.NMSBoundingBox; -import net.citizensnpcs.nms.v1_20_R3.util.NMSImpl; +import net.citizensnpcs.nms.v1_20_R4.util.NMSBoundingBox; +import net.citizensnpcs.nms.v1_20_R4.util.NMSImpl; import net.citizensnpcs.npc.AbstractEntityController; import net.citizensnpcs.npc.CitizensNPC; import net.citizensnpcs.npc.ai.NPCHolder; diff --git a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/nonliving/FireworkController.java b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/nonliving/FireworkController.java similarity index 89% rename from v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/nonliving/FireworkController.java rename to v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/nonliving/FireworkController.java index 19469494a..7efccc098 100644 --- a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/nonliving/FireworkController.java +++ b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/nonliving/FireworkController.java @@ -1,16 +1,16 @@ -package net.citizensnpcs.nms.v1_20_R3.entity.nonliving; +package net.citizensnpcs.nms.v1_20_R4.entity.nonliving; import org.bukkit.Bukkit; -import org.bukkit.craftbukkit.v1_20_R3.CraftServer; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftEntity; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftFirework; +import org.bukkit.craftbukkit.v1_20_R4.CraftServer; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftEntity; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftFirework; import org.bukkit.entity.Firework; import net.citizensnpcs.api.npc.NPC; -import net.citizensnpcs.nms.v1_20_R3.entity.MobEntityController; -import net.citizensnpcs.nms.v1_20_R3.util.ForwardingNPCHolder; -import net.citizensnpcs.nms.v1_20_R3.util.NMSBoundingBox; -import net.citizensnpcs.nms.v1_20_R3.util.NMSImpl; +import net.citizensnpcs.nms.v1_20_R4.entity.MobEntityController; +import net.citizensnpcs.nms.v1_20_R4.util.ForwardingNPCHolder; +import net.citizensnpcs.nms.v1_20_R4.util.NMSBoundingBox; +import net.citizensnpcs.nms.v1_20_R4.util.NMSImpl; import net.citizensnpcs.npc.CitizensNPC; import net.citizensnpcs.npc.ai.NPCHolder; import net.citizensnpcs.util.Util; diff --git a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/nonliving/FishingHookController.java b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/nonliving/FishingHookController.java similarity index 91% rename from v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/nonliving/FishingHookController.java rename to v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/nonliving/FishingHookController.java index c1b50a79b..f4487d53b 100644 --- a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/nonliving/FishingHookController.java +++ b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/nonliving/FishingHookController.java @@ -1,22 +1,22 @@ -package net.citizensnpcs.nms.v1_20_R3.entity.nonliving; +package net.citizensnpcs.nms.v1_20_R4.entity.nonliving; import java.util.UUID; import org.bukkit.Bukkit; import org.bukkit.Location; -import org.bukkit.craftbukkit.v1_20_R3.CraftServer; -import org.bukkit.craftbukkit.v1_20_R3.CraftWorld; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftEntity; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftFishHook; +import org.bukkit.craftbukkit.v1_20_R4.CraftServer; +import org.bukkit.craftbukkit.v1_20_R4.CraftWorld; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftEntity; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftFishHook; import org.bukkit.entity.FishHook; import com.mojang.authlib.GameProfile; import net.citizensnpcs.api.npc.NPC; -import net.citizensnpcs.nms.v1_20_R3.entity.MobEntityController; -import net.citizensnpcs.nms.v1_20_R3.util.ForwardingNPCHolder; -import net.citizensnpcs.nms.v1_20_R3.util.NMSBoundingBox; -import net.citizensnpcs.nms.v1_20_R3.util.NMSImpl; +import net.citizensnpcs.nms.v1_20_R4.entity.MobEntityController; +import net.citizensnpcs.nms.v1_20_R4.util.ForwardingNPCHolder; +import net.citizensnpcs.nms.v1_20_R4.util.NMSBoundingBox; +import net.citizensnpcs.nms.v1_20_R4.util.NMSImpl; import net.citizensnpcs.npc.CitizensNPC; import net.citizensnpcs.npc.ai.NPCHolder; import net.citizensnpcs.util.Util; diff --git a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/nonliving/GlowItemFrameController.java b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/nonliving/GlowItemFrameController.java similarity index 92% rename from v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/nonliving/GlowItemFrameController.java rename to v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/nonliving/GlowItemFrameController.java index 01b621837..49ee6b9cb 100644 --- a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/nonliving/GlowItemFrameController.java +++ b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/nonliving/GlowItemFrameController.java @@ -1,15 +1,15 @@ -package net.citizensnpcs.nms.v1_20_R3.entity.nonliving; +package net.citizensnpcs.nms.v1_20_R4.entity.nonliving; import org.bukkit.Bukkit; import org.bukkit.Location; -import org.bukkit.craftbukkit.v1_20_R3.CraftServer; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftEntity; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftGlowItemFrame; +import org.bukkit.craftbukkit.v1_20_R4.CraftServer; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftEntity; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftGlowItemFrame; import net.citizensnpcs.api.npc.NPC; -import net.citizensnpcs.nms.v1_20_R3.entity.MobEntityController; -import net.citizensnpcs.nms.v1_20_R3.util.NMSBoundingBox; -import net.citizensnpcs.nms.v1_20_R3.util.NMSImpl; +import net.citizensnpcs.nms.v1_20_R4.entity.MobEntityController; +import net.citizensnpcs.nms.v1_20_R4.util.NMSBoundingBox; +import net.citizensnpcs.nms.v1_20_R4.util.NMSImpl; import net.citizensnpcs.npc.CitizensNPC; import net.citizensnpcs.npc.ai.NPCHolder; import net.citizensnpcs.util.Util; diff --git a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/nonliving/InteractionController.java b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/nonliving/InteractionController.java similarity index 89% rename from v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/nonliving/InteractionController.java rename to v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/nonliving/InteractionController.java index 37b6fc23d..aaf4353c0 100644 --- a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/nonliving/InteractionController.java +++ b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/nonliving/InteractionController.java @@ -1,15 +1,15 @@ -package net.citizensnpcs.nms.v1_20_R3.entity.nonliving; +package net.citizensnpcs.nms.v1_20_R4.entity.nonliving; import org.bukkit.Bukkit; -import org.bukkit.craftbukkit.v1_20_R3.CraftServer; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftEntity; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftInteraction; +import org.bukkit.craftbukkit.v1_20_R4.CraftServer; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftEntity; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftInteraction; import net.citizensnpcs.api.npc.NPC; -import net.citizensnpcs.nms.v1_20_R3.entity.MobEntityController; -import net.citizensnpcs.nms.v1_20_R3.util.ForwardingNPCHolder; -import net.citizensnpcs.nms.v1_20_R3.util.NMSBoundingBox; -import net.citizensnpcs.nms.v1_20_R3.util.NMSImpl; +import net.citizensnpcs.nms.v1_20_R4.entity.MobEntityController; +import net.citizensnpcs.nms.v1_20_R4.util.ForwardingNPCHolder; +import net.citizensnpcs.nms.v1_20_R4.util.NMSBoundingBox; +import net.citizensnpcs.nms.v1_20_R4.util.NMSImpl; import net.citizensnpcs.npc.CitizensNPC; import net.citizensnpcs.npc.ai.NPCHolder; import net.citizensnpcs.util.Util; diff --git a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/nonliving/ItemController.java b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/nonliving/ItemController.java similarity index 91% rename from v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/nonliving/ItemController.java rename to v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/nonliving/ItemController.java index 99a771836..a6b93f42e 100644 --- a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/nonliving/ItemController.java +++ b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/nonliving/ItemController.java @@ -1,17 +1,17 @@ -package net.citizensnpcs.nms.v1_20_R3.entity.nonliving; +package net.citizensnpcs.nms.v1_20_R4.entity.nonliving; import org.bukkit.Bukkit; import org.bukkit.Location; -import org.bukkit.craftbukkit.v1_20_R3.CraftServer; -import org.bukkit.craftbukkit.v1_20_R3.CraftWorld; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftEntity; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftItem; -import org.bukkit.craftbukkit.v1_20_R3.inventory.CraftItemStack; +import org.bukkit.craftbukkit.v1_20_R4.CraftServer; +import org.bukkit.craftbukkit.v1_20_R4.CraftWorld; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftEntity; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftItem; +import org.bukkit.craftbukkit.v1_20_R4.inventory.CraftItemStack; import org.bukkit.entity.Item; import net.citizensnpcs.api.npc.NPC; -import net.citizensnpcs.nms.v1_20_R3.util.NMSBoundingBox; -import net.citizensnpcs.nms.v1_20_R3.util.NMSImpl; +import net.citizensnpcs.nms.v1_20_R4.util.NMSBoundingBox; +import net.citizensnpcs.nms.v1_20_R4.util.NMSImpl; import net.citizensnpcs.npc.AbstractEntityController; import net.citizensnpcs.npc.CitizensNPC; import net.citizensnpcs.npc.ai.NPCHolder; diff --git a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/nonliving/ItemDisplayController.java b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/nonliving/ItemDisplayController.java similarity index 88% rename from v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/nonliving/ItemDisplayController.java rename to v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/nonliving/ItemDisplayController.java index 948edfff7..d70e5ec64 100644 --- a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/nonliving/ItemDisplayController.java +++ b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/nonliving/ItemDisplayController.java @@ -1,18 +1,18 @@ -package net.citizensnpcs.nms.v1_20_R3.entity.nonliving; +package net.citizensnpcs.nms.v1_20_R4.entity.nonliving; import org.bukkit.Bukkit; import org.bukkit.Location; -import org.bukkit.craftbukkit.v1_20_R3.CraftServer; -import org.bukkit.craftbukkit.v1_20_R3.CraftWorld; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftEntity; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftItemDisplay; -import org.bukkit.craftbukkit.v1_20_R3.inventory.CraftItemStack; +import org.bukkit.craftbukkit.v1_20_R4.CraftServer; +import org.bukkit.craftbukkit.v1_20_R4.CraftWorld; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftEntity; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftItemDisplay; +import org.bukkit.craftbukkit.v1_20_R4.inventory.CraftItemStack; import net.citizensnpcs.api.npc.NPC; -import net.citizensnpcs.nms.v1_20_R3.entity.MobEntityController; -import net.citizensnpcs.nms.v1_20_R3.util.ForwardingNPCHolder; -import net.citizensnpcs.nms.v1_20_R3.util.NMSBoundingBox; -import net.citizensnpcs.nms.v1_20_R3.util.NMSImpl; +import net.citizensnpcs.nms.v1_20_R4.entity.MobEntityController; +import net.citizensnpcs.nms.v1_20_R4.util.ForwardingNPCHolder; +import net.citizensnpcs.nms.v1_20_R4.util.NMSBoundingBox; +import net.citizensnpcs.nms.v1_20_R4.util.NMSImpl; import net.citizensnpcs.npc.CitizensNPC; import net.citizensnpcs.npc.ai.NPCHolder; import net.citizensnpcs.util.Util; diff --git a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/nonliving/ItemFrameController.java b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/nonliving/ItemFrameController.java similarity index 92% rename from v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/nonliving/ItemFrameController.java rename to v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/nonliving/ItemFrameController.java index 90b56d377..0e4a39346 100644 --- a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/nonliving/ItemFrameController.java +++ b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/nonliving/ItemFrameController.java @@ -1,15 +1,15 @@ -package net.citizensnpcs.nms.v1_20_R3.entity.nonliving; +package net.citizensnpcs.nms.v1_20_R4.entity.nonliving; import org.bukkit.Bukkit; import org.bukkit.Location; -import org.bukkit.craftbukkit.v1_20_R3.CraftServer; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftEntity; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftItemFrame; +import org.bukkit.craftbukkit.v1_20_R4.CraftServer; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftEntity; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftItemFrame; import net.citizensnpcs.api.npc.NPC; -import net.citizensnpcs.nms.v1_20_R3.entity.MobEntityController; -import net.citizensnpcs.nms.v1_20_R3.util.NMSBoundingBox; -import net.citizensnpcs.nms.v1_20_R3.util.NMSImpl; +import net.citizensnpcs.nms.v1_20_R4.entity.MobEntityController; +import net.citizensnpcs.nms.v1_20_R4.util.NMSBoundingBox; +import net.citizensnpcs.nms.v1_20_R4.util.NMSImpl; import net.citizensnpcs.npc.CitizensNPC; import net.citizensnpcs.npc.ai.NPCHolder; import net.citizensnpcs.util.Util; diff --git a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/nonliving/LargeFireballController.java b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/nonliving/LargeFireballController.java similarity index 90% rename from v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/nonliving/LargeFireballController.java rename to v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/nonliving/LargeFireballController.java index ceba3d05e..6fe897a88 100644 --- a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/nonliving/LargeFireballController.java +++ b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/nonliving/LargeFireballController.java @@ -1,15 +1,15 @@ -package net.citizensnpcs.nms.v1_20_R3.entity.nonliving; +package net.citizensnpcs.nms.v1_20_R4.entity.nonliving; import org.bukkit.Bukkit; -import org.bukkit.craftbukkit.v1_20_R3.CraftServer; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftEntity; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftLargeFireball; +import org.bukkit.craftbukkit.v1_20_R4.CraftServer; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftEntity; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftLargeFireball; import net.citizensnpcs.api.npc.NPC; -import net.citizensnpcs.nms.v1_20_R3.entity.MobEntityController; -import net.citizensnpcs.nms.v1_20_R3.util.ForwardingNPCHolder; -import net.citizensnpcs.nms.v1_20_R3.util.NMSBoundingBox; -import net.citizensnpcs.nms.v1_20_R3.util.NMSImpl; +import net.citizensnpcs.nms.v1_20_R4.entity.MobEntityController; +import net.citizensnpcs.nms.v1_20_R4.util.ForwardingNPCHolder; +import net.citizensnpcs.nms.v1_20_R4.util.NMSBoundingBox; +import net.citizensnpcs.nms.v1_20_R4.util.NMSImpl; import net.citizensnpcs.npc.CitizensNPC; import net.citizensnpcs.npc.ai.NPCHolder; import net.citizensnpcs.util.Util; diff --git a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/nonliving/LeashController.java b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/nonliving/LeashController.java similarity index 89% rename from v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/nonliving/LeashController.java rename to v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/nonliving/LeashController.java index 71c1b030f..140bf84a0 100644 --- a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/nonliving/LeashController.java +++ b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/nonliving/LeashController.java @@ -1,16 +1,16 @@ -package net.citizensnpcs.nms.v1_20_R3.entity.nonliving; +package net.citizensnpcs.nms.v1_20_R4.entity.nonliving; import org.bukkit.Bukkit; -import org.bukkit.craftbukkit.v1_20_R3.CraftServer; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftEntity; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftLeash; +import org.bukkit.craftbukkit.v1_20_R4.CraftServer; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftEntity; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftLeash; import org.bukkit.entity.LeashHitch; import net.citizensnpcs.api.npc.NPC; -import net.citizensnpcs.nms.v1_20_R3.entity.MobEntityController; -import net.citizensnpcs.nms.v1_20_R3.util.ForwardingNPCHolder; -import net.citizensnpcs.nms.v1_20_R3.util.NMSBoundingBox; -import net.citizensnpcs.nms.v1_20_R3.util.NMSImpl; +import net.citizensnpcs.nms.v1_20_R4.entity.MobEntityController; +import net.citizensnpcs.nms.v1_20_R4.util.ForwardingNPCHolder; +import net.citizensnpcs.nms.v1_20_R4.util.NMSBoundingBox; +import net.citizensnpcs.nms.v1_20_R4.util.NMSImpl; import net.citizensnpcs.npc.CitizensNPC; import net.citizensnpcs.npc.ai.NPCHolder; import net.citizensnpcs.util.Util; diff --git a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/nonliving/LlamaSpitController.java b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/nonliving/LlamaSpitController.java similarity index 91% rename from v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/nonliving/LlamaSpitController.java rename to v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/nonliving/LlamaSpitController.java index c75bc4515..968dce2f3 100644 --- a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/nonliving/LlamaSpitController.java +++ b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/nonliving/LlamaSpitController.java @@ -1,16 +1,16 @@ -package net.citizensnpcs.nms.v1_20_R3.entity.nonliving; +package net.citizensnpcs.nms.v1_20_R4.entity.nonliving; import org.bukkit.Bukkit; import org.bukkit.Location; -import org.bukkit.craftbukkit.v1_20_R3.CraftServer; -import org.bukkit.craftbukkit.v1_20_R3.CraftWorld; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftEntity; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftLlamaSpit; +import org.bukkit.craftbukkit.v1_20_R4.CraftServer; +import org.bukkit.craftbukkit.v1_20_R4.CraftWorld; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftEntity; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftLlamaSpit; import net.citizensnpcs.api.npc.NPC; -import net.citizensnpcs.nms.v1_20_R3.util.ForwardingNPCHolder; -import net.citizensnpcs.nms.v1_20_R3.util.NMSBoundingBox; -import net.citizensnpcs.nms.v1_20_R3.util.NMSImpl; +import net.citizensnpcs.nms.v1_20_R4.util.ForwardingNPCHolder; +import net.citizensnpcs.nms.v1_20_R4.util.NMSBoundingBox; +import net.citizensnpcs.nms.v1_20_R4.util.NMSImpl; import net.citizensnpcs.npc.AbstractEntityController; import net.citizensnpcs.npc.CitizensNPC; import net.citizensnpcs.npc.ai.NPCHolder; diff --git a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/nonliving/MarkerController.java b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/nonliving/MarkerController.java similarity index 89% rename from v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/nonliving/MarkerController.java rename to v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/nonliving/MarkerController.java index 7ee195fe0..15a86d58b 100644 --- a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/nonliving/MarkerController.java +++ b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/nonliving/MarkerController.java @@ -1,15 +1,15 @@ -package net.citizensnpcs.nms.v1_20_R3.entity.nonliving; +package net.citizensnpcs.nms.v1_20_R4.entity.nonliving; import org.bukkit.Bukkit; -import org.bukkit.craftbukkit.v1_20_R3.CraftServer; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftEntity; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftMarker; +import org.bukkit.craftbukkit.v1_20_R4.CraftServer; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftEntity; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftMarker; import net.citizensnpcs.api.npc.NPC; -import net.citizensnpcs.nms.v1_20_R3.entity.MobEntityController; -import net.citizensnpcs.nms.v1_20_R3.util.ForwardingNPCHolder; -import net.citizensnpcs.nms.v1_20_R3.util.NMSBoundingBox; -import net.citizensnpcs.nms.v1_20_R3.util.NMSImpl; +import net.citizensnpcs.nms.v1_20_R4.entity.MobEntityController; +import net.citizensnpcs.nms.v1_20_R4.util.ForwardingNPCHolder; +import net.citizensnpcs.nms.v1_20_R4.util.NMSBoundingBox; +import net.citizensnpcs.nms.v1_20_R4.util.NMSImpl; import net.citizensnpcs.npc.CitizensNPC; import net.citizensnpcs.npc.ai.NPCHolder; import net.citizensnpcs.util.Util; diff --git a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/nonliving/MinecartChestController.java b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/nonliving/MinecartChestController.java similarity index 89% rename from v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/nonliving/MinecartChestController.java rename to v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/nonliving/MinecartChestController.java index 3a997075e..2a7c13ed2 100644 --- a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/nonliving/MinecartChestController.java +++ b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/nonliving/MinecartChestController.java @@ -1,16 +1,16 @@ -package net.citizensnpcs.nms.v1_20_R3.entity.nonliving; +package net.citizensnpcs.nms.v1_20_R4.entity.nonliving; import org.bukkit.Bukkit; -import org.bukkit.craftbukkit.v1_20_R3.CraftServer; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftEntity; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftMinecartChest; +import org.bukkit.craftbukkit.v1_20_R4.CraftServer; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftEntity; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftMinecartChest; import org.bukkit.entity.Minecart; import net.citizensnpcs.api.npc.NPC; -import net.citizensnpcs.nms.v1_20_R3.entity.MobEntityController; -import net.citizensnpcs.nms.v1_20_R3.util.ForwardingNPCHolder; -import net.citizensnpcs.nms.v1_20_R3.util.NMSBoundingBox; -import net.citizensnpcs.nms.v1_20_R3.util.NMSImpl; +import net.citizensnpcs.nms.v1_20_R4.entity.MobEntityController; +import net.citizensnpcs.nms.v1_20_R4.util.ForwardingNPCHolder; +import net.citizensnpcs.nms.v1_20_R4.util.NMSBoundingBox; +import net.citizensnpcs.nms.v1_20_R4.util.NMSImpl; import net.citizensnpcs.npc.CitizensNPC; import net.citizensnpcs.npc.ai.NPCHolder; import net.citizensnpcs.util.Util; diff --git a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/nonliving/MinecartCommandController.java b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/nonliving/MinecartCommandController.java similarity index 89% rename from v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/nonliving/MinecartCommandController.java rename to v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/nonliving/MinecartCommandController.java index eec912933..f65acb115 100644 --- a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/nonliving/MinecartCommandController.java +++ b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/nonliving/MinecartCommandController.java @@ -1,16 +1,16 @@ -package net.citizensnpcs.nms.v1_20_R3.entity.nonliving; +package net.citizensnpcs.nms.v1_20_R4.entity.nonliving; import org.bukkit.Bukkit; -import org.bukkit.craftbukkit.v1_20_R3.CraftServer; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftEntity; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftMinecartCommand; +import org.bukkit.craftbukkit.v1_20_R4.CraftServer; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftEntity; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftMinecartCommand; import org.bukkit.entity.Minecart; import net.citizensnpcs.api.npc.NPC; -import net.citizensnpcs.nms.v1_20_R3.entity.MobEntityController; -import net.citizensnpcs.nms.v1_20_R3.util.ForwardingNPCHolder; -import net.citizensnpcs.nms.v1_20_R3.util.NMSBoundingBox; -import net.citizensnpcs.nms.v1_20_R3.util.NMSImpl; +import net.citizensnpcs.nms.v1_20_R4.entity.MobEntityController; +import net.citizensnpcs.nms.v1_20_R4.util.ForwardingNPCHolder; +import net.citizensnpcs.nms.v1_20_R4.util.NMSBoundingBox; +import net.citizensnpcs.nms.v1_20_R4.util.NMSImpl; import net.citizensnpcs.npc.CitizensNPC; import net.citizensnpcs.npc.ai.NPCHolder; import net.citizensnpcs.util.Util; diff --git a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/nonliving/MinecartFurnaceController.java b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/nonliving/MinecartFurnaceController.java similarity index 89% rename from v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/nonliving/MinecartFurnaceController.java rename to v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/nonliving/MinecartFurnaceController.java index 869b20571..3257bf773 100644 --- a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/nonliving/MinecartFurnaceController.java +++ b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/nonliving/MinecartFurnaceController.java @@ -1,16 +1,16 @@ -package net.citizensnpcs.nms.v1_20_R3.entity.nonliving; +package net.citizensnpcs.nms.v1_20_R4.entity.nonliving; import org.bukkit.Bukkit; -import org.bukkit.craftbukkit.v1_20_R3.CraftServer; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftEntity; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftMinecartFurnace; +import org.bukkit.craftbukkit.v1_20_R4.CraftServer; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftEntity; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftMinecartFurnace; import org.bukkit.entity.Minecart; import net.citizensnpcs.api.npc.NPC; -import net.citizensnpcs.nms.v1_20_R3.entity.MobEntityController; -import net.citizensnpcs.nms.v1_20_R3.util.ForwardingNPCHolder; -import net.citizensnpcs.nms.v1_20_R3.util.NMSBoundingBox; -import net.citizensnpcs.nms.v1_20_R3.util.NMSImpl; +import net.citizensnpcs.nms.v1_20_R4.entity.MobEntityController; +import net.citizensnpcs.nms.v1_20_R4.util.ForwardingNPCHolder; +import net.citizensnpcs.nms.v1_20_R4.util.NMSBoundingBox; +import net.citizensnpcs.nms.v1_20_R4.util.NMSImpl; import net.citizensnpcs.npc.CitizensNPC; import net.citizensnpcs.npc.ai.NPCHolder; import net.citizensnpcs.util.Util; diff --git a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/nonliving/MinecartHopperController.java b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/nonliving/MinecartHopperController.java similarity index 93% rename from v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/nonliving/MinecartHopperController.java rename to v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/nonliving/MinecartHopperController.java index 41b128d14..68a9965c6 100644 --- a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/nonliving/MinecartHopperController.java +++ b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/nonliving/MinecartHopperController.java @@ -1,11 +1,11 @@ -package net.citizensnpcs.nms.v1_20_R3.entity.nonliving; +package net.citizensnpcs.nms.v1_20_R4.entity.nonliving; import org.bukkit.entity.Minecart; import net.citizensnpcs.api.npc.NPC; -import net.citizensnpcs.nms.v1_20_R3.entity.MobEntityController; -import net.citizensnpcs.nms.v1_20_R3.util.NMSBoundingBox; -import net.citizensnpcs.nms.v1_20_R3.util.NMSImpl; +import net.citizensnpcs.nms.v1_20_R4.entity.MobEntityController; +import net.citizensnpcs.nms.v1_20_R4.util.NMSBoundingBox; +import net.citizensnpcs.nms.v1_20_R4.util.NMSImpl; import net.citizensnpcs.npc.CitizensNPC; import net.citizensnpcs.npc.ai.NPCHolder; import net.citizensnpcs.util.Util; diff --git a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/nonliving/MinecartRideableController.java b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/nonliving/MinecartRideableController.java similarity index 89% rename from v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/nonliving/MinecartRideableController.java rename to v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/nonliving/MinecartRideableController.java index 7595ae777..f9acac6ac 100644 --- a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/nonliving/MinecartRideableController.java +++ b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/nonliving/MinecartRideableController.java @@ -1,15 +1,15 @@ -package net.citizensnpcs.nms.v1_20_R3.entity.nonliving; +package net.citizensnpcs.nms.v1_20_R4.entity.nonliving; import org.bukkit.Bukkit; -import org.bukkit.craftbukkit.v1_20_R3.CraftServer; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftEntity; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftMinecartRideable; +import org.bukkit.craftbukkit.v1_20_R4.CraftServer; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftEntity; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftMinecartRideable; import net.citizensnpcs.api.npc.NPC; -import net.citizensnpcs.nms.v1_20_R3.entity.MobEntityController; -import net.citizensnpcs.nms.v1_20_R3.util.ForwardingNPCHolder; -import net.citizensnpcs.nms.v1_20_R3.util.NMSBoundingBox; -import net.citizensnpcs.nms.v1_20_R3.util.NMSImpl; +import net.citizensnpcs.nms.v1_20_R4.entity.MobEntityController; +import net.citizensnpcs.nms.v1_20_R4.util.ForwardingNPCHolder; +import net.citizensnpcs.nms.v1_20_R4.util.NMSBoundingBox; +import net.citizensnpcs.nms.v1_20_R4.util.NMSImpl; import net.citizensnpcs.npc.CitizensNPC; import net.citizensnpcs.npc.ai.NPCHolder; import net.citizensnpcs.util.Util; diff --git a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/nonliving/MinecartSpawnerController.java b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/nonliving/MinecartSpawnerController.java similarity index 93% rename from v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/nonliving/MinecartSpawnerController.java rename to v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/nonliving/MinecartSpawnerController.java index ba9b9a34e..08986f8d6 100644 --- a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/nonliving/MinecartSpawnerController.java +++ b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/nonliving/MinecartSpawnerController.java @@ -1,11 +1,11 @@ -package net.citizensnpcs.nms.v1_20_R3.entity.nonliving; +package net.citizensnpcs.nms.v1_20_R4.entity.nonliving; import org.bukkit.entity.Minecart; import net.citizensnpcs.api.npc.NPC; -import net.citizensnpcs.nms.v1_20_R3.entity.MobEntityController; -import net.citizensnpcs.nms.v1_20_R3.util.NMSBoundingBox; -import net.citizensnpcs.nms.v1_20_R3.util.NMSImpl; +import net.citizensnpcs.nms.v1_20_R4.entity.MobEntityController; +import net.citizensnpcs.nms.v1_20_R4.util.NMSBoundingBox; +import net.citizensnpcs.nms.v1_20_R4.util.NMSImpl; import net.citizensnpcs.npc.CitizensNPC; import net.citizensnpcs.npc.ai.NPCHolder; import net.citizensnpcs.util.Util; diff --git a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/nonliving/MinecartTNTController.java b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/nonliving/MinecartTNTController.java similarity index 93% rename from v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/nonliving/MinecartTNTController.java rename to v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/nonliving/MinecartTNTController.java index 1f6f796c4..3fba9c6e7 100644 --- a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/nonliving/MinecartTNTController.java +++ b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/nonliving/MinecartTNTController.java @@ -1,11 +1,11 @@ -package net.citizensnpcs.nms.v1_20_R3.entity.nonliving; +package net.citizensnpcs.nms.v1_20_R4.entity.nonliving; import org.bukkit.entity.Minecart; import net.citizensnpcs.api.npc.NPC; -import net.citizensnpcs.nms.v1_20_R3.entity.MobEntityController; -import net.citizensnpcs.nms.v1_20_R3.util.NMSBoundingBox; -import net.citizensnpcs.nms.v1_20_R3.util.NMSImpl; +import net.citizensnpcs.nms.v1_20_R4.entity.MobEntityController; +import net.citizensnpcs.nms.v1_20_R4.util.NMSBoundingBox; +import net.citizensnpcs.nms.v1_20_R4.util.NMSImpl; import net.citizensnpcs.npc.CitizensNPC; import net.citizensnpcs.npc.ai.NPCHolder; import net.citizensnpcs.util.Util; diff --git a/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/nonliving/OminousItemSpawnerController.java b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/nonliving/OminousItemSpawnerController.java new file mode 100644 index 000000000..5740a3f5a --- /dev/null +++ b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/nonliving/OminousItemSpawnerController.java @@ -0,0 +1,149 @@ +package net.citizensnpcs.nms.v1_20_R4.entity.nonliving; + +import org.bukkit.Bukkit; +import org.bukkit.Location; +import org.bukkit.craftbukkit.v1_20_R4.CraftServer; +import org.bukkit.craftbukkit.v1_20_R4.CraftWorld; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftEntity; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftOminousItemSpawner; +import org.bukkit.craftbukkit.v1_20_R4.inventory.CraftItemStack; + +import net.citizensnpcs.api.npc.NPC; +import net.citizensnpcs.nms.v1_20_R4.entity.MobEntityController; +import net.citizensnpcs.nms.v1_20_R4.util.NMSBoundingBox; +import net.citizensnpcs.nms.v1_20_R4.util.NMSImpl; +import net.citizensnpcs.npc.CitizensNPC; +import net.citizensnpcs.npc.ai.NPCHolder; +import net.citizensnpcs.util.Util; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.tags.TagKey; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.OminousItemSpawner; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.material.Fluid; +import net.minecraft.world.level.material.PushReaction; +import net.minecraft.world.phys.AABB; +import net.minecraft.world.phys.Vec3; + +public class OminousItemSpawnerController extends MobEntityController { + public OminousItemSpawnerController() { + super(EntityOminousItemSpawnerNPC.class); + } + + @Override + protected org.bukkit.entity.Entity createEntity(Location at, NPC npc) { + final EntityOminousItemSpawnerNPC handle = new EntityOminousItemSpawnerNPC(EntityType.OMINOUS_ITEM_SPAWNER, + ((CraftWorld) at.getWorld()).getHandle(), npc); + if (npc != null) { + handle.setItem(CraftItemStack.asNMSCopy(npc.getItemProvider().get())); + } + return handle.getBukkitEntity(); + } + + @Override + public org.bukkit.entity.OminousItemSpawner getBukkitEntity() { + return (org.bukkit.entity.OminousItemSpawner) super.getBukkitEntity(); + } + + public static class EntityOminousItemSpawnerNPC extends OminousItemSpawner implements NPCHolder { + private final CitizensNPC npc; + + public EntityOminousItemSpawnerNPC(EntityType types, Level level) { + this(types, level, null); + } + + public EntityOminousItemSpawnerNPC(EntityType types, Level level, NPC npc) { + super(types, level); + this.npc = (CitizensNPC) npc; + } + + @Override + public CraftEntity getBukkitEntity() { + if (npc != null && !(super.getBukkitEntity() instanceof NPCHolder)) { + NMSImpl.setBukkitEntity(this, new OminousItemSpawnerNPC(this)); + } + return super.getBukkitEntity(); + } + + @Override + public NPC getNPC() { + return npc; + } + + @Override + public PushReaction getPistonPushReaction() { + return Util.callPistonPushEvent(npc) ? PushReaction.IGNORE : super.getPistonPushReaction(); + } + + @Override + public boolean isPushable() { + return npc == null ? super.isPushable() + : npc.data(). get(NPC.Metadata.COLLIDABLE, !npc.isProtected()); + } + + @Override + protected AABB makeBoundingBox() { + return NMSBoundingBox.makeBB(npc, super.makeBoundingBox()); + } + + @Override + public void push(Entity entity) { + // this method is called by both the entities involved - cancelling + // it will not stop the NPC from moving. + super.push(entity); + if (npc != null) { + Util.callCollisionEvent(npc, entity.getBukkitEntity()); + } + } + + @Override + public boolean save(CompoundTag save) { + return npc == null ? super.save(save) : false; + } + + @Override + public Entity teleportTo(ServerLevel worldserver, Vec3 location) { + if (npc == null) + return super.teleportTo(worldserver, location); + return NMSImpl.teleportAcrossWorld(this, worldserver, location); + } + + @Override + public void tick() { + if (npc != null) { + npc.update(); + } else { + super.tick(); + } + } + + @Override + public boolean updateFluidHeightAndDoFluidPushing(TagKey tagkey, double d0) { + if (npc == null) + return super.updateFluidHeightAndDoFluidPushing(tagkey, d0); + Vec3 old = getDeltaMovement().add(0, 0, 0); + boolean res = super.updateFluidHeightAndDoFluidPushing(tagkey, d0); + if (!npc.isPushableByFluids()) { + setDeltaMovement(old); + } + return res; + } + } + + public static class OminousItemSpawnerNPC extends CraftOminousItemSpawner implements NPCHolder { + private final CitizensNPC npc; + + public OminousItemSpawnerNPC(EntityOminousItemSpawnerNPC entity) { + super((CraftServer) Bukkit.getServer(), entity); + this.npc = entity.npc; + setItem(npc.getItemProvider().get()); + } + + @Override + public NPC getNPC() { + return npc; + } + } +} diff --git a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/nonliving/PaintingController.java b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/nonliving/PaintingController.java similarity index 89% rename from v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/nonliving/PaintingController.java rename to v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/nonliving/PaintingController.java index 739a2ca88..5f475330e 100644 --- a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/nonliving/PaintingController.java +++ b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/nonliving/PaintingController.java @@ -1,15 +1,15 @@ -package net.citizensnpcs.nms.v1_20_R3.entity.nonliving; +package net.citizensnpcs.nms.v1_20_R4.entity.nonliving; import org.bukkit.Bukkit; -import org.bukkit.craftbukkit.v1_20_R3.CraftServer; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftEntity; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftPainting; +import org.bukkit.craftbukkit.v1_20_R4.CraftServer; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftEntity; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftPainting; import net.citizensnpcs.api.npc.NPC; -import net.citizensnpcs.nms.v1_20_R3.entity.MobEntityController; -import net.citizensnpcs.nms.v1_20_R3.util.ForwardingNPCHolder; -import net.citizensnpcs.nms.v1_20_R3.util.NMSBoundingBox; -import net.citizensnpcs.nms.v1_20_R3.util.NMSImpl; +import net.citizensnpcs.nms.v1_20_R4.entity.MobEntityController; +import net.citizensnpcs.nms.v1_20_R4.util.ForwardingNPCHolder; +import net.citizensnpcs.nms.v1_20_R4.util.NMSBoundingBox; +import net.citizensnpcs.nms.v1_20_R4.util.NMSImpl; import net.citizensnpcs.npc.CitizensNPC; import net.citizensnpcs.npc.ai.NPCHolder; import net.citizensnpcs.util.Util; diff --git a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/nonliving/ShulkerBulletController.java b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/nonliving/ShulkerBulletController.java similarity index 89% rename from v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/nonliving/ShulkerBulletController.java rename to v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/nonliving/ShulkerBulletController.java index 878235c72..44e5d6691 100644 --- a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/nonliving/ShulkerBulletController.java +++ b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/nonliving/ShulkerBulletController.java @@ -1,15 +1,15 @@ -package net.citizensnpcs.nms.v1_20_R3.entity.nonliving; +package net.citizensnpcs.nms.v1_20_R4.entity.nonliving; import org.bukkit.Bukkit; -import org.bukkit.craftbukkit.v1_20_R3.CraftServer; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftEntity; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftShulkerBullet; +import org.bukkit.craftbukkit.v1_20_R4.CraftServer; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftEntity; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftShulkerBullet; import net.citizensnpcs.api.npc.NPC; -import net.citizensnpcs.nms.v1_20_R3.entity.MobEntityController; -import net.citizensnpcs.nms.v1_20_R3.util.ForwardingNPCHolder; -import net.citizensnpcs.nms.v1_20_R3.util.NMSBoundingBox; -import net.citizensnpcs.nms.v1_20_R3.util.NMSImpl; +import net.citizensnpcs.nms.v1_20_R4.entity.MobEntityController; +import net.citizensnpcs.nms.v1_20_R4.util.ForwardingNPCHolder; +import net.citizensnpcs.nms.v1_20_R4.util.NMSBoundingBox; +import net.citizensnpcs.nms.v1_20_R4.util.NMSImpl; import net.citizensnpcs.npc.CitizensNPC; import net.citizensnpcs.npc.ai.NPCHolder; import net.citizensnpcs.util.Util; diff --git a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/nonliving/SmallFireballController.java b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/nonliving/SmallFireballController.java similarity index 89% rename from v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/nonliving/SmallFireballController.java rename to v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/nonliving/SmallFireballController.java index 7330b72fc..434d167cb 100644 --- a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/nonliving/SmallFireballController.java +++ b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/nonliving/SmallFireballController.java @@ -1,15 +1,15 @@ -package net.citizensnpcs.nms.v1_20_R3.entity.nonliving; +package net.citizensnpcs.nms.v1_20_R4.entity.nonliving; import org.bukkit.Bukkit; -import org.bukkit.craftbukkit.v1_20_R3.CraftServer; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftEntity; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftSmallFireball; +import org.bukkit.craftbukkit.v1_20_R4.CraftServer; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftEntity; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftSmallFireball; import net.citizensnpcs.api.npc.NPC; -import net.citizensnpcs.nms.v1_20_R3.entity.MobEntityController; -import net.citizensnpcs.nms.v1_20_R3.util.ForwardingNPCHolder; -import net.citizensnpcs.nms.v1_20_R3.util.NMSBoundingBox; -import net.citizensnpcs.nms.v1_20_R3.util.NMSImpl; +import net.citizensnpcs.nms.v1_20_R4.entity.MobEntityController; +import net.citizensnpcs.nms.v1_20_R4.util.ForwardingNPCHolder; +import net.citizensnpcs.nms.v1_20_R4.util.NMSBoundingBox; +import net.citizensnpcs.nms.v1_20_R4.util.NMSImpl; import net.citizensnpcs.npc.CitizensNPC; import net.citizensnpcs.npc.ai.NPCHolder; import net.citizensnpcs.util.Util; diff --git a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/nonliving/SnowballController.java b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/nonliving/SnowballController.java similarity index 89% rename from v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/nonliving/SnowballController.java rename to v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/nonliving/SnowballController.java index 3fba8d21d..185dfa22c 100644 --- a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/nonliving/SnowballController.java +++ b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/nonliving/SnowballController.java @@ -1,15 +1,15 @@ -package net.citizensnpcs.nms.v1_20_R3.entity.nonliving; +package net.citizensnpcs.nms.v1_20_R4.entity.nonliving; import org.bukkit.Bukkit; -import org.bukkit.craftbukkit.v1_20_R3.CraftServer; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftEntity; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftSnowball; +import org.bukkit.craftbukkit.v1_20_R4.CraftServer; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftEntity; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftSnowball; import net.citizensnpcs.api.npc.NPC; -import net.citizensnpcs.nms.v1_20_R3.entity.MobEntityController; -import net.citizensnpcs.nms.v1_20_R3.util.ForwardingNPCHolder; -import net.citizensnpcs.nms.v1_20_R3.util.NMSBoundingBox; -import net.citizensnpcs.nms.v1_20_R3.util.NMSImpl; +import net.citizensnpcs.nms.v1_20_R4.entity.MobEntityController; +import net.citizensnpcs.nms.v1_20_R4.util.ForwardingNPCHolder; +import net.citizensnpcs.nms.v1_20_R4.util.NMSBoundingBox; +import net.citizensnpcs.nms.v1_20_R4.util.NMSImpl; import net.citizensnpcs.npc.CitizensNPC; import net.citizensnpcs.npc.ai.NPCHolder; import net.citizensnpcs.util.Util; diff --git a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/nonliving/SpectralArrowController.java b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/nonliving/SpectralArrowController.java similarity index 87% rename from v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/nonliving/SpectralArrowController.java rename to v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/nonliving/SpectralArrowController.java index 9ab6c26ca..c4afaf103 100644 --- a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/nonliving/SpectralArrowController.java +++ b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/nonliving/SpectralArrowController.java @@ -1,16 +1,16 @@ -package net.citizensnpcs.nms.v1_20_R3.entity.nonliving; +package net.citizensnpcs.nms.v1_20_R4.entity.nonliving; import org.bukkit.Bukkit; -import org.bukkit.craftbukkit.v1_20_R3.CraftServer; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftArrow; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftEntity; +import org.bukkit.craftbukkit.v1_20_R4.CraftServer; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftEntity; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftSpectralArrow; import org.bukkit.entity.Arrow; import net.citizensnpcs.api.npc.NPC; -import net.citizensnpcs.nms.v1_20_R3.entity.MobEntityController; -import net.citizensnpcs.nms.v1_20_R3.util.ForwardingNPCHolder; -import net.citizensnpcs.nms.v1_20_R3.util.NMSBoundingBox; -import net.citizensnpcs.nms.v1_20_R3.util.NMSImpl; +import net.citizensnpcs.nms.v1_20_R4.entity.MobEntityController; +import net.citizensnpcs.nms.v1_20_R4.util.ForwardingNPCHolder; +import net.citizensnpcs.nms.v1_20_R4.util.NMSBoundingBox; +import net.citizensnpcs.nms.v1_20_R4.util.NMSImpl; import net.citizensnpcs.npc.CitizensNPC; import net.citizensnpcs.npc.ai.NPCHolder; import net.citizensnpcs.util.Util; @@ -121,7 +121,7 @@ public class SpectralArrowController extends MobEntityController { } } - public static class SpectralArrowNPC extends CraftArrow implements ForwardingNPCHolder { + public static class SpectralArrowNPC extends CraftSpectralArrow implements ForwardingNPCHolder { public SpectralArrowNPC(EntitySpectralArrowNPC entity) { super((CraftServer) Bukkit.getServer(), entity); } diff --git a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/nonliving/TNTPrimedController.java b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/nonliving/TNTPrimedController.java similarity index 89% rename from v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/nonliving/TNTPrimedController.java rename to v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/nonliving/TNTPrimedController.java index 91b510d5e..30f72d45d 100644 --- a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/nonliving/TNTPrimedController.java +++ b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/nonliving/TNTPrimedController.java @@ -1,16 +1,16 @@ -package net.citizensnpcs.nms.v1_20_R3.entity.nonliving; +package net.citizensnpcs.nms.v1_20_R4.entity.nonliving; import org.bukkit.Bukkit; -import org.bukkit.craftbukkit.v1_20_R3.CraftServer; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftEntity; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftTNTPrimed; +import org.bukkit.craftbukkit.v1_20_R4.CraftServer; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftEntity; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftTNTPrimed; import org.bukkit.entity.TNTPrimed; import net.citizensnpcs.api.npc.NPC; -import net.citizensnpcs.nms.v1_20_R3.entity.MobEntityController; -import net.citizensnpcs.nms.v1_20_R3.util.ForwardingNPCHolder; -import net.citizensnpcs.nms.v1_20_R3.util.NMSBoundingBox; -import net.citizensnpcs.nms.v1_20_R3.util.NMSImpl; +import net.citizensnpcs.nms.v1_20_R4.entity.MobEntityController; +import net.citizensnpcs.nms.v1_20_R4.util.ForwardingNPCHolder; +import net.citizensnpcs.nms.v1_20_R4.util.NMSBoundingBox; +import net.citizensnpcs.nms.v1_20_R4.util.NMSImpl; import net.citizensnpcs.npc.CitizensNPC; import net.citizensnpcs.npc.ai.NPCHolder; import net.citizensnpcs.util.Util; diff --git a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/nonliving/TextDisplayController.java b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/nonliving/TextDisplayController.java similarity index 90% rename from v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/nonliving/TextDisplayController.java rename to v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/nonliving/TextDisplayController.java index 164e26eee..e3a6049c4 100644 --- a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/nonliving/TextDisplayController.java +++ b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/nonliving/TextDisplayController.java @@ -1,15 +1,15 @@ -package net.citizensnpcs.nms.v1_20_R3.entity.nonliving; +package net.citizensnpcs.nms.v1_20_R4.entity.nonliving; import org.bukkit.Bukkit; -import org.bukkit.craftbukkit.v1_20_R3.CraftServer; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftEntity; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftTextDisplay; +import org.bukkit.craftbukkit.v1_20_R4.CraftServer; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftEntity; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftTextDisplay; import net.citizensnpcs.api.npc.NPC; -import net.citizensnpcs.nms.v1_20_R3.entity.MobEntityController; -import net.citizensnpcs.nms.v1_20_R3.util.ForwardingNPCHolder; -import net.citizensnpcs.nms.v1_20_R3.util.NMSBoundingBox; -import net.citizensnpcs.nms.v1_20_R3.util.NMSImpl; +import net.citizensnpcs.nms.v1_20_R4.entity.MobEntityController; +import net.citizensnpcs.nms.v1_20_R4.util.ForwardingNPCHolder; +import net.citizensnpcs.nms.v1_20_R4.util.NMSBoundingBox; +import net.citizensnpcs.nms.v1_20_R4.util.NMSImpl; import net.citizensnpcs.npc.CitizensNPC; import net.citizensnpcs.npc.ai.NPCHolder; import net.citizensnpcs.util.Util; diff --git a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/nonliving/ThrownExpBottleController.java b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/nonliving/ThrownExpBottleController.java similarity index 90% rename from v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/nonliving/ThrownExpBottleController.java rename to v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/nonliving/ThrownExpBottleController.java index 3fbb12380..bb1abfa13 100644 --- a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/nonliving/ThrownExpBottleController.java +++ b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/nonliving/ThrownExpBottleController.java @@ -1,16 +1,16 @@ -package net.citizensnpcs.nms.v1_20_R3.entity.nonliving; +package net.citizensnpcs.nms.v1_20_R4.entity.nonliving; import org.bukkit.Bukkit; -import org.bukkit.craftbukkit.v1_20_R3.CraftServer; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftEntity; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftThrownExpBottle; +import org.bukkit.craftbukkit.v1_20_R4.CraftServer; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftEntity; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftThrownExpBottle; import org.bukkit.entity.ThrownExpBottle; import net.citizensnpcs.api.npc.NPC; -import net.citizensnpcs.nms.v1_20_R3.entity.MobEntityController; -import net.citizensnpcs.nms.v1_20_R3.util.ForwardingNPCHolder; -import net.citizensnpcs.nms.v1_20_R3.util.NMSBoundingBox; -import net.citizensnpcs.nms.v1_20_R3.util.NMSImpl; +import net.citizensnpcs.nms.v1_20_R4.entity.MobEntityController; +import net.citizensnpcs.nms.v1_20_R4.util.ForwardingNPCHolder; +import net.citizensnpcs.nms.v1_20_R4.util.NMSBoundingBox; +import net.citizensnpcs.nms.v1_20_R4.util.NMSImpl; import net.citizensnpcs.npc.CitizensNPC; import net.citizensnpcs.npc.ai.NPCHolder; import net.citizensnpcs.util.Util; diff --git a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/nonliving/ThrownPotionController.java b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/nonliving/ThrownPotionController.java similarity index 91% rename from v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/nonliving/ThrownPotionController.java rename to v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/nonliving/ThrownPotionController.java index 7c676074c..8f25e7af4 100644 --- a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/nonliving/ThrownPotionController.java +++ b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/nonliving/ThrownPotionController.java @@ -1,15 +1,15 @@ -package net.citizensnpcs.nms.v1_20_R3.entity.nonliving; +package net.citizensnpcs.nms.v1_20_R4.entity.nonliving; import org.bukkit.Bukkit; -import org.bukkit.craftbukkit.v1_20_R3.CraftServer; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftEntity; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftThrownPotion; +import org.bukkit.craftbukkit.v1_20_R4.CraftServer; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftEntity; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftThrownPotion; import net.citizensnpcs.api.npc.NPC; -import net.citizensnpcs.nms.v1_20_R3.entity.MobEntityController; -import net.citizensnpcs.nms.v1_20_R3.util.ForwardingNPCHolder; -import net.citizensnpcs.nms.v1_20_R3.util.NMSBoundingBox; -import net.citizensnpcs.nms.v1_20_R3.util.NMSImpl; +import net.citizensnpcs.nms.v1_20_R4.entity.MobEntityController; +import net.citizensnpcs.nms.v1_20_R4.util.ForwardingNPCHolder; +import net.citizensnpcs.nms.v1_20_R4.util.NMSBoundingBox; +import net.citizensnpcs.nms.v1_20_R4.util.NMSImpl; import net.citizensnpcs.npc.CitizensNPC; import net.citizensnpcs.npc.ai.NPCHolder; import net.citizensnpcs.util.Util; diff --git a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/nonliving/ThrownTridentController.java b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/nonliving/ThrownTridentController.java similarity index 89% rename from v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/nonliving/ThrownTridentController.java rename to v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/nonliving/ThrownTridentController.java index ea95144b9..58091aa5b 100644 --- a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/nonliving/ThrownTridentController.java +++ b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/nonliving/ThrownTridentController.java @@ -1,16 +1,16 @@ -package net.citizensnpcs.nms.v1_20_R3.entity.nonliving; +package net.citizensnpcs.nms.v1_20_R4.entity.nonliving; import org.bukkit.Bukkit; -import org.bukkit.craftbukkit.v1_20_R3.CraftServer; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftEntity; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftTrident; +import org.bukkit.craftbukkit.v1_20_R4.CraftServer; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftEntity; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftTrident; import org.bukkit.entity.Trident; import net.citizensnpcs.api.npc.NPC; -import net.citizensnpcs.nms.v1_20_R3.entity.MobEntityController; -import net.citizensnpcs.nms.v1_20_R3.util.ForwardingNPCHolder; -import net.citizensnpcs.nms.v1_20_R3.util.NMSBoundingBox; -import net.citizensnpcs.nms.v1_20_R3.util.NMSImpl; +import net.citizensnpcs.nms.v1_20_R4.entity.MobEntityController; +import net.citizensnpcs.nms.v1_20_R4.util.ForwardingNPCHolder; +import net.citizensnpcs.nms.v1_20_R4.util.NMSBoundingBox; +import net.citizensnpcs.nms.v1_20_R4.util.NMSImpl; import net.citizensnpcs.npc.CitizensNPC; import net.citizensnpcs.npc.ai.NPCHolder; import net.citizensnpcs.util.Util; diff --git a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/nonliving/TippedArrowController.java b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/nonliving/TippedArrowController.java similarity index 87% rename from v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/nonliving/TippedArrowController.java rename to v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/nonliving/TippedArrowController.java index 53e0069b2..1e8d34507 100644 --- a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/nonliving/TippedArrowController.java +++ b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/nonliving/TippedArrowController.java @@ -1,15 +1,15 @@ -package net.citizensnpcs.nms.v1_20_R3.entity.nonliving; +package net.citizensnpcs.nms.v1_20_R4.entity.nonliving; import org.bukkit.Bukkit; -import org.bukkit.craftbukkit.v1_20_R3.CraftServer; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftEntity; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftTippedArrow; +import org.bukkit.craftbukkit.v1_20_R4.CraftServer; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftArrow; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftEntity; import net.citizensnpcs.api.npc.NPC; -import net.citizensnpcs.nms.v1_20_R3.entity.MobEntityController; -import net.citizensnpcs.nms.v1_20_R3.util.ForwardingNPCHolder; -import net.citizensnpcs.nms.v1_20_R3.util.NMSBoundingBox; -import net.citizensnpcs.nms.v1_20_R3.util.NMSImpl; +import net.citizensnpcs.nms.v1_20_R4.entity.MobEntityController; +import net.citizensnpcs.nms.v1_20_R4.util.ForwardingNPCHolder; +import net.citizensnpcs.nms.v1_20_R4.util.NMSBoundingBox; +import net.citizensnpcs.nms.v1_20_R4.util.NMSImpl; import net.citizensnpcs.npc.CitizensNPC; import net.citizensnpcs.npc.ai.NPCHolder; import net.citizensnpcs.util.Util; @@ -120,7 +120,7 @@ public class TippedArrowController extends MobEntityController { } } - public static class TippedArrowNPC extends CraftTippedArrow implements ForwardingNPCHolder { + public static class TippedArrowNPC extends CraftArrow implements ForwardingNPCHolder { public TippedArrowNPC(EntityTippedArrowNPC entity) { super((CraftServer) Bukkit.getServer(), entity); } diff --git a/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/nonliving/WindChargeController.java b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/nonliving/WindChargeController.java new file mode 100644 index 000000000..d11f73c8c --- /dev/null +++ b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/nonliving/WindChargeController.java @@ -0,0 +1,128 @@ +package net.citizensnpcs.nms.v1_20_R4.entity.nonliving; + +import org.bukkit.Bukkit; +import org.bukkit.craftbukkit.v1_20_R4.CraftServer; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftEntity; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftWindCharge; + +import net.citizensnpcs.api.npc.NPC; +import net.citizensnpcs.nms.v1_20_R4.entity.MobEntityController; +import net.citizensnpcs.nms.v1_20_R4.util.ForwardingNPCHolder; +import net.citizensnpcs.nms.v1_20_R4.util.NMSBoundingBox; +import net.citizensnpcs.nms.v1_20_R4.util.NMSImpl; +import net.citizensnpcs.npc.CitizensNPC; +import net.citizensnpcs.npc.ai.NPCHolder; +import net.citizensnpcs.util.Util; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.tags.TagKey; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.projectile.windcharge.WindCharge; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.material.Fluid; +import net.minecraft.world.level.material.PushReaction; +import net.minecraft.world.phys.AABB; +import net.minecraft.world.phys.Vec3; + +public class WindChargeController extends MobEntityController { + public WindChargeController() { + super(EntityWindChargeNPC.class); + } + + @Override + public org.bukkit.entity.WindCharge getBukkitEntity() { + return (org.bukkit.entity.WindCharge) super.getBukkitEntity(); + } + + public static class EntityWindChargeNPC extends WindCharge implements NPCHolder { + private final CitizensNPC npc; + + public EntityWindChargeNPC(EntityType types, Level level) { + this(types, level, null); + } + + public EntityWindChargeNPC(EntityType types, Level level, NPC npc) { + super(types, level); + this.npc = (CitizensNPC) npc; + } + + @Override + public CraftEntity getBukkitEntity() { + if (npc != null && !(super.getBukkitEntity() instanceof NPCHolder)) { + NMSImpl.setBukkitEntity(this, new WindChargeNPC(this)); + } + return super.getBukkitEntity(); + } + + @Override + public NPC getNPC() { + return npc; + } + + @Override + public PushReaction getPistonPushReaction() { + return Util.callPistonPushEvent(npc) ? PushReaction.IGNORE : super.getPistonPushReaction(); + } + + @Override + public boolean isPushable() { + return npc == null ? super.isPushable() + : npc.data(). get(NPC.Metadata.COLLIDABLE, !npc.isProtected()); + } + + @Override + protected AABB makeBoundingBox() { + return NMSBoundingBox.makeBB(npc, super.makeBoundingBox()); + } + + @Override + public void push(Entity entity) { + // this method is called by both the entities involved - cancelling + // it will not stop the NPC from moving. + super.push(entity); + if (npc != null) { + Util.callCollisionEvent(npc, entity.getBukkitEntity()); + } + } + + @Override + public boolean save(CompoundTag save) { + return npc == null ? super.save(save) : false; + } + + @Override + public Entity teleportTo(ServerLevel worldserver, Vec3 location) { + if (npc == null) + return super.teleportTo(worldserver, location); + return NMSImpl.teleportAcrossWorld(this, worldserver, location); + } + + @Override + public void tick() { + if (npc != null) { + npc.update(); + } else { + super.tick(); + } + } + + @Override + public boolean updateFluidHeightAndDoFluidPushing(TagKey tagkey, double d0) { + if (npc == null) + return super.updateFluidHeightAndDoFluidPushing(tagkey, d0); + Vec3 old = getDeltaMovement().add(0, 0, 0); + boolean res = super.updateFluidHeightAndDoFluidPushing(tagkey, d0); + if (!npc.isPushableByFluids()) { + setDeltaMovement(old); + } + return res; + } + } + + public static class WindChargeNPC extends CraftWindCharge implements ForwardingNPCHolder { + public WindChargeNPC(EntityWindChargeNPC entity) { + super((CraftServer) Bukkit.getServer(), entity); + } + } +} diff --git a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/nonliving/WitherSkullController.java b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/nonliving/WitherSkullController.java similarity index 89% rename from v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/nonliving/WitherSkullController.java rename to v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/nonliving/WitherSkullController.java index 6df8b6c15..5ac6ea326 100644 --- a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/entity/nonliving/WitherSkullController.java +++ b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/entity/nonliving/WitherSkullController.java @@ -1,15 +1,15 @@ -package net.citizensnpcs.nms.v1_20_R3.entity.nonliving; +package net.citizensnpcs.nms.v1_20_R4.entity.nonliving; import org.bukkit.Bukkit; -import org.bukkit.craftbukkit.v1_20_R3.CraftServer; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftEntity; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftWitherSkull; +import org.bukkit.craftbukkit.v1_20_R4.CraftServer; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftEntity; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftWitherSkull; import net.citizensnpcs.api.npc.NPC; -import net.citizensnpcs.nms.v1_20_R3.entity.MobEntityController; -import net.citizensnpcs.nms.v1_20_R3.util.ForwardingNPCHolder; -import net.citizensnpcs.nms.v1_20_R3.util.NMSBoundingBox; -import net.citizensnpcs.nms.v1_20_R3.util.NMSImpl; +import net.citizensnpcs.nms.v1_20_R4.entity.MobEntityController; +import net.citizensnpcs.nms.v1_20_R4.util.ForwardingNPCHolder; +import net.citizensnpcs.nms.v1_20_R4.util.NMSBoundingBox; +import net.citizensnpcs.nms.v1_20_R4.util.NMSImpl; import net.citizensnpcs.npc.CitizensNPC; import net.citizensnpcs.npc.ai.NPCHolder; import net.citizensnpcs.util.Util; diff --git a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/network/EmptyConnection.java b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/network/EmptyConnection.java similarity index 88% rename from v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/network/EmptyConnection.java rename to v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/network/EmptyConnection.java index 6bd650ba4..80fd0c65c 100644 --- a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/network/EmptyConnection.java +++ b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/network/EmptyConnection.java @@ -1,9 +1,9 @@ -package net.citizensnpcs.nms.v1_20_R3.network; +package net.citizensnpcs.nms.v1_20_R4.network; import java.io.IOException; import java.net.SocketAddress; -import net.citizensnpcs.nms.v1_20_R3.util.NMSImpl; +import net.citizensnpcs.nms.v1_20_R4.util.NMSImpl; import net.citizensnpcs.util.EmptyChannel; import net.minecraft.network.Connection; import net.minecraft.network.PacketListener; @@ -42,7 +42,7 @@ public class EmptyConnection extends Connection { } @Override - public void setListener(PacketListener pl) { + public void setListenerForServerboundHandshake(PacketListener pl) { try { NMSImpl.CONNECTION_PACKET_LISTENER.invoke(this, pl); NMSImpl.CONNECTION_DISCONNECT_LISTENER.invoke(this, null); diff --git a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/network/EmptyPacketListener.java b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/network/EmptyPacketListener.java similarity index 93% rename from v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/network/EmptyPacketListener.java rename to v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/network/EmptyPacketListener.java index 2ef4f99ff..679657d8b 100644 --- a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/network/EmptyPacketListener.java +++ b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/network/EmptyPacketListener.java @@ -1,4 +1,4 @@ -package net.citizensnpcs.nms.v1_20_R3.network; +package net.citizensnpcs.nms.v1_20_R4.network; import net.minecraft.network.Connection; import net.minecraft.network.protocol.Packet; diff --git a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/util/CitizensBlockBreaker.java b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/util/CitizensBlockBreaker.java similarity index 97% rename from v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/util/CitizensBlockBreaker.java rename to v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/util/CitizensBlockBreaker.java index b2b979c55..cb5b06b92 100644 --- a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/util/CitizensBlockBreaker.java +++ b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/util/CitizensBlockBreaker.java @@ -1,6 +1,6 @@ -package net.citizensnpcs.nms.v1_20_R3.util; +package net.citizensnpcs.nms.v1_20_R4.util; -import org.bukkit.craftbukkit.v1_20_R3.inventory.CraftItemStack; +import org.bukkit.craftbukkit.v1_20_R4.inventory.CraftItemStack; import net.citizensnpcs.util.AbstractBlockBreaker; import net.minecraft.core.BlockPos; diff --git a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/util/CitizensEntityTracker.java b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/util/CitizensEntityTracker.java similarity index 98% rename from v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/util/CitizensEntityTracker.java rename to v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/util/CitizensEntityTracker.java index 8449a99cd..9faafe988 100644 --- a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/util/CitizensEntityTracker.java +++ b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/util/CitizensEntityTracker.java @@ -1,4 +1,4 @@ -package net.citizensnpcs.nms.v1_20_R3.util; +package net.citizensnpcs.nms.v1_20_R4.util; import java.lang.invoke.MethodHandle; import java.util.Collection; @@ -13,7 +13,7 @@ import net.citizensnpcs.api.event.NPCLinkToPlayerEvent; import net.citizensnpcs.api.event.NPCSeenByPlayerEvent; import net.citizensnpcs.api.event.NPCUnlinkFromPlayerEvent; import net.citizensnpcs.api.npc.NPC; -import net.citizensnpcs.nms.v1_20_R3.entity.EntityHumanNPC; +import net.citizensnpcs.nms.v1_20_R4.entity.EntityHumanNPC; import net.citizensnpcs.npc.ai.NPCHolder; import net.citizensnpcs.util.NMS; import net.citizensnpcs.util.Util; diff --git a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/util/CustomEntityRegistry.java b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/util/CustomEntityRegistry.java similarity index 95% rename from v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/util/CustomEntityRegistry.java rename to v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/util/CustomEntityRegistry.java index 5a9d5cc71..cddac7ead 100644 --- a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/util/CustomEntityRegistry.java +++ b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/util/CustomEntityRegistry.java @@ -1,4 +1,4 @@ -package net.citizensnpcs.nms.v1_20_R3.util; +package net.citizensnpcs.nms.v1_20_R4.util; import java.lang.invoke.MethodHandle; import java.util.Iterator; @@ -36,8 +36,10 @@ import net.minecraft.world.entity.Display; import net.minecraft.world.entity.EntityType; import net.minecraft.world.entity.ExperienceOrb; import net.minecraft.world.entity.GlowSquid; +import net.minecraft.world.entity.Interaction; import net.minecraft.world.entity.LightningBolt; import net.minecraft.world.entity.Marker; +import net.minecraft.world.entity.OminousItemSpawner; import net.minecraft.world.entity.ambient.Bat; import net.minecraft.world.entity.animal.Bee; import net.minecraft.world.entity.animal.Cat; @@ -63,6 +65,7 @@ import net.minecraft.world.entity.animal.TropicalFish; import net.minecraft.world.entity.animal.Turtle; import net.minecraft.world.entity.animal.Wolf; import net.minecraft.world.entity.animal.allay.Allay; +import net.minecraft.world.entity.animal.armadillo.Armadillo; import net.minecraft.world.entity.animal.axolotl.Axolotl; import net.minecraft.world.entity.animal.camel.Camel; import net.minecraft.world.entity.animal.frog.Frog; @@ -88,6 +91,7 @@ import net.minecraft.world.entity.item.FallingBlockEntity; import net.minecraft.world.entity.item.ItemEntity; import net.minecraft.world.entity.item.PrimedTnt; import net.minecraft.world.entity.monster.Blaze; +import net.minecraft.world.entity.monster.Bogged; import net.minecraft.world.entity.monster.CaveSpider; import net.minecraft.world.entity.monster.Creeper; import net.minecraft.world.entity.monster.Drowned; @@ -119,6 +123,7 @@ import net.minecraft.world.entity.monster.Zoglin; import net.minecraft.world.entity.monster.Zombie; import net.minecraft.world.entity.monster.ZombieVillager; import net.minecraft.world.entity.monster.ZombifiedPiglin; +import net.minecraft.world.entity.monster.breeze.Breeze; import net.minecraft.world.entity.monster.hoglin.Hoglin; import net.minecraft.world.entity.monster.piglin.Piglin; import net.minecraft.world.entity.monster.piglin.PiglinBrute; @@ -143,6 +148,8 @@ import net.minecraft.world.entity.projectile.ThrownExperienceBottle; import net.minecraft.world.entity.projectile.ThrownPotion; import net.minecraft.world.entity.projectile.ThrownTrident; import net.minecraft.world.entity.projectile.WitherSkull; +import net.minecraft.world.entity.projectile.windcharge.BreezeWindCharge; +import net.minecraft.world.entity.projectile.windcharge.WindCharge; import net.minecraft.world.entity.vehicle.Boat; import net.minecraft.world.entity.vehicle.ChestBoat; import net.minecraft.world.entity.vehicle.Minecart; @@ -315,11 +322,6 @@ public class CustomEntityRegistry extends DefaultedMappedRegistry> return wrapped.keySet(); } - @Override - public Lifecycle lifecycle(EntityType type) { - return wrapped.lifecycle(type); - } - public void put(int entityId, ResourceLocation key, EntityType entityClass) { entities.put(key, entityClass); entityIds.put(entityClass, entityId); @@ -341,45 +343,56 @@ public class CustomEntityRegistry extends DefaultedMappedRegistry> } private static final MethodHandle IREGISTRY_LIFECYCLE = NMS.getFirstGetter(MappedRegistry.class, Lifecycle.class); - // replace regex .*?> ([A-Z_]+).*?of\((.*?)::new.*?$ minecraftClassMap.put(EntityType.\1, \2.class); + // replace regex ([A-Z_]+) =.*?of\((.*?)::new.*?$ minecraftClassMap.put(EntityType.\1, \2.class); private static final MethodHandle IREGISTRY_RESOURCE_KEY = NMS.getFirstGetter(MappedRegistry.class, ResourceKey.class); private static final BiMap> minecraftClassMap = HashBiMap.create(); static { minecraftClassMap.put(EntityType.ALLAY, Allay.class); minecraftClassMap.put(EntityType.AREA_EFFECT_CLOUD, AreaEffectCloud.class); + minecraftClassMap.put(EntityType.ARMADILLO, Armadillo.class); minecraftClassMap.put(EntityType.ARMOR_STAND, ArmorStand.class); minecraftClassMap.put(EntityType.ARROW, Arrow.class); minecraftClassMap.put(EntityType.AXOLOTL, Axolotl.class); minecraftClassMap.put(EntityType.BAT, Bat.class); minecraftClassMap.put(EntityType.BEE, Bee.class); minecraftClassMap.put(EntityType.BLAZE, Blaze.class); + minecraftClassMap.put(EntityType.BLOCK_DISPLAY, Display.BlockDisplay.class); minecraftClassMap.put(EntityType.BOAT, Boat.class); - minecraftClassMap.put(EntityType.CHEST_BOAT, ChestBoat.class); - minecraftClassMap.put(EntityType.CAT, Cat.class); + minecraftClassMap.put(EntityType.BOGGED, Bogged.class); + minecraftClassMap.put(EntityType.BREEZE, Breeze.class); + minecraftClassMap.put(EntityType.BREEZE_WIND_CHARGE, BreezeWindCharge.class); minecraftClassMap.put(EntityType.CAMEL, Camel.class); + minecraftClassMap.put(EntityType.CAT, Cat.class); minecraftClassMap.put(EntityType.CAVE_SPIDER, CaveSpider.class); + minecraftClassMap.put(EntityType.CHEST_BOAT, ChestBoat.class); + minecraftClassMap.put(EntityType.CHEST_MINECART, MinecartChest.class); minecraftClassMap.put(EntityType.CHICKEN, Chicken.class); minecraftClassMap.put(EntityType.COD, Cod.class); + minecraftClassMap.put(EntityType.COMMAND_BLOCK_MINECART, MinecartCommandBlock.class); minecraftClassMap.put(EntityType.COW, Cow.class); minecraftClassMap.put(EntityType.CREEPER, Creeper.class); minecraftClassMap.put(EntityType.DOLPHIN, Dolphin.class); minecraftClassMap.put(EntityType.DONKEY, Donkey.class); minecraftClassMap.put(EntityType.DRAGON_FIREBALL, DragonFireball.class); minecraftClassMap.put(EntityType.DROWNED, Drowned.class); + minecraftClassMap.put(EntityType.EGG, ThrownEgg.class); minecraftClassMap.put(EntityType.ELDER_GUARDIAN, ElderGuardian.class); minecraftClassMap.put(EntityType.END_CRYSTAL, EndCrystal.class); minecraftClassMap.put(EntityType.ENDER_DRAGON, EnderDragon.class); + minecraftClassMap.put(EntityType.ENDER_PEARL, ThrownEnderpearl.class); minecraftClassMap.put(EntityType.ENDERMAN, EnderMan.class); minecraftClassMap.put(EntityType.ENDERMITE, Endermite.class); minecraftClassMap.put(EntityType.EVOKER, Evoker.class); minecraftClassMap.put(EntityType.EVOKER_FANGS, EvokerFangs.class); + minecraftClassMap.put(EntityType.EXPERIENCE_BOTTLE, ThrownExperienceBottle.class); minecraftClassMap.put(EntityType.EXPERIENCE_ORB, ExperienceOrb.class); minecraftClassMap.put(EntityType.EYE_OF_ENDER, EyeOfEnder.class); minecraftClassMap.put(EntityType.FALLING_BLOCK, FallingBlockEntity.class); minecraftClassMap.put(EntityType.FIREWORK_ROCKET, FireworkRocketEntity.class); minecraftClassMap.put(EntityType.FOX, Fox.class); minecraftClassMap.put(EntityType.FROG, Frog.class); + minecraftClassMap.put(EntityType.FURNACE_MINECART, MinecartFurnace.class); minecraftClassMap.put(EntityType.GHAST, Ghast.class); minecraftClassMap.put(EntityType.GIANT, Giant.class); minecraftClassMap.put(EntityType.GLOW_ITEM_FRAME, GlowItemFrame.class); @@ -387,12 +400,16 @@ public class CustomEntityRegistry extends DefaultedMappedRegistry> minecraftClassMap.put(EntityType.GOAT, Goat.class); minecraftClassMap.put(EntityType.GUARDIAN, Guardian.class); minecraftClassMap.put(EntityType.HOGLIN, Hoglin.class); + minecraftClassMap.put(EntityType.HOPPER_MINECART, MinecartHopper.class); minecraftClassMap.put(EntityType.HORSE, Horse.class); minecraftClassMap.put(EntityType.HUSK, Husk.class); minecraftClassMap.put(EntityType.ILLUSIONER, Illusioner.class); + minecraftClassMap.put(EntityType.INTERACTION, Interaction.class); minecraftClassMap.put(EntityType.IRON_GOLEM, IronGolem.class); minecraftClassMap.put(EntityType.ITEM, ItemEntity.class); + minecraftClassMap.put(EntityType.ITEM_DISPLAY, Display.ItemDisplay.class); minecraftClassMap.put(EntityType.ITEM_FRAME, ItemFrame.class); + minecraftClassMap.put(EntityType.OMINOUS_ITEM_SPAWNER, OminousItemSpawner.class); minecraftClassMap.put(EntityType.FIREBALL, LargeFireball.class); minecraftClassMap.put(EntityType.LEASH_KNOT, LeashFenceKnotEntity.class); minecraftClassMap.put(EntityType.LIGHTNING_BOLT, LightningBolt.class); @@ -401,14 +418,8 @@ public class CustomEntityRegistry extends DefaultedMappedRegistry> minecraftClassMap.put(EntityType.MAGMA_CUBE, MagmaCube.class); minecraftClassMap.put(EntityType.MARKER, Marker.class); minecraftClassMap.put(EntityType.MINECART, Minecart.class); - minecraftClassMap.put(EntityType.CHEST_MINECART, MinecartChest.class); - minecraftClassMap.put(EntityType.COMMAND_BLOCK_MINECART, MinecartCommandBlock.class); - minecraftClassMap.put(EntityType.FURNACE_MINECART, MinecartFurnace.class); - minecraftClassMap.put(EntityType.HOPPER_MINECART, MinecartHopper.class); - minecraftClassMap.put(EntityType.SPAWNER_MINECART, MinecartSpawner.class); - minecraftClassMap.put(EntityType.TNT_MINECART, MinecartTNT.class); - minecraftClassMap.put(EntityType.MULE, Mule.class); minecraftClassMap.put(EntityType.MOOSHROOM, MushroomCow.class); + minecraftClassMap.put(EntityType.MULE, Mule.class); minecraftClassMap.put(EntityType.OCELOT, Ocelot.class); minecraftClassMap.put(EntityType.PAINTING, Painting.class); minecraftClassMap.put(EntityType.PANDA, Panda.class); @@ -419,7 +430,7 @@ public class CustomEntityRegistry extends DefaultedMappedRegistry> minecraftClassMap.put(EntityType.PIGLIN_BRUTE, PiglinBrute.class); minecraftClassMap.put(EntityType.PILLAGER, Pillager.class); minecraftClassMap.put(EntityType.POLAR_BEAR, PolarBear.class); - minecraftClassMap.put(EntityType.TNT, PrimedTnt.class); + minecraftClassMap.put(EntityType.POTION, ThrownPotion.class); minecraftClassMap.put(EntityType.PUFFERFISH, Pufferfish.class); minecraftClassMap.put(EntityType.RABBIT, Rabbit.class); minecraftClassMap.put(EntityType.RAVAGER, Ravager.class); @@ -427,30 +438,26 @@ public class CustomEntityRegistry extends DefaultedMappedRegistry> minecraftClassMap.put(EntityType.SHEEP, Sheep.class); minecraftClassMap.put(EntityType.SHULKER, Shulker.class); minecraftClassMap.put(EntityType.SHULKER_BULLET, ShulkerBullet.class); - minecraftClassMap.put(EntityType.SNIFFER, Sniffer.class); - minecraftClassMap.put(EntityType.BLOCK_DISPLAY, Display.BlockDisplay.class); - minecraftClassMap.put(EntityType.ITEM_DISPLAY, Display.ItemDisplay.class); - minecraftClassMap.put(EntityType.TEXT_DISPLAY, Display.TextDisplay.class); - minecraftClassMap.put(EntityType.INTERACTION, net.minecraft.world.entity.Interaction.class); minecraftClassMap.put(EntityType.SILVERFISH, Silverfish.class); minecraftClassMap.put(EntityType.SKELETON, Skeleton.class); minecraftClassMap.put(EntityType.SKELETON_HORSE, SkeletonHorse.class); minecraftClassMap.put(EntityType.SLIME, Slime.class); minecraftClassMap.put(EntityType.SMALL_FIREBALL, SmallFireball.class); + minecraftClassMap.put(EntityType.SNIFFER, Sniffer.class); minecraftClassMap.put(EntityType.SNOW_GOLEM, SnowGolem.class); minecraftClassMap.put(EntityType.SNOWBALL, Snowball.class); + minecraftClassMap.put(EntityType.SPAWNER_MINECART, MinecartSpawner.class); minecraftClassMap.put(EntityType.SPECTRAL_ARROW, SpectralArrow.class); minecraftClassMap.put(EntityType.SPIDER, Spider.class); minecraftClassMap.put(EntityType.SQUID, Squid.class); minecraftClassMap.put(EntityType.STRAY, Stray.class); minecraftClassMap.put(EntityType.STRIDER, Strider.class); minecraftClassMap.put(EntityType.TADPOLE, Tadpole.class); - minecraftClassMap.put(EntityType.EGG, ThrownEgg.class); - minecraftClassMap.put(EntityType.ENDER_PEARL, ThrownEnderpearl.class); - minecraftClassMap.put(EntityType.EXPERIENCE_BOTTLE, ThrownExperienceBottle.class); - minecraftClassMap.put(EntityType.POTION, ThrownPotion.class); - minecraftClassMap.put(EntityType.TRIDENT, ThrownTrident.class); + minecraftClassMap.put(EntityType.TEXT_DISPLAY, Display.TextDisplay.class); + minecraftClassMap.put(EntityType.TNT, PrimedTnt.class); + minecraftClassMap.put(EntityType.TNT_MINECART, MinecartTNT.class); minecraftClassMap.put(EntityType.TRADER_LLAMA, TraderLlama.class); + minecraftClassMap.put(EntityType.TRIDENT, ThrownTrident.class); minecraftClassMap.put(EntityType.TROPICAL_FISH, TropicalFish.class); minecraftClassMap.put(EntityType.TURTLE, Turtle.class); minecraftClassMap.put(EntityType.VEX, Vex.class); @@ -458,6 +465,7 @@ public class CustomEntityRegistry extends DefaultedMappedRegistry> minecraftClassMap.put(EntityType.VINDICATOR, Vindicator.class); minecraftClassMap.put(EntityType.WANDERING_TRADER, WanderingTrader.class); minecraftClassMap.put(EntityType.WARDEN, Warden.class); + minecraftClassMap.put(EntityType.WIND_CHARGE, WindCharge.class); minecraftClassMap.put(EntityType.WITCH, Witch.class); minecraftClassMap.put(EntityType.WITHER, WitherBoss.class); minecraftClassMap.put(EntityType.WITHER_SKELETON, WitherSkeleton.class); diff --git a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/util/EmptyAdvancementDataPlayer.java b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/util/EmptyAdvancementDataPlayer.java similarity index 98% rename from v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/util/EmptyAdvancementDataPlayer.java rename to v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/util/EmptyAdvancementDataPlayer.java index 27341c42e..1c7a9ba93 100644 --- a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/util/EmptyAdvancementDataPlayer.java +++ b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/util/EmptyAdvancementDataPlayer.java @@ -1,4 +1,4 @@ -package net.citizensnpcs.nms.v1_20_R3.util; +package net.citizensnpcs.nms.v1_20_R4.util; import java.io.File; import java.lang.invoke.MethodHandle; diff --git a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/util/EmptyServerStatsCounter.java b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/util/EmptyServerStatsCounter.java similarity index 95% rename from v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/util/EmptyServerStatsCounter.java rename to v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/util/EmptyServerStatsCounter.java index 5d26c0776..b2610bf90 100644 --- a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/util/EmptyServerStatsCounter.java +++ b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/util/EmptyServerStatsCounter.java @@ -1,4 +1,4 @@ -package net.citizensnpcs.nms.v1_20_R3.util; +package net.citizensnpcs.nms.v1_20_R4.util; import com.mojang.datafixers.DataFixer; diff --git a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/util/EntityJumpControl.java b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/util/EntityJumpControl.java similarity index 93% rename from v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/util/EntityJumpControl.java rename to v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/util/EntityJumpControl.java index e99ad0fd6..8ef8f161a 100644 --- a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/util/EntityJumpControl.java +++ b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/util/EntityJumpControl.java @@ -1,4 +1,4 @@ -package net.citizensnpcs.nms.v1_20_R3.util; +package net.citizensnpcs.nms.v1_20_R4.util; import net.minecraft.world.entity.EntityType; import net.minecraft.world.entity.LivingEntity; diff --git a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/util/EntityMoveControl.java b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/util/EntityMoveControl.java similarity index 98% rename from v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/util/EntityMoveControl.java rename to v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/util/EntityMoveControl.java index f78c338cf..9c1689bf4 100644 --- a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/util/EntityMoveControl.java +++ b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/util/EntityMoveControl.java @@ -1,4 +1,4 @@ -package net.citizensnpcs.nms.v1_20_R3.util; +package net.citizensnpcs.nms.v1_20_R4.util; import java.util.Random; diff --git a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/util/EntityNavigation.java b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/util/EntityNavigation.java similarity index 97% rename from v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/util/EntityNavigation.java rename to v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/util/EntityNavigation.java index c9d6e9a9b..cc29ca3db 100644 --- a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/util/EntityNavigation.java +++ b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/util/EntityNavigation.java @@ -1,4 +1,4 @@ -package net.citizensnpcs.nms.v1_20_R3.util; +package net.citizensnpcs.nms.v1_20_R4.util; import java.util.Set; import java.util.stream.Collectors; @@ -24,11 +24,11 @@ import net.minecraft.world.level.PathNavigationRegion; import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.chunk.LevelChunk; -import net.minecraft.world.level.pathfinder.BlockPathTypes; import net.minecraft.world.level.pathfinder.Node; import net.minecraft.world.level.pathfinder.NodeEvaluator; import net.minecraft.world.level.pathfinder.Path; import net.minecraft.world.level.pathfinder.PathFinder; +import net.minecraft.world.level.pathfinder.PathType; import net.minecraft.world.level.pathfinder.WalkNodeEvaluator; import net.minecraft.world.phys.Vec3; @@ -67,9 +67,9 @@ public class EntityNavigation extends PathNavigation { } @Override - public boolean canCutCorner(BlockPathTypes pathtype) { - return pathtype != BlockPathTypes.DANGER_FIRE && pathtype != BlockPathTypes.DANGER_POWDER_SNOW - && pathtype != BlockPathTypes.DANGER_OTHER && pathtype != BlockPathTypes.WALKABLE_DOOR; + public boolean canCutCorner(PathType pathtype) { + return pathtype != PathType.DANGER_FIRE && pathtype != PathType.DANGER_POWDER_SNOW + && pathtype != PathType.DANGER_OTHER && pathtype != PathType.WALKABLE_DOOR; } @Override @@ -325,13 +325,13 @@ public class EntityNavigation extends PathNavigation { return new Vec3(this.mob.getX(), getSurfaceY(), this.mob.getZ()); } - protected boolean hasValidPathType(BlockPathTypes var0) { - if (var0 == BlockPathTypes.WATER) { + protected boolean hasValidPathType(PathType var0) { + if (var0 == PathType.WATER) { return false; - } else if (var0 == BlockPathTypes.LAVA) { + } else if (var0 == PathType.LAVA) { return false; } else { - return var0 != BlockPathTypes.OPEN; + return var0 != PathType.OPEN; } } diff --git a/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/util/EntityNodeEvaluator.java b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/util/EntityNodeEvaluator.java new file mode 100644 index 000000000..112e9ecf8 --- /dev/null +++ b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/util/EntityNodeEvaluator.java @@ -0,0 +1,520 @@ +package net.citizensnpcs.nms.v1_20_R4.util; + +import java.util.EnumSet; +import java.util.Iterator; +import java.util.Set; + +import it.unimi.dsi.fastutil.longs.Long2ObjectMap; +import it.unimi.dsi.fastutil.longs.Long2ObjectOpenHashMap; +import it.unimi.dsi.fastutil.objects.Object2BooleanMap; +import it.unimi.dsi.fastutil.objects.Object2BooleanOpenHashMap; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.core.Direction.Axis; +import net.minecraft.core.Direction.Plane; +import net.minecraft.tags.FluidTags; +import net.minecraft.util.Mth; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.Mob; +import net.minecraft.world.level.BlockGetter; +import net.minecraft.world.level.PathNavigationRegion; +import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.material.Fluids; +import net.minecraft.world.level.pathfinder.Node; +import net.minecraft.world.level.pathfinder.PathComputationType; +import net.minecraft.world.level.pathfinder.PathType; +import net.minecraft.world.level.pathfinder.PathfindingContext; +import net.minecraft.world.level.pathfinder.Target; +import net.minecraft.world.phys.AABB; +import net.minecraft.world.phys.Vec3; +import net.minecraft.world.phys.shapes.VoxelShape; + +public class EntityNodeEvaluator extends EntityNodeEvaluatorBase { + private final Object2BooleanMap collisionCache = new Object2BooleanOpenHashMap(); + protected float oldWaterCost; + private final Long2ObjectMap pathTypesByPosCacheByMob = new Long2ObjectOpenHashMap(); + private final Node[] reusableNeighbors = new Node[Plane.HORIZONTAL.length()]; + + private boolean canReachWithoutCollision(Node var0) { + AABB var1 = this.mob.getBoundingBox(); + Vec3 var2 = new Vec3(var0.x - this.mob.getX() + var1.getXsize() / 2.0, + var0.y - this.mob.getY() + var1.getYsize() / 2.0, var0.z - this.mob.getZ() + var1.getZsize() / 2.0); + int var3 = Mth.ceil(var2.length() / var1.getSize()); + var2 = var2.scale(1.0F / var3); + + for (int var4 = 1; var4 <= var3; ++var4) { + var1 = var1.move(var2); + if (this.hasCollisions(var1)) { + return false; + } + } + return true; + } + + protected boolean canStartAt(BlockPos var0) { + PathType var1 = this.getCachedPathType(var0.getX(), var0.getY(), var0.getZ()); + return var1 != PathType.OPEN && this.mvmt.getPathfindingMalus(var1) >= 0.0F; + } + + @Override + public void done() { + this.mvmt.setPathfindingMalus(PathType.WATER, this.oldWaterCost); + this.pathTypesByPosCacheByMob.clear(); + this.collisionCache.clear(); + super.done(); + } + + protected Node findAcceptedNode(int var0, int var1, int var2, int var3, double var4, Direction var6, + PathType var7) { + Node var8 = null; + BlockPos.MutableBlockPos var9 = new BlockPos.MutableBlockPos(); + double var10 = this.getFloorLevel(var9.set(var0, var1, var2)); + if (var10 - var4 > this.getMobJumpHeight()) { + return null; + } else { + PathType var12 = this.getCachedPathType(var0, var1, var2); + float var13 = this.mvmt.getPathfindingMalus(var12); + if (var13 >= 0.0F) { + var8 = this.getNodeAndUpdateCostToMax(var0, var1, var2, var12, var13); + } + if (doesBlockHavePartialCollision(var7) && var8 != null && var8.costMalus >= 0.0F + && !this.canReachWithoutCollision(var8)) { + var8 = null; + } + if (var12 != PathType.WALKABLE && (!this.isAmphibious() || var12 != PathType.WATER)) { + if ((var8 == null || var8.costMalus < 0.0F) && var3 > 0 + && (var12 != PathType.FENCE || this.canWalkOverFences()) && var12 != PathType.UNPASSABLE_RAIL + && var12 != PathType.TRAPDOOR && var12 != PathType.POWDER_SNOW) { + var8 = this.tryJumpOn(var0, var1, var2, var3, var4, var6, var7, var9); + } else if (!this.isAmphibious() && var12 == PathType.WATER && !this.canFloat()) { + var8 = this.tryFindFirstNonWaterBelow(var0, var1, var2, var8); + } else if (var12 == PathType.OPEN) { + var8 = this.tryFindFirstGroundNodeBelow(var0, var1, var2); + } else if (doesBlockHavePartialCollision(var12) && var8 == null) { + var8 = this.getClosedNode(var0, var1, var2, var12); + } + return var8; + } else { + return var8; + } + } + } + + private Node getBlockedNode(int var0, int var1, int var2) { + Node var3 = this.getNode(var0, var1, var2); + var3.type = PathType.BLOCKED; + var3.costMalus = -1.0F; + return var3; + } + + protected PathType getCachedPathType(int var0, int var1, int var2) { + return (PathType) this.pathTypesByPosCacheByMob.computeIfAbsent(BlockPos.asLong(var0, var1, var2), (var3) -> { + return this.getPathTypeOfMob(this.currentContext, var0, var1, var2, this.mob); + }); + } + + private Node getClosedNode(int var0, int var1, int var2, PathType var3) { + Node var4 = this.getNode(var0, var1, var2); + var4.closed = true; + var4.type = var3; + var4.costMalus = var3.getMalus(); + return var4; + } + + protected double getFloorLevel(BlockPos var0) { + BlockGetter var1 = this.currentContext.level(); + return (this.canFloat() || this.isAmphibious()) && var1.getFluidState(var0).is(FluidTags.WATER) + ? var0.getY() + 0.5 + : getFloorLevel(var1, var0); + } + + private double getMobJumpHeight() { + return Math.max(1.125, this.mob.maxUpStep()); + } + + @Override + public int getNeighbors(Node[] var0, Node var1) { + int var2 = 0; + int var3 = 0; + PathType var4 = this.getCachedPathType(var1.x, var1.y + 1, var1.z); + PathType var5 = this.getCachedPathType(var1.x, var1.y, var1.z); + if (this.mvmt.getPathfindingMalus(var4) >= 0.0F && var5 != PathType.STICKY_HONEY) { + var3 = Mth.floor(Math.max(1.0F, this.mob.maxUpStep())); + } + double var6 = this.getFloorLevel(new BlockPos(var1.x, var1.y, var1.z)); + Iterator var99 = Plane.HORIZONTAL.iterator(); + + while (var99.hasNext()) { + Direction var9 = var99.next(); + Node var10 = this.findAcceptedNode(var1.x + var9.getStepX(), var1.y, var1.z + var9.getStepZ(), var3, var6, + var9, var5); + this.reusableNeighbors[var9.get2DDataValue()] = var10; + if (this.isNeighborValid(var10, var1)) { + var0[var2++] = var10; + } + } + var99 = Plane.HORIZONTAL.iterator(); + + while (var99.hasNext()) { + Direction var9 = var99.next(); + Direction var10 = var9.getClockWise(); + if (this.isDiagonalValid(var1, this.reusableNeighbors[var9.get2DDataValue()], + this.reusableNeighbors[var10.get2DDataValue()])) { + Node var11 = this.findAcceptedNode(var1.x + var9.getStepX() + var10.getStepX(), var1.y, + var1.z + var9.getStepZ() + var10.getStepZ(), var3, var6, var9, var5); + if (this.isDiagonalValid(var11)) { + var0[var2++] = var11; + } + } + } + return var2; + } + + private Node getNodeAndUpdateCostToMax(int var0, int var1, int var2, PathType var3, float var4) { + Node var5 = this.getNode(var0, var1, var2); + var5.type = var3; + var5.costMalus = Math.max(var5.costMalus, var4); + return var5; + } + + @Override + public PathType getPathType(PathfindingContext var0, int var1, int var2, int var3) { + return getPathTypeStatic(var0, new BlockPos.MutableBlockPos(var1, var2, var3)); + } + + public PathType getPathTypeOfMob(PathfindingContext var0, int var1, int var2, int var3, LivingEntity var4) { + Set var5 = this.getPathTypeWithinMobBB(var0, var1, var2, var3); + if (var5.contains(PathType.FENCE)) { + return PathType.FENCE; + } else if (var5.contains(PathType.UNPASSABLE_RAIL)) { + return PathType.UNPASSABLE_RAIL; + } else { + PathType var6 = PathType.BLOCKED; + Iterator var88 = var5.iterator(); + + while (var88.hasNext()) { + PathType var8 = var88.next(); + if (mvmt.getPathfindingMalus(var8) < 0.0F) { + return var8; + } + if (mvmt.getPathfindingMalus(var8) >= mvmt.getPathfindingMalus(var6)) { + var6 = var8; + } + } + if (this.entityWidth <= 1 && var6 != PathType.OPEN && mvmt.getPathfindingMalus(var6) == 0.0F + && this.getPathType(var0, var1, var2, var3) == PathType.OPEN) { + return PathType.OPEN; + } else { + return var6; + } + } + } + + @Override + public PathType getPathTypeOfMob(PathfindingContext var0, int var1, int var2, int var3, Mob var4) { + Set var5 = this.getPathTypeWithinMobBB(var0, var1, var2, var3); + if (var5.contains(PathType.FENCE)) { + return PathType.FENCE; + } else if (var5.contains(PathType.UNPASSABLE_RAIL)) { + return PathType.UNPASSABLE_RAIL; + } else { + PathType var6 = PathType.BLOCKED; + Iterator var88 = var5.iterator(); + + while (var88.hasNext()) { + PathType var8 = var88.next(); + if (var4.getPathfindingMalus(var8) < 0.0F) { + return var8; + } + if (var4.getPathfindingMalus(var8) >= var4.getPathfindingMalus(var6)) { + var6 = var8; + } + } + if (this.entityWidth <= 1 && var6 != PathType.OPEN && var4.getPathfindingMalus(var6) == 0.0F + && this.getPathType(var0, var1, var2, var3) == PathType.OPEN) { + return PathType.OPEN; + } else { + return var6; + } + } + } + + public Set getPathTypeWithinMobBB(PathfindingContext var0, int var1, int var2, int var3) { + EnumSet var4 = EnumSet.noneOf(PathType.class); + + for (int var5 = 0; var5 < this.entityWidth; ++var5) { + for (int var6 = 0; var6 < this.entityHeight; ++var6) { + for (int var7 = 0; var7 < this.entityDepth; ++var7) { + int var8 = var5 + var1; + int var9 = var6 + var2; + int var10 = var7 + var3; + PathType var11 = this.getPathType(var0, var8, var9, var10); + BlockPos var12 = this.mob.blockPosition(); + boolean var13 = this.canPassDoors(); + if (var11 == PathType.DOOR_WOOD_CLOSED && this.canOpenDoors() && var13) { + var11 = PathType.WALKABLE_DOOR; + } + if (var11 == PathType.DOOR_OPEN && !var13) { + var11 = PathType.BLOCKED; + } + if (var11 == PathType.RAIL + && this.getPathType(var0, var12.getX(), var12.getY(), var12.getZ()) != PathType.RAIL + && this.getPathType(var0, var12.getX(), var12.getY() - 1, var12.getZ()) != PathType.RAIL) { + var11 = PathType.UNPASSABLE_RAIL; + } + var4.add(var11); + } + } + } + return var4; + } + + @Override + public Node getStart() { + BlockPos.MutableBlockPos var1 = new BlockPos.MutableBlockPos(); + int var0 = this.mob.getBlockY(); + BlockState var2 = this.currentContext.getBlockState(var1.set(this.mob.getX(), var0, this.mob.getZ())); + if (!this.mob.canStandOnFluid(var2.getFluidState())) { + if (this.canFloat() && this.mob.isInWater()) { + while (true) { + if (!var2.is(Blocks.WATER) && var2.getFluidState() != Fluids.WATER.getSource(false)) { + --var0; + break; + } + ++var0; + var2 = this.currentContext.getBlockState(var1.set(this.mob.getX(), var0, this.mob.getZ())); + } + } else if (this.mob.onGround()) { + var0 = Mth.floor(this.mob.getY() + 0.5); + } else { + var1.set(this.mob.getX(), this.mob.getY() + 1.0, this.mob.getZ()); + + while (var1.getY() > this.currentContext.level().getMinBuildHeight()) { + var0 = var1.getY(); + var1.setY(var1.getY() - 1); + BlockState var3 = this.currentContext.getBlockState(var1); + if (!var3.isAir() && !var3.isPathfindable(PathComputationType.LAND)) { + break; + } + } + } + } else { + while (true) { + if (!this.mob.canStandOnFluid(var2.getFluidState())) { + --var0; + break; + } + ++var0; + var2 = this.currentContext.getBlockState(var1.set(this.mob.getX(), var0, this.mob.getZ())); + } + } + BlockPos var3 = this.mob.blockPosition(); + if (!this.canStartAt(var1.set(var3.getX(), var0, var3.getZ()))) { + AABB var4 = this.mob.getBoundingBox(); + if (this.canStartAt(var1.set(var4.minX, var0, var4.minZ)) + || this.canStartAt(var1.set(var4.minX, var0, var4.maxZ)) + || this.canStartAt(var1.set(var4.maxX, var0, var4.minZ)) + || this.canStartAt(var1.set(var4.maxX, var0, var4.maxZ))) { + return this.getStartNode(var1); + } + } + return this.getStartNode(new BlockPos(var3.getX(), var0, var3.getZ())); + } + + protected Node getStartNode(BlockPos var0) { + Node var1 = this.getNode(var0); + var1.type = this.getCachedPathType(var1.x, var1.y, var1.z); + var1.costMalus = this.mvmt.getPathfindingMalus(var1.type); + return var1; + } + + @Override + public Target getTarget(double var0, double var2, double var4) { + return this.getTargetNodeAt(var0, var2, var4); + } + + private boolean hasCollisions(AABB var0) { + return this.collisionCache.computeIfAbsent(var0, (var1) -> { + return !this.currentContext.level().noCollision(this.mob, var0); + }); + } + + protected boolean isAmphibious() { + return false; + } + + protected boolean isDiagonalValid(Node var0) { + if (var0 != null && !var0.closed) { + if (var0.type == PathType.WALKABLE_DOOR) { + return false; + } else { + return var0.costMalus >= 0.0F; + } + } else { + return false; + } + } + + protected boolean isDiagonalValid(Node var0, Node var1, Node var2) { + if (var2 != null && var1 != null && var2.y <= var0.y && var1.y <= var0.y) { + if (var1.type != PathType.WALKABLE_DOOR && var2.type != PathType.WALKABLE_DOOR) { + boolean var3 = var2.type == PathType.FENCE && var1.type == PathType.FENCE + && this.mob.getBbWidth() < 0.5; + return (var2.y < var0.y || var2.costMalus >= 0.0F || var3) + && (var1.y < var0.y || var1.costMalus >= 0.0F || var3); + } else { + return false; + } + } else { + return false; + } + } + + protected boolean isNeighborValid(Node var0, Node var1) { + return var0 != null && !var0.closed && (var0.costMalus >= 0.0F || var1.costMalus < 0.0F); + } + + @Override + public void prepare(PathNavigationRegion var0, LivingEntity var1) { + super.prepare(var0, var1); + this.oldWaterCost = mvmt.getPathfindingMalus(PathType.WATER); + } + + @Override + public void prepare(PathNavigationRegion var0, Mob var1) { + super.prepare(var0, var1); + this.oldWaterCost = mvmt.getPathfindingMalus(PathType.WATER); + } + + private Node tryFindFirstGroundNodeBelow(int var0, int var1, int var2) { + for (int var3 = var1 - 1; var3 >= this.mob.level().getMinBuildHeight(); --var3) { + if (var1 - var3 > this.mob.getMaxFallDistance()) { + return this.getBlockedNode(var0, var3, var2); + } + PathType var4 = this.getCachedPathType(var0, var3, var2); + float var5 = this.mvmt.getPathfindingMalus(var4); + if (var4 != PathType.OPEN) { + if (var5 >= 0.0F) { + return this.getNodeAndUpdateCostToMax(var0, var3, var2, var4, var5); + } + return this.getBlockedNode(var0, var3, var2); + } + } + return this.getBlockedNode(var0, var1, var2); + } + + private Node tryFindFirstNonWaterBelow(int var0, int var1, int var2, Node var3) { + --var1; + + while (var1 > this.mob.level().getMinBuildHeight()) { + PathType var4 = this.getCachedPathType(var0, var1, var2); + if (var4 != PathType.WATER) { + return var3; + } + var3 = this.getNodeAndUpdateCostToMax(var0, var1, var2, var4, this.mvmt.getPathfindingMalus(var4)); + --var1; + } + return var3; + } + + private Node tryJumpOn(int var0, int var1, int var2, int var3, double var4, Direction var6, PathType var7, + BlockPos.MutableBlockPos var8) { + Node var9 = this.findAcceptedNode(var0, var1 + 1, var2, var3 - 1, var4, var6, var7); + if (var9 == null) { + return null; + } else if (this.mob.getBbWidth() >= 1.0F) { + return var9; + } else if (var9.type != PathType.OPEN && var9.type != PathType.WALKABLE) { + return var9; + } else { + double var10 = var0 - var6.getStepX() + 0.5; + double var12 = var2 - var6.getStepZ() + 0.5; + double var14 = this.mob.getBbWidth() / 2.0; + AABB var16 = new AABB(var10 - var14, this.getFloorLevel(var8.set(var10, var1 + 1, var12)) + 0.001, + var12 - var14, var10 + var14, + this.mob.getBbHeight() + + this.getFloorLevel(var8.set((double) var9.x, (double) var9.y, (double) var9.z)) - 0.002, + var12 + var14); + return this.hasCollisions(var16) ? null : var9; + } + } + + public static PathType checkNeighbourBlocks(PathfindingContext var0, int var1, int var2, int var3, PathType var4) { + for (int var5 = -1; var5 <= 1; ++var5) { + for (int var6 = -1; var6 <= 1; ++var6) { + for (int var7 = -1; var7 <= 1; ++var7) { + if (var5 != 0 || var7 != 0) { + PathType var8 = var0.getPathTypeFromState(var1 + var5, var2 + var6, var3 + var7); + if (var8 == PathType.DAMAGE_OTHER) { + return PathType.DANGER_OTHER; + } + if (var8 == PathType.DAMAGE_FIRE || var8 == PathType.LAVA) { + return PathType.DANGER_FIRE; + } + if (var8 == PathType.WATER) { + return PathType.WATER_BORDER; + } + if (var8 == PathType.DAMAGE_CAUTIOUS) { + return PathType.DAMAGE_CAUTIOUS; + } + } + } + } + } + return var4; + } + + private static boolean doesBlockHavePartialCollision(PathType var0) { + return var0 == PathType.FENCE || var0 == PathType.DOOR_WOOD_CLOSED || var0 == PathType.DOOR_IRON_CLOSED; + } + + public static double getFloorLevel(BlockGetter var0, BlockPos var1) { + BlockPos var2 = var1.below(); + VoxelShape var3 = var0.getBlockState(var2).getCollisionShape(var0, var2); + return var2.getY() + (var3.isEmpty() ? 0.0 : var3.max(Axis.Y)); + } + + public static PathType getPathTypeStatic(PathfindingContext var0, BlockPos.MutableBlockPos var1) { + int var2 = var1.getX(); + int var3 = var1.getY(); + int var4 = var1.getZ(); + PathType var5 = var0.getPathTypeFromState(var2, var3, var4); + if (var5 == PathType.OPEN && var3 >= var0.level().getMinBuildHeight() + 1) { + PathType var10000; + switch (var0.getPathTypeFromState(var2, var3 - 1, var4)) { + case OPEN: + case WATER: + case LAVA: + case WALKABLE: + var10000 = PathType.OPEN; + break; + case DAMAGE_FIRE: + var10000 = PathType.DAMAGE_FIRE; + break; + case DAMAGE_OTHER: + var10000 = PathType.DAMAGE_OTHER; + break; + case STICKY_HONEY: + var10000 = PathType.STICKY_HONEY; + break; + case POWDER_SNOW: + var10000 = PathType.DANGER_POWDER_SNOW; + break; + case DAMAGE_CAUTIOUS: + var10000 = PathType.DAMAGE_CAUTIOUS; + break; + case TRAPDOOR: + var10000 = PathType.DANGER_TRAPDOOR; + break; + default: + var10000 = checkNeighbourBlocks(var0, var2, var3, var4, PathType.WALKABLE); + } + return var10000; + } else { + return var5; + } + } + + public static final double SPACE_BETWEEN_WALL_POSTS = 0.5; +} diff --git a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/util/EntityNodeEvaluatorBase.java b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/util/EntityNodeEvaluatorBase.java similarity index 70% rename from v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/util/EntityNodeEvaluatorBase.java rename to v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/util/EntityNodeEvaluatorBase.java index 75a9494cd..80c7cb774 100644 --- a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/util/EntityNodeEvaluatorBase.java +++ b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/util/EntityNodeEvaluatorBase.java @@ -1,4 +1,4 @@ -package net.citizensnpcs.nms.v1_20_R3.util; +package net.citizensnpcs.nms.v1_20_R4.util; import it.unimi.dsi.fastutil.ints.Int2ObjectMap; import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap; @@ -9,19 +9,22 @@ import net.minecraft.world.entity.Mob; import net.minecraft.world.level.PathNavigationRegion; import net.minecraft.world.level.pathfinder.Node; import net.minecraft.world.level.pathfinder.NodeEvaluator; +import net.minecraft.world.level.pathfinder.PathType; +import net.minecraft.world.level.pathfinder.PathfindingContext; +import net.minecraft.world.level.pathfinder.Target; public abstract class EntityNodeEvaluatorBase extends NodeEvaluator { protected boolean canFloat; protected boolean canOpenDoors; protected boolean canPassDoors; protected boolean canWalkOverFences; + protected PathfindingContext currentContext; protected int entityDepth; protected int entityHeight; protected int entityWidth; - protected PathNavigationRegion level; protected LivingEntity mob; protected MobAI mvmt; - protected final Int2ObjectMap nodes = new Int2ObjectOpenHashMap<>(); + protected final Int2ObjectMap nodes = new Int2ObjectOpenHashMap(); @Override public boolean canFloat() { @@ -45,7 +48,7 @@ public abstract class EntityNodeEvaluatorBase extends NodeEvaluator { @Override public void done() { - this.level = null; + this.currentContext = null; this.mob = null; this.mvmt = null; } @@ -57,18 +60,25 @@ public abstract class EntityNodeEvaluatorBase extends NodeEvaluator { @Override protected Node getNode(int var0, int var1, int var2) { - return this.nodes.computeIfAbsent(Node.createHash(var0, var1, var2), var3 -> new Node(var0, var1, var2)); + return (Node) this.nodes.computeIfAbsent(Node.createHash(var0, var1, var2), (var3) -> { + return new Node(var0, var1, var2); + }); } @Override - protected net.minecraft.world.level.pathfinder.Target getTargetFromNode(Node var0) { - return new net.minecraft.world.level.pathfinder.Target(var0); + public PathType getPathType(Mob var0, BlockPos var1) { + return this.getPathType(new PathfindingContext(var0.level(), var0), var1.getX(), var1.getY(), var1.getZ()); + } + + @Override + protected Target getTargetNodeAt(double var0, double var2, double var4) { + return new Target(this.getNode(Mth.floor(var0), Mth.floor(var2), Mth.floor(var4))); } public void prepare(PathNavigationRegion var0, LivingEntity var1) { this.mob = var1; this.mvmt = MobAI.from(var1); - this.level = var0; + this.currentContext = new EntityPathfindingContext(var0, var1); this.nodes.clear(); this.entityWidth = Mth.floor(var1.getBbWidth() + 1.0F); this.entityHeight = Mth.floor(var1.getBbHeight() + 1.0F); @@ -77,7 +87,8 @@ public abstract class EntityNodeEvaluatorBase extends NodeEvaluator { @Override public void prepare(PathNavigationRegion var0, Mob var1) { - this.level = var0; + this.currentContext = new PathfindingContext(var0, var1); + this.mob = var1; this.nodes.clear(); this.entityWidth = Mth.floor(var1.getBbWidth() + 1.0F); this.entityHeight = Mth.floor(var1.getBbHeight() + 1.0F); diff --git a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/util/EntityPathfinder.java b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/util/EntityPathfinder.java similarity index 86% rename from v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/util/EntityPathfinder.java rename to v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/util/EntityPathfinder.java index 90be601e4..f20bbd3ca 100644 --- a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/util/EntityPathfinder.java +++ b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/util/EntityPathfinder.java @@ -1,4 +1,4 @@ -package net.citizensnpcs.nms.v1_20_R3.util; +package net.citizensnpcs.nms.v1_20_R4.util; import java.util.Comparator; import java.util.Iterator; @@ -43,32 +43,33 @@ public class EntityPathfinder extends PathFinder { this.openSet.clear(); this.nodeEvaluator.prepare(var0, var1); Node var6 = this.nodeEvaluator.getStart(); - if (var6 == null) + if (var6 == null) { return null; - - Map var7 = var2.stream().collect(Collectors.toMap((var0x) -> { - return this.nodeEvaluator.getGoal(var0x.getX(), var0x.getY(), var0x.getZ()); - }, Function.identity())); - Path var8 = this.findPath(var0.getProfiler(), var6, var7, var3, var4, var5); - this.nodeEvaluator.done(); - return var8; + } else { + Map var7 = var2.stream().collect(Collectors.toMap((var0x) -> { + return this.nodeEvaluator.getTarget(var0x.getX(), var0x.getY(), var0x.getZ()); + }, Function.identity())); + Path var8 = this.findPath(var0.getProfiler(), var6, var7, var3, var4, var5); + this.nodeEvaluator.done(); + return var8; + } } @Override - public Path findPath(PathNavigationRegion var0, Mob var1, Set var2, float var3, int var4, float var5) { this.openSet.clear(); this.nodeEvaluator.prepare(var0, var1); Node var6 = this.nodeEvaluator.getStart(); - if (var6 == null) + if (var6 == null) { return null; - - Map var7 = var2.stream().collect(Collectors.toMap((var0x) -> { - return this.nodeEvaluator.getGoal(var0x.getX(), var0x.getY(), var0x.getZ()); - }, Function.identity())); - Path var8 = this.findPath(var0.getProfiler(), var6, var7, var3, var4, var5); - this.nodeEvaluator.done(); - return var8; + } else { + Map var7 = var2.stream().collect(Collectors.toMap((var0x) -> { + return this.nodeEvaluator.getTarget(var0x.getX(), var0x.getY(), var0x.getZ()); + }, Function.identity())); + Path var8 = this.findPath(var0.getProfiler(), var6, var7, var3, var4, var5); + this.nodeEvaluator.done(); + return var8; + } } private Path findPath(ProfilerFiller var0, Node var1, Map var2, float range, int reachRange, diff --git a/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/util/EntityPathfindingContext.java b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/util/EntityPathfindingContext.java new file mode 100644 index 000000000..78e9c55d4 --- /dev/null +++ b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/util/EntityPathfindingContext.java @@ -0,0 +1,119 @@ +package net.citizensnpcs.nms.v1_20_R4.util; + +import net.citizensnpcs.nms.v1_20_R4.entity.SlimeController.EntitySlimeNPC; +import net.minecraft.core.BlockPos; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.tags.BlockTags; +import net.minecraft.tags.FluidTags; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.level.BlockGetter; +import net.minecraft.world.level.CollisionGetter; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.BaseRailBlock; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.level.block.CampfireBlock; +import net.minecraft.world.level.block.DoorBlock; +import net.minecraft.world.level.block.FenceGateBlock; +import net.minecraft.world.level.block.LeavesBlock; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.material.FluidState; +import net.minecraft.world.level.pathfinder.PathComputationType; +import net.minecraft.world.level.pathfinder.PathType; +import net.minecraft.world.level.pathfinder.PathTypeCache; +import net.minecraft.world.level.pathfinder.PathfindingContext; + +public class EntityPathfindingContext extends PathfindingContext { + private final PathTypeCache cache; + private final CollisionGetter level; + private final BlockPos mobPosition; + private final BlockPos.MutableBlockPos mutablePos = new BlockPos.MutableBlockPos(); + + public EntityPathfindingContext(CollisionGetter var0, LivingEntity var1) { + super(var0, new EntitySlimeNPC(EntityType.SLIME, var1.level())); + this.level = var0; + Level var4 = var1.level(); + if (var4 instanceof ServerLevel) { + this.cache = ((ServerLevel) var4).getPathTypeCache(); + } else { + this.cache = null; + } + this.mobPosition = var1.blockPosition(); + } + + @Override + public BlockState getBlockState(BlockPos var0) { + return this.level.getBlockState(var0); + } + + @Override + public PathType getPathTypeFromState(int var0, int var1, int var2) { + BlockPos var3 = this.mutablePos.set(var0, var1, var2); + return this.cache == null ? getPathTypeFromState(this.level, var3) : this.cache.getOrCompute(this.level, var3); + } + + @Override + public CollisionGetter level() { + return this.level; + } + + @Override + public BlockPos mobPosition() { + return this.mobPosition; + } + + static PathType getPathTypeFromState(BlockGetter var0, BlockPos var1) { + BlockState var2 = var0.getBlockState(var1); + Block var3 = var2.getBlock(); + if (var2.isAir()) { + return PathType.OPEN; + } else if (!var2.is(BlockTags.TRAPDOORS) && !var2.is(Blocks.LILY_PAD) && !var2.is(Blocks.BIG_DRIPLEAF)) { + if (var2.is(Blocks.POWDER_SNOW)) { + return PathType.POWDER_SNOW; + } else if (!var2.is(Blocks.CACTUS) && !var2.is(Blocks.SWEET_BERRY_BUSH)) { + if (var2.is(Blocks.HONEY_BLOCK)) { + return PathType.STICKY_HONEY; + } else if (var2.is(Blocks.COCOA)) { + return PathType.COCOA; + } else if (!var2.is(Blocks.WITHER_ROSE) && !var2.is(Blocks.POINTED_DRIPSTONE)) { + FluidState var4 = var2.getFluidState(); + if (var4.is(FluidTags.LAVA)) { + return PathType.LAVA; + } else if (isBurningBlock(var2)) { + return PathType.DAMAGE_FIRE; + } else if (var3 instanceof DoorBlock) { + DoorBlock var5 = (DoorBlock) var3; + if (var2.getValue(DoorBlock.OPEN)) { + return PathType.DOOR_OPEN; + } else { + return var5.type().canOpenByHand() ? PathType.DOOR_WOOD_CLOSED : PathType.DOOR_IRON_CLOSED; + } + } else if (var3 instanceof BaseRailBlock) { + return PathType.RAIL; + } else if (var3 instanceof LeavesBlock) { + return PathType.LEAVES; + } else if (var2.is(BlockTags.FENCES) || var2.is(BlockTags.WALLS) + || var3 instanceof FenceGateBlock && !(Boolean) var2.getValue(FenceGateBlock.OPEN)) { + return PathType.FENCE; + } else if (!var2.isPathfindable(PathComputationType.LAND)) { + return PathType.BLOCKED; + } else { + return var4.is(FluidTags.WATER) ? PathType.WATER : PathType.OPEN; + } + } else { + return PathType.DAMAGE_CAUTIOUS; + } + } else { + return PathType.DAMAGE_OTHER; + } + } else { + return PathType.TRAPDOOR; + } + } + + static boolean isBurningBlock(BlockState var0) { + return var0.is(BlockTags.FIRE) || var0.is(Blocks.LAVA) || var0.is(Blocks.MAGMA_BLOCK) + || CampfireBlock.isLitCampfire(var0) || var0.is(Blocks.LAVA_CAULDRON); + } +} diff --git a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/util/ForwardingNPCHolder.java b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/util/ForwardingNPCHolder.java similarity index 93% rename from v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/util/ForwardingNPCHolder.java rename to v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/util/ForwardingNPCHolder.java index 1f40f0d96..88de917db 100644 --- a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/util/ForwardingNPCHolder.java +++ b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/util/ForwardingNPCHolder.java @@ -1,4 +1,4 @@ -package net.citizensnpcs.nms.v1_20_R3.util; +package net.citizensnpcs.nms.v1_20_R4.util; import org.bukkit.entity.Entity; diff --git a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/util/MobAI.java b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/util/MobAI.java similarity index 85% rename from v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/util/MobAI.java rename to v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/util/MobAI.java index 259a5b574..dd4dd6ddd 100644 --- a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/util/MobAI.java +++ b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/util/MobAI.java @@ -1,4 +1,4 @@ -package net.citizensnpcs.nms.v1_20_R3.util; +package net.citizensnpcs.nms.v1_20_R4.util; import java.util.Map; @@ -12,25 +12,25 @@ import net.minecraft.world.entity.ai.attributes.Attributes; import net.minecraft.world.entity.ai.control.JumpControl; import net.minecraft.world.entity.ai.control.MoveControl; import net.minecraft.world.entity.ai.navigation.PathNavigation; -import net.minecraft.world.level.pathfinder.BlockPathTypes; +import net.minecraft.world.level.pathfinder.PathType; public interface MobAI { org.bukkit.entity.Entity getBukkitEntity(); JumpControl getJumpControl(); - Map getMalus(); + Map getMalus(); MoveControl getMoveControl(); PathNavigation getNavigation(); - default float getPathfindingMalus(BlockPathTypes var1) { - Map malus = getMalus(); + default float getPathfindingMalus(PathType var1) { + Map malus = getMalus(); return malus.containsKey(var1) ? malus.get(var1) : var1.getMalus(); } - default void setPathfindingMalus(BlockPathTypes water, float oldWaterCost) { + default void setPathfindingMalus(PathType water, float oldWaterCost) { getMalus().put(water, oldWaterCost); } @@ -51,7 +51,7 @@ public interface MobAI { private final EntityJumpControl controllerJump; private final EntityMoveControl controllerMove; private final LivingEntity entity; - private final Map malus; + private final Map malus; private final EntityNavigation navigation; public BasicMobAI(LivingEntity entity) { @@ -61,7 +61,7 @@ public interface MobAI { controllerJump = new EntityJumpControl(entity); controllerMove = new EntityMoveControl(entity); navigation = new EntityNavigation(entity, entity.level()); - malus = Maps.newEnumMap(BlockPathTypes.class); + malus = Maps.newEnumMap(PathType.class); } @Override @@ -75,7 +75,7 @@ public interface MobAI { } @Override - public Map getMalus() { + public Map getMalus() { return malus; } @@ -105,7 +105,7 @@ public interface MobAI { } @Override - default Map getMalus() { + default Map getMalus() { return getAI().getMalus(); } @@ -135,7 +135,7 @@ public interface MobAI { } @Override - public Map getMalus() { + public Map getMalus() { return null; } @@ -150,12 +150,12 @@ public interface MobAI { } @Override - public float getPathfindingMalus(BlockPathTypes var1) { + public float getPathfindingMalus(PathType var1) { return mob.getPathfindingMalus(var1); } @Override - public void setPathfindingMalus(BlockPathTypes water, float oldWaterCost) { + public void setPathfindingMalus(PathType water, float oldWaterCost) { mob.setPathfindingMalus(water, oldWaterCost); } diff --git a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/util/NMSBoundingBox.java b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/util/NMSBoundingBox.java similarity index 94% rename from v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/util/NMSBoundingBox.java rename to v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/util/NMSBoundingBox.java index c54ea06a2..290bcc312 100644 --- a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/util/NMSBoundingBox.java +++ b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/util/NMSBoundingBox.java @@ -1,4 +1,4 @@ -package net.citizensnpcs.nms.v1_20_R3.util; +package net.citizensnpcs.nms.v1_20_R4.util; import java.util.function.Supplier; diff --git a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/util/NMSImpl.java b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/util/NMSImpl.java similarity index 89% rename from v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/util/NMSImpl.java rename to v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/util/NMSImpl.java index a41cb1b5e..8e6621c61 100644 --- a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/util/NMSImpl.java +++ b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/util/NMSImpl.java @@ -1,4 +1,4 @@ -package net.citizensnpcs.nms.v1_20_R3.util; +package net.citizensnpcs.nms.v1_20_R4.util; import java.lang.invoke.MethodHandle; import java.util.Arrays; @@ -26,19 +26,18 @@ import org.bukkit.boss.BarColor; import org.bukkit.boss.BarStyle; import org.bukkit.boss.BossBar; import org.bukkit.command.BlockCommandSender; -import org.bukkit.craftbukkit.v1_20_R3.CraftServer; -import org.bukkit.craftbukkit.v1_20_R3.CraftSound; -import org.bukkit.craftbukkit.v1_20_R3.CraftWorld; -import org.bukkit.craftbukkit.v1_20_R3.block.CraftBlock; -import org.bukkit.craftbukkit.v1_20_R3.boss.CraftBossBar; -import org.bukkit.craftbukkit.v1_20_R3.command.CraftBlockCommandSender; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftEntity; -import org.bukkit.craftbukkit.v1_20_R3.entity.CraftPlayer; -import org.bukkit.craftbukkit.v1_20_R3.event.CraftEventFactory; -import org.bukkit.craftbukkit.v1_20_R3.event.CraftPortalEvent; -import org.bukkit.craftbukkit.v1_20_R3.inventory.CraftInventoryAnvil; -import org.bukkit.craftbukkit.v1_20_R3.inventory.CraftInventoryView; -import org.bukkit.craftbukkit.v1_20_R3.inventory.CraftItemStack; +import org.bukkit.craftbukkit.v1_20_R4.CraftServer; +import org.bukkit.craftbukkit.v1_20_R4.CraftSound; +import org.bukkit.craftbukkit.v1_20_R4.CraftWorld; +import org.bukkit.craftbukkit.v1_20_R4.block.CraftBlock; +import org.bukkit.craftbukkit.v1_20_R4.boss.CraftBossBar; +import org.bukkit.craftbukkit.v1_20_R4.command.CraftBlockCommandSender; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftEntity; +import org.bukkit.craftbukkit.v1_20_R4.entity.CraftPlayer; +import org.bukkit.craftbukkit.v1_20_R4.event.CraftEventFactory; +import org.bukkit.craftbukkit.v1_20_R4.event.CraftPortalEvent; +import org.bukkit.craftbukkit.v1_20_R4.inventory.CraftInventoryAnvil; +import org.bukkit.craftbukkit.v1_20_R4.inventory.CraftInventoryView; import org.bukkit.entity.EntityType; import org.bukkit.entity.FishHook; import org.bukkit.entity.Player; @@ -92,127 +91,133 @@ import net.citizensnpcs.api.trait.TraitInfo; import net.citizensnpcs.api.util.BoundingBox; import net.citizensnpcs.api.util.EntityDim; import net.citizensnpcs.api.util.Messaging; -import net.citizensnpcs.nms.v1_20_R3.entity.AllayController; -import net.citizensnpcs.nms.v1_20_R3.entity.ArmorStandController; -import net.citizensnpcs.nms.v1_20_R3.entity.AxolotlController; -import net.citizensnpcs.nms.v1_20_R3.entity.BatController; -import net.citizensnpcs.nms.v1_20_R3.entity.BeeController; -import net.citizensnpcs.nms.v1_20_R3.entity.BlazeController; -import net.citizensnpcs.nms.v1_20_R3.entity.CamelController; -import net.citizensnpcs.nms.v1_20_R3.entity.CatController; -import net.citizensnpcs.nms.v1_20_R3.entity.CaveSpiderController; -import net.citizensnpcs.nms.v1_20_R3.entity.ChickenController; -import net.citizensnpcs.nms.v1_20_R3.entity.CodController; -import net.citizensnpcs.nms.v1_20_R3.entity.CowController; -import net.citizensnpcs.nms.v1_20_R3.entity.CreeperController; -import net.citizensnpcs.nms.v1_20_R3.entity.DolphinController; -import net.citizensnpcs.nms.v1_20_R3.entity.DrownedController; -import net.citizensnpcs.nms.v1_20_R3.entity.EnderDragonController; -import net.citizensnpcs.nms.v1_20_R3.entity.EndermanController; -import net.citizensnpcs.nms.v1_20_R3.entity.EndermiteController; -import net.citizensnpcs.nms.v1_20_R3.entity.EvokerController; -import net.citizensnpcs.nms.v1_20_R3.entity.FoxController; -import net.citizensnpcs.nms.v1_20_R3.entity.FrogController; -import net.citizensnpcs.nms.v1_20_R3.entity.GhastController; -import net.citizensnpcs.nms.v1_20_R3.entity.GiantController; -import net.citizensnpcs.nms.v1_20_R3.entity.GlowSquidController; -import net.citizensnpcs.nms.v1_20_R3.entity.GoatController; -import net.citizensnpcs.nms.v1_20_R3.entity.GuardianController; -import net.citizensnpcs.nms.v1_20_R3.entity.GuardianElderController; -import net.citizensnpcs.nms.v1_20_R3.entity.HoglinController; -import net.citizensnpcs.nms.v1_20_R3.entity.HorseController; -import net.citizensnpcs.nms.v1_20_R3.entity.HorseDonkeyController; -import net.citizensnpcs.nms.v1_20_R3.entity.HorseMuleController; -import net.citizensnpcs.nms.v1_20_R3.entity.HorseSkeletonController; -import net.citizensnpcs.nms.v1_20_R3.entity.HorseZombieController; -import net.citizensnpcs.nms.v1_20_R3.entity.HumanController; -import net.citizensnpcs.nms.v1_20_R3.entity.IllusionerController; -import net.citizensnpcs.nms.v1_20_R3.entity.IronGolemController; -import net.citizensnpcs.nms.v1_20_R3.entity.LlamaController; -import net.citizensnpcs.nms.v1_20_R3.entity.MagmaCubeController; -import net.citizensnpcs.nms.v1_20_R3.entity.MushroomCowController; -import net.citizensnpcs.nms.v1_20_R3.entity.OcelotController; -import net.citizensnpcs.nms.v1_20_R3.entity.PandaController; -import net.citizensnpcs.nms.v1_20_R3.entity.ParrotController; -import net.citizensnpcs.nms.v1_20_R3.entity.PhantomController; -import net.citizensnpcs.nms.v1_20_R3.entity.PigController; -import net.citizensnpcs.nms.v1_20_R3.entity.PigZombieController; -import net.citizensnpcs.nms.v1_20_R3.entity.PiglinBruteController; -import net.citizensnpcs.nms.v1_20_R3.entity.PiglinController; -import net.citizensnpcs.nms.v1_20_R3.entity.PillagerController; -import net.citizensnpcs.nms.v1_20_R3.entity.PolarBearController; -import net.citizensnpcs.nms.v1_20_R3.entity.PufferFishController; -import net.citizensnpcs.nms.v1_20_R3.entity.RabbitController; -import net.citizensnpcs.nms.v1_20_R3.entity.RavagerController; -import net.citizensnpcs.nms.v1_20_R3.entity.SalmonController; -import net.citizensnpcs.nms.v1_20_R3.entity.SheepController; -import net.citizensnpcs.nms.v1_20_R3.entity.ShulkerController; -import net.citizensnpcs.nms.v1_20_R3.entity.SilverfishController; -import net.citizensnpcs.nms.v1_20_R3.entity.SkeletonController; -import net.citizensnpcs.nms.v1_20_R3.entity.SkeletonStrayController; -import net.citizensnpcs.nms.v1_20_R3.entity.SkeletonWitherController; -import net.citizensnpcs.nms.v1_20_R3.entity.SlimeController; -import net.citizensnpcs.nms.v1_20_R3.entity.SnifferController; -import net.citizensnpcs.nms.v1_20_R3.entity.SnowmanController; -import net.citizensnpcs.nms.v1_20_R3.entity.SpiderController; -import net.citizensnpcs.nms.v1_20_R3.entity.SquidController; -import net.citizensnpcs.nms.v1_20_R3.entity.StriderController; -import net.citizensnpcs.nms.v1_20_R3.entity.TadpoleController; -import net.citizensnpcs.nms.v1_20_R3.entity.TraderLlamaController; -import net.citizensnpcs.nms.v1_20_R3.entity.TropicalFishController; -import net.citizensnpcs.nms.v1_20_R3.entity.TurtleController; -import net.citizensnpcs.nms.v1_20_R3.entity.VexController; -import net.citizensnpcs.nms.v1_20_R3.entity.VillagerController; -import net.citizensnpcs.nms.v1_20_R3.entity.VindicatorController; -import net.citizensnpcs.nms.v1_20_R3.entity.WanderingTraderController; -import net.citizensnpcs.nms.v1_20_R3.entity.WardenController; -import net.citizensnpcs.nms.v1_20_R3.entity.WitchController; -import net.citizensnpcs.nms.v1_20_R3.entity.WitherController; -import net.citizensnpcs.nms.v1_20_R3.entity.WolfController; -import net.citizensnpcs.nms.v1_20_R3.entity.ZoglinController; -import net.citizensnpcs.nms.v1_20_R3.entity.ZombieController; -import net.citizensnpcs.nms.v1_20_R3.entity.ZombieHuskController; -import net.citizensnpcs.nms.v1_20_R3.entity.ZombieVillagerController; -import net.citizensnpcs.nms.v1_20_R3.entity.nonliving.AreaEffectCloudController; -import net.citizensnpcs.nms.v1_20_R3.entity.nonliving.BlockDisplayController; -import net.citizensnpcs.nms.v1_20_R3.entity.nonliving.BoatController; -import net.citizensnpcs.nms.v1_20_R3.entity.nonliving.ChestBoatController; -import net.citizensnpcs.nms.v1_20_R3.entity.nonliving.DragonFireballController; -import net.citizensnpcs.nms.v1_20_R3.entity.nonliving.EggController; -import net.citizensnpcs.nms.v1_20_R3.entity.nonliving.EnderCrystalController; -import net.citizensnpcs.nms.v1_20_R3.entity.nonliving.EnderPearlController; -import net.citizensnpcs.nms.v1_20_R3.entity.nonliving.EnderSignalController; -import net.citizensnpcs.nms.v1_20_R3.entity.nonliving.EvokerFangsController; -import net.citizensnpcs.nms.v1_20_R3.entity.nonliving.FallingBlockController; -import net.citizensnpcs.nms.v1_20_R3.entity.nonliving.FireworkController; -import net.citizensnpcs.nms.v1_20_R3.entity.nonliving.FishingHookController; -import net.citizensnpcs.nms.v1_20_R3.entity.nonliving.GlowItemFrameController; -import net.citizensnpcs.nms.v1_20_R3.entity.nonliving.InteractionController; -import net.citizensnpcs.nms.v1_20_R3.entity.nonliving.ItemController; -import net.citizensnpcs.nms.v1_20_R3.entity.nonliving.ItemDisplayController; -import net.citizensnpcs.nms.v1_20_R3.entity.nonliving.ItemFrameController; -import net.citizensnpcs.nms.v1_20_R3.entity.nonliving.LargeFireballController; -import net.citizensnpcs.nms.v1_20_R3.entity.nonliving.LeashController; -import net.citizensnpcs.nms.v1_20_R3.entity.nonliving.LlamaSpitController; -import net.citizensnpcs.nms.v1_20_R3.entity.nonliving.MarkerController; -import net.citizensnpcs.nms.v1_20_R3.entity.nonliving.MinecartChestController; -import net.citizensnpcs.nms.v1_20_R3.entity.nonliving.MinecartCommandController; -import net.citizensnpcs.nms.v1_20_R3.entity.nonliving.MinecartFurnaceController; -import net.citizensnpcs.nms.v1_20_R3.entity.nonliving.MinecartHopperController; -import net.citizensnpcs.nms.v1_20_R3.entity.nonliving.MinecartRideableController; -import net.citizensnpcs.nms.v1_20_R3.entity.nonliving.MinecartTNTController; -import net.citizensnpcs.nms.v1_20_R3.entity.nonliving.PaintingController; -import net.citizensnpcs.nms.v1_20_R3.entity.nonliving.ShulkerBulletController; -import net.citizensnpcs.nms.v1_20_R3.entity.nonliving.SmallFireballController; -import net.citizensnpcs.nms.v1_20_R3.entity.nonliving.SnowballController; -import net.citizensnpcs.nms.v1_20_R3.entity.nonliving.SpectralArrowController; -import net.citizensnpcs.nms.v1_20_R3.entity.nonliving.TNTPrimedController; -import net.citizensnpcs.nms.v1_20_R3.entity.nonliving.TextDisplayController; -import net.citizensnpcs.nms.v1_20_R3.entity.nonliving.ThrownExpBottleController; -import net.citizensnpcs.nms.v1_20_R3.entity.nonliving.ThrownPotionController; -import net.citizensnpcs.nms.v1_20_R3.entity.nonliving.ThrownTridentController; -import net.citizensnpcs.nms.v1_20_R3.entity.nonliving.TippedArrowController; -import net.citizensnpcs.nms.v1_20_R3.entity.nonliving.WitherSkullController; +import net.citizensnpcs.nms.v1_20_R4.entity.AllayController; +import net.citizensnpcs.nms.v1_20_R4.entity.ArmadilloController; +import net.citizensnpcs.nms.v1_20_R4.entity.ArmorStandController; +import net.citizensnpcs.nms.v1_20_R4.entity.AxolotlController; +import net.citizensnpcs.nms.v1_20_R4.entity.BatController; +import net.citizensnpcs.nms.v1_20_R4.entity.BeeController; +import net.citizensnpcs.nms.v1_20_R4.entity.BlazeController; +import net.citizensnpcs.nms.v1_20_R4.entity.BoggedController; +import net.citizensnpcs.nms.v1_20_R4.entity.BreezeController; +import net.citizensnpcs.nms.v1_20_R4.entity.CamelController; +import net.citizensnpcs.nms.v1_20_R4.entity.CatController; +import net.citizensnpcs.nms.v1_20_R4.entity.CaveSpiderController; +import net.citizensnpcs.nms.v1_20_R4.entity.ChickenController; +import net.citizensnpcs.nms.v1_20_R4.entity.CodController; +import net.citizensnpcs.nms.v1_20_R4.entity.CowController; +import net.citizensnpcs.nms.v1_20_R4.entity.CreeperController; +import net.citizensnpcs.nms.v1_20_R4.entity.DolphinController; +import net.citizensnpcs.nms.v1_20_R4.entity.DrownedController; +import net.citizensnpcs.nms.v1_20_R4.entity.EnderDragonController; +import net.citizensnpcs.nms.v1_20_R4.entity.EndermanController; +import net.citizensnpcs.nms.v1_20_R4.entity.EndermiteController; +import net.citizensnpcs.nms.v1_20_R4.entity.EvokerController; +import net.citizensnpcs.nms.v1_20_R4.entity.FoxController; +import net.citizensnpcs.nms.v1_20_R4.entity.FrogController; +import net.citizensnpcs.nms.v1_20_R4.entity.GhastController; +import net.citizensnpcs.nms.v1_20_R4.entity.GiantController; +import net.citizensnpcs.nms.v1_20_R4.entity.GlowSquidController; +import net.citizensnpcs.nms.v1_20_R4.entity.GoatController; +import net.citizensnpcs.nms.v1_20_R4.entity.GuardianController; +import net.citizensnpcs.nms.v1_20_R4.entity.GuardianElderController; +import net.citizensnpcs.nms.v1_20_R4.entity.HoglinController; +import net.citizensnpcs.nms.v1_20_R4.entity.HorseController; +import net.citizensnpcs.nms.v1_20_R4.entity.HorseDonkeyController; +import net.citizensnpcs.nms.v1_20_R4.entity.HorseMuleController; +import net.citizensnpcs.nms.v1_20_R4.entity.HorseSkeletonController; +import net.citizensnpcs.nms.v1_20_R4.entity.HorseZombieController; +import net.citizensnpcs.nms.v1_20_R4.entity.HumanController; +import net.citizensnpcs.nms.v1_20_R4.entity.IllusionerController; +import net.citizensnpcs.nms.v1_20_R4.entity.IronGolemController; +import net.citizensnpcs.nms.v1_20_R4.entity.LlamaController; +import net.citizensnpcs.nms.v1_20_R4.entity.MagmaCubeController; +import net.citizensnpcs.nms.v1_20_R4.entity.MushroomCowController; +import net.citizensnpcs.nms.v1_20_R4.entity.OcelotController; +import net.citizensnpcs.nms.v1_20_R4.entity.PandaController; +import net.citizensnpcs.nms.v1_20_R4.entity.ParrotController; +import net.citizensnpcs.nms.v1_20_R4.entity.PhantomController; +import net.citizensnpcs.nms.v1_20_R4.entity.PigController; +import net.citizensnpcs.nms.v1_20_R4.entity.PigZombieController; +import net.citizensnpcs.nms.v1_20_R4.entity.PiglinBruteController; +import net.citizensnpcs.nms.v1_20_R4.entity.PiglinController; +import net.citizensnpcs.nms.v1_20_R4.entity.PillagerController; +import net.citizensnpcs.nms.v1_20_R4.entity.PolarBearController; +import net.citizensnpcs.nms.v1_20_R4.entity.PufferFishController; +import net.citizensnpcs.nms.v1_20_R4.entity.RabbitController; +import net.citizensnpcs.nms.v1_20_R4.entity.RavagerController; +import net.citizensnpcs.nms.v1_20_R4.entity.SalmonController; +import net.citizensnpcs.nms.v1_20_R4.entity.SheepController; +import net.citizensnpcs.nms.v1_20_R4.entity.ShulkerController; +import net.citizensnpcs.nms.v1_20_R4.entity.SilverfishController; +import net.citizensnpcs.nms.v1_20_R4.entity.SkeletonController; +import net.citizensnpcs.nms.v1_20_R4.entity.SkeletonStrayController; +import net.citizensnpcs.nms.v1_20_R4.entity.SkeletonWitherController; +import net.citizensnpcs.nms.v1_20_R4.entity.SlimeController; +import net.citizensnpcs.nms.v1_20_R4.entity.SnifferController; +import net.citizensnpcs.nms.v1_20_R4.entity.SnowmanController; +import net.citizensnpcs.nms.v1_20_R4.entity.SpiderController; +import net.citizensnpcs.nms.v1_20_R4.entity.SquidController; +import net.citizensnpcs.nms.v1_20_R4.entity.StriderController; +import net.citizensnpcs.nms.v1_20_R4.entity.TadpoleController; +import net.citizensnpcs.nms.v1_20_R4.entity.TraderLlamaController; +import net.citizensnpcs.nms.v1_20_R4.entity.TropicalFishController; +import net.citizensnpcs.nms.v1_20_R4.entity.TurtleController; +import net.citizensnpcs.nms.v1_20_R4.entity.VexController; +import net.citizensnpcs.nms.v1_20_R4.entity.VillagerController; +import net.citizensnpcs.nms.v1_20_R4.entity.VindicatorController; +import net.citizensnpcs.nms.v1_20_R4.entity.WanderingTraderController; +import net.citizensnpcs.nms.v1_20_R4.entity.WardenController; +import net.citizensnpcs.nms.v1_20_R4.entity.WitchController; +import net.citizensnpcs.nms.v1_20_R4.entity.WitherController; +import net.citizensnpcs.nms.v1_20_R4.entity.WolfController; +import net.citizensnpcs.nms.v1_20_R4.entity.ZoglinController; +import net.citizensnpcs.nms.v1_20_R4.entity.ZombieController; +import net.citizensnpcs.nms.v1_20_R4.entity.ZombieHuskController; +import net.citizensnpcs.nms.v1_20_R4.entity.ZombieVillagerController; +import net.citizensnpcs.nms.v1_20_R4.entity.nonliving.AreaEffectCloudController; +import net.citizensnpcs.nms.v1_20_R4.entity.nonliving.BlockDisplayController; +import net.citizensnpcs.nms.v1_20_R4.entity.nonliving.BoatController; +import net.citizensnpcs.nms.v1_20_R4.entity.nonliving.BreezeWindChargeController; +import net.citizensnpcs.nms.v1_20_R4.entity.nonliving.ChestBoatController; +import net.citizensnpcs.nms.v1_20_R4.entity.nonliving.DragonFireballController; +import net.citizensnpcs.nms.v1_20_R4.entity.nonliving.EggController; +import net.citizensnpcs.nms.v1_20_R4.entity.nonliving.EnderCrystalController; +import net.citizensnpcs.nms.v1_20_R4.entity.nonliving.EnderPearlController; +import net.citizensnpcs.nms.v1_20_R4.entity.nonliving.EvokerFangsController; +import net.citizensnpcs.nms.v1_20_R4.entity.nonliving.EyeOfEnderController; +import net.citizensnpcs.nms.v1_20_R4.entity.nonliving.FallingBlockController; +import net.citizensnpcs.nms.v1_20_R4.entity.nonliving.FireworkController; +import net.citizensnpcs.nms.v1_20_R4.entity.nonliving.FishingHookController; +import net.citizensnpcs.nms.v1_20_R4.entity.nonliving.GlowItemFrameController; +import net.citizensnpcs.nms.v1_20_R4.entity.nonliving.InteractionController; +import net.citizensnpcs.nms.v1_20_R4.entity.nonliving.ItemController; +import net.citizensnpcs.nms.v1_20_R4.entity.nonliving.ItemDisplayController; +import net.citizensnpcs.nms.v1_20_R4.entity.nonliving.ItemFrameController; +import net.citizensnpcs.nms.v1_20_R4.entity.nonliving.LargeFireballController; +import net.citizensnpcs.nms.v1_20_R4.entity.nonliving.LeashController; +import net.citizensnpcs.nms.v1_20_R4.entity.nonliving.LlamaSpitController; +import net.citizensnpcs.nms.v1_20_R4.entity.nonliving.MarkerController; +import net.citizensnpcs.nms.v1_20_R4.entity.nonliving.MinecartChestController; +import net.citizensnpcs.nms.v1_20_R4.entity.nonliving.MinecartCommandController; +import net.citizensnpcs.nms.v1_20_R4.entity.nonliving.MinecartFurnaceController; +import net.citizensnpcs.nms.v1_20_R4.entity.nonliving.MinecartHopperController; +import net.citizensnpcs.nms.v1_20_R4.entity.nonliving.MinecartRideableController; +import net.citizensnpcs.nms.v1_20_R4.entity.nonliving.MinecartTNTController; +import net.citizensnpcs.nms.v1_20_R4.entity.nonliving.OminousItemSpawnerController; +import net.citizensnpcs.nms.v1_20_R4.entity.nonliving.PaintingController; +import net.citizensnpcs.nms.v1_20_R4.entity.nonliving.ShulkerBulletController; +import net.citizensnpcs.nms.v1_20_R4.entity.nonliving.SmallFireballController; +import net.citizensnpcs.nms.v1_20_R4.entity.nonliving.SnowballController; +import net.citizensnpcs.nms.v1_20_R4.entity.nonliving.SpectralArrowController; +import net.citizensnpcs.nms.v1_20_R4.entity.nonliving.TNTPrimedController; +import net.citizensnpcs.nms.v1_20_R4.entity.nonliving.TextDisplayController; +import net.citizensnpcs.nms.v1_20_R4.entity.nonliving.ThrownExpBottleController; +import net.citizensnpcs.nms.v1_20_R4.entity.nonliving.ThrownPotionController; +import net.citizensnpcs.nms.v1_20_R4.entity.nonliving.ThrownTridentController; +import net.citizensnpcs.nms.v1_20_R4.entity.nonliving.TippedArrowController; +import net.citizensnpcs.nms.v1_20_R4.entity.nonliving.WindChargeController; +import net.citizensnpcs.nms.v1_20_R4.entity.nonliving.WitherSkullController; import net.citizensnpcs.npc.EntityControllers; import net.citizensnpcs.npc.ai.MCNavigationStrategy.MCNavigator; import net.citizensnpcs.npc.ai.MCTargetStrategy.TargetNavigator; @@ -254,6 +259,7 @@ import net.citizensnpcs.util.NMSBridge; import net.citizensnpcs.util.PlayerAnimation; import net.citizensnpcs.util.Util; import net.minecraft.core.BlockPos; +import net.minecraft.core.Holder; import net.minecraft.core.registries.BuiltInRegistries; import net.minecraft.network.Connection; import net.minecraft.network.chat.Component; @@ -346,10 +352,10 @@ import net.minecraft.world.level.Level; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.dimension.end.EndDragonFight; import net.minecraft.world.level.material.FluidState; -import net.minecraft.world.level.pathfinder.BlockPathTypes; import net.minecraft.world.level.pathfinder.Node; import net.minecraft.world.level.pathfinder.Path; import net.minecraft.world.level.pathfinder.PathFinder; +import net.minecraft.world.level.pathfinder.PathType; import net.minecraft.world.level.portal.PortalInfo; import net.minecraft.world.phys.AABB; import net.minecraft.world.phys.Vec3; @@ -373,22 +379,14 @@ public class NMSImpl implements NMSBridge { int viewDistance = -1; ChunkMap chunkMap = null; - try { - if (entity instanceof Player) { - chunkMap = ((ServerChunkCache) getHandle(entity).level().getChunkSource()).chunkMap; - viewDistance = (int) PLAYER_CHUNK_MAP_VIEW_DISTANCE_GETTER.invoke(chunkMap); - PLAYER_CHUNK_MAP_VIEW_DISTANCE_SETTER.invoke(chunkMap, -1); - } - } catch (Throwable e) { - e.printStackTrace(); + if (entity instanceof Player) { + chunkMap = ((ServerChunkCache) getHandle(entity).level().getChunkSource()).chunkMap; + viewDistance = chunkMap.serverViewDistance; + chunkMap.serverViewDistance = -1; } boolean success = getHandle(entity).level().addFreshEntity(getHandle(entity), custom); - try { - if (chunkMap != null) { - PLAYER_CHUNK_MAP_VIEW_DISTANCE_SETTER.invoke(chunkMap, viewDistance); - } - } catch (Throwable e) { - e.printStackTrace(); + if (chunkMap != null) { + chunkMap.serverViewDistance = viewDistance; } return success; } @@ -437,9 +435,14 @@ public class NMSImpl implements NMSBridge { return; } float f = (float) (hasAttackDamage ? source.getAttributeValue(Attributes.ATTACK_DAMAGE) : 1f); - int i = 0; - f += EnchantmentHelper.getDamageBonus(source.getMainHandItem(), target.getMobType()); + int i = source.isSprinting() ? 1 : 0; + f += EnchantmentHelper.getDamageBonus(source.getMainHandItem(), target.getType()); i += EnchantmentHelper.getKnockbackBonus(source); + /* boolean crit = source.fallDistance > 0 && !source.isSprinting() && !source.onGround() && !source.onClimbable() + && !source.isPassenger() && !source.isInWater() && !source.hasEffect(MobEffects.BLINDNESS); + if (crit) { + f *= 1.5F; + }*/ boolean flag = target.hurt(target.damageSources().mobAttack(source), f); if (!flag) return; @@ -450,7 +453,7 @@ public class NMSImpl implements NMSBridge { } int fireAspectLevel = EnchantmentHelper.getFireAspect(source); if (fireAspectLevel > 0) { - target.setSecondsOnFire(fireAspectLevel * 4, false); + target.igniteForSeconds(fireAspectLevel * 4, false); } if (target instanceof ServerPlayer) { ServerPlayer entityhuman = (ServerPlayer) target; @@ -644,7 +647,8 @@ public class NMSImpl implements NMSBridge { @Override public CompoundTag getNBT(org.bukkit.inventory.ItemStack item) { - return convertNBT(CraftItemStack.asNMSCopy(item).getTag()); + throw new UnsupportedOperationException(); + // return convertNBT(CraftItemStack.asNMSCopy(item)); } @Override @@ -711,7 +715,7 @@ public class NMSImpl implements NMSBridge { @Override public float getRidingHeightOffset(org.bukkit.entity.Entity entity, org.bukkit.entity.Entity mount) { - return getHandle(entity).getMyRidingOffset(getHandle(mount)); + return (float) getHandle(entity).getPassengerRidingPosition(getHandle(mount)).y; } @Override @@ -774,13 +778,13 @@ public class NMSImpl implements NMSBridge { // navigation won't execute, and calling entity.move doesn't // entirely fix the problem. final PathNavigation navigation = getNavigation(entity); - final float oldWater = raw instanceof MobAI ? ((MobAI) raw).getPathfindingMalus(BlockPathTypes.WATER) - : ((Mob) raw).getPathfindingMalus(BlockPathTypes.WATER); + final float oldWater = raw instanceof MobAI ? ((MobAI) raw).getPathfindingMalus(PathType.WATER) + : ((Mob) raw).getPathfindingMalus(PathType.WATER); if (params.avoidWater() && oldWater >= 0) { if (raw instanceof MobAI) { - ((MobAI) raw).setPathfindingMalus(BlockPathTypes.WATER, oldWater + 1F); + ((MobAI) raw).setPathfindingMalus(PathType.WATER, oldWater + 1F); } else { - ((Mob) raw).setPathfindingMalus(BlockPathTypes.WATER, oldWater + 1F); + ((Mob) raw).setPathfindingMalus(PathType.WATER, oldWater + 1F); } } navigation.getNodeEvaluator().setCanOpenDoors(params.hasExaminer(DoorExaminer.class)); @@ -816,9 +820,9 @@ public class NMSImpl implements NMSBridge { } if (oldWater >= 0) { if (raw instanceof MobAI) { - ((MobAI) raw).setPathfindingMalus(BlockPathTypes.WATER, oldWater); + ((MobAI) raw).setPathfindingMalus(PathType.WATER, oldWater); } else { - ((Mob) raw).setPathfindingMalus(BlockPathTypes.WATER, oldWater); + ((Mob) raw).setPathfindingMalus(PathType.WATER, oldWater); } } navigation.stop(); @@ -833,7 +837,7 @@ public class NMSImpl implements NMSBridge { size = (EntityDimensions) SIZE_FIELD_GETTER.invoke(handle); if (handle instanceof AbstractHorse) { SIZE_FIELD_SETTER.invoke(handle, - new EntityDimensions(Math.min(0.99F, size.width), size.height, false)); + EntityDimensions.fixed(Math.min(0.99F, size.width()), size.height())); } } catch (Throwable e) { e.printStackTrace(); @@ -923,7 +927,7 @@ public class NMSImpl implements NMSBridge { public void linkTextInteraction(org.bukkit.entity.Player player, org.bukkit.entity.Entity entity, org.bukkit.entity.Entity mount, double offset) { Interaction handle = (Interaction) getHandle(entity); - offset += handle.getMyRidingOffset(getHandle(mount)); + offset += handle.getPassengerRidingPosition(getHandle(mount)).y; sendPacket(player, new ClientboundBundlePacket(List.of( new ClientboundSetEntityDataPacket(entity.getEntityId(), @@ -965,87 +969,93 @@ public class NMSImpl implements NMSBridge { } private void loadEntityTypes() { + EntityControllers.setEntityControllerForType(EntityType.ALLAY, AllayController.class); EntityControllers.setEntityControllerForType(EntityType.AREA_EFFECT_CLOUD, AreaEffectCloudController.class); - EntityControllers.setEntityControllerForType(EntityType.ARROW, TippedArrowController.class); + EntityControllers.setEntityControllerForType(EntityType.ARMADILLO, ArmadilloController.class); EntityControllers.setEntityControllerForType(EntityType.ARMOR_STAND, ArmorStandController.class); + EntityControllers.setEntityControllerForType(EntityType.ARROW, TippedArrowController.class); EntityControllers.setEntityControllerForType(EntityType.AXOLOTL, AxolotlController.class); EntityControllers.setEntityControllerForType(EntityType.BAT, BatController.class); EntityControllers.setEntityControllerForType(EntityType.BEE, BeeController.class); EntityControllers.setEntityControllerForType(EntityType.BLAZE, BlazeController.class); + EntityControllers.setEntityControllerForType(EntityType.BLOCK_DISPLAY, BlockDisplayController.class); EntityControllers.setEntityControllerForType(EntityType.BOAT, BoatController.class); - EntityControllers.setEntityControllerForType(EntityType.CAT, CatController.class); + EntityControllers.setEntityControllerForType(EntityType.BOGGED, BoggedController.class); + EntityControllers.setEntityControllerForType(EntityType.BREEZE, BreezeController.class); + EntityControllers.setEntityControllerForType(EntityType.BREEZE_WIND_CHARGE, BreezeWindChargeController.class); EntityControllers.setEntityControllerForType(EntityType.CAMEL, CamelController.class); + EntityControllers.setEntityControllerForType(EntityType.CAT, CatController.class); EntityControllers.setEntityControllerForType(EntityType.CAVE_SPIDER, CaveSpiderController.class); EntityControllers.setEntityControllerForType(EntityType.CHEST_BOAT, ChestBoatController.class); + EntityControllers.setEntityControllerForType(EntityType.CHEST_MINECART, MinecartChestController.class); EntityControllers.setEntityControllerForType(EntityType.CHICKEN, ChickenController.class); EntityControllers.setEntityControllerForType(EntityType.COD, CodController.class); + EntityControllers.setEntityControllerForType(EntityType.COMMAND_BLOCK_MINECART, + MinecartCommandController.class); EntityControllers.setEntityControllerForType(EntityType.COW, CowController.class); EntityControllers.setEntityControllerForType(EntityType.CREEPER, CreeperController.class); EntityControllers.setEntityControllerForType(EntityType.DOLPHIN, DolphinController.class); + EntityControllers.setEntityControllerForType(EntityType.DONKEY, HorseDonkeyController.class); EntityControllers.setEntityControllerForType(EntityType.DRAGON_FIREBALL, DragonFireballController.class); - EntityControllers.setEntityControllerForType(EntityType.DROPPED_ITEM, ItemController.class); EntityControllers.setEntityControllerForType(EntityType.DROWNED, DrownedController.class); EntityControllers.setEntityControllerForType(EntityType.EGG, EggController.class); EntityControllers.setEntityControllerForType(EntityType.ELDER_GUARDIAN, GuardianElderController.class); - EntityControllers.setEntityControllerForType(EntityType.ENDER_CRYSTAL, EnderCrystalController.class); + EntityControllers.setEntityControllerForType(EntityType.END_CRYSTAL, EnderCrystalController.class); EntityControllers.setEntityControllerForType(EntityType.ENDER_DRAGON, EnderDragonController.class); EntityControllers.setEntityControllerForType(EntityType.ENDER_PEARL, EnderPearlController.class); - EntityControllers.setEntityControllerForType(EntityType.ENDER_SIGNAL, EnderSignalController.class); EntityControllers.setEntityControllerForType(EntityType.ENDERMAN, EndermanController.class); EntityControllers.setEntityControllerForType(EntityType.ENDERMITE, EndermiteController.class); EntityControllers.setEntityControllerForType(EntityType.EVOKER, EvokerController.class); EntityControllers.setEntityControllerForType(EntityType.EVOKER_FANGS, EvokerFangsController.class); + EntityControllers.setEntityControllerForType(EntityType.EXPERIENCE_BOTTLE, ThrownExpBottleController.class); + EntityControllers.setEntityControllerForType(EntityType.EYE_OF_ENDER, EyeOfEnderController.class); EntityControllers.setEntityControllerForType(EntityType.FALLING_BLOCK, FallingBlockController.class); - EntityControllers.setEntityControllerForType(EntityType.FIREWORK, FireworkController.class); EntityControllers.setEntityControllerForType(EntityType.FIREBALL, LargeFireballController.class); - EntityControllers.setEntityControllerForType(EntityType.FISHING_HOOK, FishingHookController.class); + EntityControllers.setEntityControllerForType(EntityType.FIREWORK_ROCKET, FireworkController.class); + EntityControllers.setEntityControllerForType(EntityType.FISHING_BOBBER, FishingHookController.class); EntityControllers.setEntityControllerForType(EntityType.FOX, FoxController.class); EntityControllers.setEntityControllerForType(EntityType.FROG, FrogController.class); - EntityControllers.setEntityControllerForType(EntityType.TADPOLE, TadpoleController.class); + EntityControllers.setEntityControllerForType(EntityType.FURNACE_MINECART, MinecartFurnaceController.class); EntityControllers.setEntityControllerForType(EntityType.GHAST, GhastController.class); EntityControllers.setEntityControllerForType(EntityType.GIANT, GiantController.class); + EntityControllers.setEntityControllerForType(EntityType.GLOW_ITEM_FRAME, GlowItemFrameController.class); + EntityControllers.setEntityControllerForType(EntityType.GLOW_SQUID, GlowSquidController.class); EntityControllers.setEntityControllerForType(EntityType.GOAT, GoatController.class); EntityControllers.setEntityControllerForType(EntityType.GUARDIAN, GuardianController.class); + EntityControllers.setEntityControllerForType(EntityType.HOGLIN, HoglinController.class); + EntityControllers.setEntityControllerForType(EntityType.HOPPER_MINECART, MinecartHopperController.class); EntityControllers.setEntityControllerForType(EntityType.HORSE, HorseController.class); - EntityControllers.setEntityControllerForType(EntityType.DONKEY, HorseDonkeyController.class); - EntityControllers.setEntityControllerForType(EntityType.MULE, HorseMuleController.class); - EntityControllers.setEntityControllerForType(EntityType.SKELETON_HORSE, HorseSkeletonController.class); - EntityControllers.setEntityControllerForType(EntityType.ZOMBIE_HORSE, HorseZombieController.class); EntityControllers.setEntityControllerForType(EntityType.HUSK, ZombieHuskController.class); - EntityControllers.setEntityControllerForType(EntityType.IRON_GOLEM, IronGolemController.class); EntityControllers.setEntityControllerForType(EntityType.ILLUSIONER, IllusionerController.class); + EntityControllers.setEntityControllerForType(EntityType.INTERACTION, InteractionController.class); + EntityControllers.setEntityControllerForType(EntityType.IRON_GOLEM, IronGolemController.class); + EntityControllers.setEntityControllerForType(EntityType.ITEM, ItemController.class); + EntityControllers.setEntityControllerForType(EntityType.ITEM_DISPLAY, ItemDisplayController.class); EntityControllers.setEntityControllerForType(EntityType.ITEM_FRAME, ItemFrameController.class); - EntityControllers.setEntityControllerForType(EntityType.GLOW_ITEM_FRAME, GlowItemFrameController.class); - EntityControllers.setEntityControllerForType(EntityType.LEASH_HITCH, LeashController.class); + EntityControllers.setEntityControllerForType(EntityType.OMINOUS_ITEM_SPAWNER, + OminousItemSpawnerController.class); + EntityControllers.setEntityControllerForType(EntityType.LEASH_KNOT, LeashController.class); EntityControllers.setEntityControllerForType(EntityType.LLAMA, LlamaController.class); EntityControllers.setEntityControllerForType(EntityType.LLAMA_SPIT, LlamaSpitController.class); - EntityControllers.setEntityControllerForType(EntityType.TRADER_LLAMA, TraderLlamaController.class); - EntityControllers.setEntityControllerForType(EntityType.WANDERING_TRADER, WanderingTraderController.class); - EntityControllers.setEntityControllerForType(EntityType.MARKER, MarkerController.class); EntityControllers.setEntityControllerForType(EntityType.MAGMA_CUBE, MagmaCubeController.class); + EntityControllers.setEntityControllerForType(EntityType.MARKER, MarkerController.class); EntityControllers.setEntityControllerForType(EntityType.MINECART, MinecartRideableController.class); - EntityControllers.setEntityControllerForType(EntityType.MINECART_CHEST, MinecartChestController.class); - EntityControllers.setEntityControllerForType(EntityType.MINECART_COMMAND, MinecartCommandController.class); - EntityControllers.setEntityControllerForType(EntityType.MINECART_FURNACE, MinecartFurnaceController.class); - EntityControllers.setEntityControllerForType(EntityType.MINECART_HOPPER, MinecartHopperController.class); - EntityControllers.setEntityControllerForType(EntityType.MINECART_TNT, MinecartTNTController.class); - EntityControllers.setEntityControllerForType(EntityType.MUSHROOM_COW, MushroomCowController.class); - EntityControllers.setEntityControllerForType(EntityType.SPLASH_POTION, ThrownPotionController.class); + EntityControllers.setEntityControllerForType(EntityType.MOOSHROOM, MushroomCowController.class); + EntityControllers.setEntityControllerForType(EntityType.MULE, HorseMuleController.class); EntityControllers.setEntityControllerForType(EntityType.OCELOT, OcelotController.class); - EntityControllers.setEntityControllerForType(EntityType.PANDA, PandaController.class); EntityControllers.setEntityControllerForType(EntityType.PAINTING, PaintingController.class); + EntityControllers.setEntityControllerForType(EntityType.PANDA, PandaController.class); EntityControllers.setEntityControllerForType(EntityType.PARROT, ParrotController.class); EntityControllers.setEntityControllerForType(EntityType.PHANTOM, PhantomController.class); - EntityControllers.setEntityControllerForType(EntityType.PILLAGER, PillagerController.class); EntityControllers.setEntityControllerForType(EntityType.PIG, PigController.class); EntityControllers.setEntityControllerForType(EntityType.PIGLIN, PiglinController.class); EntityControllers.setEntityControllerForType(EntityType.PIGLIN_BRUTE, PiglinBruteController.class); - EntityControllers.setEntityControllerForType(EntityType.HOGLIN, HoglinController.class); - EntityControllers.setEntityControllerForType(EntityType.ZOMBIFIED_PIGLIN, PigZombieController.class); - EntityControllers.setEntityControllerForType(EntityType.ZOGLIN, ZoglinController.class); - EntityControllers.setEntityControllerForType(EntityType.POLAR_BEAR, PolarBearController.class); + EntityControllers.setEntityControllerForType(EntityType.PILLAGER, PillagerController.class); EntityControllers.setEntityControllerForType(EntityType.PLAYER, HumanController.class); + EntityControllers.setEntityControllerForType(EntityType.POLAR_BEAR, PolarBearController.class); + EntityControllers.setEntityControllerForType(EntityType.POTION, ThrownPotionController.class); + EntityControllers.setEntityControllerForType(EntityType.POTION, ThrownPotionController.class); EntityControllers.setEntityControllerForType(EntityType.PUFFERFISH, PufferFishController.class); EntityControllers.setEntityControllerForType(EntityType.RABBIT, RabbitController.class); EntityControllers.setEntityControllerForType(EntityType.RAVAGER, RavagerController.class); @@ -1055,39 +1065,42 @@ public class NMSImpl implements NMSBridge { EntityControllers.setEntityControllerForType(EntityType.SHULKER_BULLET, ShulkerBulletController.class); EntityControllers.setEntityControllerForType(EntityType.SILVERFISH, SilverfishController.class); EntityControllers.setEntityControllerForType(EntityType.SKELETON, SkeletonController.class); - EntityControllers.setEntityControllerForType(EntityType.STRAY, SkeletonStrayController.class); - EntityControllers.setEntityControllerForType(EntityType.STRIDER, StriderController.class); + EntityControllers.setEntityControllerForType(EntityType.SKELETON_HORSE, HorseSkeletonController.class); EntityControllers.setEntityControllerForType(EntityType.SLIME, SlimeController.class); EntityControllers.setEntityControllerForType(EntityType.SMALL_FIREBALL, SmallFireballController.class); + EntityControllers.setEntityControllerForType(EntityType.SNIFFER, SnifferController.class); + EntityControllers.setEntityControllerForType(EntityType.SNOW_GOLEM, SnowmanController.class); EntityControllers.setEntityControllerForType(EntityType.SNOWBALL, SnowballController.class); - EntityControllers.setEntityControllerForType(EntityType.SNOWMAN, SnowmanController.class); EntityControllers.setEntityControllerForType(EntityType.SPECTRAL_ARROW, SpectralArrowController.class); - EntityControllers.setEntityControllerForType(EntityType.SPIDER, SpiderController.class); - EntityControllers.setEntityControllerForType(EntityType.SPLASH_POTION, ThrownPotionController.class); - EntityControllers.setEntityControllerForType(EntityType.SQUID, SquidController.class); - EntityControllers.setEntityControllerForType(EntityType.GLOW_SQUID, GlowSquidController.class); EntityControllers.setEntityControllerForType(EntityType.SPECTRAL_ARROW, TippedArrowController.class); - EntityControllers.setEntityControllerForType(EntityType.THROWN_EXP_BOTTLE, ThrownExpBottleController.class); + EntityControllers.setEntityControllerForType(EntityType.SPIDER, SpiderController.class); + EntityControllers.setEntityControllerForType(EntityType.SQUID, SquidController.class); + EntityControllers.setEntityControllerForType(EntityType.STRAY, SkeletonStrayController.class); + EntityControllers.setEntityControllerForType(EntityType.STRIDER, StriderController.class); + EntityControllers.setEntityControllerForType(EntityType.TADPOLE, TadpoleController.class); + EntityControllers.setEntityControllerForType(EntityType.TEXT_DISPLAY, TextDisplayController.class); + EntityControllers.setEntityControllerForType(EntityType.TNT, TNTPrimedController.class); + EntityControllers.setEntityControllerForType(EntityType.TNT_MINECART, MinecartTNTController.class); + EntityControllers.setEntityControllerForType(EntityType.TRADER_LLAMA, TraderLlamaController.class); EntityControllers.setEntityControllerForType(EntityType.TRIDENT, ThrownTridentController.class); EntityControllers.setEntityControllerForType(EntityType.TROPICAL_FISH, TropicalFishController.class); EntityControllers.setEntityControllerForType(EntityType.TURTLE, TurtleController.class); - EntityControllers.setEntityControllerForType(EntityType.PRIMED_TNT, TNTPrimedController.class); EntityControllers.setEntityControllerForType(EntityType.VEX, VexController.class); EntityControllers.setEntityControllerForType(EntityType.VILLAGER, VillagerController.class); EntityControllers.setEntityControllerForType(EntityType.VINDICATOR, VindicatorController.class); + EntityControllers.setEntityControllerForType(EntityType.WANDERING_TRADER, WanderingTraderController.class); EntityControllers.setEntityControllerForType(EntityType.WARDEN, WardenController.class); - EntityControllers.setEntityControllerForType(EntityType.WOLF, WolfController.class); + EntityControllers.setEntityControllerForType(EntityType.WIND_CHARGE, WindChargeController.class); EntityControllers.setEntityControllerForType(EntityType.WITCH, WitchController.class); EntityControllers.setEntityControllerForType(EntityType.WITHER, WitherController.class); - EntityControllers.setEntityControllerForType(EntityType.WITHER_SKULL, WitherSkullController.class); EntityControllers.setEntityControllerForType(EntityType.WITHER_SKELETON, SkeletonWitherController.class); + EntityControllers.setEntityControllerForType(EntityType.WITHER_SKULL, WitherSkullController.class); + EntityControllers.setEntityControllerForType(EntityType.WOLF, WolfController.class); + EntityControllers.setEntityControllerForType(EntityType.ZOGLIN, ZoglinController.class); EntityControllers.setEntityControllerForType(EntityType.ZOMBIE, ZombieController.class); + EntityControllers.setEntityControllerForType(EntityType.ZOMBIE_HORSE, HorseZombieController.class); EntityControllers.setEntityControllerForType(EntityType.ZOMBIE_VILLAGER, ZombieVillagerController.class); - EntityControllers.setEntityControllerForType(EntityType.SNIFFER, SnifferController.class); - EntityControllers.setEntityControllerForType(EntityType.BLOCK_DISPLAY, BlockDisplayController.class); - EntityControllers.setEntityControllerForType(EntityType.TEXT_DISPLAY, TextDisplayController.class); - EntityControllers.setEntityControllerForType(EntityType.ITEM_DISPLAY, ItemDisplayController.class); - EntityControllers.setEntityControllerForType(EntityType.INTERACTION, InteractionController.class); + EntityControllers.setEntityControllerForType(EntityType.ZOMBIFIED_PIGLIN, PigZombieController.class); } @Override @@ -1305,9 +1318,9 @@ public class NMSImpl implements NMSBridge { while ((search = search.getSuperclass()) != null && Entity.class.isAssignableFrom(search)) { net.minecraft.world.entity.EntityType type = ENTITY_REGISTRY.findType(search); ResourceLocation key = ENTITY_REGISTRY.getKey(type); - if (key == null || type == null) { + if (key == null || type == null) continue; - } + CITIZENS_ENTITY_TYPES.put(clazz, type); int code = ENTITY_REGISTRY.getId(type); ENTITY_REGISTRY.put(code, key, type); @@ -1491,7 +1504,7 @@ public class NMSImpl implements NMSBridge { @Override public void setDimensions(org.bukkit.entity.Entity entity, EntityDim desired) { - setSize(getHandle(entity), new EntityDimensions(desired.width, desired.height, true)); + setSize(getHandle(entity), EntityDimensions.fixed(desired.width, desired.height)); } @Override @@ -1670,7 +1683,10 @@ public class NMSImpl implements NMSBridge { @Override public void setStepHeight(org.bukkit.entity.Entity entity, float height) { - getHandle(entity).setMaxUpStep(height); + Entity handle = getHandle(entity); + if (!(handle instanceof LivingEntity)) + return; + ((LivingEntity) handle).getAttribute(Attributes.STEP_HEIGHT).setBaseValue(height); } @Override @@ -2011,10 +2027,10 @@ public class NMSImpl implements NMSBridge { e.printStackTrace(); return; } - float oldw = size.width; - float oldl = size.height; + float oldw = size.width(); + float oldl = size.height(); cb.accept(datawatcherobject); - if (oldw != size.width || size.height != oldl) { + if (oldw != size.width() || size.height() != oldl) { living.setPos(living.getX() - 0.01, living.getY(), living.getZ() - 0.01); living.setPos(living.getX() + 0.01, living.getY(), living.getZ() + 0.01); } @@ -2399,13 +2415,13 @@ public class NMSImpl implements NMSBridge { } } - public static void setAttribute(LivingEntity entity, Attribute attribute, double value) { + public static void setAttribute(LivingEntity entity, Holder attribute, double value) { AttributeInstance attr = entity.getAttribute(attribute); if (attr == null) { try { AttributeSupplier provider = (AttributeSupplier) ATTRIBUTE_SUPPLIER.invoke(entity.getAttributes()); - Map all = Maps - .newHashMap((Map) ATTRIBUTE_PROVIDER_MAP.invoke(provider)); + Map, AttributeInstance> all = Maps.newHashMap( + (Map, AttributeInstance>) ATTRIBUTE_PROVIDER_MAP.invoke(provider)); all.put(attribute, new AttributeInstance(attribute, att -> { throw new UnsupportedOperationException( "Tried to change value for default attribute instance FOLLOW_RANGE"); @@ -2467,18 +2483,18 @@ public class NMSImpl implements NMSBridge { Pose entitypose = entity.getPose(); EntityDimensions entitysize1 = entity.getDimensions(entitypose); SIZE_FIELD_SETTER.invoke(entity, entitysize1); - HEAD_HEIGHT.invoke(entity, HEAD_HEIGHT_METHOD.invoke(entity, entitypose, entitysize1)); - if (entitysize1.width < entitysize.width && false /* TODO: PREVIOUS CITIZENS ADDITION ?reason */) { - double d0 = entitysize1.width / 2.0D; + HEAD_HEIGHT.invoke(entity, entity.getType().getDimensions().eyeHeight()); + if (entitysize1.width() < entitysize.width() && false /* TODO: PREVIOUS CITIZENS ADDITION ?reason */) { + double d0 = entitysize1.width() / 2.0D; entity.setBoundingBox(new AABB(entity.getX() - d0, entity.getY(), entity.getZ() - d0, - entity.getX() + d0, entity.getY() + entitysize1.height, entity.getZ() + d0)); + entity.getX() + d0, entity.getY() + entitysize1.height(), entity.getZ() + d0)); } else { AABB axisalignedbb = entity.getBoundingBox(); entity.setBoundingBox(new AABB(axisalignedbb.minX, axisalignedbb.minY, axisalignedbb.minZ, - axisalignedbb.minX + entitysize1.width, axisalignedbb.minY + entitysize1.height, - axisalignedbb.minZ + entitysize1.width)); - if (entitysize1.width > entitysize.width && !justCreated && !entity.level().isClientSide) { - float f = entitysize.width - entitysize1.width; + axisalignedbb.minX + entitysize1.width(), axisalignedbb.minY + entitysize1.height(), + axisalignedbb.minZ + entitysize1.width())); + if (entitysize1.width() > entitysize.width() && !justCreated && !entity.level().isClientSide) { + float f = entitysize.width() - entitysize1.width(); entity.move(MoverType.SELF, new Vec3(f, 0.0D, f)); } } @@ -2490,8 +2506,7 @@ public class NMSImpl implements NMSBridge { public static void setSize(Entity entity, EntityDimensions size) { try { SIZE_FIELD_SETTER.invoke(entity, size); - HEAD_HEIGHT.invoke(entity, - HEAD_HEIGHT_METHOD.invoke(entity, entity.getPose(), entity.getDimensions(entity.getPose()))); + HEAD_HEIGHT.invoke(entity, entity.getType().getDimensions().eyeHeight()); } catch (Throwable e) { e.printStackTrace(); } @@ -2584,7 +2599,7 @@ public class NMSImpl implements NMSBridge { public static final MethodHandle ENDERDRAGON_CHECK_WALLS = NMS.getFirstMethodHandleWithReturnType(EnderDragon.class, true, boolean.class, AABB.class); public static final MethodHandle ENDERDRAGON_HURT = NMS.getMethodHandle(EnderDragon.class, "c", true, List.class); - public static final MethodHandle ENDERDRAGON_KNOCKBACK = NMS.getMethodHandle(EnderDragon.class, "a", true, + public static final MethodHandle ENDERDRAGON_KNOCKBACK = NMS.getMethodHandle(EnderDragon.class, "b", true, List.class); private static EntityDataAccessor ENDERMAN_CREEPY = null; private static final MethodHandle ENTITY_FISH_NUM_IN_SCHOOL = NMS.getFirstSetter(AbstractSchoolingFish.class, @@ -2603,12 +2618,10 @@ public class NMSImpl implements NMSBridge { private static final MethodHandle FLYING_MOVECONTROL_FLOAT_SETTER = NMS.getFirstSetter(FlyingMoveControl.class, boolean.class); private static final Location FROM_LOCATION = new Location(null, 0, 0, 0); - private static final MethodHandle HEAD_HEIGHT = NMS.getSetter(Entity.class, "bi"); - private static final MethodHandle HEAD_HEIGHT_METHOD = NMS.getFirstMethodHandle(Entity.class, true, Pose.class, - EntityDimensions.class); + private static final MethodHandle HEAD_HEIGHT = NMS.getSetter(Entity.class, "bg"); private static EntityDataAccessor INTERACTION_HEIGHT = null; private static EntityDataAccessor INTERACTION_WIDTH = null; - private static final MethodHandle JUMP_FIELD = NMS.getGetter(LivingEntity.class, "bj"); + private static final MethodHandle JUMP_FIELD = NMS.getGetter(LivingEntity.class, "bn"); private static final MethodHandle LOOK_CONTROL_SETTER = NMS.getFirstSetter(Mob.class, LookControl.class); private static final MethodHandle MOVE_CONTROLLER_OPERATION = NMS.getSetter(MoveControl.class, "k"); private static final MethodHandle NAVIGATION_CREATE_PATHFINDER = NMS @@ -2617,20 +2630,16 @@ public class NMSImpl implements NMSBridge { private static final MethodHandle NAVIGATION_PATHFINDER = NMS.getFirstFinalSetter(PathNavigation.class, PathFinder.class); private static final MethodHandle NAVIGATION_WORLD_FIELD = NMS.getFirstSetter(PathNavigation.class, Level.class); - private static final Location PACKET_CACHE_LOCATION = new Location(null, 0, 0, 0); - private static final MethodHandle PLAYER_CHUNK_MAP_VIEW_DISTANCE_GETTER = NMS.getFirstGetter(ChunkMap.class, - int.class); - private static final MethodHandle PLAYER_CHUNK_MAP_VIEW_DISTANCE_SETTER = NMS.getFirstSetter(ChunkMap.class, - int.class); + private static final MethodHandle PLAYER_INFO_ENTRIES_LIST = NMS .getFirstFinalSetter(ClientboundPlayerInfoUpdatePacket.class, List.class); private static final MethodHandle PLAYERINFO_ENTRIES = PLAYER_INFO_ENTRIES_LIST; - private static final MethodHandle PORTAL_ENTRANCE_POS_GETTER = NMS.getGetter(Entity.class, "ax"); - private static final MethodHandle PORTAL_ENTRANCE_POS_SETTER = NMS.getSetter(Entity.class, "ax"); + private static final MethodHandle PORTAL_ENTRANCE_POS_GETTER = NMS.getGetter(Entity.class, "ay"); + private static final MethodHandle PORTAL_ENTRANCE_POS_SETTER = NMS.getSetter(Entity.class, "ay"); private static final MethodHandle POSITION_CODEC_GETTER = NMS.getFirstGetter(ServerEntity.class, VecDeltaCodec.class); - private static final MethodHandle PUFFERFISH_DEFLATE = NMS.getSetter(Pufferfish.class, "bU"); - private static final MethodHandle PUFFERFISH_INFLATE = NMS.getSetter(Pufferfish.class, "bT"); + private static final MethodHandle PUFFERFISH_DEFLATE = NMS.getSetter(Pufferfish.class, "bZ"); + private static final MethodHandle PUFFERFISH_INFLATE = NMS.getSetter(Pufferfish.class, "bY"); public static EntityDataAccessor RABBIT_TYPE_DATAWATCHER = null; private static final Random RANDOM = Util.getFastRandom(); private static final MethodHandle SERVER_ENTITY_GETTER = NMS.getFirstGetter(TrackedEntity.class, @@ -2647,35 +2656,29 @@ public class NMSImpl implements NMSBridge { ENTITY_REGISTRY_SETTER.invoke(ENTITY_REGISTRY); } catch (Throwable e) { Messaging.logTr(Messages.ERROR_GETTING_ID_MAPPING, e.getMessage()); - e.printStackTrace(); } try { // Middle one - ENDERMAN_CREEPY = (EntityDataAccessor) NMS.getField(EnderMan.class, "bV").get(null); + ENDERMAN_CREEPY = (EntityDataAccessor) NMS.getField(EnderMan.class, "ca").get(null); } catch (Exception e) { - e.printStackTrace(); } try { RABBIT_TYPE_DATAWATCHER = (EntityDataAccessor) NMS .getFirstStaticGetter(Rabbit.class, EntityDataAccessor.class).invoke(); } catch (Throwable e) { - e.printStackTrace(); } try { INTERACTION_HEIGHT = (EntityDataAccessor) NMS.getGetter(Interaction.class, "d").invoke(); } catch (Throwable e) { - e.printStackTrace(); } try { INTERACTION_WIDTH = (EntityDataAccessor) NMS.getGetter(Interaction.class, "c").invoke(); } catch (Throwable e) { - e.printStackTrace(); } try { - DATA_POSE = (EntityDataAccessor) NMS.getGetter(Entity.class, "as").invoke(); - DATA_NAME_VISIBLE = (EntityDataAccessor) NMS.getGetter(Entity.class, "aV").invoke(); + DATA_POSE = (EntityDataAccessor) NMS.getGetter(Entity.class, "at").invoke(); + DATA_NAME_VISIBLE = (EntityDataAccessor) NMS.getGetter(Entity.class, "aT").invoke(); } catch (Throwable e) { - e.printStackTrace(); } } } diff --git a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/util/PitchableLookControl.java b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/util/PitchableLookControl.java similarity index 94% rename from v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/util/PitchableLookControl.java rename to v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/util/PitchableLookControl.java index f97c8484b..a91ceacf9 100644 --- a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/util/PitchableLookControl.java +++ b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/util/PitchableLookControl.java @@ -1,4 +1,4 @@ -package net.citizensnpcs.nms.v1_20_R3.util; +package net.citizensnpcs.nms.v1_20_R4.util; import java.util.function.Supplier; diff --git a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/util/PlayerAnimationImpl.java b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/util/PlayerAnimationImpl.java similarity index 98% rename from v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/util/PlayerAnimationImpl.java rename to v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/util/PlayerAnimationImpl.java index 92815b308..d8816356f 100644 --- a/v1_20_R3/src/main/java/net/citizensnpcs/nms/v1_20_R3/util/PlayerAnimationImpl.java +++ b/v1_20_R4/src/main/java/net/citizensnpcs/nms/v1_20_R4/util/PlayerAnimationImpl.java @@ -1,4 +1,4 @@ -package net.citizensnpcs.nms.v1_20_R3.util; +package net.citizensnpcs.nms.v1_20_R4.util; import java.util.Map; diff --git a/v1_8_R3/pom.xml b/v1_8_R3/pom.xml index fbe987ca0..9e3a0935b 100644 --- a/v1_8_R3/pom.xml +++ b/v1_8_R3/pom.xml @@ -6,7 +6,7 @@ net.citizensnpcs citizens-parent - 2.0.33-SNAPSHOT + 2.0.34-SNAPSHOT citizens-v1_8_R3