Sol的MMNM模组:能力护盾重制(质量提升、改进)

Sol的MMNM模组:能力护盾重制(质量提升、改进)

此插件是对MMNM的AbilityProtection系统进行的扩展与便捷性改进。

Sol's MMNM Addon

一个针对 Mine Mine no Mi 的管理与游戏性附属模组,将能力保护扩展为更完整的保护区系统。

Sol's MMNM Addon 为服务器管理员提供了更好的区域创建工具、可重复使用的保护配置文件、地形再生、每个区域的提示消息与音乐、局部天气、生成控制、更安全的恢复功能,并修复了基础 MMNM 中若干破坏性能力导致的边界问题。

此模组主要面向服务器,但并非服务端专用。请在服务器和每位玩家客户端安装相同版本的附属模组。客户端安装是实现保护区HUD、消息、音乐、天气渲染和网络兼容性的必要条件。


当前版本与需求

Forge 1.20.1

  • Minecraft: 1.20.1
  • Forge: 47.3.0+
  • Mine Mine no Mi: 0.11.4+
  • Java: 17

Forge 1.16.5

  • Minecraft: 1.16.5
  • Forge: 36.2.39+
  • Mine Mine no Mi: 0.10.11+
  • Java: 8
  • 可选CartAddon兼容性: 0.8.1+

不要混用 1.16.5 和 1.20.1 的文件。在多人游戏中,客户端和服务器应使用相同的 Minecraft 与模组版本。


社区与支持

需要帮助、想建议新功能或发现漏洞?加入社区获取预览、支持和更新日志。

加入Discord


此模组改进了什么?

Mine Mine no Mi 已提供基础的能力保护系统。Sol's MMNM Addon 在此基础上增加了以下功能:

  • 更简便的命令和更清晰的命令反馈
  • 通过标签或稳定的列表编号选择保护区
  • 具有精确X、Y、Z边界的类 WorldEdit 矩形长方体
  • 可重复使用的保护配置文件
  • 地形再生,提高恢复可靠性
  • 每个区域的能力规则、玩家建造规则、实体过滤器和受管生成
  • 进入和离开时的标题消息,正确支持嵌套区域
  • 每个区域的音乐播放列表,包括自定义客户端资源包音乐
  • 每个区域的晴朗、下雨和雷暴设定
  • 管理员边界可视化和保护区HUD
  • 修复重复掉落物、实体仇恨、容器、位移方块和破坏性能力的问题
  • 可选禁用Gekishin和Shima Yurashi的碎块

主命令为 /abilityprotection。较短的别名 /abprotect 执行相同操作,本指南通篇使用此别名。

大部分管理命令需要权限等级 3。包含空格的区域名称必须用引号括起来,例如 "Marine Base"。

以下详细指南默认折叠,以保持页面易于浏览。打开任一分类下的折叠内容即可阅读其命令、示例和解释。


快速开始:创建一个保护区

选项1:标准的 MMNM 中心与尺寸区域

站在区域的中心位置,然后运行:

/abprotect new [区域名称] [尺寸]

示例:

/abprotect new arena 50

这保持了传统 MMNM 保护区的形状与尺寸系统。

选项2:精确的类 WorldEdit 长方体

用于具有精确下界和上界 Y 坐标的矩形区域。

  1. 站在第一个角落并运行:
/abprotect new pos1 [区域名称]
  1. 站在对角角落并运行:
/abprotect new pos2

示例:如果 pos1 在 Y 40,pos2 在 Y 72,则区域只覆盖 Y 40 至 Y 72。两个选定的角落方块的坐标都包含在内。

若想故意保护相同的 X/Z 选择范围至整个维度的建筑高度,请使用:

/abprotect new pos2 full_height

/abprotect new pos2 exact也可接受,但仅用pos2` 默认就已使用精确的 X/Y/Z 边界。

如果 pos2 因维度改变或名称不可用而失败,待定的 pos1 会保留,以便你修正问题后重试。

查看和可视化区域

/abprotect list
/abprotect info [区域名称]
/abprotect view true
/abprotect view false
/abprotect view hud_text true
/abprotect view hud_text false
  • list 显示区域,其顺序在重启后保持。
  • 大多数命令接受区域标签或列表编号。例如,/abprotect info 2 选择编号为 2 的区域。
  • view true 显示保护边界。长方体可视化遵循选定方块的完整外边缘,包括单格宽的选择。
  • view hud_text true 启用仅管理员可见的当前区域 HUD。

其他基本管理命令:

/abprotect resize [区域名称] [尺寸]
/abprotect rename [区域名称] [新名称]
/abprotect remove [区域名称]

使用 resize 调整长方体尺寸会将其转换回普通的 MMNM 中心与尺寸形状。


保护属性

使用以下格式:

/abprotect props [属性] [区域名称] [值]
属性 控制内容
block_destruction 能力是否能在该区域破坏方块
block_restoration 受影响的方块是否排队等待再生
mined_block_drops 符合条件的玩家挖掘的方块是否使用正常战利品表掉落
player_build 玩家是否能正常破坏和放置方块
abilities_use 能力是否能在该区域使用
entity_damage 是否允许实体相关的伤害和战斗
player_damage 玩家是否能受到伤害
stat_loss 是否允许 MMNM 属性损失
death 是否允许死亡
mob_spawns 是否允许正常生物生成
unconscious_time MMNM 昏迷持续时间,单位为刻(0-1200)
restoration_interval 每批恢复之间的延迟,单位为刻(0-1200)
restoration_amount 每批恢复的最大方块数(1-500)
restoration_distance 玩家周围恢复等待的距离(0-1000)

一秒有 20 刻。恢复距离为 0 表示禁用就近玩家延迟。

示例:使能力破坏的方块再生

此设置允许诸如破坏性的 Hie 技能工作,同时恢复之后的地形:

/abprotect props abilities_use arena true
/abprotect props block_destruction arena true
/abprotect props block_restoration arena true
/abprotect props restoration_interval arena 100
/abprotect props restoration_amount arena 50
/abprotect props restoration_distance arena 0

在此示例中,区域每批最多恢复 50 个排队方块,间隔 100 刻(约 5 秒)。增加 restoration_amount 可加快重建,增加 restoration_interval 则使再生效果更慢且更明显。

玩家挖掘的方块掉落

当在可再生区域中启用 mined_block_drops 时:

  • 生存模式挖掘遵循正常战利品表、工具和附魔。
  • 创造模式挖掘不会产生掉落物。
  • 掉落物只产生一次,不会重复。
  • 能力破坏与普通玩家挖掘保持独立。

这对于玩家采集后能再生的矿场或资源区很有用。


按能力规则

当能力仍应激活但不应破坏受保护地形时,使用 nogrief:

/abprotect nogrief add [能力名] [区域名称]
/abprotect nogrief remove [能力名] [区域名称]
/abprotect nogrief list [区域名称]
/abprotect nogrief clear [区域名称]

当某能力不应在该区域被使用时,使用 blacklist:

/abprotect blacklist add [能力名] [区域名称]
/abprotect blacklist remove [能力名] [区域名称]
/abprotect blacklist list [区域名称]
/abprotect blacklist clear [区域名称]

命令提示提供已注册的 MMNM 能力名称。此附属模组还处理若干不遵循基础 MMNM 简单地形变化流程的能力路径,包括两个支持版本上 Takt 的集成和1.20.1上 Shambles 的集成。


可重复使用的保护配置文件

配置文件允许管理员保存一组标准的保护属性,并将其应用到多个区域。

/abprotect profile create [配置文件名称]
/abprotect profile list
/abprotect profile info [配置文件名称]
/abprotect profile modify [配置文件名称] [属性] [值]
/abprotect profile apply [配置文件名称] [区域名称]
/abprotect profile copy [区域名称] [配置文件名称]
/abprotect profile remove [配置文件名称]

配置文件和区域的引用接受标签或列表编号。配置文件可以存储标准的保护值、恢复设置、player_build 和音乐播放列表设置。

区域消息、实体过滤器、受管生成规则、长方体边界和局部天气是单独管理的,不属于配置文件的一部分。


进入和离开消息

用 | 分隔标题和副标题来设置:

/abprotect entering_message set [区域名称] [标题] | [副标题]

示例:

/abprotect entering_message set sphinx Sphinx Island | Birthplace of Whitebeard, under Marco's watch.

标题以粗体显示,副标题以斜体显示。相同配置会自动产生一条进入消息和一条离开消息。

你也可以分别编辑每个部分:

/abprotect entering_message title [区域名称] [标题]
/abprotect entering_message subtitle [区域名称] [副标题]
/abprotect entering_message info [区域名称]
/abprotect entering_message preview [区域名称] entering
/abprotect entering_message preview [区域名称] leaving
/abprotect entering_message clear [区域名称]

嵌套区域独立工作

此附属模组追踪玩家当前所在的每个保护区。

如果一个大区域 main 包含一个小区域 middle,进入 middle 只显示 middle 的进入消息。离开 middle 但仍站在 main 内时,只显示 middle 的离开消息;不会重复显示 main 的进入消息。

如果一次跨越多条边界,进入消息按从最外层到最内层排序,离开消息按从最内层到最外层排序。


保护区音乐

每个区域可以有一个包含原版、模组或资源包声音的播放列表。

/abprotect props music add [区域名称] [声音ID]
/abprotect props music remove [区域名称] [声音ID]
/abprotect props music list [区域名称]
/abprotect props music clear [区域名称]
/abprotect props music shuffle [区域名称] [true|false]
  • 一个区域最多可存储 64 首曲目。
  • 除非启用随机播放,否则曲目按添加顺序播放。
  • 曲目之间以及播放列表重复前有 5 秒暂停。
  • 当玩家离开音乐区域或进入活动的静音区域时,音乐停止。
  • 播放使用 Minecraft 的音乐音量类别。

从资源包添加自定义音乐

资源包必须在每个应听到音乐的客户端上启用。专用服务器无法读取玩家本地 resourcepacks 文件夹中的文件。

对于名为 custom:ros 的声音事件,使用以下布局:

Your Resource Pack/
|- pack.mcmeta
`- assets/
   `- custom/
      |- sounds.json
      `- sounds/
         `- ros.ogg

示例 assets/custom/sounds.json:

{
  "ros": {
    "sounds": [
      {
        "name": "custom:ros",
        "stream": true
      }
    ]
  }
}

然后使用以下命令进行配置:

/abprotect props music add testworld custom:ros

对于较长的音乐文件,建议使用 "stream": true。

此附属模组也接受无需 sounds.json 条目的直接 .ogg 路径。对于此文件:

assets/custom/sounds/music/ros.ogg

请输入:

/abprotect props music add testworld custom:music/ros

不要在命令中包含 assets/、sounds/ 或 .ogg。直接文件ID可能不会出现在自动补全中,但仍可手动输入。

启用或更改资源包后,请重新加载资源并重新连接至服务器,以便附属模组的自定义声音建议再次同步。如果某个声音对一个玩家有效但对另一个无效,请检查两名玩家是否都启用了相同的资源包,并且其音乐音量不是静音状态。


独立的每个区域天气

使用以下命令设置保护区的天气:

/abprotect props weather_cycle [区域名称] [default|rain|thunderstorm|no_weather]
模式 保护区内效果
default 跟随维度的正常天气循环
rain 保持区域内的玩家处于下雨状态
thunderstorm 保持区域内的玩家处于下雨和雷暴天气状态
no_weather 保持区域视觉晴朗,并抑制位置性降雨检查

选定的模式会保存,跟随区域重命名,并在区域删除时移除。玩家离开区域时返回世界的正常天气。

局部下雨是否影响游戏机制?

是的,对于使用 Minecraft 位置感知 isRainingAt(blockPos) 检查的机制。在 rain 和 thunderstorm 区域内的暴露位置向服务器报告下雨,而 no_weather 区域内的位置报告无雨。这支持下雨湿润耕地、受雨影响的实体以及兼容的植被或作物生长模组等行为。

局部天气不会改变整个维度的全局天气值。仅检查全局 isRaining() 或 isThundering() 状态的模组无法检测每个区域的不同天气。此功能也不会创建单独的局部闪电模拟。

玩家天气渲染遵循玩家实际的保护区位置。如果玩家站在外面通过监控摄像头模组观看区域,摄像头的画面可能不会呈现区域内的雨景,即使区域内的耕地和其他服务器端位置性机制仍能检测到下雨。


实体生成黑名单和白名单

这些规则过滤尝试在区域内生成的实体。

/abprotect props entity_blacklist add [区域名称] [实体]
/abprotect props entity_blacklist add [区域名称] all
/abprotect props entity_blacklist remove [区域名称] [实体|all]
/abprotect props entity_blacklist list [区域名称]
/abprotect props entity_blacklist clear [区域名称]

/abprotect props entity_whitelist add [区域名称] [实体]
/abprotect props entity_whitelist remove [区域名称] [实体]
/abprotect props entity_whitelist list [区域名称]
/abprotect props entity_whitelist clear [区域名称]

使用完整的注册表ID,例如 minecraft:zombie 或模组实体的ID。白名单优先于黑名单。常见的设置是先黑名单 all,然后仅白名单允许生成的少数实体。

这些过滤器独立于基础的 mob_spawns 属性。它们提供针对特定实体的控制,而不是仅整体启用或禁用普通生物生成。


受管保护区生成

受管生成规则允许附属模组在已加载的保护区中,在活跃玩家附近创建选定的实体。从默认规则开始:

/abprotect props entity_spawnrules defaults [区域名称] [实体]

默认值:

  • 启用:true
  • 尝试间隔:600 刻(30 秒)
  • 成功几率:35%
  • 群体大小:1-3
  • 活跃上限:8
  • 放置方式:natural
  • 持久性:true
  • 定时消失:0(禁用)

使用以下命令配置规则:

/abprotect props entity_spawnrules enabled [区域名称] [实体] [true|false]
/abprotect props entity_spawnrules interval [区域名称] [实体] [刻数]
/abprotect props entity_spawnrules chance [区域名称] [实体] [百分比]
/abprotect props entity_spawnrules pack [区域名称] [实体] [最小] [最大]
/abprotect props entity_spawnrules cap [区域名称] [实体] [数量]
/abprotect props entity_spawnrules placement [区域名称] [实体] [natural|surface|water|air]
/abprotect props entity_spawnrules persistent [区域名称] [实体] [true|false]
/abprotect props entity_spawnrules despawn_after [区域名称] [实体] [刻数]
/abprotect props entity_spawnrules remove [区域名称] [实体]
/abprotect props entity_spawnrules list [区域名称]
/abprotect props entity_spawnrules clear [区域名称]

放置模式:

  • natural - 一般类自然放置,是普通陆地生物的实用默认值
  • surface - 搜索固体地面,适用于守卫、强盗、动物和陆上BOSS
  • water - 搜索有效的水域位置,适用于水生生物和海王类(Sea Kings)
  • air - 搜索空旷的空气位置,适用于飞行或特殊实体

受管生成仅在相关区块加载时运行,并遵守区域的实体黑名单和白名单。附属模组管理的生物会保留其所属区域/规则的身份,以便追踪上限,即使它们移动到原始边界之外。被击杀或移除的生物会释放其上限槽位。

对于应抵抗正常消失的BOSS、守卫和稀有生物,使用 persistent true。使用 despawn_after 进行附属模组定时清理;0 表示禁用该计时器。


恢复与基础 MMNM 修复

Forge 1.20.1

1.20.1 版本包含更广泛的恢复可靠性层:

  • 含水和浸水保护的方块受到保护,免受常见能力破坏路径的影响,同时能力效果可能继续穿过水体。
  • 被能力破坏的方块在破坏性处理前进行快照。
  • 作为下落实体被移位的方块被追踪回其保护区的来源,并在其落在保护区外时进行清理。
  • 下落的方块和依赖支撑的方块(如火把、铁轨、按钮和控制杆)按更安全的顺序恢复。
  • 恢复采用从下往上的放置方式,并推迟支撑尚未就绪的方块。
  • 捕获容器和方块实体的数据,以便恢复的容器保留其存储内容,而不会重复或丢失。
  • 悬挂实体(如物品展示框和画作)在支持的爆炸恢复流程中得到处理。
  • 防止重复坐标条目和临时移动/生成的方块变成不正确的永久恢复状态。
  • Takt、Shambles、方块队列、爆炸以及若干间接的地形变化路径获得额外的保护集成。

Forge 1.16.5

1.16.5 版本保留 MMNM 0.10.11 的原生恢复基础,并增加了面向兼容性的安全措施:

  • 改进的容器和方块实体快照恢复
  • 防止能力恢复期间容器内容掉落物重复
  • 恢复方块实体的稳定坐标处理
  • 改进普通和抛射物能力路径上的无破坏(no-grief)覆盖
  • Takt 集成
  • 可选的 CartAddon 能力挂钩,包括支持的 Gura 和 Stella Split 路径

两个 Minecraft 版本使用不同的内部恢复实现,但都包含相同的现代区域管理功能:精确长方体、配置文件、嵌套消息、自定义音乐、局部天气、实体过滤器、受管生成、玩家建造控制以及改进的命令处理。

实体伤害与仇恨修复

在 entity_damage=false 的区域中,敌对和中立实体被阻止通过受保护规则继续其正常的目标和伤害行为。当受保护攻击者/受害者条件适用时,来自实体的伤害被取消。这涵盖了使用正常 Minecraft 战斗挂钩的原版生物和模组生物。

Gura 碎块控制

通用配置文件为:

config/solsmmnmaddon-common.toml

它包含用于抑制以下来源的已破坏方块碎块的单独选项:

  • Gekishin
  • Shima Yurashi

两个碎块抑制选项默认启用。它们减少了不必要的飞行/下落方块碎块,同时保留主要能力效果。


重要的兼容性说明

  • Sol's MMNM Addon 是一个附属模组;需要 Mine Mine no Mi。
  • 在服务器和所有连接的客户端上都安装 Sol's MMNM Addon。
  • 在大量更改现有区域或恢复设置之前,备份世界。
  • 自定义保护区音乐存在于客户端资源包中,因此每位听众都需要该资源包。
  • 每个区域的下雨机制适用于位置感知的天气检查;维度范围的天气检查无法局部化。
  • 当查看玩家实际位于区域外时,远程摄像头视图可能不会渲染区域内的雨。
  • CartAddon 是可选的,仅适用于在安装 CartAddon 时存在的 1.16.5 兼容路径。
  • 其他模组可能绕过正常的 Minecraft 或 MMNM 挂钩。当它们使用标准伤害、生成、方块变化、声音和位置天气 API 时,兼容性最强。

为什么使用 Sol's MMNM Addon?

如果你的 Mine Mine no Mi 服务器需要受保护的城镇、竞技场、岛屿、地牢、再生战场、受控的Boss区域、氛围地点,或更安全的地形恢复,而无需管理员手动重建每个设置,请使用此附属模组。

它旨在使管理员更容易创建和维护保护区,同时为玩家提供更清晰、更沉浸式的位置切换体验。