
CorpseJS
CorpseJS是一个Forge 1.20.1集成模组,允许KubeJS脚本创建和自定义Corpse尸体。
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 示例
以下示例演示了完整的工作流程:从死亡事件创建尸体,在创建前取消选定的源,替换或添加物品,将物品分配到随机物品栏槽位,以及移除尸体而不掉落其内容。
// 当僵尸死亡时创建带有初始物品的尸体。
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')
])
})
// 此事件在尸体实体构建之前运行。
CorpseJSEvents.beforeCorpseCreated(event => {
if (event.entityId == 'simpleenemymod:pmcunit') {
event.cancel()
}
})
// 此事件在新的尸体添加到世界后运行。
CorpseJSEvents.corpseCreated(event => {
if (event.sourceEntityId != 'minecraft:zombie') return
// 替换所有现有的尸体内容并使用随机主物品栏槽位。
event.replaceItems([
Item.of('minecraft:diamond_sword'),
Item.of('minecraft:bread', 4)
], true)
// 添加物品而不清除现有内容,同样使用随机槽位。
event.addItems([
Item.of('minecraft:gold_ingot', 2),
Item.of('minecraft:paper')
], true)
// 等效的显式模式 API:
// event.setItems('replace', [Item.of('minecraft:diamond')], true)
// event.setItems('add', [Item.of('minecraft:emerald')], true)
})
// 静默移除尸体,包括其所有存储的物品。
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 许可证分发。
正在加载版本记录…
正在加载评论…
评论在新手盒子客户端中发表,这里同步展示。