package net.minecraft.tileentity;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import net.minecraft.command.ICommandManager;
import net.minecraft.command.ICommandSender;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.network.packet.Packet;
import net.minecraft.network.packet.Packet132TileEntityData;
import net.minecraft.server.MinecraftServer;
import net.minecraft.util.ChunkCoordinates;
import net.minecraft.world.World;
public class TileEntityCommandBlock extends TileEntity implements ICommandSender
{
private int succesCount = 0;
/** The command this block will execute when powered. */
private String command = "";
/** The name of command sender (usually username, but possibly "Rcon") */
private String commandSenderName = "@";
/**
* Sets the command this block will execute when powered.
*/
public void setCommand(String par1Str)
{
this.command = par1Str;
this.onInventoryChanged();
}
@SideOnly(Side.CLIENT)
/**
* Return the command this command block is set to execute.
*/
public String getCommand()
{
return this.command;
}
/**
* Execute the command, called when the command block is powered.
*/
public int executeCommandOnPowered(World par1World)
{
if (par1World.isRemote)
{
return 0;
}
else
{
MinecraftServer minecraftserver = MinecraftServer.getServer();
if (minecraftserver != null && minecraftserver.isCommandBlockEnabled())
{
ICommandManager icommandmanager = minecraftserver.getCommandManager();
return icommandmanager.executeCommand(this, this.command);
}
else
{
return 0;
}
}
}
/**
* Gets the name of this command sender (usually username, but possibly "Rcon")
*/
public String getCommandSenderName()
{
return this.commandSenderName;
}
/**
* Sets the name of the command sender
*/
public void setCommandSenderName(String par1Str)
{
this.commandSenderName = par1Str;
}
public void sendChatToPlayer(String par1Str) {}
/**
* Returns true if the command sender is allowed to use the given command.
*/
public boolean canCommandSenderUseCommand(int par1, String par2Str)
{
return par1 <= 2;
}
/**
* Translates and formats the given string key with the given arguments.
*/
public String translateString(String par1Str, Object ... par2ArrayOfObj)
{
return par1Str;
}
/**
* Writes a tile entity to NBT.
*/
public void writeToNBT(NBTTagCompound par1NBTTagCompound)
{
super.writeToNBT(par1NBTTagCompound);
par1NBTTagCompound.setString("Command", this.command);
par1NBTTagCompound.setInteger("SuccessCount", this.succesCount);
par1NBTTagCompound.setString("CustomName", this.commandSenderName);
}
/**
* Reads a tile entity from NBT.
*/
public void readFromNBT(NBTTagCompound par1NBTTagCompound)
{
super.readFromNBT(par1NBTTagCompound);
this.command = par1NBTTagCompound.getString("Command");
this.succesCount = par1NBTTagCompound.getInteger("SuccessCount");
if (par1NBTTagCompound.hasKey("CustomName"))
{
this.commandSenderName = par1NBTTagCompound.getString("CustomName");
}
}
/**
* Return the position for this command sender.
*/
public ChunkCoordinates getPlayerCoordinates()
{
return new ChunkCoordinates(this.xCoord, this.yCoord, this.zCoord);
}
/**
* Overriden in a sign to provide the text.
*/
public Packet getDescriptionPacket()
{
NBTTagCompound nbttagcompound = new NBTTagCompound();
this.writeToNBT(nbttagcompound);
return new Packet132TileEntityData(this.xCoord, this.yCoord, this.zCoord, 2, nbttagcompound);
}
public int func_96103_d()
{
return this.succesCount;
}
public void func_96102_a(int par1)
{
this.succesCount = par1;
}
}