Kwath Postado Outubro 10, 2017 Denunciar Compartilhar Postado Outubro 10, 2017 package me.tentar.gui; import org.bukkit.Bukkit; import org.bukkit.Material; import org.bukkit.entity.Player; import org.bukkit.inventory.Inventory; public class GUI { Main m; public GUI(Main main) { m = main; } @SuppressWarnings("deprecation") public void guiP(Player jogador) { String nomeInv = m.getConfig().getString("nomeInv").replace("&", "§"); int tamanhoInv = m.getConfig().getInt("tamanhoInv"); Inventory invP = Bukkit.createInventory(null, tamanhoInv, nomeInv); for (int i = 1; i <= tamanhoInv; i++ ) { if (m.getConfig().getConfigurationSection("slots." + i).getKeys(false) != null) { int id = m.getConfig().getInt("slots." + i + ".id"); short data = (short) m.getConfig().getInt("slots." + i + ".data"); String nome = m.getConfig().getString("slots." + i + ".nome"); invP.setItem(i, Main.novoItem(nome, Material.getMaterial(id), data)); } else { continue; } } } } Olá, então estou com uma dúvida, estou fazendo gui configurável só que no momento não estou conseguindo, já tentei de vários jeitos/formas, e sempre chego ao mesmo erro. O código da classe está acima. 10.10 15:28:22 [server] INFO Caused by: java.lang.NullPointerException 10.10 15:28:22 [server] INFO at me.tentar.gui.GUI.guiP(GUI.java:24) ~[?:?] Linha: 24 if (m.getConfig().getConfigurationSection("slots." + i).getKeys(false) != null) { http://prntscr.com/gvqw0l Se poder me ajudar agradeço! Link para o comentário Compartilhar em outros sites More sharing options...
jeta Postado Outubro 10, 2017 Denunciar Compartilhar Postado Outubro 10, 2017 (editado) tenta desse jeito aqui, o jeito antigo você tava verificando se existia a section "slots.1", sendo que a section é apenas "slots" m.getConfig().getConfigurationSection("slots").getKeys(false).forEach(path -> { int id = m.getConfig().getInt("slots." + path + ".id"); short data = (short) m.getConfig().getInt("slots." + path + ".data"); String nome = m.getConfig().getString("slots." + path + ".nome"); invP.setItem(Integer.parseInt(path), Main.novoItem(nome, Material.getMaterial(id), data)); }); Editado Outubro 10, 2017 por jeta Link para o comentário Compartilhar em outros sites More sharing options...
zAth Postado Outubro 10, 2017 Denunciar Compartilhar Postado Outubro 10, 2017 Você iniciou essa variável m? Passa sua main. Link para o comentário Compartilhar em outros sites More sharing options...
jeta Postado Outubro 10, 2017 Denunciar Compartilhar Postado Outubro 10, 2017 você instanciou a classe GUI na main? Link para o comentário Compartilhar em outros sites More sharing options...
Kwath Postado Outubro 10, 2017 Autor Denunciar Compartilhar Postado Outubro 10, 2017 Você iniciou essa variável m? Passa sua main. package me.tentar.gui; import java.io.File; import org.bukkit.Bukkit; import org.bukkit.Material; import org.bukkit.configuration.file.FileConfiguration; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.ItemMeta; import org.bukkit.plugin.java.JavaPlugin; public class Main extends JavaPlugin { public FileConfiguration config; public File cfile; private GUI g; @Override public void onEnable() { Bukkit.getConsoleSender().sendMessage("§aIniciando"); rCmds(); g = new GUI(this); config = getConfig(); config.options().copyDefaults(true); cfile = new File(getDataFolder(), "config.yml"); if (!new File(getDataFolder(), "config.yml").exists()) { saveDefaultConfig(); } } @Override public void onDisable() { Bukkit.getConsoleSender().sendMessage("§cDesligando"); } public void rCmds() { getCommand("testar").setExecutor(new Comando(this)); } public GUI getGUI() { return g; } public static ItemStack novoItem(String nome, Material material, short data) { ItemStack item = new ItemStack(material); ItemMeta meta = item.getItemMeta(); meta.setDisplayName(nome); item.setItemMeta(meta); return item; } } você instanciou a classe GUI na main? Sim ^^ Link para o comentário Compartilhar em outros sites More sharing options...
LeoT Postado Outubro 10, 2017 Denunciar Compartilhar Postado Outubro 10, 2017 Não sei se pode resolver mas tenta mudar a linha 24 pra: if(m.getConfig().contains("slots." + i)) Link para o comentário Compartilhar em outros sites More sharing options...
jeta Postado Outubro 10, 2017 Denunciar Compartilhar Postado Outubro 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
Kwath
package me.tentar.gui;
import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.inventory.Inventory;
public class GUI {
Main m;
public GUI(Main main) {
m = main;
}
@SuppressWarnings("deprecation")
public void guiP(Player jogador) {
String nomeInv = m.getConfig().getString("nomeInv").replace("&", "§");
int tamanhoInv = m.getConfig().getInt("tamanhoInv");
Inventory invP = Bukkit.createInventory(null, tamanhoInv, nomeInv);
for (int i = 1; i <= tamanhoInv; i++ ) {
if (m.getConfig().getConfigurationSection("slots." + i).getKeys(false) != null) {
int id = m.getConfig().getInt("slots." + i + ".id");
short data = (short) m.getConfig().getInt("slots." + i + ".data");
String nome = m.getConfig().getString("slots." + i + ".nome");
invP.setItem(i, Main.novoItem(nome, Material.getMaterial(id), data));
} else {
continue;
}
}
}
}
Olá, então estou com uma dúvida,
estou fazendo gui configurável só que no momento não estou conseguindo,
já tentei de vários jeitos/formas, e sempre chego ao mesmo erro.
O código da classe está acima.
Link para o comentário
Compartilhar em outros sites
6 respostass a esta questão
Posts Recomendados