Event Listener won't work

Discussion in 'Plugin Development' started by Pixelizedgaming, Feb 7, 2019.

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

    Pixelizedgaming

    another one of those stupid mistakes noobs like me do
    please help out

    Code:
    Main Plugin:
    package me.Pixel;
    
    
    import org.bukkit.Bukkit;
    import org.bukkit.ChatColor;
    import org.bukkit.Location;
    import org.bukkit.Material;
    import org.bukkit.World;
    import org.bukkit.command.Command;
    import org.bukkit.command.CommandSender;
    import org.bukkit.entity.Player;
    import org.bukkit.inventory.ItemStack;
    import org.bukkit.plugin.RegisteredServiceProvider;
    import org.bukkit.plugin.java.JavaPlugin;
    import org.bukkit.potion.PotionEffect;
    import org.bukkit.potion.PotionEffectType;
    
    import net.milkbowl.vault.economy.Economy;
    
    public class PluginMain extends JavaPlugin{
        public static Economy econ = null;
       
       
    
    
        @Override
        public void onEnable(){
            new PlayerListener(this);
            if(!setupEco()){
                //getLogger().severe(String.format("[%s] You don't have Vault! Disabling plugin...", getDescription().getName()));
                //getServer().getPluginManager().disablePlugin(this);
            }
           
        }
        private boolean setupEco(){
            if(getServer().getPluginManager().getPlugin("Vault") == null){
                return false;
            }
            RegisteredServiceProvider<Economy> rsp = getServer().getServicesManager().getRegistration(Economy.class);
            if (rsp == null){
                return false;
            }
            return econ != null;
        }
        @Override
        public void onDisable()
        {
           
           
        }
        public boolean onCommand(CommandSender sender,Command cmd,String label, String[] args){
            if (cmd.getName().equalsIgnoreCase("vpunish")){
               
                int length = args.length;
                if(length == 0){
                    sender.sendMessage(ChatColor.RED + "" + ChatColor.BOLD + "(!) No Player Specified!");
                    return true;
                }
                Player target = Bukkit.getServer().getPlayer(args[0]);
                if(target == null){
                    sender.sendMessage(ChatColor.RED + "" + ChatColor.BOLD + "(!) Player " + args[0] + " not found!");
                    return true;
                }
                Bukkit.getServer().broadcastMessage(ChatColor.GREEN + target.getName() + " got punished by " + sender.getName());
               
                target.getInventory().setHelmet(new ItemStack(Material.BUCKET));
                target.getInventory().setChestplate(new ItemStack(Material.BUCKET));
                target.getInventory().setLeggings(new ItemStack(Material.BUCKET));
                target.getInventory().setBoots(new ItemStack(Material.BUCKET));
               
               
               
                target.addPotionEffect(new PotionEffect(PotionEffectType.BLINDNESS, 200, 1));
                target.addPotionEffect(new PotionEffect(PotionEffectType.CONFUSION, 200, 1));
                target.addPotionEffect(new PotionEffect(PotionEffectType.POISON, 200, 1));
                target.addPotionEffect(new PotionEffect(PotionEffectType.HUNGER, 200, 1));
                target.addPotionEffect(new PotionEffect(PotionEffectType.WEAKNESS, 200, 1));
                target.addPotionEffect(new PotionEffect(PotionEffectType.SLOW_DIGGING, 200, 1));
                target.addPotionEffect(new PotionEffect(PotionEffectType.SLOW, 200, 1));
                return true;
               
               
               
               
            }
            if (cmd.getName().equalsIgnoreCase("yeet"));
            for(Player p : Bukkit.getOnlinePlayers()){
                try {
                    Thread.sleep(10);
                } catch (InterruptedException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                p.chat("yeet");
            }
            return true;
           
           
        }
       
    }
    Code:
    Event Handler Thing
    package me.Pixel;
    
    
    import java.util.Random;
    
    import org.bukkit.ChatColor;
    import org.bukkit.Location;
    import org.bukkit.Material;
    import org.bukkit.Sound;
    import org.bukkit.block.Block;
    import org.bukkit.block.Sign;
    import org.bukkit.entity.*;
    import org.bukkit.event.EventHandler;
    import org.bukkit.event.Listener;
    import org.bukkit.event.block.Action;
    import org.bukkit.event.block.BlockBreakEvent;
    import org.bukkit.event.entity.EntityDamageByEntityEvent;
    import org.bukkit.event.player.PlayerEvent;
    import org.bukkit.event.player.PlayerInteractEvent;
    import org.bukkit.event.player.PlayerItemConsumeEvent;
    
    import org.bukkit.inventory.ItemStack;
    import org.bukkit.projectiles.ProjectileSource;
    
    import net.milkbowl.vault.economy.EconomyResponse;
    
    
    
    
    
    
    
    
    
    
    
    
    
    public class PlayerListener implements Listener{
        public PlayerListener(PluginMain plugin){
            plugin.getServer().getPluginManager().registerEvents(this, plugin);
           
           
        }
       
        @EventHandler
        public void placaClick(PlayerInteractEvent e){
            Sign sign = (Sign) e.getClickedBlock();
            Player p = e.getPlayer();
            Random rand = new Random();
           
           
    
            if(e.getAction() == Action.RIGHT_CLICK_BLOCK) {
                p.sendMessage("Right clicked block");
                if (e.getClickedBlock().getType()==Material.SIGN || e.getClickedBlock().getType()==Material.WALL_SIGN || e.getClickedBlock().getType()==Material.SIGN_POST) {
                    p.sendMessage("Its a sign");
                    if (sign.getLine(2).equals("Click me")) {
                        int money = rand.nextInt(999) + 1;
                        EconomyResponse er = PluginMain.econ.bankDeposit(p.getName(), money);
                        if (er.transactionSuccess()){
                            p.sendMessage(ChatColor.GREEN + "You Have received " + ChatColor.GRAY + money + ChatColor.GREEN + "from the Server!");
                       
                    
                            p.playSound(p.getLocation(), Sound.ENTITY_PLAYER_LEVELUP, 10F, 10F);
                        }
                    }
    
    
                }
            }
    
    
        }
        @EventHandler
        public void healEat(PlayerItemConsumeEvent event){
            Player player = event.getPlayer();
            Random random = new Random();
            int x = random.nextInt(11);
            double e = x;
            double g = player.getHealth();
            player.setHealth(g + e);
           
            player.sendMessage(ChatColor.GRAY + "Yum! You Gained " + ChatColor.AQUA + x + ChatColor.GRAY+ " Health!");
           
    } //
        @EventHandler
        public void antiVoid(PlayerEvent event){
            Player player = event.getPlayer();
            Location location = new Location(player.getWorld()  , player.getLocation().getX(), player.getLocation().getY()+60, player.getLocation().getZ());
            if (player.getLocation().getY()<0){
                player.teleport(location);//Teleports them up
                int y = (int) player.getLocation().getY(); //Gets Coords of player
                int x = (int) player.getLocation().getX();
                int z = (int) player.getLocation().getZ();
                Block Floor1 = player.getWorld().getBlockAt(x, y - 2, z);//Sets the block locations
                Block Air2 = player.getWorld().getBlockAt(x, y , z);
                Block Air1  = player.getWorld().getBlockAt(x, y -1, z);
                Block Air3  = player.getWorld().getBlockAt(x, y + 1, z);
                Floor1.setType(Material.GLASS);//sets the block types.
                Air1.setType(Material.AIR);
                Air2.setType(Material.AIR);
                Air3.setType(Material.AIR);
                player.sendMessage(ChatColor.RED + "Woah there buddy! Careful!");
        }
        }
    
        @EventHandler
        public void hpCounterBows(EntityDamageByEntityEvent event){
            if ( !(event.getEntity() instanceof Player) )
                return;
            Player player = (Player) event.getEntity();
           
            if(((EntityDamageByEntityEvent) player.getLastDamageCause()).getDamager() instanceof Arrow) {
                Arrow arrow = (Arrow) ((EntityDamageByEntityEvent) player.getLastDamageCause()).getDamager();
                ProjectileSource shooter = arrow.getShooter();
    
                   if(shooter instanceof Player)
                   {
                      Player shooterPlayer = (Player) shooter;
                      long hp = Math.round( player.getHealth());
                      shooterPlayer.sendMessage(ChatColor.GRAY + player.getName() + ChatColor.GREEN + " has " + ChatColor.GRAY + hp + ChatColor.GREEN + " health left.");
                     
           
           
           
               
           
               
           
           
           
           
           
                   }   
        }
        }
                @EventHandler
                   public void hpCounterSwords(EntityDamageByEntityEvent event){
                       if ( !(event.getEntity() instanceof Player) )//checks if entity is a player
                           return;
                       Player player = (Player) event.getEntity();
                       if (((EntityDamageByEntityEvent) player.getLastDamageCause()).getDamager() instanceof Player) {
                           Player p2 = (Player) ((EntityDamageByEntityEvent) player.getLastDamageCause()).getDamager();
                           int hp = (int) player.getHealth();
                        p2.sendMessage(ChatColor.GRAY + player.getName() + ChatColor.GREEN + " has " + ChatColor.GRAY + hp + ChatColor.GREEN + " health left.");
                       }
                   }
              
                   
              
                  
                  
              
               @EventHandler
                public void Ores(BlockBreakEvent event){
                    Player player = event.getPlayer();
                    Random random = new Random();
                    int rNumber = random.nextInt(120) + 1;
                    Block block = event.getBlock();
                    if (block.getType().equals( Material.COBBLESTONE)){
                        block.setType(Material.AIR);
                        if (rNumber >40){
                            return;
                        }
                        else if(rNumber <=80 && rNumber >105){
                            player.getInventory().addItem(new ItemStack(Material.IRON_INGOT));
                           
                        }
                        else if(rNumber <=105 && rNumber >115){
                            player.getInventory().addItem(new ItemStack(Material.GOLD_INGOT));
                           
                        }
                        else if(rNumber <=115 && rNumber >119){
                            player.getInventory().addItem(new ItemStack(Material.DIAMOND));
                       
                           
                        }
                        else if(rNumber <=119){
                            player.getInventory().addItem(new ItemStack(Material.EMERALD));
                        }
                        else if(rNumber <=40 && rNumber >=80){
                            player.getInventory().addItem(new ItemStack(Material.COAL));
                           
                        }
                    if (block.getType() == Material.IRON_ORE){
                        player.getInventory().remove(Material.IRON_ORE);
                        player.getInventory().addItem(new ItemStack(Material.IRON_INGOT));
                    }
                           
                    }
                   
                   
               }
                }
               
       
    
    
    Code:
    Plugin.yml
    
    
    
    name: PranksNUtils
    main: me.Pixel.PluginMain
    version: 1.1
    description: Antivoid, Health counter, plus many more!
    commands:
        vpunish:
          description: May the gods have mercy on this player
          usage: /<command>
        yeet:
          usage: /<command>
          description: DO NOT USE
    
    i'm sorry if i sound stupid, but I just started am noob please give me a break
     
  2. Offline

    Tango_

    @Pixelizedgaming
    You need to register your Listener class inside of the onEnable, put this: getServer().getPluginManager().registerEvents(new PlayerListener(), this);

    Also don't ever use Thread.sleep, it will halt your whole server
     
    Last edited: Feb 8, 2019
  3. Offline

    timtower Administrator Administrator Moderator

    @Tango_ plugin.getServer().getPluginManager().registerEvents(this, plugin);
    He did it in the constructor.
     
  4. Offline

    Tango_

    Ah, my bad.

    @Pixelizedgaming I took another look, it seems that you have used an invalid Event name 'PlayerEvent'.
    After you remove that or fix it, it should register your events properly.
     
  5. Offline

    KarimAKL

    @Pixelizedgaming
    1. Instead of 'PlayerEvent' try the 'PlayerMoveEvent'.
    2. For the 'PlayerMoveEvent' you can use 'event.getFrom()', 'event.getTo()', 'event.setFrom()' and 'event.setTo()', with this you can check if 'event.getTo().getY() < 0' instead of 'player.getLocation().getY() < 0'
     
Thread Status:
Not open for further replies.

Share This Page