Помогите Не работает ивент на Damage

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

Sergeo

Активный участник
Пользователь
Баллы
76
Имя в Minecraft
Solomka
Делаю плагин на "админский лук". Он будет выполнять команды от имени консоли, но ничего не работает :<. Не могу понять из-за чего (ошибок нет... Ни при выстреле и т.д)

код
Код:
package bow.main;

import java.io.File;

import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.entity.EntityDamageByEntityEvent;
import org.bukkit.plugin.java.JavaPlugin;

public class SecretBow extends JavaPlugin implements Listener {
    public void onEnable() {
        getLogger().info("SecretBow is enable");
        File config = new File(getDataFolder() + File.separator + "config.yml");
        if (!config.exists()) {
            getLogger().info("Creating new file config...");
            getConfig().options().copyDefaults(true);
            saveDefaultConfig();
        }
    }

    public void onDisable() {
        getLogger().info("SecretBow is disable");
    }

    @EventHandler

    public void onArrowHit(EntityDamageByEntityEvent event) {

        if (!(event.getEntity() instanceof Player))
            return;

        if (!(event.getDamager() instanceof Player))
            return;

        Player target = (Player) event.getEntity();
        Player damager = (Player) event.getDamager();

        Bukkit.dispatchCommand(Bukkit.getConsoleSender(), getConfig().getString("commands.id") + target.getName());
        damager.sendMessage("Вы успешно выполнили команду " + getConfig().getString("commands.id") + " над игроком "
                + target.getName());

    }
}


конфиг

Код:
commands:
  id: op

Надеюсь на помощь
 
Последнее редактирование:
event.getdamager.getshooter instanceof Player
 
Делаю плагин на "админский лук". Он будет выполнять команды от имени консоли, но ничего не работает :<. Не могу понять из-за чего (ошибок нет... Ни при выстреле и т.д)

код
Код:
package bow.main;

import java.io.File;

import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.entity.EntityDamageByEntityEvent;
import org.bukkit.plugin.java.JavaPlugin;

public class SecretBow extends JavaPlugin implements Listener {
    public void onEnable() {
        getLogger().info("SecretBow is enable");
        File config = new File(getDataFolder() + File.separator + "config.yml");
        if (!config.exists()) {
            getLogger().info("Creating new file config...");
            getConfig().options().copyDefaults(true);
            saveDefaultConfig();
        }
    }

    public void onDisable() {
        getLogger().info("SecretBow is disable");
    }

    @EventHandler

    public void onArrowHit(EntityDamageByEntityEvent event) {

        if (!(event.getEntity() instanceof Player))
            return;

        if (!(event.getDamager() instanceof Player))
            return;

        Player target = (Player) event.getEntity();
        Player damager = (Player) event.getDamager();

        Bukkit.dispatchCommand(Bukkit.getConsoleSender(), getConfig().getString("commands.id") + target.getName());
        damager.sendMessage("Вы успешно выполнили команду " + getConfig().getString("commands.id") + " над игроком "
                + target.getName());

    }
}


конфиг

Код:
commands:
  id: op

Надеюсь на помощь
Боже, когда вы научитесь читать или хотя бы гуглить этот вопрос. Изо дня в день глупые вопросы. Ты не зарегистрировал эвент. Вставь эту
PHP:
Bukkit.getPluginManager().registerEvents(this, this);
строчку в свой метод onEnable()
 
А, он ивент не зарегистрировал
Если не ошибаюсь, getdamager вернёт стрелу, а не игрока, а вот getdamager.getshooter - того, кто стрелу запустил
 
Боже, когда вы научитесь читать или хотя бы гуглить этот вопрос. Изо дня в день глупые вопросы. Ты не зарегистрировал эвент. Вставь эту
PHP:
Bukkit.getPluginManager().registerEvents(this, this);
строчку в свой метод onEnable()
Теперь плагин работает :>, но ошибка при выстреле
Код:
[10:09:39 ERROR]: Could not pass event EntityDamageByEntityEvent to AdminBow v1.0
org.bukkit.event.EventException: null
        at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:306) ~[spigot-1_12_2.jar:git-Spigot-dcd1643-e60fc34]
        at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) ~[spigot-1_12_2.jar:git-Spigot-dcd1643-e60fc34]
        at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:500) [spigot-1_12_2.jar:git-Spigot-dcd1643-e60fc34]
        at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:485) [spigot-1_12_2.jar:git-Spigot-dcd1643-e60fc34]
        at org.bukkit.craftbukkit.v1_12_R1.event.CraftEventFactory.callEvent(CraftEventFactory.java:93) [spigot-1_12_2.jar:git-Spigot-dcd1643-e60fc34]
        at org.bukkit.craftbukkit.v1_12_R1.event.CraftEventFactory.callEntityDamageEvent(CraftEventFactory.java:580) [spigot-1_12_2.jar:git-Spigot-dcd1643-e60fc34]
        at org.bukkit.craftbukkit.v1_12_R1.event.CraftEventFactory.handleEntityDamageEvent(CraftEventFactory.java:483) [spigot-1_12_2.jar:git-Spigot-dcd1643-e60fc34]
        at org.bukkit.craftbukkit.v1_12_R1.event.CraftEventFactory.handleLivingEntityDamageEvent(CraftEventFactory.java:612) [spigot-1_12_2.jar:git-Spigot-dcd1643-e60fc34]
        at net.minecraft.server.v1_12_R1.EntityLiving.damageEntity0(EntityLiving.java:1346) [spigot-1_12_2.jar:git-Spigot-dcd1643-e60fc34]
        at net.minecraft.server.v1_12_R1.EntityHuman.damageEntity0(EntityHuman.java:846) [spigot-1_12_2.jar:git-Spigot-dcd1643-e60fc34]
        at net.minecraft.server.v1_12_R1.EntityLiving.damageEntity(EntityLiving.java:868) [spigot-1_12_2.jar:git-Spigot-dcd1643-e60fc34]
        at net.minecraft.server.v1_12_R1.EntityHuman.damageEntity(EntityHuman.java:759) [spigot-1_12_2.jar:git-Spigot-dcd1643-e60fc34]
        at net.minecraft.server.v1_12_R1.EntityPlayer.damageEntity(EntityPlayer.java:586) [spigot-1_12_2.jar:git-Spigot-dcd1643-e60fc34]
        at net.minecraft.server.v1_12_R1.EntityArrow.a(EntityArrow.java:286) [spigot-1_12_2.jar:git-Spigot-dcd1643-e60fc34]
        at net.minecraft.server.v1_12_R1.EntityArrow.B_(EntityArrow.java:194) [spigot-1_12_2.jar:git-Spigot-dcd1643-e60fc34]
        at net.minecraft.server.v1_12_R1.EntityTippedArrow.B_(EntityTippedArrow.java:86) [spigot-1_12_2.jar:git-Spigot-dcd1643-e60fc34]
        at net.minecraft.server.v1_12_R1.World.entityJoinedWorld(World.java:1631) [spigot-1_12_2.jar:git-Spigot-dcd1643-e60fc34]
        at net.minecraft.server.v1_12_R1.World.h(World.java:1601) [spigot-1_12_2.jar:git-Spigot-dcd1643-e60fc34]
        at net.minecraft.server.v1_12_R1.World.tickEntities(World.java:1435) [spigot-1_12_2.jar:git-Spigot-dcd1643-e60fc34]
        at net.minecraft.server.v1_12_R1.WorldServer.tickEntities(WorldServer.java:668) [spigot-1_12_2.jar:git-Spigot-dcd1643-e60fc34]
        at net.minecraft.server.v1_12_R1.MinecraftServer.D(MinecraftServer.java:817) [spigot-1_12_2.jar:git-Spigot-dcd1643-e60fc34]
        at net.minecraft.server.v1_12_R1.DedicatedServer.D(DedicatedServer.java:406) [spigot-1_12_2.jar:git-Spigot-dcd1643-e60fc34]
        at net.minecraft.server.v1_12_R1.MinecraftServer.C(MinecraftServer.java:679) [spigot-1_12_2.jar:git-Spigot-dcd1643-e60fc34]
        at net.minecraft.server.v1_12_R1.MinecraftServer.run(MinecraftServer.java:577) [spigot-1_12_2.jar:git-Spigot-dcd1643-e60fc34]
        at java.lang.Thread.run(Unknown Source) [?:1.8.0_51]
Caused by: java.lang.ClassCastException: org.bukkit.craftbukkit.v1_12_R1.entity.CraftArrow cannot be cast to org.bukkit.entity.Player
        at bow.main.SecretBow.onArrowHit(SecretBow.java:32) ~[?:?]
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_51]
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_51]
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_51]
        at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_51]
        at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:302) ~[spigot-1_12_2.jar:git-Spigot-dcd1643-e60fc34]
        ... 24 more
 
Добавь строчку, которую скинул тебе человек выше.
 
Arrow arrow = (Arrow) event.getDamager();
Player damager = (Player) arrow.getShooter();
 
Arrow arrow = (Arrow) event.getDamager();
Player damager = (Player) arrow.getShooter();
при выстреле с лука в игрока 0 эмоций, а вот когда бью стрелой

ОШИБКА
Код:
[10:21:10 ERROR]: Could not pass event EntityDamageByEntityEvent to AdminBow v1.0
org.bukkit.event.EventException: null
        at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:306) ~[spigot-1_12_2.jar:git-Spigot-dcd1643-e60fc34]
        at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) ~[spigot-1_12_2.jar:git-Spigot-dcd1643-e60fc34]
        at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:500) [spigot-1_12_2.jar:git-Spigot-dcd1643-e60fc34]
        at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:485) [spigot-1_12_2.jar:git-Spigot-dcd1643-e60fc34]
        at org.bukkit.craftbukkit.v1_12_R1.event.CraftEventFactory.callEvent(CraftEventFactory.java:93) [spigot-1_12_2.jar:git-Spigot-dcd1643-e60fc34]
        at org.bukkit.craftbukkit.v1_12_R1.event.CraftEventFactory.callEntityDamageEvent(CraftEventFactory.java:580) [spigot-1_12_2.jar:git-Spigot-dcd1643-e60fc34]
        at org.bukkit.craftbukkit.v1_12_R1.event.CraftEventFactory.handleEntityDamageEvent(CraftEventFactory.java:483) [spigot-1_12_2.jar:git-Spigot-dcd1643-e60fc34]
        at org.bukkit.craftbukkit.v1_12_R1.event.CraftEventFactory.handleLivingEntityDamageEvent(CraftEventFactory.java:612) [spigot-1_12_2.jar:git-Spigot-dcd1643-e60fc34]
        at net.minecraft.server.v1_12_R1.EntityLiving.damageEntity0(EntityLiving.java:1346) [spigot-1_12_2.jar:git-Spigot-dcd1643-e60fc34]
        at net.minecraft.server.v1_12_R1.EntityHuman.damageEntity0(EntityHuman.java:846) [spigot-1_12_2.jar:git-Spigot-dcd1643-e60fc34]
        at net.minecraft.server.v1_12_R1.EntityLiving.damageEntity(EntityLiving.java:868) [spigot-1_12_2.jar:git-Spigot-dcd1643-e60fc34]
        at net.minecraft.server.v1_12_R1.EntityHuman.damageEntity(EntityHuman.java:759) [spigot-1_12_2.jar:git-Spigot-dcd1643-e60fc34]
        at net.minecraft.server.v1_12_R1.EntityPlayer.damageEntity(EntityPlayer.java:586) [spigot-1_12_2.jar:git-Spigot-dcd1643-e60fc34]
        at net.minecraft.server.v1_12_R1.EntityHuman.attack(EntityHuman.java:1005) [spigot-1_12_2.jar:git-Spigot-dcd1643-e60fc34]
        at net.minecraft.server.v1_12_R1.EntityPlayer.attack(EntityPlayer.java:1311) [spigot-1_12_2.jar:git-Spigot-dcd1643-e60fc34]
        at net.minecraft.server.v1_12_R1.PlayerConnection.a(PlayerConnection.java:1623) [spigot-1_12_2.jar:git-Spigot-dcd1643-e60fc34]
        at net.minecraft.server.v1_12_R1.PacketPlayInUseEntity.a(SourceFile:69) [spigot-1_12_2.jar:git-Spigot-dcd1643-e60fc34]
        at net.minecraft.server.v1_12_R1.PacketPlayInUseEntity.a(SourceFile:13) [spigot-1_12_2.jar:git-Spigot-dcd1643-e60fc34]
        at net.minecraft.server.v1_12_R1.PlayerConnectionUtils$1.run(SourceFile:13) [spigot-1_12_2.jar:git-Spigot-dcd1643-e60fc34]
        at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) [?:1.8.0_51]
        at java.util.concurrent.FutureTask.run(Unknown Source) [?:1.8.0_51]
        at net.minecraft.server.v1_12_R1.SystemUtils.a(SourceFile:46) [spigot-1_12_2.jar:git-Spigot-dcd1643-e60fc34]
        at net.minecraft.server.v1_12_R1.MinecraftServer.D(MinecraftServer.java:748) [spigot-1_12_2.jar:git-Spigot-dcd1643-e60fc34]
        at net.minecraft.server.v1_12_R1.DedicatedServer.D(DedicatedServer.java:406) [spigot-1_12_2.jar:git-Spigot-dcd1643-e60fc34]
        at net.minecraft.server.v1_12_R1.MinecraftServer.C(MinecraftServer.java:679) [spigot-1_12_2.jar:git-Spigot-dcd1643-e60fc34]
        at net.minecraft.server.v1_12_R1.MinecraftServer.run(MinecraftServer.java:577) [spigot-1_12_2.jar:git-Spigot-dcd1643-e60fc34]
        at java.lang.Thread.run(Unknown Source) [?:1.8.0_51]
Caused by: java.lang.ClassCastException: org.bukkit.craftbukkit.v1_12_R1.entity.CraftPlayer cannot be cast to org.bukkit.entity.Arrow
        at bow.main.SecretBow.onArrowHit(SecretBow.java:32) ~[?:?]
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_51]
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_51]
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_51]
        at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_51]
        at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:302) ~[spigot-1_12_2.jar:git-Spigot-dcd1643-e60fc34]
        ... 26 more
 
Код:
if (!(event.getDamager() instanceof Arrow))
           return;
 
Тема закрыта. Проблема решена
 
Статус
Закрыто для дальнейших ответов.
Назад
Верх