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;
}
}