package net.sourceforge.pain.tinylib.logic.event.console.command; import net.sourceforge.pain.tinylib.data.type.*; import net.sourceforge.pain.tinylib.logic.event.console.*; import net.sourceforge.pain.tinylib.logic.fn.*; import net.sourceforge.pain.tinylib.logic.fn.util.*; import net.sourceforge.pain.tinylib.plugin.command.*; import java.util.*; public final class ShowGrants extends GrantedCommand { public void processCommand() { String playerName = commandParams; if (playerName == null) { showHelp(); return; } final Player target = ("self".equals(playerName)) ? player : GlobalFindFn.findPlayerByName(playerName); if (target == null) { MessageOutFn.outln(console, "No player found with name {c" + Utils.formatName(playerName) + "{x"); return; } boolean granted = isShowGrants(); final Set commandsSet = granted ? target.getGrantedCommands() : target.getRejectedCommands(); MessageOutFn.outln(console, (granted ? "Granted" : "Rejected") + " commands for " + target.getInteractiveName()); if (commandsSet.isEmpty()) { MessageOutFn.outln(console, "Not found."); } else if (commandsSet.contains("_all")) { // only implementor has grant "_all". // Using this constant we simplify initial world creation script. MessageOutFn.outln(console, "All available commands allowed!"); } else { CommandMapper commandMapper = ConsoleInputEvent.getCommandMapper(); StringBuffer b = new StringBuffer(100); for (Iterator it = commandsSet.iterator(); it.hasNext();) { b.delete(0, b.length()); String commandClass = (String) it.next(); Set commands = commandMapper.getAllCommandsForClassName(commandClass); if (commands == null || commands.isEmpty()) { b.append("No command names mapped"); } else { for (Iterator it2 = commands.iterator(); it2.hasNext();) { String commandName = (String) it2.next(); if (b.length() > 0) { b.append(", "); } b.append("{c").append(commandName).append("{x"); } } MessageOutFn.outln(console, "Class: {c" + commandClass + "{x Commands:" + b); } final int n = commandsSet.size(); MessageOutFn.outln(console, "Found: " + n + " unique " + LangUtil.s(n, "command") + " in list"); } } public void showHelp() { if (isShowGrants()) { MessageOutFn.outln(console, command.name + ": shows granted commands to player"); MessageOutFn.outln(console, "Usage: " + command.name + " <player_name> "); } else { // REJECTS MessageOutFn.outln(console, command.name + ": shows rejected to player commands"); MessageOutFn.outln(console, "Usage: " + command.name + " <player_name> "); } } private boolean isShowGrants() { return "GRANTS".equals(command.tag); } }