zlainsama / PeacefulSurface

This mod makes monsters can only spawn in completely darkness (lightlevel <= 0) thus surface will be much more peaceful
https://minecraft.curseforge.com/projects/peacefulsurface
MIT License
9 stars 0 forks source link

ClassCastException in isThundering (minecraft server 1.15.2, fabric-api 0.5.1+build.294-1.15, peaceful surface 1.15.2-v2a-fabric) #17

Closed barrucadu closed 4 years ago

barrucadu commented 4 years ago

I get frequent ClassCastExceptions in chunk generation from peaceful surface due to the isThundering check. If I disable that check, I get the same error from getMoonPhase, so it seems like a deeper problem.

Here's a sample crash report:

---- Minecraft Crash Report ----
// You're mean.

Time: 04/04/20 10:10
Description: Exception generating new chunk

java.lang.ClassCastException: net.minecraft.class_3233 cannot be cast to net.minecraft.class_1937
    at lain.mods.peacefulsurface.impl.fabric.FabricWorldObj.isThundering(FabricWorldObj.java:87)
    at lain.mods.peacefulsurface.impl.JsonRule.filterEntity(JsonRule.java:104)
    at lain.mods.peacefulsurface.api.PeaceAPI.lambda$filterEntity$0(PeaceAPI.java:59)
    at java.util.stream.MatchOps$1MatchSink.accept(MatchOps.java:90)
    at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:175)
    at java.util.ArrayList$ArrayListSpliterator.tryAdvance(ArrayList.java:1359)
    at java.util.stream.ReferencePipeline.forEachWithCancel(ReferencePipeline.java:126)
    at java.util.stream.AbstractPipeline.copyIntoWithCancel(AbstractPipeline.java:499)
    at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:486)
    at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:472)
    at java.util.stream.MatchOps$MatchOp.evaluateSequential(MatchOps.java:230)
    at java.util.stream.MatchOps$MatchOp.evaluateSequential(MatchOps.java:196)
    at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
    at java.util.stream.ReferencePipeline.anyMatch(ReferencePipeline.java:516)
    at lain.mods.peacefulsurface.api.PeaceAPI.filterEntity(PeaceAPI.java:58)
    at net.minecraft.class_1948.handler$zzd000$onCanSpawn_nBXjeY(class_1948.java:522)
    at net.minecraft.class_1948.method_8660(class_1948.java:249)
    at net.minecraft.class_1948.method_8661(class_1948.java:279)
    at net.minecraft.class_2912.method_12107(class_2912.java:56)
    at net.minecraft.class_2806.method_16566(class_2806.java:102)
    at net.minecraft.class_2806$class_3768.doWork(class_2806.java:258)
    at net.minecraft.class_2806.method_12154(class_2806.java:214)
    at net.minecraft.class_3898.method_17225(class_3898.java:549)
    at com.mojang.datafixers.util.Either$Left.map(Either.java:38)
    at net.minecraft.class_3898.method_17224(class_3898.java:543)
    at java.util.concurrent.CompletableFuture.uniCompose(CompletableFuture.java:952)
    at java.util.concurrent.CompletableFuture$UniCompose.tryFire(CompletableFuture.java:926)
    at java.util.concurrent.CompletableFuture$Completion.run(CompletableFuture.java:442)
    at net.minecraft.class_3900.method_17634(class_3900.java:58)
    at net.minecraft.class_3846.method_16907(class_3846.java:83)
    at net.minecraft.class_3846.method_16900(class_3846.java:123)
    at net.minecraft.class_3846.run(class_3846.java:91)
    at java.util.concurrent.ForkJoinTask$RunnableExecuteAction.exec(ForkJoinTask.java:1402)
    at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289)
    at java.util.concurrent.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1056)
    at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1692)
    at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:157)

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

-- Head --
Thread: Server thread
Stacktrace:
    at lain.mods.peacefulsurface.impl.fabric.FabricWorldObj.isThundering(FabricWorldObj.java:87)
    at lain.mods.peacefulsurface.impl.JsonRule.filterEntity(JsonRule.java:104)
    at lain.mods.peacefulsurface.api.PeaceAPI.lambda$filterEntity$0(PeaceAPI.java:59)
    at java.util.stream.MatchOps$1MatchSink.accept(MatchOps.java:90)
    at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:175)
    at java.util.ArrayList$ArrayListSpliterator.tryAdvance(ArrayList.java:1359)
    at java.util.stream.ReferencePipeline.forEachWithCancel(ReferencePipeline.java:126)
    at java.util.stream.AbstractPipeline.copyIntoWithCancel(AbstractPipeline.java:499)
    at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:486)
    at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:472)
    at java.util.stream.MatchOps$MatchOp.evaluateSequential(MatchOps.java:230)
    at java.util.stream.MatchOps$MatchOp.evaluateSequential(MatchOps.java:196)
    at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
    at java.util.stream.ReferencePipeline.anyMatch(ReferencePipeline.java:516)
    at lain.mods.peacefulsurface.api.PeaceAPI.filterEntity(PeaceAPI.java:58)
    at net.minecraft.class_1948.handler$zzd000$onCanSpawn_nBXjeY(class_1948.java:522)
    at net.minecraft.class_1948.method_8660(class_1948.java:249)
    at net.minecraft.class_1948.method_8661(class_1948.java:279)
    at net.minecraft.class_2912.method_12107(class_2912.java:56)
    at net.minecraft.class_2806.method_16566(class_2806.java:102)
    at net.minecraft.class_2806$class_3768.doWork(class_2806.java:258)
    at net.minecraft.class_2806.method_12154(class_2806.java:214)

-- Chunk to be generated --
Details:
    Location: -162,367
    Position hash: 1580547964766
    Generator: net.minecraft.class_2912@159716d9
Stacktrace:
    at net.minecraft.class_3898.method_17225(class_3898.java:549)
    at com.mojang.datafixers.util.Either$Left.map(Either.java:38)
    at net.minecraft.class_3898.method_17224(class_3898.java:543)
    at java.util.concurrent.CompletableFuture.uniCompose(CompletableFuture.java:952)
    at java.util.concurrent.CompletableFuture$UniCompose.tryFire(CompletableFuture.java:926)
    at java.util.concurrent.CompletableFuture$Completion.run(CompletableFuture.java:442)
    at net.minecraft.class_3900.method_17634(class_3900.java:58)
    at net.minecraft.class_3846.method_16907(class_3846.java:83)
    at net.minecraft.class_3846.method_16900(class_3846.java:123)
    at net.minecraft.class_3846.run(class_3846.java:91)

-- Affected level --
Details:
    All players: 1 total; [class_3222['Estellise'/98, l='world', x=-2749.81, y=66.18, z=5970.33]]
    Chunk stats: ServerChunkCache: 3949
    Level dimension: minecraft:overworld
    Level name: world
    Level seed: 8544813891319083439
    Level generator: ID 00 - default, ver 1. Features enabled: true
    Level generator options: {}
    Level spawn location: World: (-240,67,80), Chunk: (at 0,4,0 in -15,5; contains blocks -240,0,80 to -225,255,95), Region: (-1,0; contains chunks -32,0 to -1,31, blocks -512,0,0 to -1,255,511)
    Level time: 97659361 game time, 72949752 day time
    Known server brands: vanilla, fabric
    Level was modded: true
    Level storage version: 0x04ABD - Anvil
    Level weather: Rain time: 19470 (now: false), thunder time: 67083 (now: false)
    Level game mode: Game mode: survival (ID 0). Hardcore: false. Cheats: false
Stacktrace:
    at net.minecraft.server.MinecraftServer.method_3813(MinecraftServer.java:857)
    at net.minecraft.class_3176.method_3813(class_3176.java:347)
    at net.minecraft.server.MinecraftServer.method_3748(MinecraftServer.java:793)
    at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:655)
    at java.lang.Thread.run(Thread.java:748)

-- System Details --
Details:
    Minecraft Version: 1.15.2
    Minecraft Version ID: 1.15.2
    Operating System: Linux (amd64) version 4.19.79
    Java Version: 1.8.0_222, Oracle Corporation
    Java VM Version: OpenJDK 64-Bit Server VM (mixed mode), Oracle Corporation
    Memory: 4471285520 bytes (4264 MB) / 6334447616 bytes (6041 MB) up to 6334447616 bytes (6041 MB)
    CPUs: 4
    JVM Flags: 2 total; -Xmx6144M -Xms6144M
    Fabric Mods: 
        colorchat: colorchat 1.2.4
        fabric: Fabric API 0.5.1+build.294-1.15
        fabric-api-base: Fabric API Base 0.1.2+b7f9825d0c
        fabric-biomes-v1: Fabric Biomes (v1) 0.1.5+3b05f68e0c
        fabric-commands-v0: Fabric Commands (v0) 0.1.2+b7f9825d0c
        fabric-containers-v0: Fabric Containers (v0) 0.1.3+b7f9825d0c
        fabric-content-registries-v0: Fabric Content Registries (v0) 0.1.3+b7f9825d0c
        fabric-crash-report-info-v1: Fabric Crash Report Info (v1) 0.1.2+b7f9825d0c
        fabric-dimensions-v1: fabric-dimensions-v1 0.3.0+2ad156310c
        fabric-events-interaction-v0: Fabric Events Interaction (v0) 0.3.0+fac69e320c
        fabric-events-lifecycle-v0: Fabric Events Lifecycle (v0) 0.1.2+b7f9825d0c
        fabric-item-groups-v0: Fabric Item Groups (v0) 0.1.6+ec40b2e10c
        fabric-loot-tables-v1: Fabric Loot Tables (v1) 0.1.5+e08a73050c
        fabric-mining-levels-v0: Fabric Mining Levels (v0) 0.1.1+b7f9825d0c
        fabric-networking-blockentity-v0: Fabric Networking Block Entity (v0) 0.2.3+e08a73050c
        fabric-networking-v0: Fabric Networking (v0) 0.1.7+12515ed90c
        fabric-object-builders-v0: Fabric Object Builders (v0) 0.1.3+e4c9a9c30c
        fabric-particles-v1: fabric-particles-v1 0.1.1+dfdb52d60c
        fabric-registry-sync-v0: Fabric Registry Sync (v0) 0.2.6+f3d8141b0c
        fabric-rendering-data-attachment-v1: Fabric Rendering Data Attachment (v1) 0.1.3+b7f9825d0c
        fabric-resource-loader-v0: Fabric Resource Loader (v0) 0.1.10+06c939b30c
        fabric-tag-extensions-v0: Fabric Tag Extensions (v0) 0.1.3+abd915800c
        fabricloader: Fabric Loader 0.7.8+build.184
        minecraft: Minecraft 1.15.2
        peacefulsurface: PeacefulSurface 1.15.2-v2a-fabric
    Player Count: 1 / 20; [class_3222['Estellise'/98, l='world', x=-2749.81, y=66.18, z=5970.33]]
    Data Packs: vanilla, fabric/fabric-mining-levels-v0 (incompatible)
    Is Modded: Definitely; Server brand changed to 'fabric'
    Type: Dedicated Server (map_server.txt)

And a peacefulsurface config:

{
   "Altitude": 60,
   "Animal": false,
   "Checking_Altitude": false,
   "Checking_LightLevel": true,
   "Day": false,
   "Disabled": false,
   "DisabledUnderBloodmoon": false,
   "DisabledWhenDay": false,
   "DisabledWhenNight": false,
   "DisabledWhenSunny": false,
   "DisabledWhenThundering": true,
   "InvertedAltitudeChecking": false,
   "InvertedDimensionFilter": false,
   "InvertedLightLevelChecking": false,
   "InvertedMobFilter": false,
   "LightLevel": 0,
   "Living": false,
   "Monster": true,
   "MoonPhase": "1",
   "Night": false,
   "Raining": false,
   "Sunny": false,
   "Thundering": false,
   "dimensionFilter": "(\\bminecraft:the_end\\b)|(\\bminecraft:the_nether\\b)",
   "mobFilter": "(\\bminecraft:slime\\b)|(\\bminecraft:pillager\\b)|(\\bminecraft:zombie_villager\\b)"
}

(I have one config for moon phases 1 2 3 4 6 7 8, as I couldn't figure out how to disable peaceful surface for moon phase 5 otherwise)

Do you have any suggestions for how to resolve this?

zlainsama commented 4 years ago

It might be fabric changed something between these releases. I will look into this.

zlainsama commented 4 years ago

I couldn't reproduce this in a clean install of latest fabric server with latest fabric api. Please try deleting the '.fabric' folder inside your server instance to let fabric regenerate it's jars to see if that helps.

barrucadu commented 4 years ago

I did that a few days ago, and it crashed again today: crash-2020-04-12_18.21.32-server.txt

It's pretty infrequent, it doesn't happen every time a new chunk is generated, so it can be days between occurrences. It happens regardless of the weather, so the fact that it's crashing in a method called isThundering is a bit of a red herring.

zlainsama commented 4 years ago

Please try this version to see if it still happens.

barrucadu commented 4 years ago

I wandered around to cause some chunk generation, and it didn't crash. I'll report back in a few days.

barrucadu commented 4 years ago

It's not crashed yet, so I think you've fixed it. Thanks