#1113 Don't restore OP to unregistered player; add tests for LimboService
This commit is contained in:
@@ -105,7 +105,7 @@ public class LimboService {
|
||||
ConsoleLogger.debug("LimboPlayer for `{0}` was already present", name);
|
||||
}
|
||||
|
||||
LimboPlayer limboPlayer = newLimboPlayer(player);
|
||||
LimboPlayer limboPlayer = newLimboPlayer(player, isRegistered);
|
||||
taskManager.registerMessageTask(player, limboPlayer, isRegistered);
|
||||
taskManager.registerTimeoutTask(player, limboPlayer);
|
||||
revokeLimboStates(player);
|
||||
@@ -157,11 +157,13 @@ public class LimboService {
|
||||
* Creates a LimboPlayer with the given player's details.
|
||||
*
|
||||
* @param player the player to process
|
||||
* @param isRegistered whether the player is registered
|
||||
* @return limbo player with the player's data
|
||||
*/
|
||||
private LimboPlayer newLimboPlayer(Player player) {
|
||||
private LimboPlayer newLimboPlayer(Player player, boolean isRegistered) {
|
||||
Location location = spawnLoader.getPlayerLocationOrSpawn(player);
|
||||
boolean isOperator = player.isOp();
|
||||
// For safety reasons an unregistered player should not have OP status after registration
|
||||
boolean isOperator = isRegistered && player.isOp();
|
||||
boolean flyEnabled = player.getAllowFlight();
|
||||
float walkSpeed = player.getWalkSpeed();
|
||||
float flySpeed = player.getFlySpeed();
|
||||
|
||||
@@ -148,7 +148,6 @@ public class AsynchronousJoin implements AsynchronousProcess {
|
||||
final int registrationTimeout = service.getProperty(RestrictionSettings.TIMEOUT) * TICKS_PER_SECOND;
|
||||
|
||||
bukkitService.scheduleSyncTaskFromOptionallyAsyncTask(() -> {
|
||||
// TODO #1113: Find an elegant way to deop unregistered players (and disable fly status etc.?)
|
||||
limboService.createLimboPlayer(player, isAuthAvailable);
|
||||
|
||||
player.setNoDamageTicks(registrationTimeout);
|
||||
|
||||
Reference in New Issue
Block a user