Solved Inventory Movement

Discussion in 'Plugin Development' started by BlackScorpyon04, Jan 27, 2019.

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

    BlackScorpyon04

    In my custom inventory when i click on a player head i can pick it up but not put it down which is what im trying to do
    this is my code
    Code:
    public void onClick(InventoryClickEvent e) {
            String title = e.getInventory().getTitle();
            Player p = (Player) e.getWhoClicked();
            if (title.equalsIgnoreCase(Utils.color(plugin.getConfig().getString("GUI.name")))) {
                if(e.getCurrentItem().getType() == Material.SKULL_ITEM) {
                    e.setCancelled(false);
                } else if(e.getCurrentItem() == null || e.getCurrentItem().getType()== Material.AIR){
                    e.setCancelled(false);
                    p.sendMessage("yes");
                }
                if (e.getCurrentItem().getItemMeta().getDisplayName().equalsIgnoreCase(Utils.color(plugin.getConfig().getString("GUI.Accept/Deny.Accept.Name")))) {
                    e.setCancelled(true);
                    p.sendMessage("Nope");
                    total = 0;
                    for(int i = 0 ; i < plugin.getConfig().getInt("GUI.slots") ; i++) {
                        if (i == (Main.plugin.getConfig().getInt("GUI.Accept/Deny.Accept.Slot") - 1) || i == (Main.plugin.getConfig().getInt("GUI.Accept/Deny.Deny.Slot") - 1)) {
                           
                        } else {
                            if (e.getInventory().getItem(i) == null) {
                            }else {
                                ItemMeta m = e.getInventory().getItem(i).getItemMeta();
                                List<String> lore = m.getLore();
                                String line = lore.get(0);
                                line = line.replaceAll("\n", "").replaceAll("\r", "");
                                line = ChatColor.stripColor(line);
                                line = line.replaceAll("[^\\d.]", "");
                                double cost = Double.valueOf(line.replaceAll("[^\\d.]", ""));
                                cost = cost * e.getInventory().getItem(i).getAmount();
                                total = total + cost;
                                Utils.createItemByte(e.getInventory(), "STAINED_GLASS_PANE", 7, 1, i + 1, "", "");
                                p.updateInventory();
                                Main.economy.depositPlayer(p.getName(), cost);
                            }
                        }
                    }
                    double seconds = .5;
    
                    Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(plugin, new Runnable() {
                        public void run() {
                            p.playSound(p.getLocation(), Sound.LEVEL_UP, 10, 1);
                            p.closeInventory();
                            p.sendMessage(Utils.color(plugin.getConfig().getString("Messages.trade_accepted").replace("%total%", String.valueOf(total))));
                        }
                    }, (long) (seconds * 20));
                }else if (e.getCurrentItem().getItemMeta().getDisplayName().equalsIgnoreCase(Utils.color(plugin.getConfig().getString("GUI.Accept/Deny.Deny.Name")))) {
                    e.setCancelled(true);
                    p.sendMessage("Nope");
                    for(int i = 0 ; i < plugin.getConfig().getInt("GUI.slots") ; i++) {
                        if (i == (Main.plugin.getConfig().getInt("GUI.Accept/Deny.Accept.Slot") - 1) || i == (Main.plugin.getConfig().getInt("GUI.Accept/Deny.Deny.Slot") - 1)) {
                           
                        } else {
                            if (e.getInventory().getItem(i) == null) {
                            }else {
                                p.getInventory().addItem(e.getInventory().getItem(i));
                            }
                        }
                    }
                    p.closeInventory();
                    p.sendMessage(Utils.color(plugin.getConfig().getString("Messages.trade_cancelled")));
                }
            }
        }
    Fixed it Dont worry
    Changed this
    } else if(e.getCurrentItem() == null || e.getCurrentItem().getType()== Material.AIR){
    e.setCancelled(false);
    p.sendMessage("yes");
    }

    To:
    } else if(e.getCursor().getType() != Material.SKULL_ITEM){
    e.setCancelled(true);
    }
    And works great

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

Share This Page