Solved weird stackTrace only happen after a reload

Discussion in 'Plugin Development' started by cdnyassuo34, Aug 15, 2019.

  1. Offline

    cdnyassuo34

    hi, i am making a claim plugin with groups etc... but my problems come when I reload the server. the kick command and the groupleave command start sending error everytime they are called.
    I made a DataSaver with a DataLoader to save and load all the data.
    here is the stackTrace: (I tryied many thing but had no result on every try)
    Error (open)

    org.bukkit.command.CommandException: Unhandled exception executing command 'chunk' in plugin SnowClaim v1.0
    at org.bukkit.command.PluginCommand.execute(PluginCommand.java:48) ~[craftbukkit-1.13.2.jar:git-Bukkit-84f3da3]
    at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:140) ~[craftbukkit-1.13.2.jar:git-Bukkit-84f3da3]
    at org.bukkit.craftbukkit.v1_13_R2.CraftServer.dispatchCommand(CraftServer.java:684) ~[craftbukkit-1.13.2.jar:git-Bukkit-84f3da3]
    at net.minecraft.server.v1_13_R2.PlayerConnection.handleCommand(PlayerConnection.java:1570) ~[craftbukkit-1.13.2.jar:git-Bukkit-84f3da3]
    at net.minecraft.server.v1_13_R2.PlayerConnection.a(PlayerConnection.java:1424) ~[craftbukkit-1.13.2.jar:git-Bukkit-84f3da3]
    at net.minecraft.server.v1_13_R2.PacketPlayInChat.a(SourceFile:37) ~[craftbukkit-1.13.2.jar:git-Bukkit-84f3da3]
    at net.minecraft.server.v1_13_R2.PacketPlayInChat.a(SourceFile:9) ~[craftbukkit-1.13.2.jar:git-Bukkit-84f3da3]
    at net.minecraft.server.v1_13_R2.PlayerConnectionUtils.lambda$0(PlayerConnectionUtils.java:9) ~[craftbukkit-1.13.2.jar:git-Bukkit-84f3da3]
    at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) [?:1.8.0_211]
    at java.util.concurrent.FutureTask.run(Unknown Source) [?:1.8.0_211]
    at net.minecraft.server.v1_13_R2.SystemUtils.a(SourceFile:199) [craftbukkit-1.13.2.jar:git-Bukkit-84f3da3]
    at net.minecraft.server.v1_13_R2.MinecraftServer.b(MinecraftServer.java:839) [craftbukkit-1.13.2.jar:git-Bukkit-84f3da3]
    at net.minecraft.server.v1_13_R2.DedicatedServer.b(DedicatedServer.java:382) [craftbukkit-1.13.2.jar:git-Bukkit-84f3da3]
    at net.minecraft.server.v1_13_R2.MinecraftServer.a(MinecraftServer.java:792) [craftbukkit-1.13.2.jar:git-Bukkit-84f3da3]
    at net.minecraft.server.v1_13_R2.MinecraftServer.run(MinecraftServer.java:695) [craftbukkit-1.13.2.jar:git-Bukkit-84f3da3]
    at java.lang.Thread.run(Unknown Source) [?:1.8.0_211]
    Caused by: java.lang.NullPointerException
    at fr.snowdingerr.snowclaim.mainclass.onCommand(mainclass.java:650) ~[?:?]
    at org.bukkit.command.PluginCommand.execute(PluginCommand.java:46) ~[craftbukkit-1.13.2.jar:git-Bukkit-84f3da3]
    ... 15 more
    line 650 (open)

    Code:
    if(groupSize.get(groups.get(player.getName())) == 1.0)
    

    the loader (open)

    Code:
    for(String v : getConfig().getStringList("groupsize"))
            {
                String[] value = v.split(":");
                String value1 = value[0];
                Double value2 = Double.parseDouble(value[1]);
                groupSize.put(value1, value2);
            }
    

    the saver (open)

    Code:
    for(String v : groupSize.keySet())
            {
    
                List<String> gs = new ArrayList<>();
                gs.add(v + ":" + groupSize.get(v));
            }
    



    the weird thing is that before I reload the server (before saving and loading the data) everything works fine but right after the reload nothing work correctly :/
    if anyone have a solution i would be happy ^^
     
  2. Offline

    Twisted_Panda

    How does your config look like?
     
  3. Offline

    cdnyassuo34

    here it is
    config.yml (open)

    defaultCC: 16 #Nombres de claims donné aux joueurs par défaut
    BonusParJoueur: 2.0
    mainworld: "world" #le monde dans lequel le plugin de claim sera actif
    nogroupname: "Aucun" #Le nom qui sera donné si le PlaceHolder %snowclaim_groupname% est utilisé et que le joueur n'appartient pas à un groupe ou ne possède pas de groupe
    groupmaxsize: 999.0
    chunkinfo: "§bVous êtes actuelement sur le chunk %%snowclaim_currc%% "
    chunkinfo2: "§bCe chunk appartient au joueur %%snowclaim_gco%% qui est dans le groupe %%snowclaim_ggn%%"
    cantbuildpermission: "§bCe chunk ne vous appartient pas"
    canthitpermission: "§bCette entité n'est pas votre propriété"
    wrongargskickcommand: "§bLa commande pour exclure un joueur s'utilise de cette manière: §e/chunk kick Joueur§b. elle excluera le joueur de tous vos claims actif."
    nogroupkick: "§bCe joueur ne possède pas de groupe. il n'est donc pas possible de l'exclure du groupe."
    notgroupkick: "§bCe joueur n'est pas memrbe de votre groupe ou vous n'êtes pas le chef du groupe."
    helpclaim: "§6/chunk claim: permet de déclarer un chunk."
    helpunclaim: "§6/chunk unclaim: permet de supprimer un chunk de vos claims."
    helpinfo: "§6/chunk info: affiche les informations du chunk sur lequel vous vous trouvez actuellement."
    helpinvite: "§6/chunk invite: permet d'inviter un joueur à rejoindre votre groupe."
    helpkick: "/6chunk kick: permet d'expulser un joueur de votre groupe."
    helpaccept: "§6/chunk accept: permet d'accepter une demande de groupe."
    helpdeny: "§6/chunk deny: permet de refuser une demande de groupe."
    helpgroupquit: "§6/chunk groupquit: permet de quitter le groupe dans lequel vous êtes actuellement."
    helprenamegroup: "§6/chunk renamegroup: renomme votre groupe si vous en avez un"
    kicked: "§cVous avez été retiré du groupe."
    kicker: "§bLe joueur a bien été retiré du groupe" #ce n'est pas possible de récup le joueur :/ déso
    leaver: "§bVous avez quitter le groupe avec succès"
    leaved: "§bUn joueur à quitté votre groupe."
    groupmaxsizereached: "§cLe groupe a atteind la limite de membre."
    leavebutnogroup: "§bVous n'êtes dans aucun groupe."
    hasleft: "§bVous venez de quitter le groupe"
    cantrename: "§bVous devez être §cpropiétaire §bdu groupe afin de pouvoir changer le nom de votre groupe."
    nogroupleave: "§bVous n'avez pas de groupe"
    invited: "§bVous avez rejoint le groupe %%snowclaim_ggn%% §favec succès"
    acceptedinvite: "§ble joueur §5%%snowclaim_player%% à accepter votre demande d'invitation"

    citynames: [§bSnowLand§f,§3SnowCity§f,§5EndCity§f]
    chunkcredits: []
    groupmaster: []
    groupnames: []
    groups: []
    groupsize: []
    chunks: []

     
  4. Offline

    KarimAKL

    @cdnyassuo34 The list you want to save is inside the loop; move it outside the loop, then set the list in the file and then save the file.
     
  5. Offline

    cdnyassuo34

    oh wait ^^ in the code it isn't ^^ I just took the important part not all the code ^^

    this is the full code of the saver ^^:
    theSaver&TheLoader (open)

    Code:
    public void SaveData()
        {
          
            List<String> cch = new ArrayList<>();
            List<String> gma = new ArrayList<>();
            List<String> gna = new ArrayList<>();
            List<String> gr = new ArrayList<>();
            List<String> gs = new ArrayList<>();
            List<String> ch = new ArrayList<>();
          
            ///////////////////////////////////////////////////////////
            for(String v : cc.keySet())
            {
                cch.add(v + ":" + cc.get(v));
            }
            ///////////////////////////////////////////////////////////
            for(String v : groupMaster.keySet())
            {
                gma.add(v + ":" + groupMaster.get(v));
            }
            ///////////////////////////////////////////////////////////
            for(String v : groupName.keySet())
            {
                gna.add(v + ":" + groupName.get(v));
            }
            ///////////////////////////////////////////////////////////
            for(String v : groups.keySet())
            {
                gr.add(v + ":" + groups.get(v));
            }
            ///////////////////////////////////////////////////////////
            for(String v : groupSize.keySet())
            {
                gs.add(v + ":" + groupSize.get(v));
            }
            ///////////////////////////////////////////////////////////
            for(String v : chunks.keySet())
            {
                ch.add(v + ":" + chunks.get(v));
            }
            ///////////////////////////////////////////////////////////
            getConfig().set("chunkcredits" , cch);
            getConfig().set("groupmaster" , gma);
            getConfig().set("groupnames" , gna);
            getConfig().set("groups" , gr);
            getConfig().set("groupsize" , ch);
            getConfig().set("citynames" , cityname);
            saveConfig();
        }
    
       
    public void LoadData()
        {  
            ///////////////////////////////////////////////////////////
            for(String v : getConfig().getStringList("chunkcredits"))
            {
                String[] value = v.split(":");
                String value1 = value[0];
                Double value2 = Double.parseDouble(value[1]);
                cc.put(value1, value2);
            }
            ///////////////////////////////////////////////////////////
            for(String v : getConfig().getStringList("groupmaster"))
            {
                String[] value = v.split(":");
                String value1 = value[0];
                String value2 = value[1];
                groupMaster.put(value1 , value2);
            }
            ///////////////////////////////////////////////////////////
            for(String v : getConfig().getStringList("groupnames"))
            {
                String[] value = v.split(":");
                String value1 = value[0];
                String value2 = value[1];
                groupName.put(value1 , value2);
            }
            ///////////////////////////////////////////////////////////
            for(String v : getConfig().getStringList("groups"))
            {
                String[] value = v.split(":");
                String value1 = value[0];
                String value2 = value[1];
                groups.put(value1 , value2);
            }
            ///////////////////////////////////////////////////////////
            for(String v : getConfig().getStringList("groupsize"))
            {
                String[] value = v.split(":");
                String value1 = value[0];
                Double value2 = Double.parseDouble(value[1]);
                groupSize.put(value1, value2);
            }
            ///////////////////////////////////////////////////////////
            for(String v : getConfig().getStringList("chunks"))
            {
                String[] value = v.split(":");
                String value1 = value[0];
                String value2 = value[1];
                chunks.put(value1 , value2);
            }
            ///////////////////////////////////////////////////////////
            cityname = getConfig().getStringList("citynames");
        }
    


    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
     
  6. Offline

    KarimAKL

    @cdnyassuo34
    1. You are adding all the values from the 'groupSize' map to the 'gs' list, but you are setting the 'groupsize' in the config to 'ch'.
    2. You are only setting 5 out of 6 of the lists to the config when you are saving. ('gs' is never used)
    Try looking for similar mistakes elsewhere as well.
     
  7. Offline

    cdnyassuo34

    oh thanks ^^ the only problem was in the saver with "ch instead of gs" ^^
     

Share This Page