Package pneumaticCraft.common.network

Source Code of pneumaticCraft.common.network.PacketProgrammerUpdate

package pneumaticCraft.common.network;

import io.netty.buffer.ByteBuf;

import java.util.List;

import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.network.PacketBuffer;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.AxisAlignedBB;
import pneumaticCraft.common.tileentity.TileEntityProgrammer;

public class PacketProgrammerUpdate extends LocationIntPacket<PacketProgrammerUpdate>{
    private NBTTagCompound progWidgets;

    public PacketProgrammerUpdate(){}

    public PacketProgrammerUpdate(TileEntityProgrammer te){
        super(te.xCoord, te.yCoord, te.zCoord);
        progWidgets = new NBTTagCompound();
        te.writeProgWidgetsToNBT(progWidgets);
    }

    @Override
    public void toBytes(ByteBuf buffer){
        super.toBytes(buffer);
        try {
            new PacketBuffer(buffer).writeNBTTagCompoundToBuffer(progWidgets);
        } catch(Exception e) {
            e.printStackTrace();
        }
    }

    @Override
    public void fromBytes(ByteBuf buffer){
        super.fromBytes(buffer);
        try {
            progWidgets = new PacketBuffer(buffer).readNBTTagCompoundFromBuffer();
        } catch(Exception e) {
            e.printStackTrace();
        }
    }

    @Override
    public void handleClientSide(PacketProgrammerUpdate message, EntityPlayer player){
        handleServerSide(null, player);
    }

    @Override
    public void handleServerSide(PacketProgrammerUpdate message, EntityPlayer player){
        TileEntity te = player.worldObj.getTileEntity(message.x, message.y, message.z);
        if(te instanceof TileEntityProgrammer) {
            ((TileEntityProgrammer)te).readProgWidgetsFromNBT(message.progWidgets);
            if(!player.worldObj.isRemote) {
                updateOtherWatchingPlayers((TileEntityProgrammer)te, player);
            }
        }
    }

    private void updateOtherWatchingPlayers(TileEntityProgrammer te, EntityPlayer changingPlayer){
        List<EntityPlayerMP> players = changingPlayer.worldObj.getEntitiesWithinAABB(EntityPlayerMP.class, AxisAlignedBB.getBoundingBox(x - 5, y - 5, z - 5, x + 6, y + 6, z + 6));
        for(EntityPlayerMP player : players) {
            if(player != changingPlayer) {
                NetworkHandler.sendTo(new PacketProgrammerUpdate(te), player);
            }
        }
    }

}
TOP

Related Classes of pneumaticCraft.common.network.PacketProgrammerUpdate

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.