Как проверить есть ли запись в конфиге и как записать в конфиг

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

Andoroid

Активный участник
Пользователь
Баллы
76
Имя в Minecraft
_Andoroid_
Здраствуйте. Незнаю в чём проблема, но наверное я туплю гдето. Как проверит есть ли в конфиге запись:
Пример:
Код:
players:
  Player1: 1
  Player2: 0
Как узнать есть ли там Player3 или Player2 (плагин сам их туда должен добавлять).
Ну мы проверили и получили что нет такой записи. Как дальше? Чёт
Код:
getConfig().set("players."+p.getName(), "0");
не работает. Выдаёт NullPointerExeption
 
Здраствуйте. Незнаю в чём проблема, но наверное я туплю гдето. Как проверит есть ли в конфиге запись:
Пример:
Код:
players:
  Player1: 1
  Player2: 0
Как узнать есть ли там Player3 или Player2 (плагин сам их туда должен добавлять).
Ну мы проверили и получили что нет такой записи. Как дальше? Чёт
Код:
getConfig().set("players."+p.getName(), "0");
не работает. Выдаёт NullPointerExeption
config.isString("Player3") -> возвращает boolean
 
Если сделаю так
Код:
if(j.getConfig().isInt("players." + warned.getName())) {
    warndOld = j.getConfig().getInt("players." + warned.getName());
} else {
    warndOld = 0;
    j.getConfig().set("players." + warned.getName(), "0");
    j.saveConfig();
}
Выдаёт NullPointerExeption на первой ствоке ( if(j.getConfig().isInt("players." + warned.getName())) { )
 
Код:
[18:46:11] [Server thread/INFO]: Andoroid issued server command: /warn
[18:46:15] [Server thread/INFO]: Andoroid issued server command: /warn 123321 123321
[18:46:15] [Server thread/ERROR]: null
org.bukkit.command.CommandException: Unhandled exception executing command 'warn' in plugin ArtekWarns v1.0
    at org.bukkit.command.PluginCommand.execute(PluginCommand.java:46) ~[spigot.jar:git-Spigot-4af49dc-c5e9a16]
    at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:141) ~[spigot.jar:git-Spigot-4af49dc-c5e9a16]
    at org.bukkit.craftbukkit.v1_9_R2.CraftServer.dispatchCommand(CraftServer.java:645) ~[spigot.jar:git-Spigot-4af49dc-c5e9a16]
    at net.minecraft.server.v1_9_R2.PlayerConnection.handleCommand(PlayerConnection.java:1349) [spigot.jar:git-Spigot-4af49dc-c5e9a16]
    at net.minecraft.server.v1_9_R2.PlayerConnection.a(PlayerConnection.java:1184) [spigot.jar:git-Spigot-4af49dc-c5e9a16]
    at net.minecraft.server.v1_9_R2.PacketPlayInChat.a(PacketPlayInChat.java:45) [spigot.jar:git-Spigot-4af49dc-c5e9a16]
    at net.minecraft.server.v1_9_R2.PacketPlayInChat.a(PacketPlayInChat.java:1) [spigot.jar:git-Spigot-4af49dc-c5e9a16]
    at net.minecraft.server.v1_9_R2.PlayerConnectionUtils$1.run(SourceFile:13) [spigot.jar:git-Spigot-4af49dc-c5e9a16]
    at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) [?:?]
    at java.base/java.util.concurrent.FutureTask.run(Unknown Source) [?:?]
    at net.minecraft.server.v1_9_R2.SystemUtils.a(SourceFile:45) [spigot.jar:git-Spigot-4af49dc-c5e9a16]
    at net.minecraft.server.v1_9_R2.MinecraftServer.D(MinecraftServer.java:726) [spigot.jar:git-Spigot-4af49dc-c5e9a16]
    at net.minecraft.server.v1_9_R2.DedicatedServer.D(DedicatedServer.java:399) [spigot.jar:git-Spigot-4af49dc-c5e9a16]
    at net.minecraft.server.v1_9_R2.MinecraftServer.C(MinecraftServer.java:665) [spigot.jar:git-Spigot-4af49dc-c5e9a16]
    at net.minecraft.server.v1_9_R2.MinecraftServer.run(MinecraftServer.java:564) [spigot.jar:git-Spigot-4af49dc-c5e9a16]
    at java.base/java.lang.Thread.run(Unknown Source) [?:?]
Caused by: java.lang.NullPointerException
    at ua.Andoroid.ArtekWorld.Cmd.onCommand(Cmd.java:37) ~[?:?]
    at org.bukkit.command.PluginCommand.execute(PluginCommand.java:44) ~[spigot.jar:git-Spigot-4af49dc-c5e9a16]
    ... 15 more
 
Код:
[18:46:11] [Server thread/INFO]: Andoroid issued server command: /warn
[18:46:15] [Server thread/INFO]: Andoroid issued server command: /warn 123321 123321
[18:46:15] [Server thread/ERROR]: null
org.bukkit.command.CommandException: Unhandled exception executing command 'warn' in plugin ArtekWarns v1.0
    at org.bukkit.command.PluginCommand.execute(PluginCommand.java:46) ~[spigot.jar:git-Spigot-4af49dc-c5e9a16]
    at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:141) ~[spigot.jar:git-Spigot-4af49dc-c5e9a16]
    at org.bukkit.craftbukkit.v1_9_R2.CraftServer.dispatchCommand(CraftServer.java:645) ~[spigot.jar:git-Spigot-4af49dc-c5e9a16]
    at net.minecraft.server.v1_9_R2.PlayerConnection.handleCommand(PlayerConnection.java:1349) [spigot.jar:git-Spigot-4af49dc-c5e9a16]
    at net.minecraft.server.v1_9_R2.PlayerConnection.a(PlayerConnection.java:1184) [spigot.jar:git-Spigot-4af49dc-c5e9a16]
    at net.minecraft.server.v1_9_R2.PacketPlayInChat.a(PacketPlayInChat.java:45) [spigot.jar:git-Spigot-4af49dc-c5e9a16]
    at net.minecraft.server.v1_9_R2.PacketPlayInChat.a(PacketPlayInChat.java:1) [spigot.jar:git-Spigot-4af49dc-c5e9a16]
    at net.minecraft.server.v1_9_R2.PlayerConnectionUtils$1.run(SourceFile:13) [spigot.jar:git-Spigot-4af49dc-c5e9a16]
    at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) [?:?]
    at java.base/java.util.concurrent.FutureTask.run(Unknown Source) [?:?]
    at net.minecraft.server.v1_9_R2.SystemUtils.a(SourceFile:45) [spigot.jar:git-Spigot-4af49dc-c5e9a16]
    at net.minecraft.server.v1_9_R2.MinecraftServer.D(MinecraftServer.java:726) [spigot.jar:git-Spigot-4af49dc-c5e9a16]
    at net.minecraft.server.v1_9_R2.DedicatedServer.D(DedicatedServer.java:399) [spigot.jar:git-Spigot-4af49dc-c5e9a16]
    at net.minecraft.server.v1_9_R2.MinecraftServer.C(MinecraftServer.java:665) [spigot.jar:git-Spigot-4af49dc-c5e9a16]
    at net.minecraft.server.v1_9_R2.MinecraftServer.run(MinecraftServer.java:564) [spigot.jar:git-Spigot-4af49dc-c5e9a16]
    at java.base/java.lang.Thread.run(Unknown Source) [?:?]
Caused by: java.lang.NullPointerException
    at ua.Andoroid.ArtekWorld.Cmd.onCommand(Cmd.java:37) ~[?:?]
    at org.bukkit.command.PluginCommand.execute(PluginCommand.java:44) ~[spigot.jar:git-Spigot-4af49dc-c5e9a16]
    ... 15 more
У тебя главный класс null скорее всего...
 
Проведи проверку на p == null
Ничего не изменилось. Если использую
Код:
if(j.getConfig().isInt("players." + args[0])) {
    warndOld = j.getConfig().getInt("players."+args[0]);
} else {
    warndOld = 0;
    j.getConfig().set("players." + args[0], 0);
    j.saveConfig();
}
То NullPointerExeption на If
А есть я попытаюсь сделать костыль и сделаю так
Код:
try{
    warndOld = j.getConfig().getInt("players."+args[0]);
}catch (NullPointerException e){
    warndOld = 0;
    j.getConfig().set("players." + args[0], 0);
    j.saveConfig();
}
То NullPointerExeption на j.getConfig().set("players." + args[0], 0);
 
Код:
package ua.Andoroid.ArtekWorld;

import org.bukkit.Bukkit;
import org.bukkit.command.ConsoleCommandSender;
import org.bukkit.plugin.java.JavaPlugin;

import java.io.File;

public class Main extends JavaPlugin{
    public static ConsoleCommandSender console = Bukkit.getConsoleSender();
    public static Main j;
    public void onEnable(){
        getCommand("warn").setExecutor(new Cmd());
        getLogger().info("Startind ArtekWarns");
        File config = new File(getDataFolder() + File.separator  + "config.yml");
        if(!config.exists()){
            getConfig().options().copyDefaults(true);
            saveDefaultConfig();
        }

    }
    public void onDisable(){

    }
}
Это Main

Это Cmd.
Код:
package ua.Andoroid.ArtekWorld;

import org.apache.commons.lang.ObjectUtils;
import org.bukkit.Bukkit;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;

import java.util.concurrent.ExecutionException;

public class Cmd implements CommandExecutor {
    private Main j = Main.j;
    public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args){

        Player p = (Player) sender;
        if(cmd.getName().equalsIgnoreCase("warn")){
            if(p.hasPermission("artekwarns.use") || p.isOp()) {
                if (args.length > 1) {
                    String reason = "";
                    for (int i = 1; i < args.length; i++) {
                        reason = reason + args[i] + " ";
                    }
                    Player warned = Bukkit.getPlayer(args[0]);
                    int warndOld = 0;
                    if(warned == null){
                        p.sendMessage("§cИгрок не на сервере!");
                        return false;
                    }
                    if(j.getConfig().isInt("players." + args[0])) {
                        warndOld = j.getConfig().getInt("players."+args[0]);
                    } else {
                        warndOld = 0;
                        j.getConfig().set("players." + args[0], 0);
                        j.saveConfig();
                   }
                    int warnNew = warndOld+1;
                    Bukkit.broadcastMessage("§f[§6§lArtek§f§lWarns§f] §cИгрок §6"+p.getName()+" §cвыдал придуприждение игроку §6"+args[0]+" §c.");
                    Bukkit.broadcastMessage("§f[§6§lArtek§f§lWarns§f] §cПо причине §6"+reason+" §c.");
                    Bukkit.broadcastMessage("§f[§6§lArtek§f§lWarns§f] §cСейчас у игрока §6"+args[0]+" §cесть §6"+Integer.toString(warnNew)+" §cпридуприждений!");
                    if(warnNew < j.getConfig().getInt("settings.maxWarnsStepOne")){
                        j.getConfig().set("players"+args[0],warnNew);
                        j.saveConfig();
                    } else if(warnNew == j.getConfig().getInt("settings.maxWarnsStepOne")){
                        Bukkit.getServer().dispatchCommand(Main.console, "pex user "+args[0]+" add -custombans.ban");
                        Bukkit.getServer().dispatchCommand(Main.console, "pex user "+args[0]+" add -custombans.tempban");
                        Bukkit.getServer().dispatchCommand(Main.console, "pex user "+args[0]+" add -custombans.kick");
                        Bukkit.getServer().dispatchCommand(Main.console, "pex user "+args[0]+" add -custombans.tempmute");
                        Bukkit.getServer().dispatchCommand(Main.console, "pex user "+args[0]+" add -custombans.mute");
                    } else if(warnNew > j.getConfig().getInt("settings.maxWarnsStepOne") && warnNew < j.getConfig().getInt("settings.maxWarnsStepTwo")){
                        j.getConfig().set("players"+args[0],warnNew);
                        j.saveConfig();
                    } else if(warnNew == j.getConfig().getInt("settings.maxWarnsStepTwo")) {
                        Bukkit.getServer().dispatchCommand(Main.console, "pex user "+args[0]+" group set "+j.getConfig().getString("settings.defaultGroup"));
                    } else if(warnNew >j.getConfig().getInt("settings.maxWarnsStepTwo")){
                        Bukkit.getServer().dispatchCommand(Main.console, "ban "+args[0]+" "+Integer.toString(j.getConfig().getInt("settings.maxWarnsStepTwo"))+" warns");
                    }
                    return true;
                } else {
                    p.sendMessage("§cПравильное использование /warn [ник] [причина]");
                    return false;
                }
            }
        }
        return true;
    }
}
 
Статус
Закрыто для дальнейших ответов.
Назад
Верх