- [新]跨插件 LocationOwnership API ——EliteMobs 现在会向 MagmaCore 的 LocationOwnership 服务注册,因此任何着色 MagmaCore 插件(FMM、MegaBlockSurvivors、BetterStructures 等)都可以从 Lua 脚本调用 em.location.owned_by(loc,“EliteMobs”)、.owners(loc)、.is_protected(loc)、.kinds_at(loc)、.has_kind(loc,“open_world_dungeon”),无论哪个 classloader 托管脚本,都能得到正确答案。类标签包括“elitemobs”、“world_package”、“open_world_dungeon”(针对WorldDungeonPackage)以及地牢大小类别名称。较旧的 FMM jar(2.4.0 LocationAPI 之前)仍通过 NoClassDefFoundError 的退回获得遗留的直接注册表桥接。
- [新]破坏型的精英武器现在不仅能挡弓箭,也能阻挡近战伤害——精英长矛/剑/斧头/镰刀在耐久度上会取消EntityDamageByEntityEvent(ENTITY_ATTACK / ENTITY_SWEEP_ATTACK),就像弓箭已经取消EntityShootBowEvent一样。玩家会看到一个可配置的副标题(“ItemSettings.yml”brokenItemSubtitleWarning“,默认是”&c你的武器已经损坏!“),所以很明显为什么他们的攻击不再命中,而不是像个无声的虫子。
- [新]可掉落物品类型——除了自定义和独特之外,增加了第三个选项,适用于那些本应进入随机精英掉落池(如自定义)但永远不会出现在商店(如独特)的物品。对于那些应该是靠努力获得、而不是被锁定在特定Boss掉落表的物品非常有用。
- [修复]MC 1.21+中每个槽位的护甲属性减重——属性修正值仅由NamespacedKey来复制(槽位不属于删减键的一部分),所以四个护甲部件共用“elite_armor”、“elite_toughness”、“elite_knockback_resist”键,实际上只有一件护甲的修饰值生效。每个护甲槽现在都加上“_head”/“_chest”/“_legs”/“_feet”后缀,这样四个护甲就能正确叠加属性。
- [修复]当玩家在EM地下城实例中受到WORLD_BORDER伤害时,会发出响亮的管理员警告——症状是“玩家一走进就关闭地下城”,因为边界标记会造成致命伤害,最终会触发“移除玩家”→击败→移除实例。几乎总是意味着地牢的蓝图世界缺少其世界边界数据,或者边界在克隆时没有继承(在1.21.6+版本中,边界存在维度数据文件夹内的独立文件中,很容易被忽略)。
- [修复]ScriptZone 现在会在形状中心失去世界时取消监听者任务(例如,引用实体在周期中途消失)——之前 filterByElite/Player/Living 会在每个图形每刻记录一次“世界为空”,脚本会一直不停地运行,无需工作。
- [修复]VersionChecker / Nightbreak 内容访问预取现在插件关闭后很快就会退出——onDisable 以前必须等待 HTTP 超时(每次超时长达 10 秒,可能跨多个包),Bukkit 还会抱怨异步任务无法正确关闭。每次循环迭代和 HTTP 回调现在都会检查 MetadataHandler.shutdownRequested,并立即返回。
- [修复]虫洞不再在离开期间累积孤行实体——当附近30格半径内无玩家时,线路视觉通过新的WormholeEntry.onNoNearbyPlayers()钩子被拆除,不再默默停留,玩家回来时会重新创建新的线条实体。
- [调整]EliteItemManager.isOnLastDamage(ItemStack)现在是一个公开静态API,取代了两个私有副本(一个在AlternativeDurabilityLoss,一个在PlayerItem)。
- [新]反自动点击器加速——在一秒滑动窗口内对精英进行超过自动点击器的玩家(默认5秒)对精英的真实近战攻击将被锁定,无法对精英造成自动点击器的伤害,自动点击器Throttle惩罚秒数(默认5秒)并会在聊天中警告。只有ENTITY_ATTACK次挥击计入,所以扫荡副武器、荆棘和投射物不会误判。可通过 autoclickerThrottleEnabled、autoclickerThrottleMaxHitsPerSecond、autoclickerThrottlePenaltySeconds 和 autoclickerThrottleMessage 在MobCombatSettings.yml中配置。
- [新]每个技能的内部触发冷却——ProcSkill现在暴露了getInternalCooldownMillis(),这样爆发伤害的触发就不会被自动点击器比预期节奏更快地刷。毁灭性一击作为第一个消费者,内部冷却时间为1.5秒。
- [新]通知限制——货币领取、“无经验值”警告和任务进度消息现在会在一段安静期后批量处理并冲出,而不是淹没聊天。通过DefaultConfig中的新通知ThrottleSeconds键进行调校(默认10秒,最低1秒)。货币动作栏的反馈仍然实时更新;只有聊天摘要是去跳出的。
- [新]EliteMobs 世界中的鞘翅预防——玩家通过 EntityToggleGlideEvent、PlayerChangedWorldEvent 和每帧 PlayerMoveEvent 后台(必须取消切换事件后,客户端滑行不再可靠地停止,因此不可阻止)在 EliteMobs 内容世界中滑行。每个package通过ContentPackagesConfigFields上的新allowElytra配置字段进行选择退出。
- [新]EMDungeonLocator API — 注册于 MagmaCore 的 LocationQueryRegistry,并且(在存在时)通过“EliteMobs”键桥接到 FreeMinecraftModels 的 LocationAPI,这样跨插件脚本可以通过 O(1) 的世界名查询询问“这个位置是否在 EliteMobs 内容内?”。涵盖所有WorldPackage子类(开放世界、实例化、动态、集枢纽)。
- [新]Lua 实体丰富器——每个 Lua 实体表现在都包含 is_elite、is_custom_boss、is_significant_boss 旗帜和一个精英子表,包含等级、名称、生命值、max_health、health_multiplier、damage_multiplier 和 remove() 方法;当 FreeMinecraftModels 存在时,还会暴露 is_modeled、is_prop 以及模型子表(model_id、play_animation、stop_animations、移除、is_dynamic)。
- [新]Lua 脚本的 Boss 全局冷却存储——ScriptableBoss 现在通过 getGlobalCooldownStore() 暴露了每个 EliteEntity 的冷却映射,这样 Lua 脚本的 Boss 可以在钩子和同一 boss 的实例间共享冷却状态。
- [新]竞技场任务记分板线——Quests.yml新增了arenaQuestScoreboardProgressionMessage键,以及CustomQuestMenu总结行中竞技场目标的$arenaName占位符,均通过文件名的备援解决了CustomArenasConfig中的竞技场显示名称。
- [新] hideEnchants 配置选项——ItemSettings.yml 中的新密钥(默认为 true)。当设置为虚假时,原版附魔线会显示在EliteMobs物品、设置菜单图标、构建的精英物品和滚动转换物品上,而不是被ItemFlag.HIDE_ENCHANTS隐藏。(由Jeric贡献。)
- [新] playersSayMessage的召唤商人附魔配置选项——当虚假时,召唤商人不再使玩家/聊天获得已配置的消息(默认true保留先前行为)。
- [修复]在加载地下城世界前,隔离了26.1+世界迁移碎片。当之前的 Paper 迁移时,legacy 文件夹和现代的 <level-name>/dimensions/minecraft/ 文件夹都被填充,Bukkit.createWorld 会抛出“拒绝覆盖已迁移的现有文件”,导致地牢世界永远无法加载。遗留文件夹现在被重新命名为 <name>.paper-migration-backup-<epoch>,因此 Paper 不会看到遗留触发,并能从现代路径干净地加载。
- [修复]通过MagmaCore全新的WorldFolderResolver路由所有世界文件系统访问——isDownloaded检查、虫洞世界存在检查、实例世界清理循环、蓝图克隆目标清除以及唯一世界名称选择,现在都涵盖了传统版和Paper-26.1+现代版面。我对Spigot和26.1之前的纸张都没用。
- [修复]修复了宫殿圣殿的 dungeonObjectives 默认缺少“filename=” 前缀——该条目是裸露的“the_palace_old_stone_king_p1.yml”而不是“filename=the_palace_old_stone_king_p1.yml”,导致 DungeonObjective.registerObjective 返回空,空字段被添加到地下城的目标列表中,且在实例重组时 /em 退出为 ArrayList.forEach 内的 NPE。磁盘上已有坏值的服务器会在加载时自动更正。
- [修复]修复了 /em 停止在地牢未配置目标或目标条目形态时抛出 NullPointerException ——DungeonInstance 现在在迭代前对原始 DungeonObjectives 进行 null 检查,当 registerObjective 返回 null 而非添加该 null 时会记录警告,unregister forEach 则防御性地跳过 null 条目。
- [修复]遗留DungeonObjectives条目的向后兼容——以“.yml”结尾且没有“filename=”前缀的条目现在自动被视为filename=条目,而不是被无声丢弃,因此旧格式(有拼写错误)的现有服务器得以继续工作。
- [修复]当虫洞附近半径内无玩家时,虫洞线的视觉效果会被撕毁。此前,BlockDisplay 行在虫洞闲置时仍留在世界,任何在离开期间重新实例化 WormholeEntry 的事件(配置重载、内容包安装/卸载、/em 设置流程)都会在内存中创建新的行列表,而旧的 BlockDisplay 则保留——这就会产生“AG 虫洞倍增,只有一个动画,其余冻结”的症状。下一次玩家回到射程时,线路会干净利落地重建。
- [修复]修正了“filterByElite/Player/Living中世界为空”的失控警告,当脚本区域的形状中心失去世界时(通常是某个被引用的实体在周期中途消失)时,每个图形每刻触发一次。ZoneListenerTask现在检测到空世界状态,并用一个提醒自己取消Boss,而不是无限循环,什么都不做。
- [修复]修复了任务进度聊天消息在目标快速更新时涌入的问题——它们通过按目标键控的MessageThrottler路由,这样同时进行的任务不会互相冲突。
- [修复]固定的货币拾取聊天信息在战利品雨中刷屏——拾取物品会被汇总并发出一条聊天线,在设定的安静期后,动作条仍然活跃。
- [修复]修复了刷低等级怪物时聊天中充斥的“无经验”等级差异警告——重复的相同警告现在会合并成一条带有“(xN)”后缀的消息,而经验值上限版本仍会立即发送。
- [修复]在1.21.6+修复了受保护EM世界中滑行不同步的问题——新增了一个PlayerMoveEvent后备功能,每次切换重新断言setGliding(false),因为取消EntityToggleGlideEvent无法可靠地停止客户端。
- [修复]修复了第一代 dungeonLockoutMinutes 配置字段未能写入磁盘的问题——processInt 调用现在传递 write=true ,因此默认值得以保留以便编辑。
- [修复]修复了 FMM 版本与预期不同时脚本项应用的故障——用 NoClassDefFoundError 处理封装的直接 API 调用取代了基于反射的 ScriptedItemAPI 调用,因此缺失的类会优雅地退化,成功的应用可以跳过反射开销。
- [修复]修复了旧版 FMM jar 上 FreeMinecraftModels 地牢桥接被悄悄跳过的问题——当缺少 LocationAPI 时(FMM < 2.5.0),引导系统现在会清楚地记录警告,让服务器所有者知道is_in_dungeon看不到 EliteMobs 的地牢。
- [调整]临时块管理从 EntityTracker 转移到 MagmaCore 的 TemporaryBlockManager,因此状态在插件间共享;addTemporaryBlock/isTemporaryBlock/removeTemporaryBlock 现在委派,世界卸载清理由 MagmaCore 处理,Lua spawn_temporary_block 助手直接通过 TemporaryBlockManager 通过一个 RequireAir 标志。
- [调整]FreeMinecraftModels 依赖升级到 2.5.0,以获取 LocationAPI 和新的 ScriptedItemAPI 签名。
- [调整]移除了玩家对精英输出的无声Math.max(伤害,1)下限——倍数流水线现在尊重真实输入伤害(所以像扫荡副武器这样真正的零伤害攻击不再被限制为1),在使用伤害修正器和战斗倍增器之前。
- [调整]预设地下城显示名称前缀为“&2[动态] &3”——工艺矿工实验室圣殿、桥梁圣殿、洞穴圣殿、城市地下城、攀爬地下城、深矿地下城、矿井地下城、下界钟圣所、下界荒原地下城、宫殿圣殿和采石场地下城,现已在设置菜单中自我标识为动态地下城。
- [调整]ItemLootShower 内部清理——取消了 playerCurrencyPickup HashMap、BukkitRunnable 轮询器、sendCurrencyNotification 和 sendAdventurersGuildNotification 辅助工具,改用 MessageThrottler.pushCurrency,该工具现在同时驱动聊天摘要和冒险者公会动作栏。
- [调整]将 MagmaCore 依赖更新为 2.2.0-SNAPSHOT,以支持新的 WorldFolderResolver 工具。
- [新]更新为Minecraft 26.1版本。
- [新]Boss经验倍增——Boss现在会根据生命值和伤害倍率奖励额外经验值。10倍生命值的Boss能提供~14倍经验值,25倍HP的Boss则能提供~49倍经验值。倍率低的增援怪物给的比例也更低。
- [新]经验值进度重新平衡——每级所需经验值从20L³降至8.5L³,将1至100级纯刷怪的刷怪时间从~1650小时提升到地下城运行~300小时。
- [新]和平旗帜——可制作的物品,可以创建一个基于区块的和平区域,精英怪物和事件不会生成。可配置区块半径(默认4),任何玩家都可以放置或破坏,数据在重启后依然存在。取代了旧的基于公会的退出系统。
- [新]和平旗帜管理员命令 — /em peacebanner 提供<player>, /em 和平旗帜列表。
- [新]和平旗帜制作配方——用骨头包围任何旗帜。配方是可配置的,管理员可以禁用。
- [新]FMM脚本物品集成——EliteMobs自定义物品现在可以引用FMM脚本物品,桥接了两个物品系统。
- [新]免费地精活动包内容包。
- [新]Lua API:玩家Boss栏、动作栏和带有刻度自动解雇的称号。
- [新]Lua API:raycast、spawn_firework、get_target_entity、get_eye_location、get_look_direction。
- [新]Lua API:send_block_change和reset_block,并可选自动重置定时器。
- [新]Lua API:get_highest_block_y用于地形查询。
- [新]Lua API:player:sleep() 和 player:wake_up() 端点。
- [新]Lua 实体桥——脚本现在可以检查任何实体的 is_elite、is_custom_boss、is_significant_boss、health_multiplier 和 damage_multiplier。
- [修复]当生命值比例稍微超出动态等级加成时,Boss条不再闪烁或消失。
- [修复]修复了因复制粘贴令牌中空白导致的 Nightbreak 令牌“无效令牌格式”错误。
- [修复]修复了与 Minecraft 26.1 的兼容性——用 java.util.Base64 替换了移除的 SnakeYAML Base64Coder。
- [修复]固定时间事件忽略了已配置的全局冷却时间——事件系统在每个事件生成后硬编码了5分钟冷却时间,导致事件触发频率远超预期。
- [修复]修复了内容包没有下载链接或 Nightbreak slug 时,出现“URI 中缺少协议”的内容下载崩溃——现在显示友好错误信息。
- [修复]修复了免费哥布林事件包缺少夜破(Nightbreak)漏洞,导致安装菜单无法下载和版本检查。
- [修复]修复了免费哥布林事件包未被识别为默认内容,导致版本更新检查无声跳过该内容的问题。
- [修复]修正了版本检查器跳过使用简单构造函数内容包更新通知的问题——包含 Nightbreak 字头的包无论构造器类型如何,现在都会被版本检查。
- [新]Boss 能力的 Lua 脚本引擎!所有54个预制Boss技能(箭矢烟花、冰霜锥、灵魂行走、盾墙、追踪火球、僵尸膨胀等)都从Java重写成Lua。能力现在定义为.lua脚本,内容创作者无需使用Java即可完全修改和扩展。
- [新]Lua Boss API 具有完整实体继承——Boss、玩家和通用实体都共享一个统一的 API。Boss继承了所有活体方法(推、重力、鳞片、粒子/声音生成),并添加Boss专属的方法(生命值、标签、战斗钩子)。
- [新] 14个Lua脚本钩子用于Boss——on_spawn、on_game_tick、on_zone_enter、on_zone_leave、on_boss_damaged、on_boss_damaged_by_player、on_boss_damaged_by_elite、on_player_damaged_by_boss、on_enter_combat、on_exit_combat、on_heal、on_death、on_leash_reset和on_boss_target。
- [新]Lua 驱动配置系统——每个 Lua 权限都会有一个 YAML 配置文件,允许服务器管理员像以前一样切换和配置权限。
- [新]针对复杂Lua能力且需要Java方面帮助的特殊能力支援职业——盾墙、灵魂行走、追踪火球、末影龙赋能闪电、僵尸死灵之书和NameTagMessage。
- [新]GameClock 用于 Lua 脚本中基于滴答计时的实用工具。
- [新] /em 战利品调试<等级>不可破坏命令——调试负载变体,能在延长测试会话中获得不破99的物品。
- [新]ScriptableBoss 和 EliteMobsScriptProvider for MagmaCore 2.0 脚本集成——将 EliteMobs 的 boss 实体连接到 MagmaCore 统一的脚本框架。
- [新]脚本系统通过 ScriptExecutable 和 ScriptRuntimeOwner 接口进行了推广,允许 YAML 精英脚本和 Lua 脚本共享相同的动作/目标/条件流水线。
- [修复]ender_dragon_tornado Lua 脚本中固定了 %% 字面值导致 LuaJ 解析错误——Java 文本块不像 String.format 那样处理 %。
- [修复]友好的Lua错误信息现在显示文件、行号、钩子名和通俗英语解释,取代了原始的Java栈跟踪。
- [调整]MagmaCore 依赖从 1.28-SNAPSHOT 升级到 2.0.0-SNAPSHOT。
- [调整]EasyMinecraftGoals的依赖已移除——现在集成在MagmaCore中。
- [调整]LuaJ 依赖从 EliteMobs 中移除——现在由 MagmaCore 的阴影罐(com.magmaguy.shaded.luaj)提供。
- [调整]为避免 classloader 冲突,添加了 EMG 包的重定位。
- [调整]为了保持NMS适配器的完整,MagmaCore被排除在阴影最小化之外。
- [调整]形状工具(锥形、立方体、圆柱体、圆顶、射线、球面)迁移到了MagmaCore——EliteMobs只保留了专用射线变体(StaticRay、RotatingRay、TranslatingRay)。
- [新]为自然精英怪物打造的规模化战斗系统!当默认开启时,世界精英会模拟玩家的战斗水平,所以装备很重要,但怪物等级无关紧要。这使得自然精英无论玩家成长如何都同样公平。使用正常化战斗的地下城Boss不受影响。可通过 useScaledCombatForNaturalElites 在 MobCombatSettings.yml 配置。
- [新]也可以通过scaledcombat config字段为每个自定义Boss启用缩放战斗,允许内容创作者将特定Boss选择进入等级无关的战斗模式。
- [新]可调整的战斗伤害倍数配置!分别设置了scaledDamageToEliteMultiplier和scaledDamageToPlayerMultiplier设置,可以独立于归一化和标准战斗而微调缩放战斗难度。
- [新]比例战斗实体在其名牌中显示符号(⚔或☠)而非数字关卡,可通过scaledStandardLevelSymbol和scaledHighThreatLevelSymbol进行配置。当Boss的生命值倍数超过1时,会出现高威胁符号。
- [新]缩放战斗生命值显示的是基于百分比的伤害弹窗和生命条,而非原始数字,因为实际的生命值对玩家来说毫无意义。
- [新]比例化战斗奖励解决器!来自可调节战斗精英的战利品、金币和技能经验值,使用玩家的战斗等级而非怪物内部等级,确保奖励始终与进度匹配。
- [新]传承生命值加成切换!useRecommendedHealthScaling(默认为真)允许服务器选择更小的传统风格自然精英HP值,更接近EliteMobs 9的数值。不推荐给新服务器使用。
- [新]力量和弱点药水效果现在会影响玩家对精英的伤害!可以通过 strengthDamageMultiplierV2 和 weaknessDamageMultiplierV2 配置(默认每级 0.2 点)。强弱是线性组合的,所以相等的等级会完全抵消。
- [新]在伤害公式和伤害分解显示中添加了药水倍数——力量、弱点和抗性现在集中在PotionCombatModifierCalculator中。
- [新]间歇泉/洪水门基岩玩家检测!GeyserDetector 现在通过与 Floodgate 和 Geyser API 的反射集成,实际检测 Bedrock 播放器,取代了旧的占位存根。
- [新]战斗关卡显示高度调整以适应基岩玩家——悬浮的战斗关卡文字在Geyser/Floodgate客户端中偏移较高,以考虑基岩渲染差异。
- [新] /em 战利品奖励<player> <filename>命令——根据玩家的战斗等级分配自定义物品,溢出物品会掉落在地上。
- [新] /em 战利品调试<等级>有限指令——装备有限的调试装备(仅限护甲、剑、弓、盾、箭),以加快测试速度,同时不会让库存里堆满各种武器类型。
- [新]Boss追踪条现在适用于所有公告Boss,优先级>= 1,即使没有自定义locationMessage——自动使用合理的默认消息(“$name:有$distance个街区!”)。
- [新]Boss公告现在只要Boss有任何公告内容(生成/死亡/逃脱/地点信息),优先级默认为1,而不是总是默认0。
- [新]追踪虫洞感知Boss!Boss的追踪条和Boss条现在会通过虫洞——如果Boss在另一个世界,追踪条会显示通往Boss世界最近的虫洞入口的距离,而不是显示“另一个世界”。
- [新]虫洞感知任务追踪指南针!任务指南针现在采用集中虫洞导航逻辑,在目标在另一个世界时引导玩家前往最近的虫洞。
- [新]地下城浏览器菜单的返回按钮!从传送页面(物品栏或对话)打开地下城传送时,关卡选择和难度选择菜单现在包含返回按钮,可返回传送浏览器。
- [新]Maces 和 Spears 技能等级的 PlaceholderAPI 占位符(%elitemobs_player_maces_level%%,%elitemobs_player_spears_level%)。
- [新]动态任务奖励现在在交回时根据玩家当前的战斗等级生成,而非任务的原始等级。如果玩家处于动态地下城,则使用该地下城所选的等级。这避免了早已接受的任务奖励过时。
- [新]动态任务等级调整——任务现在使用玩家的完整战斗等级(1-100),而非旧的分割等级(1-20),产生更细致的任务难度和奖励调整。
- [修复]固定的远程武器(弓、弩)在近战中使用时,能造成满额武器伤害,不再算作徒手攻击——用远程武器进行近战攻击现在使用拳速(4.0)和武器等级0。
- [修复]固定了使用基础最大生命值而非总最大生命值(包括技能加成)的一次性攻击保护,允许拥有护甲技能生命加成的玩家在某些情况下仍能一击必杀。
- [修复]修复了在访问 Location.getWorld() 未加载世界时,Paper 服务器上虫洞代码崩溃的问题——Paper 抛出了 IllegalArgumentException,而不是返回 null。现在所有虫洞位置访问都包含了这个例外。
- [修复]固定副本副本的副本击杀目标会渗透到同一副本的其他副本中并完成——目标现在在计数击杀前会先验证副本身份。
- [修复]固定实例副本目标会在静态监听列表中不断累积,导致在完成或关闭副本后,陈旧目标仍会被注册。
- [修复]固定了即使副本状态不再持续,副本副本完成检查也会运行,可能会在清理过程中触发完成逻辑。
- [修复]修正了玩家在副本副本中复活时传送到旗帜方块上,而不是在旗帜上方,且生命值没有恢复。
- [修复]修复了任务目标名称在目标名称为空时导致NullPointerException的问题——无论是聊天进度消息还是菜单摘要行,现在都能安全地处理空名称。
- [修复]修复任务奖励物品显示名称导致无自定义显示名称时出现NullPointerException——该名称会退回到材料类型名称。
- [修复]修复了NPC名字为空时任务交付目标崩溃的问题。
- [修复]修复任务对话框和Bedrock任务视图显示颜色编码伪影——对话文本处理现在完全剥离颜色编码,并将多行文本合并为单行,以便清晰渲染。
- [修复]固定任务库存菜单的单词换行,使用硬编码的30字符宽度,而非配置的maxCharactersPerLine值。
- [修复]固定任务库存菜单的背景,采用了破碎的角色级单词换装和颜色编码追踪——被简单的逐条渲染取代。
- [修复]通过从 Logger.sendMessage 切换到 Logger.sendSimpleMessage 修正了 /em 技能检查输出显示插件前缀的双重。
- [修复]修复脚本 SUMMON_ENTITY 在 getEntityClass() 返回 EntityType 的空值或位置/世界为空时动作崩溃的问题。
- [修复]固定脚本SUMMON_ENTITY即使时长为0仍调度移除任务,导致不必要的计时开销。
- [修复]修正了脚本SUMMON_ENTITY错误信息,但不包含脚本文件名,使调试更困难。
- [修复]修正了欢迎任务中提到“奥迪戈斯”,而非正确的NPC名字“Casus”和“Dux”。
- [修复]修正了隐形能力只在放大器3时生效,而不是5。
- [调整]插件初始化重构为使用 MagmaCore 集中式的 PluginInitializationContext 系统——进度条、异步/同步相位、错误处理和关闭取消现由 MagmaCore 管理,而不再由 EliteMobs 手工制作。这为多插件初始化协调做准备。
- [调整]MagmaCore API 调用更新以传递插件实例(this)以支持多插件——影响 MagmaCore.onEnable()、MagmaCore.shutdown()、MagmaCore.initializeImporter()、NightbreakContentManager.downloadAsync()、NightbreakContentManager.checkAccessAsync()、FirstTimeSetupMenu 和 SetupMenu。
- [调整]EMPackage 现已实现 NightbreakManagedContent 接口以实现标准化内容管理。
- [调整]传送配置键从 teleportText/Hover/Command 迁移到 teleportTextV2/HoverV2/CommandV2,以重置与新对话感知传送系统失效的用户自定义。
- [调整]更新了MagmaCore依赖。
- [新增]管理初始化进度条!现在,管理员在插件启动期间会看到一个老板栏,准确显示当前正在运行的初始化步骤以及总体进度。在初始化过程中加入的管理员会自动添加到该栏。
- [新]可翻译的技能类型和奖励类型显示名称!技能名称(剑、斧头、弓等)和奖励类型(过程、被动、条件等)现在可以在 Skill_bonus_menu.yml 中进行配置,从而实现技能系统的完全本地化。
- [新]可翻译的地下城难度名称!内容包中的困难列表名称字段现在通过翻译系统运行。
- [新]可翻译的虫洞位置文本!虫洞配置中的 location1Text 和 location2Text 现在可以翻译。
- [新]可翻译的任务目标 NPC 名称和位置!自定义任务目标中的 npcName 和位置字段现在通过翻译系统运行。
- [新]菜单项名称和传说现在可以翻译了!所有基于 ItemStackSerializer 的菜单按钮(购买/出售、滚动、附魔、修复、刮板、出售、解除绑定、战利品、程序/自定义商店)现在通过翻译系统传递显示名称和知识,而不仅仅是转换颜色。
- [新]地牢世界中的花盆互动保护 - EliteMobs 世界中的花盆和盆栽植物现在受到保护,免受玩家互动,防止装饰破坏。
- [修复] 修复了翻译系统在 CSV 文件中存储预先转换的颜色代码的问题 - 翻译人员现在可以看到原始渐变/十六进制标签(例如 <g:#FF0000:#00FF00> )而不是扩展的控制字符,从而使翻译更具可读性。颜色转换现在发生在查找时而不是注册时。
- [修复] 修复了 Soulbind 传说和召唤商人附魔读取原始配置值而不是使用预加载的可翻译字段 - 两者现在都使用已经通过翻译系统的缓存配置值(SoulbindConfig.loreStrings、SummonMerchantConfig.message)。
- [修复]修复了Soulbind配置,对loreStrings和hologramString使用重复的翻译键“名称”——现在每个都正确地使用自己的键。
- [修复] 修复了精英卷轴转换的物品具有破坏的传说 - 卷轴在自动生成的精英物品传说之上附加了卷轴特定的传说(显示等级 0 / 声望 0)。转换后的物品现在可以正确注册结界、物品来源,并以正确的顺序生成知识。
- [修复]修复了精英卷轴确认按钮,允许玩家在没有生成输出物品时单击确认,可能会丢失物品。
- [修复]修复了直接掉落到玩家库存中的战利品在库存已满时被默默丢弃的问题 - 所有跨战利品表、自定义战利品条目、修复菜单、刮板菜单和滚动掉落的 addItem() 调用现在都会将溢出的物品掉落在地面上。
- [修复] 修复了 BossTrackingBar NullPointerException 当 Boss 的世界被卸载或不再加载时的问题 — 所有位置访问现在都经过空检查。当世界不可用时,老板栏任务现在也会自行取消。
- [修复] 修复了 Boss 跟踪栏在块/世界卸载时泄漏调度程序任务的问题 - 现在,当 Boss 卸载时,跟踪栏会被正确删除,并且创建新的跟踪栏会首先删除旧的跟踪栏。
- [修复] 修复了脚本操作重复任务在实体的世界卸载后继续运行,导致潜在的 NPE - 任务现在检查空世界并优雅地取消。
- [修复]修复了玩家睡觉时战斗等级显示实体分离和浮动的问题——显示现在在床上被移除并在醒来后重新创建。
- [修复]修复了当任务对话框列表为空时DialogObjective NullPointerException。
- [修复] 修复了 SpecialItemSystemsConfig 尝试在加载自定义项目之前解析 CustomItem 引用的问题 - 附魔书特殊战利品条目现在在首次访问时延迟解析,而不是在配置初始化期间解析。
- [修复] 修复了自定义战利品表条目在初始化过程中尚未加载引用的项目时会从战利品池中默默删除自己的问题 — 包含空项目的条目现在会在删除时保留并解析。
- [修复]修复了即使技能系统被禁用也会授予技能XP的问题——SkillXPHandler、SkillBonusEventHandler和SkillBonusMenu现在在处理之前检查SkillsConfig.isSkillSystemEnabled()。
- [修复] 修复了禁用 DropEliteMobsLoot 的自定义 Boss 也会阻止技能 XP 获得 - 由于技能 XP 和战利品掉落是独立的系统,战利品掉落检查已从 XP 处理程序中删除。
- [调整] 内容导入器从同步初始化阶段移至异步初始化阶段 — 内容导入期间繁重的 ZIP I/O 不再阻塞主服务器线程。
- [调整] 所有地牢/内容包描述都以更丰富的格式重写 - 描述现在显示内容类型(动态巢穴、动态地牢、圣所等)、通过 $bossCount 占位符遇到的 Boss 计数,以及简短的主题风味文本,而不是旧的“难度:&4动态内容!”格式。
- [调整] 将 MagmaCore 依赖项从 1.26-SNAPSHOT 更新为 1.28-SNAPSHOT。
- [新]西班牙语和法语翻译已完全重制并更新,适用于EliteMobs 10!其他语言还在处理中。你知道十年前,这整个项目都要花40万欧元加税吗?有趣。
- [新]护甲技能生命加成切换!skills.yml 新增的 armorSkillHealthBonusEnabled 选项允许服务器玩家完全禁用每护甲等级额外生命值的机制。一个同伴强制DefaultHealthWhen护甲技能健康加成禁用选项可以让玩家硬重置到原版20点生命值。
- [新]技能页面现在是互动的——点击玩家状态界面的技能类型,直接打开该武器/护甲类别的技能加值选择菜单。
- [新] /em 生成精英命令拆分 — 基础命令现在干净利落地作为 /em 生成精英 <entityType> <level>,而另一个 /em 生成精英 <entityType> <level> <powers...>变体负责功率分配。
- [新]地下城世界中的物品框架伤害保护——EliteMobs世界中的物品框架现在受到玩家和投射物伤害的保护,而不仅仅是互动。
- [修复]抗性伤害减免配置迁移到了ResistanceDamageMultiplierV2,默认值为0.2,符合原版行为(抗性I=20%减少,抗性V=免疫)。这应该能解决一个让部分玩家变得无法被杀死的bug。
- [调整]动态地下城中的宝箱战利品现在会根据地下城选定的等级调整,而不是使用固定的宝箱等级。副本外,可调整的战利品会跟随开局玩家的装备等级。
- [调整]带有动态等级(-1)的宝箱模拟器现在会根据副本中选择的等级,或在大地图中与开局玩家的装备等级相应调整,而不再总是使用固定的宝箱等级。
- [调整]宝箱补货计时现在在访问时会被修剪——过期的条目会自动清理并保存到磁盘,而不是无限期累积。
- [调整]翻译系统现在在运行非英语本地时会剥离 YAML 配置文件中的可翻译键,防止英文默认值在重新加载时覆盖翻译值。
- [调整]卷轴应用NPC被转移到冒险者公会内。
- [调整]伪装NPC名牌Y偏移从1.55调整到2.30以实现正确对齐。
- [修复]修复了所有EliteMobs菜单点击处理程序,忽略了其他插件预先取消的点击——菜单(竞技场、滚动、附魔、战利品、刮取者、技能加成)现在无论之前取消状态如何都能处理点击。
- [修复]固定的精英卷轴菜单允许物品覆盖已占用的槽位——卷轴和非精英物品槽现在会在接受转移前检查空缺。
- [修复]固定了在关闭技能或切换武器后,玩家身上残留的阴影射程、长射程和长柄武器掌握属性修正值(射程、攻击速度)。
- [修复]修正了“幽灵伸手”即使技能不再激活时,也能应用其攻击范围加成。
- [修复]修复了技能加值属性修正符在插件加载后依然存在——所有在线玩家在注册表清除前关机时都会清理修饰符。
- [修复]固定技能选择数据区分大小写——技能ID现在归一化为小写,陈旧/禁用/重复条目会自动从保存的选择中净化。
- [修复]修正任务库存菜单在其他位置显示原始组件内部结构而非可读文本——将剩余的getText()调用切换为toPlainText()。
- [修复]修复了插件关闭时数据库写入的无声失败——当插件被禁用且无法调度异步任务时,setDatabaseValue 现在会退回到同步执行。
- [修复]在虫洞滴答环中,当虫洞条目在迭代过程中被修改时,已修正并发修改异常。
- [修复]固定的宝箱冷却显示显示错误剩余时间——getPlayerCooldown现在会返回当前纪元,而非0。
- [修复]固定的宝箱冷却显示可能会显示负时间值。
- [修复]修正了当找不到配置的自定义Boss时,模拟生成无预警地无声失败。
- [修复]精英怪物伤害公式中固定的护甲技能生命值计算被重复——现在使用中央化的getConfiguredMaxHealthForArmorLevel()方法,尊重新的开关。
- [新]彻底重设计战斗公式!整个伤害系统都是用纯公式架构从零重建的。进攻(玩家对精英)和防御(精英对玩家)伤害计算现在都对称、等级一致且可预测。玩家在同等级内容中生存~5次攻击,并在所有等级内用~3次剑击击杀一名普通精英——无论你是5级还是100级。旧的混合原版+指数系统已经消失。
- [新]指数级缩放!怪物生命值随等级呈指数增长(+5级 = 恰好2倍生命值),玩家伤害也会相应增长。这取代了旧有的伤害修正系统,使战斗在所有等级范围内都感觉一致。
- [新]所有武器类型的DPS都一样!剑、斧、锄头、弓、弩、三叉戟、狼牙棒和长矛在匹配战斗中击杀时间相同(~1.875秒),无论攻击速度差异如何。不再是“最佳武器类型”——玩你喜欢的。
- [新]原版护甲现在真的重要了!ArmorDefenseCalculator将精英和原版护甲统一为一个装备评分。伤害类型感知的附魔现在也正常工作——投射物保护减少箭矢伤害,爆炸防护减少爆炸伤害,等等。
- [新]箭矢战斗数据现在会在发射时存储在弹丸中,避免了经典的武器切换漏洞——玩家先用强弓射箭再换武器。
- [新]每把武器的技能升级系统!每种武器类型(剑、斧头、锄头、弓、弩、三叉戟、狼牙棒、长矛)和护甲现在都有自己的技能等级,使用后技能等级会提升。技能随着升级解锁被动和主动加成,为战斗增添了真正的RPG进阶感。
- [新]被动武器切换技能效果!像迅捷打击(速度)、坚韧(击退抗性)、连击(攻击速度)、阴森攻击(互动范围)、远程攻击和长柄武器精通等技能,现在在切换武器时会自动应用或移除属性修正,鼓励多样化的玩法。
- [新]技能动作栏通知!当技能激活、触发或叠加时,玩家会看到可配置的动作栏信息,从而了解战斗中的情形。
- [新]玩家状态界面的技能页面!/em状态手册和Bedrock对话框现在包含一个专门的技能页面,显示所有技能类型,包括等级、经验进度条和格式化的经验值计数。
- [新]护甲技能生命加成——护甲技能等级超过1获得+1颗心(2点生命值),为坦克型玩家带来显著的生命优势。
- [新]模板驱动的技能知识系统——技能描述现在使用带有占位符支持的配置驱动模板,实现所有技能描述的完整翻译。
- [新]《精英怪物》新增了狼牙棒和长矛!完整的武器类型,拥有自己的技能树、升级、程序掉落和被动加成。包含VortexThrustSkill用于长矛(用减速II和视觉效果将敌人拉向目标位置)。
- [新]所有巢穴、迷你地下城和故事模式地下城都已转换为动态地下城!野兽圣所、烟花、大殿、骑士城堡、地下墓穴、斗兽场、黑暗尖塔、入侵、北极、飞艇、遗迹、世界树,以及所有13个故事模式地下城现在都按玩家等级调整。
- [新] 3级难度系统适用于所有动态地下城:普通(+5级同步)、困难(+0级同步)和神话级(-5级同步),并设有24小时锁定计时器。选择你的挑战。
- [新]动态地下城的NPC传送器!18+新的传送器NPC取代了冒险者公会的虫洞,使导航更加清晰。直接和NPC对话,选好你的难度。
- [新]赌博系统!在冒险者公会中体验完整的赌场体验,包括二十一点(击中、停牌、加倍下注)、掷硬币(50/50,罕见边缘落地头奖)、高/低(连胜倍数)和老虎机(带头奖的动画旋转)。包括完整的投注菜单、追捕欠赌场债的玩家的催债头目,以及显示赌场收益的赌博窝点老板NPC。
- [新]箭头商店和弗莱彻NPC,用精英货币购买箭矢。
- [新]通过你的Nightbreak账号进行游戏内内容管理!将你的账号与/nightbreaklogin绑定,安装或更新所有内容,而无需离开游戏。
- [新] /em downloadall 命令 ——批量下载你能访问的所有可用内容包。按顺序下载并显示实时进度信息,自动去重,即使中断连接也能优雅地继续。
- [新] /em updatecontent 命令——与 downloadall 相同,但只针对过时的包,便于用一个命令保持所有内容的更新。
- [新]在 /em 设置中下载全部按钮!内容列表末尾的动态按钮,能检测你的内容状态——显示新旧包的准确数量,一键处理所有内容。
- [新建]Nightbreak API 集成用于内容版本检查,使所有内容包都能获得准确的更新通知。
- [新]任务锁定系统!任务完成后可以设置可配置的锁定时间(以分钟计),防止玩家立即重新接受同一任务。通过questLockoutMinutes配置每个任务。
- [新]首次登录时有互动语言选择器!玩家在聊天中看到20种支持的语言作为可点击的按钮。玩家客户端的地理位置会自动检测,匹配语言也会被高亮显示,使本地化设置变得轻松。
- [新]大规模本地化推广——插件中几乎所有硬编码字符串都被外部化成配置文件。CommandMessagesConfig(100+个命令消息)、InitializeConfig(设置/登录流程)、GamblingConfig(所有赌场文本)、DungeonsConfig(内容包消息)、PlayerStatusMenuConfig(状态屏幕文本)、StaticItemNamesConfig(~400个物品名称)等等。EliteMobs 现已完全可翻译。
- [新]基于数据包的假文本和假物品系统!Boss的生命值显示、战斗等级指示、NPC聊天气泡、虫洞标签、对话文本、战利品淋浴金币等现在都采用了基于数据包的轻量级实体,而非真正的TextDisplay/Item实体,显著提升了性能。
- [新]三相异步安全插件初始化!配置文件的I/O现在在主线程中完成,实体生成,Bukkit API调用则在同步线程上进行。这大大减少了服务器启动阻挡。
- [新]EliteMobsInitializedEvent 和 PluginState 枚举允许外部插件检查 EliteMob 的准备情况并钩入初始化生命周期。
- [新]Boss生命值显示和伤害弹窗的K/M/B/T数字格式——大数字现在显示为“1.5M”,而非“1500000”。
- [新]几乎所有EliteMobs文本的颜色渐变!许多默认内容被重新设计,采用了扩展的色彩调色板和渐变支持。
- [新]脚本占位符支持!MESSAGE、TITLE_MESSAGE、ACTION_BAR_MESSAGE 和 BOSS_BAR_MESSAGE 脚本动作现在支持 $playerName、$playerX/Y/Z、$bossName、$bossX/Y/Z、$bossLevel 和 $bossWorldName 占位符。
- [新]虫洞现在可以用自定义模型代替粒子/线框。新增了Primis、Oasis和冒险者公会出生门户的模型。
- [新]虫洞设置提示——当目的地未配置时,楼主会看到带有准确命令的有用信息。
- [新]地牢中的可配置飞行切换预防(preventFlyToggleInDungeons in CombatTag.yml)。
- [新]DungeonProtector现在阻止了容器访问、围栏门互动、龙蛋互动以及在受保护的EliteMobs世界中的护甲架/物品框架控。
- [新]刷农保护开关——服务器拥有者现在可以通过 enableFarmingProtection 在 AntiExploit.yml 中完全禁用刷农保护系统。
- [新]占位API占位符,表示所有技能水平和战斗等级,罗马数字。
- [新]NPC自定义模型点击处理程序——使用FreeMinecraftModels的NPC现在能正确响应点击作。
- [新]经验值弹窗文字让经验值获得更清晰、更易追踪。
- [新]药水效果保护——如果玩家已经激活药水效果,基于物品的效果将不再覆盖该效果,可能会缩短持续时间。
- [调整]物品名称生成完全重新设计——旧的程序化系统(名词+形容词+动词模板)已被为每种武器/护甲类型策划的约400个精心策划的静态名称所取代,产生更具主题性和更高质量的物品名称。
- [调整]装备减免曲线:低于匹配装备时0-50%伤害减免,比匹配装备高出50-75%(上限为比怪物高出+10级)。裸体玩家会受到2倍伤害,巅峰装备玩家会受到0.5倍伤害。
- [调整]武器调整曲线:无武器时伤害50%,匹配等级时100%,在怪物等级以上+10(上限)时最高可达125%。
- [调整]技能加成叠加从乘法改为加法,防止了多伤害技能的指数级叠加滥用。
- [调整]附魔伤害加值从固定值改为乘法百分比(每高于原版最大附魔等级2.5%)。
- [调整]扫荡攻击现在对附近敌人造成主目标伤害的25%。
- [调整]荆棘伤害现在是基于公式的(基础伤害 x 荆棘等级 x 2%),随着怪物等级正常成长,而不是固定。
- [调整]ProceduralShopMenu 现在根据你的技能等级为每种物品类型生成物品,而不是随机等级,并且在购买前强制限制装备。
- [调整]技能升级通知现在会显示标题、播放音效、生成粒子,并广播全服公告。
- [调整]动态任务现在会根据玩家进入动态地下城时调整等级——任务目标会根据所选难度更新。
- [调整]设置菜单重新设计,包含三个清晰的预设:“推荐”(绿色,完整安装)、“仅内容”(黄色,无自然生成)和“无进度”(红色,禁用技能和战利品)。设置后会有消息引导玩家完成Nightbreak账号的工作流程。
- [调整]插件内的所有URL现在都可以通过悬停工具提示点击,而非原始文本。
- [调整]插件上的所有分隔线都更新为渐变色样式,以使外观更简洁。
- [调整]NPC角色显示、虫洞文本和赌博窝收益显示现在都使用TextDisplay实体,而不是隐形的装甲支架。
- [调整]快速换弹技能(弩)重新设计——现在击中敌人后会短暂提升移动速度,而不是攻击速度(攻击速度对弩的装填没有影响)。
- [调整]反应护盾触发阈值从最大生命值的20%降至10%。
- [调整]配置密钥标准化——数十个 YAML 密钥跨多个配置文件,从“人类可读密钥”迁移到 camelCase 以保持一致性。
- [调整]更新了FreeMinecraftModels、EasyMinecraftGoals和MagmaCore至最新版本。
- [修复]在战斗、地下城、技能、实例内容、显示、菜单、版本检查和内容管理等方面,都有大量漏洞修复。太多了,无法一一列举——如果9.x时有问题,现在大概已经修复了。
- [移除]完全取消了公会等级系统。
- [移除]移除了切换技能类型和所有基于切换的技能(刀舞、鲁莽狂怒、恐惧光环)。
- [移除]移除了旧的程序性物品命名系统——取而代之的是策划的静态名称列表。
- [移除]移除了默认事件包。
- [移除]移除了20+虫洞配置,被NPC传送器取代。
- [移除]移除了ShadowOfTheBinderOfWorldsLair(与世界圣殿Binder合并)。
- [移除]移除了几个未使用的音效文件、自定义模型图标,以及许多过时的配置字段,涵盖DefaultConfig、MobCombatSettingsConfig、SkillsConfig、QuestsConfig、EconomySettingsConfig和菜单配置。