From 385c11a3aa74ffb7a2aa29ae5d811890fd1a7238 Mon Sep 17 00:00:00 2001 From: Intelli Date: Thu, 3 Oct 2024 15:51:18 -0600 Subject: [PATCH] Finalized extension system --- .gitignore | 3 ++- .../coreprotect/command/CommandHandler.java | 9 +-------- .../net/coreprotect/extensions/Extensions.java | 18 ++++++++++++++++-- 3 files changed, 19 insertions(+), 11 deletions(-) diff --git a/.gitignore b/.gitignore index a0ba695..8db6609 100644 --- a/.gitignore +++ b/.gitignore @@ -198,4 +198,5 @@ hs_err_pid* docs/dev/ # Extensions -/src/main/java/net/coreprotect/extensions/*.java \ No newline at end of file +/src/main/java/net/coreprotect/extensions/*.java +!/src/main/java/net/coreprotect/extensions/Extensions.java \ No newline at end of file diff --git a/src/main/java/net/coreprotect/command/CommandHandler.java b/src/main/java/net/coreprotect/command/CommandHandler.java index f047dea..1ca5d45 100755 --- a/src/main/java/net/coreprotect/command/CommandHandler.java +++ b/src/main/java/net/coreprotect/command/CommandHandler.java @@ -1279,14 +1279,7 @@ public class CommandHandler implements CommandExecutor { Chat.sendMessage(user, Color.DARK_AQUA + "CoreProtect " + Color.WHITE + "- " + Phrase.build(Phrase.DONATION_KEY_REQUIRED)); } else { - try { - Class.forName("net.coreprotect.extensions.DatabaseMigration"); - Extensions.runDatabaseMigration(user, argumentArray); - } - catch (Exception e) { - // plugin not compiled with extension - Chat.sendMessage(user, Color.DARK_AQUA + "CoreProtect " + Color.WHITE + "- " + Phrase.build(Phrase.COMMAND_NOT_FOUND, Color.WHITE, "/co " + corecommand)); - } + Extensions.runDatabaseMigration(corecommand, user, argumentArray); } } else { diff --git a/src/main/java/net/coreprotect/extensions/Extensions.java b/src/main/java/net/coreprotect/extensions/Extensions.java index b3b36f1..954d82f 100644 --- a/src/main/java/net/coreprotect/extensions/Extensions.java +++ b/src/main/java/net/coreprotect/extensions/Extensions.java @@ -1,11 +1,25 @@ package net.coreprotect.extensions; +import java.lang.reflect.Method; + import org.bukkit.command.CommandSender; +import net.coreprotect.language.Phrase; +import net.coreprotect.utility.Chat; +import net.coreprotect.utility.Color; + public class Extensions { - public static void runDatabaseMigration(CommandSender user, String[] argumentArray) { - DatabaseMigration.runCommand(user, argumentArray); + public static void runDatabaseMigration(String command, CommandSender user, String[] argumentArray) { + try { + Class patchClass = Class.forName("net.coreprotect.extensions.DatabaseMigration"); + Method patchMethod = patchClass.getDeclaredMethod("runCommand", CommandSender.class, String[].class); + patchMethod.invoke(null, user, argumentArray); + } + catch (Exception e) { + // plugin not compiled with extension + Chat.sendMessage(user, Color.DARK_AQUA + "CoreProtect " + Color.WHITE + "- " + Phrase.build(Phrase.COMMAND_NOT_FOUND, Color.WHITE, "/co " + command)); + } } }