9
0
mirror of https://github.com/LeavesMC/Leaves.git synced 2025-12-19 14:59:32 +00:00
Files
LeavesMC/leaves-server/paper-patches/features/0011-Force-minecraft-command.patch

47 lines
2.5 KiB
Diff

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<String, Command> {
@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<String, Command> 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
}