diff --git a/src/main/java/noppes/npcs/DataAI.java b/src/main/java/noppes/npcs/DataAI.java index e694065aa..19ceeaf02 100644 --- a/src/main/java/noppes/npcs/DataAI.java +++ b/src/main/java/noppes/npcs/DataAI.java @@ -36,6 +36,7 @@ public class DataAI { // Fly Change public int movementType = 0; public double flySpeed = 1.0D; + public double flyGravity = 0.0D; public EnumAnimation animationType = EnumAnimation.NONE; public EnumStandingType standingType = EnumStandingType.RotateBody; @@ -104,6 +105,11 @@ public class DataAI { else flySpeed = compound.getDouble("FlySpeed"); + if(!compound.hasKey("FlyGravity")) + flyGravity = 0.0D; + else + flyGravity = compound.getDouble("FlyGravity"); + startPos = compound.getIntArray("StartPosNew"); if (startPos == null || startPos.length != 3){ startPos = new int[] { @@ -152,6 +158,7 @@ public class DataAI { compound.setInteger("MovingType", movementType); compound.setDouble("FlySpeed",flySpeed); + compound.setDouble("FlyGravity",flyGravity); npc.setAvoidWater(avoidsWater); diff --git a/src/main/java/noppes/npcs/entity/EntityNPCFlying.java b/src/main/java/noppes/npcs/entity/EntityNPCFlying.java index 430a498ef..1311fa34a 100644 --- a/src/main/java/noppes/npcs/entity/EntityNPCFlying.java +++ b/src/main/java/noppes/npcs/entity/EntityNPCFlying.java @@ -38,7 +38,7 @@ public abstract class EntityNPCFlying extends EntityNPCInterface { if (!this.onGround && !this.getMoveHelper().isUpdating()) { - this.motionY *= 0.0D; + this.motionY *= this.ai.flyGravity; this.velocityChanged = true; } } diff --git a/src/main/java/noppes/npcs/scripted/entity/ScriptNpc.java b/src/main/java/noppes/npcs/scripted/entity/ScriptNpc.java index 879d0f96e..64cd375b6 100644 --- a/src/main/java/noppes/npcs/scripted/entity/ScriptNpc.java +++ b/src/main/java/noppes/npcs/scripted/entity/ScriptNpc.java @@ -954,6 +954,19 @@ public class ScriptNpc extends ScriptLiving imp return npc.ai.flySpeed; } + public void setFlyGravity(double flyGravity){ + if(flyGravity < 0.0D) + flyGravity = 0.0D; + if(flyGravity > 1.0D) + flyGravity = 1.0D; + + npc.ai.flyGravity = flyGravity; + } + + public double getFlyGravity(double flySpeed){ + return npc.ai.flyGravity; + } + public void setSkinType(byte type) { npc.display.skinType = type; npc.updateClient = true; diff --git a/src/main/java/noppes/npcs/scripted/interfaces/ICustomNpc.java b/src/main/java/noppes/npcs/scripted/interfaces/ICustomNpc.java index fdbb03e48..c92d8c7ae 100644 --- a/src/main/java/noppes/npcs/scripted/interfaces/ICustomNpc.java +++ b/src/main/java/noppes/npcs/scripted/interfaces/ICustomNpc.java @@ -684,6 +684,10 @@ public interface ICustomNpc extends IEntityLiving { public double getFlySpeed(double flySpeed); + public void setFlyGravity(double flyGravity); + + public double getFlyGravity(double flyGravity); + public void setSkinType(byte type); public byte getSkinType();