mods.railcraft.client.render.RenderBlockOre.java Source code

Java tutorial

Introduction

Here is the source code for mods.railcraft.client.render.RenderBlockOre.java

Source

/* 
 * 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 net.minecraft.block.Block;
import net.minecraft.client.renderer.RenderBlocks;
import net.minecraft.client.renderer.Tessellator;
import net.minecraft.item.ItemStack;
import net.minecraft.util.IIcon;
import net.minecraft.world.IBlockAccess;
import net.minecraftforge.client.IItemRenderer.ItemRenderType;
import org.lwjgl.opengl.GL11;
import mods.railcraft.common.blocks.ore.BlockOre;

/**
 *
 * @author CovertJaguar <http://www.railcraft.info>
 */
public class RenderBlockOre extends BlockRenderer {

    public RenderBlockOre() {
        super(BlockOre.getBlock());
    }

    @Override
    public boolean renderWorldBlock(IBlockAccess world, int x, int y, int z, Block block, int modelId,
            RenderBlocks renderblocks) {
        block.setBlockBounds(0, 0, 0, 1, 1, 1);
        if (renderblocks.overrideBlockTexture != null) {
            BlockOre.renderPass = 0;
            RenderTools.renderStandardBlock(renderblocks, block, x, y, z);
        } else {
            BlockOre.renderPass = 0;
            RenderTools.renderStandardBlock(renderblocks, block, x, y, z);
            BlockOre.renderPass = 1;
            RenderTools.renderStandardBlock(renderblocks, block, x, y, z);
        }
        return true;
    }

    @Override
    public void renderItem(RenderBlocks renderBlocks, ItemStack item, ItemRenderType renderType) {
        GL11.glPushAttrib(GL11.GL_ENABLE_BIT);
        GL11.glEnable(GL11.GL_DEPTH_TEST);
        GL11.glEnable(GL11.GL_BLEND);
        GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);

        BlockOre.renderPass = 0;
        renderItem(renderBlocks, item, getBlock().getIcon(0, item.getItemDamage()));
        BlockOre.renderPass = 1;
        renderItem(renderBlocks, item, getBlock().getIcon(0, item.getItemDamage()));

        GL11.glPopAttrib();

    }

    private void renderItem(RenderBlocks renderBlocks, ItemStack item, IIcon texture) {
        if (texture == null)
            return;
        int meta = item.getItemDamage();

        Block block = getBlock();
        block.setBlockBoundsForItemRender();
        renderBlocks.setRenderBoundsFromBlock(block);

        if (renderBlocks.useInventoryTint) {
            int color = block.getRenderColor(meta);

            float r = (float) (color >> 16 & 255) / 255.0F;
            float g = (float) (color >> 8 & 255) / 255.0F;
            float b = (float) (color & 255) / 255.0F;
            GL11.glColor4f(r, g, b, 1.0F);
        }

        GL11.glTranslatef(-0.5F, -0.5F, -0.5F);
        Tessellator tess = Tessellator.instance;
        tess.startDrawingQuads();
        tess.setNormal(0.0F, -1.0F, 0.0F);
        renderBlocks.renderFaceYNeg(block, 0.0D, 0.0D, 0.0D, texture);
        tess.draw();
        tess.startDrawingQuads();
        tess.setNormal(0.0F, 1.0F, 0.0F);
        renderBlocks.renderFaceYPos(block, 0.0D, 0.0D, 0.0D, texture);
        tess.draw();
        tess.startDrawingQuads();
        tess.setNormal(0.0F, 0.0F, -1.0F);
        renderBlocks.renderFaceZNeg(block, 0.0D, 0.0D, 0.0D, texture);
        tess.draw();
        tess.startDrawingQuads();
        tess.setNormal(0.0F, 0.0F, 1.0F);
        renderBlocks.renderFaceZPos(block, 0.0D, 0.0D, 0.0D, texture);
        tess.draw();
        tess.startDrawingQuads();
        tess.setNormal(-1.0F, 0.0F, 0.0F);
        renderBlocks.renderFaceXNeg(block, 0.0D, 0.0D, 0.0D, texture);
        tess.draw();
        tess.startDrawingQuads();
        tess.setNormal(1.0F, 0.0F, 0.0F);
        renderBlocks.renderFaceXPos(block, 0.0D, 0.0D, 0.0D, texture);
        tess.draw();
        GL11.glTranslatef(0.5F, 0.5F, 0.5F);
    }

}