Advertisement
Guest User

ObsidianSlab.java

a guest
Sep 13th, 2014
317
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 7.08 KB | None | 0 0
  1. package com.gmail.tester.richard.missingblocks.blocks.slabs.stone;
  2.  
  3. import java.util.List;
  4. import java.util.Random;
  5.  
  6. import com.gmail.tester.richard.missingblocks.blocks.ModBlocksSlabs;
  7. import com.gmail.tester.richard.missingblocks.blocks.ModBlocksSlabs;
  8. import com.gmail.tester.richard.missingblocks.lib.Constants;
  9.  
  10. import cpw.mods.fml.common.Mod;
  11. import cpw.mods.fml.common.event.FMLPostInitializationEvent;
  12. import cpw.mods.fml.relauncher.Side;
  13. import cpw.mods.fml.relauncher.SideOnly;
  14. import net.minecraft.block.Block;
  15. import net.minecraft.block.BlockSlab;
  16. import net.minecraft.block.BlockStoneSlab;
  17. import net.minecraft.block.material.Material;
  18. import net.minecraft.creativetab.CreativeTabs;
  19. import net.minecraft.entity.EntityLiving;
  20. import net.minecraft.entity.player.EntityPlayer;
  21. import net.minecraft.init.Blocks;
  22. import net.minecraft.item.Item;
  23. import net.minecraft.item.ItemSlab;
  24. import net.minecraft.item.ItemStack;
  25. import net.minecraft.util.Facing;
  26. import net.minecraft.util.IIcon;
  27. import net.minecraft.world.IBlockAccess;
  28. import net.minecraft.world.World;
  29.  
  30. public class ObsidianSlab extends BlockSlab{
  31.  
  32.     private boolean isDoubleSlab;
  33.     private int numSubBlocks;
  34.     private Block singleSlab;
  35.     private Block textureBlock;
  36.     private int textureStartCounter;
  37.     public final static String name = "obsidianSlab";
  38.     public final static String name1 = "obsidianDblSlab";
  39.     //public static final String[] slabName = new String[]{ name, name1 };
  40.        
  41.     public ObsidianSlab(boolean _isDoubleSlab, Material _blockMaterial, int _numSubBlocks, Block _singleSlab, Block _textureBlock, int _textureStartCounter) {
  42.        
  43.         super(_isDoubleSlab, _blockMaterial);
  44.        
  45.         this.setHardness(50.0F);
  46.         this.setResistance(2000.0F);
  47.         this.setHarvestLevel("pickaxe", 3);
  48.         this.setStepSound(soundTypePiston);
  49.         this.useNeighborBrightness = true;
  50.         this.setLightOpacity(255);
  51.        
  52.         if(_isDoubleSlab){
  53.            
  54.             this.setCreativeTab(CreativeTabs.tabBlock);
  55.             //this.setCreativeTab(null);
  56.          
  57.             } else{
  58.                
  59.                 this.setBlockName(Constants.MODID + "_" + ObsidianSlab.name);
  60.                 this.setCreativeTab(CreativeTabs.tabBlock);
  61.                 this.isDoubleSlab = _isDoubleSlab;
  62.                 this.numSubBlocks = _numSubBlocks;
  63.                 this.singleSlab = _singleSlab;
  64.                 this.textureBlock = _textureBlock;
  65.                 this.textureStartCounter = _textureStartCounter;
  66.                
  67.         }
  68.        
  69.     }
  70.    
  71.     @Override
  72.     @SideOnly(Side.CLIENT)
  73.     public void getSubBlocks(Item par1, CreativeTabs tab, List subItems)
  74.         {
  75.          for (int ix = 0; ix < numSubBlocks; ix++)
  76.          {
  77.           subItems.add(new ItemStack(this, 1, ix));
  78.          }
  79.     }
  80.  
  81.     @SideOnly(Side.CLIENT)
  82.     public IIcon getIcon(int side, int meta)
  83.     {
  84.       return textureBlock.getIcon(side, (meta % 8) + textureStartCounter);
  85.     }
  86.  
  87.  
  88.     @Override
  89.     public Item getItemDropped(int par1, Random rand, int par3)
  90.     {
  91.       return (isDoubleSlab ? Item.getItemFromBlock(singleSlab) : Item.getItemFromBlock(this));
  92.     }
  93.  
  94.     @Override
  95.         public int quantityDropped(Random rand)
  96.         {
  97.             return (isDoubleSlab ? 2 : 1);
  98.         }
  99.  
  100.     @Override
  101.     public int damageDropped (int metadata) {
  102.       return metadata % 8;
  103.     }
  104.  
  105.  
  106.  
  107.     @Override
  108.     protected ItemStack createStackedBlock(int meta)      
  109.     {              
  110.       return new ItemStack(singleSlab, 2, meta & 7);      
  111.     }      
  112.  
  113.  
  114.  
  115.     @Override
  116.     //In Forge 1.6.4 it was "getFullSlabName"
  117.     public String func_150002_b(int par1)
  118.     {
  119.       if ((par1 < 0) || (par1 >= numSubBlocks))              
  120.       {                      
  121.        par1 = 0;              
  122.       }              
  123.       return super.getUnlocalizedName() + "." + (par1+1);  
  124.     }
  125.  
  126.     /*        if (isDoubleSlab){
  127.            
  128.             this.opaque = true;
  129.         }
  130.        
  131.         else{
  132.            
  133.             this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 0.5F, 1.0F);
  134.         }
  135.  
  136.     }
  137.    
  138.     public int quantityDropped(Random rand){
  139.        
  140.         return this._isDoubleSlab ? 2 : 1;
  141.     }
  142.    
  143.     public boolean renderAsNormalBlock(){
  144.        
  145.         return this._isDoubleSlab;
  146.     }
  147.    
  148.     public int onBlockPlaced(World world, int x, int y, int z, int side, float hitX, float hitY, float hitZ, int metadata){
  149.        
  150.         return this._isDoubleSlab ? metadata : (side != 0 && (side == 1 || (double)hitY <= 0.5D) ? metadata : metadata | 8);
  151.     }
  152.    
  153.     public void onBlockPlacedBy(World world, int par2, int par3, int par4, EntityLiving par5){
  154.    
  155.         if(world.getBlock(par2, par3 - 1, par4) == ModBlocksSlabs.obsidianSlab){
  156.            
  157.             world.setBlock(par2, par3 - 1, par4, ModBlocksSlabs.obsidianDblSlab);
  158.            
  159.         }
  160.        
  161.         if(world.getBlock(par2, par3 + 1, par4) == ModBlocksSlabs.obsidianSlab){
  162.            
  163.             world.setBlock(par2, par3 + 1, par4, ModBlocksSlabs.obsidianDblSlab);
  164.            
  165.         }
  166.     }
  167.  
  168.     @Override
  169.     public ItemStack createStackedBlock(int idk){
  170.        
  171.         return new ItemStack(Item.getItemFromBlock(ModBlocksSlabs.obsidianSlab), 2, idk & 7);
  172.     }
  173.  
  174.     public String getFullSlabName(int i){
  175.        
  176.         if ((i < 0) || (i >= slabName.length)){
  177.        
  178.             i = 0;
  179.        
  180.         }
  181.  
  182.     return super.getUnlocalizedName() + "." + slabName[i];
  183.    
  184.     }
  185.    
  186.     @Override
  187.     @SideOnly(Side.CLIENT)
  188.     public boolean shouldSideBeRendered(IBlockAccess blockAccess, int x, int y, int z, int side){
  189.        
  190.         if (this._isDoubleSlab)
  191.         {
  192.             return super.shouldSideBeRendered(blockAccess, x, y, z, side);
  193.         }
  194.         else if (side != 1 && side != 0 && !super.shouldSideBeRendered(blockAccess, x, y, z, side))
  195.         {
  196.             return false;
  197.         }
  198.         else
  199.         {
  200.             int i1 = x + Facing.offsetsXForSide[Facing.oppositeSide[side]];
  201.             int j1 = y + Facing.offsetsYForSide[Facing.oppositeSide[side]];
  202.             int k1 = z + Facing.offsetsZForSide[Facing.oppositeSide[side]];
  203.             boolean flag = (blockAccess.getBlockMetadata(i1, j1, k1) & 8) != 0;
  204.            
  205.             return flag ? (side == 0 ? true : (side == 1 && super.shouldSideBeRendered(blockAccess, x, y, z, side) ? true : !isBlockSingleSlab(blockAccess.getBlock(x, y, z)) || (blockAccess.getBlockMetadata(x, y, z) & 8) == 0)) : (side == 1 ? true : (side == 0 && super.shouldSideBeRendered(blockAccess, x, y, z, side) ? true : !isBlockSingleSlab(blockAccess.getBlock(x, y, z)) || (blockAccess.getBlockMetadata(x, y, z) & 8) != 0));
  206.         }
  207.     }    
  208.  
  209.     @SideOnly(Side.CLIENT)
  210.     public static boolean isBlockSingleSlab(Block b)
  211.     {
  212.         return b == ModBlocksSlabs.obsidianSlab;
  213.     }
  214.    
  215.     @Override
  216.     @SideOnly(Side.CLIENT)
  217.     public Item getItem(World world, int idk1, int idk2, int idk3){
  218.        
  219.         return isBlockSingleSlab(this) ? Item.getItemFromBlock(this) : (this == ModBlocksSlabs.obsidianDblSlab ? Item.getItemFromBlock(ModBlocksSlabs.obsidianSlab) : Item.getItemFromBlock(ModBlocksSlabs.obsidianSlab));
  220.                
  221.     }
  222.  
  223.     public void getSubBlocks(Block block, CreativeTabs cTabs, List list){
  224.    
  225.         if (block != ModBlocksSlabs.obsidianDblSlab){
  226.            
  227.             list.add(new ItemStack(block, 1, 1));
  228.         }
  229.     }
  230.    
  231.     @Override
  232.     public String func_150002_b(int idk1){
  233.  
  234.         return null;
  235.     }*/
  236.    
  237.  }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement