package com.flansmod.common.network; import io.netty.buffer.ByteBuf; import io.netty.channel.ChannelHandlerContext; import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; import com.flansmod.common.FlansMod; import com.flansmod.common.driveables.EntityDriveable; import com.flansmod.common.driveables.EntitySeat; public class PacketSeatUpdates extends PacketBase { public int entityId, seatId; public float yaw, pitch; public PacketSeatUpdates() {} public PacketSeatUpdates(EntitySeat seat) { entityId = seat.driveable.getEntityId(); seatId = seat.seatInfo.id; yaw = seat.looking.getYaw(); pitch = seat.looking.getPitch(); } @Override public void encodeInto(ChannelHandlerContext ctx, ByteBuf data) { data.writeInt(entityId); data.writeInt(seatId); data.writeFloat(yaw); data.writeFloat(pitch); } @Override public void decodeInto(ChannelHandlerContext ctx, ByteBuf data) { entityId = data.readInt(); seatId = data.readInt(); yaw = data.readFloat(); pitch = data.readFloat(); } @Override public void handleServerSide(EntityPlayerMP playerEntity) { EntityDriveable driveable = null; for(Object obj : playerEntity.worldObj.loadedEntityList) { if(obj instanceof EntityDriveable && ((Entity)obj).getEntityId() == entityId) { driveable = (EntityDriveable)obj; break; } } if(driveable != null) { driveable.seats[seatId].prevLooking = driveable.seats[seatId].looking.clone(); driveable.seats[seatId].looking.setAngles(yaw, pitch, 0F); //If on the server, update all surrounding players with these new angles FlansMod.getPacketHandler().sendToAllAround(this, driveable.posX, driveable.posY, driveable.posZ, FlansMod.soundRange, driveable.dimension); } } @Override @SideOnly(Side.CLIENT) public void handleClientSide(EntityPlayer clientPlayer) { EntityDriveable driveable = null; for(int i = 0; i < clientPlayer.worldObj.loadedEntityList.size(); i++) { Object obj = clientPlayer.worldObj.loadedEntityList.get(i); if(obj instanceof EntityDriveable && ((Entity)obj).getEntityId() == entityId) { driveable = (EntityDriveable)obj; break; } } if(driveable != null) { //If this is the player who sent the packet in the first place, don't read it if(driveable.seats[seatId] == null || driveable.seats[seatId].riddenByEntity == clientPlayer) return; driveable.seats[seatId].prevLooking = driveable.seats[seatId].looking.clone(); driveable.seats[seatId].looking.setAngles(yaw, pitch, 0F); } } }