Ir para conteúdo

Classe para auxiliar a criação de múltiplos arquivos de configuração.


leonardosc

Posts Recomendados

Criei essa classe pra auxiliar a criação de multipolos arquivos de configuração, ela tipo que uma classe "wrapper" da FileConfiguration...

 

Classe:

 

 

package oi.tudo.bem

import java.io.File;
import java.io.IOException;

import org.bukkit.configuration.InvalidConfigurationException;
import org.bukkit.configuration.file.YamlConfiguration;
import org.bukkit.plugin.Plugin;

public class YamlConfig extends YamlConfiguration
{
 
	private File bruteFile;
	private Plugin plugin;
	
	public YamlConfig(String name, Plugin plugin)
	{
		this.plugin = plugin;

		bruteFile = new File(plugin.getDataFolder(), name.matches(".*(?i).yml$") ? name : name.concat(".yml"));

		try
		{
			if (!plugin.getDataFolder().exists())
			{
				plugin.getDataFolder().mkdir();
			}
			
			if (!bruteFile.exists())
			{
				bruteFile.createNewFile();
			}

			load(bruteFile);
		}
		catch (IOException e)
		{
			e.printStackTrace();
		}
		catch (InvalidConfigurationException e)
		{
			e.printStackTrace();
		}

	}

	public void saveDefault()
	{
		if (plugin.getResource(bruteFile.getName()) == null)
		{
			System.err.println("[" + plugin.getName() + "] Nao foi possivel salvar o arquivo");
			System.err.println("[" + plugin.getName() + "] default da config " + bruteFile.getName() + " pois o jar nao");
			System.err.println("[" + plugin.getName() + "] contem um arquivo com teste nome.");
		}
		else
		{
			plugin.saveResource(bruteFile.getName(), true);
		}
	}

	@Override
	public void set(String path, Object obj)
	{
		super.set(path, obj);
		this.save();
	}

	public void save()
	{
		try
		{
			super.save(bruteFile);
		}
		catch (IOException e)
		{
			e.printStackTrace();
		}
	}
	
	public void reload()
	{
		try
		{
			load(bruteFile);
		}
		catch (IOException e)
		{
			e.printStackTrace();
		}
		catch (InvalidConfigurationException e)
		{
			e.printStackTrace();
		}
	}

}

 

 

 

Exemplos de uso:

 

 

 

YamlConfig database = new YamlConfig("database", this);
database.set("Money", 3000);//Seta algo na config... Ele salva a config automaticamente a config, se precisar chamar o metodo .save()
database.reload();//Recarrega a config.
database.save();//Salva a config
database.saveDefault();//Salva o arquivo default (ele deve estar dentro do jar do plugin)

 

 

Editado por leonardosc
Link para o comentário
Compartilhar em outros sites

vlw, usava uma piorzinha, mais essa é bem melhor.

Obrigado, leo, <3

 

Muito Top, Mas eu uso a classe SettingsManager, só que editada a meu gosto  :p, Parabéns aí.

 

Boa, Vai ajuda mtos que ainda não sabe gg.

 

 

<3

Editado por leonardosc
Link para o comentário
Compartilhar em outros sites

Guest #angradosreis1000grau

Mto bom tutorial , ajudou bastante mas como faço para setar a variavel que vai chamar a config ? 

 

Pq isso so cria a config ne ? 

YamlConfig database = new YamlConfig("database", this);

Tipo eu quero isso : 

FileConfiguration config;

Essa é para a config padrao , como faria para sua classe? 

Link para o comentário
Compartilhar em outros sites

Mto bom tutorial , ajudou bastante mas como faço para setar a variavel que vai chamar a config ? 

 

Pq isso so cria a config ne ? 

YamlConfig database = new YamlConfig("database", this);

Tipo eu quero isso : 

FileConfiguration config;

Essa é para a config padrao , como faria para sua classe? 

 

Creio que seja só fazer assim

FileConfiguration config = new YamlConfig("database", this);// ou adicionar o cast, (FileConfiguration)

Já que YamlConfiguration é uma subclasse do FileConfiguration.

Link para o comentário
Compartilhar em outros sites

Participe da Conversa

Você pode postar agora e se cadastrar mais tarde. Se você tiver uma conta, a class='ipsType_brandedLink' href='https://gamersboard.com.br/login/' data-ipsDialog data-ipsDialog-size='medium' data-ipsDialog-title='Sign In Now'>acesse agora para postar com sua conta.
Observação: sua postagem exigirá aprovação do moderador antes de ficar visível.

Visitante
Responder

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.

Processando...
×
×
  • Criar Novo...