Java 如何添加一个可以射杀小怪物的魔法?

Java 如何添加一个可以射杀小怪物的魔法?,java,plugins,server,minecraft,bukkit,Java,Plugins,Server,Minecraft,Bukkit,我尝试过许多事件,如OnTack、EntityDeatheEvent、EntityDamageByEntityEvent。这些似乎都不起作用。这可能是因为我写错了代码,下面是我想要的。我添加了一个命令,给你一把钻石剑和我试图添加的附魔,这将是一枪暴徒婴儿已经应用。 代码: 告诉我,如果我;习惯于事件错误,应该选择另一个事件或注册了错误的附魔。(我知道我没有给出注册的代码)你的代码看起来很可靠,乍一看我不知道它可能有什么问题(除非你没有注册事件)。虽然有一个缺陷。 您可能应该检查event.get

我尝试过许多事件,如OnTack、EntityDeatheEvent、EntityDamageByEntityEvent。这些似乎都不起作用。这可能是因为我写错了代码,下面是我想要的。我添加了一个命令,给你一把钻石剑和我试图添加的附魔,这将是一枪暴徒婴儿已经应用。 代码:


告诉我,如果我;习惯于事件错误,应该选择另一个事件或注册了错误的附魔。(我知道我没有给出注册的代码)

你的代码看起来很可靠,乍一看我不知道它可能有什么问题(除非你没有注册事件)。虽然有一个缺陷。 您可能应该检查
event.getDamager()
是否是
Player
的实例,然后再对其进行施放。我还建议使用
ageableEntity.damage(伤害,玩家)
,这样游戏处理它时就好像玩家真的杀死了它一样,而不是突然死亡

我使用了您自己的代码并对其进行了一些更改,并添加了一些注释,这些注释应该可以解释所有内容的用途。这只是假设您的代码真的不起作用的另一种选择

@EventHandler
公共无效OnTack(EntityDamageByEntityEvent事件){
//检查damager是否为玩家且该实体是否可老化
//否则就没有继续下去的意义了
if(Player的event.getDamager()instanceof&event.getEntity()Ageable的instanceof){
Player=(Player)event.getDamager();
Ageable ageableEntity=(Ageable)event.getEntity();
//检查他们是否不是成年人,物品是否具有所需的附魔
//否则就没有继续下去的意义了
如果(!ageableEntity.isAdult()&&player.getInventory().getItemInMainHand().ContainesChanting(孤立附魔器、孤立擦除器)){
//取消事件以自行处理
event.setCancelled(true);
//移除所有药剂效果以防止吸收/再生/抵抗
//或其他药剂来维持实体的生命
ageableEntity.getActivePotionEffects().stream().map(PotionEffect::getType).forEach(ageableEntity::removePotionEffect);
//将他们的健康设置为非常低,但不是零,因为
//玩家不会因为杀了它而得到荣誉
ageableEntity.setHealth(0.5D);
//使玩家伤害该实体,将伤害设置为最大值
//因此,实体必须死亡
AgableEntity.伤害(双倍最大值,玩家);
}
}
}
@EventHandler
public void onAttack(EntityDamageByEntityEvent event) {
    Player player = (Player) event.getDamager();
    Ageable ageableEntity = (Ageable) event.getEntity();
    if (event.getEntity() instanceof Ageable) {
        if (ageableEntity.isAdult() == false) {
            if(player.getInventory().getItemInMainHand().containsEnchantment(OrphanEnchants.ORPHAN_OBLITERATOR)) {
                ageableEntity.setLastDamage(1000);
                ageableEntity.setHealth(0);
            }
        }
    }
    
}