Ir para conteúdo
  • 0

[Resolvido] Ué que que eu fiz de errado ;-;


DEVKEWI

Pergunta

Pequeno probleminha, depois que eu seto a arena e tento executar o comando para ver as arenas em gui ele diz que nenhuma arena foi setada, de acordo com a print X9xZMii.png

 

E ele gera perfeitamente como eu queria nas arenas em stringlist

td2NHva.png

 

Código para abrir a GUI:

public static void getGUI(Player p) {
		File arenas = new File(pl().getDataFolder(), "arenas.yml");
		FileConfiguration fc = YamlConfiguration.loadConfiguration(arenas);
		Inventory inv = Bukkit.getServer().createInventory(null, getConfig().getInt("Arena.Tamanho"),
				getReplaced("Arena.Nome"));
		if (!arenas.exists()) {
			p.sendMessage(getReplaced("Arena.Inexistente"));
			return;
		}
		if (fc.getString("Arenas") == null) {
			p.sendMessage(getReplaced("Arena.Inexistente"));
			return;
		}
		for (String setArena : fc.getConfigurationSection("Arenas").getKeys(false)) {
			ItemStack i = new ItemStack(Material.getMaterial(fc.getInt("Arenas." + setArena + ".Item_ID")));
			ItemMeta m = i.getItemMeta();
			m.setDisplayName(KwMetodo.replaced(fc.getString("Arenas." + setArena + ".Nome")));
			List<String> lore = fc.getStringList("Arenas." + setArena + ".Lore");
			for (String lor : lore) {
				lores.add(replaced(lor));
			}
			m.setLore(lore);
			i.setItemMeta(m);
			inv.setItem(fc.getInt("Arenas." + setArena + ".Slot"), i);
		}
		p.openInventory(inv);
	}

Onde errei?

Link para o comentário
Compartilhar em outros sites

13 respostass a esta questão

Posts Recomendados

Me bugou ;-;

Explica de novo...

Fruta que partiu ;-;

 

Testa assim, se funcionar compare os códigos que vai entender.

 

public static void getGUI(Player p) {
        File arenas = new File(pl().getDataFolder(), "arenas.yml");
        FileConfiguration fc = YamlConfiguration.loadConfiguration(arenas);
        Inventory inv = Bukkit.getServer().createInventory(null, getConfig().getInt("Arena.Tamanho"),
                getReplaced("Arena.Nome"));
        if (!arenas.exists()) {
            p.sendMessage(getReplaced("Arena.Inexistente"));
            return;
        }
        if (fc.getString("Arena") == null) {
            p.sendMessage(getReplaced("Arena.Inexistente"));
            return;
        }
        for (String setArena : fc.getConfigurationSection("Arena").getKeys(false)) {
            ItemStack i = new ItemStack(Material.getMaterial(fc.getInt("Arena." + setArena + ".Item_ID")));
            ItemMeta m = i.getItemMeta();
            m.setDisplayName(KwMetodo.replaced(fc.getString("Arena." + setArena + ".Nome")));
            List<String> lore = fc.getStringList("Arena." + setArena + ".Lore");
            for (String lor : lore) {
                lores.add(replaced(lor));
            }
            m.setLore(lore);
            i.setItemMeta(m);
            inv.setItem(fc.getInt("Arena." + setArena + ".Slot"), i);
        }
        p.openInventory(inv);
    }
Link para o comentário
Compartilhar em outros sites

Config a Section ta "Arena" e no code "Arenas".

Arenas é outro arquivo usando o FileConfiguration

Arena é usado na config.yml

 

Está atualizando o arquivo onde está salvando as arenas depois de salva-las?

 

@Edit: Tira o openInv de dentro do for

No caso para atualizar seria isso?

try {
			fc.save(arenas);
		} catch (IOException e) {
			e.printStackTrace();
}

E o openinv não está no for ¬¬

Link para o comentário
Compartilhar em outros sites

 

Arenas é outro arquivo usando o FileConfiguration

Arena é usado na config.yml

 

No caso para atualizar seria isso?

try {
			fc.save(arenas);
		} catch (IOException e) {
			e.printStackTrace();
}
E o openinv não está no for ¬¬
Verdade, é que estou pelo celular.

 

@Topic: tem que adicionar FC.load(f); também.

Link para o comentário
Compartilhar em outros sites

Guest #angradosreis1000grau

Adiciona no seu main assim: 

public static <nome-da-classe-main> instance;

ai no onEnable poe assim:

instance = this;

No seu codigo ta assim:  

File arenas = new File(pl().getDataFolder(), "arenas.yml");

Mude para :

File arenas = new File(<nome-da-classe-main>.instance.getDataFolder(), "arenas.yml");
Link para o comentário
Compartilhar em outros sites

Arenas é outro arquivo usando o FileConfiguration

Arena é usado na config.yml

 

No caso para atualizar seria isso?

try {
			fc.save(arenas);
		} catch (IOException e) {
			e.printStackTrace();
}

E o openinv não está no for ¬¬

 

        File arenas = new File(pl().getDataFolder(), "arenas.yml");

        FileConfiguration fc = YamlConfiguration.loadConfiguration(arenas);

        for (String setArena : fc.getConfigurationSection("Arenas").getKeys(false)) {

 

Ué, olha ai, tu carrega o arenas.yml, no arena.yml está "Arena:" mas no for tu chama o "Arenas:"

Link para o comentário
Compartilhar em outros sites

        File arenas = new File(pl().getDataFolder(), "arenas.yml");

        FileConfiguration fc = YamlConfiguration.loadConfiguration(arenas);

        for (String setArena : fc.getConfigurationSection("Arenas").getKeys(false)) {

 

Ué, olha ai, tu carrega o arenas.yml, no arena.yml está "Arena:" mas no for tu chama o "Arenas:"

Me bugou ;-;

Explica de novo...

 

 

 

 

Adiciona no seu main assim: 

public static <nome-da-classe-main> instance;

ai no onEnable poe assim:

instance = this;

No seu codigo ta assim:  

File arenas = new File(pl().getDataFolder(), "arenas.yml");

Mude para :

File arenas = new File(<nome-da-classe-main>.instance.getDataFolder(), "arenas.yml");

 

Jovem criando um método de JavaPlugin não é necessário eu fazer isso acima.

Editado por Kewilleen G.
Link para o comentário
Compartilhar em outros sites

Guest #angradosreis1000grau

        File arenas = new File(pl().getDataFolder(), "arenas.yml");

        FileConfiguration fc = YamlConfiguration.loadConfiguration(arenas);

        for (String setArena : fc.getConfigurationSection("Arenas").getKeys(false)) {

 

Ué, olha ai, tu carrega o arenas.yml, no arena.yml está "Arena:" mas no for tu chama o "Arenas:"

Arena é o nome da seçao da config , arenas é o nome da config '-'

Link para o comentário
Compartilhar em outros sites

 

Fruta que partiu ;-;

 

Testa assim, se funcionar compare os códigos que vai entender.

public static void getGUI(Player p) {
        File arenas = new File(pl().getDataFolder(), "arenas.yml");
        FileConfiguration fc = YamlConfiguration.loadConfiguration(arenas);
        Inventory inv = Bukkit.getServer().createInventory(null, getConfig().getInt("Arena.Tamanho"),
                getReplaced("Arena.Nome"));
        if (!arenas.exists()) {
            p.sendMessage(getReplaced("Arena.Inexistente"));
            return;
        }
        if (fc.getString("Arena") == null) {
            p.sendMessage(getReplaced("Arena.Inexistente"));
            return;
        }
        for (String setArena : fc.getConfigurationSection("Arena").getKeys(false)) {
            ItemStack i = new ItemStack(Material.getMaterial(fc.getInt("Arena." + setArena + ".Item_ID")));
            ItemMeta m = i.getItemMeta();
            m.setDisplayName(KwMetodo.replaced(fc.getString("Arena." + setArena + ".Nome")));
            List<String> lore = fc.getStringList("Arena." + setArena + ".Lore");
            for (String lor : lore) {
                lores.add(replaced(lor));
            }
            m.setLore(lore);
            i.setItemMeta(m);
            inv.setItem(fc.getInt("Arena." + setArena + ".Slot"), i);
        }
        p.openInventory(inv);
    }

Sempre pensei que os nomes poderiam ser iguais ;-;

 

 

 

Config a Section ta "Arena" e no code "Arenas".

E você disse de primeira que o erro estava aí ;-;

Editado por Kewilleen G.
Link para o comentário
Compartilhar em outros sites

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