LibCapableData (LibCD)

Mods
34,517 Downloads Last Updated: Aug 18, 2020 Game Version: 1.16.2

DISCLAIMER

LibCD 3.0 removes the Tweaker system entirely. I will have a replacement for most of its abilities soon. Please be patient.

 

LibCapableData, or LibCD, adds various hooks to make data packs more usable. 

Conditional Data

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.

 

Developer Use

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 Cotton 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.

Comments

Posts Quoted: