Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package net.minecraft.server.v1_10_R1;
- import com.google.common.base.Predicate;
- import com.google.common.base.Predicates;
- import com.google.common.collect.ComparisonChain;
- import com.google.common.collect.Lists;
- import com.google.common.collect.Maps;
- import com.google.common.collect.Sets;
- import java.util.ArrayList;
- import java.util.Collections;
- import java.util.Comparator;
- import java.util.HashMap;
- import java.util.List;
- import java.util.Map;
- import java.util.Map.Entry;
- import java.util.Set;
- import java.util.regex.Matcher;
- import java.util.regex.Pattern;
- import javax.annotation.Nullable;
- public class PlayerSelector
- {
- private static final Pattern a = Pattern.compile("^@([pare])(?:\\[([\\w=,!-]*)\\])?$");
- private static final Pattern b = Pattern.compile("\\G([-!]?[\\w-]*)(?:$|,)");
- private static final Pattern c = Pattern.compile("\\G(\\w+)=([-!]?[\\w-]*)(?:$|,)");
- private static final Set<String> d = Sets.newHashSet(new String[] { "x", "y", "z", "dx", "dy", "dz", "rm", "r" });
- @Nullable
- public static EntityPlayer getPlayer(ICommandListener paramICommandListener, String paramString)
- {
- return (EntityPlayer)getEntity(paramICommandListener, paramString, EntityPlayer.class);
- }
- @Nullable
- public static <T extends Entity> T getEntity(ICommandListener paramICommandListener, String paramString, Class<? extends T> paramClass)
- {
- List localList = getPlayers(paramICommandListener, paramString, paramClass);
- return localList.size() == 1 ? (Entity)localList.get(0) : null;
- }
- @Nullable
- public static IChatBaseComponent getPlayerNames(ICommandListener paramICommandListener, String paramString)
- {
- List localList = getPlayers(paramICommandListener, paramString, Entity.class);
- if (localList.isEmpty()) {
- return null;
- }
- ArrayList localArrayList = Lists.newArrayList();
- for (Entity localEntity : localList) {
- localArrayList.add(localEntity.getScoreboardDisplayName());
- }
- return CommandAbstract.a(localArrayList);
- }
- public static <T extends Entity> List<T> getPlayers(ICommandListener paramICommandListener, String paramString, Class<? extends T> paramClass)
- {
- Matcher localMatcher = a.matcher(paramString);
- if ((localMatcher.matches()) && (paramICommandListener.a(1, "@")))
- {
- Map localMap = c(localMatcher.group(2));
- if (!b(paramICommandListener, localMap)) {
- return Collections.emptyList();
- }
- String str = localMatcher.group(1);
- BlockPosition localBlockPosition = a(localMap, paramICommandListener.getChunkCoordinates());
- Vec3D localVec3D = b(localMap, paramICommandListener.d());
- List localList = a(paramICommandListener, localMap);
- ArrayList localArrayList1 = Lists.newArrayList();
- for (World localWorld : localList) {
- if (localWorld != null)
- {
- ArrayList localArrayList2 = Lists.newArrayList();
- localArrayList2.addAll(a(localMap, str));
- localArrayList2.addAll(b(localMap));
- localArrayList2.addAll(c(localMap));
- localArrayList2.addAll(d(localMap));
- localArrayList2.addAll(c(paramICommandListener, localMap));
- localArrayList2.addAll(e(localMap));
- localArrayList2.addAll(f(localMap));
- localArrayList2.addAll(a(localMap, localVec3D));
- localArrayList2.addAll(g(localMap));
- localArrayList1.addAll(a(localMap, paramClass, localArrayList2, str, localWorld, localBlockPosition));
- }
- }
- return a(localArrayList1, localMap, paramICommandListener, paramClass, str, localVec3D);
- }
- return Collections.emptyList();
- }
- private static List<World> a(ICommandListener paramICommandListener, Map<String, String> paramMap)
- {
- ArrayList localArrayList = Lists.newArrayList();
- if (h(paramMap)) {
- localArrayList.add(paramICommandListener.getWorld());
- } else {
- Collections.addAll(localArrayList, paramICommandListener.h().worldServer);
- }
- return localArrayList;
- }
- private static <T extends Entity> boolean b(ICommandListener paramICommandListener, Map<String, String> paramMap)
- {
- String str = b(paramMap, "type");
- str = (str != null) && (str.startsWith("!")) ? str.substring(1) : str;
- if ((str != null) && (!EntityTypes.b(str)))
- {
- ChatMessage localChatMessage = new ChatMessage("commands.generic.entity.invalidType", new Object[] { str });
- localChatMessage.getChatModifier().setColor(EnumChatFormat.RED);
- paramICommandListener.sendMessage(localChatMessage);
- return false;
- }
- return true;
- }
- private static List<Predicate<Entity>> a(Map<String, String> paramMap, String paramString)
- {
- ArrayList localArrayList = Lists.newArrayList();
- String str1 = b(paramMap, "type");
- final boolean bool = (str1 != null) && (str1.startsWith("!"));
- if (bool) {
- str1 = str1.substring(1);
- }
- String str2 = str1;
- int i = !paramString.equals("e") ? 1 : 0;
- int j = (paramString.equals("r")) && (str1 != null) ? 1 : 0;
- if (((str1 != null) && (paramString.equals("e"))) || (j != 0)) {
- localArrayList.add(new Predicate()
- {
- public boolean a(@Nullable Entity paramAnonymousEntity)
- {
- return EntityTypes.a(paramAnonymousEntity, this.a) != bool;
- }
- });
- } else if (i != 0) {
- localArrayList.add(new Predicate()
- {
- public boolean a(@Nullable Entity paramAnonymousEntity)
- {
- return paramAnonymousEntity instanceof EntityHuman;
- }
- });
- }
- return localArrayList;
- }
- private static List<Predicate<Entity>> b(Map<String, String> paramMap)
- {
- ArrayList localArrayList = Lists.newArrayList();
- int i = a(paramMap, "lm", -1);
- final int j = a(paramMap, "l", -1);
- if ((i > -1) || (j > -1)) {
- localArrayList.add(new Predicate()
- {
- public boolean a(@Nullable Entity paramAnonymousEntity)
- {
- if (!(paramAnonymousEntity instanceof EntityPlayer)) {
- return false;
- }
- EntityPlayer localEntityPlayer = (EntityPlayer)paramAnonymousEntity;
- return ((this.a <= -1) || (localEntityPlayer.expLevel >= this.a)) && ((j <= -1) || (localEntityPlayer.expLevel <= j));
- }
- });
- }
- return localArrayList;
- }
- private static List<Predicate<Entity>> c(Map<String, String> paramMap)
- {
- ArrayList localArrayList = Lists.newArrayList();
- String str = b(paramMap, "m");
- if (str == null) {
- return localArrayList;
- }
- boolean bool = str.startsWith("!");
- if (bool) {
- str = str.substring(1);
- }
- EnumGamemode localEnumGamemode;
- try
- {
- int i = Integer.parseInt(str);
- localEnumGamemode = EnumGamemode.a(i, EnumGamemode.NOT_SET);
- }
- catch (Throwable localThrowable)
- {
- localEnumGamemode = EnumGamemode.a(str, EnumGamemode.NOT_SET);
- }
- final Object localObject = localEnumGamemode;
- localArrayList.add(new Predicate()
- {
- public boolean a(@Nullable Entity paramAnonymousEntity)
- {
- if (!(paramAnonymousEntity instanceof EntityPlayer)) {
- return false;
- }
- EntityPlayer localEntityPlayer = (EntityPlayer)paramAnonymousEntity;
- EnumGamemode localEnumGamemode = localEntityPlayer.playerInteractManager.getGameMode();
- return localEnumGamemode != localObject;
- }
- });
- return localArrayList;
- }
- private static List<Predicate<Entity>> d(Map<String, String> paramMap)
- {
- ArrayList localArrayList = Lists.newArrayList();
- String str1 = b(paramMap, "team");
- final boolean bool = (str1 != null) && (str1.startsWith("!"));
- if (bool) {
- str1 = str1.substring(1);
- }
- String str2 = str1;
- if (str1 != null) {
- localArrayList.add(new Predicate()
- {
- public boolean a(@Nullable Entity paramAnonymousEntity)
- {
- if (!(paramAnonymousEntity instanceof EntityLiving)) {
- return false;
- }
- EntityLiving localEntityLiving = (EntityLiving)paramAnonymousEntity;
- ScoreboardTeamBase localScoreboardTeamBase = localEntityLiving.aQ();
- String str = localScoreboardTeamBase == null ? "" : localScoreboardTeamBase.getName();
- return str.equals(this.a) != bool;
- }
- });
- }
- return localArrayList;
- }
- private static List<Predicate<Entity>> c(ICommandListener paramICommandListener, Map<String, String> paramMap)
- {
- final Map localMap = a(paramMap);
- if (localMap.isEmpty()) {
- return Collections.emptyList();
- }
- Lists.newArrayList(new Predicate[] { new Predicate()
- {
- public boolean a(@Nullable Entity paramAnonymousEntity)
- {
- if (paramAnonymousEntity == null) {
- return false;
- }
- Scoreboard localScoreboard = this.a.h().getWorldServer(0).getScoreboard();
- for (Map.Entry localEntry : localMap.entrySet())
- {
- String str1 = (String)localEntry.getKey();
- int i = 0;
- if ((str1.endsWith("_min")) && (str1.length() > 4))
- {
- i = 1;
- str1 = str1.substring(0, str1.length() - 4);
- }
- ScoreboardObjective localScoreboardObjective = localScoreboard.getObjective(str1);
- if (localScoreboardObjective == null) {
- return false;
- }
- String str2 = (paramAnonymousEntity instanceof EntityPlayer) ? paramAnonymousEntity.getName() : paramAnonymousEntity.bf();
- if (!localScoreboard.b(str2, localScoreboardObjective)) {
- return false;
- }
- ScoreboardScore localScoreboardScore = localScoreboard.getPlayerScoreForObjective(str2, localScoreboardObjective);
- int j = localScoreboardScore.getScore();
- if ((j < ((Integer)localEntry.getValue()).intValue()) && (i != 0)) {
- return false;
- }
- if ((j > ((Integer)localEntry.getValue()).intValue()) && (i == 0)) {
- return false;
- }
- }
- return true;
- }
- } });
- }
- private static List<Predicate<Entity>> e(Map<String, String> paramMap)
- {
- ArrayList localArrayList = Lists.newArrayList();
- String str1 = b(paramMap, "name");
- final boolean bool = (str1 != null) && (str1.startsWith("!"));
- if (bool) {
- str1 = str1.substring(1);
- }
- String str2 = str1;
- if (str1 != null) {
- localArrayList.add(new Predicate()
- {
- public boolean a(@Nullable Entity paramAnonymousEntity)
- {
- return (paramAnonymousEntity != null) && (paramAnonymousEntity.getName().equals(this.a) != bool);
- }
- });
- }
- return localArrayList;
- }
- private static List<Predicate<Entity>> f(Map<String, String> paramMap)
- {
- ArrayList localArrayList = Lists.newArrayList();
- String str1 = b(paramMap, "tag");
- final boolean bool = (str1 != null) && (str1.startsWith("!"));
- if (bool) {
- str1 = str1.substring(1);
- }
- if (str1 != null)
- {
- String str2 = str1;
- localArrayList.add(new Predicate()
- {
- public boolean a(@Nullable Entity paramAnonymousEntity)
- {
- if (paramAnonymousEntity == null) {
- return false;
- }
- if ("".equals(this.a)) {
- return paramAnonymousEntity.P().isEmpty() != bool;
- }
- return paramAnonymousEntity.P().contains(this.a) != bool;
- }
- });
- }
- return localArrayList;
- }
- private static List<Predicate<Entity>> a(Map<String, String> paramMap, Vec3D paramVec3D)
- {
- double d1 = a(paramMap, "rm", -1);
- double d2 = a(paramMap, "r", -1);
- final boolean bool1 = d1 < -0.5D;
- boolean bool2 = d2 < -0.5D;
- if ((bool1) && (bool2)) {
- return Collections.emptyList();
- }
- double d3 = Math.max(d1, 1.0E-4D);
- final double d4 = d3 * d3;
- double d5 = Math.max(d2, 1.0E-4D);
- final double d6 = d5 * d5;
- Lists.newArrayList(new Predicate[] { new Predicate()
- {
- public boolean a(@Nullable Entity paramAnonymousEntity)
- {
- if (paramAnonymousEntity == null) {
- return false;
- }
- double d1 = this.a.c(paramAnonymousEntity.locX, paramAnonymousEntity.locY, paramAnonymousEntity.locZ);
- return ((bool1) || (d1 >= d4)) && ((d6) || (d1 <= this.e));
- }
- } });
- }
- private static List<Predicate<Entity>> g(Map<String, String> paramMap)
- {
- ArrayList localArrayList = Lists.newArrayList();
- int i;
- final int j;
- if ((paramMap.containsKey("rym")) || (paramMap.containsKey("ry")))
- {
- i = MathHelper.b(a(paramMap, "rym", 0));
- j = MathHelper.b(a(paramMap, "ry", 359));
- localArrayList.add(new Predicate()
- {
- public boolean a(@Nullable Entity paramAnonymousEntity)
- {
- if (paramAnonymousEntity == null) {
- return false;
- }
- int i = MathHelper.b(MathHelper.d(paramAnonymousEntity.yaw));
- if (this.a > j) {
- return (i >= this.a) || (i <= j);
- }
- return (i >= this.a) && (i <= j);
- }
- });
- }
- if ((paramMap.containsKey("rxm")) || (paramMap.containsKey("rx")))
- {
- i = MathHelper.b(a(paramMap, "rxm", 0));
- j = MathHelper.b(a(paramMap, "rx", 359));
- localArrayList.add(new Predicate()
- {
- public boolean a(@Nullable Entity paramAnonymousEntity)
- {
- if (paramAnonymousEntity == null) {
- return false;
- }
- int i = MathHelper.b(MathHelper.d(paramAnonymousEntity.pitch));
- if (this.a > j) {
- return (i >= this.a) || (i <= j);
- }
- return (i >= this.a) && (i <= j);
- }
- });
- }
- return localArrayList;
- }
- private static <T extends Entity> List<T> a(Map<String, String> paramMap, Class<? extends T> paramClass, List<Predicate<Entity>> paramList, String paramString, World paramWorld, BlockPosition paramBlockPosition)
- {
- ArrayList localArrayList = Lists.newArrayList();
- String str = b(paramMap, "type");
- str = (str != null) && (str.startsWith("!")) ? str.substring(1) : str;
- int i = !paramString.equals("e") ? 1 : 0;
- int j = (paramString.equals("r")) && (str != null) ? 1 : 0;
- int k = a(paramMap, "dx", 0);
- int m = a(paramMap, "dy", 0);
- int n = a(paramMap, "dz", 0);
- int i1 = a(paramMap, "r", -1);
- Predicate localPredicate1 = Predicates.and(paramList);
- Predicate localPredicate2 = Predicates.and(IEntitySelector.a, localPredicate1);
- int i2 = paramWorld.players.size();
- int i3 = paramWorld.entityList.size();
- int i4 = i2 < i3 / 16 ? 1 : 0;
- AxisAlignedBB localAxisAlignedBB;
- if ((paramMap.containsKey("dx")) || (paramMap.containsKey("dy")) || (paramMap.containsKey("dz")))
- {
- localAxisAlignedBB = a(paramBlockPosition, k, m, n);
- if ((i != 0) && (i4 != 0) && (j == 0))
- {
- Predicate local4 = new Predicate()
- {
- public boolean a(@Nullable Entity paramAnonymousEntity)
- {
- return (paramAnonymousEntity != null) && (this.a.b(paramAnonymousEntity.getBoundingBox()));
- }
- };
- localArrayList.addAll(paramWorld.b(paramClass, Predicates.and(localPredicate2, local4)));
- }
- else
- {
- localArrayList.addAll(paramWorld.a(paramClass, localAxisAlignedBB, localPredicate2));
- }
- }
- else if (i1 >= 0)
- {
- localAxisAlignedBB = new AxisAlignedBB(paramBlockPosition.getX() - i1, paramBlockPosition.getY() - i1, paramBlockPosition.getZ() - i1, paramBlockPosition.getX() + i1 + 1, paramBlockPosition.getY() + i1 + 1, paramBlockPosition.getZ() + i1 + 1);
- if ((i != 0) && (i4 != 0) && (j == 0)) {
- localArrayList.addAll(paramWorld.b(paramClass, localPredicate2));
- } else {
- localArrayList.addAll(paramWorld.a(paramClass, localAxisAlignedBB, localPredicate2));
- }
- }
- else if (paramString.equals("a"))
- {
- localArrayList.addAll(paramWorld.b(paramClass, localPredicate1));
- }
- else if ((paramString.equals("p")) || ((paramString.equals("r")) && (j == 0)))
- {
- localArrayList.addAll(paramWorld.b(paramClass, localPredicate2));
- }
- else
- {
- localArrayList.addAll(paramWorld.a(paramClass, localPredicate2));
- }
- return localArrayList;
- }
- private static <T extends Entity> List<T> a(List<T> paramList, Map<String, String> paramMap, ICommandListener paramICommandListener, Class<? extends T> paramClass, String paramString, Vec3D paramVec3D)
- {
- int i = a(paramMap, "c", (paramString.equals("a")) || (paramString.equals("e")) ? 0 : 1);
- if ((paramString.equals("p")) || (paramString.equals("a")) || (paramString.equals("e"))) {
- Collections.sort(paramList, new Comparator()
- {
- public int a(Entity paramAnonymousEntity1, Entity paramAnonymousEntity2)
- {
- return ComparisonChain.start().compare(paramAnonymousEntity1.e(this.a.x, this.a.y, this.a.z), paramAnonymousEntity2.e(this.a.x, this.a.y, this.a.z)).result();
- }
- });
- } else if (paramString.equals("r")) {
- Collections.shuffle(paramList);
- }
- Entity localEntity = paramICommandListener.f();
- if ((localEntity != null) && (paramClass.isAssignableFrom(localEntity.getClass())) && (i == 1) && (paramList.contains(localEntity)) && (!"r".equals(paramString))) {
- paramList = Lists.newArrayList(new Entity[] { localEntity });
- }
- if (i != 0)
- {
- if (i < 0) {
- Collections.reverse(paramList);
- }
- paramList = paramList.subList(0, Math.min(Math.abs(i), paramList.size()));
- }
- return paramList;
- }
- private static AxisAlignedBB a(BlockPosition paramBlockPosition, int paramInt1, int paramInt2, int paramInt3)
- {
- int i = paramInt1 < 0 ? 1 : 0;
- int j = paramInt2 < 0 ? 1 : 0;
- int k = paramInt3 < 0 ? 1 : 0;
- int m = paramBlockPosition.getX() + (i != 0 ? paramInt1 : 0);
- int n = paramBlockPosition.getY() + (j != 0 ? paramInt2 : 0);
- int i1 = paramBlockPosition.getZ() + (k != 0 ? paramInt3 : 0);
- int i2 = paramBlockPosition.getX() + (i != 0 ? 0 : paramInt1) + 1;
- int i3 = paramBlockPosition.getY() + (j != 0 ? 0 : paramInt2) + 1;
- int i4 = paramBlockPosition.getZ() + (k != 0 ? 0 : paramInt3) + 1;
- return new AxisAlignedBB(m, n, i1, i2, i3, i4);
- }
- private static BlockPosition a(Map<String, String> paramMap, BlockPosition paramBlockPosition)
- {
- return new BlockPosition(a(paramMap, "x", paramBlockPosition.getX()), a(paramMap, "y", paramBlockPosition.getY()), a(paramMap, "z", paramBlockPosition.getZ()));
- }
- private static Vec3D b(Map<String, String> paramMap, Vec3D paramVec3D)
- {
- return new Vec3D(a(paramMap, "x", paramVec3D.x, true), a(paramMap, "y", paramVec3D.y, false), a(paramMap, "z", paramVec3D.z, true));
- }
- private static double a(Map<String, String> paramMap, String paramString, double paramDouble, boolean paramBoolean)
- {
- return paramMap.containsKey(paramString) ? MathHelper.a((String)paramMap.get(paramString), MathHelper.floor(paramDouble)) + (paramBoolean ? 0.5D : 0.0D) : paramDouble;
- }
- private static boolean h(Map<String, String> paramMap)
- {
- for (String str : d) {
- if (paramMap.containsKey(str)) {
- return true;
- }
- }
- return false;
- }
- private static int a(Map<String, String> paramMap, String paramString, int paramInt)
- {
- return paramMap.containsKey(paramString) ? MathHelper.a((String)paramMap.get(paramString), paramInt) : paramInt;
- }
- @Nullable
- private static String b(Map<String, String> paramMap, String paramString)
- {
- return (String)paramMap.get(paramString);
- }
- public static Map<String, Integer> a(Map<String, String> paramMap)
- {
- HashMap localHashMap = Maps.newHashMap();
- for (String str : paramMap.keySet()) {
- if ((str.startsWith("score_")) && (str.length() > "score_".length())) {
- localHashMap.put(str.substring("score_".length()), Integer.valueOf(MathHelper.a((String)paramMap.get(str), 1)));
- }
- }
- return localHashMap;
- }
- public static boolean isList(String paramString)
- {
- Matcher localMatcher = a.matcher(paramString);
- if (localMatcher.matches())
- {
- Map localMap = c(localMatcher.group(2));
- String str = localMatcher.group(1);
- int i = ("a".equals(str)) || ("e".equals(str)) ? 0 : 1;
- return a(localMap, "c", i) != 1;
- }
- return false;
- }
- public static boolean isPattern(String paramString)
- {
- return a.matcher(paramString).matches();
- }
- private static Map<String, String> c(@Nullable String paramString)
- {
- HashMap localHashMap = Maps.newHashMap();
- if (paramString == null) {
- return localHashMap;
- }
- int i = 0;
- int j = -1;
- Matcher localMatcher = b.matcher(paramString);
- Object localObject;
- while (localMatcher.find())
- {
- localObject = null;
- switch (i++)
- {
- case 0:
- localObject = "x";
- break;
- case 1:
- localObject = "y";
- break;
- case 2:
- localObject = "z";
- break;
- case 3:
- localObject = "r";
- }
- if ((localObject != null) && (!localMatcher.group(1).isEmpty())) {
- localHashMap.put(localObject, localMatcher.group(1));
- }
- j = localMatcher.end();
- }
- if (j < paramString.length())
- {
- localObject = c.matcher(j == -1 ? paramString : paramString.substring(j));
- while (((Matcher)localObject).find()) {
- localHashMap.put(((Matcher)localObject).group(1), ((Matcher)localObject).group(2));
- }
- }
- return localHashMap;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement