Is there a way to execute code on the server when a player executes a command? Here's what I've been trying:
I've tried this in both my common and server proxy:
public void serverLoad(FMLServerStartingEvent e) {
e.registerServerCommand(new CommandQuest());
}
And here's the command:
public class CommandQuest implements ICommand {
private final ArrayList<String> _aliases;
public CommandQuest()
{
_aliases = new ArrayList<String>();
_aliases.add("quest");
}
@Override
public int compareTo(Object arg0) {
return 0;
}
@Override
public String getCommandName() {
return "quest";
}
@Override
public String getCommandUsage(ICommandSender sender) {
return "quest";
}
@Override
public List<String> getCommandAliases() {
return this._aliases;
}
@Override
public void processCommand(ICommandSender sender, String[] args) {
if (args.length == 0) {
sender.addChatMessage(new ChatComponentText("Requires parms."));
} else {
if (args[0].equalsIgnoreCase("reload")) {
if (sender.getEntityWorld().isRemote) {
QuestManager.getInstance().loadQuests();
sender.addChatMessage(new ChatComponentText("Quests reloaded."));
System.out.println("server reloaded quests!");
}
}
}
}
@Override
public boolean canCommandSenderUseCommand(ICommandSender sender) {
return true;
}
@Override
public List<String> addTabCompletionOptions(ICommandSender sender, String[] args) {
return null;
}
@Override
public boolean isUsernameIndex(String[] sender, int index) {
return false;
}
}
In the processCommand function I'm checking if the sender is remote, but it only ever seems to be called once for the client and never on the server. Is there a special way to register a server side command?