Skip to content

Performance & API Refinements

Compare
Choose a tag to compare
@2008Choco 2008Choco released this 26 Feb 12:46
· 75 commits to main since this release

Changelog

  • More complex recipes will now take priority over less complex recipes in the cauldron
    • Recipe complexity depends on item quantity (though this may change in the future. This is a test)
    • For example, if you have two recipes, one that takes 2 emeralds and 1 stone, another that takes 1 emerald and 1 stone, if 5 emeralds and 3 stone are thrown into the cauldron, the first recipe will trigger twice and the second will trigger once
      • This behaviour was previously dependent on registration order. Complexity ensures that the most complex recipe is crafted first
  • Added /alchema saverecipe which allows server owners to save one (or more) default recipe(s) that otherwise would not be automatically generated
    • This command makes the process simpler when new default recipes are added to Alchema and no longer requires an admin to copy/paste new recipe files from GitHub.
    • Tab completion will ensure that all available recipes are displayed and easy to save
    • Trailing wildcards are supported, meaning /alchema saverecipe concrete/* will save all recipes under the default concrete directory.
    • Permission: alchema.command.saverecipe. Default op
  • A new example_item.json will be generated in the root Alchema folder demonstrating all available options for items in Alchema's recipes files
  • Improvements to the efficiency of recipe searching. May be slightly more performant
  • Improvements to the efficiency of hash-based lookups for recipe and recipe ingredient objects

API Changelog

  • Many utility classes were removed in favour of ChocoCommons, a new library containing otherwise identical classes, just under a new package, wtf.choco.commons.*
  • GSON is no longer publicly accessible in Alchema. It was never meant for public use
  • Added 2 new methods to do with recipe complexity in the CauldronRecipeRegistry
    • CauldronRecipeRegistry#getApplicableRecipe(List<CauldronIngredient>, boolean) : CauldronRecipe
    • CauldronRecipeRegistry#getApplicableRecipes(List<CauldronIngredient>) : List<CauldronRecipe>
  • Added CauldronRecipe#getComplexity() : int
  • CauldronRecipeRegistry#registerIngredientType() will no longer accept registrations onEnable() and instead throw an exception. These calls should be made onLoad()