Problem with onCommand and CommandExecutor...

Discussion in 'WIP and Development Status' started by lionking23, Jul 20, 2011.

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

    lionking23

    Hi, I've been having trouble with using onCommand and CommandExecutor as I haven't used commands in any Bukkit Plugin before and I'm working on my first one which is UnlimitedHealth. When I try to run my plugin on my bukkit server, it gives me this error:

    If any of you can find the error and let me know how to fix it, it will be greatly appreciated.

    the error:
    Code:
    22:49:00 [SEVERE] Could not load 'plugins/UnlimitedHealth1.2.jar' in folder 'plugins':
    java.lang.ClassNotFoundException: me.lionking23.UnlimitedHealth.UnlimitedHealth
        at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
        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(ClassLoader.java:306)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Class.java:247)
        at org.bukkit.plugin.java.JavaPluginLoader.loadPlugin(JavaPluginLoader.java:168)
        at org.bukkit.plugin.SimplePluginManager.loadPlugin(SimplePluginManager.java:199)
        at org.bukkit.plugin.SimplePluginManager.loadPlugins(SimplePluginManager.java:122)
        at org.bukkit.craftbukkit.CraftServer.loadPlugins(CraftServer.java:118)
        at org.bukkit.craftbukkit.CraftServer.<init>(CraftServer.java:89)
        at net.minecraft.server.ServerConfigurationManager.<init>(ServerConfigurationManager.java:51)
        at net.minecraft.server.MinecraftServer.init(MinecraftServer.java:132)
        at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:335)
        at net.minecraft.server.ThreadServerApplication.run(SourceFile:422)
    Here is the source code and plugin.yml (click the spoiler to see)

    plugin.yml:
    Show Spoiler

    Code:
    name: UnlimitedHealth
    package: me.lionking23.UnlimitedHealth.UnlimitedHealth
    main: me.lionking23.UnlimitedHealth.UnlimitedHealth
    version: 1.2
    commands:
    god:
     description: Unlimited health! WOOT!
     usage: /god
    ungod:
     description: No unlimited health... :(
     usage: /ungod
    


    UnlimitedHealth:
    Show Spoiler

    Code:
    package me.lionking23.UnlimitedHealth;
    
    import java.util.logging.Logger;
    import org.bukkit.Server;
    import org.bukkit.command.Command;
    import org.bukkit.command.CommandExecutor;
    import org.bukkit.command.CommandSender;
    import org.bukkit.entity.Player;
    import org.bukkit.event.Event;
    import org.bukkit.event.entity.EntityDamageEvent;
    import org.bukkit.plugin.Plugin;
    import org.bukkit.plugin.PluginManager;
    import org.bukkit.plugin.java.JavaPlugin;
    import org.*;
    
    public class UnlimitedHealth extends JavaPlugin {
    	public static UnlimitedHealth plugin;
    	private final UnlimitedHealthEntityListener entityListener = new UnlimitedHealthEntityListener(this);
    	Logger log = Logger.getLogger("Minecraft");
    	public EntityDamageEvent event;
    
    
    
    
    
    	public void onDisable() {
    		this.log.info("Unlimited Health plugin disabled!");
    		System.out.println("UnlimitedHealth v1.1 Disabled.");
    	}
    	public void onEnable() {
    		this.log.info("Unlimited Health plugin enabled!");
    		System.out.println("UnlimitedHealth v1.1 Enabled!");
    		PluginManager pm = this.getServer().getPluginManager();
    
    		pm.registerEvent(Event.Type.ENTITY_DAMAGE, entityListener, Event.Priority.Normal, this);
    		getCommand("god").setExecutor(new CommandExecutor() {
    			public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
    				if (event.getEntity() instanceof Player) {
    					event.setCancelled(true);
    					sender.sendMessage("UnlimitedHealth v 1.1 Enabled!");
    				} else {
    					return false;
    				}
    				return true;
    			}
    		});
    
    		getCommand("ungod").setExecutor(new CommandExecutor() {
    			public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
    				if (event.getEntity() instanceof Player) {
    					event.setCancelled(false);
    					sender.sendMessage("UnlimitedHealth v1.1 Disabled!");
    				} else {
    					return false;
    				}
    				return true;
    			}
    		});
    
    	}
    
    }
    


    UnlimitedHealthEntityListener:
    Show Spoiler

    Code:
    package me.lionking23.UnlimitedHealth;
    
    import org.bukkit.command.Command;
    import org.bukkit.command.CommandSender;
    import org.bukkit.entity.Entity;
    import org.bukkit.entity.Player;
    import org.bukkit.event.entity.EntityDamageEvent;
    import org.bukkit.event.entity.EntityListener;
    
    public class UnlimitedHealthEntityListener extends EntityListener {
    
    	public static UnlimitedHealth plugin;
    	public EntityDamageEvent event;
    
    
    
    
    
    
    	public UnlimitedHealthEntityListener(UnlimitedHealth instance) {
    		plugin = instance;
    	}
    
    
    
    	public void onEntityDamage(EntityDamageEvent event){
    
    		if(event.getEntity() instanceof Player){
    			event.setCancelled(true);
    
    
    		}
    	}
    


    UnlimitedHealthCMD:
    Show Spoiler

    Code:
    package me.lionking23.UnlimitedHealth;
    
    import org.bukkit.*;
    import org.bukkit.command.*;
    import org.bukkit.entity.Player;
    import org.bukkit.event.entity.EntityDamageEvent;
    import org.bukkit.util.*;
    
    
    
    public class UnlimitedHealthCMD implements CommandExecutor{
    
    	public static UnlimitedHealth plugin;
    	public EntityDamageEvent event;
    
    	public boolean onCommand(CommandSender sender, Command command, String commandLabel, String[] args) {
        	if (command.getName().equalsIgnoreCase("god"));
        	if (event.getEntity() instanceof Player) {
        		event.setCancelled(true);
        		sender.sendMessage(ChatColor.GREEN + "UnlimitedHealth is on!");
        		return true;
        	}
        	if (command.getName().equalsIgnoreCase("ungod"));
        	if(event.getEntity() instanceof Player){
        		event.setCancelled(false);
        		sender.sendMessage(ChatColor.RED + "UnlimitedHealth is off.");
        		return true;
        	}
        	return false;
    
        }
    
    
    }
    


    PLEASE HELP!!!!
     
  2. Offline

    loganwm

    Remove the package line from the yaml, and ensure that your commands are indented properly (with spaces)
     
  3. Offline

    lionking23

    same problem :(

    here's what my plugin.yml looks like now(used spaces)

    Code:
    name: UnlimitedHealth
    main: me.lionking23.UnlimitedHealth.UnlimitedHealth
    version: 1.2
    commands:
        god:
            description: Unlimited health! WOOT!
            usage: /god
        ungod:
            description: No unlimited health... :(
            usage: /ungod
     
  4. Offline

    loganwm

    That's odd. Try renaming your core plugin class to UnlimitedHealthPlugin (you'll also need to rename the file and adjust your main entry in the plugin.yml.) I'm thinking that there might be an issue arising from multiple appearances of the string "UnlimitedHealth."

    Also, verify that there are no compilation errors when compiling the jar. I know for a fact that eclipse will allow you to build a jar even if there are errors in the code that prevent the class files from being compiled.

    Side-Note: you posted in the wrong forum. Post in the general Plugin Development forum next time for any issues or need of assistance.
     
  5. Offline

    lionking23

    Okay, thanks.
     
Thread Status:
Not open for further replies.

Share This Page