- Баллы
- 68
- Имя в Minecraft
- CoolShaGGy
Доброго дня! Опять же, перейду сразу к делу:
Вопрос таков:
Для того, чтобы узнать баланс, игрок должен получить значение в config файле, но оюновляется он только если написать /reload
reloadConfig();
cfile = YamlConfiguration.loadConfiguration(cfile);
Не помогают.
Помогите!
Спасибо C:
Код:
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:
