/*
* Copyright (c) CovertJaguar, 2014 http://railcraft.info
*
* This code is the property of CovertJaguar
* and may only be used with explicit written
* permission unless otherwise specified on the
* license page at http://railcraft.info/wiki/info:license.
*/
package mods.railcraft.client.render;
import mods.railcraft.common.blocks.aesthetics.EnumBlockMaterial;
import mods.railcraft.common.blocks.aesthetics.slab.BlockRailcraftSlab;
import mods.railcraft.common.blocks.aesthetics.slab.TileSlab;
import net.minecraft.block.Block;
import net.minecraft.client.renderer.RenderBlocks;
import net.minecraft.item.ItemStack;
import net.minecraft.world.IBlockAccess;
import net.minecraftforge.client.IItemRenderer.ItemRenderType;
import net.minecraft.tileentity.TileEntity;
/**
*
* @author CovertJaguar <http://www.railcraft.info>
*/
public class RenderSlab extends BlockRenderer {
public RenderSlab() {
super(BlockRailcraftSlab.getBlock());
}
@Override
public boolean renderWorldBlock(IBlockAccess world, int x, int y, int z, Block block, int modelId, RenderBlocks renderBlocks) {
boolean rendered = false;
TileEntity tile = world.getTileEntity(x, y, z);
if (tile instanceof TileSlab) {
TileSlab slab = (TileSlab) tile;
if (slab.getTopSlab() != null && slab.getTopSlab() == slab.getBottomSlab()) {
if (canRenderInPass(renderBlocks, slab.getTopSlab())) {
BlockRailcraftSlab.textureSlab = slab.getTopSlab();
renderBlocks.setRenderBounds(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F);
renderBlocks.renderStandardBlock(block, x, y, z);
BlockRailcraftSlab.textureSlab = null;
rendered = true;
}
} else {
if (slab.getTopSlab() != null)
if (canRenderInPass(renderBlocks, slab.getTopSlab())) {
BlockRailcraftSlab.textureSlab = slab.getTopSlab();
renderBlocks.setRenderBounds(0.0F, 0.5F, 0.0F, 1.0F, 1.0F, 1.0F);
renderBlocks.renderStandardBlock(block, x, y, z);
BlockRailcraftSlab.textureSlab = null;
rendered = true;
}
if (slab.getBottomSlab() != null)
if (canRenderInPass(renderBlocks, slab.getBottomSlab())) {
BlockRailcraftSlab.textureSlab = slab.getBottomSlab();
renderBlocks.setRenderBounds(0.0F, 0.0F, 0.0F, 1.0F, 0.5F, 1.0F);
renderBlocks.renderStandardBlock(block, x, y, z);
BlockRailcraftSlab.textureSlab = null;
rendered = true;
}
}
}
return rendered;
}
private boolean canRenderInPass(RenderBlocks renderer, EnumBlockMaterial slab) {
int pass = BlockRailcraftSlab.currentRenderPass;
return renderer.hasOverrideBlockTexture() || ((pass == 1) == (slab.isTransparent()));
}
@Override
public void renderItem(RenderBlocks renderBlocks, ItemStack item, ItemRenderType renderType) {
Block block = getBlock();
int meta = item.getItemDamage();
RenderTools.renderBlockOnInventory(renderBlocks, block, meta, 1);
}
}