Jump to content

[1.10.2][CLOSED]Creating Non Existing Blocks


Kaneka

Recommended Posts

This would not be to laggy as it would only be a few certain blocks that are I assume keeping a multiblock from constructing? Or something similar. You should make a static Map of BlockPos linked to the BlockPos of your TileEntity then after a certain amount of time has passed remove the ones linked to your TileEntites BlockPos. The rendering should then be done in the Event mentioned prior. Drawing as mentioned prior as well.

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 comment
Share on other sites

Largely speaking, you need to look up how to use OpenGL / GL11.  VertexBuffer's second paramter is the same one passed to GL11.Begin() (which typically you want to use GL11.GL_QUADS).  Last time I tried using lines I had trouble.

Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable.  If you think this is the case, JUST REPORT ME.  Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice.

 

Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked.

 

DO NOT PM ME WITH PROBLEMS. No help will be given.

Link to comment
Share on other sites

And the other arg in VertexBuffer.begin(int glMode, VertexFormat format)??

Try DefaultVertexFormat...

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 comment
Share on other sites

WorldRenderer has become VertexBuffer and instead of addVertex it is the way diesieben said. You also must call vb.startDrawing(glnum, DefaultVertexFormats...) mess around with that last var because i do not know what it would be in this case.

And which one exactly?

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 comment
Share on other sites

Hopefully the last Question in this Topic:

Actually I get almost everything running, just the lines act strange depending on the direktion the player looking.

 

Thats not what I want

t66fppyw.png

This is what I want

 

safee8ny.png

 

Does anybody know how to fix this?

Could you post your current code?

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 comment
Share on other sites

public class MultiAssemblerTESR extends TileEntitySpecialRenderer<TileEntityMultiAssembler>
{
@Override
public void renderTileEntityAt(TileEntityMultiAssembler te, double x, double y, double z, float partialTicks, int destroyStage) 
{

        int teposX = te.getPos().getX();
        int teposY = te.getPos().getY();
        int teposZ = te.getPos().getZ();
        Map list = te.getBlocksWithMarkersList();
	Entity entity = this.rendererDispatcher.entity;
	double distance = te.getDistanceSq(entity.posX, entity.posY, entity.posZ);
    if (distance < 100.0 && !list.isEmpty()) 
    {
    	
    	 Iterator iterator = list.entrySet().iterator();
         Entry entry;
         do
         {
             entry = (Entry)iterator.next();
             BlockPos actualpos = (BlockPos) entry.getKey();
             drawCubeWithCrossesAtPos(x, y, z, actualpos.getX() - teposX, actualpos.getY() - teposY, actualpos.getZ() - teposZ);
             
         }
         while (iterator.hasNext());
	}

}

public static void drawCubeWithCrossesAtPos(double x, double y, double z, int addx, int addy, int addz)
{
	GL11.glPushMatrix();
	GlStateManager.color(1F, 0F, 0F);
	GlStateManager.glLineWidth(10F);
	GL11.glTranslated(x + addx, y + addy, z + addz);
	 Tessellator tessellator = Tessellator.getInstance();
	 VertexBuffer worldRenderer = tessellator.getBuffer();
	 int rendertype = GL11.GL_LINE_STRIP;
	//CrossNorth
		worldRenderer.begin(rendertype, DefaultVertexFormats.POSITION);
		worldRenderer.pos(0, 0, -0.001).endVertex();
		worldRenderer.pos(1, 1, -0.001).endVertex();
		worldRenderer.pos(1, 0, -0.001).endVertex();
		worldRenderer.pos(0, 1, -0.001).endVertex();
		tessellator.draw();
		//CrossWest
		worldRenderer.begin(rendertype, DefaultVertexFormats.POSITION);
		worldRenderer.pos(-0.001, 0, 1).endVertex();
		worldRenderer.pos(-0.001, 1, 0).endVertex();
		worldRenderer.pos(-0.001, 0, 0).endVertex();
		worldRenderer.pos(-0.001, 1, 1).endVertex();
		tessellator.draw();
		//CrossSouth
		worldRenderer.begin(rendertype, DefaultVertexFormats.POSITION);
		worldRenderer.pos(1, 0, 1.001).endVertex();
		worldRenderer.pos(0, 1, 1.001).endVertex();
		worldRenderer.pos(0, 0, 1.001).endVertex();
		worldRenderer.pos(1, 1, 1.001).endVertex();
		tessellator.draw();
		//CrossEast
		worldRenderer.begin(rendertype, DefaultVertexFormats.POSITION);
		worldRenderer.pos(1.001, 0, 0).endVertex();
		worldRenderer.pos(1.001, 1, 1).endVertex();
		worldRenderer.pos(1.001, 0, 1).endVertex();
		worldRenderer.pos(1.001, 1, 0).endVertex();
		tessellator.draw();
		//CrossUp
		worldRenderer.begin(rendertype, DefaultVertexFormats.POSITION);
		worldRenderer.pos(1, 1.001, 1).endVertex();
		worldRenderer.pos(0, 1.001, 0).endVertex();
		worldRenderer.pos(0, 1.001, 1).endVertex();
		worldRenderer.pos(1, 1.001, 0).endVertex();
		tessellator.draw();
		//CrossDown
		worldRenderer.begin(rendertype, DefaultVertexFormats.POSITION);
		worldRenderer.pos(1, -0.001, 1).endVertex();
		worldRenderer.pos(0, -0.001, 0).endVertex();
		worldRenderer.pos(0, -0.001, 1).endVertex();
		worldRenderer.pos(1, -0.001, 0).endVertex();
		tessellator.draw();
		//RestUp
		worldRenderer.begin(rendertype, DefaultVertexFormats.POSITION);
		worldRenderer.pos(1, 1.001, 1).endVertex();
		worldRenderer.pos(1, 1.001, 0).endVertex();
		worldRenderer.pos(0, 1.001, 0).endVertex();
		worldRenderer.pos(0, 1.001, 1).endVertex();
		worldRenderer.pos(1, 1.001, 1).endVertex();
		tessellator.draw();
		//RestDown
		worldRenderer.begin(rendertype, DefaultVertexFormats.POSITION);
		worldRenderer.pos(1, -0.001, 1).endVertex();
		worldRenderer.pos(1, -0.001, 0).endVertex();
		worldRenderer.pos(0, -0.001, 0).endVertex();
		worldRenderer.pos(0, -0.001, 1).endVertex();
		worldRenderer.pos(1, -0.001, 1).endVertex();
		tessellator.draw();
		GL11.glPopMatrix();

}
}

Link to comment
Share on other sites

Does this actually give you the correct position?

actualpos.getX() - teposX, actualpos.getY() - teposY, actualpos.getZ() - teposZ

Why not just pass the BlockPos#getX() ect?

 

*Edit Also only call tessellator.draw() once at the end.

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 comment
Share on other sites

Because I render more than 1 Block and I need to set their position referenced to the TE

te.getPos().getX() == x, te.getPos().getY() == y, and te.getPos().getZ() == z.

If so you would no do this

 

GL11.glTranslated(x + addx, y + addy, z + addz);

 

Just some math

x + (actualpos.getX() - teposX), y + (actualpos.getY() - teposY), and z + (actualpos.getZ() - teposZ) should = actualpos.getX(), actualpos.getY(), and actualpos.getZ()

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 comment
Share on other sites

ok, just some unnecessary math, but this would fix my rendering problem

I don't think the math would, but did you try my second suggestion. But amended to also only calling begin once.

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 comment
Share on other sites

I think, but I am not sure, that you are running into Z-Fighting: the lines you are drawing occur in the same z-depth (distance from the camera) as the objects you're drawing them "over" so the GPU can't correctly sort their order.

Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable.  If you think this is the case, JUST REPORT ME.  Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice.

 

Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked.

 

DO NOT PM ME WITH PROBLEMS. No help will be given.

Link to comment
Share on other sites

Rather than drawing exactly at the coordinates (e.g.

(1, 1, 1

) draw slightly offset (e.g.

1.001, 1.001, 1.001

).  You'll want to draw larger than the block and you don't care if that direction is towards or away from the camera (if it's away, then it's behind, and won't draw anyway).

Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable.  If you think this is the case, JUST REPORT ME.  Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice.

 

Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked.

 

DO NOT PM ME WITH PROBLEMS. No help will be given.

Link to comment
Share on other sites

its my own block, it is a TESR and it drow over all type of blocks

I'm not sure you understood what Draco was saying.

// Instead of this
		worldRenderer.pos(0, 0, -0.001).endVertex();
		worldRenderer.pos(1, 1, -0.001).endVertex();
		worldRenderer.pos(1, 0, -0.001).endVertex();
		worldRenderer.pos(0, 1, -0.001).endVertex();
// Do this
		worldRenderer.pos(-0.001, -0.001, -0.001).endVertex();
		worldRenderer.pos(1.001, 1.001, -0.001).endVertex();
		worldRenderer.pos(1.001, -0.001, -0.001).endVertex();
		worldRenderer.pos(-0.001, 1.001, -0.001).endVertex();

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



×
×
  • Create New...

Important Information

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