
EmakiForge
Recipe-driven forging with quality tiers, material effects, and in-game editor
18
0
EmakiForge 2.2.0
release9 апреля 2026 г.EmakiForge Changelog
[2.2.0] - 2026-04-09
Added
Recipe files now own blueprints, materials, and target items together
recipes/*.ymlcan now definetarget_item,blueprint_requirements,materials, andoptional_material_limitdirectly, so the release no longer depends on separate defaultblueprints/andmaterials/directories.- Inline recipe materials can now declare capacity cost, stat contributions, name / lore actions, and capacity bonus directly, and the sample
flame_sword.ymlhas been fully migrated to the new schema.
Improved
Forge validation and GUI flow now follow the recipe model end to end
- Material validation now matches inputs directly against recipe-defined required and optional materials by item source, which keeps fixed materials, optional materials, capacity limits, and capacity bonus checks consistent.
- Default GUI wording, reload summaries, and command help now revolve around the "recipe" concept, so players and admins no longer need to reason about the old blueprint / material directory split.
- Forge continues to delegate all external item-source availability to
EmakiCoreLib, keeping only business-side matching, capacity calculation, and interaction feedback locally.
Fixed
- Legacy keys such as
required_materials,optional_materials,gui, and top-levelforge_capacityare now rejected during parsing so old configs cannot be half-loaded into an inconsistent state. - Optional-material validation now blocks items that do not belong to the current recipe earlier in the flow, reducing follow-up errors caused by wrong materials slipping through.
Upgrade Notes
- If you still use the old
blueprints/andmaterials/config structure, migrate it to the new inlinerecipes/*.ymlformat before upgrading. - Default data release and list/editor flows now work around the
recipesdirectory only, so do not rely on the removed default blueprint or material sample files. - This version should be paired with
EmakiCoreLib 2.3.0, and CoreLib startup logs should be treated as the source of truth for external item-source bridge readiness.
Known Issues
- The default template still does not show random-result previews. This limitation remains intentional to prevent reroll abuse.
EmakiForge 2.1.0
release7 апреля 2026 г.[2.1.0] - 2026-04-08
Added
Forging Resource Editor Released
- Added
editor_guiandEditorGuiService, supporting in-game browsing, creation, and editing of three resource types:blueprints,materials, andrecipes. - Added
/emakiforge editor,edit,create,deletesubcommands, along with the permissionsemakiforge.editor,emakiforge.editor.delete, andemakiforge.editor.*. - The editor supports chat input, document tree browsing, recipe slot grid switching, writing
item/output_itemsources from the main hand item, and unsaved close confirmation. - Automatic backup of the original YAML is performed before saving, renaming, or deleting, followed by a hot-reload of forging resources upon operation completion.
GUI Template and Recipe Book Configuration Enhancements
- The default forging GUI has been updated to a new layout, with clearer visual separation for the blueprint, capacity, materials, and confirmation areas.
- Added the
confirm_blockedvirtual item andcapacity_statetext template. Clear blocking feedback is now provided when capacity limits are exceeded. - Added
virtual_items.recipe_entryand multiple sets of state text to the recipe book. Unlock status, whether forged, and click hints are now all configuration-driven.
Improvements & Optimizations
Full Migration to CoreLib Item Source Service
ItemIdentifierServicenow delegates toEmakiCoreLib'sItemSourceService. Forge no longer maintains external item plugin bridges independently.- Removed Forge's direct compile-time dependencies and
plugin.ymlsoft-dependencies onMMOItems,NeigeItems, andCraftEngine. - Item source availability and bridge timing are now uniformly managed by CoreLib. Forge retains only the business-side identification, matching, and hint logic.
Commands and Interaction Refactoring
- The main command aliases have been adjusted from
emforge/forgetoeforge/ef. - The editor now supports resource locking to prevent simultaneous edits of the same resource by multiple administrators.
- Deleting and renaming resources will first create a backup file on disk, reducing the risk of irreversible errors from misoperations during live server periods.
Default Template Detail Optimizations
forge_gui.ymlnow unifies capacity display, material slot hints, and result hiding instructions.- With the addition of virtual item templates to the recipe book pages, custom themes can now directly override text and display styles without modifying Java code.
Upgrade Notes
- Requires
EmakiCoreLib 2.1.0or higher. The availability of external item sources should be verified based on the bridge status in CoreLib's startup logs. - If your scripts, menu buttons, or documentation still reference the old aliases
forge/emforge, please update them toeforge/efor the full main commandemakiforge. - The resource editor's save and delete operations will generate backups under
plugins/EmakiForge/backups/<type>/. It is recommended to include this in your server maintenance backup strategy. - If you are retaining an older custom forging template, please manually merge the new
capacity_statetext and the capacity over-limit blocking feedback logic.
Known Issues
- The default template still does not display random result previews. This is a design limitation retained to prevent farming for random results.
EmakiForge 2.0.0
release4 апреля 2026 г.EmakiForge Changelog
[2.0.0] - 2026-04-04
Added
Forging Results Integrated into CoreLib Assembly Pipeline
- Forged products are now uniformly constructed through the
EmakiItemAssemblyService, no longer relying solely on the legacy process of directly modifying ItemMeta. - Recipe results, material entries, and quality entries are compiled into assembly-layer snapshots and written into the final product.
result.meta_actionsnow supports name modification and Lore modification, making it easier to define product display rules directly at the recipe level.- Added forging-layer audit data, recording recipe ID, quality, material signature, forging time, and output source.
Assembly Feedback and Lore Search Hints
- Added
ForgeAssemblyFeedbackHandler, which synchronously reports Lore search-and-insert failures, regex errors, and configuration errors to the console. - Players will also receive direct prompts during actual forging if they encounter invalid Lore search configurations.
Asynchronous Caching and Persistence
- Added
PlayerDataCache; player forging history and pity counters are now managed by a concurrency-safe cache. PlayerDataStoreis now integrated into the CoreLib asynchronous YAML saving pipeline.- Automatic saves, player-offline saves, and plugin-shutdown saves will all wait for pending write tasks to complete, reducing the risk of historical data loss.
ForgeServiceadded a pre-forge cache andprepareForgeAsync(...)to reduce redundant calculation overhead.
Changed
GUI and Recipe Experience
- The default forging GUI no longer displays random product previews, preventing repeated刷取 of random quality and entry results through previews.
- The default target item slot has been changed to a "result hidden" placeholder description, with interface text updated accordingly.
- The recipe book now uniformly uses
configuredOutputSource()to parse the result source when displaying result items.
Recipes and Validation Logic
RecipeaddedconfiguredOutputSource()andrequiresTargetInput()for unified output source determination.MaterialValidationServicerewritten the material normalization and validation logic to prevent disguising required materials and塞入 optional slots.RecipeMatchingServiceoptimized error priority; when a recipe fails to match, a more reasonable first failure reason is now given.- Blueprint capacity, material capacity bonuses, and optional material whitelist/blacklist are now uniformly结算 within the same validation process.
Example Resource Updates
- Default blueprint and material examples have been switched from external item IDs to vanilla items, lowering the barrier to entry for running out-of-the-box.
- Example blueprints added
forge_capacity, making capacity sources more intuitive. - Example recipe
flame_sword.ymlchanged to use vanilladiamond_swordas base material,any_ofblueprint requirements, whitelist-style optional materials, and theresult.meta_actions写法. - YAML indentation examples for quality broadcast actions have been corrected.
Upgrade Notes
- Requires
EmakiCoreLib 2.0.0or higher. - If you use custom recipes, it is recommended to explicitly declare the result source:
- When there is a fixed product base material, use
target_item.itemorresult.output_item. - When name/Lore modifications are needed, prioritize writing them in
result.meta_actions.
- When there is a fixed product base material, use
- The default GUI intentionally hides result previews; if your old workflow relied on the "preview first, then confirm" interaction, you need to evaluate whether to keep the old template.
- If you still use the old forging process of "player places target item for processing", please key inspection the target slot interaction and custom GUI templates before upgrading.
Known Issues
- Random results do not provide product previews in the default template; this is a design trade-off, not a rendering fault.
EmakiForge 1.10.0
release1 апреля 2026 г.EmakiForge Changelog
[1.10.0] - 2026-03-31
New Features
Material Quality Modification Mechanism
- Added
ForgeMaterial.QualityModifierrecord to support influencing forging quality through material effects. - Supports two modification modes:
force: Forcibly specifies a quality tier, overriding random and pity mechanisms.minimum: Sets a quality floor, taking the higher value compared to the random result.
- Added
ForgeQualityModifierResolverservice to uniformly process quality modification logic. - The
quality_modifyeffect can now be added in material definitions:
effects:
- type: quality_modify
mode: force # or minimum
tier: perfect # quality tier name
Item Refresh Service
- Added
ForgeItemRefreshService, supporting automatic refresh of forging attributes for player inventory and dropped items. - Added
ForgeItemRefreshListener, listening to the following events to trigger refresh: - Player joins server (
PlayerJoinEvent) - Player clicks inventory (
InventoryClickEvent) - Player drags inventory (
InventoryDragEvent) - Player drops an item (
PlayerDropItemEvent) - Player picks up an item (
EntityPickupItemEvent) - Supports batch refresh for online players, single player inventory refresh, and dropped item refresh.
- The refresh process recalculates quality modifications and updates item metadata.
Material Contribution Record
- Added
ForgeMaterialContributionrecord, representing contribution information of forging materials. - Includes material ID, quantity, slot, category, sequence, and other information.
- Provides
toAuditMap()andtoSignatureData()methods for auditing and signing.
Improvements & Optimizations
Quality Calculation Flow Optimization
QualityRollPlanrecord structure changes:- Added
rolledTier: Randomly rolled quality tier. - Added
finalTier: Final quality tier after applying modifications. - Added
forceApplied: Whether a force modification was applied. PreparedForgerecord structure changes:- Added
rolledQualityTier: Random quality tier. - Added
forceQualityApplied: Whether forced application occurred. - Improved quality calculation logic to support material modifier participation.
Quality Tier Comparison Refactoring
QualitySettingsadded helper methods:findTier(String name): Find a quality tier.tierIndex(String name): Get the index of a quality tier.tierIndex(QualityTier tier): Get the index of a quality tier.hasTier(String name): Check if a quality tier exists.higherTier(QualityTier first, QualityTier second): Compare and return the higher quality tier.- Improved quality tier lookup logic, reducing redundant calculations.
- Optimized quality configuration parsing performance.
ForgeMaterial Enhancements
- Added
qualityModifiers()method to get the list of material quality modifiers. - Added
definitionSignatureData()method to generate material definition signature data. - Improved material effect parsing to support quality modification effects.
ForgeService Improvements
- Added
findMaterialById(String materialId)method. - Added
resolveMaterialQualityModifiers()method to parse material quality modifiers. - Improved forge preparation flow, integrating quality modification calculation.
Configuration Changes
Configuration File Updates
- Action IDs in configuration files have been updated to camelCase format.
- Example recipe configurations have been updated accordingly.
Code Improvements
EmakiForgePlugin
- Added
itemRefreshService()accessor. - Improved plugin lifecycle management.
ForgeLifecycleCoordinator
- Integrated item refresh service initialization.
ForgeRuntimeComponents
- Added
itemRefreshServicecomponent.
RecipeLoader
- Improved recipe loading logic.
ForgeExecutionService
- Improved forge execution flow.
ForgeLayerSnapshotBuilder
- Optimized layer snapshot building logic.
ForgeLookupIndex
- Added
findMaterialById()method. - Improved material lookup performance.
Usage Notes
Material Quality Modification
- To use the material quality modification feature, you need to add the
quality_modifyeffect in the material definition. - The effect data must include the
mode(force/minimum) andtier(quality name) fields. - Force mode overrides pity mechanisms; use with caution.
- Minimum mode takes the higher value compared to the random result, suitable for pity scenarios.
Item Refresh Service
- The item refresh service is enabled by default and will automatically refresh upon relevant events.
- The refresh process recalculates quality modifications and updates item metadata.
- May cause performance overhead in scenarios with a large number of items; adjustment based on server load is recommended.
Action ID Migration
- Action IDs in configuration files need to be migrated from underscore_case to camelCase format.
- Affected configurations:
- Quality actions in
config.yml - Custom recipe configurations
Compatibility
- Requires
EmakiCoreLib 1.11.0or above. - The quality modification feature is optional and does not affect existing recipe configurations.
- Maintains backward compatibility with older configuration files.
API Changes
QualityRollPlanrecord structure changed with added fields.PreparedForgerecord structure changed with added fields.QualityCalculationServiceconstructor added new parameters.- The above changes may affect external plugins directly using these APIs.
Known Issues
- The item refresh service may cause performance overhead in scenarios with a large number of items.
EmakiForge 1.9.0
release30 марта 2026 г.Создатели
Детали
Лицензия:GPL-3.0-only
Опубликован:2 недели назад
Обновлён:2 дня назад
