Skip to main content
Early Access: MineXHost is live and still being built. Expect maintenance and occasional outages. Check live status

“Unbound values in registry” on a Minecraft server: read the ids, then fix the data

Updated 8 min read By MineXHost

This crash stops a Minecraft server while it loads world-generation data, before the world opens. It lists ids that some data points at but nothing defines. Usually the mod or datapack that should define them is missing or a different version, or one of its files failed to load, and the ids tell you which one to look for.

What the error means

World generation on a modern Minecraft server is data. Biomes, features, structures and the structure sets that place them are loaded into registries from data packs, and on a modded server that includes the data inside each mod's jar. Entries point at each other by id: a placed feature names the configured feature it places, a biome or a Forge or NeoForge biome modifier names the placed features it adds, and a structure set names its structures.

At the end of loading, the server checks that every id something pointed at was actually defined. If any were not, it stops with Unbound values in registry and lists all of them at once. The stack trace under the message is Minecraft's own data loading code. No mod's code ran, so the trace does not point at a mod; the ids do.

How to read the line

Take java.lang.IllegalStateException: Unbound values in registry ResourceKey[minecraft:root / minecraft:worldgen/structure]: [dungeons_arise:aviary]. The part after minecraft:root / names the kind of data that is missing, here structures. The square brackets hold the missing ids. In each id, the namespace before the colon is usually the mod or datapack that should define it, and the path after the colon is the entry's name.

Warning

This is a data problem, so resetting the world is not the first fix. Back up the server and the world folder before you change anything.

Exact error messages

These are the shapes of this error a server log prints. The kind of data after minecraft:root / changes, and so do the ids; the namespace before each colon is your lead.

Exact line in the logWhat it tells you
java.lang.IllegalStateException: Unbound values in registry ResourceKey[minecraft:root / minecraft:worldgen/structure]: [dungeons_arise:aviary]A structure that something, such as a structure set, points at but nothing defines. dungeons_arise is the namespace to look for.
Unbound values in registry ResourceKey[minecraft:root / minecraft:worldgen/configured_feature]: [modid:some_feature]A placed feature names a configured feature that is not defined. That configured feature's file is missing or failed to load.
Unbound values in registry ResourceKey[minecraft:root / minecraft:worldgen/placed_feature]: [modid:some_feature]A biome or biome modifier adds a placed feature that is not defined. If you just took out that placed feature's file, this is the next level up.
Unbound values in registry ResourceKey[minecraft:root / minecraft:worldgen/biome]: [modid:some_biome]A biome is referenced but not defined. Put back the mod or datapack that adds it rather than removing what refers to it.
Trying to access unbound value 'ResourceKey[minecraft:worldgen/structure / modid:name]'The single-id form: something tried to use this one id while nothing had given it a value. The id after the slash is the one to look for.

How to find the cause and fix it

  1. Back up the server, including the world folder.
  2. Open logs/latest.log, find the Unbound values in registry line and copy the ids in the square brackets. Note the kind of data after minecraft:root /.
  3. Read the lines around it, above and below, for an error about a data file, such as Failed to parse or Unknown registry key. When a file fails to load, nothing defines its id, so the unbound list is often a consequence of that error. Fix that one first.
  4. For each namespace, check that the mod or datapack it belongs to is installed. If one was removed or updated since the server last started, put back the version the modpack expects.
  5. If the mod is installed, find the file that points at the missing id. Mod jars are zip files: search their data folders, and the server's datapacks/, world/datapacks/, kubejs/data/, global_packs/ and config/ folders, for the id. Data formats and folder names change between Minecraft versions, so a datapack or add-on built for another version is a suspect; use the build made for your server's version.
  6. If the missing ids are biomes, put back the mod or datapack that adds them. Editing the files that refer to a biome can change the world's terrain, biome layout or dimensions, so treat that as the last resort.
  7. Restart and read the log again. Removing a file that points at a missing id makes that file's own id missing, so whatever pointed at it fails next: take out a placed feature, and the biome modifier that adds it is the next error.

If the server stops with Failed to load datapacks, can't proceed with server load instead, the line above it names the cause, often one recipe or quest pointing at a missing item.

Read the Failed to load datapacks guide

If the log says Overworld settings missing, the definition of the overworld itself is missing from the loaded mods and data packs.

Read the Overworld settings missing guide

What MineXHost's launcher does with this crash

MineXEngine, our launcher, recognises both forms of this error. On a customer server its crash recovery for this error is identify-only: the step that handles it does not move or remove mods, and it does not rename, edit or delete data files, datapacks or the world. The fix is the data change described above.

An earlier start can be involved. When a different data error stops a start, such as a feature or recipe pointing at a missing id, the launcher can disable the data file that broke it: it renames the file with .mxdisabled on the end and logs Disabled broken data file with the file's path. When the file is inside a mod jar or a datapack zip, it removes that entry from the archive instead and logs Datapack heal: removed, naming the ids, from mod jar(s). If another file points at the one it took out, the next start can stop with Unbound values in registry. Search the server for files ending in .mxdisabled and the earlier start's console for either line. Renaming a .mxdisabled file back restores it, and a fresh copy of the mod jar or datapack zip restores an archive, each with its original error, so the lasting fix is still the right mod or datapack version.

For the single-id form, the launcher reads the namespace in the key and can name the mod that owns it in your console, leaving that mod in place. The freeze form has no mod code in its stack trace, so a mod the launcher's crash analysis names from the rest of the log is a guess. When we checked ten QA Lab runs that hit this error, that log reading picked a mod in seven, and none of the seven was the cause. If your console shows a line ending ACTION NEEDED: update or remove this mod manually after this error, compare that mod with the ids in the message before you act on it.

Choosing a pack for a server? Our modpacks hub lists the packs our QA Lab has boot-tested, and each pack's page shows its latest test result and what that test covers.

Modpacks our QA Lab has boot-tested

MineXHost runs Forge, NeoForge and Fabric packs on MineXEngine. Our launcher detects the modpack, picks the right Minecraft loader and Java version, tunes the JVM for your RAM, and auto-recovers from the crashes that normally end a modded server's evening. Pick your RAM, paste the pack, and play.

See hosting plans

Frequently asked questions

What does “Unbound values in registry” mean on a Minecraft server?

Unbound values in registry means the Minecraft server loaded its world-generation data, found ids that some data points at but nothing defines, and stopped before opening the world, listing every missing id in square brackets after the kind of data, such as minecraft:worldgen/structure or minecraft:worldgen/placed_feature. The namespace before each colon is usually the mod or datapack that should define the id.

How do I fix “Unbound values in registry”?

To fix Unbound values in registry, read the ids in the message, then either put back the mod or datapack whose namespace they carry, at the version your modpack expects, or find the data file that points at them and correct it, after taking a backup of the server and the world folder. Restart and read the log again, because removing one file can leave the next level of data unbound.

Does “Unbound values in registry” mean my world is corrupted?

Unbound values in registry usually does not mean the world is corrupted, because the missing ids belong to world-generation data the server loads at start-up from mods and data packs, so the error normally clears once the mod, datapack or file that defines those ids is back or the reference is corrected. Back up the world before trying fixes, and leave a new world as the last resort.

Why was a mod blamed for this error when it has nothing to do with the ids?

A mod named next to Unbound values in registry is often not the cause, because the stack trace under this error is Minecraft's own data loading code with no mod code in it, so any mod picked from the rest of the log is a guess, and the ids in the square brackets are the real lead. In ten MineXHost QA Lab runs we checked, a log-based guess picked a mod in seven, and none of the seven was the cause.

Does MineXHost fix “Unbound values in registry” automatically?

MineXHost does not fix Unbound values in registry automatically on customer servers, because MineXEngine's crash recovery for this error is identify-only: it leaves your mods, data files, datapacks and world as they are, and for the single-id form it can name the mod that owns the missing id in your console. A repair for a different, earlier data error can rename a data file with .mxdisabled or remove a data entry from a mod jar or datapack zip, which this guide explains.

Still stuck?

Every ticket is answered by a real person who plays Minecraft and knows modpacks. Send the full console output, not just the last line. Customers open a ticket from the panel; anyone can ask in our Discord.

  • Live support 5PM-12AM ET on weekdays
  • Replies typically within 12 hours
  • Limited availability on weekends