Ir para conteúdo

Clicando em MENU


S0_Dev

Posts Recomendados

Opa, estou precisando de ajuda

estou criando um plugin de /ban por gui

a duvida que eu tenho é como que eu faço para quando clicar no item do menu o item não sair mas banir o player

eu criei por comando eu so sei fazer por evento  

ja pesquisei bastante na internet mas não achei nada

Resumindo: Eu quero criar um comando que abra um gui com um item (FEITO) Porem ao clicar nesse item quero

que não de para tirar o item e faça uma ação que seria p.setBanned(true);

 

O CODIGO:

 

package comandos;

import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.enchantments.Enchantment;
import org.bukkit.entity.Player;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;

public class Punir implements CommandExecutor{

    @Override
    public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
        Player p = (Player) sender;
        if(cmd.getName().equalsIgnoreCase("banir")) {
            ItemStack hack = new ItemStack(Material.DIAMOND_AXE, 1);
            ItemMeta hackmeta = hack.getItemMeta();
            Inventory inv = Bukkit.createInventory(null, 6*3, "§c§lBANIMENTOS");
            hack.addEnchantment(Enchantment.DURABILITY, 9);
            hackmeta.setDisplayName("§aUSO DE HACK");
            hack.setItemMeta(hackmeta);
            inv.setItem(9, hack);
            p.openInventory(inv);
        }
        return false;
    }
}

Esta bem simples pois e de testes então eu ainda irei criar os argumentos e o trageto

PORFAVOR ME AJUDAAAAAAAAAAAAAAAA ?

Link para o comentário
Compartilhar em outros sites

2 minutos atrás, WizardlyBump17 disse:

1º: Crie uma classe para o inventário separado

 2º: Use o evento InventoryClickEvent e cancele ele (faz suas checagens, obvio)

3º: Registre o evento

Espera, mas como eu faço para importar esse inventario no comando? Importar no caso fazer para abrir ne? que seria p.openInventory();

Link para o comentário
Compartilhar em outros sites

Vá em sua Main e coloque o seguinte:

public static HashMap<Player, Player> ban;

 

Agora, no começo da class do seu inventário você precisa colocar isso:

public static ItemStack Item;
public static ItemMeta Itemmeta;


Após você cria o método do inventário:

public static void OpenInv(Player p, Player t) {
		Inventory menugui = Bukkit.createInventory(null, Quantidadedelinhasdoinv * 9, "§aNomeDoInv");

		Item = new ItemStack(Material.WOOL, 1, (short) 2);
		Itemmeta = Item.getItemMeta();
		Itemmeta.setDisplayName("§cNomeDoItem");
		ArrayList<String> lore = new ArrayList<String>();
		lore.add("§aVoce quer banir o player " + t.getName() + "?");
		Itemmeta.setLore(lore);
		Item.setItemMeta(Itemmeta);

		menugui.setItem(SlotDoItem, Item);

		p.openInventory(menugui);
	}

ps: o segundo player na função não é necessário, apenas coloquei para que você possa colocar o nome do player a ser banido no item

Após criar o método vamos para a seção de comandos, quando o player digitar /ban <target> você faz o seguinte

OpenInv(p, target); // abre inventário
ban.put(p, target); // coloca o player e o target em hashmap


Por fim você faz o evento de click:

@EventHandler
	public void Click(InventoryClickEvent e) {
		if ((e.getCurrentItem() != null) && (e.getCurrentItem().getItemMeta() != null)) {
			Inventory inv = e.getInventory();
			Player p = (Player) e.getWhoClicked();

			if (inv.getTitle().equals("§aNomeDoInv")) {
				e.setCancelled(true); // cancela o evento de click, fazendo com que o item não vá para sua mão
				
				if (e.getCurrentItem().isSimilar(Item)) {
                    			Player target = ban.get(p).getPlayer(); // pega o target da hash que salvamos antes
					target.setBanned(true); // banimos o target
                    			ban.remove(p); // removemos o player da hash
                    			p.closeInventory(); // fechamos o gui
                    			//você fazer mais coisas aqui como enviar mensagens
				}
			}
		}
	}

Importante: esse código foi feito para que tudo esteja na mesma class, com exceção do hash, caso você separe em classes diferentes terá que puxar os métodos de outra class

Editado por Álison?
Link para o comentário
Compartilhar em outros sites

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