Войти или зарегистрироваться
  • Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.

Помогите reloadConfig();

ShaGTF

Активный участник
Пользователь
Баллы
68
Имя в Minecraft
CoolShaGGy
Доброго дня! Опять же, перейду сразу к делу:
Код:
package me.ShaGTF.money;

import org.bukkit.ChatColor;
import org.bukkit.plugin.java.JavaPlugin;

import java.io.File;
import java.util.HashMap;
import java.util.UUID;

import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.configuration.file.YamlConfiguration;
import org.bukkit.entity.Creeper;
import org.bukkit.entity.Player;
import org.bukkit.entity.Zombie;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.entity.EntityDeathEvent;
import org.bukkit.event.player.PlayerJoinEvent;

public class Main_Class extends JavaPlugin implements Listener {
   
    private HashMap<UUID, Integer> money = new HashMap<>();
    FileConfiguration config;
    File cfile;
    public void onEnable() {
        getServer().getPluginManager().registerEvents(this, this);
        config = getConfig();
        config.options().copyDefaults(true);
        saveConfig();
        cfile = new File(getDataFolder(), "config.yml");
    }
   
    public void onDisable() {
      for(UUID u : money.keySet()){
            getConfig().set(u + ".Coins", money.get(u));
        }
       
        saveConfig();
    }
    public boolean onCommand(CommandSender cs, Command cmd, String string, String[] args)  {
        Player pl = (Player) cs;
        if(string.equalsIgnoreCase("balance")){
            if(cs instanceof Player){
                reloadConfig();
                pl.sendMessage(ChatColor.WHITE + "Твой баланс: " + ChatColor.GREEN + getConfig().getString(pl.getUniqueId() + ".Coins"));
        }
            }
        return false;
    }
    @EventHandler
    public void onJoin(PlayerJoinEvent e) {
        Player p = e.getPlayer();

        if (!getConfig().contains(p.getUniqueId().toString())) {
            getConfig().set(p.getUniqueId() + ".Coins", 0);
            money.put(p.getUniqueId(), 0);
        } else {
            money.put(p.getUniqueId(), getConfig().getInt(p.getUniqueId() + ".Coins"));
        }
    }

    @EventHandler
    public void onEntityDeath(EntityDeathEvent e) {
        Player p = e.getEntity().getKiller();
        if (e.getEntity() instanceof Zombie) {
            if (e.getEntity().getKiller() instanceof Player) {
                money.put(p.getUniqueId(), getConfig().getInt(p.getUniqueId() + ".Coins"));               
                giveCoins(p, 50);
                reloadConfig();
                p.sendMessage(ChatColor.WHITE + "Ты убил " + ChatColor.RED + "Зомби, " + ChatColor.WHITE + "за что получаешь: " + ChatColor.GOLD + "50 " + ChatColor.WHITE + "монет!" );
            }
        }else{
            if (e.getEntity() instanceof Creeper) {
                if (e.getEntity().getKiller() instanceof Player) {
                    money.put(p.getUniqueId(), getConfig().getInt(p.getUniqueId() + ".Coins"));
                    giveCoins(p, 150);
                    reloadConfig();
                    p.sendMessage(ChatColor.WHITE + "Ты убил " + ChatColor.RED + "Крипера, " + ChatColor.WHITE + "за что получаешь: " + ChatColor.GOLD + "150 " + ChatColor.WHITE + "монет!" );
        }
        }
        }
    }

               
    private void giveCoins(Player p, int i) {
        UUID uuid = p.getUniqueId();
        money.put(uuid, money.get(uuid) +i);
    }

    @SuppressWarnings("unused")
    private void takeCoins(Player p, int i) {
        UUID uuid = p.getUniqueId();
        money.put(uuid, money.get(uuid) -i);
        p.sendMessage("§c§l$" + i + " coins taken!");
    }

}
Вопрос таков:
Для того, чтобы узнать баланс, игрок должен получить значение в config файле, но оюновляется он только если написать /reload
reloadConfig();
cfile = YamlConfiguration.loadConfiguration(cfile);
Не помогают.
Помогите!
Спасибо C:
 
В OnEnable зачем save?
FileConfiguration содержит полученные объекты в момент создания конфига. Для перезагрузки и нужно использовать reloadConfig.
 
В OnEnable зачем save?
FileConfiguration содержит полученные объекты в момент создания конфига. Для перезагрузки и нужно использовать reloadConfig.
Убрал, убрал. Мой недочет :/
Так что делать с моей проблемской?
 
нафига тебе коины из конфига брать? у тебя же хешмап есть.
 
В OnEnable зачем save?
FileConfiguration содержит полученные объекты в момент создания конфига. Для перезагрузки и нужно использовать reloadConfig.

У меня всегда в onEnable load/save. Я так первичный конфиг создаю ;)
 
public void configReload(){
config = YamlConfiguration.loadConfiguration(new File(getDataFolder(), "config.yml"));
}
 
Последнее редактирование:

Поделиться этой страницей

Назад
Верх