Ir para conteúdo

Como configuro um comando para fazer isto?


Xipsahoy

Posts Recomendados

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

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

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

1 hora atrás, Xipsahoy disse:

Cade o módulo caixa give ksksks??image.png.02933b693f080d2722a7f3ba2a05051f.png

É 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

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

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

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