I have tried, but please help me...

Discussion in 'Plugin Development' started by migi0027, Aug 13, 2011.

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

    migi0027

    My goal is: My fingers have 5 lives, and when their life is under 5(by punching stone or something else.) My player will take damage.
    My main code is:
    Code:
    package me.miguel.fb;
    
    import java.util.logging.Logger;
    
    import org.bukkit.event.Event;
    import org.bukkit.event.Event.Priority;
    import org.bukkit.plugin.PluginManager;
    import org.bukkit.plugin.java.JavaPlugin;
    
    public class fbmain extends JavaPlugin{
    private final fbplayerlistener pListener = new fbplayerlistener();
    Logger log = Logger.getLogger("Minecraft");
        @Override
        public void onDisable() {
            // TODO Auto-generated method stub
            log.info("FingerBreak has been disabled!");
        }
    
        @Override
        public void onEnable() {
            // TODO Auto-generated method stub
            PluginManager pm = getServer().getPluginManager();
            pm.registerEvent(Event.Type.BLOCK_DAMAGE, pListener, Priority.Normal, this);
            log.info("FingersBreak is Initialized and ready!");
    
        }
    
    }
    
    My PlayerListener:
    Code:
    package me.miguel.fb;
    
    import java.util.logging.Logger;
    
    import org.bukkit.Server;
    import org.bukkit.entity.Player;
    import org.bukkit.event.block.BlockDamageEvent;
    import org.bukkit.event.player.PlayerListener;
    
    public class fbplayerlistener extends PlayerListener{
    
        Logger log = Logger.getLogger("Minecraft");
        int Life = 5;
    
        public void OnBlockDamage(BlockDamageEvent event) {
            //Initialize Start
            Player player = event.getPlayer();
            Server server = player.getServer();
            //Initialize done
    
            if (Life < 0)
            {
                Life -= 1;
                server.broadcastMessage("Your Fingers heal is at: " + Life);
            }
            else
            {
                int phealth = player.getHealth();
                player.setHealth(phealth - 1);
                server.broadcastMessage("Av, that hurt, i better put my fingers away for now...");
            }
        }
    }
     
  2. Offline

    adreide

    • your condition on life should be if (Life >= 0) Life--; and not the inverse.
    • make a Life value per player. As it is now, all the player have the same life value.
    • Broadcasting a message for a personnal message isn't the best idea either since you do have player.sendMessage(...);
    • Life value is never reseted back to 5
     
  3. Offline

    migi0027

    When i start the plugin in my server is gives me an error:
    Code:
    10:18:00 [SEVERE] Could not load 'plugins\FingerBreak.jar' in folder 'plugins':
    
    java.lang.ClassNotFoundException: me.miguel.FingerLife
            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:168)
            at org.bukkit.plugin.SimplePluginManager.loadPlugin(SimplePluginManager.
    java:207)
            at org.bukkit.plugin.SimplePluginManager.loadPlugins(SimplePluginManager
    .java:130)
            at org.bukkit.craftbukkit.CraftServer.loadPlugins(CraftServer.java:128)
            at org.bukkit.craftbukkit.CraftServer.<init>(CraftServer.java:97)
            at net.minecraft.server.ServerConfigurationManager.<init>(ServerConfigur
    ationManager.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)
     
  4. Offline

    adreide

    • your plugin.yml mainclass does not match your real class. me.miguel.fb.fbmain in your case
    • A naming convention wants java classes to begin with a capital letter and the .java file to be named like the class.
     
  5. Offline

    migi0027

    Ok i just want this clear(I made some confusion):

    fbmain:
    Code:
    package me.miguel.fb;
    
    import java.util.logging.Logger;
    
    import org.bukkit.event.Event;
    import org.bukkit.event.Event.Priority;
    import org.bukkit.plugin.PluginManager;
    import org.bukkit.plugin.java.JavaPlugin;
    
    public class fbmain extends JavaPlugin{
    private final fbplayerlistener pListener = new fbplayerlistener();
    Logger log = Logger.getLogger("Minecraft");
        @Override
        public void onDisable() {
            // TODO Auto-generated method stub
            log.info("FingerBreak has been disabled!");
        }
    
        @Override
        public void onEnable() {
            // TODO Auto-generated method stub
            PluginManager pm = getServer().getPluginManager();
            pm.registerEvent(Event.Type.BLOCK_DAMAGE, pListener, Priority.Normal, this);
            log.info("FingersBreak is Initialized and ready!");
    
        }
    
    }
    
    fbplayerlistener:
    Code:
    package me.miguel.fb;
    
    import java.util.logging.Logger;
    import org.bukkit.entity.Player;
    import org.bukkit.event.block.BlockDamageEvent;
    import org.bukkit.event.player.PlayerListener;
    
    public class fbplayerlistener extends PlayerListener{
    
        Logger log = Logger.getLogger("Minecraft");
        int Life = 5;
    
        public void OnBlockDamage(BlockDamageEvent event) {
            //Initialize Start
            Player player = event.getPlayer();
            //Initialize done
    
            if (Life <= 0)
            {
                Life -= 1;
                player.sendMessage("Your Fingers heal is at: " + Life);
            }
            else
            {
                int phealth = player.getHealth();
                player.setHealth(phealth - 1);
                player.sendMessage("Av, that hurt, i better put my fingers away for now...");
            }
        }
    }
    error:
    Code:
    10:44:16 [SEVERE] Could not load 'plugins\FingerBreak.jar' in folder 'plugins':
    
    java.lang.ClassNotFoundException: me.miguel.fb
            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:168)
            at org.bukkit.plugin.SimplePluginManager.loadPlugin(SimplePluginManager.
    java:207)
            at org.bukkit.plugin.SimplePluginManager.loadPlugins(SimplePluginManager
    .java:130)
            at org.bukkit.craftbukkit.CraftServer.loadPlugins(CraftServer.java:128)
            at org.bukkit.craftbukkit.CraftServer.<init>(CraftServer.java:97)
            at net.minecraft.server.ServerConfigurationManager.<init>(ServerConfigur
    ationManager.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)
     
  6. Offline

    Tster

    Bukkit cant find your main class, open your plugin.yml, and make sure the main bit looks like this:
    main: me.miguel.fb.fbmain
     
  7. Offline

    migi0027

    Thanks, i forgot to put the main class... Stupid me!

    But when i damage a block it gives me this error:
    Code:
    11:05:49 [SEVERE] Could not pass event BLOCK_DAMAGE to FingerBreak
    java.lang.ClassCastException: me.miguel.fb.fbplayerlistener cannot be cast to or
    g.bukkit.event.block.BlockListener
            at org.bukkit.plugin.java.JavaPluginLoader$29.execute(JavaPluginLoader.j
    ava:441)
            at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.jav
    a:58)
            at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.j
    ava:332)
            at org.bukkit.craftbukkit.event.CraftEventFactory.callBlockDamageEvent(C
    raftEventFactory.java:186)
            at net.minecraft.server.ItemInWorldManager.dig(ItemInWorldManager.java:9
    0)
            at net.minecraft.server.NetServerHandler.a(NetServerHandler.java:458)
            at net.minecraft.server.Packet14BlockDig.a(SourceFile:42)
            at net.minecraft.server.NetworkManager.b(NetworkManager.java:226)
            at net.minecraft.server.NetServerHandler.a(NetServerHandler.java:85)
            at net.minecraft.server.NetworkListenThread.a(SourceFile:105)
            at net.minecraft.server.MinecraftServer.h(MinecraftServer.java:451)
            at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:361)
            at net.minecraft.server.ThreadServerApplication.run(SourceFile:422)
    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
     
    Last edited by a moderator: May 18, 2016
  8. Offline

    Tster

    Your using a player listener to listen for block events, change it so your player listener extends BlockListener
     
  9. Offline

    migi0027

    Have changed the extend to BlockListener but i don't receive a message from my plugin! and after 5 block breaks, i don't lose life, what is wrong?
     
  10. Offline

    thehutch

    Don't you want it so when you break the block it hurts you?
     
  11. Offline

    adreide

    Sorry to be rough but what's in your listener will not work the way you want it. And try to use player.damage instead of setting the health manually. Go to http://jd.bukkit.org to get API information.
     
  12. Offline

    migi0027

    I feel like the code is a mess... Can you please try to make a code that i wanted:

    My Fingers have 5 lives, when that 5 lives is gone(By pushing blocks) i starting losing life when i punch blocks.

    Please help me!

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

Share This Page