From 05ff62d85ff495dd544c23bccbadbb8887f5633a Mon Sep 17 00:00:00 2001 From: Christian Weeks Date: Sun, 8 Apr 2012 09:55:56 -0400 Subject: [PATCH] A proper console command handler, also fix ordering of loaded mods --- .../cpw/mods/fml/common/IConsoleHandler.java | 2 +- .../src/ConsoleCommandHandler.java.patch | 2 +- .../cpw/mods/fml/server/FMLServerHandler.java | 5 +++-- .../fml/server/ModLoaderModContainer.java | 4 ++-- server/net/minecraft/src/BaseMod.java | 22 +++++++++---------- 5 files changed, 18 insertions(+), 17 deletions(-) diff --git a/common/cpw/mods/fml/common/IConsoleHandler.java b/common/cpw/mods/fml/common/IConsoleHandler.java index 8f2d053431..5a5e1e08f1 100644 --- a/common/cpw/mods/fml/common/IConsoleHandler.java +++ b/common/cpw/mods/fml/common/IConsoleHandler.java @@ -20,5 +20,5 @@ package cpw.mods.fml.common; */ public interface IConsoleHandler { - public boolean handleCommand(String command); + public boolean handleCommand(String command, Object... data); } diff --git a/patches/minecraft_server/net/minecraft/src/ConsoleCommandHandler.java.patch b/patches/minecraft_server/net/minecraft/src/ConsoleCommandHandler.java.patch index 2170d88df1..cc78cf80a6 100644 --- a/patches/minecraft_server/net/minecraft/src/ConsoleCommandHandler.java.patch +++ b/patches/minecraft_server/net/minecraft/src/ConsoleCommandHandler.java.patch @@ -14,7 +14,7 @@ } } - else -+ else if (!FMLServerHandler.instance().handleServerCommand(var2)) ++ else if (!FMLServerHandler.instance().handleServerCommand(var2, var6.func_1_c(), var6)) { field_22117_a.info("Unknown console command. Type \"help\" for help."); } diff --git a/server/cpw/mods/fml/server/FMLServerHandler.java b/server/cpw/mods/fml/server/FMLServerHandler.java index f42ba6d007..059f613a93 100644 --- a/server/cpw/mods/fml/server/FMLServerHandler.java +++ b/server/cpw/mods/fml/server/FMLServerHandler.java @@ -26,6 +26,7 @@ import net.minecraft.src.CommonRegistry; import net.minecraft.src.EntityItem; import net.minecraft.src.EntityPlayer; import net.minecraft.src.IChunkProvider; +import net.minecraft.src.ICommandListener; import net.minecraft.src.IInventory; import net.minecraft.src.ItemStack; import net.minecraft.src.NetworkManager; @@ -445,10 +446,10 @@ public class FMLServerHandler implements IFMLSidedHandler * @param var2 * @return */ - public boolean handleServerCommand(String command) + public boolean handleServerCommand(String command, String player, ICommandListener listener) { for (ModContainer mod : Loader.getModList()) { - if (mod.wantsConsoleCommands() && mod.getConsoleHandler().handleCommand(command)) { + if (mod.wantsConsoleCommands() && mod.getConsoleHandler().handleCommand(command, player, listener)) { return true; } } diff --git a/server/cpw/mods/fml/server/ModLoaderModContainer.java b/server/cpw/mods/fml/server/ModLoaderModContainer.java index 986ee53c4d..075368cd4a 100644 --- a/server/cpw/mods/fml/server/ModLoaderModContainer.java +++ b/server/cpw/mods/fml/server/ModLoaderModContainer.java @@ -450,7 +450,7 @@ public class ModLoaderModContainer implements ModContainer } @Override - public List getPreDepends() + public List getPostDepends() { if (dependencies == null) { @@ -461,7 +461,7 @@ public class ModLoaderModContainer implements ModContainer } @Override - public List getPostDepends() + public List getPreDepends() { if (dependencies == null) { diff --git a/server/net/minecraft/src/BaseMod.java b/server/net/minecraft/src/BaseMod.java index e1f54cbf14..915d757135 100644 --- a/server/net/minecraft/src/BaseMod.java +++ b/server/net/minecraft/src/BaseMod.java @@ -84,19 +84,10 @@ public abstract class BaseMod implements IWorldGenerator, IPickupNotifier, IDisp } @Override - public final boolean handleCommand(String command) + public final boolean handleCommand(String command, Object... data) { - return onServerCommand(command); + return onServerCommand(command, (String)data[0], (ICommandListener)data[1]); } - /** - * @param command - * @return - */ - private boolean onServerCommand(String command) - { - return false; - } - // BASEMOD API /** * Override if you wish to provide a fuel item for the furnace and return the fuel value of the item @@ -281,6 +272,15 @@ public abstract class BaseMod implements IWorldGenerator, IPickupNotifier, IDisp { return false; } + /** + * @param command + * @return + */ + public boolean onServerCommand(String command, String sender, ICommandListener listener) + { + return false; + } + // Spare client junk // ------- // void addRenderer(Map, Render> renderers);