Search in sources :

Example 16 with Mage

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

the class MagicGiveCommandExecutor method onCommand.

@Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
    if (!api.hasPermission(sender, "Magic.commands.mgive")) {
        sendNoPermission(sender);
        return true;
    }
    if (args.length == 0 || args.length > 3) {
        sender.sendMessage("Usage: mgive [player] <item> [count]");
        return true;
    }
    String playerName = null;
    String itemName = null;
    String countString = null;
    if (args.length == 1) {
        itemName = args[0];
    } else if (args.length == 3) {
        playerName = args[0];
        itemName = args[1];
        countString = args[2];
    } else {
        playerName = args[0];
        Player testPlayer = DeprecatedUtils.getPlayer(playerName);
        if (testPlayer == null) {
            itemName = args[0];
            countString = args[1];
        } else {
            itemName = args[1];
        }
    }
    int count = 1;
    if (countString != null) {
        try {
            count = Integer.parseInt(countString);
        } catch (Exception ex) {
            sender.sendMessage("Error parsing count: " + countString + ", should be an integer.");
            return true;
        }
    }
    Player player = null;
    if (playerName != null && sender.hasPermission("Magic.commands.mgive.others")) {
        player = DeprecatedUtils.getPlayer(playerName);
    }
    if (player == null) {
        if (!(sender instanceof Player)) {
            sender.sendMessage("Console usage: mgive <player> <item> [count]");
            return true;
        }
        player = (Player) sender;
    }
    if (!api.hasPermission(sender, "Magic.create." + itemName) && !api.hasPermission(sender, "Magic.create.*")) {
        sender.sendMessage(ChatColor.RED + "You do not have permission to create " + itemName);
        return true;
    }
    if (itemName.equalsIgnoreCase("xp")) {
        api.giveExperienceToPlayer(player, count);
        sender.sendMessage("Gave " + count + " experience to " + player.getName());
        return true;
    } else if (itemName.equalsIgnoreCase("sp")) {
        Mage mage = controller.getMage(player);
        mage.addSkillPoints(count);
        sender.sendMessage("Gave " + count + " skill points to " + player.getName());
        return true;
    } else {
        Mage mage = controller.getMage(player);
        ItemStack item = api.createItem(itemName, mage);
        if (item == null) {
            sender.sendMessage(ChatColor.RED + "Unknown item type " + itemName);
            return true;
        }
        item.setAmount(count);
        String displayName = api.describeItem(item);
        sender.sendMessage("Gave " + count + " " + displayName + " to " + player.getName());
        api.giveItemToPlayer(player, item);
    }
    return true;
}
Also used : Player(org.bukkit.entity.Player) Mage(com.elmakers.mine.bukkit.api.magic.Mage) ItemStack(org.bukkit.inventory.ItemStack)

Example 17 with Mage

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

the class MinigamesListener method onQuitMinigame.

@EventHandler
public void onQuitMinigame(QuitMinigameEvent event) {
    Player player = event.getPlayer();
    if (player == null)
        return;
    Mage mage = controller.getRegisteredMage(player.getUniqueId().toString());
    if (mage == null)
        return;
    mage.deactivate();
}
Also used : Player(org.bukkit.entity.Player) Mage(com.elmakers.mine.bukkit.api.magic.Mage) EventHandler(org.bukkit.event.EventHandler)

Example 18 with Mage

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

the class MobController method onEntityTargetEnttiy.

@EventHandler
public void onEntityTargetEnttiy(EntityTargetLivingEntityEvent event) {
    Entity source = event.getEntity();
    if (source instanceof Player || event.isCancelled())
        return;
    Entity target = event.getTarget();
    Mage mage = controller.getRegisteredMage(source);
    if (mage == null)
        return;
    Entity currentTarget = mage.getTopDamager();
    if (currentTarget != null && currentTarget != target) {
        event.setCancelled(true);
    }
}
Also used : Entity(org.bukkit.entity.Entity) LivingEntity(org.bukkit.entity.LivingEntity) Player(org.bukkit.entity.Player) Mage(com.elmakers.mine.bukkit.api.magic.Mage) EventHandler(org.bukkit.event.EventHandler)

Example 19 with Mage

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

the class DisarmSpell method onCast.

@Override
public SpellResult onCast(ConfigurationSection parameters) {
    Target target = getTarget();
    if (!target.hasEntity() || !(target.getEntity() instanceof LivingEntity)) {
        return SpellResult.NO_TARGET;
    }
    LivingEntity entity = (LivingEntity) target.getEntity();
    EntityEquipment equipment = entity.getEquipment();
    ItemStack stack = equipment.getItemInHand();
    if (stack == null || stack.getType() == Material.AIR) {
        return SpellResult.NO_TARGET;
    }
    // Special case for wands
    if (Wand.isWand(stack) && controller.isMage(entity)) {
        Mage targetMage = controller.getMage(entity);
        // This gets overridden by superpower...
        if (!mage.isSuperPowered() && isSuperProtected(targetMage)) {
            return SpellResult.NO_TARGET;
        }
        if (targetMage.getActiveWand() != null) {
            targetMage.getActiveWand().deactivate();
        }
    }
    Integer targetSlot = null;
    PlayerInventory targetInventory = null;
    ItemStack swapItem = null;
    if (entity instanceof Player && parameters.getBoolean("keep_in_inventory", false)) {
        Player targetPlayer = (Player) entity;
        targetInventory = targetPlayer.getInventory();
        List<Integer> validSlots = new ArrayList<>();
        ItemStack[] contents = targetInventory.getContents();
        int minSlot = parameters.getInt("min_slot", Wand.HOTBAR_SIZE);
        int maxSlot = parameters.getInt("max_slot", contents.length - 1);
        for (int i = minSlot; i <= maxSlot; i++) {
            if (contents[i] == null || contents[i].getType() == Material.AIR) {
                validSlots.add(i);
            }
        }
        // Randomly choose a slot if no empty one was found
        if (validSlots.size() == 0) {
            int swapSlot = random.nextInt(maxSlot - minSlot) + minSlot;
            swapItem = targetInventory.getItem(swapSlot);
            validSlots.add(swapSlot);
        }
        int chosen = random.nextInt(validSlots.size());
        targetSlot = validSlots.get(chosen);
    }
    equipment.setItemInHand(swapItem);
    if (targetSlot != null && targetInventory != null) {
        targetInventory.setItem(targetSlot, stack);
    } else {
        Location location = entity.getLocation();
        location.setY(location.getY() + 1);
        Item item = entity.getWorld().dropItemNaturally(location, stack);
        Vector velocity = item.getVelocity();
        velocity.setY(velocity.getY() * 5);
        SafetyUtils.setVelocity(item, velocity);
    }
    return SpellResult.CAST;
}
Also used : Player(org.bukkit.entity.Player) ArrayList(java.util.ArrayList) PlayerInventory(org.bukkit.inventory.PlayerInventory) LivingEntity(org.bukkit.entity.LivingEntity) Item(org.bukkit.entity.Item) Target(com.elmakers.mine.bukkit.utility.Target) EntityEquipment(org.bukkit.inventory.EntityEquipment) Mage(com.elmakers.mine.bukkit.api.magic.Mage) ItemStack(org.bukkit.inventory.ItemStack) Vector(org.bukkit.util.Vector) Location(org.bukkit.Location)

Example 20 with Mage

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

the class UndoableSpell method applyPotionEffects.

public void applyPotionEffects(Location location, int radius, Collection<PotionEffect> potionEffects) {
    if (potionEffects == null || radius <= 0 || potionEffects.size() == 0)
        return;
    int radiusSquared = radius * 2;
    List<Entity> entities = CompatibilityUtils.getNearbyEntities(location, radius, radius, radius);
    for (Entity entity : entities) {
        if (entity instanceof LivingEntity) {
            Mage targetMage = null;
            if (controller.isMage(entity)) {
                targetMage = controller.getMage(entity);
            }
            boolean isSourcePlayer = entity == mage.getEntity();
            if (isSourcePlayer && getTargetType() != TargetType.ANY && getTargetType() != TargetType.SELF) {
                continue;
            }
            // Check for protected players
            if (targetMage != null && isSuperProtected(targetMage) && !isSourcePlayer) {
                continue;
            }
            if (!canTarget(entity))
                continue;
            if (entity.getLocation().distanceSquared(location) < radiusSquared) {
                registerPotionEffects(entity);
                CompatibilityUtils.applyPotionEffects((LivingEntity) entity, potionEffects);
                if (targetMage != null) {
                    String playerMessage = getMessage("cast_player_message");
                    if (playerMessage.length() > 0) {
                        playerMessage = playerMessage.replace("$spell", getName());
                        targetMage.sendMessage(playerMessage);
                    }
                }
            }
        }
    }
}
Also used : LivingEntity(org.bukkit.entity.LivingEntity) Entity(org.bukkit.entity.Entity) LivingEntity(org.bukkit.entity.LivingEntity) 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