介绍
CorpseJS
CorpseJS 将 Corpse 模组与 KubeJS 连接起来,提供一种简单且可脚本化的方式来创建和自定义尸体实体。
Simple Enemy 和 CustomNPCs 实体不会自动生成尸体。脚本通过 CorpseJS API 明确指定何时生成尸体。当来源实体是受支持的 Simple Enemy 或 CustomNPC 人形实体时,CorpseJS 会自动选择对应的尸体模型。其他实体则使用通用尸体渲染器,该渲染器会复用来源实体已注册的渲染器。
功能
- 通过 Java API 或 KubeJS 为任意服务端实体创建尸体。
- 创建尸体时添加初始物品。
- 创建后使用
replaceItems、addItems或setItems自定义尸体内容。 - 在尸体实体构造前取消尸体创建。
- 使用
sourceEntity、sourceEntityId和sourcePersistentData识别原始实体。 - 在尸体上保留来源实体的 KubeJS
persistentData。 - 为 Simple Enemy 单位和受支持的 CustomNPC 人形实体使用专用模型。
- 在同一游戏刻创建尸体时,防止正常死亡掉落物重复生成。
- 移除尸体,不掉落或返还其中的物品。
KubeJS API
KubeJS 为可选前置。安装 KubeJS 后,CorpseJS 会提供全局 CorpseJS 绑定:
EntityEvents.death(event => {
if (event.entity.type == 'minecraft:zombie') {
const corpse = CorpseJS.spawn(event.entity, [
Item.of('minecraft:rotten_flesh', 3),
Item.of('minecraft:iron_ingot')
])
}
})
可用方法:
CorpseJS.spawn(entity)创建一具空尸体。CorpseJS.spawn(entity, items)使用提供的物品创建尸体。CorpseJS.removeCorpse(corpse)静默移除尸体并清空其内容。CorpseJS.remove(corpse)是removeCorpse的简写别名。
该 API 仅限服务端使用。创建成功时会返回新尸体实体;如果创建失败、来源实体位于客户端,或当前游戏刻内已为该来源实体创建过尸体,则返回 null。
KubeJS 完整示例
以下示例演示完整工作流程:从死亡事件创建尸体、在创建前取消指定来源的尸体生成、替换或添加物品、将物品分配到随机背包栏位,以及移除尸体且不掉落其中的物品。
// Create a corpse with initial items when a zombie dies.
EntityEvents.death(event => {
if (event.entity.type != 'minecraft:zombie') return
CorpseJS.spawn(event.entity, [
Item.of('minecraft:rotten_flesh', 3),
Item.of('minecraft:iron_ingot')
])
})
// This event runs before the corpse entity is constructed.
CorpseJSEvents.beforeCorpseCreated(event => {
if (event.entityId == 'simpleenemymod:pmcunit') {
event.cancel()
}
})
// This event runs after a new corpse has been added to the world.
CorpseJSEvents.corpseCreated(event => {
if (event.sourceEntityId != 'minecraft:zombie') return
// Replace all existing corpse contents and use random main-inventory slots.
event.replaceItems([
Item.of('minecraft:diamond_sword'),
Item.of('minecraft:bread', 4)
], true)
// Add items without clearing existing contents, also using random slots.
event.addItems([
Item.of('minecraft:gold_ingot', 2),
Item.of('minecraft:paper')
], true)
// Equivalent explicit mode API:
// event.setItems('replace', [Item.of('minecraft:diamond')], true)
// event.setItems('add', [Item.of('minecraft:emerald')], true)
})
// Remove a corpse silently, including all of its stored items.
CorpseJSEvents.corpseCreated(event => {
if (event.sourceEntityId == 'minecraft:zombie' && Math.random() < 0.1) {
CorpseJS.removeCorpse(event.entity)
}
})
replaceItems会在放入新物品前清空主物品栏、盔甲栏、副手、额外物品栏和装备栏。addItems 会保留现有物品;超出容量的物品会放入额外物品页面。将 true 作为第二个参数传入,即可随机排列主物品栏槽位。setItems 接受 replace 或 add 模式,并支持相同的随机槽位参数。
KubeJS 事件
CorpseJS 提供一个全局事件组:CorpseJSEvents。
CorpseJSEvents.beforeCorpseCreated(event => {
if (event.entityId == 'simpleenemymod:pmcunit') {
event.cancel()
}
})
CorpseJSEvents.corpseCreated(event => {
if (event.sourceEntityId == 'minecraft:zombie') {
event.addItems(Item.of('minecraft:paper'))
}
})
beforeCorpseCreated 会在尸体实体创建前运行,并可取消创建。corpseCreated 会在新创建的尸体加入世界后运行一次,并可修改尸体内容。
在 beforeCorpseCreated 中使用 event.entityId,并在 corpseCreated 中使用 event.sourceEntityId,即可针对特定来源实体类型应用规则。
支持的模型
- Simple Enemy 实体使用对应的 Simple Enemy 单位模型。
- 受支持的 CustomNPC 人形实体使用对应的 CustomNPC 模型。
- 玩家使用玩家尸体模型。
- 其他实体则通过通用尸体模型调用其已注册的实体渲染器。
运行要求
- Minecraft 1.20.1
- Minecraft Forge 47+
- Corpse,用于提供尸体实体和物品栏实现
- KubeJS Forge 2001.6 或更新版本;仅在需要 KubeJS 脚本支持时安装
- Simple Enemy 和 CustomNPCs 为可选的兼容集成
CorpseJS 采用 LGPL-3.0 许可证发布。
常见问题
CorpseJS 支持哪些 Minecraft 版本?
CorpseJS 支持 Minecraft Java 版 1.20.1,可用的加载器:Forge。下载时注意选择和你游戏版本一致的文件。
CorpseJS 怎么安装?
先用 PCL2 或 HMCL 启动器安装对应版本的 Forge,再把下载的 .jar 文件放进游戏目录的 mods 文件夹,重新启动游戏即可。开启了版本隔离的,mods 文件夹在 versions/版本名 下面。
DxEVIL 的其他作品
查看全部 →puffish apothic attributes fix
修复 Apothic Attributes 界面中 Pufferfish 的动态属性,并为 Pufferfish 的技能属性修正显示对应的技能图标。
Q Shop
适用于 Forge 1.20.1、NeoForge 1.21.1 和 NeoForge 26.1.2 的灵活服务器商店,支持买卖、以物易物和命令交易、自定义货币、交易限制、游戏内编辑,以及面向构建者的 KubeJS API。
Advanced Mob Leveling
非官方的 Auto Leveling 续作,支持基于公式的属性、通过 KubeJS 控制等级、兼容 LootJS,并改进了配置格式。
Q Backpack
一款独立的 Curios 背包模组,提供四个升级等级、集成式物品栏界面、自动拾取,以及受 Quark 启发的整理功能。
评论
登录后评论和评分