Jump to content

[SOLVED] Tessellator - already tessellating error


Enkey

Recommended Posts

Hi,

 

I wanted to play around with tesselator, but I got this error:

 

2013-11-28 21:42:33 [iNFO] [sTDERR] 	at net.minecraft.client.renderer.Tessellator.startDrawing(Tessellator.java:343)
2013-11-28 21:42:33 [iNFO] [sTDERR] 	at net.minecraft.client.renderer.Tessellator.startDrawingQuads(Tessellator.java:333)
2013-11-28 21:42:33 [iNFO] [sTDERR] 	at morelights.renderers.LEDStripRenderer.renderWorldBlock(LEDStripRenderer.java:28)
2013-11-28 21:42:33 [iNFO] [sTDERR] 	at cpw.mods.fml.client.registry.RenderingRegistry.renderWorldBlock(RenderingRegistry.java:152)
2013-11-28 21:42:33 [iNFO] [sTDERR] 	at net.minecraft.src.FMLRenderAccessLibrary.renderWorldBlock(FMLRenderAccessLibrary.java:57)
2013-11-28 21:42:33 [iNFO] [sTDERR] 	at net.minecraft.client.renderer.RenderBlocks.renderBlockByRenderType(RenderBlocks.java:485)
2013-11-28 21:42:33 [iNFO] [sTDERR] 	at net.minecraft.client.renderer.WorldRenderer.updateRenderer(WorldRenderer.java:224)
2013-11-28 21:42:33 [iNFO] [sTDERR] 	at net.minecraft.client.renderer.RenderGlobal.updateRenderers(RenderGlobal.java:1551)
2013-11-28 21:42:33 [iNFO] [sTDERR] 	at net.minecraft.client.renderer.EntityRenderer.renderWorld(EntityRenderer.java:1129)
2013-11-28 21:42:33 [iNFO] [sTDERR] 	at net.minecraft.client.renderer.EntityRenderer.updateCameraAndRender(EntityRenderer.java:1006)
2013-11-28 21:42:33 [iNFO] [sTDERR] 	at net.minecraft.client.Minecraft.runGameLoop(Minecraft.java:946)
2013-11-28 21:42:33 [iNFO] [sTDERR] 	at net.minecraft.client.Minecraft.run(Minecraft.java:838)
2013-11-28 21:42:33 [iNFO] [sTDERR] 	at net.minecraft.client.main.Main.main(Main.java:93)
2013-11-28 21:42:33 [iNFO] [sTDERR] 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
2013-11-28 21:42:33 [iNFO] [sTDERR] 	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
2013-11-28 21:42:33 [iNFO] [sTDERR] 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
2013-11-28 21:42:33 [iNFO] [sTDERR] 	at java.lang.reflect.Method.invoke(Unknown Source)
2013-11-28 21:42:33 [iNFO] [sTDERR] 	at net.minecraft.launchwrapper.Launch.launch(Launch.java:131)
2013-11-28 21:42:33 [iNFO] [sTDERR] 	at net.minecraft.launchwrapper.Launch.main(Launch.java:27)
2013-11-28 21:42:33 [iNFO] [sTDOUT] ---- Minecraft Crash Report ----
2013-11-28 21:42:33 [iNFO] [sTDOUT] // I just don't know what went wrong 
2013-11-28 21:42:33 [iNFO] [sTDOUT] 
2013-11-28 21:42:33 [iNFO] [sTDOUT] Time: 28.11.13 21:42
2013-11-28 21:42:33 [iNFO] [sTDOUT] Description: Unexpected error
2013-11-28 21:42:33 [iNFO] [sTDOUT] 
2013-11-28 21:42:33 [iNFO] [sTDOUT] java.lang.IllegalStateException: Already tesselating!
2013-11-28 21:42:33 [iNFO] [sTDOUT] 	at net.minecraft.client.renderer.Tessellator.startDrawing(Tessellator.java:343)
2013-11-28 21:42:33 [iNFO] [sTDOUT] 	at net.minecraft.client.renderer.Tessellator.startDrawingQuads(Tessellator.java:333)
2013-11-28 21:42:33 [iNFO] [sTDOUT] 	at morelights.renderers.LEDStripRenderer.renderWorldBlock(LEDStripRenderer.java:28)
2013-11-28 21:42:33 [iNFO] [sTDOUT] 	at cpw.mods.fml.client.registry.RenderingRegistry.renderWorldBlock(RenderingRegistry.java:152)
2013-11-28 21:42:33 [iNFO] [sTDOUT] 	at net.minecraft.src.FMLRenderAccessLibrary.renderWorldBlock(FMLRenderAccessLibrary.java:57)
2013-11-28 21:42:33 [iNFO] [sTDOUT] 	at net.minecraft.client.renderer.RenderBlocks.renderBlockByRenderType(RenderBlocks.java:485)
2013-11-28 21:42:33 [iNFO] [sTDOUT] 	at net.minecraft.client.renderer.WorldRenderer.updateRenderer(WorldRenderer.java:224)
2013-11-28 21:42:33 [iNFO] [sTDOUT] 	at net.minecraft.client.renderer.RenderGlobal.updateRenderers(RenderGlobal.java:1551)
2013-11-28 21:42:33 [iNFO] [sTDOUT] 	at net.minecraft.client.renderer.EntityRenderer.renderWorld(EntityRenderer.java:1129)
2013-11-28 21:42:33 [iNFO] [sTDOUT] 	at net.minecraft.client.renderer.EntityRenderer.updateCameraAndRender(EntityRenderer.java:1006)
2013-11-28 21:42:33 [iNFO] [sTDOUT] 	at net.minecraft.client.Minecraft.runGameLoop(Minecraft.java:946)
2013-11-28 21:42:33 [iNFO] [sTDOUT] 	at net.minecraft.client.Minecraft.run(Minecraft.java:838)
2013-11-28 21:42:33 [iNFO] [sTDOUT] 	at net.minecraft.client.main.Main.main(Main.java:93)
2013-11-28 21:42:33 [iNFO] [sTDOUT] 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
2013-11-28 21:42:33 [iNFO] [sTDOUT] 	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
2013-11-28 21:42:33 [iNFO] [sTDOUT] 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
2013-11-28 21:42:33 [iNFO] [sTDOUT] 	at java.lang.reflect.Method.invoke(Unknown Source)
2013-11-28 21:42:33 [iNFO] [sTDOUT] 	at net.minecraft.launchwrapper.Launch.launch(Launch.java:131)
2013-11-28 21:42:33 [iNFO] [sTDOUT] 	at net.minecraft.launchwrapper.Launch.main(Launch.java:27)
2013-11-28 21:42:33 [iNFO] [sTDOUT] 
2013-11-28 21:42:33 [iNFO] [sTDOUT] 
2013-11-28 21:42:33 [iNFO] [sTDOUT] A detailed walkthrough of the error, its code path and all known details is as follows:
2013-11-28 21:42:33 [iNFO] [sTDOUT] ---------------------------------------------------------------------------------------
2013-11-28 21:42:33 [iNFO] [sTDOUT] 
2013-11-28 21:42:33 [iNFO] [sTDOUT] -- Head --
2013-11-28 21:42:33 [iNFO] [sTDOUT] Stacktrace:
2013-11-28 21:42:33 [iNFO] [sTDOUT] 	at net.minecraft.client.renderer.Tessellator.startDrawing(Tessellator.java:343)
2013-11-28 21:42:33 [iNFO] [sTDOUT] 	at net.minecraft.client.renderer.Tessellator.startDrawingQuads(Tessellator.java:333)
2013-11-28 21:42:33 [iNFO] [sTDOUT] 	at morelights.renderers.LEDStripRenderer.renderWorldBlock(LEDStripRenderer.java:28)
2013-11-28 21:42:33 [iNFO] [sTDOUT] 	at cpw.mods.fml.client.registry.RenderingRegistry.renderWorldBlock(RenderingRegistry.java:152)
2013-11-28 21:42:33 [iNFO] [sTDOUT] 	at net.minecraft.src.FMLRenderAccessLibrary.renderWorldBlock(FMLRenderAccessLibrary.java:57)
2013-11-28 21:42:33 [iNFO] [sTDOUT] 	at net.minecraft.client.renderer.RenderBlocks.renderBlockByRenderType(RenderBlocks.java:485)
2013-11-28 21:42:33 [iNFO] [sTDOUT] 	at net.minecraft.client.renderer.WorldRenderer.updateRenderer(WorldRenderer.java:224)
2013-11-28 21:42:33 [iNFO] [sTDOUT] 	at net.minecraft.client.renderer.RenderGlobal.updateRenderers(RenderGlobal.java:1551)
2013-11-28 21:42:33 [iNFO] [sTDOUT] 	at net.minecraft.client.renderer.EntityRenderer.renderWorld(EntityRenderer.java:1129)
2013-11-28 21:42:33 [iNFO] [sTDOUT] 
2013-11-28 21:42:33 [iNFO] [sTDOUT] -- Affected level --
2013-11-28 21:42:33 [iNFO] [sTDOUT] Details:
2013-11-28 21:42:33 [iNFO] [sTDOUT] 	Level name: MpServer
2013-11-28 21:42:33 [iNFO] [sTDOUT] 	All players: 1 total; [EntityClientPlayerMP['Player261'/19, l='MpServer', x=-41,40, y=5,62, z=121,90]]
2013-11-28 21:42:33 [iNFO] [sTDOUT] 	Chunk stats: MultiplayerChunkCache: 441
2013-11-28 21:42:33 [iNFO] [sTDOUT] 	Level seed: 0
2013-11-28 21:42:33 [iNFO] [sTDOUT] 	Level generator: ID 01 - flat, ver 0. Features enabled: false
2013-11-28 21:42:33 [iNFO] [sTDOUT] 	Level generator options: 
2013-11-28 21:42:33 [iNFO] [sTDOUT] 	Level spawn location: World: (-51,4,122), Chunk: (at 13,0,10 in -4,7; contains blocks -64,0,112 to -49,255,127), Region: (-1,0; contains chunks -32,0 to -1,31, blocks -512,0,0 to -1,255,511)
2013-11-28 21:42:33 [iNFO] [sTDOUT] 	Level time: 357678 game time, 188737 day time
2013-11-28 21:42:33 [iNFO] [sTDOUT] 	Level dimension: 0
2013-11-28 21:42:33 [iNFO] [sTDOUT] 	Level storage version: 0x00000 - Unknown?
2013-11-28 21:42:33 [iNFO] [sTDOUT] 	Level weather: Rain time: 0 (now: false), thunder time: 0 (now: false)
2013-11-28 21:42:33 [iNFO] [sTDOUT] 	Level game mode: Game mode: creative (ID 1). Hardcore: false. Cheats: false
2013-11-28 21:42:33 [iNFO] [sTDOUT] 	Forced entities: 4 total; [EntityClientPlayerMP['Player261'/19, l='MpServer', x=-41,40, y=5,62, z=121,90], EntityPig['Pig'/10, l='MpServer', x=-99,75, y=4,00, z=62,22], EntityPig['Pig'/14, l='MpServer', x=-65,50, y=4,00, z=50,09], EntityPig['Pig'/15, l='MpServer', x=-66,66, y=4,00, z=47,22]]
2013-11-28 21:42:33 [iNFO] [sTDOUT] 	Retry entities: 0 total; []
2013-11-28 21:42:33 [iNFO] [sTDOUT] 	Server brand: fml,forge
2013-11-28 21:42:33 [iNFO] [sTDOUT] 	Server type: Integrated singleplayer server
2013-11-28 21:42:33 [iNFO] [sTDOUT] Stacktrace:
2013-11-28 21:42:33 [iNFO] [sTDOUT] 	at net.minecraft.client.multiplayer.WorldClient.addWorldInfoToCrashReport(WorldClient.java:440)
2013-11-28 21:42:33 [iNFO] [sTDOUT] 	at net.minecraft.client.Minecraft.addGraphicsAndWorldToCrashReport(Minecraft.java:2312)
2013-11-28 21:42:33 [iNFO] [sTDOUT] 	at net.minecraft.client.Minecraft.run(Minecraft.java:863)
2013-11-28 21:42:33 [iNFO] [sTDOUT] 	at net.minecraft.client.main.Main.main(Main.java:93)
2013-11-28 21:42:33 [iNFO] [sTDOUT] 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
2013-11-28 21:42:33 [iNFO] [sTDOUT] 	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
2013-11-28 21:42:33 [iNFO] [sTDOUT] 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
2013-11-28 21:42:33 [iNFO] [sTDOUT] 	at java.lang.reflect.Method.invoke(Unknown Source)
2013-11-28 21:42:33 [iNFO] [sTDOUT] 	at net.minecraft.launchwrapper.Launch.launch(Launch.java:131)
2013-11-28 21:42:33 [iNFO] [sTDOUT] 	at net.minecraft.launchwrapper.Launch.main(Launch.java:27)
2013-11-28 21:42:33 [iNFO] [sTDOUT] 
2013-11-28 21:42:33 [iNFO] [sTDOUT] -- System Details --
2013-11-28 21:42:33 [iNFO] [sTDOUT] Details:
2013-11-28 21:42:33 [iNFO] [sTDOUT] 	Minecraft Version: 1.6.4
2013-11-28 21:42:33 [iNFO] [sTDOUT] 	Operating System: Windows 7 (amd64) version 6.1
2013-11-28 21:42:33 [iNFO] [sTDOUT] 	Java Version: 1.7.0_45, Oracle Corporation
2013-11-28 21:42:33 [iNFO] [sTDOUT] 	Java VM Version: Java HotSpot(TM) 64-Bit Server VM (mixed mode), Oracle Corporation
2013-11-28 21:42:33 [iNFO] [sTDOUT] 	Memory: 671491320 bytes (640 MB) / 1038876672 bytes (990 MB) up to 1038876672 bytes (990 MB)
2013-11-28 21:42:33 [iNFO] [sTDOUT] 	JVM Flags: 3 total; -Xincgc -Xmx1024M -Xms1024M
2013-11-28 21:42:33 [iNFO] [sTDOUT] 	AABB Pool Size: 18395 (1030120 bytes; 0 MB) allocated, 71 (3976 bytes; 0 MB) used
2013-11-28 21:42:33 [iNFO] [sTDOUT] 	Suspicious classes: FML and Forge are installed
2013-11-28 21:42:33 [iNFO] [sTDOUT] 	IntCache: cache: 0, tcache: 0, allocated: 0, tallocated: 0
2013-11-28 21:42:33 [iNFO] [sTDOUT] 	FML: MCP v8.11 FML v6.4.41.946 Minecraft Forge 9.11.1.946 4 mods loaded, 4 mods active
2013-11-28 21:42:33 [iNFO] [sTDOUT] 	mcp{8.09} [Minecraft Coder Pack] (minecraft.jar) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available
2013-11-28 21:42:33 [iNFO] [sTDOUT] 	FML{6.4.41.946} [Forge Mod Loader] (bin) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available
2013-11-28 21:42:33 [iNFO] [sTDOUT] 	Forge{9.11.1.946} [Minecraft Forge] (bin) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available
2013-11-28 21:42:33 [iNFO] [sTDOUT] 	morelights{1.6.4 v0.1} [More Lights Mod] (bin) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available
2013-11-28 21:42:33 [iNFO] [sTDOUT] 	Launched Version: 1.6
2013-11-28 21:42:33 [iNFO] [sTDOUT] 	LWJGL: 2.9.0
2013-11-28 21:42:33 [iNFO] [sTDOUT] 	OpenGL: AMD Radeon HD 5800 Series GL version 4.2.12422 Compatibility Profile Context 13.152.0.0, ATI Technologies Inc.
2013-11-28 21:42:33 [iNFO] [sTDOUT] 	Is Modded: Definitely; Client brand changed to 'fml,forge'
2013-11-28 21:42:33 [iNFO] [sTDOUT] 	Type: Client (map_client.txt)
2013-11-28 21:42:33 [iNFO] [sTDOUT] 	Resource Pack: Default
2013-11-28 21:42:33 [iNFO] [sTDOUT] 	Current Language: English (US)
2013-11-28 21:42:33 [iNFO] [sTDOUT] 	Profiler Position: N/A (disabled)
2013-11-28 21:42:33 [iNFO] [sTDOUT] 	Vec3 Pool Size: 286 (16016 bytes; 0 MB) allocated, 51 (2856 bytes; 0 MB) used
2013-11-28 21:42:33 [iNFO] [sTDOUT] #@!@# Game crashed! Crash report saved to: #@!@# D:\Data\Dokumenty\Development\forge\mcp\jars\.\crash-reports\crash-2013-11-28_21.42.33-client.txt
2013-11-28 21:42:33 [iNFO] [Minecraft-Server] Stopping server
2013-11-28 21:42:33 [iNFO] [Minecraft-Server] Saving players
2013-11-28 21:42:33 [iNFO] [Minecraft-Server] Stopping server
2013-11-28 21:42:33 [iNFO] [Minecraft-Server] Saving players
AL lib: (EE) alc_cleanup: 1 device not closed

 

I was trying to google it, but I didn't find an answer :(

 

Here is the code:

 

package morelights.renderers;

import org.lwjgl.opengl.GL11;

import morelights.lib.Reference;
import morelights.proxy.ClientProxy;
import net.minecraft.block.Block;
import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.RenderBlocks;
import net.minecraft.client.renderer.Tessellator;
import net.minecraft.util.ResourceLocation;
import net.minecraft.world.IBlockAccess;
import cpw.mods.fml.client.registry.ISimpleBlockRenderingHandler;

public class LEDStripRenderer implements ISimpleBlockRenderingHandler {

@Override
public void renderInventoryBlock(Block block, int metadata, int modelID,
		RenderBlocks renderer) {

}

@Override
public boolean renderWorldBlock(IBlockAccess world, int x, int y, int z,
		Block block, int modelId, RenderBlocks renderer) {

	Tessellator tes = Tessellator.instance;
	tes.startDrawingQuads();
	int lightValue = block.getMixedBrightnessForBlock(world, x, y, z);
	tes.setBrightness(lightValue);
	tes.setColorOpaque_F(1.0F, 1.0F, 1.0F);

	tes.setTranslation(x, y, z);

	ResourceLocation textures = (new ResourceLocation(Reference.modid + ":textures/models/LEDStrip.png")); 
        Minecraft.getMinecraft().renderEngine.bindTexture(textures);
        
        tes.addVertexWithUV(0, 0, 0, 0, 1);
        tes.addVertexWithUV(0, 1, 0, 0, 0);
        tes.addVertexWithUV(0, 1, 1, 1, 0);
        tes.addVertexWithUV(0, 0, 1, 1, 1);
        
        tes.draw();

	return true;
}

@Override
public boolean shouldRender3DInInventory() {
	return true;
}

@Override
public int getRenderId() {
	return ClientProxy.LEDStripRenderType;
}
}

If someone helps you, click that thank you button ;)

 

EasyTessellator library: http://www.minecraftforge.net/forum/index.php/topic,14705.0.html

Link to comment
Share on other sites

Hi

 

The caller has already performed tes.startDrawingQuads(); for you.  Delete that line and it should be fine.

 

You can't do two startDrawingXXX in a row without a draw between them  (and vica versa too)

 

-TGG

 

Well I was thinking about it too, but guess what... then I get "Not tesselating!" error :D

If someone helps you, click that thank you button ;)

 

EasyTessellator library: http://www.minecraftforge.net/forum/index.php/topic,14705.0.html

Link to comment
Share on other sites

Hi

 

Well we're making progress...

I didn't have this problem in my own ISBRH renderers so far, but perhaps you need to undo some of the setting changes you are making (setTranslate, texture, etc). 

I'd suggest removing them one by one and seeing which one(s) are causing the weirdness.

And come to think of it, I don't think you need setTranslate, the caller should have done that for you.  Setting it to 0,0,0 might actually be causing your problem.

 

Something else to be aware of - if your block has transparent bits (is not a full, opaque cube), you need to override isOpaqueBlock to return false.

http://4.bp.blogspot.com/-F0FTLzenidU/UfKBs19w_rI/AAAAAAAAABw/nxNmavM7sd4/s1600/StandardBlockWithAlpha-1.png

 

-TGG

Link to comment
Share on other sites

Hi

 

Well we're making progress...

I didn't have this problem in my own ISBRH renderers so far, but perhaps you need to undo some of the setting changes you are making (setTranslate, texture, etc). 

I'd suggest removing them one by one and seeing which one(s) are causing the weirdness.

And come to think of it, I don't think you need setTranslate, the caller should have done that for you.  Setting it to 0,0,0 might actually be causing your problem.

 

Ok so binding the texture was the problem. So how do I tell the tessellator which texture to use?

 

 

Something else to be aware of - if your block has transparent bits (is not a full, opaque cube), you need to override isOpaqueBlock to return false.

http://4.bp.blogspot.com/-F0FTLzenidU/UfKBs19w_rI/AAAAAAAAABw/nxNmavM7sd4/s1600/StandardBlockWithAlpha-1.png

 

-TGG

I know that ;)

If someone helps you, click that thank you button ;)

 

EasyTessellator library: http://www.minecraftforge.net/forum/index.php/topic,14705.0.html

Link to comment
Share on other sites

Hi

 

From looking in EntityRenderer.renderWorld I think this should work:

 

Minecraft.getMinecraft().getTextureManager().bindTexture(TextureMap.locationBlocksTexture);

         

-TGG

 

Well it's almost the same as I did it before and this is binding the texture map for vanilla blocks (and even then there is no texture). But now I know why it was doing that glitch where blocks didn't have texture. It was because I was binding my texture, but then it using it for every block in that chunk. So I have just put Minecraft.getMinecraft().getTextureManager().bindTexture(TextureMap.locationBlocksTexture); when I finished rendering my block and it's not doing that glitch, but my block is still not rendering (or doesn't have texture)

If someone helps you, click that thank you button ;)

 

EasyTessellator library: http://www.minecraftforge.net/forum/index.php/topic,14705.0.html

Link to comment
Share on other sites

Hi

 

Sounds like it might be rendering but not in the place you expect.

 

Suggest to try

// comment this out		tes.setTranslation(x, y, z);

	ResourceLocation textures = (new ResourceLocation(Reference.modid + ":textures/models/LEDStrip.png")); 
        Minecraft.getMinecraft().renderEngine.bindTexture(textures);
        
        tes.addVertexWithUV(x,     y,     z, 0, 1);
        tes.addVertexWithUV(x, y+1,     z, 0, 0);
        tes.addVertexWithUV(x, y+1, z+1, 1, 0);
        tes.addVertexWithUV(x,     y, z+1, 1, 1);

-TGG

 

Link to comment
Share on other sites

Hi

 

Sounds like it might be rendering but not in the place you expect.

 

Suggest to try

// comment this out		tes.setTranslation(x, y, z);

	ResourceLocation textures = (new ResourceLocation(Reference.modid + ":textures/models/LEDStrip.png")); 
        Minecraft.getMinecraft().renderEngine.bindTexture(textures);
        
        tes.addVertexWithUV(x,     y,     z, 0, 1);
        tes.addVertexWithUV(x, y+1,     z, 0, 0);
        tes.addVertexWithUV(x, y+1, z+1, 1, 0);
        tes.addVertexWithUV(x,     y, z+1, 1, 1);

-TGG

 

I've already done that ;)

 

Actual code:

package morelights.renderers;

import org.lwjgl.opengl.GL11;

import morelights.lib.Reference;
import morelights.proxy.ClientProxy;
import net.minecraft.block.Block;
import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.RenderBlocks;
import net.minecraft.client.renderer.Tessellator;
import net.minecraft.client.renderer.texture.TextureMap;
import net.minecraft.util.ResourceLocation;
import net.minecraft.world.IBlockAccess;
import cpw.mods.fml.client.registry.ISimpleBlockRenderingHandler;

public class LEDStripRenderer implements ISimpleBlockRenderingHandler {

@Override
public void renderInventoryBlock(Block block, int metadata, int modelID,
		RenderBlocks renderer) {

}

@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);

	ResourceLocation texture = (new ResourceLocation(Reference.modid + ":textures/models/LEDStrip.png"));
	Minecraft.getMinecraft().getTextureManager().bindTexture(texture);
        
        tes.addVertexWithUV(0, 0, 0, 0, 1);
        tes.addVertexWithUV(0, 1, 0, 0, 0);
        tes.addVertexWithUV(0, 1, 1, 1, 0);
        tes.addVertexWithUV(0, 0, 1, 1, 1);
        
        Minecraft.getMinecraft().getTextureManager().bindTexture(TextureMap.locationBlocksTexture);
        
	return true;
}

@Override
public boolean shouldRender3DInInventory() {
	return true;
}

@Override
public int getRenderId() {
	return ClientProxy.LEDStripRenderType;
}
}

If someone helps you, click that thank you button ;)

 

EasyTessellator library: http://www.minecraftforge.net/forum/index.php/topic,14705.0.html

Link to comment
Share on other sites

Hi

 

Your code currently renders from [0,0,0] to [1,1,1] instead of from [x,y,z] to [x+1, y+1, z+1].

Did you try that [x,y,z] to [x+1, y+1, z+1] already?

I think the tes.setTranslation(x, y, z) won't work because the caller has set the viewpoint and translation relative to the chunk coordinates, not relative to an origin of [0,0,0]

 

-TGG

 

Link to comment
Share on other sites

Also, if you want to change the texture, you need to do it while the tesselator is not tesselating, otherwise you'll mess up rendering of other blocks. You also need to restore the previous texture when you're finished, again while the tesselator is not tesselating. The correct procedure is:

 

tes.draw();
/* bind your texture here */
tes.startDrawingQuads();
/* draw your block here */
test.draw();
/* restore the default texture */
tes.startDrawingQuads();

 

But note that using a custom texture for rendering blocks is no longer the recommended way of doing things. The modern way is to provide each of your block images as a separate image file, and let MC stitch them into the main texture. This eliminates the need to switch textures while rendering blocks, simplifying your rendering code and improving graphics performance.

 

To see how it's done, take a look at the

registerIcons()

method of some of the vanilla blocks, and how RenderBlocks makes use of the

Icon

class.

Link to comment
Share on other sites

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.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Announcements



  • Recently Browsing

    • No registered users viewing this page.
  • Posts

    • Update your AMD/ATI drivers - get the drivers from their website - do not update via system  
    • As the title says i keep on crashing on forge 1.20.1 even without any mods downloaded, i have the latest drivers (nvidia) and vanilla minecraft works perfectly fine for me logs: https://pastebin.com/5UR01yG9
    • Hello everyone, I'm making this post to seek help for my modded block, It's a special block called FrozenBlock supposed to take the place of an old block, then after a set amount of ticks, it's supposed to revert its Block State, Entity, data... to the old block like this :  The problem I have is that the system breaks when handling multi blocks (I tried some fix but none of them worked) :  The bug I have identified is that the function "setOldBlockFields" in the item's "setFrozenBlock" function gets called once for the 1st block of multiblock getting frozen (as it should), but gets called a second time BEFORE creating the first FrozenBlock with the data of the 1st block, hence giving the same data to the two FrozenBlock :   Old Block Fields set BlockState : Block{minecraft:black_bed}[facing=east,occupied=false,part=head] BlockEntity : net.minecraft.world.level.block.entity.BedBlockEntity@73681674 BlockEntityData : id:"minecraft:bed",x:3,y:-60,z:-6} Old Block Fields set BlockState : Block{minecraft:black_bed}[facing=east,occupied=false,part=foot] BlockEntity : net.minecraft.world.level.block.entity.BedBlockEntity@6d1aa3da BlockEntityData : {id:"minecraft:bed",x:2,y:-60,z:-6} Frozen Block Entity set BlockState : Block{minecraft:black_bed}[facing=east,occupied=false,part=foot] BlockPos{x=3, y=-60, z=-6} BlockEntity : net.minecraft.world.level.block.entity.BedBlockEntity@6d1aa3da BlockEntityData : {id:"minecraft:bed",x:2,y:-60,z:-6} Frozen Block Entity set BlockState : Block{minecraft:black_bed}[facing=east,occupied=false,part=foot] BlockPos{x=2, y=-60, z=-6} BlockEntity : net.minecraft.world.level.block.entity.BedBlockEntity@6d1aa3da BlockEntityData : {id:"minecraft:bed",x:2,y:-60,z:-6} here is the code inside my custom "freeze" item :    @Override     public @NotNull InteractionResult useOn(@NotNull UseOnContext pContext) {         if (!pContext.getLevel().isClientSide() && pContext.getHand() == InteractionHand.MAIN_HAND) {             BlockPos blockPos = pContext.getClickedPos();             BlockPos secondBlockPos = getMultiblockPos(blockPos, pContext.getLevel().getBlockState(blockPos));             if (secondBlockPos != null) {                 createFrozenBlock(pContext, secondBlockPos);             }             createFrozenBlock(pContext, blockPos);             return InteractionResult.SUCCESS;         }         return super.useOn(pContext);     }     public static void createFrozenBlock(UseOnContext pContext, BlockPos blockPos) {         BlockState oldState = pContext.getLevel().getBlockState(blockPos);         BlockEntity oldBlockEntity = oldState.hasBlockEntity() ? pContext.getLevel().getBlockEntity(blockPos) : null;         CompoundTag oldBlockEntityData = oldState.hasBlockEntity() ? oldBlockEntity.serializeNBT() : null;         if (oldBlockEntity != null) {             pContext.getLevel().removeBlockEntity(blockPos);         }         BlockState FrozenBlock = setFrozenBlock(oldState, oldBlockEntity, oldBlockEntityData);         pContext.getLevel().setBlockAndUpdate(blockPos, FrozenBlock);     }     public static BlockState setFrozenBlock(BlockState blockState, @Nullable BlockEntity blockEntity, @Nullable CompoundTag blockEntityData) {         BlockState FrozenBlock = BlockRegister.FROZEN_BLOCK.get().defaultBlockState();         ((FrozenBlock) FrozenBlock.getBlock()).setOldBlockFields(blockState, blockEntity, blockEntityData);         return FrozenBlock;     }  
    • It is an issue with quark - update it to this build: https://www.curseforge.com/minecraft/mc-mods/quark/files/3642325
  • Topics

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.