mirror of
https://github.com/Flowsqy/ShopChest.git
synced 2024-11-29 01:35:29 +01:00
Fix plugin loading on paper (#27)
This commit is contained in:
parent
84cb888b64
commit
253bf78fe3
@ -419,7 +419,7 @@ public class ShopChest extends JavaPlugin {
|
||||
getServer().getPluginManager().registerEvents(new ChestProtectListener(this), this);
|
||||
getServer().getPluginManager().registerEvents(new CreativeModeListener(this), this);
|
||||
|
||||
if (!Utils.getServerVersion().equals("v1_8_R1")) {
|
||||
if (Utils.getMajorVersion() != 8 || Utils.getRevision() != 1) {
|
||||
getServer().getPluginManager().registerEvents(new BlockExplodeListener(this), this);
|
||||
}
|
||||
|
||||
|
@ -1,12 +1,13 @@
|
||||
package de.epiceric.shopchest.nms;
|
||||
|
||||
import java.lang.reflect.Field;
|
||||
import java.lang.reflect.Method;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
|
||||
import de.epiceric.shopchest.nms.reflection.PlatformImpl;
|
||||
import de.epiceric.shopchest.nms.reflection.ShopChestDebug;
|
||||
import de.epiceric.shopchest.utils.Utils;
|
||||
import org.bukkit.Bukkit;
|
||||
|
||||
import java.lang.reflect.Field;
|
||||
import java.lang.reflect.Method;
|
||||
|
||||
public class PlatformLoader {
|
||||
|
||||
@ -17,19 +18,25 @@ public class PlatformLoader {
|
||||
}
|
||||
|
||||
public Platform loadPlatform() {
|
||||
final String nmsVersion = Utils.getServerVersion();
|
||||
|
||||
Platform platform = getReflectionPlatform(nmsVersion);
|
||||
if (platform != null) {
|
||||
Platform platform = null;
|
||||
if (Utils.getMajorVersion() < 17) {
|
||||
final String bukkitPackageVersion = getBukkitPackageVersion();
|
||||
platform = getReflectionPlatform(bukkitPackageVersion);
|
||||
if (platform == null) {
|
||||
throw new RuntimeException(
|
||||
"Could not retrieve the mappings version. The server version might be too old ("
|
||||
+ bukkitPackageVersion + ").");
|
||||
}
|
||||
return platform;
|
||||
}
|
||||
final String mappingsVersion = getMappingsVersion();
|
||||
if (mappingsVersion == null) {
|
||||
throw new RuntimeException("Could not retrieve the mappings version. The server version might be too old (" + nmsVersion + ").");
|
||||
throw new RuntimeException("Could not get any information about the server version");
|
||||
}
|
||||
platform = getSpecificPlatform(mappingsVersion);
|
||||
if (platform == null) {
|
||||
throw new RuntimeException("Server version not officially supported. Version: '" + nmsVersion + "', Mappings : " + "'" + mappingsVersion + "'");
|
||||
throw new RuntimeException(
|
||||
"Server version not officially supported. Mappings : " + "'" + mappingsVersion + "'");
|
||||
}
|
||||
return platform;
|
||||
}
|
||||
@ -57,9 +64,15 @@ public class PlatformLoader {
|
||||
}
|
||||
}
|
||||
|
||||
private String getBukkitPackageVersion() {
|
||||
final String packageName = Bukkit.getServer().getClass().getPackage().getName();
|
||||
return packageName.substring(packageName.lastIndexOf(".") + 1);
|
||||
}
|
||||
|
||||
private String getMappingsVersion() {
|
||||
try {
|
||||
final String craftMagicNumbersClassName = Bukkit.getServer().getClass().getPackage().getName() + ".util.CraftMagicNumbers";
|
||||
final String craftMagicNumbersClassName = Bukkit.getServer().getClass().getPackage().getName()
|
||||
+ ".util.CraftMagicNumbers";
|
||||
final Class<?> craftMagicNumbersClass = Class.forName(craftMagicNumbersClassName);
|
||||
final Method method = craftMagicNumbersClass.getDeclaredMethod("getMappingsVersion");
|
||||
method.setAccessible(true);
|
||||
|
@ -311,27 +311,69 @@ public class Utils {
|
||||
);
|
||||
}
|
||||
|
||||
private final static int majorVersion;
|
||||
private final static int revision;
|
||||
|
||||
static {
|
||||
String rawMajorVersion = null;
|
||||
try {
|
||||
final String bukkitVersion = Bukkit.getServer().getBukkitVersion();
|
||||
final String[] minecraftVersion = bukkitVersion.substring(0, bukkitVersion.indexOf('-')).split("\\.");
|
||||
rawMajorVersion = minecraftVersion[1];
|
||||
} catch (Exception e) {
|
||||
try {
|
||||
final String packageName = Bukkit.getServer().getClass().getPackage().getName();
|
||||
final String serverVersion = packageName.substring(packageName.lastIndexOf('.') + 1);
|
||||
rawMajorVersion = serverVersion.split("_")[1];
|
||||
} catch (Exception ex) {
|
||||
if (rawMajorVersion == null) {
|
||||
throw new RuntimeException("Could not load major version");
|
||||
}
|
||||
}
|
||||
}
|
||||
int parsedMajorVersion = -1;
|
||||
try {
|
||||
parsedMajorVersion = Integer.valueOf(rawMajorVersion);
|
||||
} catch (Exception e) {
|
||||
throw new RuntimeException("Could not parse major version");
|
||||
}
|
||||
int parsedRevision = 0;
|
||||
if (parsedMajorVersion < 17) {
|
||||
try {
|
||||
final String packageName = Bukkit.getServer().getClass().getPackage().getName();
|
||||
final String serverVersion = packageName.substring(packageName.lastIndexOf('.') + 1);
|
||||
final String rawRevision = serverVersion.substring(serverVersion.length() - 1);
|
||||
parsedRevision = Integer.valueOf(rawRevision);
|
||||
} catch (Exception e) {}
|
||||
}
|
||||
majorVersion = parsedMajorVersion;
|
||||
revision = parsedRevision;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return The current server version with revision number (e.g. v1_9_R2, v1_10_R1)
|
||||
*/
|
||||
public static String getServerVersion() {
|
||||
private static String getServerVersion() {
|
||||
/*
|
||||
String packageName = Bukkit.getServer().getClass().getPackage().getName();
|
||||
|
||||
return packageName.substring(packageName.lastIndexOf('.') + 1);
|
||||
*/
|
||||
return "";
|
||||
}
|
||||
|
||||
/**
|
||||
* @return The revision of the current server version (e.g. <i>2</i> for v1_9_R2, <i>1</i> for v1_10_R1)
|
||||
*/
|
||||
public static int getRevision() {
|
||||
return Integer.parseInt(getServerVersion().substring(getServerVersion().length() - 1));
|
||||
return revision;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return The major version of the server (e.g. <i>9</i> for 1.9.2, <i>10</i> for 1.10)
|
||||
*/
|
||||
public static int getMajorVersion() {
|
||||
return Integer.parseInt(getServerVersion().split("_")[1]);
|
||||
return majorVersion;
|
||||
}
|
||||
|
||||
/**
|
||||
|
Loading…
Reference in New Issue
Block a user