TeamWizardry / Wizardry

Delve into spell creation and become a wizard
Other
64 stars 20 forks source link

Unknown crash on my server caused by Wizardry #359

Closed BloxMaster3 closed 1 week ago

BloxMaster3 commented 4 months ago

Crash Report: crash-2024-04-23_06.36.34-server.txt Latest Log: latest.zip the crash just happened randomly with no visible cause in-game, but only the server crashed, the client was just disconnected

Hadaward commented 4 months ago

The crash happened in the Phase Effect. The most likely reason is that the new blacklist system did not take into account that the effect can be applied to mobs, and may have caused an error. But it's good to check.

BloxMaster3 commented 4 months ago

The crash happened in the Phase Effect. The most likely reason is that the new blacklist system did not take into account that the effect can be applied to mobs, and may have caused an error. But it's good to check.

whats the newest version that doesn't have this blacklist system or can I disable it?

Hadaward commented 4 months ago

The crash happened in the Phase Effect. The most likely reason is that the new blacklist system did not take into account that the effect can be applied to mobs, and may have caused an error. But it's good to check.

whats the newest version that doesn't have this blacklist system or can I disable it?

The blacklist system was introduced in v0.11.2 so I recommend using the previous version.

BloxMaster3 commented 4 months ago

The crash happened in the Phase Effect. The most likely reason is that the new blacklist system did not take into account that the effect can be applied to mobs, and may have caused an error. But it's good to check.

whats the newest version that doesn't have this blacklist system or can I disable it?

The blacklist system was introduced in v0.11.2 so I recommend using the previous version.

will this ever be fixed? I noticed on the discord that it says discontinued

Hadaward commented 4 months ago

Even though it is discontinued there is still one person who wants to keep version 1.12.2 and my team and I will start rewriting the mod for newer versions soon.

gravityfox commented 1 week ago

I did... SO MUCH DIGGING... in order to isolate this bug, though I didn't learn too much more than already covered here.

This crash will only happen on dedicated servers because of this offending line:

https://github.com/TeamWizardry/Wizardry/blob/master/src/main/java/com/teamwizardry/wizardry/common/potion/PotionPhase.java#L415

No surprises here, this is the line implicated in the crash report. Here's what happened:

AxisAlignedBB.getCenter() is CLIENT-SIDE ONLY. Meaning that when this line is reached on a dedicated server, it throws the NoMethodDefError. That throwable, being an error and not an exception, is then not caught by the try-catch.

The solution is to avoid using methods that exist on one side only, like that one. You can calculate the center yourself if you need it bad enough. If you really want to be cute, use a Mixin to add in the missing implementation to the class itself (making it dual-sided), since you already depend on that system.

I am not sure that this bug happens only in the case of a mob with the potion effect, as this code is essentially bad to run on the dedicated server in general. I don't see any sided code in that file that would suggest that when handling the potion effect for player entities that the offending line would not be executed on the server as well.

BloxMaster3 commented 1 week ago

I did... SO MUCH DIGGING... in order to isolate this bug, though I didn't learn too much more than already covered here.

This crash will only happen on dedicated servers because of this offending line:

https://github.com/TeamWizardry/Wizardry/blob/master/src/main/java/com/teamwizardry/wizardry/common/potion/PotionPhase.java#L415

No surprises here, this is the line implicated in the crash report. Here's what happened:

AxisAlignedBB.getCenter() is CLIENT-SIDE ONLY. Meaning that when this line is reached on a dedicated server, it throws the NoMethodDefError. That throwable, being an error and not an exception, is then not caught by the try-catch.

The solution is to avoid using methods that exist on one side only, like that one. You can calculate the center yourself if you need it bad enough. If you really want to be cute, use a Mixin to add in the missing implementation to the class itself (making it dual-sided), since you already depend on that system.

I am not sure that this bug happens only in the case of a mob with the potion effect, as this code is essentially bad to run on the dedicated server in general. I don't see any sided code in that file that would suggest that when handling the potion effect for player entities that the offending line would not be executed on the server as well.

yeah, i moved to electroblobs but good job finding the bug