Ir para conteúdo
  • 0

[Duvida] Salvar HashMap em config


yLR111

Pergunta

Quero salvar uma hashmap em config

	public static ConfigApi blockconfig;
	public static Main plugin;
	HashMap<String, Integer> blocos = new HashMap<String, Integer>();
	public int count;
	
	public void onEnable() {
		plugin = this;
		Bukkit.getPluginManager().registerEvents(this, this);
		
		blockconfig = new ConfigApi("blocos.yml", this);
		
	}
	public void onDisable() {
	}
	@EventHandler
    public void onBlockBreak(BlockBreakEvent e) {
        Block b = e.getBlock();
        Player p = e.getPlayer();
        
        if(blocos.containsKey(p.getName())) {
        	blocos.put(p.getName(), ++count);
        	p.sendMessage("§eBlocos: " + blocos.get(p.getName()));
        }else {
        	blocos.put(p.getName(), 1);
        	p.sendMessage("Jogador inserido na HashMap.");
        }
        
        
	}

 

Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0

Você quer fazer um sistema que, quando o jogador quebra um bloco, salva e fica contado na config, certo?

Você pode usar este sistema, ele vai salvar sempre que o jogador for kickado, deslogar. Também vai criar uma tabela quando os jogadores logarem e não tiverem no Hashmap.
Você pode usar no onDisable(), ou uma task, para salvar todos jogadores online, assim:

 

saveBlocksAll();

 

Pode pegar a quantia que um jogador tem de blocos(o que está salvo na blocos.yml) usando:

getBlocks(player);

 

E também pode salvar um jogador, coloque true para criar uma HashMap e, false para salvar.

saveBlocks(player, false);


Este é o exemplo que criei:

OBS: usei eventos também e recomendo.

OBS: Também usei toLowerCase() para evitar jogadores com nome editado por exemplo: RBN, RBn Rbn...

OBS: Não sei se funciona, fiz rapidinho :d

@edit: esqueci de remover as hasmap, usei blocos.remove(nome);

	HashMap<String, Integer> blocos = new HashMap<String, Integer>();
	
	public void saveBlocksAll() {
		for (Player player : Bukkit.getOnlinePlayers()) {
			String nome = player.getName().toLowerCase();
			if (blocos.get(nome) > 0) {
				blockconfig.set(nome, getBlocks(player) + blocos.get(nome));
				blocos.remove(nome);
			}
		}
	}
	
	public void saveBlocks(Player player, boolean load) {
		String nome = player.getName().toLowerCase();
		if (blocos.containsKey(nome) == null && load) {
			blocos.put(nome, 1);
		}
		if (blocos.get(nome) > 0 && !load) {
			blockconfig.set(nome, getBlocks(player) + blocos.get(nome));
			blocos.remove(nome);
		}
	}
	
	public int getBlocks(Player player) {
		String nome = player.getName().toLowerCase();
		if (blockconfig.containsKey(nome) != null) {
			return blockconfig.getInt(nome);
		}
		return 0;
	}
	
	@EventHandler(priority=EventPriority.MONITOR)
	public void playerJoin(PlayerJoinEvent event) {
		saveBlocks(event.getPlayer(), true);
	}
	
	@EventHandler(priority=EventPriority.MONITOR)
	public void playerJoin(PlayerQuitEvent event) {
		saveBlocks(event.getPlayer(), false);
	}
	
	@EventHandler(priority=EventPriority.MONITOR)
	public void playerJoin(PlayerKickEvent event) {
		saveBlocks(event.getPlayer(), false);
	}

 

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

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