How to get a Boolean from the config?

Discussion in 'Plugin Development' started by nomiht, May 7, 2016.

Thread Status:
Not open for further replies.
  1. Offline

    nomiht

    Hey guys!
    Im making a war plugin for a server right now,
    it is in dutch but you dont need those texts to help me.

    my problem is,
    I cant get the booleans from the config, and than when the plugin closes I want the booleans to be saved in the config.yml. can some help me?

    this is my code:

    Code:
    package me.nomiht;
    
    import org.bukkit.command.Command;
    import org.bukkit.command.CommandSender;
    import org.bukkit.entity.Player;
    import org.bukkit.event.EventHandler;
    import org.bukkit.event.Listener;
    import org.bukkit.event.player.PlayerJoinEvent;
    import org.bukkit.plugin.PluginManager;
    import org.bukkit.plugin.java.JavaPlugin;
    
    import net.md_5.bungee.api.ChatColor;
    
    public class main extends JavaPlugin implements Listener {
    
        boolean The1The2 = getConfig().getBoolean("The1The2");
        boolean The1Dra = getConfig().getBoolean("The1Dra");
        boolean The1Zay = getConfig().getBoolean("The1Zay");
        boolean The2The1 = getConfig().getBoolean("The2The1");
        boolean The2Dra = getConfig().getBoolean("The2Dra");
        boolean The2Zay = getConfig().getBoolean("The2Zay");
        boolean DraThe1 = getConfig().getBoolean("DraThe1");
        boolean DraThe2 = getConfig().getBoolean("DraThe2");
        boolean DraZay = getConfig().getBoolean("DraZay");
        boolean ZayThe1 = getConfig().getBoolean("ZayThe1");
        boolean ZayThe2 = getConfig().getBoolean("ZayThe2");
        boolean ZayDra = getConfig().getBoolean("ZayDra");
    
        public void onEnable() {
            PluginManager pm = getServer().getPluginManager();
            pm.registerEvents(this, this);
        }
      
        public void onDisable(){
          
            getConfig().set("The1The2", The1The2);              
            getConfig().set("The1Dra", The1The2);      
            getConfig().set("The1Zay", The1The2);      
            getConfig().set("The2The1", The1The2);      
            getConfig().set("The2Dra", The1The2);      
            getConfig().set("The2Zay", The1The2);      
            getConfig().set("DraThe1", The1The2);      
            getConfig().set("DraThe2", The1The2);      
            getConfig().set("DraZay", The1The2);      
            getConfig().set("ZayThe1", The1The2);
            getConfig().set("ZayThe2", The1The2);      
            getConfig().set("ZayDra", The1The2);
          
        }
    
        public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
            Player p = (Player) sender;
    
            // Kingdoms in de server: Thegaros, Theranos, Dragonos, Zayrheria
    
            if (cmd.getName().equalsIgnoreCase("oorlog")) {
                if(p.isOp()){
                  
                }else if (p.hasPermission("kingdom.koning")) {
                    if (p.hasPermission("koning.Thegaros")) {
                        if (args.length == 0) {
                            p.sendMessage(ChatColor.GOLD + "Je bent een koning");
                            p.sendMessage(
                                    ChatColor.GOLD + "Maar je moet wel een kingdom invoeren om oorlog mee te voeren!");
                        }
                        if (args.length == 1) {
                            if (args[0].equalsIgnoreCase("Theranos")) {
                                The1The2 = true;
                            } else if (args[0].equalsIgnoreCase("Dragonos")) {
                                The1Dra = true;
                            } else if (args[0].equalsIgnoreCase("Zayrheria")) {
                                The1Zay = true;
                            }
                            p.sendMessage(ChatColor.GOLD + "Je hebt oorlog gemaakt met het kingdom: " + ChatColor.GREEN
                                    + args[0]);
                        }
                    }
                    if (p.hasPermission("koning.Theranos")) {
                        if (args.length == 0) {
                            p.sendMessage(ChatColor.GOLD + "Je bent een koning");
                            p.sendMessage(
                                    ChatColor.GOLD + "Maar je moet wel een kingdom invoeren om oorlog mee te voeren!");
                        }
                        if (args.length == 1) {
                            if (args[0].equalsIgnoreCase("Thegaros")) {
                                The2The1 = true;
                            } else if (args[0].equalsIgnoreCase("Dragonos")) {
                                The2Dra = true;
                            } else if (args[0].equalsIgnoreCase("Zayrheria")) {
                                The2Zay = true;
                            }
                            p.sendMessage(ChatColor.GOLD + "Je hebt oorlog gemaakt met het kingdom: " + ChatColor.GREEN
                                    + args[0]);
                        }
                    }
                }
                if (p.hasPermission("koning.Dragonos")) {
                    if (args.length == 0) {
                        p.sendMessage(ChatColor.GOLD + "Je bent een koning");
                        p.sendMessage(ChatColor.GOLD + "Maar je moet wel een kingdom invoeren om oorlog mee te voeren!");
                    }
                    if (args.length == 1) {
                        if (args[0].equalsIgnoreCase("Thegaros")) {
                            DraThe1 = true;
                        } else if (args[0].equalsIgnoreCase("Theranos")) {
                            DraThe2 = true;
                        } else if (args[0].equalsIgnoreCase("Zayrheria")) {
                            DraZay = true;
                        } else if (args.length == 1) {
                            p.sendMessage(ChatColor.GOLD + "Je hebt oorlog gemaakt met het kingdom: " + ChatColor.GREEN
                                    + args[0]);
                        }
                        p.sendMessage(
                                ChatColor.GOLD + "Je hebt oorlog gemaakt met het kingdom: " + ChatColor.GREEN + args[0]);
                    }
                }
                if (p.hasPermission("koning.Zayrheria")) {
                    if (args.length == 0) {
                        p.sendMessage(ChatColor.GOLD + "Je bent een koning");
                        p.sendMessage(ChatColor.GOLD + "Maar je moet wel een kingdom invoeren om oorlog mee te voeren!");
                    }
                    if (args.length == 1) {
                        if (args[0].equalsIgnoreCase("Thegaros")) {
                            ZayThe1 = true;
                        } else if (args[0].equalsIgnoreCase("Theranos")) {
                            ZayThe2 = true;
                        } else if (args[0].equalsIgnoreCase("Dragonos")) {
                            ZayDra = true;
                        } else if (args.length == 1) {
                            p.sendMessage(ChatColor.GOLD + "Je hebt oorlog gemaakt met het kingdom: " + ChatColor.GREEN
                                    + args[0]);
                        }
                        p.sendMessage(
                                ChatColor.GOLD + "Je hebt oorlog gemaakt met het kingdom: " + ChatColor.GREEN + args[0]);
                    }
                }
            } else {
                p.sendMessage(ChatColor.RED + "Je bent geen koning! Dus kan je geen oorlog aanvragen!");
            }
          
            if(The1The2 == true && The2The1 == true){
                getServer().broadcastMessage(ChatColor.GOLD + "Het kingdom Thegaros en het kingdom Theranos hebben oorlog!");
                The1The2 = false;
                The2The1 = false;
            }
            if(The1Dra == true && DraThe1 == true){
                getServer().broadcastMessage(ChatColor.GOLD + "Het kingdom Thegaros en het kingdom Dragonos hebben oorlog!");  
                The1Dra = false;
                DraThe1 = false;
            }
            if(The1Zay==true&&ZayThe1==true){
                getServer().broadcastMessage(ChatColor.GOLD + "Het kingdom Thegaros en het kingdom Zayrheria hebben oorlog!");
                The1Zay=false;
                ZayThe1=false;
            }
            if(The2Dra == true && DraThe2 == true){
                getServer().broadcastMessage(ChatColor.GOLD + "Het kingdom Theranos en het kingdom Dragonos hebben oorlog!");  
                The2Dra=false;
                DraThe2=false;
            }
            if(The2Zay == true && ZayThe2 == true){
                getServer().broadcastMessage(ChatColor.GOLD + "Het kingdom Theranos en het kingdom Zayrheria hebben oorlog!");  
                The2Zay=false;
                ZayThe2=false;
            }
            if(DraZay == true && ZayDra == true){
                getServer().broadcastMessage(ChatColor.GOLD + "Het kingdom Dragonos en het kingdom Zayrheria hebben oorlog!");  
                DraZay=false;
                ZayDra=false;
            }
              
            return false;
        }
    
        // Kingdoms in de server: Thegaros, Theranos, Dragonos, Zayrheria
      
        @EventHandler
        public void onEvent(PlayerJoinEvent e){
            Player p = e.getPlayer();
            if(p.hasPermission("kingdom.koning")){
              
                if(p.hasPermission("koning.Thegaros")){
                    if(The2The1==true){
                        p.sendMessage(ChatColor.GOLD + "De koning van het Kingdom Theranos heeft een oorlog aangevraagt tegen het kingdom Thegaros.");
                        p.sendMessage(ChatColor.GOLD + "Je kan dit verzoek accepteren door, /oorlog Theranos te doen!");
                    }
                    if(DraThe1==true){
                        p.sendMessage(ChatColor.GOLD + "De koning van het Kingdom Dragonos heeft een oorlog aangevraagt tegen het kingdom Thegaros.");
                        p.sendMessage(ChatColor.GOLD + "Je kan dit verzoek accepteren door, /oorlog Dragonos te doen!");  
                    }
                    if(ZayThe1==true){
                        p.sendMessage(ChatColor.GOLD + "De koning van het Kingdom Zayrheria heeft een oorlog aangevraagt tegen het kingdom Thegaros.");
                        p.sendMessage(ChatColor.GOLD + "Je kan dit verzoek accepteren door, /oorlog Zayrheria te doen!");  
                    }
                                          
                  
                }else if(p.hasPermission("koning.Theranos")){
                    if(The1The2==true){
                        p.sendMessage(ChatColor.GOLD + "De koning van het Kingdom Thegaros heeft een oorlog aangevraagt tegen het kingdom Theranos.");
                        p.sendMessage(ChatColor.GOLD + "Je kan dit verzoek accepteren door, /oorlog Thegaros te doen!");  
                    }
                    if(DraThe2==true){
                        p.sendMessage(ChatColor.GOLD + "De koning van het Kingdom Dragonos heeft een oorlog aangevraagt tegen het kingdom Theranos.");
                        p.sendMessage(ChatColor.GOLD + "Je kan dit verzoek accepteren door, /oorlog Dragonos te doen!");  
                    }
                    if(ZayThe2==true){
                        p.sendMessage(ChatColor.GOLD + "De koning van het Kingdom Zayrheria heeft een oorlog aangevraagt tegen het kingdom Theranos.");
                        p.sendMessage(ChatColor.GOLD + "Je kan dit verzoek accepteren door, /oorlog Zayrheria te doen!");  
                    }
              
                  
                  
                }else if(p.hasPermission("koning.Dragonos")){
                    if(The1Dra){
                        p.sendMessage(ChatColor.GOLD + "De koning van het Kingdom Thegaros heeft een oorlog aangevraagt tegen het kingdom Dragonos.");
                        p.sendMessage(ChatColor.GOLD + "Je kan dit verzoek accepteren door, /oorlog Thegaros te doen!");
                    }
                    if(The2Dra){
                        p.sendMessage(ChatColor.GOLD + "De koning van het Kingdom Theranos heeft een oorlog aangevraagt tegen het kingdom Dragonos.");
                        p.sendMessage(ChatColor.GOLD + "Je kan dit verzoek accepteren door, /oorlog Theranos te doen!");
                    }
                    if(ZayDra){
                        p.sendMessage(ChatColor.GOLD + "De koning van het Kingdom Zayrheria heeft een oorlog aangevraagt tegen het kingdom Dragonos.");
                        p.sendMessage(ChatColor.GOLD + "Je kan dit verzoek accepteren door, /oorlog Zayrheria te doen!");
                    }
                  
                }else if(p.hasPermission("koning.Zayrheria")){
                    if(The1Zay){
                        p.sendMessage(ChatColor.GOLD + "De koning van het Kingdom Thegaros heeft een oorlog aangevraagt tegen het kingdom Zayrheria.");
                        p.sendMessage(ChatColor.GOLD + "Je kan dit verzoek accepteren door, /oorlog Thegaros te doen!");
                      
                    }
                    if(The2Zay){
                        p.sendMessage(ChatColor.GOLD + "De koning van het Kingdom Theranos heeft een oorlog aangevraagt tegen het kingdom Zayrheria.");
                        p.sendMessage(ChatColor.GOLD + "Je kan dit verzoek accepteren door, /oorlog Theranos te doen!");
                    }
                    if(DraZay){
                        p.sendMessage(ChatColor.GOLD + "De koning van het Kingdom Dragonos heeft een oorlog aangevraagt tegen het kingdom Zayrheria.");
                        p.sendMessage(ChatColor.GOLD + "Je kan dit verzoek accepteren door, /oorlog Dragonos te doen!");
                    }  
                  
                }
            }
        }
      
    //    private void registerConfig(){
    //        getConfig().options().copyDefaults(true);
    //        saveConfig();
    //    }
    
    }
    and this is my Config.yml:
    Code:
    # Oorlog plugin by: nomiht
    
    The1The2: true
    The1Dra: false
    The1Zay: false
    The2The1: true
    The2Dra: false
    The2Zay: false
    DraThe1: false
    DraThe2: false
    DraZay: false
    ZayThe1: false
    ZayThe2: false
    ZayDra: false
     
    Last edited by a moderator: May 7, 2016
  2. Online

    timtower Administrator Administrator Moderator

    @nomiht Put everything config related in your onEnable or on a place where that has been called already.
     
  3. Offline

    nomiht

    and how about saving all the booleans in the config file when the plugin disables? in the onDisable?
     
  4. Online

    timtower Administrator Administrator Moderator

    Seems the best place for me.
     
  5. Offline

    MadMaxCookie

    @nomiht try this way if you mean like this.
    Code:
    public void onEnable() {
    getConfig().set("Cool", Boolean.valueOf(true));
    }
    
    public void onDisable() {
    getConfig().set("Cool", Boolean.valueOf(false));
    }
    config.yml
    Code:
    Cute: true
     
  6. Offline

    I Al Istannen

    @MadMaxCookie
    The value of is uneeded. Java converts the primitive to the Wrapper automatically. It is called "AutoBoxing".

    @nomiht
    You have the wrong chatcolor. Import the "org.bukkit" one. And yes, like timtower said move the "getConfig().getBoolean()" inside the onEnable or a method which you call from the onEnable. Also please follow Naming Conventions. The booleans are variables and should be written in camelCase with a lowercase first letter. Classes like "main" should start with an UPPERcase letter and then be written in camelCase.

    And main is a bad name for the Main class of a plugin, as multiple plugins from you might have the sane package structure and therefore the same path to the main class. The result is an error. So change the package everytime you make a new plugin or/and the name of the main class.

    In your onCommand check if the sender is a Player before casting it to one by using "sender instanceof Player", otherwise you will get a class cast exception.
    There is probably more, but this is what I saw from the first lines.

    You should seriously consider lerning Java first, as Bukkit is written in it. Also, may I ask if you watch(ed) a tutorial for Bukkit plugins?
     
  7. Offline

    WolfMage1

    I thought camel case was UPPER case first letter?
     
  8. Offline

    I Al Istannen

    @WolfMage1
    Oh, I am not sure actually (sorry).

    From Wikipedia:
    So, it seems like both is correct. Maybe there is a better definition than Wikipedia, but whatever.
     
  9. Offline

    Zombie_Striker

    @I Al Istannen@WolfMage1
    Although variable and field names are not important while coding, the convention is to have variable and field names start with a lower case letter.

    Your problem here is that you are getting a value from the config Before your plugin is even enabled. Set those values inside the onEnable.
     
  10. Offline

    Msrules123

    By this, for anyone who didn't get it, he meant lowerCamelCase, not UpperCamelCase ;)
     
    I Al Istannen and Zombie_Striker like this.
Thread Status:
Not open for further replies.

Share This Page