LibCapableData, or LibCD, adds various hooks to make data packs more usable.
LibCD's original function was as a hook to conditionally load data pack elements based on a metadata file. It's focused on being simple and extensible, along with being compatible with any resource type added by other mods. This mod requires the Fabric launcher for Minecraft 1.14 and above.
For conditional resources, add a file
<target resource with extension>.mcmeta. This will be parsed as JSON to check whether the resource should be loaded. Each key-value pair will specify a condition that must be met for the recipe to be loaded. There are four conditions pre-included, and other mods may add their own:
libcd:mod_loaded(passed a string): Will return true if a mod with the given mod ID is loaded.
libcd:item_exists(passed a string): Will return true if an item with the given item ID is loaded.
libcd:not(passed a single-element json object) Will return true if the condition listed in the given object is not true.
libcd:any_of(passed a json object): Will return true if any condition listed in the given object is true.
WARNING: Currently, conditions silently return false if they are passed an improper parameter. This will hopefully be changed in the future, but if you think something should be loaded and it isn't, check your conditions.
Tweakers are a MineTweaker/CraftTweaker-esque system that work off data packs and JSR-223 scripting languages. For more information, check the LibCD wiki. (use SewingKit for a direct CraftTweaker port)
LibCD allows any mod to register their own conditions, to prevent recipe loadin based on config or more advanced logic. LibCD is available on the CurseForge maven.
To add a new condition, call
LibConditionalData.registerCondition(), passing an Identifier for the condition's name and a `Predicate for the use of the condition.
The Object passed to the predicate will be a boxed primitive (Integer, Float, Boolean, etc.), a String, a List, a JsonObject, or null. Use an
instanceof check to be sure what you're being passed.
For information on creating Tweaker utilities, check the LibCD wiki page.