Solved KitSelector

Discussion in 'Plugin Development' started by Fhbgsdhkfbl, Mar 23, 2017.

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

    Fhbgsdhkfbl

    Hey guys, I'm working on my kit selector in my GUI and I can't seem to see why it wont give the kit?
    Code:
    @EventHandler
        public void kitSelect(InventoryClickEvent e) {
            Inventory inv = e.getInventory();
            Player p = (Player) e.getWhoClicked();
            if(inv.getTitle().equals(ChatColor.AQUA + "Kit Selector")) {
                for(PlayerKits k : PlayerKits.values()) {
                if ((e.getCurrentItem() != null) && (e.getCurrentItem().getItemMeta() != null))
                {
                    if(e.getCurrentItem() != null && e.getCurrentItem().getItemMeta().getDisplayName() != null)
                    {
                            if(!p.hasPermission(k.getPermission())) {
                                p.sendMessage(ChatColor.GRAY + "You don't have access to this kit!");
                                p.closeInventory();
                                return;
                            }
                            if(e.getCurrentItem().getItemMeta().getDisplayName().equals(k.getName())) {
                                skywardkits_utils.PlayerUtil.clearInv(p);
                                k.give(p);
                                plugin.currentKit.put(p.getName(), k);
                                SoupUtil.giveSoup(p);
                                p.sendMessage(ChatColor.GRAY + "You have received the " + ChatColor.AQUA + k + ChatColor.GRAY + " kit!");
                                e.setCancelled(true);
                            }
                            p.closeInventory();
                        }
                        if((!e.getCurrentItem().getItemMeta().getDisplayName().equals(k.getName()))) {
                            e.setCancelled(true);
                        }
                    }
                }
            }
        }
    }
    
    /CODE]
    
    It closes the inventory on the first check to close it, but it doesn't send them the message either, just closes the inventory,
    
    I suppose i'm having trouble getting the display name from the PlayerKits class.
     
    Last edited: Mar 23, 2017
  2. Offline

    Caderape2

    @Fhbgsdhkfbl
    PlayerKits is a class or enum ?
    you will have to show more
     
  3. Offline

    Fhbgsdhkfbl

    @Caderape2
    Oh it's an enum class, my fault.

    Code:
    package com.Skywardkits;
    
    import org.bukkit.ChatColor;
    import org.bukkit.Color;
    import org.bukkit.Material;
    import org.bukkit.enchantments.Enchantment;
    import org.bukkit.entity.Player;
    import org.bukkit.inventory.ItemStack;
    import org.bukkit.inventory.PlayerInventory;
    import org.bukkit.inventory.meta.ItemMeta;
    import org.bukkit.inventory.meta.LeatherArmorMeta;
    import org.bukkit.potion.PotionEffect;
    import org.bukkit.potion.PotionEffectType;
    
    public enum PlayerKits {
    
    
        PVP {
            public void give(Player p) {
                PlayerInventory inv = p.getInventory();
                ItemStack pvp = new ItemStack(Material.DIAMOND_SWORD);
                pvp.addEnchantment(Enchantment.DAMAGE_ALL, 1);
                inv.addItem(pvp);
                inv.setHelmet(new ItemStack(Material.IRON_HELMET));
                inv.setChestplate(new ItemStack(Material.IRON_CHESTPLATE));
                inv.setLeggings(new ItemStack(Material.IRON_LEGGINGS));
                inv.setBoots(new ItemStack(Material.IRON_BOOTS));
            }
            public String getName() {
                return "PVP";
            }
            public String getPermission() {
                return "kit.pvp";
            }
            public ItemStack kitgui() {
                ItemStack pvp = new ItemStack(Material.DIAMOND_SWORD);
                ItemMeta pvpmeta = pvp.getItemMeta();
                pvpmeta.setDisplayName(ChatColor.AQUA + "PVP");
                pvp.setItemMeta(pvpmeta);
                return pvp;
    
            }
        },
        Archer {
            public void give(Player p) {
                PlayerInventory inv = p.getInventory();
                ItemStack wsword = new ItemStack(Material.STONE_SWORD);
                ItemStack archerbow = (new ItemStack(Material.BOW));
                ItemMeta archermeta = archerbow.getItemMeta();
                archermeta.setDisplayName(ChatColor.AQUA + "Bow");
                archerbow.setItemMeta(archermeta);
                archerbow.addEnchantment(Enchantment.ARROW_DAMAGE, 3);
                archerbow.addEnchantment(Enchantment.ARROW_INFINITE, 1);
                archerbow.addUnsafeEnchantment(Enchantment.DURABILITY, 10);
                inv.addItem(wsword);
                inv.addItem(archerbow);
                p.addPotionEffect(new PotionEffect(PotionEffectType.SPEED,
                        50000000, 1));
                ItemStack lhelmet = new ItemStack(Material.LEATHER_HELMET, 1);
                LeatherArmorMeta lam = (LeatherArmorMeta) lhelmet.getItemMeta();
                lam.setColor(Color.fromRGB(51, 25, 0));
                lhelmet.setItemMeta(lam);
                inv.setHelmet(lhelmet);
                ItemStack lchest = new ItemStack(Material.LEATHER_CHESTPLATE, 1);
                LeatherArmorMeta lch = (LeatherArmorMeta) lchest.getItemMeta();
                lch.setColor(Color.fromRGB(11, 64, 0));
                lchest.setItemMeta(lch);
                inv.setChestplate(lchest);
                ItemStack llegs = new ItemStack(Material.LEATHER_LEGGINGS, 1);
                LeatherArmorMeta leg = (LeatherArmorMeta) llegs.getItemMeta();
                leg.setColor(Color.fromRGB(200, 190, 100));
                llegs.setItemMeta(leg);
                inv.setLeggings(llegs);
                ItemStack lboots = new ItemStack(Material.LEATHER_BOOTS, 1);
                LeatherArmorMeta lbo = (LeatherArmorMeta) lboots.getItemMeta();
                lbo.setColor(Color.fromRGB(51, 25, 0));
                lboots.setItemMeta(lbo);
                inv.setBoots(lboots);
    
                inv.addItem(new ItemStack(Material.ARROW));
            }
            public String getName() {
                return "Archer";
            }
            public String getPermission() {
                return "kit.archer";
            }
            public ItemStack kitgui() {
                ItemStack archer = new ItemStack(Material.BOW);
                ItemMeta archermeta = archer.getItemMeta();
                archermeta.setDisplayName(ChatColor.AQUA + "Archer");
                archer.setItemMeta(archermeta);
                return archer;
    
            }
        };
    
        public abstract void give(Player p);
        public abstract String getPermission();
        public abstract String getName();
        public abstract ItemStack kitgui();
    
    }
    
    I think I need to check the displayname of each item in the GUI from my kitGUI in my PlayerKits but I can't figure it out
     
  4. Offline

    Caderape2

  5. Offline

    Fhbgsdhkfbl

    @Caderape2
    Code:
    @EventHandler
        public void signSelector(PlayerInteractEvent e) {
            Player p = e.getPlayer();
            if(e.getAction() != Action.RIGHT_CLICK_BLOCK)
                return;
            if((e.getClickedBlock().getState() instanceof Sign)) {
                Sign s = (Sign) e.getClickedBlock().getState();
                String line = ChatColor.stripColor(s.getLine(1));
                PlayerKits k = PlayerKits.valueOf(s.getLine(1));
                if(plugin.currentKit.containsKey(p.getName())) {
                    p.sendMessage(ChatColor.GRAY + "You already have a kit!");
                    return;
                }
                if(line.equals(k.getName())) {
                    skywardkits_utils.PlayerUtil.clearInv(p);
                    k.give(p);
                    plugin.currentKit.put(p.getName(), k);
                    SoupUtil.giveSoup(p);
                    p.sendMessage(ChatColor.GRAY + "You have received the " + ChatColor.AQUA + k + ChatColor.GRAY + " kit!");
                   
                }
            }
       
       
        }
    ? Im doing the exact same thing lol but with items

    Nevermind I figured it out, will a moderator mark this as solved please, wont let me. thanks!

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

Share This Page