Initial update to Minecraft 1.21. This version had a lot of (Mojang made) changes, especially a large update to DataFixerUpper which required a lot of changes within Cyanide. Some of Cyanide's features have been integrated into Minecraft itself (see for example, Mojang/DataFixerUpper@e491561
or Mojang/DataFixerUpper#54).
With these changes, come some improvements to Cyanide's error tracking, mainly in being able to handle the "Unbound values in registry" more gracefully by tracking where the unbound reference(s) came from:
Missing File Error: 'cyanide:worldgen/configured_feature/big_ores'
was referenced but not defined
  at 'cyanide:worldgen/placed_feature/big_ores' defined in 'file/Test.zip'
Changes
- Updated to Minecraft 1.21, supporting NeoForge and Fabric.
- Rewrote registry parsing (again) in order to better handle "Unbound values in registry" errors.
- Added improved error messages for
IntProvider
andFloatProvider
. - Added various
fieldOf
injections for traceability across a number of different data types. - Removed error reporting modifications for
Biome
s,Enum
types, and list indexes.
Features
For a more comprehensive list of Cyanide's existing features, see here.
Updated to 1.19.3
Mojang pulled a fast one on modders and unfortunately this is not compatible with 1.19.2. They also managed to rewrite some of their registry loading which has made Cyanide a bit more ineffective, as tracking down invalid references is no longer possible (quite unfortunately).
- Added some additional error reporting to placed features.
- Improved the cases in which feature cycle errors were able to be detected. Previously, this would only work with the "add datapacks" screen.
- Improve performance of data pack detection (the
at: data pack foobar.zip
) error, when no errors are detected. Can result in 2-3x speedups for larger world gen data packs.
Added detection and improved error logging for feature cycles. The new error messages now identify the exact cycle, including the biomes and features by name that they were defined in (a significant improvement on printing the hash codes of the biomes).
Example of a feature cycle using Cyanide:
A feature cycle was found.
Cycle:
At step 7
Feature 'minecraft:patch_fire'
must be before 'minecraft:patch_soul_fire' (defined in 'minecraft:warped_forest' at index 1, 2 and 3 others)
must be before 'minecraft:glowstone_extra' (defined in 'minecraft:warped_forest' at index 2, 3 and 2 others)
must be before 'minecraft:glowstone' (defined in 'minecraft:warped_forest' at index 3, 4 and 4 others)
must be before 'minecraft:patch_crimson_roots' (defined in 'minecraft:soul_sand_valley' at index 2, 3)
must be before 'minecraft:patch_fire' (defined in 'minecraft:soul_sand_valley' at index 3, 4)
The same datapack in Vanilla, 1.18-pre7:
Failed to validate datapack
java.util.concurrent.CompletionException: java.lang.IllegalStateException: Feature order cycle found, involved biomes: [caz@5bf17128, caz@7913a77c]
... followed by a ~50 line long stacktrace ...