Provide BiomeCategories class a la BlockCategories, ItemCategories
mk-pmb opened this issue · 6 comments
The Problem
I'm writing a tool that will generate biome mask commands for WorldEdit, and I'd like to skip biomes that do not usually exist in the current dimension.
I found the list of all biome IDs in BiomeTypes.java
but it lacks dimension information.
A Solution
I would love if you could divide your list by biome in some machine-readable way (edit: inside the file's text) and shoulder the maintenance work of keeping track of correctness. Markers in comments would be enough for my use case, e.g. // %begin_dimension% overworld
… // %endof_dimension% overworld
Alternatives
I could try to obtain Minecraft Wiki's biome name lists for the advancements "Adventuring Time" and "Hot Tourist Destinations", try to match them, and assume the remainder to be End biomes. 🤷
Anything Else?
No response
Mojang actually already provides this information as biome tags -- minecraft:is_overworld
, minecraft:is_nether
, and minecraft:is_end
. See https://minecraft.fandom.com/wiki/Tag#Biomes.
We should probably expose this in the API since it wouldn't be very hard to do, we just haven't had a reason to.
To clarify, my tool is a bash script. I'd much rather parse markers from the file than make a Java thingy just to query the API. Which also would require users of my tool to have Java installed on the machine where they generate the commands – not necessarily the machine where they run Minecraft.
Using data queried from a Mojang API might also complicate licensing.
For your use case, I would recommend reading the data files directly from Minecraft instead. I'm not sure what licensing concerns you have, and why you think being a step separated from them by us would be different. We also source directly from the Minecraft JAR.
Steps to semi-easily get the biome information.
- Download
server.jar
for the version you want. unzip -p server.jar META-INF/versions/1.20/server-1.20.jar >inner-server.jar
(replace with appropriate version)unzip -p inner-server.jar data/minecraft/tags/worldgen/biome/is_overworld.json >is_overworld.json
(do each tag as needed)
why you think being a step separated from them by us would be different.
It's about what you have agreed to or not. At least in my country's legal system, agreeing to ToS or EULAs has a person boundary, and being a different person makes a LOT of a difference. Most WE devs have probably given up some of their freedoms in what kinds of Minecraft-related software they are allowed to publish. I haven't had to, which puts me in a privileged position where I can provide software to the community that others are forbidden from.
There is no agreement between EngineHub and Mojang. Some individuals have other agreements, but none which affect what we publish or don't.