和平旗帜
和平旗帜是一种可合成的物品,玩家可以放置它来创建一个抑制精英怪物的区域。放置后,和平旗帜会阻止其周围可配置区块半径内的精英怪物生成,还可以选择性地抑制 EliteMobs 事件。
工作原理
- 合成: 玩家使用默认配方(或管理员配置的自定义配方)合成和平旗帜。默认配方需要骨头环绕任意颜色的旗帜。
- 放置: 当玩家放置和平旗帜时,它会立即在周围创建一个保护区域。默认保护半径为旗帜所在区块向每个方向延伸 4 个区块。
- 移除: 破坏和平旗帜方块会移除保护区域,允许精英怪物再次在该区域生成。
- 持久化: 已放置的和平旗帜会保存到磁盘,并在服务器重启后持续生效。当包含和平旗帜的区块加载时,插件会验证旗帜方块是否仍然存在,如果已被其他方式破坏则自动移除保护。
默认合成配方
BBB
BWB
BBB
- B = 骨头
- W = 任意旗帜(支持全部 16 种旗帜颜色)
该配方会生成一面带有自定义图案、显示名称和描述的蓝色旗帜,标识为和平旗帜。
配置
所有和平旗帜设置位于 PeaceBanner.yml 中。完整参考请查看配置设置页面。
| 设置 | 默认值 | 描述 |
|---|---|---|
enabled | true | 是否启用和平旗帜功能 |
craftable | true | 玩家是否可以合成和平旗帜 |
chunkRadius | 4 | 已放置旗帜周围抑制精英怪物的半径(以区块为单位) |
suppressEvents | true | 已放置的旗帜是否同时抑制 EliteMobs 事件(动作事件和定时事件) |
recipeShape | BBB / BWB / BBB | 合成台布局 |
recipeIngredients | B: BONE, W: ANY_BANNER | 配方字符到材料的映射 |
itemName | &aPeace Banner | 和平旗帜物品的显示名称 |
itemLore | (见配置) | 物品上显示的描述行 |
placedMessage | (见配置) | 放置旗帜时发送的消息 |
removedMessage | (见配置) | 破坏旗帜时发送的消息 |
管理员命令
| 命令 | 权限 | 描述 |
|---|---|---|
/em peacebanner give <player> | elitemobs.peacebanner.admin | 给指定玩家一个和平旗帜物品 |
/em peacebanner list | elitemobs.peacebanner.admin | 列出所有已放置的和平旗帜及其坐标和区块半径 |
重叠旗帜
多个和平旗帜可以放置在保护区域重叠的位置。系统使用引用计数,因此只要至少有一个旗帜覆盖某个区块,该区块就保持受保护状态。移除单个旗帜只会取消未被其他旗帜覆盖的区块的保护。
技术细节
- 和平旗帜通过持久化数据容器(PDC)标签识别,而非外观。普通旗帜不受影响。
- 旗帜数据存储在
plugins/EliteMobs/data/peace-banners.yml中。 - 当区块加载时,插件会检查保存位置的旗帜方块是否仍然存在。如果该方块不再是旗帜(例如被爆炸或世界编辑破坏),保护将自动移除。