package net.minecraft.command.server; import java.util.List; import net.minecraft.command.CommandBase; import net.minecraft.command.CommandException; import net.minecraft.command.ICommandSender; import net.minecraft.command.WrongUsageException; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityList; import net.minecraft.entity.EntityLiving; import net.minecraft.entity.IEntityLivingData; import net.minecraft.entity.effect.EntityLightningBolt; import net.minecraft.nbt.JsonToNBT; import net.minecraft.nbt.NBTException; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.BlockPos; import net.minecraft.util.IChatComponent; import net.minecraft.util.Vec3; import net.minecraft.world.World; public class CommandSummon extends CommandBase { private static final String __OBFID = "CL_00001158"; public String getCommandName() { return "summon"; } /** * Return the required permission level for this command. */ public int getRequiredPermissionLevel() { return 2; } public String getCommandUsage(ICommandSender sender) { return "commands.summon.usage"; } public void processCommand(ICommandSender sender, String[] args) throws CommandException { if (args.length < 1) { throw new WrongUsageException("commands.summon.usage", new Object[0]); } else { String var3 = args[0]; BlockPos var4 = sender.getPosition(); Vec3 var5 = sender.getPositionVector(); double var6 = var5.xCoord; double var8 = var5.yCoord; double var10 = var5.zCoord; if (args.length >= 4) { var6 = func_175761_b(var6, args[1], true); var8 = func_175761_b(var8, args[2], false); var10 = func_175761_b(var10, args[3], true); var4 = new BlockPos(var6, var8, var10); } World var12 = sender.getEntityWorld(); if (!var12.isBlockLoaded(var4)) { throw new CommandException("commands.summon.outOfWorld", new Object[0]); } else if ("LightningBolt".equals(var3)) { var12.addWeatherEffect(new EntityLightningBolt(var12, var6, var8, var10)); notifyOperators(sender, this, "commands.summon.success", new Object[0]); } else { NBTTagCompound var13 = new NBTTagCompound(); boolean var14 = false; if (args.length >= 5) { IChatComponent var15 = getChatComponentFromNthArg(sender, args, 4); try { var13 = JsonToNBT.func_180713_a(var15.getUnformattedText()); var14 = true; } catch (NBTException var20) { throw new CommandException("commands.summon.tagError", new Object[] {var20.getMessage()}); } } var13.setString("id", var3); Entity var21; try { var21 = EntityList.createEntityFromNBT(var13, var12); } catch (RuntimeException var19) { throw new CommandException("commands.summon.failed", new Object[0]); } if (var21 == null) { throw new CommandException("commands.summon.failed", new Object[0]); } else { var21.setLocationAndAngles(var6, var8, var10, var21.rotationYaw, var21.rotationPitch); if (!var14 && var21 instanceof EntityLiving) { ((EntityLiving)var21).func_180482_a(var12.getDifficultyForLocation(new BlockPos(var21)), (IEntityLivingData)null); } var12.spawnEntityInWorld(var21); Entity var16 = var21; for (NBTTagCompound var17 = var13; var16 != null && var17.hasKey("Riding", 10); var17 = var17.getCompoundTag("Riding")) { Entity var18 = EntityList.createEntityFromNBT(var17.getCompoundTag("Riding"), var12); if (var18 != null) { var18.setLocationAndAngles(var6, var8, var10, var18.rotationYaw, var18.rotationPitch); var12.spawnEntityInWorld(var18); var16.mountEntity(var18); } var16 = var18; } notifyOperators(sender, this, "commands.summon.success", new Object[0]); } } } } public List addTabCompletionOptions(ICommandSender sender, String[] args, BlockPos pos) { return args.length == 1 ? func_175762_a(args, EntityList.func_180124_b()) : (args.length > 1 && args.length <= 4 ? func_175771_a(args, 1, pos) : null); } }