Skip to content
This repository was archived by the owner on Apr 26, 2026. It is now read-only.
This repository was archived by the owner on Apr 26, 2026. It is now read-only.

Suggestions: Config options to avoid generation issues and cascading collapses #32

@IdrisQe

Description

@IdrisQe

A number of mods add floating islands in the sky, near-surface caves generate with dirt and sand and gravel on top, and sometimes multiple layers of blocks that don't count as a full block spawn atop eachother (soul sand, Biomes O' Plenty Mud or Ash, etc.) and this can cause some pretty intense worldgen lag as the internal server panics trying to calculate the falling positions of hundreds of blocks at once.

Now, obviously, this can be solved by simply removing said blocks from the config, but then you lose the falling behaviour on many of them entirely. What I propose is some config options to help mitigate these potential issues:

  1. Boolean: "Blacklist non-full" or some better name than that. The idea would be that any block that doesn't count as a full block (soul sand, mud, redstone dust, torches, etc.) would automatically be exempt from the mod's features, to avoid cascades of layers upon layers of them breaking atop eachother then triggering more to break and more and more.
    repose.blacklistPartial=true

As an example, I generated a Biomes O' Plenty world and my world was immediately frozen for 10+ minutes as a mangrove biome spawned, the mud floor began to collapse, broke on the part of the second mud layer beneath it, which also then collapsed, leaving a huge sinkhole and floating trees.
With this config, those wouldn't fall even if in the granular list, nor be automatically placed in the granular list, preventing issues like that.

  1. List: "Bottom Generation Blocks". This one would mirror the Granular list, but instead would make it so that on-generation, if either a non-full block or air is detected underneath, the block generated would instead be changed to the corresponding block in the Bottom Generation list.
    So for example:
    repose.granularBlocks=minecraft:dirt,minecraft:sand,minecraft:gravel,minecraft:soul_sand
    repose.bottomBlocks=minecraft:stone,minecraft:sandstone,minecraft:stone,minecraft:netherrack

And then for example, you have a floating island from a structure mod generate made from dirt, the bottom layer of dirt open to the air will instead become stone to prevent the whole island from crashing to the ground instantly.

  1. List: "Support Blocks" and "Friction Blcoks". The former would make it so that if a granular block is directly below, above, or beside one of the listed blocks, it won't fall due to being held up by the Support Block. The latter would decrease the chance of the block falling when disturbed if two or more horizontal sides (front, back, left, right) are against a Friction Block.

3a. repose.supportBlocks=minecraft.grass,minecraft.mycelium

This would make it so, say a cliff generated with grass on top, and a 2 block overhang of grass and dirt. Due to the grass's roots, the grass nor the dirt right below it will fall, despite both hanging over air, due to the grass that IS on the cliff beside the overhanging grass holding up the overhanging grass with its roots, and the overhanging grass holding up the dirt below it with its roots. If the grass/grass connection is broken, the grass will start to fall because there's no support beside or above it to hold it up, and the dirt below it would start to fall as a result too.

3b.
repose.granularBlocks=minecraft.cobblestone
repose.frictionBlocks=minecraft.cobblestone
repose.allFriction=false
repose.bottomFriction=false

And then you build a hollow box out of cobblestone. Due to the roof cobblestone being surrounded on all four sides by more cobblestone, it doesn't fall. if the integrity is compromised, there's a 25% chance that blocks with horizontal sides now exposed to the air due to the missing block will fall. 50% chance if two sides aren't against friction blocks. 100% if 3 or 4 sides have air beside them, instantly causing it to fall, not held in place by friction.

allFriction, if true would label every block as a friction block, making it so any granular block can only fall if 1-4 horizontal sides are exposed to air and it's not being held up by a Support Block. This would let sand roofs be stable so long as the sand block is surrounded on all four sides by any block that isn't a non-full block.
Could also make cave-ins a significant hazard if you set Stone to be a Granular block and had allFriction on, so if you mine out a cave wall incorrectly there's a chance part of it will collapse.

bottomFriction, if true would make it so if there is any Friction Block directly under a Granular block, it cannot collapse outward when disturbed, essentially stabilizing them.

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions