|
|
本帖最后由 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()判断去掉也许能让其他实体也兼容效果,不过没试过所以不确定
|
|