Jump to content
View in the app

A better way to browse. Learn more.

Forge Forums

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

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

Featured Replies

Posted

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.

  • Author

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.

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.

  • Author

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.

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.

  • Author

Yeah because I haven't pushed any code that uses the packet system to my github because I have a jenkins server that autocompiles whenever I do a push and I didn't want people to download builds that would compile but not run.

I like trains.

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.

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.

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

Important Information

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

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.