Getting plugin prefix from config not working

Discussion in 'Plugin Development' started by Minesuchtiiii, Sep 25, 2017.

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

    Minesuchtiiii

    So I want to have the prefix of the plugin customizable in the config, in the onEnable() part I add the defaults like that:

    Code:
        public void addConfigDefaults() {
    
          
            this.cfg.addDefault("Plugin-Prefix",
                   "&7[&bTestPrefix§7]  ");
          
            this.cfg.options().copyDefaults(true);
            this.saveConfig();
          
        }
    So above my onEnable() part I have

    Code:
    public String prefix = ChatColor.translateAlternateColorCodes('&', cfg.getString("Plugin-Prefix"));
    But when I start the plugin it gives me the following error:

    Code:
    [14:05:37 ERROR]: Could not load 'plugins\OITC_v1.0.jar' in folder 'plugins'
    org.bukkit.plugin.InvalidPluginException: java.lang.NullPointerException
            at org.bukkit.plugin.java.JavaPluginLoader.loadPlugin(JavaPluginLoader.j
    ava:131) ~[spigot.jar:git-Bukkit-9e3636d]
            at org.bukkit.plugin.SimplePluginManager.loadPlugin(SimplePluginManager.
    java:325) ~[spigot.jar:git-Bukkit-9e3636d]
            at org.bukkit.plugin.SimplePluginManager.loadPlugins(SimplePluginManager
    .java:248) [spigot.jar:git-Bukkit-9e3636d]
            at org.bukkit.craftbukkit.v1_12_R1.CraftServer.loadPlugins(CraftServer.j
    ava:306) [spigot.jar:git-Bukkit-9e3636d]
            at org.bukkit.craftbukkit.v1_12_R1.CraftServer.reload(CraftServer.java:7
    30) [spigot.jar:git-Bukkit-9e3636d]
            at org.bukkit.Bukkit.reload(Bukkit.java:534) [spigot.jar:git-Bukkit-9e36
    36d]
            at org.bukkit.command.defaults.ReloadCommand.execute(ReloadCommand.java:
    25) [spigot.jar:git-Bukkit-9e3636d]
            at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:14
    0) [spigot.jar:git-Bukkit-9e3636d]
            at org.bukkit.craftbukkit.v1_12_R1.CraftServer.dispatchCommand(CraftServ
    er.java:631) [spigot.jar:git-Bukkit-9e3636d]
            at org.bukkit.craftbukkit.v1_12_R1.CraftServer.dispatchServerCommand(Cra
    ftServer.java:617) [spigot.jar:git-Bukkit-9e3636d]
            at net.minecraft.server.v1_12_R1.DedicatedServer.aP(DedicatedServer.java
    :408) [spigot.jar:git-Bukkit-9e3636d]
            at net.minecraft.server.v1_12_R1.DedicatedServer.D(DedicatedServer.java:
    372) [spigot.jar:git-Bukkit-9e3636d]
            at net.minecraft.server.v1_12_R1.MinecraftServer.C(MinecraftServer.java:
    651) [spigot.jar:git-Bukkit-9e3636d]
            at net.minecraft.server.v1_12_R1.MinecraftServer.run(MinecraftServer.jav
    a:555) [spigot.jar:git-Bukkit-9e3636d]
            at java.lang.Thread.run(Unknown Source) [?:1.8.0_101]
    Caused by: java.lang.NullPointerException
            at me.Minesuchtiiii.OITC.Main.Main.<init>(Main.java:53) ~[?:?]
            at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    ~[?:1.8.0_101]
            at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
    ~[?:1.8.0_101]
            at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Sou
    rce) ~[?:1.8.0_101]
            at java.lang.reflect.Constructor.newInstance(Unknown Source) ~[?:1.8.0_1
    01]
            at java.lang.Class.newInstance(Unknown Source) ~[?:1.8.0_101]
            at org.bukkit.plugin.java.PluginClassLoader.<init>(PluginClassLoader.jav
    a:52) ~[spigot.jar:git-Bukkit-9e3636d]
            at org.bukkit.plugin.java.JavaPluginLoader.loadPlugin(JavaPluginLoader.j
    ava:127) ~[spigot.jar:git-Bukkit-9e3636d]
            ... 14 more
    
    So I have a NPE at me.Minesuchtiiii.OITC.Main.Main.<init>(Main.java:53)
    Line 53 is the line from above...:

    Code:
    public String prefix = ChatColor.translateAlternateColorCodes('&', cfg.getString("Plugin-Prefix"));
    So I checked and the config wasn't created, but if I change the prefix to something like "Test" it gets created...

    Does anyone know what the problem is?
     
  2. Offline

    timtower Administrator Administrator Moderator

    @Minesuchtiiii Don't call Bukkit methods before the onEnable gets called.
    Do the initialization in the onEnable or after it.
     
  3. Offline

    Minesuchtiiii

    So this means I should put it after the onEnable() part?
     
  4. Offline

    timtower Administrator Administrator Moderator

  5. Offline

    Minesuchtiiii

    So I tried something like this now, the config gets created but after the 2 seconds I still get a NPE
    Code:

    Code:
        public void translateConfigStrings() {
          
            Bukkit.getScheduler().scheduleSyncDelayedTask(this, new Runnable() {
              
                public void run() {
                  
                    ChatColor.translateAlternateColorCodes('&', prefix); //line 97
                  
                }
              
            }, 40L);
          
      
        }
    onEnable():

    Code:
        public void onEnable() {
          
        addConfigDefaults();
        translateConfigStrings();
    
    }
    and after 2 seconds getting this error:

    Code:
    java.lang.NullPointerException: null
            at org.bukkit.ChatColor.translateAlternateColorCodes(ChatColor.java:210)
    ~[spigot.jar:git-Bukkit-9e3636d]
            at me.Minesuchtiiii.OITC.Main.Main$1.run(Main.java:97) ~[?:?]
            at org.bukkit.craftbukkit.v1_12_R1.scheduler.CraftTask.run(CraftTask.jav
    a:53) ~[spigot.jar:git-Bukkit-9e3636d]
            at org.bukkit.craftbukkit.v1_12_R1.scheduler.CraftScheduler.mainThreadHe
    artbeat(CraftScheduler.java:352) [spigot.jar:git-Bukkit-9e3636d]
            at net.minecraft.server.v1_12_R1.MinecraftServer.D(MinecraftServer.java:
    690) [spigot.jar:git-Bukkit-9e3636d]
            at net.minecraft.server.v1_12_R1.DedicatedServer.D(DedicatedServer.java:
    371) [spigot.jar:git-Bukkit-9e3636d]
            at net.minecraft.server.v1_12_R1.MinecraftServer.C(MinecraftServer.java:
    651) [spigot.jar:git-Bukkit-9e3636d]
            at net.minecraft.server.v1_12_R1.MinecraftServer.run(MinecraftServer.jav
    a:555) [spigot.jar:git-Bukkit-9e3636d]
            at java.lang.Thread.run(Unknown Source) [?:1.8.0_101]
    >
     
  6. Offline

    timtower Administrator Administrator Moderator

    @Minesuchtiiii You don't need runnables, don't use them for this.
    Check your config and values, what is the value of prefix, what is the value of countdowncancelled
     
  7. Offline

    Minesuchtiiii

    Immediately after the plugin loaded I checked the config and it looked like:

    Code:
    Plugin-Prefix: '&7[&bOneInTheChamber&7] '
    Countdown-Cancelled-Message: '&eCountdown was cancelled.'
    When typing a command of the plugin ingame I get a message like "null<message from command>", so it looks like if the prefix in the config is null
     
  8. Offline

    timtower Administrator Administrator Moderator

  9. Offline

    Minesuchtiiii

    Alright

    Code:
    public class Main extends JavaPlugin {
    
    public FileConfiguration cfg = this.getConfig();   
    
    public String prefix = cfg.getString("Plugin-Prefix");
        public String countdowncancelled = cfg.getString("Countdown-Cancelled-Message");
    
    public void onEnable() {
           
        addConfigDefaults();
        translateConfigStrings();
    
    }
    
        public void addConfigDefaults() {
           
           
            this.cfg.addDefault("Plugin-Prefix", "&7[&bOneInTheChamber&7] ");
            this.cfg.addDefault("Countdown-Cancelled-Message", "&eCountdown was cancelled.");
           
            this.cfg.options().copyDefaults(true);
            this.saveConfig();
            this.reloadConfig();
    
        }
    
        public void translateConfigStrings() {
                   
        ChatColor.translateAlternateColorCodes('&', prefix);
        ChatColor.translateAlternateColorCodes('&', countdowncancelled);
                   
        }
    
    
    }
    
     
  10. Offline

    timtower Administrator Administrator Moderator

    @Minesuchtiiii
    Code:
    public FileConfiguration cfg = this.getConfig();
    public String prefix = cfg.getString("Plugin-Prefix");
    public String countdowncancelled = cfg.getString("Countdown-Cancelled-Message");
    Config is not loaded here, everything after the = should be moved into the onEnable.
     
  11. Offline

    Minesuchtiiii

    I'll give it a try, thank you!
     
Thread Status:
Not open for further replies.

Share This Page