Guest iDimaDev Postado Maio 8, 2017 Denunciar Compartilhar Postado Maio 8, 2017 (editado) Quero saber como faço abrir um gui e qnd eu botar por exemplo um diamante e fechar o gui ou na hora que eu botar mesmo, mandar uma mensagem, "Upou para rank diamante!" para o player Editado Maio 8, 2017 por iDimaDev Link para o comentário Compartilhar em outros sites More sharing options...
smgabriel Postado Maio 9, 2017 Denunciar Compartilhar Postado Maio 9, 2017 Sim, gostaria de saber como coloco lapis lazulli no eclipse Dye d = new Dye(); d.setColor(DyeColor.BLUE); ItemStack i = d.toItemStack(); i.setAmount(10); p.getInventory().addItem(i); Link para o comentário Compartilhar em outros sites More sharing options...
Lelfe Postado Maio 8, 2017 Denunciar Compartilhar Postado Maio 8, 2017 UP, também preciso Link para o comentário Compartilhar em outros sites More sharing options...
Guest iDimaDev Postado Maio 8, 2017 Denunciar Compartilhar Postado Maio 8, 2017 UP, também preciso psé kkkk Link para o comentário Compartilhar em outros sites More sharing options...
kFlash_ Postado Maio 8, 2017 Denunciar Compartilhar Postado Maio 8, 2017 Explica direito? Link para o comentário Compartilhar em outros sites More sharing options...
Guest iDimaDev Postado Maio 8, 2017 Denunciar Compartilhar Postado Maio 8, 2017 Explica direito? o player vai dar /upar e qnd ele dar esse comando vai abrir um inventory, nesse inventory qnd ele colocar 1 diamante da uma mensagem que ele upou, se for outro minerio manda uma mensagem "item invalido" Link para o comentário Compartilhar em outros sites More sharing options...
Reityy Postado Maio 8, 2017 Denunciar Compartilhar Postado Maio 8, 2017 (editado) o player vai dar /upar e qnd ele dar esse comando vai abrir um inventory, nesse inventory qnd ele colocar 1 diamante da uma mensagem que ele upou, se for outro minerio manda uma mensagem "item invalido" @Override public boolean onCommand(CommandSender sender, Command cmd, String lb, String[] args) { if(cmd.getName().equalsIgnoreCase("upar")){ Inventory inv = Bukkit.createInventory(null, 3*9, "§cRankUp"); Player p = (Player)sender; p.openInventory(inv); if(inv.getItem(13) == new ItemStack(Material.DIAMOND)){ inv.remove(new ItemStack(Material.DIAMOND)); // Sistema pra upar de rank aqui p.closeInventory(); p.sendMessage("§aVocê upou!"); }else{ if(inv.getItem(13) != null && inv.getItem(13) != new ItemStack(Material.AIR)){ p.closeInventory(); p.sendMessage("§cItem inválido!"); } } } return false; } Obs: Não sei se vai funcionar, não testei, não sou o melhor pra te ajudar nisso, mas acho que tá certo ;-; Obs2: inv.getItem(13) << Esse 13 é o slot q o diamante tem que ser colocado Editado Maio 8, 2017 por Reityy Link para o comentário Compartilhar em outros sites More sharing options...
Guest iDimaDev Postado Maio 8, 2017 Denunciar Compartilhar Postado Maio 8, 2017 @Override public boolean onCommand(CommandSender sender, Command cmd, String lb, String[] args) { if(cmd.getName().equalsIgnoreCase("upar")){ Inventory inv = Bukkit.createInventory(null, 3*9, "§cRankUp"); Player p = (Player)sender; p.openInventory(inv); if(inv.getItem(13) == new ItemStack(Material.DIAMOND)){ inv.remove(new ItemStack(Material.DIAMOND)); // Sistema pra upar de rank aqui p.closeInventory(); p.sendMessage("§aVocê upou!"); }else{ if(inv.getItem(13) != null && inv.getItem(13) != new ItemStack(Material.AIR)){ p.closeInventory(); p.sendMessage("§cItem inválido!"); } } } return false; } Obs: Não sei se vai funcionar, não testei, não sou o melhor pra te ajudar nisso, mas acho que tá certo ;-; Obs2: inv.getItem(13) << Esse 13 é o slot q o diamante tem que ser colocado é nao funcionou Link para o comentário Compartilhar em outros sites More sharing options...
Reityy Postado Maio 8, 2017 Denunciar Compartilhar Postado Maio 8, 2017 é nao funcionou kskssksks ja imaginava ;-; como eu disse, "não sou o melhor pra te ajudar nisso" :v Link para o comentário Compartilhar em outros sites More sharing options...
Guest iDimaDev Postado Maio 8, 2017 Denunciar Compartilhar Postado Maio 8, 2017 kskssksks ja imaginava ;-; como eu disse, "não sou o melhor pra te ajudar nisso" :v mas e o unico que tento realmente ajudar.... o resto ta pouco se @%$#~&I isos que vale, vc ajudou Link para o comentário Compartilhar em outros sites More sharing options...
smgabriel Postado Maio 8, 2017 Denunciar Compartilhar Postado Maio 8, 2017 Na parte do comando, você cria um inventario e abre ele ex: if (command.getName().equalsIgnoreCase("up")) { if (sender instanceof Player) { Inventory inv = Bukkit.createInventory(null, 9, "UP!"); ((Player) sender).openInventory(inv); } } Agora, crie o evento chamado InventoryCloseEvent e adicione esse código: if (e.getInventory().getTitle().equalsIgnoreCase("UP!")) { if (e.getInventory().contains(Material.DIAMOND)) { e.getPlayer().sendMessage("Você upou com sucesso!"); return; } else { e.getPlayer().sendMessage("Item invalido."); return; } } Para verificar o item em ''tempo real'', tente fazer essa verificação com os eventos InventoryMoveItemEvent e InventoryDragEvent(eu recomendo o InventoryMoveItemEvent) Link para o comentário Compartilhar em outros sites More sharing options...
Guest iDimaDev Postado Maio 8, 2017 Denunciar Compartilhar Postado Maio 8, 2017 Na parte do comando, você cria um inventario e abre ele ex: if (command.getName().equalsIgnoreCase("up")) { if (sender instanceof Player) { Inventory inv = Bukkit.createInventory(null, 9, "UP!"); ((Player) sender).openInventory(inv); } } Agora, crie o evento chamado InventoryCloseEvent e adicione esse código: if (e.getInventory().getTitle().equalsIgnoreCase("UP!")) { if (e.getInventory().contains(Material.DIAMOND)) { e.getPlayer().sendMessage("Você upou com sucesso!"); return; } else { e.getPlayer().sendMessage("Item invalido."); return; } } Para verificar o item em ''tempo real'', tente fazer essa verificação com os eventos InventoryMoveItemEvent e InventoryDragEvent(eu recomendo o InventoryMoveItemEvent) Sem erros, porem não funcionou ;-; https://pastebin.com/kMxxuDv5meu codigo atual Link para o comentário Compartilhar em outros sites More sharing options...
smgabriel Postado Maio 8, 2017 Denunciar Compartilhar Postado Maio 8, 2017 Sem erros, porem não funcionou ;-; https://pastebin.com/kMxxuDv5meu codigo atual InventoryClickEvent só é ''ativado'' quando o player clica em um inventario, portanto, se o player colocar o item no inventario criado, ele ta clicando no inventario dele, então, não acontecerá nada. Use InventoryCloseEvent ou use os outros eventos que eu mencionei... Link para o comentário Compartilhar em outros sites More sharing options...
Guest iDimaDev Postado Maio 8, 2017 Denunciar Compartilhar Postado Maio 8, 2017 InventoryClickEvent só é ''ativado'' quando o player clica em um inventario, portanto, se o player colocar o item no inventario criado, ele ta clicando no inventario dele, então, não acontecerá nada. Use InventoryCloseEvent ou use os outros eventos que eu mencionei... Eu n to conseguindo tipo, qnd muda o evento por exemplo para InventoryMoveEvent, n consigo pegar o player, e etc... @EventHandler public void OnFechar3(InventoryMoveItemEvent e){ if (e.getInventory().getTitle().equalsIgnoreCase("UP!")) { if (e.getInventory().contains(Material.DIAMOND)) { } } } ;-; Link para o comentário Compartilhar em outros sites More sharing options...
smgabriel Postado Maio 9, 2017 Denunciar Compartilhar Postado Maio 9, 2017 Eu n to conseguindo tipo, qnd muda o evento por exemplo para InventoryMoveEvent, n consigo pegar o player, e etc... @EventHandler public void OnFechar3(InventoryMoveItemEvent e){ if (e.getInventory().getTitle().equalsIgnoreCase("UP!")) { if (e.getInventory().contains(Material.DIAMOND)) { } } } ;-; Bem, eu não sabia da existência do InventoryAction no InventoryClickEvent, então eu fiz uma gambiarra, utilizando o evento InventoryClickEvent, tente isso: Bukkit.broadcastMessage("1"); Player p = (Player) e.getWhoClicked(); if (p.getOpenInventory().getTitle().equalsIgnoreCase("UP!")) { Bukkit.broadcastMessage("2"); if(e.getAction() == InventoryAction.MOVE_TO_OTHER_INVENTORY){ if (e.getCurrentItem() != null && e.getCurrentItem().getType().equals(Material.DIAMOND)) { Bukkit.broadcastMessage("3"); p.sendMessage("Você upou com sucesso!"); p.closeInventory(); return; } else { Bukkit.broadcastMessage("4"); p.sendMessage("Item invalido."); return; } } } Introdução rápida: Quando o player usar o SHIFT + Item(o diamante), o item será movido para o inventario e vai fazer essa verificação se é um diamante ou não, se sim, fecha o inventario. Eu acho que se ele mover o item com o mouse não vai dar mt certo, tente verificar os ENUMs se tem algum com essa função, caso não tenha, use o InventoryDragEvent. Acabei de observar que o InventoryMoveItemEvent não é utilizável para isso. Link para o comentário Compartilhar em outros sites More sharing options...
Guest iDimaDev Postado Maio 9, 2017 Denunciar Compartilhar Postado Maio 9, 2017 Tambem não funcionou nem envia os broadcasts '-' Link para o comentário Compartilhar em outros sites More sharing options...
smgabriel Postado Maio 9, 2017 Denunciar Compartilhar Postado Maio 9, 2017 Tambem não funcionou nem envia os broadcasts '-' Mostre seu código. Link para o comentário Compartilhar em outros sites More sharing options...
Guest iDimaDev Postado Maio 9, 2017 Denunciar Compartilhar Postado Maio 9, 2017 Mostre seu código. https://pastebin.com/4w47X2jt Link para o comentário Compartilhar em outros sites More sharing options...
smgabriel Postado Maio 9, 2017 Denunciar Compartilhar Postado Maio 9, 2017 https://pastebin.com/4w47X2jt Não enviou nem se quer o primeiro broadcast? "Bukkit.broadcastMessage("1");" se não, verifique se você registrou o evento e se seu método esta correto, pois eu testei e funcionou perfeitamente. Link para o comentário Compartilhar em outros sites More sharing options...
Guest iDimaDev Postado Maio 9, 2017 Denunciar Compartilhar Postado Maio 9, 2017 Eu registrei usando @EventHandler, qual a forma que você registrou o evento? Link para o comentário Compartilhar em outros sites More sharing options...
smgabriel Postado Maio 9, 2017 Denunciar Compartilhar Postado Maio 9, 2017 (editado) Eu registrei usando @EventHandler, qual a forma que você registrou o evento? Tem que registrar na classe principal também(geralmente denominada de Main) getServer().getPluginManager().registerEvents(this/*classe do evento*/, this/*classe principal*/); Editado Maio 9, 2017 por GabrielSm_ Link para o comentário Compartilhar em outros sites More sharing options...
Guest iDimaDev Postado Maio 9, 2017 Denunciar Compartilhar Postado Maio 9, 2017 Tem que registrar na classe principal também(geralmente denominada de Main) getServer().getPluginManager().registerEvents(this/*classe do evento*/, this/*classe principal*/); ah sim, eu registrei desse jeito tbm.. Bukkit.getServer().getPluginManager().registerEvents(this, this); Link para o comentário Compartilhar em outros sites More sharing options...
leonardosc Postado Maio 9, 2017 Denunciar Compartilhar Postado Maio 9, 2017 ah sim, eu registrei desse jeito tbm.. Bukkit.getServer().getPluginManager().registerEvents(this, this); Conseguiu? o que falta? ainda precisa de ajuda? Link para o comentário Compartilhar em outros sites More sharing options...
Guest iDimaDev Postado Maio 9, 2017 Denunciar Compartilhar Postado Maio 9, 2017 Conseguiu? o que falta? ainda precisa de ajuda? Sim, gostaria de saber como coloco lapis lazulli no eclipse Link para o comentário Compartilhar em outros sites More sharing options...
leonardosc Postado Maio 9, 2017 Denunciar Compartilhar Postado Maio 9, 2017 (editado) Sim, gostaria de saber como coloco lapis lazulli no eclipse Tenta ItemStack lapiz = new ItemStack(Material.INK_SACK, 1, (short) 4); Editado Maio 9, 2017 por leonardosc Link para o comentário Compartilhar em outros sites More sharing options...
Guest iDimaDev Postado Maio 9, 2017 Denunciar Compartilhar Postado Maio 9, 2017 Dye d = new Dye(); d.setColor(DyeColor.BLUE); ItemStack i = d.toItemStack(); i.setAmount(10); p.getInventory().addItem(i); Resolvido, vlw mais uma duvida, porque minha config fica assim? http://i.imgur.com/If7WB02.png Link para o comentário Compartilhar em outros sites More sharing options...
smgabriel Postado Maio 9, 2017 Denunciar Compartilhar Postado Maio 9, 2017 Resolvido, vlw mais uma duvida, porque minha config fica assim? http://i.imgur.com/If7WB02.png Usa saveConfig() e reloadConfig()? se sim, talvez seja o motivo, eu lembro que quando eu usei deu muito trabalho... Se eu não tou enganado, minha solução foi usar uma classe que o @Lüigi! me passou(não lembro qual foi e onde eu achei, tente perguntar a ele, na real, lembro que o nome era mais ou menos simpleconfig). Se não for isso, tente ver a formatação do seu projeto. Link para o comentário Compartilhar em outros sites More sharing options...
Guest iDimaDev Postado Maio 9, 2017 Denunciar Compartilhar Postado Maio 9, 2017 Usa saveConfig() e reloadConfig()? se sim, talvez seja o motivo, eu lembro que quando eu usei deu muito trabalho... Se eu não tou enganado, minha solução foi usar uma classe que o @Lüigi! me passou(não lembro qual foi e onde eu achei, tente perguntar a ele, na real, lembro que o nome era mais ou menos simpleconfig). Se não for isso, tente ver a formatação do seu projeto. Aqui nao funfou ,-, Link para o comentário Compartilhar em outros sites More sharing options...
Gutyerrez Postado Maio 10, 2017 Denunciar Compartilhar Postado Maio 10, 2017 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 More sharing options...
Pergunta
Guest iDimaDev
Quero saber como faço abrir um gui e qnd eu botar por exemplo um diamante e fechar o gui ou na hora que eu botar mesmo, mandar uma mensagem, "Upou para rank diamante!" para o player
Editado por iDimaDevLink para o comentário
Compartilhar em outros sites
28 respostass a esta questão
Posts Recomendados