
EmakiForge
Recipe-driven forging with quality tiers, material effects, and in-game editor
18
0
Список изменений
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.10.0.jar(193.89 KiB)
ОсновнойМетаданные
Канал релиза
Release
Номер версии
1.10.0
Загрузчики
PaperPurpur
Версии игры
1.21–1.21.11
Загрузок
2
Дата публикации
1 нед. назад
