buildcraft.core.lib.render.RenderUtils.java Source code

Java tutorial

Introduction

Here is the source code for buildcraft.core.lib.render.RenderUtils.java

Source

/**
 * Copyright (c) 2011-2015, SpaceToad and the BuildCraft Team
 * http://www.mod-buildcraft.com
 * <p/>
 * BuildCraft is distributed under the terms of the Minecraft Mod Public
 * License 1.0, or MMPL. Please check the contents of the license located in
 * http://www.mod-buildcraft.com/MMPL-1.0.txt
 */
package buildcraft.core.lib.render;

import org.lwjgl.opengl.GL11;

import net.minecraft.block.Block;
import net.minecraft.client.renderer.RenderBlocks;
import net.minecraft.client.renderer.Tessellator;
import net.minecraft.util.IIcon;

public final class RenderUtils {

    /**
     * Deactivate constructor
     */
    private RenderUtils() {
    }

    public static void setGLColorFromInt(int color) {
        float red = (color >> 16 & 255) / 255.0F;
        float green = (color >> 8 & 255) / 255.0F;
        float blue = (color & 255) / 255.0F;
        GL11.glColor4f(red, green, blue, 1.0F);
    }

    public static void drawBlockItem(RenderBlocks render, Tessellator tessellator, Block block, IIcon icon) {
        if (icon == null) {
            return;
        }
        tessellator.startDrawingQuads();
        tessellator.setNormal(0.0F, -1F, 0.0F);
        render.renderFaceYNeg(block, 0.0D, 0.0D, 0.0D, icon);
        tessellator.setNormal(0.0F, 1.0F, 0.0F);
        render.renderFaceYPos(block, 0.0D, 0.0D, 0.0D, icon);
        tessellator.setNormal(0.0F, 0.0F, -1F);
        render.renderFaceZNeg(block, 0.0D, 0.0D, 0.0D, icon);
        tessellator.setNormal(0.0F, 0.0F, 1.0F);
        render.renderFaceZPos(block, 0.0D, 0.0D, 0.0D, icon);
        tessellator.setNormal(-1F, 0.0F, 0.0F);
        render.renderFaceXNeg(block, 0.0D, 0.0D, 0.0D, icon);
        tessellator.setNormal(1.0F, 0.0F, 0.0F);
        render.renderFaceXPos(block, 0.0D, 0.0D, 0.0D, icon);
        tessellator.draw();
    }

    public static void drawBlockItem(RenderBlocks render, Tessellator tessellator, Block block, int decodedMeta) {
        tessellator.startDrawingQuads();
        IIcon icon = tryGetBlockIcon(block, 0, decodedMeta);
        if (icon != null) {
            tessellator.setNormal(0.0F, -1F, 0.0F);
            render.renderFaceYNeg(block, 0.0D, 0.0D, 0.0D, icon);
        }
        icon = tryGetBlockIcon(block, 1, decodedMeta);
        if (icon != null) {
            tessellator.setNormal(0.0F, 1F, 0.0F);
            render.renderFaceYPos(block, 0.0D, 0.0D, 0.0D, icon);
        }
        icon = tryGetBlockIcon(block, 2, decodedMeta);
        if (icon != null) {
            tessellator.setNormal(0.0F, 0.0F, -1F);
            render.renderFaceZNeg(block, 0.0D, 0.0D, 0.0D, icon);
        }
        icon = tryGetBlockIcon(block, 3, decodedMeta);
        if (icon != null) {
            tessellator.setNormal(0.0F, 0.0F, 1F);
            render.renderFaceZPos(block, 0.0D, 0.0D, 0.0D, icon);
        }
        icon = tryGetBlockIcon(block, 4, decodedMeta);
        if (icon != null) {
            tessellator.setNormal(-1F, 0.0F, 0.0F);
            render.renderFaceXNeg(block, 0.0D, 0.0D, 0.0D, icon);
        }
        icon = tryGetBlockIcon(block, 5, decodedMeta);
        if (icon != null) {
            tessellator.setNormal(1F, 0.0F, 0.0F);
            render.renderFaceXPos(block, 0.0D, 0.0D, 0.0D, icon);
        }
        tessellator.draw();
    }

    public static IIcon tryGetBlockIcon(Block block, int side, int decodedMeta) {
        IIcon icon = null;

        try {
            icon = block.getIcon(side, decodedMeta);
        } catch (Throwable t) {
            try {
                icon = block.getBlockTextureFromSide(side);
            } catch (Throwable ignored) {
            }
        }

        return icon;
    }
}