Why converting snbt to json ftbquest is the only way to save your modpack

Why converting snbt to json ftbquest is the only way to save your modpack

Modding Minecraft is a headache. You’ve spent six hours trying to get a quest line to trigger correctly in FTB Quests, but the game keeps spitting out errors or, worse, just ignoring your changes entirely. If you're messing with modern versions of the FTB Quests mod, you’ve likely bumped into the SNBT format. It’s cleaner to read than standard JSON, sure, but sometimes the game engine—or your own sanity—demands a conversion. Dealing with snbt to json ftbquest isn't just about changing file extensions; it's about understanding how data is structured in the KubeJS and Feed The Beast ecosystem.

Most people think you can just rename a file and call it a day. It doesn't work like that.

The SNBT headache vs JSON reality

SNBT, or Stringified NBT, is basically Minecraft’s way of making NBT data look somewhat human-readable. It strips away the quotes where it can and simplifies the mess of curly braces that usually defines JSON. However, FTB Quests switched to SNBT for its internal files specifically to help version control like Git. It makes "diffs" look a lot cleaner. But here is the kicker: many external tools, web-based editors, or custom scripts you might be using to bulk-edit rewards or tasks only speak JSON.

If you’ve ever tried to open a .snbt file in a standard JSON validator, it’ll scream at you. It hates the lack of quotes on keys. It hates the trailing commas that SNBT allows.

Converting snbt to json ftbquest files usually happens for one of two reasons. Either you are trying to use an older quest-editing tool that hasn't been updated since the 1.12.2 days, or you are writing a custom Python or JavaScript script to automate quest creation because manually clicking in the GUI is a literal nightmare for a pack with 500+ quests.

Why the conversion matters for modpack stability

When you’re deep in the config files of a pack like Enigmatica or All The Mods, consistency is everything. FTB Quests stores data in the config/ftbquests/quests folder. Inside, you’ll find chapters and quest files. If you accidentally corrupt the formatting during a manual edit, the entire quest book can go blank. I’ve seen it happen. You reload the game, open the quest book, and it's just a void.

The struggle is real because SNBT is "loose." JSON is "strict." You can convert SNBT to JSON easily because JSON is essentially a more annoying, stricter version of the same data structure. Going back the other way is where the magic happens, but let's stick to why you'd want that JSON output first.

Tools of the trade for conversion

You aren't going to do this by hand. Don't even try.

There are a few ways to handle the snbt to json ftbquest pipeline. If you’re a developer, you’re probably looking at the NBT-JS libraries or the official libraries provided by the FTB team. For the average modpack dev, you want something faster.

  1. The KubeJS Command Line: If you have KubeJS installed alongside FTB Quests (which you should, they work like a charm together), there are internal methods to dump NBT data.
  2. Online NBT to JSON Converters: There are several web tools (like the ones maintained by the Prism Launcher community or independent modders on GitHub) that allow you to paste SNBT and get a clean JSON object back.
  3. VS Code Extensions: This is the pro move. Search the VS Code marketplace for "NBT" or "SNBT" support. There are extensions that provide syntax highlighting and even "format on save" options that can bridge the gap between the two formats.

Honestly, the easiest way to see what's happening under the hood is to use a tool like NBTExplorer, though it's a bit old-school now. Modern devs usually stick to the VS Code route.

A real-world example of the format shift

Let's look at a snippet. In SNBT, a quest task might look like this:

{ item: "minecraft:iron_ingot", count: 64L, consume_items: true }

Notice the 64L. That L tells the game it’s a Long integer. Standard JSON has no idea what that L is. It will break. When you convert that to JSON, it has to become a strict number or a specifically formatted string depending on the parser you use. This is why "just copying and pasting" fails. The conversion process has to strip those Minecraft-specific type suffixes while preserving the data's integrity.

✨ Don't miss: The Hero's Guide to Saving Your Kingdom: What Most Fantasy RPGs Get Wrong

Common pitfalls when editing FTB Quests

You've got your JSON. You've edited your quests. Now you want to put them back. Stop.

The biggest mistake is forgetting that FTB Quests generates unique IDs (UIDs) for every single quest, task, and reward. These are usually 16-character hex strings like 5E3C8A21B0F923D4. If you convert to JSON to bulk-copy a quest, and you forget to change those UIDs, you will create a "collision." The game won't know which quest is which. Best case? One quest disappears. Worst case? The world save crashes on load.

Always make sure your conversion tool preserves these hex strings as strings, not numbers. Some aggressive JSON parsers see a hex code and try to turn it into a decimal number, which completely ruins the file.

Dealing with the "loot_table" mess

If you are converting quest rewards, you’ll notice that FTB Quests loves to nest NBT data inside strings when dealing with loot tables. This is a "nested SNBT" situation. You have a JSON file, containing a string, which itself contains SNBT. It’s like a Russian nesting doll of data formats. If you’re trying to automate your quest rewards, you need to be extremely careful with escaping characters. One missing backslash and the whole file is toast.

How to actually execute the conversion

If you’re ready to actually do this, here is the workflow I recommend for most modpack creators.

First, back up your config/ftbquests folder. Seriously. Do it now.

✨ Don't miss: What Actually Happens in the Expedition 33 Verso Ending

Second, use a Python script if you have more than ten files. There are several "nbt2json" scripts on GitHub that handle the specialized Minecraft types (the B for byte, S for short, L for long).

If you just have one file, use a web-based SNBT parser.

  • Paste your SNBT.
  • Clean up any trailing commas that might confuse a strict JSON parser.
  • Use a JSON "Linter" to make sure the syntax is perfect.
  • Perform your bulk edits (like changing a reward item across 50 quests).
  • Convert back using an SNBT stringifier.

The KubeJS shortcut

If you’re tech-savvy, you can actually use KubeJS to do the heavy lifting for you in-game. By using the /kubejs dump_nbt commands or writing a small server script, you can print the NBT of an item or a quest object directly into the logs in a format that is much easier to manipulate. This bypasses the need for external snbt to json ftbquest tools because you’re working with the objects directly in the game’s memory.

Actionable insights for your modpack

Don't overcomplicate it. If you're just changing the name of a quest, do it in the game's GUI. The FTB Quests editor is actually quite good these days. You only need to dive into the SNBT-to-JSON rabbit hole if you are doing one of the following:

  • Mass-translating quest text into another language using an API.
  • Replacing a deprecated mod's items across your entire questing progression.
  • Generating quests procedurally (like making a quest for every single "Ore" in the game).

To move forward, start by downloading a high-quality text editor like VS Code and installing the "NBT" language support plugin. It makes the files much more readable without even needing to convert them to JSON. If you absolutely must convert, keep a close eye on your UIDs and data types like Longs and Bytes. One wrong letter and your quest book is history.

Once you’ve finished your edits, always run the /ftbquests reload command in-game. If the chat doesn't turn red with errors, you've successfully navigated the format wars. If it does, well, hope you took that backup I mentioned earlier.