Jump to content

[1.9+] What's the proper way of doing stuff on the main thread in packets?


UntouchedWagons

Recommended Posts

I need to do some OpenGL stuff in one of my packets (rendering items/blocks and saving them to files) but the OpenGL calls fail because there's no opengl thing associated with the thread, so I need to do this stuff on the main thread. I know you have to schedule an object through the World object or something but I'm not sure how to actually do it.

I like trains.

Link to comment
Share on other sites

First you should probably update to 1.10, and what do you mean you need to do OpenGL stuff in packets?

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 plan to update to 1.10.2. My mod exports item, recipe and mod information to JSON files to be used by a web application which also uses the item/blocks' icons to make it easier to tell what it is you're choosing which I use some OpenGL for. The recipes are collected server-side and then sent to the client. When this is done the server sends a recipe list completion packet then the client exports item, block and mod info then renders all the icons and saves them to files.

I like trains.

Link to comment
Share on other sites

In Minecraft you can't render in a packet what you will need to do is open a gui and do the rendering in there, how are you sending this packet?

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'm sending the packet via a SimpleNetworkWrapper object. Originally my mod was to be all client side and it was working fine, the items and blocks were being rendered without a GUI but when I tried to add IndustrialCraft 2 support, none of its machine recipes were available so I'm making my mod require a server component to accurately get all the recipes.

I like trains.

Link to comment
Share on other sites

Where are you trying to render these? On the screen after you have dumped all the crafting recipes to their respective JSONs?

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

Ah so I'm pretty sure if you did need access to the Main Thread what Choonster said should get you there. Have fun come back if something happens.

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 am just here to say how to do it properly:

 

Use packets to send whatever you need from server to client thread.

On client-netty thread schedule task to client thread (link Choonster gave).

On client thread (runnable) pass some things to some List (so for example - add list of ItemStacks to static client-sided PriorityQueue).

Use RenderGameOverlayEvent to render ItemStacks from queue on screen.

Use ClientTickEvent to remove items from PriorityQueue (so it will be like items show up and disappear after few ticks).

 

Note: I have no idea what is your exact goal so I just gave example on how to generally do this stuff.

 

P.S: Most of this stuff requires more notes (important) that were not included - that later.

 

P.S 2: If you EVER touch OpenGL from outside of rendering events or Gui classes - you are doing it wrong.

1.7.10 is no longer supported by forge, you are on your own.

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



×
×
  • Create New...

Important Information

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