Posted August 21, 201411 yr Hey, I was making a custom rendered block with Tesselators for the first time, and when I saw my block the place where my .png was supposed to be placed was black(my png is bright pink). Can anyone help? Heres my rendering code: public class TileEntityRenderWindmill extends TileEntitySpecialRenderer { private final ResourceLocation textureWindmill = new ResourceLocation("tehfoodmod", "textures/model/windmill.png"); private int textureWidth = 64; private int textureHeight = 32; @Override public void renderTileEntityAt(TileEntity tileentity, double x, double y, double z, float f) { GL11.glPushMatrix(); GL11.glTranslatef((float)x, (float)y, (float)z); Tessellator tess = Tessellator.instance; this.bindTexture(textureWindmill); tess.startDrawingQuads(); //Starts drawing { tess.addVertexWithUV(0, 0, 1, 1, 1); tess.addVertexWithUV(1, 1, 1, 1, 0); tess.addVertexWithUV(0, 1, 0, 0, 0); tess.addVertexWithUV(0, 0, 0, 0, 1); } tess.draw(); //Draws GL11.glPopMatrix(); } }
August 22, 201411 yr Hi You still need to set the colour and the lighting before rendering. For example tessellator.setColorOpaque_F(1, 1, 1); //This will make your block brightness dependent from surroundings lighting. int brightness = block.getMixedBrightnessForBlock(world, x, y, z); tessellator.setBrightness(brightness); -TGG
August 22, 201411 yr Author Awesome thanks! One question though(prob nooby), where do I get my IBlockAccess from in a TESR?
August 22, 201411 yr Author Nope, still black, heres my code now public void renderTileEntityAt(TileEntity tileentity, double x, double y, double z, float f) { GL11.glPushMatrix(); GL11.glTranslatef((float)x, (float)y, (float)z); Tessellator tess = Tessellator.instance; this.bindTexture(textureWindmill); IBlockAccess world = tileentity.getWorldObj(); int brightness = tehfoodmod.blockWindmill.getMixedBrightnessForBlock(world, tileentity.xCoord, tileentity.yCoord, tileentity.zCoord); tess.setBrightness(brightness); tess.setColorOpaque_F(1.0F, 1.0F, 1.0F); tess.startDrawingQuads(); //Starts drawing { tess.addVertexWithUV(0, 0, 1, 1, 1); tess.addVertexWithUV(1, 1, 1, 1, 0); tess.addVertexWithUV(0, 1, 0, 0, 0); tess.addVertexWithUV(0, 0, 0, 0, 1); } tess.draw(); //Draws GL11.glPopMatrix(); }
August 22, 201411 yr You need to do the startDrawingQuads before the setBrightness and setColorOpaque, not after. -TGG
August 22, 201411 yr Double-check that you have a texture located in (yourrootfolder)/src/main/resources/assets/textures/model/windmill.png Have a modding question? PM me and hopefully I'll be able to help. Good at 2d Pixel Art? We need your help! http://www.minecraftforum.net/topic/1806355-looking-for-2d-pixel-artist/
August 22, 201411 yr Author Yup it's there. It's loading a texture, just its rendering black(no purple)
August 22, 201411 yr I had an entity rendering just black earlier the other day, I believe it was because the block had the correct texture, but the entity did not. Of course, mine still isn't working properly... (it's all solid red, now...) so I guess I'm not in a position to give out help advice. Have a modding question? PM me and hopefully I'll be able to help. Good at 2d Pixel Art? We need your help! http://www.minecraftforum.net/topic/1806355-looking-for-2d-pixel-artist/
August 22, 201411 yr Hi That code should work (I have done something identical not long ago) - pls show your latest renderer code, also a screenshot of what the black block looks like and what your texture bitmap image looks like? -TGG
August 22, 201411 yr Author package com.xcox123.tehfoodmod.renderer.tileentity; import org.lwjgl.opengl.GL11; import com.xcox123.tehfoodmod.tehfoodmod; import com.xcox123.tehfoodmod.Block.BlockWindmill; import cpw.mods.fml.common.FMLCommonHandler; import net.minecraft.block.Block; import net.minecraft.block.material.Material; 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; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; /** * Created by Adam on 20/08/2014. */ public class TileEntityRenderWindmill extends TileEntitySpecialRenderer { private final ResourceLocation textureWindmill = new ResourceLocation("tehfoodmod", "textures/model/windmill.png"); private int textureWidth = 64; private int textureHeight = 32; @Override public void renderTileEntityAt(TileEntity tileentity, double x, double y, double z, float f) { GL11.glPushMatrix(); GL11.glTranslatef((float)x, (float)y, (float)z); Tessellator tess = Tessellator.instance; this.bindTexture(textureWindmill); IBlockAccess world = tileentity.getWorldObj(); tess.startDrawingQuads(); //Starts drawing { tess.addVertexWithUV(0, 0, 1, 1, 1); tess.addVertexWithUV(1, 1, 1, 1, 0); tess.addVertexWithUV(0, 1, 0, 0, 0); tess.addVertexWithUV(0, 0, 0, 0, 1); } tess.draw(); //Draws int brightness = tehfoodmod.blockWindmill.getMixedBrightnessForBlock(world, tileentity.xCoord, tileentity.yCoord, tileentity.zCoord); tess.setBrightness(brightness); tess.setColorOpaque_F(1.0F, 1.0F, 1.0F); /* * Tried brightness code above outside of GL11.glPopMatrix() and same effect happens */ GL11.glPopMatrix(); } } Texture: Just saying, ^^ is found at this path: C:\Users\Adam\Desktop\Modding\1.7\TehFoodMod\Source\src\main\resources\assets\tehfoodmod\textures\model
August 23, 201411 yr Hi Have you tried this order? @Override public void renderTileEntityAt(TileEntity tileentity, double x, double y, double z, float f) { GL11.glPushMatrix(); GL11.glTranslatef((float)x, (float)y, (float)z); Tessellator tess = Tessellator.instance; this.bindTexture(textureWindmill); IBlockAccess world = tileentity.getWorldObj(); tess.startDrawingQuads(); //Starts drawing int brightness = tehfoodmod.blockWindmill.getMixedBrightnessForBlock(world, tileentity.xCoord, tileentity.yCoord, tileentity.zCoord); tess.setBrightness(brightness); tess.setColorOpaque_F(1.0F, 1.0F, 1.0F); { tess.addVertexWithUV(0, 0, 1, 1, 1); tess.addVertexWithUV(1, 1, 1, 1, 0); tess.addVertexWithUV(0, 1, 0, 0, 0); tess.addVertexWithUV(0, 0, 0, 0, 1); } tess.draw(); //Draws GL11.glPopMatrix(); } Also, do you mean for it to have that twisted appearance? Normally the four points of the Quad are supposed to lie in the same plane, but yours is bent. See here for more information http://greyminecraftcoder.blogspot.com.au/2013/08/the-tessellator.html -TGG
August 23, 201411 yr Author Yeah, I was only half way through testing when I noticed the texture issue so the quads are all messed up And still nothing. I'm about to github the whole mod, so maybe something's up there? https://github.com/Xcox123/TehFoodMod
August 23, 201411 yr Well I tried your code and the problem was that you spelled BlockWindmill.isOpaqueCube() with a Q instead of an O, i.e. isQpaqueCube(). So the getMixedBrightness always always returned 0. If you put @Override before methods like this it will help pick up these problems. @Override public boolean isOpaqueCube(){ return false; } I also added RenderHelper.disableStandardItemLighting(); just in case it has been left in that mode (which might cause random-looking brightness variations) If you want your block to be full brightness all the time, you can just use final int FULL_SKY_BRIGHTNESS = 255; tess.setBrightness(FULL_SKY_BRIGHTNESS); @Override public void renderTileEntityAt(TileEntity tileentity, double x, double y, double z, float f) { GL11.glPushMatrix(); GL11.glTranslatef((float)x, (float)y, (float)z); Tessellator tess = Tessellator.instance; this.bindTexture(textureWindmill); IBlockAccess world = tileentity.getWorldObj(); RenderHelper.disableStandardItemLighting(); // turn off item lighting tess.startDrawingQuads(); //Starts drawing int brightness = tehfoodmod.blockWindmill.getMixedBrightnessForBlock(world, tileentity.xCoord, tileentity.yCoord, tileentity.zCoord); tess.setBrightness(brightness); tess.setColorOpaque_F(1.0F, 1.0F, 1.0F); { tess.addVertexWithUV(0, 0, 1, 1, 1); tess.addVertexWithUV(1, 1, 1, 1, 0); tess.addVertexWithUV(0, 1, 0, 0, 0); tess.addVertexWithUV(0, 0, 0, 0, 1); } tess.draw(); //Draws GL11.glPopMatrix(); } -TGG
August 23, 201411 yr Oh my god I am so stupid It works now thanks for helping me! No worries, glad we solved it. Although it seems to have earned me a smite along the way for some reason -TGG
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.