Ir para conteúdo
  • 0

Como criar uma segunda gui na gui?


Frogguer

Pergunta

7 respostass a esta questão

Posts Recomendados

  • 0

Aqui, criamos 2 inventários, 1 para mostrar todas WARPS e outro para mostrar as warp ARENA

	public static Inventory warpsMain() {
		
		Inventory inv = null;
		inv = Bukkit.createInventory(null, 3 * 9, "Warps...");
		
		inv.setItem(13, new ItemStack(Material.DIAMOND_SWORD));
		
		return inv;
	}
	
	public static Inventory warpsArenas() {
		
		Inventory inv = null;
		inv = Bukkit.createInventory(null, 3 * 9, "Warps > Arenas");
		
		inv.setItem(0, new ItemStack(Material.ARROW));
		
		return inv;
	}

Temos 2 inventários, agora, vamos "conectar eles"

 

Para isso, usaremos o evento InventoryClickEvent

Verificamos se o item que ele está clicando não é null, se o nome do inventário que o player está clicando é um dos menu de warp e se o slot tem alguma função

	@EventHandler
	public void InventoryClickE(InventoryClickEvent e) {
		if (e.getCurrentItem() == null)
			return;
		
		Player p = (Player) e.getWhoClicked();
		if (e.getInventory().getTitle().equals("Warps...")) {
			e.setCancelled(true);
			if (e.getSlot() == 13) {
				p.openInventory(warpsArenas());
			}
		}
		if (e.getInventory().getTitle().equals("Warps > Arenas")) {
			e.setCancelled(true);
			if (e.getSlot() == 0) {
				p.openInventory(warpsMain());
			}
		}
	}

Se o jogador clicar no slot 13, do inventário chamado "Warps..." ele irá abrir o inventário chamado "Warps > Arenas"
Se o jogador clicar no slot 0, do inventário chamado "Warps > Arenas" ele vai abrir novamente o inventário "Warps..."

 

Foi um tutorial meio bosta, mais acho que deu pra entender.

 

@edit

 

Pra abrir inicialmente o inventário pro jogador, é só usar

			p.openInventory(warpsMain());

warpsMain() = Retorna um inventário, que foi o método que criei

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

  • 0

Cria uma void, por exemplo:
public static void menuMinas(Player p) {
Inventory inv.....
p.openInventory....
Isso em outra class, ai na parte que for registrar o menu no InventoryClickEvent coloca pra abrir o menu, Nome_da_sua_Class.menuMinas(p);

Qualquer duvida só chamar xD

Link para o comentário
Compartilhar em outros sites

  • 0

Não vou por exemplos porque estou com o eclipse fechado e renderizando umas paradas, mais vou tentar explicar o máximo:

1: Cria um inventario e bota os itens com as divisões: PVP | RANKS | ETC

2: Abra esse inventario pro player usando: p.openInventory(InventarioDasDivisões);

3: Registre o evento InventoryClickEvent e verifique se o inventario é igual ao da divisão.

4: Se sim, cancele o evento e utilize o e.getCurrentItem() para verificar se é PVP, RANKS ou outro.

5: Se for o item do RANK, por exemplo, use o p.openInventory(Ranks);

Link para o comentário
Compartilhar em outros sites

  • 0

Não vou por exemplos porque estou com o eclipse fechado e renderizando umas paradas, mais vou tentar explicar o máximo:

 

1: Cria um inventario e bota os itens com as divisões: PVP | RANKS | ETC

 

2: Abra esse inventario pro player usando: p.openInventory(InventarioDasDivisões);

 

3: Registre o evento InventoryClickEvent e verifique se o inventario é igual ao da divisão.

 

4: Se sim, cancele o evento e utilize o e.getCurrentItem() para verificar se é PVP, RANKS ou outro.

 

5: Se for o item do RANK, por exemplo, use o p.openInventory(Ranks);

Eu já tenho um assim que é os dos kits, eu posso usar o mesmo método?

Link para o comentário
Compartilhar em outros sites

  • 0

Bem, se lhe for útil

 

https://gist.github.com/Manolo8/0eebfe48038ce08976cec2a93db4beff

 

https://gist.github.com/Manolo8/fb58b7a3a306a0d73a2e1c53260e2ad4

 

https://gist.github.com/Manolo8/a039098d5879c73e316001768084b7a9

 

Só fiz 2 guis por enquanto, e ainda estou desenvolvendo umas melhoras... Vou fazer uma GUI de um shop, e vou ter que adicionar muita coisa (O shop vai ter opção de arrastar um item para colocar a venda, e uma outra gui para aumentar/diminuir o preço) bem complexo '-'

 

Mas, tá ai, se querer ajuda pra usar, só falar

Link para o comentário
Compartilhar em outros sites

  • 0

 

Aqui, criamos 2 inventários, 1 para mostrar todas WARPS e outro para mostrar as warp ARENA

	public static Inventory warpsMain() {
		
		Inventory inv = null;
		inv = Bukkit.createInventory(null, 3 * 9, "Warps...");
		
		inv.setItem(13, new ItemStack(Material.DIAMOND_SWORD));
		
		return inv;
	}
	
	public static Inventory warpsArenas() {
		
		Inventory inv = null;
		inv = Bukkit.createInventory(null, 3 * 9, "Warps > Arenas");
		
		inv.setItem(0, new ItemStack(Material.ARROW));
		
		return inv;
	}

Temos 2 inventários, agora, vamos "conectar eles"

 

Para isso, usaremos o evento InventoryClickEvent

Verificamos se o item que ele está clicando não é null, se o nome do inventário que o player está clicando é um dos menu de warp e se o slot tem alguma função

	@EventHandler
	public void InventoryClickE(InventoryClickEvent e) {
		if (e.getCurrentItem() == null)
			return;
		
		Player p = (Player) e.getWhoClicked();
		if (e.getInventory().getTitle().equals("Warps...")) {
			e.setCancelled(true);
			if (e.getSlot() == 13) {
				p.openInventory(warpsArenas());
			}
		}
		if (e.getInventory().getTitle().equals("Warps > Arenas")) {
			e.setCancelled(true);
			if (e.getSlot() == 0) {
				p.openInventory(warpsMain());
			}
		}
	}

Se o jogador clicar no slot 13, do inventário chamado "Warps..." ele irá abrir o inventário chamado "Warps > Arenas"

Se o jogador clicar no slot 0, do inventário chamado "Warps > Arenas" ele vai abrir novamente o inventário "Warps..."

 

Foi um tutorial meio bosta, mais acho que deu pra entender.

 

@edit

 

Pra abrir inicialmente o inventário pro jogador, é só usar

			p.openInventory(warpsMain());

warpsMain() = Retorna um inventário, que foi o método que criei

 

Obrigado ;3

Link para o comentário
Compartilhar em outros sites

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