Xipsahoy Postado Maio 20, 2020 Denunciar Compartilhar Postado Maio 20, 2020 Então, eu recentemente fiz download de um plugin de caixas misteriosas, este aqui: O plugin é muito bom pois tem percentagens, etc. O único problema é, n tem como dar caixa all e a quantidade de caixas que se pode dar! Então eu falei com o dono do plugin e ele disee que já não dava suporte ao plugin, eu perguntei de podia decompilar para poder adicionar essa opção e ele disse, sem problema! Então eu decompilei, abri o ficheiro que cria o comando, e apareceu este código: package timepvp.caixasmisteriosas.comandos; import timepvp.caixasmisteriosas.objetos.Caixa; import timepvp.caixasmisteriosas.CaixasAPI; import org.bukkit.Bukkit; import org.bukkit.entity.Player; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.command.CommandExecutor; public class Give implements CommandExecutor { public boolean onCommand(final CommandSender sender, final Command cmd, final String label, final String[] args) { if (sender instanceof Player) { final Player p = (Player)sender; if (!p.hasPermission("caixasmisteriosas")) { p.sendMessage("§cN\u00e3o tens permiss\u00e3o para fazer isso."); return true; } } if (args.length > 1) { final String jogador = args[0]; final String caixa = args[1]; if (Bukkit.getPlayer(jogador) != null) { final Player k = Bukkit.getPlayer(jogador); if (CaixasAPI.getCaixaPeloNome(caixa) != null) { final Caixa c = CaixasAPI.getCaixaPeloNome(caixa); CaixasAPI.giveCaixa(c, k); } else { sender.sendMessage("§cEssa caixa n\u00e3o existe!"); } } else { sender.sendMessage("§cEsse jogador n\u00e3o est\u00e1 online"); } } else { sender.sendMessage("§cUse /caixagive <jogador> <caixa>."); } return false; } } Alguém me pode dizer como adiciono essa opção de caixa all e quantidade de caixas? Obrigado! Link para o comentário Compartilhar em outros sites More sharing options...
String Postado Maio 20, 2020 Denunciar Compartilhar Postado Maio 20, 2020 Poderia enviar a classe CaixasAPI também?! Link para o comentário Compartilhar em outros sites More sharing options...
Xipsahoy Postado Maio 20, 2020 Autor Denunciar Compartilhar Postado Maio 20, 2020 1 hora atrás, String disse: Poderia enviar a classe CaixasAPI também?! Com certeza! package timepvp.caixasmisteriosas; import java.util.Random; import org.bukkit.plugin.Plugin; import org.bukkit.event.Event; import timepvp.caixasmisteriosas.objetos.CaixaAbrirEvent; import org.bukkit.Sound; import org.bukkit.command.CommandSender; import org.bukkit.inventory.Inventory; import org.bukkit.scheduler.BukkitRunnable; import org.bukkit.inventory.InventoryHolder; import org.bukkit.Bukkit; import org.bukkit.scheduler.BukkitTask; import timepvp.caixasmisteriosas.objetos.Item; import java.util.HashMap; import timepvp.caixasmisteriosas.objetos.Raridade; import java.util.Collection; import java.util.Collections; import org.bukkit.enchantments.Enchantment; import org.bukkit.inventory.meta.ItemMeta; import java.util.ArrayList; import org.bukkit.inventory.ItemStack; import org.bukkit.Material; import org.bukkit.entity.Player; import java.util.List; import java.util.Iterator; import timepvp.caixasmisteriosas.objetos.Caixa; public class CaixasAPI { public static Caixa getCaixaPeloNome(final String caixa) { for (final Caixa c : getCaixas()) { if (c.getNome().equalsIgnoreCase(caixa)) { return c; } } return null; } public static List<Caixa> getCaixas() { return Main.getInstance().caixas; } public static void giveCaixa(final Caixa c, final Player k) { final ItemStack is = new ItemStack(Material.getMaterial(c.getID())); final ItemMeta meta = is.getItemMeta(); meta.setDisplayName(c.getDisplayName()); final ArrayList<String> lore = new ArrayList<String>(); lore.add(" §7\u2022 Caixa " + c.getNome() + " "); meta.setLore((List)lore); is.setItemMeta(meta); k.getInventory().addItem(new ItemStack[] { is }); } public static Enchantment traduzirEncantamento(final String e) { if (e.equalsIgnoreCase("PROTECTION")) { return Enchantment.PROTECTION_ENVIRONMENTAL; } if (e.equalsIgnoreCase("FIREPROTECTION")) { return Enchantment.PROTECTION_FIRE; } if (e.equalsIgnoreCase("FEATHERFALLING")) { return Enchantment.PROTECTION_FALL; } if (e.equalsIgnoreCase("BLASTPROTECTION")) { return Enchantment.PROTECTION_EXPLOSIONS; } if (e.equalsIgnoreCase("PROJECTILEPROTECTION")) { return Enchantment.PROTECTION_ENVIRONMENTAL; } if (e.equalsIgnoreCase("SHARPNESS")) { return Enchantment.DAMAGE_ALL; } if (e.equalsIgnoreCase("KNOCKBACK")) { return Enchantment.KNOCKBACK; } if (e.equalsIgnoreCase("FIREASPECT")) { return Enchantment.FIRE_ASPECT; } if (e.equalsIgnoreCase("LOOTING")) { return Enchantment.LOOT_BONUS_MOBS; } if (e.equalsIgnoreCase("EFFICIENCY")) { return Enchantment.DIG_SPEED; } if (e.equalsIgnoreCase("SILKTOUCH")) { return Enchantment.SILK_TOUCH; } if (e.equalsIgnoreCase("UNBREAKING")) { return Enchantment.DURABILITY; } if (e.equalsIgnoreCase("FORTUNE")) { return Enchantment.LOOT_BONUS_BLOCKS; } return null; } public static List<Integer> getPosicoesVidro() { final List<Integer> lista = new ArrayList<Integer>(); Collections.addAll(lista, new Integer[] { 0, 1, 2, 3, 5, 6, 7, 8, 9, 17, 18, 19, 20, 21, 23, 24, 25, 26 }); return lista; } public static List<Raridade> getRaridades() { return Main.getInstance().raridade; } public static void abrirCaixa(final Caixa c, final Player p) { final HashMap<Integer, Item> slot = new HashMap<Integer, Item>(); final ArrayList<Integer> delay = new ArrayList<Integer>(); final ArrayList<BukkitTask> runnables = new ArrayList<BukkitTask>(); final Inventory inv = Bukkit.createInventory((InventoryHolder)null, 27, "§7Abrindo caixa: " + c.getDisplayName()); for (final int i : getPosicoesVidro()) { inv.setItem(i, randomizarVidro()); } slot.put(1, randomizarItem(c)); slot.put(2, randomizarItem(c)); slot.put(3, randomizarItem(c)); slot.put(4, randomizarItem(c)); slot.put(5, randomizarItem(c)); slot.put(6, randomizarItem(c)); slot.put(7, randomizarItem(c)); inv.setItem(10, slot.get(1).getItemStack()); inv.setItem(11, slot.get(2).getItemStack()); inv.setItem(12, slot.get(3).getItemStack()); inv.setItem(13, slot.get(4).getItemStack()); inv.setItem(14, slot.get(5).getItemStack()); inv.setItem(15, slot.get(6).getItemStack()); inv.setItem(16, slot.get(7).getItemStack()); inv.setItem(4, new ItemStack(Material.STAINED_GLASS_PANE, 1, (short)15)); inv.setItem(22, new ItemStack(Material.STAINED_GLASS_PANE, 1, (short)15)); p.openInventory(inv); final BukkitTask bt = new BukkitRunnable() { public void run() { if (delay.contains(20)) { new BukkitRunnable() { public void run() { final Item ItemGanho = slot.get(4); if (ItemGanho.getComando() != "") { Bukkit.getServer().dispatchCommand((CommandSender)Bukkit.getConsoleSender(), ItemGanho.getComando().replace("<jogador>", p.getName())); } if (ItemGanho.getAddItem()) { p.getInventory().addItem(new ItemStack[] { ItemGanho.getItemStack() }); } p.playSound(p.getLocation(), Sound.LEVEL_UP, 5.0f, 1.0f); if (p.getOpenInventory().getTitle().contains("§7Abrindo caixa: ")) { p.closeInventory(); } Bukkit.getPluginManager().callEvent((Event)new CaixaAbrirEvent(p, c, ItemGanho)); } }.runTaskLater((Plugin)Main.getInstance(), 60L); delay.clear(); for (final BukkitTask bta : runnables) { bta.cancel(); } return; } final Item novoitem = CaixasAPI.randomizarItem(c); inv.setItem(10, slot.get(2).getItemStack()); inv.setItem(11, slot.get(3).getItemStack()); inv.setItem(12, slot.get(4).getItemStack()); inv.setItem(13, slot.get(5).getItemStack()); inv.setItem(14, slot.get(6).getItemStack()); inv.setItem(15, slot.get(7).getItemStack()); inv.setItem(16, novoitem.getItemStack()); slot.put(1, slot.get(2)); slot.put(2, slot.get(3)); slot.put(3, slot.get(4)); slot.put(4, slot.get(5)); slot.put(5, slot.get(6)); slot.put(6, slot.get(7)); slot.put(7, novoitem); for (final int i : CaixasAPI.getPosicoesVidro()) { inv.setItem(i, CaixasAPI.randomizarVidro()); } p.playSound(p.getLocation(), Sound.ITEM_PICKUP, 5.0f, 1.0f); delay.add(delay.size() + 1); } }.runTaskTimerAsynchronously((Plugin)Main.getInstance(), 5L, 5L); runnables.add(bt); } public static ItemStack randomizarVidro() { int random = new Random().nextInt(14) + 1; if (random == 1 || random == 8) { ++random; } return new ItemStack(Material.STAINED_GLASS_PANE, 1, (short)random); } public static Item randomizarItem(final Caixa c) { int random = new Random().nextInt(100) + 1; if (random == 100) { --random; } for (final Item i : c.getDados()) { if (random >= i.getMinPercentagem() && random < i.getMaxPercentagem()) { return i; } } return null; } public static void inspecionarCaixa(final Caixa c, final Player p) { final Inventory inv = Bukkit.createInventory((InventoryHolder)null, 45, "§7Itens da caixa: " + c.getDisplayName()); for (final Item i : c.getDados()) { final List<String> loreantiga = new ArrayList<String>(); if (i.getItemStack().getItemMeta().hasLore()) { for (final String lores : i.getItemStack().getItemMeta().getLore()) { loreantiga.add(lores); } } final ItemStack is = i.getItemStack(); final ItemMeta meta = is.getItemMeta(); final List<String> ilore = new ArrayList<String>(); ilore.add(""); ilore.add(" §eChance: " + i.getPercentagem() + "%"); ilore.add(""); meta.setLore((List)ilore); is.setItemMeta(meta); inv.setItem(getSlot(inv), is); final ItemStack itemstack = i.getItemStack(); final ItemMeta imeta = itemstack.getItemMeta(); final List<String> llore = new ArrayList<String>(); for (final String k : loreantiga) { llore.add(k); } imeta.setLore((List)llore); itemstack.setItemMeta(imeta); } p.openInventory(inv); } public static int getSlot(final Inventory inv) { if (inv.getItem(10) == null || inv.getItem(10).getType() == Material.AIR) { return 10; } if (inv.getItem(11) == null || inv.getItem(11).getType() == Material.AIR) { return 11; } if (inv.getItem(12) == null || inv.getItem(12).getType() == Material.AIR) { return 12; } if (inv.getItem(13) == null || inv.getItem(13).getType() == Material.AIR) { return 13; } if (inv.getItem(14) == null || inv.getItem(14).getType() == Material.AIR) { return 14; } if (inv.getItem(15) == null || inv.getItem(15).getType() == Material.AIR) { return 15; } if (inv.getItem(16) == null || inv.getItem(16).getType() == Material.AIR) { return 16; } if (inv.getItem(19) == null || inv.getItem(19).getType() == Material.AIR) { return 19; } if (inv.getItem(20) == null || inv.getItem(20).getType() == Material.AIR) { return 20; } if (inv.getItem(21) == null || inv.getItem(21).getType() == Material.AIR) { return 21; } if (inv.getItem(22) == null || inv.getItem(22).getType() == Material.AIR) { return 22; } if (inv.getItem(23) == null || inv.getItem(23).getType() == Material.AIR) { return 23; } if (inv.getItem(24) == null || inv.getItem(24).getType() == Material.AIR) { return 24; } if (inv.getItem(25) == null || inv.getItem(25).getType() == Material.AIR) { return 25; } if (inv.getItem(28) == null || inv.getItem(28).getType() == Material.AIR) { return 28; } if (inv.getItem(29) == null || inv.getItem(29).getType() == Material.AIR) { return 29; } if (inv.getItem(30) == null || inv.getItem(30).getType() == Material.AIR) { return 30; } if (inv.getItem(31) == null || inv.getItem(31).getType() == Material.AIR) { return 31; } if (inv.getItem(32) == null || inv.getItem(32).getType() == Material.AIR) { return 32; } if (inv.getItem(33) == null || inv.getItem(33).getType() == Material.AIR) { return 33; } if (inv.getItem(34) == null || inv.getItem(34).getType() == Material.AIR) { return 34; } if (inv.getItem(35) == null || inv.getItem(35).getType() == Material.AIR) { return 35; } if (inv.getItem(36) == null || inv.getItem(36).getType() == Material.AIR) { return 36; } if (inv.getItem(37) == null || inv.getItem(37).getType() == Material.AIR) { return 37; } if (inv.getItem(38) == null || inv.getItem(38).getType() == Material.AIR) { return 38; } if (inv.getItem(39) == null || inv.getItem(39).getType() == Material.AIR) { return 39; } if (inv.getItem(40) == null || inv.getItem(40).getType() == Material.AIR) { return 40; } if (inv.getItem(41) == null || inv.getItem(41).getType() == Material.AIR) { return 41; } if (inv.getItem(42) == null || inv.getItem(42).getType() == Material.AIR) { return 42; } if (inv.getItem(43) == null || inv.getItem(43).getType() == Material.AIR) { return 43; } return -1; } } Link para o comentário Compartilhar em outros sites More sharing options...
String Postado Maio 20, 2020 Denunciar Compartilhar Postado Maio 20, 2020 Você vai procurar o módulo que se chama giveCaixa, e irá trocar ele para: public static void giveCaixa(final Caixa c, final Player k, final int q) { final ItemStack is = new ItemStack(Material.getMaterial(c.getID()), q); final ItemMeta meta = is.getItemMeta(); meta.setDisplayName(c.getDisplayName()); final ArrayList<String> lore = new ArrayList<String>(); lore.add(" §7\u2022 Caixa " + c.getNome() + " "); meta.setLore((List)lore); is.setItemMeta(meta); k.getInventory().addItem(new ItemStack[] { is }); } A classe comandos irá ficar assim: public boolean onCommand(final CommandSender sender, final Command cmd, final String label, final String[] args) { if (sender instanceof Player) { final Player p = (Player) sender; if (!p.hasPermission("caixasmisteriosas")) { p.sendMessage("§cN\u00e3o tens permiss\u00e3o para fazer isso."); return true; } if (args.length > 1) { final String jogador = args[0]; final String caixa = args[1]; final int quantidade; try { quantidade = Integer.parseInt(args[2]); } catch (NumberFormatException e) { p.sendMessage("§cInspecione uma quantidade válida."); } if (jogador.equalsIgnoreCase("all")) { for (Player players : Bukkit.getOnlinePlayers()) { if (CaixasAPI.getCaixaPeloNome(caixa) != null) { final Caixa c = CaixasAPI.getCaixaPeloNome(caixa); CaixasAPI.giveCaixa(c, players, quantidade); } } } if (Bukkit.getPlayer(jogador) != null) { final Player k = Bukkit.getPlayer(jogador); if (CaixasAPI.getCaixaPeloNome(caixa) != null) { final Caixa c = CaixasAPI.getCaixaPeloNome(caixa); CaixasAPI.giveCaixa(c, k, quantidade); } else { sender.sendMessage("§cEssa caixa n\u00e3o existe!"); } } else { sender.sendMessage("§cEsse jogador n\u00e3o est\u00e1 online"); } } else { sender.sendMessage("§cUse /caixagive <jogador/all> <caixa> <quantidade>."); } return false; } } Link para o comentário Compartilhar em outros sites More sharing options...
Xipsahoy Postado Maio 20, 2020 Autor Denunciar Compartilhar Postado Maio 20, 2020 Cade o módulo caixa give ksksks?? Link para o comentário Compartilhar em outros sites More sharing options...
Xipsahoy Postado Maio 20, 2020 Autor Denunciar Compartilhar Postado Maio 20, 2020 Já encontrei, vou testar se funciona, agora! Link para o comentário Compartilhar em outros sites More sharing options...
String Postado Maio 20, 2020 Denunciar Compartilhar Postado Maio 20, 2020 1 hora atrás, Xipsahoy disse: Cade o módulo caixa give ksksks?? É o método da classe CaixasAPI, só entrar nela e substituir por este que lhe passei. Só esqueci de citar, vai na classe do comando e aperta CTRL + F, cola isso aqui: p.sendMessage("§cInspecione uma quantidade válida."); E logo embaixo coloca um return true; Link para o comentário Compartilhar em outros sites More sharing options...
Xipsahoy Postado Maio 20, 2020 Autor Denunciar Compartilhar Postado Maio 20, 2020 JAR creation failed. See details for additional information. timepvp/caixasmisteriosas [in Caixa] is not on its project's build path Unable to get package fragment root: Caixa/timepvp/caixasmisteriosas/CaixasAPI.java timepvp/caixasmisteriosas [in Caixa] is not on its project's build path timepvp/caixasmisteriosas [in Caixa] is not on its project's build path Unable to get package fragment root: Caixa/timepvp/caixasmisteriosas/Main.java timepvp/caixasmisteriosas [in Caixa] is not on its project's build path timepvp/caixasmisteriosas/comandos [in Caixa] is not on its project's build path Unable to get package fragment root: Caixa/timepvp/caixasmisteriosas/comandos/Give.java timepvp/caixasmisteriosas/comandos [in Caixa] is not on its project's build path timepvp/caixasmisteriosas/objetos [in Caixa] is not on its project's build path Unable to get package fragment root: Caixa/timepvp/caixasmisteriosas/objetos/Caixa.java timepvp/caixasmisteriosas/objetos [in Caixa] is not on its project's build path Quando exporto Link para o comentário Compartilhar em outros sites More sharing options...
String Postado Maio 20, 2020 Denunciar Compartilhar Postado Maio 20, 2020 1 hora atrás, Xipsahoy disse: JAR creation failed. See details for additional information. timepvp/caixasmisteriosas [in Caixa] is not on its project's build path Unable to get package fragment root: Caixa/timepvp/caixasmisteriosas/CaixasAPI.java timepvp/caixasmisteriosas [in Caixa] is not on its project's build path timepvp/caixasmisteriosas [in Caixa] is not on its project's build path Unable to get package fragment root: Caixa/timepvp/caixasmisteriosas/Main.java timepvp/caixasmisteriosas [in Caixa] is not on its project's build path timepvp/caixasmisteriosas/comandos [in Caixa] is not on its project's build path Unable to get package fragment root: Caixa/timepvp/caixasmisteriosas/comandos/Give.java timepvp/caixasmisteriosas/comandos [in Caixa] is not on its project's build path timepvp/caixasmisteriosas/objetos [in Caixa] is not on its project's build path Unable to get package fragment root: Caixa/timepvp/caixasmisteriosas/objetos/Caixa.java timepvp/caixasmisteriosas/objetos [in Caixa] is not on its project's build path Quando exporto Consegue me chamar no Discord e me passar essa SRC, eu corrijo ela pra você. Discord: String#5764 Link para o comentário Compartilhar em outros sites More sharing options...
Xipsahoy Postado Maio 20, 2020 Autor Denunciar Compartilhar Postado Maio 20, 2020 CaixasMisteriosas.rar Eu já mandei, mas está aqui a src! 1 hora atrás, String disse: Consegue me chamar no Discord e me passar essa SRC, eu corrijo ela pra você. Discord: String#5764 Link para o comentário Compartilhar em outros sites More sharing options...
String Postado Maio 20, 2020 Denunciar Compartilhar Postado Maio 20, 2020 Problema resolvido, administração pode fechar. Att. String. Link para o comentário Compartilhar em outros sites More sharing options...
SrBlecaute Postado Maio 20, 2020 Denunciar Compartilhar Postado Maio 20, 2020 Sua dúvida foi marcada como resolvida pela nossa equipe. Caso sua dúvida não tenha sido sanada, crie outro tópico. OBS: Essa mensagem é automática. Link para o comentário Compartilhar em outros sites More sharing options...
Posts Recomendados