diff --git a/Core/pom.xml b/Core/pom.xml index f44f1352..310edc86 100644 --- a/Core/pom.xml +++ b/Core/pom.xml @@ -119,14 +119,16 @@ org.spigotmc spigot - 1.16.5-R0.1-SNAPSHOT + 1.16.5 provided - + + ${project.groupId} + SongodaCore-Compatibility + ${project.version} + jar + compile + @@ -279,18 +281,6 @@ 1.7.2 provided - - us.myles.viaversion-bukkit - ViaVersion - 2.1.3 - provided - - - protocolsupport - ProtocolSupport - 4.29 - provided - com.sk89q worldguard-bukkit diff --git a/compatibility/pom.xml b/compatibility/pom.xml new file mode 100644 index 00000000..304bb1ea --- /dev/null +++ b/compatibility/pom.xml @@ -0,0 +1,34 @@ + + + + com.songoda + SongodaCore-Modules + 2.4.54 + ../ + + + SongodaCore-Compatibility + + 4.0.0 + jar + + + + org.jetbrains + annotations + 13.0 + + + us.myles.viaversion-bukkit + ViaVersion + 2.1.3 + provided + + + protocolsupport + ProtocolSupport + 4.29 + provided + + + \ No newline at end of file diff --git a/Core/src/main/java/com/songoda/core/compatibility/ClientVersion.java b/compatibility/src/com/songoda/core/compatibility/ClientVersion.java similarity index 87% rename from Core/src/main/java/com/songoda/core/compatibility/ClientVersion.java rename to compatibility/src/com/songoda/core/compatibility/ClientVersion.java index 31f39a84..47fc37e9 100644 --- a/Core/src/main/java/com/songoda/core/compatibility/ClientVersion.java +++ b/compatibility/src/com/songoda/core/compatibility/ClientVersion.java @@ -1,8 +1,8 @@ package com.songoda.core.compatibility; -import com.songoda.core.SongodaCore; import org.bukkit.Bukkit; import org.bukkit.entity.Player; +import org.bukkit.plugin.java.JavaPlugin; import java.util.HashMap; import java.util.UUID; @@ -34,8 +34,8 @@ public class ClientVersion { * Do Not Use: This is handled by SongodaCore. */ @Deprecated - public static void onLoginProtocol(Player p) { - Bukkit.getScheduler().runTaskLater(SongodaCore.getHijackedPlugin(), () -> { + public static void onLoginProtocol(Player p, JavaPlugin plugin) { + Bukkit.getScheduler().runTaskLater(plugin, () -> { if (p.isOnline()) { final int version = protocolsupport.api.ProtocolSupportAPI.getProtocolVersion(p).getId(); players.put(p.getUniqueId(), protocolToVersion(version)); @@ -47,8 +47,8 @@ public class ClientVersion { * Do Not Use: This is handled by SongodaCore. */ @Deprecated - public static void onLoginVia(Player p) { - Bukkit.getScheduler().runTaskLater(SongodaCore.getHijackedPlugin(), () -> { + public static void onLoginVia(Player p, JavaPlugin plugin) { + Bukkit.getScheduler().runTaskLater(plugin, () -> { if (p.isOnline()) { final int version = us.myles.ViaVersion.api.Via.getAPI().getPlayerVersion(p.getUniqueId()); players.put(p.getUniqueId(), protocolToVersion(version)); @@ -94,6 +94,9 @@ public class ClientVersion { return ServerVersion.V1_15; case 735: case 736: + case 751: + case 753: + case 754: return ServerVersion.V1_16; } return version > 498 ? ServerVersion.getServerVersion() : ServerVersion.UNKNOWN; diff --git a/Core/src/main/java/com/songoda/core/compatibility/CompatibleBiome.java b/compatibility/src/com/songoda/core/compatibility/CompatibleBiome.java similarity index 92% rename from Core/src/main/java/com/songoda/core/compatibility/CompatibleBiome.java rename to compatibility/src/com/songoda/core/compatibility/CompatibleBiome.java index 794ed0a2..f46698c6 100644 --- a/Core/src/main/java/com/songoda/core/compatibility/CompatibleBiome.java +++ b/compatibility/src/com/songoda/core/compatibility/CompatibleBiome.java @@ -1,6 +1,5 @@ package com.songoda.core.compatibility; -import com.songoda.core.utils.NMSUtils; import org.bukkit.Chunk; import org.bukkit.World; import org.bukkit.block.Biome; @@ -127,13 +126,14 @@ public enum CompatibleBiome { compatibleBiomes.add(biome); if (ServerVersion.isServerVersionAtLeast(ServerVersion.V1_15)) { - Class classBiomeBase = NMSUtils.getNMSClass("BiomeBase"), - classCraftChunk = NMSUtils.getCraftClass("CraftChunk"), - classCraftBlock = NMSUtils.getCraftClass("block.CraftBlock"), - classChunk = NMSUtils.getNMSClass("Chunk"), - classBiomeStorage = NMSUtils.getNMSClass("BiomeStorage"), - classIRegistry = NMSUtils.getNMSClass("IRegistry"); try { + Class classBiomeBase = Class.forName("net.minecraft.server." + ServerVersion.getServerVersionString() + ".BiomeBase"), + classCraftChunk = Class.forName("org.bukkit.craftbukkit." + ServerVersion.getServerVersionString() + ".CraftChunk"), + classCraftBlock = Class.forName("org.bukkit.craftbukkit." + ServerVersion.getServerVersionString() + ".block.CraftBlock"), + classChunk = Class.forName("net.minecraft.server." + ServerVersion.getServerVersionString() + ".Chunk"), + classBiomeStorage = Class.forName("net.minecraft.server." + ServerVersion.getServerVersionString() + ".BiomeStorage"), + classIRegistry = Class.forName("net.minecraft.server." + ServerVersion.getServerVersionString() + ".IRegistry"); + methodBiomeToBiomeBase = isAbove1_16_R1 ? classCraftBlock.getMethod("biomeToBiomeBase", classIRegistry, Biome.class) : classCraftBlock.getMethod("biomeToBiomeBase", Biome.class); methodGetHandle = classCraftChunk.getMethod("getHandle"); @@ -149,7 +149,7 @@ public enum CompatibleBiome { fieldStorageRegistry = classBiomeStorage.getDeclaredField("g"); } fieldStorageRegistry.setAccessible(true); - } catch (NoSuchMethodException | NoSuchFieldException e) { + } catch (NoSuchMethodException | NoSuchFieldException | ClassNotFoundException e) { e.printStackTrace(); } } diff --git a/Core/src/main/java/com/songoda/core/compatibility/CompatibleHand.java b/compatibility/src/com/songoda/core/compatibility/CompatibleHand.java similarity index 88% rename from Core/src/main/java/com/songoda/core/compatibility/CompatibleHand.java rename to compatibility/src/com/songoda/core/compatibility/CompatibleHand.java index 1fb7a393..95d26d69 100644 --- a/Core/src/main/java/com/songoda/core/compatibility/CompatibleHand.java +++ b/compatibility/src/com/songoda/core/compatibility/CompatibleHand.java @@ -1,6 +1,5 @@ package com.songoda.core.compatibility; -import com.songoda.core.utils.NMSUtils; import org.bukkit.Bukkit; import org.bukkit.GameMode; import org.bukkit.entity.Player; @@ -115,10 +114,10 @@ public enum CompatibleHand { if (cb_CraftPlayer == null) { try { - cb_CraftPlayer = NMSUtils.getCraftClass("entity.CraftPlayer"); - Class mc_EntityLiving = NMSUtils.getNMSClass("EntityLiving"); - Class cb_ItemStack = NMSUtils.getCraftClass("inventory.CraftItemStack"); - Class mc_ItemStack = NMSUtils.getNMSClass("ItemStack"); + cb_CraftPlayer = Class.forName("org.bukkit.craftbukkit." + ServerVersion.getServerVersionString() + ".entity.CraftPlayer"); + Class mc_EntityLiving = Class.forName("net.minecraft.server." + ServerVersion.getServerVersionString() + ".EntityLiving"); + Class cb_ItemStack = Class.forName("org.bukkit.craftbukkit." + ServerVersion.getServerVersionString() + ".inventory.CraftItemStack"); + Class mc_ItemStack = Class.forName("net.minecraft.server." + ServerVersion.getServerVersionString() + ".ItemStack"); getHandle = cb_CraftPlayer.getMethod("getHandle"); if (ServerVersion.isServerVersionAtLeast(ServerVersion.V1_13)) playBreak = mc_EntityLiving.getDeclaredMethod("a", mc_ItemStack, int.class); //Consistent from 1.16-1.13 @@ -126,7 +125,7 @@ public enum CompatibleHand { playBreak = mc_EntityLiving.getDeclaredMethod("b", mc_ItemStack); //Consistent from 1.12-1.8 playBreak.setAccessible(true); asNMSCopy = cb_ItemStack.getDeclaredMethod("asNMSCopy", ItemStack.class); - } catch (NoSuchMethodException e) { + } catch (NoSuchMethodException | ClassNotFoundException e) { e.printStackTrace(); } } diff --git a/Core/src/main/java/com/songoda/core/compatibility/CompatibleMaterial.java b/compatibility/src/com/songoda/core/compatibility/CompatibleMaterial.java similarity index 100% rename from Core/src/main/java/com/songoda/core/compatibility/CompatibleMaterial.java rename to compatibility/src/com/songoda/core/compatibility/CompatibleMaterial.java diff --git a/Core/src/main/java/com/songoda/core/compatibility/CompatibleParticleHandler.java b/compatibility/src/com/songoda/core/compatibility/CompatibleParticleHandler.java similarity index 100% rename from Core/src/main/java/com/songoda/core/compatibility/CompatibleParticleHandler.java rename to compatibility/src/com/songoda/core/compatibility/CompatibleParticleHandler.java diff --git a/Core/src/main/java/com/songoda/core/compatibility/CompatibleSound.java b/compatibility/src/com/songoda/core/compatibility/CompatibleSound.java similarity index 100% rename from Core/src/main/java/com/songoda/core/compatibility/CompatibleSound.java rename to compatibility/src/com/songoda/core/compatibility/CompatibleSound.java diff --git a/Core/src/main/java/com/songoda/core/compatibility/EntityNamespace.java b/compatibility/src/com/songoda/core/compatibility/EntityNamespace.java similarity index 100% rename from Core/src/main/java/com/songoda/core/compatibility/EntityNamespace.java rename to compatibility/src/com/songoda/core/compatibility/EntityNamespace.java diff --git a/Core/src/main/java/com/songoda/core/compatibility/LegacyMaterialAnalouge.java b/compatibility/src/com/songoda/core/compatibility/LegacyMaterialAnalouge.java similarity index 100% rename from Core/src/main/java/com/songoda/core/compatibility/LegacyMaterialAnalouge.java rename to compatibility/src/com/songoda/core/compatibility/LegacyMaterialAnalouge.java diff --git a/Core/src/main/java/com/songoda/core/compatibility/LegacyMaterialBlockType.java b/compatibility/src/com/songoda/core/compatibility/LegacyMaterialBlockType.java similarity index 100% rename from Core/src/main/java/com/songoda/core/compatibility/LegacyMaterialBlockType.java rename to compatibility/src/com/songoda/core/compatibility/LegacyMaterialBlockType.java diff --git a/Core/src/main/java/com/songoda/core/compatibility/LegacyParticleEffects.java b/compatibility/src/com/songoda/core/compatibility/LegacyParticleEffects.java similarity index 100% rename from Core/src/main/java/com/songoda/core/compatibility/LegacyParticleEffects.java rename to compatibility/src/com/songoda/core/compatibility/LegacyParticleEffects.java diff --git a/Core/src/main/java/com/songoda/core/compatibility/LegacyPotionEffects.java b/compatibility/src/com/songoda/core/compatibility/LegacyPotionEffects.java similarity index 100% rename from Core/src/main/java/com/songoda/core/compatibility/LegacyPotionEffects.java rename to compatibility/src/com/songoda/core/compatibility/LegacyPotionEffects.java diff --git a/Core/src/main/java/com/songoda/core/compatibility/ServerProject.java b/compatibility/src/com/songoda/core/compatibility/ServerProject.java similarity index 100% rename from Core/src/main/java/com/songoda/core/compatibility/ServerProject.java rename to compatibility/src/com/songoda/core/compatibility/ServerProject.java diff --git a/Core/src/main/java/com/songoda/core/compatibility/ServerVersion.java b/compatibility/src/com/songoda/core/compatibility/ServerVersion.java similarity index 100% rename from Core/src/main/java/com/songoda/core/compatibility/ServerVersion.java rename to compatibility/src/com/songoda/core/compatibility/ServerVersion.java diff --git a/pom.xml b/pom.xml index e521b142..54ff90ac 100644 --- a/pom.xml +++ b/pom.xml @@ -8,6 +8,7 @@ Core + Compatibility NMS/NMS-API NMS/NMS-v1_8_R1 NMS/NMS-v1_8_R2