mirror of
https://github.com/AtlasMediaGroup/TotalFreedomMod.git
synced 2024-11-27 01:05:38 +00:00
Give TFM commands priority over other plugins.
This commit is contained in:
parent
fdfa30b349
commit
aad8f17455
@ -1,6 +1,6 @@
|
|||||||
#Sun, 14 Jul 2013 14:08:44 +0200
|
#Fri, 19 Jul 2013 19:19:28 -0400
|
||||||
|
|
||||||
program.VERSION=2.21
|
program.VERSION=2.21
|
||||||
program.BUILDNUM=311
|
program.BUILDNUM=318
|
||||||
program.BUILDDATE=07/14/2013 02\:08 PM
|
program.BUILDDATE=07/19/2013 07\:19 PM
|
||||||
|
|
||||||
|
@ -1,3 +1,3 @@
|
|||||||
#Build Number for ANT. Do not edit!
|
#Build Number for ANT. Do not edit!
|
||||||
#Sun Jul 14 14:08:44 CEST 2013
|
#Fri Jul 19 19:19:28 EDT 2013
|
||||||
build.number=312
|
build.number=319
|
||||||
|
@ -4,6 +4,7 @@ import java.io.IOException;
|
|||||||
import java.security.CodeSource;
|
import java.security.CodeSource;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.regex.Matcher;
|
import java.util.regex.Matcher;
|
||||||
import java.util.regex.Pattern;
|
import java.util.regex.Pattern;
|
||||||
@ -23,7 +24,6 @@ import org.bukkit.plugin.Plugin;
|
|||||||
public class TFM_CommandLoader
|
public class TFM_CommandLoader
|
||||||
{
|
{
|
||||||
public static final Pattern COMMAND_CLASS_PATTERN = Pattern.compile(TotalFreedomMod.COMMAND_PATH.replace('.', '/') + "/(" + TotalFreedomMod.COMMAND_PREFIX + "[^\\$]+)\\.class");
|
public static final Pattern COMMAND_CLASS_PATTERN = Pattern.compile(TotalFreedomMod.COMMAND_PATH.replace('.', '/') + "/(" + TotalFreedomMod.COMMAND_PREFIX + "[^\\$]+)\\.class");
|
||||||
public static CommandMap commandMap;
|
|
||||||
private List<TFM_CommandInfo> commandList = null;
|
private List<TFM_CommandInfo> commandList = null;
|
||||||
|
|
||||||
private TFM_CommandLoader()
|
private TFM_CommandLoader()
|
||||||
@ -32,10 +32,10 @@ public class TFM_CommandLoader
|
|||||||
|
|
||||||
public void scan()
|
public void scan()
|
||||||
{
|
{
|
||||||
commandMap = TFM_Util.getField(Bukkit.getServer().getPluginManager(), "commandMap");
|
CommandMap commandMap = getCommandMap();
|
||||||
if (commandMap == null)
|
if (commandMap == null)
|
||||||
{
|
{
|
||||||
TFM_Log.severe("Error loading command map.");
|
TFM_Log.severe("Error loading commandMap.");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -59,9 +59,82 @@ public class TFM_CommandLoader
|
|||||||
description = "OP Command - " + description;
|
description = "OP Command - " + description;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
TFM_DynamicCommand dynamicCommand = new TFM_DynamicCommand(commandInfo.getCommandName(), description, commandInfo.getUsage(), commandInfo.getAliases());
|
TFM_DynamicCommand dynamicCommand = new TFM_DynamicCommand(commandInfo.getCommandName(), description, commandInfo.getUsage(), commandInfo.getAliases());
|
||||||
|
|
||||||
|
Command existing = commandMap.getCommand(dynamicCommand.getName());
|
||||||
|
if (existing != null)
|
||||||
|
{
|
||||||
|
TFM_Log.info("Replacing command: " + existing.getName());
|
||||||
|
unregisterCommand(existing, commandMap);
|
||||||
|
}
|
||||||
|
|
||||||
commandMap.register(TotalFreedomMod.plugin.getDescription().getName(), dynamicCommand);
|
commandMap.register(TotalFreedomMod.plugin.getDescription().getName(), dynamicCommand);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TFM_Log.info("TFM commands loaded.");
|
||||||
|
}
|
||||||
|
|
||||||
|
public void unregisterCommand(String commandName)
|
||||||
|
{
|
||||||
|
CommandMap commandMap = getCommandMap();
|
||||||
|
if (commandMap != null)
|
||||||
|
{
|
||||||
|
Command command = commandMap.getCommand(commandName.toLowerCase());
|
||||||
|
if (command != null)
|
||||||
|
{
|
||||||
|
unregisterCommand(command, commandMap);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void unregisterCommand(Command command, CommandMap commandMap)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
command.unregister(commandMap);
|
||||||
|
HashMap<String, Command> knownCommands = getKnownCommands(commandMap);
|
||||||
|
if (knownCommands != null)
|
||||||
|
{
|
||||||
|
knownCommands.remove(command.getName());
|
||||||
|
for (String alias : command.getAliases())
|
||||||
|
{
|
||||||
|
knownCommands.remove(alias);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
TFM_Log.severe(ex);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@SuppressWarnings("unchecked")
|
||||||
|
public CommandMap getCommandMap()
|
||||||
|
{
|
||||||
|
Object commandMap = TFM_Util.getField(Bukkit.getServer().getPluginManager(), "commandMap");
|
||||||
|
if (commandMap != null)
|
||||||
|
{
|
||||||
|
if (commandMap instanceof CommandMap)
|
||||||
|
{
|
||||||
|
return (CommandMap) commandMap;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@SuppressWarnings("unchecked")
|
||||||
|
public HashMap<String, Command> getKnownCommands(CommandMap commandMap)
|
||||||
|
{
|
||||||
|
Object knownCommands = TFM_Util.getField(commandMap, "knownCommands");
|
||||||
|
if (knownCommands != null)
|
||||||
|
{
|
||||||
|
if (knownCommands instanceof HashMap)
|
||||||
|
{
|
||||||
|
return (HashMap<String, Command>) knownCommands;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static List<TFM_CommandInfo> getCommands()
|
private static List<TFM_CommandInfo> getCommands()
|
||||||
|
@ -26,7 +26,7 @@ public class TFM_CommandBlocker
|
|||||||
if (!(usedcommand + " ").startsWith(parts[2] + " "))
|
if (!(usedcommand + " ").startsWith(parts[2] + " "))
|
||||||
{
|
{
|
||||||
|
|
||||||
CommandMap commandMap = TFM_CommandLoader.commandMap;
|
CommandMap commandMap = TFM_CommandLoader.getInstance().getCommandMap();
|
||||||
if (commandMap == null)
|
if (commandMap == null)
|
||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
|
@ -106,8 +106,6 @@ public class TotalFreedomMod extends JavaPlugin
|
|||||||
// Heartbeat
|
// Heartbeat
|
||||||
server.getScheduler().scheduleSyncRepeatingTask(this, new TFM_Heartbeat(this), HEARTBEAT_RATE * 20L, HEARTBEAT_RATE * 20L);
|
server.getScheduler().scheduleSyncRepeatingTask(this, new TFM_Heartbeat(this), HEARTBEAT_RATE * 20L, HEARTBEAT_RATE * 20L);
|
||||||
|
|
||||||
TFM_CommandLoader.getInstance().scan();
|
|
||||||
|
|
||||||
// metrics @ http://mcstats.org/plugin/TotalFreedomMod
|
// metrics @ http://mcstats.org/plugin/TotalFreedomMod
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
@ -120,6 +118,15 @@ public class TotalFreedomMod extends JavaPlugin
|
|||||||
}
|
}
|
||||||
|
|
||||||
TFM_Log.info("Plugin Enabled - Version: " + TotalFreedomMod.pluginVersion + "." + TotalFreedomMod.buildNumber + " by Madgeek1450 and DarthSalamon");
|
TFM_Log.info("Plugin Enabled - Version: " + TotalFreedomMod.pluginVersion + "." + TotalFreedomMod.buildNumber + " by Madgeek1450 and DarthSalamon");
|
||||||
|
|
||||||
|
server.getScheduler().runTaskLater(this, new Runnable()
|
||||||
|
{
|
||||||
|
@Override
|
||||||
|
public void run()
|
||||||
|
{
|
||||||
|
TFM_CommandLoader.getInstance().scan();
|
||||||
|
}
|
||||||
|
}, 20L);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
Loading…
Reference in New Issue
Block a user