MaTeeUs! Postado Abril 9, 2020 Denunciar Compartilhar Postado Abril 9, 2020 (editado) Olá, pessoal, sou iniciante em programação Java Plugin, e estou fazendo um plugin de caixa misteriosa pra 1.5.2 Nos meus testes, na hora de criar a caixa misteriosa com base na config.yml ele da um erro, que passei o dia todo tentando resolver, se alguem conseguir me ajudar é humilde: esses sap os códigos que aparecem no erro: Metodos.java package com.baiano.CM; import java.util.ArrayList; import java.util.List; import org.bukkit.Bukkit; import org.bukkit.command.ConsoleCommandSender; import org.bukkit.enchantments.Enchantment; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.ItemMeta; public class Metodos { protected static CaixaMisteriosa plugin = (CaixaMisteriosa)Bukkit.getPluginManager().getPlugin("CaixaMisteriosa"); public static String prefix = "§4§l[§cCaixa Misteriosa§4§]§7 "; @SuppressWarnings("unchecked") public static ItemStack caixaComum() { ItemStack caixa = new ItemStack(plugin.getConfig().getInt("caixas.caixa_comum.id")); caixa.getItemMeta().setDisplayName((String)plugin.getConfig().getString("caixas.caixa_comum.name").replace("&", "§")); List<String> lore = new ArrayList<String>(); lore = (List<String>)plugin.getConfig().getList("caixas.caixa_comum.lore"); for (String string : lore) { string.replace("&", "§"); } caixa.getItemMeta().setLore(lore); return caixa; } @SuppressWarnings("unchecked") public static ItemStack caixaAvancada() { ItemStack caixa = new ItemStack(plugin.getConfig().getInt("caixas.caixa_avancada.id")); ItemMeta meta = caixa.getItemMeta(); meta.setDisplayName(plugin.getConfig().getString("caixas.caixa_avancada.name").replace("&", "§")); List<String> lore = new ArrayList<String>(); lore = (List<String>)plugin.getConfig().getList("caixas.caixa_avancada.lore"); for (String string : lore) { string.replace("&", "§"); } meta.setLore(lore); return caixa; } @SuppressWarnings("unchecked") public static ItemStack caixaEpica() { ItemStack caixa = new ItemStack(plugin.getConfig().getInt("caixas.caixa_epica.id")); ItemMeta meta = caixa.getItemMeta(); meta.setDisplayName(plugin.getConfig().getString("caixas.caixa_epica.name").replace("&", "§")); List<String> lore = new ArrayList<String>(); lore = (List<String>)plugin.getConfig().getList("caixas.caixa_epica.lore"); for (String string : lore) { string.replace("&", "§"); } meta.setLore(lore); return caixa; } @SuppressWarnings("unchecked") public static ItemStack caixaMN() { ItemStack caixa = new ItemStack(plugin.getConfig().getInt("caixas.caixa_mn.id")); ItemMeta meta = caixa.getItemMeta(); meta.setDisplayName(plugin.getConfig().getString("caixas.caixa_mn.name").replace("&", "§")); List<String> lore = new ArrayList<String>(); lore = (List<String>)plugin.getConfig().getList("caixas.caixa_mn.lore"); for (String string : lore) { string.replace("&", "§"); } meta.setLore(lore); return caixa; } @SuppressWarnings("unchecked") public static ArrayList<ItemStack> criarItens(String nome) { ArrayList<ItemStack> itens = new ArrayList<ItemStack>(); List<String> lore = new ArrayList<String>(); try { String linha = plugin.getConfig().getString("caixas." + nome + ".itens"); int i = 1; while(linha != null) { itens.add(new ItemStack(plugin.getConfig().getInt("caixas." + nome + ".itens.item_" + i + ".id"))); lore = (List<String>) plugin.getConfig().getList("caixas." + nome + ".itens.item_" + i + ".lore"); for (String string : lore) { string.replace("&", "§"); } itens.get(i).getItemMeta().setLore(lore); itens.get(i).getItemMeta().setDisplayName(plugin.getConfig().getString("caixas." + nome + ".itens.item_" + i + ".name")); ArrayList<Encantamentos> enchants = getEncantamentos("caixas." + nome + ".itens.item_" + i); addEncantamentos(itens.get(i), enchants); String command = plugin.getConfig().getString("caixas." + nome + ".itens.item_" + i + "command"); if(command != null) { executeCommand("/" + command); } i++; } }catch(Exception e) { } return itens; } public static ArrayList<Encantamentos> getEncantamentos(String path) { String linha = plugin.getConfig().getString(path + ".enchants"); String[] parts = linha.split("-"); ArrayList<Encantamentos> enchants = new ArrayList<Encantamentos>(); for (int i = 0; i < parts.length; i = i + 2) { enchants.add(new Encantamentos(parts[i], Integer.parseInt(parts[i + 1]))); } return enchants; } public static void addEncantamentos(ItemStack item, ArrayList<Encantamentos> enchants) { for (int i = 0; i < enchants.size(); i++) { if(enchants.get(i).getNome().equalsIgnoreCase("sharpness")) { item.addEnchantment(Enchantment.DAMAGE_ALL, enchants.get(i).getNivel()); } if(enchants.get(i).getNome().equalsIgnoreCase("unbreaking")) { item.addEnchantment(Enchantment.DURABILITY, enchants.get(i).getNivel()); } if(enchants.get(i).getNome().equalsIgnoreCase("fireaspect")) { item.addEnchantment(Enchantment.FIRE_ASPECT, enchants.get(i).getNivel()); } if(enchants.get(i).getNome().equalsIgnoreCase("protection")) { item.addEnchantment(Enchantment.PROTECTION_ENVIRONMENTAL, enchants.get(i).getNivel()); } if(enchants.get(i).getNome().equalsIgnoreCase("silktouch")) { item.addEnchantment(Enchantment.SILK_TOUCH, enchants.get(i).getNivel()); } if(enchants.get(i).getNome().equalsIgnoreCase("efficiency")) { item.addEnchantment(Enchantment.DIG_SPEED, enchants.get(i).getNivel()); } if(enchants.get(i).getNome().equalsIgnoreCase("looting")) { item.addEnchantment(Enchantment.LOOT_BONUS_MOBS, enchants.get(i).getNivel()); } if(enchants.get(i).getNome().equalsIgnoreCase("fortune")) { item.addEnchantment(Enchantment.LOOT_BONUS_BLOCKS, enchants.get(i).getNivel()); } if(enchants.get(i).getNome().equalsIgnoreCase("knockback")) { item.addEnchantment(Enchantment.KNOCKBACK, enchants.get(i).getNivel()); } if(enchants.get(i).getNome().equalsIgnoreCase("thorns")) { item.addEnchantment(Enchantment.THORNS, enchants.get(i).getNivel()); } if(enchants.get(i).getNome().equalsIgnoreCase("featherfalling")) { item.addEnchantment(Enchantment.PROTECTION_FALL, enchants.get(i).getNivel()); } if(enchants.get(i).getNome().equalsIgnoreCase("power")) { item.addEnchantment(Enchantment.ARROW_DAMAGE, enchants.get(i).getNivel()); } if(enchants.get(i).getNome().equalsIgnoreCase("fire")) { item.addEnchantment(Enchantment.ARROW_FIRE, enchants.get(i).getNivel()); } if(enchants.get(i).getNome().equalsIgnoreCase("impact")) { item.addEnchantment(Enchantment.ARROW_KNOCKBACK, enchants.get(i).getNivel()); } if(enchants.get(i).getNome().equalsIgnoreCase("infinity")) { item.addEnchantment(Enchantment.ARROW_INFINITE, enchants.get(i).getNivel()); } if(enchants.get(i).getNome().equalsIgnoreCase("fireprotection")) { item.addEnchantment(Enchantment.PROTECTION_FIRE, enchants.get(i).getNivel()); } if(enchants.get(i).getNome().equalsIgnoreCase("blastprotection")) { item.addEnchantment(Enchantment.PROTECTION_EXPLOSIONS, enchants.get(i).getNivel()); } if(enchants.get(i).getNome().equalsIgnoreCase("projectprotection")) { item.addEnchantment(Enchantment.PROTECTION_PROJECTILE, enchants.get(i).getNivel()); } } } public static void executeCommand(String command) { ConsoleCommandSender executor = Bukkit.getServer().getConsoleSender(); Bukkit.dispatchCommand(executor, command); } } Comandos.java: package com.baiano.CM; import org.bukkit.Bukkit; import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import org.bukkit.inventory.Inventory; import org.bukkit.inventory.ItemStack; public class Comandos implements CommandExecutor { public static String prefix = "§4§l[§cCaixa Misteriosa§4§]§7 "; public static CaixaMisteriosa plugin = (CaixaMisteriosa)Bukkit.getPluginManager().getPlugin("CaixaMisteriosa"); public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { if(command.getName().equalsIgnoreCase("caixamisteriosa")) { if(sender.hasPermission("caixamisteriosa.admin")) { if(args.length == 0) { sender.sendMessage(prefix + "§cUso correto: /caixamisteriosa give <nick> <tier> <quantidade>"); return true; }else { if(Bukkit.getPlayerExact(args[1]) == null) { sender.sendMessage(prefix + "§cPlayer nao encontrado"); return true; }else { if(Integer.parseInt(args[2]) > 0 && Integer.parseInt(args[2]) < 5) { ItemStack caixa = null; Player player = Bukkit.getPlayerExact(args[1]); Inventory inv = player.getInventory(); if(Integer.parseInt(args[2]) == 1) { caixa = Metodos.caixaComum(); caixa.setAmount(Integer.parseInt(args[3])); inv.addItem(caixa); }else if(Integer.parseInt(args[2]) == 2){ caixa = Metodos.caixaAvancada(); caixa.setAmount(Integer.parseInt(args[3])); inv.addItem(caixa); }else if(Integer.parseInt(args[2]) == 3) { caixa = Metodos.caixaEpica(); caixa.setAmount(Integer.parseInt(args[3])); inv.addItem(caixa); }else if(Integer.parseInt(args[2]) == 4) { caixa = Metodos.caixaMN(); caixa.setAmount(Integer.parseInt(args[3])); inv.addItem(caixa); } }else { sender.sendMessage(prefix + "§cTier incorreto"); sender.sendMessage(""); sender.sendMessage(prefix + "1 - Comum"); sender.sendMessage(prefix + "2 - Avancada"); sender.sendMessage(prefix + "3 - Epica"); sender.sendMessage(prefix + "4 - MN"); sender.sendMessage(""); } } } }else { sender.sendMessage(prefix + "§cVoce nao possui permissao"); return true; } } return false; } } e essa é a config q to usando pra testar o plugin caixas: caixa_comum: name:'&cCaixa Misteriosa &7COMUM' id:54 lore: -'&e- Rolete e ganhe itens' itens: item_1: id:1 lore: -'&7ITEM TESTE' enchants:'unbreaking-3' command:'' caixa_avancada: name:'&cCaixa Misteriosa &7AVANCADA' id:130 lore: -'&e- Rolete e ganhe itens' itens: item_1: id:1 lore: -'&7ITEM TESTE' enchants:'unbreaking-3' command:'' caixa_epica: name:'&cCaixa Misteriosa &7EPICA' id:120 lore: -'&e- Rolete e ganhe itens' itens: item_1: id:1 lore: -'&7ITEM TESTE' enchants:'unbreaking-3' command:'' caixa_mn: name:'&cCaixa Misteriosa &7MN' id:123 lore: -'&e- Rolete e ganhe itens' itens: item_1: id:1 lore: -'&7ITEM TESTE' enchants:'unbreaking-3' command:'' eu ja fiz plugin na 1.8 e n tive problemas com isso, mas quando precisei fazer na 1.5.2 deu esses problemas se alguem puder me ajudar, agradeço muito a print do console do servidor esta em anexo Editado Abril 9, 2020 por MaTeeUs! colocar a imagem em anexo Link para o comentário Compartilhar em outros sites More sharing options...
SrBlecaute Postado Abril 9, 2020 Denunciar Compartilhar Postado Abril 9, 2020 Caused by: java.lang.NullPointerException: traduzindo seu código ta dando erro na classe Metodos na linha 19 também tem algo errado no yml Link para o comentário Compartilhar em outros sites More sharing options...
TheGeneX Postado Abril 9, 2020 Denunciar Compartilhar Postado Abril 9, 2020 Tem algo que não ta na config e tá retornando null. Link para o comentário Compartilhar em outros sites More sharing options...
MaTeeUs! Postado Abril 10, 2020 Autor Denunciar Compartilhar Postado Abril 10, 2020 1 hora atrás, SrBlecaute disse: Caused by: java.lang.NullPointerException: traduzindo seu código ta dando erro na classe Metodos na linha 19 também tem algo errado no yml SIm, isso eu sei, mas n consigo achar o q, ja revisei o código, e me deu raiva ja 1 hora atrás, TheGeneX disse: Tem algo que não ta na config e tá retornando null. Se tem alguma string vazia - ' ' ele retorna null? Link para o comentário Compartilhar em outros sites More sharing options...
SrBlecaute Postado Abril 10, 2020 Denunciar Compartilhar Postado Abril 10, 2020 o erro ta na yml procura ajeita o formato deixa tudo certo, ele fala que ta na coluna 9 linha 5 Link para o comentário Compartilhar em outros sites More sharing options...
MaTeeUs! Postado Abril 10, 2020 Autor Denunciar Compartilhar Postado Abril 10, 2020 24 minutos atrás, SrBlecaute disse: o erro ta na yml procura ajeita o formato deixa tudo certo, ele fala que ta na coluna 9 linha 5 pois entao, eu fiz isso, mas ja to ficando perdido. obrigado Link para o comentário Compartilhar em outros sites More sharing options...
rubenlousada11 Postado Abril 10, 2020 Denunciar Compartilhar Postado Abril 10, 2020 (editado) Editado Abril 10, 2020 por rubenlousada11 Link para o comentário Compartilhar em outros sites More sharing options...
iHuck Postado Abril 19, 2020 Denunciar Compartilhar Postado Abril 19, 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