Fixes #2448: Facades items and blocks now use the same algorithm to determine the block texture.

Facades will now use the correct side to determine the texture to use, and will fall back to general quads.
Fixed crafting of facades on the server by removing the check for model simplicity.
This commit is contained in:
Sebastian Hartte
2016-10-09 21:59:56 +02:00
parent 5de15d5b2c
commit 55d66be929
5 changed files with 63 additions and 41 deletions
@@ -19,8 +19,9 @@
package appeng.client.render;
import java.util.ArrayList;
import java.util.EnumSet;
import java.util.List;
import javax.annotation.Nullable;
import net.minecraft.block.state.IBlockState;
@@ -30,8 +31,12 @@ import net.minecraft.client.renderer.block.model.IBakedModel;
import net.minecraft.client.renderer.block.model.ItemCameraTransforms;
import net.minecraft.client.renderer.block.model.ItemOverrideList;
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
import net.minecraft.client.renderer.vertex.VertexFormat;
import net.minecraft.util.EnumFacing;
import appeng.client.render.cablebus.CubeBuilder;
import appeng.client.render.cablebus.FacadeBuilder;
/**
* This is the actual baked model that will combine the north face of a given block state
@@ -46,11 +51,14 @@ public class FacadeWithBlockBakedModel implements IBakedModel
private final IBakedModel textureModel;
public FacadeWithBlockBakedModel( IBakedModel baseModel, IBlockState blockState )
private final VertexFormat format;
public FacadeWithBlockBakedModel( IBakedModel baseModel, IBlockState blockState, VertexFormat format )
{
this.baseModel = baseModel;
this.blockState = blockState;
this.textureModel = Minecraft.getMinecraft().getBlockRendererDispatcher().getModelForState( blockState );
this.format = format;
}
@Override
@@ -59,12 +67,19 @@ public class FacadeWithBlockBakedModel implements IBakedModel
// Only the north side is actually read from the base model for item models
if( side == EnumFacing.NORTH )
{
return textureModel.getQuads( blockState, side, rand );
}
else
{
return baseModel.getQuads( state, side, rand );
List<BakedQuad> quads = new ArrayList<>( 1 );
CubeBuilder builder = new CubeBuilder( format, quads );
TextureAtlasSprite sprite = FacadeBuilder.getSprite( textureModel, blockState, side, rand );
if ( sprite != null )
{
builder.setTexture( sprite );
builder.setDrawFaces( EnumSet.of( EnumFacing.NORTH ) );
builder.addCube( 0, 0, 0, 16, 16, 16 );
return quads;
}
}
return baseModel.getQuads( state, side, rand );
}
@Override