iPortalTeam / ImmersivePortalsMod

Non-Euclidean in Minecraft. See through portals and teleport seamlessly.
https://qouteall.fun/immptl/
Apache License 2.0
422 stars 100 forks source link

Possible incompatiblity with WorldThreader #1472

Open ShiftySpace opened 7 months ago

ShiftySpace commented 7 months ago

Is it a mod compatibility issue?

Yes

If it's a mod compatibility issue, please provide the link(s) to the incompatible mod(s)

https://github.com/2No2Name/worldthreader

Minecraft version

1.20.1

Describe the issue

Possible incompatibility with worldthreader, it does the error below for every dimension since world threader gives each dimension it's own thread.

Though I have not found this actually being an issue in gameplay. Both seem to work properly and you can cross dimensions without issue. So I am not sure if it's just immersive portals warning that this could be an issue when it might not be.

error: [13:36:42] [worldthreader_immersive_portals:alternate1/ERROR]: Called in a non-server-main thread. java.lang.Throwable: null at qouteall.imm_ptl.core.chunk_loading.ImmPtlChunkTickets.flushThrottling(ImmPtlChunkTickets.java:169) ~[imm_ptl_core-3.3.5-fe5e07efa11dee9e.jar:?] at net.minecraft.class_3204.handler$zla000$imm_ptl_core$onRunAllUpdates(class_3204.java:1053) ~[client-intermediary.jar:?] at net.minecraft.class_3204.method_15892(class_3204.java:146) ~[client-intermediary.jar:?] at net.minecraft.class_3215.method_16155(class_3215.java:286) ~[client-intermediary.jar:?] at net.minecraft.class_3215.method_12127(class_3215.java:323) ~[client-intermediary.jar:?] at net.minecraft.class_3218.method_18765(class_3218.java:333) ~[client-intermediary.jar:?] at _2no2name.worldthreader.common.ServerWorldTicking.tickThreaded(ServerWorldTicking.java:71) ~[Worldthreader-1.5.0.jar:?] at _2no2name.worldthreader.common.ServerWorldTicking.runWorldThread(ServerWorldTicking.java:46) ~[Worldthreader-1.5.0.jar:?] at _2no2name.worldthreader.common.thread.WorldThreadingManager.lambda$new$0(WorldThreadingManager.java:42) ~[Worldthreader-1.5.0.jar:?] at java.lang.Thread.run(Thread.java:833) ~[?:?]

latest.log

qouteall commented 7 months ago

Currently, It's not recommend to use this mod with WorldThreader, as thread safety issue can occur rarely, but when it occurs the game state may become valid and it has the chance to corrupt the world saving. If you really want to use ImmPtl with WorldThreader, it's recommended to backup frequently.

qouteall commented 7 months ago

I made some changes that may fix the thread check of ImmPtlChunkTickets

ShiftySpace commented 7 months ago

Thanks for the reply. Yes I do hourly backups on my server. Just looking to optimize however I can, but having everything on a single thread is really limiting so separating dimensions to different threads would be so nice for my server but I understand it is extremely complicated to make sure everything works properly.

ShiftySpace commented 7 months ago

I compiled a version of the mod that has the threading code you added. It works super well! ran into no issues or errors thus far personally. Thanks again :)