From 5f54b959981f3865874ede1ebef96a2f5a3128b9 Mon Sep 17 00:00:00 2001 From: "Kristian S. Stangeland" Date: Sun, 21 Jul 2013 03:20:13 +0200 Subject: [PATCH] Fix getEntityModifier() for MPCP 1.6.2. --- .../protocol/injector/EntityUtilities.java | 23 ++++++++----------- 1 file changed, 10 insertions(+), 13 deletions(-) diff --git a/ProtocolLib/src/main/java/com/comphenix/protocol/injector/EntityUtilities.java b/ProtocolLib/src/main/java/com/comphenix/protocol/injector/EntityUtilities.java index 31152925..f20a2c4c 100644 --- a/ProtocolLib/src/main/java/com/comphenix/protocol/injector/EntityUtilities.java +++ b/ProtocolLib/src/main/java/com/comphenix/protocol/injector/EntityUtilities.java @@ -21,8 +21,8 @@ import java.lang.reflect.Constructor; import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; +import java.lang.reflect.Modifier; import java.util.ArrayList; -import java.util.Arrays; import java.util.Collection; import java.util.HashSet; import java.util.List; @@ -35,6 +35,7 @@ import org.bukkit.entity.Player; import com.comphenix.protocol.reflect.FieldAccessException; import com.comphenix.protocol.reflect.FieldUtils; import com.comphenix.protocol.reflect.FuzzyReflection; +import com.comphenix.protocol.reflect.fuzzy.FuzzyMethodContract; import com.comphenix.protocol.utility.MinecraftReflection; import com.google.common.collect.Lists; @@ -211,18 +212,14 @@ class EntityUtilities { try { hashGetMethod = type.getMethod("get", int.class); } catch (NoSuchMethodException e) { - - Class[] params = { int.class }; - - // Then it's probably the lowest named method that takes an int-parameter - for (Method method : type.getMethods()) { - if (Arrays.equals(params, method.getParameterTypes())) { - if (hashGetMethod == null || - method.getName().compareTo(hashGetMethod.getName()) < 0) { - hashGetMethod = method; - } - } - } + // Then it's probably the lowest named method that takes an int-parameter and returns a object + hashGetMethod = FuzzyReflection.fromClass(type).getMethod( + FuzzyMethodContract.newBuilder().banModifier(Modifier.STATIC). + parameterCount(1). + parameterExactType(int.class). + returnTypeExact(Object.class). + build() + ); } }