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 }