package net.minecraft.command.server; import com.google.common.base.Predicate; import com.google.common.collect.Iterators; import com.google.common.collect.Lists; import java.util.ArrayList; import java.util.Iterator; 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.player.EntityPlayerMP; import net.minecraft.server.MinecraftServer; import net.minecraft.stats.Achievement; import net.minecraft.stats.AchievementList; import net.minecraft.stats.StatBase; import net.minecraft.stats.StatList; import net.minecraft.util.BlockPos; public class CommandAchievement extends CommandBase { private static final String __OBFID = "CL_00000113"; public String getCommandName() { return "achievement"; } /** * Return the required permission level for this command. */ public int getRequiredPermissionLevel() { return 2; } public String getCommandUsage(ICommandSender sender) { return "commands.achievement.usage"; } public void processCommand(ICommandSender sender, String[] args) throws CommandException { if (args.length < 2) { throw new WrongUsageException("commands.achievement.usage", new Object[0]); } else { final StatBase var3 = StatList.getOneShotStat(args[1]); if (var3 == null && !args[1].equals("*")) { throw new CommandException("commands.achievement.unknownAchievement", new Object[] {args[1]}); } else { final EntityPlayerMP var4 = args.length >= 3 ? getPlayer(sender, args[2]) : getCommandSenderAsPlayer(sender); boolean var5 = args[0].equalsIgnoreCase("give"); boolean var6 = args[0].equalsIgnoreCase("take"); if (var5 || var6) { if (var3 == null) { Iterator var11; Achievement var12; if (var5) { var11 = AchievementList.achievementList.iterator(); while (var11.hasNext()) { var12 = (Achievement)var11.next(); var4.triggerAchievement(var12); } notifyOperators(sender, this, "commands.achievement.give.success.all", new Object[] {var4.getName()}); } else if (var6) { var11 = Lists.reverse(AchievementList.achievementList).iterator(); while (var11.hasNext()) { var12 = (Achievement)var11.next(); var4.func_175145_a(var12); } notifyOperators(sender, this, "commands.achievement.take.success.all", new Object[] {var4.getName()}); } } else { if (var3 instanceof Achievement) { Achievement var7 = (Achievement)var3; ArrayList var8; Iterator var9; Achievement var10; if (var5) { if (var4.getStatFile().hasAchievementUnlocked(var7)) { throw new CommandException("commands.achievement.alreadyHave", new Object[] {var4.getName(), var3.func_150955_j()}); } for (var8 = Lists.newArrayList(); var7.parentAchievement != null && !var4.getStatFile().hasAchievementUnlocked(var7.parentAchievement); var7 = var7.parentAchievement) { var8.add(var7.parentAchievement); } var9 = Lists.reverse(var8).iterator(); while (var9.hasNext()) { var10 = (Achievement)var9.next(); var4.triggerAchievement(var10); } } else if (var6) { if (!var4.getStatFile().hasAchievementUnlocked(var7)) { throw new CommandException("commands.achievement.dontHave", new Object[] {var4.getName(), var3.func_150955_j()}); } for (var8 = Lists.newArrayList(Iterators.filter(AchievementList.achievementList.iterator(), new Predicate() { private static final String __OBFID = "CL_00002350"; public boolean func_179605_a(Achievement p_179605_1_) { return var4.getStatFile().hasAchievementUnlocked(p_179605_1_) && p_179605_1_ != var3; } public boolean apply(Object p_apply_1_) { return this.func_179605_a((Achievement)p_apply_1_); } })); var7.parentAchievement != null && var4.getStatFile().hasAchievementUnlocked(var7.parentAchievement); var7 = var7.parentAchievement) { var8.remove(var7.parentAchievement); } var9 = var8.iterator(); while (var9.hasNext()) { var10 = (Achievement)var9.next(); var4.func_175145_a(var10); } } } if (var5) { var4.triggerAchievement(var3); notifyOperators(sender, this, "commands.achievement.give.success.one", new Object[] {var4.getName(), var3.func_150955_j()}); } else if (var6) { var4.func_175145_a(var3); notifyOperators(sender, this, "commands.achievement.take.success.one", new Object[] {var3.func_150955_j(), var4.getName()}); } } } } } } public List addTabCompletionOptions(ICommandSender sender, String[] args, BlockPos pos) { if (args.length == 1) { return getListOfStringsMatchingLastWord(args, new String[] {"give", "take"}); } else if (args.length != 2) { return args.length == 3 ? getListOfStringsMatchingLastWord(args, MinecraftServer.getServer().getAllUsernames()) : null; } else { ArrayList var4 = Lists.newArrayList(); Iterator var5 = StatList.allStats.iterator(); while (var5.hasNext()) { StatBase var6 = (StatBase)var5.next(); var4.add(var6.statId); } return func_175762_a(args, var4); } } /** * Return whether the specified command parameter index is a username parameter. */ public boolean isUsernameIndex(String[] args, int index) { return index == 2; } }