/** * Registers a {@link TimeoutTask} for the given player according to the configuration. * * @param player the player to register a timeout task for */ public void registerTimeoutTask(Player player) { final int timeout = settings.getProperty(RestrictionSettings.TIMEOUT) * TICKS_PER_SECOND; if (timeout > 0) { final LimboPlayer limboPlayer = limboCache.getPlayerData(player.getName()); if (limboPlayer == null) { ConsoleLogger.info("PlayerData for '" + player.getName() + "' is not available"); } else { cancelTask(limboPlayer.getTimeoutTask()); String message = messages.retrieveSingle(MessageKey.LOGIN_TIMEOUT_ERROR); BukkitTask task = bukkitService.runTaskLater(new TimeoutTask(player, message, playerCache), timeout); limboPlayer.setTimeoutTask(task); } } }
/** * Registers a {@link MessageTask} for the given player name. * * @param name the name of the player to schedule a repeating message task for * @param isRegistered whether the name is registered or not (false shows "please register", true * shows "please log in") */ public void registerMessageTask(String name, boolean isRegistered) { final int interval = settings.getProperty(RegistrationSettings.MESSAGE_INTERVAL); final MessageKey key = getMessageKey(isRegistered); if (interval > 0) { final LimboPlayer limboPlayer = limboCache.getPlayerData(name); if (limboPlayer == null) { ConsoleLogger.info("PlayerData for '" + name + "' is not available"); } else { cancelTask(limboPlayer.getMessageTask()); MessageTask messageTask = new MessageTask(name, messages.retrieve(key), bukkitService, playerCache); bukkitService.runTaskTimer(messageTask, 2 * TICKS_PER_SECOND, interval * TICKS_PER_SECOND); limboPlayer.setMessageTask(messageTask); } } }
/** * Set the group of a player, by its AuthMe group type. * * @param player The player. * @param group The group type. * @return True if succeeded, false otherwise. False is also returned if groups aren't supported * with the current permissions system. */ public boolean setGroup(Player player, AuthGroupType group) { // Check whether the permissions check is enabled if (!settings.getProperty(PluginSettings.ENABLE_PERMISSION_CHECK)) { return false; } // Make sure group support is available if (!permissionsManager.hasGroupSupport()) { ConsoleLogger.warning( "The current permissions system doesn't have group support, unable to set group!"); return false; } switch (group) { case UNREGISTERED: // Remove the other group type groups, set the current group permissionsManager.removeGroups(player, Arrays.asList(registeredGroup, unloggedInGroup)); return permissionsManager.addGroup(player, unregisteredGroup); case REGISTERED: // Remove the other group type groups, set the current group permissionsManager.removeGroups(player, Arrays.asList(unregisteredGroup, unloggedInGroup)); return permissionsManager.addGroup(player, registeredGroup); case NOT_LOGGED_IN: // Remove the other group type groups, set the current group permissionsManager.removeGroups(player, Arrays.asList(unregisteredGroup, registeredGroup)); return permissionsManager.addGroup(player, unloggedInGroup); case LOGGED_IN: // Get the player data LimboPlayer data = limboCache.getPlayerData(player.getName().toLowerCase()); if (data == null) { return false; } // Get the players group String realGroup = data.getGroup(); // Remove the other group types groups, set the real group permissionsManager.removeGroups( player, Arrays.asList(unregisteredGroup, registeredGroup, unloggedInGroup)); return permissionsManager.addGroup(player, realGroup); default: return false; } }
@Test public void shouldReadDataFromFile() { // given Player player = mock(Player.class); given(player.getUniqueId()).willReturn(SAMPLE_UUID); World world = mock(World.class); given(bukkitService.getWorld("nether")).willReturn(world); // when LimboPlayer data = limboPlayerStorage.readData(player); // then assertThat(data, not(nullValue())); assertThat(data.isOperator(), equalTo(true)); assertThat(data.isCanFly(), equalTo(true)); assertThat(data.getWalkSpeed(), equalTo(0.2f)); assertThat(data.getFlySpeed(), equalTo(0.1f)); assertThat(data.getGroup(), equalTo("players")); Location location = data.getLocation(); assertThat(location.getX(), equalTo(-113.219)); assertThat(location.getY(), equalTo(72.0)); assertThat(location.getZ(), equalTo(130.637)); assertThat(location.getWorld(), equalTo(world)); assertThat(location.getPitch(), equalTo(24.15f)); assertThat(location.getYaw(), equalTo(-292.484f)); }