package com.amadornes.framez.network;
import io.netty.buffer.ByteBuf;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.tileentity.TileEntity;
import uk.co.qmunity.lib.network.LocatedPacket;
import uk.co.qmunity.lib.vec.Vec3i;
import com.amadornes.framez.movement.FrameMovementRegistry;
import com.amadornes.framez.movement.MovingBlock;
import com.amadornes.framez.movement.MovingStructure;
import com.amadornes.framez.tile.TileMotor;
import cpw.mods.fml.common.network.ByteBufUtils;
public class PacketSingleBlockSync extends LocatedPacket<PacketSingleBlockSync> {
private MovingBlock block;
private Vec3i v;
private NBTTagCompound t;
public PacketSingleBlockSync(TileMotor motor, MovingBlock block) {
super(motor.getX(), motor.getY(), motor.getZ());
this.block = block;
}
public PacketSingleBlockSync() {
}
@Override
public void handleClientSide(EntityPlayer player) {
TileEntity tile = player.worldObj.getTileEntity(x, y, z);
if (tile == null || !(tile instanceof TileMotor))
return;
TileMotor te = (TileMotor) tile;
MovingStructure s = te.getStructure();
if (s == null)
return;
block = s.getBlock(v.getX(), v.getY(), v.getZ());
if (block == null)
return;
FrameMovementRegistry.instance().readInfo(block, t);
block.setRenderList(-1);
}
@Override
public void handleServerSide(EntityPlayer player) {
}
@Override
public void toBytes(ByteBuf buf) {
super.toBytes(buf);
buf.writeInt(block.getX());
buf.writeInt(block.getY());
buf.writeInt(block.getZ());
NBTTagCompound t = FrameMovementRegistry.instance().writeInfo(block);
ByteBufUtils.writeTag(buf, t);
}
@Override
public void fromBytes(ByteBuf buf) {
super.fromBytes(buf);
v = new Vec3i(buf.readInt(), buf.readInt(), buf.readInt());
t = ByteBufUtils.readTag(buf);
}
}