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

Ошибка при создании команды - "Error occurred while enabling""

Тема в разделе "Разработка плагинов для новичков", создана пользователем cradles, 4 янв 2024.

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

    cradles Участник Пользователь

    Баллы:
    31
    Имя в Minecraft:
    Mattgyve1990
    Здравствуйте, изучаю создание и плагинов только неделю, решил сделать команду на перезагрузку конфига плагина, но создал только ошибку. страдаю над ней уже более 2 часов.. помогите..
    Код main класса:

    Код:
    package org.example.respawndeath.respawndeath;
    
    import org.bukkit.ChatColor;
    import org.bukkit.Color;
    import org.bukkit.command.Command;
    import org.bukkit.command.CommandExecutor;
    import org.bukkit.command.CommandSender;
    import org.bukkit.entity.LightningStrike;
    import org.bukkit.event.entity.EntityDamageByEntityEvent;
    import org.bukkit.plugin.java.JavaPlugin;
    import org.bukkit.Bukkit;
    import org.bukkit.Sound;
    import org.bukkit.event.Listener;
    import org.bukkit.entity.Player;
    import org.bukkit.event.EventHandler;
    import org.bukkit.event.entity.PlayerDeathEvent;
    import org.bukkit.scheduler.BukkitRunnable;
    import org.bukkit.configuration.file.FileConfiguration;
    import org.jetbrains.annotations.NotNull;
    
    import java.util.Objects;
    
    public final class RespawnDeath extends JavaPlugin implements Listener, CommandExecutor {
        private Sound Sound;
        private String Title;
        private String Subtitle;
        private int Stay;
        private int Out;
        private int In;
        private boolean Enable;
        private boolean EnableLightning;
    
        @Override
        public void onEnable() {
            getLogger().info(ChatColor.GREEN + "Enable");
            Bukkit.getPluginManager().registerEvents(this, this);
            saveDefaultConfig();
            reloadConfig();
            FileConfiguration config = getConfig();
            Enable = config.getBoolean("Enable");
            EnableLightning = config.getBoolean("EnableLightning");
            Title = config.getString("Title");
            Subtitle = config.getString("Subtitle");
            Stay = config.getInt("Stay");
            In = config.getInt("In");
            Out = config.getInt("Out");
            Sound = Sound.valueOf(config.getString("Sound"));
    
            Objects.requireNonNull(getCommand("rdreload")).setExecutor(this);
        }
    
        @Override
        public void onDisable() {
            getLogger().info(ChatColor.RED + "Disable");
        }
    
        @EventHandler
        public void PlayerDeath(PlayerDeathEvent event) {
            Player player = event.getEntity();
            if (Enable) {
                sendTitle(player, Title, Subtitle, Stay, In, Out);
            }
    
            Sound(player);
    
            if (EnableLightning) {
                LightningStrike lightning = player.getWorld().strikeLightning(player.getLocation());
            }
    
            new BukkitRunnable() {
                @Override
                public void run() {
                    player.spigot().respawn();
                }
            }.runTaskLater(this, 1L);
        }
    
        private void sendTitle(Player player, String title, String subtitle, int Stay, int In, int Out) {
            player.sendTitle(title, subtitle, In, Stay, Out);
        }
    
        private void Sound(Player player) {
            player.playSound(player.getLocation(), Sound, 1f, 1f);
        }
        @Override
        public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, String[] args) {
            if (command.getName().equalsIgnoreCase("rdreload")) {
                if (args.length == 0) {
                    reloadConfig();
                    sender.sendMessage(ChatColor.GREEN + "Конфигурация плагина успешно перезагружена!");
                    return true;
                }
            }
            return false;
        }
    }
    config.yml:

    Код:
    # Включение тайтлов
    
    Enable: true
    EnableLightning: true
    
    # Надписи ; Используйте "§<число/буква>"текст" "§4Смэрт"
    # Цветовые Коды:
    # §1 - темно-синий ; §2 - темно-зеленый
    # §3 - темно-голубой ; §4 - темно-красный
    # §5 - темно-фиолетовый ; §6 - золотой
    # §7 - серый ; §8 - темно-серый
    # §9 - синий ; §0 - черный
    # §b - голубой ; §c - красный
    # §d - фиолетовый ; §f - белый
    # §e - желтый ; §a - зеленый
    # §r - сброс ; §l - жирый
    # §o - курсив ; §n - подчеркивание
    # §m - зачеркнутый ; §k - вечно меняющиеся буквы(шифр)
    
    Title: "§4Смэрт"
    Subtitle: "§aЖивчик"
    
    # Эффектс
      # Stay - продолжительность надписи
      # In - появление надписи
      # Out - пропажа надписи
    
    Stay: 10
    In: 10
    Out: 10
    
    # Звук:
    # звуки можно взять с: https://gist.github.com/Andre601/1ab3b4fabd0010ae241156333491c379
    
    Sound: BLOCK_ANVIL_BREAK
    plugin.yml:

    name: RespawnDeath
    version: '${project.version}'
    main: org.example.respawndeath.respawndeath.RespawnDeath
    api-version: '1.20'
    authors: [Mattgyve1990]
    description: instant respawn + innovation

    commands:
    rdr:
    usage: /<command>
    description: reload config plugin

    Фулл ошибка:
    [​IMG]
     
    Последнее редактирование: 4 янв 2024
  2. Sturm_PT

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

    Баллы:
    76
    1) Код вставляй через "Вставка -> Код"
    2) В plugin.yml зарегистрируй команду rdreload
     
  3. Автор темы
    cradles

    cradles Участник Пользователь

    Баллы:
    31
    Имя в Minecraft:
    Mattgyve1990
    спасибо что сказали как вставить код, я изменил. команду зарегистрировал, но ошибка все еще есть:(
     
  4. Sturm_PT

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

    Баллы:
    76
    Если ошибка та же - значит, не зарегистрировал
     
  5. Автор темы
    cradles

    cradles Участник Пользователь

    Баллы:
    31
    Имя в Minecraft:
    Mattgyve1990
    Код:
    name: RespawnDeath
    version: '${project.version}'
    main: org.example.respawndeath.respawndeath.RespawnDeath
    api-version: '1.20'
    authors: [Mattgyve1990]
    description: instant respawn + innovation
    
    commands:
      rdreload:
        usage: /rdreload
        description: reload config plugin
    я зарегистрировал или нет? ошибка как была так и осталась, пишет что проблема в 48 строке, т.е. здесь -
    Objects.requireNonNull(getCommand("rdreload")).setExecutor(this);
    upload_2024-1-4_15-19-7.png
     
  6. Sturm_PT

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

    Баллы:
    76
    Если стактрейс действительно показывает на эту строку, то тут творится магия. Правда, прошлый трейс выдавал тебе ошибку на 45 строке. Строка та?
     
  7. Автор темы
    cradles

    cradles Участник Пользователь

    Баллы:
    31
    Имя в Minecraft:
    Mattgyve1990
    строка та, я просто менял ее местоположение поэтому теперь и 48
     
  8. Sturm_PT

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

    Баллы:
    76
    Неси по новой полный код и стактрейс
     
  9. Автор темы
    cradles

    cradles Участник Пользователь

    Баллы:
    31
    Имя в Minecraft:
    Mattgyve1990
    main:
    Код:
    package org.example.respawndeath.respawndeath;
    
    import org.bukkit.ChatColor;
    import org.bukkit.Color;
    import org.bukkit.command.Command;
    import org.bukkit.command.CommandExecutor;
    import org.bukkit.command.CommandSender;
    import org.bukkit.entity.LightningStrike;
    import org.bukkit.plugin.java.JavaPlugin;
    import org.bukkit.Bukkit;
    import org.bukkit.Sound;
    import org.bukkit.event.Listener;
    import org.bukkit.entity.Player;
    import org.bukkit.event.EventHandler;
    import org.bukkit.event.entity.PlayerDeathEvent;
    import org.bukkit.scheduler.BukkitRunnable;
    import org.bukkit.configuration.file.FileConfiguration;
    import org.jetbrains.annotations.NotNull;
    
    import java.util.Objects;
    
    public final class RespawnDeath extends JavaPlugin implements Listener, CommandExecutor {
        private Sound Sound;
        private String Title;
        private String Subtitle;
        private int Stay;
        private int Out;
        private int In;
        private boolean Enable;
        private boolean EnableLightning;
    
        @Override
        public void onEnable() {
            getLogger().info(ChatColor.GREEN + "Enable");
            Bukkit.getPluginManager().registerEvents(this, this);
            saveDefaultConfig();
            reloadConfig();
            FileConfiguration config = getConfig();
            Enable = config.getBoolean("Enable");
            EnableLightning = config.getBoolean("EnableLightning");
            Title = config.getString("Title");
            Subtitle = config.getString("Subtitle");
            Stay = config.getInt("Stay");
            In = config.getInt("In");
            Out = config.getInt("Out");
            Sound = Sound.valueOf(config.getString("Sound"));
    
            Objects.requireNonNull(getCommand("rdreload")).setExecutor(this);
        }
    
        @Override
        public void onDisable() {
            getLogger().info(ChatColor.RED + "Disable");
        }
    
        @EventHandler
        public void PlayerDeath(PlayerDeathEvent event) {
            Player player = event.getEntity();
            if (Enable) {
                sendTitle(player, Title, Subtitle, Stay, In, Out);
            }
    
            Sound(player);
    
            if (EnableLightning) {
                LightningStrike lightning = player.getWorld().strikeLightning(player.getLocation());
            }
    
            new BukkitRunnable() {
                @Override
                public void run() {
                    player.spigot().respawn();
                }
            }.runTaskLater(this, 1L);
        }
    
        private void sendTitle(Player player, String title, String subtitle, int Stay, int In, int Out) {
            player.sendTitle(title, subtitle, In, Stay, Out);
        }
    
        private void Sound(Player player) {
            player.playSound(player.getLocation(), Sound, 1f, 1f);
        }
        @Override
        public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, String[] args) {
            if (command.getName().equalsIgnoreCase("rdreload")) {
                if (args.length == 0) {
                    reloadConfig();
                    sender.sendMessage(ChatColor.GREEN + "Конфигурация плагина успешно перезагружена!");
                    return true;
                }
            }
            return false;
        }
    }
    plugin.yml:
    Код:
    name: RespawnDeath
    version: '${project.version}'
    main: org.example.respawndeath.respawndeath.RespawnDeath
    api-version: '1.20'
    authors: [Mattgyve1990]
    description: instant respawn + innovation
    
    commands:
      rdreload:
        usage: /rdreload
        description: reload config plugin
     
  10. Автор темы
    cradles

    cradles Участник Пользователь

    Баллы:
    31
    Имя в Minecraft:
    Mattgyve1990
     

    Вложения:

  11. Sturm_PT

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

    Баллы:
    76
    Открой plugin.yml в jar файле, посмотри, есть ли там команда. Проверь кодировку в plugin.yml
    Кстати, твой код перезагружает только файл конфига, новые значения полям он не устанавливает
     
  12. Автор темы
    cradles

    cradles Участник Пользователь

    Баллы:
    31
    Имя в Minecraft:
    Mattgyve1990
    а как сделать чтобы он устанавливал новые значения?
    кодировку проверил, вроде все нормально, но я не понял, а как открыть в jar файле?
     
  13. Sturm_PT

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

    Баллы:
    76
    Посмотри на свой onEnable, где ты их устанавливаешь
    Через winrar открываешь свой jar-файл и там ищешь plugin.yml
     
  14. lordgasp

    lordgasp Ньюби

    Баллы:
    1
    Имя в Minecraft:
    gasp
    Код:
    new BukkitRunnable() {
                @Override
                public void run() {
                    player.spigot().respawn();
                }
            }.runTaskLater(this, 1L);
    Вместо этого могу посоветовать использовать doImmediateRespawn. (/gamerule)
     
Статус темы:
Закрыта.

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