Search in sources :

Example 1 with Arena

use of com.elmakers.mine.bukkit.arena.Arena in project MagicPlugin by elBukkit.

the class ArenaCommandExecutor method onTabComplete.

@Override
public Collection<String> onTabComplete(CommandSender sender, String commandName, String[] args) {
    List<String> options = new ArrayList<>();
    if (args.length < 2) {
        options.addAll(Arrays.asList(SUB_COMMANDS));
    } else if (args.length == 2 && args[0].equalsIgnoreCase("leave")) {
        options.addAll(arenaController.getMagic().getPlayerNames());
    } else if (args.length == 2) {
        if (args[0].equalsIgnoreCase("add")) {
            Set<String> unusedTemplates = new HashSet<>(controller.getArenaTemplateKeys());
            unusedTemplates.removeAll(arenaController.getArenaKeys());
            options.addAll(unusedTemplates);
        } else {
            Collection<Arena> arenas = arenaController.getArenas();
            for (Arena arena : arenas) {
                options.add(arena.getKey());
            }
            if (args[0].equalsIgnoreCase("reset")) {
                options.add("ALL");
            }
        }
    } else if (args.length == 3 && args[0].equalsIgnoreCase("add")) {
        options.addAll(controller.getArenaTemplateKeys());
    } else if (args.length == 3 && args[0].equalsIgnoreCase("stage")) {
        options.addAll(Arrays.asList(STAGE_COMMANDS));
    } else if (args.length == 3 && args[0].equalsIgnoreCase("configure")) {
        options.addAll(Arrays.asList(ARENA_PROPERTIES));
    } else if (args.length == 4 && args[0].equalsIgnoreCase("configure") && (args[2].equalsIgnoreCase("add") || args[2].equalsIgnoreCase("remove"))) {
        options.addAll(Arrays.asList(ARENA_LISTS));
    } else if (args.length == 4 && args[0].equalsIgnoreCase("configure") && args[2].equalsIgnoreCase("randomize")) {
        options.addAll(Arrays.asList(ARENA_RANDOMIZE));
    } else if (args.length == 4 && args[0].equalsIgnoreCase("stage") && args[2].equalsIgnoreCase("configure")) {
        options.addAll(Arrays.asList(STAGE_PROPERTIES));
    } else if (args.length == 5 && args[0].equalsIgnoreCase("stage") && args[2].equalsIgnoreCase("configure") && (args[3].equalsIgnoreCase("add") || args[3].equalsIgnoreCase("remove"))) {
        options.addAll(Arrays.asList(STAGE_LISTS));
    } else if (args.length == 5 && args[0].equalsIgnoreCase("stage") && args[2].equalsIgnoreCase("configure") && args[3].equalsIgnoreCase("randomize")) {
        options.addAll(Arrays.asList(STAGE_RANDOMIZE));
    } else if (args.length == 4 && args[0].equalsIgnoreCase("configure") && (args[2].equalsIgnoreCase("keep_inventory") || args[2].equalsIgnoreCase("keep_level") || args[2].equalsIgnoreCase("item_wear") || args[2].equalsIgnoreCase("allow_consuming") || args[2].equalsIgnoreCase("op_check") || args[2].equalsIgnoreCase("allow_interrupt") || args[2].equalsIgnoreCase("allow_melee") || args[2].equalsIgnoreCase("allow_projectiles") || args[2].equalsIgnoreCase("heal"))) {
        options.addAll(Arrays.asList(BOOLEAN_PROPERTIES));
    } else if (args.length == 3 && args[0].equalsIgnoreCase("configure") && args[2].equalsIgnoreCase("template")) {
        for (String templateKey : arenaController.getArenaTemplateKeys()) {
            options.add(templateKey);
        }
    } else if (args.length == 4 && args[0].equalsIgnoreCase("configure") && (args[2].equalsIgnoreCase("add") || args[2].equalsIgnoreCase("remove")) && args[3].equalsIgnoreCase("magic_block")) {
        for (MagicBlock magicBlock : controller.getMagicBlocks()) {
            options.add(magicBlock.getName());
        }
    } else if (args.length == 4 && args[0].equalsIgnoreCase("configure") && args[2].equalsIgnoreCase("sudden_death_effect")) {
        for (PotionEffectType pt : PotionEffectType.values()) {
            if (pt == null)
                continue;
            String name = pt.getName();
            if (name == null)
                continue;
            options.add(name.toLowerCase());
        }
    } else if (args.length == 4 && args[0].equalsIgnoreCase("configure") && args[2].equalsIgnoreCase("spell_start")) {
        Collection<SpellTemplate> spells = arenaController.getMagic().getSpellTemplates();
        for (SpellTemplate spell : spells) {
            options.add(spell.getKey());
        }
    } else if (args.length == 3 && (args[0].equalsIgnoreCase("join") || args[0].equalsIgnoreCase("stats") || args[0].equalsIgnoreCase("reset"))) {
        options.addAll(arenaController.getMagic().getPlayerNames());
    } else if (args.length == 6 && args[0].equalsIgnoreCase("stage") && args[2].equalsIgnoreCase("configure") && args[3].equalsIgnoreCase("add") && args[4].equalsIgnoreCase("mob")) {
        options.addAll(arenaController.getMagic().getMobKeys());
        for (EntityType entityType : EntityType.values()) {
            if (entityType.isAlive() && entityType.isSpawnable()) {
                options.add(entityType.name().toLowerCase());
            }
        }
    } else if (args.length == 6 && args[0].equalsIgnoreCase("stage") && args[2].equalsIgnoreCase("configure") && args[3].equalsIgnoreCase("remove") && args[4].equalsIgnoreCase("mob")) {
        Arena arena = arenaController.getArena(args[1]);
        if (arena != null) {
            EditingStage stage = arena.getIfEditingStage();
            if (stage != null) {
                for (EntityData mob : stage.getSpawns()) {
                    String key = mob.getKey();
                    if (key != null && !key.isEmpty()) {
                        options.add(key);
                    }
                }
            }
        }
    } else if (args.length == 4 && args[0].equalsIgnoreCase("configure") && args[2].equalsIgnoreCase("leaderboard_sign_type")) {
        for (Material sign : arenaController.getMagic().getMaterialSetManager().getMaterialSet("signs").getMaterials()) {
            options.add(sign.name().toLowerCase());
        }
    }
    return options;
}
Also used : PotionEffectType(org.bukkit.potion.PotionEffectType) ArrayList(java.util.ArrayList) EntityData(com.elmakers.mine.bukkit.api.entity.EntityData) EditingStage(com.elmakers.mine.bukkit.arena.EditingStage) Material(org.bukkit.Material) Arena(com.elmakers.mine.bukkit.arena.Arena) EntityType(org.bukkit.entity.EntityType) MagicBlock(com.elmakers.mine.bukkit.api.block.magic.MagicBlock) Collection(java.util.Collection) HashSet(java.util.HashSet) SpellTemplate(com.elmakers.mine.bukkit.api.spell.SpellTemplate)

Example 2 with Arena

use of com.elmakers.mine.bukkit.arena.Arena in project MagicPlugin by elBukkit.

the class ArenaListener method onItemDamage.

@EventHandler(ignoreCancelled = true)
public void onItemDamage(PlayerItemDamageEvent event) {
    Player player = event.getPlayer();
    Arena arena = controller.getArena(player);
    if (arena != null && !arena.isItemWear()) {
        event.setCancelled(true);
    }
}
Also used : Player(org.bukkit.entity.Player) ArenaPlayer(com.elmakers.mine.bukkit.arena.ArenaPlayer) Arena(com.elmakers.mine.bukkit.arena.Arena) EventHandler(org.bukkit.event.EventHandler)

Example 3 with Arena

use of com.elmakers.mine.bukkit.arena.Arena in project MagicPlugin by elBukkit.

the class ArenaListener method onEntityDamageByEntity.

@EventHandler(priority = EventPriority.LOW, ignoreCancelled = true)
public void onEntityDamageByEntity(EntityDamageByEntityEvent event) {
    Entity damager = event.getDamager();
    damager = controller.getMagic().getDamageSource(damager);
    if (!(damager instanceof Player))
        return;
    Arena arena = controller.getArena((Player) damager);
    if (arena != null && !controller.getMagic().isDamaging()) {
        boolean isProjectile = event.getCause() == EntityDamageEvent.DamageCause.PROJECTILE;
        boolean isMelee = event.getCause() == EntityDamageEvent.DamageCause.ENTITY_ATTACK;
        if (isProjectile && !arena.isAllowProjectiles()) {
            event.setCancelled(true);
        } else if (isMelee && !arena.isAllowMelee()) {
            event.setCancelled(true);
        }
    }
}
Also used : Entity(org.bukkit.entity.Entity) LivingEntity(org.bukkit.entity.LivingEntity) Player(org.bukkit.entity.Player) ArenaPlayer(com.elmakers.mine.bukkit.arena.ArenaPlayer) Arena(com.elmakers.mine.bukkit.arena.Arena) EventHandler(org.bukkit.event.EventHandler)

Example 4 with Arena

use of com.elmakers.mine.bukkit.arena.Arena in project MagicPlugin by elBukkit.

the class ArenaListener method onPlayerInteract.

@EventHandler
public void onPlayerInteract(PlayerInteractEvent e) {
    Player player = e.getPlayer();
    if (!player.hasPermission("magic.arena.signs.use")) {
        return;
    }
    Block clickedBlock = e.getClickedBlock();
    if (e.getAction() == Action.RIGHT_CLICK_BLOCK && (DefaultMaterials.isSign(clickedBlock.getType()))) {
        Sign sign = (Sign) e.getClickedBlock().getState();
        String firstLine = sign.getLine(0);
        firstLine = firstLine.replace("" + ChatColor.RESET, "");
        if (firstLine.equals(SIGN_KEY)) {
            String secondLine = sign.getLine(1);
            if (secondLine.contains("Join")) {
                String arenaName = sign.getLine(2);
                Arena arena = controller.getArena(arenaName);
                if (arena != null) {
                    arena.join(e.getPlayer());
                } else {
                    player.sendMessage(ChatColor.RED + "Sorry, that arena isn't available.");
                }
            } else if (secondLine.contains("Leave")) {
                controller.leave(e.getPlayer());
            } else if (secondLine.contains("Leaderboard")) {
                String arenaName = sign.getLine(2);
                Arena arena = controller.getArena(arenaName);
                if (arena != null) {
                    arena.showLeaderboard(player);
                } else {
                    player.sendMessage(ChatColor.RED + "Sorry, that arena isn't available.");
                }
            }
        }
    }
}
Also used : Player(org.bukkit.entity.Player) ArenaPlayer(com.elmakers.mine.bukkit.arena.ArenaPlayer) Block(org.bukkit.block.Block) Sign(org.bukkit.block.Sign) Arena(com.elmakers.mine.bukkit.arena.Arena) EventHandler(org.bukkit.event.EventHandler)

Example 5 with Arena

use of com.elmakers.mine.bukkit.arena.Arena in project MagicPlugin by elBukkit.

the class ArenaListener method onEnterPortal.

protected boolean onEnterPortal(Entity entity) {
    // Mob arenas eventually!
    if (!(entity instanceof Player)) {
        return false;
    }
    Player player = ((Player) entity).getPlayer();
    Arena arena = controller.getArena(player);
    if (arena != null && arena.getPortalEnterDamage() > 0) {
        String portalDeathMessage = arena.getPortalDeathMessage();
        if (portalDeathMessage != null && !portalDeathMessage.isEmpty()) {
            player.setMetadata("death_message", new FixedMetadataValue(controller.getPlugin(), portalDeathMessage));
        }
        player.damage(arena.getPortalEnterDamage());
        if (portalDeathMessage != null && !portalDeathMessage.isEmpty()) {
            player.removeMetadata("death_message", controller.getPlugin());
        }
        return true;
    }
    return false;
}
Also used : Player(org.bukkit.entity.Player) ArenaPlayer(com.elmakers.mine.bukkit.arena.ArenaPlayer) FixedMetadataValue(org.bukkit.metadata.FixedMetadataValue) Arena(com.elmakers.mine.bukkit.arena.Arena)

Aggregations

Arena (com.elmakers.mine.bukkit.arena.Arena)15 Player (org.bukkit.entity.Player)14 ArenaPlayer (com.elmakers.mine.bukkit.arena.ArenaPlayer)13 EventHandler (org.bukkit.event.EventHandler)10 FixedMetadataValue (org.bukkit.metadata.FixedMetadataValue)3 Location (org.bukkit.Location)2 LivingEntity (org.bukkit.entity.LivingEntity)2 MagicBlock (com.elmakers.mine.bukkit.api.block.magic.MagicBlock)1 EntityData (com.elmakers.mine.bukkit.api.entity.EntityData)1 Mage (com.elmakers.mine.bukkit.api.magic.Mage)1 SpellTemplate (com.elmakers.mine.bukkit.api.spell.SpellTemplate)1 Wand (com.elmakers.mine.bukkit.api.wand.Wand)1 ArenaController (com.elmakers.mine.bukkit.arena.ArenaController)1 ArenaTemplate (com.elmakers.mine.bukkit.arena.ArenaTemplate)1 EditingStage (com.elmakers.mine.bukkit.arena.EditingStage)1 MagicController (com.elmakers.mine.bukkit.magic.MagicController)1 ArrayList (java.util.ArrayList)1 Collection (java.util.Collection)1 HashSet (java.util.HashSet)1 Material (org.bukkit.Material)1