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