Помогите Как убрать ошибку когда бьёт игрок а не интити?

  • Автор темы Автор темы ItsWay
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.

ItsWay

Активный участник
Пользователь
Баллы
76
Имя в Minecraft
ItsWay
Пишу плагин, набрасал немного кода, надо так что бы отправлялось сообщение игроку когда он бьёт entity, всё работает. Но когда игрок бьёт entity всё ок, а когда какой то entity бьёт игрока выдаёт ошибку, конечно я понял что это иза того что нельзя отправить сообщение. Вот код:

Код:
    @EventHandler
    public void onEntityDamage(EntityDamageByEntityEvent event){
    Player damager = (Player) event.getDamager();
    if(event.getDamager() instanceof Player) {
        LivingEntity damaged = (LivingEntity) event.getEntity();
        damager.sendMessage("hit target " + damaged.getEntityId() + "!");
    }else if(event.getDamager() instanceof Entity) {
        
    }
    }
Это первая версия.
вторая версия:

Код:
    @EventHandler
    public void onEntityDamage(EntityDamageByEntityEvent event){
    Player damager = (Player) event.getDamager();
    if(event.getDamager() instanceof Player) {
        LivingEntity damaged = (LivingEntity) event.getEntity();
        damager.sendMessage("hit target " + damaged.getEntityId() + "!");
    }
    }
Третья версия до того как сделал проверку:

Код:
    @EventHandler
    public void onEntityDamage(EntityDamageByEntityEvent event){
    Player damager = (Player) event.getDamager();
        LivingEntity damaged = (LivingEntity) event.getEntity();
        damager.sendMessage("hit target " + damaged.getEntityId() + "!");
    }
Нечего не изменяет, так же ошибка когда entity бьёт игрока, вот ошибка:
Could not pass event EntityDamageByEntityEvent to CorePo1 v0.1
org.bukkit.event.EventException: null
at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:310) ~[server.jar:3096a-Spigot-9fb885e-af1a232]
at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:70) ~[server.jar:3096a-Spigot-9fb885e-af1a232]
at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:589) ~[server.jar:3096a-Spigot-9fb885e-af1a232]
at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:576) ~[server.jar:3096a-Spigot-9fb885e-af1a232]
at org.bukkit.craftbukkit.v1_16_R3.event.CraftEventFactory.callEvent(CraftEventFactory.java:251) ~[server.jar:3096a-Spigot-9fb885e-af1a232]
at org.bukkit.craftbukkit.v1_16_R3.event.CraftEventFactory.callEntityDamageEvent(CraftEventFactory.java:980) ~[server.jar:3096a-Spigot-9fb885e-af1a232]
at org.bukkit.craftbukkit.v1_16_R3.event.CraftEventFactory.handleEntityDamageEvent(CraftEventFactory.java:867) ~[server.jar:3096a-Spigot-9fb885e-af1a232]
at org.bukkit.craftbukkit.v1_16_R3.event.CraftEventFactory.handleEntityDamageEvent(CraftEventFactory.java:823) ~[server.jar:3096a-Spigot-9fb885e-af1a232]
at org.bukkit.craftbukkit.v1_16_R3.event.CraftEventFactory.handleLivingEntityDamageEvent(CraftEventFactory.java:1012) ~[server.jar:3096a-Spigot-9fb885e-af1a232]
at net.minecraft.server.v1_16_R3.EntityLiving.damageEntity0(EntityLiving.java:1861) ~[server.jar:3096a-Spigot-9fb885e-af1a232]
at net.minecraft.server.v1_16_R3.EntityHuman.damageEntity0(EntityHuman.java:922) ~[server.jar:3096a-Spigot-9fb885e-af1a232]
at net.minecraft.server.v1_16_R3.EntityLiving.damageEntity(EntityLiving.java:1238) ~[server.jar:3096a-Spigot-9fb885e-af1a232]
at net.minecraft.server.v1_16_R3.EntityHuman.damageEntity(EntityHuman.java:839) ~[server.jar:3096a-Spigot-9fb885e-af1a232]
at net.minecraft.server.v1_16_R3.EntityPlayer.damageEntity(EntityPlayer.java:848) ~[server.jar:3096a-Spigot-9fb885e-af1a232]
at net.minecraft.server.v1_16_R3.EntityInsentient.attackEntity(EntityInsentient.java:1547) ~[server.jar:3096a-Spigot-9fb885e-af1a232]
at net.minecraft.server.v1_16_R3.EntityZombie.attackEntity(EntityZombie.java:345) ~[server.jar:3096a-Spigot-9fb885e-af1a232]
at net.minecraft.server.v1_16_R3.PathfinderGoalMeleeAttack.a(SourceFile:142) ~[server.jar:3096a-Spigot-9fb885e-af1a232]
at net.minecraft.server.v1_16_R3.PathfinderGoalMeleeAttack.e(SourceFile:134) ~[server.jar:3096a-Spigot-9fb885e-af1a232]
at net.minecraft.server.v1_16_R3.PathfinderGoalZombieAttack.e(SourceFile:28) ~[server.jar:3096a-Spigot-9fb885e-af1a232]
at net.minecraft.server.v1_16_R3.PathfinderGoalWrapped.e(SourceFile:55) ~[server.jar:3096a-Spigot-9fb885e-af1a232]
at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183) ~[?:?]
at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:179) ~[?:?]
at java.util.Iterator.forEachRemaining(Iterator.java:133) ~[?:?]
at java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1801) ~[?:?]
at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484) ~[?:?]
at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474) ~[?:?]
at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150) ~[?:?]
at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173) ~[?:?]
at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) ~[?:?]
at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:596) ~[?:?]
Что делать?
 
Перед кастом в игрока проверяй event.getDamager()! = null
 
Перед кастом в игрока проверяй event.getDamager()! = null
Я сделал так:

Код:
    @EventHandler
    public void onEntityDamage(EntityDamageByEntityEvent event){
    Player damager = (Player) event.getDamager();
    if(event.getDamager() instanceof Player) {
        if(!(event.getDamager() == null) ) {
            LivingEntity damaged = (LivingEntity) event.getEntity();
            damager.sendMessage("hit target " + damaged.getEntityId() + "!");
        }
    }
    }
 
Такая же ошибка
 
Возьми код, который был изначально, и первой строкой засунь if (e.getDamager() == null) return;
 
Возьми код, который был изначально, и первой строкой засунь if (e.getDamager() == null) return;
вот ошибка такая-же
Could not pass event EntityDamageByEntityEvent to CorePo1 v0.1
org.bukkit.event.EventException: null
at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:310) ~[server.jar:3096a-Spigot-9fb885e-af1a232]
at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:70) ~[server.jar:3096a-Spigot-9fb885e-af1a232]
at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:589) ~[server.jar:3096a-Spigot-9fb885e-af1a232]
at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:576) ~[server.jar:3096a-Spigot-9fb885e-af1a232]
at org.bukkit.craftbukkit.v1_16_R3.event.CraftEventFactory.callEvent(CraftEventFactory.java:251) ~[server.jar:3096a-Spigot-9fb885e-af1a232]
at org.bukkit.craftbukkit.v1_16_R3.event.CraftEventFactory.callEntityDamageEvent(CraftEventFactory.java:980) ~[server.jar:3096a-Spigot-9fb885e-af1a232]
at org.bukkit.craftbukkit.v1_16_R3.event.CraftEventFactory.handleEntityDamageEvent(CraftEventFactory.java:867) ~[server.jar:3096a-Spigot-9fb885e-af1a232]
at org.bukkit.craftbukkit.v1_16_R3.event.CraftEventFactory.handleEntityDamageEvent(CraftEventFactory.java:823) ~[server.jar:3096a-Spigot-9fb885e-af1a232]
at org.bukkit.craftbukkit.v1_16_R3.event.CraftEventFactory.handleLivingEntityDamageEvent(CraftEventFactory.java:1012) ~[server.jar:3096a-Spigot-9fb885e-af1a232]
at net.minecraft.server.v1_16_R3.EntityLiving.damageEntity0(EntityLiving.java:1861) ~[server.jar:3096a-Spigot-9fb885e-af1a232]
at net.minecraft.server.v1_16_R3.EntityHuman.damageEntity0(EntityHuman.java:922) ~[server.jar:3096a-Spigot-9fb885e-af1a232]
at net.minecraft.server.v1_16_R3.EntityLiving.damageEntity(EntityLiving.java:1238) ~[server.jar:3096a-Spigot-9fb885e-af1a232]
at net.minecraft.server.v1_16_R3.EntityHuman.damageEntity(EntityHuman.java:839) ~[server.jar:3096a-Spigot-9fb885e-af1a232]
at net.minecraft.server.v1_16_R3.EntityPlayer.damageEntity(EntityPlayer.java:848) ~[server.jar:3096a-Spigot-9fb885e-af1a232]
at net.minecraft.server.v1_16_R3.EntityInsentient.attackEntity(EntityInsentient.java:1547) ~[server.jar:3096a-Spigot-9fb885e-af1a232]
at net.minecraft.server.v1_16_R3.EntityZombie.attackEntity(EntityZombie.java:345) ~[server.jar:3096a-Spigot-9fb885e-af1a232]
at net.minecraft.server.v1_16_R3.PathfinderGoalMeleeAttack.a(SourceFile:142) ~[server.jar:3096a-Spigot-9fb885e-af1a232]
at net.minecraft.server.v1_16_R3.PathfinderGoalMeleeAttack.e(SourceFile:134) ~[server.jar:3096a-Spigot-9fb885e-af1a232]
at net.minecraft.server.v1_16_R3.PathfinderGoalZombieAttack.e(SourceFile:28) ~[server.jar:3096a-Spigot-9fb885e-af1a232]
at net.minecraft.server.v1_16_R3.PathfinderGoalWrapped.e(SourceFile:55) ~[server.jar:3096a-Spigot-9fb885e-af1a232]

код:

Код:
    public void onEntityDamage(EntityDamageByEntityEvent event){
         if (event.getDamager() == null) return;
    Player damager = (Player) event.getDamager();
        LivingEntity damaged = (LivingEntity) event.getEntity();
        damager.sendMessage("hit target " + damaged.getEntityId() + "!");
    }
Так -же
 
вот ошибка такая-же
Could not pass event EntityDamageByEntityEvent to CorePo1 v0.1
org.bukkit.event.EventException: null
at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:310) ~[server.jar:3096a-Spigot-9fb885e-af1a232]
at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:70) ~[server.jar:3096a-Spigot-9fb885e-af1a232]
at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:589) ~[server.jar:3096a-Spigot-9fb885e-af1a232]
at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:576) ~[server.jar:3096a-Spigot-9fb885e-af1a232]
at org.bukkit.craftbukkit.v1_16_R3.event.CraftEventFactory.callEvent(CraftEventFactory.java:251) ~[server.jar:3096a-Spigot-9fb885e-af1a232]
at org.bukkit.craftbukkit.v1_16_R3.event.CraftEventFactory.callEntityDamageEvent(CraftEventFactory.java:980) ~[server.jar:3096a-Spigot-9fb885e-af1a232]
at org.bukkit.craftbukkit.v1_16_R3.event.CraftEventFactory.handleEntityDamageEvent(CraftEventFactory.java:867) ~[server.jar:3096a-Spigot-9fb885e-af1a232]
at org.bukkit.craftbukkit.v1_16_R3.event.CraftEventFactory.handleEntityDamageEvent(CraftEventFactory.java:823) ~[server.jar:3096a-Spigot-9fb885e-af1a232]
at org.bukkit.craftbukkit.v1_16_R3.event.CraftEventFactory.handleLivingEntityDamageEvent(CraftEventFactory.java:1012) ~[server.jar:3096a-Spigot-9fb885e-af1a232]
at net.minecraft.server.v1_16_R3.EntityLiving.damageEntity0(EntityLiving.java:1861) ~[server.jar:3096a-Spigot-9fb885e-af1a232]
at net.minecraft.server.v1_16_R3.EntityHuman.damageEntity0(EntityHuman.java:922) ~[server.jar:3096a-Spigot-9fb885e-af1a232]
at net.minecraft.server.v1_16_R3.EntityLiving.damageEntity(EntityLiving.java:1238) ~[server.jar:3096a-Spigot-9fb885e-af1a232]
at net.minecraft.server.v1_16_R3.EntityHuman.damageEntity(EntityHuman.java:839) ~[server.jar:3096a-Spigot-9fb885e-af1a232]
at net.minecraft.server.v1_16_R3.EntityPlayer.damageEntity(EntityPlayer.java:848) ~[server.jar:3096a-Spigot-9fb885e-af1a232]
at net.minecraft.server.v1_16_R3.EntityInsentient.attackEntity(EntityInsentient.java:1547) ~[server.jar:3096a-Spigot-9fb885e-af1a232]
at net.minecraft.server.v1_16_R3.EntityZombie.attackEntity(EntityZombie.java:345) ~[server.jar:3096a-Spigot-9fb885e-af1a232]
at net.minecraft.server.v1_16_R3.PathfinderGoalMeleeAttack.a(SourceFile:142) ~[server.jar:3096a-Spigot-9fb885e-af1a232]
at net.minecraft.server.v1_16_R3.PathfinderGoalMeleeAttack.e(SourceFile:134) ~[server.jar:3096a-Spigot-9fb885e-af1a232]
at net.minecraft.server.v1_16_R3.PathfinderGoalZombieAttack.e(SourceFile:28) ~[server.jar:3096a-Spigot-9fb885e-af1a232]
at net.minecraft.server.v1_16_R3.PathfinderGoalWrapped.e(SourceFile:55) ~[server.jar:3096a-Spigot-9fb885e-af1a232]

код:

Код:
    public void onEntityDamage(EntityDamageByEntityEvent event){
         if (event.getDamager() == null) return;
    Player damager = (Player) event.getDamager();
        LivingEntity damaged = (LivingEntity) event.getEntity();
        damager.sendMessage("hit target " + damaged.getEntityId() + "!");
    }
Так -же
И да, плагин и сервер на 1.16.5
 
Сори, я, как обычно, лезу, не прочитав тему
С энтити всё не ок, потому что ты пытаешься кастить его в игрока

Код:
@EventHandler
public void myMethod(EntityDamageByEntityEvent e) {
  Entity ent = e.getDamager();
  if (ent instanceof Player) {
    //тут делаем что-то, если ударил игрок
  }
  else {
    //а тут - если ударил не игрок
  }
}

п.с. прикладывай в следующий раз полный лог ошибки, а то читать текст в теме полностью не прикалывает
 
Сори, я, как обычно, лезу, не прочитав тему
С энтити всё не ок, потому что ты пытаешься кастить его в игрока

Код:
@EventHandler
public void myMethod(EntityDamageByEntityEvent e) {
  Entity ent = e.getDamager();
  if (ent instanceof Player) {
    //тут делаем что-то, если ударил игрок
  }
  else {
    //а тут - если ударил не игрок
  }
}

п.с. прикладывай в следующий раз полный лог ошибки, а то читать текст в теме полностью не прикалывает
Ок, ща чекну, спасибо
 
Сори, я, как обычно, лезу, не прочитав тему
С энтити всё не ок, потому что ты пытаешься кастить его в игрока

Код:
@EventHandler
public void myMethod(EntityDamageByEntityEvent e) {
  Entity ent = e.getDamager();
  if (ent instanceof Player) {
    //тут делаем что-то, если ударил игрок
  }
  else {
    //а тут - если ударил не игрок
  }
}

п.с. прикладывай в следующий раз полный лог ошибки, а то читать текст в теме полностью не прикалывает
Большое тебе спасибо. Заработало, ошибок нет, удачи тебе. Тема закрыта.
 
Статус
Закрыто для дальнейших ответов.
Назад
Верх