WorldEdit for Bukkit

WorldEdit for Bukkit

21M Downloads

Provide BiomeCategories class a la BlockCategories, ItemCategories

mk-pmb opened this issue · 6 comments

commented

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

commented

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.

commented

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.

commented

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.

  1. Download server.jar for the version you want.
  2. unzip -p server.jar META-INF/versions/1.20/server-1.20.jar >inner-server.jar (replace with appropriate version)
  3. unzip -p inner-server.jar data/minecraft/tags/worldgen/biome/is_overworld.json >is_overworld.json (do each tag as needed)
commented

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.

commented

There is no agreement between EngineHub and Mojang. Some individuals have other agreements, but none which affect what we publish or don't.

commented

Regardless, I think this has gotten off-topic. We won't be adding any additional markers, as that is markedly out-of-scope for our project. I will leave this open to track the addition of BiomeCategories.