Search in sources :

Example 36 with Mage

use of com.elmakers.mine.bukkit.api.magic.Mage in project MagicPlugin by elBukkit.

the class MageCommandExecutor method onTabComplete.

@Override
public Collection<String> onTabComplete(CommandSender sender, String commandName, String[] args) {
    List<String> options = new ArrayList<>();
    if (args.length == 1) {
        addIfPermissible(sender, options, "Magic.commands.mage.", "add");
        addIfPermissible(sender, options, "Magic.commands.mage.", "remove");
        addIfPermissible(sender, options, "Magic.commands.mage.", "configure");
        addIfPermissible(sender, options, "Magic.commands.mage.", "describe");
        addIfPermissible(sender, options, "Magic.commands.mage.", "upgrade");
        addIfPermissible(sender, options, "Magic.commands.mage.", "getdata");
        addIfPermissible(sender, options, "Magic.commands.mage.", "setdata");
        addIfPermissible(sender, options, "Magic.commands.mage.", "check");
        addIfPermissible(sender, options, "Magic.commands.mage.", "debug");
        addIfPermissible(sender, options, "Magic.commands.mage.", "reset");
        addIfPermissible(sender, options, "Magic.commands.mage.", "unbind");
        addIfPermissible(sender, options, "Magic.commands.mage.", "activate");
        addIfPermissible(sender, options, "Magic.commands.mage.", "unlock");
        addIfPermissible(sender, options, "Magic.commands.mage.", "lock");
        addIfPermissible(sender, options, "Magic.commands.mage.", "levelspells");
        addIfPermissible(sender, options, "Magic.commands.mage.", "attribute");
    } else if (args.length == 2 && sender.hasPermission("Magic.commands.mage.others")) {
        options.addAll(api.getPlayerNames());
    }
    if (args.length == 3 || args.length == 2) {
        CommandSender target = args.length == 2 ? sender : DeprecatedUtils.getPlayer(args[1]);
        String subCommand = args[0];
        String subCommandPNode = "Magic.commands.mage." + subCommand;
        if (subCommand.equalsIgnoreCase("setdata") || subCommand.equalsIgnoreCase("getdata")) {
            if (target != null) {
                Mage mage = controller.getMage(target);
                ConfigurationSection data = mage.getData();
                options.addAll(data.getKeys(false));
            }
        }
        if (subCommand.equalsIgnoreCase("add")) {
            Collection<SpellTemplate> spellList = api.getSpellTemplates(sender.hasPermission("Magic.bypass_hidden"));
            for (SpellTemplate spell : spellList) {
                addIfPermissible(sender, options, subCommandPNode, spell.getKey(), true);
            }
            addIfPermissible(sender, options, subCommandPNode, "brush", true);
        }
        if (subCommand.equalsIgnoreCase("remove")) {
            if (target != null) {
                Mage mage = controller.getMage(target);
                MageClass mageClass = mage.getActiveClass();
                if (mageClass != null) {
                    options.addAll(mageClass.getSpells());
                }
            }
            options.add("brush");
        }
        if (subCommand.equalsIgnoreCase("configure") || subCommand.equalsIgnoreCase("describe") || subCommand.equalsIgnoreCase("upgrade")) {
            for (String key : BaseMagicProperties.PROPERTY_KEYS) {
                options.add(key);
            }
            for (String protection : api.getController().getDamageTypes()) {
                options.add("protection." + protection);
            }
        }
        if (subCommand.equalsIgnoreCase("attribute")) {
            for (String attribute : api.getController().getAttributes()) {
                options.add(attribute);
            }
        }
        if (subCommand.equalsIgnoreCase("add")) {
            Collection<SpellTemplate> spellList = api.getSpellTemplates(sender.hasPermission("Magic.bypass_hidden"));
            for (SpellTemplate spell : spellList) {
                addIfPermissible(sender, options, subCommandPNode, spell.getKey(), true);
            }
            addIfPermissible(sender, options, subCommandPNode, "brush", true);
        }
        if (args[0].equalsIgnoreCase("lock") || args[0].equalsIgnoreCase("unlock") || args[0].equalsIgnoreCase("activate")) {
            options.addAll(api.getController().getMageClassKeys());
        }
    }
    return options;
}
Also used : MageClass(com.elmakers.mine.bukkit.api.magic.MageClass) Mage(com.elmakers.mine.bukkit.api.magic.Mage) ArrayList(java.util.ArrayList) CommandSender(org.bukkit.command.CommandSender) ConfigurationSection(org.bukkit.configuration.ConfigurationSection) SpellTemplate(com.elmakers.mine.bukkit.api.spell.SpellTemplate)

Example 37 with Mage

use of com.elmakers.mine.bukkit.api.magic.Mage in project MagicPlugin by elBukkit.

the class MageCommandExecutor method onMageDebug.

public boolean onMageDebug(CommandSender sender, Player player, String[] args) {
    Mage mage = controller.getMage(player);
    if (args.length > 0) {
        try {
            int level = Integer.parseInt(args[0]);
            mage.setDebugLevel(level);
            if (level > 0) {
                mage.setDebugger(sender);
            } else {
                mage.setDebugger(null);
            }
            sender.sendMessage(ChatColor.GOLD + "Setting debug level for  " + ChatColor.AQUA + player.getDisplayName() + ChatColor.GOLD + " to " + ChatColor.GREEN + Integer.toString(level));
        } catch (Exception ex) {
            sender.sendMessage("Expecting integer, got: " + args[0]);
        }
        return true;
    }
    if (mage.getDebugLevel() > 0) {
        sender.sendMessage(ChatColor.GOLD + "Disabling debug for " + ChatColor.AQUA + player.getDisplayName());
        mage.setDebugLevel(0);
        mage.setDebugger(null);
    } else {
        sender.sendMessage(ChatColor.AQUA + "Enabling debug for " + ChatColor.AQUA + player.getDisplayName());
        mage.setDebugLevel(1);
        mage.setDebugger(sender);
    }
    return true;
}
Also used : Mage(com.elmakers.mine.bukkit.api.magic.Mage)

Example 38 with Mage

use of com.elmakers.mine.bukkit.api.magic.Mage in project MagicPlugin by elBukkit.

the class MageCommandExecutor method onMageSetData.

public boolean onMageSetData(CommandSender sender, Player player, String[] args) {
    Mage mage = controller.getMage(player);
    if (args.length == 1) {
        ConfigurationSection data = mage.getData();
        String key = args[0];
        if (!data.contains(key)) {
            sender.sendMessage(ChatColor.RED + "No data found with key " + ChatColor.AQUA + key + ChatColor.RED + " for " + ChatColor.DARK_AQUA + player.getDisplayName());
            return true;
        }
        data.set(key, null);
        sender.sendMessage(ChatColor.GOLD + "Removed data for key " + ChatColor.AQUA + key + ChatColor.GOLD + " for " + ChatColor.DARK_AQUA + player.getDisplayName());
        return true;
    }
    if (args.length != 2) {
        return false;
    }
    if (args[0].equals("*")) {
        long value = 0;
        try {
            value = Long.parseLong(args[1]);
        } catch (Exception ex) {
            sender.sendMessage(ChatColor.RED + "Cast count must be a number");
            return true;
        }
        Collection<Spell> spells = mage.getSpells();
        for (Spell spell : spells) {
            spell.setCastCount(value);
        }
        sender.sendMessage(ChatColor.GOLD + "Set all spell cast counts to " + ChatColor.AQUA + value + ChatColor.GOLD + " for " + ChatColor.DARK_AQUA + player.getDisplayName());
        return true;
    }
    Spell spell = mage.getSpell(args[0]);
    if (spell != null) {
        long value = 0;
        try {
            value = Long.parseLong(args[1]);
        } catch (Exception ex) {
            sender.sendMessage(ChatColor.RED + "Cast count must be a number");
            return true;
        }
        spell.setCastCount(value);
        sender.sendMessage(ChatColor.GOLD + "Set " + ChatColor.AQUA + spell.getName() + ChatColor.GOLD + " cast count to " + ChatColor.AQUA + value + ChatColor.GOLD + " for " + ChatColor.DARK_AQUA + player.getDisplayName());
        return true;
    }
    ConfigurationSection data = mage.getData();
    String key = args[0];
    String value = args[1];
    data.set(key, value);
    sender.sendMessage(ChatColor.GOLD + "Set " + ChatColor.AQUA + key + ChatColor.GOLD + " to " + ChatColor.AQUA + value + ChatColor.GOLD + " for " + ChatColor.DARK_AQUA + player.getDisplayName());
    return true;
}
Also used : Mage(com.elmakers.mine.bukkit.api.magic.Mage) Spell(com.elmakers.mine.bukkit.api.spell.Spell) ConfigurationSection(org.bukkit.configuration.ConfigurationSection)

Example 39 with Mage

use of com.elmakers.mine.bukkit.api.magic.Mage in project MagicPlugin by elBukkit.

the class MageCommandExecutor method onMageAdd.

public boolean onMageAdd(CommandSender sender, Player player, String[] parameters) {
    if (parameters.length < 1) {
        sender.sendMessage("Use: /mage add <spell|material> [material:data]");
        return true;
    }
    Mage mage = controller.getMage(player);
    MageClass activeClass = mage.getActiveClass();
    if (activeClass == null) {
        sender.sendMessage("Can't modify player " + player.getName());
        return true;
    }
    String spellName = parameters[0];
    if (spellName.equals("material") || spellName.equals("brush")) {
        if (parameters.length < 2) {
            sender.sendMessage("Use: /mage add brush <material:data>");
            return true;
        }
        String materialKey = parameters[1];
        if (!MaterialBrush.isValidMaterial(materialKey, false)) {
            sender.sendMessage(materialKey + " is not a valid brush");
            return true;
        }
        if (activeClass.addBrush(materialKey)) {
            if (sender != player) {
                sender.sendMessage("Added brush '" + materialKey + "' to " + player.getName());
            } else {
                sender.sendMessage(api.getMessages().get("mage.brush_added").replace("$name", materialKey));
            }
        }
        return true;
    }
    Spell spell = mage.getSpell(spellName);
    if (spell == null) {
        sender.sendMessage("Spell '" + spellName + "' unknown, Use /spells for spell list");
        return true;
    }
    SpellTemplate currentSpell = activeClass.getSpellTemplate(spellName);
    if (activeClass.addSpell(spellName)) {
        if (currentSpell != null) {
            String levelDescription = spell.getLevelDescription();
            if (levelDescription == null || levelDescription.isEmpty()) {
                levelDescription = spell.getName();
            }
            if (sender != player) {
                sender.sendMessage(api.getMessages().get("mage.player_spell_upgraded").replace("$player", player.getName()).replace("$name", currentSpell.getName()).replace("$level", levelDescription));
            }
        } else {
            if (sender != player) {
                sender.sendMessage("Added '" + spell.getName() + "' to " + player.getName());
            }
        }
    } else if (sender != player) {
        sender.sendMessage("Could not add " + spellName + " to " + player.getName());
    }
    return true;
}
Also used : MageClass(com.elmakers.mine.bukkit.api.magic.MageClass) Mage(com.elmakers.mine.bukkit.api.magic.Mage) Spell(com.elmakers.mine.bukkit.api.spell.Spell) SpellTemplate(com.elmakers.mine.bukkit.api.spell.SpellTemplate)

Example 40 with Mage

use of com.elmakers.mine.bukkit.api.magic.Mage in project MagicPlugin by elBukkit.

the class MageCommandExecutor method onMageLevelSpells.

public boolean onMageLevelSpells(CommandSender sender, Player player, String[] parameters) {
    Integer maxLevel = null;
    if (parameters.length > 0) {
        try {
            maxLevel = Integer.parseInt(parameters[0]);
        } catch (Exception ex) {
            sender.sendMessage("Usage: /wand levelspells <level>");
            return true;
        }
    }
    Mage mage = controller.getMage(player);
    MageClass activeClass = mage.getActiveClass();
    return onLevelSpells("mage", sender, player, activeClass == null ? mage.getProperties() : activeClass, maxLevel);
}
Also used : MageClass(com.elmakers.mine.bukkit.api.magic.MageClass) Mage(com.elmakers.mine.bukkit.api.magic.Mage)

Aggregations

Mage (com.elmakers.mine.bukkit.api.magic.Mage)187 Player (org.bukkit.entity.Player)62 Entity (org.bukkit.entity.Entity)56 Wand (com.elmakers.mine.bukkit.api.wand.Wand)47 MageController (com.elmakers.mine.bukkit.api.magic.MageController)45 ItemStack (org.bukkit.inventory.ItemStack)38 Location (org.bukkit.Location)33 LivingEntity (org.bukkit.entity.LivingEntity)31 ArrayList (java.util.ArrayList)25 ConfigurationSection (org.bukkit.configuration.ConfigurationSection)18 Inventory (org.bukkit.inventory.Inventory)16 MageClass (com.elmakers.mine.bukkit.api.magic.MageClass)15 Spell (com.elmakers.mine.bukkit.api.spell.Spell)14 SpellTemplate (com.elmakers.mine.bukkit.api.spell.SpellTemplate)14 Block (org.bukkit.block.Block)14 Target (com.elmakers.mine.bukkit.utility.Target)13 EventHandler (org.bukkit.event.EventHandler)13 ItemMeta (org.bukkit.inventory.meta.ItemMeta)12 CasterProperties (com.elmakers.mine.bukkit.api.magic.CasterProperties)10 Vector (org.bukkit.util.Vector)10