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;
}
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);
}
}
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);
}
}
}
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.");
}
}
}
}
}
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;
}
Aggregations