From 7d255685ede1a18921edb60a47fc4d47f9b3aee2 Mon Sep 17 00:00:00 2001 From: Christian Koop Date: Sun, 21 Nov 2021 22:57:18 +0100 Subject: [PATCH] ServerProject and ServerVersion: Adds support for BukkitMock --- .../core/compatibility/ServerProject.java | 6 +++- .../core/compatibility/ServerVersion.java | 28 ++++++++++++++++--- 2 files changed, 29 insertions(+), 5 deletions(-) diff --git a/Compatibility/src/main/java/com/songoda/core/compatibility/ServerProject.java b/Compatibility/src/main/java/com/songoda/core/compatibility/ServerProject.java index 7b6fccac..162bf5f1 100644 --- a/Compatibility/src/main/java/com/songoda/core/compatibility/ServerProject.java +++ b/Compatibility/src/main/java/com/songoda/core/compatibility/ServerProject.java @@ -4,12 +4,16 @@ import org.apache.commons.lang.ArrayUtils; import org.bukkit.Bukkit; public enum ServerProject { - UNKNOWN, CRAFTBUKKIT, SPIGOT, PAPER, TACO, GLOWSTONE; + UNKNOWN, CRAFTBUKKIT, SPIGOT, PAPER, TACO, GLOWSTONE, MOCK_BUKKIT; private final static ServerProject serverProject = checkProject(); private static ServerProject checkProject() { String serverPath = Bukkit.getServer().getClass().getName(); + if (serverPath.equals("be.seeseemelk.mockbukkit.ServerMock")) { + return MOCK_BUKKIT; + } + if (serverPath.contains("glowstone")) { return GLOWSTONE; } diff --git a/Compatibility/src/main/java/com/songoda/core/compatibility/ServerVersion.java b/Compatibility/src/main/java/com/songoda/core/compatibility/ServerVersion.java index 39ed48f8..e150ada5 100644 --- a/Compatibility/src/main/java/com/songoda/core/compatibility/ServerVersion.java +++ b/Compatibility/src/main/java/com/songoda/core/compatibility/ServerVersion.java @@ -6,10 +6,30 @@ import org.bukkit.Bukkit; public enum ServerVersion { UNKNOWN, V1_7, V1_8, V1_9, V1_10, V1_11, V1_12, V1_13, V1_14, V1_15, V1_16, V1_17, V1_18, V1_19, V1_20, V1_21; - private final static String serverPackagePath = Bukkit.getServer().getClass().getPackage().getName(); - private final static String serverPackageVersion = serverPackagePath.substring(serverPackagePath.lastIndexOf('.') + 1); - private final static String serverReleaseVersion = serverPackageVersion.indexOf('R') != -1 ? serverPackageVersion.substring(serverPackageVersion.indexOf('R') + 1) : ""; - private final static ServerVersion serverVersion = getVersion(); + private final static String serverPackagePath; + private final static String serverPackageVersion; + private final static String serverReleaseVersion; + private final static ServerVersion serverVersion; + private final static boolean isMocked; + + static { + String srvPackage = Bukkit.getServer().getClass().getPackage().getName(); + isMocked = srvPackage.equals("be.seeseemelk.mockbukkit"); + + if (isMocked) { + String packageVersionShard = "v" + Bukkit.getServer().getBukkitVersion().replace('.', '_') + "_R0"; + + serverPackagePath = "org.bukkit.craftbukkit." + packageVersionShard; + serverPackageVersion = packageVersionShard; + serverReleaseVersion = "0"; + } else { + serverPackagePath = srvPackage; + serverPackageVersion = serverPackagePath.substring(serverPackagePath.lastIndexOf('.') + 1); + serverReleaseVersion = serverPackageVersion.indexOf('R') != -1 ? serverPackageVersion.substring(serverPackageVersion.indexOf('R') + 1) : ""; + } + + serverVersion = getVersion(); + } private static ServerVersion getVersion() { for (ServerVersion version : values()) {