001 package net.minecraft.command; 002 003 import java.util.Collections; 004 import java.util.HashMap; 005 import java.util.List; 006 import java.util.Map; 007 import java.util.regex.Matcher; 008 import java.util.regex.Pattern; 009 import net.minecraft.entity.player.EntityPlayerMP; 010 import net.minecraft.server.MinecraftServer; 011 import net.minecraft.util.ChunkCoordinates; 012 import net.minecraft.util.MathHelper; 013 import net.minecraft.world.EnumGameType; 014 015 public class PlayerSelector 016 { 017 private static final Pattern field_82389_a = Pattern.compile("^@([parf])(?:\\[([\\w=,-]*)\\])?$"); 018 private static final Pattern field_82387_b = Pattern.compile("\\G(-?\\w*)(?:$|,)"); 019 private static final Pattern field_82388_c = Pattern.compile("\\G(\\w{1,2})=(-?\\w+)(?:$|,)"); 020 021 public static EntityPlayerMP func_82386_a(ICommandSender par0ICommandSender, String par1Str) 022 { 023 EntityPlayerMP[] var2 = func_82380_c(par0ICommandSender, par1Str); 024 return var2 != null && var2.length == 1 ? var2[0] : null; 025 } 026 027 public static String func_82385_b(ICommandSender par0ICommandSender, String par1Str) 028 { 029 EntityPlayerMP[] var2 = func_82380_c(par0ICommandSender, par1Str); 030 031 if (var2 != null && var2.length != 0) 032 { 033 String[] var3 = new String[var2.length]; 034 035 for (int var4 = 0; var4 < var3.length; ++var4) 036 { 037 var3[var4] = var2[var4].getEntityName(); 038 } 039 040 return CommandBase.joinNiceString(var3); 041 } 042 else 043 { 044 return null; 045 } 046 } 047 048 public static EntityPlayerMP[] func_82380_c(ICommandSender par0ICommandSender, String par1Str) 049 { 050 Matcher var2 = field_82389_a.matcher(par1Str); 051 052 if (var2.matches()) 053 { 054 Map var3 = func_82381_h(var2.group(2)); 055 String var4 = var2.group(1); 056 int var5 = func_82384_c(var4); 057 int var6 = func_82379_d(var4); 058 int var7 = func_82375_f(var4); 059 int var8 = func_82376_e(var4); 060 int var9 = func_82382_g(var4); 061 int var10 = EnumGameType.NOT_SET.getID(); 062 ChunkCoordinates var11 = par0ICommandSender.getPlayerCoordinates(); 063 064 if (var3.containsKey("rm")) 065 { 066 var5 = MathHelper.parseIntWithDefault((String)var3.get("rm"), var5); 067 } 068 069 if (var3.containsKey("r")) 070 { 071 var6 = MathHelper.parseIntWithDefault((String)var3.get("r"), var6); 072 } 073 074 if (var3.containsKey("lm")) 075 { 076 var7 = MathHelper.parseIntWithDefault((String)var3.get("lm"), var7); 077 } 078 079 if (var3.containsKey("l")) 080 { 081 var8 = MathHelper.parseIntWithDefault((String)var3.get("l"), var8); 082 } 083 084 if (var3.containsKey("x")) 085 { 086 var11.posX = MathHelper.parseIntWithDefault((String)var3.get("x"), var11.posX); 087 } 088 089 if (var3.containsKey("y")) 090 { 091 var11.posY = MathHelper.parseIntWithDefault((String)var3.get("y"), var11.posY); 092 } 093 094 if (var3.containsKey("z")) 095 { 096 var11.posZ = MathHelper.parseIntWithDefault((String)var3.get("z"), var11.posZ); 097 } 098 099 if (var3.containsKey("m")) 100 { 101 var10 = MathHelper.parseIntWithDefault((String)var3.get("m"), var10); 102 } 103 104 if (var3.containsKey("c")) 105 { 106 var9 = MathHelper.parseIntWithDefault((String)var3.get("c"), var9); 107 } 108 109 List var12; 110 111 if (!var4.equals("p") && !var4.equals("a")) 112 { 113 if (!var4.equals("r")) 114 { 115 return null; 116 } 117 else 118 { 119 var12 = MinecraftServer.getServer().getConfigurationManager().findPlayers(var11, var5, var6, 0, var10, var7, var8); 120 Collections.shuffle(var12); 121 var12 = var12.subList(0, Math.min(var9, var12.size())); 122 return var12 != null && !var12.isEmpty() ? (EntityPlayerMP[])var12.toArray(new EntityPlayerMP[0]) : new EntityPlayerMP[0]; 123 } 124 } 125 else 126 { 127 var12 = MinecraftServer.getServer().getConfigurationManager().findPlayers(var11, var5, var6, var9, var10, var7, var8); 128 return var12 != null && !var12.isEmpty() ? (EntityPlayerMP[])var12.toArray(new EntityPlayerMP[0]) : new EntityPlayerMP[0]; 129 } 130 } 131 else 132 { 133 return null; 134 } 135 } 136 137 public static boolean func_82377_a(String par0Str) 138 { 139 Matcher var1 = field_82389_a.matcher(par0Str); 140 141 if (var1.matches()) 142 { 143 Map var2 = func_82381_h(var1.group(2)); 144 String var3 = var1.group(1); 145 int var4 = func_82382_g(var3); 146 147 if (var2.containsKey("c")) 148 { 149 var4 = MathHelper.parseIntWithDefault((String)var2.get("c"), var4); 150 } 151 152 return var4 != 1; 153 } 154 else 155 { 156 return false; 157 } 158 } 159 160 public static boolean func_82383_a(String par0Str, String par1Str) 161 { 162 Matcher var2 = field_82389_a.matcher(par0Str); 163 164 if (!var2.matches()) 165 { 166 return false; 167 } 168 else 169 { 170 String var3 = var2.group(1); 171 return par1Str == null || par1Str.equals(var3); 172 } 173 } 174 175 public static boolean func_82378_b(String par0Str) 176 { 177 return func_82383_a(par0Str, (String)null); 178 } 179 180 private static final int func_82384_c(String par0Str) 181 { 182 return 0; 183 } 184 185 private static final int func_82379_d(String par0Str) 186 { 187 return 0; 188 } 189 190 private static final int func_82376_e(String par0Str) 191 { 192 return Integer.MAX_VALUE; 193 } 194 195 private static final int func_82375_f(String par0Str) 196 { 197 return 0; 198 } 199 200 private static final int func_82382_g(String par0Str) 201 { 202 return par0Str.equals("a") ? 0 : 1; 203 } 204 205 private static Map func_82381_h(String par0Str) 206 { 207 HashMap var1 = new HashMap(); 208 209 if (par0Str == null) 210 { 211 return var1; 212 } 213 else 214 { 215 Matcher var2 = field_82387_b.matcher(par0Str); 216 int var3 = 0; 217 int var4; 218 219 for (var4 = -1; var2.find(); var4 = var2.end()) 220 { 221 String var5 = null; 222 223 switch (var3++) 224 { 225 case 0: 226 var5 = "x"; 227 break; 228 case 1: 229 var5 = "y"; 230 break; 231 case 2: 232 var5 = "z"; 233 break; 234 case 3: 235 var5 = "r"; 236 } 237 238 if (var5 != null && var2.group(1).length() > 0) 239 { 240 var1.put(var5, var2.group(1)); 241 } 242 } 243 244 if (var4 < par0Str.length()) 245 { 246 var2 = field_82388_c.matcher(var4 == -1 ? par0Str : par0Str.substring(var4)); 247 248 while (var2.find()) 249 { 250 var1.put(var2.group(1), var2.group(2)); 251 } 252 } 253 254 return var1; 255 } 256 } 257 }