Ir para conteúdo

Não consigo resolver esse erro


MaTeeUs!

Posts Recomendados

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

erro 1.png

Editado por MaTeeUs!
colocar a imagem em anexo
Link para o comentário
Compartilhar em outros sites

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

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