package pixlepix.auracascade.network;
import io.netty.buffer.ByteBuf;
import net.minecraft.client.Minecraft;
import net.minecraft.entity.Entity;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraftforge.fml.common.network.simpleimpl.IMessage;
import net.minecraftforge.fml.common.network.simpleimpl.IMessageHandler;
import net.minecraftforge.fml.common.network.simpleimpl.MessageContext;
import pixlepix.auracascade.AuraCascade;
import pixlepix.auracascade.block.entity.EntityFairy;
/**
* Created by pixlepix on 12/8/14.
*/
public class PacketFairyUpdate implements IMessage, IMessageHandler<PacketFairyUpdate, IMessage> {
public EntityFairy fairy;
double theta;
double rho;
double phi;
double dPhi;
double dTheta;
EntityPlayer player;
public PacketFairyUpdate(EntityFairy fairy) {
this.fairy = fairy;
}
public PacketFairyUpdate() {
}
@Override
public void fromBytes(ByteBuf buf) {
Entity entity = AuraCascade.proxy.getWorld().getEntityByID(buf.readInt());
if (entity instanceof EntityFairy) {
this.fairy = (EntityFairy) entity;
player = (EntityPlayer) AuraCascade.proxy.getWorld().getEntityByID(buf.readInt());
theta = buf.readDouble();
rho = buf.readDouble();
phi = buf.readDouble();
dPhi = buf.readDouble();
dTheta = buf.readDouble();
}
}
@Override
public void toBytes(ByteBuf buf) {
buf.writeInt(fairy.getEntityId());
buf.writeInt(fairy.player.getEntityId());
buf.writeDouble(fairy.theta);
buf.writeDouble(fairy.rho);
buf.writeDouble(fairy.phi);
buf.writeDouble(fairy.dPhi);
buf.writeDouble(fairy.dTheta);
}
@Override
public IMessage onMessage(final PacketFairyUpdate msg, MessageContext ctx) {
Minecraft.getMinecraft().addScheduledTask(new Runnable() {
@Override
public void run() {
if (msg.fairy != null) {
msg.fairy.theta = msg.theta;
msg.fairy.rho = msg.rho;
msg.fairy.dPhi = msg.dPhi;
msg.fairy.dTheta = msg.dTheta;
msg.fairy.phi = msg.phi;
msg.fairy.player = msg.player;
}
}
});
return null;
}
}