Problems by permissionsEx variable

Discussion in 'Plugin Development' started by Proctor, Jan 3, 2012.

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

    Proctor

    Hi, i'm programming a plugin (called Usersystem) and need to get the Prefix vom the command sender
    from PermissionsEx. This is for first no problem (thanks to dadaemon
    ) but now i'm becoming a big error when i include the same syntax i used in event handler.
    -> he says that i do a nullpointer exeption but the "player" variable i could use like ever

    Code:
    2012-01-02 11:12:24 [SEVERE] null
    org.bukkit.command.CommandException: Unhandled exception executing command 'war' in plugin blocknet-usersystem v0.1
        at org.bukkit.command.PluginCommand.execute(PluginCommand.java:42)
        at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:165)
        at org.bukkit.craftbukkit.CraftServer.dispatchCommand(CraftServer.java:378)
        at net.minecraft.server.NetServerHandler.handleCommand(NetServerHandler.java:757)
        at net.minecraft.server.NetServerHandler.chat(NetServerHandler.java:722)
        at net.minecraft.server.NetServerHandler.a(NetServerHandler.java:715)
        at net.minecraft.server.Packet3Chat.a(Packet3Chat.java:33)
        at net.minecraft.server.NetworkManager.b(NetworkManager.java:226)
        at net.minecraft.server.NetServerHandler.a(NetServerHandler.java:93)
        at net.minecraft.server.NetworkListenThread.a(SourceFile:108)
        at net.minecraft.server.MinecraftServer.w(MinecraftServer.java:527)
        at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:425)
        at net.minecraft.server.ThreadServerApplication.run(SourceFile:457)
    Caused by: java.lang.NullPointerException
        at me.Proctor.usersystem.usersystemCommandExecutor.onCommand(usersystemCommandExecutor.java:47)
        at org.bukkit.command.PluginCommand.execute(PluginCommand.java:40)
        ... 12 more
    My main Class:
    Code:
    package me.Proctor.usersystem;
    
    import java.util.logging.Logger;
    
    import org.bukkit.Bukkit;
    import org.bukkit.command.Command;
    import org.bukkit.command.CommandSender;
    import org.bukkit.entity.Player;
    import org.bukkit.event.Event;
    import org.bukkit.plugin.PluginManager;
    import org.bukkit.plugin.java.JavaPlugin;
    
    import ru.tehkode.permissions.PermissionManager;
    import ru.tehkode.permissions.bukkit.PermissionsEx;
    
    public class usersystem extends JavaPlugin {
        int i = 1;
        boolean vote_sun, vote_day, vote_jail;
        private usersystemEntityListener entityListener;
        private usersystemPlayerListener playerListener;
        private usersystemCommandExecutor usersystemCommandExecutor;
        Logger log = Logger.getLogger("Minecraft");
        public void onEnable(){
            if(Bukkit.getServer().getPluginManager().isPluginEnabled("PermissionsEx")){
                entityListener = new usersystemEntityListener(this);
                playerListener = new usersystemPlayerListener();
                PluginManager pm = this.getServer().getPluginManager();
                pm.registerEvent(Event.Type.ENTITY_DAMAGE, entityListener, Event.Priority.High, this);
                pm.registerEvent(Event.Type.PLAYER_CHAT, playerListener, Event.Priority.Normal, this);
                usersystemCommandExecutor = new usersystemCommandExecutor(this);
                getCommand("war").setExecutor(usersystemCommandExecutor);
                getCommand("unwar").setExecutor(usersystemCommandExecutor);
                getCommand("getwar").setExecutor(usersystemCommandExecutor);
                log.info("[blocknet-Usersystem] version " + this.getDescription().getVersion() + "has been enabled.");
                log.info("[blocknet-Usersystem] (c) Aron Heinecke");
            }
            else {
                log.info("[blocknet-Usersystem] didn't find PermissionsEx; version " + this.getDescription().getVersion());
            }
        }
        public void onDisable(){
            log.info("[blocknet-Usersystem] has been disabled.");
        }
    }
    My "usersystemCommandExecutor":
    Code:
    package me.Proctor.usersystem;
    
    import org.bukkit.Bukkit;
    import org.bukkit.command.Command;
    import org.bukkit.command.CommandExecutor;
    import org.bukkit.command.CommandSender;
    import org.bukkit.entity.Player;
    
    import ru.tehkode.permissions.PermissionManager;
    import ru.tehkode.permissions.bukkit.PermissionsEx;
    
    public class usersystemCommandExecutor implements CommandExecutor {
        int warbetw = -1;
        boolean iswar = false;
    
        PermissionManager pex = PermissionsEx.getPermissionManager();
    
            public usersystemCommandExecutor(usersystem plugin){
            this.plugin = plugin;
        }
        private usersystem plugin;
    
        @Override
        public boolean onCommand(CommandSender sender, Command command, String label, String[] args ){
            sender.sendMessage( command.toString() );
            if ( sender instanceof Player ) {
                if ( command.getName().equals("war")) {
                    if ( getwar() == true ){
    
                    }
                    else {
                        String s;
                        String r;
                        Player player = (Player) sender;
                        sender.sendMessage("trying..");
                        sender.sendMessage(pex.toString());
                        s = pex.getUser(((Player) sender).getPlayer()).getOwnPrefix();  // HERE he says the null pointer exeption comes
                        sender.sendMessage("catching..");
                        if ( s == "Elfen" ) {
                            r = "Dunkelelfen";
                            setwarbtw(2);
                            sender.sendMessage("You have started a war between " + s + " & " + r );
                            }
                        if ( s.equals("Dunkelelfen") ) { r = "Elfen"; setwarbtw(2); sender.sendMessage("You have started a war between" + s + " & " + r ); }
                        if ( s.equals("Vampiren") ) { r = "Nymphen"; setwarbtw(1); sender.sendMessage("You have started a war between" + s + " & " + r ); }
                        if ( s.equals("Nymphen") ) { r = "Vampiren"; setwarbtw(1); sender.sendMessage("You have started a war between" + s + " & " + r );; }
                        if ( s.equals("Engeln") ) { r = "Dämonen"; setwarbtw(0); sender.sendMessage("You have started a war between" + s + " & " + r ); }
                        if ( s.equals("Dämonen") ) { r = "Engeln"; setwarbtw(0); sender.sendMessage("You have started a war between" + s + " & " + r ); }
    
                    }
                }
                if ( command.getName().equals("unwar") ) {
    
                }
                if ( command.getName().equals("getwar") ){
                    if ( getwar() == true ) {
                        String s;
                        switch ( warbetw ) {
                        case 0:
                            s = "Dämonen & Engeln";
                            break;
                        case 1:
                            s = "Vampiren & Nymphen";
                            break;
                        case 2:
                            s = "Dunkelelfen & Elfen";
                            break;
                        default:
                            s = "Error, unhandelet int " + warbetw;
                        }
                        sender.sendMessage( "There is a war between " + s + "!" );
                    }
                    else {
                        sender.sendMessage("There is no war at time.");
                    }
                }
            }
                return false;
        }
        public void setwar ( boolean iswar ){
            this.iswar = iswar;
        }
        public boolean getwar(){
            return iswar;
        }
        public void setwarbtw( int i ){
            warbetw = i;
        }
        public void setplwar ( String name ){
            String[] died;
    
        }
        public void sendwarmsg ( String frak1, String frak2, Player player ){
            PermissionManager pex = PermissionsEx.getPermissionManager();
            Player[] list1;
            list1 = Bukkit.getServer().getOnlinePlayers();
            for ( int i = 0; i <= list1.length; i++ ){
                if ( list1[i] == player ){
                    break;
                }
                if ( pex.getUser(list1[i].getName()).getOwnPrefix().toString().equals(frak1) ){
                    list1[i].sendMessage("A war has been started between your fraktion &" + frak2 + "!");
                    list1[i].sendMessage("Type /war to join & help your Team.");
                }
                if ( pex.getUser(list1[i].getName()).getOwnPrefix().toString().equals(frak2) ){
                    list1[i].sendMessage("A war has been started between your fraktion &" + frak1 + "!");
                    list1[i].sendMessage("Type /war to join & help your Team.");
                }
            }
        }
        public void startwar ( CommandSender sender ){
            String s;
            String r;
            Player player = (Player) sender;
            player.sendMessage("trying..");
            player.sendMessage(pex.getUser(player.getName()).getOwnPrefix());
            s = pex.getUser(sender.getName()).getOwnPrefix();
            player.sendMessage("catching..");
            if ( s == "Elfen" ) {
                r = "Dunkelelfen";
                setwarbtw(2);
                player.sendMessage("You have started a war between " + s + " & " + r );
                }
            if ( s.equals("Dunkelelfen") ) { r = "Elfen"; setwarbtw(2); player.sendMessage("You have started a war between" + s + " & " + r ); }
            if ( s.equals("Vampiren") ) { r = "Nymphen"; setwarbtw(1); player.sendMessage("You have started a war between" + s + " & " + r ); }
            if ( s.equals("Nymphen") ) { r = "Vampiren"; setwarbtw(1); player.sendMessage("You have started a war between" + s + " & " + r );; }
            if ( s.equals("Engeln") ) { r = "Dämonen"; setwarbtw(0); player.sendMessage("You have started a war between" + s + " & " + r ); }
            if ( s.equals("Dämonen") ) { r = "Engeln"; setwarbtw(0); player.sendMessage("You have started a war between" + s + " & " + r ); }
        }
    }
     
  2. Offline

    Shamebot

    Code:
    ((Player) sender).getPlayer()
    Is there such a method? Player.getPlayer()?

    Anyway that wouldn't throw a NPE.
    Assign the return values to variables and check which one is null instead of chaining the method calls.
     
  3. Offline

    Proctor

    i used the same method in another class, and yes, .getPlayer gives, and i done without too, and it did the same fail

    ok, i done this:
    Code:
        public boolean onCommand(CommandSender sender, Command command, String label, String[] args ){
            sender.sendMessage( command.toString() );
            if ( sender instanceof Player ) {
                if ( command.getName().equals("war")) {
                    if ( getwar() == true ){
    
                    }
                    else {
                        String s = "";
                        String r;
                        Player player = (Player) sender;
                        sender.sendMessage("trying..");
                        //s = pex.getUser(((PermissionUser) sender).getOwnPrefix();
                        s = pex.getUser( sender.getName() ).getOwnPrefix();
                        sender.sendMessage("trying..");
                        sender.sendMessage( s ); // this is line 43 -> error
    but is gives same nullpointer exception:

    Code:
    mind.com/.
    2012-01-03 19:12:10 [INFO] [PermissionsEx] Superperms support enabled.
    2012-01-03 19:12:10 [INFO] [PermissionsEx] v1.17 enabled
    2012-01-03 19:12:10 [INFO] Essentials: Using PermissionsEx based permissions.
    2012-01-03 19:12:10 [INFO] WorldEdit 4.7 enabled.
    2012-01-03 19:12:10 [SEVERE] WorldEdit: Unable to read default configuration: config.yml
    2012-01-03 19:12:10 [INFO] WorldEdit: PermissionsEx detected! Using PermissionsEx for permissions.
    2012-01-03 19:12:10 [INFO] [blocknet-Usersystem] version 0.1has been enabled.
    2012-01-03 19:12:10 [INFO] [blocknet-Usersystem] (c) Aron Heinecke
    2012-01-03 19:12:10 [INFO] [ChatManager] ChatManager disabled. Check config.yml!
    2012-01-03 19:12:10 [INFO] [ChatManager] ChatManager disabled!
    2012-01-03 19:12:10 [INFO] [Modifyworld] Modifyworld disabled. Check config.yml!
    2012-01-03 19:12:10 [INFO] [Modifyworld] Modifyworld disabled!
    2012-01-03 19:12:10 [INFO] [PermissionsCompat] Compatibility layer enabled.
    2012-01-03 19:12:10 [INFO] WorldEdit: PermissionsEx detected! Using PermissionsEx for permissions.
    2012-01-03 19:12:10 [INFO] Server permissions file permissions.yml is empty, ignoring it
    2012-01-03 19:12:10 [INFO] Reload complete.
    2012-01-03 19:12:12 [SEVERE] null
    org.bukkit.command.CommandException: Unhandled exception executing command 'war' in plugin blocknet-usersystem v0.1
        at org.bukkit.command.PluginCommand.execute(PluginCommand.java:42)
        at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:165)
        at org.bukkit.craftbukkit.CraftServer.dispatchCommand(CraftServer.java:378)
        at net.minecraft.server.NetServerHandler.handleCommand(NetServerHandler.java:757)
        at net.minecraft.server.NetServerHandler.chat(NetServerHandler.java:722)
        at net.minecraft.server.NetServerHandler.a(NetServerHandler.java:715)
        at net.minecraft.server.Packet3Chat.a(Packet3Chat.java:33)
        at net.minecraft.server.NetworkManager.b(NetworkManager.java:226)
        at net.minecraft.server.NetServerHandler.a(NetServerHandler.java:93)
        at net.minecraft.server.NetworkListenThread.a(SourceFile:108)
        at net.minecraft.server.MinecraftServer.w(MinecraftServer.java:527)
        at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:425)
        at net.minecraft.server.ThreadServerApplication.run(SourceFile:457)
    Caused by: java.lang.NullPointerException
        at me.Proctor.usersystem.usersystemCommandExecutor.onCommand(usersystemCommandExecutor.java:50)
        at org.bukkit.command.PluginCommand.execute(PluginCommand.java:40)
        ... 12 more
    
    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
     
    Last edited by a moderator: May 22, 2016
  4. Offline

    Shamebot

    What's line 50 ("(usersystemCommandExecutor.java:50)")?
     
  5. Offline

    Proctor

    here the actuel stat:
    Code:
    2012-01-03 23:08:17 [SEVERE] null
    org.bukkit.command.CommandException: Unhandled exception executing command 'war' in plugin blocknet-usersystem v0.1
        at org.bukkit.command.PluginCommand.execute(PluginCommand.java:42)
        at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:165)
        at org.bukkit.craftbukkit.CraftServer.dispatchCommand(CraftServer.java:378)
        at net.minecraft.server.NetServerHandler.handleCommand(NetServerHandler.java:757)
        at net.minecraft.server.NetServerHandler.chat(NetServerHandler.java:722)
        at net.minecraft.server.NetServerHandler.a(NetServerHandler.java:715)
        at net.minecraft.server.Packet3Chat.a(Packet3Chat.java:33)
        at net.minecraft.server.NetworkManager.b(NetworkManager.java:226)
        at net.minecraft.server.NetServerHandler.a(NetServerHandler.java:93)
        at net.minecraft.server.NetworkListenThread.a(SourceFile:108)
        at net.minecraft.server.MinecraftServer.w(MinecraftServer.java:527)
        at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:425)
        at net.minecraft.server.ThreadServerApplication.run(SourceFile:457)
    Caused by: java.lang.NullPointerException
        at org.bukkit.craftbukkit.TextWrapper.wrapText(TextWrapper.java:34)
        at net.minecraft.server.NetServerHandler.sendPacket(NetServerHandler.java:671)
        at org.bukkit.craftbukkit.entity.CraftPlayer.sendRawMessage(CraftPlayer.java:119)
        at org.bukkit.craftbukkit.entity.CraftPlayer.sendMessage(CraftPlayer.java:123)
        at me.Proctor.usersystem.usersystemCommandExecutor.onCommand(usersystemCommandExecutor.java:43)
        at org.bukkit.command.PluginCommand.execute(PluginCommand.java:40)
        ... 12 more
    
    Code:
    package me.Proctor.usersystem;
    
    import org.bukkit.Bukkit;
    import org.bukkit.command.Command;
    import org.bukkit.command.CommandExecutor;
    import org.bukkit.command.CommandSender;
    import org.bukkit.entity.Player;
    
    import ru.tehkode.permissions.PermissionManager;
    import ru.tehkode.permissions.PermissionUser;
    import ru.tehkode.permissions.bukkit.PermissionsEx;
    
    public class usersystemCommandExecutor implements CommandExecutor {
        int warbetw = -1;
        boolean iswar = false;
    
        PermissionManager pex = PermissionsEx.getPermissionManager();
    
            public usersystemCommandExecutor(usersystem plugin){
            this.plugin = plugin;
        }
        private usersystem plugin;
    
        public boolean onCommand(CommandSender sender, Command command, String label, String[] args ){
            sender.sendMessage( command.toString() );
            if ( sender instanceof Player ) {
                if ( command.getName().equals("war")) {
                    if ( getwar() == true ){
    
                    }
                    else {
                        String s = "";
                        String r;
                        Player player = (Player) sender;
                        sender.sendMessage("trying..");
                        //s = pex.getUser(((PermissionUser) sender).getOwnPrefix();
                        s = pex.getUser( sender.getName() ).getOwnPrefix();
                        sender.sendMessage("trying..");
                        sender.sendMessage( s );                                         // line 43
                        sender.sendMessage("catching..");
                        if ( s == "Elfen" ) {
                            r = "Dunkelelfen";
                            setwarbtw(2);
                            sender.sendMessage("You have started a war between " + s + " & " + r );
                            }
                        if ( s.equals("Dunkelelfen") ) { r = "Elfen"; setwarbtw(2); sender.sendMessage("You have started a war between" + s + " & " + r ); }
                        if ( s.equals("Vampiren") ) { r = "Nymphen"; setwarbtw(1); sender.sendMessage("You have started a war between" + s + " & " + r ); }
                        if ( s.equals("Nymphen") ) { r = "Vampiren"; setwarbtw(1); sender.sendMessage("You have started a war between" + s + " & " + r );; }
                        if ( s.equals("Engeln") ) { r = "Dämonen"; setwarbtw(0); sender.sendMessage("You have started a war between" + s + " & " + r ); }
                        if ( s.equals("Dämonen") ) { r = "Engeln"; setwarbtw(0); sender.sendMessage("You have started a war between" + s + " & " + r ); }
                    }
                }
                if ( command.getName().equals("unwar") ) {
    
                }
                if ( command.getName().equals("getwar") ){
                    if ( getwar() == true ) {
                        String s;
                        switch ( warbetw ) {
                        case 0:
                            s = "Dämonen & Engeln";
                            break;
                        case 1:
                            s = "Vampiren & Nymphen";
                            break;
                        case 2:
                            s = "Dunkelelfen & Elfen";
                            break;
                        default:
                            s = "Error, unhandelet int " + warbetw;
                        }
                        sender.sendMessage( "There is a war between " + s + "!" );
                    }
                    else {
                        sender.sendMessage("There is no war at time.");
                    }
                }
            }
                return false;
        }
        public void setwar ( boolean iswar ){
            this.iswar = iswar;
        }
        public boolean getwar(){
            return iswar;
        }
        public void setwarbtw( int i ){
            warbetw = i;
        }
        public void setplwar ( String name ){
            String[] died;
    
        }
        public void sendwarmsg ( String frak1, String frak2, Player player ){
            PermissionManager pex = PermissionsEx.getPermissionManager();
            Player[] list1;
            list1 = Bukkit.getServer().getOnlinePlayers();
            for ( int i = 0; i <= list1.length; i++ ){
                if ( list1[i] == player ){
                    break;
                }
                if ( pex.getUser(list1[i].getName()).getOwnPrefix().toString().equals(frak1) ){
                    list1[i].sendMessage("A war has been started between your fraktion &" + frak2 + "!");
                    list1[i].sendMessage("Type /war to join & help your Team.");
                }
                if ( pex.getUser(list1[i].getName()).getOwnPrefix().toString().equals(frak2) ){
                    list1[i].sendMessage("A war has been started between your fraktion &" + frak1 + "!");
                    list1[i].sendMessage("Type /war to join & help your Team.");
                }
            }
        }
        public void startwar ( CommandSender sender ){
            String s;
            String r;
            Player player = (Player) sender;
            player.sendMessage("trying..");
            player.sendMessage(pex.getUser(player.getName()).getOwnPrefix());
            s = pex.getUser(sender.getName()).getOwnPrefix();
            player.sendMessage("catching..");
            if ( s == "Elfen" ) {
                r = "Dunkelelfen";
                setwarbtw(2);
                player.sendMessage("You have started a war between " + s + " & " + r );
                }
            if ( s.equals("Dunkelelfen") ) { r = "Elfen"; setwarbtw(2); player.sendMessage("You have started a war between" + s + " & " + r ); }
            if ( s.equals("Vampiren") ) { r = "Nymphen"; setwarbtw(1); player.sendMessage("You have started a war between" + s + " & " + r ); }
            if ( s.equals("Nymphen") ) { r = "Vampiren"; setwarbtw(1); player.sendMessage("You have started a war between" + s + " & " + r );; }
            if ( s.equals("Engeln") ) { r = "Dämonen"; setwarbtw(0); player.sendMessage("You have started a war between" + s + " & " + r ); }
            if ( s.equals("Dämonen") ) { r = "Engeln"; setwarbtw(0); player.sendMessage("You have started a war between" + s + " & " + r ); }
        }
    }
     
  6. Offline

    Proctor

    pls help me, i used same syntax
    Code:
    pex.getUser( sender.getName() ).getOwnPrefix();
    in an event-handler (for example onEntityDamage) and it worked, and here,
    when i use it, he says nullpointerexception with the variable, s who have the ürefix inside...
     
  7. Offline

    Shamebot

    Check if s is null.
     
  8. Offline

    Proctor

    ok, i do know, but why it should be :O
    cause i used it in entity listener so:
    Player p1 = (Player) damageEvent.getDamager();
    pex.getUser(p1.getName()).getOwnPrefix()
    and yes, it's NULL (but it is same like up, only that i use (Player) sender & not damageEvent.getDamager().
    What should i do? And thanks for your help.
     
  9. Offline

    Shamebot

    Same player and your PEX config/settings didn't change?
     
  10. Offline

    Proctor

    yes, and the player ((Player) sender) it gives, i check before if (sender is instanceof player), and i could let him print my right name but pex gives null
     
  11. Offline

    Proctor

    NO, it's NOT wirking in the other side i seen now, it gives NULL too in the event, but i've never seen it, cause i done a
    Code:
    ´if ( pex.getUser(p1.getName()).getOwnPrefix() == pex.getUser(p2.getName()).getOwnPrefix() ) {
    and i didnt tested with when player in other group's, i did again, and seen now, that it gives NULL there too :O
    AND i know why, i thought, he gives the prefix the player have cause he's in a gorup with prefix, but he says NULL, cause the player have no OWNprefix :D

    i'm a littlebit confused, cause i could only letmegive all group's the player have-> new variable->more needet resources, but ok

    Thanks for your help, if there where a documentation for this permissionsex api ( and not only this 1 site, which doesnt includes all what you need for only including the api) i think i've never become this problem :D

    i've one other problem, i want to teleport a player to a defined location, could you say me how i declare a Location variable?

    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
     
    Last edited by a moderator: May 22, 2016
  12. Offline

    Shamebot

    I think it's new Location(world, x, y, z)
     
  13. Offline

    Proctor

    hm, i tried different ways could you pls gimme a example?
    (if the world position is 0, 0, 0, world name = world1), thanks
     
  14. Offline

    Shamebot

    Code:
    World world = Bukkit.getServer().getWorld("world1");
    //or world = player.getWorld();
    //or whatever
    Location loc = new Location(world,0,0,0);
     
  15. Offline

    Proctor

    ok, thanks, that's what i need cause i want to teleport a player if he says /spec to a defined position in a specific world to ,et him spectator something :D

    Ok, that's at time all, now i've to look how i use the config.yml from my plugin for a global variable :D cause between command-handler and entityevent-handler i could not declare a variable both could read/write.. (i hate arrays/lists in java)

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

Share This Page