equivalent-exchange-3/src/main/java/com/pahimar/repackage/cofh/lib/render/RenderHelper.java
2023-01-03 17:47:36 +01:00

194 lines
6.4 KiB
Java

package com.pahimar.repackage.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();
}
}