custom-crafter-api
5.4.0An advanced PaperMC crafting engine for building complex recipes with NBT-supported custom items.
5.4.0latestcustom-crafter-api 5.4.0Aug 2, 2026
*Breaking Changes
CMatter.isValidMatter(),CRecipe.isValidRecipe(),CraftUIDesigner.Baked.isValid(), andAllCandidateUIDesigner.Baked.isValid()no longer returnResult<Unit>; they now throwIllegalStateExceptiondirectly on failure and return nothing on success. *CMatter.firstFailedPredicate()andCRecipe.firstFailedRecipePredicate()now returnkotlin.Pair<Int, CMatterPredicate>/kotlin.Pair<Int, CRecipePredicate>instead ofIndexedValue. *AllCandidateUIDesigner.Baked.ungeneratedIconPlaceholderItemchanged from the Kotlin function type(CRecipe) -> ItemStacktojava.util.function.Function<CRecipe, ItemStack>. *Explainer's constructor parameter order changed from(name, verbosity)to(verbosity, name), since controlling the log level without naming the instance is the more common use case.
[Enhancement]* Improved Java interoperability across the public API by replacing Kotlin-only return types (New Features and Enhancements
Result,IndexedValue) and lambda parameter types with plain exceptions andjava.util.function.Function.5.3.0custom-crafter-api 5.3.0Jul 26, 2026
[Dependency Removal] Removed the Choco-solver* dependency; shapeless matching now uses an in-house max-flow solver, so theBreaking Changes
org.chocosolvershaded relocation is gone. *CMatter.predicateschanged fromCollection<CMatterPredicate>?toList<CMatterPredicate>?, making predicate order significant. *CMatterImpl.defaultMatterPredicates()now returnsList<CMatterPredicate>instead ofSet<CMatterPredicate>. *CMatterPredicate.ContextandCRecipePredicate.Contextgained a trailingexplainerparameter; Kotlin source compatibility is preserved, but binary compatibility is not.
[New Feature]* AddedNew Features and Enhancements
Explainer: an opt-in, thread-safe diagnostic recorder that reports why each recipe did or did not match during a search. [New Feature]* AddedMatchGroupandCRecipe.matchGroups(), generalising shapeless matching from "every slot is mandatory" into a min/max bounded assignment. [New Feature]* AddedShapelessGroupRecipe: the shapeless counterpart ofGroupRecipe, needing noMaterial.AIRplaceholder to express an optional slot. [New Feature]* Added theCMatterPredicatesandCRecipePredicatesutility objects, providing theand,or,allOf, andnOfcombinators. [New Feature]* Addednamed()and aname()default method on both predicate interfaces, so a predicate is reported by name instead of by index (combinators compose names automatically). [Enhancement]*CMatterPredicate.ContextandCRecipePredicate.Contextnow expose anexplainerfield, letting a predicate record why it rejected an input. [Enhancement]* AddedCMatter.firstFailedPredicate()andCRecipe.firstFailedRecipePredicate(), returning the first rejecting predicate instead of only whether one rejected. [Enhancement]*Search.search,Search.asyncSearch,PartialSearch.asyncPartialSearch, andVanillaSearch.searchnow accept an optionalexplainer. [Documentation]* Added the "Advanced Debugging for Recipe Search" page (EN / JA) and documented thePredicatesutilities and predicate naming on theCRecipePredicatepage.5.2.1custom-crafter-api 5.2.1Jun 9, 2026 5.2.1
[Enhancement]* Added Javadoc so that Java users can browse API details in a familiar documentation format. [Enhancement]* Several functions can now be called from Java in a more intuitive way.New Features and Enhancements
5.2.0custom-crafter-api 5.2.0Jun 7, 2026 5.2.0
* The method for resettingBreaking Changes
CustomCrafterAPIproperties to their default values has changed. *hasFullCompatibility()has been deprecated. UseMAJOR_VERSION,MINOR_VERSION,PATCH_VERSION, andVERSION_TYPEinstead. * Several utility functions have been made private or relocated. * Passing a plugin instance when registering recipes is now recommended. * Several events are now non-cancellable.
[New Feature]* AddedNew Features and Enhancements
AllCandidateUIDesigner: the AllCandidateUI appearance can now be customized. [New Feature]* AddedNameStrictLevel: recipe registration can now be restricted to prevent duplicate names. [Enhancement]* Version information is now more accessible viaMAJOR_VERSION,MINOR_VERSION,PATCH_VERSION, andVERSION_TYPE. [Enhancement]* Recipe registration and deregistration APIs have been improved; recipes can now be filtered by registering plugin. [Enhancement]* Added default implementations toCraftUIDesigner, reducing boilerplate for partial customization.5.1.0custom-crafter-api 5.1.0May 1, 2026 5.1.0
The minimum compatible version requirement rarely changes between updates. Using the latest release is recommended.
[Package Rename]* Several packages have been significantly renamed and reorganized. Projects that reference specific package paths will require import updates.Breaking Changes
[New Feature]* AddedNew Features and Enhancements
AdjacentRecipe: a recipe that requires input items to be placed adjacent to one another — a weakly shape-constrained recipe type. [Enhancement]* Simplified constructors for several classes to reduce boilerplate in common use cases.
* Fixed an issue where item replacement after a craft did not work correctly when a customized crafting UI layout was applied. * Fixed a critical bug in shapeless recipe matching where a recipe slot with no valid candidates was silently skipped instead of causing the match to fail. This allowed invalid ingredient combinations to incorrectly succeed and prevented some inputs from being consumed.Fix
5.0.21custom-crafter-api 5.0.21Apr 26, 2026
[New Feature]* AddedNew Features and Enhancements
ReplaceableResultSupplierinterface: writes items back into crafting UI slots after a craft, enabling ingredient transformation (e.g. returning a modified tool) and byproduct placement patterns. [New Feature]* AddedResultSupplier.Context.CallModeenum (CRAFT/ICON): allowssupply()implementations to distinguish a real craft from an icon-generation call (e.g. in the AllCandidateUI display), replacing the oldisMultipleDisplayCallfield. [New Feature]* AddedCraftInputInterruptEvent: fired when a player interacts with input slots or closes the CraftUI while a craft process is in progress. [New Feature]* AddedPreventDoubleCraftEvent: fired when a player attempts to start a new craft while one is already running. [Enhancement]* AddedPartialSearchAPI: asynchronous partial recipe match search for crafting hints and autocomplete suggestions. Supports both shaped and shapeless recipes. [New Feature]* AddedCVanillaRecipe.fromTransmute(): converts a vanillaTransmuteRecipeinto aCVanillaRecipe, enabling transmute recipes to be used withPartialSearchand other CustomCrafter features. Each ingredient'sRecipeChoiceis converted to aCMatterPredicateviaRecipeChoice.test(), so NBT and exact-item constraints are preserved.
* Fixed a race condition inFix
ONLY_FIRSTsearch mode that could return an empty result even when a matching recipe existed. * FixedisAsync()returning an inverted value inCMatterPredicate.ContextandCRecipePredicate.Context. *CompletableFuturetasks now consistently run on virtual threads.5.0.20-p1custom-crafter-api 5.0.20-p1Apr 16, 2026
- UI processing orderFix
5.0.20custom-crafter-api 5.0.20Mar 26, 2026
[Enhancement]* Async interruption support [Enhancement]* Faster rendering in AllCandidateUI [Enhancement]* Folia supportNew Features and Enhancements
5.0.19custom-crafter-api 5.0.19Feb 9, 2026 5.0.19
[Enhancement]* Search speed for shapeless recipes is now faster.New Features and Enhancements
* Event internal fixFix
5.0.18custom-crafter-api 5.0.18Jan 16, 2026 5.0.18
[Enhancement]* MCKotlin-Paper is no longer required to run CustomCrafterAPI.New Features and Enhancements
5.0.17-p2custom-crafter-api 5.0.17-p2Jan 9, 2026 5.0.17-p2
Requires to run
[MCKotlin-Paper 1.5.1-k2.2.10](https://modrinth.com/plugin/mckotlin/version/cTmS56Qc)
* Result item give fixFix
5.0.17-p1custom-crafter-api 5.0.17-p1Jan 9, 2026 Dependency
- [Required] [MCKotlin-Paper (1.5.1-k2.2.21)](https://modrinth.com/plugin/mckotlin/version/DChEjX7z)5.0.17-p1
[Enhancement]* Add recipe relation map utility functions onNew Features and Enhancements
CoordinateComponent.
* Page close error fixFix
5.0.17custom-crafter-api 5.0.17Jan 8, 2026 5.0.17
Refactored `PredicateBreaking Changes
** and **ResultSupplier` interfaces as functional interfaces (SAM**) and removed their default implementations. This allows for concise lambda expressions, but existing code relying on the previous inheritance structure will require updates. Removed internal utility and container classes, specifically `CRecipeContainer` and `InventoryUtil`*. Logic depending on these classes must be migrated to the new API structure. * The recipe evaluation system has been overhauled with the introduction ofCRecipePredicate, which may require adjustments to how evaluation logic is invoked in your implementation. ---
[New Feature] Added `CRecipePredicate`*, a new system that allows for comprehensive evaluation across the entire recipe. This enables the implementation of highly flexible and advanced recipe validation logic. [New Feature] Added support for asynchronous operations*. This improves server performance by allowing heavy processing tasks to be handled off the main thread. ---New Features and Enhancements
* Conducted internal cleanup by removing obsolete classes and optimizing interfaces to improve overall maintainability.Fix
5.0.16custom-crafter-api 5.0.16Dec 27, 2025 Changelog
5.0.16
The Enums used for configuring `CMatter` and `CRecipe` have been moved from standalone classes to nested classes* within their respective parent classes. This requires changes to how these Enums are referenced in existing code. * Several functions within theBreaking Changes
CustomCrafterAPIhave been relocated to more appropriate classes based on their role. Users consuming the API should review their function calls and make necessary adjustments. ---
[New Feature]* Added a new feature that allows the customization of the recipe arrangement (layout) on the crafting screen. This enables more flexible UI design. (New Features and Enhancements
CraftUIDesigner) [Enhancement]* Enhanced Java interoperability for static functions and values. [Enhancement]* Users can now initialize several classes. ---
* We can now return correct answers for several search patterns.Fix
5.0.15-p2custom-crafter-api 5.0.15-p2Dec 5, 2025 5.0.15(p1/p2)
The MCKotlin-Paper plugin is now required* to be installed for the library to run, starting from this version. ---Breaking Changes / Important Dependency Change
[New Feature]* Added a new recipe that allows the use of air items as inputs. [Enhancement]* Subclasses ofNew Features and Enhancements
CRecipecan now override the required input item amount used during the recipe search process. [Enhancement]* Several default implementation classes have been madeopento allow for extension through inheritance. [Other]* Added demonstration plugin code for theCustomCrafterAPIto thedemomodule.
Similar projects
Plugin →VeinMiner
Mine the whole vein on mining a single ore/block. Make the tedious mining experience to something satisfying and fun! FTB Ultimine alternative
99.3MSueta
Simple Voice Chat
A working voice chat in Minecraft!
76.8MSueta
Chunky
Pre-generates chunks, quickly and efficiently
18.4MSueta
VeinMiner Enchantment
Veinminer Addon - Adds vineminer enchantment to enchanting tables. Only tools with the enchantment can veinmine
18MSueta
JourneyMap
Real-time map used for mapping in-game or your browser as you explore.
14.7MSueta
WorldEdit
A Minecraft Map Editor... that runs in-game! With selections, schematics, copy and paste, brushes, and scripting. Use it in creative, or use it temporarily in survival.
11.6MSueta