Package cofh.lib.render

Source Code of cofh.lib.render.RenderHelper

package cofh.lib.render;

import net.minecraft.block.Block;
import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.ItemRenderer;
import net.minecraft.client.renderer.RenderBlocks;
import net.minecraft.client.renderer.Tessellator;
import net.minecraft.client.renderer.texture.TextureManager;
import net.minecraft.init.Blocks;
import net.minecraft.item.ItemStack;
import net.minecraft.util.IIcon;
import net.minecraft.util.ResourceLocation;
import net.minecraftforge.fluids.Fluid;
import net.minecraftforge.fluids.FluidRegistry;
import net.minecraftforge.fluids.FluidStack;

import org.lwjgl.opengl.GL11;

/**
* Contains various helper functions to assist with rendering.
*
* @author King Lemming
*
*/
public final class RenderHelper {

  public static final double RENDER_OFFSET = 1.0D / 1024.0D;
  public static final ResourceLocation MC_BLOCK_SHEET = new ResourceLocation("textures/atlas/blocks.png");
  public static final ResourceLocation MC_ITEM_SHEET = new ResourceLocation("textures/atlas/items.png");
  public static final ResourceLocation MC_FONT_DEFAULT = new ResourceLocation("textures/font/ascii.png");
  public static final ResourceLocation MC_FONT_ALTERNATE = new ResourceLocation("textures/font/ascii_sga.png");
  public static final ResourceLocation MC_ITEM_GLINT = new ResourceLocation("textures/misc/enchanted_item_glint.png");

  private RenderHelper() {

  }

  public static final TextureManager engine() {

    return Minecraft.getMinecraft().renderEngine;
  }

  public static final Tessellator tessellator() {

    return Tessellator.instance;
  }

  public static void setColor3ub(int color) {

    GL11.glColor3ub((byte) (color >> 16 & 0xFF), (byte) (color >> 8 & 0xFF), (byte) (color & 0xFF));
  }

  public static void setColor4ub(int color) {

    GL11.glColor4ub((byte) (color >> 24 & 0xFF), (byte) (color >> 16 & 0xFF), (byte) (color >> 8 & 0xFF), (byte) (color & 0xFF));
  }

  public static void resetColor() {

    GL11.glColor4f(1F, 1F, 1F, 1F);
  }

  public static void renderItemAsBlock(RenderBlocks renderer, ItemStack item, double translateX, double translateY, double translateZ) {

    renderTextureAsBlock(renderer, item.getIconIndex(), translateX, translateY, translateZ);
  }

  public static void renderTextureAsBlock(RenderBlocks renderer, IIcon texture, double translateX, double translateY, double translateZ) {

    Tessellator tessellator = Tessellator.instance;
    Block block = Blocks.stone;

    if (texture == null) {
      return;
    }
    renderer.setRenderBoundsFromBlock(block);
    GL11.glTranslated(translateX, translateY, translateZ);
    tessellator.startDrawingQuads();

    tessellator.setNormal(0.0F, -1.0F, 0.0F);
    renderer.renderFaceYNeg(block, 0.0D, 0.0D, 0.0D, texture);

    tessellator.setNormal(0.0F, 1.0F, 0.0F);
    renderer.renderFaceYPos(block, 0.0D, 0.0D, 0.0D, texture);

    tessellator.setNormal(0.0F, 0.0F, -1.0F);
    renderer.renderFaceZNeg(block, 0.0D, 0.0D, 0.0D, texture);

    tessellator.setNormal(0.0F, 0.0F, 1.0F);
    renderer.renderFaceZPos(block, 0.0D, 0.0D, 0.0D, texture);

    tessellator.setNormal(-1.0F, 0.0F, 0.0F);
    renderer.renderFaceXNeg(block, 0.0D, 0.0D, 0.0D, texture);

    tessellator.setNormal(1.0F, 0.0F, 0.0F);
    renderer.renderFaceXPos(block, 0.0D, 0.0D, 0.0D, texture);

    tessellator.draw();
  }

  public static void renderItemIn2D(IIcon icon) {

    ItemRenderer.renderItemIn2D(Tessellator.instance, icon.getMaxU(), icon.getMinV(), icon.getMinU(), icon.getMaxV(), icon.getIconWidth(),
        icon.getIconHeight(), 0.0625F);
  }

  public static void renderIcon(IIcon icon, double z) {

    Tessellator.instance.startDrawingQuads();
    Tessellator.instance.addVertexWithUV(0, 16, z, icon.getMinU(), icon.getMaxV());
    Tessellator.instance.addVertexWithUV(16, 16, z, icon.getMaxU(), icon.getMaxV());
    Tessellator.instance.addVertexWithUV(16, 0, z, icon.getMaxU(), icon.getMinV());
    Tessellator.instance.addVertexWithUV(0, 0, z, icon.getMinU(), icon.getMinV());
    Tessellator.instance.draw();
  }

  public static void renderIcon(double x, double y, double z, IIcon icon, int width, int height) {

    Tessellator tessellator = Tessellator.instance;
    tessellator.startDrawingQuads();
    tessellator.addVertexWithUV(x, y + height, z, icon.getMinU(), icon.getMaxV());
    tessellator.addVertexWithUV(x + width, y + height, z, icon.getMaxU(), icon.getMaxV());
    tessellator.addVertexWithUV(x + width, y, z, icon.getMaxU(), icon.getMinV());
    tessellator.addVertexWithUV(x, y, z, icon.getMinU(), icon.getMinV());
    tessellator.draw();
  }

  public static final IIcon getFluidTexture(Fluid fluid) {

    if (fluid == null) {
      return FluidRegistry.LAVA.getIcon();
    }
    return fluid.getIcon();
  }

  public static final IIcon getFluidTexture(FluidStack fluid) {

    if (fluid == null || fluid.getFluid() == null || fluid.getFluid().getIcon(fluid) == null) {
      return FluidRegistry.LAVA.getIcon();
    }
    return fluid.getFluid().getIcon(fluid);
  }

  public static final void bindItemTexture(ItemStack stack) {

    engine().bindTexture(stack.getItemSpriteNumber() == 0 ? MC_BLOCK_SHEET : MC_ITEM_SHEET);
  }

  public static final void bindTexture(ResourceLocation texture) {

    engine().bindTexture(texture);
  }

  public static final void setBlockTextureSheet() {

    bindTexture(MC_BLOCK_SHEET);
  }

  public static final void setItemTextureSheet() {

    bindTexture(MC_ITEM_SHEET);
  }

  public static final void setDefaultFontTextureSheet() {

    bindTexture(MC_FONT_DEFAULT);
  }

  public static final void setSGAFontTextureSheet() {

    bindTexture(MC_FONT_ALTERNATE);
  }

  public static final void enableGUIStandardItemLighting() {

    net.minecraft.client.renderer.RenderHelper.enableGUIStandardItemLighting();
  }

}
TOP

Related Classes of cofh.lib.render.RenderHelper

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.