From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: violetc <58360096+s-yh-china@users.noreply.github.com> Date: Fri, 2 Feb 2024 13:18:22 +0800 Subject: [PATCH] Force minecraft command diff --git a/src/main/java/io/papermc/paper/command/brigadier/bukkit/BukkitBrigForwardingMap.java b/src/main/java/io/papermc/paper/command/brigadier/bukkit/BukkitBrigForwardingMap.java index d08ca38b4f04f7834de4ab64e5f794e8e26ec746..744db73d6cb89ca0256835cb2e98d427fe0f629a 100644 --- a/src/main/java/io/papermc/paper/command/brigadier/bukkit/BukkitBrigForwardingMap.java +++ b/src/main/java/io/papermc/paper/command/brigadier/bukkit/BukkitBrigForwardingMap.java @@ -96,6 +96,12 @@ public class BukkitBrigForwardingMap extends HashMap { @Override public Command put(String key, Command value) { Command old = this.get(key); + if (org.leavesmc.leaves.LeavesConfig.mics.forceMinecraftCommand && + getDispatcher().getRoot().getChild(key) != null && + getDispatcher().getRoot().getChild("minecraft:" + key) != null + ) { + return old; + } this.getDispatcher().getRoot().removeCommand(key); // Override previous command if (value instanceof VanillaCommandWrapper wrapper && wrapper.getName().equals(key)) { // Don't break when some plugin tries to remove and add back a plugin command registered with modern API... diff --git a/src/main/java/org/bukkit/craftbukkit/command/CraftCommandMap.java b/src/main/java/org/bukkit/craftbukkit/command/CraftCommandMap.java index 90ed57a7fbcd0625b64084347460e9864216f610..e3598f7a0d183255ba17bc0f08cee284a0898cef 100644 --- a/src/main/java/org/bukkit/craftbukkit/command/CraftCommandMap.java +++ b/src/main/java/org/bukkit/craftbukkit/command/CraftCommandMap.java @@ -14,4 +14,18 @@ public class CraftCommandMap extends SimpleCommandMap { public Map getKnownCommands() { return this.knownCommands; } + + // Leaves start - force minecraft command + @Override + public Command getCommand(String name) { + Command target = super.getCommand(name); + if (org.leavesmc.leaves.LeavesConfig.mics.forceMinecraftCommand && !(target instanceof org.bukkit.craftbukkit.command.VanillaCommandWrapper)) { + Command minecraftTarget = super.getCommand("minecraft:" + name); + if (minecraftTarget != null) { + return minecraftTarget; + } + } + return target; + } + // Leaves end - force minecraft command }