Plugin already initialized strange error

Discussion in 'Plugin Development' started by Aquamen, Jan 5, 2017.

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

    Aquamen

    It is giving problem when I initialize my plugin. "Plugin already initialized!"

    Error:
    Code:
    [00:25:51] [Server thread/INFO]: [WLGeral] Enabling WLGeral v1.0
    [00:25:51] [Server thread/INFO]: [WLGeral] O plugin foi ativado!
    [00:25:51] [Server thread/ERROR]: Error occurred while enabling WLGeral v1.0 (Is it up to date?)
    java.lang.IllegalArgumentException: Plugin already initialized!
        at org.bukkit.plugin.java.PluginClassLoader.initialize(PluginClassLoader.java:122) ~[spigot.jar:git-Spigot-c3c767f-33d5de3]
        at org.bukkit.plugin.java.JavaPlugin.<init>(JavaPlugin.java:66) ~[spigot.jar:git-Spigot-c3c767f-33d5de3]
        at me.walmer.comandos.Comandos.<init>(Comandos.java:9) ~[?:?]
        at me.walmer.inicio.Inicio.onEnable(Inicio.java:19) ~[?:?]
        at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:321) ~[spigot.jar:git-Spigot-c3c767f-33d5de3]
        at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:335) [spigot.jar:git-Spigot-c3c767f-33d5de3]
        at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:405) [spigot.jar:git-Spigot-c3c767f-33d5de3]
        at org.bukkit.craftbukkit.v1_8_R1.CraftServer.loadPlugin(CraftServer.java:356) [spigot.jar:git-Spigot-c3c767f-33d5de3]
        at org.bukkit.craftbukkit.v1_8_R1.CraftServer.enablePlugins(CraftServer.java:316) [spigot.jar:git-Spigot-c3c767f-33d5de3]
        at net.minecraft.server.v1_8_R1.MinecraftServer.q(MinecraftServer.java:402) [spigot.jar:git-Spigot-c3c767f-33d5de3]
        at net.minecraft.server.v1_8_R1.MinecraftServer.k(MinecraftServer.java:370) [spigot.jar:git-Spigot-c3c767f-33d5de3]
        at net.minecraft.server.v1_8_R1.MinecraftServer.a(MinecraftServer.java:325) [spigot.jar:git-Spigot-c3c767f-33d5de3]
        at net.minecraft.server.v1_8_R1.DedicatedServer.init(DedicatedServer.java:211) [spigot.jar:git-Spigot-c3c767f-33d5de3]
        at net.minecraft.server.v1_8_R1.MinecraftServer.run(MinecraftServer.java:505) [spigot.jar:git-Spigot-c3c767f-33d5de3]
        at java.lang.Thread.run(Unknown Source) [?:1.8.0_101]
    Caused by: java.lang.IllegalStateException: Initial initialization
        at org.bukkit.plugin.java.PluginClassLoader.initialize(PluginClassLoader.java:125) ~[spigot.jar:git-Spigot-c3c767f-33d5de3]
        at org.bukkit.plugin.java.JavaPlugin.<init>(JavaPlugin.java:66) ~[spigot.jar:git-Spigot-c3c767f-33d5de3]
        at me.walmer.inicio.Inicio.<init>(Inicio.java:10) ~[?:?]
        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 Source) ~[?:1.8.0_101]
        at java.lang.reflect.Constructor.newInstance(Unknown Source) ~[?:1.8.0_101]
        at java.lang.Class.newInstance(Unknown Source) ~[?:1.8.0_101]
        at org.bukkit.plugin.java.PluginClassLoader.<init>(PluginClassLoader.java:76) ~[spigot.jar:git-Spigot-c3c767f-33d5de3]
        at org.bukkit.plugin.java.JavaPluginLoader.loadPlugin(JavaPluginLoader.java:131) ~[spigot.jar:git-Spigot-c3c767f-33d5de3]
        at org.bukkit.plugin.SimplePluginManager.loadPlugin(SimplePluginManager.java:329) ~[spigot.jar:git-Spigot-c3c767f-33d5de3]
        at org.bukkit.plugin.SimplePluginManager.loadPlugins(SimplePluginManager.java:251) ~[spigot.jar:git-Spigot-c3c767f-33d5de3]
        at org.bukkit.craftbukkit.v1_8_R1.CraftServer.loadPlugins(CraftServer.java:291) ~[spigot.jar:git-Spigot-c3c767f-33d5de3]
        at net.minecraft.server.v1_8_R1.DedicatedServer.init(DedicatedServer.java:152) ~[spigot.jar:git-Spigot-c3c767f-33d5de3]
        ... 2 more
    My class main:

    Code:
    package me.walmer.inicio;
    
    import java.io.File;
    import me.walmer.comandos.Comandos;
    import me.walmer.comandos.Regras;
    import me.walmer.comandos.Youtubers;
    
    import org.bukkit.plugin.java.JavaPlugin;
    
    public class Inicio
        extends JavaPlugin
    {
    
        public void onEnable() {
        
            if(!new File(getDataFolder(), "config.yml").exists() ) {
                saveDefaultConfig();
                RegisterCommands();
            
            }
        }
        public void onDisable() {
        
        }
    
    
         public void RegisterCommands()
         {
           getCommand("comandos").setExecutor(new Comandos());
           getCommand("regras").setExecutor(new Regras());
           getCommand("youtube").setExecutor(new Youtubers());
         }
    
    
    }
    My plugin.yml


    Code:
    name: WLGeral
    version: 1.0
    main: me.walmer.inicio.Inicio
    
    commands:
      comandos:
        description:
      youtube:
        description:
      regras:
        description:
     
  2. Offline

    Zombie_Striker

    @AquamenEithber
    There can be only one instance that extends Javaplugin. Make sure there are no other classes extending Java plugin and that you are not creating a new instance of Inicio.
     
  3. Offline

    0verFull

    @Aquamen I think you instance Main.class in an other class. Please check in your class Comandos if you have an instance of Main (like new Main() or something like that).
    The Main class which entends from JavaPlugin can be instanced only one time and it bukkit who do that.
    If you need more help please post your Comandos class code.
     
  4. Offline

    Aquamen

    Thanks, but now, i managed to sort, but when I type the command inside the server, it does not work.

    my class main:
    Code:
    package me.walmer.inicio;
    
    import java.io.File;
    import me.walmer.comandos.Comandos;
    import me.walmer.comandos.Regras;
    import me.walmer.comandos.Youtubers;
    
    import org.bukkit.Bukkit;
    import org.bukkit.plugin.java.JavaPlugin;
    
    public class Inicio
        extends JavaPlugin
    {
     
        public void onEnable() {
         
            if(!new File(getDataFolder(), "config.yml").exists() ) {
                saveDefaultConfig();
                RegisterCommands();
             
            }
        }
        public void onDisable() {
         
        }
     
    
          public void RegisterCommands()
          {
            getCommand("comandos").setExecutor(new Comandos());
            getCommand("regras").setExecutor(new Regras());
            getCommand("youtube").setExecutor(new Youtubers());
          }
       
          public Inicio getMe()
          {
            return this;
          }
       
          public static Inicio getMain()
          {
            return (Inicio)Bukkit.getServer().getPluginManager().getPlugin("WLGeral");
          }
    }
    
    My class comandos
    Code:
    package me.walmer.comandos;
    
    import org.bukkit.command.Command;
    import org.bukkit.command.CommandExecutor;
    import org.bukkit.command.CommandSender;
    import org.bukkit.configuration.file.FileConfiguration;
    import org.bukkit.entity.Player;
    import me.walmer.inicio.*;
    
    public class Comandos
    implements CommandExecutor
    {
        FileConfiguration config = Inicio.getMain().getConfig();
        public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
            if(!(sender instanceof Player))
            {     
                sender.sendMessage("Comando desativado via console.");
                return true;
            }
            Player p = (Player) sender;
            if (cmd.getName().equalsIgnoreCase("comandos")) {
                if (!p.hasPermission("WLGeral.comandos") ) {
                    p.sendMessage(this.config.getString("Sem_Permissao").replace("&", "§"));
                    return true;
                }
             
                p.sendMessage(this.config.getString("Mensagem_comandos").replace("@pular", "\n").replace("{player}", p.getName()).replace("&", "§"));
                return true;
             
             
            }
     
            return false;
        }
     
    }
    
    My class youtube:
    Code:
    package me.walmer.comandos;
    
    import org.bukkit.command.Command;
    import org.bukkit.command.CommandExecutor;
    import org.bukkit.command.CommandSender;
    import org.bukkit.configuration.file.FileConfiguration;
    import org.bukkit.entity.Player;
    
    import me.walmer.inicio.Inicio;
    
    public class Youtubers
    implements CommandExecutor {
     
        FileConfiguration config = Inicio.getMain().getConfig();
     
        public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
            if(!(sender instanceof Player))
            {     
                sender.sendMessage("Comando desativado via console.");
                return true;
            }
            Player p = (Player) sender;
            if (cmd.getName().equalsIgnoreCase("youtube")) {
                if (!p.hasPermission("WLGeral.youtube") ) {
                    p.sendMessage(this.config.getString("Sem_Permissao").replace("&", "§"));
                    return true;
                }
             
                p.sendMessage(this.config.getString("Mensagem_youtube").replace("@pular", "\n").replace("{player}", p.getName()).replace("&", "§"));
                return true;
             
             
            }
     
            return false;
        }
    
    }
    
    My class Regras:
    Code:
    package me.walmer.comandos;
    
    import org.bukkit.command.Command;
    import org.bukkit.command.CommandExecutor;
    import org.bukkit.command.CommandSender;
    import org.bukkit.configuration.file.FileConfiguration;
    import org.bukkit.entity.Player;
    
    import me.walmer.inicio.Inicio;
    
    public class Regras
    implements CommandExecutor{
        FileConfiguration config = Inicio.getMain().getConfig();
     
        public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
            if(!(sender instanceof Player))
            {     
                sender.sendMessage("Comando desativado via console.");
                return true;
            }
            Player p = (Player) sender;
            if (cmd.getName().equalsIgnoreCase("regras")) {
                if (!p.hasPermission("WLGeral.regras") ) {
                    p.sendMessage(this.config.getString("Sem_Permissao").replace("&", "§"));
                    return true;
                }
             
                p.sendMessage(this.config.getString("Mensagem_regras").replace("@pular", "\n").replace("{player}", p.getName()).replace("&", "§"));
                return true;
             
             
            }
     
            return false;
        }
    
    }
    
    Config.yml =
    Code:
    #Aqui voce pode editar as mensagens que vai aparecer no servidor, para pular a linha digite @pular, para que apareça no chat
    #o nick do player digita {player}, pode mudar as cores aqui, como se fosse no chat, ex: &4, &3 ....
    
    Sem_Permissao: '&6[!] &aVocê não tem permissão para digitar esse comando.'
    
    Mensagem_youtube: '&6[!] &aMensagem youtube: @pular, Para entrar precisa de: @pular'
    
    Mensagem_comandos: '&6[!] &aMensagem comandos: @pular, Os comandos são: @pular Comando 1:'
    
    Mensagem_regras: '&6[!] &aMensagem regras: @pular, As regras são: @pular Regra 1:'
    My plugin.yml
    Code:
    name: WLGeral
    version: 1.0
    main: me.walmer.inicio.Inicio
    commands:
      comandos:
        description: Player ver os comandos do servidor
      youtube:
        description: Player ver qual os requerimentos para entrar para o grupo youtubers
      regras:
        description: Player ver as regras
    
     
  5. Offline

    GraveThief

    On disable, you aren't saving your config so on enable it might not recognize the config as it hasn't been saved on disable. Try take the RegisterCommands(); out of the if statement in onEnable and just put it at the top or bottom. Just an idea :)
    @Aquamen
     
  6. Offline

    0verFull

    @Aquamen

    Just put out your RegisterCommands() method of the if statement.

    Explanations :
    Your condition in the if statement is true only if the config file not exist, so at the first start the condition result true so it work but at the other start the condition result is false so the RegisterCommands () method isn't call.

    PS: rename your RegisterCommands() method by registerCommands(), in convention method start with a lowercase.
     
  7. Offline

    Aquamen

    THAAAAANKS PEOPLES, =D
     
  8. Offline

    Zombie_Striker

    @Aquamen
    If your problem has been solved, mark this thread as solved.
     
Thread Status:
Not open for further replies.

Share This Page