package sourcecoded.quantum.client.renderer.tile;
import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.RenderBlocks;
import net.minecraft.client.renderer.Tessellator;
import net.minecraft.client.renderer.entity.RenderItem;
import net.minecraft.client.renderer.entity.RenderManager;
import net.minecraft.client.renderer.texture.TextureMap;
import net.minecraft.entity.item.EntityItem;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.ResourceLocation;
import net.minecraftforge.client.model.AdvancedModelLoader;
import net.minecraftforge.client.model.obj.WavefrontObject;
import sourcecoded.quantum.Constants;
import sourcecoded.quantum.client.renderer.GlowRenderHandler;
import sourcecoded.quantum.tile.TileArrangement;
import sourcecoded.quantum.util.TessUtils;
import static org.lwjgl.opengl.GL11.*;
public class TESRArrangement extends TESRStaticHandler {
WavefrontObject model = (WavefrontObject) AdvancedModelLoader.loadModel(new ResourceLocation(Constants.MODID, "model/block/arranger.obj"));
ResourceLocation texDark = new ResourceLocation(Constants.MODID, "textures/blocks/infusedStone.png");
ResourceLocation texHaze = new ResourceLocation(Constants.MODID, "textures/blocks/hazeDesaturated.png");
@Override
public void renderTile(TileEntity te, double x, double y, double z, float ptt, boolean isStatic, RenderBlocks renderBlocks) {
if (!isStatic) {
glPushMatrix();
glTranslated(x, y, z);
glEnable(GL_BLEND);
glDisable(GL_LIGHTING);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
Tessellator tess = Tessellator.instance;
float innerPadding = 0.03F;
tess.startDrawingQuads();
float[] rgb = ((TileArrangement) te).colour.rgb;
tess.setColorRGBA_F(rgb[0], rgb[1], rgb[2], GlowRenderHandler.instance().brightness);
tess.setBrightness(240);
this.bindTexture(texHaze);
TessUtils.drawCube(tess, innerPadding, innerPadding, innerPadding, 1F - (innerPadding * 2), 0, 0, 1, 1);
tess.draw();
TileArrangement arrangement = (TileArrangement) te;
if (arrangement.hasWorldObj() && arrangement.activeRecipe != null) {
float speed = 0.0025F;
arrangement.renderProgress += ptt * speed;
if (arrangement.renderProgress >= 1F)
arrangement.renderProgress = 0F;
ItemStack items = arrangement.getOutput().copy();
items.stackSize = 1; //Display only one
EntityItem item = new EntityItem(arrangement.getWorldObj(), 0D, 0D, 0D, items);
item.hoverStart = 0.0F;
RenderItem.renderInFrame = true;
double yo = 1.5D + 0.125*Math.sin(arrangement.renderProgress * 2 * Math.PI);
RenderManager.instance.renderEntityWithPosYaw(item, 0.5D, yo, 0.5D, 0F, 0F);
RenderItem.renderInFrame = false;
}
glEnable(GL_LIGHTING);
glPopMatrix();
} else {
Tessellator tess = Tessellator.instance;
x += 0.5;
y += 0.5;
z += 0.5;
tess.addTranslation((float) x, (float) y, (float) z);
tess.startDrawingQuads();
tess.setColorRGBA_F(1F, 1F, 1F, 1F);
brightness(tess);
Minecraft.getMinecraft().renderEngine.bindTexture(texDark);
model.tessellateAll(tess);
tess.draw();
tess.addTranslation((float) -x, (float) -y, (float) -z);
Minecraft.getMinecraft().renderEngine.bindTexture(TextureMap.locationBlocksTexture);
}
}
}