public static String formatString(final IUser user, final String permBase, final String input) { if (input == null) { return null; } String message; if (Permissions.hasPermission(user.getPlayer(), permBase + ".color")) { message = Util.replaceColor(input, REPLACE_COLOR_PATTERN); } else { message = Util.stripColor(input, VANILLA_COLOR_PATTERN); } if (Permissions.hasPermission(user.getPlayer(), permBase + ".magic")) { message = Util.replaceColor(message, REPLACE_MAGIC_PATTERN); } else { message = Util.stripColor(message, VANILLA_MAGIC_PATTERN); } if (Permissions.hasPermission(user.getPlayer(), permBase + ".format")) { message = Util.replaceColor(message, REPLACE_FORMAT_PATTERN); } else { message = Util.stripColor(message, VANILLA_FORMAT_PATTERN); } return message; }
private String getLocal(final IUser user, final long radius) { final Location loc = user.getPlayer().getLocation(); final World world = loc.getWorld(); final StringBuilder output = new StringBuilder(); final long radiusSquared = radius * radius; Player userPlayer = user.getPlayer(); for (Player onlinePlayer : server.getOnlinePlayers()) { if (!onlinePlayer.getName().equals(user.getName()) && userPlayer.canSee(onlinePlayer)) { final Location playerLoc = onlinePlayer.getLocation(); if (playerLoc.getWorld() != world) { continue; } final long delta = (long)playerLoc.distanceSquared(loc); if (delta < radiusSquared) { if (output.length() > 0) { output.append(", "); } output.append(onlinePlayer.getDisplayName()).append("§f(§4").append((long)Math.sqrt(delta)).append("m§f)"); } } } return output.length() > 1 ? output.toString() : _("none"); }
/** * Used to get the time and inform */ private void getUsersTime(final CommandSender sender, final Collection<IUser> users) { if (users.size() > 1) { sender.sendMessage(_("pTimePlayers")); } for (IUser user : users) { if (user.getPlayer().getPlayerTimeOffset() == 0) { sender.sendMessage(_("pTimeNormal", user.getName())); } else { String time = DescParseTickFormat.format(user.getPlayer().getPlayerTime()); if (!user.getPlayer().isPlayerTimeRelative()) { sender.sendMessage(_("pTimeCurrentFixed", user.getName(), time)); } else { sender.sendMessage(_("pTimeCurrent", user.getName(), time)); } } } }
@Override public void run(final IUser user, final String commandLabel, final String[] args) throws Exception { ess.getPlugin().callSuicideEvent(user.getPlayer()); user.getPlayer().damage(Short.MAX_VALUE); user.sendMessage(_("suicideMessage")); user.setDisplayNick(); ess.broadcastMessage(user,_("suicideSuccess", user.getPlayer().getDisplayName())); }
/** * Used to set the time and inform of the change */ private void setUsersTime(final CommandSender sender, final Collection<IUser> users, final Long ticks, boolean relative) { // Update the time if (ticks == null) { // Reset for (IUser user : users) { user.getPlayer().resetPlayerTime(); } } else { // Set for (IUser user : users) { final World world = user.getPlayer().getWorld(); long time = user.getPlayer().getPlayerTime(); time -= time % 24000; time += 24000 + ticks; if (relative) { time -= world.getTime(); } user.getPlayer().setPlayerTime(time, relative); } } final StringBuilder msg = new StringBuilder(); for (IUser user : users) { if (msg.length() > 0) { msg.append(", "); } msg.append(user.getName()); } // Inform the sender of the change if (ticks == null) { sender.sendMessage(_("pTimeReset", msg.toString())); } else { String time = DescParseTickFormat.format(ticks); if (!relative) { sender.sendMessage(_("pTimeSetFixed", time, msg.toString())); } else { sender.sendMessage(_("pTimeSet", time, msg.toString())); } } }
@Override protected void run(final CommandSender sender, final String commandLabel, final String[] args) throws Exception { if (args.length < 2) { throw new NotEnoughArgumentsException(); } sender.sendMessage(_("Teleporting...")); final IUser target = ess.getUserMap().getUser(args[0]); final IUser toPlayer = ess.getUserMap().getUser(args[1]); target.getTeleport().now(toPlayer.getPlayer(), false, TeleportCause.COMMAND); target.sendMessage(_("{0} teleported you to {1}.", Console.NAME, toPlayer.getPlayer().getDisplayName())); }
@Override public void run(final CommandSender sender, final String commandLabel, final String[] args) throws Exception { if (args.length < 4) { throw new NotEnoughArgumentsException(); } IUser user = ess.getUserMap().getUser(server.getPlayer(args[0])); final int x = Integer.parseInt(args[1]); final int y = Integer.parseInt(args[2]); final int z = Integer.parseInt(args[3]); final Location location = new Location(user.getPlayer().getWorld(), x, y, z); if (args.length > 4) { location.setYaw((Float.parseFloat(args[4]) + 180 + 360) % 360); } if (args.length > 5) { location.setPitch(Float.parseFloat(args[5])); } sender.sendMessage(_("teleporting")); user.sendMessage(_("teleporting")); user.getTeleport().teleport(location, null, TeleportCause.COMMAND); }
@Override public void run(final IUser user, final String commandLabel, final String[] args) throws Exception { if (args.length < 3) { throw new NotEnoughArgumentsException(); } final int x = Integer.parseInt(args[0]); final int y = Integer.parseInt(args[1]); final int z = Integer.parseInt(args[2]); final Location location = new Location(user.getPlayer().getWorld(), x, y, z); if (args.length > 3) { location.setYaw((Float.parseFloat(args[3]) + 180 + 360) % 360); } if (args.length > 4) { location.setPitch(Float.parseFloat(args[4])); } final Trade charge = new Trade(commandName, ess); charge.isAffordableFor(user); user.sendMessage(_("teleporting")); user.getTeleport().teleport(location, charge, TeleportCause.COMMAND); throw new NoChargeException(); }
@Override protected void run(final CommandSender sender, final String commandLabel, final String[] args) throws Exception { if (args.length < 1) { throw new NotEnoughArgumentsException(); } final String whois = args[0].toLowerCase(Locale.ENGLISH); boolean foundUser = false; final Player player = sender instanceof IUser ? ((IUser)sender).getPlayer() : null; final IUserMap userMap = ess.getUserMap(); for (Player onlinePlayer : server.getOnlinePlayers()) { final IUser u = userMap.getUser(onlinePlayer); if (player != null && !player.canSee(onlinePlayer)) { continue; } final Player realPlayer = u.getPlayer(); final String displayName = FormatUtil.stripFormat(realPlayer.getDisplayName()).toLowerCase(Locale.ENGLISH); if (displayName.contains(whois)) { foundUser = true; sender.sendMessage(realPlayer.getDisplayName() + " " + _("is") + " " + u.getName()); } } if (!foundUser) { throw new NoSuchFieldException(_("Player not found.")); } }
private boolean usePowertools(final IUser user) { final ItemStack is = user.getPlayer().getItemInHand(); if (is == null || is.getTypeId() == 0) { return false; } final List<String> commandList = user.getData().getPowertool(is.getType()); if (commandList == null || commandList.isEmpty()) { return false; } boolean used = false; // We need to loop through each command and execute for (final String command : commandList) { if (command.matches(".*\\{player\\}.*")) { //user.sendMessage("Click a player to use this command"); } else if (command.startsWith("c:")) { used = true; user.getPlayer().chat(command.substring(2)); } else { used = true; ess.getPlugin().scheduleSyncDelayedTask( new Runnable() { @Override public void run() { user.getServer().dispatchCommand(user.getPlayer(), command); } }); } } return used; }
@Override public void run(final IUser user, final String commandLabel, final String[] args) throws Exception { if (args.length < 1) { throw new NotEnoughArgumentsException(); } ess.getJails().setJail(args[0], user.getPlayer().getLocation()); user.sendMessage(_("§6Jail§c {0} §6has been set.", Util.sanitizeString(args[0]))); }
@EventHandler(priority = EventPriority.HIGH, ignoreCancelled = true) public void onPlayerEggThrow(final PlayerEggThrowEvent event) { final IUser user = userMap.getUser(event.getPlayer()); final ItemStack hand = new ItemStack(Material.EGG, 1); if (user.getData().hasUnlimited(hand.getType())) { user.getPlayer().getInventory().addItem(hand); user.getPlayer().updateInventory(); } }
public static String formatMessage(final IUser user, final String permBase, final String input) { if (input == null) { return null; } String message = formatString(user, permBase, input); if (!Permissions.hasPermission(user.getPlayer(), permBase + ".url")) { message = Util.blockURL(message); } return message; }
@Override public void run(final IUser user, final String commandLabel, final String[] args) throws Exception { if (args.length > 0 && Permissions.CLEARINVENTORY_OTHERS.isAuthorized(user)) { IUser p = ess.getUserMap().matchUserExcludingHidden(args[0], getPlayerOrNull(user)); if (p != null) { final Player player = p.getPlayer(); player.getInventory().clear(); user.sendMessage(_("§6Inventory of §c{0}§6 cleared.", player.getDisplayName())); } else { throw new Exception(_("§4Player not found.")); } } else { user.getPlayer().getInventory().clear(); user.sendMessage(_("§6Inventory cleared.")); } }
private void goHome(final IUser user, final IUser player, final String home, final Trade charge) throws Exception { final Location loc = player.getHome(home); if (loc == null) { throw new NotEnoughArgumentsException(); } if (user.getPlayer().getWorld() != loc.getWorld() && ess.getSettings().getData().getGeneral().isWorldHomePermissions() && !Permissions.WORLD.isAuthorized( user, loc.getWorld().getName())) { throw new Exception(_("noPerm", "essentials.world." + loc.getWorld().getName())); } user.getTeleport().home(loc, charge); }
@Override protected void run(final IUser user, final String commandLabel, final String[] args) throws Exception { long radius = ess.getSettings().getData().getCommands().getNear().getDefaultRadius(); IUser otherUser = null; if (args.length > 0) { try { otherUser = ess.getUserMap().matchUserExcludingHidden(args[0], user.getPlayer()); } catch (Exception ex) { try { radius = Long.parseLong(args[0]); } catch (NumberFormatException e) { } } if (args.length > 1 && otherUser != null) { try { radius = Long.parseLong(args[1]); } catch (NumberFormatException e) { } } } if (otherUser == null || Permissions.NEAR_OTHERS.isAuthorized(user)) { user.sendMessage(_("Players nearby: {0}", getLocal(otherUser == null ? user : otherUser, radius))); } else { user.sendMessage(_("You do not have access to that command.")); } }
@Override public void payUser(final IUser reciever, final double value) throws Exception { if (value == 0) { return; } if (canAfford(value)) { setMoney(getMoney() - value); reciever.setMoney(reciever.getMoney() + value); sendMessage(_("{0} has been sent to {1}", FormatUtil.displayCurrency(value, ess), reciever.getPlayer().getDisplayName())); reciever.sendMessage(_("{0} has been received from {1}", FormatUtil.displayCurrency(value, ess), getPlayer().getDisplayName())); } else { throw new Exception(_("You do not have sufficient funds.")); } }
@EventHandler(priority = EventPriority.MONITOR) public void onPlayerQuit(final PlayerQuitEvent event) { final String quitMessage = ess.getSettings().getData().getGeneral().getLeaveMessage(); if (quitMessage != null) { final IText itOutput = new KeywordReplacer(new SimpleTextInput(quitMessage), userMap.getUser(event.getPlayer()), ess); final SimpleTextPager stPager = new SimpleTextPager(itOutput); event.setQuitMessage(FormatUtil.replaceFormat(stPager.getString(0))); } else { event.setQuitMessage(null); } final IUser user = userMap.getUser(event.getPlayer()); final ISettings settings = ess.getSettings(); if (settings.getData().getCommands().getGod().isRemoveOnDisconnect() && user.isGodModeEnabled()) { user.setGodModeEnabled(false); } if (user.isVanished()) { user.toggleVanished(); } if (user.getData().getInventory() != null) { user.getPlayer().getInventory().setContents(user.getData().getInventory().getBukkitInventory()); user.getData().setInventory(null); } user.updateActivity(false); //user.getPlayer().dispose(); if (settings.getData().getGeneral().isPtClearOnQuit()) { user.getData().clearAllPowertools(); user.queueSave(); user.sendMessage(_("§6All powertool commands have been cleared.")); } }
@Override public String getMessage() { if (!matches.isEmpty()) { StringBuilder builder = new StringBuilder(matches.size() * 16); for (IUser iUser : matches) { if (builder.length() > 0) { builder.append(", "); } builder.append(iUser.getPlayer().getDisplayName()); } return _("tooManyMatchesWithList", builder.toString()); } else { return _("tooManyMatches"); } }
@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) public void onPlayerCommandPreprocess(final PlayerCommandPreprocessEvent event) { final IUser user = userMap.getUser(event.getPlayer()); final String cmd = spaceSplit.split(event.getMessage().toLowerCase(Locale.ENGLISH))[0].replace("/", "").toLowerCase(Locale.ENGLISH); if (ess.getSettings().getData().getCommands().getSocialspy().getSocialspyCommands().contains(cmd)) { for (Player player : ess.getServer().getOnlinePlayers()) { IUser spyer = userMap.getUser(player); if (spyer.getData().isSocialspy() && !user.equals(spyer)) { player.sendMessage(user.getPlayer().getDisplayName() + " : " + event.getMessage()); } } } if (!cmd.equalsIgnoreCase("afk")) { user.updateActivity(true); } }
private Trade rechargeSign(final ISign sign, final IEssentials ess, final IUser player) throws SignException, ChargeException { final Trade trade = getTrade(sign, 2, false, false, ess); ItemStack itemInHand = player.getPlayer().getItemInHand(); if (trade.getItemStack() != null && itemInHand != null && trade.getItemStack().getTypeId() == itemInHand.getTypeId() && trade.getItemStack().getDurability() == itemInHand.getDurability() && trade.getItemStack().getEnchantments().equals(itemInHand.getEnchantments())) { int amount = itemInHand.getAmount(); amount -= amount % trade.getItemStack().getAmount(); if (amount > 0) { final ItemStack stack = itemInHand.clone(); stack.setAmount(amount); final Trade store = new Trade(stack, ess); addAmount(sign, 2, store, ess); store.charge(player); return store; } } return null; }
//TODO: Implement charge costs: final Trade charge = new Trade("enchant-" + enchantmentName, ess); @Override protected void run(final IUser user, final String commandLabel, final String[] args) throws Exception { final ItemStack stack = user.getPlayer().getItemInHand(); if (stack == null) { throw new Exception(_("nothingInHand")); } if (args.length == 0) { final Set<String> enchantmentslist = new TreeSet<String>(); for (Map.Entry<String, Enchantment> entry : Enchantments.entrySet()) { final String enchantmentName = entry.getValue().getName().toLowerCase(Locale.ENGLISH); if (enchantmentslist.contains(enchantmentName) || Permissions.ENCHANT.isAuthorized(user, enchantmentName)) { enchantmentslist.add(entry.getKey()); //enchantmentslist.add(enchantmentName); } } throw new NotEnoughArgumentsException(_("enchantments", Util.joinList(enchantmentslist.toArray()))); } int level = -1; if (args.length > 1) { try { level = Integer.parseInt(args[1]); } catch (NumberFormatException ex) { level = -1; } } final boolean allowUnsafe = Permissions.ENCHANT_UNSAFE.isAuthorized(user); final Enchantment enchantment = getEnchantment(args[0], user); if (level < 0 || (!allowUnsafe && level > enchantment.getMaxLevel())) { level = enchantment.getMaxLevel(); } if (level == 0) { stack.removeEnchantment(enchantment); } else { if (allowUnsafe) { stack.addUnsafeEnchantment(enchantment, level); } else { stack.addEnchantment(enchantment, level); } } user.getPlayer().getInventory().setItemInHand(stack); user.getPlayer().updateInventory(); final String enchantmentName = enchantment.getName().toLowerCase(Locale.ENGLISH); if (level == 0) { user.sendMessage(_("enchantmentRemoved", enchantmentName.replace('_', ' '))); } else { user.sendMessage(_("enchantmentApplied", enchantmentName.replace('_', ' '))); } }
@Override public void run(final IUser user, final String commandLabel, final String[] args) throws Exception { if (args.length < 1) { throw new NotEnoughArgumentsException(); } if (args[0].equalsIgnoreCase("hand")) { final ItemStack item = user.getPlayer().getItemInHand(); if (item == null) { throw new Exception(_("repairInvalidType")); } if (!item.getEnchantments().isEmpty() && !Permissions.REPAIR_ENCHANTED.isAuthorized(user)) { throw new Exception(_("repairEnchanted")); } final String itemName = item.getType().toString().toLowerCase(Locale.ENGLISH); final Trade charge = new Trade("repair-" + itemName.replace('_', '-'), ess); charge.isAffordableFor(user); repairItem(item); charge.charge(user); user.sendMessage(_("repair", itemName.replace('_', ' '))); } else if (args[0].equalsIgnoreCase("all")) { final Trade charge = new Trade("repair-all", ess); charge.isAffordableFor(user); final List<String> repaired = new ArrayList<String>(); repairItems(user.getPlayer().getInventory().getContents(), user, repaired); if (Permissions.REPAIR_ARMOR.isAuthorized(user)) { repairItems(user.getPlayer().getInventory().getArmorContents(), user, repaired); } if (repaired.isEmpty()) { throw new Exception(_("repairNone")); } else { user.sendMessage(_("repair", Util.joinList(repaired))); } charge.charge(user); } else { throw new NotEnoughArgumentsException(); } }
protected final Trade getTrade(final ISign sign, final int amountIndex, final int itemIndex, final IUser player, final IEssentials ess) throws SignException { if (sign.getLine(itemIndex).equalsIgnoreCase("exp") || sign.getLine(itemIndex).equalsIgnoreCase("xp")) { final int amount = getIntegerPositive(sign.getLine(amountIndex)); return new Trade(amount, ess); } final ItemStack item = getItemStack(sign.getLine(itemIndex), 1, ess); final int amount = Math.min( getIntegerPositive(sign.getLine(amountIndex)), item.getType().getMaxStackSize() * player.getPlayer().getInventory().getSize()); if (item.getTypeId() == 0 || amount < 1) { throw new SignException(_("Quantities must be greater than 0.")); } item.setAmount(amount); return new Trade(item, ess); }
@Override public int compareTo(final IUser t) { return FormatUtil.stripColor(this.getPlayer().getDisplayName()).compareTo(FormatUtil.stripColor(t.getPlayer().getDisplayName())); }
@Override public void run(final IUser user, final String commandLabel, final String[] args) throws Exception { @Cleanup ISettings settings = ess.getSettings(); settings.acquireReadLock(); switch (args.length) { case 0: throw new NotEnoughArgumentsException(); case 1: @Cleanup final IUser player = ess.getUserMap().matchUser(args[0], false, false); player.acquireReadLock(); if (!player.getData().isTeleportEnabled()) { throw new Exception(_("teleportDisabled", player.getPlayer().getDisplayName())); } if (user.getPlayer().getWorld() != player.getPlayer().getWorld() && settings.getData().getGeneral().isWorldTeleportPermissions() && !Permissions.WORLD.isAuthorized(user, player.getPlayer().getWorld().getName())) { throw new Exception(_("noPerm", "essentials.world." + player.getPlayer().getWorld().getName())); } user.sendMessage(_("teleporting")); final Trade charge = new Trade(commandName, ess); charge.isAffordableFor(user); user.getTeleport().teleport(player.getPlayer(), charge, TeleportCause.COMMAND); throw new NoChargeException(); default: if (!Permissions.TPOHERE.isAuthorized(user)) { throw new Exception(_("needTpohere")); } user.sendMessage(_("teleporting")); @Cleanup final IUser target = ess.getUserMap().matchUser(args[0], false, false); @Cleanup final IUser toPlayer = ess.getUserMap().matchUser(args[1], false, false); target.acquireReadLock(); toPlayer.acquireReadLock(); if (!target.getData().isTeleportEnabled()) { throw new Exception(_("teleportDisabled", target.getPlayer().getDisplayName())); } if (!toPlayer.getData().isTeleportEnabled()) { throw new Exception(_("teleportDisabled", toPlayer.getPlayer().getDisplayName())); } if (target.getPlayer().getWorld() != toPlayer.getPlayer().getWorld() && settings.getData().getGeneral().isWorldTeleportPermissions() && !Permissions.WORLD.isAuthorized(user, toPlayer.getPlayer().getWorld().getName())) { throw new Exception(_("noPerm", "essentials.world." + toPlayer.getPlayer().getWorld().getName())); } target.getTeleport().now(toPlayer.getPlayer(), false, TeleportCause.COMMAND); target.sendMessage(_("teleportAtoB", user.getPlayer().getDisplayName(), toPlayer.getPlayer().getDisplayName())); break; } }
@Override public void run(final IUser user, final String commandLabel, final String[] args) throws Exception { user.getPlayer().openWorkbench(null, true); }
@Override public void run(final IUser user, final String commandLabel, final String[] args) throws Exception { ISettings settings = ess.getSettings(); switch (args.length) { case 0: throw new NotEnoughArgumentsException(); case 1: final IUser player = ess.getUserMap().matchUserExcludingHidden(args[0], user.getPlayer()); if (!player.getData().isTeleportEnabled()) { throw new Exception(_("{0} has teleportation disabled.", player.getPlayer().getDisplayName())); } if (settings.getData().getGeneral().isPerGroupTeleport() && !Permissions.PERGROUPTELEPORT.isAuthorized( user, ess.getRanks().getMainGroup(player))) { throw new Exception(_("You do not have the {0} permission.", "essentials.teleport.groups." + ess.getRanks().getMainGroup(player))); } if (user.getPlayer().getWorld() != player.getPlayer().getWorld() && settings.getData().getGeneral().isWorldTeleportPermissions() && !Permissions.WORLD.isAuthorized( user, player.getPlayer().getWorld().getName())) { throw new Exception(_("You do not have the {0} permission.", "essentials.world." + player.getPlayer().getWorld().getName())); } user.sendMessage(_("Teleporting...")); final Trade charge = new Trade(commandName, ess); charge.isAffordableFor(user); user.getTeleport().teleport(player.getPlayer(), charge, TeleportCause.COMMAND); throw new NoChargeException(); default: if (!Permissions.TPOHERE.isAuthorized(user)) { throw new Exception(_("needTpohere")); } user.sendMessage(_("Teleporting...")); final IUser target = ess.getUserMap().matchUserExcludingHidden(args[0], user.getPlayer()); final IUser toPlayer = ess.getUserMap().matchUserExcludingHidden(args[1], user.getPlayer()); if (!target.getData().isTeleportEnabled()) { throw new Exception(_("{0} has teleportation disabled.", target.getPlayer().getDisplayName())); } if (!toPlayer.getData().isTeleportEnabled()) { throw new Exception(_("{0} has teleportation disabled.", toPlayer.getPlayer().getDisplayName())); } if (target.getPlayer().getWorld() != toPlayer.getPlayer().getWorld() && settings.getData().getGeneral().isWorldTeleportPermissions() && !Permissions.WORLD.isAuthorized( user, toPlayer.getPlayer().getWorld().getName())) { throw new Exception(_("You do not have the {0} permission.", "essentials.world." + toPlayer.getPlayer().getWorld().getName())); } target.getTeleport().now(toPlayer.getPlayer(), false, TeleportCause.COMMAND); target.sendMessage(_("{0} teleported you to {1}.", user.getPlayer().getDisplayName(), toPlayer.getPlayer().getDisplayName())); break; } }
public void delayedJoin(final Player player) { if (!player.isOnline()) { return; } ess.getBackup().startTask(); final IUser user = userMap.getUser(player); user.setDisplayNick(); user.updateCompass(); user.getData().setTimestamp(TimestampType.LOGIN, System.currentTimeMillis()); user.updateActivity(false); if (!ess.getVanishedPlayers().isEmpty() && !Permissions.VANISH_SEE_OTHERS.isAuthorized(user)) { for (String p : ess.getVanishedPlayers()) { final Player toVanish = userMap.getUser(p).getPlayer(); if (toVanish.isOnline()) { user.setVanished(true); } } } if (Permissions.SLEEPINGIGNORED.isAuthorized(user)) { ess.getPlugin().scheduleSyncDelayedTask( new Runnable() { @Override public void run() { user.getPlayer().setSleepingIgnored(true); } }); } final Commands settings = ess.getSettings().getData().getCommands(); if (!settings.isDisabled("motd") && Permissions.MOTD.isAuthorized(user)) { try { final IText input = new TextInput(user, "motd", true, ess); final IText output = new KeywordReplacer(input, user, ess); final TextPager pager = new TextPager(output, true); pager.showPage("1", null, "motd", user); } catch (IOException ex) { if (ess.getSettings().isDebug()) { ess.getLogger().log(Level.WARNING, ex.getMessage(), ex); } else { ess.getLogger().log(Level.WARNING, ex.getMessage()); } } } if (!settings.isDisabled("mail") && Permissions.MAIL.isAuthorized(user)) { final List<String> mail = user.getMails(); if (mail.isEmpty()) { final String msg = _("§6You have no new mail."); if (!msg.isEmpty()) { user.sendMessage(msg); } } else { user.sendMessage(_("§6You have§c {0} §6messages! Type §c/mail read§6 to view your mail.", mail.size())); } } if (Permissions.FLY_SAFELOGIN.isAuthorized(user)) { final Location loc = user.getPlayer().getLocation(); final World world = loc.getWorld(); final int x = loc.getBlockX(); int y = loc.getBlockY(); final int z = loc.getBlockZ(); while (LocationUtil.isBlockUnsafe(world, x, y, z) && y > -1) { y--; } if (loc.getBlockY() - y > 1 || y < 0) { user.getPlayer().setAllowFlight(true); user.getPlayer().setFlying(true); user.sendMessage(_("§6Set fly mode§c {0} §6for {1}§6.", _("enabled"), user.getPlayer().getDisplayName())); } } }