Help w/ my plugin "equipment"

Discussion in 'Plugin Development' started by tobindev, Nov 20, 2011.

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

    tobindev

    I have already planned a plugin and I've already coded it. (http://dev.bukkit.org/server-mods/equipment/) But I have a problem with my plugin now. Eclipse doesn't show any problems, but when I'm putting my plugin on a server it shows:

    Code:
    161 recipes
    17 achievements
    16:49:11 [INFO] Starting minecraft server version Beta 1.8.1
    16:49:11 [INFO] Loading properties
    16:49:11 [INFO] Starting Minecraft server on ...
    16:49:12 [INFO] This server is running Craftbukkit version git-Bukkit-0.0.0-1131
    -g86b7fa8-b1337jnks (MC: 1.8.1)
    16:49:12 [SCHWERWIEGEND] Could not load 'plugins\Equipment.jar' in folder 'plugi
    ns':
    java.lang.ClassNotFoundException: me tobindev.EquipPlugin.EquipPlugin
            at java.net.URLClassLoader$1.run(Unknown Source)
            at java.security.AccessController.doPrivileged(Native Method)
            at java.net.URLClassLoader.findClass(Unknown Source)
            at org.bukkit.plugin.java.PluginClassLoader.findClass(PluginClassLoader.
    java:36)
            at org.bukkit.plugin.java.PluginClassLoader.findClass(PluginClassLoader.
    java:24)
            at java.lang.ClassLoader.loadClass(Unknown Source)
            at java.lang.ClassLoader.loadClass(Unknown Source)
            at java.lang.Class.forName0(Native Method)
            at java.lang.Class.forName(Unknown Source)
            at org.bukkit.plugin.java.JavaPluginLoader.loadPlugin(JavaPluginLoader.j
    ava:170)
            at org.bukkit.plugin.SimplePluginManager.loadPlugin(SimplePluginManager.
    java:215)
            at org.bukkit.plugin.SimplePluginManager.loadPlugins(SimplePluginManager
    .java:136)
            at org.bukkit.craftbukkit.CraftServer.loadPlugins(CraftServer.java:136)
            at org.bukkit.craftbukkit.CraftServer.<init>(CraftServer.java:112)
            at net.minecraft.server.ServerConfigurationManager.<init>(ServerConfigur
    ationManager.java:52)
            at net.minecraft.server.MinecraftServer.init(MinecraftServer.java:136)
            at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:348)
            at net.minecraft.server.ThreadServerApplication.run(SourceFile:417)
    16:49:12 [INFO] [Permissions] (Yeti) was initialized.
    16:49:12 [INFO] [Permissions] version [3.1.6] (Yeti)  loaded
    16:49:12 [INFO] Preparing level "World"
    16:49:12 [INFO] Default game type: 0
    16:49:12 [INFO] Preparing start region for level 0 (Seed: 108181935)
    16:49:13 [INFO] Preparing spawn area: 85%
    16:49:13 [INFO] Preparing start region for level 1 (Seed: 108181935)
    16:49:14 [INFO] Preparing spawn area: 89%
    16:49:14 [INFO] [mChat] Permissions v3.1.6 found hooking in.
    16:49:14 [INFO] [mChat] BukkitStats Logging currently Activated. To opt-out chec
    k stats.yml.
    16:49:14 [INFO] [mChat] mChat version 1.8.7 is enabled!
    16:49:14 [INFO] Server permissions file permissions.yml is empty, ignoring it
    16:49:14 [INFO] Done (0,242s)! For help, type "help" or "?"
    
    Here is the source code of the first java file called EquipPlugin.java:
    Code:
    package me.tobindev.EquipPlugin;
    
    import org.bukkit.entity.Player;
    import org.bukkit.plugin.Plugin;
    import org.bukkit.plugin.PluginDescriptionFile;
    import org.bukkit.plugin.java.JavaPlugin;
    
    import com.nijiko.permissions.PermissionHandler;
    import com.nijikokun.bukkit.Permissions.Permissions;
    
    public class EquipPLugin extends JavaPlugin {
        public PermissionHandler Permissions;
        private boolean UsePermissions;
        
        public void onEnable() {
            setupPermissions(); 
            PluginDescriptionFile pdfFile = this.getDescription();
            System.out.println("[Equipment] Version " + pdfFile.getVersion() + " enabled!");
            System.out.println("[Equipment] Developed by: tobindev!");
            this.getServer().getPluginCommand("eminer").setExecutor(new EquipPluginCommands(this));
            this.getServer().getPluginCommand("elumberjack").setExecutor(new EquipPluginCommands(this));
            this.getServer().getPluginCommand("ecombatant").setExecutor(new EquipPluginCommands(this));
            this.getServer().getPluginCommand("earcher").setExecutor(new EquipPluginCommands(this));
        }
        
        public void onDisable() {
            PluginDescriptionFile pdfFile = this.getDescription();
            System.out.println("[Equipment] Version " + pdfFile.getVersion() + " disabled!");
        }
        
        protected boolean useArmor(Player player, String type) {
            if(UsePermissions) {return this.Permissions.has(player, "Equipment." + type);}
            return player.isOp();
        }
        
        private void setupPermissions() {
            Plugin test = this.getServer().getPluginManager().getPlugin("Permissions");
            if (this.Permissions == null) {
                if (test != null) {
                    UsePermissions = true;
                    this.Permissions = ((Permissions) test).getHandler();
                    System.out.println("[Equipment] Permissions enabled.");
                } else {
                    System.out.println("[Equipment] Permissions system not detected, defaulting to OP");
                    UsePermissions = false;
                }
            }
        }
    }
    
    And here the one of the second called EquipPluginCommands.java:

    Code:
    package me.tobindev.EquipPlugin;
    
    
    import org.bukkit.ChatColor;
    import org.bukkit.command.Command;
    import org.bukkit.command.CommandExecutor;
    import org.bukkit.command.CommandSender;
    import org.bukkit.entity.Player;
    import org.bukkit.inventory.ItemStack;
    import org.bukkit.inventory.PlayerInventory;
    
    public class EquipPluginCommands implements CommandExecutor {
        private final EquipPLugin plugin;
        public EquipPluginCommands(EquipPLugin instance) {plugin = instance;}
        
        public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args)
        {
            Player player = (Player)sender;
            PlayerInventory inv = player.getInventory();
            
            //Miner equipment
            
            if((commandLabel.equalsIgnoreCase("eminer"))) {
                if(!(args.length > 0)) {return false;}
                if(args[0].equalsIgnoreCase("stone")) {
                    if((plugin.useArmor(player, "miner.stone"))) {
                        sender.sendMessage(ChatColor.GRAY + "[Equipment]" + ChatColor.GREEN + "You are now equipped with a miner's equipment!");
                        inv.setItem(0,new ItemStack(274, 1));
                        inv.setItem(1,new ItemStack(50, 32));
                        inv.setItem(2,new ItemStack(65, 10));
                        inv.setItem(3,new ItemStack(58, 1));
                        System.out.println("[Equipment] Player: " + player.getDisplayName() + " has been equipped with " + args[0].toString() + " miner's equipment");
                    } else { player.sendMessage(ChatColor.GRAY + "[Equipment]" + ChatColor.RED + "You do not have permission to use that!"); }
                } else if (args[0].equalsIgnoreCase("iron")) {
                    if((plugin.useArmor(player, "miner.iron"))) {
                        sender.sendMessage(ChatColor.GRAY + "[Equipment]" + ChatColor.GREEN + "You are now equipped with a miner's equipment!");
                        inv.setItem(0,new ItemStack(257, 1));
                        inv.setItem(1,new ItemStack(50, 45));
                        inv.setItem(2,new ItemStack(65, 15));
                        inv.setItem(3,new ItemStack(58, 1));
                        System.out.println("[Equipment] Player: " + player.getDisplayName() + " has been equipped with " + args[0].toString() + " miner's equipment");
                    } else { player.sendMessage(ChatColor.GRAY + "[Equipment]" + ChatColor.RED + "You do not have permission to use that!"); }
                } else if (args[0].equalsIgnoreCase("diamond")) {
                    if((plugin.useArmor(player, "miner.diamond"))) {
                        sender.sendMessage(ChatColor.GRAY + "[Equipment]" + ChatColor.GREEN + "You are now equipped with a miner's equipment!");
                        inv.setItem(0,new ItemStack(278, 1));
                        inv.setItem(1,new ItemStack(50, 64));
                        inv.setItem(2,new ItemStack(65, 20));
                        inv.setItem(3,new ItemStack(58, 2));
                        System.out.println("[Equipment] Player: " + player.getDisplayName() + " has been equipped with " + args[0].toString() + " miner's equipment");
                    } else { player.sendMessage(ChatColor.GRAY + "[Equipment]" + ChatColor.RED + "You do not have permission to use that!"); }
                } else {
                    sender.sendMessage(ChatColor.GRAY + "[Equipment]" + ChatColor.RED + "'" + args[0] + "' is not a valid equipment/material type!");
                }
                return true;
            } else { sender.sendMessage(ChatColor.GRAY + "[Equipment]" + ChatColor.RED + "You did not specify an material-type!"); }
            
            //Lumberjack equipment
            
            if((commandLabel.equalsIgnoreCase("elumberjack"))) {
                if(!(args.length > 0)) {return false;}
                if(args[0].equalsIgnoreCase("lumberjack.stone")) {
                    if((plugin.useArmor(player, "stone"))) {
                        sender.sendMessage(ChatColor.GRAY + "[Equipment]" + ChatColor.GREEN + "You are now equipped with a lumberjack's equipment!");
                        inv.setItem(0,new ItemStack(275, 1));
                        inv.setItem(1,new ItemStack(50, 32));
                        inv.setItem(2,new ItemStack(58, 1));
                        System.out.println("[Equipment] Player: " + player.getDisplayName() + " has been equipped with " + args[0].toString() + " lumberjack's equipment");
                    } else { player.sendMessage(ChatColor.GRAY + "[Equipment]" + ChatColor.RED + "You do not have permission to use that!"); }
                } else if (args[0].equalsIgnoreCase("iron")) {
                    if((plugin.useArmor(player, "lumberjack.iron"))) {
                        sender.sendMessage(ChatColor.GRAY + "[Equipment]" + ChatColor.GREEN + "You are now equipped with a lumberjack's equipment!");
                        inv.setItem(0,new ItemStack(258, 1));
                        inv.setItem(1,new ItemStack(50, 45));
                        inv.setItem(2,new ItemStack(58, 1));
                        System.out.println("[Equipment] Player: " + player.getDisplayName() + " has been equipped with " + args[0].toString() + " lumberjack's equipment");
                    } else { player.sendMessage(ChatColor.GRAY + "[Equipment]" + ChatColor.RED + "You do not have permission to use that!"); }
                } else if (args[0].equalsIgnoreCase("diamond")) {
                    if((plugin.useArmor(player, "lumberjack.diamond"))) {
                        sender.sendMessage(ChatColor.GRAY + "[Equipment]" + ChatColor.GREEN + "You are now equipped with a lumberjack's equipment!");
                        inv.setItem(0,new ItemStack(279, 1));
                        inv.setItem(1,new ItemStack(50, 64));
                        inv.setItem(2,new ItemStack(58, 2));
                        System.out.println("[Equipment] Player: " + player.getDisplayName() + " has been equipped with " + args[0].toString() + " lumberjack's equipment");
                    } else { player.sendMessage(ChatColor.GRAY + "[Equipment]" + ChatColor.RED + "You do not have permission to use that!"); }
                } else {
                    sender.sendMessage(ChatColor.GRAY + "[Equipment]" + ChatColor.RED + "'" + args[0] + "' is not a valid equipment/material type!");
                }
                return true;
            } else { sender.sendMessage(ChatColor.GRAY + "[Equipment]" + ChatColor.RED + "You did not specify an material-type!"); }
            
            //Combatant equipment
            
            if((commandLabel.equalsIgnoreCase("ecombatant"))) {
                if(!(args.length > 0)) {return false;}
                if(args[0].equalsIgnoreCase("stone")) {
                    if((plugin.useArmor(player, "combatant.stone"))) {
                        sender.sendMessage(ChatColor.GRAY + "[Equipment]" + ChatColor.GREEN + "You are now equipped with a combatant's equipment!");
                        inv.setHelmet(new ItemStack(298, 1));
                        inv.setChestplate(new ItemStack(299, 1));
                        inv.setLeggings(new ItemStack(300, 1));
                        inv.setBoots(new ItemStack(301, 1));
                        inv.setItem(0,new ItemStack(272, 1));
                        inv.setItem(1,new ItemStack(297, 2));
                        inv.setItem(2,new ItemStack(320, 1));
                        System.out.println("[Equipment] Player: " + player.getDisplayName() + " has been equipped with " + args[0].toString() + " combatant's equipment");
                    } else { player.sendMessage(ChatColor.GRAY + "[Equipment]" + ChatColor.RED + "You do not have permission to use that!"); }
                } else if (args[0].equalsIgnoreCase("iron")) {
                    if((plugin.useArmor(player, "combatant.iron"))) {
                        sender.sendMessage(ChatColor.GRAY + "[Equipment]" + ChatColor.GREEN + "You are now equipped with a combatant's equipment!");
                        inv.setHelmet(new ItemStack(306, 1));
                        inv.setChestplate(new ItemStack(307, 1));
                        inv.setLeggings(new ItemStack(308, 1));
                        inv.setBoots(new ItemStack(309, 1));
                        inv.setItem(0,new ItemStack(267, 1));
                        inv.setItem(1,new ItemStack(297, 2));
                        inv.setItem(2,new ItemStack(320, 2));
                        System.out.println("[Equipment] Player: " + player.getDisplayName() + " has been equipped with " + args[0].toString() + " combatant's equipment");
                    } else { player.sendMessage(ChatColor.GRAY + "[Equipment]" + ChatColor.RED + "You do not have permission to use that!"); }
                } else if (args[0].equalsIgnoreCase("diamond")) {
                    if((plugin.useArmor(player, "combatant.diamond"))) {
                        sender.sendMessage(ChatColor.GRAY + "[Equipment]" + ChatColor.GREEN + "You are now equipped with a combatant's equipment!");
                        inv.setHelmet(new ItemStack(310, 1));
                        inv.setChestplate(new ItemStack(311, 1));
                        inv.setLeggings(new ItemStack(312, 1));
                        inv.setBoots(new ItemStack(313, 1));
                        inv.setItem(0,new ItemStack(276, 1));
                        inv.setItem(1,new ItemStack(297, 3));
                        inv.setItem(2,new ItemStack(320, 2));
                        System.out.println("[Equipment] Player: " + player.getDisplayName() + " has been equipped with " + args[0].toString() + " combatant's equipment");
                    } else { player.sendMessage(ChatColor.GRAY + "[Equipment]" + ChatColor.RED + "You do not have permission to use that!"); }
                } else {
                    sender.sendMessage(ChatColor.GRAY + "[Equipment]" + ChatColor.RED + "'" + args[0] + "' is not a valid equipment/material type!");
                }
                return true;
            } else { sender.sendMessage(ChatColor.GRAY + "[Equipment]" + ChatColor.RED + "You did not specify an material-type!"); }
            
            //Archer equipment
            
            if((commandLabel.equalsIgnoreCase("earcher"))) {
                if(!(args.length > 0)) {return false;}
                if(args[0].equalsIgnoreCase("stone")) {
                    if((plugin.useArmor(player, "archer.stone"))) {
                        sender.sendMessage(ChatColor.GRAY + "[Equipment]" + ChatColor.GREEN + "You are now equipped with a archer's equipment!");
                        inv.setHelmet(new ItemStack(298, 1));
                        inv.setChestplate(new ItemStack(299, 1));
                        inv.setLeggings(new ItemStack(300, 1));
                        inv.setBoots(new ItemStack(301, 1));
                        inv.setItem(0,new ItemStack(261, 1));
                        inv.setItem(1,new ItemStack(262, 64));
                        inv.setItem(2,new ItemStack(320, 1));
                        inv.setItem(3,new ItemStack(297, 1));
                        System.out.println("[Equipment] Player: " + player.getDisplayName() + " has been equipped with " + args[0].toString() + " archer's equipment");
                    } else { player.sendMessage(ChatColor.GRAY + "[Equipment]" + ChatColor.RED + "You do not have permission to use that!"); }
                } else if (args[0].equalsIgnoreCase("iron")) {
                    if((plugin.useArmor(player, "archer.iron"))) {
                        sender.sendMessage(ChatColor.GRAY + "[Equipment]" + ChatColor.GREEN + "You are now equipped with a archer's equipment!");
                        inv.setHelmet(new ItemStack(306, 1));
                        inv.setChestplate(new ItemStack(307, 1));
                        inv.setLeggings(new ItemStack(308, 1));
                        inv.setBoots(new ItemStack(309, 1));
                        inv.setItem(0,new ItemStack(261, 1));
                        inv.setItem(1,new ItemStack(262, 64));
                        inv.setItem(2,new ItemStack(262, 32));
                        inv.setItem(3,new ItemStack(320, 1));
                        inv.setItem(4,new ItemStack(297, 2));
                        System.out.println("[Equipment] Player: " + player.getDisplayName() + " has been equipped with " + args[0].toString() + " archer's equipment");
                    } else { player.sendMessage(ChatColor.GRAY + "[Equipment]" + ChatColor.RED + "You do not have permission to use that!"); }
                } else if (args[0].equalsIgnoreCase("diamond")) {
                    if((plugin.useArmor(player, "archer.diamond"))) {
                        sender.sendMessage(ChatColor.GRAY + "[Equipment]" + ChatColor.GREEN + "You are now equipped with a archer's equipment!");
                        inv.setHelmet(new ItemStack(310, 1));
                        inv.setChestplate(new ItemStack(311, 1));
                        inv.setLeggings(new ItemStack(312, 1));
                        inv.setBoots(new ItemStack(313, 1));
                        inv.setItem(0,new ItemStack(261, 1));
                        inv.setItem(1,new ItemStack(262, 64));
                        inv.setItem(2,new ItemStack(262, 64));
                        inv.setItem(3,new ItemStack(320, 2));
                        inv.setItem(4,new ItemStack(297, 2));
                        System.out.println("[Equipment] Player: " + player.getDisplayName() + " has been equipped with " + args[0].toString() + " archer's equipment");
                    } else { player.sendMessage(ChatColor.GRAY + "[Equipment]" + ChatColor.RED + "You do not have permission to use that!"); }
                } else {
                    sender.sendMessage(ChatColor.GRAY + "[Equipment]" + ChatColor.RED + "'" + args[0] + "' is not a valid equipment/material type!");
                }
                return true;
            } else { sender.sendMessage(ChatColor.GRAY + "[Equipment]" + ChatColor.RED + "You did not specify an material-type!"); }
            
            
            return false;
            
            
        }
    }
    
    And also here is the plugin.yml:

    Code:
    name: Equipment
    version: 0.3
    description: Equips the player.
    author: tobindev
    website: http://dev.bukkit.org/server-mods/equipment/
    
    main: me tobindev.EquipPlugin.EquipPlugin
    
    Any help is greatly appreciated! P.S. This code is under copyright, so I would prefer if no one used it in their own plugin. Thank you.
     
  2. Offline

    Nitnelave

    There's a typo in your class declaration:
    EquipPLugin
     
  3. Offline

    Stephen A.

    Is it me tobindev or me.tobindev? Here it shows no dot and you need a dot between me and tobindev.
     
  4. Offline

    Nitnelave

    well, it's me.tobindev.EquipPlugin.EquiPLugin the problem is a case problem. But I would advise you to lowercase that L because it's gonna be a hussle later (unless that was intended?)
     
  5. Offline

    tobindev

    So thanks guys. You were right I had two typos. I've changed it ,but now it says:
    Code:
    161 recipes
    17 achievements
    17:58:01 [INFO] Starting minecraft server version Beta 1.8.1
    17:58:01 [INFO] Loading properties
    17:58:01 [INFO] Starting Minecraft server on ...
    17:58:01 [INFO] This server is running Craftbukkit version git-Bukkit-0.0.0-1131
    -g86b7fa8-b1337jnks (MC: 1.8.1)
    17:58:01 [INFO] [Permissions] (Yeti) was initialized.
    17:58:01 [INFO] [Permissions] version [3.1.6] (Yeti)  loaded
    17:58:01 [INFO] Preparing level "World"
    17:58:01 [INFO] Default game type: 0
    17:58:01 [INFO] Preparing start region for level 0 (Seed: 108181935)
    17:58:02 [INFO] Preparing spawn area: 81%
    17:58:02 [INFO] Preparing start region for level 1 (Seed: 108181935)
    17:58:03 [INFO] Preparing spawn area: 85%
    17:58:03 [INFO] [Equipment] Permissions enabled.
    17:58:03 [INFO] [Equipment] Version 0.3 enabled!
    17:58:03 [INFO] [Equipment] Developed by: tobindev!
    17:58:03 [SCHWERWIEGEND] Error occurred while enabling Equipment v0.3 (Is it up
    to date?): null
    java.lang.NullPointerException
            at me.tobindev.EquipPlugin.EquipPlugin.onEnable(EquipPlugin.java:20)
            at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:174)
            at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader
    .java:957)
            at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManage
    r.java:280)
            at org.bukkit.craftbukkit.CraftServer.loadPlugin(CraftServer.java:171)
            at org.bukkit.craftbukkit.CraftServer.enablePlugins(CraftServer.java:154
    )
            at net.minecraft.server.MinecraftServer.e(MinecraftServer.java:297)
            at net.minecraft.server.MinecraftServer.a(MinecraftServer.java:284)
            at net.minecraft.server.MinecraftServer.init(MinecraftServer.java:152)
            at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:348)
            at net.minecraft.server.ThreadServerApplication.run(SourceFile:417)
    17:58:03 [INFO] [mChat] Permissions v3.1.6 found hooking in.
    17:58:04 [INFO] [mChat] BukkitStats Logging currently Activated. To opt-out chec
    k stats.yml.
    17:58:04 [INFO] [mChat] mChat version 1.8.7 is enabled!
    17:58:04 [INFO] Server permissions file permissions.yml is empty, ignoring it
    17:58:04 [INFO] Done (0,246s)! For help, type "help" or "?"
    
    I've already downloaded the CB 1337 and put it into the server folder and in Eclipse under libraries I changed the old snapshot to the new, but still it says this. Do you know how to fix it?
     
  6. Offline

    Sleaker

  7. Offline

    tobindev

    Ok thanks I've found the problem. Now I know how to find the problems on my own. But know I need you to help me. I konw where the mistake is, but I don't know how to fix it. 'Cause I don't know the right commands.
    The problem is in these lines:
    Code:
            this.getServer().getPluginCommand("eminer").setExecutor(new EquipPluginCommands(this));
            this.getServer().getPluginCommand("elumberjack").setExecutor(new EquipPluginCommands(this));
            this.getServer().getPluginCommand("ecombatant").setExecutor(new EquipPluginCommands(this));
            this.getServer().getPluginCommand("earcher").setExecutor(new EquipPluginCommands(this));
    
    How can I fix this problem?
     
  8. Offline

    Nitnelave

    Well, what is the error you're getting? That MIGHT give us a hint as to the solution...
     
  9. Offline

    tobindev

    It shows this:
    Code:
    161 recipes
    17 achievements
    19:14:31 [INFO] Starting minecraft server version Beta 1.8.1
    19:14:31 [INFO] Loading properties
    19:14:31 [INFO] Starting Minecraft server on ...
    19:14:31 [INFO] This server is running Craftbukkit version git-Bukkit-0.0.0-1131
    -g86b7fa8-b1337jnks (MC: 1.8.1)
    19:14:32 [INFO] [Permissions] (Yeti) was initialized.
    19:14:32 [INFO] [Permissions] version [3.1.6] (Yeti)  loaded
    19:14:32 [INFO] Preparing level "World"
    19:14:32 [INFO] Default game type: 0
    19:14:32 [INFO] Preparing start region for level 0 (Seed: 108181935)
    19:14:33 [INFO] Preparing spawn area: 81%
    19:14:33 [INFO] Preparing start region for level 1 (Seed: 108181935)
    19:14:34 [INFO] Preparing spawn area: 89%
    19:14:34 [INFO] [AutoGear] Permissions enabled.
    19:14:34 [INFO] [AutoGear] version 2.4.7 has been enabled!
    19:14:34 [INFO] [Equipment] Permissions enabled.
    19:14:34 [INFO] [Equipment] Version 0.3 enabled!
    19:14:34 [INFO] [Equipment] Developed by: tobindev!
    19:14:34 [SCHWERWIEGEND] Error occurred while enabling Equipment v0.3 (Is it up
    to date?): null
    java.lang.NullPointerException
    
    
    at me.tobindev.EquipPlugin.EquipPlugin.onEnable(EquipPlugin.java:20)
    Code:
            at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:174)
            at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader
    .java:957)
            at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManage
    r.java:280)
            at org.bukkit.craftbukkit.CraftServer.loadPlugin(CraftServer.java:171)
            at org.bukkit.craftbukkit.CraftServer.enablePlugins(CraftServer.java:154
    )
            at net.minecraft.server.MinecraftServer.e(MinecraftServer.java:297)
            at net.minecraft.server.MinecraftServer.a(MinecraftServer.java:284)
            at net.minecraft.server.MinecraftServer.init(MinecraftServer.java:152)
            at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:348)
            at net.minecraft.server.ThreadServerApplication.run(SourceFile:417)
    19:14:34 [INFO] [mChat] Permissions v3.1.6 found hooking in.
    19:14:34 [INFO] [mChat] BukkitStats Logging currently Activated. To opt-out chec
    k stats.yml.
    19:14:34 [INFO] [mChat] mChat version 1.8.7 is enabled!
    19:14:34 [INFO] Server permissions file permissions.yml is empty, ignoring it
    19:14:34 [INFO] Done (0,241s)! For help, type "help" or "?"
    
    But when I don't put this in the plugin:
    Code:
            this.getServer().getPluginCommand("eminer").setExecutor(new EquipPluginCommands(this));         this.getServer().getPluginCommand("elumberjack").setExecutor(new EquipPluginCommands(this));         this.getServer().getPluginCommand("ecombatant").setExecutor(new EquipPluginCommands(this));         this.getServer().getPluginCommand("earcher").setExecutor(new EquipPluginCommands(this));
    
    it can't work. So how can I fix it?
     
  10. Offline

    Nitnelave

    What's at line 20?
     
  11. Offline

    tobindev

    at line 20 is this:
    Code:
    this.getServer().getPluginCommand("eminer").setExecutor(new EquipPluginCommands(this));
    
     
  12. Offline

    Nitnelave

    try to split the statement.
    Server s = this.getServer();
    PluginCommand pc = s.getPluginCommand("eminer");
    etc...

    and then we can pinpoint the nullPointer error.
     
  13. Offline

    tobindev

    ok I have splitted it:
    Code:
            Server s = this.getServer();
            PluginCommand pc = s.getPluginCommand("eminer");
            pc.setExecutor(new EquipPluginCommands(this));
    
    it shows that the error is in the line with:
    pc.setExecutor(new EquipPluginCommands(this));
     
  14. Offline

    Nitnelave

    try doing
    EquiPluginCommands epc = new EquipPluginCommands(this);
    if(epc == null)
    scream("error!")
    replace that last line with whatever mean you have to display text on the console.
     
  15. Offline

    tobindev

    EquipPluginCommands epc = new EquipPluginCommands(this);
    if(epc == null)
    scream("error!")

    this instead of:
    Code:
            Server s = this.getServer();         PluginCommand pc = s.getPluginCommand("eminer");         pc.setExecutor(new EquipPluginCommands(this));
    
    or after this or where does it have to stay?
     
  16. Offline

    bleachisback

    It's because you haven't declared the command "eminer" so server.getPluginCommand("eminer") is returning null

    You can put it in your plugin.yml like this:
    Code:
    commands:
      crimson:
        description: The Crimson base command, used for administrative tasks.
        usage: /crimson [utility] [args]
        aliases: [/, lala, whee]    
    
     
  17. Offline

    tobindev

    @bleachisback
    thanks this was the solution

    and also thanks at the others you helped me also a lot

    Code:
    package me.tobindev.fix;
    import org.bukkit.ChatColor;
    import org.bukkit.command.Command;
    import org.bukkit.command.CommandExecutor;
    import org.bukkit.command.CommandSender;
    import org.bukkit.entity.Player;
    import org.bukkit.inventory.ItemStack;
    import org.bukkit.inventory.PlayerInventory;
    
    public class EquipPluginCommands implements CommandExecutor {
        private final EquipPlugin plugin;
        public EquipPluginCommands(EquipPlugin instance) {plugin = instance;}
        
        public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args)
        {
            Player player = (Player)sender;
            PlayerInventory inv = player.getInventory();
            
            //Miner equipment
            
            if((commandLabel.equalsIgnoreCase("eminer"))) {
                if(!(args.length > 0)) {return false;}
                if(args[0].equalsIgnoreCase("stone")) {
                    if((plugin.useArmor(player, "miner.stone"))) {
                        sender.sendMessage(ChatColor.GRAY + "[Equipment]" + ChatColor.GREEN + "You are now equipped with a miner's equipment!");
                        inv.setItem(0,new ItemStack(274, 1));
                        inv.setItem(1,new ItemStack(50, 32));
                        inv.setItem(2,new ItemStack(65, 10));
                        inv.setItem(3,new ItemStack(58, 1));
                        System.out.println("[Equipment] Player: " + player.getDisplayName() + " has been equipped with " + args[0].toString() + " miner's equipment");
                    } else { player.sendMessage(ChatColor.GRAY + "[Equipment]" + ChatColor.RED + "You do not have permission to use that!"); }
                } else if (args[0].equalsIgnoreCase("iron")) {
                    if((plugin.useArmor(player, "miner.iron"))) {
                        sender.sendMessage(ChatColor.GRAY + "[Equipment]" + ChatColor.GREEN + "You are now equipped with a miner's equipment!");
                        inv.setItem(0,new ItemStack(257, 1));
                        inv.setItem(1,new ItemStack(50, 45));
                        inv.setItem(2,new ItemStack(65, 15));
                        inv.setItem(3,new ItemStack(58, 1));
                        System.out.println("[Equipment] Player: " + player.getDisplayName() + " has been equipped with " + args[0].toString() + " miner's equipment");
                    } else { player.sendMessage(ChatColor.GRAY + "[Equipment]" + ChatColor.RED + "You do not have permission to use that!"); }
                } else if (args[0].equalsIgnoreCase("diamond")) {
                    if((plugin.useArmor(player, "miner.diamond"))) {
                        sender.sendMessage(ChatColor.GRAY + "[Equipment]" + ChatColor.GREEN + "You are now equipped with a miner's equipment!");
                        inv.setItem(0,new ItemStack(278, 1));
                        inv.setItem(1,new ItemStack(50, 64));
                        inv.setItem(2,new ItemStack(65, 20));
                        inv.setItem(3,new ItemStack(58, 2));
                        System.out.println("[Equipment] Player: " + player.getDisplayName() + " has been equipped with " + args[0].toString() + " miner's equipment");
                    } else { player.sendMessage(ChatColor.GRAY + "[Equipment]" + ChatColor.RED + "You do not have permission to use that!"); }
                } else {
                    sender.sendMessage(ChatColor.GRAY + "[Equipment]" + ChatColor.RED + "'" + args[0] + "' is not a valid equipment/material type!");
                }
                return true;
            } else { sender.sendMessage(ChatColor.GRAY + "[Equipment]" + ChatColor.RED + "You did not specify an material-type!"); 
            
             }
            
            //Lumberjack equipment
            
            if((commandLabel.equalsIgnoreCase("elumberjack"))) {
                if(!(args.length > 0)) {return false;}
                if(args[0].equalsIgnoreCase("stone")) {
                    if((plugin.useArmor(player, "lumberjack.stone"))) {
                        sender.sendMessage(ChatColor.GRAY + "[Equipment]" + ChatColor.GREEN + "You are now equipped with a lumberjack's equipment!");
                        inv.setItem(0,new ItemStack(275, 1));
                        inv.setItem(1,new ItemStack(50, 32));
                        inv.setItem(2,new ItemStack(58, 1));
                        System.out.println("[Equipment] Player: " + player.getDisplayName() + " has been equipped with " + args[0].toString() + " lumberjack's equipment");
                    } else { player.sendMessage(ChatColor.GRAY + "[Equipment]" + ChatColor.RED + "You do not have permission to use that!"); }
                } else if (args[0].equalsIgnoreCase("iron")) {
                    if((plugin.useArmor(player, "lumberjack.iron"))) {
                        sender.sendMessage(ChatColor.GRAY + "[Equipment]" + ChatColor.GREEN + "You are now equipped with a lumberjack's equipment!");
                        inv.setItem(0,new ItemStack(258, 1));
                        inv.setItem(1,new ItemStack(50, 45));
                        inv.setItem(2,new ItemStack(58, 1));
                        System.out.println("[Equipment] Player: " + player.getDisplayName() + " has been equipped with " + args[0].toString() + " lumberjack's equipment");
                    } else { player.sendMessage(ChatColor.GRAY + "[Equipment]" + ChatColor.RED + "You do not have permission to use that!"); }
                } else if (args[0].equalsIgnoreCase("diamond")) {
                    if((plugin.useArmor(player, "lumberjack.diamond"))) {
                        sender.sendMessage(ChatColor.GRAY + "[Equipment]" + ChatColor.GREEN + "You are now equipped with a lumberjack's equipment!");
                        inv.setItem(0,new ItemStack(279, 1));
                        inv.setItem(1,new ItemStack(50, 64));
                        inv.setItem(2,new ItemStack(58, 2));
                        System.out.println("[Equipment] Player: " + player.getDisplayName() + " has been equipped with " + args[0].toString() + " lumberjack's equipment");
                    } else { player.sendMessage(ChatColor.GRAY + "[Equipment]" + ChatColor.RED + "You do not have permission to use that!"); }
                } else {
                    sender.sendMessage(ChatColor.GRAY + "[Equipment]" + ChatColor.RED + "'" + args[0] + "' is not a valid equipment/material type!");
                }
                return true;
            } else { sender.sendMessage(ChatColor.GRAY + "[Equipment]" + ChatColor.RED + "You did not specify an material-type!"); 
            
            }
            
            //Combatant equipment
            
            if((commandLabel.equalsIgnoreCase("ecombatant"))) {
                if(!(args.length > 0)) {return false;}
                if(args[0].equalsIgnoreCase("leather")) {
                    if((plugin.useArmor(player, "combatant.leather"))) {
                        sender.sendMessage(ChatColor.GRAY + "[Equipment]" + ChatColor.GREEN + "You are now equipped with a combatant's equipment!");
                        inv.setHelmet(new ItemStack(298, 1));
                        inv.setChestplate(new ItemStack(299, 1));
                        inv.setLeggings(new ItemStack(300, 1));
                        inv.setBoots(new ItemStack(301, 1));
                        inv.setItem(0,new ItemStack(272, 1));
                        inv.setItem(1,new ItemStack(297, 2));
                        inv.setItem(2,new ItemStack(320, 1));
                        System.out.println("[Equipment] Player: " + player.getDisplayName() + " has been equipped with " + args[0].toString() + " combatant's equipment");
                    } else { player.sendMessage(ChatColor.GRAY + "[Equipment]" + ChatColor.RED + "You do not have permission to use that!"); }
                } else if (args[0].equalsIgnoreCase("iron")) {
                    if((plugin.useArmor(player, "combatant.iron"))) {
                        sender.sendMessage(ChatColor.GRAY + "[Equipment]" + ChatColor.GREEN + "You are now equipped with a combatant's equipment!");
                        inv.setHelmet(new ItemStack(306, 1));
                        inv.setChestplate(new ItemStack(307, 1));
                        inv.setLeggings(new ItemStack(308, 1));
                        inv.setBoots(new ItemStack(309, 1));
                        inv.setItem(0,new ItemStack(267, 1));
                        inv.setItem(1,new ItemStack(297, 2));
                        inv.setItem(2,new ItemStack(320, 2));
                        System.out.println("[Equipment] Player: " + player.getDisplayName() + " has been equipped with " + args[0].toString() + " combatant's equipment");
                    } else { player.sendMessage(ChatColor.GRAY + "[Equipment]" + ChatColor.RED + "You do not have permission to use that!"); }
                } else if (args[0].equalsIgnoreCase("diamond")) {
                    if((plugin.useArmor(player, "combatant.diamond"))) {
                        sender.sendMessage(ChatColor.GRAY + "[Equipment]" + ChatColor.GREEN + "You are now equipped with a combatant's equipment!");
                        inv.setHelmet(new ItemStack(310, 1));
                        inv.setChestplate(new ItemStack(311, 1));
                        inv.setLeggings(new ItemStack(312, 1));
                        inv.setBoots(new ItemStack(313, 1));
                        inv.setItem(0,new ItemStack(276, 1));
                        inv.setItem(1,new ItemStack(297, 3));
                        inv.setItem(2,new ItemStack(320, 2));
                        System.out.println("[Equipment] Player: " + player.getDisplayName() + " has been equipped with " + args[0].toString() + " combatant's equipment");
                    } else { player.sendMessage(ChatColor.GRAY + "[Equipment]" + ChatColor.RED + "You do not have permission to use that!"); }
                } else {
                    sender.sendMessage(ChatColor.GRAY + "[Equipment]" + ChatColor.RED + "'" + args[0] + "' is not a valid equipment/material type!");
                }
                return true;
            } else { sender.sendMessage(ChatColor.GRAY + "[Equipment]" + ChatColor.RED + "You did not specify an material-type!"); 
            }
            
            //Archer equipment
            
            if((commandLabel.equalsIgnoreCase("earcher"))) {
                if(!(args.length > 0)) {return false;}
                if(args[0].equalsIgnoreCase("leather")) {
                    if((plugin.useArmor(player, "archer.leather"))) {
                        sender.sendMessage(ChatColor.GRAY + "[Equipment]" + ChatColor.GREEN + "You are now equipped with a archer's equipment!");
                        inv.setHelmet(new ItemStack(298, 1));
                        inv.setChestplate(new ItemStack(299, 1));
                        inv.setLeggings(new ItemStack(300, 1));
                        inv.setBoots(new ItemStack(301, 1));
                        inv.setItem(0,new ItemStack(261, 1));
                        inv.setItem(1,new ItemStack(262, 64));
                        inv.setItem(2,new ItemStack(320, 1));
                        inv.setItem(3,new ItemStack(297, 1));
                        System.out.println("[Equipment] Player: " + player.getDisplayName() + " has been equipped with " + args[0].toString() + " archer's equipment");
                    } else { player.sendMessage(ChatColor.GRAY + "[Equipment]" + ChatColor.RED + "You do not have permission to use that!"); }
                } else if (args[0].equalsIgnoreCase("iron")) {
                    if((plugin.useArmor(player, "archer.iron"))) {
                        sender.sendMessage(ChatColor.GRAY + "[Equipment]" + ChatColor.GREEN + "You are now equipped with a archer's equipment!");
                        inv.setHelmet(new ItemStack(306, 1));
                        inv.setChestplate(new ItemStack(307, 1));
                        inv.setLeggings(new ItemStack(308, 1));
                        inv.setBoots(new ItemStack(309, 1));
                        inv.setItem(0,new ItemStack(261, 1));
                        inv.setItem(1,new ItemStack(262, 64));
                        inv.setItem(2,new ItemStack(262, 32));
                        inv.setItem(3,new ItemStack(320, 1));
                        inv.setItem(4,new ItemStack(297, 2));
                        System.out.println("[Equipment] Player: " + player.getDisplayName() + " has been equipped with " + args[0].toString() + " archer's equipment");
                    } else { player.sendMessage(ChatColor.GRAY + "[Equipment]" + ChatColor.RED + "You do not have permission to use that!"); }
                } else if (args[0].equalsIgnoreCase("diamond")) {
                    if((plugin.useArmor(player, "archer.diamond"))) {
                        sender.sendMessage(ChatColor.GRAY + "[Equipment]" + ChatColor.GREEN + "You are now equipped with a archer's equipment!");
                        inv.setHelmet(new ItemStack(310, 1));
                        inv.setChestplate(new ItemStack(311, 1));
                        inv.setLeggings(new ItemStack(312, 1));
                        inv.setBoots(new ItemStack(313, 1));
                        inv.setItem(0,new ItemStack(261, 1));
                        inv.setItem(1,new ItemStack(262, 64));
                        inv.setItem(2,new ItemStack(262, 64));
                        inv.setItem(3,new ItemStack(320, 2));
                        inv.setItem(4,new ItemStack(297, 2));
                        System.out.println("[Equipment] Player: " + player.getDisplayName() + " has been equipped with " + args[0].toString() + " archer's equipment");
                    } else { player.sendMessage(ChatColor.GRAY + "[Equipment]" + ChatColor.RED + "You do not have permission to use that!"); }
                } else {
                    sender.sendMessage(ChatColor.GRAY + "[Equipment]" + ChatColor.RED + "'" + args[0] + "' is not a valid equipment/material type!");
                }
                return true;
            } else { sender.sendMessage(ChatColor.GRAY + "[Equipment]" + ChatColor.RED + "You did not specify an material-type!"); 
             }
            
            
            
            
            return false;
        }
    }
    
    but now with this I have the problem that for example with /lumberjack stone it does the command but it also gives me the "You did not specify an material-type!"-message of the miner and for the last class the archer it gives you the messages of the miner, the lumberjack and the combatant
    in which lines have to be the returns for the miner, lumberjack, combatant and archer class?
    I've already written it behind the

    } else { sender.sendMessage(ChatColor.GRAY + "[Equipment]" + ChatColor.RED + "You did not specify an material-type!");
    }

    -part but than if you want to see (when you only type /lumberjack) /lumberjack [stone|iron|diamond] (like it is written in the plugin.yml) it gives you I'm not sure now the

    "' is not a valid equipment/material type!"-message or the
    "You did not specify an material-type!"-message

    so where has to be the return?
    I don't know probably I overlook only the place where it has to stand so I'm sorry if this is a very stupid question
     
  18. Offline

    bleachisback

    The problem is that you're saying "If the command isn't '/eminer', then print out '
    ChatColor.GRAY + "[Equipment]" + ChatColor.RED + "You did not specify an material-type!"'"
     
  19. Offline

    tobindev

    @bleachisback
    Oh yes I see this was the problem I have to fix it
    thanks
     
  20. Offline

    tobindev

  21. Offline

    Nitnelave

    If I can give you some advice on your project, just had a look at the first page... It's not really [command1] [command2] and some parameters for command 1 and 2, it's rather commands : eci, eminer [material], elumberjack [material], etc... and for material, three values possible (material is the argument, eminer is the command)
    As for the permissions, instead of e.command.material, which is unclear what pkugin it belongs to, you should have something like equipment.command1.material
    And I believe that if you put a more generic form of the permission, like
    Equipment.{command}.{material}
    People will still understand (put one or two examples, but there's no need to list all of them, especially as your plugin will grow in size). And add a global, admin command (equipment.*)
    Maybe add an other page with the equipment of each set? Ex: warrior is boots, legs, chest, helmet and sword

    As for the plugin itself, for more flexibility/ customization, I suggest that you rather load a list of class and the corresponding set from a file at startup, and then have your commands in the form of
    /equip warrior (iron) (someone)
    With warrior being the class, iron the material (with a default one so this one can be left out) and someone the person to equip (by default, you)

    Overall, you're off to a good start! Good luck and keep coding for the community!
     
Thread Status:
Not open for further replies.

Share This Page