Development Assistance Finding Text In A StringList

Discussion in 'Plugin Help/Development/Requests' started by 16austin16, Jun 4, 2015.

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

    16austin16

    I Am Trying To Make Rewards That The Plugin User Can Customly Set But When I Try To Do It The Way I Think It Gives Me A NullPointerExeption

    OnPlayerDeathEvent:
    Code:
        public void onPlayerKillEvent(PlayerDeathEvent event) {
            Player killed = event.getEntity();
            Player killer = event.getEntity().getKiller();
          
    //        if(killer == killed) {
    //            return;
    //        } else {
                List<String> items = Main.rewards.getStringList("Rewards.ItemID");
                List<String> amount = Main.rewards.getStringList("Rewards.Amount");
                List<String> kills = Main.rewards.getStringList("Rewards.Kills");
                int reward = Main.user.getInt("Players." + killer.getName() + ".OnRewards");
                Main.user.set("Players." + killer.getName() + ".Kills", Main.user.getInt("Players." + killer.getName() + ".Kills") + 1);
                Main.user.set("Players." + killed.getName() + ".Deaths", Main.user.getInt("Players." + killed.getName() + ".Deaths") + 1);
                String pkills = Main.user.get("Player." + killer.getName() + ".Kills").toString();
                if(kills.contains(pkills)) {
                    killer.sendMessage(ChatColor.GREEN + "It Worked!");
                    Main.user.set("Players." + killer.getName() + ".OnRewards", reward + 1);
                }
    //        }
    Consle Error:
    Code:
    [07:32:12 ERROR]: Could not pass event PlayerDeathEvent to SimpleCommands v1.0
    org.bukkit.event.EventException
            at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.ja
    va:294) ~[spigot.jar:git-Spigot-1494]
            at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.jav
    a:62) ~[spigot.jar:git-Spigot-1494]
            at org.bukkit.plugin.TimedRegisteredListener.callEvent(TimedRegisteredLi
    stener.java:30) ~[spigot.jar:git-Spigot-1494]
            at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.j
    ava:502) [spigot.jar:git-Spigot-1494]
            at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.j
    ava:487) [spigot.jar:git-Spigot-1494]
            at org.bukkit.craftbukkit.v1_7_R3.event.CraftEventFactory.callPlayerDeat
    hEvent(CraftEventFactory.java:387) [spigot.jar:git-Spigot-1494]
            at net.minecraft.server.v1_7_R3.EntityPlayer.die(EntityPlayer.java:389)
    [spigot.jar:git-Spigot-1494]
            at net.minecraft.server.v1_7_R3.EntityLiving.damageEntity(EntityLiving.j
    ava:741) [spigot.jar:git-Spigot-1494]
            at net.minecraft.server.v1_7_R3.EntityHuman.damageEntity(EntityHuman.jav
    a:751) [spigot.jar:git-Spigot-1494]
            at net.minecraft.server.v1_7_R3.EntityPlayer.damageEntity(EntityPlayer.j
    ava:468) [spigot.jar:git-Spigot-1494]
            at net.minecraft.server.v1_7_R3.EntityArrow.h(EntityArrow.java:243) [spi
    got.jar:git-Spigot-1494]
            at net.minecraft.server.v1_7_R3.World.entityJoinedWorld(World.java:1622)
    [spigot.jar:git-Spigot-1494]
            at net.minecraft.server.v1_7_R3.World.playerJoinedWorld(World.java:1598)
    [spigot.jar:git-Spigot-1494]
            at net.minecraft.server.v1_7_R3.World.tickEntities(World.java:1464) [spi
    got.jar:git-Spigot-1494]
            at net.minecraft.server.v1_7_R3.WorldServer.tickEntities(WorldServer.jav
    a:516) [spigot.jar:git-Spigot-1494]
            at net.minecraft.server.v1_7_R3.MinecraftServer.v(MinecraftServer.java:6
    93) [spigot.jar:git-Spigot-1494]
            at net.minecraft.server.v1_7_R3.DedicatedServer.v(DedicatedServer.java:2
    83) [spigot.jar:git-Spigot-1494]
            at net.minecraft.server.v1_7_R3.MinecraftServer.u(MinecraftServer.java:5
    83) [spigot.jar:git-Spigot-1494]
            at net.minecraft.server.v1_7_R3.MinecraftServer.run(MinecraftServer.java
    :489) [spigot.jar:git-Spigot-1494]
            at net.minecraft.server.v1_7_R3.ThreadServerApplication.run(SourceFile:6
    28) [spigot.jar:git-Spigot-1494]
    Caused by: java.lang.NullPointerException
            at com.pkherschel1.listeners.onPlayerKill.onPlayerKillEvent(onPlayerKill
    .java:30) ~[?:?]
            at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0
    _31]
            at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0
    _31]
            at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1
    .8.0_31]
            at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_31]
            at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.ja
    va:292) ~[spigot.jar:git-Spigot-1494]
            ... 19 more
     
  2. Offline

    WishMachine

    Can You Be A Little More Descriptive.
    Also Why Are You Capitalizing Everything

    edit:
    1. t com.pkherschel1.listeners.onPlayerKill.onPlayerKillEvent(onPlayerKill
    2. .java:30)
    where it says "30" means that the error is caused on line 30 int he code. Nullpointer means something is returning null which is jacking things up in the rest of the code
     
  3. Offline

    Konato_K

    @16austin16 Probably killer is null, or any of that useless static members of "Main" are null, or the string lists are null, but I'd go with killer.
     
  4. Offline

    16austin16

    well i tryed the killer and this is the line where the error is and i took out the variable for the config thing
    Code:
                if(kills.contains(Main.user.get("Player." + killer.getName() + ".Kills").toString())) {
     
  5. Offline

    Konato_K

    @16austin16 As I said, check if killer it's null before using it.
     
  6. Offline

    16austin16

    i just did that and it still has the same error

    Edit: I Also Made It Check If The Rewards. Is null
     
    Last edited: Jun 4, 2015
  7. Offline

    Konato_K

    teej107 likes this.
  8. Offline

    Zombie_Striker

    @16austin16
    Please do the following
    • NullCheck
    • Debug
    • Correctly use capitalization
    and finally,
     
  9. Offline

    16austin16

    Why Doesn't This Code Work At The Comment It? It Goes To The Else
    Code:
                if(killer != null) {
                        if(kills != null) {
    //Here
                        if(kills.contains(Main.user.get("Player." + killer.getName() + ".Kills"))) {
                            killer.sendMessage(ChatColor.GREEN + "It Worked!");
                            Main.user.set("Players." + killer.getName() + ".OnRewards", reward + 1);
                        } else {
    //And It Goes Here
                            killer.sendMessage("Went To Else");
                            return;
                        }
                    } else {
                        return;
                    }
                } else {
                    Bukkit.getLogger().severe("Killer Is = To NULL!!");
                }
     
    Last edited: Jun 5, 2015
  10. Online

    timtower Administrator Administrator Moderator

    Moved to Bukkit alternatives
     
  11. Offline

    Zombie_Striker

    @16austin16
    It looks like you do not know what you want in that if statement. Main.users returns an Integer, while kills most likely is looking for the name of the player.
     
  12. Offline

    16austin16

    @Zombie_Striker Well in the if statement the thing i am trying to do is for the plugin to look at the player kills and check each kill if thier amout of kills is the same amount of one of the numbers in the rewards file
     
  13. Offline

    Zombie_Striker

    @16austin16
    Then the only thing I can tell you is debug. Does it contain that number? What is that Number? Does the config contain that path even?
     
  14. Offline

    16austin16

    @Zombie_Striker Well I Tryed Everything But For Some Reason It Just Doesn't Work
    Like Here
    Code:
    //   \/ [B]StringList[/B]   \/ Checks For Number In The List                             \/ Finds The Number In The Player Data [B]INT[/B] Do I Need getInt
    if(kills               .contains                                                (Main.user.get("Player." + killer.getName() + ".Kills"))) {
    And Here Is What Kills Is
    It Checks The Kills For The Reward To Be Given
    Code:
                List<String> kills = Main.rewards.getStringList("Rewards.Kills");
     
    Last edited: Jun 5, 2015
  15. Offline

    Zombie_Striker

    @16austin16
     
  16. Offline

    16austin16

    @Zombie_Striker Thats the thing i have tried everythin i can think of and nothing worked. The cloesest I have gotten was it going to the else thing

    EDIT: Is There A Way I Can Store A ArrayList In The Config And Not A StringList
    EDITx2: I Am About To Give Up On Making Rewards In My Plugin Because I Have Done Everything I Can Think Of And No One Is Helping At All @Zombie_Striker Told Me To Debug And I Have Nothing To Debug I Have Tried EVERYTHING
     
    Last edited: Jun 5, 2015
  17. Offline

    Zombie_Striker

    @16austin16
    If you don't know how to get a number, or how to test if the config contains a path, or even how to debug then you should not be making plugins because either you have not learned java or the thought processed to figure out what needs to happen is going over your head.

    Either learn Java, thoroughly think of everything you can to print out that number, print out if it is true or false, and debug, or give up because this is to complex of an idea for you at this time.
     
Thread Status:
Not open for further replies.

Share This Page