onDisable doesn't work...

Discussion in 'Plugin Development' started by Koningpeter, Jul 14, 2015.

Thread Status:
Not open for further replies.
  1. Offline

    Koningpeter

    If I reload my server, my server crasht...
    Can anyone help me?
    Here's my code:
    Code:
    public void onDisable(){
            getLogger().info("Disabled!");
            getConfig().options().copyDefaults(true);
                Iterator<String> iterator = test.iterator();
                for(int i=1; i>=1; i++){
                while(iterator.hasNext())
                    getConfig().set(".test." + i, iterator.next());
                    saveConfig();
                }
                Iterator<String> iterator1 = test1.iterator();
                for(int i=1; i>=1; i++){
                while(iterator1.hasNext())
                    getConfig().set(".test1." + i, iterator1.next());
                    saveConfig();
                    return;
                }          
        }    
     
  2. Offline

    Gater12

    @Koningpeter
    There is an infinite loop.
    Code:java
    1. for(int i = 1; i >= 1; i++)

    i will always be greater than 1 and continue looping.
     
  3. Offline

    gvlfm78

    If you could give us the error you get in the console that would be useful. Also, why are you assigning the value of ".test"+i to iterator.next()? The code should be like this:
    Code:
    public void onDisable(){
            getLogger().info("Disabled!");
            getConfig().options().copyDefaults(true);
                Iterator<String> iterator = test.iterator();
                for(int i=1; i>=1; i++){
                while(iterator.hasNext())
                    getConfig().set(".test." + i,"String");
                    iterator.next()
                    saveConfig();
                }
                Iterator<String> iterator1 = test1.iterator();
                for(int i=1; i>=1; i++){
                while(iterator1.hasNext())
                    getConfig().set(".test1." + i, "String");
                   iterator.next()
                    saveConfig();
                    return;
                }      
        }    
    EDIT: And yes, do pay attention to what Gater12 said
     
  4. Offline

    Koningpeter

    @Gater12
    Okey, I have now this:
    Code:
    public void onDisable(){
            getLogger().info("Disabled!");
            getConfig().options().copyDefaults(true);
                Iterator<String> iterator = test.iterator();
                for(int i=1; i>=1; i++){
                while(iterator.hasNext())
                    getConfig().set(".test." + i, iterator.next());
                    saveConfig();
                    return;
                }
                Iterator<String> iterator1 = test1.iterator();
                for(int i=1; i>=1; i++){
                while(iterator1.hasNext())
                    getConfig().set(".test1." + i, iterator1.next());
                    saveConfig();
                    return;
                }          
        }    
    But know test1 is not saved in the config....
     
  5. Offline

    Creeperzombi3

    @Koningpeter
    You still need to fix the infinite loop
    Code:java
    1. for(int i=1; i>=1; i++){
     
  6. Offline

    Gater12

    @Koningpeter
    And you have a return statement, indicating to stop executing the method.
     
  7. Offline

    gvlfm78

    Try this:
    Code:
    public void onDisable(){
            getLogger().info("Disabled!");
            getConfig().options().copyDefaults(true);
                Iterator<String> iterator = test.iterator();
                for(int i=0; i<=1; i++){
                while(iterator.hasNext()){
                    getConfig().set(".test." + i, "Test");
                    saveConfig();
                    iterator.next();
                   }
                }
                Iterator<String> iterator1 = test1.iterator();
                for(int i=0; i<=1; i++){
                while(iterator1.hasNext()){
                    getConfig().set(".test1." + i, "A test");
                    saveConfig();
                    iterator1.next();
                 }
                }         
        }    
     
  8. Offline

    Koningpeter

    @gvlfm78
    Now I get an error...
    Code:
    [22:30:14 ERROR]: Error occurred while disabling PvP v1.0 (Is it up to d
    ate?)
    java.util.NoSuchElementException
            at java.util.ArrayList$Itr.next(Unknown Source) ~[?:1.8.0_25]
            at olympic_package.Main.onDisable(Main.java:67) ~[?:?]
            at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:318) ~[S
    pigot.jar:git-Spigot-1544]
            at org.bukkit.plugin.java.JavaPluginLoader.disablePlugin(JavaPluginLoade
    r.java:353) [Spigot.jar:git-Spigot-1544]
            at org.bukkit.plugin.SimplePluginManager.disablePlugin(SimplePluginManag
    er.java:424) [Spigot.jar:git-Spigot-1544]
            at org.bukkit.plugin.SimplePluginManager.disablePlugins(SimplePluginMana
    ger.java:417) [Spigot.jar:git-Spigot-1544]
            at org.bukkit.plugin.SimplePluginManager.clearPlugins(SimplePluginManage
    r.java:458) [Spigot.jar:git-Spigot-1544]
            at org.bukkit.craftbukkit.v1_7_R4.CraftServer.reload(CraftServer.java:83
    3) [Spigot.jar:git-Spigot-1544]
            at org.bukkit.Bukkit.reload(Bukkit.java:301) [Spigot.jar:git-Spigot-1544
    ]
            at org.bukkit.command.defaults.ReloadCommand.execute(ReloadCommand.java:
    23) [Spigot.jar:git-Spigot-1544]
            at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:18
    1) [Spigot.jar:git-Spigot-1544]
            at org.bukkit.craftbukkit.v1_7_R4.CraftServer.dispatchCommand(CraftServe
    r.java:767) [Spigot.jar:git-Spigot-1544]
            at net.minecraft.server.v1_7_R4.PlayerConnection.handleCommand(PlayerCon
    nection.java:1016) [Spigot.jar:git-Spigot-1544]
            at net.minecraft.server.v1_7_R4.PlayerConnection.a(PlayerConnection.java
    :846) [Spigot.jar:git-Spigot-1544]
            at net.minecraft.server.v1_7_R4.PacketPlayInChat.a(PacketPlayInChat.java
    :28) [Spigot.jar:git-Spigot-1544]
            at net.minecraft.server.v1_7_R4.PacketPlayInChat.handle(PacketPlayInChat
    .java:65) [Spigot.jar:git-Spigot-1544]
            at net.minecraft.server.v1_7_R4.NetworkManager.a(NetworkManager.java:184
    ) [Spigot.jar:git-Spigot-1544]
            at net.minecraft.server.v1_7_R4.ServerConnection.c(ServerConnection.java
    :81) [Spigot.jar:git-Spigot-1544]
            at net.minecraft.server.v1_7_R4.MinecraftServer.v(MinecraftServer.java:7
    31) [Spigot.jar:git-Spigot-1544]
            at net.minecraft.server.v1_7_R4.DedicatedServer.v(DedicatedServer.java:2
    89) [Spigot.jar:git-Spigot-1544]
            at net.minecraft.server.v1_7_R4.MinecraftServer.u(MinecraftServer.java:5
    84) [Spigot.jar:git-Spigot-1544]
            at net.minecraft.server.v1_7_R4.MinecraftServer.run(MinecraftServer.java
    :490) [Spigot.jar:git-Spigot-1544]
            at net.minecraft.server.v1_7_R4.ThreadServerApplication.run(SourceFile:6
    28) [Spigot.jar:git-Spigot-1544]
    How can I fix it?
     
  9. Offline

    Zombie_Striker

    The problem is with line 67. What is line 67?
     
  10. Offline

    Evaluations

    while(iterator.hasNext())
     
  11. Offline

    Koningpeter

    line 67:
    iterator.next();
     
  12. Offline

    gvlfm78

    EDIT: Sorry, my mistake. iterator.next() should have stayed where it was originally since you are iterating through strings. So like this:

    Code:
    public void onDisable(){
            getLogger().info("Disabled!");
            getConfig().options().copyDefaults(true);
                Iterator<String> iterator = test.iterator();
                for(int i=0; i<=1; i++){
                while(iterator.hasNext()){
                    getConfig().set(".test." + i,iterator.next());
                    saveConfig();
                   }
                }
                Iterator<String> iterator1 = test1.iterator();
                for(int i=0; i<=1; i++){
                while(iterator1.hasNext()){
                    getConfig().set(".test1." + i,iterator1.next());
                    saveConfig();
                 }
                }      
        } 
     
    Last edited: Jul 15, 2015
  13. @gvlfm78
    Spoonfeeding is not the awnser :/
     
  14. Offline

    gvlfm78

    I was just showing how to 'put it back how it was'
     
  15. @gvlfm78
     
  16. Offline

    gvlfm78

    The last one was me correcting on the previous one, the first one was putting together the suggestions everyone had put here, as there was more than just one mistake, and the second one was because he didn't actually use the code I had 'spoonfed' his at first. He still hasn't replied now so we don't know if the issue is fixed yet or not, and therefore if what you define 'spoofeeding' and I define 'speeding up the help process since he clearly doesn't know enough Java and just wants a quick fix' has worked or not. Most of the time people just answer "Go watch some Java tutorial". That is never helpful as an answer, but is a good suggestion.

    So @Koningpeter , I suggest you watch some Java tutorials after you have finished fixing this issue and you have some spare time.
     
Thread Status:
Not open for further replies.

Share This Page