Tigereye504 / chestcavity

Side effects may include shortness of breath, inhibited healing, inability to fight off infection, vulnerability to physical harm, weakness, loss of nutrition, difficulty walking or running, and sacrifice to Aztec gods .
26 stars 15 forks source link

[1.16.5] Player booted from server when using dragon breath #50

Closed CplPibald closed 2 years ago

CplPibald commented 3 years ago

Using chestcavity-2.12.2 on MC 1.16.5 Dedicated server

1) Add dragon lung to player 2) Press dragon breath hotkey

Player is immediately disconnected from server. Neither client nor server has crashed; player can immediately reconnect. Dragon breath cloud is created at player's location (player will probably get hit by it on next login)

Possibly related to issue #17


Server exception:

[15:14:43] [Netty Epoll Server IO #14/ERROR]: Encountered exception while handling in channel with name "chestcavity:hotkey"
java.lang.IllegalArgumentException: Maybe a mod is trying to add entity in a non-server thread. This is probably not IP's issue
        at org.apache.commons.lang3.Validate.isTrue(Validate.java:158) ~[intermediary-server.jar:?]
        at com.qouteall.immersive_portals.network.CommonNetwork.withForceRedirect(CommonNetwork.java:20) ~[3b9a9020-6398-40fb-80fe-e19c34352e61.jar:?]
        at net.minecraft.class_3898$class_3208.updateEntityTrackingStatus(class_3898.java:1957) ~[intermediary-server.jar:?]
        at net.minecraft.class_3898$class_3208.method_18729(class_3898.java:1913) ~[intermediary-server.jar:?]
        at net.minecraft.class_3898.method_18701(class_3898.java:1020) ~[intermediary-server.jar:?]
        at net.minecraft.class_3215.method_18755(class_3215.java:477) ~[intermediary-server.jar:?]
        at net.minecraft.class_3218.method_18778(class_3218.java:933) ~[intermediary-server.jar:?]
        at net.minecraft.class_3218.method_14175(class_3218.java:835) ~[intermediary-server.jar:?]
        at net.minecraft.class_3218.method_8649(class_3218.java:765) ~[intermediary-server.jar:?]
        at net.tigereye.chestcavity.listeners.OrganActivationListeners.ActivateDragonBreath(OrganActivationListeners.java:120) ~[chestcavity-2.12.2.jar:?]
        at net.tigereye.chestcavity.listeners.OrganActivationListeners.activate(OrganActivationListeners.java:62) ~[chestcavity-2.12.2.jar:?]
        at net.tigereye.chestcavity.util.NetworkUtil.ReadChestCavityHotkeyPacket(NetworkUtil.java:84) ~[chestcavity-2.12.2.jar:?]
        at net.tigereye.chestcavity.registration.CCNetworkingPackets.lambda$null$2(CCNetworkingPackets.java:34) ~[chestcavity-2.12.2.jar:?]
        at java.util.Optional.ifPresent(Optional.java:159) ~[?:1.8.0_181]
        at net.tigereye.chestcavity.registration.CCNetworkingPackets.lambda$register$3(CCNetworkingPackets.java:34) ~[chestcavity-2.12.2.jar:?]
        at net.fabricmc.fabric.impl.networking.server.ServerPlayNetworkAddon.receive(ServerPlayNetworkAddon.java:89) ~[39c7fdf9-2dc4-4421-9e09-7eb8dfa842dc.jar:
?]
        at net.fabricmc.fabric.impl.networking.server.ServerPlayNetworkAddon.receive(ServerPlayNetworkAddon.java:38) ~[39c7fdf9-2dc4-4421-9e09-7eb8dfa842dc.jar:
?]                                                                                                                                                                      at net.fabricmc.fabric.impl.networking.AbstractChanneledNetworkAddon.handle(AbstractChanneledNetworkAddon.java:100) [39c7fdf9-2dc4-4421-9e09-7eb8dfa842d
c.jar:?]
        at net.fabricmc.fabric.impl.networking.server.ServerPlayNetworkAddon.handle(ServerPlayNetworkAddon.java:84) [39c7fdf9-2dc4-4421-9e09-7eb8dfa842dc.jar:?]
        at net.minecraft.class_3244.handler$bkj000$handleCustomPayloadReceivedAsync(class_3244.java:2674) [intermediary-server.jar:?]
        at net.minecraft.class_3244.method_12075(class_3244.java) [intermediary-server.jar:?]
DarianLStephens commented 2 years ago

I just got the exact same error in the 1.17 version (Chest Cavity 2.13.0). Upon reconnecting to the server, the breath cloud is present, and you have the cooldown effect, so the log is probably right in that Chest Cavity is attempting to do something, maybe spawn the effect cloud, in a thread it shouldn't.

ghost commented 2 years ago

it might be immersive portals, that causes issues with the silk gland for me

CplPibald commented 2 years ago

Immersive Portals was in my pack as well. It sounds like a mod conflict.

If that means this won't be fixed (not judging - I understand how difficult cross-mod issues are), then you may want to note the incompatibility on the download page. Immersive Portals is a pretty popular fabric mod.

Tigereye504 commented 2 years ago

Good news, I think I found the source of the problem! Entity spawning is a touchy thing to do, and doing so in the wrong thread can cause bad reactions. Immersive portals is reacting with the item and status effect cloud entities spawned by the abilities in question, though I do not really understand how or why. Perhaps because they still in the I/O thread? Regardless, moving the spawning of those entities to the spawning queue that handles CC's projectile abilities solved the problem. An update will be coming out soon with the fix.

So yea, the error was right all along.