Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //Everyday I'm renderin'
- private boolean RenderGrassBlockInWorld(RenderBlocks renderblocks, IBlockAccess iblockaccess, int i, int j, int k, Block block)
- {
- //Determine state of adjacent blocks
- boolean solidBlockToNorth = BlockGrass.blockConsideredSolid(i, j, k + 1, iblockaccess) || BlockGrass.blockConsideredSolid(i, j + 1, k + 1, iblockaccess);
- boolean solidBlockToEast = BlockGrass.blockConsideredSolid(i + 1, j, k, iblockaccess) || BlockGrass.blockConsideredSolid(i + 1, j + 1, k, iblockaccess);
- boolean solidBlockToSouth = BlockGrass.blockConsideredSolid(i, j, k - 1, iblockaccess) || BlockGrass.blockConsideredSolid(i, j + 1, k - 1, iblockaccess);
- boolean solidBlockToWest = BlockGrass.blockConsideredSolid(i - 1, j, k, iblockaccess) || BlockGrass.blockConsideredSolid(i - 1, j + 1, k, iblockaccess);
- boolean solidBlockToNW = BlockGrass.blockConsideredSolid(i - 1, j, k + 1, iblockaccess) || BlockGrass.blockConsideredSolid(i - 1, j + 1, k + 1, iblockaccess);
- boolean solidBlockToNE = BlockGrass.blockConsideredSolid(i + 1, j, k + 1, iblockaccess) || BlockGrass.blockConsideredSolid(i + 1, j + 1, k + 1, iblockaccess);
- boolean solidBlockToSE = BlockGrass.blockConsideredSolid(i + 1, j, k - 1, iblockaccess) || BlockGrass.blockConsideredSolid(i + 1, j + 1, k - 1, iblockaccess);
- boolean solidBlockToSW = BlockGrass.blockConsideredSolid(i - 1, j, k - 1, iblockaccess) || BlockGrass.blockConsideredSolid(i - 1, j + 1, k - 1, iblockaccess);
- boolean solidBlockOnTop = BlockGrass.blockConsideredSolid(i, j + 1, k, iblockaccess);
- //Determine possible corner types - This is "blocks are in this corner", not "this block is at this corner"
- boolean cornerNW = solidBlockToNorth && solidBlockToWest && solidBlockToNW;
- boolean cornerNE = solidBlockToNorth && solidBlockToEast && solidBlockToNE;
- boolean cornerSW = solidBlockToSouth && solidBlockToWest && solidBlockToSW;
- boolean cornerSE = solidBlockToSouth && solidBlockToEast && solidBlockToSE;
- //Render type - Surrounded by blocks, or a block on top = fullblock
- if((cornerNW && cornerNE && cornerSE && cornerSW) || solidBlockOnTop)
- {
- block.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F);
- renderblocks.renderStandardBlock(block, i, j, k);
- //block.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F); //Full hitbox
- return false;
- }
- //Render type - Corner or edge or flat
- else
- {
- //Toggle the corners, make it easier
- boolean renderCornerNW = false;
- boolean renderCornerNE = false;
- boolean renderCornerSE = false;
- boolean renderCornerSW = false;
- //Edge-type: One or more solid backing blocks
- if(BlockGrass.blockConsideredSolid(i, j, k + 1, iblockaccess) && (iblockaccess.getBlockId(i, j, k + 1) != Block.grass.blockID || BlockGrass.blockConsideredSolid(i, j + 1, k + 1, iblockaccess)))
- {
- renderCornerNW = renderCornerNE = true;
- }
- if(BlockGrass.blockConsideredSolid(i + 1, j, k, iblockaccess) && (iblockaccess.getBlockId(i + 1, j, k) != Block.grass.blockID || BlockGrass.blockConsideredSolid(i + 1, j + 1, k, iblockaccess)))
- {
- renderCornerNE = renderCornerSE = true;
- }
- if(BlockGrass.blockConsideredSolid(i, j, k - 1, iblockaccess) && (iblockaccess.getBlockId(i, j, k - 1) != Block.grass.blockID || BlockGrass.blockConsideredSolid(i, j + 1, k - 1, iblockaccess)))
- {
- renderCornerSE = renderCornerSW = true;
- }
- if(BlockGrass.blockConsideredSolid(i - 1, j, k, iblockaccess) && (iblockaccess.getBlockId(i - 1, j, k) != Block.grass.blockID || BlockGrass.blockConsideredSolid(i - 1, j + 1, k, iblockaccess)))
- {
- renderCornerSW = renderCornerNW = true;
- }
- //Cornering
- if(cornerNW)
- {
- renderCornerNW = true;
- }
- if(cornerNE)
- {
- renderCornerNE = true;
- }
- if(cornerSE)
- {
- renderCornerSE = true;
- }
- if(cornerSW)
- {
- renderCornerSW = true;
- }
- //Actually render the things
- if(renderCornerNW && renderCornerNE && renderCornerSE && renderCornerSW) //If all four corners are true
- {
- block.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F);
- renderblocks.renderStandardBlock(block, i, j, k);
- //block.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F); //Full hitbox
- return false;
- }
- //Base half-layer, placed even if grass has no solid blocks around it
- block.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 0.5F, 1.0F);
- renderblocks.renderStandardBlock(block, i, j, k);
- if(renderCornerNW)
- {
- block.setBlockBounds(0.0F, 0.5F, 0.5F, 0.5F, 1.0F, 1.0F);
- renderblocks.renderStandardBlock(block, i, j, k);
- }
- if(renderCornerNE)
- {
- block.setBlockBounds(0.5F, 0.5F, 0.5F, 1.0F, 1.0F, 1.0F);
- renderblocks.renderStandardBlock(block, i, j, k);
- }
- if(renderCornerSE)
- {
- block.setBlockBounds(0.5F, 0.5F, 0.0F, 1.0F, 1.0F, 0.5F);
- renderblocks.renderStandardBlock(block, i, j, k);
- }
- if(renderCornerSW)
- {
- block.setBlockBounds(0.0F, 0.5F, 0.0F, 0.5F, 1.0F, 0.5F);
- renderblocks.renderStandardBlock(block, i, j, k);
- }
- /*if(!renderCornerNW && !renderCornerNE && !renderCornerSE && !renderCornerSW)
- {
- block.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 0.5F, 1.0F); //Half hitbox
- }*/
- }
- block.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F); //Full hitbox
- return false;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement