Add logging, prepare for import/export system
This commit is contained in:
@@ -27,11 +27,12 @@ import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import lombok.ToString;
|
||||
import me.lucko.luckperms.LuckPermsPlugin;
|
||||
import me.lucko.luckperms.constants.Patterns;
|
||||
import me.lucko.luckperms.core.PermissionHolder;
|
||||
import me.lucko.luckperms.exceptions.ObjectAlreadyHasException;
|
||||
import me.lucko.luckperms.exceptions.ObjectLacksException;
|
||||
import me.lucko.luckperms.groups.Group;
|
||||
import me.lucko.luckperms.utils.Patterns;
|
||||
import me.lucko.luckperms.utils.PermissionHolder;
|
||||
import me.lucko.luckperms.utils.Identifiable;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
@@ -40,7 +41,7 @@ import java.util.stream.Collectors;
|
||||
|
||||
@ToString(of = {"uuid"})
|
||||
@EqualsAndHashCode(of = {"uuid"}, callSuper = false)
|
||||
public abstract class User extends PermissionHolder {
|
||||
public abstract class User extends PermissionHolder implements Identifiable<UUID> {
|
||||
|
||||
/**
|
||||
* The users Mojang UUID
|
||||
@@ -319,4 +320,9 @@ public abstract class User extends PermissionHolder {
|
||||
.map(s -> Patterns.DOT.split(s, 2)[1])
|
||||
.collect(Collectors.toList());
|
||||
}
|
||||
|
||||
@Override
|
||||
public UUID getId() {
|
||||
return uuid;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -22,77 +22,38 @@
|
||||
|
||||
package me.lucko.luckperms.users;
|
||||
|
||||
import lombok.Getter;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import me.lucko.luckperms.LuckPermsPlugin;
|
||||
import me.lucko.luckperms.exceptions.ObjectAlreadyHasException;
|
||||
import me.lucko.luckperms.utils.AbstractManager;
|
||||
import me.lucko.luckperms.utils.Identifiable;
|
||||
|
||||
import java.util.Map;
|
||||
import java.util.NoSuchElementException;
|
||||
import java.util.UUID;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
|
||||
@RequiredArgsConstructor
|
||||
public abstract class UserManager {
|
||||
|
||||
/**
|
||||
* A {@link Map} containing all online/loaded users
|
||||
*/
|
||||
@Getter
|
||||
private final Map<UUID, User> users = new ConcurrentHashMap<>();
|
||||
|
||||
/**
|
||||
* Reference to main plugin instance
|
||||
*/
|
||||
public abstract class UserManager extends AbstractManager<UUID, User> {
|
||||
private final LuckPermsPlugin plugin;
|
||||
|
||||
/**
|
||||
* Get a user object by UUID
|
||||
* @param uuid The uuid to search by
|
||||
* @return a {@link User} object if the user is loaded, returns null if the user is not loaded
|
||||
*/
|
||||
public User getUser(UUID uuid) {
|
||||
return users.get(uuid);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get a user object by name
|
||||
* @param name The name to search by
|
||||
* @return a {@link User} object if the user is loaded, returns null if the user is not loaded
|
||||
*/
|
||||
@SuppressWarnings("OptionalGetWithoutIsPresent")
|
||||
public User getUser(String name) {
|
||||
public User get(String name) {
|
||||
try {
|
||||
return users.values().stream().filter(u -> u.getName().equalsIgnoreCase(name)).limit(1).findAny().get();
|
||||
return objects.values().stream().filter(u -> u.getName().equalsIgnoreCase(name)).limit(1).findAny().get();
|
||||
} catch (NoSuchElementException e) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Add a user to the users map
|
||||
* @param user the user to add
|
||||
*/
|
||||
public void setUser(User user) {
|
||||
users.put(user.getUuid(), user);
|
||||
}
|
||||
|
||||
/**
|
||||
* Updates (or sets if the user wasn't already loaded) a user in the users map
|
||||
* @param user The user to update or set
|
||||
*/
|
||||
public void updateOrSetUser(User user) {
|
||||
if (!isLoaded(user.getUuid())) {
|
||||
// The user isn't already loaded, so we can just add
|
||||
users.put(user.getUuid(), user);
|
||||
// They're probably not online, but in case they are...
|
||||
user.refreshPermissions();
|
||||
} else {
|
||||
// Override the user's current loaded nodes, and force a refresh
|
||||
users.get(user.getUuid()).setNodes(user.getNodes());
|
||||
users.get(user.getUuid()).setPrimaryGroup(user.getPrimaryGroup());
|
||||
users.get(user.getUuid()).refreshPermissions();
|
||||
}
|
||||
@Override
|
||||
protected void copy(User from, User to) {
|
||||
to.setNodes(from.getNodes());
|
||||
to.setPrimaryGroup(from.getPrimaryGroup());
|
||||
to.refreshPermissions();
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -108,32 +69,10 @@ public abstract class UserManager {
|
||||
}
|
||||
|
||||
/**
|
||||
* Check to see if a user is loaded or not
|
||||
* @param uuid the UUID of the user
|
||||
* @return true if the user is loaded
|
||||
*/
|
||||
public boolean isLoaded(UUID uuid) {
|
||||
return users.containsKey(uuid);
|
||||
}
|
||||
|
||||
/**
|
||||
* Removes and unloads any permission links of the user from the internal storage
|
||||
* @param user The user to unload
|
||||
*/
|
||||
public abstract void unloadUser(User user);
|
||||
|
||||
/**
|
||||
* Checks to see if the user is online, and if they are not, runs {@link #unloadUser(User)}
|
||||
* Checks to see if the user is online, and if they are not, runs {@link #unload(Identifiable)}
|
||||
* @param user The user to be cleaned up
|
||||
*/
|
||||
public abstract void cleanupUser(User user);
|
||||
|
||||
/**
|
||||
* Makes a new {@link User} object
|
||||
* @param uuid The UUID of the user
|
||||
* @return a new {@link User} object
|
||||
*/
|
||||
public abstract User makeUser(UUID uuid);
|
||||
public abstract void cleanup(User user);
|
||||
|
||||
/**
|
||||
* Makes a new {@link User} object
|
||||
@@ -141,7 +80,7 @@ public abstract class UserManager {
|
||||
* @param username The username of the user
|
||||
* @return a new {@link User} object
|
||||
*/
|
||||
public abstract User makeUser(UUID uuid, String username);
|
||||
public abstract User make(UUID uuid, String username);
|
||||
|
||||
/**
|
||||
* Reloads the data of all online users
|
||||
|
||||
Reference in New Issue
Block a user