Configuration bug de config

4 Décembre 2021
14
0
1
23
bonjour,
j'ai un commande /duel createarena location1 loction2
quand je mai les location et je mai entré sa mai sur Minecraft
"An internale error occured while attenpting to perform this command"
Code:
package fr.lemineurfou.duel;

import java.io.File;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import java.util.Random;

import org.bukkit.Bukkit;
import org.bukkit.Location;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.configuration.ConfigurationSection;
import org.bukkit.configuration.file.YamlConfiguration;
import org.bukkit.entity.Player;
import org.bukkit.plugin.java.JavaPlugin;

import fr.lemineurfou.duel.arenas.Arena;
import fr.lemineurfou.duel.arenas.ArenaManager;
import fr.lemineurfou.duel.commands.alert.alert;

public class duel extends JavaPlugin {
    
    private Map<Player, Player> players = new HashMap<>();
    private ArenaManager arenaManager = new ArenaManager();
    private File arenaFile;
    private YamlConfiguration arenaConfig;
    
    @Override
    public void onEnable() {
        System.out.println("Duel is on");
          getCommand("alert").setExecutor(new alert());
          getCommand("duel").setExecutor(this);    
          
          loadArenaConfig();
          
          ConfigurationSection arenaSection = arenaConfig.getConfigurationSection("arenas");
          
          for(String string : arenaSection.getKeys(false))
          {
            String loc1 = arenaSection.getString(string + ".loc1");
            String loc2 = arenaSection.getString(string + ".loc2");
             Arena arena = new Arena(parseStringToLoc(loc1), parseStringToLoc(loc2));
             arenaManager.addArena(arena);
          }
    }
    




    private void loadArenaConfig() {
        if(!getDataFolder().exists())
          {
              getDataFolder().mkdir();
          }
          
          arenaFile = new File(getDataFolder() + File.separator + "arenas.yml");
          
          if(!arenaFile.exists())
          {
              try {
                arenaFile.createNewFile();
            } catch (IOException e) {
                e.printStackTrace();
            }
          }
          
          arenaConfig = YamlConfiguration.loadConfiguration(arenaFile);
        
    }





    @SuppressWarnings({ "null", "unlikely-arg-type" })
    @Override
    public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
        
        if(label.equalsIgnoreCase("duel") && sender instanceof Player)
        {
            
            Player player = (Player) sender;
            
            if(args.length == 0)
            {
                player.sendMessage("§4/duel <player>");
                player.sendMessage("§4/duel <yes/no>");
                return true;
            }
            
            if(args.length >= 1)
            {
                String targetName = args[0];
                
                if(args[0].equalsIgnoreCase("yes"))
                {
                    if(players.containsKey(player))
                    {
                        player.sendMessage("Ok la duel ce lance !");
                        
                        Player firstPlayerTarget = players.get(player);
                        firstPlayerTarget.sendMessage("Ok le duel ce lance !"); 
                        
                        player.teleport(new Location(Bukkit.getWorld("world"), 0, 5, 10));
                        firstPlayerTarget.teleport(new Location(Bukkit.getWorld("world"), 10, 5, 10));
                        
                        players.remove(player);
                    }
                }
                
                else if(args[0].equalsIgnoreCase("no"))
                {
                    if(players.containsKey(player))
                    {
                        player.sendMessage("Vous avez refusé le duel !");
                        
                        Player firstPlayersTarget = players.get(player);
                        firstPlayersTarget.sendMessage("Le joueur §e" + player.getName()+"§r a refusé le duel !");
                        
                        players.remove(player);
                    }
                }
                
                else if(args[0].equalsIgnoreCase("createarena")) {
                    
                    if(args.length < 3)
                    {
                        player.sendMessage("Tapez la commande /duel createarena <loc1> <loc2>");
                        return true;
                    }
                
                    Location loc1 = parseStringToLoc(args[1]);
                    Location loc2 = parseStringToLoc(args[2]);
                    Arena arena = new Arena(loc1, loc2);
                    String arenaName = "arena-" + new Random().nextInt(9999);
                    
                    
                    arenaConfig.set("arenas." + arenaName+".loc1", args[1]);
                    arenaConfig.set("arenas." + arenaName+".loc2", args[2]);
                    saveArenaConfig();
    
                    arenaManager.addArena(arena);
                    
                    player.sendMessage("Vous venez de créer l'arène §a" + arenaName + "");
                }
                
                else if(Bukkit.getPlayer(targetName) != null)
                {
                    Player target = Bukkit.getPlayer(targetName);
                    
                    
                    if(players.containsKey(targetName))
                    {
                        player.sendMessage("§cAttention ce joueur à deja une demande en cours");
                        return true;
                    }
                    
                    players.put(target, player);
                    player.sendMessage("Vous venez de demander un duel à §e" + targetName);
                    target.sendMessage("§9Vous venez de recevoir une demande de duel de §r" + player.getName()+" /duel <yes/no>");
                }
                
                else
                {
                    player.sendMessage("Le jouer §c" + targetName+"§r n'existe pas ou n'est pas en ligne");
                }
                
                return true;
            }
            
        }
        
        return super.onCommand(sender, command, label, args);
    }
    
    private void saveArenaConfig() {
            if(!getDataFolder().exists())
              {
                  getDataFolder().mkdir();
              }
              
              arenaFile = new File(getDataFolder() + File.separator + "arenas.yml");
              
              if(!arenaFile.exists())
              {
                  try {
                    arenaFile.createNewFile();
                } catch (IOException e) {
                    e.printStackTrace();
                }
              }
              
              arenaConfig = YamlConfiguration.loadConfiguration(arenaFile);
            
        }
        


    @Override
    public void onDisable() {
        System.out.println("Duel is off");
    }

    public ArenaManager getArenaManager() {
        return arenaManager;
    }
     public Location parseStringToLoc(String string) {
         String[] parseLoc = string.split(",");
         String[] parsedLoc = null;
        @SuppressWarnings("null")
        double x = Double.valueOf(parsedLoc[0]);
        double y = Double.valueOf(parsedLoc[1]);
        double z = Double.valueOf(parsedLoc[2]);
        return new Location(Bukkit.getWorld("word"), x, y, z);
     
            }
     public String unparsrLocToString(Location loc) {
         return loc.getX() + "," + loc.getY() + "," + loc.getZ();
         
     }
     
         }

cordialement,
Jessy.l
 

ShE3py

Enbogueuse
Support
26 Septembre 2015
4 129
162
461
247
21
Mìlhüsa
Bonsoir,

Peux-tu envoyer l'erreur qui s'affiche dans la console lorsque tu fais la commande ?

Cordialement,
ShE3py
 
4 Décembre 2021
14
0
1
23
Bonsoir,

Peux-tu envoyer l'erreur qui s'affiche dans la console lorsque tu fais la commande ?

Cordialement,
ShE3py
ok merci tien l'erreur

Code:
[12:20:03] [Server thread/INFO]: Jessy_2008 issued server command: /duel createarena 52.0,4.0,24.0 52.0,4.0,39.0
[12:20:03] [Server thread/ERROR]: null
org.bukkit.command.CommandException: Unhandled exception executing command 'duel' in plugin duel v2.0
        at org.bukkit.command.PluginCommand.execute(PluginCommand.java:47) ~[spigot.jar:3284-Spigot-3892929-0ebef35]
        at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:149) ~[spigot.jar:3284-Spigot-3892929-0ebef35]
        at org.bukkit.craftbukkit.v1_17_R1.CraftServer.dispatchCommand(CraftServer.java:790) ~[spigot.jar:3284-Spigot-3892929-0ebef35]
        at net.minecraft.server.network.PlayerConnection.handleCommand(PlayerConnection.java:1931) ~[spigot.jar:3284-Spigot-3892929-0ebef35]
        at net.minecraft.server.network.PlayerConnection.a(PlayerConnection.java:1770) ~[spigot.jar:3284-Spigot-3892929-0ebef35]
        at net.minecraft.server.network.PlayerConnection.a(PlayerConnection.java:1751) ~[spigot.jar:3284-Spigot-3892929-0ebef35]
        at net.minecraft.network.protocol.game.PacketPlayInChat.a(PacketPlayInChat.java:46) ~[spigot.jar:3284-Spigot-3892929-0ebef35]
        at net.minecraft.network.protocol.game.PacketPlayInChat.a(PacketPlayInChat.java:1) ~[spigot.jar:3284-Spigot-3892929-0ebef35]
        at net.minecraft.network.protocol.PlayerConnectionUtils.lambda$0(PlayerConnectionUtils.java:30) ~[spigot.jar:3284-Spigot-3892929-0ebef35]
        at net.minecraft.server.TickTask.run(SourceFile:18) ~[spigot.jar:3284-Spigot-3892929-0ebef35]
        at net.minecraft.util.thread.IAsyncTaskHandler.executeTask(SourceFile:151) ~[spigot.jar:3284-Spigot-3892929-0ebef35]
        at net.minecraft.util.thread.IAsyncTaskHandlerReentrant.executeTask(SourceFile:23) ~[spigot.jar:3284-Spigot-3892929-0ebef35]
        at net.minecraft.util.thread.IAsyncTaskHandler.executeNext(SourceFile:125) ~[spigot.jar:3284-Spigot-3892929-0ebef35]
        at net.minecraft.server.MinecraftServer.bf(MinecraftServer.java:1148) ~[spigot.jar:3284-Spigot-3892929-0ebef35]
        at net.minecraft.server.MinecraftServer.executeNext(MinecraftServer.java:1141) ~[spigot.jar:3284-Spigot-3892929-0ebef35]
        at net.minecraft.util.thread.IAsyncTaskHandler.awaitTasks(SourceFile:134) ~[spigot.jar:3284-Spigot-3892929-0ebef35]
        at net.minecraft.server.MinecraftServer.sleepForTick(MinecraftServer.java:1125) ~[spigot.jar:3284-Spigot-3892929-0ebef35]
        at net.minecraft.server.MinecraftServer.x(MinecraftServer.java:1054) ~[spigot.jar:3284-Spigot-3892929-0ebef35]
        at net.minecraft.server.MinecraftServer.lambda$0(MinecraftServer.java:305) ~[spigot.jar:3284-Spigot-3892929-0ebef35]
        at java.lang.Thread.run(Thread.java:833) [?:?]
Caused by: java.lang.NullPointerException: Cannot load from object array because "parsedLoc" is null
        at fr.lemineurfou.duel.duel.parseStringToLoc(duel.java:213) ~[?:?]
        at fr.lemineurfou.duel.duel.onCommand(duel.java:134) ~[?:?]
        at org.bukkit.command.PluginCommand.execute(PluginCommand.java:45) ~[spigot.jar:3284-Spigot-3892929-0ebef35]
        ... 19 more
 
4 Décembre 2021
14
0
1
23
Bonsoir,

Peux-tu envoyer l'erreur qui s'affiche dans la console lorsque tu fais la commande ?

Cordialement,
ShE3py
ah c'est bon je devrais me concentrai sur mon code mais vous m'avais aider car j'ai regarder l'erreur que je ne trouver pas dans la console merci encore
cordialement
jessy.l
 
Dernière édition: