diff --git a/plugin/pom.xml b/plugin/pom.xml new file mode 100644 index 00000000..a0b9ef9a --- /dev/null +++ b/plugin/pom.xml @@ -0,0 +1,198 @@ + + + + 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 + + + + + + org.apache.maven.plugins + maven-jar-plugin + 2.3.1 + + ../target + + + + 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 + + + LibsDisguises:* + + ** + + + + + + 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} + remapped-spigot + compile + true + + + LibsDisguises + v1_17_R1 + ${project.version} + remapped-spigot + 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 92% rename from src/main/java/me/libraryaddict/disguise/LibsDisguises.java rename to plugin/src/main/java/me/libraryaddict/disguise/LibsDisguises.java index 736dc426..360b3867 100644 --- a/src/main/java/me/libraryaddict/disguise/LibsDisguises.java +++ b/plugin/src/main/java/me/libraryaddict/disguise/LibsDisguises.java @@ -24,6 +24,7 @@ import me.libraryaddict.disguise.utilities.listeners.PaperDisguiseListener; import me.libraryaddict.disguise.utilities.listeners.PlayerSkinHandler; import me.libraryaddict.disguise.utilities.metrics.MetricsInitalizer; import me.libraryaddict.disguise.utilities.packets.PacketsManager; +import me.libraryaddict.disguise.utilities.params.ParamInfoManager; import me.libraryaddict.disguise.utilities.parser.DisguiseParser; import me.libraryaddict.disguise.utilities.reflection.NmsVersion; import me.libraryaddict.disguise.utilities.reflection.ReflectionManager; @@ -83,8 +84,8 @@ public class LibsDisguises extends JavaPlugin { getLogger().severe("Please restart the server to complete the ProtocolLib update!"); } } catch (Exception e) { - getLogger() - .severe("Looks like ProtocolLib's site may be down! MythicCraft/MythicMobs has a discord server https://discord.gg/EErRhJ4qgx you" + + getLogger().severe( + "Looks like ProtocolLib's site may be down! MythicCraft/MythicMobs has a discord server https://discord.gg/EErRhJ4qgx you" + " can " + "join. Check the pins in #libs-support for a ProtocolLib.jar you can download!"); e.printStackTrace(); } @@ -164,8 +165,8 @@ public class LibsDisguises extends JavaPlugin { LibsPremium.check(getDescription().getVersion(), getFile()); if (!LibsPremium.isPremium()) { - getLogger() - .info("You are running the free version, commands limited to non-players and operators. (Console," + " Command " + "Blocks, Admins)"); + getLogger().info( + "You are running the free version, commands limited to non-players and operators. (Console," + " Command " + "Blocks, Admins)"); } if (ReflectionManager.getVersion() == null) { @@ -185,8 +186,9 @@ public class LibsDisguises extends JavaPlugin { @Override public void run() { getLogger().severe("!! May I have your attention please !!"); - getLogger().severe("Update your ProtocolLib! You are running " + version + " but the minimum version you should be on is " + - requiredProtocolLib + "!"); + getLogger().severe( + "Update your ProtocolLib! You are running " + version + " but the minimum version you should be on is " + requiredProtocolLib + + "!"); getLogger().severe("https://ci.dmulloy2.net/job/ProtocolLib/lastSuccessfulBuild/artifact/target" + "/ProtocolLib" + ".jar"); getLogger().severe("Or! Use /ld protocollib - To update to the latest development build"); @@ -218,9 +220,11 @@ public class LibsDisguises extends JavaPlugin { PacketsManager.init(); DisguiseUtilities.init(); + new SoundManager().load(); + ReflectionManager.registerValues(); - new SoundManager().load(); + ParamInfoManager.getParamInfoSoundGroup().recalculate(); DisguiseConfig.loadConfig(); diff --git a/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 96% rename from src/main/java/me/libraryaddict/disguise/utilities/DisguiseUtilities.java rename to plugin/src/main/java/me/libraryaddict/disguise/utilities/DisguiseUtilities.java index 81555b74..de11ac34 100644 --- a/src/main/java/me/libraryaddict/disguise/utilities/DisguiseUtilities.java +++ b/plugin/src/main/java/me/libraryaddict/disguise/utilities/DisguiseUtilities.java @@ -480,7 +480,12 @@ public class DisguiseUtilities { // If we are on 1.17, you need this release or dev build // ProtocolLib is a little funny in that it provides next release version as the current version - return new String[]{"4.7.0", "528"}; + if (!NmsVersion.v1_18.isSupported()) { + return new String[]{"4.7.0", "528"}; + } + + // If you're on 1.18.. + return new String[]{"4.8.0", "538"}; } public static boolean isProtocolLibOutdated() { @@ -1609,8 +1614,8 @@ public class DisguiseUtilities { Set trackedPlayers = (Set) ReflectionManager.getNmsField("EntityTrackerEntry", "trackedPlayers").get(entityTrackerEntry); - Method clear = ReflectionManager - .getNmsMethod("EntityTrackerEntry", NmsVersion.v1_14.isSupported() ? "a" : "clear", ReflectionManager.getNmsClass("EntityPlayer")); + Method clear = ReflectionManager.getNmsMethod("EntityTrackerEntry", NmsVersion.v1_14.isSupported() ? "a" : "clear", + ReflectionManager.getNmsClass("EntityPlayer")); final Method updatePlayer = ReflectionManager.getNmsMethod("EntityTrackerEntry", NmsVersion.v1_14.isSupported() ? "b" : "updatePlayer", ReflectionManager.getNmsClass("EntityPlayer")); @@ -1665,8 +1670,8 @@ public class DisguiseUtilities { if (entityTrackerEntry != null) { Set trackedPlayers = (Set) ReflectionManager.getNmsField("EntityTrackerEntry", "trackedPlayers").get(entityTrackerEntry); - Method clear = ReflectionManager - .getNmsMethod("EntityTrackerEntry", NmsVersion.v1_14.isSupported() ? "a" : "clear", ReflectionManager.getNmsClass("EntityPlayer")); + Method clear = ReflectionManager.getNmsMethod("EntityTrackerEntry", NmsVersion.v1_14.isSupported() ? "a" : "clear", + ReflectionManager.getNmsClass("EntityPlayer")); final Method updatePlayer = ReflectionManager.getNmsMethod("EntityTrackerEntry", NmsVersion.v1_14.isSupported() ? "b" : "updatePlayer", ReflectionManager.getNmsClass("EntityPlayer")); @@ -1732,8 +1737,8 @@ public class DisguiseUtilities { Set trackedPlayers = (Set) ReflectionManager.getNmsField("EntityTrackerEntry", "trackedPlayers").get(entityTrackerEntry); // TODO Store the fields - final Method clear = ReflectionManager - .getNmsMethod("EntityTrackerEntry", NmsVersion.v1_14.isSupported() ? "a" : "clear", ReflectionManager.getNmsClass("EntityPlayer")); + final Method clear = ReflectionManager.getNmsMethod("EntityTrackerEntry", NmsVersion.v1_14.isSupported() ? "a" : "clear", + ReflectionManager.getNmsClass("EntityPlayer")); final Method updatePlayer = ReflectionManager.getNmsMethod("EntityTrackerEntry", NmsVersion.v1_14.isSupported() ? "b" : "updatePlayer", ReflectionManager.getNmsClass("EntityPlayer")); @@ -1859,8 +1864,8 @@ public class DisguiseUtilities { ((Set) trackedPlayersObj).remove(ReflectionManager.getPlayerConnectionOrPlayer(player)); } else { - ((Map) ReflectionManager.getNmsField("EntityTrackerEntry", "trackedPlayerMap").get(entityTrackerEntry)) - .remove(ReflectionManager.getPlayerConnectionOrPlayer(player)); + ((Map) ReflectionManager.getNmsField("EntityTrackerEntry", "trackedPlayerMap").get(entityTrackerEntry)).remove( + ReflectionManager.getPlayerConnectionOrPlayer(player)); } } } catch (Exception ex) { @@ -2962,8 +2967,8 @@ public class DisguiseUtilities { name = ChatColor.translateAlternateColorCodes('&', newNames[i]); } - WrappedDataWatcher.WrappedDataWatcherObject obj = ReflectionManager - .createDataWatcherObject(NmsVersion.v1_13.isSupported() ? MetaIndex.ENTITY_CUSTOM_NAME : MetaIndex.ENTITY_CUSTOM_NAME_OLD, name); + WrappedDataWatcher.WrappedDataWatcherObject obj = ReflectionManager.createDataWatcherObject( + NmsVersion.v1_13.isSupported() ? MetaIndex.ENTITY_CUSTOM_NAME : MetaIndex.ENTITY_CUSTOM_NAME_OLD, name); watcher.setObject(obj, ReflectionManager.convertInvalidMeta(name)); @@ -2985,7 +2990,7 @@ public class DisguiseUtilities { Location loc = disguise.getEntity().getLocation(); packet.getDoubles().write(0, loc.getX()); - packet.getDoubles().write(1, loc.getY() + height + (0.28 * i)); + packet.getDoubles().write(1, loc.getY() + height + (0.28 * i)); packet.getDoubles().write(2, loc.getZ()); packets.add(packet); diff --git a/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 90% 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 index d403919e..3bfedff6 100644 --- a/src/main/java/me/libraryaddict/disguise/utilities/metrics/Metrics.java +++ b/plugin/src/main/java/me/libraryaddict/disguise/utilities/metrics/Metrics.java @@ -1,12 +1,13 @@ package me.libraryaddict.disguise.utilities.metrics; +import com.google.gson.Gson; +import com.google.gson.JsonArray; +import com.google.gson.JsonObject; import me.libraryaddict.disguise.utilities.DisguiseUtilities; import org.bukkit.Bukkit; import org.bukkit.configuration.file.YamlConfiguration; import org.bukkit.plugin.ServicePriority; import org.bukkit.plugin.java.JavaPlugin; -import org.json.simple.JSONArray; -import org.json.simple.JSONObject; import javax.net.ssl.HttpsURLConnection; import java.io.ByteArrayOutputStream; @@ -174,23 +175,23 @@ public class Metrics { * * @return The plugin specific data. */ - public JSONObject getPluginData() { - JSONObject data = new JSONObject(); + public JsonObject getPluginData() { + JsonObject data = new JsonObject(); String pluginName = plugin.getDescription().getName(); - data.put("pluginName", pluginName); // Append the name of the plugin - data.put("pluginVersion", version); // Append the version of the plugin - JSONArray customCharts = new JSONArray(); + data.addProperty("pluginName", pluginName); // Append the name of the plugin + data.addProperty("pluginVersion", version); // Append the version of the plugin + JsonArray customCharts = new JsonArray(); for (CustomChart customChart : charts) { // Add the data of the custom charts - JSONObject chart = customChart.getRequestJsonObject(); + JsonObject chart = customChart.getRequestJsonObject(); if (chart == null) { // If the chart is null, we skip it continue; } customCharts.add(chart); } - data.put("customCharts", customCharts); + data.add("customCharts", customCharts); return data; } @@ -200,7 +201,7 @@ public class Metrics { * * @return The server specific data. */ - private JSONObject getServerData() { + private JsonObject getServerData() { // Minecraft specific data int playerAmount = Bukkit.getOnlinePlayers().size(); int onlineMode = Bukkit.getOnlineMode() ? 1 : 0; @@ -214,19 +215,19 @@ public class Metrics { String osVersion = System.getProperty("os.version"); int coreCount = Runtime.getRuntime().availableProcessors(); - JSONObject data = new JSONObject(); + JsonObject data = new JsonObject(); - data.put("serverUUID", serverUUID); + data.addProperty("serverUUID", serverUUID); - data.put("playerAmount", playerAmount); - data.put("onlineMode", onlineMode); - data.put("bukkitVersion", bukkitVersion); + data.addProperty("playerAmount", playerAmount); + data.addProperty("onlineMode", onlineMode); + data.addProperty("bukkitVersion", bukkitVersion); - data.put("javaVersion", javaVersion); - data.put("osName", osName); - data.put("osArch", osArch); - data.put("osVersion", osVersion); - data.put("coreCount", coreCount); + data.addProperty("javaVersion", javaVersion); + data.addProperty("osName", osName); + data.addProperty("osArch", osArch); + data.addProperty("osVersion", osVersion); + data.addProperty("coreCount", coreCount); return data; } @@ -235,9 +236,9 @@ public class Metrics { * Collects the data and sends it afterwards. */ private void submitData() { - final JSONObject data = getServerData(); + final JsonObject data = getServerData(); - JSONArray pluginData = new JSONArray(); + JsonArray pluginData = new JsonArray(); // Search for all other bStats Metrics classes to get their plugin data for (Class service : Bukkit.getServicesManager().getKnownServices()) { try { @@ -248,13 +249,13 @@ public class Metrics { } // Found one! try { - pluginData.add(service.getMethod("getPluginData").invoke(Bukkit.getServicesManager().load(service))); + pluginData.add(new Gson().toJson(service.getMethod("getPluginData").invoke(Bukkit.getServicesManager().load(service)))); } catch (NoSuchMethodException | IllegalAccessException | InvocationTargetException ignored) { } } - data.put("plugins", pluginData); + data.add("plugins", pluginData); // Create a new thread for the connection to the bStats server new Thread(new Runnable() { @@ -281,7 +282,7 @@ public class Metrics { * @param data The data to send. * @throws Exception If the request failed. */ - private static void sendData(JSONObject data) throws Exception { + private static void sendData(JsonObject data) throws Exception { if (data == null) { throw new IllegalArgumentException("Data cannot be null!"); } @@ -350,16 +351,16 @@ public class Metrics { this.chartId = chartId; } - protected JSONObject getRequestJsonObject() { - JSONObject chart = new JSONObject(); - chart.put("chartId", chartId); + protected JsonObject getRequestJsonObject() { + JsonObject chart = new JsonObject(); + chart.addProperty("chartId", chartId); try { - JSONObject data = getChartData(); + JsonObject data = getChartData(); if (data == null) { // If the data is null we don't send the chart. return null; } - chart.put("data", data); + chart.add("data", data); } catch (Throwable t) { if (logFailedRequests) { @@ -370,7 +371,7 @@ public class Metrics { return chart; } - protected abstract JSONObject getChartData(); + protected abstract JsonObject getChartData(); } /** @@ -395,14 +396,14 @@ public class Metrics { public abstract String getValue(); @Override - protected JSONObject getChartData() { - JSONObject data = new JSONObject(); + protected JsonObject getChartData() { + JsonObject data = new JsonObject(); String value = getValue(); if (value == null || value.isEmpty()) { // Null = skip the chart return null; } - data.put("value", value); + data.addProperty("value", value); return data; } } @@ -431,9 +432,9 @@ public class Metrics { public abstract HashMap getValues(HashMap valueMap); @Override - protected JSONObject getChartData() { - JSONObject data = new JSONObject(); - JSONObject values = new JSONObject(); + protected JsonObject getChartData() { + JsonObject data = new JsonObject(); + JsonObject values = new JsonObject(); HashMap map = getValues(new HashMap()); if (map == null || map.isEmpty()) { // Null = skip the chart @@ -445,13 +446,13 @@ public class Metrics { continue; // Skip this invalid } allSkipped = false; - values.put(entry.getKey(), entry.getValue()); + values.addProperty(entry.getKey(), entry.getValue()); } if (allSkipped) { // Null = skip the chart return null; } - data.put("values", values); + data.add("values", values); return data; } } @@ -478,14 +479,14 @@ public class Metrics { public abstract int getValue(); @Override - protected JSONObject getChartData() { - JSONObject data = new JSONObject(); + protected JsonObject getChartData() { + JsonObject data = new JsonObject(); int value = getValue(); if (value == 0) { // Null = skip the chart return null; } - data.put("value", value); + data.addProperty("value", value); return data; } } @@ -514,9 +515,9 @@ public class Metrics { public abstract HashMap getValues(HashMap valueMap); @Override - protected JSONObject getChartData() { - JSONObject data = new JSONObject(); - JSONObject values = new JSONObject(); + protected JsonObject getChartData() { + JsonObject data = new JsonObject(); + JsonObject values = new JsonObject(); HashMap map = getValues(new HashMap()); if (map == null || map.isEmpty()) { // Null = skip the chart @@ -528,13 +529,13 @@ public class Metrics { continue; // Skip this invalid } allSkipped = false; - values.put(entry.getKey(), entry.getValue()); + values.addProperty(entry.getKey(), entry.getValue()); } if (allSkipped) { // Null = skip the chart return null; } - data.put("values", values); + data.add("values", values); return data; } } @@ -563,20 +564,20 @@ public class Metrics { public abstract HashMap getValues(HashMap valueMap); @Override - protected JSONObject getChartData() { - JSONObject data = new JSONObject(); - JSONObject values = new JSONObject(); + protected JsonObject getChartData() { + JsonObject data = new JsonObject(); + JsonObject values = new JsonObject(); HashMap map = getValues(new HashMap()); if (map == null || map.isEmpty()) { // Null = skip the chart return null; } for (Map.Entry entry : map.entrySet()) { - JSONArray categoryValues = new JSONArray(); + JsonArray categoryValues = new JsonArray(); categoryValues.add(entry.getValue()); - values.put(entry.getKey(), categoryValues); + values.add(entry.getKey(), categoryValues); } - data.put("values", values); + data.add("values", values); return data; } } @@ -605,9 +606,9 @@ public class Metrics { public abstract HashMap getValues(HashMap valueMap); @Override - protected JSONObject getChartData() { - JSONObject data = new JSONObject(); - JSONObject values = new JSONObject(); + protected JsonObject getChartData() { + JsonObject data = new JsonObject(); + JsonObject values = new JsonObject(); HashMap map = getValues(new HashMap()); if (map == null || map.isEmpty()) { // Null = skip the chart @@ -619,17 +620,17 @@ public class Metrics { continue; // Skip this invalid } allSkipped = false; - JSONArray categoryValues = new JSONArray(); + JsonArray categoryValues = new JsonArray(); for (int categoryValue : entry.getValue()) { categoryValues.add(categoryValue); } - values.put(entry.getKey(), categoryValues); + values.add(entry.getKey(), categoryValues); } if (allSkipped) { // Null = skip the chart return null; } - data.put("values", values); + data.add("values", values); return data; } } @@ -656,15 +657,15 @@ public class Metrics { public abstract Country getValue(); @Override - protected JSONObject getChartData() { - JSONObject data = new JSONObject(); + protected JsonObject getChartData() { + JsonObject data = new JsonObject(); Country value = getValue(); if (value == null) { // Null = skip the chart return null; } - data.put("value", value.getCountryIsoTag()); + data.addProperty("value", value.getCountryIsoTag()); return data; } } @@ -693,9 +694,9 @@ public class Metrics { public abstract HashMap getValues(HashMap valueMap); @Override - protected JSONObject getChartData() { - JSONObject data = new JSONObject(); - JSONObject values = new JSONObject(); + protected JsonObject getChartData() { + JsonObject data = new JsonObject(); + JsonObject values = new JsonObject(); HashMap map = getValues(new HashMap()); if (map == null || map.isEmpty()) { // Null = skip the chart @@ -707,13 +708,13 @@ public class Metrics { continue; // Skip this invalid } allSkipped = false; - values.put(entry.getKey().getCountryIsoTag(), entry.getValue()); + values.addProperty(entry.getKey().getCountryIsoTag(), entry.getValue()); } if (allSkipped) { // Null = skip the chart return null; } - data.put("values", values); + data.add("values", values); return data; } } diff --git a/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 90% 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 index 9162184d..53a5bb3d 100644 --- 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 @@ -110,8 +110,8 @@ public class PacketListenerSounds extends PacketAdapter { // Blocks null and CANCEL, HURT and DEATH are 100% handled by entity status! if (soundType != SoundType.STEP && soundType != SoundType.IDLE) { - event.setCancelled(true); - return; + //event.setCancelled(true); + // return; } if (disguisedEntity == observer && !disguise.isSelfDisguiseSoundsReplaced()) { @@ -141,35 +141,32 @@ public class PacketListenerSounds extends PacketAdapter { if (disguise instanceof MobDisguise && disguisedEntity instanceof LivingEntity && ((MobDisguise) disguise).doesDisguiseAge()) { if (((MobDisguise) disguise).isAdult()) { - pitch = (DisguiseUtilities.random.nextFloat() - DisguiseUtilities.random.nextFloat()) * 0.2F + 1.0F; + pitch = ((DisguiseUtilities.random.nextFloat() - DisguiseUtilities.random.nextFloat()) * 0.2F) + 1.0F; } else { - pitch = (DisguiseUtilities.random.nextFloat() - DisguiseUtilities.random.nextFloat()) * 0.2F + 1.4F; + pitch = ((DisguiseUtilities.random.nextFloat() - DisguiseUtilities.random.nextFloat()) * 0.2F) + 1.4F; } } - if (sound.getClass().getSimpleName().equals("MinecraftKey")) { - PacketContainer newPacket = new PacketContainer(Server.CUSTOM_SOUND_EFFECT); - StructureModifier newModifs = newPacket.getModifier(); + PacketContainer newPacket; - newModifs.write(0, sound); - newModifs.write(1, soundCat); + if (sound.getClass().getSimpleName().equals("MinecraftKey")) { + newPacket = new PacketContainer(Server.CUSTOM_SOUND_EFFECT); + StructureModifier newModifs = newPacket.getModifier(); newModifs.write(2, mods.read(2)); newModifs.write(3, mods.read(3)); newModifs.write(4, mods.read(4)); - newModifs.write(5, volume); - newModifs.write(6, pitch); - - event.setPacket(newPacket); } else { - event.setPacket(event.getPacket().shallowClone()); - mods = event.getPacket().getModifier(); - - mods.write(0, sound); - mods.write(1, soundCat); - mods.write(5, volume); - mods.write(6, pitch); + newPacket = event.getPacket().shallowClone(); + mods = newPacket.getModifier(); } + + mods.write(0, sound); + mods.write(1, soundCat); + mods.write(5, volume); + mods.write(6, pitch); + + event.setPacket(newPacket); } private void handleEntityStatus(PacketEvent event) { @@ -191,10 +188,12 @@ public class PacketListenerSounds extends PacketAdapter { if (disguise instanceof TargetedDisguise) { Set discs = DisguiseUtilities.getDisguises().get(entity.getEntityId()); + for (TargetedDisguise targetedDisguise : discs) { if (targetedDisguise != disguise) { continue; } + if (!targetedDisguise.canSee(observer)) { return; } @@ -203,7 +202,7 @@ public class PacketListenerSounds extends PacketAdapter { SoundType soundType = SoundType.HURT; - if (entity instanceof LivingEntity && ((LivingEntity) entity).getHealth() == 0) { + if (entity instanceof LivingEntity && ((LivingEntity) entity).getHealth() <= 0) { soundType = SoundType.DEATH; } @@ -230,8 +229,9 @@ public class PacketListenerSounds extends PacketAdapter { } SoundGroup disSound = SoundGroup.getGroup(disguise); + SoundGroup expectedGroup = SoundGroup.getGroup(disguise.getType().name()); - if (disSound == null || disSound == entitySoundGroup) { + if (disSound == null || disSound == expectedGroup) { return; } diff --git a/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/plugin/src/main/java/me/libraryaddict/disguise/utilities/reflection/ClassMappings.java b/plugin/src/main/java/me/libraryaddict/disguise/utilities/reflection/ClassMappings.java new file mode 100644 index 00000000..06dd6f1c --- /dev/null +++ b/plugin/src/main/java/me/libraryaddict/disguise/utilities/reflection/ClassMappings.java @@ -0,0 +1,56 @@ +package me.libraryaddict.disguise.utilities.reflection; + +import java.util.HashMap; + +public class ClassMappings { + private static HashMap classLocations = new HashMap<>(); + + private static final String[] packages = getPackages(); + + public static String getClass(String packageHint, String className) { + String location = classLocations.get(className); + if (location != null) { + return location; + } + location = className; + String[] arrayOfString; + int i; + byte b; + for (arrayOfString = packages, i = arrayOfString.length, b = 0; b < i; ) { + String pack = arrayOfString[b]; + if (!pack.startsWith(packageHint)) { + b++; + continue; + } + String toTry = pack + "." + className; + try { + Class.forName(toTry); + location = pack + "." + className; + break; + } catch (Throwable throwable) { + b++; + } + } + classLocations.put(className, location); + return location; + } + + private static String[] getPackages() { + String[] s = {"net.minecraft.server.$version$", "net.minecraft.core", "net.minecraft.core.particles", "net.minecraft.nbt", "net.minecraft.network.chat", + "net.minecraft.network.protocol.game", "net.minecraft.network.syncher", "net.minecraft.resources", "net.minecraft.server.level", + "net.minecraft.server", "net.minecraft.server.network", "net.minecraft.sounds", "net.minecraft.world.damagesource", + "net.minecraft.world.effect", "net.minecraft.world.entity.ambient", "net.minecraft.world.entity.animal.axolotl", + "net.minecraft.world.entity.animal", "net.minecraft.world.entity.animal.goat", "net.minecraft.world.entity.animal.horse", + "net.minecraft.world.entity.boss.enderdragon", "net.minecraft.world.entity.boss.wither", "net.minecraft.world.entity.decoration", + "net.minecraft.world.entity", "net.minecraft.world.entity.item", "net.minecraft.world.entity.monster", + "net.minecraft.world.entity.monster.hoglin", "net.minecraft.world.entity.monster.piglin", "net.minecraft.world.entity.npc", + "net.minecraft.world.entity.player", "net.minecraft.world.entity.projectile", "net.minecraft.world.entity.vehicle", + "net.minecraft.world.inventory", "net.minecraft.world.item", "net.minecraft.world.level.block", "net.minecraft.world.level.block.state", + "net.minecraft.world.level", "net.minecraft.world.phys", "org.bukkit.craftbukkit.$version$.block.data", "org.bukkit.craftbukkit.$version$", + "org.bukkit.craftbukkit.$version$.entity", "org.bukkit.craftbukkit.$version$.inventory", "org.bukkit.craftbukkit.$version$.util"}; + for (int i = 0; i < s.length; i++) { + s[i] = s[i].replace("$version$", ReflectionManager.getBukkitVersion()); + } + return s; + } +} \ No newline at end of file diff --git a/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 87% 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..19cc18c7 100644 --- a/src/main/java/me/libraryaddict/disguise/utilities/reflection/ReflectionManager.java +++ b/plugin/src/main/java/me/libraryaddict/disguise/utilities/reflection/ReflectionManager.java @@ -108,40 +108,29 @@ public class ReflectionManager { private static Field noDamageTicks; private static Method isInvul; private static Object genericDamage; - private static HashMap classLocations = new HashMap<>(); private static Field playerConnection; private static Method incrementedInventoryStateId; private static Field playerInventoryContainer; + private static ReflectionManagerAbstract nmsReflection; public static void init() { try { + // Load first because its necessary for 1.18+ + if (NmsVersion.v1_14.isSupported()) { + entityPoseClass = getNmsClass("EntityPose"); + } + + nmsReflection = getReflectionManager(getVersion()); + + if (nmsReflection != null) { + return; + } + boundingBoxConstructor = getNmsConstructor("AxisAlignedBB", double.class, double.class, double.class, double.class, double.class, double.class); setBoundingBoxMethod = getNmsMethod("Entity", "a", getNmsClass("AxisAlignedBB")); - if (NmsVersion.v1_17.isSupported()) { - for (Field f : getNmsClass("Entity").getDeclaredFields()) { - if (f.getType() != AtomicInteger.class) { - continue; - } - - f.setAccessible(true); - entityCountField = f; - break; - } - - for (Field f : getNmsClass("EntityHuman").getDeclaredFields()) { - if (!f.getType().getSimpleName().equals("ContainerPlayer")) { - continue; - } - - f.setAccessible(true); - playerInventoryContainer = f; - break; - } - } else { - entityCountField = getNmsField("Entity", "entityCount"); - } + entityCountField = getNmsField("Entity", "entityCount"); mobEffectConstructor = getNmsConstructor("MobEffect", getNmsClass("MobEffectList"), Integer.TYPE, Integer.TYPE, Boolean.TYPE, Boolean.TYPE); mobEffectList = getNmsMethod("MobEffectList", "fromId", Integer.TYPE); @@ -160,15 +149,9 @@ public class ReflectionManager { enumPlayerInfoAction = (Enum[]) getNmsClass("PacketPlayOutPlayerInfo$EnumPlayerInfoAction").getEnumConstants(); chatComponentConstructor = getNmsConstructor("ChatComponentText", String.class); - if (NmsVersion.v1_17.isSupported()) { - packetPlayOutConstructor = - getNmsConstructor("PacketPlayOutPlayerInfo$PlayerInfoData", GameProfile.class, int.class, getNmsClass("EnumGamemode"), - getNmsClass("IChatBaseComponent")); - } else { - packetPlayOutConstructor = - getNmsConstructor("PacketPlayOutPlayerInfo$PlayerInfoData", getNmsClass("PacketPlayOutPlayerInfo"), GameProfile.class, int.class, - getNmsClass("EnumGamemode"), getNmsClass("IChatBaseComponent")); - } + packetPlayOutConstructor = + getNmsConstructor("PacketPlayOutPlayerInfo$PlayerInfoData", getNmsClass("PacketPlayOutPlayerInfo"), GameProfile.class, int.class, + getNmsClass("EnumGamemode"), getNmsClass("IChatBaseComponent")); enumGamemode = (Enum[]) getNmsClass("EnumGamemode").getEnumConstants(); getNmsEntityMethod = getCraftMethod("CraftEntity", "getHandle"); @@ -196,20 +179,12 @@ public class ReflectionManager { entityTypesAMethod = getNmsMethod("EntityTypes", "a", String.class); if (NmsVersion.v1_14.isSupported()) { - entityPoseClass = getNmsClass("EntityPose"); registryBlocksGetMethod = getNmsMethod("RegistryBlocks", "get", getNmsClass("MinecraftKey")); villagerDataConstructor = getNmsConstructor("VillagerData", getNmsClass("VillagerType"), getNmsClass("VillagerProfession"), int.class); - if (NmsVersion.v1_17.isSupported()) { - villagerProfessionRegistry = getNmsField("IRegistry", "ap").get(null); - villagerTypeRegistry = getNmsField("IRegistry", "ao").get(null); - playerConnection = getNmsField("EntityPlayer", "b"); - connectionEntityMethod = getNmsMethod("PlayerConnection", "d"); - incrementedInventoryStateId = getNmsMethod("Container", "incrementStateId"); - } else { - villagerProfessionRegistry = getNmsField("IRegistry", "VILLAGER_PROFESSION").get(null); - villagerTypeRegistry = getNmsField("IRegistry", "VILLAGER_TYPE").get(null); - } + villagerProfessionRegistry = getNmsField("IRegistry", "VILLAGER_PROFESSION").get(null); + villagerTypeRegistry = getNmsField("IRegistry", "VILLAGER_TYPE").get(null); + } else { registryBlocksGetMethod = getNmsMethod("RegistryBlocks", "getOrDefault", getNmsClass("MinecraftKey")); } @@ -225,20 +200,7 @@ public class ReflectionManager { getNmsWorld = getCraftMethod("CraftWorld", "getHandle"); deserializedItemMeta = getCraftMethod(getCraftClass("CraftMetaItem$SerializableMeta"), "deserialize", Map.class); - if (NmsVersion.v1_17.isSupported()) { - boolean nextInt = false; - - for (Field f : getNmsClass("Entity").getDeclaredFields()) { - if (f.getType().getSimpleName().equals("Tag")) { - nextInt = true; - } else if (f.getType() == int.class && nextInt) { - noDamageTicks = f; - break; - } - } - } else { - noDamageTicks = getNmsField("Entity", "noDamageTicks"); - } + noDamageTicks = getNmsField("Entity", "noDamageTicks"); isInvul = getNmsMethod("Entity", "isInvulnerable", getNmsClass("DamageSource")); @@ -302,15 +264,15 @@ public class ReflectionManager { ex.printStackTrace(); } - pingField = getNmsField("EntityPlayer", NmsVersion.v1_17.isSupported() ? "e" : "ping"); + pingField = getNmsField("EntityPlayer", "ping"); if (NmsVersion.v1_14.isSupported()) { - chunkMapField = getNmsField("ChunkProviderServer", NmsVersion.v1_17.isSupported() ? "a" : "playerChunkMap"); - trackedEntitiesField = getNmsField("PlayerChunkMap", NmsVersion.v1_17.isSupported() ? "G" : "trackedEntities"); - entityTrackerField = getNmsField("PlayerChunkMap$EntityTracker", NmsVersion.v1_17.isSupported() ? "b" : "trackerEntry"); + chunkMapField = getNmsField("ChunkProviderServer", "playerChunkMap"); + trackedEntitiesField = getNmsField("PlayerChunkMap", "trackedEntities"); + entityTrackerField = getNmsField("PlayerChunkMap$EntityTracker", "trackerEntry"); if (NmsVersion.v1_16.isSupported()) { - chunkProviderField = getNmsField("WorldServer", NmsVersion.v1_17.isSupported() ? "C" : "chunkProvider"); + chunkProviderField = getNmsField("WorldServer", "chunkProvider"); } else { chunkProviderField = getNmsField("World", "chunkProvider"); } @@ -322,6 +284,10 @@ public class ReflectionManager { } public static boolean hasInvul(Entity entity) { + if (nmsReflection != null) { + return nmsReflection.hasInvul(entity); + } + Object nmsEntity = ReflectionManager.getNmsEntity(entity); try { @@ -338,6 +304,10 @@ public class ReflectionManager { } public static int getIncrementedStateId(Player player) { + if (nmsReflection != null) { + return nmsReflection.getIncrementedStateId(player); + } + try { Object container = playerInventoryContainer.get(getNmsEntity(player)); @@ -448,6 +418,10 @@ public class ReflectionManager { } public static int getNewEntityId(boolean increment) { + if (nmsReflection != null) { + return nmsReflection.getNewEntityId(increment); + } + try { Number entityCount = (Number) entityCountField.get(null); @@ -472,11 +446,11 @@ public class ReflectionManager { } public static Object getPlayerConnectionOrPlayer(Player player) { - try { - if (NmsVersion.v1_17.isSupported()) { - return playerConnection.get(getNmsEntity(player)); - } + if (nmsReflection != null) { + return nmsReflection.getPlayerConnectionOrPlayer(player); + } + try { return getNmsEntity(player); } catch (Throwable throwable) { throwable.printStackTrace(); @@ -486,18 +460,12 @@ public class ReflectionManager { } public static Object createEntityInstance(DisguiseType disguiseType, String entityName) { + if (nmsReflection != null) { + return nmsReflection.createEntityInstance(entityName); + } + try { - Class entityClass; - - if (NmsVersion.v1_17.isSupported()) { - entityClass = getNmsClassIgnoreErrors("Entity" + entityName); - - if (entityClass == null) { - entityClass = getNmsClass(entityName); - } - } else { - entityClass = getNmsClass("Entity" + entityName); - } + Class entityClass = getNmsClass("Entity" + entityName); Object entityObject; Object world = getWorldServer(Bukkit.getWorlds().get(0)); @@ -506,17 +474,13 @@ public class ReflectionManager { Object minecraftServer = getNmsMethod("MinecraftServer", "getServer").invoke(null); WrappedGameProfile gameProfile = getGameProfile(new UUID(0, 0), "Steve"); - if (NmsVersion.v1_17.isSupported()) { - entityObject = entityClass.getDeclaredConstructor(getNmsClass("MinecraftServer"), getNmsClass("WorldServer"), gameProfile.getHandleType()) - .newInstance(minecraftServer, world, gameProfile.getHandle()); - } else { - Object playerinteractmanager = - getNmsClass("PlayerInteractManager").getDeclaredConstructor(getNmsClass(NmsVersion.v1_14.isSupported() ? "WorldServer" : "World")) - .newInstance(world); + Object playerinteractmanager = + getNmsClass("PlayerInteractManager").getDeclaredConstructor(getNmsClass(NmsVersion.v1_14.isSupported() ? "WorldServer" : "World")) + .newInstance(world); + + entityObject = entityClass.getDeclaredConstructor(getNmsClass("MinecraftServer"), getNmsClass("WorldServer"), gameProfile.getHandleType(), + playerinteractmanager.getClass()).newInstance(minecraftServer, world, gameProfile.getHandle(), playerinteractmanager); - entityObject = entityClass.getDeclaredConstructor(getNmsClass("MinecraftServer"), getNmsClass("WorldServer"), gameProfile.getHandleType(), - playerinteractmanager.getClass()).newInstance(minecraftServer, world, gameProfile.getHandle(), playerinteractmanager); - } } else if (entityName.equals("EnderPearl")) { entityObject = entityClass.getDeclaredConstructor(getNmsClass("World"), getNmsClass("EntityLiving")) .newInstance(world, createEntityInstance(DisguiseType.COW, "Cow")); @@ -554,6 +518,10 @@ public class ReflectionManager { } public static Object getMobEffectList(int id) { + if (nmsReflection != null) { + return nmsReflection.getMobEffectList(id); + } + try { return mobEffectList.invoke(null, id); } catch (IllegalAccessException | InvocationTargetException e) { @@ -568,6 +536,10 @@ public class ReflectionManager { } public static Object createMobEffect(int id, int duration, int amplification, boolean ambient, boolean particles) { + if (nmsReflection != null) { + return nmsReflection.createMobEffect(id, duration, amplification, ambient, particles); + } + try { return mobEffectConstructor.newInstance(getMobEffectList(id), duration, amplification, ambient, particles); } catch (Exception e) { @@ -578,6 +550,13 @@ public class ReflectionManager { } public static FakeBoundingBox getBoundingBox(Entity entity) { + if (nmsReflection != null) { + double x = nmsReflection.getXBoundingBox(entity); + double y = nmsReflection.getYBoundingBox(entity); + double z = nmsReflection.getZBoundingBox(entity); + return new FakeBoundingBox(x, y, z); + } + try { Object boundingBox = boundingBoxMethod.invoke(getNmsEntity(entity)); @@ -624,12 +603,11 @@ public class ReflectionManager { } public static Object getPlayerFromPlayerConnection(Object nmsEntity) { - try { - if (NmsVersion.v1_17.isSupported()) { - // Convert from player connection to EntityPlayer - nmsEntity = connectionEntityMethod.invoke(nmsEntity); - } + if (nmsReflection != null) { + return nmsReflection.getPlayerFromPlayerConnection(nmsEntity); + } + try { return nmsEntity; } catch (Exception ex) { ex.printStackTrace(); @@ -639,6 +617,10 @@ public class ReflectionManager { } public static Entity getBukkitEntity(Object nmsEntity) { + if (nmsReflection != null) { + return nmsReflection.getBukkitEntity(nmsEntity); + } + try { return (Entity) bukkitEntityMethod.invoke(nmsEntity); } catch (Exception ex) { @@ -649,6 +631,10 @@ public class ReflectionManager { } public static ItemStack getBukkitItem(Object nmsItem) { + if (nmsReflection != null) { + return nmsReflection.getBukkitItem(nmsItem); + } + try { return (ItemStack) itemAsBukkitMethod.invoke(null, nmsItem); } catch (Exception e) { @@ -659,6 +645,10 @@ public class ReflectionManager { } public static ItemStack getCraftItem(ItemStack bukkitItem) { + if (nmsReflection != null) { + return nmsReflection.getCraftItem(bukkitItem); + } + try { return (ItemStack) itemAsCraftCopyMethod.invoke(null, bukkitItem); } catch (Exception e) { @@ -703,6 +693,20 @@ public class ReflectionManager { return null; } + public static ReflectionManagerAbstract getReflectionManager(NmsVersion nmsVersion) { + try { + Class aClass = Class.forName("me.libraryaddict.disguise.utilities.reflection." + nmsVersion.name() + ".ReflectionManager"); + Object o = aClass.getConstructor().newInstance(); + + return (ReflectionManagerAbstract) o; + } catch (ClassNotFoundException ignored) { + } catch (ReflectiveOperationException e) { + e.printStackTrace(); + } + + return null; + } + public static Constructor getCraftConstructor(Class clazz, Class... parameters) { try { Constructor declaredConstructor = clazz.getDeclaredConstructor(parameters); @@ -720,6 +724,10 @@ public class ReflectionManager { } public static Object getCraftSound(Sound sound) { + if (nmsReflection != null) { + return nmsReflection.getCraftSound(sound); + } + try { return soundEffectMethod.invoke(null, getSoundString(sound)); } catch (Exception ex) { @@ -730,6 +738,10 @@ public class ReflectionManager { } public static Object getEntityTrackerEntry(Entity target) throws Exception { + if (nmsReflection != null) { + return nmsReflection.getEntityTrackerEntry(target); + } + Object world = getWorldServer(target.getWorld()); if (NmsVersion.v1_14.isSupported()) { @@ -753,6 +765,10 @@ public class ReflectionManager { } public static Object getMinecraftServer() { + if (nmsReflection != null) { + return nmsReflection.getMinecraftServer(); + } + try { return getServerMethod.invoke(Bukkit.getServer()); } catch (IllegalAccessException | InvocationTargetException e) { @@ -762,6 +778,10 @@ public class ReflectionManager { } public static String getEnumArt(Art art) { + if (nmsReflection != null) { + return nmsReflection.getEnumArt(art); + } + try { Object enumArt = getEnumArtMethod.invoke(null, art); for (Field field : enumArt.getClass().getDeclaredFields()) { @@ -777,6 +797,10 @@ public class ReflectionManager { } public static Object getBlockPosition(int x, int y, int z) { + if (nmsReflection != null) { + return nmsReflection.getBlockPosition(x, y, z); + } + try { return blockPositionConstructor.newInstance(x, y, z); } catch (Exception ex) { @@ -787,6 +811,10 @@ public class ReflectionManager { } public static Enum getEnumDirection(int direction) { + if (nmsReflection != null) { + return nmsReflection.getEnumDirection(direction); + } + try { return (Enum) enumDirectionMethod.invoke(null, direction); } catch (Exception ex) { @@ -797,6 +825,10 @@ public class ReflectionManager { } public static Enum getEnumPlayerInfoAction(int action) { + if (nmsReflection != null) { + return nmsReflection.getEnumPlayerInfoAction(action); + } + try { return enumPlayerInfoAction[action]; } catch (Exception ex) { @@ -807,13 +839,13 @@ public class ReflectionManager { } public static Object getPlayerInfoData(Object playerInfoPacket, WrappedGameProfile gameProfile) { + if (nmsReflection != null) { + return nmsReflection.getPlayerInfoData(gameProfile); + } + try { Object playerListName = chatComponentConstructor.newInstance(gameProfile.getName()); - if (NmsVersion.v1_17.isSupported()) { - return packetPlayOutConstructor.newInstance(gameProfile.getHandle(), 0, enumGamemode[1], playerListName); - } - return packetPlayOutConstructor.newInstance(playerInfoPacket, gameProfile.getHandle(), 0, enumGamemode[1], playerListName); } catch (Exception ex) { ex.printStackTrace(); @@ -827,13 +859,7 @@ public class ReflectionManager { } public static WrappedGameProfile getGameProfile(UUID uuid, String playerName) { - try { - return new WrappedGameProfile(uuid != null ? uuid : getRandomUUID(), - playerName == null || playerName.length() < 17 ? playerName : playerName.substring(0, 16)); - } catch (Exception ex) { - ex.printStackTrace(); - } - return null; + return ReflectionManagerAbstract.getGameProfile(uuid == null ? getRandomUUID() : uuid, playerName); } public static WrappedGameProfile getClonedProfile(WrappedGameProfile gameProfile) { @@ -871,27 +897,7 @@ public class ReflectionManager { } private static String getLocation(String pack, String className) { - String toReturn = classLocations.get(className); - - if (toReturn != null) { - return toReturn; - } - - try { - ArrayList classes = ClassGetter.getEntriesForPackage(pack); - - String realLocation = classes.stream().filter(s -> s.endsWith("/" + className + ".class")).findAny().get().replace("/", ".").replace(".class", ""); - - classLocations.put(className, realLocation); - - return realLocation; - } catch (Throwable throwable) { - // System.err.println(pack + " - " + className); - // throwable.printStackTrace(); - classLocations.put(className, className); - } - - return className; + return ClassMappings.getClass(pack, className); } public static Class getNmsClass(String className) { @@ -930,6 +936,10 @@ public class ReflectionManager { } public static Object getNmsEntity(Entity entity) { + if (nmsReflection != null) { + return nmsReflection.getNmsEntity(entity); + } + try { return getNmsEntityMethod.invoke(entity); } catch (Exception ex) { @@ -957,6 +967,10 @@ public class ReflectionManager { } public static Object getNmsItem(ItemStack itemstack) { + if (nmsReflection != null) { + return nmsReflection.getNmsItem(itemstack); + } + try { return itemAsNmsCopyMethod.invoke(null, itemstack); } catch (Exception e) { @@ -1001,6 +1015,10 @@ public class ReflectionManager { } public static double getPing(Player player) { + if (nmsReflection != null) { + return nmsReflection.getPing(player); + } + try { return pingField.getInt(ReflectionManager.getNmsEntity(player)); } catch (Exception ex) { @@ -1011,6 +1029,10 @@ public class ReflectionManager { } public static float[] getSize(Entity entity) { + if (nmsReflection != null) { + return nmsReflection.getSize(entity); + } + try { if (NmsVersion.v1_14.isSupported()) { Object size = getNmsField("Entity", "size").get(getNmsEntity(entity)); @@ -1035,6 +1057,10 @@ public class ReflectionManager { } public static WrappedGameProfile getSkullBlob(WrappedGameProfile gameProfile) { + if (nmsReflection != null) { + return nmsReflection.getSkullBlob(gameProfile); + } + try { Object minecraftServer = getMinecraftServer(); @@ -1055,10 +1081,15 @@ public class ReflectionManager { } public static Float getSoundModifier(Object entity) { + if (nmsReflection != null) { + return nmsReflection.getSoundModifier(entity); + } + try { return (Float) damageAndIdleSoundMethod.invoke(entity); } catch (Exception ignored) { } + return null; } @@ -1069,24 +1100,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 (nmsReflection != null) { + nmsReflection.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 +1131,11 @@ public class ReflectionManager { } public static void setBoundingBox(Entity entity, FakeBoundingBox newBox) { + if (nmsReflection != null) { + nmsReflection.setBoundingBox(entity, newBox.getX(), newBox.getY(), newBox.getZ()); + return; + } + try { Location loc = entity.getLocation(); @@ -1108,6 +1149,10 @@ public class ReflectionManager { } public static Enum getSoundCategory(String category) { + if (nmsReflection != null) { + return nmsReflection.getSoundCategory(category); + } + return soundCategories.get(category); } @@ -1136,6 +1181,10 @@ public class ReflectionManager { * @return null if the equipment slot is null */ public static Enum createEnumItemSlot(EquipmentSlot slot) { + if (nmsReflection != null) { + return nmsReflection.createEnumItemSlot(slot); + } + switch (slot) { case HAND: return enumItemSlots[0]; @@ -1213,6 +1262,10 @@ public class ReflectionManager { } public static Object getSoundString(Sound sound) { + if (nmsReflection != null) { + return nmsReflection.getSoundString(sound); + } + try { if (soundGetMethod == null) { return soundEffectGetKey.get(soundEffectGetMethod.invoke(null, sound)).toString(); @@ -1257,6 +1310,9 @@ public class ReflectionManager { public static Object convertInvalidMeta(Object value) { if (value instanceof Optional) { Optional opt = (Optional) value; + if (nmsReflection != null) { + return nmsReflection.convertOptional(opt); + } if (!opt.isPresent()) { return NmsVersion.v1_13.isSupported() ? value : com.google.common.base.Optional.absent(); @@ -1298,6 +1354,9 @@ public class ReflectionManager { } } else if (value instanceof Vector3F) { Vector3F angle = (Vector3F) value; + if (nmsReflection != null) { + return nmsReflection.convertVec3(angle); + } try { return vector3FConstructor.newInstance(angle.getX(), angle.getY(), angle.getZ()); @@ -1306,6 +1365,9 @@ public class ReflectionManager { } } else if (value instanceof EulerAngle) { EulerAngle angle = (EulerAngle) value; + if (nmsReflection != null) { + return nmsReflection.convertVec3(angle); + } try { return vector3FConstructor.newInstance((float) angle.getX(), (float) angle.getY(), (float) angle.getZ()); @@ -1313,6 +1375,10 @@ public class ReflectionManager { ex.printStackTrace(); } } else if (value instanceof Direction) { + if (nmsReflection != null) { + return nmsReflection.convertDirection((Direction) value); + } + try { return enumDirectionFrom.invoke(null, ((Direction) value).ordinal()); } catch (Exception ex) { @@ -1320,6 +1386,9 @@ public class ReflectionManager { } } else if (value instanceof BlockPosition) { BlockPosition pos = (BlockPosition) value; + if (nmsReflection != null) { + return nmsReflection.getBlockPosition(pos.getX(), pos.getY(), pos.getZ()); + } try { return blockPositionConstructor.newInstance(pos.getX(), pos.getY(), pos.getZ()); @@ -1346,6 +1415,10 @@ public class ReflectionManager { } public static Material getMaterial(String name) { + if (nmsReflection != null) { + return nmsReflection.getMaterial(name); + } + try { if (!NmsVersion.v1_13.isSupported()) { Method toMinecraft = getCraftMethod("CraftMagicNumbers", "getMaterialFromInternalName", String.class); @@ -1357,7 +1430,7 @@ public class ReflectionManager { Object mcKey = getNmsConstructor("MinecraftKey", String.class).newInstance(name); - Object registry = getNmsField("IRegistry", NmsVersion.v1_17.isSupported() ? "Z" : "ITEM").get(null); + Object registry = getNmsField("IRegistry", "ITEM").get(null); Method getMethod = getNmsMethod(getNmsClass("RegistryMaterials"), "get", mcKey.getClass()); Object item = getMethod.invoke(registry, mcKey); @@ -1382,6 +1455,10 @@ public class ReflectionManager { } public static String getItemName(Material material) { + if (nmsReflection != null) { + return nmsReflection.getItemName(material); + } + try { Object item = getCraftMethod("CraftMagicNumbers", "getItem", Material.class).invoke(null, material); @@ -1392,7 +1469,7 @@ public class ReflectionManager { Object registry; if (NmsVersion.v1_13.isSupported()) { - registry = getNmsField("IRegistry", NmsVersion.v1_17.isSupported() ? "Z" : "ITEM").get(null); + registry = getNmsField("IRegistry", "ITEM").get(null); } else { registry = getNmsField("Item", "REGISTRY").get(null); } @@ -1414,6 +1491,10 @@ public class ReflectionManager { } public static Object getNmsVillagerData(VillagerData data) { + if (nmsReflection != null) { + return nmsReflection.getNmsVillagerData(data.getType(), data.getProfession()); + } + Object type = getVillagerType(data.getType()); Object profession = getVillagerProfession(data.getProfession()); @@ -1427,6 +1508,10 @@ public class ReflectionManager { } public static Object getVillagerType(Villager.Type type) { + if (nmsReflection != null) { + return nmsReflection.getVillagerType(type); + } + try { Object mcKey = bukkitKeyToNms.invoke(null, type.getKey()); @@ -1463,6 +1548,10 @@ public class ReflectionManager { } public static Object getVillagerProfession(Villager.Profession profession) { + if (nmsReflection != null) { + return nmsReflection.getVillagerProfession(profession); + } + try { Object mcKey = bukkitKeyToNms.invoke(null, profession.getKey()); @@ -1498,6 +1587,10 @@ public class ReflectionManager { public static Object createDataWatcherItem(MetaIndex id, Object value) { WrappedDataWatcherObject watcherObject = createDataWatcherObject(id, value); + if (nmsReflection != null) { + return nmsReflection.createDataWatcherItem(watcherObject, convertInvalidMeta(value)); + } + try { return dataWatcherItemConstructor.newInstance(watcherObject.getHandle(), convertInvalidMeta(value)); } catch (InstantiationException | IllegalAccessException | InvocationTargetException e) { @@ -1509,6 +1602,10 @@ public class ReflectionManager { @Deprecated public static Object createSoundEffect(String minecraftKey) { + if (nmsReflection != null) { + return nmsReflection.createSoundEffect(minecraftKey); + } + try { return getNmsConstructor("SoundEffect", getNmsClass("MinecraftKey")).newInstance(createMinecraftKey(minecraftKey)); } catch (Exception ex) { @@ -1519,6 +1616,10 @@ public class ReflectionManager { } public static Object createMinecraftKey(String name) { + if (nmsReflection != null) { + return nmsReflection.createMinecraftKey(name); + } + try { return getNmsConstructor("MinecraftKey", String.class).newInstance(name); } catch (Exception ex) { @@ -1529,6 +1630,10 @@ public class ReflectionManager { } public static Object getVec3D(Vector vector) { + if (nmsReflection != null) { + return nmsReflection.getVec3D(vector); + } + try { return vec3DConstructor.newInstance(vector.getX(), vector.getY(), vector.getZ()); } catch (Exception ex) { @@ -1539,6 +1644,10 @@ public class ReflectionManager { } public static Object getEntityType(EntityType entityType) { + if (nmsReflection != null) { + return nmsReflection.getEntityType(entityType); + } + try { Object val = entityTypesAMethod.invoke(null, entityType.getName() == null ? entityType.name().toLowerCase(Locale.ENGLISH) : entityType.getName()); @@ -1555,12 +1664,16 @@ public class ReflectionManager { } public static Object registerEntityType(NamespacedKey key) { + if (nmsReflection != null) { + return nmsReflection.registerEntityType(key); + } + try { Object mcKey = getNmsConstructor("MinecraftKey", String.class).newInstance(key.toString()); Class typesClass = getNmsClass("IRegistry"); - Object registry = typesClass.getField(NmsVersion.v1_17.isSupported() ? "Y" : "ENTITY_TYPE").get(null); + Object registry = typesClass.getField("ENTITY_TYPE").get(null); Constructor c = getNmsClass("EntityTypes").getConstructors()[0]; @@ -1594,12 +1707,16 @@ public class ReflectionManager { } public static int getEntityTypeId(Object entityTypes) { + if (nmsReflection != null) { + return nmsReflection.getEntityTypeId(entityTypes); + } + try { Class typesClass = getNmsClass("IRegistry"); - Object registry = typesClass.getField(NmsVersion.v1_17.isSupported() ? "Y" : "ENTITY_TYPE").get(null); + Object registry = typesClass.getField("ENTITY_TYPE").get(null); - return (int) registry.getClass().getMethod(NmsVersion.v1_17.isSupported() ? "getId" : "a", Object.class).invoke(registry, entityTypes); + return (int) registry.getClass().getMethod("a", Object.class).invoke(registry, entityTypes); } catch (Exception ex) { ex.printStackTrace(); } @@ -1608,15 +1725,19 @@ public class ReflectionManager { } public static int getEntityTypeId(EntityType entityType) { + if (nmsReflection != null) { + return nmsReflection.getEntityTypeId(entityType); + } + try { if (NmsVersion.v1_13.isSupported()) { Object entityTypes = getEntityType(entityType); Class typesClass = getNmsClass("IRegistry"); - Object registry = typesClass.getField(NmsVersion.v1_17.isSupported() ? "Y" : "ENTITY_TYPE").get(null); + Object registry = typesClass.getField("ENTITY_TYPE").get(null); - return (int) registry.getClass().getMethod(NmsVersion.v1_17.isSupported() ? "getId" : "a", Object.class).invoke(registry, entityTypes); + return (int) registry.getClass().getMethod("a", Object.class).invoke(registry, entityTypes); } return entityType.getTypeId(); @@ -1628,13 +1749,17 @@ public class ReflectionManager { } public static Object getEntityType(NamespacedKey name) { + if (nmsReflection != null) { + return nmsReflection.getEntityType(name); + } + try { Class typesClass = getNmsClass("IRegistry"); - Object registry = typesClass.getField(NmsVersion.v1_17.isSupported() ? "Y" : "ENTITY_TYPE").get(null); + Object registry = typesClass.getField("ENTITY_TYPE").get(null); Object mcKey = getNmsConstructor("MinecraftKey", String.class).newInstance(name.toString()); - return registry.getClass().getMethod(NmsVersion.v1_17.isSupported() ? "getId" : "a", mcKey.getClass()).invoke(registry, mcKey); + return registry.getClass().getMethod("a", mcKey.getClass()).invoke(registry, mcKey); } catch (Exception ex) { ex.printStackTrace(); } @@ -1643,6 +1768,10 @@ public class ReflectionManager { } public static Object getNmsEntityPose(EntityPose entityPose) { + if (nmsReflection != null) { + return nmsReflection.getNmsEntityPose(entityPose == EntityPose.SNEAKING && NmsVersion.v1_15.isSupported() ? "CROUCHING" : entityPose.name()); + } + return Enum.valueOf(entityPoseClass, entityPose == EntityPose.SNEAKING && NmsVersion.v1_15.isSupported() ? "CROUCHING" : entityPose.name()); } @@ -1662,6 +1791,10 @@ public class ReflectionManager { } public static int getCombinedIdByBlockData(BlockData data) { + if (nmsReflection != null) { + return nmsReflection.getCombinedIdByBlockData(data); + } + try { Object iBlockData = craftBlockDataGetState.invoke(data); @@ -1674,6 +1807,10 @@ public class ReflectionManager { } public static int getCombinedIdByItemStack(ItemStack itemStack) { + if (nmsReflection != null) { + return nmsReflection.getCombinedIdByItemStack(itemStack); + } + try { if (!NmsVersion.v1_13.isSupported()) { return itemStack.getType().ordinal() + (itemStack.getDurability() << 12); @@ -1692,6 +1829,10 @@ public class ReflectionManager { } public static BlockData getBlockDataByCombinedId(int id) { + if (nmsReflection != null) { + return nmsReflection.getBlockDataByCombinedId(id); + } + try { Method idMethod = getNmsMethod("Block", "getByCombinedId", int.class); Object iBlockData = idMethod.invoke(null, id); @@ -1706,6 +1847,10 @@ public class ReflectionManager { } public static ItemStack getItemStackByCombinedId(int id) { + if (nmsReflection != null) { + return nmsReflection.getItemStackByCombinedId(id); + } + try { Method idMethod = getNmsMethod("Block", "getByCombinedId", int.class); Object iBlockData = idMethod.invoke(null, id); @@ -1730,6 +1875,10 @@ public class ReflectionManager { } public static Object getWorldServer(World w) { + if (nmsReflection != null) { + return nmsReflection.getWorldServer(w); + } + try { return getNmsWorld.invoke(w); } catch (IllegalAccessException | InvocationTargetException e) { @@ -1740,6 +1889,10 @@ public class ReflectionManager { } public static ItemMeta getDeserializedItemMeta(Map meta) { + if (nmsReflection != null) { + return nmsReflection.getDeserializedItemMeta(meta); + } + try { return (ItemMeta) deserializedItemMeta.invoke(null, meta); } catch (Exception e) { @@ -2014,7 +2167,8 @@ public class ReflectionManager { return; } - Object nmsEntity = ReflectionManager.createEntityInstance(disguiseType, nmsEntityName); + Object nmsEntity = ReflectionManager.createEntityInstance(disguiseType, + nmsReflection != null ? disguiseType.getEntityType().getKey().getKey() : nmsEntityName); if (nmsEntity == null) { DisguiseUtilities.getLogger().warning("Entity not found! (" + nmsEntityName + ")"); 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 98% 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 index ec49c200..57cef9d5 100644 --- a/src/main/java/me/libraryaddict/disguise/utilities/sounds/SoundManager.java +++ b/plugin/src/main/java/me/libraryaddict/disguise/utilities/sounds/SoundManager.java @@ -24,8 +24,6 @@ public class SoundManager { loadSounds(); loadCustomSounds(); - - ParamInfoManager.getParamInfoSoundGroup().recalculate(); } private void loadCustomSounds() { diff --git a/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 97% 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..7e961ed4 100644 --- a/src/main/java/me/libraryaddict/disguise/utilities/watchers/CompileMethods.java +++ b/plugin/src/main/java/me/libraryaddict/disguise/utilities/watchers/CompileMethods.java @@ -65,7 +65,7 @@ public class CompileMethods { list.add(sound.toString()); } - File soundsFile = new File("target/classes/ANTI_PIRACY_SECRET_FILE"); + File soundsFile = new File("plugin/target/classes/ANTI_PIRACY_SECRET_FILE"); try (FileOutputStream fos = new FileOutputStream(soundsFile)) { byte[] array = String.join("\n", list).getBytes(StandardCharsets.UTF_8); @@ -156,7 +156,7 @@ public class CompileMethods { } } - File methodsFile = new File("target/classes/ANTI_PIRACY_ENCRYPTION"); + File methodsFile = new File("plugin/target/classes/ANTI_PIRACY_ENCRYPTION"); try (FileOutputStream fos = new FileOutputStream(methodsFile)) { byte[] array = String.join("\n", methods).getBytes(StandardCharsets.UTF_8); diff --git a/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..668346eb 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,14 @@ LibsDisguises LibsDisguises + pom 10.0.26-SNAPSHOT + + shared + v1_17_R1 + v1_18_R1 + plugin + unknown @@ -17,7 +24,7 @@ 1.18.22 4.7.0 - 1.17-R0.1-SNAPSHOT + 1.18.1-R0.1-SNAPSHOT 4.13.2 1.16.5-R0.1-SNAPSHOT 1.12-SNAPSHOT @@ -26,168 +33,51 @@ 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 + + + md_5-releases https://repo.md-5.net/content/groups/public/ + spigot-repo https://hub.spigotmc.org/nexus/content/repositories/snapshots/ + papermc https://papermc.io/repo/repository/maven-public/ + + + + lumine + https://mvn.lumine.io/repository/maven-public/ + + dmulloy2-repo https://repo.dmulloy2.net/nexus/repository/public/ diff --git a/shared/pom.xml b/shared/pom.xml new file mode 100644 index 00000000..276d8016 --- /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..9a1ef310 --- /dev/null +++ b/shared/src/main/java/me/libraryaddict/disguise/utilities/reflection/ReflectionManagerAbstract.java @@ -0,0 +1,153 @@ +package me.libraryaddict.disguise.utilities.reflection; + +import com.comphenix.protocol.wrappers.EnumWrappers; +import com.comphenix.protocol.wrappers.WrappedDataWatcher; +import com.comphenix.protocol.wrappers.WrappedGameProfile; +import com.mojang.authlib.ProfileLookupCallback; +import org.bukkit.*; +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; +import java.util.UUID; + +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); + + Object createDataWatcherItem(WrappedDataWatcher.WrappedDataWatcherObject wrappedDataWatcherObject, T metaItem); + + @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); + + static WrappedGameProfile getGameProfile(UUID uuid, String playerName) { + try { + return new WrappedGameProfile(uuid, playerName == null || playerName.length() < 17 ? playerName : playerName.substring(0, 16)); + } catch (Exception ex) { + ex.printStackTrace(); + } + return null; + } +} diff --git a/v1_17_R1/pom.xml b/v1_17_R1/pom.xml new file mode 100644 index 00000000..aa31a07c --- /dev/null +++ b/v1_17_R1/pom.xml @@ -0,0 +1,81 @@ + + + + LibsDisguises + LibsDisguises + 10.0.26-SNAPSHOT + ../pom.xml + + + 4.0.0 + + v1_17_R1 + + + + org.spigotmc + spigot + 1.17.1-R0.1-SNAPSHOT + remapped-mojang + provided + + + org.spigotmc + spigot-api + 1.17.1-R0.1-SNAPSHOT + provided + + + LibsDisguises + shared + ${project.version} + + + com.comphenix.protocol + ProtocolLib + + + + + + + net.md-5 + specialsource-maven-plugin + 1.2.2 + + + package + + remap + + remap-obf + + org.spigotmc:minecraft-server:1.17.1-R0.1-SNAPSHOT:txt:maps-mojang + true + org.spigotmc:spigot:1.17.1-R0.1-SNAPSHOT:jar:remapped-mojang + true + remapped-obf + + + + package + + remap + + remap-spigot + + ${project.build.directory}/${project.artifactId}-${project.version}-remapped-obf.jar + org.spigotmc:minecraft-server:1.17.1-R0.1-SNAPSHOT:csrg:maps-spigot + org.spigotmc:spigot:1.17.1-R0.1-SNAPSHOT:jar:remapped-obf + true + remapped-spigot + + + + + + + + \ No newline at end of file diff --git a/v1_17_R1/src/main/java/me/libraryaddict/disguise/utilities/reflection/v1_17/ReflectionManager.java b/v1_17_R1/src/main/java/me/libraryaddict/disguise/utilities/reflection/v1_17/ReflectionManager.java new file mode 100644 index 00000000..f2af28c1 --- /dev/null +++ b/v1_17_R1/src/main/java/me/libraryaddict/disguise/utilities/reflection/v1_17/ReflectionManager.java @@ -0,0 +1,447 @@ +package me.libraryaddict.disguise.utilities.reflection.v1_17; + +import com.comphenix.protocol.wrappers.*; +import com.comphenix.protocol.wrappers.EnumWrappers.Direction; +import com.mojang.authlib.Agent; +import com.mojang.authlib.GameProfile; +import com.mojang.authlib.ProfileLookupCallback; +import com.mojang.authlib.minecraft.MinecraftSessionService; +import me.libraryaddict.disguise.utilities.reflection.ReflectionManagerAbstract; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Registry; +import net.minecraft.core.Vector3f; +import net.minecraft.network.chat.TextComponent; +import net.minecraft.network.protocol.game.ClientboundPlayerInfoPacket; +import net.minecraft.network.syncher.EntityDataAccessor; +import net.minecraft.network.syncher.SynchedEntityData; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.server.dedicated.DedicatedServer; +import net.minecraft.server.level.*; +import net.minecraft.server.network.ServerGamePacketListenerImpl; +import net.minecraft.server.network.ServerPlayerConnection; +import net.minecraft.sounds.SoundEvent; +import net.minecraft.sounds.SoundSource; +import net.minecraft.world.damagesource.DamageSource; +import net.minecraft.world.effect.MobEffect; +import net.minecraft.world.effect.MobEffectInstance; +import net.minecraft.world.entity.EntityDimensions; +import net.minecraft.world.entity.LivingEntity; +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_17_R1.CraftArt; +import org.bukkit.craftbukkit.v1_17_R1.CraftServer; +import org.bukkit.craftbukkit.v1_17_R1.CraftSound; +import org.bukkit.craftbukkit.v1_17_R1.CraftWorld; +import org.bukkit.craftbukkit.v1_17_R1.block.data.CraftBlockData; +import org.bukkit.craftbukkit.v1_17_R1.entity.CraftEntity; +import org.bukkit.craftbukkit.v1_17_R1.entity.CraftPlayer; +import org.bukkit.craftbukkit.v1_17_R1.inventory.CraftItemStack; +import org.bukkit.craftbukkit.v1_17_R1.util.CraftMagicNumbers; +import org.bukkit.craftbukkit.v1_17_R1.util.CraftNamespacedKey; +import org.bukkit.entity.Entity; +import org.bukkit.entity.EntityType; +import org.bukkit.entity.Player; +import org.bukkit.entity.Villager; +import org.bukkit.inventory.EquipmentSlot; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.ItemMeta; +import org.bukkit.potion.PotionEffect; +import org.bukkit.util.EulerAngle; +import org.bukkit.util.Vector; + +import java.lang.reflect.Field; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; +import java.util.*; +import java.util.concurrent.atomic.AtomicInteger; + +public class ReflectionManager implements ReflectionManagerAbstract { + public boolean hasInvul(Entity entity) { + net.minecraft.world.entity.Entity nmsEntity = ((CraftEntity) entity).getHandle(); + + if (nmsEntity instanceof net.minecraft.world.entity.LivingEntity) { + return nmsEntity.invulnerableTime > 0; + } else { + return nmsEntity.isInvulnerableTo(DamageSource.GENERIC); + } + } + + public int getIncrementedStateId(Player player) { + ServerPlayer serverPlayer = ((CraftPlayer) player).getHandle(); + return serverPlayer.containerMenu.incrementStateId(); // TODO Check correct container + } + + public int getNewEntityId() { + return getNewEntityId(true); + } + + public int getNewEntityId(boolean increment) { + try { + Field entityCounter = net.minecraft.world.entity.Entity.class.getDeclaredField("b"); + entityCounter.setAccessible(true); + AtomicInteger atomicInteger = (AtomicInteger) entityCounter.get(null); + if (increment) { + return atomicInteger.incrementAndGet(); + } else { + return atomicInteger.get(); + } + } catch (ReflectiveOperationException e) { + e.printStackTrace(); + } + + return -1; + } + + public ServerGamePacketListenerImpl getPlayerConnectionOrPlayer(Player player) { + return ((CraftPlayer) player).getHandle().connection; + } + + public net.minecraft.world.entity.Entity createEntityInstance(String entityName) { + Optional> optional = net.minecraft.world.entity.EntityType.byString(entityName.toLowerCase(Locale.ROOT)); + if (optional.isPresent()) { + net.minecraft.world.entity.EntityType entityType = optional.get(); + ServerLevel world = getWorldServer(Bukkit.getWorlds().get(0)); + net.minecraft.world.entity.Entity entity; + if (entityType == net.minecraft.world.entity.EntityType.PLAYER) { + WrappedGameProfile gameProfile = ReflectionManagerAbstract.getGameProfile(new UUID(0, 0), "Steve"); + entity = new ServerPlayer(getMinecraftServer(), world, (GameProfile) gameProfile.getHandle()); + }/* else if (entityType == net.minecraft.world.entity.EntityType.ENDER_PEARL) { + entity = new ThrownEnderpearl(world, (net.minecraft.world.entity.LivingEntity) createEntityInstance("cow")); + } else if (entityType == net.minecraft.world.entity.EntityType.FISHING_BOBBER) { + entity = new FishingHook((net.minecraft.world.entity.player.Player) createEntityInstance("player"), world, 0, 0); + }*/ else { + entity = entityType.create(world); + } + + // Workaround for paper being 2 smart 4 me + entity.setPos(1.0, 1.0, 1.0); + entity.setPos(0.0, 0.0, 0.0); + return entity; + } + + return null; + } + + public MobEffect getMobEffectList(int id) { + return MobEffect.byId(id); + } + + public MobEffectInstance createMobEffect(PotionEffect effect) { + return createMobEffect(effect.getType().getId(), effect.getDuration(), effect.getAmplifier(), effect.isAmbient(), effect.hasParticles()); + } + + public MobEffectInstance createMobEffect(int id, int duration, int amplification, boolean ambient, boolean particles) { + return new MobEffectInstance(getMobEffectList(id), duration, amplification, ambient, particles); + } + + public AABB getBoundingBox(Entity entity) { + return ((CraftEntity) entity).getHandle().getBoundingBox(); + } + + public double getXBoundingBox(Entity entity) { + return getBoundingBox(entity).maxX - getBoundingBox(entity).minX; + } + + public double getYBoundingBox(Entity entity) { + return getBoundingBox(entity).maxY - getBoundingBox(entity).minY; + } + + public double getZBoundingBox(Entity entity) { + return getBoundingBox(entity).maxZ - getBoundingBox(entity).minZ; + } + + public ServerPlayer getPlayerFromPlayerConnection(Object nmsEntity) { + return ((ServerPlayerConnection) nmsEntity).getPlayer(); + } + + public Entity getBukkitEntity(Object nmsEntity) { + return ((net.minecraft.world.entity.Entity) nmsEntity).getBukkitEntity(); + } + + public ItemStack getBukkitItem(Object nmsItem) { + return CraftItemStack.asBukkitCopy((net.minecraft.world.item.ItemStack) nmsItem); + } + + public ItemStack getCraftItem(ItemStack bukkitItem) { + return CraftItemStack.asCraftCopy(bukkitItem); + } + + public SoundEvent getCraftSound(Sound sound) { + return CraftSound.getSoundEffect(sound); + } + + public ServerEntity getEntityTrackerEntry(Entity target) throws Exception { + ServerLevel world = ((CraftWorld) target.getWorld()).getHandle(); + ServerChunkCache chunkSource = world.getChunkProvider(); + ChunkMap chunkMap = chunkSource.chunkMap; + Map entityMap = chunkMap.G; + ChunkMap.TrackedEntity trackedEntity = entityMap.get(target.getEntityId()); + if (trackedEntity == null) { + return null; + } + + Field field = ChunkMap.TrackedEntity.class.getDeclaredField("b"); + field.setAccessible(true); + + return (ServerEntity) field.get(trackedEntity); + } + + public DedicatedServer getMinecraftServer() { + return ((CraftServer) Bukkit.getServer()).getServer(); + } + + public String getEnumArt(Art art) { + return Registry.MOTIVE.getKey(CraftArt.BukkitToNotch(art)).getPath(); + } + + public BlockPos getBlockPosition(int x, int y, int z) { + return new BlockPos(x, y, z); + } + + public net.minecraft.core.Direction getEnumDirection(int direction) { + return net.minecraft.core.Direction.from2DDataValue(direction); + } + + public ClientboundPlayerInfoPacket.Action getEnumPlayerInfoAction(int action) { + return ClientboundPlayerInfoPacket.Action.values()[action]; + } + + public ClientboundPlayerInfoPacket.PlayerUpdate getPlayerInfoData(WrappedGameProfile gameProfile) { + return new ClientboundPlayerInfoPacket.PlayerUpdate((GameProfile) gameProfile.getHandle(), 0, GameType.SURVIVAL, + new TextComponent(gameProfile.getName())); + } + + public Object getNmsEntity(Entity entity) { + return ((CraftEntity) entity).getHandle(); + } + + public double getPing(Player player) { + return player.getPing(); + } + + public float[] getSize(Entity entity) { + net.minecraft.world.entity.Entity nmsEntity = ((CraftEntity) entity).getHandle(); + EntityDimensions dimensions = nmsEntity.getDimensions(net.minecraft.world.entity.Pose.STANDING); + return new float[]{dimensions.width, nmsEntity.getEyeHeight()}; + } + + public WrappedGameProfile getSkullBlob(WrappedGameProfile gameProfile) { + DedicatedServer minecraftServer = getMinecraftServer(); + MinecraftSessionService sessionService = minecraftServer.getSessionService(); + return WrappedGameProfile.fromHandle(sessionService.fillProfileProperties((GameProfile) gameProfile.getHandle(), true)); + } + + public Float getSoundModifier(Object entity) { + if (!(entity instanceof net.minecraft.world.entity.LivingEntity)) { + return 0.0f; + } else { + try { + Method method = LivingEntity.class.getDeclaredMethod("getSoundVolume"); + method.setAccessible(true); + + return (Float) method.invoke(entity); + } catch (NoSuchMethodException | InvocationTargetException | IllegalAccessException e) { + e.printStackTrace(); + } + } + + return 0f; + } + + public void injectCallback(String playername, ProfileLookupCallback callback) { + Agent agent = Agent.MINECRAFT; + getMinecraftServer().getProfileRepository().findProfilesByNames(new String[]{playername}, agent, callback); + } + + public void setBoundingBox(Entity entity, double x, double y, double z) { + Location loc = entity.getLocation(); + ((CraftEntity) entity).getHandle().setBoundingBox( + new AABB(loc.getX() - x / 2, loc.getY() - y / 2, loc.getZ() - z / 2, loc.getX() + x / 2, loc.getY() + y / 2, loc.getZ() + z / 2)); + } + + public Enum getSoundCategory(String category) { + return Arrays.stream(SoundSource.values()).filter(soundSource -> category.equalsIgnoreCase(soundSource.getName())).findAny().get(); + } + + /** + * Creates the NMS object EnumItemSlot from an EquipmentSlot. + * + * @param slot + * @return null if the equipment slot is null + */ + public Enum createEnumItemSlot(EquipmentSlot slot) { + switch (slot) { + case HAND: + return net.minecraft.world.entity.EquipmentSlot.MAINHAND; + case OFF_HAND: + return net.minecraft.world.entity.EquipmentSlot.OFFHAND; + case FEET: + return net.minecraft.world.entity.EquipmentSlot.FEET; + case LEGS: + return net.minecraft.world.entity.EquipmentSlot.LEGS; + case CHEST: + return net.minecraft.world.entity.EquipmentSlot.CHEST; + case HEAD: + return net.minecraft.world.entity.EquipmentSlot.HEAD; + default: + return null; + } + } + + public Object getSoundString(Sound sound) { + return CraftSound.getSoundEffect(sound).getLocation().toString(); // TODO + } + + public Optional convertOptional(Object val) { + if (val instanceof BlockPosition) { + BlockPosition pos = (BlockPosition) val; + return Optional.of(getBlockPosition(pos.getX(), pos.getY(), pos.getZ())); + } else if (val instanceof WrappedBlockData) { + Object obj = ((WrappedBlockData) val).getHandle(); + return Optional.of(obj); + } else if (val instanceof ItemStack) { + Object obj = getNmsItem((ItemStack) val); + return Optional.of(obj); + } else if (val instanceof WrappedChatComponent) { + Object obj = ((WrappedChatComponent) val).getHandle(); + return Optional.of(obj); + } + + return Optional.empty(); + } + + public Vector3f convertVec3(Object object) { + if (object instanceof Vector3F) { + Vector3F vector3F = (Vector3F) object; + return new Vector3f(vector3F.getX(), vector3F.getY(), vector3F.getZ()); + } else if (object instanceof EulerAngle) { + EulerAngle eulerAngle = (EulerAngle) object; + return new Vector3f((float) eulerAngle.getX(), (float) eulerAngle.getY(), (float) eulerAngle.getZ()); + } + + return null; + } + + public net.minecraft.core.Direction convertDirection(Direction direction) { + return net.minecraft.core.Direction.from3DDataValue(direction.ordinal()); + } + + public Material getMaterial(String name) { + return CraftMagicNumbers.INSTANCE.getMaterial(name, CraftMagicNumbers.INSTANCE.getDataVersion()); + } + + public String getItemName(Material material) { + return Registry.ITEM.getKey(CraftMagicNumbers.getItem(material)).getPath(); + } + + public net.minecraft.world.item.ItemStack getNmsItem(ItemStack itemStack) { + return CraftItemStack.asNMSCopy(itemStack); + } + + public VillagerData getNmsVillagerData(Villager.Type villagerType, Villager.Profession villagerProfession) { + VillagerType nmsVillagerType = Registry.VILLAGER_TYPE.get(CraftNamespacedKey.toMinecraft(villagerType.getKey())); + VillagerProfession nmsVillagerProfession = Registry.VILLAGER_PROFESSION.get(CraftNamespacedKey.toMinecraft(villagerProfession.getKey())); + + return new net.minecraft.world.entity.npc.VillagerData(nmsVillagerType, nmsVillagerProfession, 1); + } + + public VillagerType getVillagerType(Villager.Type type) { + return Registry.VILLAGER_TYPE.get(CraftNamespacedKey.toMinecraft(type.getKey())); + } + + public VillagerProfession getVillagerProfession(Villager.Profession profession) { + return Registry.VILLAGER_PROFESSION.get(CraftNamespacedKey.toMinecraft(profession.getKey())); + } + + public SynchedEntityData.DataItem createDataWatcherItem(WrappedDataWatcher.WrappedDataWatcherObject wrappedDataWatcherObject, T metaItem) { + return new SynchedEntityData.DataItem<>((EntityDataAccessor) wrappedDataWatcherObject.getHandle(), metaItem); + } + + @Deprecated + public SoundEvent createSoundEffect(String minecraftKey) { + return new SoundEvent(new ResourceLocation(minecraftKey)); + } + + @Override + public ResourceLocation createMinecraftKey(String name) { + return new ResourceLocation(name); + } + + public Vec3 getVec3D(Vector vector) { + return new Vec3(vector.getX(), vector.getY(), vector.getZ()); + } + + public net.minecraft.world.entity.EntityType getEntityType(EntityType entityType) { + return net.minecraft.world.entity.EntityType.byString( + entityType.getName() == null ? entityType.name().toLowerCase(Locale.ENGLISH) : entityType.getName()).orElse(null); + } + + public Object registerEntityType(NamespacedKey key) { + net.minecraft.world.entity.EntityType newEntity = + new net.minecraft.world.entity.EntityType<>(null, null, false, false, false, false, null, null, 0, 0); + Registry.register(Registry.ENTITY_TYPE, CraftNamespacedKey.toMinecraft(key), newEntity); + newEntity.getDescriptionId(); + return newEntity; // TODO ??? Some reflection in legacy that I'm unsure about + } + + public int getEntityTypeId(Object entityTypes) { + net.minecraft.world.entity.EntityType entityType = (net.minecraft.world.entity.EntityType) entityTypes; + return Registry.ENTITY_TYPE.getId(entityType); + } + + public int getEntityTypeId(EntityType entityType) { + return getEntityTypeId(getEntityType(entityType)); + } + + public Object getEntityType(NamespacedKey name) { + return Registry.ENTITY_TYPE.get(CraftNamespacedKey.toMinecraft(name)); + } + + public Object getNmsEntityPose(String enumPose) { + return net.minecraft.world.entity.Pose.valueOf(enumPose); + } + + public int getCombinedIdByBlockData(BlockData data) { + BlockState state = ((CraftBlockData) data).getState(); + return Block.getId(state); + } + + public int getCombinedIdByItemStack(ItemStack itemStack) { + Block block = CraftMagicNumbers.getBlock(itemStack.getType()); + return Block.getId(block.defaultBlockState()); + } + + public BlockData getBlockDataByCombinedId(int id) { + return CraftBlockData.fromData(Block.stateById(id)); + } + + public ItemStack getItemStackByCombinedId(int id) { + return new ItemStack(CraftMagicNumbers.getMaterial(Block.stateById(id).getBlock())); + } + + public ServerLevel getWorldServer(World w) { + return ((CraftWorld) w).getHandle(); + } + + public ItemMeta getDeserializedItemMeta(Map meta) { + try { + Class aClass = Class.forName("org.bukkit.craftbukkit.v1_17_R1.inventory.CraftMetaItem$SerializableMeta"); + Method deserialize = aClass.getDeclaredMethod("deserialize", Map.class); + Object itemMeta = deserialize.invoke(null, meta); + + return (ItemMeta) itemMeta; + } catch (Exception e) { + e.printStackTrace(); + } + + return null; + } +} diff --git a/v1_18_R1/pom.xml b/v1_18_R1/pom.xml new file mode 100644 index 00000000..a1704fdc --- /dev/null +++ b/v1_18_R1/pom.xml @@ -0,0 +1,80 @@ + + + + LibsDisguises + LibsDisguises + 10.0.26-SNAPSHOT + ../pom.xml + + + 4.0.0 + v1_18_R1 + + + + org.spigotmc + spigot + 1.18.1-R0.1-SNAPSHOT + remapped-mojang + provided + + + org.spigotmc + spigot-api + 1.18.1-R0.1-SNAPSHOT + provided + + + LibsDisguises + shared + ${project.version} + + + com.comphenix.protocol + ProtocolLib + + + + + + + net.md-5 + specialsource-maven-plugin + 1.2.2 + + + package + + remap + + remap-obf + + org.spigotmc:minecraft-server:1.18.1-R0.1-SNAPSHOT:txt:maps-mojang + true + org.spigotmc:spigot:1.18.1-R0.1-SNAPSHOT:jar:remapped-mojang + true + remapped-obf + + + + package + + remap + + remap-spigot + + ${project.build.directory}/${project.artifactId}-${project.version}-remapped-obf.jar + org.spigotmc:minecraft-server:1.18.1-R0.1-SNAPSHOT:csrg:maps-spigot + org.spigotmc:spigot:1.18.1-R0.1-SNAPSHOT:jar:remapped-obf + true + remapped-spigot + + + + + + + + \ No newline at end of file diff --git a/v1_18_R1/src/main/java/me/libraryaddict/disguise/utilities/reflection/v1_18/ReflectionManager.java b/v1_18_R1/src/main/java/me/libraryaddict/disguise/utilities/reflection/v1_18/ReflectionManager.java new file mode 100644 index 00000000..c6d070d9 --- /dev/null +++ b/v1_18_R1/src/main/java/me/libraryaddict/disguise/utilities/reflection/v1_18/ReflectionManager.java @@ -0,0 +1,447 @@ +package me.libraryaddict.disguise.utilities.reflection.v1_18; + +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.core.Vector3f; +import net.minecraft.network.chat.TextComponent; +import net.minecraft.network.protocol.game.ClientboundPlayerInfoPacket; +import net.minecraft.network.syncher.EntityDataAccessor; +import net.minecraft.network.syncher.SynchedEntityData; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.server.dedicated.DedicatedServer; +import net.minecraft.server.level.*; +import net.minecraft.server.network.ServerGamePacketListenerImpl; +import net.minecraft.server.network.ServerPlayerConnection; +import net.minecraft.sounds.SoundEvent; +import net.minecraft.sounds.SoundSource; +import net.minecraft.world.damagesource.DamageSource; +import net.minecraft.world.effect.MobEffect; +import net.minecraft.world.effect.MobEffectInstance; +import net.minecraft.world.entity.EntityDimensions; +import net.minecraft.world.entity.npc.VillagerData; +import net.minecraft.world.entity.npc.VillagerProfession; +import net.minecraft.world.entity.npc.VillagerType; +import net.minecraft.world.level.GameType; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.phys.AABB; +import net.minecraft.world.phys.Vec3; +import org.bukkit.*; +import org.bukkit.block.data.BlockData; +import org.bukkit.craftbukkit.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.Entity; +import org.bukkit.entity.EntityType; +import org.bukkit.entity.Player; +import org.bukkit.entity.Villager; +import org.bukkit.inventory.EquipmentSlot; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.ItemMeta; +import org.bukkit.potion.PotionEffect; +import org.bukkit.util.EulerAngle; +import org.bukkit.util.Vector; + +import java.lang.reflect.Field; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; +import java.util.*; +import java.util.concurrent.atomic.AtomicInteger; + +public class ReflectionManager implements ReflectionManagerAbstract { + public boolean hasInvul(Entity entity) { + net.minecraft.world.entity.Entity nmsEntity = ((CraftEntity) entity).getHandle(); + + if (nmsEntity instanceof net.minecraft.world.entity.LivingEntity) { + return nmsEntity.invulnerableTime > 0; + } else { + return nmsEntity.isInvulnerableTo(DamageSource.GENERIC); + } + } + + public int getIncrementedStateId(Player player) { + ServerPlayer serverPlayer = ((CraftPlayer) player).getHandle(); + return serverPlayer.containerMenu.incrementStateId(); // TODO Check correct container + } + + public int getNewEntityId() { + return getNewEntityId(true); + } + + public int getNewEntityId(boolean increment) { + try { + Field entityCounter = net.minecraft.world.entity.Entity.class.getDeclaredField("b"); + entityCounter.setAccessible(true); + AtomicInteger atomicInteger = (AtomicInteger) entityCounter.get(null); + if (increment) { + return atomicInteger.incrementAndGet(); + } else { + return atomicInteger.get(); + } + } catch (ReflectiveOperationException e) { + e.printStackTrace(); + } + + return -1; + } + + public ServerGamePacketListenerImpl getPlayerConnectionOrPlayer(Player player) { + return ((CraftPlayer) player).getHandle().connection; + } + + public net.minecraft.world.entity.Entity createEntityInstance(String entityName) { + Optional> optional = net.minecraft.world.entity.EntityType.byString(entityName.toLowerCase(Locale.ROOT)); + if (optional.isPresent()) { + net.minecraft.world.entity.EntityType entityType = optional.get(); + ServerLevel world = getWorldServer(Bukkit.getWorlds().get(0)); + net.minecraft.world.entity.Entity entity; + if (entityType == net.minecraft.world.entity.EntityType.PLAYER) { + WrappedGameProfile gameProfile = ReflectionManagerAbstract.getGameProfile(new UUID(0, 0), "Steve"); + entity = new ServerPlayer(getMinecraftServer(), world, (GameProfile) gameProfile.getHandle()); + }/* else if (entityType == net.minecraft.world.entity.EntityType.ENDER_PEARL) { + entity = new ThrownEnderpearl(world, (net.minecraft.world.entity.LivingEntity) createEntityInstance("cow")); + } else if (entityType == net.minecraft.world.entity.EntityType.FISHING_BOBBER) { + entity = new FishingHook((net.minecraft.world.entity.player.Player) createEntityInstance("player"), world, 0, 0); + }*/ else { + entity = entityType.create(world); + } + + // Workaround for paper being 2 smart 4 me + entity.setPos(1.0, 1.0, 1.0); + entity.setPos(0.0, 0.0, 0.0); + return entity; + } + + return null; + } + + public MobEffect getMobEffectList(int id) { + return MobEffect.byId(id); + } + + public MobEffectInstance createMobEffect(PotionEffect effect) { + return createMobEffect(effect.getType().getId(), effect.getDuration(), effect.getAmplifier(), effect.isAmbient(), effect.hasParticles()); + } + + public MobEffectInstance createMobEffect(int id, int duration, int amplification, boolean ambient, boolean particles) { + return new MobEffectInstance(getMobEffectList(id), duration, amplification, ambient, particles); + } + + public AABB getBoundingBox(Entity entity) { + return ((CraftEntity) entity).getHandle().getBoundingBox(); + } + + public double getXBoundingBox(Entity entity) { + return getBoundingBox(entity).maxX - getBoundingBox(entity).minX; + } + + public double getYBoundingBox(Entity entity) { + return getBoundingBox(entity).maxY - getBoundingBox(entity).minY; + } + + public double getZBoundingBox(Entity entity) { + return getBoundingBox(entity).maxZ - getBoundingBox(entity).minZ; + } + + public ServerPlayer getPlayerFromPlayerConnection(Object nmsEntity) { + return ((ServerPlayerConnection) nmsEntity).getPlayer(); + } + + public Entity getBukkitEntity(Object nmsEntity) { + return ((net.minecraft.world.entity.Entity) nmsEntity).getBukkitEntity(); + } + + public ItemStack getBukkitItem(Object nmsItem) { + return CraftItemStack.asBukkitCopy((net.minecraft.world.item.ItemStack) nmsItem); + } + + public ItemStack getCraftItem(ItemStack bukkitItem) { + return CraftItemStack.asCraftCopy(bukkitItem); + } + + public SoundEvent getCraftSound(Sound sound) { + return CraftSound.getSoundEffect(sound); + } + + public ServerEntity getEntityTrackerEntry(Entity target) throws Exception { + ServerLevel world = ((CraftWorld) target.getWorld()).getHandle(); + ServerChunkCache chunkSource = world.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 { + try { + Method method = net.minecraft.world.entity.LivingEntity.class.getDeclaredMethod("eu"); + method.setAccessible(true); + + return (Float) method.invoke(entity); + } catch (NoSuchMethodException | InvocationTargetException | IllegalAccessException e) { + e.printStackTrace(); + } + } + + return 0f; + } + + public void injectCallback(String playername, ProfileLookupCallback callback) { + Agent agent = Agent.MINECRAFT; + getMinecraftServer().getProfileRepository().findProfilesByNames(new String[]{playername}, agent, callback); + } + + public void setBoundingBox(Entity entity, double x, double y, double z) { + Location loc = entity.getLocation(); + ((CraftEntity) entity).getHandle().setBoundingBox( + new AABB(loc.getX() - x / 2, loc.getY() - y / 2, loc.getZ() - z / 2, loc.getX() + x / 2, loc.getY() + y / 2, loc.getZ() + z / 2)); + } + + public Enum getSoundCategory(String category) { + return Arrays.stream(SoundSource.values()).filter(soundSource -> category.equalsIgnoreCase(soundSource.getName())).findAny().get(); + } + + /** + * Creates the NMS object EnumItemSlot from an EquipmentSlot. + * + * @param slot + * @return null if the equipment slot is null + */ + public Enum createEnumItemSlot(EquipmentSlot slot) { + switch (slot) { + case HAND: + return net.minecraft.world.entity.EquipmentSlot.MAINHAND; + case OFF_HAND: + return net.minecraft.world.entity.EquipmentSlot.OFFHAND; + case FEET: + return net.minecraft.world.entity.EquipmentSlot.FEET; + case LEGS: + return net.minecraft.world.entity.EquipmentSlot.LEGS; + case CHEST: + return net.minecraft.world.entity.EquipmentSlot.CHEST; + case HEAD: + return net.minecraft.world.entity.EquipmentSlot.HEAD; + default: + return null; + } + } + + public Object getSoundString(Sound sound) { + return CraftSound.getSoundEffect(sound).getLocation().toString(); // TODO + } + + public Optional convertOptional(Object val) { + if (val instanceof BlockPosition) { + BlockPosition pos = (BlockPosition) val; + return Optional.of(getBlockPosition(pos.getX(), pos.getY(), pos.getZ())); + } else if (val instanceof WrappedBlockData) { + Object obj = ((WrappedBlockData) val).getHandle(); + return Optional.of(obj); + } else if (val instanceof ItemStack) { + Object obj = getNmsItem((ItemStack) val); + return Optional.of(obj); + } else if (val instanceof WrappedChatComponent) { + Object obj = ((WrappedChatComponent) val).getHandle(); + return Optional.of(obj); + } + + return Optional.empty(); + } + + public Vector3f convertVec3(Object object) { + if (object instanceof Vector3F) { + Vector3F vector3F = (Vector3F) object; + return new Vector3f(vector3F.getX(), vector3F.getY(), vector3F.getZ()); + } else if (object instanceof EulerAngle) { + EulerAngle eulerAngle = (EulerAngle) object; + return new Vector3f((float) eulerAngle.getX(), (float) eulerAngle.getY(), (float) eulerAngle.getZ()); + } + + return null; + } + + public net.minecraft.core.Direction convertDirection(Direction direction) { + return net.minecraft.core.Direction.from3DDataValue(direction.ordinal()); + } + + public Material getMaterial(String name) { + return CraftMagicNumbers.INSTANCE.getMaterial(name, CraftMagicNumbers.INSTANCE.getDataVersion()); + } + + public String getItemName(Material material) { + return Registry.ITEM.getKey(CraftMagicNumbers.getItem(material)).getPath(); + } + + public net.minecraft.world.item.ItemStack getNmsItem(ItemStack itemStack) { + return CraftItemStack.asNMSCopy(itemStack); + } + + public VillagerData getNmsVillagerData(Villager.Type villagerType, Villager.Profession villagerProfession) { + VillagerType nmsVillagerType = Registry.VILLAGER_TYPE.get(CraftNamespacedKey.toMinecraft(villagerType.getKey())); + VillagerProfession nmsVillagerProfession = Registry.VILLAGER_PROFESSION.get(CraftNamespacedKey.toMinecraft(villagerProfession.getKey())); + + return new net.minecraft.world.entity.npc.VillagerData(nmsVillagerType, nmsVillagerProfession, 1); + } + + public VillagerType getVillagerType(Villager.Type type) { + return Registry.VILLAGER_TYPE.get(CraftNamespacedKey.toMinecraft(type.getKey())); + } + + public VillagerProfession getVillagerProfession(Villager.Profession profession) { + return Registry.VILLAGER_PROFESSION.get(CraftNamespacedKey.toMinecraft(profession.getKey())); + } + + public SynchedEntityData.DataItem createDataWatcherItem(WrappedDataWatcher.WrappedDataWatcherObject wrappedDataWatcherObject, T metaItem) { + return new SynchedEntityData.DataItem<>((EntityDataAccessor) wrappedDataWatcherObject.getHandle(), metaItem); + } + + @Deprecated + public SoundEvent createSoundEffect(String minecraftKey) { + return new SoundEvent(new ResourceLocation(minecraftKey)); + } + + @Override + public ResourceLocation createMinecraftKey(String name) { + return new ResourceLocation(name); + } + + public Vec3 getVec3D(Vector vector) { + return new Vec3(vector.getX(), vector.getY(), vector.getZ()); + } + + public net.minecraft.world.entity.EntityType getEntityType(EntityType entityType) { + return net.minecraft.world.entity.EntityType.byString( + entityType.getName() == null ? entityType.name().toLowerCase(Locale.ENGLISH) : entityType.getName()).orElse(null); + } + + public Object registerEntityType(NamespacedKey key) { + net.minecraft.world.entity.EntityType newEntity = + new net.minecraft.world.entity.EntityType<>(null, null, false, false, false, false, null, null, 0, 0); + Registry.register(Registry.ENTITY_TYPE, CraftNamespacedKey.toMinecraft(key), newEntity); + newEntity.getDescriptionId(); + return newEntity; // TODO ??? Some reflection in legacy that I'm unsure about + } + + public int getEntityTypeId(Object entityTypes) { + net.minecraft.world.entity.EntityType entityType = (net.minecraft.world.entity.EntityType) entityTypes; + return Registry.ENTITY_TYPE.getId(entityType); + } + + public int getEntityTypeId(EntityType entityType) { + return getEntityTypeId(getEntityType(entityType)); + } + + public Object getEntityType(NamespacedKey name) { + return Registry.ENTITY_TYPE.get(CraftNamespacedKey.toMinecraft(name)); + } + + public Object getNmsEntityPose(String enumPose) { + return net.minecraft.world.entity.Pose.valueOf(enumPose); + } + + public int getCombinedIdByBlockData(BlockData data) { + BlockState state = ((CraftBlockData) data).getState(); + return Block.getId(state); + } + + public int getCombinedIdByItemStack(ItemStack itemStack) { + Block block = CraftMagicNumbers.getBlock(itemStack.getType()); + return Block.getId(block.defaultBlockState()); + } + + public BlockData getBlockDataByCombinedId(int id) { + return CraftBlockData.fromData(Block.stateById(id)); + } + + public ItemStack getItemStackByCombinedId(int id) { + return new ItemStack(CraftMagicNumbers.getMaterial(Block.stateById(id).getBlock())); + } + + public ServerLevel getWorldServer(World w) { + return ((CraftWorld) w).getHandle(); + } + + public ItemMeta getDeserializedItemMeta(Map meta) { + try { + Class aClass = Class.forName("org.bukkit.craftbukkit.v1_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; + } +}