package ttftcuts.physis.common.network.packet;
import ttftcuts.physis.common.network.PacketHandler;
import cpw.mods.fml.common.network.internal.FMLProxyPacket;
import io.netty.buffer.ByteBuf;
import net.minecraft.entity.player.EntityPlayer;
public class PacketPlayerUpdate extends PacketHandler {
@Override
public void handle(ByteBuf data, EntityPlayer player) {
if (player.worldObj.isRemote) {
UpdateType type = UpdateType.values()[data.readInt()];
switch(type) {
case PUNT:
double x = data.readDouble();
double y = data.readDouble();
double z = data.readDouble();
player.motionX += x;
player.motionY += y;
player.motionZ += z;
break;
case AIR:
int air = player.getAir();
int airchange = data.readByte();
int newair = Math.max(0, Math.min(300, air + airchange));
player.setAir(newair);
break;
}
}
}
public static FMLProxyPacket createPuntPacket(double x, double y, double z) {
ByteBuf data = PacketHandler.createDataBuffer(PacketPlayerUpdate.class);
data.writeInt(UpdateType.PUNT.ordinal());
data.writeDouble(x);
data.writeDouble(y);
data.writeDouble(z);
return buildPacket(data);
}
public static FMLProxyPacket createAirPacket(int air) {
ByteBuf data = PacketHandler.createDataBuffer(PacketPlayerUpdate.class);
data.writeInt(UpdateType.AIR.ordinal());
data.writeByte(air);
return buildPacket(data);
}
public static enum UpdateType {
PUNT,
AIR
}
}