Solved Run another class during onEnable()

Discussion in 'Plugin Development' started by tacos1223, Feb 18, 2016.

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

    tacos1223

    I made a situation where the default config only replaces the config when the config doesn't exist. When the config doesn't exist, a new config is created with the defaults. I want to create the default in another class and run them in the onEnable() in my main when appropiate. However, when I do this I get an error, hopefully you can help and it is a simple mistake I made!

    Error:
    Code:
    java.lang.NullPointerException
            at me.tacos1223.NitroPvP.Main.onEnable(Main.java:96) ~[?:?]
            at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:316) ~[s
    pigot.jar:git-Spigot-1.7.9-R0.2-208-ge0f2e95]
            at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader
    .java:332) [spigot.jar:git-Spigot-1.7.9-R0.2-208-ge0f2e95]
            at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManage
    r.java:412) [spigot.jar:git-Spigot-1.7.9-R0.2-208-ge0f2e95]
            at org.bukkit.craftbukkit.v1_7_R4.CraftServer.loadPlugin(CraftServer.jav
    a:476) [spigot.jar:git-Spigot-1.7.9-R0.2-208-ge0f2e95]
            at org.bukkit.craftbukkit.v1_7_R4.CraftServer.enablePlugins(CraftServer.
    java:394) [spigot.jar:git-Spigot-1.7.9-R0.2-208-ge0f2e95]
            at net.minecraft.server.v1_7_R4.MinecraftServer.n(MinecraftServer.java:3
    60) [spigot.jar:git-Spigot-1.7.9-R0.2-208-ge0f2e95]
            at net.minecraft.server.v1_7_R4.MinecraftServer.g(MinecraftServer.java:3
    34) [spigot.jar:git-Spigot-1.7.9-R0.2-208-ge0f2e95]
            at net.minecraft.server.v1_7_R4.MinecraftServer.a(MinecraftServer.java:2
    90) [spigot.jar:git-Spigot-1.7.9-R0.2-208-ge0f2e95]
            at net.minecraft.server.v1_7_R4.DedicatedServer.init(DedicatedServer.jav
    a:210) [spigot.jar:git-Spigot-1.7.9-R0.2-208-ge0f2e95]
            at net.minecraft.server.v1_7_R4.MinecraftServer.run(MinecraftServer.java
    :458) [spigot.jar:git-Spigot-1.7.9-R0.2-208-ge0f2e95]
            at net.minecraft.server.v1_7_R4.ThreadServerApplication.run(SourceFile:6
    28) [spigot.jar:git-Spigot-1.7.9-R0.2-208-ge0f2e95]
    [20:02:49 INFO]: Server permissions file permissions.yml is empty, ignoring it
    [20:02:49 INFO]: Done (0.713s)! For help, type "help" or "?"
    >
    onEnable() in main:
    Code:
        @Override
        public void onEnable()
        {   
            manager = new MyConfigManager(this);       
           
            instance = this;
           
            File configFile = new File(this.getDataFolder(), "config.yml");
            if (!configFile.exists())
            {
                String[] headerConfig = {"Main Config", "NitroPvP", "by tacos1223"};
                config = manager.getNewConfig("config.yml", headerConfig);
                configDefaultsInstance.runDefaultConfig();
                           
            }                                       
            registerListeners();
            registerCommands();
           
            PluginDescriptionFile pdfFile = this.getDescription();
            getLogger().info(pdfFile.getName() + " Version: " + pdfFile.getVersion() + " is now enabled!");
        }
    configDefaults class:
    Code:
    package me.tacos1223.NitroPvP.Configs;
    
    
    import org.bukkit.event.Listener;
    
    import me.tacos1223.NitroPvP.Main;
    
    public class configDefaults {
        Main instance;
       
        public static configDefaults configDefaultsInstance;
       
        public static configDefaults getInstance()
        {
            return configDefaultsInstance;
        }
       
        public void runDefaultConfig()
        {
            String[] lobbyComments = {"lobby spawn"};
            instance.config.set("lobbyspawn.X", lobbyComments);;
            instance.config.createSection("lobbyspawn.Y");;
            instance.config.createSection("lobbyspawn.Y");;
            instance.config.createSection("lobbyspawn.World");;
            instance.config.saveConfig();
        }
    }
    Hopefully you can help!
    Thanks,
    Tyler.
     
  2. Offline

    Gerov

    Which line is "Main:96"

    And also, you don't need

    Code:
    getLogger().info(pdfFile.getName() + " Version: " + pdfFile.getVersion() + " is now enabled!");
    Bukkit does that for you, you would have two messages saying the plugin was enabled.
     
  3. Offline

    tacos1223

    @Gerov
    Line 96 is:
    Code:
    configDefaultsInstance.runDefaultConfig();
     
  4. Offline

    Gerov

    Your instance variable was never initialized.
     
    tacos1223 likes this.
  5. Offline

    tacos1223

    Ok got it!

    Heres the solution:

    Code:
    public class configDefaults {
        private final Main instance;
    
    
        public configDefaults(Main instance)
        {
            this.instance = instance;
            instance.config.createSection("lobbyspawn.X");;
            instance.config.createSection("lobbyspawn.Y");;
            instance.config.createSection("lobbyspawn.Y");;
            instance.config.createSection("lobbyspawn.World");;
            instance.config.saveConfig(); 
        }
    }

    Code:
    File configFile = new File(this.getDataFolder(), "config.yml");
            if (!configFile.exists())
            {
                String[] headerConfig = {"Main Config", "NitroPvP", "by tacos1223"};
                config = manager.getNewConfig("config.yml", headerConfig);
                configDefaults foo = new configDefaults(this);
              
     
    Last edited: Feb 18, 2016
Thread Status:
Not open for further replies.

Share This Page