package net.minecraft.command.common; import com.google.common.collect.Maps; import java.util.List; import java.util.Map; import net.minecraft.block.Block; import net.minecraft.command.CommandBase; import net.minecraft.command.CommandException; import net.minecraft.command.CommandResultStats; import net.minecraft.command.ICommandSender; import net.minecraft.command.NumberInvalidException; import net.minecraft.command.WrongUsageException; import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Blocks; import net.minecraft.inventory.IInventory; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.nbt.JsonToNBT; import net.minecraft.nbt.NBTException; import net.minecraft.server.MinecraftServer; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.BlockPos; import net.minecraft.world.World; public class CommandReplaceItem extends CommandBase { private static final Map field_175785_a = Maps.newHashMap(); private static final String __OBFID = "CL_00002340"; public String getCommandName() { return "replaceitem"; } /** * Return the required permission level for this command. */ public int getRequiredPermissionLevel() { return 2; } public String getCommandUsage(ICommandSender sender) { return "commands.replaceitem.usage"; } public void processCommand(ICommandSender sender, String[] args) throws CommandException { if (args.length < 1) { throw new WrongUsageException("commands.replaceitem.usage", new Object[0]); } else { boolean var3; if (args[0].equals("entity")) { var3 = false; } else { if (!args[0].equals("block")) { throw new WrongUsageException("commands.replaceitem.usage", new Object[0]); } var3 = true; } byte var4; if (var3) { if (args.length < 6) { throw new WrongUsageException("commands.replaceitem.block.usage", new Object[0]); } var4 = 4; } else { if (args.length < 4) { throw new WrongUsageException("commands.replaceitem.entity.usage", new Object[0]); } var4 = 2; } int var16 = var4 + 1; int var5 = this.func_175783_e(args[var4]); Item var6; try { var6 = getItemByText(sender, args[var16]); } catch (NumberInvalidException var15) { if (Block.getBlockFromName(args[var16]) != Blocks.air) { throw var15; } var6 = null; } ++var16; int var7 = args.length > var16 ? parseInt(args[var16++], 1, 64) : 1; int var8 = args.length > var16 ? parseInt(args[var16++]) : 0; ItemStack var9 = new ItemStack(var6, var7, var8); if (args.length > var16) { String var10 = getChatComponentFromNthArg(sender, args, var16).getUnformattedText(); try { var9.setTagCompound(JsonToNBT.func_180713_a(var10)); } catch (NBTException var14) { throw new CommandException("commands.replaceitem.tagError", new Object[] {var14.getMessage()}); } } if (var9.getItem() == null) { var9 = null; } if (var3) { sender.func_174794_a(CommandResultStats.Type.AFFECTED_ITEMS, 0); BlockPos var17 = func_175757_a(sender, args, 1, false); World var11 = sender.getEntityWorld(); TileEntity var12 = var11.getTileEntity(var17); if (var12 == null || !(var12 instanceof IInventory)) { throw new CommandException("commands.replaceitem.noContainer", new Object[] {Integer.valueOf(var17.getX()), Integer.valueOf(var17.getY()), Integer.valueOf(var17.getZ())}); } IInventory var13 = (IInventory)var12; if (var5 >= 0 && var5 < var13.getSizeInventory()) { var13.setInventorySlotContents(var5, var9); } } else { Entity var18 = func_175768_b(sender, args[1]); sender.func_174794_a(CommandResultStats.Type.AFFECTED_ITEMS, 0); if (var18 instanceof EntityPlayer) { ((EntityPlayer)var18).inventoryContainer.detectAndSendChanges(); } if (!var18.func_174820_d(var5, var9)) { throw new CommandException("commands.replaceitem.failed", new Object[] {Integer.valueOf(var5), Integer.valueOf(var7), var9 == null ? "Air" : var9.getChatComponent()}); } if (var18 instanceof EntityPlayer) { ((EntityPlayer)var18).inventoryContainer.detectAndSendChanges(); } } sender.func_174794_a(CommandResultStats.Type.AFFECTED_ITEMS, var7); notifyOperators(sender, this, "commands.replaceitem.success", new Object[] {Integer.valueOf(var5), Integer.valueOf(var7), var9 == null ? "Air" : var9.getChatComponent()}); } } private int func_175783_e(String p_175783_1_) throws CommandException { if (!field_175785_a.containsKey(p_175783_1_)) { throw new CommandException("commands.generic.parameter.invalid", new Object[] {p_175783_1_}); } else { return ((Integer)field_175785_a.get(p_175783_1_)).intValue(); } } public List addTabCompletionOptions(ICommandSender sender, String[] args, BlockPos pos) { return args.length == 1 ? getListOfStringsMatchingLastWord(args, new String[] {"entity", "block"}): (args.length == 2 && args[0].equals("entity") ? getListOfStringsMatchingLastWord(args, this.func_175784_d()) : ((args.length != 3 || !args[0].equals("entity")) && (args.length != 5 || !args[0].equals("block")) ? ((args.length != 4 || !args[0].equals("entity")) && (args.length != 6 || !args[0].equals("block")) ? null : func_175762_a(args, Item.itemRegistry.getKeys())) : func_175762_a(args, field_175785_a.keySet()))); } protected String[] func_175784_d() { return MinecraftServer.getServer().getAllUsernames(); } /** * Return whether the specified command parameter index is a username parameter. */ public boolean isUsernameIndex(String[] args, int index) { return args.length > 0 && args[0].equals("entity") && index == 1; } static { int var0; for (var0 = 0; var0 < 54; ++var0) { field_175785_a.put("slot.container." + var0, Integer.valueOf(var0)); } for (var0 = 0; var0 < 9; ++var0) { field_175785_a.put("slot.hotbar." + var0, Integer.valueOf(var0)); } for (var0 = 0; var0 < 27; ++var0) { field_175785_a.put("slot.inventory." + var0, Integer.valueOf(9 + var0)); } for (var0 = 0; var0 < 27; ++var0) { field_175785_a.put("slot.enderchest." + var0, Integer.valueOf(200 + var0)); } for (var0 = 0; var0 < 8; ++var0) { field_175785_a.put("slot.villager." + var0, Integer.valueOf(300 + var0)); } for (var0 = 0; var0 < 15; ++var0) { field_175785_a.put("slot.horse." + var0, Integer.valueOf(500 + var0)); } field_175785_a.put("slot.weapon", Integer.valueOf(99)); field_175785_a.put("slot.armor.head", Integer.valueOf(103)); field_175785_a.put("slot.armor.chest", Integer.valueOf(102)); field_175785_a.put("slot.armor.legs", Integer.valueOf(101)); field_175785_a.put("slot.armor.feet", Integer.valueOf(100)); field_175785_a.put("slot.horse.saddle", Integer.valueOf(400)); field_175785_a.put("slot.horse.armor", Integer.valueOf(401)); field_175785_a.put("slot.horse.chest", Integer.valueOf(499)); } }