1. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

Помогите Что с загрузкой плагина

Тема в разделе "Разработка плагинов для новичков", создана пользователем quateris?, 7 дек 2022.

Статус темы:
Закрыта.
  1. Автор темы
    quateris?

    quateris? Активный участник Пользователь

    Баллы:
    66
    Код:
    [20:17:50 ERROR]: Error occurred while enabling bebranator v0.1 (Is it up to date?)
    org.bukkit.plugin.IllegalPluginAccessException: java.lang.NullPointerException
            at org.bukkit.plugin.SimplePluginManager.getEventListeners(SimplePluginManager.java:688) ~[patched_1.16.5.jar:git-Paper-505]
            at org.bukkit.plugin.SimplePluginManager.registerEvents(SimplePluginManager.java:640) ~[patched_1.16.5.jar:git-Paper-505]
            at org.ttt.bbbb.Main.A(Main.java:36) ~[?:?]
            at org.ttt.bbbb.Main.onEnable(Main.java:26) ~[?:?]
            at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:263) ~[patched_1.16.5.jar:git-Paper-505]
            at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:380) ~[patched_1.16.5.jar:git-Paper-505]
            at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:483) ~[patched_1.16.5.jar:git-Paper-505]
            at redempt.plugwoman.PlugWoman.loadPlugin(PlugWoman.java:177) ~[?:?]
            at redempt.plugwoman.PlugWoman.reloadPlugins(PlugWoman.java:249) ~[?:?]
            at redempt.plugwoman.CommandListener.reload(CommandListener.java:100) ~[?:?]
            at redempt.plugwoman.CommandListener.reload(CommandListener.java:95) ~[?:?]
            at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_341]
            at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_341]
            at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_341]
            at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_341]
            at redempt.redlib.libs.redempt.redlib.commandmanager.Command.runHook(Command.java:799) ~[?:?]
            at redempt.redlib.libs.redempt.redlib.commandmanager.Command.execute(Command.java:697) ~[?:?]
            at redempt.redlib.libs.redempt.redlib.commandmanager.Command.execute(Command.java:709) ~[?:?]
            at redempt.redlib.libs.redempt.redlib.commandmanager.Command$1.execute(Command.java:444) ~[?:?]
            at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:159) ~[patched_1.16.5.jar:git-Paper-505]
            at org.bukkit.craftbukkit.v1_16_R3.CraftServer.dispatchCommand(CraftServer.java:810) ~[patched_1.16.5.jar:git-Paper-505]
            at net.minecraft.server.v1_16_R3.PlayerConnection.handleCommand(PlayerConnection.java:2028) ~[patched_1.16.5.jar:git-Paper-505]
            at net.minecraft.server.v1_16_R3.PlayerConnection.c(PlayerConnection.java:1838) ~[patched_1.16.5.jar:git-Paper-505]
            at net.minecraft.server.v1_16_R3.PlayerConnection.a(PlayerConnection.java:1791) ~[patched_1.16.5.jar:git-Paper-505]
            at net.minecraft.server.v1_16_R3.PacketPlayInChat.a(PacketPlayInChat.java:47) ~[patched_1.16.5.jar:git-Paper-505]
            at net.minecraft.server.v1_16_R3.PacketPlayInChat.a(PacketPlayInChat.java:5) ~[patched_1.16.5.jar:git-Paper-505]
            at net.minecraft.server.v1_16_R3.PlayerConnectionUtils.lambda$ensureMainThread$1(PlayerConnectionUtils.java:23) ~[patched_1.16.5.jar:git-Paper-505]
            at net.minecraft.server.v1_16_R3.TickTask.run(SourceFile:18) ~[patched_1.16.5.jar:git-Paper-505]
            at net.minecraft.server.v1_16_R3.IAsyncTaskHandler.executeTask(IAsyncTaskHandler.java:136) ~[patched_1.16.5.jar:git-Paper-505]
            at net.minecraft.server.v1_16_R3.IAsyncTaskHandlerReentrant.executeTask(SourceFile:23) ~[patched_1.16.5.jar:git-Paper-505]
            at net.minecraft.server.v1_16_R3.IAsyncTaskHandler.executeNext(IAsyncTaskHandler.java:109) ~[patched_1.16.5.jar:git-Paper-505]
            at net.minecraft.server.v1_16_R3.MinecraftServer.bb(MinecraftServer.java:1138) ~[patched_1.16.5.jar:git-Paper-505]
            at net.minecraft.server.v1_16_R3.MinecraftServer.executeNext(MinecraftServer.java:1131) ~[patched_1.16.5.jar:git-Paper-505]
            at net.minecraft.server.v1_16_R3.IAsyncTaskHandler.awaitTasks(IAsyncTaskHandler.java:119) ~[patched_1.16.5.jar:git-Paper-505]
            at net.minecraft.server.v1_16_R3.MinecraftServer.sleepForTick(MinecraftServer.java:1092) ~[patched_1.16.5.jar:git-Paper-505]
            at net.minecraft.server.v1_16_R3.MinecraftServer.w(MinecraftServer.java:1006) ~[patched_1.16.5.jar:git-Paper-505]
            at net.minecraft.server.v1_16_R3.MinecraftServer.lambda$a$0(MinecraftServer.java:175) ~[patched_1.16.5.jar:git-Paper-505]
            at java.lang.Thread.run(Unknown Source) [?:1.8.0_341]
    
    Уже пытался решать, не получилось
     
  2. Dymeth

    Dymeth Активный участник Пользователь

    Баллы:
    98
    Имя в Minecraft:
    Dymeth
    Показывай класс события и то, как ты его вызываешь
     
  3. Автор темы
    quateris?

    quateris? Активный участник Пользователь

    Баллы:
    66
    вызов идёт в функции, через simplepluginmanager

    первый класс (проверка):
    Код:
    
    public class MainListener implements Listener{
       
        @EventHandler
        public void onDamageByEntity(BossReceiveDamageByEntityEvent event) {
            Main.a().getServer().broadcastMessage("ggg");
        }
    }
    
    второй класс
    Код:
    public class BossDamageListener implements Listener {
       
        @EventHandler
        public void onDamage(EntityDamageByEntityEvent event) {
            if(!(event.getEntity() instanceof Snowman)) return;
            if(!event.getEntity().getPersistentDataContainer().has(Utils.a("boss"), PersistentDataType.INTEGER)) return;
            if(event.getDamager().isDead()) return;
           
            BossReceiveDamageByEntityEvent ev = new BossReceiveDamageByEntityEvent((Snowman)event.getEntity(), (LivingEntity) event.getDamager(), event.getCause(), event.getDamage());
            Main.a().getServer().getPluginManager().callEvent(ev);
        }
    }
    
     
  4. Dymeth

    Dymeth Активный участник Пользователь

    Баллы:
    98
    Имя в Minecraft:
    Dymeth
    А содержимое BossReceiveDamageByEntityEvent.java?
     
  5. Автор темы
    quateris?

    quateris? Активный участник Пользователь

    Баллы:
    66
    bossreceivedamagebyentity
    Код:
    public class BossReceiveDamageByEntityEvent extends BossReceiveDamageEvent {
        private LivingEntity damager;
       
        public BossReceiveDamageByEntityEvent(Snowman snowman, LivingEntity damager, EntityDamageEvent.DamageCause cause, double last) {
            super(snowman, cause, last);
            this.damager = damager;
        }
       
        public LivingEntity getDamager() {
            return damager;
        }
    }
    
    bossreceivedamage
    Код:
    
    public class BossReceiveDamageEvent extends BossEvent {
        private DamageCause cause;
       
        private double lastDamage;
       
        public BossReceiveDamageEvent(Snowman snowman, EntityDamageEvent.DamageCause cause, double last) {
            super(snowman);
            this.cause = cause;
            this.lastDamage = last;
        }
       
        public EntityDamageEvent.DamageCause getCause() {
            return this.cause;
        }
       
        public void setCause(EntityDamageEvent.DamageCause cause) {
            this.cause = cause;
        }
       
        public double getLastDamage() {
            return this.lastDamage;
        }
    }
    
    bossevent
    Код:
    public class BossEvent extends Event implements Cancellable {
        private static final HandlerList HANDLERS = new HandlerList();
       
        private Snowman man;
       
        private boolean cancel = false;
       
        public BossEvent(Snowman snowman) {
            this.man = snowman;
        }
        @Override
        public HandlerList getHandlers() {
            return HANDLERS;
        }
       
        public HandlerList getHandlerList() {
            return HANDLERS;
        }
       
        public Snowman getBossEntity() {
            return man;
        }
       
        public void setBossEntity(Snowman man) {
            this.man = man;
        }
       
        public void kill() {
            man.setHealth(0.0d);
        }
        @Override
        public boolean isCancelled() {
            return this.cancel;
        }
        @Override
        public void setCancelled(boolean cancel) {
            this.cancel    = cancel;
        }
    }
    
     
  6. Dymeth

    Dymeth Активный участник Пользователь

    Баллы:
    98
    Имя в Minecraft:
    Dymeth
    Как минимум необходимо перенести handler list в конкретную реализацию события, иначе ты будешь слушателем BossReceiveDamageByEntityEvent отлавливать любое другое событие, которое наследует BossEvent. Но вряд ли именно это является причиной исключения.

    Убедись, что установлена последняя версия ядра. Если это так, а ошибка по-прежнему возникает - попробуй избавиться от абстракции.

    Визуально пока не понял, в чём конкретно проблема у тебя. Но судя по стеку будто бы проблема с handler list'ом будто бы
     
    Последнее редактирование: 7 дек 2022
  7. Автор темы
    quateris?

    quateris? Активный участник Пользователь

    Баллы:
    66
    избавился от абстракции, всё заработало
     
Статус темы:
Закрыта.

Поделиться этой страницей