package crazypants.enderio.item.darksteel;
import io.netty.buffer.ByteBuf;
import net.minecraft.entity.player.EntityPlayer;
import cpw.mods.fml.common.network.simpleimpl.IMessage;
import cpw.mods.fml.common.network.simpleimpl.IMessageHandler;
import cpw.mods.fml.common.network.simpleimpl.MessageContext;
import crazypants.enderio.EnderIO;
import crazypants.enderio.network.PacketHandler;
public class PacketUpgradeState implements IMessage, IMessageHandler<PacketUpgradeState, IMessage> {
public enum Type {
GLIDE,
SPEED,
STEP_ASSIST,
JUMP
}
public PacketUpgradeState() {
}
private boolean isActive;
private Type type;
private int entityID;
public PacketUpgradeState(Type type, boolean isActive) {
this(type, isActive, 0);
}
public PacketUpgradeState(Type type, boolean isActive, int entityID) {
this.type = type;
this.isActive = isActive;
this.entityID = entityID;
}
@Override
public void toBytes(ByteBuf buf) {
buf.writeShort(type.ordinal());
buf.writeBoolean(isActive);
buf.writeInt(entityID);
}
@Override
public void fromBytes(ByteBuf buf) {
type = Type.values()[buf.readShort()];
isActive = buf.readBoolean();
entityID = buf.readInt();
}
@Override
public IMessage onMessage(PacketUpgradeState message, MessageContext ctx) {
EntityPlayer player = (EntityPlayer) (ctx.side.isClient() ? EnderIO.proxy.getClientWorld().getEntityByID(message.entityID) : ctx.getServerHandler().playerEntity);
if (player != null) {
DarkSteelController.instance.setActive(player, message.type, message.isActive);
if (ctx.side.isServer()) {
message.entityID = player.getEntityId();
PacketHandler.INSTANCE.sendToDimension(message, player.worldObj.provider.dimensionId);
}
}
return null;
}
}