▶️ ЗАБЕРИ СВОИ 8 ПОДАРКОВ 🎁 ПРИ СОЗДАНИИ СВОЕГО МАЙНКРАФТ СЕРВЕРА
Плагины/EmakiCoreLib | Shared Runtime for the Emaki Series
EmakiCoreLib | Shared Runtime for the Emaki Series

EmakiCoreLib | Shared Runtime for the Emaki Series

One pipeline syntax, one item-source identity and one pre-check for every Emaki module.

Оцените первым
988
0
Все версииEmaki CoreLib 4.7.0

Emaki CoreLib 4.7.0

Release11.08.2026

Список изменений

Added

  • Vanilla dialog support, built on the server's own dialog capability, so a plugin can show a screen with explanatory text, input fields and buttons. Needs a client on 1.21.6+; older clients are unverified. New dialog block: dialog.enabled (default true) is the master switch, dialog.directory (default dialogs) is the definition folder relative to plugins/EmakiCoreLib/, and every .yml in it is loaded.
  • A heavily commented sample definition inside the plugin jar, dialogs/example_notice.yml, covering the three types (notice one button, confirmation yes/no, multi_action several), body text and inputs, the four button actions (none, command_template, run_command, open_url), and the can_close_with_escape, pause and after_action switches. The sample is not written out to your data folder: create your own .yml files in the folder named by dialog.directory (default plugins/EmakiCoreLib/dialogs/) and use the one in the jar as a reference. A definition missing a required input key or its buttons is reported and skipped at load time. Plugins can also embed dialogs in their own config files, parsed the same way.
  • New display block, the shared layer behind floating text and displayed items, used by damage indicators, cooking station text and item displays. display.backend (default auto): bukkit spawns real entities visible to everyone nearby with no extra plugin, packet sends virtual entities that stay out of the world save, use no server entities and can be shown to specific players only (needs PacketEvents on 1.19.4+), auto uses packets when PacketEvents is present, inherit follows gui.backend. An unavailable packet backend always falls back to bukkit. display.view_distance_blocks (default 48) and display.refresh_interval_ticks (default 20) apply to the packet backend only.
  • New gui.click_interval_ms (default 100 ms), a minimum interval between menu clicks that stops autoclickers and macros from settling the same click twice. Normal clicking never trips it, a blocked click is dropped safely so the menu stays consistent and the player sees no message, and 0 disables it. Above 500 is not recommended. Both menu backends honour it.
  • New minimessage.default_no_italic (default true). Vanilla italicises item names and lore, so with this on every Emaki text (menu item names and lore, menu titles, chat messages, dialogs) renders upright unless italics are written out. It is a default, not a lock: <i> and <italic> still work.
  • New vanilla_language block for server-side vanilla item and block names, needed by anything that localises them server-side such as searching storage by name. vanilla_language.enabled defaults to false; turning it on downloads the language file from Mojang's official asset index once, caches it in plugins/EmakiCoreLib/lang-cache/ and never goes online again. A failed download does not stop the server. vanilla_language.locale (default zh_cn) matches the client language file names.
  • New action.pipeline block, all three limits checked at config load time, with an over-limit config rejected in favour of the last working one rather than quietly lowered: action.pipeline.max_repeat_times (default 100) caps every <interval> times <count> and the times argument of start_task, action.pipeline.max_sequence_depth (default 8) caps nested run calls, and action.pipeline.max_branch_depth (default 16) caps nested if ... [ ... ].
  • Item lore can expand across multiple lines: a line holding nothing but one placeholder whose value is a list becomes several lines. Applies to minecraft:lore only.
  • Readable diagnostics for a broken action line, pointing at line and column, naming what is missing and which values are accepted, and reporting how many more problems remain on the same line. Bare internal key names are no longer printed.

Changed

  • Every Emaki plugin uses a new action syntax, and you do not have to rewrite anything yourself. Near the end of startup CoreLib rewrites the .yml configs in every plugins/ folder whose name starts with Emaki, once only, then drops a hidden .action-v2-migrated marker in plugins/EmakiCoreLib/. Each edited file keeps the original beside it with a .legacy-backup suffix, written once and never overwritten. Conversion only touches Emaki's own folders and skips lang/ directories.
  • Every converted line is compiled before installation. Lines that pass are rewritten, lines that do not are left exactly as they were, and the console lists the file, line and reason for each. If no line in a file passes, the original is untouched and the result goes into a separate .v2-failed file. While any line is rejected or any file could not be read or written, the marker is withheld so the next update retries. The console prints a report of files and lines changed plus every skip and failure; a server already fully converted prints no summary.
  • Syntax changes, using CoreLib's own action.templates sample:
    # old
    - 'sendmessage text="<green>got %result_item_name%</green>"'
    - '@delay=10t playsound sound=minecraft:entity.experience_orb.pickup volume=0.8 pitch=1.2'
    # new
    - 'self | send_message text="<green>got %var.result_item_name%</green>"'
    - 'self | after 10t | play_sound sound=minecraft:entity.experience_orb.pickup volume=0.8 pitch=1.2'
    
    • Action names gained underscores: sendmessagesend_message, playsoundplay_sound, spawnparticlespawn_particle, givepotioneffectgive_potion_effect, runcommandasconsolerun_command_as_console.
    • Each line starts with a segment naming who it acts on: self, inherited, looking_at, nearby, trigger. Omitted means self. One per line, and it must come first. Segments are separated by | and run left to right. A keep segment hands the selected targets to a later phase, which reads them back with inherited.
    • Old line prefixes became segments: @delay=10tafter 10t |, @chance=0.3chance 0.3 |, @if='cond'where cond |. @ignore_failure is gone and unnecessary, since continuing past a failed segment is the default.
    • Real branches use if <condition> [ ... ], optionally with else [ ... ]. Automatic conversion never emits brackets: it turns @if into where, because the old syntax had no else arm.
    • Durations carry a unit suffix, so ticks=200duration=200t. Units are t, s and ms; a bare number counts as ticks.
    • Placeholders were renamed: %player% and %player_name%%caster.name%, %player_uuid%%caster.uuid%, %player_world%%caster.world%, %player_x% %player_y% %player_z%%caster.x% %caster.y% %caster.z%, %target_name%%target.name%, %target_uuid%%target.uuid%, %has_target%%target.present%.
    • Your own variables are written %var.name%; a bare %name% is rejected at load time with a message saying what to write. A set name=value segment writes variables mid-pipeline, and the expression field of a variable definition is now value.
    • Calling a named sequence changed from @template=name to run name key=value.
  • Four old actions need editing by hand; the converter recognises them and says so in the console: loopsync and loopasyncstart_task, cancelloopstop_task, usetemplaterun <sequence>. Loop parameters changed too: mode=replaceon_conflict=replace, stop_if_offlinestop_when_offline. start_task also accepts stop_when_dead, stop_when, stop_on_failure, initial_delay and key.
  • What used to be action.loop.templates are now named sequences, called with run name and optional key=value arguments. A sequence line that does not compile is named in the console, that sequence is unavailable and the rest still work.
  • /corelib action run takes a whole pipeline line instead of run <actionId> key=value ..., for example /corelib action run self | send_message text="hi". /corelib action list shows the currently available segments with their kind and providing plugin. /corelib debug loops now lists the long-running tasks that start_task creates, with a new message for a key matching nothing.
  • Expression and text configs accept exactly one key name per field. Aliases now count as absent: value (was also text, template, expression, formula), condition (was also when, if, expression, formula), true_value / false_value (were also true/then/value/char and false/else/fallback/default), fallback (was also default, else, false_value), cases (was also conditions), separator (was also joiner), count (was also rolls, times, random_times, amount), allow_duplicates (was also allow_duplicate, allow_repeat, allow_repeats, repeat, repeatable, with_replacement), lines (was also values, options, texts, value), chars (was also characters, alphabet, values), weights (was also weight). Bundled samples already use the single names; update your own configs if they used an alias.
  • Config precheck problems are coloured by severity for the whole line: red for errors, yellow for warnings, grey for notes. The failure count only includes problems that block loading.
  • Modules try a config before switching to it: a candidate has to pass precheck to take effect, and the previous working config is kept when it does not. Previously the new config was installed first and only then reported, so one typo could reset a module to its defaults.
  • Logs about hooking into external item plugins are more specific: when a plugin is installed but its items are not registered yet the reason is spelled out for ItemsAdder, CraftEngine, NeigeItems, Nexo, Oraxen and EcoItems individually, and a plugin whose API does not match is reported instead of silently skipped.
  • release_default_data stays for compatibility with existing config files, but with the script samples gone there are no bundled sample resources left for it to control.
  • For developers: EmakiCoreLibApiProvider is removed; call the static methods on EmakiCoreLibApi directly. available(), apiVersion(), pluginName() and isReady() are replaced by status(), returning ApiStatus with usable(), ready(), version and plugin name. itemDisplayName(String) and itemDisplayName(ItemStack) return EmakiResult<String> instead of String, and itemComponentCapability(String) returns Optional<ItemComponentCapability> instead of a nullable value. New unified result contract EmakiResult with FailureKind and Unit.
  • For developers: third parties register actions through registerActionStage, registerActionSource and registerActionGate (all returning CoreStageRegistration), with onStageRegistryRebuilt(Plugin, Runnable) to re-register after a rebuild. The contract types are CoreActionStage / CoreActionSource / CoreActionGate, CoreStageContext, CoreStageParameter, CoreStageParameterType, CoreStageKind, CoreResolvedArguments, CoreActionSubject, CoreActionOutcome, CoreSourceResult, CoreGateResult, CoreGateThread, CoreTargetRequirement, CoreCancellationToken, CoreActionKey, CoreActionKeys, CoreActionFailureKind and PhaseContract.
  • For developers: new capability registry (publishCapabilities, revokeCapabilities, hasCapability, capabilities(), capabilitiesOf(String)) and cross-module readiness contract (whenReady, isModuleReady(String), addModuleListener, with ReadinessRegistration, ModuleReadinessPhase, ModuleReadinessListener). Modules publish loading / ready / absent around reloads and shutdown, and status().ready() now means the data is loaded rather than components being non-null. Do not re-register inside a whenReady callback, which hits the already-ready branch and recurses; use addModuleListener to rebuild caches on each reload.
  • For developers: dialogs() returns CoreLibDialogs (with DialogDefinition and the public dialog parsing entry point) and scheduling() returns EmakiScheduling (with TaskToken); both return no-op implementations when the plugin is absent instead of throwing. The item source system became a public contract (ItemSourceProvider, ItemSourceRef, ItemSourceKind, ItemSourceRegistration, ItemSourceProbeResult, ItemSourceProbeState, LifecycleState, LifecycleStatus) so third parties can register their own source types; the old ItemSourceType was a final enum nothing outside could extend.
  • For developers: shared infrastructure moved into corelib-api for direct use, including Texts, MiniMessages, ConsoleOutputs, ConfigNodes, Numbers, Jsons, SafePaths, SlotParser, EquipmentSlotMatcher, ItemTextBridge, ConditionContext, CommandTabHelper, AsyncFailures, SignatureUtil, Anchors, EntityPhysicsSupport, ConfigPrecheckSeverity, plus the YAML access layer YamlSection, YamlFiles, MapYamlSection, BoostedYamlSection, BoostedYamlSupport, VersionedYamlFile and YamlLoadException. A new MythicMobBridge consolidates Mythic metadata lookups. EmakiCoreLibApi.Bridge remains an internal entry point third-party plugins should not implement.

Fixed

  • Random NoSuchMethodError crashes and text rendering failures on some servers. The runtime libraries CoreLib downloads were on mismatched versions: part of the Adventure family was pinned to 4.21.0 and the rest to 4.26.1, and mixing them makes some calls disappear at runtime, while the gson being fetched was 2.8.0, older than the one Paper ships, pushing the server's own copy behind it. The Adventure family is now on a single version and gson matches Paper's 2.11.0.
  • Lore piling up after editing an item definition. Triggering an update kept the old lore lines as external content and appended them after the new ones, adding a round of history each time. The freshly built item is now the only baseline and stale records are cleared.
  • Missing precheck message keys in several modules and inconsistent colours on a number of console lines, so raw key names are no longer printed.

Removed

  • JS scripting, entirely. Your own .js scripts stop working and there is no automatic conversion, so the same logic has to be rebuilt with config actions.
  • The whole script: block from config.yml: script.enabled, script.engine (type: graaljs, the timeouts and the allow_* switches), script.paths (root: scripts and the directories it created), script.action (the runjs id), script.context, script.security including denied_actions_from_script, script.server_api, and script.debug with log_script_load and log_script_execute. Leaving the block in your own file causes no error.
  • The runjs action, the /corelib script [list|inspect|reload] subcommand, and the bundled samples scripts/examples/hello.js, js_broadcast_action.js, js_event_examples.js and js_placeholders.js. All script_* and js_* language keys are gone, so custom language files carrying them hold unused entries.
  • For developers: the script API surface EmakiScriptApi, ScriptActionApi, ScriptContextApi, ScriptItemApi and ScriptLoggerApi. Also CompatibilityReport and compatibilityReport(), EmakiAttributeBridge, PdcAttributeApi and PdcAttributePayloadSnapshot, and the old action surface registerAction, unregisterAction, unregisterActions, unregisterActionsBySource, actionRegistered, action(String), actions(), actionsByOwner, actionsBySource with CoreAction, CoreActionContext, CoreActionDescriptor, CoreActionErrorType, CoreActionExecutionMode, CoreActionParameter, CoreActionParameterType, CoreActionPlanningContext, CoreActionRegistration and CoreActionResult. FoliaSchedulerAdapter and corelib.async.TaskHandle are deprecated for removal; move to EmakiScheduling.

Notes

  • Back up your whole plugins/EmakiCoreLib/ folder before upgrading, and because this release rewrites other Emaki plugins' configs, back up their folders under plugins/ as well. Update CoreLib first, then the plugins that depend on it.
  • Most action lines are rewritten for you. Four things need doing by hand: converting loopsync, loopasync, cancelloop and usetemplate to start_task, stop_task and run; rebuilding .js script logic as config actions; replacing alias key names in expression and text configs; and deleting the script: block if you want it gone.
  • Turn on vanilla_language.enabled yourself for server-side vanilla item names; it is off by default and goes online the first time. For floating text and damage indicators over the packet backend, install PacketEvents on a server running 1.19.4+, otherwise real entities are used.
  • Server requirements are unchanged: Paper or a Paper fork on 1.21.8+, folia-supported: true, Java target 25. No commands or permissions were added or removed; emakicorelib.admin and emakicorelib.reload are still the only ones.
  • After upgrading, check the action conversion report in the console for rejected lines, click through a few menus to confirm the click interval does not get in the way, and run /corelib check to read the precheck report.

Emaki CoreLib v4.6.0

MineBBS 更新日志

移除内容与破坏性变更

  • 内置 Web Console 已整体移除:相关前端页面、web-console.yml 资源文件,以及配置中整个 web_console: 配置块(监听地址、端口、账号密码、会话超时、安全模式、请求体上限、允许模块、配置浏览限制、历史与快照设置)都不再存在。
  • 移除命令 /corelib web(别名 webconsoleurllink)与 /corelib webdebug [frontend|backend|all]
  • 移除权限 emakicorelib.web,同时移除它在 emakicorelib.admin 下的子权限项;如果权限插件里有显式授权,请自行删除。
  • 移除语言文件中的 web_console:web_debug: 两个段落及其键;自定义语言文件如仍保留这些内容,它们将成为无效条目。
  • 不再支持纯 Spigot 服务端,必须使用 Paper 或 Paper 系分支。

默认值变更

  • script.enabled 默认值由 true 改为 false,JavaScript 功能改为按需开启;原先依赖默认开启的服务器需要手动写入 script.enabled: true
  • script.server_api.enabled 默认值由 true 改为 false;脚本中调用服务器 API 的用法需要显式重新开启。

新增内置动作与命令

  • 新增 15 个内置动作,可在任意动作列表中使用:giveitemtakeitemsetitemdamageitemrepairitemsetblockbreakblockexplosionigniteextinguishfeedkillentityspawnentitybossbarshowbossbarhide
  • 新增 /corelib action 子命令:action list 查看已注册动作,action run <actionId> [key=value ...] 直接触发动作,便于配置调试。
  • 新增 /corelib debug all on|off|status 运行期全局调试开关,对应新配置键 debug.global_all(默认 false)。

统一游戏事件通道

  • CoreLib 现在只注册一份共享监听器,并把击杀、破坏方块、放置方块、合成、钓鱼、驯服、酿造、熔炉取出以及 MythicMobs 击杀等行为统一转发给依赖它的 Emaki 插件。
  • 新增配置块 gameplay_eventsenabled(默认 true)、last_damager_expire_ticks200)、brew_attribution_expire_ticks6000)。

物品与配置能力

  • 面向配置作者与 API 使用者开放 configured-item / 物品组件流程,并随插件附带组件目录资源 item-components.yml,其中说明每个 minecraft:* 组件 id、起始版本与可接受的写法。
  • 新增 EcoItems 作为物品来源,按可选软依赖声明。
  • 新增配置键 release_default_data(默认 true);设为 false 后不再释放随包的 scriptsexamples 示例文件。
  • 新增共享聊天输入服务,插件可以在 GUI 之外请求玩家在聊天栏输入内容。

GUI 点击类型与运行时

  • GUI 点击类型从 3 种扩展到 11 种:原先只有 CLICKLEFTCLICKRIGHTCLICK,现新增 SHIFT_LEFTCLICKSHIFT_RIGHTCLICKMIDDLECLICKDOUBLECLICKNUMBER_KEYSWAP_OFFHANDDROPCONTROL_DROP,GUI 配置可以区分 Shift、中键、双击、丢弃与快捷栏点击。
  • 数据包 GUI 后端现在显式解析点击类型,两种后端在完整点击类型集合上的表现一致。
  • 运行库加载改为使用 Paper 官方 plugin-loader classpath 接口,不再在启用阶段注入 jar。
  • bStats 改为打包进插件内部,不再作为独立的运行库 jar 分发;相关配置键没有变化。
  • 消息前缀更换为新的品牌渐变样式,所有消息都会体现。

修复

  • 配置预检信息此前为硬编码英文且忽略 language 设置,现已走语言键,en_US.ymlzh_CN.yml 都提供了对应文本。

升级说明

  • 先升级 CoreLib,再升级依赖它的其它 Emaki 插件。
  • 请删除配置中已失效的 web_console: 配置块与 web-console.yml 文件,并移除 emakicorelib.web 授权。
  • 如果之前在使用脚本功能,请手动补回 script.enabled: truescript.server_api.enabled: true
  • 确认服务端为 Paper 系 1.21.8 及以上:插件描述文件已从 plugin.yml 迁移到 paper-plugin.yml 并带 loader 条目,软依赖改为结构化服务器依赖,api-version1.21 提升到 1.21.8,低于 1.21.8 的服务端不在支持范围内。Java 目标仍为 25,folia-supported: true 与此前一致。
  • 命令不再在描述文件中声明,主命令与别名 corelib / emakicore 改为运行期注册,服主侧用法不变。
  • EmakiCoreLibApi 为纯新增:已发布的方法全部保留,新增兼容性报告、configured-item 创建与应用、物品组件能力,以及完整的第三方动作注册接口。
  • 建议正式服升级前备份 plugins/EmakiCoreLib/ 目录,并在升级后实际验证一次 GUI 点击、动作触发与 /corelib debug all status

SpigotMC Update Log

CENTER[B]◆ Emaki CoreLib v4.6.0 Release ◆/B[/CENTER] [CENTER]Web Console removed, scripting now opt-in, 15 new built-in actions, a shared gameplay-event layer, and an 11-type GUI click vocabulary.[/CENTER] CENTER━━━━━━━━━━━━━━━━━━━━/B [LIST] []Removed: the built-in Web Console is gone entirely, including its frontend, the web-console.yml resource, and the whole web_console: configuration block (host, port, auth, session timeout, security mode, request body limit, allowed modules, config-browser limits, history and snapshot settings). []Removed: the commands /corelib web (aliases webconsole, url, link) and /corelib webdebug [frontend|backend|all]. []Removed: the permission emakicorelib.web, including its child entry under emakicorelib.admin. Drop explicit grants from your permission plugin. []Removed: the web_console: and web_debug: language sections and their keys; custom language files still carrying them now hold dead entries. []Removed: plain Spigot is no longer a supported target. Paper or a Paper fork is required. []Default change: script.enabled now defaults to false. Set script.enabled: true if you relied on JavaScript being on by default. []Default change: script.server_api.enabled now defaults to false. Re-enable it explicitly for scripts that call the server API. []Added 15 built-in actions usable in any action list: giveitem, takeitem, setitem, damageitem, repairitem, setblock, breakblock, explosion, ignite, extinguish, feed, killentity, spawnentity, bossbarshow, bossbarhide. []Added /corelib action with action list and action run [key=value ...] to inspect and directly fire registered actions. []Added /corelib debug all on|off|status as a runtime global debug toggle, backed by the new config key debug.global_all (default false). []Added a unified gameplay event layer: CoreLib registers one shared listener and republishes kill, block break, block place, craft, fish, tame, brew, furnace-extract, and MythicMobs-kill events to dependent Emaki plugins, configured through the new gameplay_events block (enabled default true, last_damager_expire_ticks 200, brew_attribution_expire_ticks 6000). []Added the configured-item / item-component pipeline for config authors and API consumers, plus a shipped item-components.yml catalog documenting each minecraft:* component id, its since version, and accepted format. []Added EcoItems as an item source, declared as an optional soft dependency. []Added the config key release_default_data (default true); set it to false to stop writing the bundled scripts and examples sample files. []Added a shared chat-input service so plugins can ask a player to type a value in chat outside a GUI. []Expanded the GUI click vocabulary from 3 to 11 types: CLICK, LEFTCLICK, RIGHTCLICK plus SHIFT_LEFTCLICK, SHIFT_RIGHTCLICK, MIDDLECLICK, DOUBLECLICK, NUMBER_KEY, SWAP_OFFHAND, DROP, and CONTROL_DROP, so GUI configs can distinguish shift, middle, double, drop, and hotbar clicks. []The packet GUI backend now resolves click types explicitly, matching the Bukkit backend across the full vocabulary. []Runtime library loading now uses Paper's official plugin-loader classpath API instead of injecting jars at enable time. []bStats is shaded into the plugin instead of shipping as a separate bundled runtime-library jar. No config key change. []The message prefix uses a new brand gradient, visible on every message. []Fixed config precheck messages, which were hardcoded English and ignored the language setting; they now route through language keys present in both en_US.yml and zh_CN.yml. []Before updating: delete the stale web_console: block and web-console.yml, remove emakicorelib.web grants, re-add script.enabled: true and script.server_api.enabled: true if scripting was in use, and confirm the server is Paper 1.21.8+. []Compatibility: the descriptor moved from plugin.yml to paper-plugin.yml with a loader entry, soft-depends became structured server dependencies, api-version was raised from 1.21 to 1.21.8, and the Java target stays at 25. Commands are no longer declared in the descriptor; the root command plus the corelib / emakicore aliases register at runtime, and owner-facing usage is unchanged. []EmakiCoreLibApi is purely additive: every previously released method still exists, with new surface for a compatibility report, configured-item create/apply, item component capabilities, and third-party action registration. [/LIST]

Modrinth Changelog

Added

  • 15 built-in actions usable in any action list: giveitem, takeitem, setitem, damageitem, repairitem, setblock, breakblock, explosion, ignite, extinguish, feed, killentity, spawnentity, bossbarshow, bossbarhide.
  • /corelib action with action list and action run <actionId> [key=value ...] to inspect and directly fire registered actions.
  • /corelib debug all on|off|status runtime global debug toggle, backed by the new config key debug.global_all (default false).
  • Unified gameplay event layer: one shared listener republishes kill / block break / block place / craft / fish / tame / brew / furnace-extract / MythicMobs-kill events to dependent Emaki plugins, configured through the new gameplay_events block (enabled default true, last_damager_expire_ticks 200, brew_attribution_expire_ticks 6000).
  • Configured-item / item-component pipeline for config authors and API consumers, plus a shipped item-components.yml catalog documenting each minecraft:* component id, its since version, and accepted format.
  • EcoItems as an item source, declared as an optional soft dependency.
  • Config key release_default_data (default true); set false to stop writing the bundled scripts / examples sample files.
  • Shared chat-input service so plugins can ask a player to type a value in chat outside a GUI.
  • Localizable config precheck output instead of hardcoded English.
  • Additive EmakiCoreLibApi surface: compatibility report, configured-item create/apply, item component capabilities, and third-party action registration. All previously released methods still exist.

Changed

  • GUI click vocabulary expanded from 3 to 11 types: CLICK, LEFTCLICK, RIGHTCLICK plus SHIFT_LEFTCLICK, SHIFT_RIGHTCLICK, MIDDLECLICK, DOUBLECLICK, NUMBER_KEY, SWAP_OFFHAND, DROP, CONTROL_DROP.
  • The packet GUI backend resolves click types explicitly, so its click types match the Bukkit backend across the full vocabulary.
  • script.enabled default flipped true -> false; JavaScript is now opt-in.
  • script.server_api.enabled default flipped true -> false; scripts calling the server API need it re-enabled explicitly.
  • Runtime library loading now uses Paper's official plugin-loader classpath API instead of injecting jars at enable time.
  • bStats is shaded into the plugin instead of shipping as a separate bundled runtime-library jar. No config key change.
  • Message prefix switched to a new brand gradient.
  • Descriptor migrated from plugin.yml to paper-plugin.yml with a loader entry; soft-depends became structured server dependencies. api-version raised 1.21 -> 1.21.8. Java target unchanged at 25.
  • Commands are no longer declared in the descriptor; the root command plus the corelib / emakicore aliases register at runtime. Owner-facing usage is unchanged.

Fixed

  • Config precheck messages were hardcoded English and ignored the language setting; they now route through language keys present in both en_US.yml and zh_CN.yml.

Removed

  • The built-in Web Console, including its bundled frontend, the web-console.yml resource, and the whole web_console: config block (host, port, auth username/password, session timeout, security mode, request body limit, allowed modules, config-browser limits, history/snapshot settings).
  • The commands /corelib web (aliases webconsole, url, link) and /corelib webdebug [frontend|backend|all].
  • The permission emakicorelib.web, including its child entry under emakicorelib.admin.
  • The language sections web_console: and web_debug: and their keys; custom language files carrying them now have dead entries.
  • Support for plain Spigot. Paper or a Paper fork is required.

Notes

  • Update CoreLib before the other Emaki plugins that depend on it.
  • Upgrade actions: delete the stale web_console: block and web-console.yml, remove emakicorelib.web grants, re-add script.enabled: true and script.server_api.enabled: true if scripting was in use, and confirm the server is Paper 1.21.8+.
  • Servers below 1.21.8 are out of contract. folia-supported: true was already declared before this release.
  • Back up plugins/EmakiCoreLib/ before updating production, then verify GUI clicks, action triggers, and /corelib debug all status.

Файлы

EmakiCoreLib-4.7.0.jar(1.44 MiB)
Основной
Скачать

Метаданные

Канал релиза

Release

Номер версии

4.7.0

Загрузчики

Folia
Paper
Purpur

Версии игры

1.21.8–26.2

Загрузок

155

Дата публикации

11.08.2026

Загрузил

ID версии

Главная