From 6af0c80162a5f4380ea7167a6fc23ff32f7281bb Mon Sep 17 00:00:00 2001 From: Camotoy <20743703+Camotoy@users.noreply.github.com> Date: Sun, 6 Jun 2021 20:04:35 -0400 Subject: [PATCH] Don't yell if Floodgate cannot remove the injection --- .../floodgate/api/inject/PlatformInjector.java | 10 ++++++++++ .../floodgate/inject/bungee/BungeeInjector.java | 5 +++++ .../java/org/geysermc/floodgate/FloodgatePlatform.java | 2 +- common/src/main/resources/languages | 2 +- .../floodgate/inject/velocity/VelocityInjector.java | 5 +++++ 5 files changed, 22 insertions(+), 2 deletions(-) diff --git a/api/src/main/java/org/geysermc/floodgate/api/inject/PlatformInjector.java b/api/src/main/java/org/geysermc/floodgate/api/inject/PlatformInjector.java index 5e65a52a..226ea02c 100644 --- a/api/src/main/java/org/geysermc/floodgate/api/inject/PlatformInjector.java +++ b/api/src/main/java/org/geysermc/floodgate/api/inject/PlatformInjector.java @@ -42,6 +42,16 @@ public interface PlatformInjector { */ boolean inject() throws Exception; + /** + * Some platforms may not be able to remove their injection process. If so, this method will + * return false. + * + * @return true if it is safe to attempt to remove our injection performed in {@link #inject()}. + */ + default boolean canRemoveInjection() { + return true; + } + /** * Removes the injection from the server. Please note that this function should only be used * internally (on plugin shutdown). This method will also remove every added addon. diff --git a/bungee/src/main/java/org/geysermc/floodgate/inject/bungee/BungeeInjector.java b/bungee/src/main/java/org/geysermc/floodgate/inject/bungee/BungeeInjector.java index 75bb04ea..fc8fc3a9 100644 --- a/bungee/src/main/java/org/geysermc/floodgate/inject/bungee/BungeeInjector.java +++ b/bungee/src/main/java/org/geysermc/floodgate/inject/bungee/BungeeInjector.java @@ -65,6 +65,11 @@ public final class BungeeInjector extends CommonPlatformInjector { } } + @Override + public boolean canRemoveInjection() { + return false; + } + @Override public boolean removeInjection() { logger.error("Floodgate cannot remove itself from Bungee without a reboot"); diff --git a/common/src/main/java/org/geysermc/floodgate/FloodgatePlatform.java b/common/src/main/java/org/geysermc/floodgate/FloodgatePlatform.java index 6f82eda4..61fd0b0b 100644 --- a/common/src/main/java/org/geysermc/floodgate/FloodgatePlatform.java +++ b/common/src/main/java/org/geysermc/floodgate/FloodgatePlatform.java @@ -127,7 +127,7 @@ public class FloodgatePlatform { } public boolean disable() { - if (injector != null) { + if (injector != null && injector.canRemoveInjection()) { try { if (!injector.removeInjection()) { logger.error("Failed to remove the injection!"); diff --git a/common/src/main/resources/languages b/common/src/main/resources/languages index ebbefaae..8826fda0 160000 --- a/common/src/main/resources/languages +++ b/common/src/main/resources/languages @@ -1 +1 @@ -Subproject commit ebbefaae9502f2b36e630248a4fbd13ca6bb637c +Subproject commit 8826fda0eaeaa1cf70e212ca2dcf74a51eb32083 diff --git a/velocity/src/main/java/org/geysermc/floodgate/inject/velocity/VelocityInjector.java b/velocity/src/main/java/org/geysermc/floodgate/inject/velocity/VelocityInjector.java index cbdfe127..3947eea0 100644 --- a/velocity/src/main/java/org/geysermc/floodgate/inject/velocity/VelocityInjector.java +++ b/velocity/src/main/java/org/geysermc/floodgate/inject/velocity/VelocityInjector.java @@ -75,6 +75,11 @@ public final class VelocityInjector extends CommonPlatformInjector { return injected = true; } + @Override + public boolean canRemoveInjection() { + return false; + } + @Override public boolean removeInjection() { logger.error("Floodgate cannot remove itself from Bungee without a reboot");