package eu.thog92.isbrh.example;
import eu.thog92.isbrh.ISBRH;
import eu.thog92.isbrh.render.ISimpleBlockRenderingHandler;
import eu.thog92.isbrh.render.SimpleBlockRender;
import eu.thog92.isbrh.render.TextureLoader;
import net.minecraft.block.Block;
import net.minecraft.block.state.IBlockState;
import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.GlStateManager;
import net.minecraft.client.renderer.Tessellator;
import net.minecraft.client.renderer.WorldRenderer;
import net.minecraft.client.renderer.block.model.ItemCameraTransforms.TransformType;
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
import net.minecraft.init.Blocks;
import net.minecraft.item.ItemStack;
import net.minecraft.util.BlockPos;
import net.minecraft.util.EnumFacing;
import net.minecraft.world.IBlockAccess;
public class RenderExample implements ISimpleBlockRenderingHandler {
@Override
public void renderInventoryBlock(ItemStack itemStack,
TransformType transformType, int renderId) {
BlockExample block = (BlockExample) Block.getBlockFromItem(itemStack.getItem());
Tessellator tessellator = Tessellator.getInstance();
SimpleBlockRender render = new SimpleBlockRender();
render.worldRenderer = tessellator.getWorldRenderer();
render.setRenderBounds(0.2F, 0.0F, 0.2F, 0.8F, 0.1F, 0.8F);
this.renderInInventory(tessellator, render, block, transformType);
render.setRenderBounds(0.45F, 0.1F, 0.45F, 0.55F, 0.8F, 0.55F);
this.renderInInventory(tessellator, render, block, transformType);
render.setRenderBounds(0.0F, 0.8F, 0.0F, 1F, 0.9F, 1F);
this.renderInInventory(tessellator, render, block, transformType);
}
@Override
public boolean renderWorldBlock(IBlockAccess world, BlockPos pos,
IBlockState state, int id, WorldRenderer renderer) {
Block block = state.getBlock();
if(!(block instanceof BlockExample)) return false;
BlockExample example = (BlockExample) block;
SimpleBlockRender render = new SimpleBlockRender();
render.renderAllFaces = true;
render.worldRenderer = renderer;
render.setRenderBounds(0.2F, 0.0F, 0.2F, 0.8F, 0.1F, 0.8F);
render.renderStandardBlock(example, pos);
render.setRenderBounds(0.45F, 0.1F, 0.45F, 0.55F, 0.8F, 0.55F);
render.renderStandardBlock(example, pos);
render.setRenderBounds(0.0F, 0.8F, 0.0F, 1F, 0.9F, 1F);
render.renderStandardBlock(example, pos);
return true;
}
@Override
public boolean shouldRender3DInInventory(int id) {
return true;
}
@Override
public int getRenderId() {
return ISBRH.testId;
}
@Override
/**
* Used when a Enderman or a Golem hold the block
*/
public void renderBlockBrightness(int renderId, IBlockState state,
float brightness) {
// TODO: really use the render
Minecraft
.getMinecraft()
.getBlockRendererDispatcher()
.renderBlockBrightness(Blocks.sand.getDefaultState(),
brightness);
}
@Override
public void loadTextures(TextureLoader loader) {
}
@Override
public TextureAtlasSprite getSidedTexture(IBlockState state, EnumFacing facing) {
return null;
}
private void renderInInventory(Tessellator tessellator,
SimpleBlockRender render, BlockExample block, TransformType transformType) {
GlStateManager.translate(-0.5F, -0.5F, -0.5F);
GlStateManager.pushMatrix();
if (transformType.equals(TransformType.THIRD_PERSON)) {
GlStateManager.scale(0.55F, 0.55F, 0.55F);
GlStateManager.rotate(45, 1.0F, 0.0F, 0.0F);
GlStateManager.rotate(180F, 0.0F, 0.0F, 1.0F);
GlStateManager.translate(-1.4F, -1.9F, -1F);
}
render.renderInventoryStandardBlock(block, block.getDefaultState(), tessellator);
GlStateManager.popMatrix();
GlStateManager.translate(0.5F, 0.5F, 0.5F);
}
}