Ir para conteúdo
  • 0

[Doubt, how to check this?] - MenuGUI


gmoehra

Pergunta

Olá pessoas, seguinte estou criando um sistema de troca de itens no inventário


para ser mais especifico um estilo de /hats . /gadgets


 


Eu quero fazer a verificação se o item já equipado é o mesmo que está no menu e estou clicando.


 


 


Exemplo: 


Eu equipei um Capacete com um certo encantamento, dai quando eu abro o meu de novo


quando eu clicar no Capacete aparece uma mensagem ou qualquer coisa.


 


No final é mais um tipo de verificação.


Link para o comentário
Compartilhar em outros sites

9 respostass a esta questão

Posts Recomendados

  • 0
	@EventHandler
	public void InventoryClick2(InventoryClickEvent e) {
		if (e.getCurrentItem() != null) {
			Player p = (Player) e.getWhoClicked();
			if (p.getInventory().getHelmet() != null && e.getCurrentItem() == p.getInventory().getHelmet()) {
				e.setCancelled(true);
			}
		}
	}

Se entendi bem, é isso

 

@edit

 

Dps q tu comentou, percebi q deve ser isso kk

	@EventHandler
	public void InventoryClick2(InventoryClickEvent e) {
		if (e.getCurrentItem() != null && e.getInventory().getTitle().equals("Inventory Name")) {
			e.setCancelled(true);
			Player p = (Player) e.getWhoClicked();

			if (p.getInventory().getHelmet() != null && e.getCurrentItem() == p.getInventory().getHelmet()) {
				p.sendMessage("§cVocê já está com este item equipado!");
				p.closeInventory();
				return;
			}

			p.getInventory().setHelmet(e.getCurrentItem());
			p.sendMessage("§aItem equipado!");
			p.closeInventory();
			return;
		}
	}
Editado por Victor696
Link para o comentário
Compartilhar em outros sites

  • 0

 

deixa eu ver se entendi... você não explicou muito bem...

 

você quer saber como que faz um pl de /hat, pra equipar tem que usar esse comando, e se a pessoa abrir o inventario ela não consegue tirar o item?

 

Tipo, eu abri o menu de /hat dai quando eu equipar o Item, ele vei la e aparece na cabeça do jogador.

Dai quando eu do /hat de novo, quando ele clicar no item que ele clicou antes aparecer uma Msg ou um Titulo dizendo que "O item ja se encontra equipado."

 

 

 

Link para o comentário
Compartilhar em outros sites

  • 0

 

Tipo, eu abri o menu de /hat dai quando eu equipar o Item, ele vei la e aparece na cabeça do jogador.

Dai quando eu do /hat de novo, quando ele clicar no item que ele clicou antes aparecer uma Msg ou um Titulo dizendo que "O item ja se encontra equipado."

 

 

 

 

Verifica o id do que ta no slot do capacete.. se for o mesmo do que ele clicou manda a mensagem, e da return; e não esquece de cancelar o event do clique

Link para o comentário
Compartilhar em outros sites

  • 0

 

Verifica o id do que ta no slot do capacete.. se for o mesmo do que ele clicou manda a mensagem, e da return; e não esquece de cancelar o event do clique

 

 

 

	@EventHandler
	public void InventoryClick2(InventoryClickEvent e) {
		if (e.getCurrentItem() != null) {
			Player p = (Player) e.getWhoClicked();
			if (p.getInventory().getHelmet() != null && e.getCurrentItem() == p.getInventory().getHelmet()) {
				e.setCancelled(true);
			}
		}
	}

Se entendi bem, é isso

 

@edit

 

Dps q tu comentou, percebi q deve ser isso kk

	@EventHandler
	public void InventoryClick2(InventoryClickEvent e) {
		if (e.getCurrentItem() != null && e.getInventory().getTitle().equals("Inventory Name")) {
			e.setCancelled(true);
			Player p = (Player) e.getWhoClicked();

			if (p.getInventory().getHelmet() != null && e.getCurrentItem() == p.getInventory().getHelmet()) {
				p.sendMessage("§cVocê já está com este item equipado!");
				p.closeInventory();
				return;
			}

			p.getInventory().setHelmet(e.getCurrentItem());
			p.sendMessage("§aItem equipado!");
			p.closeInventory();
			return;
		}
	}

 

Testei o teu código e mesmo assim n faz a verificão

 

Estou usando este codigo para o InvetoryClickEvent

	@EventHandler
	public void onInventoryClickEvent(InventoryClickEvent e) {

		String Item_Equipado = "§eO item foi equipado com sucesso.";
		String Item_Ja_Equipado = "§cEste item já se encontra equipado.";

		Player p = (Player) e.getWhoClicked();

		if (e.getInventory().getTitle().contains("§8Cosmeticos - Página §0#01")) {
			e.setCancelled(true);

			if (e.getSlot() == 10) {
				if (p.getInventory().getHelmet() != null && e.getCurrentItem() == p.getInventory().getHelmet()) {

					p.closeInventory();
					p.sendMessage(Item_Ja_Equipado);
					return;

				}

				p.getInventory().setHelmet(new ItemBuilder(Material.DIAMOND_HELMET).enchant(Enchantment.DURABILITY, 1)
						.removeAttributes().build());
				p.closeInventory();
				p.sendMessage(Item_Equipado);
				return;

			}

			if (e.getSlot() == 49) {

				M_Pricipal.Menu(p);

			}
		}

	}
Link para o comentário
Compartilhar em outros sites

  • 0

 

Testei o teu código e mesmo assim n faz a verificão

 

Estou usando este codigo para o InvetoryClickEvent

	@EventHandler
	public void onInventoryClickEvent(InventoryClickEvent e) {

		String Item_Equipado = "§eO item foi equipado com sucesso.";
		String Item_Ja_Equipado = "§cEste item já se encontra equipado.";

		Player p = (Player) e.getWhoClicked();

		if (e.getInventory().getTitle().contains("§8Cosmeticos - Página §0#01")) {
			e.setCancelled(true);

			if (e.getSlot() == 10) {
				if (p.getInventory().getHelmet() != null && e.getCurrentItem() == p.getInventory().getHelmet()) {

					p.closeInventory();
					p.sendMessage(Item_Ja_Equipado);
					return;

				}

				p.getInventory().setHelmet(new ItemBuilder(Material.DIAMOND_HELMET).enchant(Enchantment.DURABILITY, 1)
						.removeAttributes().build());
				p.closeInventory();
				p.sendMessage(Item_Equipado);
				return;

			}

			if (e.getSlot() == 49) {

				M_Pricipal.Menu(p);

			}
		}

	}

 

O item que está no inventário, é o mesmo que você está equipando na cabeça do jogador?

Link para o comentário
Compartilhar em outros sites

  • 0

O item que está no inventário, é o mesmo que você está equipando na cabeça do jogador?

Sim é o mesmo, do jeito que esta ali no slot 10 é o mesmo que está no slot do HELMET detro do inventário do jogador

Link para o comentário
Compartilhar em outros sites

  • 0

 

Testei o teu código e mesmo assim n faz a verificão

 

Estou usando este codigo para o InvetoryClickEvent

	@EventHandler
	public void onInventoryClickEvent(InventoryClickEvent e) {

		String Item_Equipado = "§eO item foi equipado com sucesso.";
		String Item_Ja_Equipado = "§cEste item já se encontra equipado.";

		Player p = (Player) e.getWhoClicked();

		if (e.getInventory().getTitle().contains("§8Cosmeticos - Página §0#01")) {
			e.setCancelled(true);

			if (e.getSlot() == 10) {
				if (p.getInventory().getHelmet() != null && e.getCurrentItem() == p.getInventory().getHelmet()) {

					p.closeInventory();
					p.sendMessage(Item_Ja_Equipado);
					return;

				}

				p.getInventory().setHelmet(new ItemBuilder(Material.DIAMOND_HELMET).enchant(Enchantment.DURABILITY, 1)
						.removeAttributes().build());
				p.closeInventory();
				p.sendMessage(Item_Equipado);
				return;

			}

			if (e.getSlot() == 49) {

				M_Pricipal.Menu(p);

			}
		}

	}

 

Tenta utilizar .equals ao invés de ==, pode ou não resolver C:

Link para o comentário
Compartilhar em outros sites

  • 0

Olá, Tava fazendo alguns testes agora pela manhã e deu certo o código abaixo.

caso alguem ai esteja procurando tbm é tois e obrigado ai todos que tentaram ajudar <3

			if (e.getSlot() == 10) {
				if (p.getInventory().getHelmet() != null) {

					p.closeInventory();
					p.sendMessage(Item_Ja_Equipado);
					return;

				} else {

					p.getInventory().setHelmet(new ItemBuilder(Material.DIAMOND_HELMET)
							.enchant(Enchantment.DURABILITY, 1).removeAttributes().build());
					p.closeInventory();
					p.sendMessage(Item_Equipado);
					return;
				}

			}

logo-forum.png




Sua dúvida foi marcada como [Resolvido] e movido à área de dúvidas resolvidas.


Atenciosamente,
Gamer's Board
Link para o comentário
Compartilhar em outros sites

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