Jump to content

Need help rendering custom pipe


fr0st

Recommended Posts

Hi everyone. What im looking for is how to make pipes. Ok, so let's talk about this. I actually know how to make them, but there are many ways to do so and I can't find the best / don't want to. What I'm trying to do is make a gas pipe, that, obviously, will have its boundingBox and shape changed, based on adjacent connections. And it's fine. My problem is... what's the best way to do it? So, first of all i store 6 booleans in a boolean array (For each direction) and return true if one block is connected on that side. And that's the tileentity. But now, in the render class... what should I use? I can use a techne model but i couldn't choose which parts to render with renderPart(), because that's for obj files i think. And i can't model on Blender so that's excluded. Last thing i could do? Tessellator? Oh, im not good at that.

 

So what im actually looking for is some codes, basic ones to start. I have to say that i have some kind of modding experience, but rendering is the most annoying yet rewarding thing i ever met. It's hard to explain what i actually need, i don't want to look to other mod's source, but I'd like to have some basic render codes. Something to help me.

 

Dammit im bad at writing.

I try my best, so apologies if I said something obviously stupid!

Link to comment
Share on other sites

Alright, so im gonna have to look at source codes then. My main problem is still the network part. I don't get how to add piping / wiring to my custom network, nor how to create it. This is some sort of black magic to me, i've been creating machines only but i've never dealt with pipes and wires.. any suggestions for this problem? :(

 

I could create a wiring system by scratch but i don't know how to make them transmit data / fluids / stuff. Rendering the connections is the easiest thing, even if it's still a bit tricky to do.

I try my best, so apologies if I said something obviously stupid!

Link to comment
Share on other sites

I already looked up your entire mod source on github to see networking. Usually i learn more from source codes than tutorials, but this time i'd love to have my mind cleared, like... how do these work? Because i can't understand them, and i don't wanna copy. That's agaisnt myself, i won't copy. I need to understand how to make one from scratch, and i know i'm asking very much... but my mod needs it.

 

Oh, i forgot to thank you for bothering helping me and trying to decrypt my crap english. Thanks again c:

I try my best, so apologies if I said something obviously stupid!

Link to comment
Share on other sites

Huh, I guess I am not alone with my obsession with gas and gas pipes.

Rendering pipes is all about detecting which blocks adjacent to your pipe block are also pipes. Then it's just a matter or rendering it based on this data.

Using a tessellator is the most efficient approach, but I guess it can be challenging to work with.

 

Here's an example of how my pipes look:

wiXVvbO.jpg

 

The pipes in my mod use this texture:

2sBtIhx.png

The upper left corner is the texture of the actual pipe.

The upper right corner is the texture of the pipe support (you can see them connected to the ground in the screenshot).

The lower left corner is the texture used for the end of a pipe. You can't see it in the screenshot, but you can understand where it is.

 

The rendering of the pipes isn't actually that advanced. The rendering is very similar to that of a normal block, except each side is indented by 6/16 of a block.

I use the information of which sides to connect to the pipe to decide the corners of each indented face.

I also apply faces for the ends of pipes where it is necessary.

 

Here is the code used to render that:

public class RenderBlockGasPipe implements ISimpleBlockRenderingHandler
{
private IIcon icon;
private double uIconTranslate = 0.0F;
private double vIconTranslate = 0.0F;

private static final int[] xDirection = new int[]{
	0, 0, 1, -1, 0, 0
};
private static final int[] yDirection = new int[]{
	-1, 1, 0, 0, 0, 0
};
private static final int[] zDirection = new int[]{
	0, 0, 0, 0, 1, -1
};

@Override
public void renderInventoryBlock(Block block, int metadata, int modelID,RenderBlocks renderer)
{
	Tessellator tessellator = Tessellator.instance;
	icon = renderer.hasOverrideBlockTexture() ? renderer.overrideBlockTexture : renderer.getBlockIcon(block);

        GL11.glRotatef(90.0F, 0.0F, 1.0F, 0.0F);
        GL11.glScalef(1.4F, 1.4F, 1.4F);
        GL11.glTranslatef(-0.5F, -0.5F, -0.5F);
        GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
        GL11.glEnable(GL11.GL_ALPHA_TEST);
        
	double d1 = 6.0F / 16.0F;
	double d2 = 10.0F / 16.0F;

        tessellator.startDrawingQuads();
    	
    	uIconTranslate = 0.0D;
    	vIconTranslate = 0.0D;
        tessellator.setColorOpaque_F(1.0F, 1.0F, 1.0F);
        tessellator.setNormal(0.0F, 1.0F, 0.0F);
	tessellator.addVertexWithUV(0.0D, d2, 1.0D, u(0.0D), v(1.0D));
	tessellator.addVertexWithUV(1.0D, d2, 1.0D, u(1.0D), v(1.0D));
	tessellator.addVertexWithUV(1.0D, d2, 0.0D, u(1.0D), v(0.0D));
	tessellator.addVertexWithUV(0.0D, d2, 0.0D, u(0.0D), v(0.0D));

        //tessellator.setColorOpaque_F(0.6F, 0.6F, 0.6F);
        tessellator.setNormal(0.0F, -1.0F, 0.0F);
	tessellator.addVertexWithUV(0.0D, d1, 0.0D, u(0.0D), v(0.0D));
	tessellator.addVertexWithUV(1.0D, d1, 0.0D, u(1.0D), v(0.0D));
	tessellator.addVertexWithUV(1.0D, d1, 1.0D, u(1.0D), v(1.0D));
	tessellator.addVertexWithUV(0.0D, d1, 1.0D, u(0.0D), v(1.0D));

	//tessellator.setColorOpaque_F(0.8F, 0.8F, 0.8F);
        tessellator.setNormal(-1.0F, 0.0F, 0.0F);
	tessellator.addVertexWithUV(d1, 0.0D, 1.0D, u(0.0D), v(1.0D));
	tessellator.addVertexWithUV(d1, 1.0D, 1.0D, u(1.0D), v(1.0D));
	tessellator.addVertexWithUV(d1, 1.0D, 0.0D, u(1.0D), v(0.0D));
	tessellator.addVertexWithUV(d1, 0.0D, 0.0D, u(0.0D), v(0.0D));

        tessellator.setNormal(1.0F, 0.0F, 0.0F);
	tessellator.addVertexWithUV(d2, 0.0D, 0.0D, u(0.0D), v(0.0D));
	tessellator.addVertexWithUV(d2, 1.0D, 0.0D, u(1.0D), v(0.0D));
	tessellator.addVertexWithUV(d2, 1.0D, 1.0D, u(1.0D), v(1.0D));
	tessellator.addVertexWithUV(d2, 0.0D, 1.0D, u(0.0D), v(1.0D));

        tessellator.setNormal(0.0F, 0.0F, -1.0F);
	tessellator.addVertexWithUV(0.0D, 1.0D, d1, u(0.0D), v(1.0D));
	tessellator.addVertexWithUV(1.0D, 1.0D, d1, u(1.0D), v(1.0D));
	tessellator.addVertexWithUV(1.0D, 0.0D, d1, u(1.0D), v(0.0D));
	tessellator.addVertexWithUV(0.0D, 0.0D, d1, u(0.0D), v(0.0D));

        tessellator.setNormal(0.0F, 0.0F, 1.0F);
	tessellator.addVertexWithUV(0.0D, 0.0D, d2, u(0.0D), v(0.0D));
	tessellator.addVertexWithUV(1.0D, 0.0D, d2, u(1.0D), v(0.0D));
	tessellator.addVertexWithUV(1.0D, 1.0D, d2, u(1.0D), v(1.0D));
	tessellator.addVertexWithUV(0.0D, 1.0D, d2, u(0.0D), v(1.0D));

	vIconTranslate = 8.0D;
    	
	//tessellator.setColorOpaque_F(1.0F, 1.0F, 1.0F);
        tessellator.setNormal(0.0F, 1.0F, 0.0F);
	tessellator.addVertexWithUV(0.0D, 1.0D, 1.0D, u(0.0D), v(1.0D));
	tessellator.addVertexWithUV(1.0D, 1.0D, 1.0D, u(1.0D), v(1.0D));
	tessellator.addVertexWithUV(1.0D, 1.0D, 0.0D, u(1.0D), v(0.0D));
	tessellator.addVertexWithUV(0.0D, 1.0D, 0.0D, u(0.0D), v(0.0D));

	//tessellator.setColorOpaque_F(0.6F, 0.6F, 0.6F);
        tessellator.setNormal(0.0F, -1.0F, 0.0F);
	tessellator.addVertexWithUV(0.0D, 0.0D, 0.0D, u(0.0D), v(0.0D));
	tessellator.addVertexWithUV(1.0D, 0.0D, 0.0D, u(1.0D), v(0.0D));
	tessellator.addVertexWithUV(1.0D, 0.0D, 1.0D, u(1.0D), v(1.0D));
	tessellator.addVertexWithUV(0.0D, 0.0D, 1.0D, u(0.0D), v(1.0D));

	//tessellator.setColorOpaque_F(0.8F, 0.8F, 0.8F);
        tessellator.setNormal(-1.0F, 0.0F, 0.0F);
	tessellator.addVertexWithUV(0.0D, 0.0D, 1.0D, u(0.0D), v(1.0D));
	tessellator.addVertexWithUV(0.0D, 1.0D, 1.0D, u(1.0D), v(1.0D));
	tessellator.addVertexWithUV(0.0D, 1.0D, 0.0D, u(1.0D), v(0.0D));
	tessellator.addVertexWithUV(0.0D, 0.0D, 0.0D, u(0.0D), v(0.0D));

        tessellator.setNormal(1.0F, 0.0F, 0.0F);
	tessellator.addVertexWithUV(1.0D, 0.0D, 0.0D, u(0.0D), v(0.0D));
	tessellator.addVertexWithUV(1.0D, 1.0D, 0.0D, u(1.0D), v(0.0D));
	tessellator.addVertexWithUV(1.0D, 1.0D, 1.0D, u(1.0D), v(1.0D));
	tessellator.addVertexWithUV(1.0D, 0.0D, 1.0D, u(0.0D), v(1.0D));

        tessellator.setNormal(0.0F, 0.0F, -1.0F);
	tessellator.addVertexWithUV(0.0D, 1.0D, 0.0D, u(0.0D), v(1.0D));
	tessellator.addVertexWithUV(1.0D, 1.0D, 0.0D, u(1.0D), v(1.0D));
	tessellator.addVertexWithUV(1.0D, 0.0D, 0.0D, u(1.0D), v(0.0D));
	tessellator.addVertexWithUV(0.0D, 0.0D, 0.0D, u(0.0D), v(0.0D));

        tessellator.setNormal(0.0F, 0.0F, 1.0F);
	tessellator.addVertexWithUV(0.0D, 0.0D, 1.0D, u(0.0D), v(0.0D));
	tessellator.addVertexWithUV(1.0D, 0.0D, 1.0D, u(1.0D), v(0.0D));
	tessellator.addVertexWithUV(1.0D, 1.0D, 1.0D, u(1.0D), v(1.0D));
	tessellator.addVertexWithUV(0.0D, 1.0D, 1.0D, u(0.0D), v(1.0D));

        tessellator.draw();

        GL11.glTranslatef(0.5F, 0.5F, 0.5F);

        GL11.glDisable(GL11.GL_ALPHA_TEST);
}

@Override
public boolean renderWorldBlock(IBlockAccess blockAccess, int x, int y, int z, Block bblock, int modelId, RenderBlocks renderer)
{
	BlockGasPipe block = (BlockGasPipe)bblock;

        int brightness = block.getMixedBrightnessForBlock(blockAccess, x, y, z);
	icon = renderer.hasOverrideBlockTexture() ? renderer.overrideBlockTexture : renderer.getBlockIcon(block);
	Tessellator tessellator = Tessellator.instance;

	final boolean[] sidePipe = new boolean[6];
	final boolean[] sideOpaque = new boolean[6];

	for(int i = 0; i < 6; i++)
	{
		int x1 = x + xDirection[i];
		int y1 = y + yDirection[i];
		int z1 = z + zDirection[i];

		Block directionBlock = blockAccess.getBlock(x1, y1, z1);
		if(directionBlock != Blocks.air)
		{
			sidePipe[i] = directionBlock instanceof BlockGasPipe || IGasReceptor.class.isAssignableFrom(directionBlock.getClass());
			sideOpaque[i] = directionBlock.isOpaqueCube() & !sidePipe[i];
		}
	}

	double d1 = 6.0F / 16.0F;
	double d2 = 10.0F / 16.0F;
	double d3 = 4.5F / 16.0F;
	double d4 = 11.5F / 16.0F;

	boolean collectionAll = sidePipe[0] || sidePipe[1] || sidePipe[2] || sidePipe[3] || sidePipe[4] || sidePipe[5];
	boolean collectionY = sidePipe[2] || sidePipe[3] || sidePipe[4] || sidePipe[5];
	boolean collectionX = sidePipe[0] || sidePipe[1] || sidePipe[4] || sidePipe[5];
	boolean collectionZ = sidePipe[0] || sidePipe[1] || sidePipe[2] || sidePipe[3];

	double minX = (sidePipe[3] | !collectionX) & collectionAll ? 0.0F : d1;
	double maxX = (sidePipe[2] | !collectionX) & collectionAll ? 1.0F : d2;
	double minY = (sidePipe[0] | !collectionY) & collectionAll ? 0.0F : d1;
	double maxY = (sidePipe[1] | !collectionY) & collectionAll ? 1.0F : d2;
	double minZ = (sidePipe[5] | !collectionZ) & collectionAll ? 0.0F : d1;
	double maxZ = (sidePipe[4] | !collectionZ) & collectionAll ? 1.0F : d2;
	/*double minX = sidePipe[2] ? 0.0F : 0.0F;		
	double maxX = sidePipe[2] ? 1.0F : 1.0F;
	double minY = sidePipe[0] ? 0.0F : 0.0F;		
	double maxY = sidePipe[1] ? 1.0F : 1.0F;
	double minZ = sidePipe[4] ? 0.0F : 0.0F;		
	double maxZ = sidePipe[5] ? 1.0F : 1.0F;*/

    	tessellator.setBrightness(brightness);
    	tessellator.addTranslation((float)x, (float)y, (float)z);
    	
    	uIconTranslate = 0.0D;
    	vIconTranslate = 0.0D;
    	
    	tessellator.setColorOpaque_F(1.0F, 1.0F, 1.0F);
    	
    	if(collectionY | !collectionAll)
    	{
    		tessellator.setColorOpaque_F(0.6F, 0.6F, 0.6F);
    		tessellator.setNormal(0.0F, -1.0F, 0.0F);
    		tessellator.addVertexWithUV(minX, d1, minZ, u(minX), v(minZ));
    		tessellator.addVertexWithUV(maxX, d1, minZ, u(maxX), v(minZ));
    		tessellator.addVertexWithUV(maxX, d1, maxZ, u(maxX), v(maxZ));
    		tessellator.addVertexWithUV(minX, d1, maxZ, u(minX), v(maxZ));

    		tessellator.setColorOpaque_F(1.0F, 1.0F, 1.0F);
    		tessellator.setNormal(0.0F, 1.0F, 0.0F);
    		tessellator.addVertexWithUV(minX, d2, maxZ, u(minX), v(maxZ));
    		tessellator.addVertexWithUV(maxX, d2, maxZ, u(maxX), v(maxZ));
    		tessellator.addVertexWithUV(maxX, d2, minZ, u(maxX), v(minZ));
    		tessellator.addVertexWithUV(minX, d2, minZ, u(minX), v(minZ));
    	}

    	if(collectionX | !collectionAll)
    	{
    		tessellator.setColorOpaque_F(0.8F, 0.8F, 0.8F);
    		tessellator.setNormal(-1.0F, 0.0F, 0.0F);
    		tessellator.addVertexWithUV(d1, minY, maxZ, u(minY), v(maxZ));
    		tessellator.addVertexWithUV(d1, maxY, maxZ, u(maxY), v(maxZ));
    		tessellator.addVertexWithUV(d1, maxY, minZ, u(maxY), v(minZ));
    		tessellator.addVertexWithUV(d1, minY, minZ, u(minY), v(minZ));

    		tessellator.setNormal(1.0F, 0.0F, 0.0F);
    		tessellator.addVertexWithUV(d2, minY, minZ, u(minY), v(minZ));
    		tessellator.addVertexWithUV(d2, maxY, minZ, u(maxY), v(minZ));
    		tessellator.addVertexWithUV(d2, maxY, maxZ, u(maxY), v(maxZ));
    		tessellator.addVertexWithUV(d2, minY, maxZ, u(minY), v(maxZ));
    	}
    	
    	if(collectionZ | !collectionAll)
    	{
    		tessellator.setColorOpaque_F(0.8F, 0.8F, 0.8F);
    		tessellator.setNormal(0.0F, 0.0F, -1.0F);
    		tessellator.addVertexWithUV(minX, maxY, d1, u(minX), v(maxY));
    		tessellator.addVertexWithUV(maxX, maxY, d1, u(maxX), v(maxY));
    		tessellator.addVertexWithUV(maxX, minY, d1, u(maxX), v(minY));
    		tessellator.addVertexWithUV(minX, minY, d1, u(minX), v(minY));

    		tessellator.setNormal(0.0F, 0.0F, 1.0F);
    		tessellator.addVertexWithUV(minX, minY, d2, u(minX), v(minY));
    		tessellator.addVertexWithUV(maxX, minY, d2, u(maxX), v(minY));
    		tessellator.addVertexWithUV(maxX, maxY, d2, u(maxX), v(maxY));
    		tessellator.addVertexWithUV(minX, maxY, d2, u(minX), v(maxY));
    	}
    	
    	if(collectionAll)
    	{
    		vIconTranslate = 8.0D;
        	
    		if(maxY == 1.0D)
    		{
        		tessellator.setColorOpaque_F(1.0F, 1.0F, 1.0F);
        		tessellator.setNormal(0.0F, 1.0F, 0.0F);
    			tessellator.addVertexWithUV(minX, maxY, maxZ, u(minX), v(maxZ));
        		tessellator.addVertexWithUV(maxX, maxY, maxZ, u(maxX), v(maxZ));
        		tessellator.addVertexWithUV(maxX, maxY, minZ, u(maxX), v(minZ));
        		tessellator.addVertexWithUV(minX, maxY, minZ, u(minX), v(minZ));
    		}
    		
    		if(minY == 0.0D)
    		{
        		tessellator.setColorOpaque_F(0.6F, 0.6F, 0.6F);
        		tessellator.setNormal(0.0F, -1.0F, 0.0F);
    			tessellator.addVertexWithUV(minX, minY, minZ, u(minX), v(minZ));
        		tessellator.addVertexWithUV(maxX, minY, minZ, u(maxX), v(minZ));
        		tessellator.addVertexWithUV(maxX, minY, maxZ, u(maxX), v(maxZ));
        		tessellator.addVertexWithUV(minX, minY, maxZ, u(minX), v(maxZ));
    		}
    	
    		tessellator.setColorOpaque_F(0.8F, 0.8F, 0.8F);
    		if(minX == 0.0D)
    		{
        		tessellator.setNormal(-1.0F, 0.0F, 0.0F);
    			tessellator.addVertexWithUV(minX, minY, maxZ, u(minY), v(maxZ));
        		tessellator.addVertexWithUV(minX, maxY, maxZ, u(maxY), v(maxZ));
        		tessellator.addVertexWithUV(minX, maxY, minZ, u(maxY), v(minZ));
        		tessellator.addVertexWithUV(minX, minY, minZ, u(minY), v(minZ));
    		}
    		
    		if(maxX == 1.0D)
    		{
        		tessellator.setNormal(1.0F, 0.0F, 0.0F);
    			tessellator.addVertexWithUV(maxX, minY, minZ, u(minY), v(minZ));
        		tessellator.addVertexWithUV(maxX, maxY, minZ, u(maxY), v(minZ));
        		tessellator.addVertexWithUV(maxX, maxY, maxZ, u(maxY), v(maxZ));
        		tessellator.addVertexWithUV(maxX, minY, maxZ, u(minY), v(maxZ));
    		}
    	
    		tessellator.setColorOpaque_F(0.8F, 0.8F, 0.8F);
    		if(minZ == 0.0D)
    		{
        		tessellator.setNormal(0.0F, 0.0F, -1.0F);
    			tessellator.addVertexWithUV(minX, maxY, minZ, u(minX), v(maxY));
        		tessellator.addVertexWithUV(maxX, maxY, minZ, u(maxX), v(maxY));
        		tessellator.addVertexWithUV(maxX, minY, minZ, u(maxX), v(minY));
        		tessellator.addVertexWithUV(minX, minY, minZ, u(minX), v(minY));
    		}
    		
    		if(maxZ == 1.0D)
    		{
        		tessellator.setNormal(0.0F, 0.0F, 1.0F);
    			tessellator.addVertexWithUV(minX, minY, maxZ, u(minX), v(minY));
        		tessellator.addVertexWithUV(maxX, minY, maxZ, u(maxX), v(minY));
        		tessellator.addVertexWithUV(maxX, maxY, maxZ, u(maxX), v(maxY));
        		tessellator.addVertexWithUV(minX, maxY, maxZ, u(minX), v(maxY));
    		}
    		
    		if(((x ^ y ^ z) & 1) > 0)
    		{
    			uIconTranslate = 8.0D;
            	vIconTranslate = 0.0D;
            	
            	minX = sideOpaque[3] ? 0.0F : d1;
        		maxX = sideOpaque[2] ? 1.0F : d2;
        		minY = sideOpaque[0] ? 0.0F : d1;
        		maxY = sideOpaque[1] ? 1.0F : d2;
        		minZ = sideOpaque[5] ? 0.0F : d1;
        		maxZ = sideOpaque[4] ? 1.0F : d2;
        		
        		if(sidePipe[0] | !collectionY)
            	{
            		tessellator.setColorOpaque_F(0.6F, 0.6F, 0.6F);
            		tessellator.setNormal(0.0F, -1.0F, 0.0F);
            		tessellator.addVertexWithUV(minX, d3, minZ, u(minX), v(minZ));
            		tessellator.addVertexWithUV(maxX, d3, minZ, u(maxX), v(minZ));
            		tessellator.addVertexWithUV(maxX, d3, maxZ, u(maxX), v(maxZ));
            		tessellator.addVertexWithUV(minX, d3, maxZ, u(minX), v(maxZ));

            		tessellator.setColorOpaque_F(1.0F, 1.0F, 1.0F);
            		tessellator.setNormal(0.0F, 1.0F, 0.0F);
            		tessellator.addVertexWithUV(minX, d3, maxZ, u(minX), v(maxZ));
            		tessellator.addVertexWithUV(maxX, d3, maxZ, u(maxX), v(maxZ));
            		tessellator.addVertexWithUV(maxX, d3, minZ, u(maxX), v(minZ));
            		tessellator.addVertexWithUV(minX, d3, minZ, u(minX), v(minZ));
            	}
        		
        		if(sidePipe[1] | !collectionY)
            	{
            		tessellator.setColorOpaque_F(0.6F, 0.6F, 0.6F);
            		tessellator.setNormal(0.0F, -1.0F, 0.0F);
            		tessellator.addVertexWithUV(minX, d4, minZ, u(minX), v(minZ));
            		tessellator.addVertexWithUV(maxX, d4, minZ, u(maxX), v(minZ));
            		tessellator.addVertexWithUV(maxX, d4, maxZ, u(maxX), v(maxZ));
            		tessellator.addVertexWithUV(minX, d4, maxZ, u(minX), v(maxZ));

            		tessellator.setColorOpaque_F(1.0F, 1.0F, 1.0F);
            		tessellator.setNormal(0.0F, 1.0F, 0.0F);
            		tessellator.addVertexWithUV(minX, d4, maxZ, u(minX), v(maxZ));
            		tessellator.addVertexWithUV(maxX, d4, maxZ, u(maxX), v(maxZ));
            		tessellator.addVertexWithUV(maxX, d4, minZ, u(maxX), v(minZ));
            		tessellator.addVertexWithUV(minX, d4, minZ, u(minX), v(minZ));
            	}
        		
        		if(sidePipe[2] | !collectionX)
            	{
            		tessellator.setColorOpaque_F(0.8F, 0.8F, 0.8F);
            		tessellator.setNormal(-1.0F, 0.0F, 0.0F);
            		tessellator.addVertexWithUV(d4, minY, maxZ, u(minY), v(maxZ));
            		tessellator.addVertexWithUV(d4, maxY, maxZ, u(maxY), v(maxZ));
            		tessellator.addVertexWithUV(d4, maxY, minZ, u(maxY), v(minZ));
            		tessellator.addVertexWithUV(d4, minY, minZ, u(minY), v(minZ));

            		tessellator.setNormal(1.0F, 0.0F, 0.0F);
            		tessellator.addVertexWithUV(d4, minY, minZ, u(minY), v(minZ));
            		tessellator.addVertexWithUV(d4, maxY, minZ, u(maxY), v(minZ));
            		tessellator.addVertexWithUV(d4, maxY, maxZ, u(maxY), v(maxZ));
            		tessellator.addVertexWithUV(d4, minY, maxZ, u(minY), v(maxZ));
            	}

            	if(sidePipe[3] | !collectionX)
            	{
            		tessellator.setColorOpaque_F(0.8F, 0.8F, 0.8F);
            		tessellator.setNormal(-1.0F, 0.0F, 0.0F);
            		tessellator.addVertexWithUV(d3, minY, maxZ, u(minY), v(maxZ));
            		tessellator.addVertexWithUV(d3, maxY, maxZ, u(maxY), v(maxZ));
            		tessellator.addVertexWithUV(d3, maxY, minZ, u(maxY), v(minZ));
            		tessellator.addVertexWithUV(d3, minY, minZ, u(minY), v(minZ));

            		tessellator.setNormal(1.0F, 0.0F, 0.0F);
            		tessellator.addVertexWithUV(d3, minY, minZ, u(minY), v(minZ));
            		tessellator.addVertexWithUV(d3, maxY, minZ, u(maxY), v(minZ));
            		tessellator.addVertexWithUV(d3, maxY, maxZ, u(maxY), v(maxZ));
            		tessellator.addVertexWithUV(d3, minY, maxZ, u(minY), v(maxZ));
            	}
            	
            	if(sidePipe[4] | !collectionZ)
            	{
            		tessellator.setColorOpaque_F(0.8F, 0.8F, 0.8F);
            		tessellator.setNormal(0.0F, 0.0F, -1.0F);
            		tessellator.addVertexWithUV(minX, maxY, d4, u(minX), v(maxY));
            		tessellator.addVertexWithUV(maxX, maxY, d4, u(maxX), v(maxY));
            		tessellator.addVertexWithUV(maxX, minY, d4, u(maxX), v(minY));
            		tessellator.addVertexWithUV(minX, minY, d4, u(minX), v(minY));

            		tessellator.setNormal(0.0F, 0.0F, 1.0F);
            		tessellator.addVertexWithUV(minX, minY, d4, u(minX), v(minY));
            		tessellator.addVertexWithUV(maxX, minY, d4, u(maxX), v(minY));
            		tessellator.addVertexWithUV(maxX, maxY, d4, u(maxX), v(maxY));
            		tessellator.addVertexWithUV(minX, maxY, d4, u(minX), v(maxY));
            	}
            	
            	if(sidePipe[5] | !collectionZ)
            	{
            		tessellator.setColorOpaque_F(0.8F, 0.8F, 0.8F);
            		tessellator.setNormal(0.0F, 0.0F, -1.0F);
            		tessellator.addVertexWithUV(minX, maxY, d3, u(minX), v(maxY));
            		tessellator.addVertexWithUV(maxX, maxY, d3, u(maxX), v(maxY));
            		tessellator.addVertexWithUV(maxX, minY, d3, u(maxX), v(minY));
            		tessellator.addVertexWithUV(minX, minY, d3, u(minX), v(minY));

            		tessellator.setNormal(0.0F, 0.0F, 1.0F);
            		tessellator.addVertexWithUV(minX, minY, d3, u(minX), v(minY));
            		tessellator.addVertexWithUV(maxX, minY, d3, u(maxX), v(minY));
            		tessellator.addVertexWithUV(maxX, maxY, d3, u(maxX), v(maxY));
            		tessellator.addVertexWithUV(minX, maxY, d3, u(minX), v(maxY));
            	}
    		}
    	}
    	
    	tessellator.addTranslation((float)-x, (float)-y, (float)-z);

	return true;
}

private double u(double u)
{
	return icon.getInterpolatedU(u * 8.0D + uIconTranslate);
}

private double v(double v)
{
	return icon.getInterpolatedV(v * 8.0D + vIconTranslate);
}

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

@Override
public int getRenderId()
{
	return GasesFramework.renderBlockGasPipeID;
}
}

 

You could also consider adapting your mod to work with my Gases Framework. It would save you the work of creating gas pipes, and has some other features. The problem is that it probably brings in a few too many unnecessary features for your mod.

Link to comment
Share on other sites

Gotta be honest with you Glenn, yesterday this gas piping system idead was born into my head. I remembered about your mod (Already knew it) and checked for updates. Yes! You had implemented those sexy pipes. So i looked at your source code and to test it out i copied it into my project. (Then deleted it obv, i dont wanna copy) It worked very nicely but i didnt like one thing: pipes seemed like they were connecting to every block when one is next to another one in a line... let me explain...

Where you actually see the pipe hole, the end, its a bit too far. I don't like that it's that long and reaches the end of the block, i wanted it to be half of it... dammit i cant explain... so let me take a screenshot

 

Also sorry for the sad biome in my screen, but it's part of the mod, and i need a gas piping system to extract gases from volcanos :D

 

http://i.imgur.com/iHyJH44.png

Sorry if its just a link but im busy now and i have to go as soon as possible.

 

Oh btw i have your GasesFramework in my workspace, will use it :)

 

Last thing is that i can't use Tessellator, because i woud know how to. SO thats why i abandoned the idea of using your pipe render thing and to make my own.

I try my best, so apologies if I said something obviously stupid!

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

    • I'm trying to play Minecraft 1.20.4 on Forge using mods, but when Minecraft loads, it says there are non-Forge mods, whereas they are Forge mods. This problem is happening in Forge version 1.20.4 - 49.0.46. I am only able to play with all mods in Forge version 1.20.4 - 49.0.43.
    • I had the same issue. The only thing I could do is to remove parchment mappings entirely from config files and replace config files from the MDK: 1. replace build.gradle from MDK 2. restore official mapping in build.properties 3. replace src\main\resources\META-INF\mods.toml from MDK sample.
    • ---- Minecraft Crash Report ---- I sent a error report i just cant understand it, the game as been running fine intill today i loaded it https://pastebin.com/gWVFh4Fe   WARNING: coremods are present:   ForgelinPlugin (Forgelin-1.8.3.jar)   PatchingFixRtmCorePlugin (fixRtm-2.0.28.jar)   IELoadingPlugin (ImmersiveEngineering-core-0.12-98.jar)   FixRtmCorePlugin (fixRtm-2.0.28.jar)   JarInJarLoaderCoreMod (fixRtm-2.0.28.jar)   BetterFoliageLoader (BetterFoliage-MC1.12-2.3.2.jar)   SecurityCraftLoadingPlugin ([1.12.2] SecurityCraft v1.9.9.jar)   OpenModsCorePlugin (OpenModsLib-1.12.2-0.12.2.jar)   MalisisCorePlugin (MalisisCore-1.12.2.jar)   ObfuscatePlugin (obfuscate-0.4.2-1.12.2.jar)   CTMCorePlugin (CTM-MC1.12.2-1.0.2.31.jar)   HookingFixRtmCorePlugin (fixRtm-2.0.28.jar) Contact their authors BEFORE contacting forge // Hey, that tickles! Hehehe! Time: 4/19/24 4:05 PM Description: Updating screen events java.lang.RuntimeException: Failed to check session lock, aborting     at net.minecraft.world.storage.SaveHandler.func_75766_h(SaveHandler.java:76)     at net.minecraft.world.storage.SaveHandler.<init>(SaveHandler.java:54)     at net.minecraft.world.chunk.storage.AnvilSaveHandler.<init>(AnvilSaveHandler.java:18)     at net.minecraft.world.chunk.storage.AnvilSaveConverter.func_75804_a(SourceFile:84)     at net.minecraft.client.Minecraft.func_71371_a(Minecraft.java:2346)     at net.minecraftforge.fml.client.FMLClientHandler.tryLoadExistingWorld(FMLClientHandler.java:734)     at net.minecraft.client.gui.GuiListWorldSelectionEntry.func_186777_e(GuiListWorldSelectionEntry.java:249)     at net.minecraft.client.gui.GuiListWorldSelectionEntry.func_186774_a(GuiListWorldSelectionEntry.java:199)     at net.minecraft.client.gui.GuiListWorldSelectionEntry.func_148278_a(GuiListWorldSelectionEntry.java:163)     at net.minecraft.client.gui.GuiListExtended.func_148179_a(SourceFile:41)     at net.minecraft.client.gui.GuiWorldSelection.func_73864_a(SourceFile:117)     at net.minecraft.client.gui.GuiScreen.func_146274_d(GuiScreen.java:533)     at net.minecraft.client.gui.GuiWorldSelection.func_146274_d(SourceFile:49)     at net.minecraft.client.gui.GuiScreen.func_146269_k(GuiScreen.java:501)     at net.minecraft.client.Minecraft.func_71407_l(Minecraft.java:1759)     at net.minecraft.client.Minecraft.func_71411_J(Minecraft.java:1098)     at net.minecraft.client.Minecraft.func_99999_d(Minecraft.java:398)     at net.minecraft.client.main.Main.main(SourceFile:123)     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)     at java.lang.reflect.Method.invoke(Method.java:497)     at net.minecraft.launchwrapper.Launch.launch(Launch.java:135)     at net.minecraft.launchwrapper.Launch.main(Launch.java:28) A detailed walkthrough of the error, its code path and all known details is as follows: --------------------------------------------------------------------------------------- -- Head -- Thread: Client thread Stacktrace:     at net.minecraft.world.storage.SaveHandler.func_75766_h(SaveHandler.java:76)     at net.minecraft.world.storage.SaveHandler.<init>(SaveHandler.java:54)     at net.minecraft.world.chunk.storage.AnvilSaveHandler.<init>(AnvilSaveHandler.java:18)     at net.minecraft.world.chunk.storage.AnvilSaveConverter.func_75804_a(SourceFile:84)     at net.minecraft.client.Minecraft.func_71371_a(Minecraft.java:2346)     at net.minecraftforge.fml.client.FMLClientHandler.tryLoadExistingWorld(FMLClientHandler.java:734)     at net.minecraft.client.gui.GuiListWorldSelectionEntry.func_186777_e(GuiListWorldSelectionEntry.java:249)     at net.minecraft.client.gui.GuiListWorldSelectionEntry.func_186774_a(GuiListWorldSelectionEntry.java:199)     at net.minecraft.client.gui.GuiListWorldSelectionEntry.func_148278_a(GuiListWorldSelectionEntry.java:163)     at net.minecraft.client.gui.GuiListExtended.func_148179_a(SourceFile:41)     at net.minecraft.client.gui.GuiWorldSelection.func_73864_a(SourceFile:117)     at net.minecraft.client.gui.GuiScreen.func_146274_d(GuiScreen.java:533)     at net.minecraft.client.gui.GuiWorldSelection.func_146274_d(SourceFile:49)     at net.minecraft.client.gui.GuiScreen.func_146269_k(GuiScreen.java:501) -- Affected screen -- Details:     Screen name: net.minecraft.client.gui.GuiWorldSelection Stacktrace:     at net.minecraft.client.Minecraft.func_71407_l(Minecraft.java:1759)     at net.minecraft.client.Minecraft.func_71411_J(Minecraft.java:1098)     at net.minecraft.client.Minecraft.func_99999_d(Minecraft.java:398)     at net.minecraft.client.main.Main.main(SourceFile:123)     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)     at java.lang.reflect.Method.invoke(Method.java:497)     at net.minecraft.launchwrapper.Launch.launch(Launch.java:135)     at net.minecraft.launchwrapper.Launch.main(Launch.java:28) -- System Details -- Details:     Minecraft Version: 1.12.2     Operating System: Windows 10 (amd64) version 10.0     Java Version: 1.8.0_51, Oracle Corporation     Java VM Version: Java HotSpot(TM) 64-Bit Server VM (mixed mode), Oracle Corporation     Memory: 5013709368 bytes (4781 MB) / 11274289152 bytes (10752 MB) up to 12884901888 bytes (12288 MB)     JVM Flags: 8 total; -XX:HeapDumpPath=MojangTricksIntelDriversForPerformance_javaw.exe_minecraft.exe.heapdump -Xmx12G -XX:+UnlockExperimentalVMOptions -XX:+UseG1GC -XX:G1NewSizePercent=20 -XX:G1ReservePercent=20 -XX:MaxGCPauseMillis=50 -XX:G1HeapRegionSize=32M     IntCache: cache: 0, tcache: 0, allocated: 0, tallocated: 0     FML: MCP 9.42 Powered by Forge 14.23.5.2859 Optifine OptiFine_1.12.2_HD_U_G5 99 mods loaded, 99 mods active     States: 'U' = Unloaded 'L' = Loaded 'C' = Constructed 'H' = Pre-initialized 'I' = Initialized 'J' = Post-initialized 'A' = Available 'D' = Disabled 'E' = Errored     | State  | ID                          | Version               | Source                                            | Signature                                |     |:------ |:--------------------------- |:--------------------- |:------------------------------------------------- |:---------------------------------------- |     | LCHIJA | minecraft                   | 1.12.2                | minecraft.jar                                     | None                                     |     | LCHIJA | mcp                         | 9.42                  | minecraft.jar                                     | None                                     |     | LCHIJA | FML                         | 8.0.99.99             | forge-1.12.2-14.23.5.2859.jar                     | e3c3d50c7c986df74c645c0ac54639741c90a557 |     | LCHIJA | forge                       | 14.23.5.2859          | forge-1.12.2-14.23.5.2859.jar                     | e3c3d50c7c986df74c645c0ac54639741c90a557 |     | LCHIJA | openmodscore                | 0.12.2                | minecraft.jar                                     | None                                     |     | LCHIJA | obfuscate                   | 0.4.2                 | minecraft.jar                                     | None                                     |     | LCHIJA | securitycraft               | v1.9.9                | [1.12.2] SecurityCraft v1.9.9.jar                 | None                                     |     | LCHIJA | mts                         | 22.14.2               | Immersive Vehicles-1.12.2-22.14.2.jar             | None                                     |     | LCHIJA | mtsaircooled                | 1.0.1                 | Air-Cooled Pack [MTS] 1.10.2-14.0.0-1.0.1.jar     | None                                     |     | LCHIJA | codechickenlib              | 3.2.3.358             | CodeChickenLib-1.12.2-3.2.3.358-universal.jar     | f1850c39b2516232a2108a7bd84d1cb5df93b261 |     | LCHIJA | ancientwarfare              | 1.12.2-2.7.0.1038     | ancientwarfare-1.12.2-2.7.0.1038.jar              | None                                     |     | LCHIJA | redstoneflux                | 2.1.1                 | RedstoneFlux-1.12-2.1.1.1-universal.jar           | None                                     |     | LCHIJA | ancientwarfareautomation    | 1.12.2-2.7.0.1038     | ancientwarfare-1.12.2-2.7.0.1038.jar              | None                                     |     | LCHIJA | ancientwarfarenpc           | 1.12.2-2.7.0.1038     | ancientwarfare-1.12.2-2.7.0.1038.jar              | None                                     |     | LCHIJA | ancientwarfarestructure     | 1.12.2-2.7.0.1038     | ancientwarfare-1.12.2-2.7.0.1038.jar              | None                                     |     | LCHIJA | ancientwarfarevehicle       | 1.12.2-2.7.0.1038     | ancientwarfare-1.12.2-2.7.0.1038.jar              | None                                     |     | LCHIJA | craftstudioapi              | 1.0.0                 | CraftStudio-1.0.0.93-mc1.12-alpha.jar             | None                                     |     | LCHIJA | animania                    | 2.0.3.28              | animania-1.12.2-base-2.0.3.28.jar                 | None                                     |     | LCHIJA | architecturecraft           | @VERSION@             | architecturecraft-1.12-3.108.jar                  | None                                     |     | LCHIJA | betteranimationscollection2 | 1.0.2                 | BetterAnimationsCollection2-v1.0.2-1.12.2.jar     | 12d137bcc36051a1c2c8ea7211cfc1da1c6e9dea |     | LCHIJA | forgelin                    | 1.8.3                 | Forgelin-1.8.3.jar                                | None                                     |     | LCHIJA | betterfoliage               | 2.3.1                 | BetterFoliage-MC1.12-2.3.2.jar                    | None                                     |     | LCHIJA | bibliocraft                 | 2.4.6                 | BiblioCraft[v2.4.6][MC1.12.2].jar                 | None                                     |     | LCHIJA | biomestaff                  | 1.0.0                 | BiomeStaff-1.12.2-1.0.0.jar                       | None                                     |     | LCHIJA | blockcraftery               | 1.12.2-1.3.1          | blockcraftery-1.12.2-1.3.1.jar                    | None                                     |     | LCHIJA | bookshelf                   | 2.3.590               | Bookshelf-1.12.2-2.3.590.jar                      | d476d1b22b218a10d845928d1665d45fce301b27 |     | LCHIJA | bookworm                    | 1.12.2-2.5.2.1        | Bookworm-Library-Mod-1.12.2.jar                   | None                                     |     | LCHIJA | brandonscore                | 2.4.20                | BrandonsCore-1.12.2-2.4.20.162-universal.jar      | None                                     |     | LCHIJA | bspkrscore                  | 8.0.0                 | BspkrsCore-1.12.2.jar                             | None                                     |     | LCHIJA | carpentersblocks            | 3.4.0-poc.6           | Carpenters-Blocks-v3.4.0-poc.6-MC-1.12.2.jar      | None                                     |     | LCHIJA | ctm                         | MC1.12.2-1.0.2.31     | CTM-MC1.12.2-1.0.2.31.jar                         | None                                     |     | LCHIJA | jei                         | 4.16.1.1012           | jei_1.12.2-4.16.1.1012.jar                        | None                                     |     | LCHIJA | chisel                      | MC1.12.2-1.0.2.45     | Chisel-Mod-1.12.2.jar                             | None                                     |     | LCHIJA | chiselsandbits              | 14.33                 | chiselsandbits-14.33.jar                          | None                                     |     | LCHIJA | customspawner               | 3.11.4                | CustomMobSpawner-3.11.5.jar                       | None                                     |     | LCHIJA | customsignposts             | 1.0                   | customsignposts-1.12.2-1.0.1.jar                  | None                                     |     | LCHIJA | ptrmodellib                 | 1.0.5                 | PTRLib-1.0.5.jar                                  | None                                     |     | LCHIJA | props                       | 2.6.3.7               | Decocraft-2.6.3.7_1.12.2.jar                      | None                                     |     | LCHIJA | mocreatures                 | 12.0.5                | DrZharks MoCreatures Mod-12.0.5.jar               | None                                     |     | LCHIJA | engineersdecor              | 1.1.5                 | engineersdecor-1.12.2-1.1.5.jar                   | ed58ed655893ced6280650866985abcae2bf7559 |     | LCHIJA | exoticbirds                 | 1.0                   | Exotic Birds 1.12.2-3.2.0.jar                     | None                                     |     | LCHIJA | unuparts                    | 6.5.0                 | UNU Parts Pack [MTS] 1.12.2-22.13.0-6.5.0.jar     | None                                     |     | LCHIJA | unuverse                    | 2.0.0                 | ExpandedUNUversePack[MTS]1.12.2-19.15.5-2.0.0.jar | None                                     |     | LCHIJA | fairylights                 | 2.1.10                | fairylights-2.2.0-1.12.2.jar                      | None                                     |     | LCHIJA | fcl                         | 1.12.82               | FCL-1.12.82c.jar                                  | None                                     |     | LCHIJA | net/fexcraft/lib/frl        | 1.2                   | FCL-1.12.82c.jar                                  | None                                     |     | LCHIJA | net/fexcraft/lib/tmt        | 1.15                  | FCL-1.12.82c.jar                                  | None                                     |     | LCHIJA | famm                        | 3.4.0                 | Fexs-Alphabet-and-More-Mod-Forge-1.12.2.jar       | None                                     |     | LCHIJA | forgemultipartcbe           | 2.6.2.83              | ForgeMultipart-1.12.2-2.6.2.83-universal.jar      | f1850c39b2516232a2108a7bd84d1cb5df93b261 |     | LCHIJA | microblockcbe               | 2.6.2.83              | ForgeMultipart-1.12.2-2.6.2.83-universal.jar      | None                                     |     | LCHIJA | minecraftmultipartcbe       | 2.6.2.83              | ForgeMultipart-1.12.2-2.6.2.83-universal.jar      | None                                     |     | LCHIJA | funkylocomotion             | 1.0                   | funky-locomotion-1.12.2-1.1.2.jar                 | None                                     |     | LCHIJA | furenikusroads              | 1.2.5                 | Furenikus_Roads-1.2.5.jar                         | None                                     |     | LCHIJA | cfm                         | 6.3.0                 | furniture-6.3.2-1.12.2.jar                        | None                                     |     | LCHIJA | waila                       | 1.8.22                | Hwyla-1.8.22-B37_1.12.jar                         | None                                     |     | LCHIJA | trackapi                    | 1.2                   | TrackAPI-1.2.jar                                  | None                                     |     | LCHIJA | universalmodcore            | 1.2.1                 | UniversalModCore-1.12.2-forge-1.2.1.jar           | None                                     |     | LCHIJA | immersiverailroading        | 1.10.0                | ImmersiveRailroading-1.12.2-forge-1.10.0.jar      | None                                     |     | LCHIJA | journeymap                  | 1.12.2-5.7.1p2        | journeymap-1.12.2-5.7.1p2.jar                     | None                                     |     | LCHIJA | zawa                        | 1.12.2-2.1.3          | zawa-1.12.2-2.1.3.jar                             | 3ee471ded1bba54aa82f4f5ca5ca82dd67b8ef42 |     | LCHIJA | lilcritters                 | 1.12.2-1.1.0.0        | Lil-Critters-Mod-Forge-1.12.2.jar                 | None                                     |     | LCHIJA | malisiscore                 | 1.12.2-6.5.1-SNAPSHOT | MalisisCore-1.12.2.jar                            | None                                     |     | LCHIJA | malisisdoors                | 1.12.2-7.3.0          | MalisisDoors-Mod-1.12.2.jar                       | None                                     |     | LCHIJA | mcwbridges                  | 1.0.6                 | mcw-bridges-1.0.6b-mc1.12.2.jar                   | None                                     |     | LCHIJA | mcwfences                   | 1.0.0                 | mcw-fences-1.0.0-mc1.12.2.jar                     | None                                     |     | LCHIJA | mcwroofs                    | 1.0.2                 | mcw-roofs-1.0.2-mc1.12.2.jar                      | None                                     |     | LCHIJA | moon-core                   | 7.0                   | Moons-Core-Forge-1.12.2.jar                       | None                                     |     | LCHIJA | mrtjpcore                   | 2.1.4.43              | MrTJPCore-1.12.2-2.1.4.43-universal.jar           | None                                     |     | LCHIJA | railcraft                   | 12.0.0                | railcraft-12.0.0.jar                              | a0c255ac501b2749537d5824bb0f0588bf0320fa |     | LCHIJA | mtr                         | 3.0.0                 | MTR-1.12.2-alpha-test-0.0.1.jar                   | None                                     |     | LCHIJA | kadwinjpvehicles            | 2.0.0                 | MTS_Kadwin_JP_Vehicles_Pack_4.1.jar               | None                                     |     | LCHIJA | ngtlib                      | 2.4.21                | NGTLib2.4.21-38_forge-1.12.2-14.23.2.2611.jar     | None                                     |     | LCHIJA | projectintelligence         | 1.0.9                 | ProjectIntelligence-1.12.2-1.0.9.28-universal.jar | None                                     |     | LCHIJA | nei                         | 2.4.3                 | NotEnoughItems-1.12.2-2.4.3.245-universal.jar     | f1850c39b2516232a2108a7bd84d1cb5df93b261 |     | LCHIJA | oe                          | 1.0.7                 | OceanicExpanse-1.0.7.jar                          | None                                     |     | LCHIJA | openmods                    | 0.12.2                | OpenModsLib-1.12.2-0.12.2.jar                     | d2a9a8e8440196e26a268d1f3ddc01b2e9c572a5 |     | LCHIJA | openblocks                  | 1.8.1                 | OpenBlocks-1.12.2-1.8.1.jar                       | d2a9a8e8440196e26a268d1f3ddc01b2e9c572a5 |     | LCHIJA | placeableitems              | 3.3                   | placeableitems-3.3.jar                            | None                                     |     | LCHIJA | projectred-core             | 4.9.4.120             | ProjectRed-1.12.2-4.9.4.120-Base.jar              | None                                     |     | LCHIJA | projectred-integration      | 4.9.4.120             | ProjectRed-1.12.2-4.9.4.120-integration.jar       | None                                     |     | LCHIJA | projectred-transmission     | 4.9.4.120             | ProjectRed-1.12.2-4.9.4.120-integration.jar       | None                                     |     | LCHIJA | projectred-illumination     | 4.9.4.120             | ProjectRed-1.12.2-4.9.4.120-lighting.jar          | None                                     |     | LCHIJA | projectred-expansion        | 4.9.4.120             | ProjectRed-1.12.2-4.9.4.120-mechanical.jar        | None                                     |     | LCHIJA | projectred-relocation       | 4.9.4.120             | ProjectRed-1.12.2-4.9.4.120-mechanical.jar        | None                                     |     | LCHIJA | projectred-transportation   | 4.9.4.120             | ProjectRed-1.12.2-4.9.4.120-mechanical.jar        | None                                     |     | LCHIJA | rtm                         | 2.4.24                | RTM2.4.24-43_forge-1.12.2-14.23.2.2611.jar        | None                                     |     | LCHIJA | trafficcontrol              | 1.1.1                 | trafficcontrol-1.1.1.jar                          | None                                     |     | LCHIJA | travelersbackpack           | 1.0.35                | TravelersBackpack-1.12.2-1.0.35.jar               | None                                     |     | LCHIJA | iv_tpp                      | 2.22.0                | Trin Parts Pack-1.12.2-2.23.1.jar                 | None                                     |     | LCHIJA | unucivil                    | 6.3.0                 | UNU Civilian Pack [MTS] 1.12.2-22.13.0-6.3.0.jar  | None                                     |     | LCHIJA | vehicle                     | 0.44.1                | vehicle-mod-0.44.1-1.12.2.jar                     | None                                     |     | LCHIJA | wawla                       | 2.6.275               | Wawla-1.12.2-2.6.275.jar                          | d476d1b22b218a10d845928d1665d45fce301b27 |     | LCHIJA | worldedit                   | 6.1.10                | worldedit-forge-mc1.12.2-6.1.10-dist.jar          | None                                     |     | LCHIJA | worldstatecheckpoints       | 1.12.2.1.2.1          | WorldStateCheckpoints-client-1.12.2.1.2.1.jar     | None                                     |     | LCHIJA | wrcbe                       | 2.3.2                 | WR-CBE-1.12.2-2.3.2.33-universal.jar              | f1850c39b2516232a2108a7bd84d1cb5df93b261 |     | LCHIJA | zoocraftdiscoveries         | 1.0                   | Zoocraft+Discoveries+1.12.2-1.3.0.jar             | None                                     |     | LCHIJA | immersiveengineering        | 0.12-98               | ImmersiveEngineering-0.12-98.jar                  | None                                     |     | LCHIJA | fix-rtm                     | 2.0.28                | fixRtm-2.0.28.jar                                 | None                                     |     | LCHIJA | mysticallib                 | 1.12.2-1.13.0         | mysticallib-1.12.2-1.13.0.jar                     | None                                     |     Loaded coremods (and transformers): ForgelinPlugin (Forgelin-1.8.3.jar)   PatchingFixRtmCorePlugin (fixRtm-2.0.28.jar)   com.anatawa12.fixRtm.asm.patching.PatchApplier IELoadingPlugin (ImmersiveEngineering-core-0.12-98.jar)   blusunrize.immersiveengineering.common.asm.IEClassTransformer FixRtmCorePlugin (fixRtm-2.0.28.jar)   JarInJarLoaderCoreMod (fixRtm-2.0.28.jar)   com.anatawa12.fixRtm.jarInJar.JarInJarPatcher BetterFoliageLoader (BetterFoliage-MC1.12-2.3.2.jar)   mods.betterfoliage.loader.BetterFoliageTransformer SecurityCraftLoadingPlugin ([1.12.2] SecurityCraft v1.9.9.jar)   OpenModsCorePlugin (OpenModsLib-1.12.2-0.12.2.jar)   openmods.core.OpenModsClassTransformer MalisisCorePlugin (MalisisCore-1.12.2.jar)   ObfuscatePlugin (obfuscate-0.4.2-1.12.2.jar)   com.mrcrayfish.obfuscate.asm.ObfuscateTransformer CTMCorePlugin (CTM-MC1.12.2-1.0.2.31.jar)   team.chisel.ctm.client.asm.CTMTransformer HookingFixRtmCorePlugin (fixRtm-2.0.28.jar)   com.anatawa12.fixRtm.asm.hooking.HookingTransformer     GL info: ' Vendor: 'NVIDIA Corporation' Version: '4.6.0 NVIDIA 551.86' Renderer: 'NVIDIA GeForce RTX 3070/PCIe/SSE2'     OpenModsLib class transformers: [llama_null_fix:FINISHED],[horse_base_null_fix:FINISHED],[pre_world_render_hook:FINISHED],[player_render_hook:FINISHED],[horse_null_fix:FINISHED]     RTM Model Status: Initialized 1048 models, Using 0 models     I = Initialized, C = Constructed, SMP = SMP includeds     | model pack                                      | all | I | C   | SMP |     |:----------------------------------------------- |:--- |:- |:--- |:--- |     | mods\ModelPack_Nak_5_Structure_240313.zip       | 458 | 0 | 458 | 0   |     | mods\RTM2.4.24-43_forge-1.12.2-14.23.2.2611.jar | 281 | 0 | 281 | 0   |     | mods\rtm_Saracalias Pack v0.2.01.zip            | 309 | 0 | 309 | 0   |     Launched Version: 1.12.2-forge-14.23.5.2859     LWJGL: 2.9.4     OpenGL: NVIDIA GeForce RTX 3070/PCIe/SSE2 GL version 4.6.0 NVIDIA 551.86, NVIDIA Corporation     GL Caps: Using GL 1.3 multitexturing. Using GL 1.3 texture combiners. Using framebuffer objects because OpenGL 3.0 is supported and separate blending is supported. Shaders are available because OpenGL 2.1 is supported. VBOs are available because OpenGL 1.5 is supported.     Using VBOs: Yes     Is Modded: Definitely; Client brand changed to 'fml,forge'     Type: Client (map_client.txt)     Resource Packs: NickMiner69V2.zip, MPT-4.zip, feldbahnpackv1-3.zip, G_P_Narrow_Gauge_Texel_Pack_V1.0.3.zip     Current Language: English (US)     Profiler Position: N/A (disabled)     CPU: 8x Intel(R) Core(TM) i7-6700K CPU @ 4.00GHz     OptiFine Version: OptiFine_1.12.2_HD_U_G5     OptiFine Build: 20210124-142939     Render Distance Chunks: 12     Mipmaps: 4     Anisotropic Filtering: 1     Antialiasing: 0     Multitexture: false     Shaders: null     OpenGlVersion: 4.6.0 NVIDIA 551.86     OpenGlRenderer: NVIDIA GeForce RTX 3070/PCIe/SSE2     OpenGlVendor: NVIDIA Corporation     CpuCount: 8
    • i notice a change if i add the min and max ram in the line like this for example:    # Xmx and Xms set the maximum and minimum RAM usage, respectively. # They can take any number, followed by an M or a G. # M means Megabyte, G means Gigabyte. # For example, to set the maximum to 3GB: -Xmx3G # To set the minimum to 2.5GB: -Xms2500M # A good default for a modded server is 4GB. # Uncomment the next line to set it. -Xmx10240M -Xms8192M    i need to make more experiments but for now this apparently works.
    • This honestly might just work for you @SubscribeEvent public static void onScreenRender(ScreenEvent.Render.Post event) { final var player = Minecraft.getInstance().player; final var options = Minecraft.getInstance().options; if(!hasMyEffect(player)) return; // TODO: You provide hasMyEffect float f = Mth.lerp(event.getPartialTick(), player.oSpinningEffectIntensity, player.spinningEffectIntensity); float f1 = ((Double)options.screenEffectScale().get()).floatValue(); if(f <= 0F || f1 >= 1F) return; float p_282656_ = f * (1.0F - f1); final var p_282460_ = event.getGuiGraphics(); int i = p_282460_.guiWidth(); int j = p_282460_.guiHeight(); p_282460_.pose().pushPose(); float f5 = Mth.lerp(p_282656_, 2.0F, 1.0F); p_282460_.pose().translate((float)i / 2.0F, (float)j / 2.0F, 0.0F); p_282460_.pose().scale(f5, f5, f5); p_282460_.pose().translate((float)(-i) / 2.0F, (float)(-j) / 2.0F, 0.0F); float f4 = 0.2F * p_282656_; float f2 = 0.4F * p_282656_; float f3 = 0.2F * p_282656_; RenderSystem.disableDepthTest(); RenderSystem.depthMask(false); RenderSystem.enableBlend(); RenderSystem.blendFuncSeparate(GlStateManager.SourceFactor.ONE, GlStateManager.DestFactor.ONE, GlStateManager.SourceFactor.ONE, GlStateManager.DestFactor.ONE); p_282460_.setColor(f4, f2, f3, 1.0F); p_282460_.blit(new ResourceLocation("textures/misc/nausea.png"), 0, 0, -90, 0.0F, 0.0F, i, j, i, j); p_282460_.setColor(1.0F, 1.0F, 1.0F, 1.0F); RenderSystem.defaultBlendFunc(); RenderSystem.disableBlend(); RenderSystem.depthMask(true); RenderSystem.enableDepthTest(); p_282460_.pose().popPose(); }   Note: Most of this is directly copied from GameRenderer as you pointed out you found. The only thing you'll have to likely do is update the `oSpinningEffectIntensity` + `spinningEffectIntensity` variables on the player when your effect is applied. Which values should be there? Not 100% sure, might be a game of guess and check, but `handleNetherPortalClient` in LocalPlayer has some hard coded you might be able to start with.
  • Topics

×
×
  • Create New...

Important Information

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