Can You Tell Me What's Wrong Here?

Discussion in 'Plugin Development' started by mattrick, Sep 2, 2013.

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

    mattrick

    I am creating a minigame plugin. Its been going fine so far, but I've become stumped on this part. I am trying to get a random player from online players. That returns a Player name cannot be null error. I am also trying to get a list of words from a config it gave me a mapping values aren't allowed here error. (I would show you my console but not quite sure how to copy it....)


    Code:java
    1. if (command.getName().equalsIgnoreCase("creategame")){
    2. Player random = Bukkit.getOnlinePlayers()[new Random().nextInt(Bukkit.getOnlinePlayers().length)];
    3. Location loc = new Location(
    4. Bukkit.getServer().getWorld(plugin.getConfig().getString("Loc.world")),
    5. plugin.getConfig().getDouble("Loc.x"),
    6. plugin.getConfig().getDouble("Loc.y"),
    7. plugin.getConfig().getDouble("Loc.z"));
    8. random.teleport((loc));
    9. List<?> words = plugin.getConfig().getList("Words");
    10. String word = (String) words.get(new Random().nextInt(words.size()));
    11. sender.sendMessage(word);
    12. sender.sendMessage("New game started! Waiting for players...");
    13. }
    14. } else {
    15. sender.sendMessage("Only players can run this command!");
    16. return false;
    17. }
    18. return false;
    19. }
     
  2. Offline

    Saposhiente

    Make sure that there is actually at least one player online. Otherwise player will be null.
    P.S. Give us full error report and the line on which the error occurs, otherwise we won't be able to help you with non-obvious errors
     
  3. Offline

    mattrick

    Show Spoiler
    [SEVERE] Cannot load plugins\Blocktionary\config.yml
    org.bukkit.configuration.InvalidConfigurationException: mapping values are not allowed here
    in "<string>", line 11, column 30:
    z: -123.43599741635238Words: hi hello
    ^

    at org.bukkit.configuration.file.YamlConfiguration.loadFromString(YamlConfiguration.java:55)
    at org.bukkit.configuration.file.FileConfiguration.load(FileConfiguration.java:138)
    at org.bukkit.configuration.file.FileConfiguration.load(FileConfiguration.java:105)
    at org.bukkit.configuration.file.YamlConfiguration.loadConfiguration(YamlConfiguration.java:175)
    at org.bukkit.plugin.java.JavaPlugin.reloadConfig(JavaPlugin.java:117)
    at org.bukkit.plugin.java.JavaPlugin.getConfig(JavaPlugin.java:111)
    at com.gmail.marbolgames.CommandExecutorClass.onCommand(CommandExecutorClass.java:47)
    at org.bukkit.command.PluginCommand.execute(PluginCommand.java:44)
    at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:189)
    at org.bukkit.craftbukkit.v1_6_R2.CraftServer.dispatchCommand(CraftServer.java:523)
    at net.minecraft.server.v1_6_R2.PlayerConnection.handleCommand(PlayerConnection.java:964)
    at net.minecraft.server.v1_6_R2.PlayerConnection.chat(PlayerConnection.java:882)
    at net.minecraft.server.v1_6_R2.PlayerConnection.a(PlayerConnection.java:839)
    at net.minecraft.server.v1_6_R2.Packet3Chat.handle(SourceFile:49)
    at net.minecraft.server.v1_6_R2.NetworkManager.b(NetworkManager.java:296)
    at net.minecraft.server.v1_6_R2.PlayerConnection.e(PlayerConnection.java:118)
    at net.minecraft.server.v1_6_R2.ServerConnection.b(SourceFile:37)
    at net.minecraft.server.v1_6_R2.DedicatedServerConnection.b(SourceFile:30)
    at net.minecraft.server.v1_6_R2.MinecraftServer.t(MinecraftServer.java:590)
    at net.minecraft.server.v1_6_R2.DedicatedServer.t(DedicatedServer.java:226)
    at net.minecraft.server.v1_6_R2.MinecraftServer.s(MinecraftServer.java:486)
    at net.minecraft.server.v1_6_R2.MinecraftServer.run(MinecraftServer.java:419)
    at net.minecraft.server.v1_6_R2.ThreadServerApplication.run(SourceFile:582)
    Caused by: mapping values are not allowed here
    in "<string>", line 11, column 30:
    z: -123.43599741635238Words: hi hello
    ^

    at org.yaml.snakeyaml.scanner.ScannerImpl.fetchValue(ScannerImpl.java:733)
    at org.yaml.snakeyaml.scanner.ScannerImpl.fetchMoreTokens(ScannerImpl.java:305)
    at org.yaml.snakeyaml.scanner.ScannerImpl.checkToken(ScannerImpl.java:179)
    at org.yaml.snakeyaml.parser.ParserImpl$ParseBlockMappingKey.produce(ParserImpl.java:563)
    at org.yaml.snakeyaml.parser.ParserImpl.peekEvent(ParserImpl.java:161)
    at org.yaml.snakeyaml.parser.ParserImpl.checkEvent(ParserImpl.java:146)
    at org.yaml.snakeyaml.composer.Composer.composeMappingNode(Composer.java:230)
    at org.yaml.snakeyaml.composer.Composer.composeNode(Composer.java:160)
    at org.yaml.snakeyaml.composer.Composer.composeMappingNode(Composer.java:237)
    at org.yaml.snakeyaml.composer.Composer.composeNode(Composer.java:160)
    at org.yaml.snakeyaml.composer.Composer.composeDocument(Composer.java:123)
    at org.yaml.snakeyaml.composer.Composer.getSingleNode(Composer.java:106)
    at org.yaml.snakeyaml.constructor.BaseConstructor.getSingleData(BaseConstructor.java:121)
    at org.yaml.snakeyaml.Yaml.loadFromReader(Yaml.java:480)
    at org.yaml.snakeyaml.Yaml.load(Yaml.java:399)
    at org.bukkit.configuration.file.YamlConfiguration.loadFromString(YamlConfiguration.java:53)
    ... 22 more
    2013-09-02 16:09:06 [SEVERE] null
    org.bukkit.command.CommandException: Unhandled exception executing command 'creategame' in plugin Blocktionary v1.0
    at org.bukkit.command.PluginCommand.execute(PluginCommand.java:46)
    at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:189)
    at org.bukkit.craftbukkit.v1_6_R2.CraftServer.dispatchCommand(CraftServer.java:523)
    at net.minecraft.server.v1_6_R2.PlayerConnection.handleCommand(PlayerConnection.java:964)
    at net.minecraft.server.v1_6_R2.PlayerConnection.chat(PlayerConnection.java:882)
    at net.minecraft.server.v1_6_R2.PlayerConnection.a(PlayerConnection.java:839)
    at net.minecraft.server.v1_6_R2.Packet3Chat.handle(SourceFile:49)
    at net.minecraft.server.v1_6_R2.NetworkManager.b(NetworkManager.java:296)
    at net.minecraft.server.v1_6_R2.PlayerConnection.e(PlayerConnection.java:118)
    at net.minecraft.server.v1_6_R2.ServerConnection.b(SourceFile:37)
    at net.minecraft.server.v1_6_R2.DedicatedServerConnection.b(SourceFile:30)
    at net.minecraft.server.v1_6_R2.MinecraftServer.t(MinecraftServer.java:590)
    at net.minecraft.server.v1_6_R2.DedicatedServer.t(DedicatedServer.java:226)
    at net.minecraft.server.v1_6_R2.MinecraftServer.s(MinecraftServer.java:486)
    at net.minecraft.server.v1_6_R2.MinecraftServer.run(MinecraftServer.java:419)
    at net.minecraft.server.v1_6_R2.ThreadServerApplication.run(SourceFile:582)
    Caused by: java.lang.IllegalArgumentException: Name cannot be null
    at org.apache.commons.lang.Validate.notNull(Validate.java:203)
    at org.bukkit.craftbukkit.v1_6_R2.CraftServer.getWorld(CraftServer.java:819)
    at com.gmail.marbolgames.CommandExecutorClass.onCommand(CommandExecutorClass.java:47)
    at org.bukkit.command.PluginCommand.execute(PluginCommand.java:44)
    ... 15 more
     
  4. Offline

    Saposhiente

    The problem is that your config is misformatted and cannot be read. This causes plugin.getConfig().getString("Loc.world") to return null, and thus for you to attempt and fail to Bukkit.getServer().getWorld(null)
     
  5. Offline

    mattrick

    Ok thanks it teleports me fine now but I still get an internal error. Here is the log:
    Show Spoiler
    2013-09-02 19:38:23 [INFO] mattrick16 issued server command: /specspawn
    2013-09-02 19:38:31 [INFO] mattrick16 issued server command: /creategame
    2013-09-02 19:38:31 [SEVERE] null
    org.bukkit.command.CommandException: Unhandled exception executing command 'creategame' in plugin Blocktionary v1.0
    at org.bukkit.command.PluginCommand.execute(PluginCommand.java:46)
    at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:189)
    at org.bukkit.craftbukkit.v1_6_R2.CraftServer.dispatchCommand(CraftServer.java:523)
    at net.minecraft.server.v1_6_R2.PlayerConnection.handleCommand(PlayerConnection.java:964)
    at net.minecraft.server.v1_6_R2.PlayerConnection.chat(PlayerConnection.java:882)
    at net.minecraft.server.v1_6_R2.PlayerConnection.a(PlayerConnection.java:839)
    at net.minecraft.server.v1_6_R2.Packet3Chat.handle(SourceFile:49)
    at net.minecraft.server.v1_6_R2.NetworkManager.b(NetworkManager.java:296)
    at net.minecraft.server.v1_6_R2.PlayerConnection.e(PlayerConnection.java:118)
    at net.minecraft.server.v1_6_R2.ServerConnection.b(SourceFile:37)
    at net.minecraft.server.v1_6_R2.DedicatedServerConnection.b(SourceFile:30)
    at net.minecraft.server.v1_6_R2.MinecraftServer.t(MinecraftServer.java:590)
    at net.minecraft.server.v1_6_R2.DedicatedServer.t(DedicatedServer.java:226)
    at net.minecraft.server.v1_6_R2.MinecraftServer.s(MinecraftServer.java:486)
    at net.minecraft.server.v1_6_R2.MinecraftServer.run(MinecraftServer.java:419)
    at net.minecraft.server.v1_6_R2.ThreadServerApplication.run(SourceFile:582)
    Caused by: java.lang.NullPointerException
    at com.gmail.marbolgames.CommandExecutorClass.onCommand(CommandExecutorClass.java:53)
    at org.bukkit.command.PluginCommand.execute(PluginCommand.java:44)
    ... 15 more
     
  6. Offline

    xTrollxDudex

    mattrick16
    The list should not be full of ? Elements, use getStringlist or getIntegerList or something. Also, plugin may be null.
     
  7. Offline

    mattrick

    Sorry for asking to be spoon-fed code but do you think you can give me an example. I changed getList to getString list. and my List<?> variable to List<String> and it still doesn't work....

    Show Spoiler
    2013-09-02 19:52:08 [INFO] [Blocktionary] Disabling Blocktionary v1.0
    2013-09-02 19:52:08 [INFO] [Blocktionary] Loading Blocktionary v1.0
    2013-09-02 19:52:08 [INFO] [Blocktionary] Enabling Blocktionary v1.0
    2013-09-02 19:52:08 [INFO] Server permissions file permissions.yml is empty, ignoring it
    2013-09-02 19:52:08 [INFO] CONSOLE: Reload complete.
    2013-09-02 19:52:16 [INFO] mattrick16 issued server command: /creategame
    2013-09-02 19:52:16 [SEVERE] null
    org.bukkit.command.CommandException: Unhandled exception executing command 'creategame' in plugin Blocktionary v1.0
    at org.bukkit.command.PluginCommand.execute(PluginCommand.java:46)
    at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:189)
    at org.bukkit.craftbukkit.v1_6_R2.CraftServer.dispatchCommand(CraftServer.java:523)
    at net.minecraft.server.v1_6_R2.PlayerConnection.handleCommand(PlayerConnection.java:964)
    at net.minecraft.server.v1_6_R2.PlayerConnection.chat(PlayerConnection.java:882)
    at net.minecraft.server.v1_6_R2.PlayerConnection.a(PlayerConnection.java:839)
    at net.minecraft.server.v1_6_R2.Packet3Chat.handle(SourceFile:49)
    at net.minecraft.server.v1_6_R2.NetworkManager.b(NetworkManager.java:296)
    at net.minecraft.server.v1_6_R2.PlayerConnection.e(PlayerConnection.java:118)
    at net.minecraft.server.v1_6_R2.ServerConnection.b(SourceFile:37)
    at net.minecraft.server.v1_6_R2.DedicatedServerConnection.b(SourceFile:30)
    at net.minecraft.server.v1_6_R2.MinecraftServer.t(MinecraftServer.java:590)
    at net.minecraft.server.v1_6_R2.DedicatedServer.t(DedicatedServer.java:226)
    at net.minecraft.server.v1_6_R2.MinecraftServer.s(MinecraftServer.java:486)
    at net.minecraft.server.v1_6_R2.MinecraftServer.run(MinecraftServer.java:419)
    at net.minecraft.server.v1_6_R2.ThreadServerApplication.run(SourceFile:582)
    Caused by: java.lang.IllegalArgumentException: n must be positive
    at java.util.Random.nextInt(Unknown Source)
    at com.gmail.marbolgames.CommandExecutorClass.onCommand(CommandExecutorClass.java:54)
    at org.bukkit.command.PluginCommand.execute(PluginCommand.java:44)
    ... 15 more


    EDIT: The plugin is not null it is declared at the beginning of my class.
     
  8. Offline

    xTrollxDudex

    mattrick16
    You need to set plugin to a value. If its like
    PHP:
    ClassName plugin;
    Then it's null. It's not initialized. You need a constructor called when registering the command executor to initialize the plugin variable.
     
  9. Offline

    mattrick

    Like this?
    Code:java
    1. public Blocktionary plugin;
    2.  
    3. public CommandExecutorClass(Blocktionary plugin){
    4. this.plugin = plugin;
    5. }

    From what I see its something with a variable n being negative?
     
  10. Offline

    xTrollxDudex

    mattrick16
    Is that what you did?

    Edit: Whoops, didn't read the stack trace righ
     
  11. Offline

    mattrick

    Yeah thats what I did originally.
     
  12. Offline

    Saposhiente

    You're trying to select one player at random when no players are online.
     
  13. Offline

    mattrick

    No that part works fine it is a problem with getting a random word from a config. Besides I made sure that you cannot run from console.
     
  14. Offline

    Saposhiente

    Well what is line 54? Because that's where the problem is.
    at com.gmail.marbolgames.CommandExecutorClass.onCommand(CommandExecutorClass.java:54)
     
  15. Offline

    mattrick


    Code:java
    1. String word = (String) words.get(new Random().nextInt(words.size()));

    This is the line.
     
  16. Offline

    Saposhiente

  17. Offline

    mattrick

  18. Offline

    Saposhiente

    assuming that your getStringList is correct, that's how you get a random word, but before attempting to get a random word you have to ensure that there is a random word to get.
     
  19. Offline

    mattrick

    I am sure but I think now its actually a problem with getWorld......

    Code:
    2013-09-03 19:22:40 [SEVERE] null
    org.bukkit.command.CommandException: Unhandled exception executing command 'creategame' in plugin Blocktionary v1.0
        at org.bukkit.command.PluginCommand.execute(PluginCommand.java:46)
        at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:189)
        at org.bukkit.craftbukkit.v1_6_R2.CraftServer.dispatchCommand(CraftServer.java:523)
        at net.minecraft.server.v1_6_R2.PlayerConnection.handleCommand(PlayerConnection.java:964)
        at net.minecraft.server.v1_6_R2.PlayerConnection.chat(PlayerConnection.java:882)
        at net.minecraft.server.v1_6_R2.PlayerConnection.a(PlayerConnection.java:839)
        at net.minecraft.server.v1_6_R2.Packet3Chat.handle(SourceFile:49)
        at net.minecraft.server.v1_6_R2.NetworkManager.b(NetworkManager.java:296)
        at net.minecraft.server.v1_6_R2.PlayerConnection.e(PlayerConnection.java:118)
        at net.minecraft.server.v1_6_R2.ServerConnection.b(SourceFile:37)
        at net.minecraft.server.v1_6_R2.DedicatedServerConnection.b(SourceFile:30)
        at net.minecraft.server.v1_6_R2.MinecraftServer.t(MinecraftServer.java:590)
        at net.minecraft.server.v1_6_R2.DedicatedServer.t(DedicatedServer.java:226)
        at net.minecraft.server.v1_6_R2.MinecraftServer.s(MinecraftServer.java:486)
        at net.minecraft.server.v1_6_R2.MinecraftServer.run(MinecraftServer.java:419)
        at net.minecraft.server.v1_6_R2.ThreadServerApplication.run(SourceFile:582)
    Caused by: java.lang.IllegalArgumentException: Name cannot be null
        at org.apache.commons.lang.Validate.notNull(Validate.java:203)
        at org.bukkit.craftbukkit.v1_6_R2.CraftServer.getWorld(CraftServer.java:819)
        at com.gmail.marbolgames.CommandExecutorClass.onCommand(CommandExecutorClass.java:47)
        at org.bukkit.command.PluginCommand.execute(PluginCommand.java:44)
        ... 15 more
    This is if I set world to world.
     
  20. Offline

    Saposhiente

  21. Offline

    mattrick

    Ok I get it. There is a problem on my config getWorld() method in my command executor class on line 47. I am trying to get a world from a config. How should I go about this?
     
  22. Offline

    Janmm14

    It would be nice to see your config file and your whole class file (correct line numbers please), so that we can look at it and get the point where the world name turns null.
     
  23. Offline

    Saposhiente

    Caused by: java.lang.IllegalArgumentException: Name cannot be null
    This is what getWorld(String name) is returning. So clearly, whatever you're doing to retrieve your world from your config is returning null, aka, not found. This can be because you've misspelled, misformatted, or omitted the proper config entry.
     
    mattrick16 likes this.
  24. Offline

    mattrick


    Ok I fixed it thanks!
     
Thread Status:
Not open for further replies.

Share This Page