Jump to content
Search In
  • More options...
Find results that contain...
Find results in...

Synchronizing GUI


Stjubit
 Share

Recommended Posts

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

Link to comment
Share on other sites

"a redstone signal" - you need to store this somewhere, e.g. in metadata or whatever. Then just access that information in the GUI (metadata would be synced automatically, everything else you would have to do by hand) and send a packet to the server to change it when the button is clicked.

Link to comment
Share on other sites

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?

Link to comment
Share on other sites

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?

Link to comment
Share on other sites

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

Link to comment
Share on other sites

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 :(

Link to comment
Share on other sites

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

Link to comment
Share on other sites

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

Link to comment
Share on other sites

  • 3 weeks later...

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
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.

 Share



  • Recently Browsing

    No registered users viewing this page.

  • Posts

    • check if your event is getting fired, first (and you must be in 3rd person on singleplayer for it to work). second, modifying those values doesn't do anything. It is already rendered (in post) or the values will be overwritten for rendering (in pre). You need to cancel the rendering and do it yourself. I do it with the field model#visible = false in pre, then in post, set it to true, then modify the rotation points and angles, then render it using the render method that takes the buffer, vertex builder, ... it would be much easier to use rightArmPose = ... in PRE. 
    • Have you registered your class as EventBusSubscriber on the correct bus?
    • Nope, 1.16 is going to stay as LTS and 1.17 is getting a 1 month grace period.
    • I downloaded ATM7 on the curseforge launcher and installed it, I can launch it and play it just fine the first time. I can play for as long as I want; when I close the game and exit I can re-launch the game just fine. I turn my PC off and back on again in the morning and try to launch it, that's when it errors out and can't "complete the mod scan". The only way around it I've found is making a new profile for it in curseforge, basically re-downloading it and playing it for "the first time" again. I have a RTX 2080 Ti Strix, an i5 8600K and 32 GB of ram with 8 GB allocated to Minecraft. The crash report as follows:  ---- Minecraft Crash Report ---- // Shall we play a game? Time: 11/30/21, 12:09 PM Description: Initializing game java.lang.IllegalStateException: Failed to complete mod scan     at net.minecraftforge.fml.loading.moddiscovery.BackgroundScanHandler.waitForScanToComplete(BackgroundScanHandler.java:103) ~[fmlloader-1.17.1-37.0.109.jar%2322!:?] {}     at net.minecraftforge.fml.ModLoader.gatherAndInitializeMods(ModLoader.java:153) ~[fmlcore-1.17.1-37.0.109.jar%23218!:?] {}     at net.minecraftforge.fmlclient.ClientModLoader.lambda$begin$1(ClientModLoader.java:108) ~[forge-1.17.1-37.0.109-universal.jar%23221!:?] {re:classloading,pl:runtimedistcleaner:A}     at net.minecraftforge.fmlclient.ClientModLoader.lambda$createRunnableWithCatch$4(ClientModLoader.java:129) ~[forge-1.17.1-37.0.109-universal.jar%23221!:?] {re:classloading,pl:runtimedistcleaner:A}     at net.minecraftforge.fmlclient.ClientModLoader.begin(ClientModLoader.java:108) ~[forge-1.17.1-37.0.109-universal.jar%23221!:?] {re:classloading,pl:runtimedistcleaner:A}     at net.minecraft.client.Minecraft.<init>(Minecraft.java:460) ~[client-1.17.1-20210706.113038-srg.jar%23217!:?] {re:classloading,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A}     at net.minecraft.client.main.Main.main(Main.java:151) ~[client-1.17.1-20210706.113038-srg.jar%23217!:?] {re:classloading,pl:runtimedistcleaner:A}     at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?] {}     at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:78) ~[?:?] {}     at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?] {}     at java.lang.reflect.Method.invoke(Method.java:567) ~[?:?] {}     at net.minecraftforge.fml.loading.targets.CommonClientLaunchHandler.lambda$launchService$0(CommonClientLaunchHandler.java:45) ~[fmlloader-1.17.1-37.0.109.jar%2322!:?] {}     at cpw.mods.modlauncher.LaunchServiceHandlerDecorator.launch(LaunchServiceHandlerDecorator.java:37) [modlauncher-9.0.7.jar%235!:?] {}     at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:53) [modlauncher-9.0.7.jar%235!:?] {}     at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:71) [modlauncher-9.0.7.jar%235!:?] {}     at cpw.mods.modlauncher.Launcher.run(Launcher.java:106) [modlauncher-9.0.7.jar%235!:?] {}     at cpw.mods.modlauncher.Launcher.main(Launcher.java:77) [modlauncher-9.0.7.jar%235!:?] {}     at cpw.mods.modlauncher.BootstrapLaunchConsumer.accept(BootstrapLaunchConsumer.java:26) [modlauncher-9.0.7.jar%235!:?] {}     at cpw.mods.modlauncher.BootstrapLaunchConsumer.accept(BootstrapLaunchConsumer.java:23) [modlauncher-9.0.7.jar%235!:?] {}     at cpw.mods.bootstraplauncher.BootstrapLauncher.main(BootstrapLauncher.java:90) [bootstraplauncher-0.1.17.jar:?] {} A detailed walkthrough of the error, its code path and all known details is as follows: --------------------------------------------------------------------------------------- -- Head -- Thread: Render thread Stacktrace:     at net.minecraftforge.fml.loading.moddiscovery.BackgroundScanHandler.waitForScanToComplete(BackgroundScanHandler.java:103) ~[fmlloader-1.17.1-37.0.109.jar%2322!:?] {}     at net.minecraftforge.fml.ModLoader.gatherAndInitializeMods(ModLoader.java:153) ~[fmlcore-1.17.1-37.0.109.jar%23218!:?] {}     at net.minecraftforge.fmlclient.ClientModLoader.lambda$begin$1(ClientModLoader.java:108) ~[forge-1.17.1-37.0.109-universal.jar%23221!:?] {re:classloading,pl:runtimedistcleaner:A}     at net.minecraftforge.fmlclient.ClientModLoader.lambda$createRunnableWithCatch$4(ClientModLoader.java:129) ~[forge-1.17.1-37.0.109-universal.jar%23221!:?] {re:classloading,pl:runtimedistcleaner:A}     at net.minecraftforge.fmlclient.ClientModLoader.begin(ClientModLoader.java:108) ~[forge-1.17.1-37.0.109-universal.jar%23221!:?] {re:classloading,pl:runtimedistcleaner:A}     at net.minecraft.client.Minecraft.<init>(Minecraft.java:460) ~[client-1.17.1-20210706.113038-srg.jar%23217!:?] {re:classloading,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A} -- Initialization -- Details: Stacktrace:     at net.minecraft.client.main.Main.main(Main.java:151) ~[client-1.17.1-20210706.113038-srg.jar%23217!:?] {re:classloading,pl:runtimedistcleaner:A}     at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?] {}     at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:78) ~[?:?] {}     at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?] {}     at java.lang.reflect.Method.invoke(Method.java:567) ~[?:?] {}     at net.minecraftforge.fml.loading.targets.CommonClientLaunchHandler.lambda$launchService$0(CommonClientLaunchHandler.java:45) ~[fmlloader-1.17.1-37.0.109.jar%2322!:?] {}     at cpw.mods.modlauncher.LaunchServiceHandlerDecorator.launch(LaunchServiceHandlerDecorator.java:37) [modlauncher-9.0.7.jar%235!:?] {}     at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:53) [modlauncher-9.0.7.jar%235!:?] {}     at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:71) [modlauncher-9.0.7.jar%235!:?] {}     at cpw.mods.modlauncher.Launcher.run(Launcher.java:106) [modlauncher-9.0.7.jar%235!:?] {}     at cpw.mods.modlauncher.Launcher.main(Launcher.java:77) [modlauncher-9.0.7.jar%235!:?] {}     at cpw.mods.modlauncher.BootstrapLaunchConsumer.accept(BootstrapLaunchConsumer.java:26) [modlauncher-9.0.7.jar%235!:?] {}     at cpw.mods.modlauncher.BootstrapLaunchConsumer.accept(BootstrapLaunchConsumer.java:23) [modlauncher-9.0.7.jar%235!:?] {}     at cpw.mods.bootstraplauncher.BootstrapLauncher.main(BootstrapLauncher.java:90) [bootstraplauncher-0.1.17.jar:?] {} -- System Details -- Details:     Minecraft Version: 1.17.1     Minecraft Version ID: 1.17.1     Operating System: Windows 10 (amd64) version 10.0     Java Version: 16.0.1, Microsoft     Java VM Version: OpenJDK 64-Bit Server VM (mixed mode), Microsoft     Memory: 1436850640 bytes (1370 MiB) / 2885681152 bytes (2752 MiB) up to 9663676416 bytes (9216 MiB)     CPUs: 6     Processor Vendor: GenuineIntel     Processor Name: Intel(R) Core(TM) i5-8600K CPU @ 3.60GHz     Identifier: Intel64 Family 6 Model 158 Stepping 10     Microarchitecture: Coffee Lake     Frequency (GHz): 3.60     Number of physical packages: 1     Number of physical CPUs: 6     Number of logical CPUs: 6     Graphics card #0 name: NVIDIA GeForce RTX 2080 Ti     Graphics card #0 vendor: NVIDIA (0x10de)     Graphics card #0 VRAM (MB): 4095.00     Graphics card #0 deviceId: 0x1e07     Graphics card #0 versionInfo: DriverVersion=30.0.14.9649     Memory slot #0 capacity (MB): 16384.00     Memory slot #0 clockSpeed (GHz): 2.13     Memory slot #0 type: DDR4     Memory slot #1 capacity (MB): 16384.00     Memory slot #1 clockSpeed (GHz): 2.13     Memory slot #1 type: DDR4     Virtual memory max (MB): 34740.69     Virtual memory used (MB): 18387.16     Swap memory total (MB): 2048.00     Swap memory used (MB): 81.51     JVM Flags: 5 total; -XX:HeapDumpPath=MojangTricksIntelDriversForPerformance_javaw.exe_minecraft.exe.heapdump -Xss1M -Xmx9216m -Xms256m -XX:PermSize=256m     Launched Version: forge-37.0.109     Backend library: LWJGL version 3.2.2 SNAPSHOT     Backend API: NVIDIA GeForce RTX 2080 Ti/PCIe/SSE2 GL version 3.2.0 NVIDIA 496.49, NVIDIA Corporation     Window size: <not initialized>     GL Caps: Using framebuffer using OpenGL 3.2     GL debug messages:      Using VBOs: Yes     Is Modded: Definitely; Client brand changed to 'forge'     Type: Client (map_client.txt)     CPU: 6x Intel(R) Core(TM) i5-8600K CPU @ 3.60GHz     ModLauncher: 9.0.7+91+master.8569cdf     ModLauncher launch target: forgeclient     ModLauncher naming: srg     ModLauncher services:           mixin PLUGINSERVICE           eventbus PLUGINSERVICE           object_holder_definalize PLUGINSERVICE           runtime_enum_extender PLUGINSERVICE           capability_token_subclass PLUGINSERVICE           capability_inject_definalize PLUGINSERVICE           accesstransformer PLUGINSERVICE           runtimedistcleaner PLUGINSERVICE           mixin TRANSFORMATIONSERVICE           fml TRANSFORMATIONSERVICE      FML Language Providers:          minecraft@1.0         kotori_scala@2.13.6-build-4         javafml@null
    • I still can't figure what's happening. Apparently ShapedRecipeBuilder.save() tries to run this.result.getItemCategory(), but this.result is null, but shoudn't this.result already be defined by ShapedRecipeBuilder.shaped()?
  • Topics

  • Who's Online (See full list)

×
×
  • Create New...

Important Information

By using this site, you agree to our Privacy Policy.