Cyanide

Cyanide

Mod

A mod which substantially improves Minecraft's data driven world generation error detection, reporting, and recovery mechanisms.

Client or server Utility

6,232 downloads
30 followers
Createda year ago
Updated7 months ago

Follow Save
Host your Minecraft server on BisectHosting - get 25% off your first month with code MODRINTH.

cyanide seems to be something that will make me want to drink cyanide a lot less - Starmute, world generation datapack wizard.

A mod which substantially improves Minecraft's data driven world generation error detection and recovery mechanisms. For example, consider the following fairly common error in Vanilla:

Feature: Not a JSON object: "minecraft:disk_gravel"; Not a JSON object: "minecraft:disk_clay"; Not a JSON object: "minecraft:disk_sand"; Not a JSON object: "minecraft:ore_copper"; Not a JSON object: "minecraft:ore_lapis"; Not a JSON object: "minecraft:ore_diamond"; Not a JSON object: "minecraft:ore_redstone"; Not a JSON object: "minecraft:ore_gold"; Not a JSON object: "minecraft:ore_iron"; Not a JSON object: "minecraft:ore_coal"; Not a JSON object: "cyanide:broken_disk_gravel"; Not a JSON object: "minecraft:ore_deepslate"; Not a JSON object: "minecraft:ore_tuff"; Not a JSON object: "minecraft:ore_andesite"; Not a JSON object: "minecraft:ore_diorite"; Not a JSON object: "minecraft:ore_granite"; Not a JSON object: "minecraft:ore_gravel"; Not a JSON object: "minecraft:ore_dirt"
[19:04:44] [Render thread/WARN]: Failed to validate datapack
java.util.concurrent.CompletionException: com.google.gson.JsonParseException: Error loading registry data: No key snowy in MapLike[{"not_snowy":"true"}]

And now compare the error, using the exact same datapack, with Cyanide included:

Error(s) loading registry minecraft:worldgen/biome:
No key snowy in MapLike[{"not_snowy":"true"}]
	at: file "data/cyanide/worldgen/configured_feature/broken_disk_gravel.json"
	at: data pack cyanide-debug.zip
	at: reference to "cyanide:broken_disk_gravel" from minecraft:worldgen/configured_feature
Missing feature at index 7
	at: "features", step underground_ores, index 6
	at: file "data/cyanide/worldgen/biome/plains_broken_feature.json"
	at: data pack cyanide-debug.zip
Missing feature at index 6
	at: "features", step underground_ores, index 6
	at: file "data/cyanide/worldgen/biome/plains_unregistered_feature.json"
	at: data pack cyanide-debug.zip; 

Error(s) loading registry minecraft:worldgen/configured_feature:
No key snowy in MapLike[{"not_snowy":"true"}]
	at: file "data/cyanide/worldgen/configured_feature/broken_disk_gravel.json"
	at: data pack cyanide-debug.zip
Unknown element name: invalid_heightmap
	at: file "data/cyanide/worldgen/configured_feature/broken_disk_gravel_2.json"
	at: data pack cyanide-debug.zip

Features

World Generation Data Pack Error Improvements

  • Append the file to each error message. (at: file "data/cyanide/blah/blah.json")
  • Append the source datapack to each error message (at: data pack blah.zip)
  • Group and categorize errors by registry.
  • Several improvements for error recovery:
    • If an error occurs during a single registry parsing, don't abort parsing others.
    • Record all errors that occur parsing a single registry, not just the first one.
  • Optional fields, in some cases, will error if a value is present, but invalid. Example:
In a biome json, the following is a valid temperature modifier.
It is the same as using a temperature modifier of 'none'.
In Cyanide, this would error.

"temperature_modifier": "hocus pocus!"
  • Improvements for select codecs, which now report trace information to identify where in the file an error occurred.
    • Features in biomes identify both the index in the list, and the index as a generation step.
    • Other fields such as carvers, surface_builder, etc. in biomes will be traced in error messages.
  • Removed the Feature: Not a JSON Object log messages. These are now upgraded to full errors.
  • Some fields, such as biome categories, temperature modifiers, and precipitations, have slightly improved error messages and will also show the range of valid values. Example:
Unknown category name: not_a_category, expected one of [none, taiga, extreme_hills, jungle, mesa, plains, savanna, icy, the_end, beach, forest, ocean, desert, river, swamp, mushroom, nether, underground]
	at: file "data/cyanide/worldgen/biome/invalid_category.json"
	at: data pack test_data_pack.zip
  • Template pools have additional error reporting identifying where in the file errors had occurred.
  • Invalid processor lists in template pools will be caught at datapack load instead of at runtime, causing hard crashes.
  • Invalid registry entries will error at datapack load rather than either defaulting, or returning null at runtime.
  • Feature cycle errors are improved, and will now print the exact features, indices, and source biomes (all by registry name) in the cycle, in order of the cycle.
  • Improvements for log messages for invalid loot tables and recipes:
    • Stack traces are not printed to the log.
    • Offending file names are identified and printed instead.
  • The "Loaded X Recipe(s)" log message is now accurate.

External resources



Project members

alcatrazEscapee

Owner


Technical information

License
Client side
optional
Server side
optional
Project ID