package net.minecraft.command;
import java.util.List;
import net.minecraft.nbt.JsonToNBT;
import net.minecraft.nbt.NBTException;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.BlockPos;
import net.minecraft.world.World;
public class CommandBlockData extends CommandBase
{
private static final String __OBFID = "CL_00002349";
public String getCommandName()
{
return "blockdata";
}
/**
* Return the required permission level for this command.
*/
public int getRequiredPermissionLevel()
{
return 2;
}
public String getCommandUsage(ICommandSender sender)
{
return "commands.blockdata.usage";
}
public void processCommand(ICommandSender sender, String[] args) throws CommandException
{
if (args.length < 4)
{
throw new WrongUsageException("commands.blockdata.usage", new Object[0]);
}
else
{
sender.func_174794_a(CommandResultStats.Type.AFFECTED_BLOCKS, 0);
BlockPos var3 = func_175757_a(sender, args, 0, false);
World var4 = sender.getEntityWorld();
if (!var4.isBlockLoaded(var3))
{
throw new CommandException("commands.blockdata.outOfWorld", new Object[0]);
}
else
{
TileEntity var5 = var4.getTileEntity(var3);
if (var5 == null)
{
throw new CommandException("commands.blockdata.notValid", new Object[0]);
}
else
{
NBTTagCompound var6 = new NBTTagCompound();
var5.writeToNBT(var6);
NBTTagCompound var7 = (NBTTagCompound)var6.copy();
NBTTagCompound var8;
try
{
var8 = JsonToNBT.func_180713_a(getChatComponentFromNthArg(sender, args, 3).getUnformattedText());
}
catch (NBTException var10)
{
throw new CommandException("commands.blockdata.tagError", new Object[] {var10.getMessage()});
}
var6.merge(var8);
var6.setInteger("x", var3.getX());
var6.setInteger("y", var3.getY());
var6.setInteger("z", var3.getZ());
if (var6.equals(var7))
{
throw new CommandException("commands.blockdata.failed", new Object[] {var6.toString()});
}
else
{
var5.readFromNBT(var6);
var5.markDirty();
var4.markBlockForUpdate(var3);
sender.func_174794_a(CommandResultStats.Type.AFFECTED_BLOCKS, 1);
notifyOperators(sender, this, "commands.blockdata.success", new Object[] {var6.toString()});
}
}
}
}
}
public List addTabCompletionOptions(ICommandSender sender, String[] args, BlockPos pos)
{
return args.length > 0 && args.length <= 3 ? func_175771_a(args, 0, pos) : null;
}
}