mirror of
https://github.com/HbmMods/Hbm-s-Nuclear-Tech-GIT.git
synced 2026-01-25 10:32:49 +00:00
411 lines
16 KiB
Java
411 lines
16 KiB
Java
package com.hbm.render.tileentity;
|
|
|
|
import org.lwjgl.opengl.GL11;
|
|
import org.lwjgl.opengl.GL14;
|
|
|
|
import com.hbm.blocks.ModBlocks;
|
|
import com.hbm.lib.RefStrings;
|
|
import com.hbm.tileentity.machine.TileEntityStructureMarker;
|
|
import com.hbm.world.FWatz;
|
|
import com.hbm.world.FactoryTitanium;
|
|
import com.hbm.world.FusionReactor;
|
|
import com.hbm.world.NuclearReactor;
|
|
import com.hbm.world.Watz;
|
|
|
|
import net.minecraft.block.Block;
|
|
import net.minecraft.client.renderer.RenderBlocks;
|
|
import net.minecraft.client.renderer.Tessellator;
|
|
import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer;
|
|
import net.minecraft.init.Blocks;
|
|
import net.minecraft.tileentity.TileEntity;
|
|
import net.minecraft.util.ResourceLocation;
|
|
|
|
public class RenderStructureMaker extends TileEntitySpecialRenderer {
|
|
|
|
float pixel = 1F/16F;
|
|
|
|
public RenderStructureMaker() {
|
|
}
|
|
|
|
@Override
|
|
public void renderTileEntityAt(TileEntity tileentity, double x, double y, double z, float f) {
|
|
GL11.glPushMatrix();
|
|
GL11.glTranslatef((float) x, (float) y, (float) z);
|
|
GL11.glRotatef(180, 0F, 0F, 1F);
|
|
|
|
GL11.glDisable(GL11.GL_LIGHTING);
|
|
GL11.glEnable(GL11.GL_BLEND);
|
|
GL14.glBlendFuncSeparate(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA, GL11.GL_ONE, GL11.GL_ZERO);
|
|
GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE);
|
|
GL14.glBlendEquation(GL14.GL_FUNC_ADD);
|
|
GL11.glColor4f(0.5f, 0.25f, 1.0f, 1f);
|
|
this.renderBlocks((int)x, (int)y, (int)z, ((TileEntityStructureMarker)tileentity).type, tileentity.getWorldObj().getBlockMetadata(tileentity.xCoord, tileentity.yCoord, tileentity.zCoord));
|
|
GL11.glEnable(GL11.GL_LIGHTING);
|
|
GL11.glDisable(GL11.GL_BLEND);
|
|
GL11.glPopMatrix();
|
|
}
|
|
|
|
public void renderBlocks(int x, int y, int z, int type, int meta) {
|
|
int offsetX = 0;
|
|
int offsetZ = 0;
|
|
if(type == 0) {
|
|
|
|
if(meta == 6) {
|
|
offsetZ = 2;
|
|
}
|
|
if(meta == 7) {
|
|
offsetX = 2;
|
|
}
|
|
if(meta == 8) {
|
|
offsetZ = -2;
|
|
}
|
|
if(meta == 9) {
|
|
offsetX = -2;
|
|
}
|
|
|
|
GL11.glTranslatef(-1 + offsetX, -2, -1 + offsetZ);
|
|
for(int a = 0; a < 3; a++) {
|
|
for(int b = 0; b < 3; b++) {
|
|
for(int c = 0; c < 3; c++) {
|
|
|
|
Block block = Blocks.air;
|
|
if(FactoryTitanium.array[b][a].substring(c, c + 1).equals("H"))
|
|
block = ModBlocks.factory_titanium_hull;
|
|
if(FactoryTitanium.array[b][a].substring(c, c + 1).equals("F"))
|
|
block = ModBlocks.factory_titanium_furnace;
|
|
if(FactoryTitanium.array[b][a].substring(c, c + 1).equals("C"))
|
|
block = ModBlocks.factory_titanium_core;
|
|
if(block != Blocks.air) {
|
|
RenderBlocks rb = RenderBlocks.getInstance();
|
|
ResourceLocation loc1 = new ResourceLocation(RefStrings.MODID + ":textures/blocks/" + rb.getBlockIconFromSide(block, 1).getIconName().substring(4, rb.getBlockIconFromSide(block, 1).getIconName().length()) + ".png");
|
|
ResourceLocation loc2 = new ResourceLocation(RefStrings.MODID + ":textures/blocks/" + rb.getBlockIconFromSide(block, 3).getIconName().substring(4, rb.getBlockIconFromSide(block, 3).getIconName().length()) + ".png");
|
|
renderSmolBlockAt(loc1, loc2, a, b, c);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if(type == 1) {
|
|
|
|
if(meta == 6) {
|
|
offsetZ = 3;
|
|
}
|
|
if(meta == 7) {
|
|
offsetX = 3;
|
|
}
|
|
if(meta == 8) {
|
|
offsetZ = -3;
|
|
}
|
|
if(meta == 9) {
|
|
offsetX = -3;
|
|
}
|
|
|
|
GL11.glTranslatef(-2 + offsetX, -3, -2 + offsetZ);
|
|
for(int a = 0; a < 5; a++) {
|
|
for(int b = 0; b < 5; b++) {
|
|
for(int c = 0; c < 5; c++) {
|
|
|
|
Block block = Blocks.air;
|
|
if(NuclearReactor.array2[b][a].substring(c, c + 1).equals("R"))
|
|
block = ModBlocks.reactor_element;
|
|
if(NuclearReactor.array2[b][a].substring(c, c + 1).equals("#"))
|
|
block = ModBlocks.reactor_computer;
|
|
if(NuclearReactor.array2[b][a].substring(c, c + 1).equals("C"))
|
|
block = ModBlocks.reactor_control;
|
|
if(NuclearReactor.array2[b][a].substring(c, c + 1).equals("A"))
|
|
block = ModBlocks.reactor_hatch;
|
|
if(NuclearReactor.array2[b][a].substring(c, c + 1).equals("I"))
|
|
block = ModBlocks.reactor_conductor;
|
|
if(block != Blocks.air) {
|
|
RenderBlocks rb = RenderBlocks.getInstance();
|
|
ResourceLocation loc1 = new ResourceLocation(RefStrings.MODID + ":textures/blocks/" + rb.getBlockIconFromSide(block, 1).getIconName().substring(4, rb.getBlockIconFromSide(block, 1).getIconName().length()) + ".png");
|
|
ResourceLocation loc2 = new ResourceLocation(RefStrings.MODID + ":textures/blocks/" + rb.getBlockIconFromSide(block, 3).getIconName().substring(4, rb.getBlockIconFromSide(block, 3).getIconName().length()) + ".png");
|
|
renderSmolBlockAt(loc1, loc2, a, b, c);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if(type == 2) {
|
|
|
|
if(meta == 6) {
|
|
offsetZ = 3;
|
|
}
|
|
if(meta == 7) {
|
|
offsetX = 3;
|
|
}
|
|
if(meta == 8) {
|
|
offsetZ = -3;
|
|
}
|
|
if(meta == 9) {
|
|
offsetX = -3;
|
|
}
|
|
|
|
GL11.glTranslatef(-2 + offsetX, -4, -2 + offsetZ);
|
|
for(int a = 0; a < 5; a++) {
|
|
for(int b = 0; b < 5; b++) {
|
|
for(int c = 0; c < 5; c++) {
|
|
|
|
Block block = Blocks.air;
|
|
if(NuclearReactor.array2[b][a].substring(c, c + 1).equals("R"))
|
|
block = ModBlocks.reactor_element;
|
|
if(NuclearReactor.array2[b][a].substring(c, c + 1).equals("#"))
|
|
block = ModBlocks.reactor_computer;
|
|
if(NuclearReactor.array2[b][a].substring(c, c + 1).equals("C"))
|
|
block = ModBlocks.reactor_control;
|
|
if(NuclearReactor.array2[b][a].substring(c, c + 1).equals("A"))
|
|
block = ModBlocks.reactor_hatch;
|
|
if(NuclearReactor.array2[b][a].substring(c, c + 1).equals("I"))
|
|
block = ModBlocks.reactor_conductor;
|
|
if(NuclearReactor.array2[b][a].substring(c, c + 1).equals("B"))
|
|
block = ModBlocks.brick_concrete;
|
|
if(block != Blocks.air) {
|
|
RenderBlocks rb = RenderBlocks.getInstance();
|
|
ResourceLocation loc1 = new ResourceLocation(RefStrings.MODID + ":textures/blocks/" + rb.getBlockIconFromSide(block, 1).getIconName().substring(4, rb.getBlockIconFromSide(block, 1).getIconName().length()) + ".png");
|
|
ResourceLocation loc2 = new ResourceLocation(RefStrings.MODID + ":textures/blocks/" + rb.getBlockIconFromSide(block, 3).getIconName().substring(4, rb.getBlockIconFromSide(block, 3).getIconName().length()) + ".png");
|
|
renderSmolBlockAt(loc1, loc2, a, b, c);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if(type == 3) {
|
|
|
|
if(meta == 6) {
|
|
offsetZ = 9;
|
|
}
|
|
if(meta == 7) {
|
|
offsetX = 9;
|
|
}
|
|
if(meta == 8) {
|
|
offsetZ = -9;
|
|
}
|
|
if(meta == 9) {
|
|
offsetX = -9;
|
|
}
|
|
|
|
GL11.glTranslatef(-8 + offsetX, -4, -8 + offsetZ);
|
|
for(int a = 0; a < 17; a++) {
|
|
for(int b = 0; b < 5; b++) {
|
|
for(int c = 0; c < 17; c++) {
|
|
|
|
Block block = Blocks.air;
|
|
if(FusionReactor.array[b][a].substring(c, c + 1).equals("M"))
|
|
block = ModBlocks.fusion_conductor;
|
|
if(FusionReactor.array[b][a].substring(c, c + 1).equals("H"))
|
|
block = ModBlocks.fusion_heater;
|
|
if(FusionReactor.array[b][a].substring(c, c + 1).equals("A"))
|
|
block = ModBlocks.fusion_hatch;
|
|
if(FusionReactor.array[b][a].substring(c, c + 1).equals("R"))
|
|
block = ModBlocks.fusion_motor;
|
|
if(FusionReactor.array[b][a].substring(c, c + 1).equals("C"))
|
|
block = ModBlocks.fusion_center;
|
|
if(FusionReactor.array[b][a].substring(c, c + 1).equals("#"))
|
|
block = ModBlocks.fusion_core;
|
|
if(block != Blocks.air) {
|
|
RenderBlocks rb = RenderBlocks.getInstance();
|
|
ResourceLocation loc1 = new ResourceLocation(RefStrings.MODID + ":textures/blocks/" + rb.getBlockIconFromSide(block, 1).getIconName().substring(4, rb.getBlockIconFromSide(block, 1).getIconName().length()) + ".png");
|
|
ResourceLocation loc2 = new ResourceLocation(RefStrings.MODID + ":textures/blocks/" + rb.getBlockIconFromSide(block, 3).getIconName().substring(4, rb.getBlockIconFromSide(block, 3).getIconName().length()) + ".png");
|
|
renderSmolBlockAt(loc1, loc2, a, b, c);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if(type == 4) {
|
|
|
|
if(meta == 6) {
|
|
offsetZ = 9;
|
|
}
|
|
if(meta == 7) {
|
|
offsetX = 9;
|
|
}
|
|
if(meta == 8) {
|
|
offsetZ = -9;
|
|
}
|
|
if(meta == 9) {
|
|
offsetX = -9;
|
|
}
|
|
|
|
GL11.glTranslatef(-8 + offsetX, -4, -8 + offsetZ);
|
|
for(int a = 0; a < 17; a++) {
|
|
for(int b = 0; b < 5; b++) {
|
|
for(int c = 0; c < 17; c++) {
|
|
|
|
Block block = Blocks.air;
|
|
if(FusionReactor.array[b][a].substring(c, c + 1).equals("M"))
|
|
block = ModBlocks.fusion_conductor;
|
|
if(FusionReactor.array[b][a].substring(c, c + 1).equals("H"))
|
|
block = ModBlocks.fusion_heater;
|
|
if(FusionReactor.array[b][a].substring(c, c + 1).equals("A"))
|
|
block = ModBlocks.fusion_hatch;
|
|
if(FusionReactor.array[b][a].substring(c, c + 1).equals("R"))
|
|
block = ModBlocks.fusion_motor;
|
|
if(FusionReactor.array[b][a].substring(c, c + 1).equals("C"))
|
|
block = ModBlocks.fusion_center;
|
|
if(FusionReactor.array[b][a].substring(c, c + 1).equals("#"))
|
|
block = ModBlocks.fusion_core;
|
|
if(FusionReactor.array[b][a].substring(c, c + 1).equals("T"))
|
|
block = ModBlocks.block_tungsten;
|
|
if(block != Blocks.air) {
|
|
RenderBlocks rb = RenderBlocks.getInstance();
|
|
ResourceLocation loc1 = new ResourceLocation(RefStrings.MODID + ":textures/blocks/" + rb.getBlockIconFromSide(block, 1).getIconName().substring(4, rb.getBlockIconFromSide(block, 1).getIconName().length()) + ".png");
|
|
ResourceLocation loc2 = new ResourceLocation(RefStrings.MODID + ":textures/blocks/" + rb.getBlockIconFromSide(block, 3).getIconName().substring(4, rb.getBlockIconFromSide(block, 3).getIconName().length()) + ".png");
|
|
renderSmolBlockAt(loc1, loc2, a, b, c);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if(type == 5) {
|
|
|
|
if(meta == 6) {
|
|
offsetZ = 4;
|
|
}
|
|
if(meta == 7) {
|
|
offsetX = 4;
|
|
}
|
|
if(meta == 8) {
|
|
offsetZ = -4;
|
|
}
|
|
if(meta == 9) {
|
|
offsetX = -4;
|
|
}
|
|
|
|
GL11.glTranslatef(-3 + offsetX, -12, -3 + offsetZ);
|
|
for(int a = 0; a < 7; a++) {
|
|
for(int b = 0; b < 13; b++) {
|
|
for(int c = 0; c < 7; c++) {
|
|
|
|
Block block = Blocks.air;
|
|
if(Watz.array[b][a].substring(c, c + 1).equals("C"))
|
|
block = ModBlocks.reinforced_brick;
|
|
if(Watz.array[b][a].substring(c, c + 1).equals("A"))
|
|
block = ModBlocks.watz_hatch;
|
|
if(Watz.array[b][a].substring(c, c + 1).equals("R"))
|
|
block = ModBlocks.watz_control;
|
|
if(Watz.array[b][a].substring(c, c + 1).equals("S"))
|
|
block = ModBlocks.watz_end;
|
|
if(Watz.array[b][a].substring(c, c + 1).equals("I"))
|
|
block = ModBlocks.watz_conductor;
|
|
if(Watz.array[b][a].substring(c, c + 1).equals("#"))
|
|
block = ModBlocks.watz_core;
|
|
if(Watz.array[b][a].substring(c, c + 1).equals("K"))
|
|
block = ModBlocks.watz_cooler;
|
|
if(Watz.array[b][a].substring(c, c + 1).equals("W"))
|
|
block = ModBlocks.watz_element;
|
|
if(block != Blocks.air) {
|
|
RenderBlocks rb = RenderBlocks.getInstance();
|
|
ResourceLocation loc1 = new ResourceLocation(RefStrings.MODID + ":textures/blocks/" + rb.getBlockIconFromSide(block, 1).getIconName().substring(4, rb.getBlockIconFromSide(block, 1).getIconName().length()) + ".png");
|
|
ResourceLocation loc2 = new ResourceLocation(RefStrings.MODID + ":textures/blocks/" + rb.getBlockIconFromSide(block, 3).getIconName().substring(4, rb.getBlockIconFromSide(block, 3).getIconName().length()) + ".png");
|
|
renderSmolBlockAt(loc1, loc2, a, b, c);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if(type == 6) {
|
|
|
|
if(meta == 6) {
|
|
offsetZ = 10;
|
|
}
|
|
if(meta == 7) {
|
|
offsetX = 10;
|
|
}
|
|
if(meta == 8) {
|
|
offsetZ = -10;
|
|
}
|
|
if(meta == 9) {
|
|
offsetX = -10;
|
|
}
|
|
|
|
GL11.glTranslatef(-9 + offsetX, -18, -9 + offsetZ);
|
|
for(int a = 0; a < 19; a++) {
|
|
for(int b = 0; b < 19; b++) {
|
|
for(int c = 0; c < 19; c++) {
|
|
|
|
Block block = Blocks.air;
|
|
if(FWatz.fwatz[18 - b][a].substring(c, c + 1).equals("X"))
|
|
block = ModBlocks.fwatz_scaffold;
|
|
if(FWatz.fwatz[18 - b][a].substring(c, c + 1).equals("H"))
|
|
block = ModBlocks.fwatz_hatch;
|
|
if(FWatz.fwatz[18 - b][a].substring(c, c + 1).equals("S"))
|
|
block = ModBlocks.fwatz_cooler;
|
|
if(FWatz.fwatz[18 - b][a].substring(c, c + 1).equals("T"))
|
|
block = ModBlocks.fwatz_tank;
|
|
if(FWatz.fwatz[18 - b][a].substring(c, c + 1).equals("M"))
|
|
block = ModBlocks.fwatz_conductor;
|
|
if(FWatz.fwatz[18 - b][a].substring(c, c + 1).equals("C"))
|
|
block = ModBlocks.fwatz_computer;
|
|
if(FWatz.fwatz[18 - b][a].substring(c, c + 1).equals("#"))
|
|
block = ModBlocks.fwatz_core;
|
|
if(block != Blocks.air) {
|
|
RenderBlocks rb = RenderBlocks.getInstance();
|
|
ResourceLocation loc1 = new ResourceLocation(RefStrings.MODID + ":textures/blocks/" + rb.getBlockIconFromSide(block, 1).getIconName().substring(4, rb.getBlockIconFromSide(block, 1).getIconName().length()) + ".png");
|
|
ResourceLocation loc2 = new ResourceLocation(RefStrings.MODID + ":textures/blocks/" + rb.getBlockIconFromSide(block, 3).getIconName().substring(4, rb.getBlockIconFromSide(block, 3).getIconName().length()) + ".png");
|
|
renderSmolBlockAt(loc1, loc2, a, b, c);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
public void renderSmolBlockAt(ResourceLocation loc1, ResourceLocation loc2, int x, int y, int z) {
|
|
GL11.glPushMatrix();
|
|
GL11.glTranslatef(x, y, z);
|
|
GL11.glRotatef(180, 0F, 0F, 1F);
|
|
Tessellator tesseract = Tessellator.instance;
|
|
tesseract.startDrawingQuads();
|
|
tesseract.addVertexWithUV(1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 1, 0);
|
|
tesseract.addVertexWithUV(11 * pixel / 2, 1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 0, 0);
|
|
tesseract.addVertexWithUV(11 * pixel / 2, 11 * pixel / 2, 1 - 11 * pixel / 2, 0, 1);
|
|
tesseract.addVertexWithUV(1 - 11 * pixel / 2, 11 * pixel / 2, 1 - 11 * pixel / 2, 1, 1);
|
|
this.bindTexture(loc2);
|
|
tesseract.draw();
|
|
|
|
tesseract.startDrawingQuads();
|
|
tesseract.addVertexWithUV(1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 11 * pixel / 2, 1, 0);
|
|
tesseract.addVertexWithUV(1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 0, 0);
|
|
tesseract.addVertexWithUV(1 - 11 * pixel / 2, 11 * pixel / 2, 1 - 11 * pixel / 2, 0, 1);
|
|
tesseract.addVertexWithUV(1 - 11 * pixel / 2, 11 * pixel / 2, 11 * pixel / 2, 1, 1);
|
|
this.bindTexture(loc2);
|
|
tesseract.draw();
|
|
|
|
tesseract.startDrawingQuads();
|
|
tesseract.addVertexWithUV(11 * pixel / 2, 1 - 11 * pixel / 2, 11 * pixel / 2, 1, 0);
|
|
tesseract.addVertexWithUV(1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 11 * pixel / 2, 0, 0);
|
|
tesseract.addVertexWithUV(1 - 11 * pixel / 2, 11 * pixel / 2, 11 * pixel / 2, 0, 1);
|
|
tesseract.addVertexWithUV(11 * pixel / 2, 11 * pixel / 2, 11 * pixel / 2, 1, 1);
|
|
this.bindTexture(loc2);
|
|
tesseract.draw();
|
|
|
|
tesseract.startDrawingQuads();
|
|
tesseract.addVertexWithUV(11 * pixel / 2, 1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 1, 0);
|
|
tesseract.addVertexWithUV(11 * pixel / 2, 1 - 11 * pixel / 2, 11 * pixel / 2, 0, 0);
|
|
tesseract.addVertexWithUV(11 * pixel / 2, 11 * pixel / 2, 11 * pixel / 2, 0, 1);
|
|
tesseract.addVertexWithUV(11 * pixel / 2, 11 * pixel / 2, 1 - 11 * pixel / 2, 1, 1);
|
|
this.bindTexture(loc2);
|
|
tesseract.draw();
|
|
|
|
tesseract.startDrawingQuads();
|
|
tesseract.addVertexWithUV(1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 11 * pixel / 2, 1, 0);
|
|
tesseract.addVertexWithUV(11 * pixel / 2, 1 - 11 * pixel / 2, 11 * pixel / 2, 0, 0);
|
|
tesseract.addVertexWithUV(11 * pixel / 2, 1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 0, 1);
|
|
tesseract.addVertexWithUV(1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 1, 1);
|
|
this.bindTexture(loc1);
|
|
tesseract.draw();
|
|
|
|
tesseract.startDrawingQuads();
|
|
tesseract.addVertexWithUV(11 * pixel / 2, 11 * pixel / 2, 11 * pixel / 2, 1, 0);
|
|
tesseract.addVertexWithUV(1 - 11 * pixel / 2, 11 * pixel / 2, 11 * pixel / 2, 0, 0);
|
|
tesseract.addVertexWithUV(1 - 11 * pixel / 2, 11 * pixel / 2, 1 - 11 * pixel / 2, 0, 1);
|
|
tesseract.addVertexWithUV(11 * pixel / 2, 11 * pixel / 2, 1 - 11 * pixel / 2, 1, 1);
|
|
this.bindTexture(loc1);
|
|
tesseract.draw();
|
|
GL11.glPopMatrix();
|
|
|
|
}
|
|
|
|
}
|