private void inGameInteractEntity(PlayerInteractEntityEvent iee, Game game, Player player) { if (iee.getPlayer().getItemInHand().getType().equals(Material.MONSTER_EGG) || iee.getPlayer().getItemInHand().getType().equals(Material.MONSTER_EGGS) || iee.getPlayer().getItemInHand().getType().equals(Material.DRAGON_EGG)) { iee.setCancelled(true); return; } if (iee.getRightClicked() != null) { if (!iee.getRightClicked().getType().equals(EntityType.VILLAGER)) { List<EntityType> preventClickTypes = Arrays.asList(EntityType.ITEM_FRAME); // armor stand in 1.8 try { preventClickTypes.add(EntityType.valueOf("ARMOR_STAND")); } catch (Exception ex) { // nothing will happen, just not supported } if (preventClickTypes.contains(iee.getRightClicked().getType())) { iee.setCancelled(true); } return; } } iee.setCancelled(true); if (game.isSpectator(player)) { return; } BedwarsOpenShopEvent openShopEvent = new BedwarsOpenShopEvent(game, player, game.getItemShopCategories(), iee.getRightClicked()); Main.getInstance().getServer().getPluginManager().callEvent(openShopEvent); if (openShopEvent.isCancelled()) { return; } if (game.isUsingOldShop(player)) { MerchantCategory.openCategorySelection(player, game); } else { NewItemShop itemShop = game.getNewItemShop(player); if (itemShop == null) { itemShop = game.openNewItemShop(player); } itemShop.setCurrentCategory(null); itemShop.openCategoryInventory(player); } }
@Override public void loadSettings(FileConfiguration config) { ConfigurationSection sectionE = config.getConfigurationSection("Skills.Weaponry.Entities"); ConfigurationSection section = config.getConfigurationSection("Skills.Weaponry"); if (sectionE.getKeys(false) != null) { for (String s : sectionE.getKeys(false)) { if (EntityType.valueOf(s.toUpperCase()) != null) { EntityType type = EntityType.valueOf(s.toUpperCase()); Double val = sectionE.getDouble(s); entities.put(type, val); } } } if (section.getStringList("Weapons") != null) { for (String s : section.getStringList("Weapons")) { if (Material.valueOf(s.toUpperCase()) != null) { Material type = Material.valueOf(s.toUpperCase()); weapons.add(type); } } } }
private static Map<EntityType, Double> convertToDropMap(List<String> toParse) { Map<EntityType, Double> parsed = new HashMap<EntityType, Double>(); for (String line : toParse) { String[] split = line.split(Pattern.quote(";")); if (split.length != 2) continue; try { EntityType type = EntityType.valueOf(split[0].replace(" ", "_").toUpperCase()); double percent = Double.parseDouble(split[1]); parsed.put(type, percent); } catch (Throwable exp) { } } return parsed; }
public SpawnMobEvent(String packName, String instructions) throws InstructionParseException { super(packName, instructions); staticness = true; String[] parts = instructions.split(" "); if (parts.length < 4) { throw new InstructionParseException("Not enough arguments"); } String[] coords = parts[1].split(";"); if (coords.length < 4) { throw new InstructionParseException("Wrong location format"); } World world = Bukkit.getWorld(coords[3]); if (world == null) { throw new InstructionParseException("World does not exist"); } double x, y, z; try { x = Double.parseDouble(coords[0]); y = Double.parseDouble(coords[1]); z = Double.parseDouble(coords[2]); } catch (NumberFormatException e) { throw new InstructionParseException("Could not parse coordinates"); } loc = new Location(world, x, y, z); try { type = EntityType.valueOf(parts[2].toUpperCase()); } catch (IllegalArgumentException e) { throw new InstructionParseException("Entity type does not exist"); } try { amount = Integer.parseInt(parts[3]); } catch (NumberFormatException e) { throw new InstructionParseException("Could not parse amount"); } String tempName = null; for (String part : parts) { if (part.startsWith("name:")) { tempName = part.substring(5).replace("_", " "); break; } } name = tempName; }
@Override public void prepare(CastContext context, ConfigurationSection parameters) { super.prepare(context, parameters); doVelocity = parameters.getBoolean("apply_velocity", true); doTeleport = parameters.getBoolean("teleport", true); noTarget = parameters.getBoolean("no_target", true); orient = parameters.getBoolean("orient", true); velocityOffset = ConfigurationUtils.getVector(parameters, "velocity_offset"); locationOffset = ConfigurationUtils.getVector(parameters, "location_offset"); try { String entityTypeName = parameters.getString("type", ""); if (!entityTypeName.isEmpty()) { entityType = EntityType.valueOf(entityTypeName.toUpperCase()); } } catch (Exception ex) { entityType = null; } if (parameters.contains("spawn_reason")) { String reasonText = parameters.getString("spawn_reason").toUpperCase(); try { spawnReason = CreatureSpawnEvent.SpawnReason.valueOf(reasonText); } catch (Exception ex) { context.getMage().sendMessage("Unknown spawn reason: " + reasonText); } } customName = parameters.getString("name"); isBaby = parameters.getBoolean("baby", false); variantName = parameters.getString("variant"); if (variantName != null && variantName.isEmpty()) { variantName = null; } }
@Override public void onBuild(List<String> args) { for (String arg : args) { if (aH.matchesValueArg("TYPE", arg, ArgumentType.Custom)) { try { type = ItemDropType.valueOf(aH.getStringFrom(arg).toUpperCase()); dB.echoDebug("...type set to: " + type.name()); continue; } catch (Exception e) { dB.echoDebug("...type " + aH.getStringFrom(arg) + " is not valid."); } } else if (aH.matchesItem(arg)) { item = aH.getItemFrom(arg).getItemStack(); dB.echoDebug("...item set to: " + item); continue; } else if (aH.matchesValueArg("REGION", arg, ArgumentType.Custom)) { region = aH.getStringFrom(arg); dB.echoDebug("...region set to: " + region); continue; } else if (aH.matchesLocation(arg)) { location = aH.getLocationFrom(arg); dB.echoDebug("...location set to: " + location); continue; } else if (aH.matchesValueArg("RADIUS", arg, ArgumentType.Integer)) { radius = aH.getIntegerFrom(arg); dB.echoDebug("...radius set to: " + radius); continue; } else if (aH.matchesValueArg("DROPRATE", arg, ArgumentType.Integer)) { dropRate = aH.getIntegerFrom(arg); dB.echoDebug("...drop rate set to: " + dropRate + "/100"); continue; } else if (aH.matchesValueArg("DROPSFROM", arg, ArgumentType.Custom)) { dropper = aH.getStringFrom(arg); dB.echoDebug("...dropper set to: " + dropper); continue; } else if (aH.matchesQuantity(arg)) { quantity = aH.getIntegerFrom(arg); dB.echoDebug("...quantity set to: " + quantity); continue; } } if (item == null) { dB.echoDebug("...item could not be set"); cancel(); } switch (type) { case BLOCKPLACE: case BLOCKBREAK: try { block = Material.valueOf(dropper); dB.echoDebug("...DROPSFROM material set"); } catch (Exception e) { dB.echoDebug("...DROPSFROM is not a valid material"); } break; case MOBKILL: if (aH.matchesEntityType("entity:" + dropper)) { mob = EntityType.valueOf(dropper.toUpperCase()); dB.echoDebug("...mob selected from DROPSFROM"); } else dB.echoDebug("...could not select mob from DROPSFROM"); break; default: dB.echoDebug("...error setting type"); cancel(); break; } }
@Override public boolean onCommand(CommandSender sender, Command command, String name, String[] args) { switch (command.getName().toLowerCase()) { case "spawn": if (sender instanceof Player) { ((Player) sender).teleport(config.spawn.LOCATION); sender.sendMessage(ChatColor.RED + "Wooosh!"); } else { sender.sendMessage(ChatColor.RED + "Only usable by players, sorry!"); } break; case "o3-reload": config.reload(); sender.sendMessage(String.format("%sDone.", ChatColor.RED)); break; case "world": if (args.length == 0) return false; if (!(args.length == 4 || args.length == 1)) return false; if (!(sender instanceof Player)) { sender.sendMessage("Only usable by players"); return false; } World world = getServer().getWorld(args[0]); if (world == null) { sender.sendMessage( "This world doesn't exist. Try 'world', 'world_nether', or 'world_the_end'"); return true; } if (args.length == 4) { ((Player) sender) .teleport( new Location( world, Double.parseDouble(args[1]), Double.parseDouble(args[2]), Double.parseDouble(args[3]))); } else { ((Player) sender).teleport(world.getSpawnLocation()); } break; case "coords": if (sender instanceof Player) { Location loc = ((Player) sender).getLocation(); sender.sendMessage( String.format( "%sx: %d %sy: %d %sz: %d", ChatColor.RED, loc.getBlockX(), ChatColor.BLUE, loc.getBlockY(), ChatColor.AQUA, loc.getBlockZ())); } else { sender.sendMessage( String.format("%sThis command is only usable by players", ChatColor.RED)); } break; case "item": if (sender instanceof Player) { Player player = (Player) sender; if (args.length < 1 || args.length > 2) return false; String blockID = ""; String blockData = ""; String amount = "64"; if (args[0].contains(":")) { String[] temp = args[0].split(":"); blockID = temp[0]; blockData = temp[1]; } else { blockID = args[0]; } if (args.length == 2) { amount = args[1]; } getServer() .dispatchCommand( player, String.format("give %s %s %s %s", player.getName(), blockID, amount, blockData)); } else { sender.sendMessage( String.format("%sThis command is only usable by players", ChatColor.RED)); } break; case "staffchest": getServer().dispatchCommand(sender, "cmodify g:base_assistance"); break; case "unstaff": getServer().dispatchCommand(sender, "cmodify -g:base_assistance"); break; case "trace": if (args.length < 1 || args.length > 2) { return false; } else if (args.length == 1) { getServer() .dispatchCommand( sender, String.format( "lb lookup player %s sum blocks block 1 block 56 block 14 block 129", args[0])); } else if (args.length == 2) { getServer() .dispatchCommand( sender, String.format( "lb lookup player %s sum blocks block 1 block 56 block 14 block 129 since %s days", args[0], args[1])); } break; case "tppos": if (args.length == 4) { getServer() .dispatchCommand( sender, String.format("world %s %s %s %s", args[0], args[1], args[2], args[3])); } else if (args.length == 3) { getServer() .dispatchCommand(sender, String.format("tp %s %s %s", args[0], args[1], args[2])); } else { return false; } break; case "entity-magnet": if (args.length != 2) { return false; } else { if (sender instanceof Player) { Player player = (Player) sender; EntityType entityType = null; try { entityType = EntityType.valueOf(args[0].toUpperCase()); } catch (Exception e) { player.sendMessage("Entity type does not exist"); return true; } double range = 0; if (range > 50) { sender.sendMessage( "You don't have enough power! Entity magnet only works up to 50 blocks away."); return true; } if (blockedEntities.contains(entityType)) { sender.sendMessage("Magnet doesn't work on this block :("); return true; } try { range = Double.parseDouble(args[1]) / 2; } catch (Exception e) { player.sendMessage("Invalid range"); return true; } for (Entity e : player.getNearbyEntities(range, range, range)) { if (e.getType().equals(entityType)) { e.teleport(player); } } } } break; case "swap-player": if (args.length != 2) { return false; } Player p = getServer().getPlayer(args[0]); bungeePluginChannel = new DataOutputStream(new ByteArrayOutputStream()); ByteArrayOutputStream b = new ByteArrayOutputStream(); DataOutputStream out = new DataOutputStream(b); try { out.writeUTF("Connect"); out.writeUTF(args[1]); p.sendPluginMessage(this, "BungeeCord", b.toByteArray()); } catch (Exception e) { e.printStackTrace(); } break; case "give-pet": if (sender instanceof Player) { Player player = (Player) sender; if (args.length == 1) { if (getServer().getPlayer(args[0]) != null) { player.setMetadata("give-pet", new FixedMetadataValue(this, args[0])); player.sendMessage( "Right click the pet you want to give away. This cannot be undone"); } else { player.sendMessage("This player is not online"); } } else { return false; } } break; case "thor": if (args.length == 1) { Player player = getServer().getPlayer(args[0]); if (player == null) return false; player.getWorld().strikeLightning(player.getLocation()); player.setHealth(0); sender.sendMessage( String.format( "%sThou hast smote the evil player %s with thy mighty hand.", ChatColor.LIGHT_PURPLE, player.getDisplayName())); player.sendMessage( String.format("%sYou have been smote by Thor's Hammer!", ChatColor.RED)); getServer() .dispatchCommand( sender, String.format( "transmission:staffchat I have smitten %s", player.getDisplayName())); } else { return false; } break; case "lsd": for (int j = 0; j < 10; j++) { StringBuilder lsd = new StringBuilder(); for (int i = 0; i < 40; i++) { lsd.append(colors.get(rand.nextInt(colors.size()))); lsd.append(ChatColor.MAGIC); lsd.append('x'); } sender.sendMessage(String.format("%s%s", ChatColor.MAGIC, lsd.toString())); } if (sender instanceof Player) { Player player = (Player) sender; player.addPotionEffect(new PotionEffect(PotionEffectType.CONFUSION, 600, 1)); } break; } return true; }
public EntityFilterParser(final Element element) { super(element); this.entityType = EntityType.valueOf(element.getText().toUpperCase().replace(" ", "_")); }
@EventHandler(priority = EventPriority.HIGH) public void onInteractEntity(PlayerInteractEntityEvent event) { if (event.getRightClicked() == null) { return; } Entity entity = event.getRightClicked(); Player player = event.getPlayer(); if (!player.hasMetadata("bw-addteamjoin")) { if (!(entity instanceof LivingEntity)) { return; } LivingEntity livEntity = (LivingEntity) entity; Game game = Main.getInstance().getGameManager().getGameOfPlayer(player); if (game == null) { return; } if (game.getState() != GameState.WAITING) { return; } Team team = game.getTeam(ChatColor.stripColor(livEntity.getCustomName())); if (team == null) { return; } game.playerJoinTeam(player, team); event.setCancelled(true); return; } List<MetadataValue> values = player.getMetadata("bw-addteamjoin"); if (values == null || values.size() == 0) { return; } event.setCancelled(true); TeamJoinMetaDataValue value = (TeamJoinMetaDataValue) values.get(0); if (!((boolean) value.value())) { return; } if (!(entity instanceof LivingEntity)) { player.sendMessage( ChatWriter.pluginMessage(ChatColor.RED + Main._l("errors.entitynotcompatible"))); return; } LivingEntity living = (LivingEntity) entity; living.setRemoveWhenFarAway(false); living.setCanPickupItems(false); living.setCustomName(value.getTeam().getChatColor() + value.getTeam().getDisplayName()); living.setCustomNameVisible( Main.getInstance().getBooleanConfig("jointeam-entity.show-name", true)); if (Utils.isSupportingTitles()) { if (living.getType().equals(EntityType.valueOf("ARMOR_STAND"))) { Utils.equipArmorStand(living, value.getTeam()); } } player.removeMetadata("bw-addteamjoin", Main.getInstance()); player.sendMessage( ChatWriter.pluginMessage( ChatColor.GREEN + Main._l( "success.teamjoinadded", ImmutableMap.of( "team", value.getTeam().getChatColor() + value.getTeam().getDisplayName() + ChatColor.GREEN)))); }
@Override public SpellResult perform(CastContext context) { Block targetBlock = context.getTargetBlock(); Entity currentEntity = current == null ? null : current.get(); current = null; if (currentEntity != null) { currentEntity.remove(); } targetBlock = targetBlock.getRelative(BlockFace.UP); Location spawnLocation = targetBlock.getLocation(); Location sourceLocation = context.getLocation(); spawnLocation.setPitch(sourceLocation.getPitch()); spawnLocation.setYaw(sourceLocation.getYaw()); MageController controller = context.getController(); if (entityData == null) { String randomType = RandomUtils.weightedRandom(entityTypeProbability); try { entityData = controller.getMob(randomType); if (entityData == null) { entityData = new com.elmakers.mine.bukkit.entity.EntityData( EntityType.valueOf(randomType.toUpperCase())); } } catch (Throwable ex) { entityData = null; } } if (entityData == null) { return SpellResult.FAIL; } if (force) { controller.setForceSpawn(true); } Entity spawnedEntity = null; try { spawnedEntity = entityData.spawn(context.getController(), spawnLocation, spawnReason); } catch (Exception ex) { ex.printStackTrace(); } if (force) { controller.setForceSpawn(false); } if (spawnedEntity == null) { return SpellResult.FAIL; } if (!loot) { spawnedEntity.setMetadata("nodrops", new FixedMetadataValue(controller.getPlugin(), true)); } if (speed > 0) { Vector motion = direction; if (motion == null) { motion = context.getDirection(); } else { motion = motion.clone(); } if (dyOffset != 0) { motion.setY(motion.getY() + dyOffset); } motion.normalize(); motion.multiply(speed); CompatibilityUtils.setEntityMotion(spawnedEntity, motion); } Collection<EffectPlayer> projectileEffects = context.getEffects("spawned"); for (EffectPlayer effectPlayer : projectileEffects) { effectPlayer.start(spawnedEntity.getLocation(), spawnedEntity, null, null); } context.registerForUndo(spawnedEntity); if (track) { current = new WeakReference<Entity>(spawnedEntity); } if (setTarget) { context.setTargetEntity(spawnedEntity); } return SpellResult.CAST; }
/* * (non-Javadoc) * @see de.oppermann.bastian.spleef.util.command.AbstractArgument#executeForPlayer(org.bukkit.entity.Player, org.bukkit.command.Command, java.lang.String[]) */ @Override public CommandResult executeForPlayer(Player player, Command cmd, String[] args) { if (args.length == 4) { if (!player.hasPermission(getPermission())) { return CommandResult.NO_PERMISSION; } SpleefArena arena = null; for (SpleefArena sArena : SpleefArena.getSpleefArenas()) { if (sArena.getName().equals(args[1])) { arena = sArena; break; } } if (arena == null) { player.sendMessage(Language.NO_ARENA_WITH_NAME.toString().replace("%arena%", args[1])); return CommandResult.SUCCESS; } if (args[2].equalsIgnoreCase(Language.FLAG_ENABLED.toString())) { boolean enabled = args[3].equalsIgnoreCase(Language.VALUE_TRUE.toString()); String strValue = enabled ? Language.VALUE_TRUE.toString() : Language.VALUE_FALSE.toString(); player.sendMessage( Language.SUCCESSFULLY_SET_VALUE .toString() .replace("%flag%", Language.FLAG_ENABLED.toString()) .replace("%value%", strValue)); arena.getConfiguration().setDisabled(!enabled); SpleefMain.getInstance() .getArenaAccessor(arena.getName()) .getConfig() .set("enabled", enabled); SpleefMain.getInstance().getArenaAccessor(arena.getName()).saveConfig(); return CommandResult.SUCCESS; } if (args[2].equalsIgnoreCase(Language.FLAG_SNOWBALLS_ENABLED.toString())) { boolean enabled = args[3].equalsIgnoreCase(Language.VALUE_TRUE.toString()); String strValue = enabled ? Language.VALUE_TRUE.toString() : Language.VALUE_FALSE.toString(); player.sendMessage( Language.SUCCESSFULLY_SET_VALUE .toString() .replace("%flag%", Language.FLAG_ENABLED.toString()) .replace("%value%", strValue)); arena.getConfiguration().setEnableSnowballs(enabled); SpleefMain.getInstance() .getArenaAccessor(arena.getName()) .getConfig() .set("snowballs.enabled", enabled); SpleefMain.getInstance().getArenaAccessor(arena.getName()).saveConfig(); return CommandResult.SUCCESS; } if (args[2].equalsIgnoreCase(Language.FLAG_MAX_SNOWBALLS.toString())) { int maxSnowballs; try { maxSnowballs = Integer.valueOf(args[3]); } catch (NumberFormatException e) { player.sendMessage(Language.VALUE_MUST_BE_A_NUMBER.toString()); return CommandResult.SUCCESS; } player.sendMessage( Language.SUCCESSFULLY_SET_VALUE .toString() .replace("%flag%", Language.FLAG_ENABLED.toString()) .replace("%value%", String.valueOf(maxSnowballs))); arena.getConfiguration().setMaxSnowballs(maxSnowballs); SpleefMain.getInstance() .getArenaAccessor(arena.getName()) .getConfig() .set("snowballs.maxSnowballs", maxSnowballs); SpleefMain.getInstance().getArenaAccessor(arena.getName()).saveConfig(); return CommandResult.SUCCESS; } if (args[2].equalsIgnoreCase(Language.FLAG_MODE.toString())) { if (args[3].equalsIgnoreCase(Language.VALUE_MODE_NORMAL.toString())) { arena.getConfiguration().setMode(SpleefMode.NORMAL); player.sendMessage( Language.SUCCESSFULLY_SET_VALUE .toString() .replace("%flag%", Language.FLAG_MODE.toString()) .replace("%value%", Language.VALUE_MODE_NORMAL.toString())); SpleefMain.getInstance() .getArenaAccessor(arena.getName()) .getConfig() .set("mode", arena.getConfiguration().getMode().name().toLowerCase()); SpleefMain.getInstance().getArenaAccessor(arena.getName()).saveConfig(); return CommandResult.SUCCESS; } if (args[3].equalsIgnoreCase(Language.VALUE_MODE_BOWSPLEEF.toString())) { arena.getConfiguration().setMode(SpleefMode.BOWSPLEEF); player.sendMessage( Language.SUCCESSFULLY_SET_VALUE .toString() .replace("%flag%", Language.FLAG_MODE.toString()) .replace("%value%", Language.VALUE_MODE_BOWSPLEEF.toString())); SpleefMain.getInstance() .getArenaAccessor(arena.getName()) .getConfig() .set("mode", arena.getConfiguration().getMode().name().toLowerCase()); SpleefMain.getInstance().getArenaAccessor(arena.getName()).saveConfig(); return CommandResult.SUCCESS; } if (args[3].equalsIgnoreCase(Language.VALUE_MODE_SPLEGG.toString())) { arena.getConfiguration().setMode(SpleefMode.SPLEGG); player.sendMessage( Language.SUCCESSFULLY_SET_VALUE .toString() .replace("%flag%", Language.FLAG_MODE.toString()) .replace("%value%", Language.VALUE_MODE_SPLEGG.toString())); SpleefMain.getInstance() .getArenaAccessor(arena.getName()) .getConfig() .set("mode", arena.getConfiguration().getMode().name().toLowerCase()); SpleefMain.getInstance().getArenaAccessor(arena.getName()).saveConfig(); return CommandResult.SUCCESS; } if (args[3].equalsIgnoreCase(Language.VALUE_MODE_SPLEEF_RUN.toString())) { arena.getConfiguration().setMode(SpleefMode.SPLEEF_RUN); player.sendMessage( Language.SUCCESSFULLY_SET_VALUE .toString() .replace("%flag%", Language.FLAG_MODE.toString()) .replace("%value%", Language.VALUE_MODE_SPLEEF_RUN.toString())); SpleefMain.getInstance() .getArenaAccessor(arena.getName()) .getConfig() .set("mode", arena.getConfiguration().getMode().name().toLowerCase()); SpleefMain.getInstance().getArenaAccessor(arena.getName()).saveConfig(); return CommandResult.SUCCESS; } if (args[3].equalsIgnoreCase(Language.VALUE_MODE_SUPER_SPLEEF.toString())) { arena.getConfiguration().setMode(SpleefMode.SUPER_SPLEEF); player.sendMessage( Language.SUCCESSFULLY_SET_VALUE .toString() .replace("%flag%", Language.FLAG_MODE.toString()) .replace("%value%", Language.VALUE_MODE_SUPER_SPLEEF.toString())); SpleefMain.getInstance() .getArenaAccessor(arena.getName()) .getConfig() .set("mode", arena.getConfiguration().getMode().name().toLowerCase()); SpleefMain.getInstance().getArenaAccessor(arena.getName()).saveConfig(); return CommandResult.SUCCESS; } if (args[3].equalsIgnoreCase(Language.VALUE_MODE_SUPER_SPLEGG.toString())) { arena.getConfiguration().setMode(SpleefMode.SUPER_SPLEGG); player.sendMessage( Language.SUCCESSFULLY_SET_VALUE .toString() .replace("%flag%", Language.FLAG_MODE.toString()) .replace("%value%", Language.VALUE_MODE_SUPER_SPLEGG.toString())); SpleefMain.getInstance() .getArenaAccessor(arena.getName()) .getConfig() .set("mode", arena.getConfiguration().getMode().name().toLowerCase()); SpleefMain.getInstance().getArenaAccessor(arena.getName()).saveConfig(); return CommandResult.SUCCESS; } player.sendMessage(Language.UNKNOWN_MODE.toString()); return CommandResult.SUCCESS; } if (args[2].equalsIgnoreCase(Language.FLAG_CUSTOMINVENTORY_ENABLED.toString())) { boolean enabled = args[3].equalsIgnoreCase(Language.VALUE_TRUE.toString()); String strValue = enabled ? Language.VALUE_TRUE.toString() : Language.VALUE_FALSE.toString(); player.sendMessage( Language.SUCCESSFULLY_SET_VALUE .toString() .replace("%flag%", Language.FLAG_CUSTOMINVENTORY_ENABLED.toString()) .replace("%value%", strValue)); arena.getConfiguration().setCustomInventory(enabled); SpleefMain.getInstance() .getArenaAccessor(arena.getName()) .getConfig() .set("customInventory.enabled", enabled); SpleefMain.getInstance().getArenaAccessor(arena.getName()).saveConfig(); return CommandResult.SUCCESS; } if (args[2].equalsIgnoreCase(Language.FLAG_VEHICLE.toString())) { if (args[3].equalsIgnoreCase("none")) { arena.getConfiguration().setVehicle(null); SpleefMain.getInstance() .getArenaAccessor(arena.getName()) .getConfig() .set("vehicle", "none"); SpleefMain.getInstance().getArenaAccessor(arena.getName()).saveConfig(); player.sendMessage( Language.SUCCESSFULLY_SET_VALUE .toString() .replace("%flag%", Language.FLAG_VEHICLE.toString()) .replace("%value%", "none")); return CommandResult.SUCCESS; } EntityType type; try { type = EntityType.valueOf(args[3].toUpperCase()); } catch (IllegalArgumentException e) { player.sendMessage(Language.UNKNOWN_ENTITY.toString()); return CommandResult.SUCCESS; } if (!type.isSpawnable()) { player.sendMessage(Language.UNKNOWN_ENTITY.toString()); return CommandResult.SUCCESS; } /* TODO if (!type.getEntityClass().isAssignableFrom(LivingEntity.class)) { player.sendMessage(Language.UNKNOWN_ENTITY.toString()); return CommandResult.SUCCESS; } */ arena.getConfiguration().setVehicle(type); SpleefMain.getInstance() .getArenaAccessor(arena.getName()) .getConfig() .set("vehicle", type.name().toLowerCase()); SpleefMain.getInstance().getArenaAccessor(arena.getName()).saveConfig(); player.sendMessage( Language.SUCCESSFULLY_SET_VALUE .toString() .replace("%flag%", Language.FLAG_VEHICLE.toString()) .replace("%value%", type.name().toLowerCase())); return CommandResult.SUCCESS; } if (args[2].equalsIgnoreCase(Language.FLAG_INSTANT_BLOCK_DESTORY.toString())) { boolean enabled = args[3].equalsIgnoreCase(Language.VALUE_TRUE.toString()); String strValue = enabled ? Language.VALUE_TRUE.toString() : Language.VALUE_FALSE.toString(); player.sendMessage( Language.SUCCESSFULLY_SET_VALUE .toString() .replace("%flag%", Language.FLAG_INSTANT_BLOCK_DESTORY.toString()) .replace("%value%", strValue)); arena.getConfiguration().setInstanstBlockDestroy(enabled); SpleefMain.getInstance() .getArenaAccessor(arena.getName()) .getConfig() .set("instantBlockDestroy", enabled); SpleefMain.getInstance().getArenaAccessor(arena.getName()).saveConfig(); return CommandResult.SUCCESS; } if (args[2].equalsIgnoreCase(Language.FLAG_REWARD_MONEY_PARTICIPATION.toString())) { int reward; try { reward = Integer.valueOf(args[3]); } catch (NumberFormatException e) { player.sendMessage(Language.VALUE_MUST_BE_A_NUMBER.toString()); return CommandResult.SUCCESS; } player.sendMessage( Language.SUCCESSFULLY_SET_VALUE .toString() .replace("%flag%", Language.FLAG_REWARD_MONEY_PARTICIPATION.toString()) .replace("%value%", String.valueOf(reward))); arena.getConfiguration().setMoneyParticipationReward(reward); SpleefMain.getInstance() .getArenaAccessor(arena.getName()) .getConfig() .set("reward.money.participation", reward); SpleefMain.getInstance().getArenaAccessor(arena.getName()).saveConfig(); return CommandResult.SUCCESS; } if (args[2].equalsIgnoreCase(Language.FLAG_REWARD_MONEY_WINNING.toString())) { int reward; try { reward = Integer.valueOf(args[3]); } catch (NumberFormatException e) { player.sendMessage(Language.VALUE_MUST_BE_A_NUMBER.toString()); return CommandResult.SUCCESS; } player.sendMessage( Language.SUCCESSFULLY_SET_VALUE .toString() .replace("%flag%", Language.FLAG_REWARD_MONEY_WINNING.toString()) .replace("%value%", String.valueOf(reward))); arena.getConfiguration().setMoneyWinningReward(reward); SpleefMain.getInstance() .getArenaAccessor(arena.getName()) .getConfig() .set("reward.money.winning", reward); SpleefMain.getInstance().getArenaAccessor(arena.getName()).saveConfig(); return CommandResult.SUCCESS; } if (args[2].equalsIgnoreCase(Language.FLAG_REWARD_POINTS_PARTICIPATION.toString())) { int reward; try { reward = Integer.valueOf(args[3]); } catch (NumberFormatException e) { player.sendMessage(Language.VALUE_MUST_BE_A_NUMBER.toString()); return CommandResult.SUCCESS; } player.sendMessage( Language.SUCCESSFULLY_SET_VALUE .toString() .replace("%flag%", Language.FLAG_REWARD_POINTS_PARTICIPATION.toString()) .replace("%value%", String.valueOf(reward))); arena.getConfiguration().setPointsParticipationReward(reward); SpleefMain.getInstance() .getArenaAccessor(arena.getName()) .getConfig() .set("reward.points.participation", reward); SpleefMain.getInstance().getArenaAccessor(arena.getName()).saveConfig(); return CommandResult.SUCCESS; } if (args[2].equalsIgnoreCase(Language.FLAG_REWARD_POINTS_WINNING.toString())) { int reward; try { reward = Integer.valueOf(args[3]); } catch (NumberFormatException e) { player.sendMessage(Language.VALUE_MUST_BE_A_NUMBER.toString()); return CommandResult.SUCCESS; } player.sendMessage( Language.SUCCESSFULLY_SET_VALUE .toString() .replace("%flag%", Language.FLAG_REWARD_POINTS_WINNING.toString()) .replace("%value%", String.valueOf(reward))); arena.getConfiguration().setPointsWinningReward(reward); SpleefMain.getInstance() .getArenaAccessor(arena.getName()) .getConfig() .set("reward.points.winning", reward); SpleefMain.getInstance().getArenaAccessor(arena.getName()).saveConfig(); return CommandResult.SUCCESS; } if (args[2].equalsIgnoreCase(Language.FLAG_FREEZE_PLAYERS.toString())) { boolean enabled = args[3].equalsIgnoreCase(Language.VALUE_TRUE.toString()); String strValue = enabled ? Language.VALUE_TRUE.toString() : Language.VALUE_FALSE.toString(); player.sendMessage( Language.SUCCESSFULLY_SET_VALUE .toString() .replace("%flag%", Language.FLAG_FREEZE_PLAYERS.toString()) .replace("%value%", strValue)); arena.getConfiguration().setFreezePlayers(enabled); SpleefMain.getInstance() .getArenaAccessor(arena.getName()) .getConfig() .set("freezePlayers", enabled); SpleefMain.getInstance().getArenaAccessor(arena.getName()).saveConfig(); return CommandResult.SUCCESS; } if (args[2].equalsIgnoreCase(Language.FLAG_MODIFY_GRAVITY.toString())) { boolean enabled = args[3].equalsIgnoreCase(Language.VALUE_TRUE.toString()); String strValue = enabled ? Language.VALUE_TRUE.toString() : Language.VALUE_FALSE.toString(); player.sendMessage( Language.SUCCESSFULLY_SET_VALUE .toString() .replace("%flag%", Language.FLAG_MODIFY_GRAVITY.toString()) .replace("%value%", strValue)); arena.getConfiguration().setModifyGravity(enabled); SpleefMain.getInstance() .getArenaAccessor(arena.getName()) .getConfig() .set("modifygravity.enable", enabled); SpleefMain.getInstance().getArenaAccessor(arena.getName()).saveConfig(); return CommandResult.SUCCESS; } if (args[2].equalsIgnoreCase(Language.FLAG_GRAVITY.toString())) { double gravity; try { gravity = Double.valueOf(args[3]); } catch (NumberFormatException e) { player.sendMessage(Language.VALUE_MUST_BE_A_NUMBER_BETWEEN_0_AND_1.toString()); return CommandResult.SUCCESS; } if (gravity <= 0 || gravity >= 1) { player.sendMessage(Language.VALUE_MUST_BE_A_NUMBER_BETWEEN_0_AND_1.toString()); return CommandResult.SUCCESS; } player.sendMessage( Language.SUCCESSFULLY_SET_VALUE .toString() .replace("%flag%", Language.FLAG_GRAVITY.toString()) .replace("%value%", String.valueOf(gravity))); arena.getConfiguration().setGravity(gravity); SpleefMain.getInstance() .getArenaAccessor(arena.getName()) .getConfig() .set("modifygravity.gravity", gravity); SpleefMain.getInstance().getArenaAccessor(arena.getName()).saveConfig(); return CommandResult.SUCCESS; } if (args[2].equalsIgnoreCase(Language.FLAG_MIN_PLAYERS.toString())) { int minPlayers; try { minPlayers = Integer.valueOf(args[3]); } catch (NumberFormatException e) { player.sendMessage(Language.VALUE_MUST_BE_A_NUMBER.toString()); return CommandResult.SUCCESS; } minPlayers = minPlayers < 2 ? 2 : minPlayers; // must be at least 2 player.sendMessage( Language.SUCCESSFULLY_SET_VALUE .toString() .replace("%flag%", Language.FLAG_MIN_PLAYERS.toString()) .replace("%value%", String.valueOf(minPlayers))); arena.getConfiguration().setMinPlayers(minPlayers); SpleefMain.getInstance() .getArenaAccessor(arena.getName()) .getConfig() .set("minPlayers", minPlayers); SpleefMain.getInstance().getArenaAccessor(arena.getName()).saveConfig(); return CommandResult.SUCCESS; } if (args[2].equalsIgnoreCase(Language.FLAG_REQUIRED_PLAYERS_TO_START_COUNTDOWN.toString())) { int requiredPlayersToStartCountdown; try { requiredPlayersToStartCountdown = Integer.valueOf(args[3]); } catch (NumberFormatException e) { player.sendMessage(Language.VALUE_MUST_BE_A_NUMBER.toString()); return CommandResult.SUCCESS; } requiredPlayersToStartCountdown = requiredPlayersToStartCountdown < 2 ? 2 : requiredPlayersToStartCountdown; // must be at least 2 player.sendMessage( Language.SUCCESSFULLY_SET_VALUE .toString() .replace("%flag%", Language.FLAG_REQUIRED_PLAYERS_TO_START_COUNTDOWN.toString()) .replace("%value%", String.valueOf(requiredPlayersToStartCountdown))); arena.getConfiguration().setMinPlayers(requiredPlayersToStartCountdown); SpleefMain.getInstance() .getArenaAccessor(arena.getName()) .getConfig() .set("requiredPlayersToStartCountdown", requiredPlayersToStartCountdown); SpleefMain.getInstance().getArenaAccessor(arena.getName()).saveConfig(); return CommandResult.SUCCESS; } if (args[2].equalsIgnoreCase(Language.FLAG_SPECTATE_TYPE.toString())) { SpectateType spectateType = SpectateType.NONE; String spectateTypeName = Language.SPECTATE_TYPE_NONE.toString(); if (args[3].equalsIgnoreCase(Language.SPECTATE_TYPE_NORMAL.toString())) { spectateType = SpectateType.NORMAL; spectateTypeName = Language.SPECTATE_TYPE_NORMAL.toString(); } if (args[3].equalsIgnoreCase(Language.SPECTATE_TYPE_NORMAL_FLYING.toString())) { spectateType = SpectateType.NORMAL_FLYING; spectateTypeName = Language.SPECTATE_TYPE_NORMAL_FLYING.toString(); } if (args[3].equalsIgnoreCase(Language.SPECTATE_TYPE_GAMEMODE_3.toString())) { spectateType = SpectateType.GAMEMODE_3; spectateTypeName = Language.SPECTATE_TYPE_GAMEMODE_3.toString(); } player.sendMessage( Language.SUCCESSFULLY_SET_VALUE .toString() .replace("%flag%", Language.FLAG_SPECTATE_TYPE.toString()) .replace("%value%", spectateTypeName)); arena.getConfiguration().setSpectateType(spectateType); SpleefMain.getInstance() .getArenaAccessor(arena.getName()) .getConfig() .set("spectateType", spectateType.name().toLowerCase()); SpleefMain.getInstance().getArenaAccessor(arena.getName()).saveConfig(); return CommandResult.SUCCESS; } if (args[2].equalsIgnoreCase(Language.FLAG_ARENA_COUNTDOWN.toString())) { int arenaCountdown; try { arenaCountdown = Integer.valueOf(args[3]); } catch (NumberFormatException e) { player.sendMessage(Language.VALUE_MUST_BE_A_NUMBER.toString()); return CommandResult.SUCCESS; } arenaCountdown = arenaCountdown < 0 ? 0 : arenaCountdown; // must be at least 0 player.sendMessage( Language.SUCCESSFULLY_SET_VALUE .toString() .replace("%flag%", Language.FLAG_ARENA_COUNTDOWN.toString()) .replace("%value%", String.valueOf(arenaCountdown))); arena.getConfiguration().setArenaCountdown(arenaCountdown); SpleefMain.getInstance() .getArenaAccessor(arena.getName()) .getConfig() .set("arenaCountdown", arenaCountdown); SpleefMain.getInstance().getArenaAccessor(arena.getName()).saveConfig(); return CommandResult.SUCCESS; } if (args[2].equalsIgnoreCase(Language.FLAG_LOBBY_COUNTDOWN.toString())) { int lobbyCountdown; try { lobbyCountdown = Integer.valueOf(args[3]); } catch (NumberFormatException e) { player.sendMessage(Language.VALUE_MUST_BE_A_NUMBER.toString()); return CommandResult.SUCCESS; } lobbyCountdown = lobbyCountdown < 5 ? 5 : lobbyCountdown; // must be at least 5 player.sendMessage( Language.SUCCESSFULLY_SET_VALUE .toString() .replace("%flag%", Language.FLAG_LOBBY_COUNTDOWN.toString()) .replace("%value%", String.valueOf(lobbyCountdown))); arena.getConfiguration().setLobbyCountdown(lobbyCountdown); SpleefMain.getInstance() .getArenaAccessor(arena.getName()) .getConfig() .set("lobbyCountdown", lobbyCountdown); SpleefMain.getInstance().getArenaAccessor(arena.getName()).saveConfig(); return CommandResult.SUCCESS; } player.sendMessage(Language.UNKNOWN_FLAG.toString().replace("%flag%", args[2])); return CommandResult.SUCCESS; } // flags without arguments if (args.length == 3) { if (!player.hasPermission(getPermission())) { return CommandResult.NO_PERMISSION; } SpleefArena arena = null; for (SpleefArena sArena : SpleefArena.getSpleefArenas()) { if (sArena.getName().equals(args[1])) { arena = sArena; break; } } if (arena == null) { player.sendMessage(Language.NO_ARENA_WITH_NAME.toString().replace("%arena%", args[1])); return CommandResult.SUCCESS; } if (args[2].equalsIgnoreCase(Language.FLAG_CUSTOMINVENTORY.toString())) { ItemStack[] contents = player.getInventory().getContents(); for (int i = 0; i < contents.length; i++) { SpleefMain.getInstance() .getArenaAccessor(arena.getName()) .getConfig() .set("customInventory.items." + i, contents[i]); } arena.getConfiguration().setCustomInventoryContents(contents); arena.getConfiguration().setCustomInventory(true); SpleefMain.getInstance() .getArenaAccessor(arena.getName()) .getConfig() .set("customInventory.enabled", true); SpleefMain.getInstance().getArenaAccessor(arena.getName()).saveConfig(); player.sendMessage(Language.SUCCESSFULLY_SET_CUSTOMINVENTORY.toString()); return CommandResult.SUCCESS; } if (args[2].equalsIgnoreCase(Language.FLAG_SPECTATE_LOCATION.toString())) { arena.getConfiguration().setSpectateLocation(player.getLocation()); SpleefMain.getInstance() .getArenaAccessor(arena.getName()) .getConfig() .set("spectateLocation.x", player.getLocation().getX()); SpleefMain.getInstance() .getArenaAccessor(arena.getName()) .getConfig() .set("spectateLocation.y", player.getLocation().getY()); SpleefMain.getInstance() .getArenaAccessor(arena.getName()) .getConfig() .set("spectateLocation.z", player.getLocation().getZ()); SpleefMain.getInstance() .getArenaAccessor(arena.getName()) .getConfig() .set("spectateLocation.yaw", player.getLocation().getYaw()); SpleefMain.getInstance() .getArenaAccessor(arena.getName()) .getConfig() .set("spectateLocation.pitch", player.getLocation().getPitch()); SpleefMain.getInstance().getArenaAccessor(arena.getName()).saveConfig(); player.sendMessage(Language.SUCCESSFULLY_SET_SPECTATE_LOCATION.toString()); return CommandResult.SUCCESS; } } return CommandResult.ERROR; }
private Object getMaterialKey(String materialName) { boolean isMat = false, isTree = false, isEntity = false; // test to see if the material has a "type" specifier, record the specifier and remover it if (materialName.startsWith("mat_")) { materialName = materialName.replaceFirst("mat\\_", ""); isMat = true; } else if (materialName.startsWith("tree_")) { materialName = materialName.replaceFirst("tree\\_", ""); isTree = true; } else if (materialName.startsWith("entity_")) { materialName = materialName.replaceFirst("entity\\_", ""); isEntity = true; } // match name to bukkit objects TreeType treeType; try { treeType = TreeType.valueOf(materialName); } catch (IllegalArgumentException e) { treeType = null; } Material material = Material.getMaterial(materialName); EntityType entityType; try { entityType = EntityType.valueOf(materialName); } catch (IllegalArgumentException e) { entityType = null; } // if the type was specifically specified, thenregister only for that type of object // warn if that object doesn't actully match anything if (isMat) { if (material != null) return material; LOG.warning("config: \"" + materialName + "\" specified material but does not match one."); } if (isTree) { if (treeType != null) return treeType; LOG.warning( "config: \"" + materialName + "\" specified tree type name but does not match one."); } if (isEntity) { if (entityType != null) return entityType; LOG.warning( "config: \"" + materialName + "\" specified entity type name but does not match one."); } // wanr user if they are unsing an ambiguous name if (material != null && entityType != null && treeType != null) LOG.warning( "config name: \"" + materialName + "\" ambiguous, could be material, tree type, or entity type."); if (treeType != null && material != null) LOG.warning( "config name: \"" + materialName + "\" ambiguous, could be material or tree type."); if (material != null && entityType != null) LOG.warning( "config name: \"" + materialName + "\" ambiguous, could be material or entity type."); if (treeType != null && entityType != null) LOG.warning( "config name: \"" + materialName + "\" ambiguous, could be tree type or entity type."); // finally just match any type if (material != null) return material; if (treeType != null) return treeType; if (entityType != null) return entityType; return null; }