Ir para conteúdo
  • 0

[Dúvida] Descontar item com lore e nome específicos


yemiefi

Pergunta

5 respostass a esta questão

Posts Recomendados

  • 0

No meu plugin eu já fiz um comando que dê para o jogador o item, veja um pedaço do código que contém o item:

					ItemStack item = new ItemStack(Material.EMERALD, qnt);
	        			ItemMeta meta = item.getItemMeta();
	        			meta.setDisplayName("§3§lANUNCIADOR");
	        			{
	        			List<String> lore = new ArrayList<String>();
	        			lore.add("");
	        			lore.add(" §b* §fJunte 3 anunciadores para usar o /anunciar!");
	        			lore.add("");
	        			meta.setLore(lore);
	        			}
	        			item.setItemMeta(meta);
	        			p.getInventory().addItem(item);

 

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

  • 1

Olá,

Para verificar se o item tem o nome específico você pode usar:

Player p = (Player)sender;

if(p.getItemInHand().getItemMeta().getDisplayName().equalsIgnoreCase("§aNome do item aqui") {
	// O nome confere
}

Para checar se o Lore confere você pode usar algo como:

if(p.getItemInHand().getItemMeta().getLore().get(0).equals("§aLinha 1 do Lore")) {
	// Se a linha 1 do Lore for igual ao definido, executa o método

}

Ou você pode apenas comprar o getLore() do item com a ArrayList que você criou.

Visto isso, basta juntar os dois códigos.

E, caso queira verificar mais que a primeira linha do código, basta ir fazendo verificações com Lore 0, 1, 2 etc

 

Qualquer dúvida fico à disposição

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

  • 0

    @EventHandler
    public void aoClicar(PlayerInteractEvent e) {
        Player p = e.getPlayer();
        ItemStack item = p.getItemInHand();
        if (e.getAction() == org.bukkit.event.block.Action.RIGHT_CLICK_AIR
                || e.getAction() == Action.RIGHT_CLICK_BLOCK) {
            if (!item.hasItemMeta())
                return;
            if (item.getType() == Material.EMERALD
                    && item.getItemMeta().getDisplayName().equalsIgnoreCase("§6Nome do item") && item.getItemMeta.getLore.contains("Lore") {
                e.setCancelled(true);
                if (p.getItemInHand().getAmount() == 1) {
                    p.setItemInHand(null);
                    p.updateInventory();
                } else {
                    p.getItemInHand().setAmount(p.getItemInHand().getAmount() - 1);
                }

//Código dps que descontar a Esmeralda

Link para o comentário
Compartilhar em outros sites

  • 0
14 minutos atrás, Ygor disse:

Olá,

Para verificar se o item tem o nome específico você pode usar:


Player p = (Player)sender;

if(p.getItemInHand().getItemMeta().getDisplayName().equalsIgnoreCase("§aNome do item aqui") {
	// O nome confere
}

Para checar se o Lore confere você pode usar algo como:


if(p.getItemInHand().getItemMeta().getLore().get(0).equals("§aLinha 1 do Lore")) {
	// Se a linha 1 do Lore for igual ao definido, executa o método

}

Visto isso, basta juntar os dois códigos.

E, caso queira verificar mais que a primeira linha do código, basta ir fazendo verificações com Lore 0, 1, 2 etc

 

Qualquer dúvida fico à disposição

Resolvido, muito obrigado!

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...