package com.hbm.blocks.generic; import java.util.List; import com.hbm.blocks.ITooltipProvider; import com.hbm.lib.RefStrings; import com.hbm.world.gen.nbt.INBTBlockTransformable; import cpw.mods.fml.client.registry.RenderingRegistry; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.util.IIcon; import net.minecraft.world.World; public class BlockPipe extends Block implements ITooltipProvider, INBTBlockTransformable { @SideOnly(Side.CLIENT) private IIcon sideIcon; @SideOnly(Side.CLIENT) public IIcon frameIcon; @SideOnly(Side.CLIENT) public IIcon meshIcon; private String sideString; public int rType = 0; //because registering either new renderer classes or making new block classes is a pain in the ass public BlockPipe(Material mat, String tex, int rType) { super(mat); this.sideString = tex; this.rType = rType; } @Override @SideOnly(Side.CLIENT) public void registerBlockIcons(IIconRegister iconRegister) { super.registerBlockIcons(iconRegister); this.sideIcon = iconRegister.registerIcon(sideString); this.frameIcon = iconRegister.registerIcon(RefStrings.MODID + ":pipe_frame"); this.meshIcon = iconRegister.registerIcon(RefStrings.MODID + ":pipe_mesh"); } @Override @SideOnly(Side.CLIENT) public IIcon getIcon(int side, int metadata) { return side == 1 ? this.blockIcon : (side == 0 ? this.blockIcon : this.sideIcon); } public static int renderID = RenderingRegistry.getNextAvailableRenderId(); @Override public int getRenderType() { return renderID; } @Override public boolean isOpaqueCube() { return false; } @Override public boolean renderAsNormalBlock() { return false; } @Override public int onBlockPlaced(World world, int x, int y, int z, int side, float fX, float fY, float fZ, int meta) { int j1 = meta & 3; byte b0 = 0; switch(side) { case 0: case 1: b0 = 0; break; case 2: case 3: b0 = 8; break; case 4: case 5: b0 = 4; } return j1 | b0; } @Override public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) { list.add("Purely decorative"); } @Override public int transformMeta(int meta, int coordBaseMode) { return INBTBlockTransformable.transformMetaPillar(meta, coordBaseMode); } }