Null pointer exception

Discussion in 'Plugin Development' started by cfil360, Nov 17, 2013.

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

    cfil360

    I am getting a null pointer only if the server reloads, not when players join. The error is occuring on line 166
    Code:java
    1. this.getConfig().set(k.getName() + ".kills", kills.get(k.getName()));


    Entire Class
    Code:java
    1. package me.connor.scoreboard;
    2.  
    3. import java.util.ArrayList;
    4. import java.util.HashMap;
    5.  
    6. import net.milkbowl.vault.economy.Economy;
    7. import net.milkbowl.vault.economy.EconomyResponse;
    8.  
    9. import org.bukkit.Bukkit;
    10. import org.bukkit.ChatColor;
    11. import org.bukkit.command.Command;
    12. import org.bukkit.command.CommandSender;
    13. import org.bukkit.entity.Player;
    14. import org.bukkit.event.EventHandler;
    15. import org.bukkit.event.Listener;
    16. import org.bukkit.event.entity.PlayerDeathEvent;
    17. import org.bukkit.event.player.PlayerJoinEvent;
    18. import org.bukkit.plugin.RegisteredServiceProvider;
    19. import org.bukkit.plugin.java.JavaPlugin;
    20. import org.bukkit.scoreboard.DisplaySlot;
    21. import org.bukkit.scoreboard.Objective;
    22. import org.bukkit.scoreboard.Score;
    23. import org.bukkit.scoreboard.Scoreboard;
    24. import org.bukkit.scoreboard.ScoreboardManager;
    25.  
    26.  
    27. public class KD extends JavaPlugin implements Listener {
    28. public HashMap<String, Scoreboard> UsedScoreboard = new HashMap<String, Scoreboard>();
    29. public HashMap<String, Integer> kills = new HashMap<String, Integer>();
    30. public HashMap<String, Integer> deaths = new HashMap<String, Integer>();
    31. public ArrayList<String> show = new ArrayList<String>();
    32. public Economy econ = null;
    33.  
    34.  
    35. public void onEnable() {
    36. Bukkit.getServer().getPluginManager().registerEvents(this, this);
    37. this.saveDefaultConfig();
    38.  
    39. if (!setupEconomy()) {
    40. getLogger().severe(ChatColor.RED + "Economy disabled due to no Vault dependency found!");
    41. return;
    42. }
    43.  
    44. for(Player p :this.getServer().getOnlinePlayers()) {
    45. serverReload(p);
    46. }
    47. }
    48.  
    49. public void onDisable() {
    50. for(Player p : this.getServer().getOnlinePlayers()) {
    51. this.getConfig().set(p.getName() + ".kills", kills.get(p.getName()));
    52. this.getConfig().set(p.getName() + ".deaths", deaths.get(p.getName()));
    53. }
    54. this.saveDefaultConfig();
    55. }
    56.  
    57. private boolean setupEconomy() {
    58. if (getServer().getPluginManager().getPlugin("Vault") == null) {
    59. return false;
    60. }
    61. RegisteredServiceProvider<Economy> rsp = getServer().getServicesManager().getRegistration(Economy.class);
    62. if (rsp == null) {
    63. return false;
    64. }
    65. econ = rsp.getProvider();
    66. return econ != null;
    67. }
    68.  
    69. public void serverReload(Player p) {
    70. getKills(p);
    71. getDeaths(p);
    72. setScoreboard(p);
    73. show.add(p.getName());
    74. }
    75.  
    76. public void setScoreboard(Player p) {
    77. ScoreboardManager manager = Bukkit.getScoreboardManager();
    78. Scoreboard board = manager.getNewScoreboard();
    79. //economy enabled from config
    80. boolean EconomyEnabled = this.getConfig().getBoolean("Economy.enabled");
    81.  
    82. Objective objective = board.registerNewObjective("score", "dummy");
    83. objective.setDisplayName(this.getConfig().getString("ScoreboardName"));
    84. objective.setDisplaySlot(DisplaySlot.SIDEBAR);
    85.  
    86. Score killsScore = objective.getScore(Bukkit.getOfflinePlayer(ChatColor.BLUE + "Kills:")); //Get a fake offline player
    87. Score deathsScore = objective.getScore(Bukkit.getOfflinePlayer(ChatColor.RED + "Deaths:")); //Get a fake offline player
    88.  
    89. killsScore.setScore(kills.get(p.getName()));
    90. deathsScore.setScore(deaths.get(p.getName()));
    91.  
    92. if(EconomyEnabled == true) {
    93. try{
    94. Score moneyScore = objective.getScore(Bukkit.getOfflinePlayer(ChatColor.GREEN + "Balance:"));
    95. moneyScore.setScore((int) getMoney(p));
    96. } catch(Exception ex) {
    97. getLogger().severe("Economy disabled due to no Vault dependency found!");
    98. this.getConfig().set("Economy.enabled", false);
    99. setScoreboard(p);
    100. }
    101. }
    102.  
    103. p.setScoreboard(board);
    104. }
    105.  
    106. public void resetScoreboard(Player p) {
    107. ScoreboardManager manager = Bukkit.getScoreboardManager();
    108.  
    109. p.setScoreboard(manager.getNewScoreboard());
    110. }
    111.  
    112. public HashMap<String, Integer> getKills(Player p) {
    113. try {
    114. kills.put(p.getName(), this.getConfig().getInt(p.getName() + ".kills"));
    115. }
    116. catch (Exception ex) {
    117. kills.put(p.getName(), 0);
    118. this.getConfig().set(p.getName() + ".kills", kills.get(p.getName()));
    119. this.saveConfig();
    120. return kills;
    121. }
    122.  
    123. return kills;
    124. }
    125.  
    126. public HashMap<String, Integer> getDeaths(final Player p) {
    127. try {
    128. deaths.put(p.getName(), this.getConfig().getInt(p.getName() + ".deaths"));
    129. }
    130. catch (Exception ex) {
    131. deaths.put(p.getName(), 0);
    132. this.getConfig().set(p.getName() + ".deaths", deaths.get(p.getName()));
    133. this.saveConfig();
    134. return deaths;
    135. }
    136.  
    137. return deaths;
    138. }
    139.  
    140. public double getMoney(Player p) {
    141. Double money = this.econ.getBalance(p.getName());
    142. return money;
    143. }
    144.  
    145. @EventHandler
    146. public void onJoin(PlayerJoinEvent e) {
    147. Player p = e.getPlayer();
    148. getKills(p);
    149. getDeaths(p);
    150. setScoreboard(p);
    151. show.add(p.getName());
    152. }
    153.  
    154. @EventHandler
    155. public void onPlayerDeath(PlayerDeathEvent e) {
    156. Player p = e.getEntity();
    157.  
    158. if(p.getKiller() instanceof Player){
    159. Player k = p.getKiller();
    160.  
    161. int currentKills = kills.get(k.getName());
    162. currentKills++;
    163.  
    164. kills.put(k.getName(), currentKills);
    165.  
    166. this.getConfig().set(k.getName() + ".kills", kills.get(k.getName()));
    167.  
    168. try {
    169. double reward = this.getConfig().getDouble("Economy.reward");
    170. EconomyResponse r = this.econ.depositPlayer(k.getName(), reward);
    171. if(r.transactionSuccess()) {
    172. k.sendMessage(ChatColor.AQUA + "You got $" + reward + " for killing " + p.getName());
    173. }
    174. } catch(Exception ex) {
    175.  
    176. } finally {
    177.  
    178. if(show.contains(k.getName())) {
    179. setScoreboard(k);
    180. }
    181. }
    182. }
    183.  
    184. int currentDeaths = deaths.get(p.getName());
    185. currentDeaths++;
    186.  
    187. deaths.put(p.getName(), currentDeaths);
    188.  
    189. setScoreboard(p);
    190.  
    191. this.getConfig().set(p.getName() + ".deaths", deaths.get(p.getName()));
    192. this.saveConfig();
    193. }
    194.  
    195. public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) {
    196. if(cmd.getName().equalsIgnoreCase("sb")) {
    197. if(!(sender instanceof Player)) {
    198. sender.sendMessage(ChatColor.RED + "Only players can use scoreboard!");
    199. return true;
    200. }
    201.  
    202. if(args.length == 0) {
    203. sender.sendMessage(ChatColor.RED + "Usage: /sb hide/show");
    204. return true;
    205. }
    206.  
    207. //define player
    208. Player p = (Player) sender;
    209.  
    210. if(args[0].equalsIgnoreCase("hide")) {
    211. show.remove(p.getName());
    212. resetScoreboard(p);
    213. return true;
    214. }
    215.  
    216. if(args[0].equalsIgnoreCase("show")) {
    217. show.add(p.getName());
    218. setScoreboard(p);
    219. return true;
    220. }
    221.  
    222. }
    223.  
    224.  
    225. return true;
    226. }
    227. }
    228.  
     
  2. Offline

    RealDope

    That line is in PlayerDeathEvent.. It shouldn't even be called on a reload?
     
  3. Offline

    cfil360

    RealDope sorry i meant if the server is reloaded and the player was online when it reloaded then they go kill someone or get killed it throws the error.
     
  4. Offline

    the_merciless

    when you reload the maps are cleared. You will need to repopulate them during the oneneble by looping through all players online. Similar to what you have done in the onDisable
     
  5. Offline

    cfil360

    the_merciless i did that is what the serverReload() method does
     
  6. Offline

    the_merciless

    Try changing your kills and deaths methods to voids, something like this.

    Code:
        public void setKills(Player p) {
           
            if (this.getConfig().contains(p.getName() + ".kills")){
                kills.put(p.getName(), this.getConfig().getInt(p.getName() + ".kills"));
            }else{
                kills.put(p.getName(), 0);
                this.getConfig().set(p.getName() + ".kills", 0);
                this.saveConfig();
            }
                 
        }
     
        public void setDeaths(final Player p) {
            if (this.getConfig().contains(p.getName() + ".deaths")){
                deaths.put(p.getName(), this.getConfig().getInt(p.getName() + ".deaths"));
            }else{
                deaths.put(p.getName(), 0);
                this.getConfig().set(p.getName() + ".deaths", 0);
                this.saveConfig();
               
            }
        }
     
  7. Offline

    cfil360

    Nope Didn't work
     
  8. Offline

    Stoux

    cfil360 Try creating the maps again. So on the serverReload() do kills = new HashMap<>(); first. Null pointers are always very easy to Debug yourself by the way. You could have easily done this by just System.out.println() all the objects that are on that line, that way you can easily see which one is null.
     
  9. Offline

    cfil360

    Stoux no man it's still not working
     
  10. Offline

    Stoux

  11. Offline

    cfil360

    Stoux here you go
    Code:
    18:14:17 [SEVERE] Could not pass event PlayerDeathEvent to Scoreboard v1.0
    org.bukkit.event.EventException
            at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.ja
    va:427)
            at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.jav
    a:62)
            at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.j
    ava:477)
            at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.j
    ava:462)
            at org.bukkit.craftbukkit.v1_6_R3.event.CraftEventFactory.callPlayerDeat
    hEvent(CraftEventFactory.java:344)
            at net.minecraft.server.v1_6_R3.EntityPlayer.die(EntityPlayer.java:312)
            at net.minecraft.server.v1_6_R3.EntityLiving.damageEntity(EntityLiving.j
    ava:710)
            at net.minecraft.server.v1_6_R3.EntityHuman.damageEntity(EntityHuman.jav
    a:714)
            at net.minecraft.server.v1_6_R3.EntityPlayer.damageEntity(EntityPlayer.j
    ava:383)
            at net.minecraft.server.v1_6_R3.EntityArrow.l_(EntityArrow.java:229)
            at net.minecraft.server.v1_6_R3.World.entityJoinedWorld(World.java:1354)
     
            at net.minecraft.server.v1_6_R3.World.playerJoinedWorld(World.java:1335)
     
            at net.minecraft.server.v1_6_R3.World.tickEntities(World.java:1223)
            at net.minecraft.server.v1_6_R3.WorldServer.tickEntities(WorldServer.jav
    a:480)
            at net.minecraft.server.v1_6_R3.MinecraftServer.t(MinecraftServer.java:5
    74)
            at net.minecraft.server.v1_6_R3.DedicatedServer.t(DedicatedServer.java:2
    27)
            at net.minecraft.server.v1_6_R3.MinecraftServer.s(MinecraftServer.java:4
    88)
            at net.minecraft.server.v1_6_R3.MinecraftServer.run(MinecraftServer.java
    :421)
            at net.minecraft.server.v1_6_R3.ThreadServerApplication.run(SourceFile:5
    83)
    Caused by: java.lang.NullPointerException
            at me.connor.scoreboard.KD.onPlayerDeath(KD.java:187)
            at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
            at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
            at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
            at java.lang.reflect.Method.invoke(Unknown Source)
            at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.ja
    va:425)
            ... 18 more
    18:14:17 [INFO] cfil360 was shot by Skeleton
    >
     
  12. Offline

    1Rogue


    Can you paste your current class as of posting that stack trace? According to that it's line 187, but that couldn't throw an NPE afaik.
     
  13. Offline

    cfil360

    1Rogue here you go
    Code:java
    1. package me.connor.scoreboard;
    2.  
    3. import java.util.ArrayList;
    4. import java.util.HashMap;
    5.  
    6. import net.milkbowl.vault.economy.Economy;
    7. import net.milkbowl.vault.economy.EconomyResponse;
    8.  
    9. import org.bukkit.Bukkit;
    10. import org.bukkit.ChatColor;
    11. import org.bukkit.command.Command;
    12. import org.bukkit.command.CommandSender;
    13. import org.bukkit.entity.Player;
    14. import org.bukkit.event.EventHandler;
    15. import org.bukkit.event.Listener;
    16. import org.bukkit.event.entity.PlayerDeathEvent;
    17. import org.bukkit.event.player.PlayerJoinEvent;
    18. import org.bukkit.plugin.RegisteredServiceProvider;
    19. import org.bukkit.plugin.java.JavaPlugin;
    20. import org.bukkit.scoreboard.DisplaySlot;
    21. import org.bukkit.scoreboard.Objective;
    22. import org.bukkit.scoreboard.Score;
    23. import org.bukkit.scoreboard.Scoreboard;
    24. import org.bukkit.scoreboard.ScoreboardManager;
    25.  
    26.  
    27. public class KD extends JavaPlugin implements Listener {
    28. public HashMap<String, Scoreboard> UsedScoreboard = new HashMap<String, Scoreboard>();
    29. public HashMap<String, Integer> kills = new HashMap<String, Integer>();
    30. public HashMap<String, Integer> deaths = new HashMap<String, Integer>();
    31. public ArrayList<String> show = new ArrayList<String>();
    32. public Economy econ = null;
    33.  
    34.  
    35. public void onEnable() {
    36. Bukkit.getServer().getPluginManager().registerEvents(this, this);
    37. this.saveDefaultConfig();
    38.  
    39. if (!setupEconomy()) {
    40. getLogger().severe(ChatColor.RED + "Economy disabled due to no Vault dependency found!");
    41. return;
    42. }
    43.  
    44. for(Player p : this.getServer().getOnlinePlayers()) {
    45. serverReload(p);
    46. }
    47. }
    48.  
    49. public void onDisable() {
    50. for(Player p : this.getServer().getOnlinePlayers()) {
    51. this.getConfig().set(p.getName() + ".kills", kills.get(p.getName()));
    52. this.getConfig().set(p.getName() + ".deaths", deaths.get(p.getName()));
    53. }
    54. this.saveDefaultConfig();
    55. }
    56.  
    57. private boolean setupEconomy() {
    58. if (getServer().getPluginManager().getPlugin("Vault") == null) {
    59. return false;
    60. }
    61. RegisteredServiceProvider<Economy> rsp = getServer().getServicesManager().getRegistration(Economy.class);
    62. if (rsp == null) {
    63. return false;
    64. }
    65. econ = rsp.getProvider();
    66. return econ != null;
    67. }
    68.  
    69. public void serverReload(Player p) {
    70. //recreate hashmaps
    71. kills = new HashMap<String, Integer>();
    72. deaths = new HashMap<String, Integer>();
    73. getKills(p);
    74. getDeaths(p);
    75. setScoreboard(p);
    76. show.add(p.getName());
    77. }
    78.  
    79. public void setScoreboard(Player p) {
    80. ScoreboardManager manager = Bukkit.getScoreboardManager();
    81. Scoreboard board = manager.getNewScoreboard();
    82. //economy enabled from config
    83. boolean EconomyEnabled = this.getConfig().getBoolean("Economy.enabled");
    84.  
    85. Objective objective = board.registerNewObjective("score", "dummy");
    86. objective.setDisplayName(this.getConfig().getString("ScoreboardName"));
    87. objective.setDisplaySlot(DisplaySlot.SIDEBAR);
    88.  
    89. Score killsScore = objective.getScore(Bukkit.getOfflinePlayer(ChatColor.BLUE + "Kills:")); //Get a fake offline player
    90. Score deathsScore = objective.getScore(Bukkit.getOfflinePlayer(ChatColor.RED + "Deaths:")); //Get a fake offline player
    91.  
    92. killsScore.setScore(kills.get(p.getName()));
    93. deathsScore.setScore(deaths.get(p.getName()));
    94.  
    95. if(EconomyEnabled == true) {
    96. try{
    97. Score moneyScore = objective.getScore(Bukkit.getOfflinePlayer(ChatColor.GREEN + "Balance:"));
    98. moneyScore.setScore((int) getMoney(p));
    99. } catch(Exception ex) {
    100. getLogger().severe("Economy disabled due to no Vault dependency found!");
    101. this.getConfig().set("Economy.enabled", false);
    102. setScoreboard(p);
    103. }
    104. }
    105.  
    106. p.setScoreboard(board);
    107. }
    108.  
    109. public void resetScoreboard(Player p) {
    110. ScoreboardManager manager = Bukkit.getScoreboardManager();
    111.  
    112. p.setScoreboard(manager.getNewScoreboard());
    113. }
    114.  
    115. public void getKills(Player p) {
    116. try {
    117. kills.put(p.getName(), this.getConfig().getInt(p.getName() + ".kills"));
    118. }
    119. catch (Exception ex) {
    120. kills.put(p.getName(), 0);
    121. this.getConfig().set(p.getName() + ".kills", kills.get(p.getName()));
    122. this.saveConfig();
    123. return;
    124. }
    125.  
    126. return;
    127. }
    128.  
    129. public void getDeaths(final Player p) {
    130. try {
    131. deaths.put(p.getName(), this.getConfig().getInt(p.getName() + ".deaths"));
    132. }
    133. catch (Exception ex) {
    134. deaths.put(p.getName(), 0);
    135. this.getConfig().set(p.getName() + ".deaths", deaths.get(p.getName()));
    136. this.saveConfig();
    137. return;
    138. }
    139.  
    140. return;
    141. }
    142.  
    143. public double getMoney(Player p) {
    144. Double money = this.econ.getBalance(p.getName());
    145. return money;
    146. }
    147.  
    148. @EventHandler
    149. public void onJoin(PlayerJoinEvent e) {
    150. Player p = e.getPlayer();
    151. getKills(p);
    152. getDeaths(p);
    153. setScoreboard(p);
    154. show.add(p.getName());
    155. }
    156.  
    157. @EventHandler
    158. public void onPlayerDeath(PlayerDeathEvent e) {
    159. Player p = e.getEntity();
    160.  
    161. if(p.getKiller() instanceof Player){
    162. Player k = p.getKiller();
    163.  
    164. int currentKills = kills.get(k.getName());
    165. currentKills++;
    166.  
    167. kills.put(k.getName(), currentKills);
    168.  
    169. this.getConfig().set(k.getName() + ".kills", kills.get(k.getName()));
    170.  
    171. try {
    172. double reward = this.getConfig().getDouble("Economy.reward");
    173. EconomyResponse r = this.econ.depositPlayer(k.getName(), reward);
    174. if(r.transactionSuccess()) {
    175. k.sendMessage(ChatColor.AQUA + "You got $" + reward + " for killing " + p.getName());
    176. }
    177. } catch(Exception ex) {
    178.  
    179. } finally {
    180.  
    181. if(show.contains(k.getName())) {
    182. setScoreboard(k);
    183. }
    184. }
    185. }
    186.  
    187. int currentDeaths = deaths.get(p.getName());
    188. currentDeaths++;
    189.  
    190. deaths.put(p.getName(), currentDeaths);
    191.  
    192. setScoreboard(p);
    193.  
    194. this.getConfig().set(p.getName() + ".deaths", deaths.get(p.getName()));
    195. this.saveConfig();
    196. }
    197.  
    198. public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) {
    199. if(cmd.getName().equalsIgnoreCase("sb")) {
    200. if(!(sender instanceof Player)) {
    201. sender.sendMessage(ChatColor.RED + "Only players can use scoreboard!");
    202. return true;
    203. }
    204.  
    205. if(args.length == 0) {
    206. sender.sendMessage(ChatColor.RED + "Usage: /sb hide/show");
    207. return true;
    208. }
    209.  
    210. //define player
    211. Player p = (Player) sender;
    212.  
    213. if(args[0].equalsIgnoreCase("hide")) {
    214. show.remove(p.getName());
    215. resetScoreboard(p);
    216. return true;
    217. }
    218.  
    219. if(args[0].equalsIgnoreCase("show")) {
    220. show.add(p.getName());
    221. setScoreboard(p);
    222. return true;
    223. }
    224.  
    225. }
    226.  
    227.  
    228. return true;
    229. }
    230. }
    231.  
     
  14. Offline

    1Rogue

    your map is returning null because it doesn't contain a value for that player on line 187 (ints cannot be null, hence the NPE).

    When you reload / start, your .reloadServer() method should be add online players to all the hashmaps, not recreate the hashmaps for every player. Furthermore those maps should be initialized outside the loop otherwise with no players online they will not be initialized.
     
  15. Offline

    cfil360

    1Rogue i still don't see why the op isn't working then. The catch block should give it a value of 0.
     
  16. Offline

    1Rogue


    Because line 187 essentially does this:

    Code:java
    1. int something = null;


    which is invalid.
     
  17. Offline

    cfil360

    Ok but why is the deaths() returning a null value 1Rogue
     
  18. Offline

    Blah1

    Have you tried turning it off and turning back on?
     
  19. Offline

    1Rogue


    Because you do not add every player to the deaths hashmap on server reloads. You simply recreate the hashmap for every player.
     
  20. Offline

    cfil360

    1Rogue Dude i am adding every player to the hashmap. Right here in the getDeaths()
    Code:java
    1. public void getDeaths(Player p) {
    2. try {
    3. deaths.put(p.getName(), this.getConfig().getInt(p.getName() + ".deaths"));
    4. }
    5. catch (Exception ex) {
    6. deaths.put(p.getName(), 0);
    7. this.getConfig().set(p.getName() + ".deaths", deaths.get(p.getName()));
    8. this.saveConfig();
    9. return;
    10. }
    11.  
    12. return;
    13. }
     
  21. Offline

    1Rogue

    Which is called for every player on reload. However your serverReload method remakes the map every time
     
  22. Offline

    cfil360

    1Rogue can you please elaborate which part is remaking the map every time
     
  23. Offline

    the_merciless

    Key word in that method being 'try'.

    Add some debug messages

    public void serverReload(Player p) {
    //recreate hashmaps
    kills = new HashMap<String, Integer>();
    deaths = new HashMap<String, Integer>();

    This is the part which creates new maps for each player.

    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
     
    Last edited by a moderator: Jun 5, 2016
  24. Offline

    cfil360

    the_merciless still not working. You don't need to return HashMaps do you?

    Edit: doesn't work even when i do.
     
  25. Offline

    1Rogue


    You already initialize the maps outside of the serverReload method, so why are you making new ones every time?

    In plain english that method basically says:

    "For every online player, delete the previous map, make a new one, and add them".

    When you reload, you are removing all previous entries because you recreate the map. Stop doing that.
     
  26. Offline

    cfil360

  27. Offline

    1Rogue


    He was only explaining what I've been saying for 3 (4?) posts now.
     
  28. Offline

    cfil360

    1Rogue Sorry dude im just trying every suggestion because none of them have worked
     
  29. Offline

    1Rogue


    remove these lines from your serverReload method:

    Code:java
    1. kills = new HashMap<String, Integer>();
    2. deaths = new HashMap<String, Integer>();
     
  30. Offline

    cfil360

    1Rogue ok i did that but it still isn't working

    Blah1 yes i have tried turning it on and off

    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
     
    Last edited by a moderator: Jun 5, 2016
Thread Status:
Not open for further replies.

Share This Page