mirror of
https://github.com/Sollace/Unicopia.git
synced 2024-11-30 16:28:00 +01:00
Fixed flight not working correctly with inverted gravity
This commit is contained in:
parent
6633d59a63
commit
3024ebef0f
3 changed files with 14 additions and 14 deletions
|
@ -46,7 +46,7 @@ public final class PlayerDimensions {
|
||||||
public EntityDimensions calculateDimensions(EntityDimensions dimensions) {
|
public EntityDimensions calculateDimensions(EntityDimensions dimensions) {
|
||||||
if (defaultDimensions == null || dimensions.height != defaultDimensions.height || dimensions.width != defaultDimensions.width) {
|
if (defaultDimensions == null || dimensions.height != defaultDimensions.height || dimensions.width != defaultDimensions.width) {
|
||||||
defaultDimensions = dimensions;
|
defaultDimensions = dimensions;
|
||||||
flyingDimensions = EntityDimensions.changing(dimensions.width, dimensions.height / 2);
|
flyingDimensions = dimensions;//EntityDimensions.changing(dimensions.width, dimensions.height / 2);
|
||||||
}
|
}
|
||||||
|
|
||||||
dimensions = getPredicate()
|
dimensions = getPredicate()
|
||||||
|
|
|
@ -161,7 +161,7 @@ public class PlayerPhysics extends EntityPhysics<Pony> implements Tickable, Moti
|
||||||
entity.playSound(getWingSound(), 0.5F, 1);
|
entity.playSound(getWingSound(), 0.5F, 1);
|
||||||
thrustScale = 1;
|
thrustScale = 1;
|
||||||
}
|
}
|
||||||
velocity.y -= 0.02;
|
velocity.y -= 0.02 * getGravitySignum();
|
||||||
velocity.x *= 0.9896;
|
velocity.x *= 0.9896;
|
||||||
velocity.z *= 0.9896;
|
velocity.z *= 0.9896;
|
||||||
}
|
}
|
||||||
|
@ -174,15 +174,17 @@ public class PlayerPhysics extends EntityPhysics<Pony> implements Tickable, Moti
|
||||||
double motion = entity.getPos().subtract(lastPos).lengthSquared();
|
double motion = entity.getPos().subtract(lastPos).lengthSquared();
|
||||||
|
|
||||||
boolean takeOffCondition = velocity.y > 0
|
boolean takeOffCondition = velocity.y > 0
|
||||||
&& (horMotion > 0.2 || (motion > 0.2 && velocity.y < -0.02));
|
&& (horMotion > 0.2 || (motion > 0.2 && velocity.y < -0.02 * getGravitySignum()));
|
||||||
boolean fallingTakeOffCondition = !entity.isOnGround() && velocity.y < -1.6;
|
boolean fallingTakeOffCondition = !entity.isOnGround() && velocity.y < -1.6 * getGravitySignum();
|
||||||
|
|
||||||
if (takeOffCondition || fallingTakeOffCondition) {
|
if (takeOffCondition || fallingTakeOffCondition) {
|
||||||
entity.abilities.flying = true;
|
entity.abilities.flying = true;
|
||||||
isFlyingEither = true;
|
isFlyingEither = true;
|
||||||
isFlyingSurvival = true;
|
isFlyingSurvival = true;
|
||||||
|
|
||||||
|
if (!isGravityNegative()) {
|
||||||
velocity.y += horMotion + 0.3;
|
velocity.y += horMotion + 0.3;
|
||||||
|
}
|
||||||
applyThrust(entity, velocity);
|
applyThrust(entity, velocity);
|
||||||
|
|
||||||
velocity.x *= 0.2;
|
velocity.x *= 0.2;
|
||||||
|
@ -230,9 +232,8 @@ public class PlayerPhysics extends EntityPhysics<Pony> implements Tickable, Moti
|
||||||
// vertical drop due to gravity
|
// vertical drop due to gravity
|
||||||
forward += 0.005F;
|
forward += 0.005F;
|
||||||
|
|
||||||
velocity.y -= (getGravityModifier() * 0.01F) / Math.max(motion * 100, 1);
|
|
||||||
|
|
||||||
velocity.x += - forward * MathHelper.sin(player.yaw * 0.017453292F);
|
velocity.x += - forward * MathHelper.sin(player.yaw * 0.017453292F);
|
||||||
|
velocity.y -= (0.01F / Math.max(motion * 100, 1)) * getGravityModifier();
|
||||||
velocity.z += forward * MathHelper.cos(player.yaw * 0.017453292F);
|
velocity.z += forward * MathHelper.cos(player.yaw * 0.017453292F);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -249,17 +250,16 @@ public class PlayerPhysics extends EntityPhysics<Pony> implements Tickable, Moti
|
||||||
|
|
||||||
velocity.x += direction.x;
|
velocity.x += direction.x;
|
||||||
velocity.z += direction.z;
|
velocity.z += direction.z;
|
||||||
velocity.y += direction.y * 2.45 + Math.abs(direction.y) * 10;
|
velocity.y += (direction.y * 2.45 + Math.abs(direction.y) * 10) * getGravitySignum();
|
||||||
|
|
||||||
if (player.isSneaking()) {
|
if (player.isSneaking()) {
|
||||||
velocity.y += 0.4 - 0.25;
|
velocity.y += (0.4 - 0.25) * getGravitySignum();
|
||||||
if (pony.sneakingChanged()) {
|
if (pony.sneakingChanged()) {
|
||||||
velocity.y += 0.75;
|
velocity.y += 0.75 * getGravitySignum();
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
velocity.y -= 0.1;
|
velocity.y -= 0.1 * getGravitySignum();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void applyTurbulance(Entity player, MutableVector velocity) {
|
protected void applyTurbulance(Entity player, MutableVector velocity) {
|
||||||
|
@ -277,7 +277,7 @@ public class PlayerPhysics extends EntityPhysics<Pony> implements Tickable, Moti
|
||||||
}
|
}
|
||||||
|
|
||||||
if (player.world.isThundering() && player.world.random.nextInt(60) == 0) {
|
if (player.world.isThundering() && player.world.random.nextInt(60) == 0) {
|
||||||
velocity.y += forward * 3;
|
velocity.y += forward * 3 * getGravitySignum();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (forward >= 1) {
|
if (forward >= 1) {
|
||||||
|
|
|
@ -25,7 +25,7 @@ abstract class MixinKeyboardInput extends Input {
|
||||||
|
|
||||||
movementSideways = -movementSideways;
|
movementSideways = -movementSideways;
|
||||||
|
|
||||||
if (player.getMaster().abilities.flying) {
|
if (player.getMaster().abilities.flying || player.getPhysics().isFlying()) {
|
||||||
tmp = jumping;
|
tmp = jumping;
|
||||||
jumping = sneaking;
|
jumping = sneaking;
|
||||||
sneaking = tmp;
|
sneaking = tmp;
|
||||||
|
|
Loading…
Reference in a new issue