WearBlackAllDay / DimensionalThreading

An attempt to optimize the fabric server, by assigning each dimension their own thread.
MIT License
256 stars 22 forks source link

Incompatible with ImmersivePortals #25

Closed YorbenJoosen closed 3 years ago

YorbenJoosen commented 3 years ago

Maybe this makes sense, but just wanted to give a heads up that this mod seems to be incompatible with Immersive Portals. `---- Minecraft Crash Report ---- // Shall we play a game?

Time: 6/7/21 5:43 PM Description: Exception ticking world

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) at com.qouteall.immersive_portals.network.CommonNetwork.withForceRedirect(CommonNetwork.java:20) at net.minecraft.class_3898$class_3208.updateEntityTrackingStatus(class_3898.java:1957) at net.minecraft.class_3898$class_3208.method_18729(class_3898.java:1913) at net.minecraft.class_3898.method_18701(class_3898.java:1020) at net.minecraft.class_3215.method_18755(class_3215.java:477) at net.minecraft.class_3218.method_18778(class_3218.java:933) at net.minecraft.class_3218.method_14175(class_3218.java:835) at net.minecraft.class_3218.method_8649(class_3218.java:765) at net.minecraft.class_5425$$Lambda$5271/93744078.accept(Unknown Source) at java.util.stream.Streams$StreamBuilderImpl.forEachRemaining(Streams.java:419) at java.util.stream.Streams$ConcatSpliterator.forEachRemaining(Streams.java:742) at java.util.stream.ReferencePipeline$Head.forEach(ReferencePipeline.java:580) at net.minecraft.class_5425.method_30771(class_5425.java:11) at net.minecraft.class_1948.method_24930(class_1948.java:283) at net.minecraft.class_1948.method_8663(class_1948.java:197) at net.minecraft.class_1948.method_27821(class_1948.java:185) at net.minecraft.class_3215.method_20801(class_3215.java:388) at net.minecraft.class_3215$$Lambda$5326/2069046900.accept(Unknown Source) at java.util.ArrayList.forEach(ArrayList.java:1249) at net.minecraft.class_3215.method_14161(class_3215.java:368) at net.minecraft.class_3215.method_12127(class_3215.java:337) at net.minecraft.class_3218.method_18765(class_3218.java:353) at net.minecraft.server.MinecraftServer.mda9013c$lambda$null$0$3(MinecraftServer.java:3254) at net.minecraft.server.MinecraftServer$$Lambda$5319/581430689.run(Unknown Source) at dimthread.DimThread.swapThreadsAndRun(DimThread.java:34) at net.minecraft.server.MinecraftServer.mda9013c$lambda$tickWorlds$1$2(MinecraftServer.java:3252) at net.minecraft.server.MinecraftServer$$Lambda$5313/156947916.accept(Unknown Source) at threading.ThreadPool.lambda$null$1(ThreadPool.java:50) at threading.ThreadPool$$Lambda$5315/699151490.run(Unknown Source) at threading.ThreadPool.lambda$execute$0(ThreadPool.java:44) at threading.ThreadPool$$Lambda$5316/1607687624.run(Unknown Source) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745)

A detailed walkthrough of the error, its code path and all known details is as follows:

-- Head -- Thread: Server thread Stacktrace: at org.apache.commons.lang3.Validate.isTrue(Validate.java:158) at com.qouteall.immersive_portals.network.CommonNetwork.withForceRedirect(CommonNetwork.java:20) at net.minecraft.class_3898$class_3208.updateEntityTrackingStatus(class_3898.java:1957) at net.minecraft.class_3898$class_3208.method_18729(class_3898.java:1913) at net.minecraft.class_3898.method_18701(class_3898.java:1020) at net.minecraft.class_3215.method_18755(class_3215.java:477) at net.minecraft.class_3218.method_18778(class_3218.java:933) at net.minecraft.class_3218.method_14175(class_3218.java:835) at net.minecraft.class_3218.method_8649(class_3218.java:765) at net.minecraft.class_5425$$Lambda$5271/93744078.accept(Unknown Source) at java.util.stream.Streams$StreamBuilderImpl.forEachRemaining(Streams.java:419) at java.util.stream.Streams$ConcatSpliterator.forEachRemaining(Streams.java:742) at java.util.stream.ReferencePipeline$Head.forEach(ReferencePipeline.java:580) at net.minecraft.class_5425.method_30771(class_5425.java:11) at net.minecraft.class_1948.method_24930(class_1948.java:283) at net.minecraft.class_1948.method_8663(class_1948.java:197) at net.minecraft.class_1948.method_27821(class_1948.java:185) at net.minecraft.class_3215.method_20801(class_3215.java:388) at net.minecraft.class_3215$$Lambda$5326/2069046900.accept(Unknown Source) at java.util.ArrayList.forEach(ArrayList.java:1249) at net.minecraft.class_3215.method_14161(class_3215.java:368) at net.minecraft.class_3215.method_12127(class_3215.java:337) at net.minecraft.class_3218.method_18765(class_3218.java:353) at net.minecraft.server.MinecraftServer.mda9013c$lambda$null$0$3(MinecraftServer.java:3254) at net.minecraft.server.MinecraftServer$$Lambda$5319/581430689.run(Unknown Source) at dimthread.DimThread.swapThreadsAndRun(DimThread.java:34)

-- Affected level -- Details: All players: 1 total; [class_3222['XThexLonexWolfX'/105, l='ServerWorld minecraft:overworld New World', x=53.50, y=63.00, z=-16.50]] Chunk stats: ServerChunkCache: 2025 Level dimension: minecraft:overworld Level spawn location: World: (61,63,-23), Chunk: (at 13,3,9 in 3,-2; contains blocks 48,0,-32 to 63,255,-17), Region: (0,-1; contains chunks 0,-32 to 31,-1, blocks 0,0,-512 to 511,255,-1) Level time: 27 game time, 27 day time Level name: New World Level game mode: Game mode: creative (ID 1). Hardcore: false. Cheats: true Level weather: Rain time: 94223 (now: false), thunder time: 102474 (now: false) Known server brands: fabric Level was modded: true Level storage version: 0x04ABD - Anvil Stacktrace: at dimthread.util.CrashInfo.crash(CrashInfo.java:27) at net.minecraft.server.MinecraftServer.handler$zhg000$tickWorlds(MinecraftServer.java:3264) at net.minecraft.server.MinecraftServer.method_3813(MinecraftServer.java:860) at net.minecraft.server.MinecraftServer.method_3748(MinecraftServer.java:811) at net.minecraft.class_1132.method_3748(class_1132.java:91) at net.minecraft.server.MinecraftServer.method_29741(MinecraftServer.java:670) at net.minecraft.server.MinecraftServer.method_29739(MinecraftServer.java:257) at net.minecraft.server.MinecraftServer$$Lambda$4935/732439412.run(Unknown Source) at java.lang.Thread.run(Thread.java:745)

-- System Details -- Details: Minecraft Version: 1.16.5 Minecraft Version ID: 1.16.5 Operating System: Windows 10 (amd64) version 10.0 Java Version: 1.8.0_51, Oracle Corporation Java VM Version: Java HotSpot(TM) 64-Bit Server VM (mixed mode), Oracle Corporation Memory: 1765375488 bytes (1683 MB) / 3657433088 bytes (3488 MB) up to 4294967296 bytes (4096 MB) CPUs: 12 JVM Flags: 9 total; -XX:HeapDumpPath=MojangTricksIntelDriversForPerformance_javaw.exe_minecraft.exe.heapdump -Xss1M -Xmx4G -XX:+UnlockExperimentalVMOptions -XX:+UseG1GC -XX:G1NewSizePercent=20 -XX:G1ReservePercent=20 -XX:MaxGCPauseMillis=50 -XX:G1HeapRegionSize=32M Fabric Mods: cloth-basic-math: Cloth Basic Math 0.5.1 cloth-config2: Cloth Config v4 4.11.15 com_github_wearblackallday_javautils: JavaUtils ab1e0ad736be1d2c2d74c68fa8e9e40e752f2d18 dimthread: DimensionalThreading 1.2.3 fabric: Fabric API 0.34.6+1.16 fabric-api-base: Fabric API Base 0.3.0+c88702897d fabric-api-lookup-api-v1: Fabric API Lookup API (v1) 1.0.0+dc716ea17d fabric-biome-api-v1: Fabric Biome API (v1) 3.1.10+3661eaa17d fabric-blockrenderlayer-v1: Fabric BlockRenderLayer Registration (v1) 1.1.5+ca58154a7d fabric-command-api-v1: Fabric Command API (v1) 1.1.1+351679a77d fabric-commands-v0: Fabric Commands (v0) 0.2.2+ca58154a7d fabric-containers-v0: Fabric Containers (v0) 0.1.11+9354966b7d fabric-content-registries-v0: Fabric Content Registries (v0) 0.2.1+ca58154a7d fabric-crash-report-info-v1: Fabric Crash Report Info (v1) 0.1.3+ca58154a7d fabric-dimensions-v1: Fabric Dimensions API (v1) 2.0.6+61336ba97d fabric-entity-events-v1: Fabric Entity Events (v1) 1.1.0+c88702897d fabric-events-interaction-v0: Fabric Events Interaction (v0) 0.4.2+ca58154a7d fabric-events-lifecycle-v0: Fabric Events Lifecycle (v0) 0.2.1+ca58154a7d fabric-game-rule-api-v1: Fabric Game Rule API (v1) 1.0.6+ca58154a7d fabric-item-api-v1: Fabric Item API (v1) 1.2.1+ca58154a7d fabric-item-groups-v0: Fabric Item Groups (v0) 0.2.7+2868a2287d fabric-key-binding-api-v1: Fabric Key Binding API (v1) 1.0.4+9354966b7d fabric-keybindings-v0: Fabric Key Bindings (v0) 0.2.1+ca58154a7d fabric-lifecycle-events-v1: Fabric Lifecycle Events (v1) 1.2.1+ca58154a7d fabric-loot-tables-v1: Fabric Loot Tables (v1) 1.0.2+ca58154a7d fabric-mining-levels-v0: Fabric Mining Levels (v0) 0.1.3+ca58154a7d fabric-models-v0: Fabric Models (v0) 0.3.0+bc7a746f7d fabric-networking-api-v1: Fabric Networking API (v1) 1.0.3+e3c9d0627d fabric-networking-blockentity-v0: Fabric Networking Block Entity (v0) 0.2.8+ca58154a7d fabric-networking-v0: Fabric Networking (v0) 0.3.2+ca58154a7d fabric-object-builder-api-v1: Fabric Object Builder API (v1) 1.9.5+c88702897d fabric-object-builders-v0: Fabric Object Builders (v0) 0.7.2+ca58154a7d fabric-particles-v1: Fabric Particles (v1) 0.2.4+ca58154a7d fabric-registry-sync-v0: Fabric Registry Sync (v0) 0.7.4+ca58154a7d fabric-renderer-api-v1: Fabric Renderer API (v1) 0.4.2+2868a2287d fabric-renderer-indigo: Fabric Renderer - Indigo 0.4.4+ca58154a7d fabric-renderer-registries-v1: Fabric Renderer Registries (v1) 2.3.0+2868a2287d fabric-rendering-data-attachment-v1: Fabric Rendering Data Attachment (v1) 0.1.5+ca58154a7d fabric-rendering-fluids-v1: Fabric Rendering Fluids (v1) 0.1.13+ca58154a7d fabric-rendering-v0: Fabric Rendering (v0) 1.1.2+ca58154a7d fabric-rendering-v1: Fabric Rendering (v1) 1.6.0+2868a2287d fabric-resource-loader-v0: Fabric Resource Loader (v0) 0.4.6+2868a2287d fabric-screen-api-v1: Fabric Screen API (v1) 1.0.0+c045166c7d fabric-screen-handler-api-v1: Fabric Screen Handler API (v1) 1.1.5+9354966b7d fabric-structure-api-v1: Fabric Structure API (v1) 1.1.4+ca58154a7d fabric-tag-extensions-v0: Fabric Tag Extensions (v0) 1.1.1+ca58154a7d fabric-textures-v0: Fabric Textures (v0) 1.0.6+ca58154a7d fabric-tool-attribute-api-v1: Fabric Tool Attribute API (v1) 1.2.7+8183d3957d fabricloader: Fabric Loader 0.11.3 imm_ptl_core: Immersive Portals Core 0.90 immersive_portals: Immersive Portals 0.90 java: Java HotSpot(TM) 64-Bit Server VM 8 minecraft: Minecraft 1.16.5 modmenu: Mod Menu v1.16.8+unknown.bd9230a Player Count: 1 / 8; [class_3222['XThexLonexWolfX'/105, l='ServerWorld minecraft:overworld New World', x=53.50, y=63.00, z=-16.50]] Data Packs: vanilla, Fabric Mods Type: Integrated Server (map_client.txt) Is Modded: Definitely; Client brand changed to 'fabric'`

WearBlackAllDay commented 3 years ago

This issue is caused by Immersive Portals. The fix on their side should be to change

https://github.com/qouteall/ImmersivePortalsMod/blob/49c2823a3550d328f16bb7d77e11986dc07ea885/imm_ptl_core/src/main/java/com/qouteall/immersive_portals/network/CommonNetwork.java#L19

to take in the World instance directly as an argument and get the Thread from it.

YorbenJoosen commented 3 years ago

Do you want me to send your reply to them?

WearBlackAllDay commented 3 years ago

I will open an issue on their repo myself, as soon the fix has been verified and tested.

WearBlackAllDay commented 3 years ago

@XThexLonexWolfX you can use both mods together as soon as their owner merges my PR https://github.com/qouteall/ImmersivePortalsMod/pull/734

note that, as stated there, it just makes it playable for now, its not yet fully fixed in terms of safety, that will happen with the next version of DimThread

YorbenJoosen commented 3 years ago

Nice thanks a lot

WearBlackAllDay commented 3 years ago

author has merged my PR.