From deaa13c2af54bfba5cd7d7960878cf4a1e59e5e8 Mon Sep 17 00:00:00 2001 From: KingRainbow44 Date: Thu, 1 Jun 2023 14:18:53 -0400 Subject: [PATCH] Add check for legacy API method calls on plugins --- .../java/emu/grasscutter/plugin/PluginManager.java | 14 ++++++++++---- src/main/resources/languages/en-US.json | 3 ++- src/main/resources/languages/es-ES.json | 3 ++- src/main/resources/languages/fr-FR.json | 3 ++- src/main/resources/languages/it-IT.json | 3 ++- src/main/resources/languages/ja-JP.json | 3 ++- src/main/resources/languages/ko-KR.json | 3 ++- src/main/resources/languages/pl-PL.json | 3 ++- src/main/resources/languages/ro-RO.json | 3 ++- src/main/resources/languages/ru-RU.json | 3 ++- src/main/resources/languages/zh-CN.json | 3 ++- src/main/resources/languages/zh-TW.json | 3 ++- 12 files changed, 32 insertions(+), 15 deletions(-) diff --git a/src/main/java/emu/grasscutter/plugin/PluginManager.java b/src/main/java/emu/grasscutter/plugin/PluginManager.java index fb07a614e..1c91babd1 100644 --- a/src/main/java/emu/grasscutter/plugin/PluginManager.java +++ b/src/main/java/emu/grasscutter/plugin/PluginManager.java @@ -1,17 +1,18 @@ package emu.grasscutter.plugin; -import static emu.grasscutter.utils.lang.Language.translate; - import emu.grasscutter.Grasscutter; import emu.grasscutter.server.event.*; import emu.grasscutter.utils.*; +import lombok.*; + +import javax.annotation.Nullable; import java.io.*; import java.lang.reflect.Method; import java.net.*; import java.util.*; import java.util.jar.*; -import javax.annotation.Nullable; -import lombok.*; + +import static emu.grasscutter.utils.lang.Language.translate; /** Manages the server's plugins and the event system. */ public final class PluginManager { @@ -216,9 +217,14 @@ public final class PluginManager { Grasscutter.getLogger().info(translate("plugin.enabling_plugin", name)); try { plugin.onEnable(); + return; + } catch (NoSuchMethodError ignored) { + Grasscutter.getLogger().error(translate("plugin.invalid_api.outdated", name)); } catch (Throwable exception) { Grasscutter.getLogger().error(translate("plugin.enabling_failed", name), exception); } + + this.disablePlugin(plugin); }); } diff --git a/src/main/resources/languages/en-US.json b/src/main/resources/languages/en-US.json index ec190e15c..8bc74ccce 100644 --- a/src/main/resources/languages/en-US.json +++ b/src/main/resources/languages/en-US.json @@ -463,7 +463,8 @@ "disabling_failed": "Failed to disable plugin: %s", "invalid_api": { "not_present": "Plugin %s does not specify an API version.", - "lower": "Plugin %s is using API version %s, while the server is using API version %s." + "lower": "Plugin %s is using API version %s, while the server is using API version %s.", + "outdated": "Plugin %s is using an outdated API method." } } } diff --git a/src/main/resources/languages/es-ES.json b/src/main/resources/languages/es-ES.json index 7b45839ef..4be2da3ab 100644 --- a/src/main/resources/languages/es-ES.json +++ b/src/main/resources/languages/es-ES.json @@ -463,7 +463,8 @@ "disabling_failed": "Error al desactivar el plugin: %s", "invalid_api": { "not_present": "🇺🇸Plugin %s does not specify an API version.", - "lower": "🇺🇸Plugin %s is using API version %s, while the server is using API version %s." + "lower": "🇺🇸Plugin %s is using API version %s, while the server is using API version %s.", + "outdated": "🇺🇸Plugin %s is using an outdated API method." } } } diff --git a/src/main/resources/languages/fr-FR.json b/src/main/resources/languages/fr-FR.json index 4fc11c732..fc365c5f4 100644 --- a/src/main/resources/languages/fr-FR.json +++ b/src/main/resources/languages/fr-FR.json @@ -463,7 +463,8 @@ "disabling_failed": "Impossible de désactiver le plugin %s", "invalid_api": { "not_present": "🇺🇸Plugin %s does not specify an API version.", - "lower": "🇺🇸Plugin %s is using API version %s, while the server is using API version %s." + "lower": "🇺🇸Plugin %s is using API version %s, while the server is using API version %s.", + "outdated": "🇺🇸Plugin %s is using an outdated API method." } } } diff --git a/src/main/resources/languages/it-IT.json b/src/main/resources/languages/it-IT.json index 737df9418..33d64ae65 100644 --- a/src/main/resources/languages/it-IT.json +++ b/src/main/resources/languages/it-IT.json @@ -463,7 +463,8 @@ "disabling_failed": "Impossibile disabilitare il plug-in: %s", "invalid_api": { "not_present": "🇺🇸Plugin %s does not specify an API version.", - "lower": "🇺🇸Plugin %s is using API version %s, while the server is using API version %s." + "lower": "🇺🇸Plugin %s is using API version %s, while the server is using API version %s.", + "outdated": "🇺🇸Plugin %s is using an outdated API method." } } } diff --git a/src/main/resources/languages/ja-JP.json b/src/main/resources/languages/ja-JP.json index 01f35e248..2a35a8464 100644 --- a/src/main/resources/languages/ja-JP.json +++ b/src/main/resources/languages/ja-JP.json @@ -463,7 +463,8 @@ "disabling_failed": "プラグインの無効化に失敗しました: %s", "invalid_api": { "not_present": "🇺🇸Plugin %s does not specify an API version.", - "lower": "🇺🇸Plugin %s is using API version %s, while the server is using API version %s." + "lower": "🇺🇸Plugin %s is using API version %s, while the server is using API version %s.", + "outdated": "🇺🇸Plugin %s is using an outdated API method." } } } diff --git a/src/main/resources/languages/ko-KR.json b/src/main/resources/languages/ko-KR.json index cd188ce0c..1af648e5b 100644 --- a/src/main/resources/languages/ko-KR.json +++ b/src/main/resources/languages/ko-KR.json @@ -463,7 +463,8 @@ "disabling_failed": "플러그인을 비활성화하는데 실패했습니다: %s", "invalid_api": { "not_present": "🇺🇸Plugin %s does not specify an API version.", - "lower": "🇺🇸Plugin %s is using API version %s, while the server is using API version %s." + "lower": "🇺🇸Plugin %s is using API version %s, while the server is using API version %s.", + "outdated": "🇺🇸Plugin %s is using an outdated API method." } } } diff --git a/src/main/resources/languages/pl-PL.json b/src/main/resources/languages/pl-PL.json index 9f56296d1..1d87d0f01 100644 --- a/src/main/resources/languages/pl-PL.json +++ b/src/main/resources/languages/pl-PL.json @@ -463,7 +463,8 @@ "disabling_failed": "Nie udało się wyłączyć pluginu: %s", "invalid_api": { "not_present": "🇺🇸Plugin %s does not specify an API version.", - "lower": "🇺🇸Plugin %s is using API version %s, while the server is using API version %s." + "lower": "🇺🇸Plugin %s is using API version %s, while the server is using API version %s.", + "outdated": "🇺🇸Plugin %s is using an outdated API method." } } } diff --git a/src/main/resources/languages/ro-RO.json b/src/main/resources/languages/ro-RO.json index 3c5fb5222..907815fd0 100644 --- a/src/main/resources/languages/ro-RO.json +++ b/src/main/resources/languages/ro-RO.json @@ -463,7 +463,8 @@ "disabling_failed": "🇺🇸Failed to disable plugin: %s", "invalid_api": { "not_present": "🇺🇸Plugin %s does not specify an API version.", - "lower": "🇺🇸Plugin %s is using API version %s, while the server is using API version %s." + "lower": "🇺🇸Plugin %s is using API version %s, while the server is using API version %s.", + "outdated": "🇺🇸Plugin %s is using an outdated API method." } } } diff --git a/src/main/resources/languages/ru-RU.json b/src/main/resources/languages/ru-RU.json index 12d4c2047..11cc8a34e 100644 --- a/src/main/resources/languages/ru-RU.json +++ b/src/main/resources/languages/ru-RU.json @@ -463,7 +463,8 @@ "disabling_failed": "Ошибка отключения Плагина: %s", "invalid_api": { "not_present": "🇺🇸Plugin %s does not specify an API version.", - "lower": "🇺🇸Plugin %s is using API version %s, while the server is using API version %s." + "lower": "🇺🇸Plugin %s is using API version %s, while the server is using API version %s.", + "outdated": "🇺🇸Plugin %s is using an outdated API method." } } } diff --git a/src/main/resources/languages/zh-CN.json b/src/main/resources/languages/zh-CN.json index 16661b658..c1299ea52 100644 --- a/src/main/resources/languages/zh-CN.json +++ b/src/main/resources/languages/zh-CN.json @@ -463,7 +463,8 @@ "disabling_failed": "无法禁用插件:%s", "invalid_api": { "not_present": "🇺🇸Plugin %s does not specify an API version.", - "lower": "🇺🇸Plugin %s is using API version %s, while the server is using API version %s." + "lower": "🇺🇸Plugin %s is using API version %s, while the server is using API version %s.", + "outdated": "🇺🇸Plugin %s is using an outdated API method." } } } diff --git a/src/main/resources/languages/zh-TW.json b/src/main/resources/languages/zh-TW.json index c215845c3..5f22441a0 100644 --- a/src/main/resources/languages/zh-TW.json +++ b/src/main/resources/languages/zh-TW.json @@ -463,7 +463,8 @@ "disabling_failed": "🇺🇸Failed to disable plugin: %s", "invalid_api": { "not_present": "🇺🇸Plugin %s does not specify an API version.", - "lower": "🇺🇸Plugin %s is using API version %s, while the server is using API version %s." + "lower": "🇺🇸Plugin %s is using API version %s, while the server is using API version %s.", + "outdated": "🇺🇸Plugin %s is using an outdated API method." } } }