Ir para conteúdo
  • 0

[Resolvido] [Duvida] Gui


LuizB

Pergunta

Como faço pra quando um player clicar em um item ele n consiga mover no GUI Codigo:

 

@Override
	public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
		Player p = (Player)sender;
		if (!(sender instanceof Player)) {
			sender.sendMessage((Object)ChatColor.BLUE + "Este Comando não pode ser Usado Pelo Console");
					
			if (command.getName().equals("particula")) {
				
				Inventory inv = Bukkit.createInventory(null, 6*9, getConfig().getString("nomedomenu").replace("@jogador", p.getName()));
				
				ItemStack fogo = new ItemStack(Material.BLAZE_POWDER);
				ItemMeta fogometa = fogo.getItemMeta();
				fogometa.setDisplayName(getConfig().getString("nomefogo").replace("@jogador", p.getName()));
				ArrayList<String> lore = new ArrayList<>();
				lore.add(getConfig().getString("lorefogo").replace("&", "§").replaceAll("@jogador", p.getName()));
				fogometa.setLore(lore);
				fogo.setItemMeta(fogometa);
			
Link para o comentário
Compartilhar em outros sites

20 respostass a esta questão

Posts Recomendados

@EventHandler
public void onInventoryClick(InventoryClickEvent e){
    final Player p = e.getPlayer();
    ItemStack it = e.getClickedItem();
    if(it.getType() == Material.DIAMOND && it.hasItemMeta() && it.getItemMeta().hasDisplayName() && it.getItemMeta().getDisplayName().equals("§cNome do Item §4HERE")){
        e.setCancelled(true);
        new BukkitRunnable(){
            @Override
            public void run(){
                p.updateInventory();//Isso aqui só faz atualizar o inventário, tipo, se o negro tiver tentando dupar, isso tira aquele item 'fantasma' do inventário do negro
            }
        }.runTaskLater(this, 20L);
        p.sendMessage("§bWOW, vocÊ cicou no item de dima que faz bosta nenhuma");
        p.teleport(Location);//Sei lá
    }
}

Fiz aqui no fórum mesmo, acho que ta certo :c

Link para o comentário
Compartilhar em outros sites

@EventHandler
public void onInventoryClick(InventoryClickEvent e){
    final Player p = e.getPlayer();
    ItemStack it = e.getClickedItem();
    if(it.getType() == Material.DIAMOND && it.hasItemMeta() && it.getItemMeta().hasDisplayName() && it.getItemMeta().getDisplayName().equals("§cNome do Item §4HERE")){
        e.setCancelled(true);
        new BukkitRunnable(){
            @Override
            public void run(){
                p.updateInventory();//Isso aqui só faz atualizar o inventário, tipo, se o negro tiver tentando dupar, isso tira aquele item 'fantasma' do inventário do negro
            }
        }.runTaskLater(this, 20L);
        p.sendMessage("§bWOW, vocÊ cicou no item de dima que faz bosta nenhuma");
        p.teleport(Location);//Sei lá
    }
}

Fiz aqui no fórum mesmo, acho que ta certo :c

 

Tipo esse é sem comando quero com comando '-

Link para o comentário
Compartilhar em outros sites

Tipo esse é sem comando quero com comando '-

Você pediu ajuda no código para fazer com que o player clique no inventário e não possa furtar os itens, não como abrir o menu GUI.

@Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
    Player p = (Player)sender;
	if (!(sender instanceof Player)) {
		sender.sendMessage((Object)ChatColor.BLUE + "Este Comando não pode ser Usado Pelo Console");
                return true;
        }			
	if (command.getName().equals("particula")) {		
		Inventory inv = Bukkit.createInventory(null, 6*9, getConfig().getString("nomedomenu").replace("@jogador", p.getName()));				
		ItemStack fogo = new ItemStack(Material.BLAZE_POWDER);
		ItemMeta fogometa = fogo.getItemMeta();
		fogometa.setDisplayName(getConfig().getString("nomefogo").replace("@jogador", p.getName()));
		ArrayList<String> lore = new ArrayList<>();
		lore.add(getConfig().getString("lorefogo").replace("&", "§").replaceAll("@jogador", p.getName()));
		fogometa.setLore(lore);
		fogo.setItemMeta(fogometa);
                inv.addItem(fogo);//inv.setitem(slot, itemstack);
                p.openInventory(inv);
                return true;
        }
        return false;
}
Link para o comentário
Compartilhar em outros sites

 

Você pediu ajuda no código para fazer com que o player clique no inventário e não possa furtar os itens, não como abrir o menu GUI.

@Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
    Player p = (Player)sender;
	if (!(sender instanceof Player)) {
		sender.sendMessage((Object)ChatColor.BLUE + "Este Comando não pode ser Usado Pelo Console");
                return true;
        }			
	if (command.getName().equals("particula")) {		
		Inventory inv = Bukkit.createInventory(null, 6*9, getConfig().getString("nomedomenu").replace("@jogador", p.getName()));				
		ItemStack fogo = new ItemStack(Material.BLAZE_POWDER);
		ItemMeta fogometa = fogo.getItemMeta();
		fogometa.setDisplayName(getConfig().getString("nomefogo").replace("@jogador", p.getName()));
		ArrayList<String> lore = new ArrayList<>();
		lore.add(getConfig().getString("lorefogo").replace("&", "§").replaceAll("@jogador", p.getName()));
		fogometa.setLore(lore);
		fogo.setItemMeta(fogometa);
                inv.addItem(fogo);//inv.setitem(slot, itemstack);
                p.openInventory(inv);
                return true;
        }
        return false;
}

ue tem assim tem plugins que usa comando pra abrir GUI como o PowerMoedas Do MrPowerGamerBr. eu ja ate testei só que dava pra furtar os itens abriu o menu e tudo

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

Entendi Mais como eu posso organizar isto, pode ser em outra classe ?, se sim como ?

Pode botar em outra classe, basta registrar os eventos:

Bukkit.getPluginManager().registerEvents(new ClasseQueTaOsEventos(), this);

Isso fica no onEnable()

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

Pode botar em outra classe, basta registrar os eventos:

Bukkit.getPluginManager().registerEvents(new ClasseQueTaOsEventos(), this);

Isso fica no onEnable()

entao eu crio uma classe chamada Eventos e coloco o eventhandle.

 

ai na classe dos Comandos eu coloco

 

 

Bukkit.getPluginManager().registerEvents(new Classeeventos(), this);

Isto ?

Link para o comentário
Compartilhar em outros sites

entao eu crio uma classe chamada Eventos e coloco o eventhandle.

 

ai na classe dos Comandos eu coloco

 

 

Bukkit.getPluginManager().registerEvents(new Classeeventos(), this);

Isto ?

Onde eu disse que é na classe dos Comandos? Disse que fica no onEnable()

Link para o comentário
Compartilhar em outros sites

Onde eu disse que é na classe dos Comandos? Disse que fica no onEnable()

ss eu coloco o

Bukkit.getPluginManager().registerEvents(new Classeeventos(), this) 

na classe dos comandos no OnEnable

Onde eu disse que é na classe dos Comandos? Disse que fica no onEnable()

Sorrizo Ronaldo Este Codigo :

@Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
    Player p = (Player)sender;
	if (!(sender instanceof Player)) {
		sender.sendMessage((Object)ChatColor.BLUE + "Este Comando não pode ser Usado Pelo Console");
                return true;
        }			
	if (command.getName().equals("particula")) {		
		Inventory inv = Bukkit.createInventory(null, 6*9, getConfig().getString("nomedomenu").replace("@jogador", p.getName()));				
		ItemStack fogo = new ItemStack(Material.BLAZE_POWDER);
		ItemMeta fogometa = fogo.getItemMeta();
		fogometa.setDisplayName(getConfig().getString("nomefogo").replace("@jogador", p.getName()));
		ArrayList<String> lore = new ArrayList<>();
		lore.add(getConfig().getString("lorefogo").replace("&", "§").replaceAll("@jogador", p.getName()));
		fogometa.setLore(lore);
		fogo.setItemMeta(fogometa);
                inv.addItem(fogo);//inv.setitem(slot, itemstack);
                p.openInventory(inv);
                return true;
        }
        return false;
}

Ja abre Um Gui Como faço pra ele abrir somente Este GUI: ?

 

@EventHandler
public void onInventoryClick(InventoryClickEvent e){
    final Player p = e.getPlayer();
    ItemStack it = e.getClickedItem();
    if(it.getType() == Material.DIAMOND && it.hasItemMeta() && it.getItemMeta().hasDisplayName() && it.getItemMeta().getDisplayName().equals("§cNome do Item §4HERE")){
        e.setCancelled(true);
        new BukkitRunnable(){
            @Override
            public void run(){
                p.updateInventory();//Isso aqui só faz atualizar o inventário, tipo, se o negro tiver tentando dupar, isso tira aquele item 'fantasma' do inventário do negro
            }
        }.runTaskLater(this, 20L);
        p.sendMessage("§bWOW, vocÊ cicou no item de dima que faz bosta nenhuma");
        p.teleport(Location);//Sei lá
    }
}
Link para o comentário
Compartilhar em outros sites

 

ss eu coloco o

Bukkit.getPluginManager().registerEvents(new Classeeventos(), this) 

na classe dos comandos no OnEnable

Sorrizo Ronaldo Este Codigo :

@Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
    Player p = (Player)sender;
	if (!(sender instanceof Player)) {
		sender.sendMessage((Object)ChatColor.BLUE + "Este Comando não pode ser Usado Pelo Console");
                return true;
        }			
	if (command.getName().equals("particula")) {		
		Inventory inv = Bukkit.createInventory(null, 6*9, getConfig().getString("nomedomenu").replace("@jogador", p.getName()));				
		ItemStack fogo = new ItemStack(Material.BLAZE_POWDER);
		ItemMeta fogometa = fogo.getItemMeta();
		fogometa.setDisplayName(getConfig().getString("nomefogo").replace("@jogador", p.getName()));
		ArrayList<String> lore = new ArrayList<>();
		lore.add(getConfig().getString("lorefogo").replace("&", "§").replaceAll("@jogador", p.getName()));
		fogometa.setLore(lore);
		fogo.setItemMeta(fogometa);
                inv.addItem(fogo);//inv.setitem(slot, itemstack);
                p.openInventory(inv);
                return true;
        }
        return false;
}

Ja abre Um Gui Como faço pra ele abrir somente Este GUI: ?

 

@EventHandler
public void onInventoryClick(InventoryClickEvent e){
    final Player p = e.getPlayer();
    ItemStack it = e.getClickedItem();
    if(it.getType() == Material.DIAMOND && it.hasItemMeta() && it.getItemMeta().hasDisplayName() && it.getItemMeta().getDisplayName().equals("§cNome do Item §4HERE")){
        e.setCancelled(true);
        new BukkitRunnable(){
            @Override
            public void run(){
                p.updateInventory();//Isso aqui só faz atualizar o inventário, tipo, se o negro tiver tentando dupar, isso tira aquele item 'fantasma' do inventário do negro
            }
        }.runTaskLater(this, 20L);
        p.sendMessage("§bWOW, vocÊ cicou no item de dima que faz bosta nenhuma");
        p.teleport(Location);//Sei lá
    }
}

Pqp mano, presta atenção nas coisas, o código tá feito vey... Não são dois GUI's, o comando abre o GUI e o evento impede de mover os itens, cada um tem uma função.

Link para o comentário
Compartilhar em outros sites

Ah ta então o :
 

if(it.getType() == Material.DIAMOND && it.hasItemMeta() && it.getItemMeta().hasDisplayName() && it.getItemMeta().getDisplayName().equals("§cNome do Item §4HERE")){

Vai ser o Item que eu quero que não mova ?


Desculpa ser tão burro pq comecei java praticamente Ontem, aushudhausdhasds

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

Ah ta então o :

 

if(it.getType() == Material.DIAMOND && it.hasItemMeta() && it.getItemMeta().hasDisplayName() && it.getItemMeta().getDisplayName().equals("§cNome do Item §4HERE")){

Vai ser o Item que eu quero que não mova ?

Sim, não tem como deixar mais claro que isso.

Link para o comentário
Compartilhar em outros sites

Só implementa o Listener, extende a JavaPlugin apenas na classe principal.

Nesta Linha:

@Override
	public void onEnable() {
		Bukkit.getPluginManager().registerEvents(new Eventos(), this);
		File f = new File(getDataFolder(), "config.yml"); 
		if(!f.exists());
			saveResource("config.yml", false);

No registerEvents Da Este Erro:

The method registerEvents(Listener, Plugin) in the type PluginManager is not applicable for the arguments (Eventos, Opengui)

Link para o comentário
Compartilhar em outros sites

Nesta Linha:

@Override
	public void onEnable() {
		Bukkit.getPluginManager().registerEvents(new Eventos(), this);
		File f = new File(getDataFolder(), "config.yml"); 
		if(!f.exists());
			saveResource("config.yml", false);

No registerEvents Da Este Erro:

The method registerEvents(Listener, Plugin) in the type PluginManager is not applicable for the arguments (Eventos, Opengui)

Mano dá uma estudada, aprende pelo menos um pouquinho de Java que vai ficar mais fácil tu usar a API do Bukkit. Você tem que passar um Listener (Classe 'Eventos') e um Plugin (Classe principal):

 

(Não precisa extender a JavaPlugin em todas as classes, apenas na PRINCIPAL, o onEnable() deve ficar apenas na PRINCIPAL)

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

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