Jump to content

[SOLVED] Adding tasks for different side than original(CLIENT-SERVER) by using NetworkEvent.Context


Mr Bonobo

Recommended Posts

What is the new way of adding task to work queue?

What i want to do in old way:

public static void handle(Packet message, Supplier<NetworkEvent.Context> contextSupplier) {
FMLCommonHandler.instance().getWorldThread(contextSupplier.netHandler).addScheduledTask(() ->

New way:

public static void handle(Packetmessage, Supplier<NetworkEvent.Context> contextSupplier) {
      contextSupplier.get().enqueueWork(() -> {

If contexSupplier is CLIENT, it will add task on CLIENT. So what should i do to add task on DEDICATED_SERVER, even though contextSupplier is CLIENT?

Edited by Mr Bonobo
Link to comment
Share on other sites

Ok, I somewhat managed to make it work in different way by accessing capability values with:

 

public static void handle(PacketTriggerElectricGen message, Supplier<NetworkEvent.Context> contextSupplier) {
contextSupplier.get().enqueueWork(() -> {
    contextSupplier.get().getSender().getServerWorld().getTileEntity(message.blockPos).
            getCapability(new UtilCapabilities().UTIL_CAP).ifPresent(st -> {

And context shouldnt be in CLIENT-side, because this packet is triggered by sendToServer(new etc...) from CLIENTside, only sender should be a CLIENT. Even though i tested with DistExecutor which side it is, and it shows its always a CLIENT, but maybe its SERVER after all if I managed to access SERVER side capability values.

Link to comment
Share on other sites

3 minutes ago, diesieben07 said:

You are the confusing the concepts of distribution (dedicated server vs the client launched from the launcher, this is what DistExecutor checks) vs logical side (server, including integrated server used in singleplayer, vs client, the thing that renders the game and accepts inputs).

What matters here is the logical side, which is usually accessible using World#isRemote (true on the client). The context also tells you the direction (it is on the network thread, this is why you need to "enqueueWork" and also why you don't have a world here) using NetworkEvent.Context#getDirection.

Wow! Very good and full-explanitory post. It solved probably all my questions. Only one question came from it: if i create packet, which is sent from a SERVER and handled by a CLIENT, I dont need to use enqueueWork then, or I should add this scheduled task always to prevent bugs/overlapping even on CLIENT side??

Link to comment
Share on other sites

1 minute ago, diesieben07 said:

Yes, you do. Packets are received on the network thread always, that's why you need enqueueWork (you can read the name as "doThisOnMainThread"). Most of Minecraft is not thread-safe, which is why you need to schedule your code to run on the main thread if you want to do anything meaningful from your packet.

A many thanks to you! :)

Link to comment
Share on other sites

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

    • Hi, I was wondering if you could expand on this? I'm trying to remove the clouds from my custom dimension but I don't really know where to start.
    • My server console: INFO java.lang.NullPointerException: Cannot invoke "net.minecraft.server.level.ServerLevel.m_6857_()" because "serverlevel2" is null 02.12 22:25:44 [Server] net.minecraft.server.MinecraftServer.m_129885_(MinecraftServer.java:513) ~[server-1.20.1-20230612.114412-srg.jar%23225!/:? {re:mixin,pl:accesstransformer:B,re:classloading,pl:accesstransformer:B,pl:mixin:A} 02.12 22:25:44 [Server] net.minecraft.server.MinecraftServer.m_7041_(MinecraftServer.java:584) ~[server-1.20.1-20230612.114412-srg.jar%23225!/:? {re:mixin,pl:accesstransformer:B,re:classloading,pl:accesstransformer:B,pl:mixin:A} 02.12 22:25:44 [Server] net.minecraft.server.dedicated.DedicatedServer.m_7041_(DedicatedServer.java:510) ~[server-1.20.1-20230612.114412-srg.jar%23225!/:? {re:mixin,pl:accesstransformer:B,re:classloading,pl:accesstransformer:B,pl:mixin:APP:tombstone.mixins.json:DedicatedServerMixin,pl:mixin:A} 02.12 22:25:44 [Server] net.minecraft.server.MinecraftServer.m_130011_(MinecraftServer.java:689) ~[server-1.20.1-20230612.114412-srg.jar%23225!/:? {re:mixin,pl:accesstransformer:B,re:classloading,pl:accesstransformer:B,pl:mixin:A} 02.12 22:25:44 [Multicraft] Server shut down (running) 02.12 22:25:44 [Multicraft] Not restarting crashed server. 02.12 22:25:44 [Multicraft] Stopping server! 02.12 22:25:46 [Multicraft] Server stopped ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Crash file:  ---- Minecraft Crash Report ---- // Oops. Time: 2023-12-02 22:25:43 Description: Exception in server tick loop java.lang.NullPointerException: Cannot invoke "com.google.gson.JsonArray.iterator()" because "$$1" is null     at net.minecraft.server.players.StoredUserList.m_11399_(StoredUserList.java:121) ~[server-1.20.1-20230612.114412-srg.jar%23225!/:?] {re:classloading}     at net.minecraft.server.dedicated.DedicatedPlayerList.m_139596_(DedicatedPlayerList.java:85) ~[server-1.20.1-20230612.114412-srg.jar%23225!/:?] {re:classloading}     at net.minecraft.server.dedicated.DedicatedPlayerList.<init>(DedicatedPlayerList.java:24) ~[server-1.20.1-20230612.114412-srg.jar%23225!/:?] {re:classloading}     at net.minecraft.server.dedicated.DedicatedServer.m_7038_(DedicatedServer.java:158) ~[server-1.20.1-20230612.114412-srg.jar%23225!/:?] {re:mixin,pl:accesstransformer:B,re:classloading,pl:accesstransformer:B,pl:mixin:APP:tombstone.mixins.json:DedicatedServerMixin,pl:mixin:A}     at net.minecraft.server.MinecraftServer.m_130011_(MinecraftServer.java:634) ~[server-1.20.1-20230612.114412-srg.jar%23225!/:?] {re:mixin,pl:accesstransformer:B,re:classloading,pl:accesstransformer:B,pl:mixin:A}     at net.minecraft.server.MinecraftServer.m_206580_(MinecraftServer.java:251) ~[server-1.20.1-20230612.114412-srg.jar%23225!/:?] {re:mixin,pl:accesstransformer:B,re:classloading,pl:accesstransformer:B,pl:mixin:A}     at java.lang.Thread.run(Thread.java:833) ~[?:?] {re:mixin} A detailed walkthrough of the error, its code path and all known details is as follows: --------------------------------------------------------------------------------------- -- System Details -- Details:     Minecraft Version: 1.20.1     Minecraft Version ID: 1.20.1     Operating System: Linux (amd64) version 4.15.0-206-generic     Java Version: 17, Oracle Corporation     Java VM Version: OpenJDK 64-Bit Server VM (mixed mode, sharing), Oracle Corporation     Memory: 554926416 bytes (529 MiB) / 1665138688 bytes (1588 MiB) up to 6442450944 bytes (6144 MiB)     CPUs: 24     Processor Vendor: AuthenticAMD     Processor Name: AMD Ryzen 9 3900X 12-Core Processor     Identifier: AuthenticAMD Family 23 Model 113 Stepping 0     Microarchitecture: Zen 2     Frequency (GHz): -0.00     Number of physical packages: 1     Number of physical CPUs: 12     Number of logical CPUs: 24     Graphics card #0 name: ASPEED Graphics Family     Graphics card #0 vendor: ASPEED Technology, Inc. (0x1a03)     Graphics card #0 VRAM (MB): 0.00     Graphics card #0 deviceId: 0x2000     Graphics card #0 versionInfo: unknown     Virtual memory max (MB): 70588.73     Virtual memory used (MB): 99740.80     Swap memory total (MB): 6144.00     Swap memory used (MB): 46.75     JVM Flags: 2 total; -Xmx6144M -Xms512M     Server Running: true     Data Packs: vanilla, mod:betterdungeons, mod:villagesandpillages (incompatible), mod:supermartijn642configlib (incompatible), mod:mutantmonsters, mod:rechiseled (incompatible), mod:geckolib, mod:jei, mod:graveyard (incompatible), mod:libraryferret, mod:goblintraders (incompatible), mod:dynamiclights (incompatible), mod:sophisticatedcore (incompatible), mod:reap, mod:waystones, mod:monsterplus (incompatible), mod:forgeendertech, mod:structory, mod:journeymap (incompatible), mod:citadel (incompatible), mod:alexsmobs (incompatible), mod:artifacts, mod:yungsapi, mod:mixinextras (incompatible), mod:dungeoncrawl, mod:sophisticatedbackpacks (incompatible), mod:balm, mod:terralith, mod:fusion, mod:usefulslime (incompatible), mod:imst, mod:puzzlesaccessapi, mod:betterfortresses, mod:cloth_config (incompatible), mod:forge, mod:twilightforest, mod:supplementaries, mod:geophilic, mod:athena, mod:dungeons_arise, mod:chipped (incompatible), mod:vanillaplustools (incompatible), mod:moonlight (incompatible), mod:mixinsquared (incompatible), mod:jade (incompatible), mod:creativecore, mod:sleep_tight (incompatible), mod:supermartijn642corelib (incompatible), mod:curios (incompatible), mod:brutalbosses (incompatible), mod:securitycraft, mod:bettervillage, mod:elevatorid, mod:betterstrongholds, mod:tombstone, mod:resourcefullib (incompatible), mod:architectury (incompatible), mod:appleskin (incompatible), mod:cupboard (incompatible), mod:puzzleslib, mod:jadeaddons (incompatible), mod:framework, mod:expandability (incompatible), mod:bettermineshafts, mod:playerrevive, mod:cristellib (incompatible), Supplementaries Generated Pack, mutantmonsters:biome_modifications     Enabled Feature Flags: minecraft:vanilla     World Generation: Experimental     Is Modded: Definitely; Server brand changed to 'forge'     Type: Dedicated Server (map_server.txt)     ModLauncher: 10.0.9+10.0.9+main.dcd20f30     ModLauncher launch target: forgeserver     ModLauncher naming: srg     ModLauncher services:          mixin-0.8.5.jar mixin PLUGINSERVICE          eventbus-6.0.5.jar eventbus PLUGINSERVICE          fmlloader-1.20.1-47.2.8.jar slf4jfixer PLUGINSERVICE          fmlloader-1.20.1-47.2.8.jar object_holder_definalize PLUGINSERVICE          fmlloader-1.20.1-47.2.8.jar runtime_enum_extender PLUGINSERVICE          fmlloader-1.20.1-47.2.8.jar capability_token_subclass PLUGINSERVICE          accesstransformers-8.0.4.jar accesstransformer PLUGINSERVICE          fmlloader-1.20.1-47.2.8.jar runtimedistcleaner PLUGINSERVICE          modlauncher-10.0.9.jar mixin TRANSFORMATIONSERVICE          modlauncher-10.0.9.jar fml TRANSFORMATIONSERVICE      FML Language Providers:          minecraft@1.0         lowcodefml@null         javafml@null     Mod List:          YungsBetterDungeons-1.20-Forge-4.0.3.jar          |YUNG's Better Dungeons        |betterdungeons                |1.20-Forge-4.0.3    |DONE      |Manifest: NOSIGNATURE         villagesandpillages-forge-mc1.20.1-1.0.0.jar      |Villages&Pillages             |villagesandpillages           |1.0.0               |DONE      |Manifest: NOSIGNATURE         supermartijn642configlib-1.1.8-forge-mc1.20.jar   |SuperMartijn642's Config Libra|supermartijn642configlib      |1.1.8               |DONE      |Manifest: NOSIGNATURE         MutantMonsters-v8.0.4-1.20.1-Forge.jar            |Mutant Monsters               |mutantmonsters                |8.0.4               |DONE      |Manifest: 9a:09:85:98:65:c4:8c:11:c5:49:f6:d6:33:23:39:df:8d:b4:ff:92:84:b8:bd:a5:83:9f:ac:7f:2a:d1:4b:6a         rechiseled-1.1.5c-forge-mc1.20.jar                |Rechiseled                    |rechiseled                    |1.1.5c              |DONE      |Manifest: NOSIGNATURE         geckolib-forge-1.20.1-4.2.4.jar                   |GeckoLib 4                    |geckolib                      |4.2.4               |DONE      |Manifest: NOSIGNATURE         jei-1.20.1-forge-15.2.0.27.jar                    |Just Enough Items             |jei                           |15.2.0.27           |DONE      |Manifest: NOSIGNATURE         The_Graveyard_2.6.2_(FORGE)_for_1.20+.jar         |The Graveyard                 |graveyard                     |2.6.2               |DONE      |Manifest: NOSIGNATURE         libraryferret-forge-1.20.1-4.0.0.jar              |Library ferret                |libraryferret                 |4.0.0               |DONE      |Manifest: NOSIGNATURE         goblintraders-forge-1.20.1-1.9.3.jar              |Goblin Traders                |goblintraders                 |1.9.3               |DONE      |Manifest: 0d:78:5f:44:c0:47:0c:8c:e2:63:a3:04:43:d4:12:7d:b0:7c:35:37:dc:40:b1:c1:98:ec:51:eb:3b:3c:45:99         dynamiclights-1.20.1.2.jar                        |Dynamic Lights                |dynamiclights                 |1.20.1.2            |DONE      |Manifest: NOSIGNATURE         sophisticatedcore-1.20.1-0.5.107.496.jar          |Sophisticated Core            |sophisticatedcore             |0.5.107.496         |DONE      |Manifest: NOSIGNATURE         reap-1.20.1-1.0.2.jar                             |Reap Mod                      |reap                          |1.20.1-1.0.2        |DONE      |Manifest: NOSIGNATURE         waystones-forge-1.20-14.0.2.jar                   |Waystones                     |waystones                     |14.0.2              |DONE      |Manifest: NOSIGNATURE         MonsterPlus-Forge1.20.1-v1.1.6.1.jar              |Monster Plus                  |monsterplus                   |1.0                 |DONE      |Manifest: NOSIGNATURE         ForgeEndertech-1.20.1-11.1.0.0-build.0142.jar     |ForgeEndertech                |forgeendertech                |11.1.0.0            |DONE      |Manifest: NOSIGNATURE         Structory_1.20.2_v1.3.3.jar                       |Structory                     |structory                     |1.3.3               |DONE      |Manifest: NOSIGNATURE         journeymap-1.20.1-5.9.18-neoforge.jar             |Journeymap                    |journeymap                    |5.9.18              |DONE      |Manifest: NOSIGNATURE         citadel-2.4.9-1.20.1.jar                          |Citadel                       |citadel                       |2.4.9               |DONE      |Manifest: NOSIGNATURE         alexsmobs-1.22.6.jar                              |Alex's Mobs                   |alexsmobs                     |1.22.6              |DONE      |Manifest: NOSIGNATURE         artifacts-forge-9.2.0.jar                         |Artifacts                     |artifacts                     |9.2.0               |DONE      |Manifest: NOSIGNATURE         YungsApi-1.20-Forge-4.0.2.jar                     |YUNG's API                    |yungsapi                      |1.20-Forge-4.0.2    |DONE      |Manifest: NOSIGNATURE         mixinextras-forge-0.2.1-beta.2.jar                |MixinExtras                   |mixinextras                   |0.2.1-beta.2        |DONE      |Manifest: NOSIGNATURE         Dungeon+Crawl-1.20.1-2.3.14.jar                   |Dungeon Crawl                 |dungeoncrawl                  |2.3.14              |DONE      |Manifest: NOSIGNATURE         sophisticatedbackpacks-1.20.1-3.18.68.952.jar     |Sophisticated Backpacks       |sophisticatedbackpacks        |3.18.68.952         |DONE      |Manifest: NOSIGNATURE         balm-forge-1.20.1-7.1.4.jar                       |Balm                          |balm                          |7.1.4               |DONE      |Manifest: NOSIGNATURE         Terralith_1.20.2_v2.4.8.jar                       |Terralith                     |terralith                     |2.4.8               |DONE      |Manifest: NOSIGNATURE         fusion-1.1.0b-forge-mc1.20.1.jar                  |Fusion                        |fusion                        |1.1.0b              |DONE      |Manifest: NOSIGNATURE         UsefulSlime-forge-1.20.2-1.7.1.jar                |Useful Slime                  |usefulslime                   |1.7.1               |DONE      |Manifest: NOSIGNATURE         imst-2.1.0.jar                                    |Immersive Structures          |imst                          |2.1.0               |DONE      |Manifest: NOSIGNATURE         puzzlesaccessapi-forge-8.0.7.jar                  |Puzzles Access Api            |puzzlesaccessapi              |8.0.7               |DONE      |Manifest: 9a:09:85:98:65:c4:8c:11:c5:49:f6:d6:33:23:39:df:8d:b4:ff:92:84:b8:bd:a5:83:9f:ac:7f:2a:d1:4b:6a         YungsBetterNetherFortresses-1.20-Forge-2.0.5.jar  |YUNG's Better Nether Fortresse|betterfortresses              |1.20-Forge-2.0.5    |DONE      |Manifest: NOSIGNATURE         cloth-config-11.1.106-forge.jar                   |Cloth Config v10 API          |cloth_config                  |11.1.106            |DONE      |Manifest: NOSIGNATURE         forge-1.20.1-47.2.8-universal.jar                 |Forge                         |forge                         |47.2.8              |DONE      |Manifest: 84:ce:76:e8:45:35:e4:0e:63:86:df:47:59:80:0f:67:6c:c1:5f:6e:5f:4d:b3:54:47:1a:9f:7f:ed:5e:f2:90         twilightforest-1.20.1-4.3.1893-universal.jar      |The Twilight Forest           |twilightforest                |4.3.1893            |DONE      |Manifest: NOSIGNATURE         supplementaries-1.20-2.6.31.jar                   |Supplementaries               |supplementaries               |1.20-2.6.31         |DONE      |Manifest: NOSIGNATURE         geophilic-v2.1.0-mc1.20u1.20.2.jar                |Geophilic                     |geophilic                     |2.1.0-mc1.20u1.20.2 |DONE      |Manifest: NOSIGNATURE         athena-forge-1.20.1-3.1.1.jar                     |Athena                        |athena                        |3.1.1               |DONE      |Manifest: NOSIGNATURE         DungeonsArise-1.20.1-2.1.57-release.jar           |When Dungeons Arise           |dungeons_arise                |2.1.57-1.20.1       |DONE      |Manifest: NOSIGNATURE         chipped-forge-1.20.1-3.0.1.jar                    |Chipped                       |chipped                       |3.0.1               |DONE      |Manifest: NOSIGNATURE         server-1.20.1-20230612.114412-srg.jar             |Minecraft                     |minecraft                     |1.20.1              |DONE      |Manifest: NOSIGNATURE         vanillaplustools-1.20-1.0.jar                     |Vanilla+ Tools                |vanillaplustools              |1.20-1.0            |DONE      |Manifest: NOSIGNATURE         moonlight-1.20-2.8.66-forge.jar                   |Moonlight Library             |moonlight                     |1.20-2.8.66         |DONE      |Manifest: NOSIGNATURE         mixinsquared-forge-0.1.1.jar                      |MixinSquared                  |mixinsquared                  |0.1.1               |DONE      |Manifest: NOSIGNATURE         Jade-1.20.1-forge-11.6.3.jar                      |Jade                          |jade                          |11.6.3              |DONE      |Manifest: NOSIGNATURE         CreativeCore_FORGE_v2.11.10_mc1.20.1.jar          |CreativeCore                  |creativecore                  |2.11.10             |DONE      |Manifest: NOSIGNATURE         sleep_tight-1.20-1.1.8.jar                        |Sleep Tight                   |sleep_tight                   |1.20-1.1.8          |DONE      |Manifest: NOSIGNATURE         supermartijn642corelib-1.1.15-forge-mc1.20.jar    |SuperMartijn642's Core Lib    |supermartijn642corelib        |1.1.15              |DONE      |Manifest: NOSIGNATURE         curios-forge-5.4.3+1.20.1.jar                     |Curios API                    |curios                        |5.4.3+1.20.1        |DONE      |Manifest: NOSIGNATURE         brutalbosses-1.20.1-6.6.jar                       |brutalbosses mod              |brutalbosses                  |1.20.1-6.6          |DONE      |Manifest: NOSIGNATURE         [1.20.1]+SecurityCraft+v1.9.8.jar                 |SecurityCraft                 |securitycraft                 |1.9.8               |DONE      |Manifest: NOSIGNATURE         bettervillage-forge-1.20.1-3.2.0 (1).jar          |Better village                |bettervillage                 |3.1.0               |DONE      |Manifest: NOSIGNATURE         elevatorid-1.20.1-lex-1.9.jar                     |Elevator Mod                  |elevatorid                    |1.20.1-lex-1.9      |DONE      |Manifest: NOSIGNATURE         YungsBetterStrongholds-1.20-Forge-4.0.3.jar       |YUNG's Better Strongholds     |betterstrongholds             |1.20-Forge-4.0.3    |DONE      |Manifest: NOSIGNATURE         tombstone-8.5.5-1.20.1.jar                        |Corail Tombstone              |tombstone                     |8.5.5               |DONE      |Manifest: NOSIGNATURE         resourcefullib-forge-1.20.1-2.1.18.jar            |Resourceful Lib               |resourcefullib                |2.1.18              |DONE      |Manifest: NOSIGNATURE         architectury-9.1.12-forge.jar                     |Architectury                  |architectury                  |9.1.12              |DONE      |Manifest: NOSIGNATURE         appleskin-forge-mc1.20.1-2.5.1.jar                |AppleSkin                     |appleskin                     |2.5.1+mc1.20.1      |DONE      |Manifest: NOSIGNATURE         cupboard-1.20.1-2.1.jar                           |Cupboard utilities            |cupboard                      |1.20.1-2.1          |DONE      |Manifest: NOSIGNATURE         PuzzlesLib-v8.1.9-1.20.1-Forge.jar                |Puzzles Lib                   |puzzleslib                    |8.1.9               |DONE      |Manifest: 9a:09:85:98:65:c4:8c:11:c5:49:f6:d6:33:23:39:df:8d:b4:ff:92:84:b8:bd:a5:83:9f:ac:7f:2a:d1:4b:6a         JadeAddons-1.20.1-forge-5.2.1.jar                 |Jade Addons                   |jadeaddons                    |5.2.1               |DONE      |Manifest: NOSIGNATURE         framework-forge-1.20.1-0.6.16.jar                 |Framework                     |framework                     |0.6.16              |DONE      |Manifest: 0d:78:5f:44:c0:47:0c:8c:e2:63:a3:04:43:d4:12:7d:b0:7c:35:37:dc:40:b1:c1:98:ec:51:eb:3b:3c:45:99         expandability-forge-9.0.0.jar                     |ExpandAbility                 |expandability                 |9.0.0               |DONE      |Manifest: NOSIGNATURE         YungsBetterMineshafts-1.20-Forge-4.0.4.jar        |YUNG's Better Mineshafts      |bettermineshafts              |1.20-Forge-4.0.4    |DONE      |Manifest: NOSIGNATURE         PlayerRevive_FORGE_v2.0.19_mc1.20.1.jar           |PlayerRevive                  |playerrevive                  |2.0.19              |DONE      |Manifest: NOSIGNATURE         cristellib-1.1.5-forge.jar                        |Cristel Lib                   |cristellib                    |1.1.5               |DONE      |Manifest: NOSIGNATURE     Crash Report UUID: 0bd76986-5800-4dc8-8381-8851e0739175     FML: 47.2     Forge: net.minecraftforge:47.2.8
    • When loading into the world I can see a glimpse of the terrain load and then the game crashes. The same thing happens for my friend. I'm not sure what mod is causing the crash.   Here is the crash log: https://pastebin.com/k80kuS1d
    • Hice este video sobre Minecraft y es el primer video de mi canal, me gustaría que puedan verlo y apoyarme, pero también critiquen en el video para poder mejorar el contenido, gracias https://www.youtube.com/watch?v=bYpNWs8M7zs&t=21s
  • Topics

×
×
  • Create New...

Important Information

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