Jump to content

Get world saved data on client for a screen [1.19.2]


RInventor7

Recommended Posts

Hi! I have some problems with world saved data since it is server-side only. I have created like an in-game computer system with a lot of screens. I'm using world saved data to store the data and so all players can access it from anywhere in the world. Problems arise with getting data to display on the screen. If player edits data on a screen I can send a custom packet to server and save the data to world saved data.

How can I get the data from world saved data when I reopen the screen on client to display the data on the screen? Send packet to server -> get data -> send 2nd packet back to client?? Thanks.

Link to comment
Share on other sites

You are responsible for synchronizing server data to the client for display.

https://forge.gemwire.uk/wiki/Main_Page - "the handling information" section

e.g. the vanilla MapItem serializes its SavedData map data to the client using the ClientBoundMapItemDataPacket

Boilerplate:

If you don't post your logs/debug.log we can't help you. For curseforge you need to enable the forge debug.log in its minecraft settings. You should also post your crash report if you have one.

If there is no error in the log file and you don't have a crash report then post the launcher_log.txt from the minecraft folder. Again for curseforge this will be in your curseforge/minecraft/Install

Large files should be posted to a file sharing site like https://gist.github.com  You should also read the support forum sticky post.

Link to comment
Share on other sites

On 5/1/2023 at 12:43 PM, warjort said:

e.g. the vanilla MapItem serializes its SavedData map data to the client using the ClientBoundMapItemDataPacket

This is where I got stuck. I looked bunch of Vanilla classes and tried to do this myself, but now I have so many questions. The code is here. I added comments to the places in code where I am confused. (I’m not even sure what I’m doing wrong...)

Edited by RInventor7
Link to comment
Share on other sites

You didn't read that the "Handling Information" section of the wiki like I told you.

If you did you would know you have to use a SimpleChannel to do networking.

Mojang's PacketListeners are hardwired (one on the client and one for each player on the server) with a fixed set of known vanilla packets. You can't create your own or add new packet types to it.

Boilerplate:

If you don't post your logs/debug.log we can't help you. For curseforge you need to enable the forge debug.log in its minecraft settings. You should also post your crash report if you have one.

If there is no error in the log file and you don't have a crash report then post the launcher_log.txt from the minecraft folder. Again for curseforge this will be in your curseforge/minecraft/Install

Large files should be posted to a file sharing site like https://gist.github.com  You should also read the support forum sticky post.

Link to comment
Share on other sites

2 hours ago, warjort said:

Mojang's PacketListeners are hardwired (one on the client and one for each player on the server) with a fixed set of known vanilla packets. You can't create your own or add new packet types to it.

That made things more clear. And I am using SimpleChannel to do networking, I just don’t know where to use it. I know I have to send the clientbound packet at some point to the player when the screen is opened, but I don’t understand where I have to send it in order to get the SavedData value on client for the screen.

Code updated.

Link to comment
Share on other sites

If you want help doing something and have tried to figure it out for yourself then you can ask that specific question here.

But we don't write or design your mod for you. Only you know where the data changes and who you need to send those changes to.

Edited by warjort

Boilerplate:

If you don't post your logs/debug.log we can't help you. For curseforge you need to enable the forge debug.log in its minecraft settings. You should also post your crash report if you have one.

If there is no error in the log file and you don't have a crash report then post the launcher_log.txt from the minecraft folder. Again for curseforge this will be in your curseforge/minecraft/Install

Large files should be posted to a file sharing site like https://gist.github.com  You should also read the support forum sticky post.

Link to comment
Share on other sites

On 5/3/2023 at 8:58 PM, RInventor7 said:

That made things more clear. And I am using SimpleChannel to do networking, I just don’t know where to use it. I know I have to send the clientbound packet at some point to the player when the screen is opened, but I don’t understand where I have to send it in order to get the SavedData value on client for the screen.

Code updated.

do you still need help, I can guide you on how to accomplish everything. Only thing I ask is next time you help others 

Link to comment
Share on other sites

https://github.com/Rinventor/SavedDataSync/blob/main/PTMSavedData.java#:~:text=(level)) {-,PTMSavedData data %3D PTMSavedData.getInstance(level)%3B,-return data.

Whenever you are calling Client side code and want the server to do something with it you must send a packet over to the server and have the server do the logic there and if needed return any data changes back to the client.

Not to be rude, but I really think you are over complicating everything and making it harder on yourself. Like mentioned above its really as simple as sending the data to server and if needed have the server send the data back to the client. Usually if the data you need to mess with is server side you don't need to send any data back.

Edited by sFXprt
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.