MC百科社群

标题: 求助!怎么使用kubejs给自制武器添加杀死怪物掉落其头颅的办法 [打印本页]

作者: Hmoon    时间: 2025-12-2 19:14
标题: 求助!怎么使用kubejs给自制武器添加杀死怪物掉落其头颅的办法
minecraft版本1.20.1,kubejs也是最新,自制的斧子武器,用ai搞来搞去还是没效果,死活不掉落,求大佬给代码怎么写
作者: QQ酱530873    时间: 2025-12-2 23:03
用其附属 LootJS。
作者: Kaze_Fengxi    时间: 2025-12-4 17:39
我是新手
作者: Kaze_Fengxi    时间: 2025-12-4 17:40
Kaze_Fengxi 发表于 2025-12-4 17:39
我是新手

卧槽我开高级模式写那么一大段回复怎么就剩这四个字了,抱歉我重写一下
作者: Kaze_Fengxi    时间: 2025-12-4 17:45
本帖最后由 Kaze_Fengxi 于 2025-12-4 17:46 编辑

不清楚有没有啥漏洞或者更好的写法,不咋会用lootjs所以就用kubejs6原本的实现方式了头颅好像是有head有skull的,所以先const一个对象数组

const mobAndHead = [
    { mob: 'minecraft:skeleton', head: 'minecraft:skeleton_head' },
    { mob: 'minecraft:wither_skeleton', head: 'minecraft:wither_skeleton_head' },
    { mob: 'minecraft:zombie', head: 'minecraft:zombie_head' },
    { mob: 'minecraft:creeper', head: 'minecraft:creeper_head' },
    { mob: 'minecraft:dragon', head: 'minecraft:dragon_head' },
]

然后在实体死亡事件里判断是否是玩家手持指定武器直接打死了指定的怪

EntityEvents.death(event => {
    let entity = event.entity
    let source = event.source.actual
    let type = event.source.getType()
    let item = player.getHandSlots()[0].id
    // 把'minecraft:netherite_sword'换成需要的那个武器
    // 依次判断:直接伤害源是否存在、直接伤害源是否是玩家、被杀死的实体是否在数组中、伤害类型是否是玩家手打、主手手持物品是否是下界合金剑
    if (source && source.isPlayer() && mobAndHead.some(e => entity.getType() == e.mob) && type == 'player' && item == 'minecraft:netherite_sword') {
        let head = mobAndHead.find(e => entity.getType() == e.mob).head
        entity.block.popItem(head)
    }
})

把source.isPlayer()判断去掉也许能让其他实体也兼容效果,不过没试过所以不确定


作者: Hmoon    时间: 2025-12-12 20:56
Kaze_Fengxi 发表于 2025-12-4 17:45
不清楚有没有啥漏洞或者更好的写法,不咋会用lootjs所以就用kubejs6原本的实现方式了头颅好像是有head有sku ...

大佬,不行,测试了效果,没报错但还是没触发
作者: Kaze_Fengxi    时间: 2025-12-12 22:45
Hmoon 发表于 2025-12-12 20:56
大佬,不行,测试了效果,没报错但还是没触发

啊?我这测试的是可行的欸,搞不懂,我想想
是放在server_scripts里的嘛?
有把if判断里的minecraft:nertherite_sword换掉嘛?
如果只是游戏内重载后没弹出报错信息,看看logs/kubejs/server.log里有没有报错?
作者: Hmoon    时间: 2025-12-13 09:07
Kaze_Fengxi 发表于 2025-12-12 22:45
啊?我这测试的是可行的欸,搞不懂,我想想
是放在server_scripts里的嘛?
有把if判断里的minecraft:nert ...

是的,放在服务端里,没报错,换了条件判断也是没有效果
作者: Kaze_Fengxi    时间: 2025-12-13 14:28
Hmoon 发表于 2025-12-13 09:07
是的,放在服务端里,没报错,换了条件判断也是没有效果

搞懂了,变量名忘改了,我又在犯低级错误总之把let item = player.getHandSlots()[0].id的这个player改成source就行了

作者: Hmoon    时间: 2025-12-13 21:40
Kaze_Fengxi 发表于 2025-12-13 14:28
搞懂了,变量名忘改了,我又在犯低级错误总之把let item[/backcolor ...

成功了大佬,十分感谢,ai就是一坨,一直死活弄不出来条件,大佬随便两个代码就解决了,ai还是太有局限性了
作者: Kaze_Fengxi    时间: 2025-12-14 11:07
Hmoon 发表于 2025-12-13 21:40
成功了大佬,十分感谢,ai就是一坨,一直死活弄不出来条件,大佬随便两个代码就解决了,ai还是太有局限性 ...

不敢当不敢当




欢迎光临 MC百科社群 (https://bbs.mcmod.cn/) MC百科|最大的MineCraft中文模组百科