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;
+ }
+}