Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package me.greenadine.scarecrow.nms;
- import java.lang.reflect.Field;
- import java.lang.reflect.Method;
- import java.util.List;
- import org.bukkit.entity.Entity;
- import com.google.common.base.Predicate;
- import com.google.common.base.Predicates;
- import net.minecraft.server.v1_12_R1.AxisAlignedBB;
- import net.minecraft.server.v1_12_R1.EntityCreature;
- import net.minecraft.server.v1_12_R1.EntityLiving;
- import net.minecraft.server.v1_12_R1.IEntitySelector;
- import net.minecraft.server.v1_12_R1.NavigationAbstract;
- import net.minecraft.server.v1_12_R1.PathEntity;
- import net.minecraft.server.v1_12_R1.PathfinderGoal;
- import net.minecraft.server.v1_12_R1.RandomPositionGenerator;
- import net.minecraft.server.v1_12_R1.Vec3D;
- public class PathfinderGoalAvoidScarecrow<T extends Entity> extends PathfinderGoal {
- private final Predicate<Entity> c = Predicates.alwaysTrue();
- protected EntityCreature a;
- private final net.minecraft.server.v1_12_R1.World w;
- private final double d;
- private final double e;
- private final double lastX;
- private final double lastY;
- private final double lastZ;
- protected T b;
- private final float f;
- private PathEntity g;
- private final NavigationAbstract h;
- private final AxisAlignedBB aA;
- private final Class<T> i;
- private Predicate<? super T> j;
- public PathfinderGoalAvoidScarecrow(EntityCreature paramEntityCreature, net.minecraft.server.v1_12_R1.World paramWorld, NavigationAbstract paramNavigationAbstract, AxisAlignedBB paramAxisAlignedBB,
- float paramFloat, double paramDouble1, double paramDouble2, Class<T> paramClass, double paramLastX, double paramLastY, double paramLastZ, Predicate<? super T> paramPredicate)
- {
- a = paramEntityCreature;
- w = paramWorld;
- h = paramNavigationAbstract;
- aA = paramAxisAlignedBB;
- f = paramFloat;
- d = paramDouble1;
- e = paramDouble2;
- i = paramClass;
- j = paramPredicate;
- lastX = paramLastX;
- lastY = paramLastY;
- lastZ = paramLastZ;
- }
- @SuppressWarnings("unchecked")
- public boolean a()
- {
- @SuppressWarnings("rawtypes")
- List localList = (List) w.a((Class) i, aA.grow(f, 3.0D, f), (net.minecraft.server.v1_12_R1.Entity) Predicates.and(new Predicate[] { IEntitySelector.d, c, j }));
- if (localList.isEmpty()) {
- return false;
- }
- b = (T) ((Entity)localList.get(0));
- Vec3D localVec3D = RandomPositionGenerator.b(a, 16, 7, new Vec3D(b.getLocation().getX(), b.getLocation().getY(), b.getLocation().getZ()));
- if (localVec3D == null) {
- return false;
- }
- try {
- Method method = b.getClass().getMethod("c", Double.class, Double.class, Double.class);
- if ((double) method.invoke(lastX, lastY, lastZ) < ((EntityLiving) b).h(a)) {
- return false;
- }
- g = h.a(lastX, lastY, lastZ);
- return g != null;
- } catch(Exception e) {
- e.printStackTrace();
- return false;
- }
- }
- public boolean b()
- {
- return !h.o();
- }
- public void c()
- {
- h.a(g, d);
- }
- public void d()
- {
- b = null;
- }
- public void e()
- {
- try {
- Field field = a.getClass().getDeclaredField("b");
- field.setAccessible(true);
- if (field.getFloat(a) < 49.0D) {
- a.getNavigation().a(e);
- } else {
- a.getNavigation().a(d);
- }
- } catch(Exception e) {
- e.printStackTrace();
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment