Войти или зарегистрироваться
  • Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.

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

Статус
Закрыто для дальнейших ответов.

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

Фулл ошибка:
image.png
 
Последнее редактирование:
Здравствуйте, изучаю создание и плагинов только неделю, решил сделать команду на перезагрузку конфига плагина, но создал только ошибку. страдаю над ней уже более 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


Фулл ошибка:
image.png
1) Код вставляй через "Вставка -> Код"
2) В plugin.yml зарегистрируй команду rdreload
 
1) Код вставляй через "Вставка -> Код"
2) В plugin.yml зарегистрируй команду rdreload
спасибо что сказали как вставить код, я изменил. команду зарегистрировал, но ошибка все еще есть:(
 
Если ошибка та же - значит, не зарегистрировал
Код:
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
 
Код:
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);
Посмотреть вложение 66448
Если стактрейс действительно показывает на эту строку, то тут творится магия. Правда, прошлый трейс выдавал тебе ошибку на 45 строке. Строка та?
 
Если стактрейс действительно показывает на эту строку, то тут творится магия. Правда, прошлый трейс выдавал тебе ошибку на 45 строке. Строка та?
строка та, я просто менял ее местоположение поэтому теперь и 48
 
Неси по новой полный код и стактрейс
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
 
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
 

Вложения:

  • upload_2024-1-4_15-47-4.png
    upload_2024-1-4_15-47-4.png
    Размер файла
    54,6 КБ
    Просмотров
    4
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
Открой plugin.yml в jar файле, посмотри, есть ли там команда. Проверь кодировку в plugin.yml
Кстати, твой код перезагружает только файл конфига, новые значения полям он не устанавливает
 
Открой plugin.yml в jar файле, посмотри, есть ли там команда. Проверь кодировку в plugin.yml
Кстати, твой код перезагружает только файл конфига, новые значения полям он не устанавливает
а как сделать чтобы он устанавливал новые значения?
кодировку проверил, вроде все нормально, но я не понял, а как открыть в jar файле?
 
Код:
new BukkitRunnable() {
            @Override
            public void run() {
                player.spigot().respawn();
            }
        }.runTaskLater(this, 1L);

Вместо этого могу посоветовать использовать doImmediateRespawn. (/gamerule)
 
Статус
Закрыто для дальнейших ответов.

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

Назад
Верх