[HELP]: Exception in plugins null

Discussion in 'Plugin Development' started by GooMan, Mar 26, 2011.

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

    GooMan

    Im new to minecraft:

    Code:
    08:11:19 [SCHWERWIEGEND] Could not load plugins\AdminMode.jar in plugins: null
    org.bukkit.plugin.InvalidPluginException
            at org.bukkit.plugin.java.JavaPluginLoader.loadPlugin(JavaPluginLoader.j
    ava:113)
            at org.bukkit.plugin.SimplePluginManager.loadPlugin(SimplePluginManager.
    java:159)
            at org.bukkit.plugin.SimplePluginManager.loadPlugins(SimplePluginManager
    .java:107)
            at org.bukkit.craftbukkit.CraftServer.loadPlugins(CraftServer.java:61)
            at net.minecraft.server.MinecraftServer.e(MinecraftServer.java:204)
            at net.minecraft.server.MinecraftServer.a(MinecraftServer.java:191)
            at net.minecraft.server.MinecraftServer.d(MinecraftServer.java:131)
            at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:246)
            at net.minecraft.server.ThreadServerApplication.run(SourceFile:366)
    Caused by: java.lang.ClassNotFoundException: com.bukkit.gigatoni1993.AdminMode
            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:30)
            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:105)
            ... 8 more
     
  2. Offline

    Edward Hand

    Could you paste your plugin.yml and main JavaPlugin class code?
     
  3. Offline

    GooMan

    The classes & all not from me..

    Code:
    package com.bukkit.gigatoni1993.AdminMode;
    
    import com.nijiko.permissions.PermissionHandler;
    import com.nijikokun.bukkit.Permissions.Permissions;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.util.HashMap;
    import java.util.Properties;
    import java.util.logging.Level;
    import java.util.logging.Logger;
    import org.bukkit.ChatColor;
    import org.bukkit.Location;
    import org.bukkit.command.Command;
    import org.bukkit.command.CommandSender;
    import org.bukkit.entity.Player;
    import org.bukkit.event.Event.Priority;
    import org.bukkit.event.Event.Type;
    import org.bukkit.inventory.ItemStack;
    import org.bukkit.plugin.PluginManager;
    import org.bukkit.plugin.java.JavaPlugin;
    
    public class AdminMode extends JavaPlugin
    {
        public Logger log = Logger.getLogger("Minecraft");
        public HashMap<Player, ItemStack[]> pi = new HashMap<Player, ItemStack[]>();
        public HashMap<Player, Location>  pl = new HashMap<Player, Location>();
        public HashMap<Player, Integer>  ph = new HashMap<Player, Integer>();
        public ItemStack[] AdminStack = new ItemStack[36];
        public amEntity amEntity = new amEntity(this);
        public amPlayer amPlayer = new amPlayer(this);
        public String name = "AdminMode";
        public String ver  = "0.5";
        public Properties settings;
        public Permissions perms = null;
        public PermissionHandler permh;
    
        @Override
        public void onEnable()
        {
            readCfg();
            registerPermissions();
            getServer().getPluginManager().registerEvent(Type.ENTITY_DAMAGE, amEntity, Priority.Normal, this);
            getServer().getPluginManager().registerEvent(Type.ENTITY_TARGET, amEntity, Priority.Normal, this);
            getServer().getPluginManager().registerEvent(Type.PLAYER_JOIN, amPlayer, Priority.Normal, this);
            log.log(Level.INFO, "[" + name + "] " + name + " Version " + ver + " Enabled.");
        }
    
        @Override
        public void onDisable()
        {
            log.log(Level.INFO, "[" + name + "] " + name + " Version " + ver + " Disabled.");
        }
    
        @Override
        public boolean onCommand(CommandSender cs, Command c, String name, String[] split)
        {
            if(name.equals("adminmode") || name.equals("am"))
            {
                if(cs instanceof Player)
                {
                    Player p = (Player)cs;
                    boolean canUse = false;
                    if(perms != null)
                    {
                        canUse = permh.has(p, "adminmode.use");
                    }
    
                    if(p.isOp() || canUse)
                    {
                        if(pi.containsKey(p))
                        {
                            resetInv(p);
                            p.sendMessage(ChatColor.YELLOW + "Du bist nun wieder als Benutzer unterwegs.");
                            this.getServer().broadcastMessage(p.getDisplayName() + " hat sich als Admin abgemeldet!");
                        } else {
                            pullInv(p);
                            p.sendMessage(ChatColor.YELLOW + "Du bist nun als Admin im 'Dienst'. Schreibe /" + name + " um dich wieder abzumelden!");
                            this.getServer().broadcastMessage(p.getDisplayName() + " hat sich als Admin angemeldet!");
                        }
                    } else {
                        p.sendMessage(ChatColor.RED + "Du hast keine Berechtigung diesen Befehl zu nutzen!");
                    }
                } else {
                    cs.sendMessage("WTF!!! CHEATER!?!?!?!?");
                    return false;
                }
                return true;
            }
            return false;
        }
    
        public void resetInv(Player p)
        {
            p.getInventory().setContents(pi.get(p));
            p.teleport(pl.get(p));
            p.setHealth(ph.get(p));
    
            pi.remove(p);
            pl.remove(p);
            ph.remove(p);
        }
    
        public void pullInv(Player p)
        {
            pi.put(p, p.getInventory().getContents());
            pl.put(p, p.getLocation());
            ph.put(p, p.getHealth());
    
            ItemStack[] EmptyStack = new ItemStack[pi.get(p).length];
            p.getInventory().setContents(AdminStack);
        }
    
        public void readCfg()
        {
            settings = new Properties();
            try
            {
                settings.load(new FileInputStream("plugins/AdminMode/settings.properties"));
     
                if(settings.containsKey("items"))
                {
                    String[] Items4Admins = settings.getProperty("items").split(",");
    
                    int i = 0;
                    for(String ItemStart : Items4Admins)
                    {
                        String[] info = ItemStart.split(":");
                        int itemid = Integer.parseInt(info[0]);
                        int amount = 1;
                        if(info.length > 1)
                        {
                            amount = Integer.parseInt(info[1]);
                        }
    
                        AdminStack[i] = new ItemStack(itemid, amount);
                        i++;
                    }
                } else {
                    log.log(Level.INFO, "No items defined.");
                }
            } catch(Exception e)
            {
                e.printStackTrace();
                String FileContents = "Automatisch generierte Datei\n" +
                                        "Wenn ein Admin sich anmeldet '/am' werden folgende Items vergeben\n" +
                                        "Values can contain an amount, the itemid and amount MUST be separated by a colon.\n" +
                                        "items=278,1:64";
                try {
                    new File("plugins/AdminMode/").mkdirs();
                    settings.store(new FileOutputStream("plugins/AdminMode/settings.properties"), FileContents);
                    log.log(Level.INFO, "[" + name + "] Created properties file.");
                } catch (IOException ex)
                {
                    log.log(Level.INFO, "[" + name + "] Unable to automatically properties files.");
                }
            }
        }
    
        public void registerPermissions()
        {
            PluginManager pm = getServer().getPluginManager();
    
            try
            {
                if(pm.getPlugin("Permissions").isEnabled())
                {
                    perms = ((Permissions)pm.getPlugin("Permissions"));
                    perms.setupPermissions();
                    permh = perms.getHandler();
                    log.log(Level.INFO, "[" + name + "] Permissions " + perms.getDescription().getVersion() + " enabled for use.");
                    log.log(Level.INFO, "[" + name + "] Permissions have priority; being an op with BlastPick will do nothing.");
                }
            } catch(NullPointerException npe)
            {
                perms = null;
            }
        }
    }
    Copyright by gnftoxic
     
  4. Offline

    Edward Hand

    Use of the com.bukkit namespace is forbidden - that is what is causing the error.
    Change the namespace to something else, both in your classes and in the plugin.yml
     
  5. Offline

    GooMan

    sorry :( not working :(....
    Code:
    08:31:25 [SCHWERWIEGEND] Could not load plugins\AdminMode.jar in plugins: null
    org.bukkit.plugin.InvalidPluginException
            at org.bukkit.plugin.java.JavaPluginLoader.loadPlugin(JavaPluginLoader.j
    ava:113)
            at org.bukkit.plugin.SimplePluginManager.loadPlugin(SimplePluginManager.
    java:159)
            at org.bukkit.plugin.SimplePluginManager.loadPlugins(SimplePluginManager
    .java:107)
            at org.bukkit.craftbukkit.CraftServer.loadPlugins(CraftServer.java:61)
            at net.minecraft.server.MinecraftServer.e(MinecraftServer.java:204)
            at net.minecraft.server.MinecraftServer.a(MinecraftServer.java:191)
            at net.minecraft.server.MinecraftServer.d(MinecraftServer.java:131)
            at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:246)
            at net.minecraft.server.ThreadServerApplication.run(SourceFile:366)
    Caused by: java.lang.ClassNotFoundException: com.am.gigatoni1993.AdminMode
            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:30)
            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:105)
     
  6. Offline

    darknesschaos

    post your new code please. And your YML (this looks like a yml problem)
     
  7. Offline

    GooMan

    Code:
    name: AdminMode
    version: 0.5
    main: com.am.gigatoni1993.AdminMode
    Code:
    package com.am.gigatoni1993.AdminMode;
    
    import com.nijiko.permissions.PermissionHandler;
    import com.nijikokun.bukkit.Permissions.Permissions;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.util.HashMap;
    import java.util.Properties;
    import java.util.logging.Level;
    import java.util.logging.Logger;
    import org.bukkit.ChatColor;
    import org.bukkit.Location;
    import org.bukkit.command.Command;
    import org.bukkit.command.CommandSender;
    import org.bukkit.entity.Player;
    import org.bukkit.event.Event.Priority;
    import org.bukkit.event.Event.Type;
    import org.bukkit.inventory.ItemStack;
    import org.bukkit.plugin.PluginManager;
    import org.bukkit.plugin.java.JavaPlugin;
    
    public class AdminMode extends JavaPlugin
    {
        public Logger log = Logger.getLogger("Minecraft");
        public HashMap<Player, ItemStack[]> pi = new HashMap<Player, ItemStack[]>();
        public HashMap<Player, Location>  pl = new HashMap<Player, Location>();
        public HashMap<Player, Integer>  ph = new HashMap<Player, Integer>();
        public ItemStack[] AdminStack = new ItemStack[36];
        public amEntity amEntity = new amEntity(this);
        public amPlayer amPlayer = new amPlayer(this);
        public String name = "AdminMode";
        public String ver  = "0.5";
        public Properties settings;
        public Permissions perms = null;
        public PermissionHandler permh;
    
        @Override
        public void onEnable()
        {
            readCfg();
            registerPermissions();
            getServer().getPluginManager().registerEvent(Type.ENTITY_DAMAGE, amEntity, Priority.Normal, this);
            getServer().getPluginManager().registerEvent(Type.ENTITY_TARGET, amEntity, Priority.Normal, this);
            getServer().getPluginManager().registerEvent(Type.PLAYER_JOIN, amPlayer, Priority.Normal, this);
            log.log(Level.INFO, "[" + name + "] " + name + " Version " + ver + " Enabled.");
        }
    
        @Override
        public void onDisable()
        {
            log.log(Level.INFO, "[" + name + "] " + name + " Version " + ver + " Disabled.");
        }
    
        @Override
        public boolean onCommand(CommandSender cs, Command c, String name, String[] split)
        {
            if(name.equals("adminmode") || name.equals("am"))
            {
                if(cs instanceof Player)
                {
                    Player p = (Player)cs;
                    boolean canUse = false;
                    if(perms != null)
                    {
                        canUse = permh.has(p, "adminmode.use");
                    }
    
                    if(p.isOp() || canUse)
                    {
                        if(pi.containsKey(p))
                        {
                            resetInv(p);
                            p.sendMessage(ChatColor.YELLOW + "Du bist nun wieder als Benutzer unterwegs.");
                            this.getServer().broadcastMessage(p.getDisplayName() + " hat sich als Admin abgemeldet!");
                        } else {
                            pullInv(p);
                            p.sendMessage(ChatColor.YELLOW + "Du bist nun als Admin im 'Dienst'. Schreibe /" + name + " um dich wieder abzumelden!");
                            this.getServer().broadcastMessage(p.getDisplayName() + " hat sich als Admin angemeldet!");
                        }
                    } else {
                        p.sendMessage(ChatColor.RED + "Du hast keine Berechtigung diesen Befehl zu nutzen!");
                    }
                } else {
                    cs.sendMessage("WTF!!! CHEATER!?!?!?!?");
                    return false;
                }
                return true;
            }
            return false;
        }
    
        public void resetInv(Player p)
        {
            p.getInventory().setContents(pi.get(p));
            p.teleport(pl.get(p));
            p.setHealth(ph.get(p));
    
            pi.remove(p);
            pl.remove(p);
            ph.remove(p);
        }
    
        public void pullInv(Player p)
        {
            pi.put(p, p.getInventory().getContents());
            pl.put(p, p.getLocation());
            ph.put(p, p.getHealth());
    
            ItemStack[] EmptyStack = new ItemStack[pi.get(p).length];
            p.getInventory().setContents(AdminStack);
        }
    
        public void readCfg()
        {
            settings = new Properties();
            try
            {
                settings.load(new FileInputStream("plugins/AdminMode/settings.properties"));
     
                if(settings.containsKey("items"))
                {
                    String[] Items4Admins = settings.getProperty("items").split(",");
    
                    int i = 0;
                    for(String ItemStart : Items4Admins)
                    {
                        String[] info = ItemStart.split(":");
                        int itemid = Integer.parseInt(info[0]);
                        int amount = 1;
                        if(info.length > 1)
                        {
                            amount = Integer.parseInt(info[1]);
                        }
    
                        AdminStack[i] = new ItemStack(itemid, amount);
                        i++;
                    }
                } else {
                    log.log(Level.INFO, "No items defined.");
                }
            } catch(Exception e)
            {
                e.printStackTrace();
                String FileContents = "Automatisch generierte Datei\n" +
                                        "Wenn ein Admin sich anmeldet '/am' werden folgende Items vergeben\n" +
                                        "Values can contain an amount, the itemid and amount MUST be separated by a colon.\n" +
                                        "items=278,1:64";
                try {
                    new File("plugins/AdminMode/").mkdirs();
                    settings.store(new FileOutputStream("plugins/AdminMode/settings.properties"), FileContents);
                    log.log(Level.INFO, "[" + name + "] Created properties file.");
                } catch (IOException ex)
                {
                    log.log(Level.INFO, "[" + name + "] Unable to automatically properties files.");
                }
            }
        }
    
        public void registerPermissions()
        {
            PluginManager pm = getServer().getPluginManager();
    
            try
            {
                if(pm.getPlugin("Permissions").isEnabled())
                {
                    perms = ((Permissions)pm.getPlugin("Permissions"));
                    perms.setupPermissions();
                    permh = perms.getHandler();
                    log.log(Level.INFO, "[" + name + "] Permissions " + perms.getDescription().getVersion() + " enabled for use.");
                    log.log(Level.INFO, "[" + name + "] Permissions have priority; being an op with BlastPick will do nothing.");
                }
            } catch(NullPointerException npe)
            {
                perms = null;
            }
        }
    }
     
  8. Offline

    Sammy

    Code:
    name: AdminMode
    version: 0.5
    main: com.am.gigatoni1993.AdminMode.AdminMode;
    You forgot to pinpoint the main class file ;)
     
  9. Offline

    GooMan

    Okay. 1 last error..

    first i type /am. It works.

    second i type /am:
    an internal error occures

    in the console:



    Code:
    09:28:46 [SCHWERWIEGEND] null
    org.bukkit.command.CommandException: Unhandled exception executing command 'am'
    in plugin AdminMode v0.5
            at org.bukkit.command.PluginCommand.execute(PluginCommand.java:37)
            at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:80
    )
            at org.bukkit.craftbukkit.CraftServer.dispatchCommand(CraftServer.java:2
    29)
            at net.minecraft.server.NetServerHandler.c(NetServerHandler.java:645)
            at net.minecraft.server.NetServerHandler.chat(NetServerHandler.java:608)
    
            at net.minecraft.server.NetServerHandler.a(NetServerHandler.java:602)
            at net.minecraft.server.Packet3Chat.a(SourceFile:24)
            at net.minecraft.server.NetworkManager.a(SourceFile:230)
            at net.minecraft.server.NetServerHandler.a(NetServerHandler.java:76)
            at net.minecraft.server.NetworkListenThread.a(SourceFile:100)
            at net.minecraft.server.MinecraftServer.h(MinecraftServer.java:357)
            at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:272)
            at net.minecraft.server.ThreadServerApplication.run(SourceFile:366)
    Caused by: java.lang.NoSuchMethodError: org.bukkit.entity.Player.teleport(Lorg/b
    ukkit/Location;)Z
            at com.am.gigatoni1993.AdminMode.AdminMode.resetInv(AdminMode.java:98)
            at com.am.gigatoni1993.AdminMode.AdminMode.onCommand(AdminMode.java:75)
            at org.bukkit.command.PluginCommand.execute(PluginCommand.java:35)
            ... 12 more
     
  10. Offline

    Sammy

    You need to register the command on the yml file like this:
    Code:
    commands:
      am:
        description: AdminMod
        usage: |
          /<command> - Do something.
    
     
  11. Offline

    GooMan

    :). thx but it works not
     
  12. Offline

    Sammy

    You have many errors on your src man, lets see:
    The cmd is not on "String name" is on "Command c" So:
    Code:
    if(c.equals("adminmode") || c.equals("am"))
    and them you have "adminmod" and "am" use just "am" and register "adminmode" as an command alias
    Code:
    if(c.equalsIqnoreCase("am")))
    Code:
    commands:
      am:
        description: AdminMod
        usage: |
          /<command> - Do something.
        aliases: [adminmod]
    
    There maybe more errors but I must go now...
    Cheers
     
  13. Offline

    Drakia

    Code:
    Caused by: java.lang.NoSuchMethodError: org.bukkit.entity.Player.teleport(Lorg/b
    ukkit/Location;)Z
    Your error is you're developing with a different Bukkit build than your server is running.
    This is what you should be using:
    CraftBukkit: http://ci.bukkit.org/job/dev-CraftBukkit/556/
    Bukkit: http://ci.bukkit.org/job/dev-Bukkit/461/

    In the future, to tell what version of Bukkit to download to develop with, look on the CraftBukkit page of the CI, and at the bottom it says "Upstream Builds", just download that copy of Bukkit :)
     
Thread Status:
Not open for further replies.

Share This Page