
EmakiCorelib
Shared native Java core library for the Emaki plugin suite
22
0
EmakiCorelib 2.3.0
release9 апреля 2026 г.EmakiCoreLib Changelog
[2.3.0] - 2026-04-09
Added
Expression-aware name and lore replacement
ItemRenderServicenow supportsname_append_if_unchangedandname_append_if_changed, which helps strengthen and forge pipelines decide whether another suffix should be appended after a previous name change.- Regex replacement in names and lore now supports capture groups and expression blocks inside the replacement template, making it easier to combine matched text with runtime variables.
ExpressionEngine.replaceVariablesis now exposed as a reusable entry point so name templates, lore templates, and replacement templates share the same variable-expansion behavior.
Startup diagnostics and loader issue collection
- Startup logs now print the list of economy providers that actually became available, so operators can verify
Vaultand other backends more quickly. YamlDirectoryLoadernow accumulates load issues, allowing upper-layer plugins to expose lint, self-check, or admin diagnostics directly.
Improved
Rendering and bridge infrastructure hardening
RegexLoreSearchMatchernow caches compiled regex patterns to reduce repeated compile overhead during frequent lore searches.CacheManagernow tracks hits, misses, evictions, and expirations with atomic counters, which keeps shared cache statistics more stable.- Item source bridges now report more specific details while in
WAITINGorINCOMPATIBLEstate, making load-order and API-compatibility diagnosis easier.
Fixed
ExpressionEnginenow rejects overly long expressions, dangerous characters, andNaN/Infinityresults so broken templates do not poison runtime calculations.- Regex-based rendering no longer flattens replacements too early, so
$1-style capture groups and expression blocks can work together correctly.
Upgrade Notes
- If your name or lore templates already use
$1-style regex capture groups or[ ... ]expression blocks, regression-test those displays after upgrading. - Upper-layer plugins can now read
YamlDirectoryLoader.issues()directly when implementing config self-checks or admin diagnostics. - Startup logs will now print ready economy providers; if an expected backend does not appear, first verify dependency startup order and provider registration.
Known Issues
- None
EmakiCorelib 2.2.0
release8 апреля 2026 г.2.2.0 - 2026-04-08
Overview
This version focuses on fixing the optional dependency loading for EconomyManager, constituting a compatibility and stability update.
Changed
- Adjusted the economy backend registration process.
VaultandCoinsEngineProviders are no longer directly hard-referenced and instantiated during the construction phase. EconomyManagernow checks whether the corresponding plugin is enabled and if the required API classes are visible before deciding whether to register an optional Provider.- The
CoinsEnginerelated Provider has been changed to load reflectively based on runtime state to avoid premature class linking.
Fixed
- Fixed the issue where, when
CoinsEngine / ExcellentEconomyis not installed on the server,EmakiCoreLibwould throw aNoClassDefFoundErrorduring theonEnablephase due to the absence ofsu.nightexpress.excellenteconomy.api.ExcellentEconomyAPI. - Fixed the issue where, despite
CoinsEnginebeing declared insoftdepend, the economy bridge class would still fail at runtime because it was resolved prematurely. - Fixed the issue where CoreLib could not gracefully degrade to a "register only available Providers" state when optional economy dependencies are absent.
Compatibility
- Although the repository for
ExcellentEconomyis namedExcellentEconomy, the server plugin registration name and build artifact identifier still useCoinsEngine. - The existing
softdepend: CoinsEngineconfiguration remains correct; no need to change it toExcellentEconomy. - Existing syntax in action DSL such as
provider=vault,provider=coinsengine, andcurrency=...remains compatible.
Migration
- No configuration migration is required.
- No data migration is required.
- No command, permission, or language file adjustments are needed.
EmakiCorelib 2.1.0
release7 апреля 2026 г.[2.1.0] - 2026-04-08
Added
Unified Item Source Bridge and Dependency Integration Timing
- Added
ItemSourceIntegrationCoordinator. During the startup phase, it uniformly registers item source resolvers forMMOItems,ItemsAdder,Nexo,NeigeItems, andCraftEngine. - Item source bridges now dynamically switch between
READY,WAITING, andINCOMPATIBLEstates based on external plugin enable/disable events and the official "item registration complete" event. - Added bridge status logs to the console, clearly distinguishing scenarios like "plugin not installed", "installed but resources not yet loaded", and "API version incompatible".
plugin.ymlhas been updated with relevant soft-dependencies. Upper-layer plugins no longer need to individually manage the loading sequence of external item plugins.
Action System - New Temporary Item Workflow
ActionContextnow has shared state across actions, facilitating the reuse of temporary data within the same action chain.- Added built-in actions:
createitem,edititem,senditem,clearitem. These allow directly creating items, modifying name/Lore, giving items to players, and clearing items by slot within the action DSL. - The temporary item workflow is now integrated with the unified
ItemSourceServiceandItemPresentationEditor, allowing direct item generation from item sources with presentation modifications applied. clearitemsupports dual filtering by slot and item source, suitable for reuse in chains like forging, strengthening, and reward recovery.
Expanded Foundation for Presentation Compilation and Document Editing
- Added
ItemPresentationEditor, supporting standardized editing of name and Lore for existingItemStacks at runtime. YamlDirectoryLoadernow retains the originalYamlConfiguration, source file path, and parsing results, facilitating editor implementation, backups, and hot-reloading for upper-layer plugins.- Added
ConditionEvaluator, a universal condition parser supporting numerical comparison, string comparison, and&&/||combination logic, providing a common foundation for configuration filtering and rule judgment in upper-layer plugins.
Improvements & Optimizations
Standardization of Item Presentation Protocol
EmakiPresentationEntry,SearchInsertConfig, andLoreSearchInsertResulthave been unified into a standardized field structure, reducing ambiguity during serialization and data backfilling in the presentation layer.- The presentation compiler now only accepts standardized operation and field names. Validation, return status, and error details for Lore search-and-insert are also more explicit.
- The collaboration between
ItemRenderServiceand the assembly of presentation entries has been further consolidated, making it easier for upper-layer modules likeEmakiForgeandEmakiStrengthento reuse directly.
Action Execution Precision and Reusability
@chancenow uses high-precision threshold parsing, reducing floating-point probability boundary errors.- Shared state eliminates the dependency on external global containers for multi-step item processing within the same action chain.
ItemSourceTypehas been expanded with more complete type display names and alias resolution, unifying format recognition for sources likeItemsAdder/Nexo.
Upgrade Notes
EmakiForge 2.1.0andEmakiStrengthen 1.0.0are advised to uniformly depend on CoreLib'sItemSourceServiceand should no longer maintain external item bridges within their respective business modules.- If your action configurations still use
givecoins, please migrate before upgrading; this built-in action has been removed from the default registration list. - If your presentation configurations rely on old alias keys or field names, please revert to the standard写法 during upgrade, e.g.,
action,content,target_pattern,regex_pattern,replacement. - After the server integrates
ItemsAdder,Nexo,NeigeItems,CraftEngine, orMMOItems, it is recommended to verify in the startup logs that the final bridge status isREADY.
Known Issues
- None
EmakiCorelib 2.0.0
release4 апреля 2026 г.EmakiCoreLib Changelog
[2.0.0] - 2026-04-04
Added
Asynchronous Infrastructure & Performance Monitoring
- Added
AsyncTaskScheduler,AsyncFileService,AsyncYamlFilesto provide unified asynchronous execution capabilities for actions, file I/O, GUI, and assembly processes. - Added
PerformanceMonitor,PerformanceSnapshot, and an operation-level statistics model for continuous tracking of execution time, success rates, and warning counts. - Added generic
CacheManager/CacheStatsfor caching high-frequency hotspot data such as preview results.
GUI Asynchronous Rendering
GuiServicenow has anopenAsync(...)opening flow.- Added
AsyncGuiRenderer, supporting slot item preparation on async threads followed by a single batch fill-back on the main thread. GuiSessiongained the ability to fill back rendering results, facilitating the decoupling of "computation" and "display" for complex GUIs.
Item Assembly 2.0
EmakiItemAssemblyServiceaddedpreviewAsync(...),giveAsync(...), and preview caching.- Added
AssemblyFeedbackHandler, allowing business plugins to receive feedback on Lore search-and-insert failures, regex errors, and configuration errors. - Added
ItemPresentationCompiler,PresentationCompileResult,PresentationCompileIssue. - Name modification, Lore modification, and search-and-insert rules can now be compiled first and then rendered, making it easier for upper-level plugins like
EmakiForgeto reuse them.
Changed
Action System Scheduling Upgrade
- The
Actioninterface added extension points:executionMode()andtimeoutMillis(). - Added
ActionExecutionMode, currently supportingSYNCandASYNC_IO. ActionDispatchSchedulerwill automatically choose between main-thread scheduling or async I/O scheduling based on the action's execution mode.ActionExecutoruniformly integrates delay, timeout, failure fallback, and asynchronous execution pipelines.
YAML & Resource Loading Optimizations
YamlDirectoryLoaderaddedloadAsync(), allowing directory-type configurations to directly utilize the CoreLib async scheduler.EmakiCoreLibPluginwill now automatically migrate bundled resources from the legacydefaults/directory during startup.- Plugin initialization phase uniformly integrates the async file service, namespace registration, performance monitoring, and assembly service async configuration.
Build & Dependencies
- Module version upgraded to
2.0.0. - Added
gsondependency and supplemented Shade filtering rules to avoid packaging conflicts withmodule-info.classand some manifest files.
Upgrade Notes
- Both
EmakiAttribute 2.0.0andEmakiForge 2.0.0are adapted based on this version of CoreLib. - Custom actions involving I/O operations (e.g., database, HTTP, file) are recommended to be explicitly declared as
ASYNC_IO. - Plugins relying on the assembly system can start using async preview, async distribution, and assembly feedback callbacks.
Known Issues
- None
EmakiCorelib 1.11.0
release1 апреля 2026 г.EmakiCoreLib Changelog
[1.11.0] - 2026-03-31
New Features
CoinsEngine Economy Support
- Added the
GiveCoinsActionaction, supporting currency operations for the CoinsEngine economy plugin. - Action Parameters:
amount(required): The amount of currency.currency(required): The type of currency.
- Automatically registered to the built-in action list, supporting templated configuration.
- Requires the CoinsEngine plugin to be installed on the server.
Improvements & Optimizations
Action System Improvements
- All built-in Action IDs have been uniformly changed from underscore format to camelCase format.
send_message→sendmessageplay_sound→playsoundbroadcast_message→broadcastmessagesend_title→sendtitlesend_action_bar→sendactionbargive_money→givemoneytake_money→takemoneyset_money→setmoneygive_exp→giveexptake_exp→takeexpset_exp→setexpset_health→sethealthgive_potion_effect→givepotioneffectremove_potion_effect→removepotioneffectclear_potion_effects→clearpotioneffectsspawn_particle→spawnparticlerun_command_as_player→runcommandasplayerrun_command_as_op→runcommandasoprun_command_as_console→runcommandasconsoleuse_template→usetemplate
Enhanced Error Messages
- Improved error messages for missing actions (
missingActionResult). - Automatically detects Action ID format and provides normalization suggestions.
- Example: When using
send_message, prompts "Use 'sendmessage' instead". - Helps developers quickly locate and fix configuration errors.
ActionExecutor Optimization
- Added
missingActionResult()method to uniformly handle cases where actions are not found. - Improved Action ID normalization logic, removing underscores before lookup.
- Optimized error message format to provide clearer migration guidance.
Configuration Changes
Configuration Template Updates
- Action IDs in the example configuration templates have been updated to the new format.
- Comment examples have been synchronized, demonstrating the correct way to configure actions.
Code Improvements
BuiltinActions
- Added registration for
GiveCoinsAction. - Maintained the registration order of other built-in actions.
All Action Implementation Classes
- Updated the return value of the
id()method to camelCase format. - Kept action functionality and parameters unchanged.
Usage Notes
Action ID Migration
- Important: All action configurations must be migrated from underscore format to camelCase format.
- The system will automatically detect and provide migration suggestions, but it is recommended to proactively update configuration files.
- Affected configuration files:
- Action templates in
EmakiCoreLib/config.yml - Quality actions in
EmakiForge/config.yml - Custom action configuration files
- Action calls in scripts and plugins.
- Action templates in
CoinsEngine Integration
- To use the
givecoinsaction, ensure the CoinsEngine plugin is installed on the server. - CoinsEngine is an optional dependency and does not affect core functionality.
- Clear error messages are returned if the action execution fails.
Compatibility
- Maintains backward compatibility with configuration files from older versions.
- Error prompts will help developers quickly locate issues.
- It is recommended to back up configuration files before upgrading.
Known Issues
- None
Создатели
Детали
Лицензия:GPL-3.0-only
Опубликован:2 недели назад
Обновлён:2 дня назад
