From 14541eb25d51fe7af3a18fb47c81c056c768c0c2 Mon Sep 17 00:00:00 2001 From: filoghost Date: Sat, 14 Aug 2021 12:26:53 +0200 Subject: [PATCH] Remove unsupported versions and display error messages --- nms/pom.xml | 3 - nms/v1_13_r1/pom.xml | 29 ------- .../nms/v1_13_R1/VersionNMSManager.java | 36 --------- nms/v1_8_r2/pom.xml | 29 ------- .../nms/v1_8_R2/VersionNMSManager.java | 36 --------- nms/v1_9_r1/pom.xml | 29 ------- .../nms/v1_9_R1/VersionNMSManager.java | 36 --------- plugin/pom.xml | 15 ---- .../plugin/HolographicDisplays.java | 7 +- .../plugin/util/NMSVersion.java | 77 +++++++++++++------ pom.xml | 18 ----- 11 files changed, 56 insertions(+), 259 deletions(-) delete mode 100644 nms/v1_13_r1/pom.xml delete mode 100644 nms/v1_13_r1/src/main/java/me/filoghost/holographicdisplays/nms/v1_13_R1/VersionNMSManager.java delete mode 100644 nms/v1_8_r2/pom.xml delete mode 100644 nms/v1_8_r2/src/main/java/me/filoghost/holographicdisplays/nms/v1_8_R2/VersionNMSManager.java delete mode 100644 nms/v1_9_r1/pom.xml delete mode 100644 nms/v1_9_r1/src/main/java/me/filoghost/holographicdisplays/nms/v1_9_R1/VersionNMSManager.java diff --git a/nms/pom.xml b/nms/pom.xml index 4ac65a2a..e930fa4b 100644 --- a/nms/pom.xml +++ b/nms/pom.xml @@ -14,14 +14,11 @@ pom - v1_8_r2 v1_8_r3 - v1_9_r1 v1_9_r2 v1_10_r1 v1_11_r1 v1_12_r1 - v1_13_r1 v1_13_r2 v1_14_r1 v1_15_r1 diff --git a/nms/v1_13_r1/pom.xml b/nms/v1_13_r1/pom.xml deleted file mode 100644 index 2515922f..00000000 --- a/nms/v1_13_r1/pom.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - 4.0.0 - - - me.filoghost.holographicdisplays - holographicdisplays-nms - 3.0.0-SNAPSHOT - - - holographicdisplays-nms-v1_13_r1 - HolographicDisplays NMS v1_13_R1 - - - - ${project.groupId} - holographicdisplays-common - - - - org.spigotmc - spigot - 1.13-R0.1-SNAPSHOT - provided - - - - diff --git a/nms/v1_13_r1/src/main/java/me/filoghost/holographicdisplays/nms/v1_13_R1/VersionNMSManager.java b/nms/v1_13_r1/src/main/java/me/filoghost/holographicdisplays/nms/v1_13_R1/VersionNMSManager.java deleted file mode 100644 index d4bf55e0..00000000 --- a/nms/v1_13_r1/src/main/java/me/filoghost/holographicdisplays/nms/v1_13_R1/VersionNMSManager.java +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Copyright (C) filoghost and contributors - * - * SPDX-License-Identifier: GPL-3.0-or-later - */ -package me.filoghost.holographicdisplays.nms.v1_13_R1; - -import me.filoghost.holographicdisplays.common.nms.EntityID; -import me.filoghost.holographicdisplays.common.nms.NMSManager; -import me.filoghost.holographicdisplays.common.nms.NMSPacketList; -import me.filoghost.holographicdisplays.common.nms.PacketListener; -import org.bukkit.entity.Player; - -public class VersionNMSManager implements NMSManager { - - @Override - public EntityID newEntityID() { - return null; - } - - @Override - public NMSPacketList createPacketList() { - return null; - } - - @Override - public void injectPacketListener(Player player, PacketListener packetListener) { - - } - - @Override - public void uninjectPacketListener(Player player) { - - } - -} diff --git a/nms/v1_8_r2/pom.xml b/nms/v1_8_r2/pom.xml deleted file mode 100644 index 98fd99f5..00000000 --- a/nms/v1_8_r2/pom.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - 4.0.0 - - - me.filoghost.holographicdisplays - holographicdisplays-nms - 3.0.0-SNAPSHOT - - - holographicdisplays-nms-v1_8_r2 - HolographicDisplays NMS v1_8_R2 - - - - ${project.groupId} - holographicdisplays-common - - - - org.spigotmc - spigot - 1.8.3-R0.1-SNAPSHOT - provided - - - - diff --git a/nms/v1_8_r2/src/main/java/me/filoghost/holographicdisplays/nms/v1_8_R2/VersionNMSManager.java b/nms/v1_8_r2/src/main/java/me/filoghost/holographicdisplays/nms/v1_8_R2/VersionNMSManager.java deleted file mode 100644 index 7cf8542d..00000000 --- a/nms/v1_8_r2/src/main/java/me/filoghost/holographicdisplays/nms/v1_8_R2/VersionNMSManager.java +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Copyright (C) filoghost and contributors - * - * SPDX-License-Identifier: GPL-3.0-or-later - */ -package me.filoghost.holographicdisplays.nms.v1_8_R2; - -import me.filoghost.holographicdisplays.common.nms.EntityID; -import me.filoghost.holographicdisplays.common.nms.NMSManager; -import me.filoghost.holographicdisplays.common.nms.NMSPacketList; -import me.filoghost.holographicdisplays.common.nms.PacketListener; -import org.bukkit.entity.Player; - -public class VersionNMSManager implements NMSManager { - - @Override - public EntityID newEntityID() { - return null; - } - - @Override - public NMSPacketList createPacketList() { - return null; - } - - @Override - public void injectPacketListener(Player player, PacketListener packetListener) { - - } - - @Override - public void uninjectPacketListener(Player player) { - - } - -} diff --git a/nms/v1_9_r1/pom.xml b/nms/v1_9_r1/pom.xml deleted file mode 100644 index b62c2767..00000000 --- a/nms/v1_9_r1/pom.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - 4.0.0 - - - me.filoghost.holographicdisplays - holographicdisplays-nms - 3.0.0-SNAPSHOT - - - holographicdisplays-nms-v1_9_r1 - HolographicDisplays NMS v1_9_R1 - - - - ${project.groupId} - holographicdisplays-common - - - - org.spigotmc - spigot - 1.9-R0.1-SNAPSHOT - provided - - - - diff --git a/nms/v1_9_r1/src/main/java/me/filoghost/holographicdisplays/nms/v1_9_R1/VersionNMSManager.java b/nms/v1_9_r1/src/main/java/me/filoghost/holographicdisplays/nms/v1_9_R1/VersionNMSManager.java deleted file mode 100644 index a072e9e9..00000000 --- a/nms/v1_9_r1/src/main/java/me/filoghost/holographicdisplays/nms/v1_9_R1/VersionNMSManager.java +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Copyright (C) filoghost and contributors - * - * SPDX-License-Identifier: GPL-3.0-or-later - */ -package me.filoghost.holographicdisplays.nms.v1_9_R1; - -import me.filoghost.holographicdisplays.common.nms.EntityID; -import me.filoghost.holographicdisplays.common.nms.NMSManager; -import me.filoghost.holographicdisplays.common.nms.NMSPacketList; -import me.filoghost.holographicdisplays.common.nms.PacketListener; -import org.bukkit.entity.Player; - -public class VersionNMSManager implements NMSManager { - - @Override - public EntityID newEntityID() { - return null; - } - - @Override - public NMSPacketList createPacketList() { - return null; - } - - @Override - public void injectPacketListener(Player player, PacketListener packetListener) { - - } - - @Override - public void uninjectPacketListener(Player player) { - - } - -} diff --git a/plugin/pom.xml b/plugin/pom.xml index 5da7d133..fe1653f4 100644 --- a/plugin/pom.xml +++ b/plugin/pom.xml @@ -34,21 +34,11 @@ holographicdisplays-legacy-api-v2 - - ${project.groupId} - holographicdisplays-nms-v1_8_r2 - - ${project.groupId} holographicdisplays-nms-v1_8_r3 - - ${project.groupId} - holographicdisplays-nms-v1_9_r1 - - ${project.groupId} holographicdisplays-nms-v1_9_r2 @@ -69,11 +59,6 @@ holographicdisplays-nms-v1_12_r1 - - ${project.groupId} - holographicdisplays-nms-v1_13_r1 - - ${project.groupId} holographicdisplays-nms-v1_13_r2 diff --git a/plugin/src/main/java/me/filoghost/holographicdisplays/plugin/HolographicDisplays.java b/plugin/src/main/java/me/filoghost/holographicdisplays/plugin/HolographicDisplays.java index 8edfe62c..be0aad7d 100644 --- a/plugin/src/main/java/me/filoghost/holographicdisplays/plugin/HolographicDisplays.java +++ b/plugin/src/main/java/me/filoghost/holographicdisplays/plugin/HolographicDisplays.java @@ -37,6 +37,7 @@ import me.filoghost.holographicdisplays.plugin.placeholder.internal.DefaultPlace import me.filoghost.holographicdisplays.plugin.placeholder.registry.PlaceholderRegistry; import me.filoghost.holographicdisplays.plugin.placeholder.tracking.PlaceholderTracker; import me.filoghost.holographicdisplays.plugin.util.NMSVersion; +import me.filoghost.holographicdisplays.plugin.util.NMSVersion.OutdatedVersionException; import me.filoghost.holographicdisplays.plugin.util.NMSVersion.UnknownVersionException; import org.bstats.bukkit.MetricsLite; import org.bukkit.Bukkit; @@ -87,9 +88,9 @@ public class HolographicDisplays extends FCommonsPlugin { try { nmsManager = NMSVersion.getCurrent().createNMSManager(errorCollector); } catch (UnknownVersionException e) { - throw new PluginEnableException( - "Holographic Displays does not support this server version.", - "Supported Spigot versions: from 1.8.3 to 1.17."); + throw new PluginEnableException("Holographic Displays only supports Spigot from 1.8 to 1.17."); + } catch (OutdatedVersionException e) { + throw new PluginEnableException("Holographic Displays only supports " + e.getMinimumSupportedVersion() + " and above."); } catch (Throwable t) { throw new PluginEnableException(t, "Couldn't initialize the NMS manager."); } diff --git a/plugin/src/main/java/me/filoghost/holographicdisplays/plugin/util/NMSVersion.java b/plugin/src/main/java/me/filoghost/holographicdisplays/plugin/util/NMSVersion.java index d3a8a485..6ebd0a21 100644 --- a/plugin/src/main/java/me/filoghost/holographicdisplays/plugin/util/NMSVersion.java +++ b/plugin/src/main/java/me/filoghost/holographicdisplays/plugin/util/NMSVersion.java @@ -19,23 +19,26 @@ import java.util.regex.Pattern; public enum NMSVersion { // Not using shorter method reference syntax here because it initializes the class, causing a ClassNotFoundException - v1_8_R2((errorCollector) -> new me.filoghost.holographicdisplays.nms.v1_8_R2.VersionNMSManager()), - v1_8_R3((errorCollector) -> new me.filoghost.holographicdisplays.nms.v1_8_R3.VersionNMSManager(errorCollector)), - v1_9_R1((errorCollector) -> new me.filoghost.holographicdisplays.nms.v1_9_R1.VersionNMSManager()), - v1_9_R2((errorCollector) -> new me.filoghost.holographicdisplays.nms.v1_9_R2.VersionNMSManager(errorCollector)), - v1_10_R1((errorCollector) -> new me.filoghost.holographicdisplays.nms.v1_10_R1.VersionNMSManager(errorCollector)), - v1_11_R1((errorCollector) -> new me.filoghost.holographicdisplays.nms.v1_11_R1.VersionNMSManager(errorCollector)), - v1_12_R1((errorCollector) -> new me.filoghost.holographicdisplays.nms.v1_12_R1.VersionNMSManager(errorCollector)), - v1_13_R1((errorCollector) -> new me.filoghost.holographicdisplays.nms.v1_13_R1.VersionNMSManager()), - v1_13_R2((errorCollector) -> new me.filoghost.holographicdisplays.nms.v1_13_R2.VersionNMSManager(errorCollector)), - v1_14_R1((errorCollector) -> new me.filoghost.holographicdisplays.nms.v1_14_R1.VersionNMSManager(errorCollector)), - v1_15_R1((errorCollector) -> new me.filoghost.holographicdisplays.nms.v1_15_R1.VersionNMSManager(errorCollector)), - v1_16_R1((errorCollector) -> new me.filoghost.holographicdisplays.nms.v1_16_R1.VersionNMSManager(errorCollector)), - v1_16_R2((errorCollector) -> new me.filoghost.holographicdisplays.nms.v1_16_R2.VersionNMSManager(errorCollector)), - v1_16_R3((errorCollector) -> new me.filoghost.holographicdisplays.nms.v1_16_R3.VersionNMSManager(errorCollector)), - v1_17_R1((errorCollector) -> new me.filoghost.holographicdisplays.nms.v1_17_R1.VersionNMSManager(errorCollector)); - private static final NMSVersion CURRENT_VERSION = extractCurrentVersion(); + /* 1.8 - 1.8.2 */ v1_8_R1(NMSManagerFactory.outdatedVersion("1.8.4")), + /* 1.8.3 */ v1_8_R2(NMSManagerFactory.outdatedVersion("1.8.4")), + /* 1.8.4 - 1.8.9 */ v1_8_R3(errorCollector -> new me.filoghost.holographicdisplays.nms.v1_8_R3.VersionNMSManager(errorCollector)), + /* 1.9 - 1.9.3 */ v1_9_R1(NMSManagerFactory.outdatedVersion("1.9.4")), + /* 1.9.4 */ v1_9_R2(errorCollector -> new me.filoghost.holographicdisplays.nms.v1_9_R2.VersionNMSManager(errorCollector)), + /* 1.10 - 1.10.2 */ v1_10_R1(errorCollector -> new me.filoghost.holographicdisplays.nms.v1_10_R1.VersionNMSManager(errorCollector)), + /* 1.11 - 1.11.2 */ v1_11_R1(errorCollector -> new me.filoghost.holographicdisplays.nms.v1_11_R1.VersionNMSManager(errorCollector)), + /* 1.12 - 1.12.2 */ v1_12_R1(errorCollector -> new me.filoghost.holographicdisplays.nms.v1_12_R1.VersionNMSManager(errorCollector)), + /* 1.13 */ v1_13_R1(NMSManagerFactory.outdatedVersion("1.13.1")), + /* 1.13.1 - 1.13.2 */ v1_13_R2(errorCollector -> new me.filoghost.holographicdisplays.nms.v1_13_R2.VersionNMSManager(errorCollector)), + /* 1.14 - 1.14.4 */ v1_14_R1(errorCollector -> new me.filoghost.holographicdisplays.nms.v1_14_R1.VersionNMSManager(errorCollector)), + /* 1.15 - 1.15.2 */ v1_15_R1(errorCollector -> new me.filoghost.holographicdisplays.nms.v1_15_R1.VersionNMSManager(errorCollector)), + /* 1.16 - 1.16.1 */ v1_16_R1(errorCollector -> new me.filoghost.holographicdisplays.nms.v1_16_R1.VersionNMSManager(errorCollector)), + /* 1.16.2 - 1.16.3 */ v1_16_R2(errorCollector -> new me.filoghost.holographicdisplays.nms.v1_16_R2.VersionNMSManager(errorCollector)), + /* 1.16.4 - 1.16.5 */ v1_16_R3(errorCollector -> new me.filoghost.holographicdisplays.nms.v1_16_R3.VersionNMSManager(errorCollector)), + /* 1.17 - ? */ v1_17_R1(errorCollector -> new me.filoghost.holographicdisplays.nms.v1_17_R1.VersionNMSManager(errorCollector)), + /* Other versions */ UNKNOWN(NMSManagerFactory.unknownVersion()); + + private static final NMSVersion CURRENT_VERSION = detectCurrentVersion(); private final NMSManagerFactory nmsManagerFactory; @@ -43,38 +46,62 @@ public enum NMSVersion { this.nmsManagerFactory = nmsManagerFactory; } - public NMSManager createNMSManager(ErrorCollector errorCollector) { + public NMSManager createNMSManager(ErrorCollector errorCollector) throws OutdatedVersionException, UnknownVersionException { return nmsManagerFactory.create(errorCollector); } - public static NMSVersion getCurrent() throws UnknownVersionException { - if (CURRENT_VERSION == null) { - throw new UnknownVersionException(); - } + public static NMSVersion getCurrent() { return CURRENT_VERSION; } - private static NMSVersion extractCurrentVersion() { + private static NMSVersion detectCurrentVersion() { Matcher matcher = Pattern.compile("v\\d+_\\d+_R\\d+").matcher(Bukkit.getServer().getClass().getPackage().getName()); if (!matcher.find()) { - return null; + return UNKNOWN; } String nmsVersionName = matcher.group(); try { return valueOf(nmsVersionName); } catch (IllegalArgumentException e) { - return null; // Unknown version + return UNKNOWN; } } + @FunctionalInterface private interface NMSManagerFactory { - NMSManager create(ErrorCollector errorCollector); + NMSManager create(ErrorCollector errorCollector) throws UnknownVersionException, OutdatedVersionException; + + static NMSManagerFactory unknownVersion() { + return errorCollector -> { + throw new UnknownVersionException(); + }; + } + + static NMSManagerFactory outdatedVersion(String minimumSupportedVersion) { + return errorCollector -> { + throw new OutdatedVersionException(minimumSupportedVersion); + }; + } } public static class UnknownVersionException extends Exception {} + public static class OutdatedVersionException extends Exception { + + private final String minimumSupportedVersion; + + public OutdatedVersionException(String minimumSupportedVersion) { + this.minimumSupportedVersion = minimumSupportedVersion; + } + + public String getMinimumSupportedVersion() { + return minimumSupportedVersion; + } + + } + } diff --git a/pom.xml b/pom.xml index 6aaa206a..e3789b5f 100644 --- a/pom.xml +++ b/pom.xml @@ -96,24 +96,12 @@ ${project.version} - - ${project.groupId} - holographicdisplays-nms-v1_8_r2 - ${project.version} - - ${project.groupId} holographicdisplays-nms-v1_8_r3 ${project.version} - - ${project.groupId} - holographicdisplays-nms-v1_9_r1 - ${project.version} - - ${project.groupId} holographicdisplays-nms-v1_9_r2 @@ -138,12 +126,6 @@ ${project.version} - - ${project.groupId} - holographicdisplays-nms-v1_13_r1 - ${project.version} - - ${project.groupId} holographicdisplays-nms-v1_13_r2