Jump to content

Recommended Posts

Posted

Hello,

 

I have a GUI with 2 Buttons (ON and OFF) which activates/deactivates a redstone signal. My problem is, that when two player's are accessing the same GUI and one player clicks the ON-Button, the other player doesn't see that. How can I make all other players updating their GUIs?

 

I am already sending a packet to the server with the new state. This packet redirects the state to the container which sets it in the TileEntity.

 

I hope you can understand my problem, thanks,

Julian

Posted

Yeah, I know.

 

So should I use "sendToAllAroung()"?

Is the "ctx.getServerHandler().playerEntity()" then one of the players the packet was sent to?

 

I really don't know how I should do this.

Posted

I stored the redstonesignal in the TileEntity and I did it all by hand.

Immediatly after the player opens a GUI, I send a packet to the player with the redstonesignal to display it in the GUIContainer.

 

But how can I "update" the GUI of all players with the new redstonesignal when the GUI is already opened?

Posted

Yeah, that's what i thought, too.

But how can I get the GUIScreen which the specific player has opened to set the redstonesignal?

 

Is Minecraft.getMinecraft().currentScreen the right way?

Posted

Yeah, I know, but I think that i am missunderstanding anything.

 

When Player1 has GUI1 opened and Player2 has GUI2 opened, which GUI (1 or 2) is the Minecraft.getMinecraft().currentScreen ???

Posted

Why care who has what open. If you update the tile on the server, mark it for update.

 

Pull the data for the gui right from the tile on the client.

Long time Bukkit & Forge Programmer

Happy to try and help

Posted

But if i try to get the redstonesignal of the TileEntity in the initGui()-method, the redstonesignal is always null. I think that I always need to send the redstonesignal to the client immediatly after I open the GUI. Otherwise everything will be null, because I can't get things on the Server from the Client without packets, or am I something missunderstanding?

Posted

EDIT:

 

Okay, everything is working fine except for keeping track which players have opened the GUI.

So, I created a List of EntityPlayerMP and every time someone is opening the GUI, I add the player to the List.

In the GUIContainer, I overwrote the onGuiClosed()-method to remove the player when he closed the GUI.

 

Now the problem: When the player has the GUI opened and stops the Minecraft process (or clicks on the X), the onGuiClosed()-method isn't called.

Is there a event which is fired when the player leaves the game?

 

Thanks,

Julian

Posted

EDIT:

 

I can't send the packet to all around, because if there are 2 blocks next to each other and player1 is accessing the gui in block1 and player2 is accessing the gui in block2, both players will get the update and that's a huge problem.

 

So, I need to check if the player (to which the packet was sent) has opened the same GUI, but how?!?

 

It seems that I ran into a bit of a problem here :(

Posted

Again I will say, when the tile entity on the server changes, tell it to send a packet to the client updating its tilentity.

 

  markblockforupdate.  Have your tilentity read/write the nbt data correctly.

 

Let the GUI naturally update with the new data from your freshly updating tile. 

 

You don't need to worry about who has what opened.

 

 

Long time Bukkit & Forge Programmer

Happy to try and help

Posted

Gui

  - render background, text, whatever the heck

      - tile.getMana()

 

oops, that returned zero or null

 

Sync data from server to client.

 

Wow, now the tile on client knows what server knows.

 

This time when my gui looks, it gets real info. 

 

 

In your tile

- make sure everytime you change a value, send the packet from server to client.  I actually mark a flag on the tile and then on a periodic tick update the client, but if you only have a few fields, so be it.

- make sure your variables is stored in NBT

- make sure the packetreceived on client method in the tile updates right.

 

Long time Bukkit & Forge Programmer

Happy to try and help

  • 3 weeks later...
Posted

Ok so how do I use this to update the client side to be the same as the server side? I've tried calling it at many different places. Do I need to add something else in the tile entity so that it works?

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



  • Recently Browsing

    • No registered users viewing this page.
  • Posts

    • Same issue without voicechat?
    • Start by following the docs to get a workspace setup: https://docs.minecraftforge.net/en/latest/gettingstarted/ Then poke around some of the tutorials, https://www.mcjty.eu/docs/1.20/ used to be the goto, but not sure if there are any updates for regular forge or not, but if you've brushed up on Java, it will be enough to get you started. Poke around the Minecraft and Forge sources to see how things are done. Read the FAQ for information on how to post code/logs when you run into issues. Share as much info on issues you have as possible. Use github to host projects, chances of someone helping are higher when they can actually see all your code and/or build it themselves. And finally, keep it on the forums, don't direct message people with questions, most people do not provide personal support like that. Also keep in mind forums posts are not always immediately answered, if you're looking for a quicker response, you can always try the Minecraft Forge discord server.
    • Hello, I have a Forge Minecraft sever (I host it at g-portal.com) which has always worked fine and I had no problems, but today it doesn't wanna work anymore. Today I started the server and the status said online, but after a few seconds it said this: "Start failed". And then out of nowhere it restarted itself and the same thing happened again and again and now it's in an infinite loop where it just keeps failing and then restarts. Here's the download link for the server logs: https://www.mediafire.com/file/sq30dgoonjevib1/2025-07-06-1.log/file Does anyone know how to fix this? If yes I would really appreciate help. Best wishes, Gabs1107
    • I'm experiencing a critical issue on a dedicated Arch Linux server running the latest Forge for Minecraft 1.20.1. When a player exits a Nether portal (not enters, and not via /tp) or teleports into the End via portal, the server completely freezes for 1–10 minutes. During this time, all commands are unresponsive, and the game world essentially locks up. This is with watchdog disabled. Environment: OS: Arch Linux (latest packages) Java: OpenJDK 17 (up to date) Forge Version: Latest 1.20.1 (tested multiple versions from the past ~3 months) Mods: None (issue occurs on a clean install) Server Type: Proxmox VM with: 4 virtual cores 64 GB RAM (63 GB allocated via -Xmx and -Xms flags) Observed Behavior: Observed Behavior: The server freezes for 1–10 minutes when: Exiting a Nether portal (entering does not trigger the issue) Entering or exiting the End using a portal Teleporting using commands (e.g., /tp) works only for the Nether; teleporting to the End via command also causes a freeze The issue occurs anywhere in the world, not tied to specific coordinates or builds During the freeze: The server becomes completely unresponsive to all commands and player actions No crash reports, no errors, and no warnings are logged CPU usage remains under 50%, and RAM usage stays around 6–14 GB After 1–10 minutes, the server recovers automatically and resumes normal operation
  • Topics

×
×
  • Create New...

Important Information

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