001package net.minecraft.command;
002
003import java.util.Iterator;
004import net.minecraft.entity.player.EntityPlayerMP;
005import net.minecraft.scoreboard.ServerCommandScoreboard;
006import net.minecraft.scoreboard.ServerCommandTestFor;
007import net.minecraft.server.MinecraftServer;
008import net.minecraft.tileentity.TileEntityCommandBlock;
009import net.minecraft.util.EnumChatFormatting;
010
011public class ServerCommandManager extends CommandHandler implements IAdminCommand
012{
013    public ServerCommandManager()
014    {
015        this.registerCommand(new CommandTime());
016        this.registerCommand(new CommandGameMode());
017        this.registerCommand(new CommandDifficulty());
018        this.registerCommand(new CommandDefaultGameMode());
019        this.registerCommand(new CommandKill());
020        this.registerCommand(new CommandToggleDownfall());
021        this.registerCommand(new CommandWeather());
022        this.registerCommand(new CommandXP());
023        this.registerCommand(new CommandServerTp());
024        this.registerCommand(new CommandGive());
025        this.registerCommand(new CommandEffect());
026        this.registerCommand(new CommandEnchant());
027        this.registerCommand(new CommandServerEmote());
028        this.registerCommand(new CommandShowSeed());
029        this.registerCommand(new CommandHelp());
030        this.registerCommand(new CommandDebug());
031        this.registerCommand(new CommandServerMessage());
032        this.registerCommand(new CommandServerSay());
033        this.registerCommand(new CommandSetSpawnpoint());
034        this.registerCommand(new CommandGameRule());
035        this.registerCommand(new CommandClearInventory());
036        this.registerCommand(new ServerCommandTestFor());
037        this.registerCommand(new ServerCommandScoreboard());
038
039        if (MinecraftServer.getServer().isDedicatedServer())
040        {
041            this.registerCommand(new CommandServerOp());
042            this.registerCommand(new CommandServerDeop());
043            this.registerCommand(new CommandServerStop());
044            this.registerCommand(new CommandServerSaveAll());
045            this.registerCommand(new CommandServerSaveOff());
046            this.registerCommand(new CommandServerSaveOn());
047            this.registerCommand(new CommandServerBanIp());
048            this.registerCommand(new CommandServerPardonIp());
049            this.registerCommand(new CommandServerBan());
050            this.registerCommand(new CommandServerBanlist());
051            this.registerCommand(new CommandServerPardon());
052            this.registerCommand(new CommandServerKick());
053            this.registerCommand(new CommandServerList());
054            this.registerCommand(new CommandServerWhitelist());
055        }
056        else
057        {
058            this.registerCommand(new CommandServerPublishLocal());
059        }
060
061        CommandBase.setAdminCommander(this);
062    }
063
064    /**
065     * Sends a message to the admins of the server from a given CommandSender with the given resource string and given
066     * extra srings. If the int par2 is even or zero, the original sender is also notified.
067     */
068    public void notifyAdmins(ICommandSender par1ICommandSender, int par2, String par3Str, Object ... par4ArrayOfObj)
069    {
070        boolean flag = true;
071
072        if (par1ICommandSender instanceof TileEntityCommandBlock && !MinecraftServer.getServer().worldServers[0].getGameRules().getGameRuleBooleanValue("commandBlockOutput"))
073        {
074            flag = false;
075        }
076
077        if (flag)
078        {
079            Iterator iterator = MinecraftServer.getServer().getConfigurationManager().playerEntityList.iterator();
080
081            while (iterator.hasNext())
082            {
083                EntityPlayerMP entityplayermp = (EntityPlayerMP)iterator.next();
084
085                if (entityplayermp != par1ICommandSender && MinecraftServer.getServer().getConfigurationManager().areCommandsAllowed(entityplayermp.username))
086                {
087                    entityplayermp.sendChatToPlayer("" + EnumChatFormatting.GRAY + "" + EnumChatFormatting.ITALIC + "[" + par1ICommandSender.getCommandSenderName() + ": " + entityplayermp.translateString(par3Str, par4ArrayOfObj) + "]");
088                }
089            }
090        }
091
092        if (par1ICommandSender != MinecraftServer.getServer())
093        {
094            MinecraftServer.getServer().func_98033_al().func_98233_a("[" + par1ICommandSender.getCommandSenderName() + ": " + MinecraftServer.getServer().translateString(par3Str, par4ArrayOfObj) + "]");
095        }
096
097        if ((par2 & 1) != 1)
098        {
099            par1ICommandSender.sendChatToPlayer(par1ICommandSender.translateString(par3Str, par4ArrayOfObj));
100        }
101    }
102}