Ir para conteúdo

InventoryClickEvent - Dúvida simples


zSnowReach

Posts Recomendados

Seguinte, eu estou fazendo um plugin de "trocas" com NPC que quando você clica nele abre um Inventory. A questão é o seguinte, como eu faço pra quando o player clicar em certo item do menu, ser removido tantos itens do inventário do jogador? (Uma troca basicamente, ele compra algo e perder alguns itens do inventário)

Eu consigo fazer isso usando p.getInventory.removeItem, mas eu queria remover um item com Amount específico, Displayname, lore e etc ( https://prnt.sc/s4owvw )

Link para o comentário
Compartilhar em outros sites

10 minutos atrás, zSnowReach disse:

Seguinte, eu estou fazendo um plugin de "trocas" com NPC que quando você clica nele abre um Inventory. A questão é o seguinte, como eu faço pra quando o player clicar em certo item do menu, ser removido tantos itens do inventário do jogador? (Uma troca basicamente, ele compra algo e perder alguns itens do inventário)

Eu consigo fazer isso usando p.getInventory.removeItem, mas eu queria remover um item com Amount específico, Displayname, lore e etc ( https://prnt.sc/s4owvw )

int quantidade = 0;
                        int a = 0;
                        List<Integer> slots2 = new ArrayList<Integer>();
                        for (ItemStack item : e.getWhoClicked().getInventory()) {
                            if (item != null)
                                if (item.getType() == Material.RAW_FISH) {
                                    quantidade += item.getAmount();
                                    slots2.add(a);
                                }
                            a++;
                        }

                        if (quantidade >= 500) {
                            e.getWhoClicked().sendMessage("§aVocê completou a missão.");
                            main.jogadores.get(e.getWhoClicked().getName()).put(String.valueOf(slots.indexOf(i) + 1),
                                    true);
                            int quantidade2 = 0;
                            for (int slot : slots2) {
                                quantidade2 += e.getWhoClicked().getInventory().getItem(slot).getAmount();
                                if (quantidade2 >= 500) {
                                    e.getWhoClicked().getInventory().getItem(slot).setAmount(quantidade2 - 500);
                                    break;
                                } else
                                    e.getWhoClicked().getInventory().setItem(slot, new ItemStack(Material.AIR));
                            }
                        } else
                            e.getWhoClicked().sendMessage("§cVocê não possui 500 peixes consigo.");

 

Esse é o codigo que sei para meu plugin de missões! Ele esta a funcionar, eu acho kkkkk

 

Não sei se ha melhor forma de fazer esse bagulho kkkk (Certeza que ha!)

Editado por rubenlousada11
Link para o comentário
Compartilhar em outros sites

6 minutos atrás, rubenlousada11 disse:

int quantidade = 0;
                        int a = 0;
                        List<Integer> slots2 = new ArrayList<Integer>();
                        for (ItemStack item : e.getWhoClicked().getInventory()) {
                            if (item != null)
                                if (item.getType() == Material.RAW_FISH) {
                                    quantidade += item.getAmount();
                                    slots2.add(a);
                                }
                            a++;
                        }

                        if (quantidade >= 500) {
                            e.getWhoClicked().sendMessage("§aVocê completou a missão.");
                            main.jogadores.get(e.getWhoClicked().getName()).put(String.valueOf(slots.indexOf(i) + 1),
                                    true);
                            int quantidade2 = 0;
                            for (int slot : slots2) {
                                quantidade2 += e.getWhoClicked().getInventory().getItem(slot).getAmount();
                                if (quantidade2 >= 500) {
                                    e.getWhoClicked().getInventory().getItem(slot).setAmount(quantidade2 - 500);
                                    break;
                                } else
                                    e.getWhoClicked().getInventory().setItem(slot, new ItemStack(Material.AIR));
                            }
                        } else
                            e.getWhoClicked().sendMessage("§cVocê não possui 500 peixes consigo.");

 

Esse é o codigo que sei para meu plugin de missões! Ele esta a funcionar, eu acho kkkkk

 

Não sei se ha melhor forma de fazer esse bagulho kkkk (Certeza que ha!)

Obrigado, vou tentar fazer alguns testes

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.
×
×
  • Criar Novo...