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

Помогите почему выдаёт ошибку null?

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

ItsWay

Активный участник
Пользователь
Баллы
76
Имя в Minecraft
ItsWay
Пишу плагин, выдаёт такую ошибку
[19:19:24 ERROR]: null
org.bukkit.command.CommandException: Unhandled exception executing command 'rtp' in plugin Project001 v1.0-SNAPSHOT
at org.bukkit.command.PluginCommand.execute(PluginCommand.java:46) ~[patched_1.12.2.jar:git-Paper-1620]
at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:152) ~[patched_1.12.2.jar:git-Paper-1620]
at org.bukkit.craftbukkit.v1_12_R1.CraftServer.dispatchCommand(CraftServer.java:685) ~[patched_1.12.2.jar:git-Paper-1620]
at net.minecraft.server.v1_12_R1.PlayerConnection.handleCommand(PlayerConnection.java:1492) ~[patched_1.12.2.jar:git-Paper-1620]
at net.minecraft.server.v1_12_R1.PlayerConnection.a(PlayerConnection.java:1297) ~[patched_1.12.2.jar:git-Paper-1620]
at net.minecraft.server.v1_12_R1.PacketPlayInChat.a(PacketPlayInChat.java:45) ~[patched_1.12.2.jar:git-Paper-1620]
at net.minecraft.server.v1_12_R1.PacketPlayInChat.a(PacketPlayInChat.java:5) ~[patched_1.12.2.jar:git-Paper-1620]
at net.minecraft.server.v1_12_R1.PlayerConnectionUtils.lambda$ensureMainThread$0(PlayerConnectionUtils.java:14) ~[patched_1.12.2.jar:git-Paper-1620]
at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) ~[?:1.8.0_351]
at java.util.concurrent.FutureTask.run(Unknown Source) ~[?:1.8.0_351]
at net.minecraft.server.v1_12_R1.SystemUtils.a(SourceFile:46) ~[patched_1.12.2.jar:git-Paper-1620]
at net.minecraft.server.v1_12_R1.MinecraftServer.D(MinecraftServer.java:850) ~[patched_1.12.2.jar:git-Paper-1620]
at net.minecraft.server.v1_12_R1.DedicatedServer.D(DedicatedServer.java:423) ~[patched_1.12.2.jar:git-Paper-1620]
at net.minecraft.server.v1_12_R1.MinecraftServer.C(MinecraftServer.java:774) ~[patched_1.12.2.jar:git-Paper-1620]
at net.minecraft.server.v1_12_R1.MinecraftServer.run(MinecraftServer.java:666) ~[patched_1.12.2.jar:git-Paper-1620]
at java.lang.Thread.run(Unknown Source) [?:1.8.0_351]
Caused by: java.lang.NullPointerException
at melars.projects.Project001.Cooldown.getCooldown(Cooldown.java:48) ~[?:?]
at melars.projects.Project001.CommandEx.onCommand(CommandEx.java:30) ~[?:?]
at org.bukkit.command.PluginCommand.execute(PluginCommand.java:44) ~[patched_1.12.2.jar:git-Paper-1620]
... 15 more
>
Такой метод использую, на эту строку указывает ошибка:
return plugin.getConfig().getInt("rtp.cooldown.default");

В конфиге написано вот так:
Код:
key: ///
rtp:
  radius:
    '1': 300
    '2': 600
    '3': 1000
    '4': 2500
    '5': 4500
  cooldown:
    default: 65
    silver: 50
    baron: 30
    bourgeois: 15
    emperor: 8
    msgCd: '&6Успокойся, на это действие стоит ограничение, ещё &a%time% &6подожди..'
  barrier-limit: 10000
 
Такой метод использую, на эту строку указывает ошибка:
return plugin.getConfig().getInt("rtp.cooldown.default");
plugin.getConfig() не может вернуть нулл
plugin.getConfig().getInt() тоже не возвращает нулл

Поэтому единственный вариант - у тебя сам plugin нулл

Убедись, что ошибка у тебя действительно на этой строке. Если так, то разбирайся, почему plugin нулл
 
plugin.getConfig() не может вернуть нулл
plugin.getConfig().getInt() тоже не возвращает нулл

Поэтому единственный вариант - у тебя сам plugin нулл

Убедись, что ошибка у тебя действительно на этой строке. Если так, то разбирайся, почему plugin нулл
Не знаю.... У меня ошибка вылезает когда я пытаюсь получить через plugin.getConfig что либо... Если я вызываю this.getConfig в главном классе без проблем это происходит. Может я неправильно вызываю plugin?
Вызов plugin:

classN classn;, пробовал static..
 
Не знаю.... У меня ошибка вылезает когда я пытаюсь получить через plugin.getConfig что либо... Если я вызываю this.getConfig в главном классе без проблем это происходит. Может я неправильно вызываю plugin?
Вызов plugin:

classN classn;, пробовал static..
покажи больше кода. конфиг создался в папке ?
 
если не принципиально то могу подкинуть другой код для конфига
 
Таким образом можешь делать любые конфиги для своих нужд.

Код:
FileConfiguration cAuth;
cAuth = YamlConfiguration.loadConfiguration(new File(getDataFolder() + File.separator + "Auth.yml"));
потом просто
cAuth.getInt....
 
Код:
package melars.projects.Project001;

import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.plugin.Plugin;


public class CommandEx implements CommandExecutor {

    static Plugin plugin;

    static Plugin getPlugin() {
        return plugin;
    }

    @Override
    public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
        if (sender instanceof Player) {
            RandomTeleport rt = new RandomTeleport();
            Cooldown cd = new Cooldown();

            Player plr = (Player) sender;
            Cooldown cooldown = new Cooldown();
            if(cd.PassedT(plr) == true) {
                Long l = Long.valueOf(20000);
                Integer barrierl = plugin.getConfig().getInt("rtp.barrier-limit");
                Long cooldowN = Long.valueOf(cd.getCooldown(plr) * 1000);
                classN.cooldown.put(plr.getUniqueId(), cooldowN + System.currentTimeMillis());
                rt.randomteleportplayer(plr, barrierl, -(barrierl), 100);
                plr.sendTitle(ChatColor.GREEN + "РТП", ChatColor.GRAY + "Вы были перемещены.");
                return true;
            } else if(cd.PassedT(plr) == false){
                plr.sendMessage(plugin.getConfig().getString("rtp.cooldown.msgCd").replace("&", "§").replace("%time%", cd.LastT(plr)));
                return true;
            }
        } else if (!(sender instanceof Player)){
            return true;
        }
        return true;
    }
}
 
Код:
package melars.projects.Project001;

import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.plugin.Plugin;


public class CommandEx implements CommandExecutor {

    static Plugin plugin;

    static Plugin getPlugin() {
        return plugin;
    }

    @Override
    public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
        if (sender instanceof Player) {
            RandomTeleport rt = new RandomTeleport();
            Cooldown cd = new Cooldown();

            Player plr = (Player) sender;
            Cooldown cooldown = new Cooldown();
            if(cd.PassedT(plr) == true) {
                Long l = Long.valueOf(20000);
                Integer barrierl = plugin.getConfig().getInt("rtp.barrier-limit");
                Long cooldowN = Long.valueOf(cd.getCooldown(plr) * 1000);
                classN.cooldown.put(plr.getUniqueId(), cooldowN + System.currentTimeMillis());
                rt.randomteleportplayer(plr, barrierl, -(barrierl), 100);
                plr.sendTitle(ChatColor.GREEN + "РТП", ChatColor.GRAY + "Вы были перемещены.");
                return true;
            } else if(cd.PassedT(plr) == false){
                plr.sendMessage(plugin.getConfig().getString("rtp.cooldown.msgCd").replace("&", "§").replace("%time%", cd.LastT(plr)));
                return true;
            }
        } else if (!(sender instanceof Player)){
            return true;
        }
        return true;
    }
}
у тебя plugin = null
 
ты про onEnable() не забыл ?
 
// Plugin startup lo
this.getCommand("rtp").setExecutor(new CommandEx());
config.options().copyDefaults(true);
saveConfig();

onEnable
 
Как тогда можно получить плагин по другому?
 
Брат, смотри, я сделал

private classN plugin; в других классах, и обращаюсь что б получить из него конфиг plugin.getConfig();

А в главном классе я так создаю конфиг:

this.getConfig().options().copyDefaults(true);
saveConfig();

Но ошибку всё равно выдаёт, я не понимаю что делаю неправильно...
 
Брат, смотри, я сделал

private classN plugin; в других классах, и обращаюсь что б получить из него конфиг plugin.getConfig();

А в главном классе я так создаю конфиг:

Код:
this.getConfig().options().copyDefaults(true);
saveConfig();

Но ошибку всё равно выдаёт, я не понимаю что делаю неправильно...
upload_2023-12-23_16-34-18.png
потом в нужном тебе месте
ток в начале это засунь

Код:
this.getConfig().options().copyDefaults(true);
saveConfig();
 
Что за дичь тут начали советовать, а ведь шли правильно..
Переменная plugin в твоём классе нулл. Её нужно задать из главного класса.


Код:
package melars.projects.Project001;

import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.plugin.Plugin;


public class CommandEx implements CommandExecutor {

    Plugin plugin;

    public CommandEx(Plugin plugin) {
        this.plugin = plugin;
}

    @Override
    public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
        if (sender instanceof Player) {
            RandomTeleport rt = new RandomTeleport();
            Cooldown cd = new Cooldown();

            Player plr = (Player) sender;
            Cooldown cooldown = new Cooldown();
            if(cd.PassedT(plr) == true) {
                Long l = Long.valueOf(20000);
                Integer barrierl = plugin.getConfig().getInt("rtp.barrier-limit");
                Long cooldowN = Long.valueOf(cd.getCooldown(plr) * 1000);
                classN.cooldown.put(plr.getUniqueId(), cooldowN + System.currentTimeMillis());
                rt.randomteleportplayer(plr, barrierl, -(barrierl), 100);
                plr.sendTitle(ChatColor.GREEN + "РТП", ChatColor.GRAY + "Вы были перемещены.");
                return true;
            } else if(cd.PassedT(plr) == false){
                plr.sendMessage(plugin.getConfig().getString("rtp.cooldown.msgCd").replace("&", "§").replace("%time%", cd.LastT(plr)));
                return true;
            }
        } else if (!(sender instanceof Player)){
            return true;
        }
        return true;
    }
}

В главном классе, там где регаешь команду, пишешь вместо new CommandEx() -> new CommandEx(this)
 
Статус
Закрыто для дальнейших ответов.

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

Назад
Верх