@EventHandler(priority = EventPriority.MONITOR) public void onPlayerChangedWorld(final PlayerChangedWorldEvent event) { final ISettings settings = ess.getSettings(); final IUser user = userMap.getUser(event.getPlayer()); if (settings.getData().getChat().getChangeDisplayname()) { user.updateDisplayName(); } if (!settings.getData().getWorldOptions(event.getPlayer().getLocation().getWorld().getName()).isGodmode() && !Permissions.NOGOD_OVERRIDE.isAuthorized( user)) { if (user.getData().isGodmode()) { user.sendMessage(_("§4Warning! God mode in this world disabled.")); } } if (settings.getData().getCommands().getTeleport().isCancelRequestsOnWorldChange()) { if (user.getTeleportRequester() != null) { user.requestTeleport(null, false); user.sendMessage(_("teleportRequestsCancelledWorldChange")); } } if (settings.getData().getGeneral().isPtClearOnWorldChange()) { user.getData().clearAllPowertools(); user.queueSave(); user.sendMessage(_("§6All powertool commands have been cleared.")); } }
@EventHandler(priority = EventPriority.HIGH) public void onPlayerLogin(final PlayerLoginEvent event) { switch (event.getResult()) { case ALLOWED: case KICK_FULL: case KICK_BANNED: break; default: return; } userMap.addPrejoinedPlayer(event.getPlayer()); final IUser user = userMap.getUser(event.getPlayer()); userMap.removePrejoinedPlayer(event.getPlayer()); user.getData().setNpc(false); final long currentTime = System.currentTimeMillis(); final boolean banExpired = user.checkBanTimeout(currentTime); user.checkMuteTimeout(currentTime); user.checkJailTimeout(currentTime); if (!banExpired && (user.isBanned() || event.getResult() == Result.KICK_BANNED)) { String banReason = user.getData().getBan().getReason(); if (banReason == null || banReason.isEmpty() || banReason.equalsIgnoreCase("ban")) { banReason = _("The Ban Hammer has spoken!"); } if (user.getData().getBan().getTimeout() > 0) { //TODO: TL This banReason += "\n\n" + "Expires in " + DateUtil.formatDateDiff(user.getData().getBan().getTimeout()); } event.disallow(Result.KICK_BANNED, banReason); return; } if (server.getOnlinePlayers().length >= server.getMaxPlayers() && !Permissions.JOINFULLSERVER.isAuthorized(user)) { event.disallow(Result.KICK_FULL, _("Server is full!")); return; } event.allow(); user.setTimestamp(TimestampType.LOGIN, System.currentTimeMillis()); user.updateCompass(); user.queueSave(); }
@Override protected void run(final CommandSender sender, final String commandLabel, final String[] args) throws Exception { if (args.length < 1) { throw new NotEnoughArgumentsException(); } final IUser player = ess.getUserMap().matchUser(args[0], true); player.getData().setBan(null); player.setBanned(false); player.queueSave(); sender.sendMessage(_("unbannedPlayer")); }
@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 protected void run(final CommandSender sender, final String commandLabel, final String[] args) throws Exception { if (args.length < 1) { throw new NotEnoughArgumentsException(); } final IUser player = ess.getUserMap().matchUser(args[0], true); if (args.length >= 2 && !player.getData().isJailed()) { if (!player.isOnline()) { if (Permissions.TOGGLEJAIL_OFFLINE.isAuthorized(sender)) { sender.sendMessage(_("mayNotJail")); return; } } else { if (Permissions.JAIL_EXEMPT.isAuthorized(player)) { sender.sendMessage(_("mayNotJail")); return; } } if (player.isOnline()) { ess.getJails().sendToJail(player, args[1]); } else { // Check if jail exists ess.getJails().getJail(args[1]); } player.getData().setJailed(true); player.sendMessage(_("userJailed")); player.getData().setJail(args[1]); long timeDiff = 0; if (args.length > 2) { final String time = getFinalArg(args, 2); timeDiff = DateUtil.parseDateDiff(time, true); player.setTimestamp(TimestampType.JAIL, timeDiff); } player.queueSave(); sender.sendMessage((timeDiff > 0 ? _("playerJailedFor", player.getName(), DateUtil.formatDateDiff(timeDiff)) : _("playerJailed", player.getName()))); return; } if (args.length >= 2 && player.getData().isJailed() && !args[1].equalsIgnoreCase(player.getData().getJail())) { sender.sendMessage(_("jailAlreadyIncarcerated", player.getData().getJail())); return; } if (args.length >= 2 && player.getData().isJailed() && args[1].equalsIgnoreCase(player.getData().getJail())) { final String time = getFinalArg(args, 2); final long timeDiff = DateUtil.parseDateDiff(time, true); player.setTimestamp(TimestampType.JAIL, timeDiff); player.queueSave(); sender.sendMessage(_("jailSentenceExtended", DateUtil.formatDateDiff(timeDiff))); return; } if (args.length == 1 || (args.length == 2 && args[1].equalsIgnoreCase(player.getData().getJail()))) { if (!player.getData().isJailed()) { throw new NotEnoughArgumentsException(); } player.getData().setJailed(false); player.setTimestamp(TimestampType.JAIL, 0); player.sendMessage(_("jailReleasedPlayerNotify")); player.getData().setJail(null); if (player.isOnline()) { player.getTeleport().back(); } player.queueSave(); sender.sendMessage(_("jailReleased", player.getName())); } }