ref: 2c305a89aceb99de504672b0b1dce29d47d09aa2
package btw.community.tsughoggr.gloryholes; import java.util.Random; import net.minecraft.src.Block; import net.minecraft.src.BlockContainer; import net.minecraft.src.World; import net.minecraft.src.IBlockAccess; import net.minecraft.src.ItemStack; import net.minecraft.src.Item; import net.minecraft.src.EntityLiving; import net.minecraft.src.EntityPlayer; import net.minecraft.src.Vec3; import net.minecraft.src.MovingObjectPosition; import net.minecraft.src.Material; import net.minecraft.src.MathHelper; import net.minecraft.src.TileEntity; import net.minecraft.src.EntityLivingBase; import btw.BTWMod; import btw.item.BTWItems; import btw.block.BTWBlocks; import btw.block.MechanicalBlock; import btw.block.util.MechPowerUtils; import btw.item.util.ItemUtils; import btw.block.model.BlockModel; /*CLIENT ONLY*/ import net.minecraft.src.Icon; import net.minecraft.src.IconRegister; import net.minecraft.src.RenderBlocks; import btw.util.MiscUtils; public class TSGBlockBlowingStand extends BlockContainer implements MechanicalBlock { private static BlockModel models[] = new BlockModel[5]; private static Icon icons[] = new Icon[5]; public TSGBlockBlowingStand(int id){ super(id, Material.rock); setHardness(2F); setResistance(10F); initModel(); } /*Block*/ public void registerIcons(IconRegister var1){ icons[0] = var1.registerIcon("ice"); icons[1] = var1.registerIcon("anvil"); icons[2] = var1.registerIcon("planks_oak"); icons[3] = var1.registerIcon("btw:stone_slab_top_strata_2"); icons[4] = var1.registerIcon("btw:millstone_top"); } public boolean hasLargeCenterHardPointToFacing(IBlockAccess ba, int i, int j, int k, int face, boolean bt){ return false; } @Override public int onBlockPlaced(World wd, int i, int j, int k, int fc, float fx, float fy, float fz, int md){ if(fc < 2) fc=2; wd.setBlockMetadataWithNotify(i,j,k,fc-2); return fc; } @Override public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase player, ItemStack item){ int fc = MiscUtils.convertOrientationToFlatBlockFacingReversed(player); System.out.println(fc); world.setBlockMetadataWithNotify(x,y,z,fc-2); } public Icon getIcon(int sid, int md){ return icons[md%(icons.length)]; } /*BlockContainer*/ public TileEntity createNewTileEntity(World w){ return new TSGBlowingStand(); } /*MechanicalBlock*/ public boolean isInputtingMechanicalPower(World world, int x, int y, int z){ return MechPowerUtils.isBlockPoweredByAxle(world, x, y, z, this); } public void overpower(World w, int x, int y, int z){ /*TODO: Dump recipe*/ } public boolean canInputAxlePowerToFacing(World w, int x, int y, int z, int fc){ return fc == 1; } public boolean isOutputtingMechanicalPower(World world, int x, int y, int z){ return false; } public boolean canOutputMechanicalPower(){ return false; } public boolean canInputMechanicalPower(){ return true; } /*Client Render*/ public boolean renderAsNormalBlock() { return false; } public boolean isOpaqueCube(){ return false; } private static void initModel(){ for(int i=0;i<models.length;++i) models[i] = new BlockModel(); models[0].addBox(0D, 0.01D, 0D, 1D, 0.375D, 1D); models[1].addBox(0.375D, 0.375D, 0D ,.625D,.625D,.625D); models[2].addBox( 0.3125D, 0.375D,0.625D, 0.6875D, 0.6875D,1D ); models[3].addBox(0.25D,0.375D, 0.25D, 0.375D, 0.5625D, 0.5625D); models[3].addBox(0.625, 0.375D, 0.25D, 0.75D, 0.5625D, 0.5625D); models[4].addBox(0D, 0D, 0D, 1D, 0.01D, 1D); } @Override public void renderBlockAsItem(RenderBlocks rb, int md, float cd){ models[0].renderAsItemBlock(rb, this, 3); models[1].renderAsItemBlock(rb, this, 1); models[2].renderAsItemBlock(rb, this, 0); models[3].renderAsItemBlock(rb, this, 2); } @Override public boolean renderBlock(RenderBlocks rb, int x, int y, int z){ int md = rb.blockAccess.getBlockMetadata(x,y,z); /*1 - rod 1 - glass 11 - rotate*/ int rot = (md&3)+2; BlockModel bt; models[0].renderAsBlockWithTexture(rb,this,x,y,z, icons[3]); if((md>>3) == 1){ bt = models[1].makeTemporaryCopy(); bt.rotateAroundYToFacing(rot); bt.renderAsBlockWithTexture(rb,this,x,y,z, icons[1]); } if((md >>2) == 1){ bt = models[2].makeTemporaryCopy(); bt.rotateAroundYToFacing(rot); bt.renderAsBlockWithTexture(rb,this,x,y,z, icons[0]); } /*No rotation required*/ bt = models[3].makeTemporaryCopy(); bt.rotateAroundYToFacing(rot); bt.renderAsBlockWithTexture(rb,this,x,y,z, icons[2]); models[4].renderAsBlockWithTexture(rb, this, x,y,z, icons[4]); return true; } }