try {
float newRep = Float.parseFloat(split[1]);
String target = split[0];
for (File file : getDataFolder().listFiles()) {
if (file.getName().equalsIgnoreCase(target + ".yml")) {
File targetFile = file;
try {
FileConfiguration config = YamlConfiguration.loadConfiguration(targetFile);
config.set("data.rep", newRep);
config.save(targetFile);
sender.sendMessage(ChatColor.GREEN + target + ChatColor.RED
+ "'s rep is now set to " + ChatColor.GREEN + newRep);
} catch (IOException e) {
e.printStackTrace();
}
}
}
} catch (NumberFormatException ex) {
sender.sendMessage(ChatColor.RED + "Must be a number!");
} catch (IllegalArgumentException e) {
sender.sendMessage(ChatColor.RED + "Player not found!");
} catch (NullPointerException e) {
sender.sendMessage("Unknown pointer error!");
e.printStackTrace();
}
基本的に何かがヌルポイントエラーを投げています。本当にだまされた。コードが実行しているのは、配列に基づいて yaml ファイルを開こうとすることだけですsplit[0]
。次に、yaml の値の 1 つを文字列split[1]
(float に渡される) に変更します。
スタック トレースは次のとおりです。
23:25:18 [SEVERE] java.lang.NullPointerException
23:25:18 [SEVERE] at com.github.scullyking.reputation.Command_Set.onCommand(Command_Set.java:33)
23:25:18 [SEVERE] at org.bukkit.command.PluginCommand.execute(PluginCommand.java:44)
23:25:18 [SEVERE] at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:191)
23:25:18 [SEVERE] at org.bukkit.craftbukkit.v1_6_R2.CraftServer.dispatchCommand(CraftServer.java:523)
23:25:18 [SEVERE] at org.bukkit.craftbukkit.v1_6_R2.CraftServer.dispatchServerCommand(CraftServer.java:512)
23:25:18 [SEVERE] at net.minecraft.server.v1_6_R2.DedicatedServer.ar(DedicatedServer.java:262)
23:25:18 [SEVERE] at net.minecraft.server.v1_6_R2.DedicatedServer.t(DedicatedServer.java:227)
23:25:18 [SEVERE] at net.minecraft.server.v1_6_R2.MinecraftServer.s(MinecraftServer.java:486)
23:25:18 [SEVERE] at net.minecraft.server.v1_6_R2.MinecraftServer.run(MinecraftServer.java:419)
23:25:18 [SEVERE] at net.minecraft.server.v1_6_R2.ThreadServerApplication.run(SourceFile:582)'
33行目はforループです。