- 版权类型
- 原创
- 语言支持
- 中文(繁体)
- 前置组件
- LL3:https://github.com/LiteLDev/LeviLamina
LSE-quickjs:https://github.com/LiteLDev/LegacyScriptEngine
- 适配版本(基岩)
- 26.x
本插件现已进入公测阶段
插件说明:不想开死亡不掉落,但是又不想完全掉落,还想对玩家物品有个保障,墓碑就是个很好的选择
此插件是我第一次尝试将 LSE 与 AddOn 的完美融合
也是我另一个墓碑插件的完全重构版本:B-Tombstone(已停止维护)
与 B-Tombstone 不同的是,B-Grave采用的是LSE插件+Addon自定义方块和自定义实体的结合,墓碑实体用于存储玩家死亡时背包内物品以及显示悬浮字效果,墓碑方块用于视觉化墓碑
本插件无需第三方前置,仅需LL和LSE即可运行,本插件开发环境:BDS1.21.93,LL1.4.1,LSE0.13.1
玩家死亡时一般情况下会查找死亡位置为中心8半径球体周围范围内的可用空气方块作为预生成墓碑位置
已知问题:
1. 末影龙破坏墓碑,因为末影龙破坏不属于爆炸,而是直接吞方块,即使是addon方块貌似也无法做到防末影龙破坏,暂时只能靠主岛不生成墓碑来避免,等待LSE添加新的事件后再完善这个问题
2. 凋灵破坏墓碑,因为凋灵二阶段冲刺不属于爆炸,而是直接吞方块,即使是addon方块貌似也无法做到防凋灵破坏
以上两个问题如果遇到请直接使用指令/grave clean来使其强制爆装备
[MD] 待办: > Version **2.0.0-release** - [ ] 跨维度传送时价格翻倍时,翻多少倍支持配置文件自定义(不同维度传送到不同维度时翻倍不同) - [ ] 将 allowChangeDimTp、tpGraveConsumesKey、dropGraveBlock 移动到 dimensionConfig 中 - [ ] 设置墓碑实体的名称增加生成和到期时间显示(不推荐,服重启后时间可能已过期但被重新计时了所以显示的时间不准所以还要写个自动更新墓碑实体名称的逻辑,更麻烦了) - [ ] 重构墓碑计时管理系统:墓碑的生成和创建时间添加到墓碑实体的tag中,修改计时管理系统的逻辑,连带需要修改获取玩家xuid的方式,解决 v1.9.4-dev中第5条的问题 - [ ] 封装并导出坐标墓碑判断API - [ ] 死亡事件性能监控模块 - [ ] 配置文件扩展自定义项 - [ ] 部分调试日志改为colorLog - [ ] 增加在 data.xuid2name(xuid) 返回null时的判断 - [ ] 增加对于 graveEntity 的世界高度判断(不同维度最低和最高Y轴) - [ ] 清理无用代码和函数 - [ ] 用 graveEntity.kill() 方法 代替 dropItemsFromGraveEntity 函数(不推荐) - [ ] 全功能集成测试 注意:/grave back 命令 传送至墓碑需要消耗的经济的计算方法需要注意以下几点:(可能需要优化) 1. 如果玩家死在下界那么所需要消耗的经济应该是:如果玩家在主世界那么先把玩家当前位置转换为下界坐标(xyz都除以8)并向下取整,再计算转换后的坐标距离玩家在下界死亡时的坐标的距离并向下取整最后再*8(翻多少倍自定义,默认8) 2. 如果玩家死在下界时的坐标和玩家在主世界时的坐标一样,直接计算距离的话,距离为0?翻倍还是0?应该改成主世界直接计算,下界换算坐标后翻8倍(翻多少倍自定义,默认8),末地直接以坐标绝对值计算(翻多少倍自定义) [/MD]
配置文件:"./plugins/B-Grave/config/graveConfig.json" 无需重启服务器,即改即生效,不要使用鸡屎本编辑json文件,推荐使用vscode,编辑完记得保存,不建议不懂json的腐竹自己乱改一通,本插件不建议零基础的开服小白使用
JSON:
{
"whiteListItems": [ // 物品白名单列表
"minecraft:elytra",
"minecraft:firework_rocket",
"ed:ball",
"ed:ball_1",
"minecraft:bundle",
"minecraft:white_bundle",
"minecraft:light_gray_bundle",
"minecraft:gray_bundle",
"minecraft:black_bundle",
"minecraft:brown_bundle",
"minecraft:red_bundle",
"minecraft:orange_bundle",
"minecraft:yellow_bundle",
"minecraft:lime_bundle",
"minecraft:green_bundle",
"minecraft:cyan_bundle",
"minecraft:light_blue_bundle",
"minecraft:blue_bundle",
"minecraft:purple_bundle",
"minecraft:magenta_bundle",
"minecraft:pink_bundle"
],
"admins": [ // 墓碑管理员玩家名列表,墓碑管理员可以无需钥匙打开任何人的墓碑
"Steve",
"Alex"
],
"searchAvailableSpaceMode": "sphere", // 查找以玩家死亡位置为中心一定范围内的可用空间,支持 sphere 球体 | cube 矩形体
"searchAvailableSpaceRadius": 8, // 查找以玩家死亡位置为中心指定半径的球体或矩形体的范围内的可用空间,推荐值 5 ~ 10,不建议过小或过大
"effectiveDuration": 20, // 墓碑有效时间,超过这个时间墓碑自动销毁并生成掉落物,设置为-1则墓碑永远不会被自动清理,单位:分钟,推荐值:5 ~ 30,不建议过小或过大
"allowChangeDimTp": true, // 手持钥匙传送至墓碑时允许跨维度传送
"tpGraveConsumesKey": false, // grave back 后是否消耗钥匙
"dropGraveBlock": true, // 开启墓碑后是否掉落墓碑方块
"economicConfig": { // 经济系统
"type": "llmoney", // 经济类型 ,支持 llmoney | scoreboard
"scoreboardName": "money", // 计分板名称,仅在 type 为 scoreboard 情况下生效
"tpGraveNeedMoney": true, // grave back 是否需要经济
"tpGravePrice": 10, // // grave back 需要的经济,当 randomNeedMoney 和 needMoneyUsePlayerDeathCount和needMoneyUsePlayerDistanceToGrave 都为 false 时生效
"randomNeedMoney": false, // grave back 需要的经济是否随机
"needMoneyRandomRange": [1, 100], // grave back 需要的经济的随机范围,仅在randomNeedMoney为true时生效
"needMoneyUsePlayerDeathCount": false, // grave back 需要的经济是否使用玩家死亡榜
"deathCountScoreboard": "deathcount", // 死亡榜计分板名称,仅在needMoneyUsePlayerDeathCount为true时生效
"needMoneyUsePlayerDistanceToGrave": true, // grave back 需要的经济是否使用玩家到墓碑的距离
"doubleThePriceWhenAllowChangeDimTp": true, // 跨维度传送时是否价格翻2倍
"dimensionConfig": { // 维度配置,支持自定义维度
"over_world": { // 维度标准类型名
"dimid": 0, // 维度id
"dim": "主世界", // 维度名称
"height": { // 维度可用高度
"minY": -64, // 维度最小高度
"maxY": 320 // 维度最大高度
},
"generateGrave": true,
"allowUseKeyTpToGrave": true,
"dropXpOrb": true,
"dropExpPercent": 30
},
"the_nether": {
"dimid": 1,
"dim": "下界",
"height": {
"minY": 0,
"maxY": 128
},
"generateGrave": true,
"allowUseKeyTpToGrave": true,
"dropXpOrb": true,
"dropExpPercent": 30
},
"the_end": {
"dimid": 2,
"dim": "末地",
"height": {
"minY": 0,
"maxY": 256
},
"generateGrave": true,
"allowUseKeyTpToGrave": true,
"dropXpOrb": true,
"dropExpPercent": 30
}
}
}
}
针对以下几种不同死亡位置做了单独处理:
1. 当玩家死在海洋里:墓碑会生成在海平面之上
2. 当玩家死在岩浆湖里:墓碑周围会被岩浆块包裹住(有待优化,可能会刷岩浆块?)
3. 当玩家死在主世界建筑高度之上:不会生成墓碑,也不会掉落物品
4. 当玩家死在主世界建筑高度之下(掉入虚空):不会生成墓碑,也不会掉落物品
5. 当玩家死在下界建筑高度之上(基岩层上方):不会生成墓碑,也不会掉落物品
6. 当玩家死在下界建筑高度之下(掉入虚空):不会生成墓碑,也不会掉落物品
7. 当玩家死在末地建筑高度之上:不会生成墓碑,也不会掉落物品
8. 当玩家在末地虚空死亡会在Y=1处生成3*3的平台,墓碑会生成平台中心上方
9. 当玩家死在墙体内窒息而亡时:不会生成墓碑,物品会掉落在死亡原位(可能会被方块墙挤到最上面去?)
此插件目前已经是正式版本,可以用于生产环境,如果遇到bug请及时反馈(私信、讨论区、加我QQ、提交GitHub iuuses都可以)
控制台输出插件加载成功信息图例:
[MD]
## [2.0.1-release] - 2026-08-19
### Added
- 新增 `/grave drop` 命令(玩家强制使自己的所有已加载墓碑掉落其物品)
## [2.0.0-release] - 2026-06-23
### Added
- 禁止末影人搬运墓碑方块
### Fixed
- 修复手持钥匙传送至墓碑时消耗的经济不正确问题
### Changed
- 优化玩家死亡在末地主岛时墓碑避免被末影龙破坏的问题,现在在末地主岛范围内死亡时不会掉落物品和生成墓碑
## [1.9.9-beta] - 2025-9-16
### Fixed
- 修复当未找到可用空间时未清除背包的问题
## [1.9.8-beta] - 2025-9-5
### Fixed
- 修复当设置掉落经验但掉落比例为0时仍然扣除经验并且依然生成经验球导致的刷经验问题
## [1.9.7-beta] - 2025-7-30
### Changed
- 在 `onPlayerDie` 事件监听内增加 try catch
- 在玩家死在末地主岛范围内时不生成墓碑也不掉落物品(暂时解决末影龙破坏墓碑问题)
## [1.9.6-beta] - 2025-7-27
### Changed
- 在执行 `grave clean` 命令时打印信息增加清理序号、墓碑位置和归属人详细信息
- 在执行 `grave query` 命令时普通玩家只能查询自己的墓碑、管理员和控制台可以查询所有玩家墓碑
## [1.9.5-beta] - 2025-7-26
### Added
- 完成 `/grave back` 命令(支持消耗钥匙/金币、跨维度传送等配置)
- 完成 `/grave query` 命令(查询已加载墓碑数据)
- 玩家死亡是否生成墓碑、死亡是否掉落经验、经验掉落比例、钥匙传送功能支持多维度独立配置
- 硬编码的DIMIDS常量修改为动态生成维度名称到ID的映射
### Fixed
- 修复在控制台执行命令 `grave clean` 和 `grave reload` 时引发的报错
## [1.9.4-dev] - 2025-7-26
### Added
- 玩家破坏墓碑后从计时管理系统自动移除
- 墓碑被清理时添加清理源记录(系统/管理员)
- `/grave clean` 命令实现
### Changed
- 根据配置文件启用/禁用墓碑有效期检查和自动清理
- 优化(简化)部分核心代码逻辑
### Fixed
- 修复计时系统初始化问题(自动管理所有已加载墓碑实体)
- 解决新增墓碑实体无法加入计时系统的问题
## [1.9.3-dev] - 2025-7-25
### Added
- 玩家/管理员开启墓碑时添加控制台日志记录
- 墓碑清理时添加控制台操作日志
### Changed
- 优化 `mc.getEntities` 参数处理逻辑
- 死亡高度超出维度限制时不再生成墓碑(启用死亡不掉落)
## [1.9.2-dev] - 2025-7-24
### Added
- 注册 `/grave reload` 命令(管理员热重载配置)
- 注册 `/grave gg` 命令(管理员模拟玩家死亡)
- 注册 `/grave back` 命令(玩家消耗钥匙+金币传送)
- 注册 `/grave clean` 命令(管理员清理所有墓碑)
- 注册 `/grave query` 命令(管理员/玩家查询墓碑数据)
## [1.9.1-dev] - 2025-7-23
### Added
- `getItemLockMode` 函数实现
- `getItemIsKeepOnDeath` 函数实现
### Changed
- 玩家死亡时保留具有"死亡不掉落"和"锁定模式"的物品
- 具有特殊标签的物品不再存入墓碑
## [1.9.0] - 2025-7-22
### Added
- `onServerStarted` 事件中实现钥匙检测逻辑
- `breakGrave` 函数核心实现
- `searchAvailableSpace` 函数(支持虚空/海洋/岩浆湖检测)
- 墓碑实体防爆机制(Addon实现)
- 墓碑方块防爆机制(Addon实现)
- 墓碑防推机制(基岩原生特性,需开启实验玩法中的`即将推出的创作者功能`选项 或者将存档nbt内实验性标签内添加`upcoming_creator_features`字节型标签并设置为1)
- 墓碑防吸机制(物品存储在实体内部,无法被吸出)
### Fixed
- 修复钥匙持有者正常破坏墓碑的权限验证
[/MD]