Biomes O' Plenty

Biomes O' Plenty

151M Downloads

The case for making Cold Desert not be tagged as forge:is_desert

TelepathicGrunt opened this issue ยท 2 comments

commented

Overview

Summary: For better mod and datapack interactions out of the box with all the pale sandy/sandstone structures out there, Cold Desert would be better off not tagged as forge:is_desert.

Why would this feature be useful?

I would like to briefly present my case for this tag removal as I seen lot of users complain about seeing pale sandstone structures in BoP's Cold Desert biome. Biome tags are indeed suppose to be used to make compatibility between mods and datapacks much better but they come with a caveat.

  • Tags are additive. Only supports unions. It does not support intersections or exclusions.
  • Structure json files takes a tag for what biomes they spawn in. There is no biome blacklist.

Knowing this, this means that care should be taken that when tagging anything, that not only is the tag usage technically correct but also making sure the actual interactions that will occur also makes sense and best for user experience. In this case, Cold Desert is technically a desert but it is not themed at all like vanilla's desert and many other pale desert biome mods out there. What happens is anyone, especially datapacks, using the vanilla structure json system, and using a tag that also includes the forge:is_desert tag inside, now spawn their sandstone structures inside the gravel based Cold Desert.

This is off-putting to users as the structures does not fit in the biome. Which means users would need to hunt down the tags that each mod and datapack is using for the structures, override the tag with replace set to true, and manually list every desert biome they want. This is painful since again, tags are made to be additive but have poor removal support.

This is an edge case where I would say, not tagging the Cold Desert as forge:is_desert would actually provide better mod/datapack compatibility/interaction out of the box. And if users do want it to be tagged as forge:is_desert for whatever reason, then they can add the biome to the forge tag very easily due to how tags work.

It also makes more sense this way instead of forcing modders to have to create their own structure json system or fiddle around with forge's weird tag holder json changes that is obtuse and difficult to use. It also helps datapackers that cannot use the forge holder json changes nor make their own structure json types as they aim to be cross modloader compat. I would say it would be better to not force datapackers to have to choose between ditching the forge:is_desert tag due to Cold Desert slipping in and trying to support all other mod's desert biomes. If something seems iffy to include in a tag and might cause many unintended or jarring behaviors, don't tag the object and leave that to the user/modpack maker's choice to add it later if they do want all the unintended effects of tagging something a certain way.

This has been my 2 cents from a perspective of a structure modder and from what I am seeing in the worldgen datapacking community in regards to these biome tags.

commented

Can you not use multiple tags to fine-tune structure spawning? As in, requiring is_desert AND is_hot/overworld to get your desired outcome in this case. Or is that not possible with vanilla's structure system?

commented

Vanilla structure json system only has one field called "biomes". It takes either a biome tag or a list of biomes themselves. There is no "and" condition possible. No blacklist. Only what's in a tag. The option for datapackers is limited and do not have the option to fine tune to remove an undesired biome.

You can playa round with the vanilla json here to see what I mean: https://misode.github.io/worldgen/structure/

image

image