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