Configuration Résolu Eclipse : erreur de fichier de config + NullPointerException

Alex Fatta

Commandant de la Flotte et de la Horde
13 Août 2014
1 391
1
191
187
Bonjour à tous !

Je cherche actuellement à faire sauvegarder un spawn (donc une location) dans un fichier de config qui se nomme 'spawn.yml'. J'ai donc créer le code que voici :

Code:
package fr.alexfatta.fallenkingdoms.managers;

import java.io.File;
import java.io.IOException;

import org.bukkit.ChatColor;
import org.bukkit.Location;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.configuration.file.YamlConfiguration;
import org.bukkit.entity.Player;

import fr.alexfatta.fallenkingdoms.main;

public class SpawnManager implements CommandExecutor {
    
    public main main;
    private Location location;

    @Override
    public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
        
        if (label.equalsIgnoreCase("setspawn") && sender instanceof Player) {
            Player player = (Player) sender;
            this.location = player.getLocation();
            
            final File file = new File(main.getDataFolder(), "spawn.yml");
            final YamlConfiguration configuration = YamlConfiguration.loadConfiguration(file);
            
            fr.alexfatta.fallenkingdoms.main.setSpawn(location);
            configuration.set("spawn.world", player.getWorld().getName());
            configuration.set("spawn.x", player.getLocation().getX());
            configuration.set("spawn.y", player.getLocation().getY());
             configuration.set("spawn.z", player.getLocation().getZ());
             try {
                configuration.save(file);
             } catch (IOException e) {
                e.printStackTrace();
            }
            player.sendMessage(fr.alexfatta.fallenkingdoms.main.getGamePrefix() + ChatColor.GREEN + "Tu as bien set la position du spawn.");
        }
        
        if (label.equalsIgnoreCase("spawn") && sender instanceof Player) {
            Player player = (Player) sender;
            
            player.teleport(fr.alexfatta.fallenkingdoms.main.getSpawn());
        }
        
        return false;
    }

    public Location getLocation() {
        return location;
    }

    public void setLocation(Location location) {
        this.location = location;
    }

}

Seulement voilà, que je démarre le serveur, aucune erreur. Dès que je fais la commande '/setspawn', j'ai cette pu**** d'erreur dans la console que je n'arrive pas à résoudre :

Code:
[12:15:14 INFO]: AlexFatta issued server command: /setspawn
[12:15:14 ERROR]: null
org.bukkit.command.CommandException: Unhandled exception executing command 'setspawn' in plugin FallenKingdoms v1.1.0
        at org.bukkit.command.PluginCommand.execute(PluginCommand.java:46) ~[spigot_1.10.jar:git-Spigot-6016ac7-10c10b3]
        at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:141) ~[spigot_1.10.jar:git-Spigot-6016ac7-10c10b3]
        at org.bukkit.craftbukkit.v1_10_R1.CraftServer.dispatchCommand(CraftServer.java:646) ~[spigot_1.10.jar:git-Spigot-6016ac7-10c10b3]
        at net.minecraft.server.v1_10_R1.PlayerConnection.handleCommand(PlayerConnection.java:1348) [spigot_1.10.jar:git-Spigot-6016ac7-10c10b3]
        at net.minecraft.server.v1_10_R1.PlayerConnection.a(PlayerConnection.java:1183) [spigot_1.10.jar:git-Spigot-6016ac7-10c10b3]
        at net.minecraft.server.v1_10_R1.PacketPlayInChat.a(PacketPlayInChat.java:45) [spigot_1.10.jar:git-Spigot-6016ac7-10c10b3]
        at net.minecraft.server.v1_10_R1.PacketPlayInChat.a(PacketPlayInChat.java:1) [spigot_1.10.jar:git-Spigot-6016ac7-10c10b3]
        at net.minecraft.server.v1_10_R1.PlayerConnectionUtils$1.run(SourceFile:13) [spigot_1.10.jar:git-Spigot-6016ac7-10c10b3]
        at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) [?:1.8.0_144]
        at java.util.concurrent.FutureTask.run(Unknown Source) [?:1.8.0_144]
        at net.minecraft.server.v1_10_R1.SystemUtils.a(SourceFile:45) [spigot_1.10.jar:git-Spigot-6016ac7-10c10b3]
        at net.minecraft.server.v1_10_R1.MinecraftServer.D(MinecraftServer.java:733) [spigot_1.10.jar:git-Spigot-6016ac7-10c10b3]
        at net.minecraft.server.v1_10_R1.DedicatedServer.D(DedicatedServer.java:399) [spigot_1.10.jar:git-Spigot-6016ac7-10c10b3]
        at net.minecraft.server.v1_10_R1.MinecraftServer.C(MinecraftServer.java:672) [spigot_1.10.jar:git-Spigot-6016ac7-10c10b3]
        at net.minecraft.server.v1_10_R1.MinecraftServer.run(MinecraftServer.java:571) [spigot_1.10.jar:git-Spigot-6016ac7-10c10b3]
        at java.lang.Thread.run(Unknown Source) [?:1.8.0_144]
Caused by: java.lang.NullPointerException
        at fr.alexfatta.fallenkingdoms.managers.SpawnManager.onCommand(SpawnManager.java:28) ~[?:?]
        at org.bukkit.command.PluginCommand.execute(PluginCommand.java:44) ~[spigot_1.10.jar:git-Spigot-6016ac7-10c10b3]
        ... 15 more

A la ligne 28 j'ai donc un NullPointerException, ligne 28 c'est :
"final File file = new File(main.getDataFolder(), "spawn.yml");"

Ensuite, à la compilation du plugin, j'ai remarqué que 1 fois sur 3 il me met un message d'erreur me disant qu'il n'a pas pus compiler le JAR. Voici les 'détails' que Eclipse me donne :

Code:
"JAR creation failed. See details for additional information.Resource is out of sync with the file system: '/FallenKingdoms Privé/spawn.yml'.

J'ai donc cherché sur google et j'ai trouvé ceci : https://bukkit.org/threads/need-help-with-jar-creation-failed.65877/
Mais ça n'a pas vraiment fais avancer le chmilblick.

J'ai pourtant fais comme j'avais fais auparavant avec un autre fichier en .yml et ca fonctionnait pourtant bien.

Voila vous savez tout, je rajoute juste que mes commandes sont déclarées dans le main et dans le plugin.yml.

Voilà voilà ! Si vous avez des propositions :)

AlexFatta
 

Syrows

Développeur
7 Juillet 2016
137
20
130
23
En espérant t'aider un peu et en espérant ne pas te dire de bêtises, tu as déjà une erreur à la ligne 28 de ta classe SpawnManager. Ensuite, il me semble que le NullPointerException veut dire que le plugin ne sait pas quoi faire ou ne trouve pas quelque chose (corrigez moi si je me trompe...).
 

Alex Fatta

Commandant de la Flotte et de la Horde
13 Août 2014
1 391
1
191
187
En espérant t'aider un peu et en espérant ne pas te dire de bêtises, tu as déjà une erreur à la ligne 28 de ta classe SpawnManager. Ensuite, il me semble que le NullPointerException veut dire que le plugin ne sait pas quoi faire ou ne trouve pas quelque chose (corrigez moi si je me trompe...).
Bonjour !

Merci de t'intéresser au sujet :p En effet oui la console me dit que j'ai une erreur ligne 28 et que cela est dû a un NullPointerException. Donc il ne trouve pas le fichier spawn.yml mais justement c'est ça que je ne comprends pas puisque il est dans les fichiers du plugin et il est aussi dans le dossier du plugin. Donc je comprends pas pourquoi il n'arrive pas à trouver ce fichier là :/

AlexFatta
 

Syrows

Développeur
7 Juillet 2016
137
20
130
23
Bonjour !

Merci de t'intéresser au sujet :p En effet oui la console me dit que j'ai une erreur ligne 28 et que cela est dû a un NullPointerException. Donc il ne trouve pas le fichier spawn.yml mais justement c'est ça que je ne comprends pas puisque il est dans les fichiers du plugin et il est aussi dans le dossier du plugin. Donc je comprends pas pourquoi il n'arrive pas à trouver ce fichier là :/

AlexFatta
Trouvé !
Voici la nouvelle ligne à entrer: final File file = new File(main.getDataFolder() + "/" + "spawn.yml"); Le problème venait de la virgule que tu as mise, le "/" lui permet de faire le séparateur.
 

Alex Fatta

Commandant de la Flotte et de la Horde
13 Août 2014
1 391
1
191
187
Re !

Alors c'était presque ça, j'ai mis "/plugins/dossier/fichier.yml" et ca fonctionne. Merci bien ! :D

AlexFatta