Enabling a class through config.

Discussion in 'Plugin Development' started by mrdude123, Jul 29, 2015.

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

    mrdude123

    I'm trying to make a plugin that currently consists of four classes with eventhandlers. There's also a configuration. This is how it looks, basically.
    Classname1: true
    Classname2: true
    Classname3: true
    Classname4: true

    If the boolean is set to false, the class will not run, leaving that eventhandler not running.
    If the boolean is set to true, the class will run and the eventhandler will work.

    When I try to add this line of code:

    boolean SwordParry = configGetter.getConfig().getBoolean("SwordParry");

    There's no problem. But when I try to make an IF statement, the entire class starts freaking out. How can I fix this? Here's my IF statement:
    Code:
    if(SwordParry == false){
            return true;
        }
    Thanks.

    Here's my entire class if needed:
    Code:
    package me.thecerealkill3r.gcm.Mechanics;
    
    import java.util.Random;
    
    import me.thecerealkill3r.gcm.Main;
    
    import org.bukkit.ChatColor;
    import org.bukkit.Material;
    import org.bukkit.entity.Player;
    import org.bukkit.event.EventHandler;
    import org.bukkit.event.Listener;
    import org.bukkit.event.entity.EntityDamageByEntityEvent;
    import org.bukkit.event.entity.EntityDamageEvent.DamageCause;
    import org.bukkit.inventory.ItemStack;
    
    public class SwordPerry implements Listener{
        Main configGetter;
        public SwordPerry(Main plugin){
            plugin.getServer().getPluginManager().registerEvents(this, plugin);
            configGetter = plugin;
        }
       
        /*/
         * Mechanic for "parrying" the sword
         * PASSED TESTING
        /*/
       
        boolean SwordParry = configGetter.getConfig().getBoolean("SwordParry");
        if(SwordParry == false){
            return true;
        }
        @EventHandler
        public void onDamage(EntityDamageByEntityEvent e){
            e.setCancelled(false);
           
            Player attacker = (Player) e.getDamager();
            Player attacked = (Player) e.getEntity();
            ItemStack attackerweapon = attacker.getItemInHand();
            double health = attacked.getHealth();
            Random r = new Random();
            int num = r.nextInt(15);
           
            if(!(attacked instanceof Player)){
                return;
            }else{
                    if(num == 0){
                       
                    if(!(attackerweapon.getType() == (Material.DIAMOND_SWORD) || attackerweapon.getType() == (Material.IRON_SWORD))){
                        attacker.sendMessage(ChatColor.RED + "Your sword parry failed.");
                        return;
                    }else{
                       
                            attacked.setVelocity(attacked.getLocation().getDirection().multiply(-2.0));
                            attacker.sendMessage(ChatColor.GREEN + "Your sword parry was successful.");
                       
                    }
                }
               
            }
        }
       
       
       
       
       
    }
     
  2. Offline

    Ruptur

    @mrdude123
    You could not have registered the listener in the first place.
    For example:
    Code:
    boolean canRun = getBool();
    Listenr l = new ins;
    
    if (canRun) {
        registerEvent(l);
    }
    
    This way the event is only registered when if the bool is true
     
  3. Offline

    farget92

    Load boolean from config, and in stuff of event > EntityDamagebyEntityEvent
    Check if boolean is false, and if it is > return.

    Code:
        @EventHandler
        public void onDamage(EntityDamageByEntityEvent e){
    
           if(SwordParry == false)
                 return;
           
            e.setCancelled(false);
         
            Player attacker = (Player) e.getDamager();
            Player attacked = (Player) e.getEntity();
     
Thread Status:
Not open for further replies.

Share This Page