Хостинг серверов Minecraft playvds.com
  1. Вы находитесь в русском сообществе Bukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на русский язык плагины наших собратьев из других стран.
    Dismiss Notice

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

Discussion in 'Разработка плагинов для новичков' started by ShaGTF, Nov 15, 2014.

  1. Автор темы
    ShaGTF

    ShaGTF Активный участник Пользователь

    Trophy Points:
    68
    Имя в Minecraft:
    CoolShaGGy
    Доброго дня! Опять же, перейду сразу к делу:
    Code:
    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:
     
  2. Хостинг MineCraft
    <
  3. serega6531

    serega6531 Старожил Девелопер Пользователь

    Trophy Points:
    173
    Skype:
    shkurovs
    В OnEnable зачем save?
    FileConfiguration содержит полученные объекты в момент создания конфига. Для перезагрузки и нужно использовать reloadConfig.
     
  4. Автор темы
    ShaGTF

    ShaGTF Активный участник Пользователь

    Trophy Points:
    68
    Имя в Minecraft:
    CoolShaGGy
    Убрал, убрал. Мой недочет :/
    Так что делать с моей проблемской?
     
  5. Code

    Code Старожил Пользователь

    Trophy Points:
    123
    Имя в Minecraft:
    _Gizmo
    нафига тебе коины из конфига брать? у тебя же хешмап есть.
     
  6. Автор темы
    ShaGTF

    ShaGTF Активный участник Пользователь

    Trophy Points:
    68
    Имя в Minecraft:
    CoolShaGGy
    Тогда как взять монеты из HashMap?
     
  7. serega6531

    serega6531 Старожил Девелопер Пользователь

    Trophy Points:
    173
    Skype:
    shkurovs
    money.get(UUID), как ни странно.
     
  8. Hilgert

    Hilgert Старожил Пользователь

    Trophy Points:
    123
    Skype:
    mixa2258
    Имя в Minecraft:
    Hilgert
    public void configReload(){
    config = YamlConfiguration.loadConfiguration(new File(getDataFolder(), "config.yml"));
    }
     
    Last edited: Nov 15, 2014

Share This Page