Package crazypants.enderio.conduit.packet

Source Code of crazypants.enderio.conduit.packet.AbstractConduitPacket

package crazypants.enderio.conduit.packet;

import io.netty.buffer.ByteBuf;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.world.World;
import cpw.mods.fml.common.network.simpleimpl.MessageContext;
import crazypants.enderio.conduit.IConduit;
import crazypants.enderio.conduit.IConduitBundle;

public class AbstractConduitPacket<T extends IConduit> extends AbstractConduitBundlePacket {

  protected ConTypeEnum conType;

  public AbstractConduitPacket() {
  }

  public AbstractConduitPacket(TileEntity tile, ConTypeEnum conType) {
    super(tile);
    this.conType = conType;   
  }

  protected Class<? extends IConduit> getConType() {
    return conType.getBaseType();
  }

  @Override
  public void toBytes(ByteBuf buf) {
    super.toBytes(buf);
    buf.writeShort(conType.ordinal());
  }

  @Override
  public void fromBytes(ByteBuf buf) {
    super.fromBytes(buf);
    short ordinal = buf.readShort();
    conType = ConTypeEnum.values()[ordinal];
  }

  @SuppressWarnings("unchecked")
  protected T getTileCasted(MessageContext ctx) {
    World world = getWorld(ctx);
    if(world == null) {
      return null;
    }
    TileEntity te = world.getTileEntity(x, y, z);
    if( ! (te instanceof IConduitBundle)) {
      return null;
    }
   
    IConduitBundle bundle = (IConduitBundle)te;
    return (T) bundle.getConduit(getConType());
  }
}
TOP

Related Classes of crazypants.enderio.conduit.packet.AbstractConduitPacket

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.