Skip to content

Commit

Permalink
Controllable NPCs now have correct yaw
Browse files Browse the repository at this point in the history
  • Loading branch information
fullwall committed Apr 13, 2013
1 parent f2b7973 commit 7965760
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 1 deletion.
17 changes: 17 additions & 0 deletions src/main/java/net/citizensnpcs/trait/Controllable.java
Expand Up @@ -11,7 +11,9 @@
import net.citizensnpcs.api.trait.Trait;
import net.citizensnpcs.api.trait.trait.Owner;
import net.citizensnpcs.api.util.DataKey;
import net.citizensnpcs.util.NMS;
import net.citizensnpcs.util.Util;
import net.minecraft.server.v1_5_R2.EntityEnderDragon;
import net.minecraft.server.v1_5_R2.EntityLiving;
import net.minecraft.server.v1_5_R2.EntityPlayer;

Expand Down Expand Up @@ -167,6 +169,19 @@ public void save(DataKey key) {
key.setString("explicittype", explicitType.name());
}

private void setMountedYaw(EntityLiving handle) {
if (handle instanceof EntityEnderDragon)
return; // EnderDragon handles this separately
double tX = handle.locX + handle.motX;
double tZ = handle.locZ + handle.motZ;
if (handle.locZ > tZ) {
handle.yaw = (float) -Math.toDegrees(Math.atan((handle.locX - tX) / (handle.locZ - tZ))) + 180F;
} else if (handle.locZ < tZ) {
handle.yaw = (float) -Math.toDegrees(Math.atan((handle.locX - tX) / (handle.locZ - tZ)));
}
NMS.setHeadYaw(handle, handle.yaw);
}

@Override
public boolean toggle() {
enabled = !enabled;
Expand Down Expand Up @@ -205,6 +220,7 @@ public void run(Player rider) {
handle.motX = dir.getX();
handle.motY = dir.getY();
handle.motZ = dir.getZ();
setMountedYaw(handle);
}
}

Expand Down Expand Up @@ -238,6 +254,7 @@ public void run(Player rider) {
.modifiedSpeed((onGround ? GROUND_SPEED : AIR_SPEED));
handle.motX += handle.passenger.motX * speedMod;
handle.motZ += handle.passenger.motZ * speedMod;
setMountedYaw(handle);
}

private static final float AIR_SPEED = 1.5F;
Expand Down
1 change: 0 additions & 1 deletion src/main/java/net/citizensnpcs/trait/LookClose.java
Expand Up @@ -22,7 +22,6 @@ public class LookClose extends Trait implements Toggleable, CommandConfigurable
private boolean enabled = Setting.DEFAULT_LOOK_CLOSE.asBoolean();
private Player lookingAt;
private double range = Setting.DEFAULT_LOOK_CLOSE_RANGE.asDouble();

private boolean realisticLooking = Setting.DEFAULT_REALISTIC_LOOKING.asBoolean();

public LookClose() {
Expand Down

0 comments on commit 7965760

Please sign in to comment.