YUNG-GANG / YUNGs-Better-Caves

Minecraft mod that completely overhauls cave generation
https://www.curseforge.com/minecraft/mc-mods/yungs-better-caves
GNU Lesser General Public License v3.0
103 stars 51 forks source link

Crash on world gen with Terraforged #104

Closed ghost closed 3 years ago

ghost commented 3 years ago

Just updated with YungAPI and YungsBetterCaves (released in the last hour or so), and new world creation crashes game


Description: generating caves (TerraForged World-Gen)

java.lang.ClassCastException: com.terraforged.mod.chunk.fix.ChunkCarverFix cannot be cast to com.yungnickyoung.minecraft.bettercaves.world.IServerWorldHolder
    at com.yungnickyoung.minecraft.bettercaves.world.carver.BetterCavesCarver.carveRegion(BetterCavesCarver.java:37) ~[?:1.16.4-1.1] {re:classloading}
    at com.yungnickyoung.minecraft.bettercaves.world.carver.BetterCavesCarver.func_225555_a_(BetterCavesCarver.java:29) ~[?:1.16.4-1.1] {re:classloading}
    at net.minecraft.world.gen.carver.ConfiguredCarver.func_227207_a_(SourceFile:39) ~[?:?] {re:classloading,pl:accesstransformer:B}
    at com.terraforged.mod.chunk.generator.TerrainCarver.carveTerrain(TerrainCarver.java:80) ~[?:1.16.4-0.2.0-BETA-8] {re:classloading}
    at com.terraforged.mod.chunk.TFChunkGenerator.func_230350_a_(TFChunkGenerator.java:227) [?:1.16.4-0.2.0-BETA-8] {re:classloading}
    at net.minecraft.world.chunk.ChunkStatus.lambda$static$7(ChunkStatus.java:66) [?:?] {re:mixin,pl:accesstransformer:B,re:classloading,pl:accesstransformer:B,pl:mixin:APP:bettercaves.mixins.json:ChunkStatusMixin,pl:mixin:A}
    at net.minecraft.world.chunk.ChunkStatus$$Lambda$2394/113309827.doWork(Unknown Source) [?:?] {}
    at net.minecraft.world.chunk.ChunkStatus$ISelectiveWorker.doWork(ChunkStatus.java:240) [?:?] {re:classloading}
    at net.minecraft.world.chunk.ChunkStatus.func_223198_a(ChunkStatus.java:198) [?:?] {re:mixin,pl:accesstransformer:B,re:classloading,pl:accesstransformer:B,pl:mixin:APP:bettercaves.mixins.json:ChunkStatusMixin,pl:mixin:A}
    at net.minecraft.world.server.ChunkManager.lambda$null$18(ChunkManager.java:675) [?:?] {re:mixin,pl:accesstransformer:B,re:classloading,pl:accesstransformer:B,xf:OptiFine:default,pl:mixin:A}
    at net.minecraft.world.server.ChunkManager$$Lambda$42522/624910863.apply(Unknown Source) [?:?] {}
    at com.mojang.datafixers.util.Either$Left.map(Either.java:38) [datafixerupper-4.0.26.jar:?] {}
    at net.minecraft.world.server.ChunkManager.lambda$chunkGenerate$20(ChunkManager.java:673) [?:?] {re:mixin,pl:accesstransformer:B,re:classloading,pl:accesstransformer:B,xf:OptiFine:default,pl:mixin:A}
    at net.minecraft.world.server.ChunkManager$$Lambda$42507/617426953.apply(Unknown Source) [?:?] {}
    at java.util.concurrent.CompletableFuture.uniCompose(CompletableFuture.java:952) [?:1.8.0_51] {}
    at java.util.concurrent.CompletableFuture$UniCompose.tryFire(CompletableFuture.java:926) [?:1.8.0_51] {}
    at java.util.concurrent.CompletableFuture$Completion.run(CompletableFuture.java:442) [?:1.8.0_51] {}
    at net.minecraft.world.chunk.ChunkTaskPriorityQueueSorter.func_219083_b(SourceFile:58) [?:?] {re:classloading}
    at net.minecraft.world.chunk.ChunkTaskPriorityQueueSorter$$Lambda$42520/1682737064.run(Unknown Source) [?:?] {}
    at net.minecraft.util.concurrent.DelegatedTaskExecutor.func_213148_e(SourceFile:94) [?:?] {re:classloading}
    at net.minecraft.util.concurrent.DelegatedTaskExecutor.func_213145_a(SourceFile:137) [?:?] {re:classloading}
    at net.minecraft.util.concurrent.DelegatedTaskExecutor.run(SourceFile:105) [?:?] {re:classloading}
    at java.util.concurrent.ForkJoinTask$RunnableExecuteAction.exec(ForkJoinTask.java:1402) [?:1.8.0_51] {}
    at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289) [?:1.8.0_51] {}
    at java.util.concurrent.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1056) [?:1.8.0_51] {}
    at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1689) [?:1.8.0_51] {re:computing_frames}
    at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:157) [?:1.8.0_51] {}```
Zygus42 commented 3 years ago

Can confirm: crash-2021-01-15_15.25.30-client.txt

[1.16.4] YUNG's Better Caves v1.1 TerraForged-1.16.4-0.2.0-BETA-8

Won-Ton commented 3 years ago

Hi, this isn't something TF can address.

Consider doing something like the following to get the world from wherever:

ServerWorld world = ServerLifecycleHooks.getCurrentServer().getWorld(World.OVERWORLD);

Or if you need to stick with mixins maybe mixin-implement IChunk::getWorldForge on the ChunkPrimer so you can get the world using that instead of downcasting.

TheOrionsun commented 3 years ago

Hello,

I also see an issue with the new BetterCaves-Forge-1.16.4-1.1.

Other version are: MC 1.16.4 and Forge-35.1.36.

Loaded into a personal survival game which loaded, however when I moved into an undiscovered chuck MC crashed.

For anyone with this issue just reloading previous Better Caves version: fixed the crash and world was playable again.

If it helps here is the crash report: And Thank you for the great mod....

---- Minecraft Crash Report ---- // Shall we play a game?

Time: 1/15/21 5:42 AM Description: generating caves (TerraForged World-Gen)

java.lang.ClassCastException: com.terraforged.mod.chunk.fix.ChunkCarverFix cannot be cast to com.yungnickyoung.minecraft.bettercaves.world.IServerWorldHolder at com.yungnickyoung.minecraft.bettercaves.world.carver.BetterCavesCarver.carveRegion(BetterCavesCarver.java:37) ~[bettercaves:1.16.4-1.1] {re:classloading} at com.yungnickyoung.minecraft.bettercaves.world.carver.BetterCavesCarver.func_225555a(BetterCavesCarver.java:29) ~[bettercaves:1.16.4-1.1] {re:classloading} at net.minecraft.world.gen.carver.ConfiguredCarver.func_227207a(SourceFile:39) ~[?:?] {re:classloading} at com.terraforged.mod.chunk.generator.TerrainCarver.carveTerrain(TerrainCarver.java:80) ~[terraforged:1.16.4-0.2.0-BETA-8] {re:classloading} at com.terraforged.mod.chunk.TFChunkGenerator.func_230350a(TFChunkGenerator.java:227) ~[terraforged:1.16.4-0.2.0-BETA-8] {re:classloading} at net.minecraft.world.chunk.ChunkStatus.lambda$static$7(ChunkStatus.java:66) ~[?:?] {re:mixin,pl:accesstransformer:B,re:classloading,pl:accesstransformer:B,pl:mixin:APP:bettercaves.mixins.json:ChunkStatusMixin,pl:mixin:A} at net.minecraft.world.chunk.ChunkStatus$ISelectiveWorker.doWork(ChunkStatus.java:240) ~[?:?] {re:classloading} at net.minecraft.world.chunk.ChunkStatus.func_223198_a(ChunkStatus.java:198) ~[?:?] {re:mixin,pl:accesstransformer:B,re:classloading,pl:accesstransformer:B,pl:mixin:APP:bettercaves.mixins.json:ChunkStatusMixin,pl:mixin:A} at net.minecraft.world.server.ChunkManager.lambda$null$18(ChunkManager.java:675) ~[?:?] {re:classloading,pl:accesstransformer:B,xf:OptiFine:default} at com.mojang.datafixers.util.Either$Left.map(Either.java:38) ~[datafixerupper-4.0.26.jar:?] {re:classloading,re:classloading} at net.minecraft.world.server.ChunkManager.lambda$chunkGenerate$20(ChunkManager.java:673) ~[?:?] {re:classloading,pl:accesstransformer:B,xf:OptiFine:default} at java.util.concurrent.CompletableFuture.uniCompose(Unknown Source) ~[?:1.8.0_271] {} at java.util.concurrent.CompletableFuture$UniCompose.tryFire(Unknown Source) ~[?:1.8.0_271] {} at java.util.concurrent.CompletableFuture$Completion.run(Unknown Source) ~[?:1.8.0_271] {} at net.minecraft.world.chunk.ChunkTaskPriorityQueueSorter.func_219083_b(SourceFile:58) ~[?:?] {re:classloading} at net.minecraft.util.concurrent.DelegatedTaskExecutor.func_213148_e(SourceFile:94) [?:?] {re:classloading} at net.minecraft.util.concurrent.DelegatedTaskExecutor.func_213145_a(SourceFile:137) [?:?] {re:classloading} at net.minecraft.util.concurrent.DelegatedTaskExecutor.run(SourceFile:105) [?:?] {re:classloading} at java.util.concurrent.ForkJoinTask$RunnableExecuteAction.exec(Unknown Source) [?:1.8.0_271] {} at java.util.concurrent.ForkJoinTask.doExec(Unknown Source) [?:1.8.0_271] {} at java.util.concurrent.ForkJoinPool$WorkQueue.runTask(Unknown Source) [?:1.8.0_271] {} at java.util.concurrent.ForkJoinPool.runWorker(Unknown Source) [?:1.8.0_271] {re:computing_frames} at java.util.concurrent.ForkJoinWorkerThread.run(Unknown Source) [?:1.8.0_271] {}

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

-- Current Chunk -- Details: Pos: [5, -12] Status: surface Structure Starts: [bettermineshafts:mineshaft, minecraft:ruined_portal, minecraft:stronghold, valhelsia_structures:castle, valhelsia_structures:castle_ruin, valhelsia_structures:forge, valhelsia_structures:player_house, valhelsia_structures:small_dungeon, valhelsia_structures:tower_ruin] Structure Refs: []

-- TerraForged ChunkGenerator -- Details: Seed: 862030887 Settings: {"miscellaneous":{"smoothLayerDecorator":true,"strataRegionSize":600,"strataDecorator":true,"oreCompatibleStoneOnly":true,"erosionDecorator":true,"plainStoneErosion":false,"naturalSnowDecorator":true,"customBiomeFeatures":true,"vanillaLakes":false,"vanillaSprings":true,"vanillaLavaLakes":true,"vanillaLavaSprings":true,"mountainBiomeUsage":0.4,"volcanoBiomeUsage":0.4},"dimensions":{"bedrockLayer":{"material":"minecraft:bedrock","minDepth":1,"variance":0},"dimensions":{"nether":"default","end":"default","includeExtraDimensions":true}},"world":{"continent":{"continentType":"MULTI","continentShape":"MANHATTAN","continentScale":3060,"continentJitter":0.699},"controlPoints":{"deepOcean":0.1,"shallowOcean":0.25,"beach":0.326,"coast":0.448,"inland":0.5},"properties":{"spawnType":"WORLD_ORIGIN","worldHeight":256,"seaLevel":60}},"climate":{"temperature":{"seedOffset":0,"scale":6,"falloff":2,"min":0.0,"max":0.98,"bias":0.05},"moisture":{"seedOffset":0,"scale":6,"falloff":1,"min":0.0,"max":1.0,"bias":0.0},"biomeShape":{"biomeSize":225,"macroNoiseSize":8,"biomeWarpScale":150,"biomeWarpStrength":80},"biomeEdgeShape":{"type":"SIMPLEX","scale":24,"octaves":2,"gain":0.5,"lacunarity":2.65,"strength":14}},"terrain":{"general":{"terrainSeedOffset":0,"terrainRegionSize":1200,"globalVerticalScale":0.98,"globalHorizontalScale":1.0,"fancyMountains":true},"steppe":{"weight":1.0,"baseScale":1.0,"verticalScale":1.0,"horizontalScale":1.0},"plains":{"weight":2.0,"baseScale":1.0,"verticalScale":1.0,"horizontalScale":1.0},"hills":{"weight":2.0,"baseScale":1.0,"verticalScale":1.0,"horizontalScale":1.0},"dales":{"weight":1.5,"baseScale":1.0,"verticalScale":1.0,"horizontalScale":1.0},"plateau":{"weight":1.5,"baseScale":1.0,"verticalScale":1.0,"horizontalScale":1.0},"badlands":{"weight":1.0,"baseScale":1.0,"verticalScale":1.0,"horizontalScale":1.0},"torridonian":{"weight":2.0,"baseScale":1.0,"verticalScale":1.0,"horizontalScale":1.0},"mountains":{"weight":2.5,"baseScale":1.0,"verticalScale":1.0,"horizontalScale":1.0},"volcano":{"weight":5.0,"baseScale":1.0,"verticalScale":1.0,"horizontalScale":1.0}},"rivers":{"seedOffset":0,"riverCount":8,"mainRivers":{"bedDepth":5,"minBankHeight":2,"maxBankHeight":6,"bedWidth":8,"bankWidth":20,"fade":0.75},"branchRivers":{"bedDepth":4,"minBankHeight":1,"maxBankHeight":4,"bedWidth":5,"bankWidth":14,"fade":0.975},"lakes":{"chance":0.3,"minStartDistance":0.0,"maxStartDistance":0.028,"depth":10,"sizeMin":75,"sizeMax":150,"minBankHeight":2,"maxBankHeight":10},"wetlands":{"chance":0.6,"sizeMin":175,"sizeMax":225}},"filters":{"erosion":{"dropletsPerChunk":135,"dropletLifetime":12,"dropletVolume":0.699,"dropletVelocity":0.699,"erosionRate":0.5,"depositeRate":0.5},"smoothing":{"iterations":1,"smoothingRadius":1.799,"smoothingRate":0.898}}}

-- TerraForged BiomeProvider -- Details: Overworld Biomes: [minecraft:dark_forest, minecraft:snowy_tundra, minecraft:wooded_mountains, minecraft:tall_birch_forest, minecraft:lukewarm_ocean, minecraft:eroded_badlands, terraforged:snowy_fir_forest, minecraft:sunflower_plains, minecraft:modified_gravelly_mountains, minecraft:swamp, minecraft:forest, terraforged:warm_beach, minecraft:birch_forest, terraforged:taiga_scrub, minecraft:mountains, terraforged:frozen_lake, minecraft:badlands_plateau, terraforged:frozen_marsh, minecraft:savanna_plateau, minecraft:desert_lakes, minecraft:modified_wooded_badlands_plateau, minecraft:modified_badlands_plateau, minecraft:beach, minecraft:mushroom_fields, minecraft:frozen_river, terraforged:marshland, minecraft:giant_tree_taiga, minecraft:shattered_savanna_plateau, minecraft:badlands, terraforged:cold_steppe, minecraft:deep_ocean, minecraft:wooded_badlands_plateau, terraforged:cold_marshland, terraforged:shattered_savanna_scrub, minecraft:jungle, terraforged:lake, minecraft:modified_jungle_edge, minecraft:taiga_mountains, minecraft:deep_warm_ocean, minecraft:snowy_taiga, minecraft:taiga, minecraft:deep_lukewarm_ocean, minecraft:deep_frozen_ocean, minecraft:desert, minecraft:cold_ocean, minecraft:flower_forest, minecraft:snowy_taiga_mountains, terraforged:stone_forest, minecraft:modified_jungle, terraforged:fir_forest, minecraft:warm_ocean, terraforged:bryce, minecraft:jungle_edge, minecraft:frozen_ocean, terraforged:steppe, minecraft:bamboo_jungle, minecraft:plains, minecraft:snowy_beach, minecraft:snowy_mountains, terraforged:savanna_scrub, minecraft:deep_cold_ocean, minecraft:ice_spikes, minecraft:ocean, minecraft:giant_spruce_taiga, terraforged:flower_plains, minecraft:river, minecraft:gravelly_mountains, minecraft:savanna, minecraft:shattered_savanna]

-- TerraForged Performance Config -- Details: version: 0.1 thread_count: 8 tile_size: 3 batching: true batch_count: 6

-- TerraForged Biome Weights Config -- Details: terraforged:example_biome: 10

-- TerraForged Profiler -- Details: Timings: Section Count Time MS Min MS Max MS Average MS structure_starts 127 966 0 949 7.61 structure_refs 6 2 0 0 0.33 biomes 6 169 0 166 28.17 terrain 6 62 6 25 10.33 surface 1 8 8 8 8.00 carving 1 2 2 2 2.00 decoration 0 0 0 0 0.00 mob_spawns 0 0 0 0 0.00 Sum 56.44

-- System Details -- Details: Minecraft Version: 1.16.4 Minecraft Version ID: 1.16.4 Operating System: Windows 10 (amd64) version 10.0 Java Version: 1.8.0_271, Oracle Corporation Java VM Version: Java HotSpot(TM) 64-Bit Server VM (mixed mode), Oracle Corporation Memory: 577286720 bytes (550 MB) / 5412225024 bytes (5161 MB) up to 11453595648 bytes (10923 MB) CPUs: 12 JVM Flags: 5 total; -XX:HeapDumpPath=MojangTricksIntelDriversForPerformance_javaw.exe_minecraft.exe.heapdump -Xss1M -Xmx12288m -Xms256m -XX:PermSize=256m ModLauncher: 8.0.6+85+master.325de55 ModLauncher launch target: fmlclient ModLauncher naming: srg ModLauncher services: /mixin-0.8.2.jar mixin PLUGINSERVICE /eventbus-3.0.5-service.jar eventbus PLUGINSERVICE /forge-1.16.4-35.1.36.jar object_holder_definalize PLUGINSERVICE /forge-1.16.4-35.1.36.jar runtime_enum_extender PLUGINSERVICE /accesstransformers-2.2.0-shadowed.jar accesstransformer PLUGINSERVICE /forge-1.16.4-35.1.36.jar capability_inject_definalize PLUGINSERVICE /forge-1.16.4-35.1.36.jar runtimedistcleaner PLUGINSERVICE /mixin-0.8.2.jar mixin TRANSFORMATIONSERVICE /preview_OptiFine_1.16.4_HD_U_G6_pre12.jar OptiFine TRANSFORMATIONSERVICE /forge-1.16.4-35.1.36.jar fml TRANSFORMATIONSERVICE FML: 35.1 Forge: net.minecraftforge:35.1.36 FML Language Providers: javafml@35.1 minecraft@1 Mod List: timecontrol-1.16.1-1.1.0.1.jar |TimeControl |timecontrol |1.1.0.1 |DONE |NOSIGNATURE HudCompass-1.16.4-0.1.1.jar |HUD Compass |hudcompass |version |DONE |NOSIGNATURE forgeautofish-2.0.0-1.16.x.jar |AutoFish for Forge |forgeautofish |2.0.0 |DONE |NOSIGNATURE simplemagnets-1.0.11-mc1.16.4.jar |Simple Magnets |simplemagnets |1.0.11 |DONE |NOSIGNATURE treeharvester_1.16.4-2.0.jar |Tree Harvester |treeharvester |2.0 |DONE |NOSIGNATURE jei-1.16.4-7.6.1.65.jar |Just Enough Items |jei |7.6.1.65 |DONE |NOSIGNATURE DoggyTalents-1.16.4-2.0.1.2.jar |Doggy Talents 2 |doggytalents |2.0.1.2 |DONE |NOSIGNATURE abnormals_core-1.16.4-3.0.6.jar |Abnormals Core |abnormals_core |3.0.6 |DONE |NOSIGNATURE borderless-1.16.4-1.1.0.jar |Borderless Window |borderless |1.16.4-1.1.0 |DONE |NOSIGNATURE Mekanism-1.16.4-10.0.18.445.jar |Mekanism |mekanism |10.0.18 |DONE |NOSIGNATURE mcw-windows-1.0.2-mc1.16.4.jar |Macaw's Windows |mcwwindows |1.0.2 |DONE |NOSIGNATURE caelus-forge-1.16.4-2.1.0.2.jar |Caelus API |caelus |1.16.4-2.1.0.2 |DONE |NOSIGNATURE ChickenDropFeathers-1.0-forge-1.16.4-35.1.0.jar |ChickenDropFeathers |chickendropfeathersmod |1.0 |DONE |NOSIGNATURE create-mc1.16.3_v0.3e.jar |Create |create |mc1.16.3_v0.3e |DONE |NOSIGNATURE BetterCaves-Forge-1.16.4-1.1.jar |YUNG's Better Caves |bettercaves |1.16.4-1.1 |DONE |NOSIGNATURE Waystones_1.16.3-7.3.1.jar |Waystones |waystones |7.3.1 |DONE |NOSIGNATURE TerraForged-1.16.4-0.2.0-BETA-8.jar |TerraForged |terraforged |0.2.0-BETA-8 |DONE |7b:73:d0:a2:c3:40:13:84:35:4f:c9:0e:2b:85:8c:08:ea:3c:3c:eb:f1:98:8b:5b:6e:ca:8a:a0:9a:cf:12:b3 XaerosWorldMap_1.11.7_Forge_1.16.4.jar |Xaero's World Map |xaeroworldmap |1.11.7 |DONE |NOSIGNATURE citadel-1.5.3.jar |Citadel |citadel |1.5.3 |DONE |NOSIGNATURE alexsmobs-1.4.1.jar |Alex's Mobs |alexsmobs |1.4.1 |DONE |NOSIGNATURE YungsApi-1.16.4-Forge-2.jar |YUNG's API |yungsapi |1.16.4-Forge-2 |DONE |NOSIGNATURE rangedpumps-0.8.2.jar |Ranged Pumps |rangedpumps |0.8.2 |DONE |NOSIGNATURE branders-spawnermod-1.16.4-1.7.9.jar |Enhanced Mob Spawners |spawnermod |1.7.10 |DONE |NOSIGNATURE Bookshelf-1.16.4-9.3.25.jar |Bookshelf |bookshelf |9.3.25 |DONE |eb:c4:b1:67:8b:f9:0c:db:dc:4f:01:b1:8e:61:64:39:4c:10:85:0b:a6:c4:c7:48:f0:fa:95:f2:cb:08:3a:e5 Roads-1.16.2-1.1.0.jar |Roads Mod |roads |1.1.0 |DONE |NOSIGNATURE TinyMobFarm-1.16.4-1.1.1.jar |Tiny Mob Farm |tinymobfarm |1.1.1 |DONE |NOSIGNATURE additional_lights-1.16.4-2.1.3.jar |Additional Lights |additional_lights |2.1.3 |DONE |NOSIGNATURE MekanismGenerators-1.16.4-10.0.18.445.jar |Mekanism: Generators |mekanismgenerators |10.0.18 |DONE |NOSIGNATURE ironagefurniture-1.16.4-0.1.0.2.jar |Iron Age Furniture |ironagefurniture |1.16.4-0.1.0 |DONE |NOSIGNATURE Hwyla-forge-1.10.11-B78_1.16.2.jar |Waila |waila |1.10.11-B78_1.16.2 |DONE |NOSIGNATURE WAWLA-1.16.4-7.0.2.jar |WAWLA |wawla |7.0.2 |DONE |ea:45:b3:82:b6:9d:50:16:95:e7:2e:34:e1:92:d5:b4:9b:69:90:d3:4f:2e:71:99:b0:be:40:80:27:1f:3e:b0 ImmersivePetroleum-1.16.4-3.1.0-2.jar |Immersive Petroleum |immersivepetroleum |3.1.0-2 |DONE |NOSIGNATURE forge-1.16.4-35.1.36-universal.jar |Forge |forge |35.1.36 |DONE |22:af:21:d8:19:82:7f:93:94:fe:2b:ac:b7:e4:41:57:68:39:87:b1:a7:5c:c6:44:f9:25:74:21:14:f5:0d:90 shetiphiancore-1.16-3.8.4.jar |ShetiPhian-Core |shetiphiancore |3.8.4 |DONE |NOSIGNATURE scuba-gear-1.16.4-1.0.1.jar |Scuba Gear |scuba_gear |1.0.1 |DONE |NOSIGNATURE refinedstorage-1.9.11.jar |Refined Storage |refinedstorage |1.9.11 |DONE |NOSIGNATURE easy_piglins-1.16.4-1.0.5.jar |Easy Piglins |easy_piglins |1.16.4-1.0.5 |DONE |NOSIGNATURE DynamicSurroundings-1.16.4-4.0.3.4.jar |§3Dynamic Surroundings |dsurround |1.16.4-4.0.3.4 |DONE |b4:98:14:b9:76:55:25:4f:e5:5f:4d:71:90:87:43:5b:f9:d5:3a:02:60:42:5e:da:1f:15:9c:ff:be:a9:7c:77 ZeroCore2-1.16.4-2.0.19.jar |Zero CORE 2 |zerocore |1.16.4-2.0.19 |DONE |NOSIGNATURE forge-1.16.4-35.1.36-client.jar |Minecraft |minecraft |1.16.4 |DONE |NOSIGNATURE upgrade_aquatic-1.16.4-3.0.0.jar |Upgrade Aquatic |upgrade_aquatic |3.0.0 |DONE |NOSIGNATURE torchmaster-2.3.5-alpha.jar |Torchmaster |torchmaster |2.3.5-alpha |DONE |NOSIGNATURE endertanks-1.16-1.9.3.jar |EnderTanks |endertanks |1.9.3 |DONE |NOSIGNATURE ImmersiveEngineering-1.16.4-4.1.2-129.jar |Immersive Engineering |immersiveengineering |1.16.4-4.1.2-129 |DONE |44:39:94:cf:1d:8c:be:3c:7f:a9:ee:f4:1e:63:a5:ac:61:f9:c2:87:d5:5b:d9:d6:8c:b5:3e:96:5d:8e:3f:b7 valhelsia_structures-16.0.5.jar |Valhelsia Structures |valhelsia_structures |16.0.5 |DONE |NOSIGNATURE simplylight-1.16.4-1.1.1.jar |Simply Light |simplylight |1.16.4-1.1.1 |DONE |NOSIGNATURE ChickenChunks-1.16.4-2.7.0.85-universal.jar |ChickenChunks |chickenchunks |2.7.0.85 |DONE |31:e6:db:63:47:4a:6e:e0:0a:2c:11:d1:76:db:4e:82:ff:56:2d:29:93:d2:e5:02:bd:d3:bd:9d:27:47:a5:71 TrackAPI-1.16.4-forge-1.2.1.jar |TrackAPI |trackapi |1.2 |DONE |NOSIGNATURE simplybackpacks-1.16.3-1.4.13.jar |Simply Backpacks |simplybackpacks |1.16.3-1.4.13 |DONE |NOSIGNATURE Corail-Recycler-NE-1.16.4-370.jar |Corail Recycler NE |corail_recycler_ne |1.16.4-370 |DONE |NOSIGNATURE easy_villagers-1.16.4-1.1.27.jar |Easy Villagers |easy_villagers |1.16.4-1.1.27 |DONE |NOSIGNATURE curios-forge-1.16.4-4.0.3.5.jar |Curios API |curios |1.16.4-4.0.3.5 |DONE |NOSIGNATURE Xaeros_Minimap_21.0.0_Forge_1.16.4.jar |Xaero's Minimap |xaerominimap |21.0.0 |DONE |NOSIGNATURE collective-1.16.4-1.53.jar |Collective |collective |1.53 |DONE |NOSIGNATURE notenoughbreeding-1.16.4-1.0.0.jar |Not Enough Breeding |notenoughbreeding |1.16.4-1.0.0 |DONE |NOSIGNATURE AutoRegLib-1.6-47.jar |AutoRegLib |autoreglib |1.6-47 |DONE |NOSIGNATURE Quark-r2.4-294.jar |Quark |quark |r2.4-294 |DONE |NOSIGNATURE overworld_quartz-1.16.4-1.1.0.2.jar |Overworld Quartz |overworld_quartz |1.1.0.1 |DONE |NOSIGNATURE FluxNetworks-1.16.4-6.1.5.10.jar |Flux Networks |fluxnetworks |1.16.4-6.1.5.10 |DONE |NOSIGNATURE structurize-0.13.104-ALPHA-universal.jar |Structurize |structurize |0.13.104-ALPHA |DONE |NOSIGNATURE guncus-1.16.4-1.3.jar |Gun Customization: Infinity |guncus |1.16.4-1.3 |DONE |NOSIGNATURE minecolonies-0.13.566-ALPHA-universal.jar |Minecolonies |minecolonies |0.13.566-ALPHA |DONE |NOSIGNATURE MekanismTools-1.16.4-10.0.18.445.jar |Mekanism: Tools |mekanismtools |10.0.18 |DONE |NOSIGNATURE architectury-1.3.80-forge.jar |Architectury |architectury |1.3.80 |DONE |NOSIGNATURE AppleSkin-mc1.16.2-forge-1.0.14.jar |AppleSkin |appleskin |1.0.14 |DONE |NOSIGNATURE ImmersiveRailroading-1.16.4-forge-1.8.0.1.jar |Immersive Railroading |immersiverailroading |1.16.4-forge-1.8.0 |DONE |NOSIGNATURE UniversalModCore-1.16.4-forge-1.0.1.jar |Universal Mod Core |universalmodcore |1.0.1 |DONE |NOSIGNATURE curiouselytra-forge-1.16.3-4.0.0.1.jar |Curious Elytra |curiouselytra |1.16.3-4.0.0.1 |DONE |NOSIGNATURE mcw-furniture-2.0.0-mc1.16.4.jar |Macaw's Furniture |mcwfurnitures |2.0.0 |DONE |NOSIGNATURE ExtremeReactors2-1.16.4-2.0.21.jar |Extreme Reactors 2 |bigreactors |1.16.4-2.0.21 |DONE |NOSIGNATURE light-overlay-5.6.1.jar |Light Overlay |lightoverlay |5.6.1 |DONE |NOSIGNATURE cloth-config-forge-4.1.3.jar |Cloth Config v4 API |cloth-config |4.1.3 |DONE |NOSIGNATURE Aquaculture-1.16.4-2.1.12.jar |Aquaculture 2 |aquaculture |1.16.4-2.1.12 |DONE |NOSIGNATURE BetterShieldsMC1.16.3-1.1.1.jar |Better Shields |bettershields |1.1.1 |DONE |NOSIGNATURE Disenchanting-forge_1.16.3-1.6.0-alpha.jar |Disenchanting |disenchanting |1.6.0 |DONE |NOSIGNATURE CodeChickenLib-1.16.4-3.5.0.401-universal.jar |CodeChicken Lib |codechickenlib |3.5.0.401 |DONE |31:e6:db:63:47:4a:6e:e0:0a:2c:11:d1:76:db:4e:82:ff:56:2d:29:93:d2:e5:02:bd:d3:bd:9d:27:47:a5:71 overloadedarmorbar-5.1.0.jar |Overloaded Armor Bar |overloadedarmorbar |5.1.0 |DONE |NOSIGNATURE BetterMineshafts-Forge-1.16.3-1.1.1.jar |YUNG's Better Mineshafts |bettermineshafts |1.16.3-1.1.1 |DONE |NOSIGNATURE WailaHarvestability-mc1.16.2-forge-1.1.13.jar |Waila Harvestability |wailaharvestability |1.1.13 |DONE |NOSIGNATURE dungeons_gear-1.16.4-3.0.6.jar |Dungeons Gear |dungeons_gear |3.0.6 |DONE |NOSIGNATURE Crash Report UUID: 80ba37da-8a3c-4f14-a000-d733a62c72d1 OptiFine Version: OptiFine_1.16.4_HD_U_G6_pre12 OptiFine Build: 20210110-191159 Render Distance Chunks: 10 Mipmaps: 4 Anisotropic Filtering: 1 Antialiasing: 0 Multitexture: false Shaders: null OpenGlVersion: 4.6.0 NVIDIA 460.89 OpenGlRenderer: GeForce GTX 1080/PCIe/SSE2 OpenGlVendor: NVIDIA Corporation CpuCount: 12

Corvus20 commented 3 years ago

Can confirm I am getting the same error.

TelepathicGrunt commented 3 years ago

@Won-Ton pretty sure mixins cannot apply to interfaces. I believe that was what murfrey was working on. Why can’t terraforged have ChunkDelegate extend one of the non-interface chunk classes and then override the methods needed? That would resolve this crash and possible prevent any future crash with mods that expect a vanilla chunk class

also, another issue with the serverlifecycle is, you don’t know what dimension you’re in. Carvers can run in any dimension so that’s not a solution but just puts the problem back to square one. Especially as iirc, Better Caves allows users to swap cavers to move them around any dimension so the context of the current world that the carver is in is needed. And it isn’t just gonna be the overworld

TelepathicGrunt commented 3 years ago

Was talking with someone and the only other solution Better Caves can even try is mixin a new world field into WorldCarver, then mixin into ChunkGenerator's carve method, and in the loop over configuredcarvers, and set the world of the configuredcarver's inner WorldCarver's world field. However, there is concerned about concurrency issues with this which might need the use of threadlocals.

also, chunkgenerators doesnt have a world either so we are... back to square one again.

Honestly, the safest and best solution is terraforged just extends one of the non-interface chunk classes. Would help prevent better caves having to do even more concerning hacks just to work with terraforged

Won-Ton commented 3 years ago

@Won-Ton pretty sure mixins cannot apply to interfaces. I believe that was what murfrey was working on. Why can’t terraforged have ChunkDelegate extend one of the non-interface chunk classes and then override the methods needed? That would resolve this crash and possible prevent any future crash with mods that expect a vanilla chunk class

ChunkPrimer implements IChunk which has forge's default IWorld getWorldForge() { return null; } patched onto it. You can add an override for that onto ChunkPrimer via mixin in exactly the same way as is being done with IServerWorldHolder .

TF doesn't/won't extend ChunkPrimer because of allocations (ChunkPrimer is full of a bunch of initialized maps/lists/arrays). The contract for ChunkCarver is IChunk which TF fulfills. Mojang's generator design is relatively strict on what it exposes to each generation step (with good reason) so it's on (the proverbial) 'you' if you want to circumvent it.

also, another issue with the serverlifecycle is, you don’t know what dimension you’re in. Carvers can run in any dimension so that’s not a solution but just puts the problem back to square one. Especially as iirc, Better Caves allows users to swap cavers to move them around any dimension so the context of the current world that the carver is in is needed. And it isn’t just gonna be the overworld

This is true. It was just a suggestion in case it fitted this mod's usecase.

yungnickyoung commented 3 years ago

My issue with overriding getWorldForge is that my mod now becomes contingent on that method being present, which could change on a whim by the Forge team. If that method gets changed or removed, we'll be back to square one with this issue. Mixing into vanilla chunk classes is a much more resilient solution.

TelepathicGrunt commented 3 years ago

Won-Ton, ah that's right. I forgot forge patched in the getWorldForge. However, when trying to test mixin into the method, I dont think it is possible anyway. I tried looking up info on mixins into interfaces and all I could find is that mixins cant really do much with interfaces such as adding a field or new methods. image

I still took a stab and tried this but getWorldForge still returns null. And I kind of agree with Nick as it feels like getWorldForge is legacy code that Forge would be likely to remove after another refactor although it is used in ChunkDataEvent. https://gist.github.com/TelepathicGrunt/e733035c0a2af0e8f36c340b6c894b52

If you know how to make a working example mixin into the IChunk interface and get it to store/get the world along with the boolean of if the chunk was carved or not, then please share it. I don't see many options on Better Caves's end.

Edit: I see my mistake is that ChunkPrimerMixin doesn't implement IChunk but it needs to implement IServerWorldHolder. Classes cannot implement two interfaces at once which adds another layer of complexity to the problem.

TelepathicGrunt commented 3 years ago

@yungnickyoung for now, what you could do is wrap all casts in an if(chunk instanceof IServerWorldHolder){ ... } and treat the chunk as overworld and uncarved if the check fails. That would prevent the crash with terraforged until a better solution arises.

Won-Ton commented 3 years ago

@TelepathicGrunt

interface IServerWorldHolder extends IChunk

The hasCarved marker stuff would need another solution but that'd be trivial to solve

yungnickyoung commented 3 years ago

@Won-Ton Can you publish a 1.16 build? I'm gonna try to plug into your API and use the delegate chunk.

Won-Ton commented 3 years ago

@TelepathicGrunt For reference, this is what I was getting at - you mixin-implement the interface, not try mixin into the default method:

interface IChunk {
    ...
    default IWorld getWorldForge() {
        return null
    }
}

interface IServerWorldHolder extends IChunk {
    void setWorldForge(IWorld world);
}

@Mixin(ChunkPrimer.class)
abstract class MixinChunkPrimer implements IServerWorldHolder {

    private IWorld worldForge;

    @Override
    public IWorld getWorldForge() {
        return worldForge;
    }

    @Override
    public void setWorldForge(IWorld world) {
        this.worldForge = world;
    }
}

Anywho, I've submitted an alternative approach which I think should be a lot more solid go forward

yungnickyoung commented 3 years ago

Thanks everyone for your help. I just uploaded v1.1.1, which should hopefully fix this issue. Please let me know if it works for you! I'll leave this issue open a little while longer in case it doesn't.

Zygus42 commented 3 years ago

Works beautifully ! Great looking underground to match the great looking overground ! Well done.

TheOrionsun commented 3 years ago

Looks to be working.... Loaded old version generated world with all but a few chunks trimmed to reset most of it loaded fine where it would not before.

Very nice mod including better mineshafts mod....Just what MC needed.

Thank you for all your time,