mirror of
https://github.com/CitizensDev/Citizens2.git
synced 2024-11-23 19:16:34 +01:00
Force new pathfinder with nonliving NPCs
This commit is contained in:
parent
6cc922a115
commit
34fc6ab029
@ -82,8 +82,9 @@ public class BlockBreaker extends BehaviorGoalAdapter {
|
||||
startDigTick = currentTick;
|
||||
return BehaviorStatus.RUNNING;
|
||||
}
|
||||
if (entity instanceof EntityPlayer)
|
||||
if (entity instanceof EntityPlayer) {
|
||||
PlayerAnimation.ARM_SWING.play((Player) entity.getBukkitEntity());
|
||||
}
|
||||
Block block = entity.world.getType(x, y, z);
|
||||
if (block == null) {
|
||||
return BehaviorStatus.SUCCESS;
|
||||
@ -92,7 +93,7 @@ public class BlockBreaker extends BehaviorGoalAdapter {
|
||||
float damage = getStrength(block) * (tickDifference + 1) * configuration.blockStrengthModifier();
|
||||
if (damage >= 1F) {
|
||||
entity.world.getWorld().getBlockAt(x, y, z)
|
||||
.breakNaturally(CraftItemStack.asCraftMirror(getCurrentItem()));
|
||||
.breakNaturally(CraftItemStack.asCraftMirror(getCurrentItem()));
|
||||
return BehaviorStatus.SUCCESS;
|
||||
}
|
||||
int modifiedDamage = (int) (damage * 10.0F);
|
||||
|
@ -180,7 +180,7 @@ public class CitizensNavigator implements Navigator, Runnable {
|
||||
PathStrategy newStrategy;
|
||||
if (npc.isFlyable()) {
|
||||
newStrategy = new FlyingAStarNavigationStrategy(npc, target, localParams);
|
||||
} else if (localParams.useNewPathfinder()) {
|
||||
} else if (localParams.useNewPathfinder() || !(npc.getEntity() instanceof LivingEntity)) {
|
||||
newStrategy = new AStarNavigationStrategy(npc, target, localParams);
|
||||
} else {
|
||||
newStrategy = new MCNavigationStrategy(npc, target, localParams);
|
||||
|
@ -20,14 +20,13 @@ import net.minecraft.server.v1_7_R1.PathEntity;
|
||||
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.craftbukkit.v1_7_R1.entity.CraftEntity;
|
||||
import org.bukkit.craftbukkit.v1_7_R1.entity.CraftLivingEntity;
|
||||
import org.bukkit.entity.LivingEntity;
|
||||
|
||||
public class MCTargetStrategy implements PathStrategy, EntityTarget {
|
||||
private final boolean aggro;
|
||||
private int attackTicks;
|
||||
private CancelReason cancelReason;
|
||||
private final EntityLiving handle;
|
||||
private final Entity handle;
|
||||
private final NPC npc;
|
||||
private final NavigatorParameters parameters;
|
||||
private final Entity target;
|
||||
@ -36,11 +35,11 @@ public class MCTargetStrategy implements PathStrategy, EntityTarget {
|
||||
public MCTargetStrategy(NPC npc, org.bukkit.entity.Entity target, boolean aggro, NavigatorParameters params) {
|
||||
this.npc = npc;
|
||||
this.parameters = params;
|
||||
this.handle = ((CraftLivingEntity) npc.getEntity()).getHandle();
|
||||
this.handle = ((CraftEntity) npc.getEntity()).getHandle();
|
||||
this.target = ((CraftEntity) target).getHandle();
|
||||
Navigation nav = NMS.getNavigation(this.handle);
|
||||
this.targetNavigator = nav != null && !params.useNewPathfinder() ? new NavigationFieldWrapper(nav)
|
||||
: new AStarTargeter();
|
||||
: new AStarTargeter();
|
||||
this.aggro = aggro;
|
||||
}
|
||||
|
||||
@ -163,7 +162,7 @@ public class MCTargetStrategy implements PathStrategy, EntityTarget {
|
||||
private void setStrategy() {
|
||||
Location location = target.getBukkitEntity().getLocation(TARGET_LOCATION);
|
||||
strategy = npc.isFlyable() ? new FlyingAStarNavigationStrategy(npc, location, parameters)
|
||||
: new AStarNavigationStrategy(npc, location, parameters);
|
||||
: new AStarNavigationStrategy(npc, location, parameters);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -166,7 +166,7 @@ public class EntityHumanNPC extends EntityPlayer implements NPCHolder {
|
||||
moveOnCurrentHeading();
|
||||
} else if (motX != 0 || motZ != 0 || motY != 0) {
|
||||
e(0, 0); // is this necessary? it does controllable but sometimes
|
||||
// players sink into the ground
|
||||
// players sink into the ground
|
||||
}
|
||||
|
||||
if (noDamageTicks > 0) {
|
||||
|
@ -207,7 +207,7 @@ public class NMS {
|
||||
return handle.aP;
|
||||
}
|
||||
|
||||
public static Navigation getNavigation(EntityLiving handle) {
|
||||
public static Navigation getNavigation(Entity handle) {
|
||||
return handle instanceof EntityInsentient ? ((EntityInsentient) handle).getNavigation()
|
||||
: handle instanceof EntityHumanNPC ? ((EntityHumanNPC) handle).getNavigation() : null;
|
||||
}
|
||||
@ -249,11 +249,11 @@ public class NMS {
|
||||
((CraftServer) Bukkit.getServer()).enablePlugins(PluginLoadOrder.POSTWORLD);
|
||||
}
|
||||
|
||||
public static void look(EntityLiving handle, Entity target) {
|
||||
public static void look(Entity handle, Entity target) {
|
||||
if (handle instanceof EntityInsentient) {
|
||||
((EntityInsentient) handle).getControllerLook().a(target, 10.0F, ((EntityInsentient) handle).x());
|
||||
} else if (handle instanceof EntityHumanNPC) {
|
||||
((EntityHumanNPC) handle).setTargetLook(target, 10F, 40);
|
||||
((EntityHumanNPC) handle).setTargetLook(target, 10F, 40F);
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user