Search in sources :

Example 1 with Mage

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

the class InventoryController method onInventoryOpen.

@EventHandler
public void onInventoryOpen(InventoryOpenEvent event) {
    Player player = (Player) event.getPlayer();
    Mage mage = controller.getRegisteredMage(player);
    if (mage == null)
        return;
    mage.setOpenCooldown(openCooldown);
    Wand wand = mage.getActiveWand();
    GUIAction gui = mage.getActiveGUI();
    if (wand != null && gui == null) {
        // Anyway, check for opening another inventory and close the wand.
        if (event.getView().getType() != InventoryType.CRAFTING) {
            if (wand.getMode() == WandMode.INVENTORY || !wand.isInventoryOpen()) {
                wand.deactivate();
            }
        }
    }
}
Also used : Player(org.bukkit.entity.Player) Mage(com.elmakers.mine.bukkit.magic.Mage) GUIAction(com.elmakers.mine.bukkit.api.action.GUIAction) Wand(com.elmakers.mine.bukkit.wand.Wand) EventHandler(org.bukkit.event.EventHandler)

Example 2 with Mage

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

the class PlayerController method onPlayerAnimate.

@EventHandler(ignoreCancelled = true)
public void onPlayerAnimate(PlayerAnimationEvent event) {
    Player player = event.getPlayer();
    if (event.getAnimationType() != PlayerAnimationType.ARM_SWING) {
        return;
    }
    Mage mage = controller.getMage(player);
    Wand wand = mage.checkWand();
    if (wand == null)
        return;
    Messages messages = controller.getMessages();
    if (!controller.hasWandPermission(player)) {
        return;
    }
    // Check for region or wand-specific permissions
    if (!controller.hasWandPermission(player, wand)) {
        wand.deactivate();
        mage.sendMessage(messages.get("wand.no_permission").replace("$wand", wand.getName()));
        return;
    }
    if (!mage.checkLastClick(clickCooldown)) {
        return;
    }
    if (wand.isUpgrade())
        return;
    wand.playEffects("swing");
    wand.performAction(wand.getLeftClickAction());
}
Also used : Player(org.bukkit.entity.Player) Messages(com.elmakers.mine.bukkit.api.magic.Messages) Mage(com.elmakers.mine.bukkit.magic.Mage) Wand(com.elmakers.mine.bukkit.wand.Wand) EventHandler(org.bukkit.event.EventHandler)

Example 3 with Mage

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

the class PlayerController method onPlayerInteractAtEntity.

@EventHandler
public void onPlayerInteractAtEntity(PlayerInteractAtEntityEvent event) {
    Entity entity = event.getRightClicked();
    EntityData mob = controller.getMobByName(entity.getCustomName());
    if (mob == null)
        return;
    String interactSpell = mob.getInteractSpell();
    if (interactSpell == null || interactSpell.isEmpty())
        return;
    Player player = event.getPlayer();
    Mage mage = controller.getMage(player);
    event.setCancelled(true);
    ConfigurationSection config = new MemoryConfiguration();
    config.set("entity", entity.getUniqueId().toString());
    controller.cast(mage, interactSpell, config, player, player);
}
Also used : Entity(org.bukkit.entity.Entity) Player(org.bukkit.entity.Player) Mage(com.elmakers.mine.bukkit.magic.Mage) EntityData(com.elmakers.mine.bukkit.api.entity.EntityData) MemoryConfiguration(org.bukkit.configuration.MemoryConfiguration) ConfigurationSection(org.bukkit.configuration.ConfigurationSection) EventHandler(org.bukkit.event.EventHandler)

Example 4 with Mage

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

the class PlayerController method handlePlayerQuitEvent.

protected void handlePlayerQuitEvent(PlayerEvent event) {
    Player player = event.getPlayer();
    Mage mage = controller.getRegisteredMage(player);
    if (mage != null) {
        mage.onPlayerQuit(event);
        controller.playerQuit(mage);
    }
}
Also used : Player(org.bukkit.entity.Player) Mage(com.elmakers.mine.bukkit.magic.Mage)

Example 5 with Mage

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

the class PlayerController method onPlayerPickupItem.

@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
public void onPlayerPickupItem(PlayerPickupItemEvent event) {
    Player player = event.getPlayer();
    Mage mage = controller.getMage(player);
    // If a wand's inventory is active, add the item there
    if (mage.hasStoredInventory()) {
        event.setCancelled(true);
        if (mage.addToStoredInventory(event.getItem().getItemStack())) {
            event.getItem().remove();
        }
    }
}
Also used : Player(org.bukkit.entity.Player) Mage(com.elmakers.mine.bukkit.magic.Mage) EventHandler(org.bukkit.event.EventHandler)

Aggregations

Mage (com.elmakers.mine.bukkit.magic.Mage)27 EventHandler (org.bukkit.event.EventHandler)22 Player (org.bukkit.entity.Player)20 Wand (com.elmakers.mine.bukkit.wand.Wand)11 ItemStack (org.bukkit.inventory.ItemStack)11 Spell (com.elmakers.mine.bukkit.api.spell.Spell)5 GUIAction (com.elmakers.mine.bukkit.api.action.GUIAction)4 Messages (com.elmakers.mine.bukkit.api.magic.Messages)3 Entity (org.bukkit.entity.Entity)3 Inventory (org.bukkit.inventory.Inventory)3 PlayerInventory (org.bukkit.inventory.PlayerInventory)3 SpellTemplate (com.elmakers.mine.bukkit.api.spell.SpellTemplate)2 Item (org.bukkit.entity.Item)2 CraftingInventory (org.bukkit.inventory.CraftingInventory)2 UndoList (com.elmakers.mine.bukkit.api.block.UndoList)1 EntityData (com.elmakers.mine.bukkit.api.entity.EntityData)1 WandAction (com.elmakers.mine.bukkit.api.wand.WandAction)1 DropActionTask (com.elmakers.mine.bukkit.magic.DropActionTask)1 CompleteDragTask (com.elmakers.mine.bukkit.utility.CompleteDragTask)1 WandMode (com.elmakers.mine.bukkit.wand.WandMode)1