public boolean navigateTo(EntityLiving entity) { if (this.nav.a(entity, 1.D)) { applyNavigationParameters(); return true; } return false; }
@Override public void tick() { nav.f(); }
@Override public void stop() { nav.h(); }
@Override public boolean navigateTo(double x, double y, double z) { applyNavigationParameters(); if (this.nav.a(x, y, z, 1.D)) { applyNavigationParameters(); return true; } return false; }
private void moveWithPath(PathEntity path, double speed) { EntityLiving nmsEntity = CommonNMS.getNative(entity); if(nmsEntity instanceof EntityInsentient) { if(nmsEntity instanceof EntityCreature) ((EntityCreature) nmsEntity).setPathEntity(path); Navigation navigation = (Navigation) EntityLivingRef.getNavigation.invoke(nmsEntity); navigation.a(path, speed); } } }
public void applyNavigationParameters() { this.nav.a(parameters.avoidWater()); ((EntityMyPet) this.entityMyPet).getAttributeInstance(GenericAttributes.d).setValue(parameters.speed() + parameters.speedModifier()); } }
/** * Move to an entity with pathfinding * * @param entity to find * @param speed to move with */ public void moveTo(Entity entity, double speed) { EntityLiving nmsEntity = CommonNMS.getNative(this.entity); net.minecraft.server.Entity nmsTargetEntity = CommonNMS.getNative(entity); if(nmsEntity instanceof EntityInsentient) { Navigation navigation = (Navigation) EntityLivingRef.getNavigation.invoke(nmsEntity); if(!navigation.a(nmsTargetEntity, speed)) { PathEntity path = nmsEntity.world.findPath(nmsEntity, nmsTargetEntity, (float) this.getPathfindingRange(), true, false, false, true); this.moveWithPath(path, speed); } } }
/** * Move to a location with pathfinding * * @param location to move to * @param speed to move with */ public void moveTo(Location location, double speed) { EntityLiving nmsEntity = CommonNMS.getNative(this.entity); if(nmsEntity instanceof EntityInsentient) { Navigation navigation = (Navigation) EntityLivingRef.getNavigation.invoke(nmsEntity); double x = location.getX(); double y = location.getY(); double z = location.getZ(); if(!navigation.a(x, y, z, speed)) { int dx = MathUtil.floor(x); int dy = (int) y; int dz = MathUtil.floor(z); PathEntity path = nmsEntity.world.a(nmsEntity, dx, dy, dz, (float) this.getPathfindingRange(), true, false, false, true); this.moveWithPath(path, speed); } } }