Resolvido [Ajuda] Soma de valores em config.

Discussão em 'Resolvidos' iniciado por WizardlyBump17, 22 Agosto 2018.

  1. WizardlyBump17
    Offline

    WizardlyBump17 Membro Ativo

    Afiliado:
    11 Março 2018
    Mensagens:
    758
    Sexo:
    Masculino
    Avaliações:
    +224 / -2
    Apelido no Minecraft:
    WizardlyBump17
    Codigos:

    Código (Forge Crash):
    package w.testes.xp;

    import w.testes.Config;

    public class XP {
     
        public void setXp(String nome, int valor) {
            Config.XP.set("XP." + nome + ".xp", valor);
            Config.XP.saveConfig();
        }
     

        public void addXp(String nome, int valor) {
            Config.XP.set("XP." + nome + ".xp", "XP." + nome + ".xp" + valor);
            Config.XP.saveConfig();
        }
     
        public void tirarXp(String nome) {
            Config.XP.set("XP." + nome + ".xp", 0);
            Config.XP.saveConfig();
        }
    }

    Código (Forge Crash):
    package w.testes;

    import org.bukkit.Bukkit;
    import org.bukkit.event.EventHandler;
    import org.bukkit.event.Listener;
    import org.bukkit.event.player.PlayerJoinEvent;
    import org.bukkit.plugin.Plugin;
    import org.bukkit.plugin.java.JavaPlugin;

    import w.testes.xp.XP;
    import w.testes.xp.XPComando;

    public class Main extends JavaPlugin implements Listener {
     
        private static JavaPlugin java;
        private static Plugin pl;
     
        public static JavaPlugin getJava() {
            return java;
        }
     
        public static Plugin getPl() {
            return pl;
        }
     
        XP xp = new XP();
     
        public void onEnable() {
         
            java = this;
            pl = this;
            Config.XP.saveDefaultConfig();
     
            ComandoRegistrar();
            Bukkit.getServer().getPluginManager().registerEvents(this, this);
     
        }
     
        public void onDisable() {
        }
       //Não me julguem por colocar um evento na main sendo que eu podia criar uma classe para ele
        @EventHandler
        public void onJoin(PlayerJoinEvent e) {
            Config.XP.set(e.getPlayer().getName(), Config.XP.getString("XP." + e.getPlayer().getName() + ".xp"));
        }
     
        public void ComandoRegistrar() {
            getCommand("xp").setExecutor(new XPComando());
        }
    }

    Código (Forge Crash):
    package w.testes.xp;

    import org.bukkit.Bukkit;
    import org.bukkit.command.Command;
    import org.bukkit.command.CommandExecutor;
    import org.bukkit.command.CommandSender;
    import org.bukkit.entity.Player;

    import w.testes.Config;

    public class XPComando implements CommandExecutor {

        XP xp = new XP();

        @Override
        public boolean onCommand(CommandSender sender, Command cmd, String lbl, String[] args) {
            Player p = (Player)sender;
            if(cmd.getName().equalsIgnoreCase("xp")) {
                if(p.hasPermission("wtestes.xp.ver")) {
                    p.sendMessage("§6Seu XP é de " + Config.XP.getString("XP." + p.getName() + ".xp") + " !");
                } else {
                    p.sendMessage("§cVocê não tem permissão para ver o seu xp!");
                }
             
                if(p.hasPermission("wtestes.xp.admin")) {
                    if(args.length == 0) {
                        p.sendMessage("§6Use /xp (set, add, tirar)");
                    } else {
                        if(args.length > 0) {
                            if(args[0].equalsIgnoreCase("set")) {
                                String nome = args[1];
                                int valor = Integer.valueOf(args[2]);
                                if(Config.XP.contains("XP." + nome)) {
                                xp.setXp(nome, valor);
                                p.sendMessage("§aSucesso!");
                            } else {
                                    p.sendMessage("§4jogador inexistente!");
                                    p.sendMessage("Criando uma conta para ele...");
                                    Config.XP.set("XP." + nome + ".xp", valor);
                                }
                            }
                            if(args[0].equalsIgnoreCase("add")) {
                                String nome = args[1];
                                int valor = Integer.valueOf(args[2]);
                                if(Config.XP.contains("XP." + nome)) {
                                    xp.addXp(nome, valor);
                                    p.sendMessage("§aSucesso!");
                                } else {
                                    p.sendMessage("§4jogador inexistente!");
                                    p.sendMessage("Criando uma conta para ele...");
                                    Config.XP.set("XP." + nome + ".xp", valor);
                                }
                            }
                            if(args[0].equalsIgnoreCase("tirar")) {
                                String nome = args[1];
                                if(Config.XP.contains("XP." + nome)) {
                                    xp.tirarXp(nome);
                                    p.sendMessage("§aSucesso!");
                                } else {
                                    p.sendMessage("§4jogador inexistente!");
                                    p.sendMessage("Criando uma conta para ele...");
                                    Config.XP.set("XP." + nome + ".xp", 0);
                                }
                            }
                        }
                    }
                }
            }
         
            return false;
        }
    }
     

    Código (Forge Crash):
    package w.testes;

    public class Config {
       
        public static T_Config XP = new T_Config(Main.getJava(), "xp.yml");

    }
     

    Código (Forge Crash):
    package w.testes;

    import java.io.File;
    import java.io.IOException;
    import java.util.List;
    import java.util.Map;
    import org.bukkit.configuration.file.YamlConfiguration;
    import org.bukkit.plugin.java.JavaPlugin;
    public class T_Config {
        public T_Config(JavaPlugin plugin, String nome) {
            this.plugin = plugin;
            setName(nome);
            reloadConfig();
        }
        private JavaPlugin plugin;
        private String name;
        private File file;
        public JavaPlugin getPlugin() {
            return plugin;
        }
        public void setPlugin(JavaPlugin plugin) {
            this.plugin = plugin;
        }
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public File getFile() {
            return file;
        }
        public YamlConfiguration getConfig() {
            return config;
        }
        private YamlConfiguration config;
        public void saveConfig() {
            try {
                getConfig().save(getFile());
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        public void saveDefault() {
            getConfig().options().copyDefaults(true);
        }
        public void saveDefaultConfig() {
            if (!(existeConfig())) {
                getPlugin().saveResource(getName(), false);
                reloadConfig();
            } else {
                return;
            }
        }
        public void reloadConfig() {
            file = new File(getPlugin().getDataFolder(),getName());
            config = YamlConfiguration.loadConfiguration(getFile());
        }
        public void deleteConfig() {
            getFile().delete();
        }
        public boolean existeConfig() {
            return getFile().exists();
        }
        public String getString(String path) {
            return getConfig().getString(path);
        }
        public int getInt(String path) {
            return getConfig().getInt(path);
        }
        public boolean getBoolean(String path) {
            return getConfig().getBoolean(path);
        }
        public double getDouble(String path) {
            return getConfig().getDouble(path);
        }
        public List<?> getList(String path){
            return getConfig().getList(path);
        }
        public long getLong(String path) {
            return getConfig().getLong(path);
        }
        public Object get(String path) {
            return getConfig().get(path);
        }
        public List<Map<?, ?>> getMapList(String path) {
            return getConfig().getMapList(path);
        }
        public List<String> getStringList(String path){
            return getConfig().getStringList(path);
        }
        public boolean contains(String path) {
            return getConfig().contains(path);
        }
        public void set(String path, Object value) {
            getConfig().set(path, value);
        }
    }

    Todo (ou quase todo) conteudo dessas classes, foram feitas quase igualmente ao tutorial do THG Dev, no tutorial de plugins de kit pvp (mais especificamente o ep2 de kit pvp)

    Quem puder me falar o erro, to aceitando
     
    Última edição: 22 Agosto 2018
  2. Lucas_Gamer13
    Offline

    Lucas_Gamer13 Veterano Veterano VIP Sabotador.com VIP Sabotador.com VIP Industrial

    Afiliado:
    17 Novembro 2015
    Mensagens:
    1,725
    Sexo:
    Masculino
    Avaliações:
    +1,619 / -0
    Apelido no Minecraft:
    Lucas_gamer13
    Que erro? Poderia dar mais detalhes? Como por exemplo o log?
     
  3. WizardlyBump17
    Offline

    WizardlyBump17 Membro Ativo

    Afiliado:
    11 Março 2018
    Mensagens:
    758
    Sexo:
    Masculino
    Avaliações:
    +224 / -2
    Apelido no Minecraft:
    WizardlyBump17
  4. Lucas_Gamer13
    Offline

    Lucas_Gamer13 Veterano Veterano VIP Sabotador.com VIP Sabotador.com VIP Industrial

    Afiliado:
    17 Novembro 2015
    Mensagens:
    1,725
    Sexo:
    Masculino
    Avaliações:
    +1,619 / -0
    Apelido no Minecraft:
    Lucas_gamer13
  5. WizardlyBump17
    Offline

    WizardlyBump17 Membro Ativo

    Afiliado:
    11 Março 2018
    Mensagens:
    758
    Sexo:
    Masculino
    Avaliações:
    +224 / -2
    Apelido no Minecraft:
    WizardlyBump17
    Topico atualizado, T_Config.java e Config.java
    --- Post duplo mesclado, 22 Agosto 2018, Data da postagem original 22 Agosto 2018 ---
    [Ajuda] Soma de valores em config. | GameMods
     
  6. Cael
    Offline

    Cael Veterano Veterano VIP Sabotador.com VIP Sabotador.com Ex-Staff

    Afiliado:
    8 Setembro 2014
    Mensagens:
    1,267
    Avaliações:
    +1,777 / -4
    Apelido no Minecraft:
    Cael
    [Kinda off-topic]Uma dica: para o seu bem e o bem de todos ao seu redor, não usa lightshot pls
    --- Post duplo mesclado, 26 Agosto 2018, Data da postagem original 26 Agosto 2018 ---
    E pela bilionésima vez, não :facepalm: usa :facepalm: config :facepalm: pra :facepalm: salvar :facepalm: dados
    --- Post duplo mesclado, 26 Agosto 2018 ---
    E quando for salvar dados de jogador (preferencialmente em uma database de verdade), SEMPRE use a uuid e não o nome
     
    • Gostei Gostei x 1
  7. Duyzee
    Offline

    Duyzee Membro Conhecido VIP Sabotador.com VIP Sabotador.com

    Afiliado:
    28 Fevereiro 2017
    Mensagens:
    714
    Sexo:
    Feminino
    Avaliações:
    +492 / -1
    Apelido no Minecraft:
    Duyzee
    Isso não é o log '-' isso dai é o jogo + o arquivo YML q-q
    e como o próprio comando diz, você está setando a experiência no jogador e não ADICIONANDO.
    Ex: /xp add Kaljak_Sirah1 1 - nesse caso, se eu tiver com XP: 10, vai adicionar mais um nivel de XP (vai ficar 11 de XP pra mim)
    setando o XP: /xp set Kaljak_Sirah1 0 - nesse caso, se eu tiver com XP 11, ele vai me setar pro XP 0.
     
  8. WizardlyBump17
    Offline

    WizardlyBump17 Membro Ativo

    Afiliado:
    11 Março 2018
    Mensagens:
    758
    Sexo:
    Masculino
    Avaliações:
    +224 / -2
    Apelido no Minecraft:
    WizardlyBump17
    Cara, quando eu dou /xp add WizardlyBump17 1 ao inves de estar adicionando 1 de xp esta setando
     
  9. Gabriel8579
    Offline

    Gabriel8579 Veterano Veterano VIP Sabotador.com VIP Sabotador.com

    Afiliado:
    18 Janeiro 2016
    Mensagens:
    438
    Sexo:
    Masculino
    Avaliações:
    +253 / -1
    Apelido no Minecraft:
    Gabriel8579
    Para você acrescentar um valor, você precisa saber o valor antigo, então:

    Código (Forge Crash):
    public void addXp(String nome, int valor) {
            valor += Config.XP.getInt("XP." + nome + ".xp"); //Soma o valor passado por parâmero com o já existente da config
            Config.XP.set("XP." + nome + ".xp", "XP." + nome + ".xp" + valor);
            Config.XP.saveConfig();
        }
     
     
    • Útil Útil x 1
  10. WizardlyBump17
    Offline

    WizardlyBump17 Membro Ativo

    Afiliado:
    11 Março 2018
    Mensagens:
    758
    Sexo:
    Masculino
    Avaliações:
    +224 / -2
    Apelido no Minecraft:
    WizardlyBump17
    valeu
     

Compartilhe esta Página