package com.flansmod.common.network; import io.netty.buffer.ByteBuf; import io.netty.channel.ChannelHandlerContext; import net.minecraft.item.ItemStack; import net.minecraftforge.fml.common.network.ByteBufUtils; import com.flansmod.common.driveables.EntityDriveable; import com.flansmod.common.driveables.mechas.EntityMecha; import com.flansmod.common.driveables.mechas.EnumMechaSlotType; public class PacketMechaControl extends PacketDriveableControl { public float legYaw, legSwing; public ItemStack leftStack, rightStack; public PacketMechaControl() {} public PacketMechaControl(EntityDriveable driveable) { super(driveable); EntityMecha mecha = (EntityMecha)driveable; legYaw = mecha.legAxes.getYaw(); legSwing = mecha.legSwing; leftStack = mecha.inventory.getStackInSlot(EnumMechaSlotType.leftTool); rightStack = mecha.inventory.getStackInSlot(EnumMechaSlotType.rightTool); } @Override public void encodeInto(ChannelHandlerContext ctx, ByteBuf data) { super.encodeInto(ctx, data); data.writeFloat(legYaw); data.writeFloat(legSwing); ByteBufUtils.writeItemStack(data, leftStack); ByteBufUtils.writeItemStack(data, rightStack); } @Override public void decodeInto(ChannelHandlerContext ctx, ByteBuf data) { super.decodeInto(ctx, data); legYaw = data.readFloat(); legSwing = data.readFloat(); leftStack = ByteBufUtils.readItemStack(data); rightStack = ByteBufUtils.readItemStack(data); } @Override protected void updateDriveable(EntityDriveable driveable, boolean clientSide) { super.updateDriveable(driveable, clientSide); EntityMecha mecha = (EntityMecha)driveable; mecha.legAxes.setAngles(legYaw, 0F, 0F); mecha.legSwing = legSwing / 2F; if(clientSide) { mecha.inventory.setInventorySlotContents(EnumMechaSlotType.leftTool, leftStack); mecha.inventory.setInventorySlotContents(EnumMechaSlotType.rightTool, rightStack); } } }