Noob needs some help please.

Discussion in 'Plugin Development' started by chenr1, Jun 5, 2012.

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

    chenr1

    Hello guys I just learned how to make bukkit plugins and I was having lots of fun untill I hit the problem that my Playerlistners weren't working AT ALL. The on enable and on Disable and Commands work but not the listners. Please help.
    I also have General Java Knowledge.


    Code:
    package com.goldmine.caleb;
     
     
     
     
    import java.util.logging.Logger;
     
    import org.bukkit.ChatColor;
    import org.bukkit.Material;
    import org.bukkit.command.Command;
    import org.bukkit.command.CommandSender;
    import org.bukkit.entity.Player;
    import org.bukkit.event.EventHandler;
    import org.bukkit.event.block.BlockBreakEvent;
    import org.bukkit.event.block.BlockPlaceEvent;
    import org.bukkit.plugin.java.JavaPlugin;
     
     
    public class testpluginbukkit extends JavaPlugin {
     
     
       
       
       
       
            //NEXT STFF
       
       
            @EventHandler
            public void StopBedrockBlockBreak(BlockBreakEvent event){
                if(event.getBlock().getType() == Material.BEDROCK){
                    event.setCancelled(true);
                    event.getPlayer().sendMessage(ChatColor.RED+"you cant destroy that block");
                }
           
            }
       
            public void StopBedrockBlockPlace(BlockPlaceEvent event){
                if(event.getBlock().getType() == Material.BEDROCK){
                    event.setCancelled(true);
                    event.getPlayer().sendMessage(ChatColor.RED+"you cant place that block");
           
            }
    }
           
       
    }
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
    
     
  2. Offline

    ZeusAllMighty11

    You have to register the event method in the onEnable() method.
     
  3. Offline

    chenr1

    Wait, what does that mean? Could you please explain. I am new to this plugin thing. Thanks for your help BTW.
     
  4. Offline

    ZeusAllMighty11

    It's ok, I'm new too.

    Can you post your whole code?
     
  5. Offline

    chenr1

    Sure.
    Code:
    package com.goldmine.caleb;
     
     
     
     
    import java.util.logging.Logger;
     
    import org.bukkit.ChatColor;
    import org.bukkit.Material;
    import org.bukkit.command.Command;
    import org.bukkit.command.CommandSender;
    import org.bukkit.entity.Player;
    import org.bukkit.event.EventHandler;
    import org.bukkit.event.block.BlockBreakEvent;
    import org.bukkit.event.block.BlockPlaceEvent;
    import org.bukkit.plugin.java.JavaPlugin;
     
     
    public class testpluginbukkit extends JavaPlugin {
     
        Logger log;
     
        public void onEnable(){
            log = this.getLogger();
            log.info("Your plugin has been enabled!");
        }
     
        public void onDisable(){
            log.info("Your plugin has been disabled.");
        }
     
        //BREAK
            public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) {
           
           
            if(cmd.getName().equalsIgnoreCase("msgme")) {
                sender.sendMessage(ChatColor.RED + "Here is your message:");
                            return true;
            }
           
            if(cmd.getName().equalsIgnoreCase("drop")) {
           
                    sender.sendMessage(ChatColor.RED + "Dropping items from inventory..");
                    return true;
               
                }
           
            return false;
        }
       
     
           
           
           
           
            //NEXT STFF
           
           
            @EventHandler
            public void StopBedrockBlockBreak(BlockBreakEvent event){
                if(event.getBlock().getType() == Material.BEDROCK){
                    event.setCancelled(true);
                    event.getPlayer().sendMessage(ChatColor.RED+"you cant destroy that block");
                }
               
            }
           
            public void StopBedrockBlockPlace(BlockPlaceEvent event){
                if(event.getBlock().getType() == Material.BEDROCK){
                    event.setCancelled(true);
                    event.getPlayer().sendMessage(ChatColor.RED+"you cant place that block");
               
            }
    }
               
           
    }
       
       
       
       
       
       
       
       
       
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
    
     
  6. Offline

    TheTrixsta

    Bukkit.getServer().getPluginManager().registerEvents(this, this);

    this goes after the on enable, the first THIS is the class file you hold your event at so like new Class()
     
  7. Offline

    ZeusAllMighty11

    chenr1



    PHP:
     
    package com
    .goldmine.caleb;
     
     
     
     
    import java.util.logging.Logger;
     
    import org.bukkit.ChatColor;
    import org.bukkit.Material;
    import org.bukkit.command.Command;
    import org.bukkit.command.CommandSender;
    import org.bukkit.entity.Player;
    import org.bukkit.event.EventHandler;
    import org.bukkit.event.block.BlockBreakEvent;
    import org.bukkit.event.block.BlockPlaceEvent;
    import org.bukkit.plugin.java.JavaPlugin;
     
     
    public class 
    testpluginbukkit extends JavaPlugin implements Listener// Gotta implement listener, because you have eventhandlers
     
        
    Logger log;
     
        public 
    void onEnable(){
            
    log this.getLogger();
            
    log.info("Your plugin has been enabled!"); // not truly necessary, but it doesn't harm you. Bukkit auto has this
     
                
    StopBedrockBlockBreak = new testpluginbukkit(); // Register the event void name, and the class name
        
    getServer().getPluginManager().registerEvents(new testpluginbukkit(), this); // register
        // Break (not necessary, keeps me organized
     
                
    StopBedrockBlockPlace = new testpluginbukkit(); // Register the event void name, and the class name again
        
    getServer().getPluginManager().registerEvents(new testpluginbukkit(), this); // register  again
        // Break (not necessary, keeps me organized (again)
     
     
      
    }
     
        public 
    void onDisable(){
            
    log.info("Your plugin has been disabled.");
        }
     
        
    //BREAK
            
    public boolean onCommand(CommandSender senderCommand cmdString commandLabelString[] args) {
         
         
            if(
    cmd.getName().equalsIgnoreCase("msgme")) {
                
    sender.sendMessage(ChatColor.RED "Here is your message:");
                            return 
    true;
            }
         
            if(
    cmd.getName().equalsIgnoreCase("drop")) {
         
                    
    sender.sendMessage(ChatColor.RED "Dropping items from inventory..");
                    
    // do something in here???
                    
    return true;
             
                }
         
            return 
    false// why return false?
        
    }
     
     
         
         
         
         
            
    //NEXT STFF
         
         
            
    @EventHandler
            
    public void StopBedrockBlockBreak(BlockBreakEvent event){
                if(
    event.getBlock().getType() == Material.BEDROCK){
                    
    event.setCancelled(true);
                    
    event.getPlayer().sendMessage(ChatColor.RED+"you cant destroy that block");
                }
             
            }
          @
    EventHandler // Forgot this bro
            
    public void StopBedrockBlockPlace(BlockPlaceEvent event){
                if(
    event.getBlock().getType() == Material.BEDROCK){
                    
    event.setCancelled(true);
                    
    event.getPlayer().sendMessage(ChatColor.RED+"you cant place that block");
             
                }
        }
     
    }
    Should work for ya.
     
  8. Offline

    TheTrixsta

    also dont forget your @EventHandler over your StopBedrockPlace method
     
  9. Offline

    ZeusAllMighty11

    I fixed it for him, (I think) but then again I'm still a noob as well. :)
     
  10. Offline

    TheTrixsta

    no need to define the class here " StopBedrockBlockPlace = new testpluginbukkit();" just use "this"

    give me a sec ill write it up for you

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

    ZeusAllMighty11

    Ah right. It doesn't hurt, but it is not necessary unless calling it later in ArrayLists and such.
     
  12. Offline

    TheTrixsta

    Code:
    package com.goldmine.caleb;
     
    import java.util.logging.Logger;
     
    import org.bukkit.ChatColor;
    import org.bukkit.Material;
    import org.bukkit.command.Command;
    import org.bukkit.command.CommandSender;
    import org.bukkit.entity.Player;
    import org.bukkit.event.EventHandler;
    import org.bukkit.event.block.BlockBreakEvent;
    import org.bukkit.event.block.BlockPlaceEvent;
    import org.bukkit.plugin.java.JavaPlugin;
     
    public class testpluginbukkit extends JavaPlugin {
     
    public static void Logger log = Logger.getLogger("Minecraft");
     
    public void onEnable(){
    PluginManager pm = getServer().getPluginManager();
    pm.registerEvents(this, this);
    log.info("Your plugin has been enabled!");
    }
     
    public void onDisable(){
    log.info("Your plugin has been disabled.");
    }
     
    public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) {
     
    if(cmd.getName().equalsIgnoreCase("msgme")) {
    sender.sendMessage(ChatColor.RED + "Here is your message:");
    return true;
    }
     
    if(cmd.getName().equalsIgnoreCase("drop")) {
     
    sender.sendMessage(ChatColor.RED + "Dropping items from inventory..");
    return true;
     
    }
     
    return false;
    }
     
    @EventHandler
    public void StopBedrockBlockBreak(BlockBreakEvent event){
    if(event.getBlock().getType() == Material.BEDROCK){
    event.setCancelled(true);
    event.getPlayer().sendMessage(ChatColor.RED+"you cant destroy that block");
    }
     
    }
     
    @EventHandler
    public void StopBedrockBlockPlace(BlockPlaceEvent event){
    if(event.getBlock().getType() == Material.BEDROCK){
    event.setCancelled(true);
    event.getPlayer().sendMessage(ChatColor.RED+"you cant place that block");
    }
    }
     
     
    }
    AKA. Java Reflection ;)

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

    chenr1

    Sheesh i'm probally annoying you guys but im still getting errors. Here is my code.
    Code:
    package com.goldmine.caleb;
     
    import java.util.logging.Logger;
     
    import org.bukkit.ChatColor;
    import org.bukkit.Material;
    import org.bukkit.command.Command;
    import org.bukkit.command.CommandSender;
    import org.bukkit.entity.Player;
    import org.bukkit.event.EventHandler;
    import org.bukkit.event.Listener;
    import org.bukkit.event.block.BlockBreakEvent;
    import org.bukkit.event.block.BlockPlaceEvent;
    import org.bukkit.plugin.PluginManager;
    import org.bukkit.plugin.java.JavaPlugin;
     
    public class testpluginbukkit extends JavaPlugin implements Listener {
     
    //public static void Logger log = Logger.getLogger("Minecraft");
        Logger log;
    public void onEnable(){
    PluginManager pm = getServer().getPluginManager();
    pm.registerEvents(this, this);
    log.info("Your plugin has been enabled!");
    }
     
    public void onDisable(){
    log.info("Your plugin has been disabled.");
     
     
     
     
    }
     
    @EventHandler
    public void StopBedrockBlockBreak(BlockBreakEvent event){
    if(event.getBlock().getType() == Material.BEDROCK){
    event.setCancelled(true);
    event.getPlayer().sendMessage(ChatColor.RED+"you cant destroy that block");
    }
     
    }
     
    @EventHandler
    public void StopBedrockBlockPlace(BlockPlaceEvent event){
    if(event.getBlock().getType() == Material.BEDROCK){
    event.setCancelled(true);
    event.getPlayer().sendMessage(ChatColor.RED+"you cant place that block");
    }
    }
     
     
    }


    And here is My error:



    Code:
    2012-06-05 23:20:35 [SEVERE] Error occurred while enabling testpluginbukkit v0.1 (Is it up to date?)
    java.lang.NullPointerException
        at com.goldmine.caleb.testpluginbukkit.onEnable(testpluginbukkit.java:24)
        at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:215)
        at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:337)
        at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:381)
        at org.bukkit.craftbukkit.CraftServer.loadPlugin(CraftServer.java:256)
        at org.bukkit.craftbukkit.CraftServer.enablePlugins(CraftServer.java:238)
        at net.minecraft.server.MinecraftServer.t(MinecraftServer.java:381)
        at net.minecraft.server.MinecraftServer.a(MinecraftServer.java:368)
        at net.minecraft.server.MinecraftServer.init(MinecraftServer.java:197)
        at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:432)
        at net.minecraft.server.ThreadServerApplication.run(SourceFile:492)
    2012-06-05 23:20:35 [INFO] Server permissions file permissions.yml is empty, ignoring it
    2012-06-05 23:20:35 [INFO] Done (3.336s)! For help, type "help" or "?"
    
     
  14. Offline

    ZeusAllMighty11

    Remove public static void from the fake method on the logger
     
  15. Offline

    chenr1

    Wait you mean like remove the //?
     
  16. Offline

    TheTrixsta

    yea it should be "public static Logger log = Logger.getLogger("Minecraft");"

    Hey you and I are the same age, want to start a small team? get to know each other? Write and release some nice plugins?

    thetrixsta. <-- my skype yea dont forget the period :p

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

    chenr1

    THANKS!!!!!!! It works
     
  18. Offline

    TheTrixsta

    nice :D
     
  19. Offline

    chenr1

    Would you mind me tagging along on the team? I know i suck but I could learn alot from you guys.
     
  20. Offline

    TheTrixsta

    Haha sure i dont mind teaching ;) just add my skypee
     
  21. Offline

    chenr1

    Sweet. I gotta go to bed but I will tommorow. Thanks
     
    TheTrixsta likes this.
  22. Offline

    ZeusAllMighty11

    Not only am I kid, (I turn 15 tomorrow) but I still have a kid voice. Kinda sucks, sound like I'm 12 but believe me I'm not lol.

    I don't get on Skype much, but my name is ZeusAllMighty11 :p
     
  23. Offline

    PoorBoyDrew

    Happy Birthday
     
    ZeusAllMighty11 and TheTrixsta like this.
Thread Status:
Not open for further replies.

Share This Page