Null pointer?

Discussion in 'Plugin Development' started by FTWin01Gurl, Feb 24, 2013.

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

    FTWin01Gurl

    Can someone explain why I'm getting:

    I put the stacktrace in so you can see it.
    Code:java
    1. package me.FTWin01Gurl.RoleplayChat;
    2.  
    3. import java.util.Iterator;
    4. import java.util.List;
    5.  
    6. import org.bukkit.ChatColor;
    7. import org.bukkit.entity.Entity;
    8. import org.bukkit.entity.EntityType;
    9. import org.bukkit.entity.Player;
    10. import org.bukkit.event.EventHandler;
    11. import org.bukkit.event.Listener;
    12. import org.bukkit.event.player.AsyncPlayerChatEvent;
    13. import org.bukkit.event.player.PlayerJoinEvent;
    14. import org.bukkit.event.player.PlayerQuitEvent;
    15.  
    16. public class RPListener implements Listener {
    17.  
    18. private RoleplayChat main;
    19. private NameDB db;
    20. private ChannelsManagement ch;
    21.  
    22. public RPListener(RoleplayChat rpChat, NameDB nameDB, ChannelsManagement chManage) {
    23. main = rpChat;
    24. db = nameDB;
    25. ch = chManage;
    26. }
    27.  
    28. @EventHandler
    29. public void onJoin(PlayerJoinEvent event) {
    30. Player player = event.getPlayer();
    31. player.sendMessage(ChatColor.YELLOW+"Channel focus to OOC");
    32. ch.setFocus(player, "ooc");
    33. event.setJoinMessage(player.getDisplayName() + " has joined Dark Sun roleplay.");
    34. }
    35.  
    36. @EventHandler
    37. public void onLeave(PlayerQuitEvent event) {
    38. Player disconnected = event.getPlayer();
    39. String dispReturn = db.getDisplayName(disconnected);
    40. event.setQuitMessage(dispReturn + " has left Dark Sun roleplay.");
    41. }
    42.  
    43. @EventHandler
    44. public void onChat(AsyncPlayerChatEvent event) {
    45. if (event.isCancelled()) {
    46. return;
    47. }
    48.  
    49. Player chatter = event.getPlayer();
    50. String channel = ch.getChannel(chatter);
    51. if ( channel.equals("ooc")) {
    52. event.setCancelled(true);
    53. Player[] players = main.getServer().getOnlinePlayers();
    54. for( int i = 0 ; i <= players.length; i++) {
    55. players[I].[/I]sendMessage(ChatColor.YELLOW+"[OOC] " + chatter.getDisplayName() + ": " + event.getMessage());
    56. }
    57. } else if ( channel.equals("ic") ) {
    58. List<Entity> Erange = chatter.getNearbyEntities(20, 20, 20);
    59. Iterator<Entity> ErangeIter = Erange.iterator();
    60. while (ErangeIter.hasNext()) {
    61. Entity entity = ErangeIter.next();
    62. if ( entity.getType() == EntityType.PLAYER ) {
    63. Player player = (Player)entity;
    64. player.sendMessage(ChatColor.WHITE+"[IC] " + chatter.getDisplayName() + ": " + event.getMessage());
    65. }
    66. }
    67. } else if ( channel.equals("w") ) {
    68. List<Entity> Erange = chatter.getNearbyEntities(7, 7, 7);
    69. Iterator<Entity> ErangeIter = Erange.iterator();
    70. while (ErangeIter.hasNext()) {
    71. Entity entity = ErangeIter.next();
    72. if ( entity.getType() == EntityType.PLAYER ) {
    73. Player player = (Player)entity;
    74. player.sendMessage(ChatColor.GOLD+"[W] " + chatter.getDisplayName() + ": " + event.getMessage());
    75. }
    76. }
    77. } else if ( channel.equals("y") ) {
    78. List<Entity> Erange = chatter.getNearbyEntities(30, 30, 30);
    79. Iterator<Entity> ErangeIter = Erange.iterator();
    80. while (ErangeIter.hasNext()) {
    81. Entity entity = ErangeIter.next();
    82. if ( entity.getType() == EntityType.PLAYER ) {
    83. Player player = (Player)entity;
    84. player.sendMessage(ChatColor.RED+"[Y] " + chatter.getDisplayName() + ": " + event.getMessage());
    85. }
    86. }
    87. }
    88. event.setCancelled(true);
    89. }
    90. }
    91.  
    92.  

    Code:java
    1. package me.FTWin01Gurl.RoleplayChat;
    2.  
    3. import java.util.ArrayList;
    4. import java.util.List;
    5.  
    6. import org.bukkit.entity.Player;
    7.  
    8. public class ChannelsManagement {
    9.  
    10. private List<String> ooc = new ArrayList<String>();
    11. private List<String> ic = new ArrayList<String>();
    12. private List<String> whisper = new ArrayList<String>();
    13. private List<String> yell = new ArrayList<String>();
    14.  
    15. public ChannelsManagement() {
    16. ooc = new ArrayList<String>();
    17. ic = new ArrayList<String>();
    18. whisper = new ArrayList<String>();
    19. yell = new ArrayList<String>();
    20. }
    21.  
    22. public String getChannel(Player player) {
    23. if ( ooc.contains(player.getName()) ) {
    24. return "ooc";
    25. } else if ( ic.contains(player.getName()) ) {
    26. return "ic";
    27. } else if ( whisper.contains(player.getName()) ) {
    28. return "w";
    29. } else if ( yell.contains(player.getName()) ) {
    30. return "y";
    31. }
    32. return null;
    33. }
    34.  
    35.  
    36. public void setFocus(Player player, String input) {
    37. if ( input.toLowerCase() == "ooc" ) {
    38. if ( ooc.contains(player.getName()) != false ) {
    39. ooc.add(player.getName());
    40. if ( ic.contains(player.getName()) ) {
    41. ic.remove(player.getName());
    42. } else if ( whisper.contains(player.getName()) ) {
    43. whisper.remove(player.getName());
    44. } else if ( yell.contains(player.getName()) ) {
    45. yell.remove(player.getName());
    46. }
    47. }
    48. } else if ( input.toLowerCase() == "ic" ) {
    49. if ( ic.contains(player.getName()) != false ) {
    50. ic.add(player.getName());
    51. if ( ooc.contains(player.getName()) ) {
    52. ooc.remove(player.getName());
    53. } else if ( whisper.contains(player.getName()) ) {
    54. whisper.remove(player.getName());
    55. } else if ( yell.contains(player.getName()) ) {
    56. yell.remove(player.getName());
    57. }
    58. }
    59. } else if ( input.toLowerCase() == "yell" || input.toLowerCase() == "y" ) {
    60. if ( yell.contains(player.getName()) != false ) {
    61. yell.add(player.getName());
    62. if ( ooc.contains(player.getName()) ) {
    63. ic.remove(player.getName());
    64. } else if ( whisper.contains(player.getName()) ) {
    65. whisper.remove(player.getName());
    66. } else if ( ic.contains(player.getName()) ) {
    67. ic.remove(player.getName());
    68. }
    69. }
    70. } else if ( input.toLowerCase() == "whisper" || input.toLowerCase() == "w" ) {
    71. if ( yell.contains(player.getName()) != false ) {
    72. yell.add(player.getName());
    73. if ( ooc.contains(player.getName()) ) {
    74. ooc.remove(player.getName());
    75. } else if ( yell.contains(player.getName()) ) {
    76. yell.remove(player.getName());
    77. } else if ( ic.contains(player.getName()) ) {
    78. ic.remove(player.getName());
    79. }
    80. }
    81. }
    82. }
    83. }
    84.  
     
  2. Offline

    RainoBoy97

    if(channel.eqauls("occ"){
    I think channel is null maybe, from what i can see :p

    //Edit: derpy when copying from [code.] tags
     
  3. Offline

    FTWin01Gurl

    ch is NOT null. When I did in my onEnable, I did

    Code:java
    1.  
    2. this.getServer().getPluginManager().registerEvents(new RPListener(this, new NameDB(new File(this.getDataFolder(), "namedb.yml")), new ChannelsManagement()), this);
    3.  
     
  4. Offline

    Superckl1

    You initialize your ChannelManagement with:
    Code:
    new ChannelsManagement()
    but your constructor:
    Code:
    public ChannelsManagement() {
    ooc = new ArrayList<String>();
    ic = new ArrayList<String>();
    whisper = new ArrayList<String>();
    yell = new ArrayList<String>();
    }
    calls for values. when you call getChannel on your ChannelManagement object, ch, it returns null because ooc, ic, w, and y all don't contain the player. You then call .equals on the null string.
     
  5. Offline

    RainoBoy97

    Is ch.getChannel(chatter) returning null then?
     
  6. Offline

    Superckl1

    Yes, for the reason I posted above.
     
  7. Offline

    FTWin01Gurl

    It's fixed! Thanks guys.
     
Thread Status:
Not open for further replies.

Share This Page