Jump to content

Recommended Posts

Posted

I created a kind of Block Entity like Sign which can display text.
Now, I'm trying to create a new custom GUI screen for editing the text displayed on that block entity.
I wish I could open this screen by right click that block, but I don't know how.

Posted

You need to create a class which extends from Screen and overrides init() and render(). 

Make sure you load the screen only on Dist.CLIENT!

Common mistake with Screens is trying to reach across logical sides, like trying to access data which is only present on the logical server from the logical client.

Any manipulation of data should be handled with packets.

Eg. you edit the sign, and the input is then encoded and send to the server as NBT, then decoded on the server and saved into the BlockEntity, and lastly synchronized to each individual player, best case to prevent unneeded syncronization is to make your logical client only send a update request when rendering the BlockEntity. Because in a server scenario a player 1000 chunks away should probably not know about your sign and what it says, as they don't even see it. It really depends and what you want to achieve.

Note that you might need to attach a Capability to store data on your BlockEntity.

I hope this helps :)

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.