mirror of
https://github.com/Sollace/Unicopia.git
synced 2024-11-28 15:38:00 +01:00
69 lines
1.9 KiB
Java
69 lines
1.9 KiB
Java
|
package com.minelittlepony.unicopia.player;
|
||
|
|
||
|
import com.minelittlepony.unicopia.InbtSerialisable;
|
||
|
|
||
|
import net.minecraft.entity.player.EntityPlayer;
|
||
|
import net.minecraft.nbt.NBTTagCompound;
|
||
|
|
||
|
class PlayerGravityDelegate implements IUpdatable, InbtSerialisable {
|
||
|
|
||
|
private final IPlayer player;
|
||
|
|
||
|
private int ticksSinceLanding = 0;
|
||
|
|
||
|
public boolean isFlying = false;
|
||
|
|
||
|
public PlayerGravityDelegate(IPlayer player) {
|
||
|
this.player = player;
|
||
|
}
|
||
|
|
||
|
@Override
|
||
|
public void onUpdate(EntityPlayer entity) {
|
||
|
if (!entity.capabilities.isCreativeMode) {
|
||
|
if (player.getPlayerSpecies().canFly()) {
|
||
|
if (ticksSinceLanding < 2) {
|
||
|
ticksSinceLanding++;
|
||
|
}
|
||
|
|
||
|
entity.capabilities.allowFlying = entity.capabilities.isFlying = false;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
if (entity.capabilities.isFlying) {
|
||
|
entity.fallDistance = 0;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
public void updateFlightStat(EntityPlayer entity, boolean flying) {
|
||
|
if (!entity.capabilities.isCreativeMode) {
|
||
|
entity.capabilities.allowFlying = player.getPlayerSpecies().canFly();
|
||
|
|
||
|
if (entity.capabilities.allowFlying) {
|
||
|
entity.capabilities.isFlying |= flying;
|
||
|
|
||
|
isFlying = entity.capabilities.isFlying;
|
||
|
|
||
|
if (isFlying) {
|
||
|
ticksSinceLanding = 0;
|
||
|
}
|
||
|
|
||
|
} else {
|
||
|
entity.capabilities.isFlying = false;
|
||
|
isFlying = false;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
@Override
|
||
|
public void writeToNBT(NBTTagCompound compound) {
|
||
|
compound.setInteger("ticksOnGround", ticksSinceLanding);
|
||
|
compound.setBoolean("isFlying", isFlying);
|
||
|
}
|
||
|
|
||
|
@Override
|
||
|
public void readFromNBT(NBTTagCompound compound) {
|
||
|
ticksSinceLanding = compound.getInteger("ticksOnGround");
|
||
|
isFlying = compound.getBoolean("isFlying");
|
||
|
}
|
||
|
}
|