Doesn't return the same UUID of the player

Discussion in 'Plugin Development' started by mAndAle, Jul 8, 2021.

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

    mAndAle

    Hello everyone, i would to ask a question, this is my code:

    Code:
    package org.salex.pvpsword.events;
    
    import org.bukkit.entity.Player;
    import org.bukkit.event.EventHandler;
    import org.bukkit.event.Listener;
    import org.bukkit.event.entity.EntityDamageByEntityEvent;
    import org.salex.pvpsword.Main;
    
    public class DamageEvent implements Listener {
    
        private Main main;
        private SwordEvent sword;
      
        public DamageEvent() {
            main = Main.getPlugin(Main.class);
            sword = new SwordEvent(main);
        }
      
        @EventHandler
        public void onDamage(EntityDamageByEntityEvent e) {
            if(e.getDamager() instanceof Player && e.getEntity() instanceof Player) {
                Player p = (Player) e.getEntity();
                Player killer = (Player) e.getDamager();
                if(sword.getPvp().contains(p.getUniqueId()) || sword.getPvp().contains(killer.getUniqueId())) {
                    main.getLogger().info("funzia");
                    e.setCancelled(true);
                }
            }
        }
    }
    
    and this is the class where i add the uuid:

    Code:
    package org.salex.pvpsword.events;
    
    import java.util.ArrayList;
    import java.util.List;
    import java.util.UUID;
    
    import org.bukkit.Material;
    import org.bukkit.entity.Player;
    import org.bukkit.event.EventHandler;
    import org.bukkit.event.Listener;
    import org.bukkit.event.player.PlayerItemHeldEvent;
    import org.bukkit.inventory.ItemStack;
    import org.salex.pvpsword.Main;
    
    
    public class SwordEvent implements Listener {
      
        private Main main;
        private List<UUID> pvp;
        private ItemStack[] armor;
        private ItemStack[] armor1;
      
        public SwordEvent(Main m) {
            main = m;
            this.pvp = new ArrayList<UUID>();
            this.armor = new ItemStack[4];
            this.armor1 = new ItemStack[4];
        }
      
      
        @EventHandler
        public void onCambioItem(PlayerItemHeldEvent event) {
            final Player p = event.getPlayer();
            armor[3] = (new ItemStack(Material.DIAMOND_HELMET));
            armor[2] = (new ItemStack(Material.DIAMOND_CHESTPLATE));
            armor[1] = (new ItemStack(Material.DIAMOND_LEGGINGS));
            armor[0] = (new ItemStack(Material.DIAMOND_BOOTS));
          
            final String prefix = main.getConfig().getString("prefix").replace("&", "§");
            int pvpslot = main.getConfig().getInt("sword.slot");
            int slot = event.getNewSlot();
          
          
            if(p.getItemInHand() == null) return;
            if(slot == pvpslot && !pvp.contains(p.getUniqueId())) {
                p.getInventory().setArmorContents(armor);
                p.sendMessage(prefix + main.getConfig().getString("sword.enter-mode").replace("&", "§"));
                pvp.add(p.getUniqueId());
            } else if (slot != pvpslot && pvp.contains(p.getUniqueId())) {
                    p.getInventory().setArmorContents(armor1);
                    p.sendMessage(prefix + main.getConfig().getString("sword.quit-mode").replace("&", "§"));
                    pvp.remove(p.getUniqueId());
              
            }
          
        }
      
        public List<UUID> getPvp() {
            return pvp;
        }
      
        public ItemStack[] getArmor() {
            return armor;
        }
      
        public ItemStack[] getArmor1() {
            return armor1;
        }
      
    }
    
    
    The achieve is when the list contains the uuid of the player the event is cancelled
    but when i try to debug the code (when the list contains the uuid of the player i'm writing "funzia", but doesn't work), anyone have an idea?

    ps. i have already tried the case if the list is empty and it is not
     
  2. Offline

    c7dev

    In your code, the arraylist pvp is a private variable, meaning it will pertain to the object. You're referring to it as a public static variable, so it should be updated to that.
    Code:
    public static List<UUID> pvp = new ArrayList<UUID>();
     
Thread Status:
Not open for further replies.

Share This Page