    001    package net.minecraft.src;
    002
    003    import cpw.mods.fml.common.Side;
    004    import cpw.mods.fml.common.asm.SideOnly;
    005    import net.minecraft.server.MinecraftServer;
    006
    007    public class TileEntityCommandBlock extends TileEntity implements ICommandSender
    008    {
    009        private String field_82354_a = "";
    010
    011        public void func_82352_b(String par1Str)
    012        {
    013            this.field_82354_a = par1Str;
    014            this.onInventoryChanged();
    015        }
    016
    017        @SideOnly(Side.CLIENT)
    018
    019        /**
    020         * Return the command this command block is set to execute.
    021         */
    022        public String getCommand()
    023        {
    024            return this.field_82354_a;
    025        }
    026
    027        /**
    028         * Execute the command, called when the command block is powered.
    029         */
    030        public void executeCommandOnPowered(World par1World)
    031        {
    032            if (!par1World.isRemote)
    033            {
    034                MinecraftServer var2 = MinecraftServer.getServer();
    035
    036                if (var2 != null && var2.isCommandBlockEnabled())
    037                {
    038                    ICommandManager var3 = var2.getCommandManager();
    039                    var3.executeCommand(this, this.field_82354_a);
    040                }
    041            }
    042        }
    043
    044        /**
    045         * Gets the name of this command sender (usually username, but possibly "Rcon")
    046         */
    047        public String getCommandSenderName()
    048        {
    049            return "@";
    050        }
    051
    052        public void sendChatToPlayer(String par1Str) {}
    053
    054        /**
    055         * Returns true if the command sender is allowed to use the given command.
    056         */
    057        public boolean canCommandSenderUseCommand(int par1, String par2Str)
    058        {
    059            return par1 <= 2;
    060        }
    061
    062        /**
    063         * Translates and formats the given string key with the given arguments.
    064         */
    065        public String translateString(String par1Str, Object ... par2ArrayOfObj)
    066        {
    067            return par1Str;
    068        }
    069
    070        /**
    071         * Writes a tile entity to NBT.
    072         */
    073        public void writeToNBT(NBTTagCompound par1NBTTagCompound)
    074        {
    075            super.writeToNBT(par1NBTTagCompound);
    076            par1NBTTagCompound.setString("Command", this.field_82354_a);
    077        }
    078
    079        /**
    080         * Reads a tile entity from NBT.
    081         */
    082        public void readFromNBT(NBTTagCompound par1NBTTagCompound)
    083        {
    084            super.readFromNBT(par1NBTTagCompound);
    085            this.field_82354_a = par1NBTTagCompound.getString("Command");
    086        }
    087
    088        /**
    089         * Return the coordinates for this player as ChunkCoordinates.
    090         */
    091        public ChunkCoordinates getPlayerCoordinates()
    092        {
    093            return new ChunkCoordinates(this.xCoord, this.yCoord, this.zCoord);
    094        }
    095
    096        /**
    097         * Overriden in a sign to provide the text.
    098         */
    099        public Packet getDescriptionPacket()
    100        {
    101            NBTTagCompound var1 = new NBTTagCompound();
    102            this.writeToNBT(var1);
    103            return new Packet132TileEntityData(this.xCoord, this.yCoord, this.zCoord, 2, var1);
    104        }
    105    }