Changelog
This page lists changes since 1.11.1.0. For older versions, see GitHub Releases.
1.15.1.0 2026-10-05
Breaking Changes
- Refactored the plugin's permission structure. Commands and menus now share the same permissions. Recipe-related permission nodes have been unified from
craftorithm.command.<action>andcraftorithm.edit_recipetocraftorithm.recipe.<action>, and item-related permissions have been changed tocraftorithm.item. See Permissions for details.
Update Contents
- Added a delete recipe icon to the recipe editor menu. Clicking it deletes the recipe currently being edited (requires the
craftorithm.recipe.removepermission). - The brewing recipe display menu now also supports the server's builtin brewing recipes (Paper on 26.3 and above).
- Added a
recipe_loadtrigger type that fires when Craftorithm loads recipes, with arecipe_keyfield indicating the key of the recipe being loaded. - Added
discover_recipe_allandundiscover_recipe_allscript functions to unlock or lock recipes for all online players. - Fixed an issue where, on versions 26.2 and above, disabling vanilla crafting table transmute recipes would prevent the plugin from reloading recipes properly.
- The default configuration files of the built-in UIs are no longer packaged in the plugin jar and are now generated automatically at runtime.
- Optimized code structure and performance.
1.15.0.0 2026-09-28
Update Contents
- Spigot 26.3 servers now also support creating brewing recipes.
- Added the command
/craftorithm item getgroupitem <tag>/<item_pack>, used to obtain the placeholder item for an item tag or item pack used in recipe menus. - Added the ability to make recipes only take effect in specified worlds.
- Subcommands under the
/craftorithm itemcommand no longer require separate permissions. - Fixed an issue where plugin could not correctly block brewing when the ingredients could not be used for crafting.
- Fixed an issue where the ingredient count of anvil recipes was displayed incorrectly in the menu.
- Optimized code structure and performance.
1.14.2.0 2026-09-24
Update Contents
- Added PostgreSQL support.
- The script functions
discover_recipeandundiscover_recipecan now also use regular expressions to match recipes. - Added a new script function
recipe_discovered, which returns whether a player has unlocked a specific recipe. - Optimized plugin code structure and performance.
1.14.1.1 2026-09-17
Update Contents
- Optimized the resource release strategy when the plugin is disabled.
1.14.1.0 2026-09-17
Breaking Changes
- The
ItemProviderinterface provided by the plugin has changed, so item provider plugins written for older versions need extra adaptation to be compatible with this version - Item amounts can no longer be defined inside item packs; all amounts must be defined in the recipe files
Regular Changes
- Compatible with Minecraft 26.3
- Item pack ingredients in anvil recipes now support specifying an amount, e.g.
item_pack:pack_name 4 - Added restoring online players' discovered recipes from the database after plugin reload and server startup
- Fixed an issue where joining the server before recipe registration completed would cause already unlocked recipes to be locked again
- Fixed an issue where ingredient restriction rules briefly stopped working during reload, allowing crafting that should have been blocked
- Fixed item pack entries in
item_packs.ymlusingtag:or nested item pack references (item_pack:pack_name) failing to parse - Fixed
/craftorithm item fuel addwriting invalid config keys containing amounts tocustom_fuels.ymlwhen holding a stack; existing invalid keys need to be removed manually - Fixed database connection pool connection limits, heartbeat startup timing and idle connection eviction, as well as resource leaks from unclosed DAO statements and result sets
- Fixed a ConcurrentModificationException when saving items under certain conditions
- Fixed a NullPointerException in the fake result preview feature under certain timing
- Fixed the open callback of custom menus being invoked twice when menu loading fails
- Fixed a concurrency issue with trigger data between the async reload thread and the main thread
- Optimized internal code structure and removed unreferenced code
1.14.0.0 2026-09-09
Update Contents ( @YufiriaMazenta )
- Added database-based cross-server recipe unlock data synchronization functionality.
- Fixed an issue where anvil recipes could not be crafted without an anvil-type trigger
1.13.7.3 2026-09-05
Update Contents ( @YufiriaMazenta )
- Fixed an issue where a large number of disabled recipes could instantly saturate the server's network bandwidth during plugin reload
1.13.7.2 2026-09-05
Update Contents ( @YufiriaMazenta )
- Fixed a bug where
craftingtype triggers did not work on the crafter - Fixed a bug where executing the close action in the conditions of
crafting,smithing, andanviltriggers would cause the crafting ingredients to disappear - Renamed the
enabledconfig key in triggers toenable(with backward compatibility for the oldenabledkey).
1.13.7.1 2026-09-02
Update Contents ( @YufiriaMazenta )
- Fixed the issue where MMOItems items could not be loaded in asynchronous threads.
- Optimized the recipe loading process in the recipe creator and editor
1.13.7.0 2026-09-01
Update Contents ( @YufiriaMazenta )
- Optimized plugin reload by using multi-threaded parallel loading to reduce performance overhead
- Added command
/craftorithm restore <recipe_id>to re-enable disabled recipes - Added config option
ingredient_use_set_thresholdto configure recipe ingredient matching behavior - Optimized reload notification messages
- Optimized plugin code structure
- Optimized recipe ingredient matching performance
- Optimized shapeless recipe performance
- Optimized trigger performance
- Fixed disabled recipes not being restored after reload
1.13.6.0 2026-08-26
注意,从旧版本升级到此版本建议删除menus/internal/display文件夹让其重新生成
Note: If upgrading from a previous version, please delete the menus/internal/display folder to let it regenerate
Update Contents
- Result processors now allow other plugins to register new action types ( @YufiriaMazenta )
- Craftorithm item sources can now also have priority configured via the
item_plugin_hook_priorityconfig option ( @YufiriaMazenta ) - Fixed an issue where stonecutter recipe ingredient were displayed incorrectly in the recipe display menu ( @YufiriaMazenta )
- Fixed incorrect text on the display menus for furnace, smoker, campfire, and smithing transform recipes ( @YufiriaMazenta )
1.13.5.2 2026-08-20
Update Contents
- Fixed an issue where the plugin failed to enable on Folia servers in version 1.13.5.1 ( @YufiriaMazenta )
- Fixed an issue where the result processor could not parse style codes for the add operation on
display_name,item_name, andlore( @YufiriaMazenta ) - Result processors of type
lore,display_name, anditem_namenow support parsing PlaceholderAPI variables during add operations ( @YufiriaMazenta )
1.13.5.1 2026-08-19
此版本没有任何新增特性,只是对插件的整体性能表现进行了大幅度优化
This version does not introduce any new features; it is solely focused on significantly optimizing the plugin's overall performance
Update Contents
- Optimized the performance of ItemManager when matching item id.
- Optimized the performance of CraftorithmItemProvider in matching item id
- Optimized memory consumption of trigger cooldowns
- Optimized the performance overhead of NamespacedItemId.toString()
- Optimized recipe loading performance
- Optimized performance overhead of UI recipe creation and editing
- Fixed some issues that could cause memory leaks
1.13.5.0 2026-08-18
Update Contents
- The
blocked_crafting_lore_rulesconfig option has been replaced byingredient_restriction_rules, which is used to configure rules that block items from being used in crafting ( @YufiriaMazenta ) - Fixed #142 ( @YufiriaMazenta )
1.13.4.0 2026-08-17
⚠️重要:不建议使用此版本,此版本因为删除了cannot_craft_items导致可能出现严重问题,请直接使用1.13.5.0
⚠️Important: It is not recommended to use this version. Due to the removal of the cannot_craft_items configuration, this version may cause serious issues. Please use version 1.13.5.0 instead.
Update Contents
- Added a new configuration option, blocked_crafting_lore_rules, which allows specifying lore that will block an item from being used in crafting recipes ( @YufiriaMazenta )
- Removed
cannot_craft_items– superseded byblocked_crafting_lore_rules( @YufiriaMazenta ) - Added PlaceholderAPI variables
%craftorithm_discovered_<recipe_key>%and%craftorithm_discovered%, returning whether the player has discovered (unlocked in the recipe book) a specific recipe, and the total number of recipes the player has discovered respectively ( @YufiriaMazenta ) - Fixed #140 ( @YufiriaMazenta )
1.13.3.0 2026-08-13
Update Contents
- Added
prepare_grindstoneandtrade_selecttrigger types (@YufiriaMazenta) - Added
match_item_idfunction to the script system for identifying item id (@YufiriaMazenta) - Added global variables
serverrecipe_manageritem_managerto the script system, which can now be used in triggers, the script command, and menus (@YufiriaMazenta) - The script subcommand now returns the time taken in nanoseconds instead of milliseconds (@YufiriaMazenta)
- Added CustomFishing item source adapter (#138) (@bai779)
- Added support for EmakiItem 2.7.0 (@YufiriaMazenta)
- Fixed #136 (@YufiriaMazenta)
- Fixed #139 (@YufiriaMazenta)
1.13.2.0 2026-08-07
Update Contents
- Now stonecutter recipes can also use result processors(Paper and its forks only).
- Result processors now support defining multiple processors within one component type.
- Fixed an issue where the attribute result processor did not support versions 1.20 to 1.20.4.
- Fixed an issue where reloading, enabling, or disabling datapacks would cause plugin recipes to become invalid(Paper and its forks only).
- Fixed a bug where the create command and the recipe creation menu could not use the '/' symbol as a recipe name.
1.13.1.0 2026-08-06
Update Contents
- Now item pack can import items from tags or other item packs
- Fixed https://github.com/YufiriaMazenta/Craftorithm/issues/135
- Change the configuration file directory for the recipe book UI from
menus/internal/recipeBooktomenus/internal/recipe_book
1.13.0.0 2026-08-03
Update Contents
- Added a result processor feature to add additional effects to the recipe output during crafting.
- Added an
eventobject to the context of all trigger types, allowing manipulation of related event behaviors. - Added commands
/craftorithm discover <target> <recipe_key_pattern>and/craftorithm undiscover <target> <recipe_key_pattern>, which respectively unlock and lock recipes in the recipe book for players. The<recipe_key_pattern>supports regex. - Fixed an issue where the
soundfunction in triggers would throw an error when encountering an unparseable sound. - Fixed an issue where tab completion for
/craftorithm displayonly listed the plugin's own recipes. - Fixed an issue on Minecraft versions 1.21.3 and above where smithing table recipes could not place ingredients in the correct slots in some cases.
- Optimized code structure and performance.
1.12.2.0 2026-07-31
Update Contents
- The script syntax has undergone major changes. The shorthand format like
tell "hello world"is no longer supported; you must now use the full function syntax, e.g.,tell("hello world"). - Swapped the positions of the ingredient and input fields in the brewing recipe creation/editing UI.
- Fixed a bug where brewing recipes would not produce the correct result on version 1.26.1.
- Fixed an issue where brewing recipe result refreshing would sometimes fail to update all slots or correctly override the result stack size.
1.12.1.0 2026-07-28
Update Contents
- Changed the behavior of the
set_inv_itemfunction; it will now attempt to place the item in another slot or drop it if the target slot already contains an item. - The script now disallows bare argument syntax by default; the
enable_script_bare_argsconfig option must be enabled to use it. - Added compatibility for EmakiItem plugin item sources.
- Fixed an issue where anvil recipes did not correctly display the result when renaming items.
- Fixed an issue where the enchantment copying rule did not use the higher base enchantment level.
- Fixed a parsing error with tagged ingredients that have quantities in anvil recipes.
- Fixed a NullPointerException (NPE) issue with anvils on versions below 1.21 when the recipe no longer matches.
- Fixed an issue where custom actions were executed twice when clicking to edit the recipe display icon.
- Fixed an issue where Spigot 1.21.11 could not register recipes because the recipe registry implementation for 1.21.11 was not packaged.
- Optimized code structure and performance.
1.12.0.3 2026-07-24
Update Contents
- Fixed brewing recipe creation errors on minecraft 1.20.1–1.20.2.
- Fixed a bug in 1.21+ where shapeless multi‑ingredient recipes could bypass checks and accept invalid items in certain slot arrangements
1.12.0.2 2026-07-23
Update Contents
- Fixed an issue where opening the recipe book menu for all recipes would cause an error when trim type smithing recipes were present
- Fixed an issue where the brewing recipe display menu could not be opened correctly
- Fixed an issue where the command and console functions would cause errors in the folia environment
1.12.0.1 2026-07-22
Update Contents
- Fixed the issue where the disable command could not correctly disable special recipes
- Optimized plugin memory usage
1.12.0.0 2026-07-21
Update Contents
- Except for stonecutter recipes on versions above 1.21.3, all recipe ingredients checks are performed by item ID. This means that adding enchantments or renaming items will no longer prevent crafting.
- Fixed an issue where SmithingTrimRecipe could not be used correctly. For versions above 1.21.5, the trim_pattern must now be specified for smithing trim recipes
- Added new APIs for recipe registration and ingredient identification
- Optimized plugin reload performance, and fixed network lag and client-side stuttering that occurred during reload
- Fixed an issue where shapeless recipe creation pages could create ingredients with null items
- Improved UI text display
- The
scriptcommand can now be executed from the console - Added compatibility with VaultUnlocked
1.11.4.1 2026-07-11
Update Contents
- Fixed the issue where the sorting button text in the recipe_list menu was not parsed correctly
- The recipebook command now supports passing all as an argument to view all recipes
- Tags now support the
tag:<namespace>:<key>syntax to allow reading tags added by data packs
1.11.4.0 2026-07-11
Update Contents
- The tag syntax now supports
tag:<namespace>:<key>to allow reading newly added item tags from datapacks - Now the trigger's conditions supports two writing styles: simple expressions and full scripts
- Added int and float functions to the script module for forcing a numeric variable to integer or float type
- Fixed issue #124
- Fixed an error with update checking
1.11.3.0 2026-07-08
Update Contents
- Fixed an issue where BackIcon would throw an error when asynchronously closing a page with no parent page.
- Added several math-related functions to the script module.
- Optimized the update checking mechanism.
1.11.2.0 2026-07-07
Update Contents
- Added script function
set_inv_itemfor setting the item at a specified slot in a container opened by a player - Now the crafting event-related trigger context includes the IDs and counts of crafting ingredients, as well as the number of times the crafting is performed in a single event
- If a trigger of a recipe is on cooldown, this crafting and all related triggers will be blocked
- Optimized argument parsing for the recipebook command; the current usage format is
/craftorithm recipebook [--player <name>] [--type <type>] - Fixed the issue where the lore of RecipeDisplayIcon would duplicate
1.11.1.1 2026-07-05
Update Contents
- Fixed an issue where ProtocolLib hooks would throw exceptions in certain situations
1.11.1.0 2026-07-04
Compatibility Notes
- Minimum Minecraft version raised: Minimum supported version raised from 1.19 to 1.20
- Recipe file format changes: Recipe files will be auto-converted, but
random_cookingtype recipes have been removed - Script system: Legacy script system removed,
function.ymlfile is no longer functional - packetevents / ProtocolLib: Optimization for client lag caused by recipe updates and virtual recipe preview require one of these to be installed
New Plugin Documentation
https://yufiriamazenta.github.io/Craftorithm-Docs/
New Features
New Script Engine
- Full DSL script engine: Lexer → AST → Compiler → Stack-based VM
- Supports conditionals (
if/elseif/else), arithmetic operators (+-*/%), string concatenation, negation (!) - Supports variables (
set/get), delayed execution (delay), logging (log), sound playback (sound) - Built-in condition functions:
game_mode,permission,item,compare, etc. - Built-in action functions:
tell,give,run_cmd,take_item,play_sound, etc. - New
/craftorithm scriptsubcommand for executing scripts
New Trigger System
- New Trigger module supporting dozens of trigger types, monitoring recipe crafting, item usage, and more
UI Improvements
- Enhanced recipe list page: recipe list, type selection menu, sort by time/name, opened via
/craftorithm recipebook - Recipe creator UI rewritten
- Recipe editor UI rewritten
- Recipe display pages are now customizable via YAML config files for layout and icons
- New custom menu feature, create custom interfaces via YAML config files
- Menu buttons support binding script actions by click type (
actionsconfig) - Menu buttons support
item_modelfield
Other New Features
- Automatic legacy recipe format conversion (
LegacyRecipeMigrator) - Virtual recipe preview based on packetevents or ProtocolLib
- New
main_command_aliasesconfig option for setting main command aliases - New tick-batched loading, distributes recipe loading across multiple ticks to reduce lag
- New
ItemPackitem pack feature, allowing a ingredient slot to accept multiple items, similar to vanilla tags - New SX-Item hook
- New item component copy system for anvil and smithing recipes (
copy_components_rules), supports:all,item_name,item_model,trim,unbreakable,tool,hide_tooltip,fire_resistance,custom_model_data_component,display_name,lore,enchantments,attributes,item_flag,max_stack_size,rarity,food,custom_model_data,custom_persistent_data
API Extensions
- New
RecipeRegisterEventevent - Expanded
CraftorithmAPI(new item management, recipe management, trigger management methods)
Bug Fixes
- Fixed a bug where server recipe cache and disabled recipes could malfunction
- Fixed
disable_recipes.ymlduplicate recording issue
Optimizations
- Optimized client lag during recipe updates
- Improved listener restoration logic for other plugins during reload
