PlayerItemPickupEvent not working

Discussion in 'Bukkit Help' started by pi3trzu, Jan 20, 2018.

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

    pi3trzu

    Hi!
    I'm new to writting plugins and I wanted to write Vanish like plugin.
    I have a problem with PlayerItemPickupEvent, becouse i wanted to make vanished players not to pick up items, but it isn't working.
    Thanks for your help.
    W7 x64
    Java SE 1.8


    Main file:
    Code:
    package me.pitrzu.adminhelper;
    
    import org.bukkit.plugin.java.JavaPlugin;
    
    public class Main extends JavaPlugin{
    
        public void onEnable() {
            System.out.println("Uruchamiam...");
            getCommand("tp").setExecutor(new teleport());
            getCommand("tphere").setExecutor(new teleport());
            getCommand("hide").setExecutor(new vanish());
            getCommand("hideme").setExecutor(new vanish());
            getServer().getPluginManager().registerEvents(new vanish(), this);
        }
        public void onDisable() {
            System.out.println("Wylaczam...");
        }
    }
    
    Vanish file:
    Code:
    package me.pitrzu.adminhelper;
    
    import java.util.ArrayList;
    
    import org.bukkit.Bukkit;
    import org.bukkit.command.Command;
    import org.bukkit.command.CommandExecutor;
    import org.bukkit.command.CommandSender;
    import org.bukkit.entity.Player;
    import org.bukkit.event.EventHandler;
    import org.bukkit.event.Listener;
    import org.bukkit.event.player.PlayerJoinEvent;
    import org.bukkit.event.player.PlayerPickupItemEvent;
    import org.bukkit.event.player.PlayerQuitEvent;
    
    public class vanish implements CommandExecutor, Listener {
      
        public ArrayList<Player> hide = new ArrayList<Player>();
        public ArrayList<Player> hidden = new ArrayList<Player>();
    
        @Override
        public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
            if(cmd.getName().equalsIgnoreCase("hide")) {
                if(!(sender instanceof Player)) {
                    sender.sendMessage("Nie jestes graczem !");
                    return true;
                }
                if(args.length != 0) {
                    return false;
                }
                if(!(hide.contains((Player) sender))) {
                    hide.add((Player) sender);
                    sender.sendMessage("Nie widzisz innych graczy!");
                    for(Player p : Bukkit.getOnlinePlayers()) {
                        ((Player)sender).hidePlayer(p);
                    }
                    return true;
                }
                else {
                    hide.remove((Player) sender);
                    sender.sendMessage("Widzisz wszystkich graczy!");
                    for(Player p : Bukkit.getOnlinePlayers()) {
                        ((Player)sender).showPlayer(p);
                    }
                    return true;
                }
            }
            if(cmd.getName().equalsIgnoreCase("hideme")) {
                if(!(sender instanceof Player)) {
                    sender.sendMessage("Nie jestes graczem !");
                    return true;
                }
                if(args.length != 0) {
                    return false;
                }
                if(!(hidden.contains((Player) sender))) {
                    hidden.add((Player) sender);
                    sender.sendMessage("Inni gracze cie nie widza!");
                    for(Player p : Bukkit.getOnlinePlayers()) {
                        p.hidePlayer(((Player)sender));
                    }
                    return true;
                }
                else {
                    hidden.remove((Player) sender);
                    sender.sendMessage("Inni gracze cie widza!");
                    for(Player p : Bukkit.getOnlinePlayers()) {
                        p.showPlayer(((Player)sender));
                    }
                    return true;
                }
            }
            return false;
        }
        @EventHandler
        public void onConnection(PlayerJoinEvent e) {
            for(Player p : hidden) {
                e.getPlayer().hidePlayer(p);
            }
        }
        public void onLeave(PlayerQuitEvent e) {
            hidden.remove(e.getPlayer());
        }
        public void onPickup(PlayerPickupItemEvent e) {
            if(hidden.contains(e.getPlayer())){
                e.setCancelled(true);
            }
        }
    }
     
    Last edited by a moderator: Jan 20, 2018
  2. Offline

    timtower Administrator Administrator Moderator

    @pi3trzu You are missing a couple @Eventhandler
    You also have 3 vanish instances, should be 1.
     
  3. Offline

    pi3trzu

    So i have to put it before every void ?
     
  4. Offline

    timtower Administrator Administrator Moderator

    @pi3trzu You need one for every event.
     
  5. Offline

    pi3trzu

    It's still not working but i know that it can detect event happening

    @EventHandler
    public void onConnection(PlayerJoinEvent e) {
    for(Player p : hidden) {
    e.getPlayer().hidePlayer(p);
    }
    }
    @EventHandler
    public void onLeave(PlayerQuitEvent e) {
    hidden.remove(e.getPlayer());
    }
    @EventHandler
    public void onPickup(PlayerPickupItemEvent e) {
    e.getPlayer().sendMessage("e");
    if(hidden.contains(e.getPlayer())){ // Breaks after this line
    e.getPlayer().sendMessage("e");
    e.setCancelled(true);
    }
    }
     
  6. Offline

    Colinus999

    What are you trying to do? If you want to create a spectator mode, there would be bugs with your setup because you could not place plocks where a spectator is.
    If you want to do that, you should set the player "transparent" like this:
    Code:
    p.spigot().setCollidesWithEntities(false);
    The player would firstly not collide with entities and players can place plocks through / inside them.
    Secondly arrows could pass him and he is not able to pick up items.
    Of course you would still have to cancel interact and damage events.

    EDIT: Please write class names in CamelCase so it is easier to read
     
  7. Offline

    pi3trzu

    Thanks for help <3 I'll try that :D
     
Thread Status:
Not open for further replies.

Share This Page