Jump to content

Recommended Posts

Posted

Hi, as I understand a container/menu class is used for the syncing of data between the client and the server. I have a value in my BlockEntity class that will change and update that I want to show on my GUI screen on the client.

However I don't understand why I have to use addDataSlot() so the client can get the value from the BlockEntity, why can't the client just call a method in the container class that returns a value from the BlockEntity?

I also don't understand how I would go about implementing the getters and setters that are required when instantiating a new DataSlot() for the addDataSlot method.

For example, how would I sync an integer from a BlockEntity Class and display that number as a label on the GUI on the client?

Thanks.

 

Posted

https://forums.minecraftforge.net/topic/117477-119-how-to-access-blockentity-data-from-containerscreen/

for sending data and accessing block entity data in a container menu/screen for the client.

It is not done by default as it would be useless work if it wasn't used.

 

You can only use DataSlots for integers. e.g. the furnace does this for burn/cook time progress and duration, or the lectern does it for the page number.

This only sends the data to the client if you open a container so it is more efficient, but less flexible.

See those vanilla examples for how to do it. e.g. look at how LecternBlockEntity.dataAccess and LecternMenu.lecternData are used.

  • Thanks 1

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.

Posted

Thanks for the quick reply.

From what I have gathered is, you just add an extra paremeter for your container constructor for the ContainerData. Then you just add the container data using addDataSlots.
I was trying to use addDataSlot() but using addDataSlots() is much easier.

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.