I don't what this Error means x.x

Discussion in 'Plugin Development' started by Cammeritz, Jan 21, 2014.

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

    Cammeritz

    Hay Guys,

    i am developing a new Plugin, it contains a censored words function.
    The problem is... it is not loading the /censored command and i don't know why...

    Maybe You can help me, here is my

    Stacktrace:
    PHP:
    [19:36:11] [Server thread/ERROR]: Error occurred while enabling LobbyManager v1.0 (Is it up to date?)
    java.lang.NullPointerException
        at de
    .Cammeritz.LobbyManager.CensoredCommand.<init>(CensoredCommand.java:19) ~[?:?]
        
    at de.Cammeritz.LobbyManager.LobbyManager.onEnable(LobbyManager.java:15) ~[?:?]
        
    at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:218) ~[craftbukkit.jar:git-Bukkit-1.7.2-R0.2-b2974jnks]
        
    at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:457) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-b2974jnks]
        
    at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:384) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-b2974jnks]
        
    at org.bukkit.craftbukkit.v1_7_R1.CraftServer.loadPlugin(CraftServer.java:298) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-b2974jnks]
        
    at org.bukkit.craftbukkit.v1_7_R1.CraftServer.enablePlugins(CraftServer.java:280) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-b2974jnks]
        
    at org.bukkit.craftbukkit.v1_7_R1.CraftServer.reload(CraftServer.java:630) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-b2974jnks]
        
    at org.bukkit.Bukkit.reload(Bukkit.java:279) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-b2974jnks]
        
    at org.bukkit.command.defaults.ReloadCommand.execute(ReloadCommand.java:23) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-b2974jnks]
        
    at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:196) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-b2974jnks]
        
    at org.bukkit.craftbukkit.v1_7_R1.CraftServer.dispatchCommand(CraftServer.java:542) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-b2974jnks]
        
    at net.minecraft.server.v1_7_R1.PlayerConnection.handleCommand(PlayerConnection.java:932) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-b2974jnks]
        
    at net.minecraft.server.v1_7_R1.PlayerConnection.a(PlayerConnection.java:814) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-b2974jnks]
        
    at net.minecraft.server.v1_7_R1.PacketPlayInChat.a(PacketPlayInChat.java:28) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-b2974jnks]
        
    at net.minecraft.server.v1_7_R1.PacketPlayInChat.handle(PacketPlayInChat.java:47) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-b2974jnks]
        
    at net.minecraft.server.v1_7_R1.NetworkManager.a(NetworkManager.java:146) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-b2974jnks]
        
    at net.minecraft.server.v1_7_R1.ServerConnection.c(SourceFile:134) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-b2974jnks]
        
    at net.minecraft.server.v1_7_R1.MinecraftServer.u(MinecraftServer.java:655) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-b2974jnks]
        
    at net.minecraft.server.v1_7_R1.DedicatedServer.u(DedicatedServer.java:250) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-b2974jnks]
        
    at net.minecraft.server.v1_7_R1.MinecraftServer.t(MinecraftServer.java:545) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-b2974jnks]
        
    at net.minecraft.server.v1_7_R1.MinecraftServer.run(MinecraftServer.java:457) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-b2974jnks]
        
    at net.minecraft.server.v1_7_R1.ThreadServerApplication.run(SourceFile:617) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-b2974jnks]
    and my Source Code:
    Code:java
    1. package de.Cammeritz.LobbyManager;
    2.  
    3. import java.util.List;
    4.  
    5. import org.bukkit.ChatColor;
    6. import org.bukkit.command.Command;
    7. import org.bukkit.command.CommandExecutor;
    8. import org.bukkit.command.CommandSender;
    9. import org.bukkit.entity.Player;
    10.  
    11. public class CensoredCommand implements CommandExecutor {
    12.  
    13.  
    14. private LobbyManager plugin;
    15. public CensoredCommand(LobbyManager instance) {
    16. this.plugin = instance;
    17. }
    18.  
    19. List<String> censored = this.plugin.getConfig().getStringList("chat.censored.words");
    20.  
    21. @Override
    22. public boolean onCommand(CommandSender cs, Command cmd, String label,
    23. String[] args) {
    24. if(!cs.hasPermission("lobbymanager.censored")){
    25. cs.sendMessage("§cYou are not permitted to use the Censored-Command!");
    26. return true;
    27. } else if (cs.hasPermission("lobbymanager.censored")){
    28. try {
    29. if(args.length == 0){
    30. cs.sendMessage("§9[]=======< §eCensored-Commands §9>=======[]");
    31. cs.sendMessage("§3/censored list: §eShows the censored words");
    32. cs.sendMessage("§3/censored add [word]: §eAdd an censored word");
    33. cs.sendMessage("§3/censored remove [word]: §eRemove an censored word");
    34. cs.sendMessage("§9[]=============================[]");
    35. return true;
    36. } else if(args.length == 1){
    37. if(args[0].equalsIgnoreCase("list")){
    38. cs.sendMessage("§9[]=======< §eCensored-Words §9=======[]");
    39. for(String censoredwords : censored){
    40. cs.sendMessage("§c- " + ChatColor.translateAlternateColorCodes('&', censoredwords));
    41. }
    42. cs.sendMessage("§9[]=======< §eCensored-Words §9=======[]");
    43. return true;
    44. } else if(args[0].equalsIgnoreCase("add")){
    45. cs.sendMessage("§cYou have to add an word which should be censored!");
    46. cs.sendMessage("§cDo it like this: /censored add [word]");
    47. return true;
    48. } else if(args[0].equalsIgnoreCase("remove")){
    49. cs.sendMessage("§cYou have to remove an word which should be uncensored!");
    50. cs.sendMessage("§cDo it like this: /censored remove [word]");
    51. return true;
    52. } else if(args[0].equalsIgnoreCase("help")){
    53. Player p = (Player) cs;
    54. p.chat("/censored");
    55. return true;
    56. }
    57.  
    58. else {
    59. cs.sendMessage("§cUnknown Command, do /censored");
    60. return true;
    61. }
    62. } else if (args.length == 2){
    63. if(args[0].equalsIgnoreCase("add")){
    64. censored.add(args[1]);
    65. cs.sendMessage("§7Censored §6" + args[1] + " §7!");
    66. this.plugin.saveConfig();
    67. this.plugin.reloadConfig();
    68. } else if (args[0].equalsIgnoreCase("remove")){
    69. censored.remove(args[1]);
    70. cs.sendMessage("§7Uncensored §6" + args[1] + " §7!");
    71. this.plugin.saveConfig();
    72. this.plugin.reloadConfig();
    73. } else {
    74. cs.sendMessage("§cThere is now /censored" + args[0] + " command, do /censored");
    75. return true;
    76. }
    77. } else {
    78. cs.sendMessage("§cUnknown Command, do /censored for help!");
    79. return true;
    80. }
    81. } catch (NullPointerException e) {
    82. e.printStackTrace();
    83. }
    84. }
    85. return true;
    86. }
    87.  
    88. }
    89.  

    and my Main Class:
    Code:
    package de.Cammeritz.LobbyManager;
     
     
    import org.bukkit.Bukkit;
    import org.bukkit.configuration.file.FileConfiguration;
    import org.bukkit.plugin.PluginManager;
    import org.bukkit.plugin.java.JavaPlugin;
     
    public class LobbyManager extends JavaPlugin{
       
        public void onEnable(){
               
                System.out.println("[LobbyManager] by Cammeritz");
               
                this.getCommand("censored").setExecutor(new CensoredCommand(this));
               
                PluginManager pm = Bukkit.getServer().getPluginManager();
               
                pm.registerEvents(new CensoredListener(this), this);
               
                FileConfiguration config = this.getConfig();
                config.addDefault("chat.censored.words", new String[]{
                        "ass",
                        "tits",
                        "fuck",
                        "gay",
                        "bitch",
                        "damn",
                        "damnit",
                        "sex",
                        "porn",
                        "penis",
                        "pussy",
                        "bastard",
                        "motherfucker"
                });
                config.addDefault("chat.censored.replace", "&4⨯⨯⨯⨯⨯⨯⨯⨯⨯⨯&f");
                this.getConfig().options().copyDefaults(true);
                this.saveConfig();
                   
        }
       
       
        public void onDisable(){
            System.out.println("[LobbyManager] by Cammeritz");
        }
    }
    
    and here is my plugin.yml:
    PHP:
    authorCammeritz
    name
    LobbyManager
    version
    1.0
    description
    Everything a Lobby needs
    database
    false
     
    main
    de.Cammeritz.LobbyManager.LobbyManager
     
    commands
    :
      
    censored:
        
    permissionlobbymanager.censored
        description
    Censoring Words
        usage
    : /censored
    permissions
    :
      
    lobbymanager.*:
        
    descriptionAll LobbyManager Permissions
        children
    :
          
    lobbymanager.censoredtrue
          lobbymanager
    .censoredbypasstrue
      lobbymanager
    .censored:
        
    descriptionPermission for Censored commands
      lobbymanager
    .censoredbypass:
        
    descriptionAccess to chat with censored words

    Thanky to Everyone who trys to help me :)
     
  2. Offline

    beastman3226

    You use the instance of your plugin before it is instantiated. Try doing it like this in your onEnable():
    Code:java
    1.  
    2. //in class not inside the onEnable method
    3. public static ArrayList<String> censored;
    4.  
    5. @Override
    6. public void onEnable() {
    7. //all your other things
    8. censored = new ArrayList<String>(getConfig().getStringList("chat.censored.words"));
    9. }
    10.  


    Whenever you want to check against that list just do "LobbyManager.censored.<insertMethodHere>()";
     
    Cammeritz and adam753 like this.
  3. Offline

    adam753

    The error is on line 19 - you're making the "censored" variable and trying to set its value to something straight away. The problem is, that will happen as soon as the class is created, which means before the constructor is called, so your plugin variable will not be set yet.

    Do this instead:
    Code:java
    1.  
    2. public CensoredCommand(LobbyManager instance) {
    3. this.plugin = instance;
    4. censored = this.plugin.getConfig().getStringList("chat.censored.words");
    5. }
    6.  
    7. List<String> censored;
    8.  


    Note to self: must learn to type faster.
     
    Cammeritz likes this.
  4. Offline

    Cammeritz

    beastman3226 Thankkk youu, your like a god for me :3 It is working now. Biiig thanks <3 :D
    adam753 thanks for replying, but beastman3226's code works great :)
     
Thread Status:
Not open for further replies.

Share This Page