Luohuayu / CatServer

高性能和高兼容性的1.12.2/1.16.5/1.18.2版本Forge+Bukkit+Spigot服务端 (A high performance and high compatibility 1.12.2/1.16.5/1.18.2 version Forge+Bukkit+Spigot server)
https://catmc.org
GNU Lesser General Public License v3.0
1.94k stars 204 forks source link

[1.18.2] 机械动力机械手击杀生物后无法触发 EntityDeathEvent(它该触发吗? #845

Closed i493052739 closed 6 months ago

i493052739 commented 6 months ago

运行环境

Minecraft版本(1.12.2/1.16.5/1.18.2): 1.18.2 构建版本(从/version指令获取): bc64e1fc 相关模组/插件: 机械动力

描述这个BUG

机械动力机械手击杀生物后无法触发 EntityDeathEvent

先前的cat版本:6c3f596 没有这个问题 最新的cat版本:bc64e1fc 存在这个问题 两次实验的 Create 机械动力模组均使用最新版 0.5.1f 进行的测试

旧版 cat:6c3f596 实验结果:

截图20231224134754

新版 cat:bc64e1fc 实验结果:

截图20231224134811

实验代码(插件):

    @EventHandler
    public void onMobSpawn(EntitySpawnEvent e) {
        Player p = TestPlugin.getInstance().getServer().getPlayer("Dev");
        if (p != null && e.getEntity().getName().equals("Silverfish")) {
            p.sendMessage("SPAWN: " + e.getEntity().getName());
        }
    }
    @EventHandler
    public void onMobDespawn(EntityDeathEvent e) {
        Player p = TestPlugin.getInstance().getServer().getPlayer("Dev");
        if (p != null) {
            p.sendMessage("DEATH: " + e.getEntity().getName());
        }
    }

导致的问题

机械手击杀生物后,无法触发 EntityDeathEvent,也未生成经验球

复现方法

如上图,放置机械动力三个物品:

Kotori0629 commented 6 months ago

masaka... 机械手能是ServerPlayer(?

i493052739 commented 6 months ago

masaka... 机械手能是ServerPlayer(?

我看机械手对应的类是这个:

package com.simibubi.create.content.kinetics.deployer;
...
@EventBusSubscriber
public class DeployerFakePlayer extends FakePlayer {
    ...
}

父类是:

package net.minecraftforge.common.util;
...
public class FakePlayer extends ServerPlayer {
    ...
}

看起来的确是 ServerPlayer

Kotori0629 commented 6 months ago

masaka... 机械手能是ServerPlayer(?

我看机械手对应的类是这个:

package com.simibubi.create.content.kinetics.deployer;
...
@EventBusSubscriber
public class DeployerFakePlayer extends FakePlayer {
    ...
}

父类是:

package net.minecraftforge.common.util;
...
public class FakePlayer extends ServerPlayer {
    ...
}

看起来的确是 ServerPlayer

好好好

Kotori0629 commented 6 months ago

我又做了几遍测试 机械手杀死生物 真的会掉落经验值吗..

Kotori0629 commented 6 months ago

留存...... 再修就不礼貌了

i493052739 commented 6 months ago

牛的