package net.glowstone.net.handler.play.player;
import com.flowpowered.network.MessageHandler;
import net.glowstone.entity.GlowPlayer;
import net.glowstone.net.GlowSession;
import net.glowstone.net.message.play.player.PlayerActionMessage;
import org.bukkit.Material;
import org.bukkit.inventory.ItemStack;
public final class PlayerActionHandler implements MessageHandler<GlowSession, PlayerActionMessage> {
@Override
public void handle(GlowSession session, PlayerActionMessage message) {
GlowPlayer player = session.getPlayer();
switch (message.getAction()) {
case 0: // crouch
player.setSneaking(true);
break;
case 1: // uncrouch
player.setSneaking(false);
break;
case 2: // leave bed
if (player.isSleeping()) {
player.leaveBed(true);
}
break;
case 3: // start sprinting
player.setSprinting(true);
break;
case 4: // stop sprinting
player.setSprinting(false);
break;
case 5: // start jump with horse
break;
case 6: // stop jump with horse
break;
case 7: // open horse inventory
break;
case 8: // start gliding
ItemStack chestplate = player.getInventory().getChestplate();
boolean hasElytra = chestplate != null && chestplate.getType() == Material.ELYTRA && chestplate.getDurability() < chestplate.getType().getMaxDurability();
if (!player.isOnGround() && !player.isGliding() && !player.isInWater() && hasElytra) {
player.setGliding(true);
}
}
}
}