Fixed forge rendering pipeline and shape based light occulsion. (#6178)
This commit is contained in:
parent
ebf489be8c
commit
6422310453
3 changed files with 15 additions and 1 deletions
|
@ -21,10 +21,12 @@ package net.minecraftforge.client.model.pipeline;
|
||||||
|
|
||||||
import net.minecraft.block.Block;
|
import net.minecraft.block.Block;
|
||||||
import net.minecraft.block.BlockState;
|
import net.minecraft.block.BlockState;
|
||||||
|
import net.minecraft.block.Blocks;
|
||||||
import net.minecraft.client.renderer.color.BlockColors;
|
import net.minecraft.client.renderer.color.BlockColors;
|
||||||
import net.minecraft.util.Direction;
|
import net.minecraft.util.Direction;
|
||||||
import net.minecraft.util.math.BlockPos;
|
import net.minecraft.util.math.BlockPos;
|
||||||
import net.minecraft.util.math.Vec3d;
|
import net.minecraft.util.math.Vec3d;
|
||||||
|
import net.minecraft.util.math.shapes.VoxelShapes;
|
||||||
import net.minecraft.world.IEnviromentBlockReader;
|
import net.minecraft.world.IEnviromentBlockReader;
|
||||||
|
|
||||||
public class BlockInfo
|
public class BlockInfo
|
||||||
|
@ -134,7 +136,13 @@ public class BlockInfo
|
||||||
}
|
}
|
||||||
for(Direction side : SIDES)
|
for(Direction side : SIDES)
|
||||||
{
|
{
|
||||||
if(!state.doesSideBlockRendering(world, blockPos, side))
|
BlockPos pos = blockPos.offset(side);
|
||||||
|
BlockState state = world.getBlockState(pos);
|
||||||
|
|
||||||
|
BlockState thisStateShape = this.state.isSolid() && this.state.func_215691_g() ? this.state : Blocks.AIR.getDefaultState();
|
||||||
|
BlockState otherStateShape = state.isSolid() && state.func_215691_g() ? state : Blocks.AIR.getDefaultState();
|
||||||
|
|
||||||
|
if(state.getOpacity(world, blockPos) == 15 || VoxelShapes.func_223416_b(thisStateShape.func_215702_a(world, blockPos, side), otherStateShape.func_215702_a(world, pos, side.getOpposite())))
|
||||||
{
|
{
|
||||||
int x = side.getXOffset() + 1;
|
int x = side.getXOffset() + 1;
|
||||||
int y = side.getYOffset() + 1;
|
int y = side.getYOffset() + 1;
|
||||||
|
|
|
@ -136,6 +136,7 @@ public interface IForgeBlock
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//TODO: remove in 1.15
|
||||||
/**
|
/**
|
||||||
* Check if the face of a block should block rendering.
|
* Check if the face of a block should block rendering.
|
||||||
*
|
*
|
||||||
|
@ -147,7 +148,9 @@ public interface IForgeBlock
|
||||||
* @param pos Block position in world
|
* @param pos Block position in world
|
||||||
* @param face The side to check
|
* @param face The side to check
|
||||||
* @return True if the block is opaque on the specified side.
|
* @return True if the block is opaque on the specified side.
|
||||||
|
* @deprecated This is no longer used for rendering logic.
|
||||||
*/
|
*/
|
||||||
|
@Deprecated
|
||||||
default boolean doesSideBlockRendering(BlockState state, IEnviromentBlockReader world, BlockPos pos, Direction face)
|
default boolean doesSideBlockRendering(BlockState state, IEnviromentBlockReader world, BlockPos pos, Direction face)
|
||||||
{
|
{
|
||||||
return state.isOpaqueCube(world, pos);
|
return state.isOpaqueCube(world, pos);
|
||||||
|
|
|
@ -102,6 +102,7 @@ public interface IForgeBlockState
|
||||||
return getBlockState().getBlock().isLadder(getBlockState(), world, pos, entity);
|
return getBlockState().getBlock().isLadder(getBlockState(), world, pos, entity);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//TODO: remove in 1.15
|
||||||
/**
|
/**
|
||||||
* Check if the face of a block should block rendering.
|
* Check if the face of a block should block rendering.
|
||||||
*
|
*
|
||||||
|
@ -112,7 +113,9 @@ public interface IForgeBlockState
|
||||||
* @param pos Block position in world
|
* @param pos Block position in world
|
||||||
* @param face The side to check
|
* @param face The side to check
|
||||||
* @return True if the block is opaque on the specified side.
|
* @return True if the block is opaque on the specified side.
|
||||||
|
* @deprecated This is no longer used for rendering logic.
|
||||||
*/
|
*/
|
||||||
|
@Deprecated
|
||||||
default boolean doesSideBlockRendering(IEnviromentBlockReader world, BlockPos pos, Direction face)
|
default boolean doesSideBlockRendering(IEnviromentBlockReader world, BlockPos pos, Direction face)
|
||||||
{
|
{
|
||||||
return getBlockState().getBlock().doesSideBlockRendering(getBlockState(), world, pos, face);
|
return getBlockState().getBlock().doesSideBlockRendering(getBlockState(), world, pos, face);
|
||||||
|
|
Loading…
Reference in a new issue