Package pneumaticCraft.common.network

Source Code of pneumaticCraft.common.network.PacketUpdateTubeModule

package pneumaticCraft.common.network;

import io.netty.buffer.ByteBuf;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.tileentity.TileEntity;
import net.minecraftforge.common.util.ForgeDirection;
import pneumaticCraft.common.block.tubes.TubeModule;
import pneumaticCraft.common.tileentity.TileEntityPressureTube;

public abstract class PacketUpdateTubeModule<REQ extends PacketUpdateTubeModule> extends LocationIntPacket<REQ>{

    protected ForgeDirection moduleSide;

    public PacketUpdateTubeModule(){}

    public PacketUpdateTubeModule(TubeModule module){
        super(module.getTube().x(), module.getTube().y(), module.getTube().z());
        moduleSide = module.getDirection();
    }

    @Override
    public void toBytes(ByteBuf buffer){
        super.toBytes(buffer);
        buffer.writeByte((byte)moduleSide.ordinal());
    }

    @Override
    public void fromBytes(ByteBuf buffer){
        super.fromBytes(buffer);
        moduleSide = ForgeDirection.getOrientation(buffer.readByte());
    }

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

    @Override
    public void handleServerSide(REQ message, EntityPlayer player){
        TileEntity te = player.worldObj.getTileEntity(message.x, message.y, message.z);
        //TODO add code for FMP support.
        if(te instanceof TileEntityPressureTube) {
            TubeModule module = ((TileEntityPressureTube)te).modules[message.moduleSide.ordinal()];
            if(module != null) {
                onModuleUpdate(module, message, player);
                if(!player.worldObj.isRemote) NetworkHandler.sendToAllAround(message, player.worldObj);
            }
        }
    }

    protected abstract void onModuleUpdate(TubeModule module, REQ message, EntityPlayer player);

}
TOP

Related Classes of pneumaticCraft.common.network.PacketUpdateTubeModule

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.