Recurrent Complex

Recurrent Complex

35M Downloads

[Enhancement] Optional per-Dimension Black-/Whitelist

rootmenu opened this issue ยท 0 comments

commented

Hey there!

I'd like to suggest an option to white-/blacklist structures per dimension. There is a related Issue for more dynamic dimension expressions (#315 ), but I'd suggest another approach. For cases which cannot be done using the global dimension expression you would have to edit every structure seperately, as the structures store their spawning conditions.

As Axieum in his topic, I, too, wanted to use rec to populate different planets (and limit which structures spawn in the overworld) but it gets very tedious to create custom dimension expressions for every structure.

You could add a per-dimension black-/whitelist which acts in a top-down kind of fashion.
Imagine a custom planet with a different kind of stone and I want to spawn pyramids and deserty structures in this wasteland, albeit I want them to replace sandstone with a custom stone. I don't see a way to achieve this easily with global expressions, so the only current solution is to edit all the structures I want to have on this planet and equip them with custom expressions so the structures handle their own dimension, placement and replacement logic.

Your bottom-up approach is nicely done to simplify exchangeablity, but the above scenario could easily be solved with optional top-down logic.

Example config (in pseudocode)

dimension with id 300 (-> wasteland planet) {
    whitelist {
        BabylonTower, (with optional spawnrate tweak?)
        Pyramid,
        SmallPyramid }
or 
    blacklist {
        MagicalTrees,
        WoodenClockTower }
    globalTransformer { ('global' as in global for all structures in this dimension)
        replace Sandstone with WastelandStone,
        replace SandstoneStairs with WastelandStoneStairs,
        ... }
}

This way you could use global expressions/transformations on a per-dimension base rather than modifying every single structure. Using black- and whitelists in a "not specified -> not modified" you could still retain the exchangeablility of structures.