Advertisement
WackoMcGoose

Grass renderination

Feb 10th, 2012
152
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.71 KB | None | 0 0
  1. private boolean RenderGrassBlockInWorld(RenderBlocks renderblocks, IBlockAccess iblockaccess, int i, int j, int k, Block block)
  2.     {
  3.         int northBlockID = iblockaccess.getBlockId(i, j, k + 1);
  4.         if(northBlockID == 0) { northBlockID = 36; }
  5.         int eastBlockID = iblockaccess.getBlockId(i + 1, j, k);
  6.         if(eastBlockID == 0) { eastBlockID = 36; }
  7.         int southBlockID = iblockaccess.getBlockId(i, j, k - 1);
  8.         if(southBlockID == 0) { southBlockID = 36; }
  9.         int westBlockID = iblockaccess.getBlockId(i - 1, j, k);
  10.         if(westBlockID == 0) { westBlockID = 36; }
  11.         int northwestBlockID = iblockaccess.getBlockId(i - 1, j, k + 1);
  12.         if(northwestBlockID == 0) { northwestBlockID = 36; }
  13.         int northeastBlockID = iblockaccess.getBlockId(i + 1, j, k + 1);
  14.         if(northeastBlockID == 0) { northeastBlockID = 36; }
  15.         int southeastBlockID = iblockaccess.getBlockId(i + 1, j, k - 1);
  16.         if(southeastBlockID == 0) { southeastBlockID = 36; }
  17.         int southwestBlockID = iblockaccess.getBlockId(i - 1, j, k - 1);
  18.         if(southwestBlockID == 0) { southwestBlockID = 36; }
  19.         //System.out.println((new StringBuilder()).append("n=").append(northBlockID).append(" e=").append(eastBlockID).append(" s=").append(southBlockID).append(" w=").append(westBlockID).toString());
  20.         boolean blocksToNW = ((Block.blocksList[northBlockID].isOpaqueCube() || northBlockID == Block.grass.blockID) && (Block.blocksList[westBlockID].isOpaqueCube() || westBlockID == Block.grass.blockID) && (Block.blocksList[northwestBlockID].isOpaqueCube() || northwestBlockID == Block.grass.blockID));
  21.         boolean blocksToNE = ((Block.blocksList[northBlockID].isOpaqueCube() || northBlockID == Block.grass.blockID) && (Block.blocksList[eastBlockID].isOpaqueCube() || eastBlockID == Block.grass.blockID) && (Block.blocksList[northeastBlockID].isOpaqueCube() || northeastBlockID == Block.grass.blockID));
  22.         boolean blocksToSE = ((Block.blocksList[southBlockID].isOpaqueCube() || southBlockID == Block.grass.blockID) && (Block.blocksList[eastBlockID].isOpaqueCube() || eastBlockID == Block.grass.blockID) && (Block.blocksList[southeastBlockID].isOpaqueCube() || southeastBlockID == Block.grass.blockID));
  23.         boolean blocksToSW = ((Block.blocksList[southBlockID].isOpaqueCube() || southBlockID == Block.grass.blockID) && (Block.blocksList[westBlockID].isOpaqueCube() || westBlockID == Block.grass.blockID) && (Block.blocksList[southwestBlockID].isOpaqueCube() || southwestBlockID == Block.grass.blockID));
  24.         //Default case - Grass surrounded by solid blocks on all sides or has a block on top
  25.         if(((Block.blocksList[northBlockID].isOpaqueCube()) && (Block.blocksList[eastBlockID].isOpaqueCube()) && (Block.blocksList[southBlockID].isOpaqueCube()) && (Block.blocksList[westBlockID].isOpaqueCube())) || (iblockaccess.getBlockId(i, j + 1, k) != 0))
  26.         {
  27.             block.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F);
  28.             renderblocks.renderStandardBlock(block, i, j, k);
  29.         }
  30.         else
  31.         {
  32.             //Base half-layer, placed even if grass has no solid blocks around it
  33.             block.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 0.5F, 1.0F);
  34.             renderblocks.renderStandardBlock(block, i, j, k);
  35.             //Corner cases, NOT mutually exclusive (will usually have more than one!)
  36.             if(blocksToNW)
  37.             {
  38.                 block.setBlockBounds(0.0F, 0.5F, 0.5F, 0.5F, 1.0F, 1.0F);
  39.                 renderblocks.renderStandardBlock(block, i, j, k);
  40.             }
  41.             if(blocksToNE)
  42.             {
  43.                 block.setBlockBounds(0.5F, 0.5F, 0.5F, 1.0F, 1.0F, 1.0F);
  44.                 renderblocks.renderStandardBlock(block, i, j, k);
  45.             }
  46.             if(blocksToSE)
  47.             {
  48.                 block.setBlockBounds(0.5F, 0.5F, 0.0F, 1.0F, 1.0F, 0.5F);
  49.                 renderblocks.renderStandardBlock(block, i, j, k);
  50.             }
  51.             if(blocksToSW)
  52.             {
  53.                 block.setBlockBounds(0.0F, 0.5F, 0.0F, 0.5F, 1.0F, 0.5F);
  54.                 renderblocks.renderStandardBlock(block, i, j, k);
  55.             }
  56.         }
  57.         //Not rendered, just fix the stupid hitbox
  58.         block.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F);
  59.         return false;
  60.     }
  61.  
  62. public boolean RenderWorldBlock(RenderBlocks renderblocks, IBlockAccess iblockaccess, int i, int j, int k, Block block, int l)
  63.     {
  64.         if(l == planterPotModelID)
  65.         {
  66.             return RenderPlanterPotInWorld(renderblocks, iblockaccess, i, j, k, block);
  67.         }
  68.         else if(l == hypercubeModelID)
  69.         {
  70.             return RenderHypercubeInWorld(renderblocks, iblockaccess, i, j, k, block);
  71.         }
  72.         else if(l == chancePotModelID)
  73.         {
  74.             return RenderChancePotInWorld(renderblocks, iblockaccess, i, j, k, block);
  75.         }
  76.         else if(l == grassModelID)
  77.         {
  78.             return RenderGrassBlockInWorld(renderblocks, iblockaccess, i, j, k, block);
  79.         }
  80.         else
  81.         {
  82.             return false;
  83.         }
  84.     }
  85.  
  86. //Grass model ID, put in mod_EvilMinecraft:
  87. public static int grassModelID;
  88. //And in mod_EvilMinecraft.load():
  89. grassModelID = ModLoader.getUniqueBlockModelID(this, true);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement