From 0e0be185dcd6f8ee432e59a15906008fbb8a8fe0 Mon Sep 17 00:00:00 2001 From: Sage M Date: Mon, 6 Dec 2021 21:35:30 -0600 Subject: [PATCH 01/11] Modulization of NMS versions for 1.18+ --- plugin/pom.xml | 173 ++++++++ .../libraryaddict/disguise/DisguiseAPI.java | 0 .../disguise/DisguiseConfig.java | 0 .../libraryaddict/disguise/LibsDisguises.java | 0 .../commands/DisguiseBaseCommand.java | 0 .../commands/LibsDisguisesCommand.java | 0 .../commands/disguise/DisguiseCommand.java | 0 .../disguise/DisguiseEntityCommand.java | 0 .../disguise/DisguisePlayerCommand.java | 0 .../disguise/DisguiseRadiusCommand.java | 0 .../interactions/CopyDisguiseInteraction.java | 0 .../DisguiseCloneInteraction.java | 0 .../DisguiseEntityInteraction.java | 0 .../DisguiseModifyInteraction.java | 0 .../UndisguiseEntityInteraction.java | 0 .../commands/libsdisguises/LDChangelog.java | 0 .../commands/libsdisguises/LDCommand.java | 0 .../commands/libsdisguises/LDConfig.java | 0 .../commands/libsdisguises/LDCount.java | 0 .../libsdisguises/LDDebugMineSkin.java | 0 .../commands/libsdisguises/LDDebugPlayer.java | 0 .../commands/libsdisguises/LDHelp.java | 0 .../commands/libsdisguises/LDJson.java | 0 .../commands/libsdisguises/LDMetaInfo.java | 0 .../commands/libsdisguises/LDMods.java | 0 .../commands/libsdisguises/LDPermTest.java | 0 .../commands/libsdisguises/LDReload.java | 0 .../commands/libsdisguises/LDScoreboard.java | 0 .../commands/libsdisguises/LDUpdate.java | 0 .../libsdisguises/LDUpdateProtocolLib.java | 0 .../commands/libsdisguises/LDUploadLogs.java | 0 .../modify/DisguiseModifyCommand.java | 0 .../modify/DisguiseModifyEntityCommand.java | 0 .../modify/DisguiseModifyPlayerCommand.java | 0 .../modify/DisguiseModifyRadiusCommand.java | 0 .../undisguise/UndisguiseCommand.java | 0 .../undisguise/UndisguiseEntityCommand.java | 0 .../undisguise/UndisguisePlayerCommand.java | 0 .../undisguise/UndisguiseRadiusCommand.java | 0 .../commands/utils/CopyDisguiseCommand.java | 0 .../commands/utils/DisguiseCloneCommand.java | 0 .../commands/utils/DisguiseHelpCommand.java | 0 .../utils/DisguiseViewBarCommand.java | 0 .../utils/DisguiseViewSelfCommand.java | 0 .../commands/utils/GrabHeadCommand.java | 0 .../commands/utils/GrabSkinCommand.java | 0 .../commands/utils/SaveDisguiseCommand.java | 0 .../disguise/disguisetypes/AnimalColor.java | 0 .../disguise/disguisetypes/Disguise.java | 0 .../disguisetypes/DisguiseRunnable.java | 0 .../disguise/disguisetypes/DisguiseType.java | 0 .../disguise/disguisetypes/EntityPose.java | 0 .../disguise/disguisetypes/FlagWatcher.java | 0 .../disguise/disguisetypes/GolemCrack.java | 0 .../disguise/disguisetypes/LibsEquipment.java | 0 .../disguise/disguisetypes/MetaIndex.java | 0 .../disguise/disguisetypes/MiscDisguise.java | 0 .../disguise/disguisetypes/MobDisguise.java | 0 .../disguisetypes/ModdedDisguise.java | 0 .../disguisetypes/PlayerDisguise.java | 0 .../disguise/disguisetypes/RabbitType.java | 0 .../disguisetypes/TargetedDisguise.java | 0 .../disguise/disguisetypes/VillagerData.java | 0 .../watchers/AbstractHorseWatcher.java | 0 .../watchers/AbstractSkeletonWatcher.java | 0 .../watchers/AbstractVillagerWatcher.java | 0 .../watchers/AgeableWatcher.java | 0 .../watchers/AreaEffectCloudWatcher.java | 0 .../watchers/ArmorStandWatcher.java | 0 .../disguisetypes/watchers/ArrowWatcher.java | 0 .../watchers/AxolotlWatcher.java | 0 .../disguisetypes/watchers/BatWatcher.java | 0 .../disguisetypes/watchers/BeeWatcher.java | 0 .../disguisetypes/watchers/BlazeWatcher.java | 0 .../disguisetypes/watchers/BoatWatcher.java | 0 .../disguisetypes/watchers/CatWatcher.java | 0 .../watchers/ChestedHorseWatcher.java | 0 .../watchers/CreeperWatcher.java | 0 .../watchers/DolphinWatcher.java | 0 .../disguisetypes/watchers/DonkeyWatcher.java | 0 .../watchers/DroppedItemWatcher.java | 0 .../disguisetypes/watchers/EggWatcher.java | 0 .../watchers/EnderCrystalWatcher.java | 0 .../watchers/EnderDragonWatcher.java | 0 .../watchers/EnderPearlWatcher.java | 0 .../watchers/EnderSignalWatcher.java | 0 .../watchers/EndermanWatcher.java | 0 .../watchers/FallingBlockWatcher.java | 0 .../watchers/FireballWatcher.java | 0 .../watchers/FireworkWatcher.java | 0 .../disguisetypes/watchers/FishWatcher.java | 0 .../watchers/FishingHookWatcher.java | 0 .../disguisetypes/watchers/FoxWatcher.java | 0 .../disguisetypes/watchers/GhastWatcher.java | 0 .../watchers/GlowSquidWatcher.java | 0 .../disguisetypes/watchers/GoatWatcher.java | 0 .../watchers/GuardianWatcher.java | 0 .../disguisetypes/watchers/HoglinWatcher.java | 0 .../disguisetypes/watchers/HorseWatcher.java | 0 .../watchers/IllagerWatcher.java | 0 .../watchers/IllagerWizardWatcher.java | 0 .../watchers/InsentientWatcher.java | 0 .../watchers/IronGolemWatcher.java | 0 .../watchers/ItemFrameWatcher.java | 0 .../disguisetypes/watchers/LivingWatcher.java | 0 .../disguisetypes/watchers/LlamaWatcher.java | 0 .../watchers/MinecartCommandWatcher.java | 0 .../watchers/MinecartFurnaceWatcher.java | 0 .../watchers/MinecartWatcher.java | 0 .../disguisetypes/watchers/ModdedWatcher.java | 0 .../disguisetypes/watchers/MuleWatcher.java | 0 .../watchers/MushroomCowWatcher.java | 0 .../disguisetypes/watchers/OcelotWatcher.java | 0 .../watchers/PaintingWatcher.java | 0 .../disguisetypes/watchers/PandaWatcher.java | 0 .../disguisetypes/watchers/ParrotWatcher.java | 0 .../watchers/PhantomWatcher.java | 0 .../disguisetypes/watchers/PigWatcher.java | 0 .../watchers/PiglinAbstractWatcher.java | 0 .../watchers/PiglinBruteWatcher.java | 0 .../disguisetypes/watchers/PiglinWatcher.java | 0 .../watchers/PillagerWatcher.java | 0 .../disguisetypes/watchers/PlayerWatcher.java | 0 .../watchers/PolarBearWatcher.java | 0 .../watchers/PufferFishWatcher.java | 0 .../disguisetypes/watchers/RabbitWatcher.java | 0 .../disguisetypes/watchers/RaiderWatcher.java | 0 .../watchers/RavagerWatcher.java | 0 .../disguisetypes/watchers/SheepWatcher.java | 0 .../watchers/ShulkerWatcher.java | 0 .../watchers/SkeletonHorseWatcher.java | 0 .../watchers/SkeletonWatcher.java | 0 .../disguisetypes/watchers/SlimeWatcher.java | 0 .../watchers/SmallFireballWatcher.java | 0 .../watchers/SnowballWatcher.java | 0 .../watchers/SnowmanWatcher.java | 0 .../disguisetypes/watchers/SpiderWatcher.java | 0 .../watchers/SplashPotionWatcher.java | 0 .../disguisetypes/watchers/SquidWatcher.java | 0 .../disguisetypes/watchers/StrayWatcher.java | 0 .../watchers/StriderWatcher.java | 0 .../disguisetypes/watchers/TNTWatcher.java | 0 .../watchers/TameableWatcher.java | 0 .../watchers/ThrowableWatcher.java | 0 .../watchers/ThrownExpBottleWatcher.java | 0 .../watchers/TippedArrowWatcher.java | 0 .../watchers/TraderLlamaWatcher.java | 0 .../watchers/TridentWatcher.java | 0 .../watchers/TropicalFishWatcher.java | 0 .../disguisetypes/watchers/TurtleWatcher.java | 0 .../disguisetypes/watchers/VexWatcher.java | 0 .../watchers/VillagerWatcher.java | 0 .../watchers/VindicatorWatcher.java | 0 .../watchers/WanderingTraderWatcher.java | 0 .../disguisetypes/watchers/WitchWatcher.java | 0 .../watchers/WitherSkeletonWatcher.java | 0 .../watchers/WitherSkullWatcher.java | 0 .../disguisetypes/watchers/WitherWatcher.java | 0 .../disguisetypes/watchers/WolfWatcher.java | 0 .../disguisetypes/watchers/ZoglinWatcher.java | 0 .../watchers/ZombieHorseWatcher.java | 0 .../watchers/ZombieVillagerWatcher.java | 0 .../disguisetypes/watchers/ZombieWatcher.java | 0 .../disguise/events/DisguiseEvent.java | 0 .../events/DisguiseInteractEvent.java | 0 .../disguise/events/UndisguiseEvent.java | 0 .../disguise/utilities/DisguiseUtilities.java | 0 .../disguise/utilities/DisguiseValues.java | 0 .../utilities/LibsEntityInteract.java | 0 .../disguise/utilities/LibsPremium.java | 0 .../disguise/utilities/SkinUtils.java | 0 .../utilities/config/ConfigLoader.java | 0 .../config/DisguiseCommandConfig.java | 0 .../utilities/json/SerializerBlockData.java | 0 .../json/SerializerChatComponent.java | 0 .../utilities/json/SerializerDisguise.java | 0 .../utilities/json/SerializerFlagWatcher.java | 0 .../utilities/json/SerializerGameProfile.java | 0 .../utilities/json/SerializerItemStack.java | 0 .../utilities/json/SerializerMetaIndex.java | 0 .../utilities/json/SerializerParticle.java | 0 .../json/SerializerWrappedBlockData.java | 0 .../utilities/listeners/DisguiseListener.java | 0 .../utilities/listeners/ModdedListener.java | 0 .../listeners/PaperDisguiseListener.java | 0 .../listeners/PlayerSkinHandler.java | 0 .../disguise/utilities/metrics/Metrics.java | 0 .../utilities/metrics/MetricsInitalizer.java | 0 .../utilities/mineskin/MineSkinAPI.java | 0 .../utilities/mineskin/MineSkinResponse.java | 0 .../utilities/modded/ModdedEntity.java | 0 .../utilities/modded/ModdedManager.java | 0 .../utilities/packets/IPacketHandler.java | 0 .../utilities/packets/LibsPackets.java | 0 .../utilities/packets/PacketsHandler.java | 0 .../utilities/packets/PacketsManager.java | 0 .../PacketHandlerAnimation.java | 0 .../PacketHandlerAttachEntity.java | 0 .../PacketHandlerAttributes.java | 0 .../packethandlers/PacketHandlerCollect.java | 0 .../PacketHandlerEntityStatus.java | 0 .../PacketHandlerEquipment.java | 0 .../PacketHandlerHeadRotation.java | 0 .../packethandlers/PacketHandlerMetadata.java | 0 .../packethandlers/PacketHandlerMovement.java | 0 .../packethandlers/PacketHandlerSpawn.java | 0 .../packethandlers/PacketHandlerVelocity.java | 0 .../PacketListenerClientCustomPayload.java | 0 .../PacketListenerClientInteract.java | 0 .../PacketListenerEntityDestroy.java | 0 .../PacketListenerInventory.java | 0 .../packetlisteners/PacketListenerMain.java | 0 .../PacketListenerModdedClient.java | 0 .../PacketListenerScoreboardTeam.java | 0 .../packetlisteners/PacketListenerSounds.java | 0 .../PacketListenerTabList.java | 0 .../PacketListenerViewSelfDisguise.java | 0 .../disguise/utilities/params/ParamInfo.java | 0 .../utilities/params/ParamInfoManager.java | 0 .../utilities/params/ParamInfoTypes.java | 0 .../utilities/params/types/ParamInfoEnum.java | 0 .../params/types/base/ParamInfoBoolean.java | 0 .../params/types/base/ParamInfoDouble.java | 0 .../params/types/base/ParamInfoFloat.java | 0 .../types/base/ParamInfoFloatNullable.java | 0 .../params/types/base/ParamInfoInteger.java | 0 .../params/types/base/ParamInfoString.java | 0 .../types/custom/ParamInfoBlockData.java | 0 .../types/custom/ParamInfoBlockPosition.java | 0 .../types/custom/ParamInfoChatColor.java | 0 .../params/types/custom/ParamInfoColor.java | 0 .../types/custom/ParamInfoEulerAngle.java | 0 .../types/custom/ParamInfoGameProfile.java | 0 .../types/custom/ParamInfoItemBlock.java | 0 .../types/custom/ParamInfoItemStack.java | 0 .../types/custom/ParamInfoItemStackArray.java | 0 .../types/custom/ParamInfoParticle.java | 0 .../types/custom/ParamInfoPotionEffect.java | 0 .../types/custom/ParamInfoSoundGroup.java | 0 .../params/types/custom/ParamInfoTime.java | 0 .../parser/DisguiseParseException.java | 0 .../utilities/parser/DisguiseParser.java | 0 .../utilities/parser/DisguisePerm.java | 0 .../utilities/parser/DisguisePermissions.java | 0 .../utilities/parser/ParsedDisguise.java | 0 .../utilities/parser/RandomDefaultValue.java | 0 .../utilities/parser/WatcherMethod.java | 0 .../utilities/plugin/BisectHosting.java | 0 .../utilities/plugin/PluginInformation.java | 0 .../utilities/reflection/ClassGetter.java | 0 .../utilities/reflection/FakeBoundingBox.java | 0 .../reflection/LibsProfileLookup.java | 0 .../reflection/LibsProfileLookupCaller.java | 0 .../utilities/reflection/NmsAddedIn.java | 0 .../utilities/reflection/NmsRemovedIn.java | 0 .../utilities/reflection/NmsVersion.java | 3 +- .../reflection/ReflectionManager.java | 265 ++++++++++- .../utilities/reflection/WatcherInfo.java | 0 .../utilities/sounds/DisguiseSoundEnums.java | 0 .../disguise/utilities/sounds/SoundGroup.java | 0 .../utilities/sounds/SoundManager.java | 0 .../utilities/translations/LibsMsg.java | 0 .../translations/TranslateFiller.java | 0 .../utilities/translations/TranslateType.java | 0 .../utilities/updates/DisguiseUpdate.java | 0 .../disguise/utilities/updates/LDGithub.java | 0 .../disguise/utilities/updates/LDJenkins.java | 0 .../utilities/updates/UpdateChecker.java | 0 .../utilities/watchers/CompileMethods.java | 2 + .../utilities/watchers/DisguiseMethods.java | 0 .../src}/main/resources/configs/combat.yml | 0 .../src}/main/resources/configs/commands.yml | 0 .../src}/main/resources/configs/disguises.yml | 0 .../src}/main/resources/configs/features.yml | 0 .../main/resources/configs/libsdisguises.yml | 0 .../src}/main/resources/configs/nametags.yml | 0 .../src}/main/resources/configs/players.yml | 0 .../src}/main/resources/configs/protocol.yml | 0 .../src}/main/resources/configs/sanity.yml | 0 .../src}/main/resources/configs/sounds.yml | 0 .../src}/main/resources/internal.yml | 0 {src => plugin/src}/main/resources/plugin.yml | 0 .../disguisetypes/DisguiseCloneTest.java | 0 .../disguise/utilities/DisguiseTypesTest.java | 0 .../utilities/DisguiseUtilitiesTest.java | 0 .../parser/DisguisePermissionsTest.java | 0 pom.xml | 176 ++------ shared/pom.xml | 29 ++ .../reflection/ReflectionManagerAbstract.java | 140 ++++++ v1_18_R1/pom.xml | 79 ++++ .../reflection/ReflectionManager.java | 414 ++++++++++++++++++ 291 files changed, 1119 insertions(+), 162 deletions(-) create mode 100644 plugin/pom.xml rename {src => plugin/src}/main/java/me/libraryaddict/disguise/DisguiseAPI.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/DisguiseConfig.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/LibsDisguises.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/commands/DisguiseBaseCommand.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/commands/LibsDisguisesCommand.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/commands/disguise/DisguiseCommand.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/commands/disguise/DisguiseEntityCommand.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/commands/disguise/DisguisePlayerCommand.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/commands/disguise/DisguiseRadiusCommand.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/commands/interactions/CopyDisguiseInteraction.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/commands/interactions/DisguiseCloneInteraction.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/commands/interactions/DisguiseEntityInteraction.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/commands/interactions/DisguiseModifyInteraction.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/commands/interactions/UndisguiseEntityInteraction.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/commands/libsdisguises/LDChangelog.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/commands/libsdisguises/LDCommand.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/commands/libsdisguises/LDConfig.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/commands/libsdisguises/LDCount.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/commands/libsdisguises/LDDebugMineSkin.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/commands/libsdisguises/LDDebugPlayer.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/commands/libsdisguises/LDHelp.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/commands/libsdisguises/LDJson.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/commands/libsdisguises/LDMetaInfo.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/commands/libsdisguises/LDMods.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/commands/libsdisguises/LDPermTest.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/commands/libsdisguises/LDReload.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/commands/libsdisguises/LDScoreboard.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/commands/libsdisguises/LDUpdate.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/commands/libsdisguises/LDUpdateProtocolLib.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/commands/libsdisguises/LDUploadLogs.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/commands/modify/DisguiseModifyCommand.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/commands/modify/DisguiseModifyEntityCommand.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/commands/modify/DisguiseModifyPlayerCommand.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/commands/modify/DisguiseModifyRadiusCommand.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/commands/undisguise/UndisguiseCommand.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/commands/undisguise/UndisguiseEntityCommand.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/commands/undisguise/UndisguisePlayerCommand.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/commands/undisguise/UndisguiseRadiusCommand.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/commands/utils/CopyDisguiseCommand.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/commands/utils/DisguiseCloneCommand.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/commands/utils/DisguiseHelpCommand.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/commands/utils/DisguiseViewBarCommand.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/commands/utils/DisguiseViewSelfCommand.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/commands/utils/GrabHeadCommand.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/commands/utils/GrabSkinCommand.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/commands/utils/SaveDisguiseCommand.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/disguisetypes/AnimalColor.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/disguisetypes/Disguise.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/disguisetypes/DisguiseRunnable.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/disguisetypes/DisguiseType.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/disguisetypes/EntityPose.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/disguisetypes/FlagWatcher.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/disguisetypes/GolemCrack.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/disguisetypes/LibsEquipment.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/disguisetypes/MetaIndex.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/disguisetypes/MiscDisguise.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/disguisetypes/MobDisguise.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/disguisetypes/ModdedDisguise.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/disguisetypes/PlayerDisguise.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/disguisetypes/RabbitType.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/disguisetypes/TargetedDisguise.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/disguisetypes/VillagerData.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/disguisetypes/watchers/AbstractHorseWatcher.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/disguisetypes/watchers/AbstractSkeletonWatcher.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/disguisetypes/watchers/AbstractVillagerWatcher.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/disguisetypes/watchers/AgeableWatcher.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/disguisetypes/watchers/AreaEffectCloudWatcher.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/disguisetypes/watchers/ArmorStandWatcher.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/disguisetypes/watchers/ArrowWatcher.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/disguisetypes/watchers/AxolotlWatcher.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/disguisetypes/watchers/BatWatcher.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/disguisetypes/watchers/BeeWatcher.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/disguisetypes/watchers/BlazeWatcher.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/disguisetypes/watchers/BoatWatcher.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/disguisetypes/watchers/CatWatcher.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/disguisetypes/watchers/ChestedHorseWatcher.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/disguisetypes/watchers/CreeperWatcher.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/disguisetypes/watchers/DolphinWatcher.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/disguisetypes/watchers/DonkeyWatcher.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/disguisetypes/watchers/DroppedItemWatcher.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/disguisetypes/watchers/EggWatcher.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/disguisetypes/watchers/EnderCrystalWatcher.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/disguisetypes/watchers/EnderDragonWatcher.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/disguisetypes/watchers/EnderPearlWatcher.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/disguisetypes/watchers/EnderSignalWatcher.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/disguisetypes/watchers/EndermanWatcher.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/disguisetypes/watchers/FallingBlockWatcher.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/disguisetypes/watchers/FireballWatcher.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/disguisetypes/watchers/FireworkWatcher.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/disguisetypes/watchers/FishWatcher.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/disguisetypes/watchers/FishingHookWatcher.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/disguisetypes/watchers/FoxWatcher.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/disguisetypes/watchers/GhastWatcher.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/disguisetypes/watchers/GlowSquidWatcher.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/disguisetypes/watchers/GoatWatcher.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/disguisetypes/watchers/GuardianWatcher.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/disguisetypes/watchers/HoglinWatcher.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/disguisetypes/watchers/HorseWatcher.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/disguisetypes/watchers/IllagerWatcher.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/disguisetypes/watchers/IllagerWizardWatcher.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/disguisetypes/watchers/InsentientWatcher.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/disguisetypes/watchers/IronGolemWatcher.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/disguisetypes/watchers/ItemFrameWatcher.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/disguisetypes/watchers/LivingWatcher.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/disguisetypes/watchers/LlamaWatcher.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/disguisetypes/watchers/MinecartCommandWatcher.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/disguisetypes/watchers/MinecartFurnaceWatcher.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/disguisetypes/watchers/MinecartWatcher.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/disguisetypes/watchers/ModdedWatcher.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/disguisetypes/watchers/MuleWatcher.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/disguisetypes/watchers/MushroomCowWatcher.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/disguisetypes/watchers/OcelotWatcher.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/disguisetypes/watchers/PaintingWatcher.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/disguisetypes/watchers/PandaWatcher.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/disguisetypes/watchers/ParrotWatcher.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/disguisetypes/watchers/PhantomWatcher.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/disguisetypes/watchers/PigWatcher.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/disguisetypes/watchers/PiglinAbstractWatcher.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/disguisetypes/watchers/PiglinBruteWatcher.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/disguisetypes/watchers/PiglinWatcher.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/disguisetypes/watchers/PillagerWatcher.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/disguisetypes/watchers/PlayerWatcher.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/disguisetypes/watchers/PolarBearWatcher.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/disguisetypes/watchers/PufferFishWatcher.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/disguisetypes/watchers/RabbitWatcher.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/disguisetypes/watchers/RaiderWatcher.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/disguisetypes/watchers/RavagerWatcher.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/disguisetypes/watchers/SheepWatcher.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/disguisetypes/watchers/ShulkerWatcher.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/disguisetypes/watchers/SkeletonHorseWatcher.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/disguisetypes/watchers/SkeletonWatcher.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/disguisetypes/watchers/SlimeWatcher.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/disguisetypes/watchers/SmallFireballWatcher.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/disguisetypes/watchers/SnowballWatcher.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/disguisetypes/watchers/SnowmanWatcher.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/disguisetypes/watchers/SpiderWatcher.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/disguisetypes/watchers/SplashPotionWatcher.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/disguisetypes/watchers/SquidWatcher.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/disguisetypes/watchers/StrayWatcher.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/disguisetypes/watchers/StriderWatcher.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/disguisetypes/watchers/TNTWatcher.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/disguisetypes/watchers/TameableWatcher.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/disguisetypes/watchers/ThrowableWatcher.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/disguisetypes/watchers/ThrownExpBottleWatcher.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/disguisetypes/watchers/TippedArrowWatcher.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/disguisetypes/watchers/TraderLlamaWatcher.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/disguisetypes/watchers/TridentWatcher.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/disguisetypes/watchers/TropicalFishWatcher.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/disguisetypes/watchers/TurtleWatcher.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/disguisetypes/watchers/VexWatcher.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/disguisetypes/watchers/VillagerWatcher.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/disguisetypes/watchers/VindicatorWatcher.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/disguisetypes/watchers/WanderingTraderWatcher.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/disguisetypes/watchers/WitchWatcher.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/disguisetypes/watchers/WitherSkeletonWatcher.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/disguisetypes/watchers/WitherSkullWatcher.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/disguisetypes/watchers/WitherWatcher.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/disguisetypes/watchers/WolfWatcher.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/disguisetypes/watchers/ZoglinWatcher.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/disguisetypes/watchers/ZombieHorseWatcher.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/disguisetypes/watchers/ZombieVillagerWatcher.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/disguisetypes/watchers/ZombieWatcher.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/events/DisguiseEvent.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/events/DisguiseInteractEvent.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/events/UndisguiseEvent.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/utilities/DisguiseUtilities.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/utilities/DisguiseValues.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/utilities/LibsEntityInteract.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/utilities/LibsPremium.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/utilities/SkinUtils.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/utilities/config/ConfigLoader.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/utilities/config/DisguiseCommandConfig.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/utilities/json/SerializerBlockData.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/utilities/json/SerializerChatComponent.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/utilities/json/SerializerDisguise.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/utilities/json/SerializerFlagWatcher.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/utilities/json/SerializerGameProfile.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/utilities/json/SerializerItemStack.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/utilities/json/SerializerMetaIndex.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/utilities/json/SerializerParticle.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/utilities/json/SerializerWrappedBlockData.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/utilities/listeners/DisguiseListener.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/utilities/listeners/ModdedListener.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/utilities/listeners/PaperDisguiseListener.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/utilities/listeners/PlayerSkinHandler.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/utilities/metrics/Metrics.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/utilities/metrics/MetricsInitalizer.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/utilities/mineskin/MineSkinAPI.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/utilities/mineskin/MineSkinResponse.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/utilities/modded/ModdedEntity.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/utilities/modded/ModdedManager.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/utilities/packets/IPacketHandler.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/utilities/packets/LibsPackets.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/utilities/packets/PacketsHandler.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/utilities/packets/PacketsManager.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/utilities/packets/packethandlers/PacketHandlerAnimation.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/utilities/packets/packethandlers/PacketHandlerAttachEntity.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/utilities/packets/packethandlers/PacketHandlerAttributes.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/utilities/packets/packethandlers/PacketHandlerCollect.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/utilities/packets/packethandlers/PacketHandlerEntityStatus.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/utilities/packets/packethandlers/PacketHandlerEquipment.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/utilities/packets/packethandlers/PacketHandlerHeadRotation.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/utilities/packets/packethandlers/PacketHandlerMetadata.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/utilities/packets/packethandlers/PacketHandlerMovement.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/utilities/packets/packethandlers/PacketHandlerSpawn.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/utilities/packets/packethandlers/PacketHandlerVelocity.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/utilities/packets/packetlisteners/PacketListenerClientCustomPayload.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/utilities/packets/packetlisteners/PacketListenerClientInteract.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/utilities/packets/packetlisteners/PacketListenerEntityDestroy.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/utilities/packets/packetlisteners/PacketListenerInventory.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/utilities/packets/packetlisteners/PacketListenerMain.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/utilities/packets/packetlisteners/PacketListenerModdedClient.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/utilities/packets/packetlisteners/PacketListenerScoreboardTeam.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/utilities/packets/packetlisteners/PacketListenerSounds.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/utilities/packets/packetlisteners/PacketListenerTabList.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/utilities/packets/packetlisteners/PacketListenerViewSelfDisguise.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/utilities/params/ParamInfo.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/utilities/params/ParamInfoManager.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/utilities/params/ParamInfoTypes.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/utilities/params/types/ParamInfoEnum.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/utilities/params/types/base/ParamInfoBoolean.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/utilities/params/types/base/ParamInfoDouble.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/utilities/params/types/base/ParamInfoFloat.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/utilities/params/types/base/ParamInfoFloatNullable.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/utilities/params/types/base/ParamInfoInteger.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/utilities/params/types/base/ParamInfoString.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/utilities/params/types/custom/ParamInfoBlockData.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/utilities/params/types/custom/ParamInfoBlockPosition.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/utilities/params/types/custom/ParamInfoChatColor.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/utilities/params/types/custom/ParamInfoColor.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/utilities/params/types/custom/ParamInfoEulerAngle.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/utilities/params/types/custom/ParamInfoGameProfile.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/utilities/params/types/custom/ParamInfoItemBlock.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/utilities/params/types/custom/ParamInfoItemStack.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/utilities/params/types/custom/ParamInfoItemStackArray.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/utilities/params/types/custom/ParamInfoParticle.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/utilities/params/types/custom/ParamInfoPotionEffect.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/utilities/params/types/custom/ParamInfoSoundGroup.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/utilities/params/types/custom/ParamInfoTime.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/utilities/parser/DisguiseParseException.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/utilities/parser/DisguiseParser.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/utilities/parser/DisguisePerm.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/utilities/parser/DisguisePermissions.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/utilities/parser/ParsedDisguise.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/utilities/parser/RandomDefaultValue.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/utilities/parser/WatcherMethod.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/utilities/plugin/BisectHosting.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/utilities/plugin/PluginInformation.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/utilities/reflection/ClassGetter.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/utilities/reflection/FakeBoundingBox.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/utilities/reflection/LibsProfileLookup.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/utilities/reflection/LibsProfileLookupCaller.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/utilities/reflection/NmsAddedIn.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/utilities/reflection/NmsRemovedIn.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/utilities/reflection/NmsVersion.java (95%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/utilities/reflection/ReflectionManager.java (89%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/utilities/reflection/WatcherInfo.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/utilities/sounds/DisguiseSoundEnums.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/utilities/sounds/SoundGroup.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/utilities/sounds/SoundManager.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/utilities/translations/LibsMsg.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/utilities/translations/TranslateFiller.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/utilities/translations/TranslateType.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/utilities/updates/DisguiseUpdate.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/utilities/updates/LDGithub.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/utilities/updates/LDJenkins.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/utilities/updates/UpdateChecker.java (100%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/utilities/watchers/CompileMethods.java (98%) rename {src => plugin/src}/main/java/me/libraryaddict/disguise/utilities/watchers/DisguiseMethods.java (100%) rename {src => plugin/src}/main/resources/configs/combat.yml (100%) rename {src => plugin/src}/main/resources/configs/commands.yml (100%) rename {src => plugin/src}/main/resources/configs/disguises.yml (100%) rename {src => plugin/src}/main/resources/configs/features.yml (100%) rename {src => plugin/src}/main/resources/configs/libsdisguises.yml (100%) rename {src => plugin/src}/main/resources/configs/nametags.yml (100%) rename {src => plugin/src}/main/resources/configs/players.yml (100%) rename {src => plugin/src}/main/resources/configs/protocol.yml (100%) rename {src => plugin/src}/main/resources/configs/sanity.yml (100%) rename {src => plugin/src}/main/resources/configs/sounds.yml (100%) rename {src => plugin/src}/main/resources/internal.yml (100%) rename {src => plugin/src}/main/resources/plugin.yml (100%) rename {src => plugin/src}/test/java/me/libraryaddict/disguise/disguisetypes/DisguiseCloneTest.java (100%) rename {src => plugin/src}/test/java/me/libraryaddict/disguise/utilities/DisguiseTypesTest.java (100%) rename {src => plugin/src}/test/java/me/libraryaddict/disguise/utilities/DisguiseUtilitiesTest.java (100%) rename {src => plugin/src}/test/java/me/libraryaddict/disguise/utilities/parser/DisguisePermissionsTest.java (100%) create mode 100644 shared/pom.xml create mode 100644 shared/src/main/java/me/libraryaddict/disguise/utilities/reflection/ReflectionManagerAbstract.java create mode 100644 v1_18_R1/pom.xml create mode 100644 v1_18_R1/src/main/java/me/libraryaddict/disguise/v1_18/utilities/reflection/ReflectionManager.java diff --git a/plugin/pom.xml b/plugin/pom.xml new file mode 100644 index 00000000..a3ae6844 --- /dev/null +++ b/plugin/pom.xml @@ -0,0 +1,173 @@ + + + + LibsDisguises + LibsDisguises + 10.0.26-SNAPSHOT + + 4.0.0 + + plugin + + + exec:java clean install + LibsDisguises + + + + src/main/resources + true + + plugin.yml + + + + src/main/resources + false + + **/* + + + + ${project.basedir} + + README.md + + + + + + maven-surefire-plugin + 3.0.0-M5 + + + org.codehaus.mojo + exec-maven-plugin + 3.0.0 + + + + my-execution + compile + + java + + + + + true + me.libraryaddict.disguise.utilities.watchers.CompileMethods + + + + org.apache.maven.plugins + maven-shade-plugin + 3.2.4 + + + package + + shade + + + + + true + + + net.kyori:* + LibsDisguises:* + + + + + net.kyori + ld-shaded.net.kyori + + + + + + + + + + org.projectlombok + lombok + ${lombok.version} + true + + + com.comphenix.protocol + ProtocolLib + + + org.spigotmc + spigot-api + + + org.spigotmc + spigot + + + + junit + junit + ${junit.version} + test + true + + + com.destroystokyo.paper + paper-api + ${paper-api.version} + provided + true + + + net.md-5 + bungeecord-chat + ${bungeecord-chat.version} + true + + + net.kyori + adventure-text-minimessage + ${adventure-minimessage.version} + compile + true + + + net.kyori + adventure-text-serializer-gson + ${adventure-serializer.version} + compile + true + + + net.kyori + adventure-api + ${adventure-api.version} + compile + true + + + + LibsDisguises + shared + ${project.version} + compile + true + + + LibsDisguises + v1_18_R1 + ${project.version} + compile + true + + + + \ No newline at end of file diff --git a/src/main/java/me/libraryaddict/disguise/DisguiseAPI.java b/plugin/src/main/java/me/libraryaddict/disguise/DisguiseAPI.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/DisguiseAPI.java rename to plugin/src/main/java/me/libraryaddict/disguise/DisguiseAPI.java diff --git a/src/main/java/me/libraryaddict/disguise/DisguiseConfig.java b/plugin/src/main/java/me/libraryaddict/disguise/DisguiseConfig.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/DisguiseConfig.java rename to plugin/src/main/java/me/libraryaddict/disguise/DisguiseConfig.java diff --git a/src/main/java/me/libraryaddict/disguise/LibsDisguises.java b/plugin/src/main/java/me/libraryaddict/disguise/LibsDisguises.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/LibsDisguises.java rename to plugin/src/main/java/me/libraryaddict/disguise/LibsDisguises.java diff --git a/src/main/java/me/libraryaddict/disguise/commands/DisguiseBaseCommand.java b/plugin/src/main/java/me/libraryaddict/disguise/commands/DisguiseBaseCommand.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/commands/DisguiseBaseCommand.java rename to plugin/src/main/java/me/libraryaddict/disguise/commands/DisguiseBaseCommand.java diff --git a/src/main/java/me/libraryaddict/disguise/commands/LibsDisguisesCommand.java b/plugin/src/main/java/me/libraryaddict/disguise/commands/LibsDisguisesCommand.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/commands/LibsDisguisesCommand.java rename to plugin/src/main/java/me/libraryaddict/disguise/commands/LibsDisguisesCommand.java diff --git a/src/main/java/me/libraryaddict/disguise/commands/disguise/DisguiseCommand.java b/plugin/src/main/java/me/libraryaddict/disguise/commands/disguise/DisguiseCommand.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/commands/disguise/DisguiseCommand.java rename to plugin/src/main/java/me/libraryaddict/disguise/commands/disguise/DisguiseCommand.java diff --git a/src/main/java/me/libraryaddict/disguise/commands/disguise/DisguiseEntityCommand.java b/plugin/src/main/java/me/libraryaddict/disguise/commands/disguise/DisguiseEntityCommand.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/commands/disguise/DisguiseEntityCommand.java rename to plugin/src/main/java/me/libraryaddict/disguise/commands/disguise/DisguiseEntityCommand.java diff --git a/src/main/java/me/libraryaddict/disguise/commands/disguise/DisguisePlayerCommand.java b/plugin/src/main/java/me/libraryaddict/disguise/commands/disguise/DisguisePlayerCommand.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/commands/disguise/DisguisePlayerCommand.java rename to plugin/src/main/java/me/libraryaddict/disguise/commands/disguise/DisguisePlayerCommand.java diff --git a/src/main/java/me/libraryaddict/disguise/commands/disguise/DisguiseRadiusCommand.java b/plugin/src/main/java/me/libraryaddict/disguise/commands/disguise/DisguiseRadiusCommand.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/commands/disguise/DisguiseRadiusCommand.java rename to plugin/src/main/java/me/libraryaddict/disguise/commands/disguise/DisguiseRadiusCommand.java diff --git a/src/main/java/me/libraryaddict/disguise/commands/interactions/CopyDisguiseInteraction.java b/plugin/src/main/java/me/libraryaddict/disguise/commands/interactions/CopyDisguiseInteraction.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/commands/interactions/CopyDisguiseInteraction.java rename to plugin/src/main/java/me/libraryaddict/disguise/commands/interactions/CopyDisguiseInteraction.java diff --git a/src/main/java/me/libraryaddict/disguise/commands/interactions/DisguiseCloneInteraction.java b/plugin/src/main/java/me/libraryaddict/disguise/commands/interactions/DisguiseCloneInteraction.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/commands/interactions/DisguiseCloneInteraction.java rename to plugin/src/main/java/me/libraryaddict/disguise/commands/interactions/DisguiseCloneInteraction.java diff --git a/src/main/java/me/libraryaddict/disguise/commands/interactions/DisguiseEntityInteraction.java b/plugin/src/main/java/me/libraryaddict/disguise/commands/interactions/DisguiseEntityInteraction.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/commands/interactions/DisguiseEntityInteraction.java rename to plugin/src/main/java/me/libraryaddict/disguise/commands/interactions/DisguiseEntityInteraction.java diff --git a/src/main/java/me/libraryaddict/disguise/commands/interactions/DisguiseModifyInteraction.java b/plugin/src/main/java/me/libraryaddict/disguise/commands/interactions/DisguiseModifyInteraction.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/commands/interactions/DisguiseModifyInteraction.java rename to plugin/src/main/java/me/libraryaddict/disguise/commands/interactions/DisguiseModifyInteraction.java diff --git a/src/main/java/me/libraryaddict/disguise/commands/interactions/UndisguiseEntityInteraction.java b/plugin/src/main/java/me/libraryaddict/disguise/commands/interactions/UndisguiseEntityInteraction.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/commands/interactions/UndisguiseEntityInteraction.java rename to plugin/src/main/java/me/libraryaddict/disguise/commands/interactions/UndisguiseEntityInteraction.java diff --git a/src/main/java/me/libraryaddict/disguise/commands/libsdisguises/LDChangelog.java b/plugin/src/main/java/me/libraryaddict/disguise/commands/libsdisguises/LDChangelog.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/commands/libsdisguises/LDChangelog.java rename to plugin/src/main/java/me/libraryaddict/disguise/commands/libsdisguises/LDChangelog.java diff --git a/src/main/java/me/libraryaddict/disguise/commands/libsdisguises/LDCommand.java b/plugin/src/main/java/me/libraryaddict/disguise/commands/libsdisguises/LDCommand.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/commands/libsdisguises/LDCommand.java rename to plugin/src/main/java/me/libraryaddict/disguise/commands/libsdisguises/LDCommand.java diff --git a/src/main/java/me/libraryaddict/disguise/commands/libsdisguises/LDConfig.java b/plugin/src/main/java/me/libraryaddict/disguise/commands/libsdisguises/LDConfig.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/commands/libsdisguises/LDConfig.java rename to plugin/src/main/java/me/libraryaddict/disguise/commands/libsdisguises/LDConfig.java diff --git a/src/main/java/me/libraryaddict/disguise/commands/libsdisguises/LDCount.java b/plugin/src/main/java/me/libraryaddict/disguise/commands/libsdisguises/LDCount.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/commands/libsdisguises/LDCount.java rename to plugin/src/main/java/me/libraryaddict/disguise/commands/libsdisguises/LDCount.java diff --git a/src/main/java/me/libraryaddict/disguise/commands/libsdisguises/LDDebugMineSkin.java b/plugin/src/main/java/me/libraryaddict/disguise/commands/libsdisguises/LDDebugMineSkin.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/commands/libsdisguises/LDDebugMineSkin.java rename to plugin/src/main/java/me/libraryaddict/disguise/commands/libsdisguises/LDDebugMineSkin.java diff --git a/src/main/java/me/libraryaddict/disguise/commands/libsdisguises/LDDebugPlayer.java b/plugin/src/main/java/me/libraryaddict/disguise/commands/libsdisguises/LDDebugPlayer.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/commands/libsdisguises/LDDebugPlayer.java rename to plugin/src/main/java/me/libraryaddict/disguise/commands/libsdisguises/LDDebugPlayer.java diff --git a/src/main/java/me/libraryaddict/disguise/commands/libsdisguises/LDHelp.java b/plugin/src/main/java/me/libraryaddict/disguise/commands/libsdisguises/LDHelp.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/commands/libsdisguises/LDHelp.java rename to plugin/src/main/java/me/libraryaddict/disguise/commands/libsdisguises/LDHelp.java diff --git a/src/main/java/me/libraryaddict/disguise/commands/libsdisguises/LDJson.java b/plugin/src/main/java/me/libraryaddict/disguise/commands/libsdisguises/LDJson.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/commands/libsdisguises/LDJson.java rename to plugin/src/main/java/me/libraryaddict/disguise/commands/libsdisguises/LDJson.java diff --git a/src/main/java/me/libraryaddict/disguise/commands/libsdisguises/LDMetaInfo.java b/plugin/src/main/java/me/libraryaddict/disguise/commands/libsdisguises/LDMetaInfo.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/commands/libsdisguises/LDMetaInfo.java rename to plugin/src/main/java/me/libraryaddict/disguise/commands/libsdisguises/LDMetaInfo.java diff --git a/src/main/java/me/libraryaddict/disguise/commands/libsdisguises/LDMods.java b/plugin/src/main/java/me/libraryaddict/disguise/commands/libsdisguises/LDMods.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/commands/libsdisguises/LDMods.java rename to plugin/src/main/java/me/libraryaddict/disguise/commands/libsdisguises/LDMods.java diff --git a/src/main/java/me/libraryaddict/disguise/commands/libsdisguises/LDPermTest.java b/plugin/src/main/java/me/libraryaddict/disguise/commands/libsdisguises/LDPermTest.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/commands/libsdisguises/LDPermTest.java rename to plugin/src/main/java/me/libraryaddict/disguise/commands/libsdisguises/LDPermTest.java diff --git a/src/main/java/me/libraryaddict/disguise/commands/libsdisguises/LDReload.java b/plugin/src/main/java/me/libraryaddict/disguise/commands/libsdisguises/LDReload.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/commands/libsdisguises/LDReload.java rename to plugin/src/main/java/me/libraryaddict/disguise/commands/libsdisguises/LDReload.java diff --git a/src/main/java/me/libraryaddict/disguise/commands/libsdisguises/LDScoreboard.java b/plugin/src/main/java/me/libraryaddict/disguise/commands/libsdisguises/LDScoreboard.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/commands/libsdisguises/LDScoreboard.java rename to plugin/src/main/java/me/libraryaddict/disguise/commands/libsdisguises/LDScoreboard.java diff --git a/src/main/java/me/libraryaddict/disguise/commands/libsdisguises/LDUpdate.java b/plugin/src/main/java/me/libraryaddict/disguise/commands/libsdisguises/LDUpdate.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/commands/libsdisguises/LDUpdate.java rename to plugin/src/main/java/me/libraryaddict/disguise/commands/libsdisguises/LDUpdate.java diff --git a/src/main/java/me/libraryaddict/disguise/commands/libsdisguises/LDUpdateProtocolLib.java b/plugin/src/main/java/me/libraryaddict/disguise/commands/libsdisguises/LDUpdateProtocolLib.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/commands/libsdisguises/LDUpdateProtocolLib.java rename to plugin/src/main/java/me/libraryaddict/disguise/commands/libsdisguises/LDUpdateProtocolLib.java diff --git a/src/main/java/me/libraryaddict/disguise/commands/libsdisguises/LDUploadLogs.java b/plugin/src/main/java/me/libraryaddict/disguise/commands/libsdisguises/LDUploadLogs.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/commands/libsdisguises/LDUploadLogs.java rename to plugin/src/main/java/me/libraryaddict/disguise/commands/libsdisguises/LDUploadLogs.java diff --git a/src/main/java/me/libraryaddict/disguise/commands/modify/DisguiseModifyCommand.java b/plugin/src/main/java/me/libraryaddict/disguise/commands/modify/DisguiseModifyCommand.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/commands/modify/DisguiseModifyCommand.java rename to plugin/src/main/java/me/libraryaddict/disguise/commands/modify/DisguiseModifyCommand.java diff --git a/src/main/java/me/libraryaddict/disguise/commands/modify/DisguiseModifyEntityCommand.java b/plugin/src/main/java/me/libraryaddict/disguise/commands/modify/DisguiseModifyEntityCommand.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/commands/modify/DisguiseModifyEntityCommand.java rename to plugin/src/main/java/me/libraryaddict/disguise/commands/modify/DisguiseModifyEntityCommand.java diff --git a/src/main/java/me/libraryaddict/disguise/commands/modify/DisguiseModifyPlayerCommand.java b/plugin/src/main/java/me/libraryaddict/disguise/commands/modify/DisguiseModifyPlayerCommand.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/commands/modify/DisguiseModifyPlayerCommand.java rename to plugin/src/main/java/me/libraryaddict/disguise/commands/modify/DisguiseModifyPlayerCommand.java diff --git a/src/main/java/me/libraryaddict/disguise/commands/modify/DisguiseModifyRadiusCommand.java b/plugin/src/main/java/me/libraryaddict/disguise/commands/modify/DisguiseModifyRadiusCommand.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/commands/modify/DisguiseModifyRadiusCommand.java rename to plugin/src/main/java/me/libraryaddict/disguise/commands/modify/DisguiseModifyRadiusCommand.java diff --git a/src/main/java/me/libraryaddict/disguise/commands/undisguise/UndisguiseCommand.java b/plugin/src/main/java/me/libraryaddict/disguise/commands/undisguise/UndisguiseCommand.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/commands/undisguise/UndisguiseCommand.java rename to plugin/src/main/java/me/libraryaddict/disguise/commands/undisguise/UndisguiseCommand.java diff --git a/src/main/java/me/libraryaddict/disguise/commands/undisguise/UndisguiseEntityCommand.java b/plugin/src/main/java/me/libraryaddict/disguise/commands/undisguise/UndisguiseEntityCommand.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/commands/undisguise/UndisguiseEntityCommand.java rename to plugin/src/main/java/me/libraryaddict/disguise/commands/undisguise/UndisguiseEntityCommand.java diff --git a/src/main/java/me/libraryaddict/disguise/commands/undisguise/UndisguisePlayerCommand.java b/plugin/src/main/java/me/libraryaddict/disguise/commands/undisguise/UndisguisePlayerCommand.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/commands/undisguise/UndisguisePlayerCommand.java rename to plugin/src/main/java/me/libraryaddict/disguise/commands/undisguise/UndisguisePlayerCommand.java diff --git a/src/main/java/me/libraryaddict/disguise/commands/undisguise/UndisguiseRadiusCommand.java b/plugin/src/main/java/me/libraryaddict/disguise/commands/undisguise/UndisguiseRadiusCommand.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/commands/undisguise/UndisguiseRadiusCommand.java rename to plugin/src/main/java/me/libraryaddict/disguise/commands/undisguise/UndisguiseRadiusCommand.java diff --git a/src/main/java/me/libraryaddict/disguise/commands/utils/CopyDisguiseCommand.java b/plugin/src/main/java/me/libraryaddict/disguise/commands/utils/CopyDisguiseCommand.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/commands/utils/CopyDisguiseCommand.java rename to plugin/src/main/java/me/libraryaddict/disguise/commands/utils/CopyDisguiseCommand.java diff --git a/src/main/java/me/libraryaddict/disguise/commands/utils/DisguiseCloneCommand.java b/plugin/src/main/java/me/libraryaddict/disguise/commands/utils/DisguiseCloneCommand.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/commands/utils/DisguiseCloneCommand.java rename to plugin/src/main/java/me/libraryaddict/disguise/commands/utils/DisguiseCloneCommand.java diff --git a/src/main/java/me/libraryaddict/disguise/commands/utils/DisguiseHelpCommand.java b/plugin/src/main/java/me/libraryaddict/disguise/commands/utils/DisguiseHelpCommand.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/commands/utils/DisguiseHelpCommand.java rename to plugin/src/main/java/me/libraryaddict/disguise/commands/utils/DisguiseHelpCommand.java diff --git a/src/main/java/me/libraryaddict/disguise/commands/utils/DisguiseViewBarCommand.java b/plugin/src/main/java/me/libraryaddict/disguise/commands/utils/DisguiseViewBarCommand.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/commands/utils/DisguiseViewBarCommand.java rename to plugin/src/main/java/me/libraryaddict/disguise/commands/utils/DisguiseViewBarCommand.java diff --git a/src/main/java/me/libraryaddict/disguise/commands/utils/DisguiseViewSelfCommand.java b/plugin/src/main/java/me/libraryaddict/disguise/commands/utils/DisguiseViewSelfCommand.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/commands/utils/DisguiseViewSelfCommand.java rename to plugin/src/main/java/me/libraryaddict/disguise/commands/utils/DisguiseViewSelfCommand.java diff --git a/src/main/java/me/libraryaddict/disguise/commands/utils/GrabHeadCommand.java b/plugin/src/main/java/me/libraryaddict/disguise/commands/utils/GrabHeadCommand.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/commands/utils/GrabHeadCommand.java rename to plugin/src/main/java/me/libraryaddict/disguise/commands/utils/GrabHeadCommand.java diff --git a/src/main/java/me/libraryaddict/disguise/commands/utils/GrabSkinCommand.java b/plugin/src/main/java/me/libraryaddict/disguise/commands/utils/GrabSkinCommand.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/commands/utils/GrabSkinCommand.java rename to plugin/src/main/java/me/libraryaddict/disguise/commands/utils/GrabSkinCommand.java diff --git a/src/main/java/me/libraryaddict/disguise/commands/utils/SaveDisguiseCommand.java b/plugin/src/main/java/me/libraryaddict/disguise/commands/utils/SaveDisguiseCommand.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/commands/utils/SaveDisguiseCommand.java rename to plugin/src/main/java/me/libraryaddict/disguise/commands/utils/SaveDisguiseCommand.java diff --git a/src/main/java/me/libraryaddict/disguise/disguisetypes/AnimalColor.java b/plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/AnimalColor.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/disguisetypes/AnimalColor.java rename to plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/AnimalColor.java diff --git a/src/main/java/me/libraryaddict/disguise/disguisetypes/Disguise.java b/plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/Disguise.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/disguisetypes/Disguise.java rename to plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/Disguise.java diff --git a/src/main/java/me/libraryaddict/disguise/disguisetypes/DisguiseRunnable.java b/plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/DisguiseRunnable.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/disguisetypes/DisguiseRunnable.java rename to plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/DisguiseRunnable.java diff --git a/src/main/java/me/libraryaddict/disguise/disguisetypes/DisguiseType.java b/plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/DisguiseType.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/disguisetypes/DisguiseType.java rename to plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/DisguiseType.java diff --git a/src/main/java/me/libraryaddict/disguise/disguisetypes/EntityPose.java b/plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/EntityPose.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/disguisetypes/EntityPose.java rename to plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/EntityPose.java diff --git a/src/main/java/me/libraryaddict/disguise/disguisetypes/FlagWatcher.java b/plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/FlagWatcher.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/disguisetypes/FlagWatcher.java rename to plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/FlagWatcher.java diff --git a/src/main/java/me/libraryaddict/disguise/disguisetypes/GolemCrack.java b/plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/GolemCrack.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/disguisetypes/GolemCrack.java rename to plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/GolemCrack.java diff --git a/src/main/java/me/libraryaddict/disguise/disguisetypes/LibsEquipment.java b/plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/LibsEquipment.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/disguisetypes/LibsEquipment.java rename to plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/LibsEquipment.java diff --git a/src/main/java/me/libraryaddict/disguise/disguisetypes/MetaIndex.java b/plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/MetaIndex.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/disguisetypes/MetaIndex.java rename to plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/MetaIndex.java diff --git a/src/main/java/me/libraryaddict/disguise/disguisetypes/MiscDisguise.java b/plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/MiscDisguise.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/disguisetypes/MiscDisguise.java rename to plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/MiscDisguise.java diff --git a/src/main/java/me/libraryaddict/disguise/disguisetypes/MobDisguise.java b/plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/MobDisguise.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/disguisetypes/MobDisguise.java rename to plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/MobDisguise.java diff --git a/src/main/java/me/libraryaddict/disguise/disguisetypes/ModdedDisguise.java b/plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/ModdedDisguise.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/disguisetypes/ModdedDisguise.java rename to plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/ModdedDisguise.java diff --git a/src/main/java/me/libraryaddict/disguise/disguisetypes/PlayerDisguise.java b/plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/PlayerDisguise.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/disguisetypes/PlayerDisguise.java rename to plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/PlayerDisguise.java diff --git a/src/main/java/me/libraryaddict/disguise/disguisetypes/RabbitType.java b/plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/RabbitType.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/disguisetypes/RabbitType.java rename to plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/RabbitType.java diff --git a/src/main/java/me/libraryaddict/disguise/disguisetypes/TargetedDisguise.java b/plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/TargetedDisguise.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/disguisetypes/TargetedDisguise.java rename to plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/TargetedDisguise.java diff --git a/src/main/java/me/libraryaddict/disguise/disguisetypes/VillagerData.java b/plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/VillagerData.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/disguisetypes/VillagerData.java rename to plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/VillagerData.java diff --git a/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/AbstractHorseWatcher.java b/plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/AbstractHorseWatcher.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/AbstractHorseWatcher.java rename to plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/AbstractHorseWatcher.java diff --git a/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/AbstractSkeletonWatcher.java b/plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/AbstractSkeletonWatcher.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/AbstractSkeletonWatcher.java rename to plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/AbstractSkeletonWatcher.java diff --git a/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/AbstractVillagerWatcher.java b/plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/AbstractVillagerWatcher.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/AbstractVillagerWatcher.java rename to plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/AbstractVillagerWatcher.java diff --git a/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/AgeableWatcher.java b/plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/AgeableWatcher.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/AgeableWatcher.java rename to plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/AgeableWatcher.java diff --git a/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/AreaEffectCloudWatcher.java b/plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/AreaEffectCloudWatcher.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/AreaEffectCloudWatcher.java rename to plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/AreaEffectCloudWatcher.java diff --git a/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/ArmorStandWatcher.java b/plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/ArmorStandWatcher.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/ArmorStandWatcher.java rename to plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/ArmorStandWatcher.java diff --git a/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/ArrowWatcher.java b/plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/ArrowWatcher.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/ArrowWatcher.java rename to plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/ArrowWatcher.java diff --git a/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/AxolotlWatcher.java b/plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/AxolotlWatcher.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/AxolotlWatcher.java rename to plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/AxolotlWatcher.java diff --git a/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/BatWatcher.java b/plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/BatWatcher.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/BatWatcher.java rename to plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/BatWatcher.java diff --git a/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/BeeWatcher.java b/plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/BeeWatcher.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/BeeWatcher.java rename to plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/BeeWatcher.java diff --git a/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/BlazeWatcher.java b/plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/BlazeWatcher.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/BlazeWatcher.java rename to plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/BlazeWatcher.java diff --git a/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/BoatWatcher.java b/plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/BoatWatcher.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/BoatWatcher.java rename to plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/BoatWatcher.java diff --git a/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/CatWatcher.java b/plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/CatWatcher.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/CatWatcher.java rename to plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/CatWatcher.java diff --git a/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/ChestedHorseWatcher.java b/plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/ChestedHorseWatcher.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/ChestedHorseWatcher.java rename to plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/ChestedHorseWatcher.java diff --git a/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/CreeperWatcher.java b/plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/CreeperWatcher.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/CreeperWatcher.java rename to plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/CreeperWatcher.java diff --git a/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/DolphinWatcher.java b/plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/DolphinWatcher.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/DolphinWatcher.java rename to plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/DolphinWatcher.java diff --git a/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/DonkeyWatcher.java b/plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/DonkeyWatcher.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/DonkeyWatcher.java rename to plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/DonkeyWatcher.java diff --git a/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/DroppedItemWatcher.java b/plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/DroppedItemWatcher.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/DroppedItemWatcher.java rename to plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/DroppedItemWatcher.java diff --git a/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/EggWatcher.java b/plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/EggWatcher.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/EggWatcher.java rename to plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/EggWatcher.java diff --git a/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/EnderCrystalWatcher.java b/plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/EnderCrystalWatcher.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/EnderCrystalWatcher.java rename to plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/EnderCrystalWatcher.java diff --git a/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/EnderDragonWatcher.java b/plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/EnderDragonWatcher.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/EnderDragonWatcher.java rename to plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/EnderDragonWatcher.java diff --git a/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/EnderPearlWatcher.java b/plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/EnderPearlWatcher.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/EnderPearlWatcher.java rename to plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/EnderPearlWatcher.java diff --git a/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/EnderSignalWatcher.java b/plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/EnderSignalWatcher.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/EnderSignalWatcher.java rename to plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/EnderSignalWatcher.java diff --git a/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/EndermanWatcher.java b/plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/EndermanWatcher.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/EndermanWatcher.java rename to plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/EndermanWatcher.java diff --git a/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/FallingBlockWatcher.java b/plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/FallingBlockWatcher.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/FallingBlockWatcher.java rename to plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/FallingBlockWatcher.java diff --git a/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/FireballWatcher.java b/plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/FireballWatcher.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/FireballWatcher.java rename to plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/FireballWatcher.java diff --git a/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/FireworkWatcher.java b/plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/FireworkWatcher.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/FireworkWatcher.java rename to plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/FireworkWatcher.java diff --git a/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/FishWatcher.java b/plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/FishWatcher.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/FishWatcher.java rename to plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/FishWatcher.java diff --git a/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/FishingHookWatcher.java b/plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/FishingHookWatcher.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/FishingHookWatcher.java rename to plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/FishingHookWatcher.java diff --git a/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/FoxWatcher.java b/plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/FoxWatcher.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/FoxWatcher.java rename to plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/FoxWatcher.java diff --git a/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/GhastWatcher.java b/plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/GhastWatcher.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/GhastWatcher.java rename to plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/GhastWatcher.java diff --git a/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/GlowSquidWatcher.java b/plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/GlowSquidWatcher.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/GlowSquidWatcher.java rename to plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/GlowSquidWatcher.java diff --git a/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/GoatWatcher.java b/plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/GoatWatcher.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/GoatWatcher.java rename to plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/GoatWatcher.java diff --git a/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/GuardianWatcher.java b/plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/GuardianWatcher.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/GuardianWatcher.java rename to plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/GuardianWatcher.java diff --git a/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/HoglinWatcher.java b/plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/HoglinWatcher.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/HoglinWatcher.java rename to plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/HoglinWatcher.java diff --git a/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/HorseWatcher.java b/plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/HorseWatcher.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/HorseWatcher.java rename to plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/HorseWatcher.java diff --git a/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/IllagerWatcher.java b/plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/IllagerWatcher.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/IllagerWatcher.java rename to plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/IllagerWatcher.java diff --git a/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/IllagerWizardWatcher.java b/plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/IllagerWizardWatcher.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/IllagerWizardWatcher.java rename to plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/IllagerWizardWatcher.java diff --git a/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/InsentientWatcher.java b/plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/InsentientWatcher.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/InsentientWatcher.java rename to plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/InsentientWatcher.java diff --git a/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/IronGolemWatcher.java b/plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/IronGolemWatcher.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/IronGolemWatcher.java rename to plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/IronGolemWatcher.java diff --git a/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/ItemFrameWatcher.java b/plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/ItemFrameWatcher.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/ItemFrameWatcher.java rename to plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/ItemFrameWatcher.java diff --git a/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/LivingWatcher.java b/plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/LivingWatcher.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/LivingWatcher.java rename to plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/LivingWatcher.java diff --git a/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/LlamaWatcher.java b/plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/LlamaWatcher.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/LlamaWatcher.java rename to plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/LlamaWatcher.java diff --git a/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/MinecartCommandWatcher.java b/plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/MinecartCommandWatcher.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/MinecartCommandWatcher.java rename to plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/MinecartCommandWatcher.java diff --git a/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/MinecartFurnaceWatcher.java b/plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/MinecartFurnaceWatcher.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/MinecartFurnaceWatcher.java rename to plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/MinecartFurnaceWatcher.java diff --git a/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/MinecartWatcher.java b/plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/MinecartWatcher.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/MinecartWatcher.java rename to plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/MinecartWatcher.java diff --git a/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/ModdedWatcher.java b/plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/ModdedWatcher.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/ModdedWatcher.java rename to plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/ModdedWatcher.java diff --git a/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/MuleWatcher.java b/plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/MuleWatcher.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/MuleWatcher.java rename to plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/MuleWatcher.java diff --git a/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/MushroomCowWatcher.java b/plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/MushroomCowWatcher.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/MushroomCowWatcher.java rename to plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/MushroomCowWatcher.java diff --git a/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/OcelotWatcher.java b/plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/OcelotWatcher.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/OcelotWatcher.java rename to plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/OcelotWatcher.java diff --git a/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/PaintingWatcher.java b/plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/PaintingWatcher.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/PaintingWatcher.java rename to plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/PaintingWatcher.java diff --git a/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/PandaWatcher.java b/plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/PandaWatcher.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/PandaWatcher.java rename to plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/PandaWatcher.java diff --git a/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/ParrotWatcher.java b/plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/ParrotWatcher.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/ParrotWatcher.java rename to plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/ParrotWatcher.java diff --git a/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/PhantomWatcher.java b/plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/PhantomWatcher.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/PhantomWatcher.java rename to plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/PhantomWatcher.java diff --git a/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/PigWatcher.java b/plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/PigWatcher.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/PigWatcher.java rename to plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/PigWatcher.java diff --git a/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/PiglinAbstractWatcher.java b/plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/PiglinAbstractWatcher.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/PiglinAbstractWatcher.java rename to plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/PiglinAbstractWatcher.java diff --git a/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/PiglinBruteWatcher.java b/plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/PiglinBruteWatcher.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/PiglinBruteWatcher.java rename to plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/PiglinBruteWatcher.java diff --git a/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/PiglinWatcher.java b/plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/PiglinWatcher.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/PiglinWatcher.java rename to plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/PiglinWatcher.java diff --git a/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/PillagerWatcher.java b/plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/PillagerWatcher.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/PillagerWatcher.java rename to plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/PillagerWatcher.java diff --git a/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/PlayerWatcher.java b/plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/PlayerWatcher.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/PlayerWatcher.java rename to plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/PlayerWatcher.java diff --git a/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/PolarBearWatcher.java b/plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/PolarBearWatcher.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/PolarBearWatcher.java rename to plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/PolarBearWatcher.java diff --git a/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/PufferFishWatcher.java b/plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/PufferFishWatcher.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/PufferFishWatcher.java rename to plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/PufferFishWatcher.java diff --git a/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/RabbitWatcher.java b/plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/RabbitWatcher.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/RabbitWatcher.java rename to plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/RabbitWatcher.java diff --git a/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/RaiderWatcher.java b/plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/RaiderWatcher.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/RaiderWatcher.java rename to plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/RaiderWatcher.java diff --git a/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/RavagerWatcher.java b/plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/RavagerWatcher.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/RavagerWatcher.java rename to plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/RavagerWatcher.java diff --git a/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/SheepWatcher.java b/plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/SheepWatcher.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/SheepWatcher.java rename to plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/SheepWatcher.java diff --git a/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/ShulkerWatcher.java b/plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/ShulkerWatcher.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/ShulkerWatcher.java rename to plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/ShulkerWatcher.java diff --git a/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/SkeletonHorseWatcher.java b/plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/SkeletonHorseWatcher.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/SkeletonHorseWatcher.java rename to plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/SkeletonHorseWatcher.java diff --git a/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/SkeletonWatcher.java b/plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/SkeletonWatcher.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/SkeletonWatcher.java rename to plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/SkeletonWatcher.java diff --git a/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/SlimeWatcher.java b/plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/SlimeWatcher.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/SlimeWatcher.java rename to plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/SlimeWatcher.java diff --git a/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/SmallFireballWatcher.java b/plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/SmallFireballWatcher.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/SmallFireballWatcher.java rename to plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/SmallFireballWatcher.java diff --git a/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/SnowballWatcher.java b/plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/SnowballWatcher.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/SnowballWatcher.java rename to plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/SnowballWatcher.java diff --git a/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/SnowmanWatcher.java b/plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/SnowmanWatcher.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/SnowmanWatcher.java rename to plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/SnowmanWatcher.java diff --git a/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/SpiderWatcher.java b/plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/SpiderWatcher.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/SpiderWatcher.java rename to plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/SpiderWatcher.java diff --git a/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/SplashPotionWatcher.java b/plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/SplashPotionWatcher.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/SplashPotionWatcher.java rename to plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/SplashPotionWatcher.java diff --git a/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/SquidWatcher.java b/plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/SquidWatcher.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/SquidWatcher.java rename to plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/SquidWatcher.java diff --git a/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/StrayWatcher.java b/plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/StrayWatcher.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/StrayWatcher.java rename to plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/StrayWatcher.java diff --git a/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/StriderWatcher.java b/plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/StriderWatcher.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/StriderWatcher.java rename to plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/StriderWatcher.java diff --git a/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/TNTWatcher.java b/plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/TNTWatcher.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/TNTWatcher.java rename to plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/TNTWatcher.java diff --git a/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/TameableWatcher.java b/plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/TameableWatcher.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/TameableWatcher.java rename to plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/TameableWatcher.java diff --git a/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/ThrowableWatcher.java b/plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/ThrowableWatcher.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/ThrowableWatcher.java rename to plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/ThrowableWatcher.java diff --git a/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/ThrownExpBottleWatcher.java b/plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/ThrownExpBottleWatcher.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/ThrownExpBottleWatcher.java rename to plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/ThrownExpBottleWatcher.java diff --git a/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/TippedArrowWatcher.java b/plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/TippedArrowWatcher.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/TippedArrowWatcher.java rename to plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/TippedArrowWatcher.java diff --git a/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/TraderLlamaWatcher.java b/plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/TraderLlamaWatcher.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/TraderLlamaWatcher.java rename to plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/TraderLlamaWatcher.java diff --git a/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/TridentWatcher.java b/plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/TridentWatcher.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/TridentWatcher.java rename to plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/TridentWatcher.java diff --git a/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/TropicalFishWatcher.java b/plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/TropicalFishWatcher.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/TropicalFishWatcher.java rename to plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/TropicalFishWatcher.java diff --git a/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/TurtleWatcher.java b/plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/TurtleWatcher.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/TurtleWatcher.java rename to plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/TurtleWatcher.java diff --git a/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/VexWatcher.java b/plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/VexWatcher.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/VexWatcher.java rename to plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/VexWatcher.java diff --git a/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/VillagerWatcher.java b/plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/VillagerWatcher.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/VillagerWatcher.java rename to plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/VillagerWatcher.java diff --git a/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/VindicatorWatcher.java b/plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/VindicatorWatcher.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/VindicatorWatcher.java rename to plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/VindicatorWatcher.java diff --git a/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/WanderingTraderWatcher.java b/plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/WanderingTraderWatcher.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/WanderingTraderWatcher.java rename to plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/WanderingTraderWatcher.java diff --git a/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/WitchWatcher.java b/plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/WitchWatcher.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/WitchWatcher.java rename to plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/WitchWatcher.java diff --git a/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/WitherSkeletonWatcher.java b/plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/WitherSkeletonWatcher.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/WitherSkeletonWatcher.java rename to plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/WitherSkeletonWatcher.java diff --git a/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/WitherSkullWatcher.java b/plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/WitherSkullWatcher.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/WitherSkullWatcher.java rename to plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/WitherSkullWatcher.java diff --git a/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/WitherWatcher.java b/plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/WitherWatcher.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/WitherWatcher.java rename to plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/WitherWatcher.java diff --git a/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/WolfWatcher.java b/plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/WolfWatcher.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/WolfWatcher.java rename to plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/WolfWatcher.java diff --git a/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/ZoglinWatcher.java b/plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/ZoglinWatcher.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/ZoglinWatcher.java rename to plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/ZoglinWatcher.java diff --git a/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/ZombieHorseWatcher.java b/plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/ZombieHorseWatcher.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/ZombieHorseWatcher.java rename to plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/ZombieHorseWatcher.java diff --git a/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/ZombieVillagerWatcher.java b/plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/ZombieVillagerWatcher.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/ZombieVillagerWatcher.java rename to plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/ZombieVillagerWatcher.java diff --git a/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/ZombieWatcher.java b/plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/ZombieWatcher.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/ZombieWatcher.java rename to plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/ZombieWatcher.java diff --git a/src/main/java/me/libraryaddict/disguise/events/DisguiseEvent.java b/plugin/src/main/java/me/libraryaddict/disguise/events/DisguiseEvent.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/events/DisguiseEvent.java rename to plugin/src/main/java/me/libraryaddict/disguise/events/DisguiseEvent.java diff --git a/src/main/java/me/libraryaddict/disguise/events/DisguiseInteractEvent.java b/plugin/src/main/java/me/libraryaddict/disguise/events/DisguiseInteractEvent.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/events/DisguiseInteractEvent.java rename to plugin/src/main/java/me/libraryaddict/disguise/events/DisguiseInteractEvent.java diff --git a/src/main/java/me/libraryaddict/disguise/events/UndisguiseEvent.java b/plugin/src/main/java/me/libraryaddict/disguise/events/UndisguiseEvent.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/events/UndisguiseEvent.java rename to plugin/src/main/java/me/libraryaddict/disguise/events/UndisguiseEvent.java diff --git a/src/main/java/me/libraryaddict/disguise/utilities/DisguiseUtilities.java b/plugin/src/main/java/me/libraryaddict/disguise/utilities/DisguiseUtilities.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/utilities/DisguiseUtilities.java rename to plugin/src/main/java/me/libraryaddict/disguise/utilities/DisguiseUtilities.java diff --git a/src/main/java/me/libraryaddict/disguise/utilities/DisguiseValues.java b/plugin/src/main/java/me/libraryaddict/disguise/utilities/DisguiseValues.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/utilities/DisguiseValues.java rename to plugin/src/main/java/me/libraryaddict/disguise/utilities/DisguiseValues.java diff --git a/src/main/java/me/libraryaddict/disguise/utilities/LibsEntityInteract.java b/plugin/src/main/java/me/libraryaddict/disguise/utilities/LibsEntityInteract.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/utilities/LibsEntityInteract.java rename to plugin/src/main/java/me/libraryaddict/disguise/utilities/LibsEntityInteract.java diff --git a/src/main/java/me/libraryaddict/disguise/utilities/LibsPremium.java b/plugin/src/main/java/me/libraryaddict/disguise/utilities/LibsPremium.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/utilities/LibsPremium.java rename to plugin/src/main/java/me/libraryaddict/disguise/utilities/LibsPremium.java diff --git a/src/main/java/me/libraryaddict/disguise/utilities/SkinUtils.java b/plugin/src/main/java/me/libraryaddict/disguise/utilities/SkinUtils.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/utilities/SkinUtils.java rename to plugin/src/main/java/me/libraryaddict/disguise/utilities/SkinUtils.java diff --git a/src/main/java/me/libraryaddict/disguise/utilities/config/ConfigLoader.java b/plugin/src/main/java/me/libraryaddict/disguise/utilities/config/ConfigLoader.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/utilities/config/ConfigLoader.java rename to plugin/src/main/java/me/libraryaddict/disguise/utilities/config/ConfigLoader.java diff --git a/src/main/java/me/libraryaddict/disguise/utilities/config/DisguiseCommandConfig.java b/plugin/src/main/java/me/libraryaddict/disguise/utilities/config/DisguiseCommandConfig.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/utilities/config/DisguiseCommandConfig.java rename to plugin/src/main/java/me/libraryaddict/disguise/utilities/config/DisguiseCommandConfig.java diff --git a/src/main/java/me/libraryaddict/disguise/utilities/json/SerializerBlockData.java b/plugin/src/main/java/me/libraryaddict/disguise/utilities/json/SerializerBlockData.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/utilities/json/SerializerBlockData.java rename to plugin/src/main/java/me/libraryaddict/disguise/utilities/json/SerializerBlockData.java diff --git a/src/main/java/me/libraryaddict/disguise/utilities/json/SerializerChatComponent.java b/plugin/src/main/java/me/libraryaddict/disguise/utilities/json/SerializerChatComponent.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/utilities/json/SerializerChatComponent.java rename to plugin/src/main/java/me/libraryaddict/disguise/utilities/json/SerializerChatComponent.java diff --git a/src/main/java/me/libraryaddict/disguise/utilities/json/SerializerDisguise.java b/plugin/src/main/java/me/libraryaddict/disguise/utilities/json/SerializerDisguise.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/utilities/json/SerializerDisguise.java rename to plugin/src/main/java/me/libraryaddict/disguise/utilities/json/SerializerDisguise.java diff --git a/src/main/java/me/libraryaddict/disguise/utilities/json/SerializerFlagWatcher.java b/plugin/src/main/java/me/libraryaddict/disguise/utilities/json/SerializerFlagWatcher.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/utilities/json/SerializerFlagWatcher.java rename to plugin/src/main/java/me/libraryaddict/disguise/utilities/json/SerializerFlagWatcher.java diff --git a/src/main/java/me/libraryaddict/disguise/utilities/json/SerializerGameProfile.java b/plugin/src/main/java/me/libraryaddict/disguise/utilities/json/SerializerGameProfile.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/utilities/json/SerializerGameProfile.java rename to plugin/src/main/java/me/libraryaddict/disguise/utilities/json/SerializerGameProfile.java diff --git a/src/main/java/me/libraryaddict/disguise/utilities/json/SerializerItemStack.java b/plugin/src/main/java/me/libraryaddict/disguise/utilities/json/SerializerItemStack.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/utilities/json/SerializerItemStack.java rename to plugin/src/main/java/me/libraryaddict/disguise/utilities/json/SerializerItemStack.java diff --git a/src/main/java/me/libraryaddict/disguise/utilities/json/SerializerMetaIndex.java b/plugin/src/main/java/me/libraryaddict/disguise/utilities/json/SerializerMetaIndex.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/utilities/json/SerializerMetaIndex.java rename to plugin/src/main/java/me/libraryaddict/disguise/utilities/json/SerializerMetaIndex.java diff --git a/src/main/java/me/libraryaddict/disguise/utilities/json/SerializerParticle.java b/plugin/src/main/java/me/libraryaddict/disguise/utilities/json/SerializerParticle.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/utilities/json/SerializerParticle.java rename to plugin/src/main/java/me/libraryaddict/disguise/utilities/json/SerializerParticle.java diff --git a/src/main/java/me/libraryaddict/disguise/utilities/json/SerializerWrappedBlockData.java b/plugin/src/main/java/me/libraryaddict/disguise/utilities/json/SerializerWrappedBlockData.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/utilities/json/SerializerWrappedBlockData.java rename to plugin/src/main/java/me/libraryaddict/disguise/utilities/json/SerializerWrappedBlockData.java diff --git a/src/main/java/me/libraryaddict/disguise/utilities/listeners/DisguiseListener.java b/plugin/src/main/java/me/libraryaddict/disguise/utilities/listeners/DisguiseListener.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/utilities/listeners/DisguiseListener.java rename to plugin/src/main/java/me/libraryaddict/disguise/utilities/listeners/DisguiseListener.java diff --git a/src/main/java/me/libraryaddict/disguise/utilities/listeners/ModdedListener.java b/plugin/src/main/java/me/libraryaddict/disguise/utilities/listeners/ModdedListener.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/utilities/listeners/ModdedListener.java rename to plugin/src/main/java/me/libraryaddict/disguise/utilities/listeners/ModdedListener.java diff --git a/src/main/java/me/libraryaddict/disguise/utilities/listeners/PaperDisguiseListener.java b/plugin/src/main/java/me/libraryaddict/disguise/utilities/listeners/PaperDisguiseListener.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/utilities/listeners/PaperDisguiseListener.java rename to plugin/src/main/java/me/libraryaddict/disguise/utilities/listeners/PaperDisguiseListener.java diff --git a/src/main/java/me/libraryaddict/disguise/utilities/listeners/PlayerSkinHandler.java b/plugin/src/main/java/me/libraryaddict/disguise/utilities/listeners/PlayerSkinHandler.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/utilities/listeners/PlayerSkinHandler.java rename to plugin/src/main/java/me/libraryaddict/disguise/utilities/listeners/PlayerSkinHandler.java diff --git a/src/main/java/me/libraryaddict/disguise/utilities/metrics/Metrics.java b/plugin/src/main/java/me/libraryaddict/disguise/utilities/metrics/Metrics.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/utilities/metrics/Metrics.java rename to plugin/src/main/java/me/libraryaddict/disguise/utilities/metrics/Metrics.java diff --git a/src/main/java/me/libraryaddict/disguise/utilities/metrics/MetricsInitalizer.java b/plugin/src/main/java/me/libraryaddict/disguise/utilities/metrics/MetricsInitalizer.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/utilities/metrics/MetricsInitalizer.java rename to plugin/src/main/java/me/libraryaddict/disguise/utilities/metrics/MetricsInitalizer.java diff --git a/src/main/java/me/libraryaddict/disguise/utilities/mineskin/MineSkinAPI.java b/plugin/src/main/java/me/libraryaddict/disguise/utilities/mineskin/MineSkinAPI.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/utilities/mineskin/MineSkinAPI.java rename to plugin/src/main/java/me/libraryaddict/disguise/utilities/mineskin/MineSkinAPI.java diff --git a/src/main/java/me/libraryaddict/disguise/utilities/mineskin/MineSkinResponse.java b/plugin/src/main/java/me/libraryaddict/disguise/utilities/mineskin/MineSkinResponse.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/utilities/mineskin/MineSkinResponse.java rename to plugin/src/main/java/me/libraryaddict/disguise/utilities/mineskin/MineSkinResponse.java diff --git a/src/main/java/me/libraryaddict/disguise/utilities/modded/ModdedEntity.java b/plugin/src/main/java/me/libraryaddict/disguise/utilities/modded/ModdedEntity.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/utilities/modded/ModdedEntity.java rename to plugin/src/main/java/me/libraryaddict/disguise/utilities/modded/ModdedEntity.java diff --git a/src/main/java/me/libraryaddict/disguise/utilities/modded/ModdedManager.java b/plugin/src/main/java/me/libraryaddict/disguise/utilities/modded/ModdedManager.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/utilities/modded/ModdedManager.java rename to plugin/src/main/java/me/libraryaddict/disguise/utilities/modded/ModdedManager.java diff --git a/src/main/java/me/libraryaddict/disguise/utilities/packets/IPacketHandler.java b/plugin/src/main/java/me/libraryaddict/disguise/utilities/packets/IPacketHandler.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/utilities/packets/IPacketHandler.java rename to plugin/src/main/java/me/libraryaddict/disguise/utilities/packets/IPacketHandler.java diff --git a/src/main/java/me/libraryaddict/disguise/utilities/packets/LibsPackets.java b/plugin/src/main/java/me/libraryaddict/disguise/utilities/packets/LibsPackets.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/utilities/packets/LibsPackets.java rename to plugin/src/main/java/me/libraryaddict/disguise/utilities/packets/LibsPackets.java diff --git a/src/main/java/me/libraryaddict/disguise/utilities/packets/PacketsHandler.java b/plugin/src/main/java/me/libraryaddict/disguise/utilities/packets/PacketsHandler.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/utilities/packets/PacketsHandler.java rename to plugin/src/main/java/me/libraryaddict/disguise/utilities/packets/PacketsHandler.java diff --git a/src/main/java/me/libraryaddict/disguise/utilities/packets/PacketsManager.java b/plugin/src/main/java/me/libraryaddict/disguise/utilities/packets/PacketsManager.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/utilities/packets/PacketsManager.java rename to plugin/src/main/java/me/libraryaddict/disguise/utilities/packets/PacketsManager.java diff --git a/src/main/java/me/libraryaddict/disguise/utilities/packets/packethandlers/PacketHandlerAnimation.java b/plugin/src/main/java/me/libraryaddict/disguise/utilities/packets/packethandlers/PacketHandlerAnimation.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/utilities/packets/packethandlers/PacketHandlerAnimation.java rename to plugin/src/main/java/me/libraryaddict/disguise/utilities/packets/packethandlers/PacketHandlerAnimation.java diff --git a/src/main/java/me/libraryaddict/disguise/utilities/packets/packethandlers/PacketHandlerAttachEntity.java b/plugin/src/main/java/me/libraryaddict/disguise/utilities/packets/packethandlers/PacketHandlerAttachEntity.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/utilities/packets/packethandlers/PacketHandlerAttachEntity.java rename to plugin/src/main/java/me/libraryaddict/disguise/utilities/packets/packethandlers/PacketHandlerAttachEntity.java diff --git a/src/main/java/me/libraryaddict/disguise/utilities/packets/packethandlers/PacketHandlerAttributes.java b/plugin/src/main/java/me/libraryaddict/disguise/utilities/packets/packethandlers/PacketHandlerAttributes.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/utilities/packets/packethandlers/PacketHandlerAttributes.java rename to plugin/src/main/java/me/libraryaddict/disguise/utilities/packets/packethandlers/PacketHandlerAttributes.java diff --git a/src/main/java/me/libraryaddict/disguise/utilities/packets/packethandlers/PacketHandlerCollect.java b/plugin/src/main/java/me/libraryaddict/disguise/utilities/packets/packethandlers/PacketHandlerCollect.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/utilities/packets/packethandlers/PacketHandlerCollect.java rename to plugin/src/main/java/me/libraryaddict/disguise/utilities/packets/packethandlers/PacketHandlerCollect.java diff --git a/src/main/java/me/libraryaddict/disguise/utilities/packets/packethandlers/PacketHandlerEntityStatus.java b/plugin/src/main/java/me/libraryaddict/disguise/utilities/packets/packethandlers/PacketHandlerEntityStatus.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/utilities/packets/packethandlers/PacketHandlerEntityStatus.java rename to plugin/src/main/java/me/libraryaddict/disguise/utilities/packets/packethandlers/PacketHandlerEntityStatus.java diff --git a/src/main/java/me/libraryaddict/disguise/utilities/packets/packethandlers/PacketHandlerEquipment.java b/plugin/src/main/java/me/libraryaddict/disguise/utilities/packets/packethandlers/PacketHandlerEquipment.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/utilities/packets/packethandlers/PacketHandlerEquipment.java rename to plugin/src/main/java/me/libraryaddict/disguise/utilities/packets/packethandlers/PacketHandlerEquipment.java diff --git a/src/main/java/me/libraryaddict/disguise/utilities/packets/packethandlers/PacketHandlerHeadRotation.java b/plugin/src/main/java/me/libraryaddict/disguise/utilities/packets/packethandlers/PacketHandlerHeadRotation.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/utilities/packets/packethandlers/PacketHandlerHeadRotation.java rename to plugin/src/main/java/me/libraryaddict/disguise/utilities/packets/packethandlers/PacketHandlerHeadRotation.java diff --git a/src/main/java/me/libraryaddict/disguise/utilities/packets/packethandlers/PacketHandlerMetadata.java b/plugin/src/main/java/me/libraryaddict/disguise/utilities/packets/packethandlers/PacketHandlerMetadata.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/utilities/packets/packethandlers/PacketHandlerMetadata.java rename to plugin/src/main/java/me/libraryaddict/disguise/utilities/packets/packethandlers/PacketHandlerMetadata.java diff --git a/src/main/java/me/libraryaddict/disguise/utilities/packets/packethandlers/PacketHandlerMovement.java b/plugin/src/main/java/me/libraryaddict/disguise/utilities/packets/packethandlers/PacketHandlerMovement.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/utilities/packets/packethandlers/PacketHandlerMovement.java rename to plugin/src/main/java/me/libraryaddict/disguise/utilities/packets/packethandlers/PacketHandlerMovement.java diff --git a/src/main/java/me/libraryaddict/disguise/utilities/packets/packethandlers/PacketHandlerSpawn.java b/plugin/src/main/java/me/libraryaddict/disguise/utilities/packets/packethandlers/PacketHandlerSpawn.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/utilities/packets/packethandlers/PacketHandlerSpawn.java rename to plugin/src/main/java/me/libraryaddict/disguise/utilities/packets/packethandlers/PacketHandlerSpawn.java diff --git a/src/main/java/me/libraryaddict/disguise/utilities/packets/packethandlers/PacketHandlerVelocity.java b/plugin/src/main/java/me/libraryaddict/disguise/utilities/packets/packethandlers/PacketHandlerVelocity.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/utilities/packets/packethandlers/PacketHandlerVelocity.java rename to plugin/src/main/java/me/libraryaddict/disguise/utilities/packets/packethandlers/PacketHandlerVelocity.java diff --git a/src/main/java/me/libraryaddict/disguise/utilities/packets/packetlisteners/PacketListenerClientCustomPayload.java b/plugin/src/main/java/me/libraryaddict/disguise/utilities/packets/packetlisteners/PacketListenerClientCustomPayload.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/utilities/packets/packetlisteners/PacketListenerClientCustomPayload.java rename to plugin/src/main/java/me/libraryaddict/disguise/utilities/packets/packetlisteners/PacketListenerClientCustomPayload.java diff --git a/src/main/java/me/libraryaddict/disguise/utilities/packets/packetlisteners/PacketListenerClientInteract.java b/plugin/src/main/java/me/libraryaddict/disguise/utilities/packets/packetlisteners/PacketListenerClientInteract.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/utilities/packets/packetlisteners/PacketListenerClientInteract.java rename to plugin/src/main/java/me/libraryaddict/disguise/utilities/packets/packetlisteners/PacketListenerClientInteract.java diff --git a/src/main/java/me/libraryaddict/disguise/utilities/packets/packetlisteners/PacketListenerEntityDestroy.java b/plugin/src/main/java/me/libraryaddict/disguise/utilities/packets/packetlisteners/PacketListenerEntityDestroy.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/utilities/packets/packetlisteners/PacketListenerEntityDestroy.java rename to plugin/src/main/java/me/libraryaddict/disguise/utilities/packets/packetlisteners/PacketListenerEntityDestroy.java diff --git a/src/main/java/me/libraryaddict/disguise/utilities/packets/packetlisteners/PacketListenerInventory.java b/plugin/src/main/java/me/libraryaddict/disguise/utilities/packets/packetlisteners/PacketListenerInventory.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/utilities/packets/packetlisteners/PacketListenerInventory.java rename to plugin/src/main/java/me/libraryaddict/disguise/utilities/packets/packetlisteners/PacketListenerInventory.java diff --git a/src/main/java/me/libraryaddict/disguise/utilities/packets/packetlisteners/PacketListenerMain.java b/plugin/src/main/java/me/libraryaddict/disguise/utilities/packets/packetlisteners/PacketListenerMain.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/utilities/packets/packetlisteners/PacketListenerMain.java rename to plugin/src/main/java/me/libraryaddict/disguise/utilities/packets/packetlisteners/PacketListenerMain.java diff --git a/src/main/java/me/libraryaddict/disguise/utilities/packets/packetlisteners/PacketListenerModdedClient.java b/plugin/src/main/java/me/libraryaddict/disguise/utilities/packets/packetlisteners/PacketListenerModdedClient.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/utilities/packets/packetlisteners/PacketListenerModdedClient.java rename to plugin/src/main/java/me/libraryaddict/disguise/utilities/packets/packetlisteners/PacketListenerModdedClient.java diff --git a/src/main/java/me/libraryaddict/disguise/utilities/packets/packetlisteners/PacketListenerScoreboardTeam.java b/plugin/src/main/java/me/libraryaddict/disguise/utilities/packets/packetlisteners/PacketListenerScoreboardTeam.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/utilities/packets/packetlisteners/PacketListenerScoreboardTeam.java rename to plugin/src/main/java/me/libraryaddict/disguise/utilities/packets/packetlisteners/PacketListenerScoreboardTeam.java diff --git a/src/main/java/me/libraryaddict/disguise/utilities/packets/packetlisteners/PacketListenerSounds.java b/plugin/src/main/java/me/libraryaddict/disguise/utilities/packets/packetlisteners/PacketListenerSounds.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/utilities/packets/packetlisteners/PacketListenerSounds.java rename to plugin/src/main/java/me/libraryaddict/disguise/utilities/packets/packetlisteners/PacketListenerSounds.java diff --git a/src/main/java/me/libraryaddict/disguise/utilities/packets/packetlisteners/PacketListenerTabList.java b/plugin/src/main/java/me/libraryaddict/disguise/utilities/packets/packetlisteners/PacketListenerTabList.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/utilities/packets/packetlisteners/PacketListenerTabList.java rename to plugin/src/main/java/me/libraryaddict/disguise/utilities/packets/packetlisteners/PacketListenerTabList.java diff --git a/src/main/java/me/libraryaddict/disguise/utilities/packets/packetlisteners/PacketListenerViewSelfDisguise.java b/plugin/src/main/java/me/libraryaddict/disguise/utilities/packets/packetlisteners/PacketListenerViewSelfDisguise.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/utilities/packets/packetlisteners/PacketListenerViewSelfDisguise.java rename to plugin/src/main/java/me/libraryaddict/disguise/utilities/packets/packetlisteners/PacketListenerViewSelfDisguise.java diff --git a/src/main/java/me/libraryaddict/disguise/utilities/params/ParamInfo.java b/plugin/src/main/java/me/libraryaddict/disguise/utilities/params/ParamInfo.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/utilities/params/ParamInfo.java rename to plugin/src/main/java/me/libraryaddict/disguise/utilities/params/ParamInfo.java diff --git a/src/main/java/me/libraryaddict/disguise/utilities/params/ParamInfoManager.java b/plugin/src/main/java/me/libraryaddict/disguise/utilities/params/ParamInfoManager.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/utilities/params/ParamInfoManager.java rename to plugin/src/main/java/me/libraryaddict/disguise/utilities/params/ParamInfoManager.java diff --git a/src/main/java/me/libraryaddict/disguise/utilities/params/ParamInfoTypes.java b/plugin/src/main/java/me/libraryaddict/disguise/utilities/params/ParamInfoTypes.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/utilities/params/ParamInfoTypes.java rename to plugin/src/main/java/me/libraryaddict/disguise/utilities/params/ParamInfoTypes.java diff --git a/src/main/java/me/libraryaddict/disguise/utilities/params/types/ParamInfoEnum.java b/plugin/src/main/java/me/libraryaddict/disguise/utilities/params/types/ParamInfoEnum.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/utilities/params/types/ParamInfoEnum.java rename to plugin/src/main/java/me/libraryaddict/disguise/utilities/params/types/ParamInfoEnum.java diff --git a/src/main/java/me/libraryaddict/disguise/utilities/params/types/base/ParamInfoBoolean.java b/plugin/src/main/java/me/libraryaddict/disguise/utilities/params/types/base/ParamInfoBoolean.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/utilities/params/types/base/ParamInfoBoolean.java rename to plugin/src/main/java/me/libraryaddict/disguise/utilities/params/types/base/ParamInfoBoolean.java diff --git a/src/main/java/me/libraryaddict/disguise/utilities/params/types/base/ParamInfoDouble.java b/plugin/src/main/java/me/libraryaddict/disguise/utilities/params/types/base/ParamInfoDouble.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/utilities/params/types/base/ParamInfoDouble.java rename to plugin/src/main/java/me/libraryaddict/disguise/utilities/params/types/base/ParamInfoDouble.java diff --git a/src/main/java/me/libraryaddict/disguise/utilities/params/types/base/ParamInfoFloat.java b/plugin/src/main/java/me/libraryaddict/disguise/utilities/params/types/base/ParamInfoFloat.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/utilities/params/types/base/ParamInfoFloat.java rename to plugin/src/main/java/me/libraryaddict/disguise/utilities/params/types/base/ParamInfoFloat.java diff --git a/src/main/java/me/libraryaddict/disguise/utilities/params/types/base/ParamInfoFloatNullable.java b/plugin/src/main/java/me/libraryaddict/disguise/utilities/params/types/base/ParamInfoFloatNullable.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/utilities/params/types/base/ParamInfoFloatNullable.java rename to plugin/src/main/java/me/libraryaddict/disguise/utilities/params/types/base/ParamInfoFloatNullable.java diff --git a/src/main/java/me/libraryaddict/disguise/utilities/params/types/base/ParamInfoInteger.java b/plugin/src/main/java/me/libraryaddict/disguise/utilities/params/types/base/ParamInfoInteger.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/utilities/params/types/base/ParamInfoInteger.java rename to plugin/src/main/java/me/libraryaddict/disguise/utilities/params/types/base/ParamInfoInteger.java diff --git a/src/main/java/me/libraryaddict/disguise/utilities/params/types/base/ParamInfoString.java b/plugin/src/main/java/me/libraryaddict/disguise/utilities/params/types/base/ParamInfoString.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/utilities/params/types/base/ParamInfoString.java rename to plugin/src/main/java/me/libraryaddict/disguise/utilities/params/types/base/ParamInfoString.java diff --git a/src/main/java/me/libraryaddict/disguise/utilities/params/types/custom/ParamInfoBlockData.java b/plugin/src/main/java/me/libraryaddict/disguise/utilities/params/types/custom/ParamInfoBlockData.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/utilities/params/types/custom/ParamInfoBlockData.java rename to plugin/src/main/java/me/libraryaddict/disguise/utilities/params/types/custom/ParamInfoBlockData.java diff --git a/src/main/java/me/libraryaddict/disguise/utilities/params/types/custom/ParamInfoBlockPosition.java b/plugin/src/main/java/me/libraryaddict/disguise/utilities/params/types/custom/ParamInfoBlockPosition.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/utilities/params/types/custom/ParamInfoBlockPosition.java rename to plugin/src/main/java/me/libraryaddict/disguise/utilities/params/types/custom/ParamInfoBlockPosition.java diff --git a/src/main/java/me/libraryaddict/disguise/utilities/params/types/custom/ParamInfoChatColor.java b/plugin/src/main/java/me/libraryaddict/disguise/utilities/params/types/custom/ParamInfoChatColor.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/utilities/params/types/custom/ParamInfoChatColor.java rename to plugin/src/main/java/me/libraryaddict/disguise/utilities/params/types/custom/ParamInfoChatColor.java diff --git a/src/main/java/me/libraryaddict/disguise/utilities/params/types/custom/ParamInfoColor.java b/plugin/src/main/java/me/libraryaddict/disguise/utilities/params/types/custom/ParamInfoColor.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/utilities/params/types/custom/ParamInfoColor.java rename to plugin/src/main/java/me/libraryaddict/disguise/utilities/params/types/custom/ParamInfoColor.java diff --git a/src/main/java/me/libraryaddict/disguise/utilities/params/types/custom/ParamInfoEulerAngle.java b/plugin/src/main/java/me/libraryaddict/disguise/utilities/params/types/custom/ParamInfoEulerAngle.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/utilities/params/types/custom/ParamInfoEulerAngle.java rename to plugin/src/main/java/me/libraryaddict/disguise/utilities/params/types/custom/ParamInfoEulerAngle.java diff --git a/src/main/java/me/libraryaddict/disguise/utilities/params/types/custom/ParamInfoGameProfile.java b/plugin/src/main/java/me/libraryaddict/disguise/utilities/params/types/custom/ParamInfoGameProfile.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/utilities/params/types/custom/ParamInfoGameProfile.java rename to plugin/src/main/java/me/libraryaddict/disguise/utilities/params/types/custom/ParamInfoGameProfile.java diff --git a/src/main/java/me/libraryaddict/disguise/utilities/params/types/custom/ParamInfoItemBlock.java b/plugin/src/main/java/me/libraryaddict/disguise/utilities/params/types/custom/ParamInfoItemBlock.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/utilities/params/types/custom/ParamInfoItemBlock.java rename to plugin/src/main/java/me/libraryaddict/disguise/utilities/params/types/custom/ParamInfoItemBlock.java diff --git a/src/main/java/me/libraryaddict/disguise/utilities/params/types/custom/ParamInfoItemStack.java b/plugin/src/main/java/me/libraryaddict/disguise/utilities/params/types/custom/ParamInfoItemStack.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/utilities/params/types/custom/ParamInfoItemStack.java rename to plugin/src/main/java/me/libraryaddict/disguise/utilities/params/types/custom/ParamInfoItemStack.java diff --git a/src/main/java/me/libraryaddict/disguise/utilities/params/types/custom/ParamInfoItemStackArray.java b/plugin/src/main/java/me/libraryaddict/disguise/utilities/params/types/custom/ParamInfoItemStackArray.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/utilities/params/types/custom/ParamInfoItemStackArray.java rename to plugin/src/main/java/me/libraryaddict/disguise/utilities/params/types/custom/ParamInfoItemStackArray.java diff --git a/src/main/java/me/libraryaddict/disguise/utilities/params/types/custom/ParamInfoParticle.java b/plugin/src/main/java/me/libraryaddict/disguise/utilities/params/types/custom/ParamInfoParticle.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/utilities/params/types/custom/ParamInfoParticle.java rename to plugin/src/main/java/me/libraryaddict/disguise/utilities/params/types/custom/ParamInfoParticle.java diff --git a/src/main/java/me/libraryaddict/disguise/utilities/params/types/custom/ParamInfoPotionEffect.java b/plugin/src/main/java/me/libraryaddict/disguise/utilities/params/types/custom/ParamInfoPotionEffect.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/utilities/params/types/custom/ParamInfoPotionEffect.java rename to plugin/src/main/java/me/libraryaddict/disguise/utilities/params/types/custom/ParamInfoPotionEffect.java diff --git a/src/main/java/me/libraryaddict/disguise/utilities/params/types/custom/ParamInfoSoundGroup.java b/plugin/src/main/java/me/libraryaddict/disguise/utilities/params/types/custom/ParamInfoSoundGroup.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/utilities/params/types/custom/ParamInfoSoundGroup.java rename to plugin/src/main/java/me/libraryaddict/disguise/utilities/params/types/custom/ParamInfoSoundGroup.java diff --git a/src/main/java/me/libraryaddict/disguise/utilities/params/types/custom/ParamInfoTime.java b/plugin/src/main/java/me/libraryaddict/disguise/utilities/params/types/custom/ParamInfoTime.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/utilities/params/types/custom/ParamInfoTime.java rename to plugin/src/main/java/me/libraryaddict/disguise/utilities/params/types/custom/ParamInfoTime.java diff --git a/src/main/java/me/libraryaddict/disguise/utilities/parser/DisguiseParseException.java b/plugin/src/main/java/me/libraryaddict/disguise/utilities/parser/DisguiseParseException.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/utilities/parser/DisguiseParseException.java rename to plugin/src/main/java/me/libraryaddict/disguise/utilities/parser/DisguiseParseException.java diff --git a/src/main/java/me/libraryaddict/disguise/utilities/parser/DisguiseParser.java b/plugin/src/main/java/me/libraryaddict/disguise/utilities/parser/DisguiseParser.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/utilities/parser/DisguiseParser.java rename to plugin/src/main/java/me/libraryaddict/disguise/utilities/parser/DisguiseParser.java diff --git a/src/main/java/me/libraryaddict/disguise/utilities/parser/DisguisePerm.java b/plugin/src/main/java/me/libraryaddict/disguise/utilities/parser/DisguisePerm.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/utilities/parser/DisguisePerm.java rename to plugin/src/main/java/me/libraryaddict/disguise/utilities/parser/DisguisePerm.java diff --git a/src/main/java/me/libraryaddict/disguise/utilities/parser/DisguisePermissions.java b/plugin/src/main/java/me/libraryaddict/disguise/utilities/parser/DisguisePermissions.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/utilities/parser/DisguisePermissions.java rename to plugin/src/main/java/me/libraryaddict/disguise/utilities/parser/DisguisePermissions.java diff --git a/src/main/java/me/libraryaddict/disguise/utilities/parser/ParsedDisguise.java b/plugin/src/main/java/me/libraryaddict/disguise/utilities/parser/ParsedDisguise.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/utilities/parser/ParsedDisguise.java rename to plugin/src/main/java/me/libraryaddict/disguise/utilities/parser/ParsedDisguise.java diff --git a/src/main/java/me/libraryaddict/disguise/utilities/parser/RandomDefaultValue.java b/plugin/src/main/java/me/libraryaddict/disguise/utilities/parser/RandomDefaultValue.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/utilities/parser/RandomDefaultValue.java rename to plugin/src/main/java/me/libraryaddict/disguise/utilities/parser/RandomDefaultValue.java diff --git a/src/main/java/me/libraryaddict/disguise/utilities/parser/WatcherMethod.java b/plugin/src/main/java/me/libraryaddict/disguise/utilities/parser/WatcherMethod.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/utilities/parser/WatcherMethod.java rename to plugin/src/main/java/me/libraryaddict/disguise/utilities/parser/WatcherMethod.java diff --git a/src/main/java/me/libraryaddict/disguise/utilities/plugin/BisectHosting.java b/plugin/src/main/java/me/libraryaddict/disguise/utilities/plugin/BisectHosting.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/utilities/plugin/BisectHosting.java rename to plugin/src/main/java/me/libraryaddict/disguise/utilities/plugin/BisectHosting.java diff --git a/src/main/java/me/libraryaddict/disguise/utilities/plugin/PluginInformation.java b/plugin/src/main/java/me/libraryaddict/disguise/utilities/plugin/PluginInformation.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/utilities/plugin/PluginInformation.java rename to plugin/src/main/java/me/libraryaddict/disguise/utilities/plugin/PluginInformation.java diff --git a/src/main/java/me/libraryaddict/disguise/utilities/reflection/ClassGetter.java b/plugin/src/main/java/me/libraryaddict/disguise/utilities/reflection/ClassGetter.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/utilities/reflection/ClassGetter.java rename to plugin/src/main/java/me/libraryaddict/disguise/utilities/reflection/ClassGetter.java diff --git a/src/main/java/me/libraryaddict/disguise/utilities/reflection/FakeBoundingBox.java b/plugin/src/main/java/me/libraryaddict/disguise/utilities/reflection/FakeBoundingBox.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/utilities/reflection/FakeBoundingBox.java rename to plugin/src/main/java/me/libraryaddict/disguise/utilities/reflection/FakeBoundingBox.java diff --git a/src/main/java/me/libraryaddict/disguise/utilities/reflection/LibsProfileLookup.java b/plugin/src/main/java/me/libraryaddict/disguise/utilities/reflection/LibsProfileLookup.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/utilities/reflection/LibsProfileLookup.java rename to plugin/src/main/java/me/libraryaddict/disguise/utilities/reflection/LibsProfileLookup.java diff --git a/src/main/java/me/libraryaddict/disguise/utilities/reflection/LibsProfileLookupCaller.java b/plugin/src/main/java/me/libraryaddict/disguise/utilities/reflection/LibsProfileLookupCaller.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/utilities/reflection/LibsProfileLookupCaller.java rename to plugin/src/main/java/me/libraryaddict/disguise/utilities/reflection/LibsProfileLookupCaller.java diff --git a/src/main/java/me/libraryaddict/disguise/utilities/reflection/NmsAddedIn.java b/plugin/src/main/java/me/libraryaddict/disguise/utilities/reflection/NmsAddedIn.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/utilities/reflection/NmsAddedIn.java rename to plugin/src/main/java/me/libraryaddict/disguise/utilities/reflection/NmsAddedIn.java diff --git a/src/main/java/me/libraryaddict/disguise/utilities/reflection/NmsRemovedIn.java b/plugin/src/main/java/me/libraryaddict/disguise/utilities/reflection/NmsRemovedIn.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/utilities/reflection/NmsRemovedIn.java rename to plugin/src/main/java/me/libraryaddict/disguise/utilities/reflection/NmsRemovedIn.java diff --git a/src/main/java/me/libraryaddict/disguise/utilities/reflection/NmsVersion.java b/plugin/src/main/java/me/libraryaddict/disguise/utilities/reflection/NmsVersion.java similarity index 95% rename from src/main/java/me/libraryaddict/disguise/utilities/reflection/NmsVersion.java rename to plugin/src/main/java/me/libraryaddict/disguise/utilities/reflection/NmsVersion.java index 50377b8d..61d9e11a 100644 --- a/src/main/java/me/libraryaddict/disguise/utilities/reflection/NmsVersion.java +++ b/plugin/src/main/java/me/libraryaddict/disguise/utilities/reflection/NmsVersion.java @@ -9,7 +9,8 @@ public enum NmsVersion { v1_14, v1_15, v1_16, - v1_17; + v1_17, + v1_18; /** * If this nms version isn't newer than the running version diff --git a/src/main/java/me/libraryaddict/disguise/utilities/reflection/ReflectionManager.java b/plugin/src/main/java/me/libraryaddict/disguise/utilities/reflection/ReflectionManager.java similarity index 89% rename from src/main/java/me/libraryaddict/disguise/utilities/reflection/ReflectionManager.java rename to plugin/src/main/java/me/libraryaddict/disguise/utilities/reflection/ReflectionManager.java index 1f405f52..de2ce3d9 100644 --- a/src/main/java/me/libraryaddict/disguise/utilities/reflection/ReflectionManager.java +++ b/plugin/src/main/java/me/libraryaddict/disguise/utilities/reflection/ReflectionManager.java @@ -113,8 +113,11 @@ public class ReflectionManager { private static Method incrementedInventoryStateId; private static Field playerInventoryContainer; + private static ReflectionManagerAbstract v1_18ReflectionManager = getReflectionManager(NmsVersion.v1_18); + public static void init() { try { + v1_18ReflectionManager = getReflectionManager(NmsVersion.v1_18); boundingBoxConstructor = getNmsConstructor("AxisAlignedBB", double.class, double.class, double.class, double.class, double.class, double.class); setBoundingBoxMethod = getNmsMethod("Entity", "a", getNmsClass("AxisAlignedBB")); @@ -322,6 +325,10 @@ public class ReflectionManager { } public static boolean hasInvul(Entity entity) { + if (NmsVersion.v1_18.isSupported()) { + return v1_18ReflectionManager.hasInvul(entity); + } + Object nmsEntity = ReflectionManager.getNmsEntity(entity); try { @@ -338,6 +345,9 @@ public class ReflectionManager { } public static int getIncrementedStateId(Player player) { + if (NmsVersion.v1_18.isSupported()) { + return v1_18ReflectionManager.getIncrementedStateId(player); + } try { Object container = playerInventoryContainer.get(getNmsEntity(player)); @@ -448,6 +458,10 @@ public class ReflectionManager { } public static int getNewEntityId(boolean increment) { + if (NmsVersion.v1_18.isSupported()) { + return v1_18ReflectionManager.getNewEntityId(increment); + } + try { Number entityCount = (Number) entityCountField.get(null); @@ -472,6 +486,10 @@ public class ReflectionManager { } public static Object getPlayerConnectionOrPlayer(Player player) { + if (NmsVersion.v1_18.isSupported()) { + return v1_18ReflectionManager.getPlayerConnectionOrPlayer(player); + } + try { if (NmsVersion.v1_17.isSupported()) { return playerConnection.get(getNmsEntity(player)); @@ -486,6 +504,10 @@ public class ReflectionManager { } public static Object createEntityInstance(DisguiseType disguiseType, String entityName) { + if (NmsVersion.v1_18.isSupported()) { + return v1_18ReflectionManager.createEntityInstance(entityName); + } + try { Class entityClass; @@ -554,6 +576,10 @@ public class ReflectionManager { } public static Object getMobEffectList(int id) { + if (NmsVersion.v1_18.isSupported()) { + return v1_18ReflectionManager.getMobEffectList(id); + } + try { return mobEffectList.invoke(null, id); } catch (IllegalAccessException | InvocationTargetException e) { @@ -568,6 +594,10 @@ public class ReflectionManager { } public static Object createMobEffect(int id, int duration, int amplification, boolean ambient, boolean particles) { + if (NmsVersion.v1_18.isSupported()) { + return v1_18ReflectionManager.createMobEffect(id, duration, amplification, ambient, particles); + } + try { return mobEffectConstructor.newInstance(getMobEffectList(id), duration, amplification, ambient, particles); } catch (Exception e) { @@ -578,6 +608,13 @@ public class ReflectionManager { } public static FakeBoundingBox getBoundingBox(Entity entity) { + if (NmsVersion.v1_18.isSupported()) { + double x = v1_18ReflectionManager.getXBoundingBox(entity); + double y = v1_18ReflectionManager.getYBoundingBox(entity); + double z = v1_18ReflectionManager.getZBoundingBox(entity); + return new FakeBoundingBox(x, y, z); + } + try { Object boundingBox = boundingBoxMethod.invoke(getNmsEntity(entity)); @@ -624,6 +661,10 @@ public class ReflectionManager { } public static Object getPlayerFromPlayerConnection(Object nmsEntity) { + if (NmsVersion.v1_18.isSupported()) { + return v1_18ReflectionManager.getPlayerFromPlayerConnection(nmsEntity); + } + try { if (NmsVersion.v1_17.isSupported()) { // Convert from player connection to EntityPlayer @@ -639,6 +680,10 @@ public class ReflectionManager { } public static Entity getBukkitEntity(Object nmsEntity) { + if (NmsVersion.v1_18.isSupported()) { + return v1_18ReflectionManager.getBukkitEntity(nmsEntity); + } + try { return (Entity) bukkitEntityMethod.invoke(nmsEntity); } catch (Exception ex) { @@ -649,6 +694,10 @@ public class ReflectionManager { } public static ItemStack getBukkitItem(Object nmsItem) { + if (NmsVersion.v1_18.isSupported()) { + return v1_18ReflectionManager.getBukkitItem(nmsItem); + } + try { return (ItemStack) itemAsBukkitMethod.invoke(null, nmsItem); } catch (Exception e) { @@ -659,6 +708,10 @@ public class ReflectionManager { } public static ItemStack getCraftItem(ItemStack bukkitItem) { + if (NmsVersion.v1_18.isSupported()) { + return v1_18ReflectionManager.getCraftItem(bukkitItem); + } + try { return (ItemStack) itemAsCraftCopyMethod.invoke(null, bukkitItem); } catch (Exception e) { @@ -703,6 +756,18 @@ public class ReflectionManager { return null; } + public static ReflectionManagerAbstract getReflectionManager(NmsVersion nmsVersion) { + try { + Class aClass = Class.forName("me.libraryaddict.disguise." + nmsVersion.name() + ".utilities.reflection.ReflectionManager"); + Object o = aClass.getConstructor().newInstance(); + return (ReflectionManagerAbstract) o; + } catch (ReflectiveOperationException e) { + e.printStackTrace(); + } + + return null; + } + public static Constructor getCraftConstructor(Class clazz, Class... parameters) { try { Constructor declaredConstructor = clazz.getDeclaredConstructor(parameters); @@ -720,6 +785,10 @@ public class ReflectionManager { } public static Object getCraftSound(Sound sound) { + if (NmsVersion.v1_18.isSupported()) { + return v1_18ReflectionManager.getCraftSound(sound); + } + try { return soundEffectMethod.invoke(null, getSoundString(sound)); } catch (Exception ex) { @@ -730,6 +799,10 @@ public class ReflectionManager { } public static Object getEntityTrackerEntry(Entity target) throws Exception { + if (NmsVersion.v1_18.isSupported()) { + return v1_18ReflectionManager.getEntityTrackerEntry(target); + } + Object world = getWorldServer(target.getWorld()); if (NmsVersion.v1_14.isSupported()) { @@ -753,6 +826,10 @@ public class ReflectionManager { } public static Object getMinecraftServer() { + if (NmsVersion.v1_18.isSupported()) { + return v1_18ReflectionManager.getMinecraftServer(); + } + try { return getServerMethod.invoke(Bukkit.getServer()); } catch (IllegalAccessException | InvocationTargetException e) { @@ -762,6 +839,10 @@ public class ReflectionManager { } public static String getEnumArt(Art art) { + if (NmsVersion.v1_18.isSupported()) { + return v1_18ReflectionManager.getEnumArt(art); + } + try { Object enumArt = getEnumArtMethod.invoke(null, art); for (Field field : enumArt.getClass().getDeclaredFields()) { @@ -777,6 +858,10 @@ public class ReflectionManager { } public static Object getBlockPosition(int x, int y, int z) { + if (NmsVersion.v1_18.isSupported()) { + return v1_18ReflectionManager.getBlockPosition(x, y, z); + } + try { return blockPositionConstructor.newInstance(x, y, z); } catch (Exception ex) { @@ -787,6 +872,10 @@ public class ReflectionManager { } public static Enum getEnumDirection(int direction) { + if (NmsVersion.v1_18.isSupported()) { + return v1_18ReflectionManager.getEnumDirection(direction); + } + try { return (Enum) enumDirectionMethod.invoke(null, direction); } catch (Exception ex) { @@ -797,6 +886,10 @@ public class ReflectionManager { } public static Enum getEnumPlayerInfoAction(int action) { + if (NmsVersion.v1_18.isSupported()) { + return v1_18ReflectionManager.getEnumPlayerInfoAction(action); + } + try { return enumPlayerInfoAction[action]; } catch (Exception ex) { @@ -807,6 +900,10 @@ public class ReflectionManager { } public static Object getPlayerInfoData(Object playerInfoPacket, WrappedGameProfile gameProfile) { + if (NmsVersion.v1_18.isSupported()) { + return v1_18ReflectionManager.getPlayerInfoData(gameProfile); + } + try { Object playerListName = chatComponentConstructor.newInstance(gameProfile.getName()); @@ -930,6 +1027,10 @@ public class ReflectionManager { } public static Object getNmsEntity(Entity entity) { + if (NmsVersion.v1_18.isSupported()) { + return v1_18ReflectionManager.getNmsEntity(entity); + } + try { return getNmsEntityMethod.invoke(entity); } catch (Exception ex) { @@ -957,6 +1058,10 @@ public class ReflectionManager { } public static Object getNmsItem(ItemStack itemstack) { + if (NmsVersion.v1_18.isSupported()) { + return v1_18ReflectionManager.getNmsItem(itemstack); + } + try { return itemAsNmsCopyMethod.invoke(null, itemstack); } catch (Exception e) { @@ -1001,6 +1106,10 @@ public class ReflectionManager { } public static double getPing(Player player) { + if (NmsVersion.v1_18.isSupported()) { + return v1_18ReflectionManager.getPing(player); + } + try { return pingField.getInt(ReflectionManager.getNmsEntity(player)); } catch (Exception ex) { @@ -1011,6 +1120,10 @@ public class ReflectionManager { } public static float[] getSize(Entity entity) { + if (NmsVersion.v1_18.isSupported()) { + return v1_18ReflectionManager.getSize(entity); + } + try { if (NmsVersion.v1_14.isSupported()) { Object size = getNmsField("Entity", "size").get(getNmsEntity(entity)); @@ -1035,6 +1148,10 @@ public class ReflectionManager { } public static WrappedGameProfile getSkullBlob(WrappedGameProfile gameProfile) { + if (NmsVersion.v1_18.isSupported()) { + return v1_18ReflectionManager.getSkullBlob(gameProfile); + } + try { Object minecraftServer = getMinecraftServer(); @@ -1055,6 +1172,10 @@ public class ReflectionManager { } public static Float getSoundModifier(Object entity) { + if (NmsVersion.v1_18.isSupported()) { + return v1_18ReflectionManager.getSoundModifier(entity); + } + try { return (Float) damageAndIdleSoundMethod.invoke(entity); } catch (Exception ignored) { @@ -1069,24 +1190,29 @@ public class ReflectionManager { try { Object minecraftServer = getMinecraftServer(); - for (Method method : getNmsClass("MinecraftServer").getMethods()) { - if (method.getReturnType().getSimpleName().equals("GameProfileRepository")) { - Object agent = Class.forName("com.mojang.authlib.Agent").getDeclaredField("MINECRAFT").get(null); + LibsProfileLookupCaller callback = new LibsProfileLookupCaller(); + if (NmsVersion.v1_18.isSupported()) { + v1_18ReflectionManager.injectCallback(playername, callback); + } else { + for (Method method : getNmsClass("MinecraftServer").getMethods()) { + if (method.getReturnType().getSimpleName().equals("GameProfileRepository")) { + Object agent = Class.forName("com.mojang.authlib.Agent").getDeclaredField("MINECRAFT").get(null); - LibsProfileLookupCaller callback = new LibsProfileLookupCaller(); - Object profileRepo = method.invoke(minecraftServer); + Object profileRepo = method.invoke(minecraftServer); - method.getReturnType() - .getMethod("findProfilesByNames", String[].class, agent.getClass(), Class.forName("com.mojang.authlib.ProfileLookupCallback")) - .invoke(profileRepo, new String[]{playername}, agent, callback); - - if (callback.getGameProfile() != null) { - return callback.getGameProfile(); + method.getReturnType() + .getMethod("findProfilesByNames", String[].class, agent.getClass(), Class.forName("com.mojang.authlib.ProfileLookupCallback")) + .invoke(profileRepo, new String[]{playername}, agent, callback); + break; } - - return getGameProfile(null, playername); } } + + if (callback.getGameProfile() != null) { + return callback.getGameProfile(); + } + + return getGameProfile(null, playername); } catch (Exception ex) { ex.printStackTrace(); } @@ -1095,6 +1221,11 @@ public class ReflectionManager { } public static void setBoundingBox(Entity entity, FakeBoundingBox newBox) { + if (NmsVersion.v1_18.isSupported()) { + v1_18ReflectionManager.setBoundingBox(entity, newBox.getX(), newBox.getY(), newBox.getZ()); + return; + } + try { Location loc = entity.getLocation(); @@ -1108,6 +1239,10 @@ public class ReflectionManager { } public static Enum getSoundCategory(String category) { + if (NmsVersion.v1_18.isSupported()) { + return v1_18ReflectionManager.getSoundCategory(category); + } + return soundCategories.get(category); } @@ -1136,6 +1271,10 @@ public class ReflectionManager { * @return null if the equipment slot is null */ public static Enum createEnumItemSlot(EquipmentSlot slot) { + if (NmsVersion.v1_18.isSupported()) { + return v1_18ReflectionManager.createEnumItemSlot(slot); + } + switch (slot) { case HAND: return enumItemSlots[0]; @@ -1213,6 +1352,10 @@ public class ReflectionManager { } public static Object getSoundString(Sound sound) { + if (NmsVersion.v1_18.isSupported()) { + return v1_18ReflectionManager.getSoundString(sound); + } + try { if (soundGetMethod == null) { return soundEffectGetKey.get(soundEffectGetMethod.invoke(null, sound)).toString(); @@ -1257,6 +1400,9 @@ public class ReflectionManager { public static Object convertInvalidMeta(Object value) { if (value instanceof Optional) { Optional opt = (Optional) value; + if (NmsVersion.v1_18.isSupported()) { + return v1_18ReflectionManager.convertOptional(opt); + } if (!opt.isPresent()) { return NmsVersion.v1_13.isSupported() ? value : com.google.common.base.Optional.absent(); @@ -1298,6 +1444,9 @@ public class ReflectionManager { } } else if (value instanceof Vector3F) { Vector3F angle = (Vector3F) value; + if (NmsVersion.v1_18.isSupported()) { + return v1_18ReflectionManager.convertVec3(angle); + } try { return vector3FConstructor.newInstance(angle.getX(), angle.getY(), angle.getZ()); @@ -1306,6 +1455,9 @@ public class ReflectionManager { } } else if (value instanceof EulerAngle) { EulerAngle angle = (EulerAngle) value; + if (NmsVersion.v1_18.isSupported()) { + return v1_18ReflectionManager.convertVec3(angle); + } try { return vector3FConstructor.newInstance((float) angle.getX(), (float) angle.getY(), (float) angle.getZ()); @@ -1313,6 +1465,10 @@ public class ReflectionManager { ex.printStackTrace(); } } else if (value instanceof Direction) { + if (NmsVersion.v1_18.isSupported()) { + return v1_18ReflectionManager.convertDirection((Direction) value); + } + try { return enumDirectionFrom.invoke(null, ((Direction) value).ordinal()); } catch (Exception ex) { @@ -1320,6 +1476,9 @@ public class ReflectionManager { } } else if (value instanceof BlockPosition) { BlockPosition pos = (BlockPosition) value; + if (NmsVersion.v1_18.isSupported()) { + return v1_18ReflectionManager.getBlockPosition(pos.getX(), pos.getY(), pos.getZ()); + } try { return blockPositionConstructor.newInstance(pos.getX(), pos.getY(), pos.getZ()); @@ -1346,6 +1505,10 @@ public class ReflectionManager { } public static Material getMaterial(String name) { + if (NmsVersion.v1_18.isSupported()) { + return v1_18ReflectionManager.getMaterial(name); + } + try { if (!NmsVersion.v1_13.isSupported()) { Method toMinecraft = getCraftMethod("CraftMagicNumbers", "getMaterialFromInternalName", String.class); @@ -1382,6 +1545,10 @@ public class ReflectionManager { } public static String getItemName(Material material) { + if (NmsVersion.v1_18.isSupported()) { + return v1_18ReflectionManager.getItemName(material); + } + try { Object item = getCraftMethod("CraftMagicNumbers", "getItem", Material.class).invoke(null, material); @@ -1414,6 +1581,10 @@ public class ReflectionManager { } public static Object getNmsVillagerData(VillagerData data) { + if (NmsVersion.v1_18.isSupported()) { + return v1_18ReflectionManager.getNmsVillagerData(data.getType(), data.getProfession()); + } + Object type = getVillagerType(data.getType()); Object profession = getVillagerProfession(data.getProfession()); @@ -1427,6 +1598,10 @@ public class ReflectionManager { } public static Object getVillagerType(Villager.Type type) { + if (NmsVersion.v1_18.isSupported()) { + return v1_18ReflectionManager.getVillagerType(type); + } + try { Object mcKey = bukkitKeyToNms.invoke(null, type.getKey()); @@ -1463,6 +1638,10 @@ public class ReflectionManager { } public static Object getVillagerProfession(Villager.Profession profession) { + if (NmsVersion.v1_18.isSupported()) { + return v1_18ReflectionManager.getVillagerProfession(profession); + } + try { Object mcKey = bukkitKeyToNms.invoke(null, profession.getKey()); @@ -1509,6 +1688,10 @@ public class ReflectionManager { @Deprecated public static Object createSoundEffect(String minecraftKey) { + if (NmsVersion.v1_18.isSupported()) { + return v1_18ReflectionManager.createSoundEffect(minecraftKey); + } + try { return getNmsConstructor("SoundEffect", getNmsClass("MinecraftKey")).newInstance(createMinecraftKey(minecraftKey)); } catch (Exception ex) { @@ -1519,6 +1702,10 @@ public class ReflectionManager { } public static Object createMinecraftKey(String name) { + if (NmsVersion.v1_18.isSupported()) { + return v1_18ReflectionManager.createMinecraftKey(name); + } + try { return getNmsConstructor("MinecraftKey", String.class).newInstance(name); } catch (Exception ex) { @@ -1529,6 +1716,10 @@ public class ReflectionManager { } public static Object getVec3D(Vector vector) { + if (NmsVersion.v1_18.isSupported()) { + return v1_18ReflectionManager.getVec3D(vector); + } + try { return vec3DConstructor.newInstance(vector.getX(), vector.getY(), vector.getZ()); } catch (Exception ex) { @@ -1539,6 +1730,10 @@ public class ReflectionManager { } public static Object getEntityType(EntityType entityType) { + if (NmsVersion.v1_18.isSupported()) { + return v1_18ReflectionManager.getEntityType(entityType); + } + try { Object val = entityTypesAMethod.invoke(null, entityType.getName() == null ? entityType.name().toLowerCase(Locale.ENGLISH) : entityType.getName()); @@ -1555,6 +1750,10 @@ public class ReflectionManager { } public static Object registerEntityType(NamespacedKey key) { + if (NmsVersion.v1_18.isSupported()) { + return v1_18ReflectionManager.registerEntityType(key); + } + try { Object mcKey = getNmsConstructor("MinecraftKey", String.class).newInstance(key.toString()); @@ -1594,6 +1793,10 @@ public class ReflectionManager { } public static int getEntityTypeId(Object entityTypes) { + if (NmsVersion.v1_18.isSupported()) { + return v1_18ReflectionManager.getEntityTypeId(entityTypes); + } + try { Class typesClass = getNmsClass("IRegistry"); @@ -1608,6 +1811,10 @@ public class ReflectionManager { } public static int getEntityTypeId(EntityType entityType) { + if (NmsVersion.v1_18.isSupported()) { + return v1_18ReflectionManager.getEntityTypeId(entityType); + } + try { if (NmsVersion.v1_13.isSupported()) { Object entityTypes = getEntityType(entityType); @@ -1628,6 +1835,10 @@ public class ReflectionManager { } public static Object getEntityType(NamespacedKey name) { + if (NmsVersion.v1_18.isSupported()) { + return v1_18ReflectionManager.getEntityType(name); + } + try { Class typesClass = getNmsClass("IRegistry"); @@ -1643,6 +1854,10 @@ public class ReflectionManager { } public static Object getNmsEntityPose(EntityPose entityPose) { + if (NmsVersion.v1_18.isSupported()) { + return v1_18ReflectionManager.getNmsEntityPose(entityPose == EntityPose.SNEAKING && NmsVersion.v1_15.isSupported() ? "CROUCHING" : entityPose.name()); + } + return Enum.valueOf(entityPoseClass, entityPose == EntityPose.SNEAKING && NmsVersion.v1_15.isSupported() ? "CROUCHING" : entityPose.name()); } @@ -1662,6 +1877,10 @@ public class ReflectionManager { } public static int getCombinedIdByBlockData(BlockData data) { + if (NmsVersion.v1_18.isSupported()) { + return v1_18ReflectionManager.getCombinedIdByBlockData(data); + } + try { Object iBlockData = craftBlockDataGetState.invoke(data); @@ -1674,6 +1893,10 @@ public class ReflectionManager { } public static int getCombinedIdByItemStack(ItemStack itemStack) { + if (NmsVersion.v1_18.isSupported()) { + return v1_18ReflectionManager.getCombinedIdByItemStack(itemStack); + } + try { if (!NmsVersion.v1_13.isSupported()) { return itemStack.getType().ordinal() + (itemStack.getDurability() << 12); @@ -1692,6 +1915,10 @@ public class ReflectionManager { } public static BlockData getBlockDataByCombinedId(int id) { + if (NmsVersion.v1_18.isSupported()) { + return v1_18ReflectionManager.getBlockDataByCombinedId(id); + } + try { Method idMethod = getNmsMethod("Block", "getByCombinedId", int.class); Object iBlockData = idMethod.invoke(null, id); @@ -1706,6 +1933,10 @@ public class ReflectionManager { } public static ItemStack getItemStackByCombinedId(int id) { + if (NmsVersion.v1_18.isSupported()) { + return v1_18ReflectionManager.getItemStackByCombinedId(id); + } + try { Method idMethod = getNmsMethod("Block", "getByCombinedId", int.class); Object iBlockData = idMethod.invoke(null, id); @@ -1730,6 +1961,10 @@ public class ReflectionManager { } public static Object getWorldServer(World w) { + if (NmsVersion.v1_18.isSupported()) { + return v1_18ReflectionManager.getWorldServer(w); + } + try { return getNmsWorld.invoke(w); } catch (IllegalAccessException | InvocationTargetException e) { @@ -1740,6 +1975,10 @@ public class ReflectionManager { } public static ItemMeta getDeserializedItemMeta(Map meta) { + if (NmsVersion.v1_18.isSupported()) { + return v1_18ReflectionManager.getDeserializedItemMeta(meta); + } + try { return (ItemMeta) deserializedItemMeta.invoke(null, meta); } catch (Exception e) { diff --git a/src/main/java/me/libraryaddict/disguise/utilities/reflection/WatcherInfo.java b/plugin/src/main/java/me/libraryaddict/disguise/utilities/reflection/WatcherInfo.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/utilities/reflection/WatcherInfo.java rename to plugin/src/main/java/me/libraryaddict/disguise/utilities/reflection/WatcherInfo.java diff --git a/src/main/java/me/libraryaddict/disguise/utilities/sounds/DisguiseSoundEnums.java b/plugin/src/main/java/me/libraryaddict/disguise/utilities/sounds/DisguiseSoundEnums.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/utilities/sounds/DisguiseSoundEnums.java rename to plugin/src/main/java/me/libraryaddict/disguise/utilities/sounds/DisguiseSoundEnums.java diff --git a/src/main/java/me/libraryaddict/disguise/utilities/sounds/SoundGroup.java b/plugin/src/main/java/me/libraryaddict/disguise/utilities/sounds/SoundGroup.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/utilities/sounds/SoundGroup.java rename to plugin/src/main/java/me/libraryaddict/disguise/utilities/sounds/SoundGroup.java diff --git a/src/main/java/me/libraryaddict/disguise/utilities/sounds/SoundManager.java b/plugin/src/main/java/me/libraryaddict/disguise/utilities/sounds/SoundManager.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/utilities/sounds/SoundManager.java rename to plugin/src/main/java/me/libraryaddict/disguise/utilities/sounds/SoundManager.java diff --git a/src/main/java/me/libraryaddict/disguise/utilities/translations/LibsMsg.java b/plugin/src/main/java/me/libraryaddict/disguise/utilities/translations/LibsMsg.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/utilities/translations/LibsMsg.java rename to plugin/src/main/java/me/libraryaddict/disguise/utilities/translations/LibsMsg.java diff --git a/src/main/java/me/libraryaddict/disguise/utilities/translations/TranslateFiller.java b/plugin/src/main/java/me/libraryaddict/disguise/utilities/translations/TranslateFiller.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/utilities/translations/TranslateFiller.java rename to plugin/src/main/java/me/libraryaddict/disguise/utilities/translations/TranslateFiller.java diff --git a/src/main/java/me/libraryaddict/disguise/utilities/translations/TranslateType.java b/plugin/src/main/java/me/libraryaddict/disguise/utilities/translations/TranslateType.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/utilities/translations/TranslateType.java rename to plugin/src/main/java/me/libraryaddict/disguise/utilities/translations/TranslateType.java diff --git a/src/main/java/me/libraryaddict/disguise/utilities/updates/DisguiseUpdate.java b/plugin/src/main/java/me/libraryaddict/disguise/utilities/updates/DisguiseUpdate.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/utilities/updates/DisguiseUpdate.java rename to plugin/src/main/java/me/libraryaddict/disguise/utilities/updates/DisguiseUpdate.java diff --git a/src/main/java/me/libraryaddict/disguise/utilities/updates/LDGithub.java b/plugin/src/main/java/me/libraryaddict/disguise/utilities/updates/LDGithub.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/utilities/updates/LDGithub.java rename to plugin/src/main/java/me/libraryaddict/disguise/utilities/updates/LDGithub.java diff --git a/src/main/java/me/libraryaddict/disguise/utilities/updates/LDJenkins.java b/plugin/src/main/java/me/libraryaddict/disguise/utilities/updates/LDJenkins.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/utilities/updates/LDJenkins.java rename to plugin/src/main/java/me/libraryaddict/disguise/utilities/updates/LDJenkins.java diff --git a/src/main/java/me/libraryaddict/disguise/utilities/updates/UpdateChecker.java b/plugin/src/main/java/me/libraryaddict/disguise/utilities/updates/UpdateChecker.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/utilities/updates/UpdateChecker.java rename to plugin/src/main/java/me/libraryaddict/disguise/utilities/updates/UpdateChecker.java diff --git a/src/main/java/me/libraryaddict/disguise/utilities/watchers/CompileMethods.java b/plugin/src/main/java/me/libraryaddict/disguise/utilities/watchers/CompileMethods.java similarity index 98% rename from src/main/java/me/libraryaddict/disguise/utilities/watchers/CompileMethods.java rename to plugin/src/main/java/me/libraryaddict/disguise/utilities/watchers/CompileMethods.java index 2e7d285d..6fa063f7 100644 --- a/src/main/java/me/libraryaddict/disguise/utilities/watchers/CompileMethods.java +++ b/plugin/src/main/java/me/libraryaddict/disguise/utilities/watchers/CompileMethods.java @@ -66,6 +66,7 @@ public class CompileMethods { } File soundsFile = new File("target/classes/ANTI_PIRACY_SECRET_FILE"); + System.out.println(soundsFile.getAbsolutePath()); try (FileOutputStream fos = new FileOutputStream(soundsFile)) { byte[] array = String.join("\n", list).getBytes(StandardCharsets.UTF_8); @@ -157,6 +158,7 @@ public class CompileMethods { } File methodsFile = new File("target/classes/ANTI_PIRACY_ENCRYPTION"); + System.out.println(methodsFile.getAbsolutePath()); try (FileOutputStream fos = new FileOutputStream(methodsFile)) { byte[] array = String.join("\n", methods).getBytes(StandardCharsets.UTF_8); diff --git a/src/main/java/me/libraryaddict/disguise/utilities/watchers/DisguiseMethods.java b/plugin/src/main/java/me/libraryaddict/disguise/utilities/watchers/DisguiseMethods.java similarity index 100% rename from src/main/java/me/libraryaddict/disguise/utilities/watchers/DisguiseMethods.java rename to plugin/src/main/java/me/libraryaddict/disguise/utilities/watchers/DisguiseMethods.java diff --git a/src/main/resources/configs/combat.yml b/plugin/src/main/resources/configs/combat.yml similarity index 100% rename from src/main/resources/configs/combat.yml rename to plugin/src/main/resources/configs/combat.yml diff --git a/src/main/resources/configs/commands.yml b/plugin/src/main/resources/configs/commands.yml similarity index 100% rename from src/main/resources/configs/commands.yml rename to plugin/src/main/resources/configs/commands.yml diff --git a/src/main/resources/configs/disguises.yml b/plugin/src/main/resources/configs/disguises.yml similarity index 100% rename from src/main/resources/configs/disguises.yml rename to plugin/src/main/resources/configs/disguises.yml diff --git a/src/main/resources/configs/features.yml b/plugin/src/main/resources/configs/features.yml similarity index 100% rename from src/main/resources/configs/features.yml rename to plugin/src/main/resources/configs/features.yml diff --git a/src/main/resources/configs/libsdisguises.yml b/plugin/src/main/resources/configs/libsdisguises.yml similarity index 100% rename from src/main/resources/configs/libsdisguises.yml rename to plugin/src/main/resources/configs/libsdisguises.yml diff --git a/src/main/resources/configs/nametags.yml b/plugin/src/main/resources/configs/nametags.yml similarity index 100% rename from src/main/resources/configs/nametags.yml rename to plugin/src/main/resources/configs/nametags.yml diff --git a/src/main/resources/configs/players.yml b/plugin/src/main/resources/configs/players.yml similarity index 100% rename from src/main/resources/configs/players.yml rename to plugin/src/main/resources/configs/players.yml diff --git a/src/main/resources/configs/protocol.yml b/plugin/src/main/resources/configs/protocol.yml similarity index 100% rename from src/main/resources/configs/protocol.yml rename to plugin/src/main/resources/configs/protocol.yml diff --git a/src/main/resources/configs/sanity.yml b/plugin/src/main/resources/configs/sanity.yml similarity index 100% rename from src/main/resources/configs/sanity.yml rename to plugin/src/main/resources/configs/sanity.yml diff --git a/src/main/resources/configs/sounds.yml b/plugin/src/main/resources/configs/sounds.yml similarity index 100% rename from src/main/resources/configs/sounds.yml rename to plugin/src/main/resources/configs/sounds.yml diff --git a/src/main/resources/internal.yml b/plugin/src/main/resources/internal.yml similarity index 100% rename from src/main/resources/internal.yml rename to plugin/src/main/resources/internal.yml diff --git a/src/main/resources/plugin.yml b/plugin/src/main/resources/plugin.yml similarity index 100% rename from src/main/resources/plugin.yml rename to plugin/src/main/resources/plugin.yml diff --git a/src/test/java/me/libraryaddict/disguise/disguisetypes/DisguiseCloneTest.java b/plugin/src/test/java/me/libraryaddict/disguise/disguisetypes/DisguiseCloneTest.java similarity index 100% rename from src/test/java/me/libraryaddict/disguise/disguisetypes/DisguiseCloneTest.java rename to plugin/src/test/java/me/libraryaddict/disguise/disguisetypes/DisguiseCloneTest.java diff --git a/src/test/java/me/libraryaddict/disguise/utilities/DisguiseTypesTest.java b/plugin/src/test/java/me/libraryaddict/disguise/utilities/DisguiseTypesTest.java similarity index 100% rename from src/test/java/me/libraryaddict/disguise/utilities/DisguiseTypesTest.java rename to plugin/src/test/java/me/libraryaddict/disguise/utilities/DisguiseTypesTest.java diff --git a/src/test/java/me/libraryaddict/disguise/utilities/DisguiseUtilitiesTest.java b/plugin/src/test/java/me/libraryaddict/disguise/utilities/DisguiseUtilitiesTest.java similarity index 100% rename from src/test/java/me/libraryaddict/disguise/utilities/DisguiseUtilitiesTest.java rename to plugin/src/test/java/me/libraryaddict/disguise/utilities/DisguiseUtilitiesTest.java diff --git a/src/test/java/me/libraryaddict/disguise/utilities/parser/DisguisePermissionsTest.java b/plugin/src/test/java/me/libraryaddict/disguise/utilities/parser/DisguisePermissionsTest.java similarity index 100% rename from src/test/java/me/libraryaddict/disguise/utilities/parser/DisguisePermissionsTest.java rename to plugin/src/test/java/me/libraryaddict/disguise/utilities/parser/DisguisePermissionsTest.java diff --git a/pom.xml b/pom.xml index 9f212d0b..2163189e 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,13 @@ LibsDisguises LibsDisguises + pom 10.0.26-SNAPSHOT + + v1_18_R1 + plugin + shared + unknown @@ -26,154 +32,28 @@ 4.9.3 - - exec:java clean install - LibsDisguises - - - - src/main/resources - true - - plugin.yml - - - - src/main/resources - false - - **/* - - - - ${project.basedir} - - README.md - - - - - - maven-surefire-plugin - 3.0.0-M5 - - - org.codehaus.mojo - exec-maven-plugin - 3.0.0 - - - - my-execution - compile - - java - - - - - true - me.libraryaddict.disguise.utilities.watchers.CompileMethods - - - - org.apache.maven.plugins - maven-shade-plugin - 3.2.4 - - - package - - shade - - - - - true - - - net.kyori:* - - - - - net.kyori - ld-shaded.net.kyori - - - - - - - - - - org.projectlombok - lombok - ${lombok.version} - true - - - com.comphenix.protocol - ProtocolLib - ${protocollib.version} - true - - - org.spigotmc - spigot-api - ${spigot.version} - true - - - org.spigotmc - spigot - ${spigot.version} - true - - - - junit - junit - ${junit.version} - test - true - - - com.destroystokyo.paper - paper-api - ${paper-api.version} - provided - true - - - net.md-5 - bungeecord-chat - ${bungeecord-chat.version} - true - - - net.kyori - adventure-text-minimessage - ${adventure-minimessage.version} - compile - true - - - net.kyori - adventure-text-serializer-gson - ${adventure-serializer.version} - compile - true - - - net.kyori - adventure-api - ${adventure-api.version} - compile - true - - + + + + com.comphenix.protocol + ProtocolLib + ${protocollib.version} + true + + + org.spigotmc + spigot-api + ${spigot.version} + true + + + org.spigotmc + spigot + ${spigot.version} + true + + + diff --git a/shared/pom.xml b/shared/pom.xml new file mode 100644 index 00000000..a213500e --- /dev/null +++ b/shared/pom.xml @@ -0,0 +1,29 @@ + + + + LibsDisguises + LibsDisguises + 10.0.26-SNAPSHOT + + 4.0.0 + + shared + + + + org.spigotmc + spigot + + + org.spigotmc + spigot-api + + + com.comphenix.protocol + ProtocolLib + + + + \ No newline at end of file diff --git a/shared/src/main/java/me/libraryaddict/disguise/utilities/reflection/ReflectionManagerAbstract.java b/shared/src/main/java/me/libraryaddict/disguise/utilities/reflection/ReflectionManagerAbstract.java new file mode 100644 index 00000000..bbef2db8 --- /dev/null +++ b/shared/src/main/java/me/libraryaddict/disguise/utilities/reflection/ReflectionManagerAbstract.java @@ -0,0 +1,140 @@ +package me.libraryaddict.disguise.utilities.reflection; + +import com.comphenix.protocol.wrappers.EnumWrappers; +import com.comphenix.protocol.wrappers.WrappedGameProfile; +import com.mojang.authlib.ProfileLookupCallback; +import org.bukkit.*; +import org.bukkit.block.data.BlockData; +import org.bukkit.entity.Entity; +import org.bukkit.entity.EntityType; +import org.bukkit.entity.Player; +import org.bukkit.entity.Villager; +import org.bukkit.inventory.EquipmentSlot; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.ItemMeta; +import org.bukkit.potion.PotionEffect; +import org.bukkit.util.Vector; + +import java.util.Map; +import java.util.Optional; + +public interface ReflectionManagerAbstract { + boolean hasInvul(Entity entity); + + int getIncrementedStateId(Player player); + + int getNewEntityId(); + + int getNewEntityId(boolean increment); + + Object getPlayerConnectionOrPlayer(Player player); + + Object createEntityInstance(String entityName); + + Object getMobEffectList(int id); + + Object createMobEffect(PotionEffect effect); + + Object createMobEffect(int id, int duration, int amplification, boolean ambient, boolean particles); + + Object getBoundingBox(Entity entity); + + double getXBoundingBox(Entity entity); + + double getYBoundingBox(Entity entity); + + double getZBoundingBox(Entity entity); + + Object getPlayerFromPlayerConnection(Object nmsEntity); + + Entity getBukkitEntity(Object nmsEntity); + + ItemStack getBukkitItem(Object nmsItem); + + ItemStack getCraftItem(ItemStack bukkitItem); + + Object getCraftSound(Sound sound); + + Object getEntityTrackerEntry(Entity target) throws Exception; + + Object getMinecraftServer(); + + String getEnumArt(Art art); + + Object getBlockPosition(int x, int y, int z); + + Enum getEnumDirection(int direction); + + Enum getEnumPlayerInfoAction(int action); + + Object getPlayerInfoData(WrappedGameProfile gameProfile); + + Object getNmsEntity(Entity entity); + + double getPing(Player player); + + float[] getSize(Entity entity); + + WrappedGameProfile getSkullBlob(WrappedGameProfile gameProfile); + + Float getSoundModifier(Object entity); + + void injectCallback(String playername, ProfileLookupCallback callback); + + void setBoundingBox(Entity entity, double x, double y, double z); + + Enum getSoundCategory(String category); + + Enum createEnumItemSlot(EquipmentSlot slot); + + Object getSoundString(Sound sound); + + Optional convertOptional(Object val); + + Object convertVec3(Object object); + + Object convertDirection(EnumWrappers.Direction direction); + + Material getMaterial(String name); + + String getItemName(Material material); + + Object getNmsItem(ItemStack itemStack); + + Object getNmsVillagerData(Villager.Type villagerType, Villager.Profession villagerProfession); + + Object getVillagerType(Villager.Type type); + + Object getVillagerProfession(Villager.Profession profession); + + @Deprecated + Object createSoundEffect(String minecraftKey); + + Object createMinecraftKey(String name); + + Object getVec3D(Vector vector); + + Object getEntityType(EntityType entityType); + + Object registerEntityType(NamespacedKey key); + + int getEntityTypeId(Object entityTypes); + + int getEntityTypeId(EntityType entityType); + + Object getEntityType(NamespacedKey name); + + Object getNmsEntityPose(String enumPose); + + int getCombinedIdByBlockData(BlockData data); + + int getCombinedIdByItemStack(ItemStack itemStack); + + BlockData getBlockDataByCombinedId(int id); + + ItemStack getItemStackByCombinedId(int id); + + Object getWorldServer(World w); + + ItemMeta getDeserializedItemMeta(Map meta); +} diff --git a/v1_18_R1/pom.xml b/v1_18_R1/pom.xml new file mode 100644 index 00000000..a7b6b95c --- /dev/null +++ b/v1_18_R1/pom.xml @@ -0,0 +1,79 @@ + + + + LibsDisguises + LibsDisguises + 10.0.26-SNAPSHOT + + 4.0.0 + + v1_18_R1 + + + + org.spigotmc + spigot + 1.18-R0.1-SNAPSHOT + remapped-mojang + provided + + + org.spigotmc + spigot-api + 1.18-R0.1-SNAPSHOT + provided + + + LibsDisguises + shared + ${project.version} + + + com.comphenix.protocol + ProtocolLib + + + + + + + net.md-5 + specialsource-maven-plugin + 1.2.2 + + + package + + remap + + remap-obf + + org.spigotmc:minecraft-server:1.18-R0.1-SNAPSHOT:txt:maps-mojang + true + org.spigotmc:spigot:1.18-R0.1-SNAPSHOT:jar:remapped-mojang + true + remapped-obf + + + + package + + remap + + remap-spigot + + ${project.build.directory}/${project.artifactId}-${project.version}-remapped-obf.jar + org.spigotmc:minecraft-server:1.18-R0.1-SNAPSHOT:csrg:maps-spigot + org.spigotmc:spigot:1.18-R0.1-SNAPSHOT:jar:remapped-obf + ${project.name} + ${dir} + + + + + + + + \ No newline at end of file diff --git a/v1_18_R1/src/main/java/me/libraryaddict/disguise/v1_18/utilities/reflection/ReflectionManager.java b/v1_18_R1/src/main/java/me/libraryaddict/disguise/v1_18/utilities/reflection/ReflectionManager.java new file mode 100644 index 00000000..6974cf1a --- /dev/null +++ b/v1_18_R1/src/main/java/me/libraryaddict/disguise/v1_18/utilities/reflection/ReflectionManager.java @@ -0,0 +1,414 @@ +package me.libraryaddict.disguise.v1_18.utilities.reflection; + +import com.comphenix.protocol.wrappers.*; +import com.comphenix.protocol.wrappers.EnumWrappers.Direction; +import com.mojang.authlib.Agent; +import com.mojang.authlib.GameProfile; +import com.mojang.authlib.ProfileLookupCallback; +import com.mojang.authlib.minecraft.MinecraftSessionService; +import it.unimi.dsi.fastutil.ints.Int2ObjectMap; +import me.libraryaddict.disguise.utilities.reflection.ReflectionManagerAbstract; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Registry; +import net.minecraft.network.chat.TextComponent; +import net.minecraft.network.protocol.game.ClientboundPlayerInfoPacket; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.server.dedicated.DedicatedServer; +import net.minecraft.server.level.*; +import net.minecraft.server.network.ServerGamePacketListenerImpl; +import net.minecraft.server.network.ServerPlayerConnection; +import net.minecraft.sounds.SoundEvent; +import net.minecraft.sounds.SoundSource; +import net.minecraft.world.damagesource.DamageSource; +import net.minecraft.world.effect.MobEffect; +import net.minecraft.world.effect.MobEffectInstance; +import net.minecraft.world.entity.EntityDimensions; +import net.minecraft.world.entity.npc.VillagerData; +import net.minecraft.world.entity.npc.VillagerProfession; +import net.minecraft.world.entity.npc.VillagerType; +import net.minecraft.world.level.GameType; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.phys.AABB; +import net.minecraft.world.phys.Vec3; +import org.bukkit.*; +import org.bukkit.block.data.BlockData; +import org.bukkit.craftbukkit.v1_18_R1.CraftArt; +import org.bukkit.craftbukkit.v1_18_R1.CraftServer; +import org.bukkit.craftbukkit.v1_18_R1.CraftSound; +import org.bukkit.craftbukkit.v1_18_R1.CraftWorld; +import org.bukkit.craftbukkit.v1_18_R1.block.data.CraftBlockData; +import org.bukkit.craftbukkit.v1_18_R1.entity.CraftEntity; +import org.bukkit.craftbukkit.v1_18_R1.entity.CraftPlayer; +import org.bukkit.craftbukkit.v1_18_R1.inventory.CraftItemStack; +import org.bukkit.craftbukkit.v1_18_R1.util.CraftMagicNumbers; +import org.bukkit.craftbukkit.v1_18_R1.util.CraftNamespacedKey; +import org.bukkit.entity.*; +import org.bukkit.inventory.EquipmentSlot; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.ItemMeta; +import org.bukkit.potion.PotionEffect; +import org.bukkit.util.EulerAngle; +import org.bukkit.util.Vector; + +import java.lang.reflect.Field; +import java.lang.reflect.Method; +import java.util.*; +import java.util.concurrent.atomic.AtomicInteger; + +public class ReflectionManager implements ReflectionManagerAbstract { + public boolean hasInvul(Entity entity) { + net.minecraft.world.entity.Entity nmsEntity = ((CraftEntity) entity).getHandle(); + + if (nmsEntity instanceof net.minecraft.world.entity.LivingEntity) { + return nmsEntity.invulnerableTime > 0; + } else { + return nmsEntity.isInvulnerableTo(DamageSource.GENERIC); + } + } + + public int getIncrementedStateId(Player player) { + ServerPlayer serverPlayer = ((CraftPlayer) player).getHandle(); + return serverPlayer.containerMenu.incrementStateId(); // TODO Check correct container + } + + public int getNewEntityId() { + return getNewEntityId(true); + } + + public int getNewEntityId(boolean increment) { + try { + Field entityCounter = net.minecraft.world.entity.Entity.class.getDeclaredField("b"); + entityCounter.setAccessible(true); + AtomicInteger atomicInteger = (AtomicInteger) entityCounter.get(null); + if (increment) { + return atomicInteger.incrementAndGet(); + } else { + return atomicInteger.get(); + } + } catch (ReflectiveOperationException e) { + e.printStackTrace(); + } + + return -1; + } + + public ServerGamePacketListenerImpl getPlayerConnectionOrPlayer(Player player) { + return ((CraftPlayer) player).getHandle().connection; + } + + public net.minecraft.world.entity.Entity createEntityInstance(String entityName) { + Optional> optional = net.minecraft.world.entity.EntityType.byString(entityName.toLowerCase(Locale.ROOT)); + if (optional.isPresent()) { + net.minecraft.world.entity.EntityType entityType = optional.get(); + ServerLevel world = getWorldServer(Bukkit.getWorlds().get(0)); + net.minecraft.world.entity.Entity entity = entityType.create(world); + // Workaround for paper being 2 smart 4 me + entity.setPos(1.0, 1.0, 1.0); + entity.setPos(0.0, 0.0, 0.0); + return entity; + } + + return null; + } + + public MobEffect getMobEffectList(int id) { + return MobEffect.byId(id); + } + + public MobEffectInstance createMobEffect(PotionEffect effect) { + return createMobEffect(effect.getType().getId(), effect.getDuration(), effect.getAmplifier(), effect.isAmbient(), effect.hasParticles()); + } + + public MobEffectInstance createMobEffect(int id, int duration, int amplification, boolean ambient, boolean particles) { + return new MobEffectInstance(getMobEffectList(id), duration, amplification, ambient, particles); + } + + public AABB getBoundingBox(Entity entity) { + return ((CraftEntity) entity).getHandle().getBoundingBox(); + } + + public double getXBoundingBox(Entity entity) { + return getBoundingBox(entity).maxX - getBoundingBox(entity).minX; + } + + public double getYBoundingBox(Entity entity) { + return getBoundingBox(entity).maxY - getBoundingBox(entity).minY; + } + + public double getZBoundingBox(Entity entity) { + return getBoundingBox(entity).maxZ - getBoundingBox(entity).minZ; + } + + public ServerPlayer getPlayerFromPlayerConnection(Object nmsEntity) { + return ((ServerPlayerConnection) nmsEntity).getPlayer(); + } + + public Entity getBukkitEntity(Object nmsEntity) { + return ((net.minecraft.world.entity.Entity) nmsEntity).getBukkitEntity(); + } + + public ItemStack getBukkitItem(Object nmsItem) { + return CraftItemStack.asBukkitCopy((net.minecraft.world.item.ItemStack) nmsItem); + } + + public ItemStack getCraftItem(ItemStack bukkitItem) { + return CraftItemStack.asCraftCopy(bukkitItem); + } + + public SoundEvent getCraftSound(Sound sound) { + return CraftSound.getSoundEffect(sound); + } + + public ServerEntity getEntityTrackerEntry(Entity target) throws Exception { + ServerLevel world = ((CraftWorld) target.getWorld()).getHandle(); + ServerChunkCache chunkSource = world.getChunkSource(); + ChunkMap chunkMap = chunkSource.chunkMap; + Int2ObjectMap entityMap = chunkMap.entityMap; + ChunkMap.TrackedEntity trackedEntity = entityMap.get(target.getEntityId()); + if (trackedEntity == null) { + return null; + } + + Field field = ChunkMap.TrackedEntity.class.getDeclaredField("b"); + field.setAccessible(true); + + return (ServerEntity) field.get(trackedEntity); + } + + public DedicatedServer getMinecraftServer() { + return ((CraftServer) Bukkit.getServer()).getServer(); + } + + public String getEnumArt(Art art) { + return Registry.MOTIVE.getKey(CraftArt.BukkitToNotch(art)).getPath(); + } + + public BlockPos getBlockPosition(int x, int y, int z) { + return new BlockPos(x, y, z); + } + + public net.minecraft.core.Direction getEnumDirection(int direction) { + return net.minecraft.core.Direction.from2DDataValue(direction); + } + + public ClientboundPlayerInfoPacket.Action getEnumPlayerInfoAction(int action) { + return ClientboundPlayerInfoPacket.Action.values()[action]; + } + + public ClientboundPlayerInfoPacket.PlayerUpdate getPlayerInfoData(WrappedGameProfile gameProfile) { + return new ClientboundPlayerInfoPacket.PlayerUpdate((GameProfile) gameProfile.getHandle(), 0, GameType.SURVIVAL, new TextComponent(gameProfile.getName())); + } + + public Object getNmsEntity(Entity entity) { + return ((CraftEntity) entity).getHandle(); + } + + public double getPing(Player player) { + return player.getPing(); + } + + public float[] getSize(Entity entity) { + net.minecraft.world.entity.Entity nmsEntity = ((CraftEntity) entity).getHandle(); + EntityDimensions dimensions = nmsEntity.getDimensions(net.minecraft.world.entity.Pose.STANDING); + return new float[]{dimensions.width, nmsEntity.getEyeHeight()}; + } + + public WrappedGameProfile getSkullBlob(WrappedGameProfile gameProfile) { + DedicatedServer minecraftServer = getMinecraftServer(); + MinecraftSessionService sessionService = minecraftServer.getSessionService(); + return WrappedGameProfile.fromHandle(sessionService.fillProfileProperties((GameProfile) gameProfile.getHandle(), true)); + } + + public Float getSoundModifier(Object entity) { + if (!(entity instanceof net.minecraft.world.entity.LivingEntity)) { + return 0.0f; + } else { + return ((net.minecraft.world.entity.LivingEntity) entity).getVoicePitch(); + } + } + + public void injectCallback(String playername, ProfileLookupCallback callback) { + Agent agent = Agent.MINECRAFT; + getMinecraftServer().getProfileRepository().findProfilesByNames(new String[]{playername}, agent, callback); + } + + public void setBoundingBox(Entity entity, double x, double y, double z) { + Location loc = entity.getLocation(); + ((CraftEntity) entity).getHandle().setBoundingBox(new AABB( + loc.getX() - x / 2, loc.getY() - y / 2, loc.getZ() - z / 2, + loc.getX() + x / 2, loc.getY() + y / 2, loc.getZ() + z / 2)); + } + + public Enum getSoundCategory(String category) { + return Arrays.stream(SoundSource.values()).filter(soundSource -> category.equalsIgnoreCase(soundSource.getName())).findAny().get(); + } + + /** + * Creates the NMS object EnumItemSlot from an EquipmentSlot. + * + * @param slot + * @return null if the equipment slot is null + */ + public Enum createEnumItemSlot(EquipmentSlot slot) { + switch (slot) { + case HAND: + return net.minecraft.world.entity.EquipmentSlot.MAINHAND; + case OFF_HAND: + return net.minecraft.world.entity.EquipmentSlot.OFFHAND; + case FEET: + return net.minecraft.world.entity.EquipmentSlot.FEET; + case LEGS: + return net.minecraft.world.entity.EquipmentSlot.LEGS; + case CHEST: + return net.minecraft.world.entity.EquipmentSlot.CHEST; + case HEAD: + return net.minecraft.world.entity.EquipmentSlot.HEAD; + default: + return null; + } + } + + public Object getSoundString(Sound sound) { + return CraftSound.getSoundEffect(sound).getLocation().toString(); // TODO + } + + public Optional convertOptional(Object val) { + if (val instanceof BlockPosition) { + BlockPosition pos = (BlockPosition) val; + return Optional.of(getBlockPosition(pos.getX(), pos.getY(), pos.getZ())); + } else if (val instanceof WrappedBlockData) { + Object obj = ((WrappedBlockData) val).getHandle(); + return Optional.of(obj); + } else if (val instanceof ItemStack) { + Object obj = getNmsItem((ItemStack) val); + return Optional.of(obj); + } else if (val instanceof WrappedChatComponent) { + Object obj = ((WrappedChatComponent) val).getHandle(); + return Optional.of(obj); + } + + return Optional.empty(); + } + + public Vec3 convertVec3(Object object) { + if (object instanceof Vector3F) { + Vector3F vector3F = (Vector3F) object; + return new Vec3(vector3F.getX(), vector3F.getY(), vector3F.getZ()); + } else if (object instanceof EulerAngle) { + EulerAngle eulerAngle = (EulerAngle) object; + return new Vec3(eulerAngle.getX(), eulerAngle.getY(), eulerAngle.getZ()); + } + + return null; + } + + public net.minecraft.core.Direction convertDirection(Direction direction) { + return net.minecraft.core.Direction.from3DDataValue(direction.ordinal()); + } + + public Material getMaterial(String name) { + return CraftMagicNumbers.INSTANCE.getMaterial(name, CraftMagicNumbers.INSTANCE.getDataVersion()); + } + + public String getItemName(Material material) { + return Registry.ITEM.getKey(CraftMagicNumbers.getItem(material)).getPath(); + } + + public net.minecraft.world.item.ItemStack getNmsItem(ItemStack itemStack) { + return CraftItemStack.asNMSCopy(itemStack); + } + + public VillagerData getNmsVillagerData(Villager.Type villagerType, Villager.Profession villagerProfession) { + VillagerType nmsVillagerType = Registry.VILLAGER_TYPE.get(CraftNamespacedKey.toMinecraft(villagerType.getKey())); + VillagerProfession nmsVillagerProfession = Registry.VILLAGER_PROFESSION.get(CraftNamespacedKey.toMinecraft(villagerProfession.getKey())); + + return new net.minecraft.world.entity.npc.VillagerData(nmsVillagerType, nmsVillagerProfession, 1); + } + + public VillagerType getVillagerType(Villager.Type type) { + return Registry.VILLAGER_TYPE.get(CraftNamespacedKey.toMinecraft(type.getKey())); + } + + public VillagerProfession getVillagerProfession(Villager.Profession profession) { + return Registry.VILLAGER_PROFESSION.get(CraftNamespacedKey.toMinecraft(profession.getKey())); + } + + @Deprecated + public SoundEvent createSoundEffect(String minecraftKey) { + return new SoundEvent(new ResourceLocation(minecraftKey)); + } + + @Override + public ResourceLocation createMinecraftKey(String name) { + return new ResourceLocation(name); + } + + public Vec3 getVec3D(Vector vector) { + return new Vec3(vector.getX(), vector.getY(), vector.getZ()); + } + + public net.minecraft.world.entity.EntityType getEntityType(EntityType entityType) { + return net.minecraft.world.entity.EntityType.byString(entityType.getName() == null ? entityType.name().toLowerCase(Locale.ENGLISH) : entityType.getName()).orElse(null); + } + + public Object registerEntityType(NamespacedKey key) { + net.minecraft.world.entity.EntityType newEntity = new net.minecraft.world.entity.EntityType<>(null, null, false, false, false, false, null, null, 0, 0); + Registry.register(Registry.ENTITY_TYPE, CraftNamespacedKey.toMinecraft(key), newEntity); + newEntity.getDescriptionId(); + return newEntity; // TODO ??? Some reflection in legacy that I'm unsure about + } + + public int getEntityTypeId(Object entityTypes) { + net.minecraft.world.entity.EntityType entityType = (net.minecraft.world.entity.EntityType) entityTypes; + return Registry.ENTITY_TYPE.getId(entityType); + } + + public int getEntityTypeId(EntityType entityType) { + return getEntityTypeId(getEntityType(entityType)); + } + + public Object getEntityType(NamespacedKey name) { + return Registry.ENTITY_TYPE.get(CraftNamespacedKey.toMinecraft(name)); + } + + public Object getNmsEntityPose(String enumPose) { + return net.minecraft.world.entity.Pose.valueOf(enumPose); + } + + public int getCombinedIdByBlockData(BlockData data) { + BlockState state = ((CraftBlockData) data).getState(); + return Block.getId(state); + } + + public int getCombinedIdByItemStack(ItemStack itemStack) { + Block block = CraftMagicNumbers.getBlock(itemStack.getType()); + return Block.getId(block.defaultBlockState()); + } + + public BlockData getBlockDataByCombinedId(int id) { + return CraftBlockData.fromData(Block.stateById(id)); + } + + public ItemStack getItemStackByCombinedId(int id) { + return new ItemStack(CraftMagicNumbers.getMaterial(Block.stateById(id).getBlock())); + } + + public ServerLevel getWorldServer(World w) { + return ((CraftWorld) w).getHandle(); + } + + public ItemMeta getDeserializedItemMeta(Map meta) { + try { + Class aClass = Class.forName("org.bukkit.craftbukkit.v1_18_R1.inventory.CraftMetaItem$SerializableMeta"); + Method deserialize = aClass.getDeclaredMethod("deserialize", Map.class); + Object itemMeta = deserialize.invoke(null, meta); + + return (ItemMeta) itemMeta; + } catch (Exception e) { + e.printStackTrace(); + } + + return null; + } +} From 49cebe2a31a525d4c3543aa668b3b70c2fcb953e Mon Sep 17 00:00:00 2001 From: Sage M Date: Mon, 6 Dec 2021 21:53:18 -0600 Subject: [PATCH 02/11] Fix module order and encryption file location --- .../disguise/utilities/watchers/CompileMethods.java | 6 ++---- pom.xml | 2 +- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/plugin/src/main/java/me/libraryaddict/disguise/utilities/watchers/CompileMethods.java b/plugin/src/main/java/me/libraryaddict/disguise/utilities/watchers/CompileMethods.java index 6fa063f7..a033b514 100644 --- a/plugin/src/main/java/me/libraryaddict/disguise/utilities/watchers/CompileMethods.java +++ b/plugin/src/main/java/me/libraryaddict/disguise/utilities/watchers/CompileMethods.java @@ -65,8 +65,7 @@ public class CompileMethods { list.add(sound.toString()); } - File soundsFile = new File("target/classes/ANTI_PIRACY_SECRET_FILE"); - System.out.println(soundsFile.getAbsolutePath()); + File soundsFile = new File("plugin/target/classes/ANTI_PIRACY_ENCRYPTION"); try (FileOutputStream fos = new FileOutputStream(soundsFile)) { byte[] array = String.join("\n", list).getBytes(StandardCharsets.UTF_8); @@ -157,8 +156,7 @@ public class CompileMethods { } } - File methodsFile = new File("target/classes/ANTI_PIRACY_ENCRYPTION"); - System.out.println(methodsFile.getAbsolutePath()); + File methodsFile = new File("plugin/target/classes/ANTI_PIRACY_ENCRYPTION"); try (FileOutputStream fos = new FileOutputStream(methodsFile)) { byte[] array = String.join("\n", methods).getBytes(StandardCharsets.UTF_8); diff --git a/pom.xml b/pom.xml index 2163189e..9a34769c 100644 --- a/pom.xml +++ b/pom.xml @@ -8,9 +8,9 @@ pom 10.0.26-SNAPSHOT + shared v1_18_R1 plugin - shared From 08000bda0d8fcf4e7b8d0ad2c66400693d8c5dd3 Mon Sep 17 00:00:00 2001 From: Sage M Date: Mon, 6 Dec 2021 22:25:29 -0600 Subject: [PATCH 03/11] Fix shading of modules --- plugin/pom.xml | 9 +++++++++ v1_18_R1/pom.xml | 4 ++-- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/plugin/pom.xml b/plugin/pom.xml index a3ae6844..db4aaafc 100644 --- a/plugin/pom.xml +++ b/plugin/pom.xml @@ -75,6 +75,14 @@ true + + + LibsDisguises:* + + ** + + + net.kyori:* @@ -165,6 +173,7 @@ LibsDisguises v1_18_R1 ${project.version} + remapped-spigot compile true diff --git a/v1_18_R1/pom.xml b/v1_18_R1/pom.xml index a7b6b95c..b3c3684d 100644 --- a/v1_18_R1/pom.xml +++ b/v1_18_R1/pom.xml @@ -67,8 +67,8 @@ ${project.build.directory}/${project.artifactId}-${project.version}-remapped-obf.jar org.spigotmc:minecraft-server:1.18-R0.1-SNAPSHOT:csrg:maps-spigot org.spigotmc:spigot:1.18-R0.1-SNAPSHOT:jar:remapped-obf - ${project.name} - ${dir} + true + remapped-spigot From 92b741ce0a9e1efdcdbc8ad5fae270464e2be1aa Mon Sep 17 00:00:00 2001 From: Martoph Date: Mon, 6 Dec 2021 22:45:31 -0600 Subject: [PATCH 04/11] Update main plugin to 1.18, convert Metrics to gson --- .../disguise/utilities/metrics/Metrics.java | 135 +++++++++--------- pom.xml | 2 +- 2 files changed, 69 insertions(+), 68 deletions(-) diff --git a/plugin/src/main/java/me/libraryaddict/disguise/utilities/metrics/Metrics.java b/plugin/src/main/java/me/libraryaddict/disguise/utilities/metrics/Metrics.java index d403919e..3bfedff6 100644 --- a/plugin/src/main/java/me/libraryaddict/disguise/utilities/metrics/Metrics.java +++ b/plugin/src/main/java/me/libraryaddict/disguise/utilities/metrics/Metrics.java @@ -1,12 +1,13 @@ package me.libraryaddict.disguise.utilities.metrics; +import com.google.gson.Gson; +import com.google.gson.JsonArray; +import com.google.gson.JsonObject; import me.libraryaddict.disguise.utilities.DisguiseUtilities; import org.bukkit.Bukkit; import org.bukkit.configuration.file.YamlConfiguration; import org.bukkit.plugin.ServicePriority; import org.bukkit.plugin.java.JavaPlugin; -import org.json.simple.JSONArray; -import org.json.simple.JSONObject; import javax.net.ssl.HttpsURLConnection; import java.io.ByteArrayOutputStream; @@ -174,23 +175,23 @@ public class Metrics { * * @return The plugin specific data. */ - public JSONObject getPluginData() { - JSONObject data = new JSONObject(); + public JsonObject getPluginData() { + JsonObject data = new JsonObject(); String pluginName = plugin.getDescription().getName(); - data.put("pluginName", pluginName); // Append the name of the plugin - data.put("pluginVersion", version); // Append the version of the plugin - JSONArray customCharts = new JSONArray(); + data.addProperty("pluginName", pluginName); // Append the name of the plugin + data.addProperty("pluginVersion", version); // Append the version of the plugin + JsonArray customCharts = new JsonArray(); for (CustomChart customChart : charts) { // Add the data of the custom charts - JSONObject chart = customChart.getRequestJsonObject(); + JsonObject chart = customChart.getRequestJsonObject(); if (chart == null) { // If the chart is null, we skip it continue; } customCharts.add(chart); } - data.put("customCharts", customCharts); + data.add("customCharts", customCharts); return data; } @@ -200,7 +201,7 @@ public class Metrics { * * @return The server specific data. */ - private JSONObject getServerData() { + private JsonObject getServerData() { // Minecraft specific data int playerAmount = Bukkit.getOnlinePlayers().size(); int onlineMode = Bukkit.getOnlineMode() ? 1 : 0; @@ -214,19 +215,19 @@ public class Metrics { String osVersion = System.getProperty("os.version"); int coreCount = Runtime.getRuntime().availableProcessors(); - JSONObject data = new JSONObject(); + JsonObject data = new JsonObject(); - data.put("serverUUID", serverUUID); + data.addProperty("serverUUID", serverUUID); - data.put("playerAmount", playerAmount); - data.put("onlineMode", onlineMode); - data.put("bukkitVersion", bukkitVersion); + data.addProperty("playerAmount", playerAmount); + data.addProperty("onlineMode", onlineMode); + data.addProperty("bukkitVersion", bukkitVersion); - data.put("javaVersion", javaVersion); - data.put("osName", osName); - data.put("osArch", osArch); - data.put("osVersion", osVersion); - data.put("coreCount", coreCount); + data.addProperty("javaVersion", javaVersion); + data.addProperty("osName", osName); + data.addProperty("osArch", osArch); + data.addProperty("osVersion", osVersion); + data.addProperty("coreCount", coreCount); return data; } @@ -235,9 +236,9 @@ public class Metrics { * Collects the data and sends it afterwards. */ private void submitData() { - final JSONObject data = getServerData(); + final JsonObject data = getServerData(); - JSONArray pluginData = new JSONArray(); + JsonArray pluginData = new JsonArray(); // Search for all other bStats Metrics classes to get their plugin data for (Class service : Bukkit.getServicesManager().getKnownServices()) { try { @@ -248,13 +249,13 @@ public class Metrics { } // Found one! try { - pluginData.add(service.getMethod("getPluginData").invoke(Bukkit.getServicesManager().load(service))); + pluginData.add(new Gson().toJson(service.getMethod("getPluginData").invoke(Bukkit.getServicesManager().load(service)))); } catch (NoSuchMethodException | IllegalAccessException | InvocationTargetException ignored) { } } - data.put("plugins", pluginData); + data.add("plugins", pluginData); // Create a new thread for the connection to the bStats server new Thread(new Runnable() { @@ -281,7 +282,7 @@ public class Metrics { * @param data The data to send. * @throws Exception If the request failed. */ - private static void sendData(JSONObject data) throws Exception { + private static void sendData(JsonObject data) throws Exception { if (data == null) { throw new IllegalArgumentException("Data cannot be null!"); } @@ -350,16 +351,16 @@ public class Metrics { this.chartId = chartId; } - protected JSONObject getRequestJsonObject() { - JSONObject chart = new JSONObject(); - chart.put("chartId", chartId); + protected JsonObject getRequestJsonObject() { + JsonObject chart = new JsonObject(); + chart.addProperty("chartId", chartId); try { - JSONObject data = getChartData(); + JsonObject data = getChartData(); if (data == null) { // If the data is null we don't send the chart. return null; } - chart.put("data", data); + chart.add("data", data); } catch (Throwable t) { if (logFailedRequests) { @@ -370,7 +371,7 @@ public class Metrics { return chart; } - protected abstract JSONObject getChartData(); + protected abstract JsonObject getChartData(); } /** @@ -395,14 +396,14 @@ public class Metrics { public abstract String getValue(); @Override - protected JSONObject getChartData() { - JSONObject data = new JSONObject(); + protected JsonObject getChartData() { + JsonObject data = new JsonObject(); String value = getValue(); if (value == null || value.isEmpty()) { // Null = skip the chart return null; } - data.put("value", value); + data.addProperty("value", value); return data; } } @@ -431,9 +432,9 @@ public class Metrics { public abstract HashMap getValues(HashMap valueMap); @Override - protected JSONObject getChartData() { - JSONObject data = new JSONObject(); - JSONObject values = new JSONObject(); + protected JsonObject getChartData() { + JsonObject data = new JsonObject(); + JsonObject values = new JsonObject(); HashMap map = getValues(new HashMap()); if (map == null || map.isEmpty()) { // Null = skip the chart @@ -445,13 +446,13 @@ public class Metrics { continue; // Skip this invalid } allSkipped = false; - values.put(entry.getKey(), entry.getValue()); + values.addProperty(entry.getKey(), entry.getValue()); } if (allSkipped) { // Null = skip the chart return null; } - data.put("values", values); + data.add("values", values); return data; } } @@ -478,14 +479,14 @@ public class Metrics { public abstract int getValue(); @Override - protected JSONObject getChartData() { - JSONObject data = new JSONObject(); + protected JsonObject getChartData() { + JsonObject data = new JsonObject(); int value = getValue(); if (value == 0) { // Null = skip the chart return null; } - data.put("value", value); + data.addProperty("value", value); return data; } } @@ -514,9 +515,9 @@ public class Metrics { public abstract HashMap getValues(HashMap valueMap); @Override - protected JSONObject getChartData() { - JSONObject data = new JSONObject(); - JSONObject values = new JSONObject(); + protected JsonObject getChartData() { + JsonObject data = new JsonObject(); + JsonObject values = new JsonObject(); HashMap map = getValues(new HashMap()); if (map == null || map.isEmpty()) { // Null = skip the chart @@ -528,13 +529,13 @@ public class Metrics { continue; // Skip this invalid } allSkipped = false; - values.put(entry.getKey(), entry.getValue()); + values.addProperty(entry.getKey(), entry.getValue()); } if (allSkipped) { // Null = skip the chart return null; } - data.put("values", values); + data.add("values", values); return data; } } @@ -563,20 +564,20 @@ public class Metrics { public abstract HashMap getValues(HashMap valueMap); @Override - protected JSONObject getChartData() { - JSONObject data = new JSONObject(); - JSONObject values = new JSONObject(); + protected JsonObject getChartData() { + JsonObject data = new JsonObject(); + JsonObject values = new JsonObject(); HashMap map = getValues(new HashMap()); if (map == null || map.isEmpty()) { // Null = skip the chart return null; } for (Map.Entry entry : map.entrySet()) { - JSONArray categoryValues = new JSONArray(); + JsonArray categoryValues = new JsonArray(); categoryValues.add(entry.getValue()); - values.put(entry.getKey(), categoryValues); + values.add(entry.getKey(), categoryValues); } - data.put("values", values); + data.add("values", values); return data; } } @@ -605,9 +606,9 @@ public class Metrics { public abstract HashMap getValues(HashMap valueMap); @Override - protected JSONObject getChartData() { - JSONObject data = new JSONObject(); - JSONObject values = new JSONObject(); + protected JsonObject getChartData() { + JsonObject data = new JsonObject(); + JsonObject values = new JsonObject(); HashMap map = getValues(new HashMap()); if (map == null || map.isEmpty()) { // Null = skip the chart @@ -619,17 +620,17 @@ public class Metrics { continue; // Skip this invalid } allSkipped = false; - JSONArray categoryValues = new JSONArray(); + JsonArray categoryValues = new JsonArray(); for (int categoryValue : entry.getValue()) { categoryValues.add(categoryValue); } - values.put(entry.getKey(), categoryValues); + values.add(entry.getKey(), categoryValues); } if (allSkipped) { // Null = skip the chart return null; } - data.put("values", values); + data.add("values", values); return data; } } @@ -656,15 +657,15 @@ public class Metrics { public abstract Country getValue(); @Override - protected JSONObject getChartData() { - JSONObject data = new JSONObject(); + protected JsonObject getChartData() { + JsonObject data = new JsonObject(); Country value = getValue(); if (value == null) { // Null = skip the chart return null; } - data.put("value", value.getCountryIsoTag()); + data.addProperty("value", value.getCountryIsoTag()); return data; } } @@ -693,9 +694,9 @@ public class Metrics { public abstract HashMap getValues(HashMap valueMap); @Override - protected JSONObject getChartData() { - JSONObject data = new JSONObject(); - JSONObject values = new JSONObject(); + protected JsonObject getChartData() { + JsonObject data = new JsonObject(); + JsonObject values = new JsonObject(); HashMap map = getValues(new HashMap()); if (map == null || map.isEmpty()) { // Null = skip the chart @@ -707,13 +708,13 @@ public class Metrics { continue; // Skip this invalid } allSkipped = false; - values.put(entry.getKey().getCountryIsoTag(), entry.getValue()); + values.addProperty(entry.getKey().getCountryIsoTag(), entry.getValue()); } if (allSkipped) { // Null = skip the chart return null; } - data.put("values", values); + data.add("values", values); return data; } } diff --git a/pom.xml b/pom.xml index 9a34769c..63467912 100644 --- a/pom.xml +++ b/pom.xml @@ -23,7 +23,7 @@ 1.18.22 4.7.0 - 1.17-R0.1-SNAPSHOT + 1.18-R0.1-SNAPSHOT 4.13.2 1.16.5-R0.1-SNAPSHOT 1.12-SNAPSHOT From bcd4ed56fc1d2e592eeee75d536c79692e652fbc Mon Sep 17 00:00:00 2001 From: Martoph Date: Tue, 7 Dec 2021 16:20:15 -0600 Subject: [PATCH 05/11] Fixup remaining critical startup issues --- .../utilities/reflection/ClassMappings.java | 48 +++++++++++++++++++ .../reflection/ReflectionManager.java | 30 ++++++++---- .../reflection/ReflectionManagerAbstract.java | 13 +++++ .../reflection/ReflectionManager.java | 29 +++++++++-- 4 files changed, 106 insertions(+), 14 deletions(-) create mode 100644 plugin/src/main/java/me/libraryaddict/disguise/utilities/reflection/ClassMappings.java diff --git a/plugin/src/main/java/me/libraryaddict/disguise/utilities/reflection/ClassMappings.java b/plugin/src/main/java/me/libraryaddict/disguise/utilities/reflection/ClassMappings.java new file mode 100644 index 00000000..6ad67aa7 --- /dev/null +++ b/plugin/src/main/java/me/libraryaddict/disguise/utilities/reflection/ClassMappings.java @@ -0,0 +1,48 @@ +package me.libraryaddict.disguise.utilities.reflection; + +import java.util.HashMap; + +public class ClassMappings { + private static HashMap classLocations = new HashMap<>(); + + private static final String[] packages = getPackages(); + + public static String getClass(String packageHint, String className) { + String location = classLocations.get(className); + if (location != null) + return location; + location = className; + String[] arrayOfString; + int i; + byte b; + for (arrayOfString = packages, i = arrayOfString.length, b = 0; b < i; ) { + String pack = arrayOfString[b]; + if (!pack.startsWith(packageHint)) { + b++; + continue; + } + String toTry = pack + "." + className; + try { + Class.forName(toTry); + location = pack + "." + className; + break; + } catch (Throwable throwable) { + b++; + } + } + classLocations.put(className, location); + return location; + } + + private static String[] getPackages() { + String[] s = { + "net.minecraft.core", "net.minecraft.core.particles", "net.minecraft.nbt", "net.minecraft.network.chat", "net.minecraft.network.protocol.game", "net.minecraft.network.syncher", "net.minecraft.resources", "net.minecraft.server.level", "net.minecraft.server", "net.minecraft.server.network", + "net.minecraft.sounds", "net.minecraft.world.damagesource", "net.minecraft.world.effect", "net.minecraft.world.entity.ambient", "net.minecraft.world.entity.animal.axolotl", "net.minecraft.world.entity.animal", "net.minecraft.world.entity.animal.goat", "net.minecraft.world.entity.animal.horse", "net.minecraft.world.entity.boss.enderdragon", "net.minecraft.world.entity.boss.wither", + "net.minecraft.world.entity.decoration", "net.minecraft.world.entity", "net.minecraft.world.entity.item", "net.minecraft.world.entity.monster", "net.minecraft.world.entity.monster.hoglin", "net.minecraft.world.entity.monster.piglin", "net.minecraft.world.entity.npc", "net.minecraft.world.entity.player", "net.minecraft.world.entity.projectile", "net.minecraft.world.entity.vehicle", + "net.minecraft.world.inventory", "net.minecraft.world.item", "net.minecraft.world.level.block", "net.minecraft.world.level.block.state", "net.minecraft.world.level", "net.minecraft.world.phys", "org.bukkit.craftbukkit.$version$.block.data", "org.bukkit.craftbukkit.$version$", "org.bukkit.craftbukkit.$version$.entity", "org.bukkit.craftbukkit.$version$.inventory", + "org.bukkit.craftbukkit.$version$.util" }; + for (int i = 0; i < s.length; i++) + s[i] = s[i].replace("$version$", ReflectionManager.getBukkitVersion()); + return s; + } +} \ No newline at end of file diff --git a/plugin/src/main/java/me/libraryaddict/disguise/utilities/reflection/ReflectionManager.java b/plugin/src/main/java/me/libraryaddict/disguise/utilities/reflection/ReflectionManager.java index de2ce3d9..91c307fe 100644 --- a/plugin/src/main/java/me/libraryaddict/disguise/utilities/reflection/ReflectionManager.java +++ b/plugin/src/main/java/me/libraryaddict/disguise/utilities/reflection/ReflectionManager.java @@ -117,7 +117,15 @@ public class ReflectionManager { public static void init() { try { - v1_18ReflectionManager = getReflectionManager(NmsVersion.v1_18); + // Load first because its necessary for 1.18+ + if (NmsVersion.v1_14.isSupported()) { + entityPoseClass = getNmsClass("EntityPose"); + } + + if (NmsVersion.v1_18.isSupported()) { + v1_18ReflectionManager = getReflectionManager(NmsVersion.v1_18); + return; + } boundingBoxConstructor = getNmsConstructor("AxisAlignedBB", double.class, double.class, double.class, double.class, double.class, double.class); setBoundingBoxMethod = getNmsMethod("Entity", "a", getNmsClass("AxisAlignedBB")); @@ -199,7 +207,6 @@ public class ReflectionManager { entityTypesAMethod = getNmsMethod("EntityTypes", "a", String.class); if (NmsVersion.v1_14.isSupported()) { - entityPoseClass = getNmsClass("EntityPose"); registryBlocksGetMethod = getNmsMethod("RegistryBlocks", "get", getNmsClass("MinecraftKey")); villagerDataConstructor = getNmsConstructor("VillagerData", getNmsClass("VillagerType"), getNmsClass("VillagerProfession"), int.class); @@ -348,6 +355,7 @@ public class ReflectionManager { if (NmsVersion.v1_18.isSupported()) { return v1_18ReflectionManager.getIncrementedStateId(player); } + try { Object container = playerInventoryContainer.get(getNmsEntity(player)); @@ -924,13 +932,7 @@ public class ReflectionManager { } public static WrappedGameProfile getGameProfile(UUID uuid, String playerName) { - try { - return new WrappedGameProfile(uuid != null ? uuid : getRandomUUID(), - playerName == null || playerName.length() < 17 ? playerName : playerName.substring(0, 16)); - } catch (Exception ex) { - ex.printStackTrace(); - } - return null; + return ReflectionManagerAbstract.getGameProfile(uuid == null ? getRandomUUID() : uuid, playerName); } public static WrappedGameProfile getClonedProfile(WrappedGameProfile gameProfile) { @@ -968,6 +970,10 @@ public class ReflectionManager { } private static String getLocation(String pack, String className) { + if (NmsVersion.v1_18.isSupported()) { + return ClassMappings.getClass(pack, className); + } + String toReturn = classLocations.get(className); if (toReturn != null) { @@ -1677,6 +1683,10 @@ public class ReflectionManager { public static Object createDataWatcherItem(MetaIndex id, Object value) { WrappedDataWatcherObject watcherObject = createDataWatcherObject(id, value); + if (NmsVersion.v1_18.isSupported()) { + return v1_18ReflectionManager.createDataWatcherItem(watcherObject, convertInvalidMeta(value)); + } + try { return dataWatcherItemConstructor.newInstance(watcherObject.getHandle(), convertInvalidMeta(value)); } catch (InstantiationException | IllegalAccessException | InvocationTargetException e) { @@ -2253,7 +2263,7 @@ public class ReflectionManager { return; } - Object nmsEntity = ReflectionManager.createEntityInstance(disguiseType, nmsEntityName); + Object nmsEntity = ReflectionManager.createEntityInstance(disguiseType, NmsVersion.v1_18.isSupported() ? disguiseType.getEntityType().getKey().getKey() : nmsEntityName); if (nmsEntity == null) { DisguiseUtilities.getLogger().warning("Entity not found! (" + nmsEntityName + ")"); diff --git a/shared/src/main/java/me/libraryaddict/disguise/utilities/reflection/ReflectionManagerAbstract.java b/shared/src/main/java/me/libraryaddict/disguise/utilities/reflection/ReflectionManagerAbstract.java index bbef2db8..9a1ef310 100644 --- a/shared/src/main/java/me/libraryaddict/disguise/utilities/reflection/ReflectionManagerAbstract.java +++ b/shared/src/main/java/me/libraryaddict/disguise/utilities/reflection/ReflectionManagerAbstract.java @@ -1,6 +1,7 @@ package me.libraryaddict.disguise.utilities.reflection; import com.comphenix.protocol.wrappers.EnumWrappers; +import com.comphenix.protocol.wrappers.WrappedDataWatcher; import com.comphenix.protocol.wrappers.WrappedGameProfile; import com.mojang.authlib.ProfileLookupCallback; import org.bukkit.*; @@ -17,6 +18,7 @@ import org.bukkit.util.Vector; import java.util.Map; import java.util.Optional; +import java.util.UUID; public interface ReflectionManagerAbstract { boolean hasInvul(Entity entity); @@ -107,6 +109,8 @@ public interface ReflectionManagerAbstract { Object getVillagerProfession(Villager.Profession profession); + Object createDataWatcherItem(WrappedDataWatcher.WrappedDataWatcherObject wrappedDataWatcherObject, T metaItem); + @Deprecated Object createSoundEffect(String minecraftKey); @@ -137,4 +141,13 @@ public interface ReflectionManagerAbstract { Object getWorldServer(World w); ItemMeta getDeserializedItemMeta(Map meta); + + static WrappedGameProfile getGameProfile(UUID uuid, String playerName) { + try { + return new WrappedGameProfile(uuid, playerName == null || playerName.length() < 17 ? playerName : playerName.substring(0, 16)); + } catch (Exception ex) { + ex.printStackTrace(); + } + return null; + } } diff --git a/v1_18_R1/src/main/java/me/libraryaddict/disguise/v1_18/utilities/reflection/ReflectionManager.java b/v1_18_R1/src/main/java/me/libraryaddict/disguise/v1_18/utilities/reflection/ReflectionManager.java index 6974cf1a..2106d68c 100644 --- a/v1_18_R1/src/main/java/me/libraryaddict/disguise/v1_18/utilities/reflection/ReflectionManager.java +++ b/v1_18_R1/src/main/java/me/libraryaddict/disguise/v1_18/utilities/reflection/ReflectionManager.java @@ -2,6 +2,7 @@ package me.libraryaddict.disguise.v1_18.utilities.reflection; import com.comphenix.protocol.wrappers.*; import com.comphenix.protocol.wrappers.EnumWrappers.Direction; +import com.comphenix.protocol.wrappers.nbt.NbtWrapper; import com.mojang.authlib.Agent; import com.mojang.authlib.GameProfile; import com.mojang.authlib.ProfileLookupCallback; @@ -10,8 +11,11 @@ import it.unimi.dsi.fastutil.ints.Int2ObjectMap; import me.libraryaddict.disguise.utilities.reflection.ReflectionManagerAbstract; import net.minecraft.core.BlockPos; import net.minecraft.core.Registry; +import net.minecraft.core.Vector3f; import net.minecraft.network.chat.TextComponent; import net.minecraft.network.protocol.game.ClientboundPlayerInfoPacket; +import net.minecraft.network.syncher.EntityDataAccessor; +import net.minecraft.network.syncher.SynchedEntityData; import net.minecraft.resources.ResourceLocation; import net.minecraft.server.dedicated.DedicatedServer; import net.minecraft.server.level.*; @@ -26,6 +30,8 @@ import net.minecraft.world.entity.EntityDimensions; import net.minecraft.world.entity.npc.VillagerData; import net.minecraft.world.entity.npc.VillagerProfession; import net.minecraft.world.entity.npc.VillagerType; +import net.minecraft.world.entity.projectile.FishingHook; +import net.minecraft.world.entity.projectile.ThrownEnderpearl; import net.minecraft.world.level.GameType; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.state.BlockState; @@ -102,7 +108,18 @@ public class ReflectionManager implements ReflectionManagerAbstract { if (optional.isPresent()) { net.minecraft.world.entity.EntityType entityType = optional.get(); ServerLevel world = getWorldServer(Bukkit.getWorlds().get(0)); - net.minecraft.world.entity.Entity entity = entityType.create(world); + net.minecraft.world.entity.Entity entity; + if (entityType == net.minecraft.world.entity.EntityType.PLAYER) { + WrappedGameProfile gameProfile = ReflectionManagerAbstract.getGameProfile(new UUID(0, 0), "Steve"); + entity = new ServerPlayer(getMinecraftServer(), world, (GameProfile) gameProfile.getHandle()); + }/* else if (entityType == net.minecraft.world.entity.EntityType.ENDER_PEARL) { + entity = new ThrownEnderpearl(world, (net.minecraft.world.entity.LivingEntity) createEntityInstance("cow")); + } else if (entityType == net.minecraft.world.entity.EntityType.FISHING_BOBBER) { + entity = new FishingHook((net.minecraft.world.entity.player.Player) createEntityInstance("player"), world, 0, 0); + }*/ else { + entity = entityType.create(world); + } + // Workaround for paper being 2 smart 4 me entity.setPos(1.0, 1.0, 1.0); entity.setPos(0.0, 0.0, 0.0); @@ -291,13 +308,13 @@ public class ReflectionManager implements ReflectionManagerAbstract { return Optional.empty(); } - public Vec3 convertVec3(Object object) { + public Vector3f convertVec3(Object object) { if (object instanceof Vector3F) { Vector3F vector3F = (Vector3F) object; - return new Vec3(vector3F.getX(), vector3F.getY(), vector3F.getZ()); + return new Vector3f(vector3F.getX(), vector3F.getY(), vector3F.getZ()); } else if (object instanceof EulerAngle) { EulerAngle eulerAngle = (EulerAngle) object; - return new Vec3(eulerAngle.getX(), eulerAngle.getY(), eulerAngle.getZ()); + return new Vector3f((float) eulerAngle.getX(), (float) eulerAngle.getY(), (float) eulerAngle.getZ()); } return null; @@ -334,6 +351,10 @@ public class ReflectionManager implements ReflectionManagerAbstract { return Registry.VILLAGER_PROFESSION.get(CraftNamespacedKey.toMinecraft(profession.getKey())); } + public SynchedEntityData.DataItem createDataWatcherItem(WrappedDataWatcher.WrappedDataWatcherObject wrappedDataWatcherObject, T metaItem) { + return new SynchedEntityData.DataItem<>((EntityDataAccessor) wrappedDataWatcherObject.getHandle(), metaItem); + } + @Deprecated public SoundEvent createSoundEffect(String minecraftKey) { return new SoundEvent(new ResourceLocation(minecraftKey)); From 9f6b2fb535650df06fc19bafa3c4997ea2cb548e Mon Sep 17 00:00:00 2001 From: libraryaddict Date: Wed, 8 Dec 2021 14:10:19 +1300 Subject: [PATCH 06/11] Minor fixes --- plugin/pom.xml | 8 +++++ .../disguise/utilities/DisguiseUtilities.java | 29 ++++++++------- .../reflection/ReflectionManager.java | 35 ++++--------------- .../utilities/watchers/CompileMethods.java | 2 +- .../reflection/v1_18}/ReflectionManager.java | 2 +- 5 files changed, 33 insertions(+), 43 deletions(-) rename v1_18_R1/src/main/java/me/libraryaddict/disguise/{v1_18/utilities/reflection => utilities/reflection/v1_18}/ReflectionManager.java (99%) diff --git a/plugin/pom.xml b/plugin/pom.xml index db4aaafc..e1861470 100644 --- a/plugin/pom.xml +++ b/plugin/pom.xml @@ -38,6 +38,14 @@ + + org.apache.maven.plugins + maven-jar-plugin + 2.3.1 + + ../target + + maven-surefire-plugin 3.0.0-M5 diff --git a/plugin/src/main/java/me/libraryaddict/disguise/utilities/DisguiseUtilities.java b/plugin/src/main/java/me/libraryaddict/disguise/utilities/DisguiseUtilities.java index 81555b74..de11ac34 100644 --- a/plugin/src/main/java/me/libraryaddict/disguise/utilities/DisguiseUtilities.java +++ b/plugin/src/main/java/me/libraryaddict/disguise/utilities/DisguiseUtilities.java @@ -480,7 +480,12 @@ public class DisguiseUtilities { // If we are on 1.17, you need this release or dev build // ProtocolLib is a little funny in that it provides next release version as the current version - return new String[]{"4.7.0", "528"}; + if (!NmsVersion.v1_18.isSupported()) { + return new String[]{"4.7.0", "528"}; + } + + // If you're on 1.18.. + return new String[]{"4.8.0", "538"}; } public static boolean isProtocolLibOutdated() { @@ -1609,8 +1614,8 @@ public class DisguiseUtilities { Set trackedPlayers = (Set) ReflectionManager.getNmsField("EntityTrackerEntry", "trackedPlayers").get(entityTrackerEntry); - Method clear = ReflectionManager - .getNmsMethod("EntityTrackerEntry", NmsVersion.v1_14.isSupported() ? "a" : "clear", ReflectionManager.getNmsClass("EntityPlayer")); + Method clear = ReflectionManager.getNmsMethod("EntityTrackerEntry", NmsVersion.v1_14.isSupported() ? "a" : "clear", + ReflectionManager.getNmsClass("EntityPlayer")); final Method updatePlayer = ReflectionManager.getNmsMethod("EntityTrackerEntry", NmsVersion.v1_14.isSupported() ? "b" : "updatePlayer", ReflectionManager.getNmsClass("EntityPlayer")); @@ -1665,8 +1670,8 @@ public class DisguiseUtilities { if (entityTrackerEntry != null) { Set trackedPlayers = (Set) ReflectionManager.getNmsField("EntityTrackerEntry", "trackedPlayers").get(entityTrackerEntry); - Method clear = ReflectionManager - .getNmsMethod("EntityTrackerEntry", NmsVersion.v1_14.isSupported() ? "a" : "clear", ReflectionManager.getNmsClass("EntityPlayer")); + Method clear = ReflectionManager.getNmsMethod("EntityTrackerEntry", NmsVersion.v1_14.isSupported() ? "a" : "clear", + ReflectionManager.getNmsClass("EntityPlayer")); final Method updatePlayer = ReflectionManager.getNmsMethod("EntityTrackerEntry", NmsVersion.v1_14.isSupported() ? "b" : "updatePlayer", ReflectionManager.getNmsClass("EntityPlayer")); @@ -1732,8 +1737,8 @@ public class DisguiseUtilities { Set trackedPlayers = (Set) ReflectionManager.getNmsField("EntityTrackerEntry", "trackedPlayers").get(entityTrackerEntry); // TODO Store the fields - final Method clear = ReflectionManager - .getNmsMethod("EntityTrackerEntry", NmsVersion.v1_14.isSupported() ? "a" : "clear", ReflectionManager.getNmsClass("EntityPlayer")); + final Method clear = ReflectionManager.getNmsMethod("EntityTrackerEntry", NmsVersion.v1_14.isSupported() ? "a" : "clear", + ReflectionManager.getNmsClass("EntityPlayer")); final Method updatePlayer = ReflectionManager.getNmsMethod("EntityTrackerEntry", NmsVersion.v1_14.isSupported() ? "b" : "updatePlayer", ReflectionManager.getNmsClass("EntityPlayer")); @@ -1859,8 +1864,8 @@ public class DisguiseUtilities { ((Set) trackedPlayersObj).remove(ReflectionManager.getPlayerConnectionOrPlayer(player)); } else { - ((Map) ReflectionManager.getNmsField("EntityTrackerEntry", "trackedPlayerMap").get(entityTrackerEntry)) - .remove(ReflectionManager.getPlayerConnectionOrPlayer(player)); + ((Map) ReflectionManager.getNmsField("EntityTrackerEntry", "trackedPlayerMap").get(entityTrackerEntry)).remove( + ReflectionManager.getPlayerConnectionOrPlayer(player)); } } } catch (Exception ex) { @@ -2962,8 +2967,8 @@ public class DisguiseUtilities { name = ChatColor.translateAlternateColorCodes('&', newNames[i]); } - WrappedDataWatcher.WrappedDataWatcherObject obj = ReflectionManager - .createDataWatcherObject(NmsVersion.v1_13.isSupported() ? MetaIndex.ENTITY_CUSTOM_NAME : MetaIndex.ENTITY_CUSTOM_NAME_OLD, name); + WrappedDataWatcher.WrappedDataWatcherObject obj = ReflectionManager.createDataWatcherObject( + NmsVersion.v1_13.isSupported() ? MetaIndex.ENTITY_CUSTOM_NAME : MetaIndex.ENTITY_CUSTOM_NAME_OLD, name); watcher.setObject(obj, ReflectionManager.convertInvalidMeta(name)); @@ -2985,7 +2990,7 @@ public class DisguiseUtilities { Location loc = disguise.getEntity().getLocation(); packet.getDoubles().write(0, loc.getX()); - packet.getDoubles().write(1, loc.getY() + height + (0.28 * i)); + packet.getDoubles().write(1, loc.getY() + height + (0.28 * i)); packet.getDoubles().write(2, loc.getZ()); packets.add(packet); diff --git a/plugin/src/main/java/me/libraryaddict/disguise/utilities/reflection/ReflectionManager.java b/plugin/src/main/java/me/libraryaddict/disguise/utilities/reflection/ReflectionManager.java index 91c307fe..613f1a88 100644 --- a/plugin/src/main/java/me/libraryaddict/disguise/utilities/reflection/ReflectionManager.java +++ b/plugin/src/main/java/me/libraryaddict/disguise/utilities/reflection/ReflectionManager.java @@ -108,7 +108,6 @@ public class ReflectionManager { private static Field noDamageTicks; private static Method isInvul; private static Object genericDamage; - private static HashMap classLocations = new HashMap<>(); private static Field playerConnection; private static Method incrementedInventoryStateId; private static Field playerInventoryContainer; @@ -766,7 +765,7 @@ public class ReflectionManager { public static ReflectionManagerAbstract getReflectionManager(NmsVersion nmsVersion) { try { - Class aClass = Class.forName("me.libraryaddict.disguise." + nmsVersion.name() + ".utilities.reflection.ReflectionManager"); + Class aClass = Class.forName("me.libraryaddict.disguise.utilities.reflection." + nmsVersion.name() + ".ReflectionManager"); Object o = aClass.getConstructor().newInstance(); return (ReflectionManagerAbstract) o; } catch (ReflectiveOperationException e) { @@ -970,31 +969,7 @@ public class ReflectionManager { } private static String getLocation(String pack, String className) { - if (NmsVersion.v1_18.isSupported()) { - return ClassMappings.getClass(pack, className); - } - - String toReturn = classLocations.get(className); - - if (toReturn != null) { - return toReturn; - } - - try { - ArrayList classes = ClassGetter.getEntriesForPackage(pack); - - String realLocation = classes.stream().filter(s -> s.endsWith("/" + className + ".class")).findAny().get().replace("/", ".").replace(".class", ""); - - classLocations.put(className, realLocation); - - return realLocation; - } catch (Throwable throwable) { - // System.err.println(pack + " - " + className); - // throwable.printStackTrace(); - classLocations.put(className, className); - } - - return className; + return ClassMappings.getClass(pack, className); } public static Class getNmsClass(String className) { @@ -1865,7 +1840,8 @@ public class ReflectionManager { public static Object getNmsEntityPose(EntityPose entityPose) { if (NmsVersion.v1_18.isSupported()) { - return v1_18ReflectionManager.getNmsEntityPose(entityPose == EntityPose.SNEAKING && NmsVersion.v1_15.isSupported() ? "CROUCHING" : entityPose.name()); + return v1_18ReflectionManager.getNmsEntityPose( + entityPose == EntityPose.SNEAKING && NmsVersion.v1_15.isSupported() ? "CROUCHING" : entityPose.name()); } return Enum.valueOf(entityPoseClass, entityPose == EntityPose.SNEAKING && NmsVersion.v1_15.isSupported() ? "CROUCHING" : entityPose.name()); @@ -2263,7 +2239,8 @@ public class ReflectionManager { return; } - Object nmsEntity = ReflectionManager.createEntityInstance(disguiseType, NmsVersion.v1_18.isSupported() ? disguiseType.getEntityType().getKey().getKey() : nmsEntityName); + Object nmsEntity = ReflectionManager.createEntityInstance(disguiseType, + NmsVersion.v1_18.isSupported() ? disguiseType.getEntityType().getKey().getKey() : nmsEntityName); if (nmsEntity == null) { DisguiseUtilities.getLogger().warning("Entity not found! (" + nmsEntityName + ")"); diff --git a/plugin/src/main/java/me/libraryaddict/disguise/utilities/watchers/CompileMethods.java b/plugin/src/main/java/me/libraryaddict/disguise/utilities/watchers/CompileMethods.java index a033b514..7e961ed4 100644 --- a/plugin/src/main/java/me/libraryaddict/disguise/utilities/watchers/CompileMethods.java +++ b/plugin/src/main/java/me/libraryaddict/disguise/utilities/watchers/CompileMethods.java @@ -65,7 +65,7 @@ public class CompileMethods { list.add(sound.toString()); } - File soundsFile = new File("plugin/target/classes/ANTI_PIRACY_ENCRYPTION"); + File soundsFile = new File("plugin/target/classes/ANTI_PIRACY_SECRET_FILE"); try (FileOutputStream fos = new FileOutputStream(soundsFile)) { byte[] array = String.join("\n", list).getBytes(StandardCharsets.UTF_8); diff --git a/v1_18_R1/src/main/java/me/libraryaddict/disguise/v1_18/utilities/reflection/ReflectionManager.java b/v1_18_R1/src/main/java/me/libraryaddict/disguise/utilities/reflection/v1_18/ReflectionManager.java similarity index 99% rename from v1_18_R1/src/main/java/me/libraryaddict/disguise/v1_18/utilities/reflection/ReflectionManager.java rename to v1_18_R1/src/main/java/me/libraryaddict/disguise/utilities/reflection/v1_18/ReflectionManager.java index 2106d68c..a1b2a794 100644 --- a/v1_18_R1/src/main/java/me/libraryaddict/disguise/v1_18/utilities/reflection/ReflectionManager.java +++ b/v1_18_R1/src/main/java/me/libraryaddict/disguise/utilities/reflection/v1_18/ReflectionManager.java @@ -1,4 +1,4 @@ -package me.libraryaddict.disguise.v1_18.utilities.reflection; +package me.libraryaddict.disguise.utilities.reflection.v1_18; import com.comphenix.protocol.wrappers.*; import com.comphenix.protocol.wrappers.EnumWrappers.Direction; From 40ec806b281d3cbbd50d6a5459ea95e84328623b Mon Sep 17 00:00:00 2001 From: Martoph Date: Fri, 10 Dec 2021 11:31:15 -0600 Subject: [PATCH 07/11] 1.18.1 --- pom.xml | 2 +- v1_18_R1/pom.xml | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/pom.xml b/pom.xml index 63467912..55147b57 100644 --- a/pom.xml +++ b/pom.xml @@ -23,7 +23,7 @@ 1.18.22 4.7.0 - 1.18-R0.1-SNAPSHOT + 1.18.1-R0.1-SNAPSHOT 4.13.2 1.16.5-R0.1-SNAPSHOT 1.12-SNAPSHOT diff --git a/v1_18_R1/pom.xml b/v1_18_R1/pom.xml index b3c3684d..187f2ff7 100644 --- a/v1_18_R1/pom.xml +++ b/v1_18_R1/pom.xml @@ -15,14 +15,14 @@ org.spigotmc spigot - 1.18-R0.1-SNAPSHOT + 1.18.1-R0.1-SNAPSHOT remapped-mojang provided org.spigotmc spigot-api - 1.18-R0.1-SNAPSHOT + 1.18.1-R0.1-SNAPSHOT provided @@ -50,9 +50,9 @@ remap-obf - org.spigotmc:minecraft-server:1.18-R0.1-SNAPSHOT:txt:maps-mojang + org.spigotmc:minecraft-server:1.18.1-R0.1-SNAPSHOT:txt:maps-mojang true - org.spigotmc:spigot:1.18-R0.1-SNAPSHOT:jar:remapped-mojang + org.spigotmc:spigot:1.18.1-R0.1-SNAPSHOT:jar:remapped-mojang true remapped-obf @@ -65,8 +65,8 @@ remap-spigot ${project.build.directory}/${project.artifactId}-${project.version}-remapped-obf.jar - org.spigotmc:minecraft-server:1.18-R0.1-SNAPSHOT:csrg:maps-spigot - org.spigotmc:spigot:1.18-R0.1-SNAPSHOT:jar:remapped-obf + org.spigotmc:minecraft-server:1.18.1-R0.1-SNAPSHOT:csrg:maps-spigot + org.spigotmc:spigot:1.18.1-R0.1-SNAPSHOT:jar:remapped-obf true remapped-spigot From 42cd210fc7852cb4e2cee415b4985ff7665d0609 Mon Sep 17 00:00:00 2001 From: libraryaddict Date: Sat, 11 Dec 2021 19:25:17 +1300 Subject: [PATCH 08/11] Change 1.17 to use the nms stuff too --- plugin/pom.xml | 8 + .../reflection/ReflectionManager.java | 378 ++++++--------- pom.xml | 1 + shared/pom.xml | 2 +- v1_17_R1/pom.xml | 81 ++++ .../reflection/v1_17/ReflectionManager.java | 437 ++++++++++++++++++ v1_18_R1/pom.xml | 3 +- 7 files changed, 682 insertions(+), 228 deletions(-) create mode 100644 v1_17_R1/pom.xml create mode 100644 v1_17_R1/src/main/java/me/libraryaddict/disguise/utilities/reflection/v1_17/ReflectionManager.java diff --git a/plugin/pom.xml b/plugin/pom.xml index e1861470..a0b9ef9a 100644 --- a/plugin/pom.xml +++ b/plugin/pom.xml @@ -185,6 +185,14 @@ compile true + + LibsDisguises + v1_17_R1 + ${project.version} + remapped-spigot + compile + true + \ No newline at end of file diff --git a/plugin/src/main/java/me/libraryaddict/disguise/utilities/reflection/ReflectionManager.java b/plugin/src/main/java/me/libraryaddict/disguise/utilities/reflection/ReflectionManager.java index 613f1a88..0df8e0df 100644 --- a/plugin/src/main/java/me/libraryaddict/disguise/utilities/reflection/ReflectionManager.java +++ b/plugin/src/main/java/me/libraryaddict/disguise/utilities/reflection/ReflectionManager.java @@ -111,8 +111,7 @@ public class ReflectionManager { private static Field playerConnection; private static Method incrementedInventoryStateId; private static Field playerInventoryContainer; - - private static ReflectionManagerAbstract v1_18ReflectionManager = getReflectionManager(NmsVersion.v1_18); + private static ReflectionManagerAbstract nmsReflection; public static void init() { try { @@ -121,37 +120,17 @@ public class ReflectionManager { entityPoseClass = getNmsClass("EntityPose"); } - if (NmsVersion.v1_18.isSupported()) { - v1_18ReflectionManager = getReflectionManager(NmsVersion.v1_18); + nmsReflection = getReflectionManager(getVersion()); + + if (nmsReflection != null) { return; } + boundingBoxConstructor = getNmsConstructor("AxisAlignedBB", double.class, double.class, double.class, double.class, double.class, double.class); setBoundingBoxMethod = getNmsMethod("Entity", "a", getNmsClass("AxisAlignedBB")); - if (NmsVersion.v1_17.isSupported()) { - for (Field f : getNmsClass("Entity").getDeclaredFields()) { - if (f.getType() != AtomicInteger.class) { - continue; - } - - f.setAccessible(true); - entityCountField = f; - break; - } - - for (Field f : getNmsClass("EntityHuman").getDeclaredFields()) { - if (!f.getType().getSimpleName().equals("ContainerPlayer")) { - continue; - } - - f.setAccessible(true); - playerInventoryContainer = f; - break; - } - } else { - entityCountField = getNmsField("Entity", "entityCount"); - } + entityCountField = getNmsField("Entity", "entityCount"); mobEffectConstructor = getNmsConstructor("MobEffect", getNmsClass("MobEffectList"), Integer.TYPE, Integer.TYPE, Boolean.TYPE, Boolean.TYPE); mobEffectList = getNmsMethod("MobEffectList", "fromId", Integer.TYPE); @@ -170,15 +149,9 @@ public class ReflectionManager { enumPlayerInfoAction = (Enum[]) getNmsClass("PacketPlayOutPlayerInfo$EnumPlayerInfoAction").getEnumConstants(); chatComponentConstructor = getNmsConstructor("ChatComponentText", String.class); - if (NmsVersion.v1_17.isSupported()) { - packetPlayOutConstructor = - getNmsConstructor("PacketPlayOutPlayerInfo$PlayerInfoData", GameProfile.class, int.class, getNmsClass("EnumGamemode"), - getNmsClass("IChatBaseComponent")); - } else { - packetPlayOutConstructor = - getNmsConstructor("PacketPlayOutPlayerInfo$PlayerInfoData", getNmsClass("PacketPlayOutPlayerInfo"), GameProfile.class, int.class, - getNmsClass("EnumGamemode"), getNmsClass("IChatBaseComponent")); - } + packetPlayOutConstructor = + getNmsConstructor("PacketPlayOutPlayerInfo$PlayerInfoData", getNmsClass("PacketPlayOutPlayerInfo"), GameProfile.class, int.class, + getNmsClass("EnumGamemode"), getNmsClass("IChatBaseComponent")); enumGamemode = (Enum[]) getNmsClass("EnumGamemode").getEnumConstants(); getNmsEntityMethod = getCraftMethod("CraftEntity", "getHandle"); @@ -209,16 +182,9 @@ public class ReflectionManager { registryBlocksGetMethod = getNmsMethod("RegistryBlocks", "get", getNmsClass("MinecraftKey")); villagerDataConstructor = getNmsConstructor("VillagerData", getNmsClass("VillagerType"), getNmsClass("VillagerProfession"), int.class); - if (NmsVersion.v1_17.isSupported()) { - villagerProfessionRegistry = getNmsField("IRegistry", "ap").get(null); - villagerTypeRegistry = getNmsField("IRegistry", "ao").get(null); - playerConnection = getNmsField("EntityPlayer", "b"); - connectionEntityMethod = getNmsMethod("PlayerConnection", "d"); - incrementedInventoryStateId = getNmsMethod("Container", "incrementStateId"); - } else { - villagerProfessionRegistry = getNmsField("IRegistry", "VILLAGER_PROFESSION").get(null); - villagerTypeRegistry = getNmsField("IRegistry", "VILLAGER_TYPE").get(null); - } + villagerProfessionRegistry = getNmsField("IRegistry", "VILLAGER_PROFESSION").get(null); + villagerTypeRegistry = getNmsField("IRegistry", "VILLAGER_TYPE").get(null); + } else { registryBlocksGetMethod = getNmsMethod("RegistryBlocks", "getOrDefault", getNmsClass("MinecraftKey")); } @@ -234,20 +200,7 @@ public class ReflectionManager { getNmsWorld = getCraftMethod("CraftWorld", "getHandle"); deserializedItemMeta = getCraftMethod(getCraftClass("CraftMetaItem$SerializableMeta"), "deserialize", Map.class); - if (NmsVersion.v1_17.isSupported()) { - boolean nextInt = false; - - for (Field f : getNmsClass("Entity").getDeclaredFields()) { - if (f.getType().getSimpleName().equals("Tag")) { - nextInt = true; - } else if (f.getType() == int.class && nextInt) { - noDamageTicks = f; - break; - } - } - } else { - noDamageTicks = getNmsField("Entity", "noDamageTicks"); - } + noDamageTicks = getNmsField("Entity", "noDamageTicks"); isInvul = getNmsMethod("Entity", "isInvulnerable", getNmsClass("DamageSource")); @@ -311,15 +264,15 @@ public class ReflectionManager { ex.printStackTrace(); } - pingField = getNmsField("EntityPlayer", NmsVersion.v1_17.isSupported() ? "e" : "ping"); + pingField = getNmsField("EntityPlayer", "ping"); if (NmsVersion.v1_14.isSupported()) { - chunkMapField = getNmsField("ChunkProviderServer", NmsVersion.v1_17.isSupported() ? "a" : "playerChunkMap"); - trackedEntitiesField = getNmsField("PlayerChunkMap", NmsVersion.v1_17.isSupported() ? "G" : "trackedEntities"); - entityTrackerField = getNmsField("PlayerChunkMap$EntityTracker", NmsVersion.v1_17.isSupported() ? "b" : "trackerEntry"); + chunkMapField = getNmsField("ChunkProviderServer", "playerChunkMap"); + trackedEntitiesField = getNmsField("PlayerChunkMap", "trackedEntities"); + entityTrackerField = getNmsField("PlayerChunkMap$EntityTracker", "trackerEntry"); if (NmsVersion.v1_16.isSupported()) { - chunkProviderField = getNmsField("WorldServer", NmsVersion.v1_17.isSupported() ? "C" : "chunkProvider"); + chunkProviderField = getNmsField("WorldServer", "chunkProvider"); } else { chunkProviderField = getNmsField("World", "chunkProvider"); } @@ -331,8 +284,8 @@ public class ReflectionManager { } public static boolean hasInvul(Entity entity) { - if (NmsVersion.v1_18.isSupported()) { - return v1_18ReflectionManager.hasInvul(entity); + if (nmsReflection != null) { + return nmsReflection.hasInvul(entity); } Object nmsEntity = ReflectionManager.getNmsEntity(entity); @@ -351,8 +304,8 @@ public class ReflectionManager { } public static int getIncrementedStateId(Player player) { - if (NmsVersion.v1_18.isSupported()) { - return v1_18ReflectionManager.getIncrementedStateId(player); + if (nmsReflection != null) { + return nmsReflection.getIncrementedStateId(player); } try { @@ -465,8 +418,8 @@ public class ReflectionManager { } public static int getNewEntityId(boolean increment) { - if (NmsVersion.v1_18.isSupported()) { - return v1_18ReflectionManager.getNewEntityId(increment); + if (nmsReflection != null) { + return nmsReflection.getNewEntityId(increment); } try { @@ -493,15 +446,11 @@ public class ReflectionManager { } public static Object getPlayerConnectionOrPlayer(Player player) { - if (NmsVersion.v1_18.isSupported()) { - return v1_18ReflectionManager.getPlayerConnectionOrPlayer(player); + if (nmsReflection != null) { + return nmsReflection.getPlayerConnectionOrPlayer(player); } try { - if (NmsVersion.v1_17.isSupported()) { - return playerConnection.get(getNmsEntity(player)); - } - return getNmsEntity(player); } catch (Throwable throwable) { throwable.printStackTrace(); @@ -511,22 +460,12 @@ public class ReflectionManager { } public static Object createEntityInstance(DisguiseType disguiseType, String entityName) { - if (NmsVersion.v1_18.isSupported()) { - return v1_18ReflectionManager.createEntityInstance(entityName); + if (nmsReflection != null) { + return nmsReflection.createEntityInstance(entityName); } try { - Class entityClass; - - if (NmsVersion.v1_17.isSupported()) { - entityClass = getNmsClassIgnoreErrors("Entity" + entityName); - - if (entityClass == null) { - entityClass = getNmsClass(entityName); - } - } else { - entityClass = getNmsClass("Entity" + entityName); - } + Class entityClass = getNmsClass("Entity" + entityName); Object entityObject; Object world = getWorldServer(Bukkit.getWorlds().get(0)); @@ -535,17 +474,13 @@ public class ReflectionManager { Object minecraftServer = getNmsMethod("MinecraftServer", "getServer").invoke(null); WrappedGameProfile gameProfile = getGameProfile(new UUID(0, 0), "Steve"); - if (NmsVersion.v1_17.isSupported()) { - entityObject = entityClass.getDeclaredConstructor(getNmsClass("MinecraftServer"), getNmsClass("WorldServer"), gameProfile.getHandleType()) - .newInstance(minecraftServer, world, gameProfile.getHandle()); - } else { - Object playerinteractmanager = - getNmsClass("PlayerInteractManager").getDeclaredConstructor(getNmsClass(NmsVersion.v1_14.isSupported() ? "WorldServer" : "World")) - .newInstance(world); + Object playerinteractmanager = + getNmsClass("PlayerInteractManager").getDeclaredConstructor(getNmsClass(NmsVersion.v1_14.isSupported() ? "WorldServer" : "World")) + .newInstance(world); + + entityObject = entityClass.getDeclaredConstructor(getNmsClass("MinecraftServer"), getNmsClass("WorldServer"), gameProfile.getHandleType(), + playerinteractmanager.getClass()).newInstance(minecraftServer, world, gameProfile.getHandle(), playerinteractmanager); - entityObject = entityClass.getDeclaredConstructor(getNmsClass("MinecraftServer"), getNmsClass("WorldServer"), gameProfile.getHandleType(), - playerinteractmanager.getClass()).newInstance(minecraftServer, world, gameProfile.getHandle(), playerinteractmanager); - } } else if (entityName.equals("EnderPearl")) { entityObject = entityClass.getDeclaredConstructor(getNmsClass("World"), getNmsClass("EntityLiving")) .newInstance(world, createEntityInstance(DisguiseType.COW, "Cow")); @@ -583,8 +518,8 @@ public class ReflectionManager { } public static Object getMobEffectList(int id) { - if (NmsVersion.v1_18.isSupported()) { - return v1_18ReflectionManager.getMobEffectList(id); + if (nmsReflection != null) { + return nmsReflection.getMobEffectList(id); } try { @@ -601,8 +536,8 @@ public class ReflectionManager { } public static Object createMobEffect(int id, int duration, int amplification, boolean ambient, boolean particles) { - if (NmsVersion.v1_18.isSupported()) { - return v1_18ReflectionManager.createMobEffect(id, duration, amplification, ambient, particles); + if (nmsReflection != null) { + return nmsReflection.createMobEffect(id, duration, amplification, ambient, particles); } try { @@ -615,10 +550,10 @@ public class ReflectionManager { } public static FakeBoundingBox getBoundingBox(Entity entity) { - if (NmsVersion.v1_18.isSupported()) { - double x = v1_18ReflectionManager.getXBoundingBox(entity); - double y = v1_18ReflectionManager.getYBoundingBox(entity); - double z = v1_18ReflectionManager.getZBoundingBox(entity); + if (nmsReflection != null) { + double x = nmsReflection.getXBoundingBox(entity); + double y = nmsReflection.getYBoundingBox(entity); + double z = nmsReflection.getZBoundingBox(entity); return new FakeBoundingBox(x, y, z); } @@ -668,16 +603,11 @@ public class ReflectionManager { } public static Object getPlayerFromPlayerConnection(Object nmsEntity) { - if (NmsVersion.v1_18.isSupported()) { - return v1_18ReflectionManager.getPlayerFromPlayerConnection(nmsEntity); + if (nmsReflection != null) { + return nmsReflection.getPlayerFromPlayerConnection(nmsEntity); } try { - if (NmsVersion.v1_17.isSupported()) { - // Convert from player connection to EntityPlayer - nmsEntity = connectionEntityMethod.invoke(nmsEntity); - } - return nmsEntity; } catch (Exception ex) { ex.printStackTrace(); @@ -687,8 +617,8 @@ public class ReflectionManager { } public static Entity getBukkitEntity(Object nmsEntity) { - if (NmsVersion.v1_18.isSupported()) { - return v1_18ReflectionManager.getBukkitEntity(nmsEntity); + if (nmsReflection != null) { + return nmsReflection.getBukkitEntity(nmsEntity); } try { @@ -701,8 +631,8 @@ public class ReflectionManager { } public static ItemStack getBukkitItem(Object nmsItem) { - if (NmsVersion.v1_18.isSupported()) { - return v1_18ReflectionManager.getBukkitItem(nmsItem); + if (nmsReflection != null) { + return nmsReflection.getBukkitItem(nmsItem); } try { @@ -715,8 +645,8 @@ public class ReflectionManager { } public static ItemStack getCraftItem(ItemStack bukkitItem) { - if (NmsVersion.v1_18.isSupported()) { - return v1_18ReflectionManager.getCraftItem(bukkitItem); + if (nmsReflection != null) { + return nmsReflection.getCraftItem(bukkitItem); } try { @@ -767,6 +697,7 @@ public class ReflectionManager { try { Class aClass = Class.forName("me.libraryaddict.disguise.utilities.reflection." + nmsVersion.name() + ".ReflectionManager"); Object o = aClass.getConstructor().newInstance(); + return (ReflectionManagerAbstract) o; } catch (ReflectiveOperationException e) { e.printStackTrace(); @@ -792,8 +723,8 @@ public class ReflectionManager { } public static Object getCraftSound(Sound sound) { - if (NmsVersion.v1_18.isSupported()) { - return v1_18ReflectionManager.getCraftSound(sound); + if (nmsReflection != null) { + return nmsReflection.getCraftSound(sound); } try { @@ -806,8 +737,8 @@ public class ReflectionManager { } public static Object getEntityTrackerEntry(Entity target) throws Exception { - if (NmsVersion.v1_18.isSupported()) { - return v1_18ReflectionManager.getEntityTrackerEntry(target); + if (nmsReflection != null) { + return nmsReflection.getEntityTrackerEntry(target); } Object world = getWorldServer(target.getWorld()); @@ -833,8 +764,8 @@ public class ReflectionManager { } public static Object getMinecraftServer() { - if (NmsVersion.v1_18.isSupported()) { - return v1_18ReflectionManager.getMinecraftServer(); + if (nmsReflection != null) { + return nmsReflection.getMinecraftServer(); } try { @@ -846,8 +777,8 @@ public class ReflectionManager { } public static String getEnumArt(Art art) { - if (NmsVersion.v1_18.isSupported()) { - return v1_18ReflectionManager.getEnumArt(art); + if (nmsReflection != null) { + return nmsReflection.getEnumArt(art); } try { @@ -865,8 +796,8 @@ public class ReflectionManager { } public static Object getBlockPosition(int x, int y, int z) { - if (NmsVersion.v1_18.isSupported()) { - return v1_18ReflectionManager.getBlockPosition(x, y, z); + if (nmsReflection != null) { + return nmsReflection.getBlockPosition(x, y, z); } try { @@ -879,8 +810,8 @@ public class ReflectionManager { } public static Enum getEnumDirection(int direction) { - if (NmsVersion.v1_18.isSupported()) { - return v1_18ReflectionManager.getEnumDirection(direction); + if (nmsReflection != null) { + return nmsReflection.getEnumDirection(direction); } try { @@ -893,8 +824,8 @@ public class ReflectionManager { } public static Enum getEnumPlayerInfoAction(int action) { - if (NmsVersion.v1_18.isSupported()) { - return v1_18ReflectionManager.getEnumPlayerInfoAction(action); + if (nmsReflection != null) { + return nmsReflection.getEnumPlayerInfoAction(action); } try { @@ -907,17 +838,13 @@ public class ReflectionManager { } public static Object getPlayerInfoData(Object playerInfoPacket, WrappedGameProfile gameProfile) { - if (NmsVersion.v1_18.isSupported()) { - return v1_18ReflectionManager.getPlayerInfoData(gameProfile); + if (nmsReflection != null) { + return nmsReflection.getPlayerInfoData(gameProfile); } try { Object playerListName = chatComponentConstructor.newInstance(gameProfile.getName()); - if (NmsVersion.v1_17.isSupported()) { - return packetPlayOutConstructor.newInstance(gameProfile.getHandle(), 0, enumGamemode[1], playerListName); - } - return packetPlayOutConstructor.newInstance(playerInfoPacket, gameProfile.getHandle(), 0, enumGamemode[1], playerListName); } catch (Exception ex) { ex.printStackTrace(); @@ -1008,8 +935,8 @@ public class ReflectionManager { } public static Object getNmsEntity(Entity entity) { - if (NmsVersion.v1_18.isSupported()) { - return v1_18ReflectionManager.getNmsEntity(entity); + if (nmsReflection != null) { + return nmsReflection.getNmsEntity(entity); } try { @@ -1039,8 +966,8 @@ public class ReflectionManager { } public static Object getNmsItem(ItemStack itemstack) { - if (NmsVersion.v1_18.isSupported()) { - return v1_18ReflectionManager.getNmsItem(itemstack); + if (nmsReflection != null) { + return nmsReflection.getNmsItem(itemstack); } try { @@ -1087,8 +1014,8 @@ public class ReflectionManager { } public static double getPing(Player player) { - if (NmsVersion.v1_18.isSupported()) { - return v1_18ReflectionManager.getPing(player); + if (nmsReflection != null) { + return nmsReflection.getPing(player); } try { @@ -1101,8 +1028,8 @@ public class ReflectionManager { } public static float[] getSize(Entity entity) { - if (NmsVersion.v1_18.isSupported()) { - return v1_18ReflectionManager.getSize(entity); + if (nmsReflection != null) { + return nmsReflection.getSize(entity); } try { @@ -1129,8 +1056,8 @@ public class ReflectionManager { } public static WrappedGameProfile getSkullBlob(WrappedGameProfile gameProfile) { - if (NmsVersion.v1_18.isSupported()) { - return v1_18ReflectionManager.getSkullBlob(gameProfile); + if (nmsReflection != null) { + return nmsReflection.getSkullBlob(gameProfile); } try { @@ -1153,8 +1080,8 @@ public class ReflectionManager { } public static Float getSoundModifier(Object entity) { - if (NmsVersion.v1_18.isSupported()) { - return v1_18ReflectionManager.getSoundModifier(entity); + if (nmsReflection != null) { + return nmsReflection.getSoundModifier(entity); } try { @@ -1172,8 +1099,8 @@ public class ReflectionManager { Object minecraftServer = getMinecraftServer(); LibsProfileLookupCaller callback = new LibsProfileLookupCaller(); - if (NmsVersion.v1_18.isSupported()) { - v1_18ReflectionManager.injectCallback(playername, callback); + if (nmsReflection != null) { + nmsReflection.injectCallback(playername, callback); } else { for (Method method : getNmsClass("MinecraftServer").getMethods()) { if (method.getReturnType().getSimpleName().equals("GameProfileRepository")) { @@ -1202,8 +1129,8 @@ public class ReflectionManager { } public static void setBoundingBox(Entity entity, FakeBoundingBox newBox) { - if (NmsVersion.v1_18.isSupported()) { - v1_18ReflectionManager.setBoundingBox(entity, newBox.getX(), newBox.getY(), newBox.getZ()); + if (nmsReflection != null) { + nmsReflection.setBoundingBox(entity, newBox.getX(), newBox.getY(), newBox.getZ()); return; } @@ -1220,8 +1147,8 @@ public class ReflectionManager { } public static Enum getSoundCategory(String category) { - if (NmsVersion.v1_18.isSupported()) { - return v1_18ReflectionManager.getSoundCategory(category); + if (nmsReflection != null) { + return nmsReflection.getSoundCategory(category); } return soundCategories.get(category); @@ -1252,8 +1179,8 @@ public class ReflectionManager { * @return null if the equipment slot is null */ public static Enum createEnumItemSlot(EquipmentSlot slot) { - if (NmsVersion.v1_18.isSupported()) { - return v1_18ReflectionManager.createEnumItemSlot(slot); + if (nmsReflection != null) { + return nmsReflection.createEnumItemSlot(slot); } switch (slot) { @@ -1333,8 +1260,8 @@ public class ReflectionManager { } public static Object getSoundString(Sound sound) { - if (NmsVersion.v1_18.isSupported()) { - return v1_18ReflectionManager.getSoundString(sound); + if (nmsReflection != null) { + return nmsReflection.getSoundString(sound); } try { @@ -1381,8 +1308,8 @@ public class ReflectionManager { public static Object convertInvalidMeta(Object value) { if (value instanceof Optional) { Optional opt = (Optional) value; - if (NmsVersion.v1_18.isSupported()) { - return v1_18ReflectionManager.convertOptional(opt); + if (nmsReflection != null) { + return nmsReflection.convertOptional(opt); } if (!opt.isPresent()) { @@ -1425,8 +1352,8 @@ public class ReflectionManager { } } else if (value instanceof Vector3F) { Vector3F angle = (Vector3F) value; - if (NmsVersion.v1_18.isSupported()) { - return v1_18ReflectionManager.convertVec3(angle); + if (nmsReflection != null) { + return nmsReflection.convertVec3(angle); } try { @@ -1436,8 +1363,8 @@ public class ReflectionManager { } } else if (value instanceof EulerAngle) { EulerAngle angle = (EulerAngle) value; - if (NmsVersion.v1_18.isSupported()) { - return v1_18ReflectionManager.convertVec3(angle); + if (nmsReflection != null) { + return nmsReflection.convertVec3(angle); } try { @@ -1446,8 +1373,8 @@ public class ReflectionManager { ex.printStackTrace(); } } else if (value instanceof Direction) { - if (NmsVersion.v1_18.isSupported()) { - return v1_18ReflectionManager.convertDirection((Direction) value); + if (nmsReflection != null) { + return nmsReflection.convertDirection((Direction) value); } try { @@ -1457,8 +1384,8 @@ public class ReflectionManager { } } else if (value instanceof BlockPosition) { BlockPosition pos = (BlockPosition) value; - if (NmsVersion.v1_18.isSupported()) { - return v1_18ReflectionManager.getBlockPosition(pos.getX(), pos.getY(), pos.getZ()); + if (nmsReflection != null) { + return nmsReflection.getBlockPosition(pos.getX(), pos.getY(), pos.getZ()); } try { @@ -1486,8 +1413,8 @@ public class ReflectionManager { } public static Material getMaterial(String name) { - if (NmsVersion.v1_18.isSupported()) { - return v1_18ReflectionManager.getMaterial(name); + if (nmsReflection != null) { + return nmsReflection.getMaterial(name); } try { @@ -1501,7 +1428,7 @@ public class ReflectionManager { Object mcKey = getNmsConstructor("MinecraftKey", String.class).newInstance(name); - Object registry = getNmsField("IRegistry", NmsVersion.v1_17.isSupported() ? "Z" : "ITEM").get(null); + Object registry = getNmsField("IRegistry", "ITEM").get(null); Method getMethod = getNmsMethod(getNmsClass("RegistryMaterials"), "get", mcKey.getClass()); Object item = getMethod.invoke(registry, mcKey); @@ -1526,8 +1453,8 @@ public class ReflectionManager { } public static String getItemName(Material material) { - if (NmsVersion.v1_18.isSupported()) { - return v1_18ReflectionManager.getItemName(material); + if (nmsReflection != null) { + return nmsReflection.getItemName(material); } try { @@ -1540,7 +1467,7 @@ public class ReflectionManager { Object registry; if (NmsVersion.v1_13.isSupported()) { - registry = getNmsField("IRegistry", NmsVersion.v1_17.isSupported() ? "Z" : "ITEM").get(null); + registry = getNmsField("IRegistry", "ITEM").get(null); } else { registry = getNmsField("Item", "REGISTRY").get(null); } @@ -1562,8 +1489,8 @@ public class ReflectionManager { } public static Object getNmsVillagerData(VillagerData data) { - if (NmsVersion.v1_18.isSupported()) { - return v1_18ReflectionManager.getNmsVillagerData(data.getType(), data.getProfession()); + if (nmsReflection != null) { + return nmsReflection.getNmsVillagerData(data.getType(), data.getProfession()); } Object type = getVillagerType(data.getType()); @@ -1579,8 +1506,8 @@ public class ReflectionManager { } public static Object getVillagerType(Villager.Type type) { - if (NmsVersion.v1_18.isSupported()) { - return v1_18ReflectionManager.getVillagerType(type); + if (nmsReflection != null) { + return nmsReflection.getVillagerType(type); } try { @@ -1619,8 +1546,8 @@ public class ReflectionManager { } public static Object getVillagerProfession(Villager.Profession profession) { - if (NmsVersion.v1_18.isSupported()) { - return v1_18ReflectionManager.getVillagerProfession(profession); + if (nmsReflection != null) { + return nmsReflection.getVillagerProfession(profession); } try { @@ -1658,8 +1585,8 @@ public class ReflectionManager { public static Object createDataWatcherItem(MetaIndex id, Object value) { WrappedDataWatcherObject watcherObject = createDataWatcherObject(id, value); - if (NmsVersion.v1_18.isSupported()) { - return v1_18ReflectionManager.createDataWatcherItem(watcherObject, convertInvalidMeta(value)); + if (nmsReflection != null) { + return nmsReflection.createDataWatcherItem(watcherObject, convertInvalidMeta(value)); } try { @@ -1673,8 +1600,8 @@ public class ReflectionManager { @Deprecated public static Object createSoundEffect(String minecraftKey) { - if (NmsVersion.v1_18.isSupported()) { - return v1_18ReflectionManager.createSoundEffect(minecraftKey); + if (nmsReflection != null) { + return nmsReflection.createSoundEffect(minecraftKey); } try { @@ -1687,8 +1614,8 @@ public class ReflectionManager { } public static Object createMinecraftKey(String name) { - if (NmsVersion.v1_18.isSupported()) { - return v1_18ReflectionManager.createMinecraftKey(name); + if (nmsReflection != null) { + return nmsReflection.createMinecraftKey(name); } try { @@ -1701,8 +1628,8 @@ public class ReflectionManager { } public static Object getVec3D(Vector vector) { - if (NmsVersion.v1_18.isSupported()) { - return v1_18ReflectionManager.getVec3D(vector); + if (nmsReflection != null) { + return nmsReflection.getVec3D(vector); } try { @@ -1715,8 +1642,8 @@ public class ReflectionManager { } public static Object getEntityType(EntityType entityType) { - if (NmsVersion.v1_18.isSupported()) { - return v1_18ReflectionManager.getEntityType(entityType); + if (nmsReflection != null) { + return nmsReflection.getEntityType(entityType); } try { @@ -1735,8 +1662,8 @@ public class ReflectionManager { } public static Object registerEntityType(NamespacedKey key) { - if (NmsVersion.v1_18.isSupported()) { - return v1_18ReflectionManager.registerEntityType(key); + if (nmsReflection != null) { + return nmsReflection.registerEntityType(key); } try { @@ -1744,7 +1671,7 @@ public class ReflectionManager { Class typesClass = getNmsClass("IRegistry"); - Object registry = typesClass.getField(NmsVersion.v1_17.isSupported() ? "Y" : "ENTITY_TYPE").get(null); + Object registry = typesClass.getField("ENTITY_TYPE").get(null); Constructor c = getNmsClass("EntityTypes").getConstructors()[0]; @@ -1778,16 +1705,16 @@ public class ReflectionManager { } public static int getEntityTypeId(Object entityTypes) { - if (NmsVersion.v1_18.isSupported()) { - return v1_18ReflectionManager.getEntityTypeId(entityTypes); + if (nmsReflection != null) { + return nmsReflection.getEntityTypeId(entityTypes); } try { Class typesClass = getNmsClass("IRegistry"); - Object registry = typesClass.getField(NmsVersion.v1_17.isSupported() ? "Y" : "ENTITY_TYPE").get(null); + Object registry = typesClass.getField("ENTITY_TYPE").get(null); - return (int) registry.getClass().getMethod(NmsVersion.v1_17.isSupported() ? "getId" : "a", Object.class).invoke(registry, entityTypes); + return (int) registry.getClass().getMethod("a", Object.class).invoke(registry, entityTypes); } catch (Exception ex) { ex.printStackTrace(); } @@ -1796,8 +1723,8 @@ public class ReflectionManager { } public static int getEntityTypeId(EntityType entityType) { - if (NmsVersion.v1_18.isSupported()) { - return v1_18ReflectionManager.getEntityTypeId(entityType); + if (nmsReflection != null) { + return nmsReflection.getEntityTypeId(entityType); } try { @@ -1806,9 +1733,9 @@ public class ReflectionManager { Class typesClass = getNmsClass("IRegistry"); - Object registry = typesClass.getField(NmsVersion.v1_17.isSupported() ? "Y" : "ENTITY_TYPE").get(null); + Object registry = typesClass.getField("ENTITY_TYPE").get(null); - return (int) registry.getClass().getMethod(NmsVersion.v1_17.isSupported() ? "getId" : "a", Object.class).invoke(registry, entityTypes); + return (int) registry.getClass().getMethod("a", Object.class).invoke(registry, entityTypes); } return entityType.getTypeId(); @@ -1820,17 +1747,17 @@ public class ReflectionManager { } public static Object getEntityType(NamespacedKey name) { - if (NmsVersion.v1_18.isSupported()) { - return v1_18ReflectionManager.getEntityType(name); + if (nmsReflection != null) { + return nmsReflection.getEntityType(name); } try { Class typesClass = getNmsClass("IRegistry"); - Object registry = typesClass.getField(NmsVersion.v1_17.isSupported() ? "Y" : "ENTITY_TYPE").get(null); + Object registry = typesClass.getField("ENTITY_TYPE").get(null); Object mcKey = getNmsConstructor("MinecraftKey", String.class).newInstance(name.toString()); - return registry.getClass().getMethod(NmsVersion.v1_17.isSupported() ? "getId" : "a", mcKey.getClass()).invoke(registry, mcKey); + return registry.getClass().getMethod("a", mcKey.getClass()).invoke(registry, mcKey); } catch (Exception ex) { ex.printStackTrace(); } @@ -1839,9 +1766,8 @@ public class ReflectionManager { } public static Object getNmsEntityPose(EntityPose entityPose) { - if (NmsVersion.v1_18.isSupported()) { - return v1_18ReflectionManager.getNmsEntityPose( - entityPose == EntityPose.SNEAKING && NmsVersion.v1_15.isSupported() ? "CROUCHING" : entityPose.name()); + if (nmsReflection != null) { + return nmsReflection.getNmsEntityPose(entityPose == EntityPose.SNEAKING && NmsVersion.v1_15.isSupported() ? "CROUCHING" : entityPose.name()); } return Enum.valueOf(entityPoseClass, entityPose == EntityPose.SNEAKING && NmsVersion.v1_15.isSupported() ? "CROUCHING" : entityPose.name()); @@ -1863,8 +1789,8 @@ public class ReflectionManager { } public static int getCombinedIdByBlockData(BlockData data) { - if (NmsVersion.v1_18.isSupported()) { - return v1_18ReflectionManager.getCombinedIdByBlockData(data); + if (nmsReflection != null) { + return nmsReflection.getCombinedIdByBlockData(data); } try { @@ -1879,8 +1805,8 @@ public class ReflectionManager { } public static int getCombinedIdByItemStack(ItemStack itemStack) { - if (NmsVersion.v1_18.isSupported()) { - return v1_18ReflectionManager.getCombinedIdByItemStack(itemStack); + if (nmsReflection != null) { + return nmsReflection.getCombinedIdByItemStack(itemStack); } try { @@ -1901,8 +1827,8 @@ public class ReflectionManager { } public static BlockData getBlockDataByCombinedId(int id) { - if (NmsVersion.v1_18.isSupported()) { - return v1_18ReflectionManager.getBlockDataByCombinedId(id); + if (nmsReflection != null) { + return nmsReflection.getBlockDataByCombinedId(id); } try { @@ -1919,8 +1845,8 @@ public class ReflectionManager { } public static ItemStack getItemStackByCombinedId(int id) { - if (NmsVersion.v1_18.isSupported()) { - return v1_18ReflectionManager.getItemStackByCombinedId(id); + if (nmsReflection != null) { + return nmsReflection.getItemStackByCombinedId(id); } try { @@ -1947,8 +1873,8 @@ public class ReflectionManager { } public static Object getWorldServer(World w) { - if (NmsVersion.v1_18.isSupported()) { - return v1_18ReflectionManager.getWorldServer(w); + if (nmsReflection != null) { + return nmsReflection.getWorldServer(w); } try { @@ -1961,8 +1887,8 @@ public class ReflectionManager { } public static ItemMeta getDeserializedItemMeta(Map meta) { - if (NmsVersion.v1_18.isSupported()) { - return v1_18ReflectionManager.getDeserializedItemMeta(meta); + if (nmsReflection != null) { + return nmsReflection.getDeserializedItemMeta(meta); } try { @@ -2240,7 +2166,7 @@ public class ReflectionManager { } Object nmsEntity = ReflectionManager.createEntityInstance(disguiseType, - NmsVersion.v1_18.isSupported() ? disguiseType.getEntityType().getKey().getKey() : nmsEntityName); + nmsReflection != null ? disguiseType.getEntityType().getKey().getKey() : nmsEntityName); if (nmsEntity == null) { DisguiseUtilities.getLogger().warning("Entity not found! (" + nmsEntityName + ")"); diff --git a/pom.xml b/pom.xml index 55147b57..47d8fef2 100644 --- a/pom.xml +++ b/pom.xml @@ -9,6 +9,7 @@ 10.0.26-SNAPSHOT shared + v1_17_R1 v1_18_R1 plugin diff --git a/shared/pom.xml b/shared/pom.xml index a213500e..276d8016 100644 --- a/shared/pom.xml +++ b/shared/pom.xml @@ -7,8 +7,8 @@ LibsDisguises 10.0.26-SNAPSHOT - 4.0.0 + 4.0.0 shared diff --git a/v1_17_R1/pom.xml b/v1_17_R1/pom.xml new file mode 100644 index 00000000..aa31a07c --- /dev/null +++ b/v1_17_R1/pom.xml @@ -0,0 +1,81 @@ + + + + LibsDisguises + LibsDisguises + 10.0.26-SNAPSHOT + ../pom.xml + + + 4.0.0 + + v1_17_R1 + + + + org.spigotmc + spigot + 1.17.1-R0.1-SNAPSHOT + remapped-mojang + provided + + + org.spigotmc + spigot-api + 1.17.1-R0.1-SNAPSHOT + provided + + + LibsDisguises + shared + ${project.version} + + + com.comphenix.protocol + ProtocolLib + + + + + + + net.md-5 + specialsource-maven-plugin + 1.2.2 + + + package + + remap + + remap-obf + + org.spigotmc:minecraft-server:1.17.1-R0.1-SNAPSHOT:txt:maps-mojang + true + org.spigotmc:spigot:1.17.1-R0.1-SNAPSHOT:jar:remapped-mojang + true + remapped-obf + + + + package + + remap + + remap-spigot + + ${project.build.directory}/${project.artifactId}-${project.version}-remapped-obf.jar + org.spigotmc:minecraft-server:1.17.1-R0.1-SNAPSHOT:csrg:maps-spigot + org.spigotmc:spigot:1.17.1-R0.1-SNAPSHOT:jar:remapped-obf + true + remapped-spigot + + + + + + + + \ No newline at end of file diff --git a/v1_17_R1/src/main/java/me/libraryaddict/disguise/utilities/reflection/v1_17/ReflectionManager.java b/v1_17_R1/src/main/java/me/libraryaddict/disguise/utilities/reflection/v1_17/ReflectionManager.java new file mode 100644 index 00000000..9d7b938e --- /dev/null +++ b/v1_17_R1/src/main/java/me/libraryaddict/disguise/utilities/reflection/v1_17/ReflectionManager.java @@ -0,0 +1,437 @@ +package me.libraryaddict.disguise.utilities.reflection.v1_17; + +import com.comphenix.protocol.wrappers.*; +import com.comphenix.protocol.wrappers.EnumWrappers.Direction; +import com.mojang.authlib.Agent; +import com.mojang.authlib.GameProfile; +import com.mojang.authlib.ProfileLookupCallback; +import com.mojang.authlib.minecraft.MinecraftSessionService; +import me.libraryaddict.disguise.utilities.reflection.ReflectionManagerAbstract; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Registry; +import net.minecraft.core.Vector3f; +import net.minecraft.network.chat.TextComponent; +import net.minecraft.network.protocol.game.ClientboundPlayerInfoPacket; +import net.minecraft.network.syncher.EntityDataAccessor; +import net.minecraft.network.syncher.SynchedEntityData; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.server.dedicated.DedicatedServer; +import net.minecraft.server.level.*; +import net.minecraft.server.network.ServerGamePacketListenerImpl; +import net.minecraft.server.network.ServerPlayerConnection; +import net.minecraft.sounds.SoundEvent; +import net.minecraft.sounds.SoundSource; +import net.minecraft.world.damagesource.DamageSource; +import net.minecraft.world.effect.MobEffect; +import net.minecraft.world.effect.MobEffectInstance; +import net.minecraft.world.entity.EntityDimensions; +import net.minecraft.world.entity.npc.VillagerData; +import net.minecraft.world.entity.npc.VillagerProfession; +import net.minecraft.world.entity.npc.VillagerType; +import net.minecraft.world.level.GameType; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.phys.AABB; +import net.minecraft.world.phys.Vec3; +import org.bukkit.*; +import org.bukkit.block.data.BlockData; +import org.bukkit.craftbukkit.libs.it.unimi.dsi.fastutil.ints.Int2ObjectFunction; +import org.bukkit.craftbukkit.v1_17_R1.CraftArt; +import org.bukkit.craftbukkit.v1_17_R1.CraftServer; +import org.bukkit.craftbukkit.v1_17_R1.CraftSound; +import org.bukkit.craftbukkit.v1_17_R1.CraftWorld; +import org.bukkit.craftbukkit.v1_17_R1.block.data.CraftBlockData; +import org.bukkit.craftbukkit.v1_17_R1.entity.CraftEntity; +import org.bukkit.craftbukkit.v1_17_R1.entity.CraftPlayer; +import org.bukkit.craftbukkit.v1_17_R1.inventory.CraftItemStack; +import org.bukkit.craftbukkit.v1_17_R1.util.CraftMagicNumbers; +import org.bukkit.craftbukkit.v1_17_R1.util.CraftNamespacedKey; +import org.bukkit.entity.Entity; +import org.bukkit.entity.EntityType; +import org.bukkit.entity.Player; +import org.bukkit.entity.Villager; +import org.bukkit.inventory.EquipmentSlot; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.ItemMeta; +import org.bukkit.potion.PotionEffect; +import org.bukkit.util.EulerAngle; +import org.bukkit.util.Vector; + +import java.lang.reflect.Field; +import java.lang.reflect.Method; +import java.util.*; +import java.util.concurrent.atomic.AtomicInteger; + +public class ReflectionManager implements ReflectionManagerAbstract { + public boolean hasInvul(Entity entity) { + net.minecraft.world.entity.Entity nmsEntity = ((CraftEntity) entity).getHandle(); + + if (nmsEntity instanceof net.minecraft.world.entity.LivingEntity) { + return nmsEntity.invulnerableTime > 0; + } else { + return nmsEntity.isInvulnerableTo(DamageSource.GENERIC); + } + } + + public int getIncrementedStateId(Player player) { + ServerPlayer serverPlayer = ((CraftPlayer) player).getHandle(); + return serverPlayer.containerMenu.incrementStateId(); // TODO Check correct container + } + + public int getNewEntityId() { + return getNewEntityId(true); + } + + public int getNewEntityId(boolean increment) { + try { + Field entityCounter = net.minecraft.world.entity.Entity.class.getDeclaredField("b"); + entityCounter.setAccessible(true); + AtomicInteger atomicInteger = (AtomicInteger) entityCounter.get(null); + if (increment) { + return atomicInteger.incrementAndGet(); + } else { + return atomicInteger.get(); + } + } catch (ReflectiveOperationException e) { + e.printStackTrace(); + } + + return -1; + } + + public ServerGamePacketListenerImpl getPlayerConnectionOrPlayer(Player player) { + return ((CraftPlayer) player).getHandle().connection; + } + + public net.minecraft.world.entity.Entity createEntityInstance(String entityName) { + Optional> optional = net.minecraft.world.entity.EntityType.byString(entityName.toLowerCase(Locale.ROOT)); + if (optional.isPresent()) { + net.minecraft.world.entity.EntityType entityType = optional.get(); + ServerLevel world = getWorldServer(Bukkit.getWorlds().get(0)); + net.minecraft.world.entity.Entity entity; + if (entityType == net.minecraft.world.entity.EntityType.PLAYER) { + WrappedGameProfile gameProfile = ReflectionManagerAbstract.getGameProfile(new UUID(0, 0), "Steve"); + entity = new ServerPlayer(getMinecraftServer(), world, (GameProfile) gameProfile.getHandle()); + }/* else if (entityType == net.minecraft.world.entity.EntityType.ENDER_PEARL) { + entity = new ThrownEnderpearl(world, (net.minecraft.world.entity.LivingEntity) createEntityInstance("cow")); + } else if (entityType == net.minecraft.world.entity.EntityType.FISHING_BOBBER) { + entity = new FishingHook((net.minecraft.world.entity.player.Player) createEntityInstance("player"), world, 0, 0); + }*/ else { + entity = entityType.create(world); + } + + // Workaround for paper being 2 smart 4 me + entity.setPos(1.0, 1.0, 1.0); + entity.setPos(0.0, 0.0, 0.0); + return entity; + } + + return null; + } + + public MobEffect getMobEffectList(int id) { + return MobEffect.byId(id); + } + + public MobEffectInstance createMobEffect(PotionEffect effect) { + return createMobEffect(effect.getType().getId(), effect.getDuration(), effect.getAmplifier(), effect.isAmbient(), effect.hasParticles()); + } + + public MobEffectInstance createMobEffect(int id, int duration, int amplification, boolean ambient, boolean particles) { + return new MobEffectInstance(getMobEffectList(id), duration, amplification, ambient, particles); + } + + public AABB getBoundingBox(Entity entity) { + return ((CraftEntity) entity).getHandle().getBoundingBox(); + } + + public double getXBoundingBox(Entity entity) { + return getBoundingBox(entity).maxX - getBoundingBox(entity).minX; + } + + public double getYBoundingBox(Entity entity) { + return getBoundingBox(entity).maxY - getBoundingBox(entity).minY; + } + + public double getZBoundingBox(Entity entity) { + return getBoundingBox(entity).maxZ - getBoundingBox(entity).minZ; + } + + public ServerPlayer getPlayerFromPlayerConnection(Object nmsEntity) { + return ((ServerPlayerConnection) nmsEntity).getPlayer(); + } + + public Entity getBukkitEntity(Object nmsEntity) { + return ((net.minecraft.world.entity.Entity) nmsEntity).getBukkitEntity(); + } + + public ItemStack getBukkitItem(Object nmsItem) { + return CraftItemStack.asBukkitCopy((net.minecraft.world.item.ItemStack) nmsItem); + } + + public ItemStack getCraftItem(ItemStack bukkitItem) { + return CraftItemStack.asCraftCopy(bukkitItem); + } + + public SoundEvent getCraftSound(Sound sound) { + return CraftSound.getSoundEffect(sound); + } + + public ServerEntity getEntityTrackerEntry(Entity target) throws Exception { + ServerLevel world = ((CraftWorld) target.getWorld()).getHandle(); + ServerChunkCache chunkSource = world.getChunkProvider(); + ChunkMap chunkMap = chunkSource.chunkMap; + Map entityMap = chunkMap.G; + ChunkMap.TrackedEntity trackedEntity = entityMap.get(target.getEntityId()); + if (trackedEntity == null) { + return null; + } + + Field field = ChunkMap.TrackedEntity.class.getDeclaredField("b"); + field.setAccessible(true); + + return (ServerEntity) field.get(trackedEntity); + } + + public DedicatedServer getMinecraftServer() { + return ((CraftServer) Bukkit.getServer()).getServer(); + } + + public String getEnumArt(Art art) { + return Registry.MOTIVE.getKey(CraftArt.BukkitToNotch(art)).getPath(); + } + + public BlockPos getBlockPosition(int x, int y, int z) { + return new BlockPos(x, y, z); + } + + public net.minecraft.core.Direction getEnumDirection(int direction) { + return net.minecraft.core.Direction.from2DDataValue(direction); + } + + public ClientboundPlayerInfoPacket.Action getEnumPlayerInfoAction(int action) { + return ClientboundPlayerInfoPacket.Action.values()[action]; + } + + public ClientboundPlayerInfoPacket.PlayerUpdate getPlayerInfoData(WrappedGameProfile gameProfile) { + return new ClientboundPlayerInfoPacket.PlayerUpdate((GameProfile) gameProfile.getHandle(), 0, GameType.SURVIVAL, + new TextComponent(gameProfile.getName())); + } + + public Object getNmsEntity(Entity entity) { + return ((CraftEntity) entity).getHandle(); + } + + public double getPing(Player player) { + return player.getPing(); + } + + public float[] getSize(Entity entity) { + net.minecraft.world.entity.Entity nmsEntity = ((CraftEntity) entity).getHandle(); + EntityDimensions dimensions = nmsEntity.getDimensions(net.minecraft.world.entity.Pose.STANDING); + return new float[]{dimensions.width, nmsEntity.getEyeHeight()}; + } + + public WrappedGameProfile getSkullBlob(WrappedGameProfile gameProfile) { + DedicatedServer minecraftServer = getMinecraftServer(); + MinecraftSessionService sessionService = minecraftServer.getSessionService(); + return WrappedGameProfile.fromHandle(sessionService.fillProfileProperties((GameProfile) gameProfile.getHandle(), true)); + } + + public Float getSoundModifier(Object entity) { + if (!(entity instanceof net.minecraft.world.entity.LivingEntity)) { + return 0.0f; + } else { + return ((net.minecraft.world.entity.LivingEntity) entity).getVoicePitch(); + } + } + + public void injectCallback(String playername, ProfileLookupCallback callback) { + Agent agent = Agent.MINECRAFT; + getMinecraftServer().getProfileRepository().findProfilesByNames(new String[]{playername}, agent, callback); + } + + public void setBoundingBox(Entity entity, double x, double y, double z) { + Location loc = entity.getLocation(); + ((CraftEntity) entity).getHandle().setBoundingBox( + new AABB(loc.getX() - x / 2, loc.getY() - y / 2, loc.getZ() - z / 2, loc.getX() + x / 2, loc.getY() + y / 2, loc.getZ() + z / 2)); + } + + public Enum getSoundCategory(String category) { + return Arrays.stream(SoundSource.values()).filter(soundSource -> category.equalsIgnoreCase(soundSource.getName())).findAny().get(); + } + + /** + * Creates the NMS object EnumItemSlot from an EquipmentSlot. + * + * @param slot + * @return null if the equipment slot is null + */ + public Enum createEnumItemSlot(EquipmentSlot slot) { + switch (slot) { + case HAND: + return net.minecraft.world.entity.EquipmentSlot.MAINHAND; + case OFF_HAND: + return net.minecraft.world.entity.EquipmentSlot.OFFHAND; + case FEET: + return net.minecraft.world.entity.EquipmentSlot.FEET; + case LEGS: + return net.minecraft.world.entity.EquipmentSlot.LEGS; + case CHEST: + return net.minecraft.world.entity.EquipmentSlot.CHEST; + case HEAD: + return net.minecraft.world.entity.EquipmentSlot.HEAD; + default: + return null; + } + } + + public Object getSoundString(Sound sound) { + return CraftSound.getSoundEffect(sound).getLocation().toString(); // TODO + } + + public Optional convertOptional(Object val) { + if (val instanceof BlockPosition) { + BlockPosition pos = (BlockPosition) val; + return Optional.of(getBlockPosition(pos.getX(), pos.getY(), pos.getZ())); + } else if (val instanceof WrappedBlockData) { + Object obj = ((WrappedBlockData) val).getHandle(); + return Optional.of(obj); + } else if (val instanceof ItemStack) { + Object obj = getNmsItem((ItemStack) val); + return Optional.of(obj); + } else if (val instanceof WrappedChatComponent) { + Object obj = ((WrappedChatComponent) val).getHandle(); + return Optional.of(obj); + } + + return Optional.empty(); + } + + public Vector3f convertVec3(Object object) { + if (object instanceof Vector3F) { + Vector3F vector3F = (Vector3F) object; + return new Vector3f(vector3F.getX(), vector3F.getY(), vector3F.getZ()); + } else if (object instanceof EulerAngle) { + EulerAngle eulerAngle = (EulerAngle) object; + return new Vector3f((float) eulerAngle.getX(), (float) eulerAngle.getY(), (float) eulerAngle.getZ()); + } + + return null; + } + + public net.minecraft.core.Direction convertDirection(Direction direction) { + return net.minecraft.core.Direction.from3DDataValue(direction.ordinal()); + } + + public Material getMaterial(String name) { + return CraftMagicNumbers.INSTANCE.getMaterial(name, CraftMagicNumbers.INSTANCE.getDataVersion()); + } + + public String getItemName(Material material) { + return Registry.ITEM.getKey(CraftMagicNumbers.getItem(material)).getPath(); + } + + public net.minecraft.world.item.ItemStack getNmsItem(ItemStack itemStack) { + return CraftItemStack.asNMSCopy(itemStack); + } + + public VillagerData getNmsVillagerData(Villager.Type villagerType, Villager.Profession villagerProfession) { + VillagerType nmsVillagerType = Registry.VILLAGER_TYPE.get(CraftNamespacedKey.toMinecraft(villagerType.getKey())); + VillagerProfession nmsVillagerProfession = Registry.VILLAGER_PROFESSION.get(CraftNamespacedKey.toMinecraft(villagerProfession.getKey())); + + return new net.minecraft.world.entity.npc.VillagerData(nmsVillagerType, nmsVillagerProfession, 1); + } + + public VillagerType getVillagerType(Villager.Type type) { + return Registry.VILLAGER_TYPE.get(CraftNamespacedKey.toMinecraft(type.getKey())); + } + + public VillagerProfession getVillagerProfession(Villager.Profession profession) { + return Registry.VILLAGER_PROFESSION.get(CraftNamespacedKey.toMinecraft(profession.getKey())); + } + + public SynchedEntityData.DataItem createDataWatcherItem(WrappedDataWatcher.WrappedDataWatcherObject wrappedDataWatcherObject, T metaItem) { + return new SynchedEntityData.DataItem<>((EntityDataAccessor) wrappedDataWatcherObject.getHandle(), metaItem); + } + + @Deprecated + public SoundEvent createSoundEffect(String minecraftKey) { + return new SoundEvent(new ResourceLocation(minecraftKey)); + } + + @Override + public ResourceLocation createMinecraftKey(String name) { + return new ResourceLocation(name); + } + + public Vec3 getVec3D(Vector vector) { + return new Vec3(vector.getX(), vector.getY(), vector.getZ()); + } + + public net.minecraft.world.entity.EntityType getEntityType(EntityType entityType) { + return net.minecraft.world.entity.EntityType.byString( + entityType.getName() == null ? entityType.name().toLowerCase(Locale.ENGLISH) : entityType.getName()).orElse(null); + } + + public Object registerEntityType(NamespacedKey key) { + net.minecraft.world.entity.EntityType newEntity = + new net.minecraft.world.entity.EntityType<>(null, null, false, false, false, false, null, null, 0, 0); + Registry.register(Registry.ENTITY_TYPE, CraftNamespacedKey.toMinecraft(key), newEntity); + newEntity.getDescriptionId(); + return newEntity; // TODO ??? Some reflection in legacy that I'm unsure about + } + + public int getEntityTypeId(Object entityTypes) { + net.minecraft.world.entity.EntityType entityType = (net.minecraft.world.entity.EntityType) entityTypes; + return Registry.ENTITY_TYPE.getId(entityType); + } + + public int getEntityTypeId(EntityType entityType) { + return getEntityTypeId(getEntityType(entityType)); + } + + public Object getEntityType(NamespacedKey name) { + return Registry.ENTITY_TYPE.get(CraftNamespacedKey.toMinecraft(name)); + } + + public Object getNmsEntityPose(String enumPose) { + return net.minecraft.world.entity.Pose.valueOf(enumPose); + } + + public int getCombinedIdByBlockData(BlockData data) { + BlockState state = ((CraftBlockData) data).getState(); + return Block.getId(state); + } + + public int getCombinedIdByItemStack(ItemStack itemStack) { + Block block = CraftMagicNumbers.getBlock(itemStack.getType()); + return Block.getId(block.defaultBlockState()); + } + + public BlockData getBlockDataByCombinedId(int id) { + return CraftBlockData.fromData(Block.stateById(id)); + } + + public ItemStack getItemStackByCombinedId(int id) { + return new ItemStack(CraftMagicNumbers.getMaterial(Block.stateById(id).getBlock())); + } + + public ServerLevel getWorldServer(World w) { + return ((CraftWorld) w).getHandle(); + } + + public ItemMeta getDeserializedItemMeta(Map meta) { + try { + Class aClass = Class.forName("org.bukkit.craftbukkit.v1_17_R1.inventory.CraftMetaItem$SerializableMeta"); + Method deserialize = aClass.getDeclaredMethod("deserialize", Map.class); + Object itemMeta = deserialize.invoke(null, meta); + + return (ItemMeta) itemMeta; + } catch (Exception e) { + e.printStackTrace(); + } + + return null; + } +} diff --git a/v1_18_R1/pom.xml b/v1_18_R1/pom.xml index 187f2ff7..a1704fdc 100644 --- a/v1_18_R1/pom.xml +++ b/v1_18_R1/pom.xml @@ -6,9 +6,10 @@ LibsDisguises LibsDisguises 10.0.26-SNAPSHOT + ../pom.xml - 4.0.0 + 4.0.0 v1_18_R1 From 52cb313f77c58330b1af4eacd118cd026d372e29 Mon Sep 17 00:00:00 2001 From: libraryaddict Date: Sat, 11 Dec 2021 20:57:23 +1300 Subject: [PATCH 09/11] Fix up sounds and some other stuff --- .../libraryaddict/disguise/LibsDisguises.java | 18 +++++--- .../packetlisteners/PacketListenerSounds.java | 44 +++++++++---------- .../utilities/reflection/ClassMappings.java | 24 ++++++---- .../reflection/ReflectionManager.java | 2 + .../utilities/sounds/SoundManager.java | 2 - .../reflection/v1_17/ReflectionManager.java | 14 +++++- .../reflection/v1_18/ReflectionManager.java | 34 +++++++++----- 7 files changed, 86 insertions(+), 52 deletions(-) diff --git a/plugin/src/main/java/me/libraryaddict/disguise/LibsDisguises.java b/plugin/src/main/java/me/libraryaddict/disguise/LibsDisguises.java index 736dc426..360b3867 100644 --- a/plugin/src/main/java/me/libraryaddict/disguise/LibsDisguises.java +++ b/plugin/src/main/java/me/libraryaddict/disguise/LibsDisguises.java @@ -24,6 +24,7 @@ import me.libraryaddict.disguise.utilities.listeners.PaperDisguiseListener; import me.libraryaddict.disguise.utilities.listeners.PlayerSkinHandler; import me.libraryaddict.disguise.utilities.metrics.MetricsInitalizer; import me.libraryaddict.disguise.utilities.packets.PacketsManager; +import me.libraryaddict.disguise.utilities.params.ParamInfoManager; import me.libraryaddict.disguise.utilities.parser.DisguiseParser; import me.libraryaddict.disguise.utilities.reflection.NmsVersion; import me.libraryaddict.disguise.utilities.reflection.ReflectionManager; @@ -83,8 +84,8 @@ public class LibsDisguises extends JavaPlugin { getLogger().severe("Please restart the server to complete the ProtocolLib update!"); } } catch (Exception e) { - getLogger() - .severe("Looks like ProtocolLib's site may be down! MythicCraft/MythicMobs has a discord server https://discord.gg/EErRhJ4qgx you" + + getLogger().severe( + "Looks like ProtocolLib's site may be down! MythicCraft/MythicMobs has a discord server https://discord.gg/EErRhJ4qgx you" + " can " + "join. Check the pins in #libs-support for a ProtocolLib.jar you can download!"); e.printStackTrace(); } @@ -164,8 +165,8 @@ public class LibsDisguises extends JavaPlugin { LibsPremium.check(getDescription().getVersion(), getFile()); if (!LibsPremium.isPremium()) { - getLogger() - .info("You are running the free version, commands limited to non-players and operators. (Console," + " Command " + "Blocks, Admins)"); + getLogger().info( + "You are running the free version, commands limited to non-players and operators. (Console," + " Command " + "Blocks, Admins)"); } if (ReflectionManager.getVersion() == null) { @@ -185,8 +186,9 @@ public class LibsDisguises extends JavaPlugin { @Override public void run() { getLogger().severe("!! May I have your attention please !!"); - getLogger().severe("Update your ProtocolLib! You are running " + version + " but the minimum version you should be on is " + - requiredProtocolLib + "!"); + getLogger().severe( + "Update your ProtocolLib! You are running " + version + " but the minimum version you should be on is " + requiredProtocolLib + + "!"); getLogger().severe("https://ci.dmulloy2.net/job/ProtocolLib/lastSuccessfulBuild/artifact/target" + "/ProtocolLib" + ".jar"); getLogger().severe("Or! Use /ld protocollib - To update to the latest development build"); @@ -218,9 +220,11 @@ public class LibsDisguises extends JavaPlugin { PacketsManager.init(); DisguiseUtilities.init(); + new SoundManager().load(); + ReflectionManager.registerValues(); - new SoundManager().load(); + ParamInfoManager.getParamInfoSoundGroup().recalculate(); DisguiseConfig.loadConfig(); diff --git a/plugin/src/main/java/me/libraryaddict/disguise/utilities/packets/packetlisteners/PacketListenerSounds.java b/plugin/src/main/java/me/libraryaddict/disguise/utilities/packets/packetlisteners/PacketListenerSounds.java index 9162184d..53a5bb3d 100644 --- a/plugin/src/main/java/me/libraryaddict/disguise/utilities/packets/packetlisteners/PacketListenerSounds.java +++ b/plugin/src/main/java/me/libraryaddict/disguise/utilities/packets/packetlisteners/PacketListenerSounds.java @@ -110,8 +110,8 @@ public class PacketListenerSounds extends PacketAdapter { // Blocks null and CANCEL, HURT and DEATH are 100% handled by entity status! if (soundType != SoundType.STEP && soundType != SoundType.IDLE) { - event.setCancelled(true); - return; + //event.setCancelled(true); + // return; } if (disguisedEntity == observer && !disguise.isSelfDisguiseSoundsReplaced()) { @@ -141,35 +141,32 @@ public class PacketListenerSounds extends PacketAdapter { if (disguise instanceof MobDisguise && disguisedEntity instanceof LivingEntity && ((MobDisguise) disguise).doesDisguiseAge()) { if (((MobDisguise) disguise).isAdult()) { - pitch = (DisguiseUtilities.random.nextFloat() - DisguiseUtilities.random.nextFloat()) * 0.2F + 1.0F; + pitch = ((DisguiseUtilities.random.nextFloat() - DisguiseUtilities.random.nextFloat()) * 0.2F) + 1.0F; } else { - pitch = (DisguiseUtilities.random.nextFloat() - DisguiseUtilities.random.nextFloat()) * 0.2F + 1.4F; + pitch = ((DisguiseUtilities.random.nextFloat() - DisguiseUtilities.random.nextFloat()) * 0.2F) + 1.4F; } } - if (sound.getClass().getSimpleName().equals("MinecraftKey")) { - PacketContainer newPacket = new PacketContainer(Server.CUSTOM_SOUND_EFFECT); - StructureModifier newModifs = newPacket.getModifier(); + PacketContainer newPacket; - newModifs.write(0, sound); - newModifs.write(1, soundCat); + if (sound.getClass().getSimpleName().equals("MinecraftKey")) { + newPacket = new PacketContainer(Server.CUSTOM_SOUND_EFFECT); + StructureModifier newModifs = newPacket.getModifier(); newModifs.write(2, mods.read(2)); newModifs.write(3, mods.read(3)); newModifs.write(4, mods.read(4)); - newModifs.write(5, volume); - newModifs.write(6, pitch); - - event.setPacket(newPacket); } else { - event.setPacket(event.getPacket().shallowClone()); - mods = event.getPacket().getModifier(); - - mods.write(0, sound); - mods.write(1, soundCat); - mods.write(5, volume); - mods.write(6, pitch); + newPacket = event.getPacket().shallowClone(); + mods = newPacket.getModifier(); } + + mods.write(0, sound); + mods.write(1, soundCat); + mods.write(5, volume); + mods.write(6, pitch); + + event.setPacket(newPacket); } private void handleEntityStatus(PacketEvent event) { @@ -191,10 +188,12 @@ public class PacketListenerSounds extends PacketAdapter { if (disguise instanceof TargetedDisguise) { Set discs = DisguiseUtilities.getDisguises().get(entity.getEntityId()); + for (TargetedDisguise targetedDisguise : discs) { if (targetedDisguise != disguise) { continue; } + if (!targetedDisguise.canSee(observer)) { return; } @@ -203,7 +202,7 @@ public class PacketListenerSounds extends PacketAdapter { SoundType soundType = SoundType.HURT; - if (entity instanceof LivingEntity && ((LivingEntity) entity).getHealth() == 0) { + if (entity instanceof LivingEntity && ((LivingEntity) entity).getHealth() <= 0) { soundType = SoundType.DEATH; } @@ -230,8 +229,9 @@ public class PacketListenerSounds extends PacketAdapter { } SoundGroup disSound = SoundGroup.getGroup(disguise); + SoundGroup expectedGroup = SoundGroup.getGroup(disguise.getType().name()); - if (disSound == null || disSound == entitySoundGroup) { + if (disSound == null || disSound == expectedGroup) { return; } diff --git a/plugin/src/main/java/me/libraryaddict/disguise/utilities/reflection/ClassMappings.java b/plugin/src/main/java/me/libraryaddict/disguise/utilities/reflection/ClassMappings.java index 6ad67aa7..06dd6f1c 100644 --- a/plugin/src/main/java/me/libraryaddict/disguise/utilities/reflection/ClassMappings.java +++ b/plugin/src/main/java/me/libraryaddict/disguise/utilities/reflection/ClassMappings.java @@ -9,8 +9,9 @@ public class ClassMappings { public static String getClass(String packageHint, String className) { String location = classLocations.get(className); - if (location != null) + if (location != null) { return location; + } location = className; String[] arrayOfString; int i; @@ -35,14 +36,21 @@ public class ClassMappings { } private static String[] getPackages() { - String[] s = { - "net.minecraft.core", "net.minecraft.core.particles", "net.minecraft.nbt", "net.minecraft.network.chat", "net.minecraft.network.protocol.game", "net.minecraft.network.syncher", "net.minecraft.resources", "net.minecraft.server.level", "net.minecraft.server", "net.minecraft.server.network", - "net.minecraft.sounds", "net.minecraft.world.damagesource", "net.minecraft.world.effect", "net.minecraft.world.entity.ambient", "net.minecraft.world.entity.animal.axolotl", "net.minecraft.world.entity.animal", "net.minecraft.world.entity.animal.goat", "net.minecraft.world.entity.animal.horse", "net.minecraft.world.entity.boss.enderdragon", "net.minecraft.world.entity.boss.wither", - "net.minecraft.world.entity.decoration", "net.minecraft.world.entity", "net.minecraft.world.entity.item", "net.minecraft.world.entity.monster", "net.minecraft.world.entity.monster.hoglin", "net.minecraft.world.entity.monster.piglin", "net.minecraft.world.entity.npc", "net.minecraft.world.entity.player", "net.minecraft.world.entity.projectile", "net.minecraft.world.entity.vehicle", - "net.minecraft.world.inventory", "net.minecraft.world.item", "net.minecraft.world.level.block", "net.minecraft.world.level.block.state", "net.minecraft.world.level", "net.minecraft.world.phys", "org.bukkit.craftbukkit.$version$.block.data", "org.bukkit.craftbukkit.$version$", "org.bukkit.craftbukkit.$version$.entity", "org.bukkit.craftbukkit.$version$.inventory", - "org.bukkit.craftbukkit.$version$.util" }; - for (int i = 0; i < s.length; i++) + String[] s = {"net.minecraft.server.$version$", "net.minecraft.core", "net.minecraft.core.particles", "net.minecraft.nbt", "net.minecraft.network.chat", + "net.minecraft.network.protocol.game", "net.minecraft.network.syncher", "net.minecraft.resources", "net.minecraft.server.level", + "net.minecraft.server", "net.minecraft.server.network", "net.minecraft.sounds", "net.minecraft.world.damagesource", + "net.minecraft.world.effect", "net.minecraft.world.entity.ambient", "net.minecraft.world.entity.animal.axolotl", + "net.minecraft.world.entity.animal", "net.minecraft.world.entity.animal.goat", "net.minecraft.world.entity.animal.horse", + "net.minecraft.world.entity.boss.enderdragon", "net.minecraft.world.entity.boss.wither", "net.minecraft.world.entity.decoration", + "net.minecraft.world.entity", "net.minecraft.world.entity.item", "net.minecraft.world.entity.monster", + "net.minecraft.world.entity.monster.hoglin", "net.minecraft.world.entity.monster.piglin", "net.minecraft.world.entity.npc", + "net.minecraft.world.entity.player", "net.minecraft.world.entity.projectile", "net.minecraft.world.entity.vehicle", + "net.minecraft.world.inventory", "net.minecraft.world.item", "net.minecraft.world.level.block", "net.minecraft.world.level.block.state", + "net.minecraft.world.level", "net.minecraft.world.phys", "org.bukkit.craftbukkit.$version$.block.data", "org.bukkit.craftbukkit.$version$", + "org.bukkit.craftbukkit.$version$.entity", "org.bukkit.craftbukkit.$version$.inventory", "org.bukkit.craftbukkit.$version$.util"}; + for (int i = 0; i < s.length; i++) { s[i] = s[i].replace("$version$", ReflectionManager.getBukkitVersion()); + } return s; } } \ No newline at end of file diff --git a/plugin/src/main/java/me/libraryaddict/disguise/utilities/reflection/ReflectionManager.java b/plugin/src/main/java/me/libraryaddict/disguise/utilities/reflection/ReflectionManager.java index 0df8e0df..19cc18c7 100644 --- a/plugin/src/main/java/me/libraryaddict/disguise/utilities/reflection/ReflectionManager.java +++ b/plugin/src/main/java/me/libraryaddict/disguise/utilities/reflection/ReflectionManager.java @@ -699,6 +699,7 @@ public class ReflectionManager { Object o = aClass.getConstructor().newInstance(); return (ReflectionManagerAbstract) o; + } catch (ClassNotFoundException ignored) { } catch (ReflectiveOperationException e) { e.printStackTrace(); } @@ -1088,6 +1089,7 @@ public class ReflectionManager { return (Float) damageAndIdleSoundMethod.invoke(entity); } catch (Exception ignored) { } + return null; } diff --git a/plugin/src/main/java/me/libraryaddict/disguise/utilities/sounds/SoundManager.java b/plugin/src/main/java/me/libraryaddict/disguise/utilities/sounds/SoundManager.java index ec49c200..57cef9d5 100644 --- a/plugin/src/main/java/me/libraryaddict/disguise/utilities/sounds/SoundManager.java +++ b/plugin/src/main/java/me/libraryaddict/disguise/utilities/sounds/SoundManager.java @@ -24,8 +24,6 @@ public class SoundManager { loadSounds(); loadCustomSounds(); - - ParamInfoManager.getParamInfoSoundGroup().recalculate(); } private void loadCustomSounds() { diff --git a/v1_17_R1/src/main/java/me/libraryaddict/disguise/utilities/reflection/v1_17/ReflectionManager.java b/v1_17_R1/src/main/java/me/libraryaddict/disguise/utilities/reflection/v1_17/ReflectionManager.java index 9d7b938e..f2af28c1 100644 --- a/v1_17_R1/src/main/java/me/libraryaddict/disguise/utilities/reflection/v1_17/ReflectionManager.java +++ b/v1_17_R1/src/main/java/me/libraryaddict/disguise/utilities/reflection/v1_17/ReflectionManager.java @@ -25,6 +25,7 @@ import net.minecraft.world.damagesource.DamageSource; import net.minecraft.world.effect.MobEffect; import net.minecraft.world.effect.MobEffectInstance; import net.minecraft.world.entity.EntityDimensions; +import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.npc.VillagerData; import net.minecraft.world.entity.npc.VillagerProfession; import net.minecraft.world.entity.npc.VillagerType; @@ -35,7 +36,6 @@ import net.minecraft.world.phys.AABB; import net.minecraft.world.phys.Vec3; import org.bukkit.*; import org.bukkit.block.data.BlockData; -import org.bukkit.craftbukkit.libs.it.unimi.dsi.fastutil.ints.Int2ObjectFunction; import org.bukkit.craftbukkit.v1_17_R1.CraftArt; import org.bukkit.craftbukkit.v1_17_R1.CraftServer; import org.bukkit.craftbukkit.v1_17_R1.CraftSound; @@ -58,6 +58,7 @@ import org.bukkit.util.EulerAngle; import org.bukkit.util.Vector; import java.lang.reflect.Field; +import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.util.*; import java.util.concurrent.atomic.AtomicInteger; @@ -242,8 +243,17 @@ public class ReflectionManager implements ReflectionManagerAbstract { if (!(entity instanceof net.minecraft.world.entity.LivingEntity)) { return 0.0f; } else { - return ((net.minecraft.world.entity.LivingEntity) entity).getVoicePitch(); + try { + Method method = LivingEntity.class.getDeclaredMethod("getSoundVolume"); + method.setAccessible(true); + + return (Float) method.invoke(entity); + } catch (NoSuchMethodException | InvocationTargetException | IllegalAccessException e) { + e.printStackTrace(); + } } + + return 0f; } public void injectCallback(String playername, ProfileLookupCallback callback) { diff --git a/v1_18_R1/src/main/java/me/libraryaddict/disguise/utilities/reflection/v1_18/ReflectionManager.java b/v1_18_R1/src/main/java/me/libraryaddict/disguise/utilities/reflection/v1_18/ReflectionManager.java index a1b2a794..e94a1813 100644 --- a/v1_18_R1/src/main/java/me/libraryaddict/disguise/utilities/reflection/v1_18/ReflectionManager.java +++ b/v1_18_R1/src/main/java/me/libraryaddict/disguise/utilities/reflection/v1_18/ReflectionManager.java @@ -2,7 +2,6 @@ package me.libraryaddict.disguise.utilities.reflection.v1_18; import com.comphenix.protocol.wrappers.*; import com.comphenix.protocol.wrappers.EnumWrappers.Direction; -import com.comphenix.protocol.wrappers.nbt.NbtWrapper; import com.mojang.authlib.Agent; import com.mojang.authlib.GameProfile; import com.mojang.authlib.ProfileLookupCallback; @@ -30,8 +29,6 @@ import net.minecraft.world.entity.EntityDimensions; import net.minecraft.world.entity.npc.VillagerData; import net.minecraft.world.entity.npc.VillagerProfession; import net.minecraft.world.entity.npc.VillagerType; -import net.minecraft.world.entity.projectile.FishingHook; -import net.minecraft.world.entity.projectile.ThrownEnderpearl; import net.minecraft.world.level.GameType; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.state.BlockState; @@ -49,7 +46,10 @@ import org.bukkit.craftbukkit.v1_18_R1.entity.CraftPlayer; import org.bukkit.craftbukkit.v1_18_R1.inventory.CraftItemStack; import org.bukkit.craftbukkit.v1_18_R1.util.CraftMagicNumbers; import org.bukkit.craftbukkit.v1_18_R1.util.CraftNamespacedKey; -import org.bukkit.entity.*; +import org.bukkit.entity.Entity; +import org.bukkit.entity.EntityType; +import org.bukkit.entity.Player; +import org.bukkit.entity.Villager; import org.bukkit.inventory.EquipmentSlot; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.ItemMeta; @@ -58,6 +58,7 @@ import org.bukkit.util.EulerAngle; import org.bukkit.util.Vector; import java.lang.reflect.Field; +import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.util.*; import java.util.concurrent.atomic.AtomicInteger; @@ -214,7 +215,8 @@ public class ReflectionManager implements ReflectionManagerAbstract { } public ClientboundPlayerInfoPacket.PlayerUpdate getPlayerInfoData(WrappedGameProfile gameProfile) { - return new ClientboundPlayerInfoPacket.PlayerUpdate((GameProfile) gameProfile.getHandle(), 0, GameType.SURVIVAL, new TextComponent(gameProfile.getName())); + return new ClientboundPlayerInfoPacket.PlayerUpdate((GameProfile) gameProfile.getHandle(), 0, GameType.SURVIVAL, + new TextComponent(gameProfile.getName())); } public Object getNmsEntity(Entity entity) { @@ -241,8 +243,17 @@ public class ReflectionManager implements ReflectionManagerAbstract { if (!(entity instanceof net.minecraft.world.entity.LivingEntity)) { return 0.0f; } else { - return ((net.minecraft.world.entity.LivingEntity) entity).getVoicePitch(); + try { + Method method = net.minecraft.world.entity.LivingEntity.class.getDeclaredMethod("getSoundVolume"); + method.setAccessible(true); + + return (Float) method.invoke(entity); + } catch (NoSuchMethodException | InvocationTargetException | IllegalAccessException e) { + e.printStackTrace(); + } } + + return 0f; } public void injectCallback(String playername, ProfileLookupCallback callback) { @@ -252,9 +263,8 @@ public class ReflectionManager implements ReflectionManagerAbstract { public void setBoundingBox(Entity entity, double x, double y, double z) { Location loc = entity.getLocation(); - ((CraftEntity) entity).getHandle().setBoundingBox(new AABB( - loc.getX() - x / 2, loc.getY() - y / 2, loc.getZ() - z / 2, - loc.getX() + x / 2, loc.getY() + y / 2, loc.getZ() + z / 2)); + ((CraftEntity) entity).getHandle().setBoundingBox( + new AABB(loc.getX() - x / 2, loc.getY() - y / 2, loc.getZ() - z / 2, loc.getX() + x / 2, loc.getY() + y / 2, loc.getZ() + z / 2)); } public Enum getSoundCategory(String category) { @@ -370,11 +380,13 @@ public class ReflectionManager implements ReflectionManagerAbstract { } public net.minecraft.world.entity.EntityType getEntityType(EntityType entityType) { - return net.minecraft.world.entity.EntityType.byString(entityType.getName() == null ? entityType.name().toLowerCase(Locale.ENGLISH) : entityType.getName()).orElse(null); + return net.minecraft.world.entity.EntityType.byString( + entityType.getName() == null ? entityType.name().toLowerCase(Locale.ENGLISH) : entityType.getName()).orElse(null); } public Object registerEntityType(NamespacedKey key) { - net.minecraft.world.entity.EntityType newEntity = new net.minecraft.world.entity.EntityType<>(null, null, false, false, false, false, null, null, 0, 0); + net.minecraft.world.entity.EntityType newEntity = + new net.minecraft.world.entity.EntityType<>(null, null, false, false, false, false, null, null, 0, 0); Registry.register(Registry.ENTITY_TYPE, CraftNamespacedKey.toMinecraft(key), newEntity); newEntity.getDescriptionId(); return newEntity; // TODO ??? Some reflection in legacy that I'm unsure about From dd439a78aa1d985e514675204367fcacfc3e0ed6 Mon Sep 17 00:00:00 2001 From: libraryaddict Date: Sun, 12 Dec 2021 21:14:00 +1300 Subject: [PATCH 10/11] Fix getSoundVolume on 1.18 --- .../disguise/utilities/reflection/v1_18/ReflectionManager.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/v1_18_R1/src/main/java/me/libraryaddict/disguise/utilities/reflection/v1_18/ReflectionManager.java b/v1_18_R1/src/main/java/me/libraryaddict/disguise/utilities/reflection/v1_18/ReflectionManager.java index e94a1813..c6d070d9 100644 --- a/v1_18_R1/src/main/java/me/libraryaddict/disguise/utilities/reflection/v1_18/ReflectionManager.java +++ b/v1_18_R1/src/main/java/me/libraryaddict/disguise/utilities/reflection/v1_18/ReflectionManager.java @@ -244,7 +244,7 @@ public class ReflectionManager implements ReflectionManagerAbstract { return 0.0f; } else { try { - Method method = net.minecraft.world.entity.LivingEntity.class.getDeclaredMethod("getSoundVolume"); + Method method = net.minecraft.world.entity.LivingEntity.class.getDeclaredMethod("eu"); method.setAccessible(true); return (Float) method.invoke(entity); From 9d0a61dabdc3636c63f7260cc32083ecddce1b18 Mon Sep 17 00:00:00 2001 From: libraryaddict Date: Mon, 13 Dec 2021 19:02:08 +1300 Subject: [PATCH 11/11] Add lumine by MythicCraft as a maven repo --- pom.xml | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/pom.xml b/pom.xml index 47d8fef2..668346eb 100644 --- a/pom.xml +++ b/pom.xml @@ -61,14 +61,23 @@ md_5-releases https://repo.md-5.net/content/groups/public/ + spigot-repo https://hub.spigotmc.org/nexus/content/repositories/snapshots/ + papermc https://papermc.io/repo/repository/maven-public/ + + + + lumine + https://mvn.lumine.io/repository/maven-public/ + + dmulloy2-repo https://repo.dmulloy2.net/nexus/repository/public/