package appeng.parts.misc; import io.netty.buffer.ByteBuf; import java.io.IOException; import java.util.List; import java.util.Random; import net.minecraft.client.renderer.RenderBlocks; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.IIcon; import net.minecraft.util.Vec3; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; import appeng.api.networking.IGridNode; import appeng.api.parts.BusSupport; import appeng.api.parts.IPart; import appeng.api.parts.IPartCollsionHelper; import appeng.api.parts.IPartHost; import appeng.api.parts.IPartRenderHelper; import appeng.api.parts.ISimplifiedBundle; import appeng.api.parts.PartItemStack; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; public class PartCableAnchor implements IPart { protected ISimplifiedBundle renderCache = null; ItemStack is = null; IPartHost host = null; ForgeDirection mySide = ForgeDirection.UP; public PartCableAnchor(ItemStack is) { this.is = is; } @Override @SideOnly(Side.CLIENT) public void renderStatic(int x, int y, int z, IPartRenderHelper rh, RenderBlocks renderer) { renderCache = rh.useSimpliedRendering( x, y, z, this, renderCache ); IIcon myIcon = is.getIconIndex(); rh.setTexture( myIcon ); if ( host != null && host.getFacadeContainer().getFacade( mySide ) != null ) rh.setBounds( 7, 7, 10, 9, 9, 14 ); else rh.setBounds( 7, 7, 10, 9, 9, 16 ); rh.renderBlock( x, y, z, renderer ); rh.setTexture( null ); } @Override @SideOnly(Side.CLIENT) public void randomDisplayTick(World world, int x, int y, int z, Random r) { } @Override @SideOnly(Side.CLIENT) public void renderInventory(IPartRenderHelper instance, RenderBlocks renderer) { instance.setTexture( is.getIconIndex() ); instance.setBounds( 7, 7, 4, 9, 9, 14 ); instance.renderInventoryBox( renderer ); instance.setTexture( null ); } @Override public void getBoxes(IPartCollsionHelper bch) { if ( host != null && host.getFacadeContainer().getFacade( mySide ) != null ) bch.addBox( 7, 7, 10, 9, 9, 14 ); else bch.addBox( 7, 7, 10, 9, 9, 16 ); } @Override public ItemStack getItemStack(PartItemStack wrenched) { return is; } @Override public boolean requireDynamicRender() { return false; } @Override @SideOnly(Side.CLIENT) public void renderDynamic(double x, double y, double z, IPartRenderHelper rh, RenderBlocks renderer) { } @Override public boolean isSolid() { return false; } @Override public boolean canConnectRedstone() { return false; } @Override public void writeToNBT(NBTTagCompound data) { } @Override public void readFromNBT(NBTTagCompound data) { } @Override public int getLightLevel() { return 0; } @Override public void onNeighborChanged() { } @Override public int isProvidingStrongPower() { return 0; } @Override public int isProvidingWeakPower() { return 0; } @Override public void writeToStream(ByteBuf data) throws IOException { } @Override public boolean readFromStream(ByteBuf data) throws IOException { return false; } @Override public IGridNode getGridNode() { return null; } @Override public void onEntityCollision(Entity entity) { } @Override public void removeFromWorld() { } @Override public void addToWorld() { } @Override public IGridNode getExternalFacingNode() { return null; } @Override public void setPartHostInfo(ForgeDirection side, IPartHost host, TileEntity tile) { this.host = host; mySide = side; } @Override public boolean onActivate(EntityPlayer player, Vec3 pos) { return false; } @Override public void getDrops(List drops, boolean wrenched) { } @Override public int cableConnectionRenderTo() { return 0; } @Override public boolean isLadder(EntityLivingBase entity) { return mySide.offsetY == 0 && entity.isCollidedHorizontally; } @Override public boolean onShiftActivate(EntityPlayer player, Vec3 pos) { return false; } @Override public void onPlacement(EntityPlayer player, ItemStack held, ForgeDirection side) { } @Override public boolean canBePlacedOn(BusSupport what) { return what == BusSupport.CABLE || what == BusSupport.DENSE_CABLE; } @Override public IIcon getBreakingTexture() { return null; } }