Delete SimpleAISelector.java
This commit is contained in:
		@@ -1,88 +0,0 @@
 | 
				
			|||||||
package me.skymc.taboolib.common.pathfinder;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import com.ilummc.tlib.util.asm.AsmClassLoader;
 | 
					 | 
				
			||||||
import me.skymc.taboolib.TabooLib;
 | 
					 | 
				
			||||||
import me.skymc.taboolib.common.pathfinder.internal.ParentPathfinderGoalAsm;
 | 
					 | 
				
			||||||
import me.skymc.taboolib.nms.NMSUtils;
 | 
					 | 
				
			||||||
import me.skymc.taboolib.object.Instantiable;
 | 
					 | 
				
			||||||
import org.bukkit.entity.LivingEntity;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import java.lang.reflect.Field;
 | 
					 | 
				
			||||||
import java.lang.reflect.Method;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/**
 | 
					 | 
				
			||||||
 * @Author sky
 | 
					 | 
				
			||||||
 * @Since 2018-09-19 20:31
 | 
					 | 
				
			||||||
 */
 | 
					 | 
				
			||||||
@Instantiable("SimpleAISelector")
 | 
					 | 
				
			||||||
public class SimpleAISelector {
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    private static Class<?> parentPathfinderGoal;
 | 
					 | 
				
			||||||
    private static Class<?> pathfinderGoalFollowOwner;
 | 
					 | 
				
			||||||
    private static Class<?> pathfinderGoalSelector;
 | 
					 | 
				
			||||||
    private static Class<?> pathfinderGoal;
 | 
					 | 
				
			||||||
    private static Class<?> entityInsentient;
 | 
					 | 
				
			||||||
    private static Field targetSelector;
 | 
					 | 
				
			||||||
    private static Field goalSelector;
 | 
					 | 
				
			||||||
    private static Field navigation;
 | 
					 | 
				
			||||||
    private static Method a;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public SimpleAISelector() {
 | 
					 | 
				
			||||||
        try {
 | 
					 | 
				
			||||||
            parentPathfinderGoal = AsmClassLoader.createNewClass("me.skymc.taboolib.common.pathfinder.internal.ParentPathfinderGoal", ParentPathfinderGoalAsm.create(TabooLib.getVersion()));
 | 
					 | 
				
			||||||
            pathfinderGoalFollowOwner = NMSUtils.getNMSClass("PathfinderGoalFollowOwner");
 | 
					 | 
				
			||||||
            pathfinderGoalSelector = NMSUtils.getNMSClass("PathfinderGoalSelector");
 | 
					 | 
				
			||||||
            pathfinderGoal = NMSUtils.getNMSClass("PathfinderGoal");
 | 
					 | 
				
			||||||
            entityInsentient = NMSUtils.getNMSClass("EntityInsentient");
 | 
					 | 
				
			||||||
            targetSelector = entityInsentient.getField("targetSelector");
 | 
					 | 
				
			||||||
            goalSelector = entityInsentient.getField("goalSelector");
 | 
					 | 
				
			||||||
            navigation = entityInsentient.getField("navigation");
 | 
					 | 
				
			||||||
            a = pathfinderGoalSelector.getDeclaredMethod("a", Integer.TYPE, pathfinderGoal);
 | 
					 | 
				
			||||||
        } catch (Exception e) {
 | 
					 | 
				
			||||||
            e.printStackTrace();
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public static Object getNavigation(LivingEntity entity) {
 | 
					 | 
				
			||||||
        try {
 | 
					 | 
				
			||||||
            return navigation.get(entity.getClass().getMethod("getHandle").invoke(entity));
 | 
					 | 
				
			||||||
        } catch (Exception e) {
 | 
					 | 
				
			||||||
            e.printStackTrace();
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        return null;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public static Object getGoalSelector(LivingEntity entity) {
 | 
					 | 
				
			||||||
        try {
 | 
					 | 
				
			||||||
            return goalSelector.get(entity.getClass().getMethod("getHandle").invoke(entity));
 | 
					 | 
				
			||||||
        } catch (Exception e) {
 | 
					 | 
				
			||||||
            e.printStackTrace();
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        return null;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public static Object getTargetSelector(LivingEntity entity) {
 | 
					 | 
				
			||||||
        try {
 | 
					 | 
				
			||||||
            return targetSelector.get(entity.getClass().getMethod("getHandle").invoke(entity));
 | 
					 | 
				
			||||||
        } catch (Exception e) {
 | 
					 | 
				
			||||||
            e.printStackTrace();
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        return null;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public static void setGoalAI(LivingEntity entity, Object ai, int priority) {
 | 
					 | 
				
			||||||
        try {
 | 
					 | 
				
			||||||
            a.invoke(getGoalSelector(entity), priority, ai);
 | 
					 | 
				
			||||||
        } catch (Exception e) {
 | 
					 | 
				
			||||||
            e.printStackTrace();
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public static void setTargetAI(LivingEntity entity, Object ai, int priority) {
 | 
					 | 
				
			||||||
        try {
 | 
					 | 
				
			||||||
            a.invoke(getTargetSelector(entity), priority, ai);
 | 
					 | 
				
			||||||
        } catch (Exception e) {
 | 
					 | 
				
			||||||
            e.printStackTrace();
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
		Reference in New Issue
	
	Block a user