Search in sources :

Example 1 with Mage

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

the class WandCommandExecutor method onWandEnchant.

public boolean onWandEnchant(CommandSender sender, Player player, String levelString) {
    Wand wand = checkWand(sender, player);
    if (wand == null) {
        return false;
    }
    Mage mage = controller.getMage(player);
    int xpLevels = 0;
    boolean useXp = levelString.equalsIgnoreCase("xp");
    if (useXp) {
        xpLevels = mage.getLevel();
    } else {
        try {
            xpLevels = Integer.parseInt(levelString);
        } catch (Exception ex) {
            sender.sendMessage("Invalid parameter: " + levelString);
        }
    }
    int levels = wand.enchant(xpLevels);
    if (levels > 0 && useXp) {
        mage.setLevel(Math.max(0, mage.getLevel() - levels));
    }
    wand.saveState();
    if (sender != player) {
        if (levels > 0) {
            sender.sendMessage(api.getMessages().getParameterized("wand.player_upgraded", "$name", player.getName()));
        } else {
            sender.sendMessage(api.getMessages().getParameterized("wand.player_not_upgraded", "$name", player.getName()));
        }
    }
    return true;
}
Also used : Mage(com.elmakers.mine.bukkit.api.magic.Mage) Wand(com.elmakers.mine.bukkit.api.wand.Wand) IOException(java.io.IOException)

Example 2 with Mage

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

the class WandCommandExecutor method onWandCombine.

public boolean onWandCombine(CommandSender sender, Player player, String[] parameters) {
    if (parameters.length < 1) {
        sender.sendMessage("Use: /wand combine <wandname>");
        return false;
    }
    Wand wand = checkWand(sender, player);
    if (wand == null) {
        return true;
    }
    Mage mage = controller.getMage(player);
    String wandName = parameters[0];
    Wand newWand = api.createWand(wandName);
    if (newWand == null) {
        sender.sendMessage(api.getMessages().getParameterized("wand.unknown_template", "$name", wandName));
        return false;
    }
    wand.deactivate();
    boolean result = wand.add(newWand);
    mage.checkWand();
    if (sender != player) {
        if (result) {
            sender.sendMessage(api.getMessages().getParameterized("wand.player_upgraded", "$name", player.getName()));
        } else {
            sender.sendMessage(api.getMessages().getParameterized("wand.player_not_upgraded", "$name", player.getName()));
        }
    }
    return true;
}
Also used : Mage(com.elmakers.mine.bukkit.api.magic.Mage) Wand(com.elmakers.mine.bukkit.api.wand.Wand)

Example 3 with Mage

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

the class WandCommandExecutor method onWandOrganize.

public boolean onWandOrganize(CommandSender sender, Player player) {
    // Allow reorganizing modifiable wands
    Wand wand = checkWand(sender, player, true);
    if (wand == null) {
        return true;
    }
    Mage mage = controller.getMage(player);
    wand.organizeInventory(mage);
    wand.saveState();
    mage.sendMessage(api.getMessages().get("wand.reorganized").replace("$wand", wand.getName()));
    if (sender != player) {
        sender.sendMessage(api.getMessages().getParameterized("wand.player_reorganized", "$name", player.getName()).replace("$wand", wand.getName()));
    }
    return true;
}
Also used : Mage(com.elmakers.mine.bukkit.api.magic.Mage) Wand(com.elmakers.mine.bukkit.api.wand.Wand)

Example 4 with Mage

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

the class WandCommandExecutor method onWandAlphabetize.

public boolean onWandAlphabetize(CommandSender sender, Player player) {
    Wand wand = checkWand(sender, player, true);
    if (wand == null) {
        return true;
    }
    Mage mage = controller.getMage(player);
    wand.alphabetizeInventory();
    wand.saveState();
    mage.sendMessage(api.getMessages().get("wand.alphabetized").replace("$wand", wand.getName()));
    if (sender != player) {
        sender.sendMessage(api.getMessages().getParameterized("wand.player_alphabetized", "$name", player.getName()).replace("$wand", wand.getName()));
    }
    return true;
}
Also used : Mage(com.elmakers.mine.bukkit.api.magic.Mage) Wand(com.elmakers.mine.bukkit.api.wand.Wand)

Example 5 with Mage

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

the class WandCommandExecutor method checkWand.

@Nullable
protected Wand checkWand(CommandSender sender, Player player, boolean skipModifiable, boolean skipBound, boolean quiet) {
    Mage mage = controller.getMage(player);
    Wand wand = mage.getActiveWand();
    boolean bypassLocked = (sender instanceof Player) && api.hasPermission(sender, "Magic.wand.override_locked");
    if (wand == null) {
        ItemStack item = player.getInventory().getItemInMainHand();
        if (api.isUpgrade(item)) {
            wand = api.getWand(item);
        } else if (bypassLocked && api.isWand(item)) {
            wand = api.getWand(item);
        }
    }
    if (wand == null) {
        if (!quiet)
            mage.sendMessage(api.getMessages().get("wand.no_wand"));
        if (sender != player) {
            sender.sendMessage(api.getMessages().getParameterized("wand.player_no_wand", "$name", player.getName()));
        }
        return null;
    }
    if (!skipModifiable && wand.isLocked() && !bypassLocked) {
        if (!quiet)
            mage.sendMessage(api.getMessages().get("wand.unmodifiable"));
        if (sender != player) {
            sender.sendMessage(api.getMessages().getParameterized("wand.player_unmodifiable", "$name", player.getName()));
        }
        return null;
    }
    if (!skipBound && !wand.canUse(mage.getPlayer())) {
        if (!quiet)
            mage.sendMessage(api.getMessages().get("wand.bound_to_other"));
        if (sender != player) {
            sender.sendMessage(api.getMessages().getParameterized("wand.player_unmodifiable", "$name", player.getName()));
        }
        return null;
    }
    return wand;
}
Also used : Player(org.bukkit.entity.Player) Mage(com.elmakers.mine.bukkit.api.magic.Mage) Wand(com.elmakers.mine.bukkit.api.wand.Wand) ItemStack(org.bukkit.inventory.ItemStack) Nullable(javax.annotation.Nullable)

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