Misaka。
onEvent("entity.death", (event) => {
    if (event.entity.type == "minecraft:skeleton") {
        if (event.entity.attackingEntity == null ||
        event.entity.attackingEntity.type != "minecraft:player"){return;
        }
        //event.server.tell(["种类: ", `${event.entity.type}`])
        //event.server.tell(["实体: ", `${event.entity.attackingEntity}`])
        //event.server.tell(["物品: ", `${event.entity.attackingEntity.mainHandItem.id}`])
        //event.server.tell(["攻击者种类: ", `${event.entity.attackingEntity.type}`])
        //event.server.tell(["群系: ", `${event.entity.block.biomeId}`])
        if (event.entity.attackingEntity == "zfms4188" &&
        event.entity.block.biomeId == "desolation:charred_forest") {
            //删除掉落物并生成一只僵尸

        }
    }
});
不知道咋实现 “删除掉落物并生成一只僵尸” 有没有什么例子鸭



Wudji
手机不方便打(
1、可以将骷髅的y坐标设为基岩层以下这样就能实现移除掉落物了(大概可以,没试过)
2、可以使用lootjs(或者直接用kubejs自带的战利品表判断)修改骷髅掉落条件
3、生成实体可以用runCommandSilent()或者spawn(),具体看签名档教程

Wudji
本帖最后由 Wudji 于 2022-5-22 23:37 编辑

if (event.entity.attackingEntity == "zfms4188" &&
      event.entity.block.biomeId == "desolation:charred_forest") {
            event.entity.y = -100
event.world.createEntity('minecraft:zombie').setPosition(event.entity.x, event.entity.y, event.entity.z).spawn()
        }改了下,我猜现在应该能正常生成僵尸了

Misaka。
Wudji 发表于 2022-5-22 23:25
手机不方便打(
1、可以将骷髅的y坐标设为基岩层以下这样就能实现移除掉落物了(大概可以,没试过)
2、可 ...

第一条可以

Misaka。
Wudji 发表于 2022-5-22 23:34
if (event.entity.attackingEntity == "zfms4188" &&
      event.entity.block.biomeId == "desolation:ch ...

if (event.entity.attackingEntity == "zfms4188" &&
        event.entity.block.biomeId == "desolation:charred_forest") {
            //删除掉落物并生成一只僵尸
            const entity = event.world.createEntity("minecraft:zombie");
            entity.setPosition(event.entity.x, event.entity.y, event.entity.z);
            entity.spawn();
            //event.world.createEntity('minecraft:zombie').setPosition(event.entity.x, event.entity.y, event.entity.z).spawn()
            event.entity.y = -100
        }
我调了一下顺序,
按照教程说的可以生成并把骷髅传送下去
使用刚刚写的哪个不能生成僵尸

Misaka。
Wudji 发表于 2022-5-22 23:34
if (event.entity.attackingEntity == "zfms4188" &&
      event.entity.block.biomeId == "desolation:ch ...
Error occurred while handling event 'entity.death': TypeError: Cannot call method "spawn" of undefined (server_scripts:cs.js#17)
报错是这个 怪耶

Misaka。
@Wudji
好喃 不过按照教程那样写是可以正常生成的
不过倒是挺想知道lootJS应该怎样实现 XD

Wudji

  1. onEvent("lootjs", (event) => {
  2.     event
  3.         .addEntityLootModifier("minecraft:skeleton")
  4.         .and((and)=>{// 叠加多个条件,同时为真时通过
  5.             and.matchDirectKiller((e) => {
  6.                 e.anyType == "minecraft:player"// 判断击杀实体类型为玩家
  7.             }).biome("minecraft:plains")// 判断群系
  8.         })
  9.         // .playerPredicate((p) => player.name == "zfms4188")// 该行匹配玩家id
  10.         .thenModify(Ingredient.getAll(), (c) =>{
  11.             return item.empty;
  12.         })
  13. });
复制代码

无敌三脚猫

因为setPosition的返回值是void(这很正常),15.1那边有写
如果你想在能看见尸体的情况下消除掉落物,除了修改战利品表,还可以用event.entity.mergeFullNBT('{DeathLootTable:"aaa"}')
如果还要消除可能掉落的装备,那就写
event.entity.mergeFullNBT('{DeathLootTable:"aaa",HandDropChances:[0f,0f],ArmorDropChances:[0f,0f,0f,0f]}')