Posted October 31, 20223 yr 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.
October 31, 20223 yr 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. 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.
November 1, 20223 yr Author 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.