Enkey Posted December 7, 2013 Posted December 7, 2013 Hello guys, I have a small problem. When I am rendering my block in inventory it's darker then when it's placed: I tried to use tessellator.setBrightness(...); , but it was even darker no matter how big the number was. Can you tell me what range of numbers the brightness has? Or am I doing something else wrong? Renderer class: package morelights.renderers; import org.lwjgl.opengl.GL11; import morelights.lib.Pix; import morelights.proxy.ClientProxy; import net.minecraft.block.Block; import net.minecraft.client.renderer.RenderBlocks; import net.minecraft.client.renderer.Tessellator; import net.minecraft.util.Icon; import net.minecraft.world.IBlockAccess; import cpw.mods.fml.client.registry.ISimpleBlockRenderingHandler; public class ModernDecLampRenderer implements ISimpleBlockRenderingHandler { @Override public void renderInventoryBlock(Block block, int metadata, int modelID, RenderBlocks renderer) { Tessellator tes = Tessellator.instance; tes.startDrawingQuads(); tes.addTranslation(-0.5F, -0.3F, -0.5F); //tes.setBrightness(16); int x = 0; int y = 0; int z = 0; Icon icon = block.getIcon(0, 0); double minU = icon.getMinU(); double maxU = icon.getMaxU(); double minV = icon.getMinV(); double maxV = icon.getMaxV(); double p = (maxU - minU) / 32; double pv = (maxV - minV) / 32; //STAND this.renderPosZStand(tes, x, y, z, minU, maxU, minV, maxV, p, pv); this.renderNegZStand(tes, x, y, z, minU, maxU, minV, maxV, p, pv); this.renderPosXStand(tes, x, y, z, minU, maxU, minV, maxV, p, pv); this.renderNegXStand(tes, x, y, z, minU, maxU, minV, maxV, p, pv); this.rednerTopStand(tes, x, y, z, minU, maxU, minV, maxV, p, pv); //STAND2 this.renderPosZStand2(tes, x, y, z, minU, minV, p, pv); this.renderNegZStand2(tes, x, y, z, minU, minV, p, pv); this.renderPosXStand2(tes, x, y, z, minU, minV, p, pv); this.renderNegXStand2(tes, x, y, z, minU, minV, p, pv); //LIGHT this.renderPosZLight(tes, x, y, z, minU, minV, p, pv); this.renderNegZLight(tes, x, y, z, minU, minV, p, pv); this.renderPosXLight(tes, x, y, z, minU, minV, p, pv); this.renderNegXLight(tes, x, y, z, minU, minV, p, pv); this.renderTopLight(tes, x, y, z, minU, minV, p, pv); this.renderBottomLight(tes, x, y, z, minU, minV, p, pv); tes.addTranslation(0.5F, 0.3F, 0.5F); tes.draw(); } @Override public boolean renderWorldBlock(IBlockAccess world, int x, int y, int z, Block block, int modelId, RenderBlocks renderer) { Tessellator tes = Tessellator.instance; int lightValue = block.getMixedBrightnessForBlock(world, x, y, z); tes.setBrightness(lightValue); tes.setColorOpaque_F(1.0F, 1.0F, 1.0F); Icon icon = block.getIcon(0, 0); double minU = icon.getMinU(); double maxU = icon.getMaxU(); double minV = icon.getMinV(); double maxV = icon.getMaxV(); double p = (maxU - minU) / 32; double pv = (maxV - minV) / 32; //STAND this.renderPosZStand(tes, x, y, z, minU, maxU, minV, maxV, p, pv); this.renderNegZStand(tes, x, y, z, minU, maxU, minV, maxV, p, pv); this.renderPosXStand(tes, x, y, z, minU, maxU, minV, maxV, p, pv); this.renderNegXStand(tes, x, y, z, minU, maxU, minV, maxV, p, pv); this.rednerTopStand(tes, x, y, z, minU, maxU, minV, maxV, p, pv); //STAND2 this.renderPosZStand2(tes, x, y, z, minU, minV, p, pv); this.renderNegZStand2(tes, x, y, z, minU, minV, p, pv); this.renderPosXStand2(tes, x, y, z, minU, minV, p, pv); this.renderNegXStand2(tes, x, y, z, minU, minV, p, pv); //LIGHT this.renderPosZLight(tes, x, y, z, minU, minV, p, pv); this.renderNegZLight(tes, x, y, z, minU, minV, p, pv); this.renderPosXLight(tes, x, y, z, minU, minV, p, pv); this.renderNegXLight(tes, x, y, z, minU, minV, p, pv); this.renderTopLight(tes, x, y, z, minU, minV, p, pv); this.renderBottomLight(tes, x, y, z, minU, minV, p, pv); return true; } private void renderBottomLight(Tessellator tes, int x, int y, int z, double minU, double minV, double p, double pv) { double X = x + Pix.FOUR + (Pix.ONE/2); double Z = z + Pix.FOUR + (Pix.ONE/2); double Y = y + Pix.FIVE; minU += 21*p; minV += 16*pv; double maxU = minU + 7*p; double maxV = minV + 7*pv; tes.addVertexWithUV(X, Y, Z, minU, minV); tes.addVertexWithUV(X + Pix.SEVEN, Y, Z, maxU, minV); tes.addVertexWithUV(X + Pix.SEVEN, Y, Z + Pix.SEVEN, maxU, maxV); tes.addVertexWithUV(X, Y, Z + Pix.SEVEN, minU, maxV); } private void renderTopLight(Tessellator tes, int x, int y, int z, double minU, double minV, double p, double pv) { double X = x + Pix.FOUR + (Pix.ONE/2); double Z = z + Pix.FOUR + (Pix.ONE/2); double Y = y + Pix.TWELVE; minV += 16*pv; double maxU = minU + 7*p; double maxV = minV + 7*pv; tes.addVertexWithUV(X, Y, Z + Pix.SEVEN, minU, maxV); tes.addVertexWithUV(X + Pix.SEVEN, Y, Z + Pix.SEVEN, maxU, maxV); tes.addVertexWithUV(X + Pix.SEVEN, Y, Z, maxU, minV); tes.addVertexWithUV(X, Y, Z, minU, minV); } private void renderNegXLight(Tessellator tes, int x, int y, int z, double minU, double minV, double p, double pv) { double X = x + Pix.ELEVEN + (Pix.ONE/2); double Y = y + Pix.FIVE; double Z = z + Pix.ELEVEN + (Pix.ONE/2); minU += 14*p; minV += 17*pv; double maxU = minU + 7*p; double maxV = minV + 7*pv; tes.addVertexWithUV(X, Y, Z - Pix.SEVEN, maxU, minV); tes.addVertexWithUV(X, Y + Pix.SEVEN, Z - Pix.SEVEN, maxU, maxV); tes.addVertexWithUV(X, Y + Pix.SEVEN, Z, minU, maxV); tes.addVertexWithUV(X, Y, Z, minU, minV); } private void renderPosXLight(Tessellator tes, int x, int y, int z, double minU, double minV, double p, double pv) { double X = x + Pix.FOUR + (Pix.ONE/2); double Y = y + Pix.FIVE; double Z = z + Pix.ELEVEN + (Pix.ONE/2); minU += 7*p; minV += 17*pv; double maxU = minU + 7*p; double maxV = minV + 7*pv; tes.addVertexWithUV(X, Y, Z, minU, minV); tes.addVertexWithUV(X, Y + Pix.SEVEN, Z, minU, maxV); tes.addVertexWithUV(X, Y + Pix.SEVEN, Z - Pix.SEVEN, maxU, maxV); tes.addVertexWithUV(X, Y, Z - Pix.SEVEN, maxU, minV); } private void renderNegZLight(Tessellator tes, int x, int y, int z, double minU, double minV, double p, double pv) { double X = x + Pix.FOUR + (Pix.ONE/2); double Y = y + Pix.FIVE; double Z = z + Pix.ELEVEN + (Pix.ONE/2); minU += 14*p; minV += 10*pv; double maxU = minU + 7*p; double maxV = minV + 7*pv; tes.addVertexWithUV(X + Pix.SEVEN, Y, Z, maxU, minV); tes.addVertexWithUV(X + Pix.SEVEN, Y + Pix.SEVEN, Z, maxU, maxV); tes.addVertexWithUV(X, Y + Pix.SEVEN, Z, minU, maxV); tes.addVertexWithUV(X, Y, Z, minU, minV); } private void renderPosZLight(Tessellator tes, int x, int y, int z, double minU, double minV, double p, double pv) { double X = x + Pix.FOUR + (Pix.ONE/2); double Y = y + Pix.FIVE; double Z = z + Pix.FOUR + (Pix.ONE/2); minU += 7*p; minV += 10*pv; double maxU = minU + 7*p; double maxV = minV + 7*pv; tes.addVertexWithUV(X, Y, Z, minU, minV); tes.addVertexWithUV(X, Y + Pix.SEVEN, Z, minU, maxV); tes.addVertexWithUV(X + Pix.SEVEN, Y + Pix.SEVEN, Z, maxU, maxV); tes.addVertexWithUV(X + Pix.SEVEN, Y, Z, maxU, minV); } private void renderNegXStand2(Tessellator tes, int x, int y, int z, double minU, double minV, double p, double pv) { double X = x + Pix.TEN; double Y = y + Pix.TWO; double Z = z + Pix.TEN; minU += 20*p; minV += 2*pv; double maxU = minU + 4*p; double maxV = minV + 4*pv; tes.addVertexWithUV(X, Y, Z - Pix.FOUR, maxU, minV); tes.addVertexWithUV(X, Y + Pix.FOUR, Z - Pix.FOUR, maxU, maxV); tes.addVertexWithUV(X, Y + Pix.FOUR, Z, minU, maxV); tes.addVertexWithUV(X, Y, Z, minU, minV); } private void renderPosXStand2(Tessellator tes, int x, int y, int z, double minU, double minV, double p, double pv) { double X = x + Pix.SIX; double Y = y + Pix.TWO; double Z = z + Pix.TEN; minU += 12*p; minV += 2*pv; double maxU = minU + 4*p; double maxV = minV + 4*pv; tes.addVertexWithUV(X, Y, Z, minU, minV); tes.addVertexWithUV(X, Y + Pix.FOUR, Z, minU, maxV); tes.addVertexWithUV(X, Y + Pix.FOUR, Z - Pix.FOUR, maxU, maxV); tes.addVertexWithUV(X, Y, Z - Pix.FOUR, maxU, minV); } private void renderNegZStand2(Tessellator tes, int x, int y, int z, double minU, double minV, double p, double pv) { double X = x + Pix.SIX; double Y = y + Pix.TWO; double Z = z + Pix.TEN; minU += 16*p; minV += 2*pv; tes.addVertexWithUV(X + Pix.FOUR, Y, Z, minU + 4*p, minV); tes.addVertexWithUV(X + Pix.FOUR, Y + Pix.FOUR, Z, minU + 4*p, minV + 4*pv); tes.addVertexWithUV(X, Y + Pix.FOUR, Z, minU, minV + 4*pv); tes.addVertexWithUV(X, Y, Z, minU, minV); } private void renderPosZStand2(Tessellator tes, int x, int y, int z, double minU, double minV, double p, double pv) { double X = x + Pix.SIX; double Y = y + Pix.TWO; double Z = z + Pix.SIX; minU += 8*p; minV += 2*pv; tes.addVertexWithUV(X, Y, Z, minU, minV); tes.addVertexWithUV(X, Y + Pix.FOUR, Z, minU, minV + 4*pv); tes.addVertexWithUV(X + Pix.FOUR, Y + Pix.FOUR, Z, minU + 4*p, minV + 4*pv); tes.addVertexWithUV(X + Pix.FOUR, Y, Z, minU + 4*p, minV); } private void rednerTopStand(Tessellator tes, int X, int Y, int Z, double minU, double maxU, double minV, double maxV, double p, double pv) { double x = X + Pix.FOUR; double z = Z + Pix.FOUR; double y = Y + Pix.TWO; minV += 2*pv; tes.addVertexWithUV(x, y, z + Pix.EIGHT, minU + 8*p, minV); tes.addVertexWithUV(x + Pix.EIGHT, y, z + Pix.EIGHT, minU, minV); tes.addVertexWithUV(x + Pix.EIGHT, y, z, minU, minV + 8*pv); tes.addVertexWithUV(x, y, z, minU + 8*p, minV + 8*pv); } private void renderNegXStand(Tessellator tes, int X, int y, int Z, double minU, double maxU, double minV, double maxV, double p, double pv) { double x = X + Pix.FOUR; double z = Z + Pix.TWELVE; minU += 24*p; tes.addVertexWithUV(x, y, z, minU, minV + 2*pv); tes.addVertexWithUV(x, y + Pix.TWO, z, minU, minV); tes.addVertexWithUV(x, y + Pix.TWO, z - Pix.EIGHT, minU + 8*p, minV); tes.addVertexWithUV(x, y, z - Pix.EIGHT, minU + 8*p, minV + 2*pv); } private void renderPosXStand(Tessellator tes, int X, int y, int Z, double minU, double maxU, double minV, double maxV, double p, double pv) { double x = X + Pix.TWELVE; double z = Z + Pix.TWELVE; minU += 8*p; tes.addVertexWithUV(x, y, z - Pix.EIGHT, minU + 8*p, minV + 2*pv); tes.addVertexWithUV(x, y + Pix.TWO, z - Pix.EIGHT, minU + 8*p, minV); tes.addVertexWithUV(x, y + Pix.TWO, z, minU, minV); tes.addVertexWithUV(x, y, z, minU, minV + 2*pv); } private void renderNegZStand(Tessellator tes, int x, int y, int z, double minU, double maxU, double minV, double maxV, double p, double pv) { double offX = x + Pix.FOUR; double offZ = z + Pix.TWELVE; tes.addVertexWithUV(offX + Pix.EIGHT, y, offZ, minU + 8*p, minV +2*pv); tes.addVertexWithUV(offX + Pix.EIGHT, y + Pix.TWO, offZ, minU + 8*p, minV); tes.addVertexWithUV(offX, y + Pix.TWO, offZ, minU, minV); tes.addVertexWithUV(offX, y, offZ, minU, minV + 2*pv); } private void renderPosZStand(Tessellator tes, int x, int y, int z, double minU, double maxU, double minV, double maxV, double p, double pv) { double offX = x + Pix.FOUR; double offZ = z + Pix.FOUR; minU += 16*p; tes.addVertexWithUV(offX, y, offZ, minU, minV + 2*pv); tes.addVertexWithUV(offX, y + Pix.TWO, offZ, minU, minV); tes.addVertexWithUV(offX + Pix.EIGHT, y + Pix.TWO, offZ, minU + 8*p, minV); tes.addVertexWithUV(offX + Pix.EIGHT, y, offZ, minU + 8*p, minV +2*pv); } @Override public boolean shouldRender3DInInventory() { return true; } @Override public int getRenderId() { return ClientProxy.ModernDecLampType; } } Quote If someone helps you, click that thank you button EasyTessellator library: http://www.minecraftforge.net/forum/index.php/topic,14705.0.html
TheGreyGhost Posted December 7, 2013 Posted December 7, 2013 Hi Rendering in inventory doesn't use block brightness settings, it uses "normals" instead. See RenderBlocks.renderBlockAsItem eg tessellator.startDrawingQuads(); tessellator.setNormal(0.0F, -1.0F, 0.0F); this.renderFaceYNeg(par1Block, 0.0D, 0.0D, 0.0D, this.getBlockIconFromSide(par1Block, 0)); tessellator.draw(); tessellator.startDrawingQuads(); tessellator.setNormal(0.0F, 1.0F, 0.0F); this.renderFaceYPos(par1Block, 0.0D, 0.0D, 0.0D, this.getBlockIconFromSide(par1Block, 1)); tessellator.draw(); tessellator.startDrawingQuads(); tessellator.setNormal(0.0F, 0.0F, -1.0F); this.renderFaceZNeg(par1Block, 0.0D, 0.0D, 0.0D, this.getBlockIconFromSide(par1Block, 2)); tessellator.draw(); tessellator.startDrawingQuads(); tessellator.setNormal(0.0F, 0.0F, 1.0F); this.renderFaceZPos(par1Block, 0.0D, 0.0D, 0.0D, this.getBlockIconFromSide(par1Block, 3)); tessellator.draw(); tessellator.startDrawingQuads(); tessellator.setNormal(-1.0F, 0.0F, 0.0F); this.renderFaceXNeg(par1Block, 0.0D, 0.0D, 0.0D, this.getBlockIconFromSide(par1Block, 4)); tessellator.draw(); tessellator.startDrawingQuads(); tessellator.setNormal(1.0F, 0.0F, 0.0F); this.renderFaceXPos(par1Block, 0.0D, 0.0D, 0.0D, this.getBlockIconFromSide(par1Block, 5)); tessellator.draw(); see also this link at the end of the page http://greyminecraftcoder.blogspot.com.au/2013/09/custom-item-rendering-using.html -TGG -TGG Quote
Draco18s Posted December 7, 2013 Posted December 7, 2013 There's also Tessellator#setBrightness(int) Quote Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable. If you think this is the case, JUST REPORT ME. Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice. Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked. DO NOT PM ME WITH PROBLEMS. No help will be given.
Enkey Posted December 8, 2013 Author Posted December 8, 2013 On 12/7/2013 at 10:18 PM, TheGreyGhost said: Hi Rendering in inventory doesn't use block brightness settings, it uses "normals" instead. See RenderBlocks.renderBlockAsItem eg tessellator.startDrawingQuads(); tessellator.setNormal(0.0F, -1.0F, 0.0F); this.renderFaceYNeg(par1Block, 0.0D, 0.0D, 0.0D, this.getBlockIconFromSide(par1Block, 0)); tessellator.draw(); tessellator.startDrawingQuads(); tessellator.setNormal(0.0F, 1.0F, 0.0F); this.renderFaceYPos(par1Block, 0.0D, 0.0D, 0.0D, this.getBlockIconFromSide(par1Block, 1)); tessellator.draw(); tessellator.startDrawingQuads(); tessellator.setNormal(0.0F, 0.0F, -1.0F); this.renderFaceZNeg(par1Block, 0.0D, 0.0D, 0.0D, this.getBlockIconFromSide(par1Block, 2)); tessellator.draw(); tessellator.startDrawingQuads(); tessellator.setNormal(0.0F, 0.0F, 1.0F); this.renderFaceZPos(par1Block, 0.0D, 0.0D, 0.0D, this.getBlockIconFromSide(par1Block, 3)); tessellator.draw(); tessellator.startDrawingQuads(); tessellator.setNormal(-1.0F, 0.0F, 0.0F); this.renderFaceXNeg(par1Block, 0.0D, 0.0D, 0.0D, this.getBlockIconFromSide(par1Block, 4)); tessellator.draw(); tessellator.startDrawingQuads(); tessellator.setNormal(1.0F, 0.0F, 0.0F); this.renderFaceXPos(par1Block, 0.0D, 0.0D, 0.0D, this.getBlockIconFromSide(par1Block, 5)); tessellator.draw(); see also this link at the end of the page http://greyminecraftcoder.blogspot.com.au/2013/09/custom-item-rendering-using.html -TGG -TGG Thanks that worked! Quote If someone helps you, click that thank you button EasyTessellator library: http://www.minecraftforge.net/forum/index.php/topic,14705.0.html
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.