From 317d9e466366ea5a365fd4a91f8edfa5a543d39b Mon Sep 17 00:00:00 2001
From: TheLonelyWolf <42873246+TheLonelyWolf1@users.noreply.github.com>
Date: Wed, 29 Mar 2023 19:48:12 +0200
Subject: [PATCH] Added Config-Option to enable MiniMessage-CommandTag on
 Non-Paper forks. Added Warning on Startup for using that option, but can be
 disabled if desired

---
 resource/config.yml                                       | 2 ++
 src/me/rockyhawk/commandpanels/CommandPanels.java         | 3 +++
 .../commandtags/tags/standard/BasicTags.java              | 8 +++++++-
 3 files changed, 12 insertions(+), 1 deletion(-)

diff --git a/resource/config.yml b/resource/config.yml
index 134e012..10b30b1 100644
--- a/resource/config.yml
+++ b/resource/config.yml
@@ -18,6 +18,8 @@ config:
   stop-sound: true
   disabled-world-message: true
   panel-snooper: false
+  allow-unsafe-mini-message: false
+  disable-unsafe-mm-warning: false
   format:
     tag: '&6[&bCommandPanels&6] '
     perms: '&cNo permission.'
diff --git a/src/me/rockyhawk/commandpanels/CommandPanels.java b/src/me/rockyhawk/commandpanels/CommandPanels.java
index b4d33b8..8cfe388 100644
--- a/src/me/rockyhawk/commandpanels/CommandPanels.java
+++ b/src/me/rockyhawk/commandpanels/CommandPanels.java
@@ -272,6 +272,9 @@ public class CommandPanels extends JavaPlugin{
 
         //get tag
         tag = tex.colour(config.getString("config.format.tag"));
+        if(config.getBoolean("config.allow-unsafe-mini-message") && !config.getBoolean("config.disable-unsafe-mm-warning")){
+            Bukkit.getLogger().warning("[CommandPanels] Allow unsafe MiniMessage detected! Please proceed with caution as no support will be given for it!");
+        }
 
         Bukkit.getLogger().info("[CommandPanels] RockyHawk's CommandPanels v" + this.getDescription().getVersion() + " Plugin Loaded!");
     }
diff --git a/src/me/rockyhawk/commandpanels/commandtags/tags/standard/BasicTags.java b/src/me/rockyhawk/commandpanels/commandtags/tags/standard/BasicTags.java
index 6aa867c..e4d345a 100644
--- a/src/me/rockyhawk/commandpanels/commandtags/tags/standard/BasicTags.java
+++ b/src/me/rockyhawk/commandpanels/commandtags/tags/standard/BasicTags.java
@@ -142,7 +142,13 @@ public class BasicTags implements Listener {
                 Component parsedText = SerializerUtils.serializeText(String.join(" ",e.args));
                 player.sendMessage(parsedText);
             }else{
-                plugin.tex.sendString(e.p, plugin.tag + ChatColor.RED + "MiniMessage-Feature needs Paper 1.18 or newer to work!");
+                if(plugin.legacy.LOCAL_VERSION.greaterThanOrEqualTo(MinecraftVersions.v1_18) && plugin.config.getBoolean("config.allow-unsafe-mini-message")){
+                    Audience player = (Audience) e.p; // Needed because the basic Player from the Event can't send Paper's Components
+                    Component parsedText = SerializerUtils.serializeText(String.join(" ",e.args));
+                    player.sendMessage(parsedText);
+                }else{
+                    plugin.tex.sendString(e.p, plugin.tag + ChatColor.RED + "MiniMessage-Feature needs Paper 1.18 or newer to work!");
+                }
             }
         }
     }