Jump to content
Search In
  • More options...
Find results that contain...
Find results in...

[1.12.2] [SOLVED] Drawing a line to the cursor


Recommended Posts

The GUI class, it seems, only has methods for drawing horizontal/vertical lines, so I don't think there's a convenient pre-written utility method accessible here. However, you can still accomplish this through the Tessellator.

 

--Aquire an instance of the Tessellator with Tessellator#getInstance(), and an instance of BufferBuilder by calling Tessellator#getBuffer() on your Tessellator object.

--Set the desired settings with GlStateManager#whatever().

--Call BufferBuilder#begin(), passing in the desired line mode as one of the public static final ints in the GL11 class, and the desired vertex format from the DefaultVertexFormats class.

--Add the two vertices of your line with BufferBuilder#pos(), BufferBuilder#color(), etc, and end each vertex with BufferBuilder#endVertex().

(A pseudo example below, since that was unclear)

buffer.pos().color().endVertex();
buffer.pos().color().endVertex();

--With everything above set up, call Tessellator#draw() on your Tessellator object.

--Reset the GlStateManager settings to what they were before.

 

EDIT: You should also call GlStateManager#pushMatrix() before BufferBuilder#begin(), and GlStateManager#popMatrix() after Tessellator#draw(). This shifts the current matrix out from being worked on, to make space for your own, and then back in place once you're done with it (At least I think so, right?).

Edited by SerpentDagger

Fancy 3D Graphing Calculator mod, with many different coordinate systems.

Lightweight 3D/2D position/vector transformations library, also with support for different coordinate systems.

Link to post
Share on other sites

thanks for your response; however i had a friend of mine send me some of their code for creating lines, and it worked perfectly. i also managed to get the line to be like a trail that follows the cursor.

 

code: 

	GL11.glPushMatrix();
        GL11.glEnable(GL11.GL_BLEND);
        GL11.glEnable(GL11.GL_LINE_SMOOTH);
        GL11.glDisable(GL11.GL_DEPTH_TEST);
        GL11.glDisable(GL11.GL_TEXTURE_2D);
        GL11.glBlendFunc(770, 771);
        GL11.glEnable(GL11.GL_BLEND);
        GL11.glLineWidth(lw);
        GL11.glColor4f(r, g, b, a);
        GL11.glBegin(2);
        GL11.glVertex2d(sx, sy);
        GL11.glVertex2d(ex, ey);
        GL11.glEnd();
        GL11.glDisable(GL11.GL_BLEND);
        GL11.glEnable(GL11.GL_TEXTURE_2D);
        GL11.glEnable(GL11.GL_DEPTH_TEST);
        GL11.glDisable(GL11.GL_LINE_SMOOTH);
        GL11.glDisable(GL11.GL_BLEND);
        GL11.glPopMatrix();

 

sx: Starting Point X

sy: Starting Point Y

ex: Starting Point X

ey: Starting Point Y

Edited by D0XY
Link to post
Share on other sites
6 minutes ago, D0XY said:

GL11.glPushMatrix();

Do not interact with OpenGL directly like that. Don't use GL11 use GLStateManager. Also please use the Tesselator.

VANILLA MINECRAFT CLASSES ARE THE BEST RESOURCES WHEN MODDING

I will be posting 1.15.2 modding tutorials on this channel. If you want to be notified of it do the normal YouTube stuff like subscribing, ect.

Forge and vanilla BlockState generator.

Link to post
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.

Guest
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.



×
×
  • Create New...

Important Information

By using this site, you agree to our Privacy Policy.