[Feature] Allow graceful and dynamic handling of block IDs.
Continous opened this issue · 2 comments
Pre-Request Checklist
- I have checked that I am on the latest version of Terra.
- I have searched github for similar features requests, including closed
ones, and found none. - I believe this is within the scope of Terra.
- This feature request is for all of Terra, and isn't something that
should be implemented by a pack or addon.
Feature Description
Allow Terra config modpacks to fallback to a valid block when an invalid block is referenced, and/or allow config packs to reference blocks conditionally based on their validity.
What Problem Does This Solve?
Currently, a terra config pack must presume a select set of blocks. If a config is intending to represent a wide breadth of mods, they must either provide a plethora of config variants, or require a user to have the full breadth of mods installed, or worse have the user modify the pack themselves. Otherwise a crash occurs.
A Solution You'd Like
Terra should provide a fallback block parameter for config developers to define a block onto which any failed references can fall back to. Terra should default this to something sensible otherwise (maybe based on vanilla biome tags?)
Additionally, it'd be nice to allow config developers to conditionally refer to blocks within a new BLOCK: context where a fallback and a desired block can both be declared. An example:
- mod:block
- minecraft:block
The given example could also allow a fallback cascade. IE it fails from top to bottom as a list.
Alternative Solutions
- Theoretically you could just hardcode a fallback block and call it good. It wouldn't be pretty imo, but it would work.
- Allowing pack developers to check if a block is present then leaving it up to them on how to inject the blocks.
- Potentially, if config packs could have their own add-on config packs, you could just have each mod have it's own add-on config pack. Though, this doesn't really solve the problem of missing blocks causing crashes.
I discussed this at one point, I think its a great idea, but I dont have the bandwidth to work on it right now.