diff --git a/api/src/main/java/net/luckperms/api/actionlog/ActionLog.java b/api/src/main/java/net/luckperms/api/actionlog/ActionLog.java
index 4d01946ec..9002602a4 100644
--- a/api/src/main/java/net/luckperms/api/actionlog/ActionLog.java
+++ b/api/src/main/java/net/luckperms/api/actionlog/ActionLog.java
@@ -60,10 +60,10 @@ public interface ActionLog {
/**
* Gets the log content for a given user
*
- * @param uuid the uuid to filter by
+ * @param uniqueId the uuid to filter by
* @return all content in this log where the user = uuid
*/
- @NonNull SortedSet getUserHistory(@NonNull UUID uuid);
+ @NonNull SortedSet getUserHistory(@NonNull UUID uniqueId);
/**
* Gets the log content for a given group
diff --git a/api/src/main/java/net/luckperms/api/model/PermissionHolder.java b/api/src/main/java/net/luckperms/api/model/PermissionHolder.java
index 6ef177f37..7520adf47 100644
--- a/api/src/main/java/net/luckperms/api/model/PermissionHolder.java
+++ b/api/src/main/java/net/luckperms/api/model/PermissionHolder.java
@@ -200,7 +200,7 @@ public interface PermissionHolder {
* @return a Tristate for the holders permission status for the node
* @throws NullPointerException if the node is null
*/
- @NonNull Tristate hasNode(@NonNull Node node, @NonNull NodeEqualityPredicate equalityPredicate);
+ @NonNull Tristate containsNode(@NonNull Node node, @NonNull NodeEqualityPredicate equalityPredicate);
/**
* Sets a permission node for the permission holder.
@@ -462,18 +462,6 @@ public interface PermissionHolder {
*
This method is called periodically by the platform, so it is only necessary to run
* if you want to guarantee that the current data is totally up-to-date.
*/
- void auditTemporaryPermissions();
-
- /**
- * Checks to see if the object inherits a certain permission.
- *
- *
Although this method is named inheritsPermission, it can be used for all node types.
- *
- * @param node the node to check for
- * @param equalityPredicate how to determine if a node matches
- * @return a Tristate for the holders inheritance status for the node
- * @throws NullPointerException if the node is null
- */
- @NonNull Tristate inheritsNode(@NonNull Node node, @NonNull NodeEqualityPredicate equalityPredicate);
+ void auditTemporaryNodes();
}
diff --git a/api/src/main/java/net/luckperms/api/model/group/Group.java b/api/src/main/java/net/luckperms/api/model/group/Group.java
index a502609c2..1e30d2ced 100644
--- a/api/src/main/java/net/luckperms/api/model/group/Group.java
+++ b/api/src/main/java/net/luckperms/api/model/group/Group.java
@@ -25,8 +25,8 @@
package net.luckperms.api.model.group;
-import net.luckperms.api.context.ContextSet;
import net.luckperms.api.model.PermissionHolder;
+import net.luckperms.api.query.QueryOptions;
import org.checkerframework.checker.nullness.qual.NonNull;
import org.checkerframework.checker.nullness.qual.Nullable;
@@ -63,10 +63,10 @@ public interface Group extends PermissionHolder {
*
Will return null if the groups display name is equal to it's
* {@link #getName() actual name}.
*
- * @param contextSet the contexts to lookup in
+ * @param queryOptions the query options to lookup in
* @return the display name
*/
- @Nullable String getDisplayName(@NonNull ContextSet contextSet);
+ @Nullable String getDisplayName(@NonNull QueryOptions queryOptions);
/**
* Gets the weight of this group, if present.
diff --git a/api/src/main/java/net/luckperms/api/model/user/UserManager.java b/api/src/main/java/net/luckperms/api/model/user/UserManager.java
index 604984105..5ec613859 100644
--- a/api/src/main/java/net/luckperms/api/model/user/UserManager.java
+++ b/api/src/main/java/net/luckperms/api/model/user/UserManager.java
@@ -59,22 +59,22 @@ public interface UserManager {
/**
* Loads a user from the plugin's storage provider into memory.
*
- * @param uuid the uuid of the user
+ * @param uniqueId the uuid of the user
* @param username the username, if known
* @return the resultant user
* @throws NullPointerException if the uuid is null
*/
- @NonNull CompletableFuture loadUser(@NonNull UUID uuid, @Nullable String username);
+ @NonNull CompletableFuture loadUser(@NonNull UUID uniqueId, @Nullable String username);
/**
* Loads a user from the plugin's storage provider into memory.
*
- * @param uuid the uuid of the user
+ * @param uniqueId the uuid of the user
* @return the resultant user
* @throws NullPointerException if the uuid is null
*/
- default @NonNull CompletableFuture loadUser(@NonNull UUID uuid) {
- return loadUser(uuid, null);
+ default @NonNull CompletableFuture loadUser(@NonNull UUID uniqueId) {
+ return loadUser(uniqueId, null);
}
/**
@@ -92,12 +92,12 @@ public interface UserManager {
/**
* Uses the LuckPerms cache to find a username for the given uuid.
*
- * @param uuid the uuid
+ * @param uniqueId the uuid
* @return a username, could be null
* @throws NullPointerException if either parameters are null
* @throws IllegalArgumentException if the username is invalid
*/
- @NonNull CompletableFuture lookupUsername(@NonNull UUID uuid);
+ @NonNull CompletableFuture lookupUsername(@NonNull UUID uniqueId);
/**
* Saves a user's data back to the plugin's storage provider.
@@ -114,13 +114,13 @@ public interface UserManager {
/**
* Saves data about a player to the uuid caching system.
*
- * @param uuid the users mojang unique id
+ * @param uniqueId the users mojang unique id
* @param username the users username
* @return the result of the operation.
* @throws NullPointerException if either parameters are null
* @throws IllegalArgumentException if the username is invalid
*/
- @NonNull CompletableFuture savePlayerData(@NonNull UUID uuid, @NonNull String username);
+ @NonNull CompletableFuture savePlayerData(@NonNull UUID uniqueId, @NonNull String username);
/**
* Gets a set all "unique" user UUIDs.
@@ -143,11 +143,11 @@ public interface UserManager {
/**
* Gets a loaded user.
*
- * @param uuid the uuid of the user to get
+ * @param uniqueId the uuid of the user to get
* @return a {@link User} object, if one matching the uuid is loaded, or null if not
* @throws NullPointerException if the uuid is null
*/
- @Nullable User getUser(@NonNull UUID uuid);
+ @Nullable User getUser(@NonNull UUID uniqueId);
/**
* Gets a loaded user.
@@ -168,11 +168,11 @@ public interface UserManager {
/**
* Check if a user is loaded in memory
*
- * @param uuid the uuid to check for
+ * @param uniqueId the uuid to check for
* @return true if the user is loaded
* @throws NullPointerException if the uuid is null
*/
- boolean isLoaded(@NonNull UUID uuid);
+ boolean isLoaded(@NonNull UUID uniqueId);
/**
* Unload a user from the internal storage, if they're not currently online.
diff --git a/api/src/main/java/net/luckperms/api/query/dataorder/DataQueryOrder.java b/api/src/main/java/net/luckperms/api/query/dataorder/DataQueryOrder.java
index f3f078a08..4be8f7f90 100644
--- a/api/src/main/java/net/luckperms/api/query/dataorder/DataQueryOrder.java
+++ b/api/src/main/java/net/luckperms/api/query/dataorder/DataQueryOrder.java
@@ -87,9 +87,13 @@ public enum DataQueryOrder implements Comparator {
private static final List TRANSIENT_LAST_LIST = Collections.unmodifiableList(Arrays.asList(DataType.NORMAL, DataType.TRANSIENT));
/**
- * Gets a {@link List} of all {@link DataType}s, in the order defined by
+ * Gets a {@link List} of all {@link DataType}s, in order of greatest to least, as defined by
* the {@code comparator}.
*
+ *
Equivalent to calling {@link Arrays#sort(Object[], Comparator)} on
+ * {@link DataType#values()}, but with the comparator
+ * {@link Comparator#reversed() reversed}.
+ *
* @param comparator the comparator
* @return the ordered data types
*/
diff --git a/bukkit/src/main/java/me/lucko/luckperms/bukkit/BukkitSenderFactory.java b/bukkit/src/main/java/me/lucko/luckperms/bukkit/BukkitSenderFactory.java
index d6c1ce800..b1b57ec95 100644
--- a/bukkit/src/main/java/me/lucko/luckperms/bukkit/BukkitSenderFactory.java
+++ b/bukkit/src/main/java/me/lucko/luckperms/bukkit/BukkitSenderFactory.java
@@ -57,7 +57,7 @@ public class BukkitSenderFactory extends SenderFactory {
}
@Override
- protected UUID getUuid(CommandSender sender) {
+ protected UUID getUniqueId(CommandSender sender) {
if (sender instanceof Player) {
return ((Player) sender).getUniqueId();
}
diff --git a/bukkit/src/main/java/me/lucko/luckperms/bukkit/LPBukkitBootstrap.java b/bukkit/src/main/java/me/lucko/luckperms/bukkit/LPBukkitBootstrap.java
index 98111b75c..9994d90f1 100644
--- a/bukkit/src/main/java/me/lucko/luckperms/bukkit/LPBukkitBootstrap.java
+++ b/bukkit/src/main/java/me/lucko/luckperms/bukkit/LPBukkitBootstrap.java
@@ -224,19 +224,19 @@ public class LPBukkitBootstrap extends JavaPlugin implements LuckPermsBootstrap
}
@Override
- public Optional getPlayer(UUID uuid) {
- return Optional.ofNullable(getServer().getPlayer(uuid));
+ public Optional getPlayer(UUID uniqueId) {
+ return Optional.ofNullable(getServer().getPlayer(uniqueId));
}
@Override
- public Optional lookupUuid(String username) {
+ public Optional lookupUniqueId(String username) {
//noinspection deprecation
return Optional.ofNullable(getServer().getOfflinePlayer(username)).map(OfflinePlayer::getUniqueId);
}
@Override
- public Optional lookupUsername(UUID uuid) {
- return Optional.ofNullable(getServer().getOfflinePlayer(uuid)).map(OfflinePlayer::getName);
+ public Optional lookupUsername(UUID uniqueId) {
+ return Optional.ofNullable(getServer().getOfflinePlayer(uniqueId)).map(OfflinePlayer::getName);
}
@Override
@@ -255,8 +255,8 @@ public class LPBukkitBootstrap extends JavaPlugin implements LuckPermsBootstrap
}
@Override
- public boolean isPlayerOnline(UUID uuid) {
- Player player = getServer().getPlayer(uuid);
+ public boolean isPlayerOnline(UUID uniqueId) {
+ Player player = getServer().getPlayer(uniqueId);
return player != null && player.isOnline();
}
diff --git a/bukkit/src/main/java/me/lucko/luckperms/bukkit/LPBukkitPlugin.java b/bukkit/src/main/java/me/lucko/luckperms/bukkit/LPBukkitPlugin.java
index 746a2f54e..6529bcfdc 100644
--- a/bukkit/src/main/java/me/lucko/luckperms/bukkit/LPBukkitPlugin.java
+++ b/bukkit/src/main/java/me/lucko/luckperms/bukkit/LPBukkitPlugin.java
@@ -268,7 +268,7 @@ public class LPBukkitPlugin extends AbstractLuckPermsPlugin {
if (getConfiguration().get(ConfigKeys.AUTO_OP)) {
getApiProvider().getEventBus().subscribe(UserDataRecalculateEvent.class, event -> {
User user = ApiUser.cast(event.getUser());
- Optional player = getBootstrap().getPlayer(user.getUuid());
+ Optional player = getBootstrap().getPlayer(user.getUniqueId());
player.ifPresent(p -> refreshAutoOp(p, false));
});
}
@@ -312,7 +312,7 @@ public class LPBukkitPlugin extends AbstractLuckPermsPlugin {
final User user = getUserManager().getIfLoaded(player.getUniqueId());
if (user != null) {
user.getCachedData().invalidate();
- getUserManager().unload(user);
+ getUserManager().unload(user.getUniqueId());
}
}
@@ -361,7 +361,7 @@ public class LPBukkitPlugin extends AbstractLuckPermsPlugin {
@Override
public Optional getQueryOptionsForUser(User user) {
- return this.bootstrap.getPlayer(user.getUuid()).map(player -> this.contextManager.getQueryOptions(player));
+ return this.bootstrap.getPlayer(user.getUniqueId()).map(player -> this.contextManager.getQueryOptions(player));
}
@Override
diff --git a/bukkit/src/main/java/me/lucko/luckperms/bukkit/inject/permissible/LPPermissionAttachment.java b/bukkit/src/main/java/me/lucko/luckperms/bukkit/inject/permissible/LPPermissionAttachment.java
index f3bf219be..bd974b203 100644
--- a/bukkit/src/main/java/me/lucko/luckperms/bukkit/inject/permissible/LPPermissionAttachment.java
+++ b/bukkit/src/main/java/me/lucko/luckperms/bukkit/inject/permissible/LPPermissionAttachment.java
@@ -191,7 +191,7 @@ public class LPPermissionAttachment extends PermissionAttachment {
// set the transient node
User user = this.permissible.getUser();
- user.setPermission(DataType.TRANSIENT, node, true);
+ user.setNode(DataType.TRANSIENT, node, true);
}
private void unsetPermissionInternal(String name) {
diff --git a/bukkit/src/main/java/me/lucko/luckperms/bukkit/migration/MigrationBPermissions.java b/bukkit/src/main/java/me/lucko/luckperms/bukkit/migration/MigrationBPermissions.java
index aa2c38381..04f26a175 100644
--- a/bukkit/src/main/java/me/lucko/luckperms/bukkit/migration/MigrationBPermissions.java
+++ b/bukkit/src/main/java/me/lucko/luckperms/bukkit/migration/MigrationBPermissions.java
@@ -191,7 +191,7 @@ public class MigrationBPermissions extends SubCommand
+ * to remove duplicate elements, the lists are flattened. This is significantly
+ * faster than trying to prevent duplicates throughout the process of accumulation,
+ * and reduces the need for too much caching.
*
*
Cached state is avoided in these instances to cut down on memory
* footprint. The nodes are stored indexed to the contexts they apply in, so
@@ -268,7 +265,7 @@ public abstract class PermissionHolder {
return ret;
}
- public List getOwnGroupNodes(QueryOptions queryOptions) {
+ public List getOwnInheritanceNodes(QueryOptions queryOptions) {
List ret = new ArrayList<>();
Comparator comparator = queryOptions.option(DataQueryOrderFunction.KEY)
@@ -382,14 +379,14 @@ public abstract class PermissionHolder {
*
* @return true if permissions had expired and were removed
*/
- public boolean auditTemporaryPermissions() {
- boolean transientWork = auditTemporaryPermissions(DataType.TRANSIENT);
- boolean normalWork = auditTemporaryPermissions(DataType.NORMAL);
+ public boolean auditTemporaryNodes() {
+ boolean transientWork = auditTemporaryNodes(DataType.TRANSIENT);
+ boolean normalWork = auditTemporaryNodes(DataType.NORMAL);
return transientWork || normalWork;
}
- private boolean auditTemporaryPermissions(DataType dataType) {
+ private boolean auditTemporaryNodes(DataType dataType) {
ImmutableCollection extends Node> before = getData(dataType).immutable().values();
Set removed = new HashSet<>();
@@ -407,15 +404,7 @@ public abstract class PermissionHolder {
return work;
}
- /**
- * Check if the holder has a permission node
- *
- * @param type which backing map to check
- * @param node the Node to check
- * @param equalityPredicate how to match
- * @return a tristate, returns undefined if no match
- */
- public Tristate hasPermission(DataType type, Node node, NodeEqualityPredicate equalityPredicate) {
+ public Tristate hasNode(DataType type, Node node, NodeEqualityPredicate equalityPredicate) {
if (this.getType() == HolderType.GROUP && node instanceof InheritanceNode && ((InheritanceNode) node).getGroupName().equalsIgnoreCase(getObjectName())) {
return Tristate.TRUE;
}
@@ -426,29 +415,8 @@ public abstract class PermissionHolder {
.map(n -> Tristate.of(n.getValue())).orElse(Tristate.UNDEFINED);
}
- /**
- * Check if the holder inherits a node
- *
- * @param node the Node to check
- * @param equalityPredicate how to match
- * @return the result of the lookup
- */
- public InheritanceInfo searchForInheritedMatch(Node node, NodeEqualityPredicate equalityPredicate) {
- for (Node n : resolveInheritances(QueryOptions.nonContextual())) {
- if (n.equals(node, equalityPredicate)) {
- return InheritanceInfo.of(n);
- }
- }
-
- return InheritanceInfo.empty();
- }
-
- public Tristate inheritsPermission(Node node, NodeEqualityPredicate equalityPredicate) {
- return searchForInheritedMatch(node, equalityPredicate).getResult();
- }
-
- public DataMutateResult setPermission(DataType dataType, Node node, boolean callEvent) {
- if (hasPermission(dataType, node, NodeEqualityPredicate.IGNORE_EXPIRY_TIME) != Tristate.UNDEFINED) {
+ public DataMutateResult setNode(DataType dataType, Node node, boolean callEvent) {
+ if (hasNode(dataType, node, NodeEqualityPredicate.IGNORE_EXPIRY_TIME) != Tristate.UNDEFINED) {
return DataMutateResult.ALREADY_HAS;
}
@@ -467,7 +435,7 @@ public abstract class PermissionHolder {
return DataMutateResult.SUCCESS;
}
- public TemporaryDataMutateResult setPermission(DataType dataType, Node node, TemporaryMergeBehaviour mergeBehaviour) {
+ public TemporaryDataMutateResult setNode(DataType dataType, Node node, TemporaryMergeBehaviour mergeBehaviour) {
if (node.hasExpiry() && mergeBehaviour != TemporaryMergeBehaviour.FAIL_WITH_ALREADY_HAS) {
Node otherMatch = getData(dataType).immutable().values().stream()
.filter(NodeEqualityPredicate.IGNORE_EXPIRY_TIME_AND_VALUE.equalTo(node))
@@ -507,11 +475,11 @@ public abstract class PermissionHolder {
}
// Fallback to the normal handling.
- return new TemporaryResult(setPermission(dataType, node, true), node);
+ return new TemporaryResult(setNode(dataType, node, true), node);
}
- public DataMutateResult unsetPermission(DataType dataType, Node node) {
- if (hasPermission(dataType, node, NodeEqualityPredicate.IGNORE_EXPIRY_TIME_AND_VALUE) == Tristate.UNDEFINED) {
+ public DataMutateResult unsetNode(DataType dataType, Node node) {
+ if (hasNode(dataType, node, NodeEqualityPredicate.IGNORE_EXPIRY_TIME_AND_VALUE) == Tristate.UNDEFINED) {
return DataMutateResult.LACKS;
}
@@ -552,7 +520,7 @@ public abstract class PermissionHolder {
return true;
}
- public boolean clearNodes(DataType dataType, ContextSet contextSet) {
+ public boolean clearNodes(DataType dataType, ContextSet contextSet, boolean giveDefault) {
NodeMap data = getData(dataType);
ImmutableCollection extends Node> before = data.immutable().values();
@@ -562,6 +530,10 @@ public abstract class PermissionHolder {
data.clear(contextSet);
}
+ if (getType() == HolderType.USER && giveDefault) {
+ getPlugin().getUserManager().giveDefaultIfNeeded((User) this, false);
+ }
+
invalidateCache();
ImmutableCollection extends Node> after = data.immutable().values();
diff --git a/common/src/main/java/me/lucko/luckperms/common/model/Track.java b/common/src/main/java/me/lucko/luckperms/common/model/Track.java
index 25927778a..25b16d367 100644
--- a/common/src/main/java/me/lucko/luckperms/common/model/Track.java
+++ b/common/src/main/java/me/lucko/luckperms/common/model/Track.java
@@ -37,7 +37,6 @@ import net.luckperms.api.context.ContextSet;
import net.luckperms.api.model.DataMutateResult;
import net.luckperms.api.model.DataType;
import net.luckperms.api.node.Node;
-import net.luckperms.api.node.NodeType;
import net.luckperms.api.node.types.InheritanceNode;
import net.luckperms.api.track.DemotionResult;
import net.luckperms.api.track.PromotionResult;
@@ -52,7 +51,7 @@ import java.util.concurrent.locks.ReentrantLock;
import java.util.function.Predicate;
import java.util.stream.Collectors;
-public final class Track implements Identifiable {
+public final class Track {
/**
* The name of the track
@@ -87,11 +86,6 @@ public final class Track implements Identifiable {
return this.apiDelegate;
}
- @Override
- public String getId() {
- return getName();
- }
-
/**
* Gets an ordered list of the groups on this track
*
@@ -279,9 +273,7 @@ public final class Track implements Identifiable {
}
// find all groups that are inherited by the user in the exact contexts given and applicable to this track
- List nodes = user.normalData().immutable().get(context.immutableCopy()).stream()
- .filter(NodeType.INHERITANCE::matches)
- .map(NodeType.INHERITANCE::cast)
+ List nodes = user.normalData().immutableInheritance().get(context.immutableCopy()).stream()
.filter(Node::getValue)
.filter(node -> containsGroup(node.getGroupName()))
.distinct()
@@ -303,7 +295,7 @@ public final class Track implements Identifiable {
return PromotionResults.undefinedFailure();
}
- user.setPermission(DataType.NORMAL, Inheritance.builder(nextGroup.getId()).withContext(context).build(), true);
+ user.setNode(DataType.NORMAL, Inheritance.builder(nextGroup.getName()).withContext(context).build(), true);
this.plugin.getEventFactory().handleUserPromote(user, this, null, first, sender);
return PromotionResults.addedToFirst(first);
}
@@ -329,8 +321,8 @@ public final class Track implements Identifiable {
return PromotionResults.undefinedFailure();
}
- user.unsetPermission(DataType.NORMAL, oldNode);
- user.setPermission(DataType.NORMAL, Inheritance.builder(nextGroup.getName()).withContext(context).build(), true);
+ user.unsetNode(DataType.NORMAL, oldNode);
+ user.setNode(DataType.NORMAL, Inheritance.builder(nextGroup.getName()).withContext(context).build(), true);
if (context.isEmpty() && user.getPrimaryGroup().getStoredValue().orElse(GroupManager.DEFAULT_GROUP_NAME).equalsIgnoreCase(old)) {
user.getPrimaryGroup().setStoredValue(nextGroup.getName());
@@ -346,9 +338,7 @@ public final class Track implements Identifiable {
}
// find all groups that are inherited by the user in the exact contexts given and applicable to this track
- List nodes = user.normalData().immutable().get(context.immutableCopy()).stream()
- .filter(NodeType.INHERITANCE::matches)
- .map(NodeType.INHERITANCE::cast)
+ List nodes = user.normalData().immutableInheritance().get(context.immutableCopy()).stream()
.filter(Node::getValue)
.filter(node -> containsGroup(node.getGroupName()))
.distinct()
@@ -375,7 +365,7 @@ public final class Track implements Identifiable {
return DemotionResults.removedFromFirst(null);
}
- user.unsetPermission(DataType.NORMAL, oldNode);
+ user.unsetNode(DataType.NORMAL, oldNode);
this.plugin.getEventFactory().handleUserDemote(user, this, old, null, sender);
return DemotionResults.removedFromFirst(old);
}
@@ -385,8 +375,8 @@ public final class Track implements Identifiable {
return DemotionResults.malformedTrack(previous);
}
- user.unsetPermission(DataType.NORMAL, oldNode);
- user.setPermission(DataType.NORMAL, Inheritance.builder(previousGroup.getName()).withContext(context).build(), true);
+ user.unsetNode(DataType.NORMAL, oldNode);
+ user.setNode(DataType.NORMAL, Inheritance.builder(previousGroup.getName()).withContext(context).build(), true);
if (context.isEmpty() && user.getPrimaryGroup().getStoredValue().orElse(GroupManager.DEFAULT_GROUP_NAME).equalsIgnoreCase(old)) {
user.getPrimaryGroup().setStoredValue(previousGroup.getName());
diff --git a/common/src/main/java/me/lucko/luckperms/common/model/User.java b/common/src/main/java/me/lucko/luckperms/common/model/User.java
index 9b287367a..c71f7ec6e 100644
--- a/common/src/main/java/me/lucko/luckperms/common/model/User.java
+++ b/common/src/main/java/me/lucko/luckperms/common/model/User.java
@@ -32,25 +32,23 @@ import me.lucko.luckperms.common.plugin.LuckPermsPlugin;
import me.lucko.luckperms.common.primarygroup.ContextualHolder;
import me.lucko.luckperms.common.primarygroup.PrimaryGroupHolder;
-import net.luckperms.api.model.DataType;
-
import org.checkerframework.checker.nullness.qual.Nullable;
import java.util.Optional;
import java.util.UUID;
-public class User extends PermissionHolder implements Identifiable {
+public class User extends PermissionHolder {
private final ApiUser apiDelegate = new ApiUser(this);
/**
* The users Mojang UUID
*/
- private final UUID uuid;
+ private final UUID uniqueId;
/**
* The last known username of a player
*/
- private @Nullable String name = null;
+ private @Nullable String username = null;
/**
* The users primary group
@@ -62,21 +60,14 @@ public class User extends PermissionHolder implements Identifiable getName() {
- return Optional.ofNullable(this.name);
+ public Optional getUsername() {
+ return Optional.ofNullable(this.username);
}
@Override
public String getObjectName() {
- return this.uuid.toString();
- }
-
- @Override
- public UserIdentifier getId() {
- return UserIdentifier.of(this.uuid, this.name);
+ return this.uniqueId.toString();
}
@Override
public String getFormattedDisplayName() {
- return this.name != null ? this.name : this.uuid.toString();
+ return this.username != null ? this.username : this.uniqueId.toString();
}
@Override
@@ -135,17 +121,17 @@ public class User extends PermissionHolder implements Identifiable 16) {
return false; // nope
}
// if weak is true, only update the value in the User if it's null
- if (weak && this.name != null) {
+ if (weak && this.username != null) {
// try to update casing if they're equalIgnoreCase
- if (this.name.equalsIgnoreCase(name)) {
- this.name = name;
+ if (this.username.equalsIgnoreCase(name)) {
+ this.username = name;
}
return false;
@@ -157,21 +143,21 @@ public class User extends PermissionHolder implements Identifiable {
+public final class UserIdentifier {
/**
* Creates a {@link UserIdentifier}.
*
- * @param uuid the uuid of the user
+ * @param uniqueId the uuid of the user
* @param username the username of the user, nullable
* @return a new identifier
*/
- public static UserIdentifier of(@NonNull UUID uuid, @Nullable String username) {
- Objects.requireNonNull(uuid, "uuid");
+ public static UserIdentifier of(@NonNull UUID uniqueId, @Nullable String username) {
+ Objects.requireNonNull(uniqueId, "uuid");
if (username == null || username.equalsIgnoreCase("null") || username.isEmpty()) {
username = null;
}
- return new UserIdentifier(uuid, username);
+ return new UserIdentifier(uniqueId, username);
}
- private final UUID uuid;
+ private final UUID uniqueId;
private final String username;
- private UserIdentifier(UUID uuid, String username) {
- this.uuid = uuid;
+ private UserIdentifier(UUID uniqueId, String username) {
+ this.uniqueId = uniqueId;
this.username = username;
}
- public UUID getUuid() {
- return this.uuid;
- }
-
- @Override
- public UUID getId() {
- return getUuid();
+ public UUID getUniqueId() {
+ return this.uniqueId;
}
public Optional getUsername() {
@@ -79,16 +74,16 @@ public final class UserIdentifier implements Identifiable {
if (o == this) return true;
if (!(o instanceof UserIdentifier)) return false;
final UserIdentifier other = (UserIdentifier) o;
- return this.uuid.equals(other.uuid);
+ return this.uniqueId.equals(other.uniqueId);
}
@Override
public int hashCode() {
- return this.uuid.hashCode();
+ return this.uniqueId.hashCode();
}
@Override
public String toString() {
- return "UserIdentifier(uuid=" + this.uuid + ", username=" + this.username + ")";
+ return "UserIdentifier(uniqueId=" + this.uniqueId + ", username=" + this.username + ")";
}
}
diff --git a/common/src/main/java/me/lucko/luckperms/common/model/manager/AbstractManager.java b/common/src/main/java/me/lucko/luckperms/common/model/manager/AbstractManager.java
index b1cd42584..19b8da411 100644
--- a/common/src/main/java/me/lucko/luckperms/common/model/manager/AbstractManager.java
+++ b/common/src/main/java/me/lucko/luckperms/common/model/manager/AbstractManager.java
@@ -28,7 +28,6 @@ package me.lucko.luckperms.common.model.manager;
import com.google.common.collect.ImmutableMap;
import me.lucko.luckperms.common.cache.LoadingMap;
-import me.lucko.luckperms.common.model.Identifiable;
import java.util.Map;
@@ -39,7 +38,7 @@ import java.util.Map;
* @param the super class being managed
* @param the implementation class this manager is "managing"
*/
-public abstract class AbstractManager, T extends C> implements Manager {
+public abstract class AbstractManager implements Manager {
private final LoadingMap objects = LoadingMap.of(this);
@@ -70,13 +69,6 @@ public abstract class AbstractManager, T extends C>
}
}
- @Override
- public void unload(C object) {
- if (object != null) {
- unload(object.getId());
- }
- }
-
protected I sanitizeIdentifier(I i) {
return i;
}
diff --git a/common/src/main/java/me/lucko/luckperms/common/model/manager/Manager.java b/common/src/main/java/me/lucko/luckperms/common/model/manager/Manager.java
index 50a42f339..71da306a1 100644
--- a/common/src/main/java/me/lucko/luckperms/common/model/manager/Manager.java
+++ b/common/src/main/java/me/lucko/luckperms/common/model/manager/Manager.java
@@ -25,8 +25,6 @@
package me.lucko.luckperms.common.model.manager;
-import me.lucko.luckperms.common.model.Identifiable;
-
import java.util.Map;
import java.util.function.Function;
@@ -37,7 +35,7 @@ import java.util.function.Function;
* @param the super class being managed
* @param the implementation class this manager is "managing"
*/
-public interface Manager, T extends C> extends Function {
+public interface Manager extends Function {
/**
* Gets a map containing all cached instances held by this manager.
@@ -79,11 +77,4 @@ public interface Manager, T extends C> extends Func
*/
void unload(I id);
- /**
- * Removes and unloads the object from the manager
- *
- * @param object The object to unload
- */
- void unload(C object);
-
}
diff --git a/common/src/main/java/me/lucko/luckperms/common/model/manager/user/AbstractUserManager.java b/common/src/main/java/me/lucko/luckperms/common/model/manager/user/AbstractUserManager.java
index 6c857b01a..3636119cf 100644
--- a/common/src/main/java/me/lucko/luckperms/common/model/manager/user/AbstractUserManager.java
+++ b/common/src/main/java/me/lucko/luckperms/common/model/manager/user/AbstractUserManager.java
@@ -30,7 +30,6 @@ import com.google.common.collect.ImmutableCollection;
import me.lucko.luckperms.common.config.ConfigKeys;
import me.lucko.luckperms.common.context.contextset.ImmutableContextSetImpl;
import me.lucko.luckperms.common.model.User;
-import me.lucko.luckperms.common.model.UserIdentifier;
import me.lucko.luckperms.common.model.manager.AbstractManager;
import me.lucko.luckperms.common.model.manager.group.GroupManager;
import me.lucko.luckperms.common.node.types.Inheritance;
@@ -38,7 +37,6 @@ import me.lucko.luckperms.common.plugin.LuckPermsPlugin;
import net.luckperms.api.model.DataType;
import net.luckperms.api.node.Node;
-import net.luckperms.api.node.NodeType;
import net.luckperms.api.node.types.InheritanceNode;
import java.util.Optional;
@@ -47,7 +45,7 @@ import java.util.concurrent.CompletableFuture;
import java.util.concurrent.TimeUnit;
import java.util.stream.Stream;
-public abstract class AbstractUserManager extends AbstractManager implements UserManager {
+public abstract class AbstractUserManager extends AbstractManager implements UserManager {
private final LuckPermsPlugin plugin;
private final UserHousekeeper housekeeper;
@@ -59,18 +57,16 @@ public abstract class AbstractUserManager extends AbstractManage
}
@Override
- public T getOrMake(UserIdentifier id) {
- T ret = super.getOrMake(id);
- if (id.getUsername().isPresent()) {
- ret.setName(id.getUsername().get(), false);
- }
- return ret;
+ public T getOrMake(UUID id, String username) {
+ T user = getOrMake(id);
+ user.setUsername(username, false);
+ return user;
}
@Override
public T getByUsername(String name) {
for (T user : getAll().values()) {
- Optional n = user.getName();
+ Optional n = user.getUsername();
if (n.isPresent() && n.get().equalsIgnoreCase(name)) {
return user;
}
@@ -78,32 +74,25 @@ public abstract class AbstractUserManager extends AbstractManage
return null;
}
- @Override
- public T getIfLoaded(UUID uuid) {
- return getIfLoaded(UserIdentifier.of(uuid, null));
- }
-
@Override
public boolean giveDefaultIfNeeded(User user, boolean save) {
boolean work = false;
// check that they are actually a member of their primary group, otherwise remove it
if (this.plugin.getConfiguration().get(ConfigKeys.PRIMARY_GROUP_CALCULATION_METHOD).equals("stored")) {
- String pg = user.getPrimaryGroup().getValue();
- boolean has = false;
+ String primaryGroup = user.getPrimaryGroup().getValue();
+ boolean memberOfPrimaryGroup = false;
- for (Node node : user.normalData().immutable().get(ImmutableContextSetImpl.EMPTY)) {
- if (node instanceof InheritanceNode && ((InheritanceNode) node).getGroupName().equalsIgnoreCase(pg)) {
- has = true;
+ for (InheritanceNode node : user.normalData().immutableInheritance().get(ImmutableContextSetImpl.EMPTY)) {
+ if (node.getGroupName().equalsIgnoreCase(primaryGroup)) {
+ memberOfPrimaryGroup = true;
break;
}
}
// need to find a new primary group for the user.
- if (!has) {
- String group = user.normalData().immutable().get(ImmutableContextSetImpl.EMPTY).stream()
- .filter(NodeType.INHERITANCE::matches)
- .map(NodeType.INHERITANCE::cast)
+ if (!memberOfPrimaryGroup) {
+ String group = user.normalData().immutableInheritance().get(ImmutableContextSetImpl.EMPTY).stream()
.findFirst()
.map(InheritanceNode::getGroupName)
.orElse(null);
@@ -119,21 +108,12 @@ public abstract class AbstractUserManager extends AbstractManage
// check that all users are member of at least one group
boolean hasGroup = false;
if (user.getPrimaryGroup().getStoredValue().isPresent()) {
- for (Node node : user.normalData().immutable().values()) {
- if (!node.getContexts().isEmpty()) {
- continue;
- }
-
- if (node instanceof InheritanceNode) {
- hasGroup = true;
- break;
- }
- }
+ hasGroup = !user.normalData().immutableInheritance().get(ImmutableContextSetImpl.EMPTY).isEmpty();
}
if (!hasGroup) {
user.getPrimaryGroup().setStoredValue(GroupManager.DEFAULT_GROUP_NAME);
- user.setPermission(DataType.NORMAL, Inheritance.builder(GroupManager.DEFAULT_GROUP_NAME).build(), false);
+ user.setNode(DataType.NORMAL, Inheritance.builder(GroupManager.DEFAULT_GROUP_NAME).build(), false);
work = true;
}
@@ -151,7 +131,7 @@ public abstract class AbstractUserManager extends AbstractManage
@Override
public void cleanup(User user) {
- this.housekeeper.cleanup(user.getId());
+ this.housekeeper.cleanup(user.getUniqueId());
}
@Override
@@ -159,7 +139,7 @@ public abstract class AbstractUserManager extends AbstractManage
return CompletableFuture.runAsync(
() -> {
Stream.concat(
- getAll().keySet().stream().map(UserIdentifier::getUuid),
+ getAll().keySet().stream(),
this.plugin.getBootstrap().getOnlinePlayers()
).forEach(u -> this.plugin.getStorage().loadUser(u, null).join());
},
diff --git a/common/src/main/java/me/lucko/luckperms/common/model/manager/user/StandardUserManager.java b/common/src/main/java/me/lucko/luckperms/common/model/manager/user/StandardUserManager.java
index cf52b2fed..1b0f62550 100644
--- a/common/src/main/java/me/lucko/luckperms/common/model/manager/user/StandardUserManager.java
+++ b/common/src/main/java/me/lucko/luckperms/common/model/manager/user/StandardUserManager.java
@@ -26,9 +26,9 @@
package me.lucko.luckperms.common.model.manager.user;
import me.lucko.luckperms.common.model.User;
-import me.lucko.luckperms.common.model.UserIdentifier;
import me.lucko.luckperms.common.plugin.LuckPermsPlugin;
+import java.util.UUID;
import java.util.concurrent.TimeUnit;
public class StandardUserManager extends AbstractUserManager {
@@ -40,9 +40,7 @@ public class StandardUserManager extends AbstractUserManager {
}
@Override
- public User apply(UserIdentifier id) {
- return !id.getUsername().isPresent() ?
- new User(id.getUuid(), this.plugin) :
- new User(id.getUuid(), id.getUsername().get(), this.plugin);
+ public User apply(UUID id) {
+ return new User(id, this.plugin);
}
}
diff --git a/common/src/main/java/me/lucko/luckperms/common/model/manager/user/UserHousekeeper.java b/common/src/main/java/me/lucko/luckperms/common/model/manager/user/UserHousekeeper.java
index aeb2493b0..d2514d690 100644
--- a/common/src/main/java/me/lucko/luckperms/common/model/manager/user/UserHousekeeper.java
+++ b/common/src/main/java/me/lucko/luckperms/common/model/manager/user/UserHousekeeper.java
@@ -25,7 +25,6 @@
package me.lucko.luckperms.common.model.manager.user;
-import me.lucko.luckperms.common.model.UserIdentifier;
import me.lucko.luckperms.common.plugin.LuckPermsPlugin;
import me.lucko.luckperms.common.util.ExpiringSet;
@@ -67,21 +66,19 @@ public class UserHousekeeper implements Runnable {
@Override
public void run() {
- for (UserIdentifier entry : this.userManager.getAll().keySet()) {
+ for (UUID entry : this.userManager.getAll().keySet()) {
cleanup(entry);
}
}
- public void cleanup(UserIdentifier identifier) {
- UUID uuid = identifier.getUuid();
-
+ public void cleanup(UUID uuid) {
// unload users which aren't online and who haven't been online (or tried to login) recently
if (this.recentlyUsed.contains(uuid) || this.recentlyUsedApi.contains(uuid) || this.plugin.getBootstrap().isPlayerOnline(uuid)) {
return;
}
// unload them
- this.userManager.unload(identifier);
+ this.userManager.unload(uuid);
}
public static TimeoutSettings timeoutSettings(long duration, TimeUnit unit) {
diff --git a/common/src/main/java/me/lucko/luckperms/common/model/manager/user/UserManager.java b/common/src/main/java/me/lucko/luckperms/common/model/manager/user/UserManager.java
index 147dd1c2e..bda7e1f50 100644
--- a/common/src/main/java/me/lucko/luckperms/common/model/manager/user/UserManager.java
+++ b/common/src/main/java/me/lucko/luckperms/common/model/manager/user/UserManager.java
@@ -27,13 +27,14 @@ package me.lucko.luckperms.common.model.manager.user;
import me.lucko.luckperms.common.calculator.PermissionCalculator;
import me.lucko.luckperms.common.model.User;
-import me.lucko.luckperms.common.model.UserIdentifier;
import me.lucko.luckperms.common.model.manager.Manager;
import java.util.UUID;
import java.util.concurrent.CompletableFuture;
-public interface UserManager extends Manager {
+public interface UserManager extends Manager {
+
+ T getOrMake(UUID id, String username);
/**
* Get a user object by name
diff --git a/common/src/main/java/me/lucko/luckperms/common/node/utils/InheritanceInfo.java b/common/src/main/java/me/lucko/luckperms/common/node/utils/InheritanceInfo.java
deleted file mode 100644
index 7e3b8d7ec..000000000
--- a/common/src/main/java/me/lucko/luckperms/common/node/utils/InheritanceInfo.java
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- * This file is part of LuckPerms, licensed under the MIT License.
- *
- * Copyright (c) lucko (Luck)
- * Copyright (c) contributors
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in all
- * copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-
-package me.lucko.luckperms.common.node.utils;
-
-import net.luckperms.api.node.Node;
-import net.luckperms.api.node.Tristate;
-import net.luckperms.api.node.metadata.types.InheritanceOriginMetadata;
-
-import java.util.Objects;
-import java.util.Optional;
-
-/**
- * The result of an inheritance lookup
- */
-public final class InheritanceInfo {
- public static InheritanceInfo of(Node node) {
- Objects.requireNonNull(node, "node");
- return new InheritanceInfo(Tristate.of(node.getValue()), node.metadata(InheritanceOriginMetadata.KEY).getOrigin());
- }
-
- public static InheritanceInfo empty() {
- return new InheritanceInfo(Tristate.UNDEFINED, null);
- }
-
- private final Tristate result;
- private final String location;
-
- private InheritanceInfo(Tristate result, String location) {
- this.result = result;
- this.location = location;
- }
-
- public Optional getLocation() {
- return Optional.ofNullable(this.location);
- }
-
- @Override
- public boolean equals(Object o) {
- if (o == this) return true;
- if (!(o instanceof InheritanceInfo)) return false;
- final InheritanceInfo other = (InheritanceInfo) o;
- return this.result == other.result && this.getLocation().equals(other.getLocation());
- }
-
- @Override
- public int hashCode() {
- final int PRIME = 59;
- int result = 1;
- result = result * PRIME + this.result.hashCode();
- result = result * PRIME + this.getLocation().hashCode();
- return result;
- }
-
- @Override
- public String toString() {
- return "InheritanceInfo(result=" + this.result + ", location=" + this.getLocation() + ")";
- }
-
- public Tristate getResult() {
- return this.result;
- }
-}
diff --git a/common/src/main/java/me/lucko/luckperms/common/node/utils/NodeTools.java b/common/src/main/java/me/lucko/luckperms/common/node/utils/NodeTools.java
deleted file mode 100644
index b8da354c3..000000000
--- a/common/src/main/java/me/lucko/luckperms/common/node/utils/NodeTools.java
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- * This file is part of LuckPerms, licensed under the MIT License.
- *
- * Copyright (c) lucko (Luck)
- * Copyright (c) contributors
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in all
- * copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-
-package me.lucko.luckperms.common.node.utils;
-
-import net.luckperms.api.node.Node;
-import net.luckperms.api.node.NodeEqualityPredicate;
-
-import java.util.ArrayList;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Set;
-
-public final class NodeTools {
- private NodeTools() {}
-
- public static void removeEqual(Iterator it, NodeEqualityPredicate equalityPredicate) {
- List alreadyIn = new ArrayList<>();
-
- iterate:
- while (it.hasNext()) {
- T next = it.next();
-
- for (T other : alreadyIn) {
- if (next.equals(other, equalityPredicate)) {
- it.remove();
- continue iterate;
- }
- }
-
- alreadyIn.add(next);
- }
- }
-
- public static void removeSamePermission(Iterator it) {
- Set alreadyIn = new HashSet<>();
- while (it.hasNext()) {
- T next = it.next();
- if (!alreadyIn.add(next.getKey())) {
- it.remove();
- }
- }
- }
-
-}
diff --git a/common/src/main/java/me/lucko/luckperms/common/node/utils/ShorthandParser.java b/common/src/main/java/me/lucko/luckperms/common/node/utils/ShorthandParser.java
index 78b80ce2d..58172c7ff 100644
--- a/common/src/main/java/me/lucko/luckperms/common/node/utils/ShorthandParser.java
+++ b/common/src/main/java/me/lucko/luckperms/common/node/utils/ShorthandParser.java
@@ -78,8 +78,6 @@ public final class ShorthandParser {
}
private static Set captureResults(String s) {
- s = s.replace('(', '{').replace(')', '}');
-
int openingIndex = s.indexOf('{');
if (openingIndex == -1) {
return null;
@@ -113,7 +111,6 @@ public final class ShorthandParser {
@Override
public Iterable apply(String s) {
- s = s.replace('|', ',');
if (!s.contains(",")) {
return Collections.singleton(s);
}
@@ -134,13 +131,19 @@ public final class ShorthandParser {
@Override
public Iterable apply(String s) {
int index = s.indexOf("-");
- if (index == -1) return null;
+ if (index == -1) {
+ return null;
+ }
Integer before = parseInt(s.substring(0, index));
- if (before == null) return null;
+ if (before == null) {
+ return null;
+ }
Integer after = parseInt(s.substring(index + 1));
- if (after == null) return null;
+ if (after == null) {
+ return null;
+ }
return IntStream.rangeClosed(before, after).mapToObj(Integer::toString).collect(Collectors.toList());
}
@@ -159,13 +162,19 @@ public final class ShorthandParser {
@Override
public Iterable apply(String s) {
int index = s.indexOf("-");
- if (index == -1) return null;
+ if (index == -1) {
+ return null;
+ }
String before = s.substring(0, index);
- if (before.length() != 1) return null;
+ if (before.length() != 1) {
+ return null;
+ }
String after = s.substring(index + 1);
- if (after.length() != 1) return null;
+ if (after.length() != 1) {
+ return null;
+ }
return getCharRange(before.charAt(0), after.charAt(0));
}
diff --git a/common/src/main/java/me/lucko/luckperms/common/plugin/bootstrap/LuckPermsBootstrap.java b/common/src/main/java/me/lucko/luckperms/common/plugin/bootstrap/LuckPermsBootstrap.java
index 11e9f3b90..c2a6000fd 100644
--- a/common/src/main/java/me/lucko/luckperms/common/plugin/bootstrap/LuckPermsBootstrap.java
+++ b/common/src/main/java/me/lucko/luckperms/common/plugin/bootstrap/LuckPermsBootstrap.java
@@ -163,10 +163,10 @@ public interface LuckPermsBootstrap {
* Gets a player object linked to this User. The returned object must be the same type
* as the instance used in the platforms ContextManager
*
- * @param uuid the users unique id
+ * @param uniqueId the users unique id
* @return a player object, or null, if one couldn't be found.
*/
- Optional> getPlayer(UUID uuid);
+ Optional> getPlayer(UUID uniqueId);
/**
* Lookup a uuid from a username, using the servers internal uuid cache.
@@ -174,15 +174,15 @@ public interface LuckPermsBootstrap {
* @param username the username to lookup
* @return an optional uuid, if found
*/
- Optional lookupUuid(String username);
+ Optional lookupUniqueId(String username);
/**
* Lookup a username from a uuid, using the servers internal uuid cache.
*
- * @param uuid the uuid to lookup
+ * @param uniqueId the uuid to lookup
* @return an optional username, if found
*/
- Optional lookupUsername(UUID uuid);
+ Optional lookupUsername(UUID uniqueId);
/**
* Gets the number of users online on the platform
@@ -208,9 +208,9 @@ public interface LuckPermsBootstrap {
/**
* Checks if a user is online
*
- * @param uuid the users external uuid
+ * @param uniqueId the users external uuid
* @return true if the user is online
*/
- boolean isPlayerOnline(UUID uuid);
+ boolean isPlayerOnline(UUID uniqueId);
}
diff --git a/common/src/main/java/me/lucko/luckperms/common/plugin/util/AbstractConnectionListener.java b/common/src/main/java/me/lucko/luckperms/common/plugin/util/AbstractConnectionListener.java
index 2501bbf2b..13d311cb4 100644
--- a/common/src/main/java/me/lucko/luckperms/common/plugin/util/AbstractConnectionListener.java
+++ b/common/src/main/java/me/lucko/luckperms/common/plugin/util/AbstractConnectionListener.java
@@ -56,22 +56,22 @@ public abstract class AbstractConnectionListener {
return this.uniqueConnections;
}
- protected void recordConnection(UUID uuid) {
- this.uniqueConnections.add(uuid);
+ protected void recordConnection(UUID uniqueId) {
+ this.uniqueConnections.add(uniqueId);
}
- public User loadUser(UUID uuid, String username) {
+ public User loadUser(UUID uniqueId, String username) {
final long startTime = System.currentTimeMillis();
// register with the housekeeper to avoid accidental unloads
- this.plugin.getUserManager().getHouseKeeper().registerUsage(uuid);
+ this.plugin.getUserManager().getHouseKeeper().registerUsage(uniqueId);
// save uuid data.
- PlayerSaveResult saveResult = this.plugin.getStorage().savePlayerData(uuid, username).join();
+ PlayerSaveResult saveResult = this.plugin.getStorage().savePlayerData(uniqueId, username).join();
// fire UserFirstLogin event
if (saveResult.includes(PlayerSaveResult.Outcome.CLEAN_INSERT)) {
- this.plugin.getEventFactory().handleUserFirstLogin(uuid, username);
+ this.plugin.getEventFactory().handleUserFirstLogin(uniqueId, username);
}
// most likely because ip forwarding is not setup correctly
@@ -80,9 +80,9 @@ public abstract class AbstractConnectionListener {
Set otherUuids = saveResult.getOtherUniqueIds();
this.plugin.getLogger().warn("LuckPerms already has data for player '" + username + "' - but this data is stored under a different UUID.");
- this.plugin.getLogger().warn("'" + username + "' has previously used the unique ids " + otherUuids + " but is now connecting with '" + uuid + "'");
+ this.plugin.getLogger().warn("'" + username + "' has previously used the unique ids " + otherUuids + " but is now connecting with '" + uniqueId + "'");
- if (uuid.version() == 4) {
+ if (uniqueId.version() == 4) {
if (this.plugin.getBootstrap().getType() == Platform.Type.BUNGEECORD) {
this.plugin.getLogger().warn("The UUID the player is connecting with now is Mojang-assigned (type 4). This implies that BungeeCord's IP-Forwarding has not been setup correctly on one (or more) of the backend servers.");
} if (this.plugin.getBootstrap().getType() == Platform.Type.VELOCITY) {
@@ -92,14 +92,14 @@ public abstract class AbstractConnectionListener {
this.plugin.getLogger().warn("If you're using BungeeCord/Velocity, please ensure that IP-Forwarding is setup correctly on all of your backend servers!");
}
} else {
- this.plugin.getLogger().warn("The UUID the player is connecting with now is NOT Mojang-assigned (type " + uuid.version() + "). This implies that THIS server is not authenticating correctly, but one (or more) of the other servers/proxies in the network are.");
+ this.plugin.getLogger().warn("The UUID the player is connecting with now is NOT Mojang-assigned (type " + uniqueId.version() + "). This implies that THIS server is not authenticating correctly, but one (or more) of the other servers/proxies in the network are.");
this.plugin.getLogger().warn("If you're using BungeeCord/Velocity, please ensure that IP-Forwarding is setup correctly on all of your backend servers!");
}
this.plugin.getLogger().warn("See here for more info: https://github.com/lucko/LuckPerms/wiki/Network-Installation#pre-setup");
}
- User user = this.plugin.getStorage().loadUser(uuid, username).join();
+ User user = this.plugin.getStorage().loadUser(uniqueId, username).join();
if (user == null) {
throw new NullPointerException("User is null");
}
@@ -112,16 +112,16 @@ public abstract class AbstractConnectionListener {
return user;
}
- public void handleDisconnect(UUID uuid) {
+ public void handleDisconnect(UUID uniqueId) {
// Register with the housekeeper, so the User's instance will stick
// around for a bit after they disconnect
- this.plugin.getUserManager().getHouseKeeper().registerUsage(uuid);
+ this.plugin.getUserManager().getHouseKeeper().registerUsage(uniqueId);
// force a clear of transient nodes
this.plugin.getBootstrap().getScheduler().executeAsync(() -> {
- User user = this.plugin.getUserManager().getIfLoaded(uuid);
+ User user = this.plugin.getUserManager().getIfLoaded(uniqueId);
if (user != null) {
- user.clearNodes(DataType.TRANSIENT, null);
+ user.clearNodes(DataType.TRANSIENT, null, false);
}
});
}
diff --git a/common/src/main/java/me/lucko/luckperms/common/primarygroup/ParentsByWeightHolder.java b/common/src/main/java/me/lucko/luckperms/common/primarygroup/ParentsByWeightHolder.java
index 455edba86..e9f599d13 100644
--- a/common/src/main/java/me/lucko/luckperms/common/primarygroup/ParentsByWeightHolder.java
+++ b/common/src/main/java/me/lucko/luckperms/common/primarygroup/ParentsByWeightHolder.java
@@ -45,7 +45,7 @@ public class ParentsByWeightHolder extends ContextualHolder {
@Override
protected @NonNull Optional calculateValue(QueryOptions queryOptions) {
Set groups = new LinkedHashSet<>();
- for (InheritanceNode node : this.user.getOwnGroupNodes(queryOptions)) {
+ for (InheritanceNode node : this.user.getOwnInheritanceNodes(queryOptions)) {
Group group = this.user.getPlugin().getGroupManager().getIfLoaded(node.getGroupName());
if (group != null) {
groups.add(group);
diff --git a/common/src/main/java/me/lucko/luckperms/common/sender/AbstractSender.java b/common/src/main/java/me/lucko/luckperms/common/sender/AbstractSender.java
index cddf98cbe..c2e6bd3b7 100644
--- a/common/src/main/java/me/lucko/luckperms/common/sender/AbstractSender.java
+++ b/common/src/main/java/me/lucko/luckperms/common/sender/AbstractSender.java
@@ -48,14 +48,14 @@ public final class AbstractSender implements Sender {
private final SenderFactory factory;
private final WeakReference sender;
- private final UUID uuid;
+ private final UUID uniqueId;
private final String name;
AbstractSender(LuckPermsPlugin platform, SenderFactory factory, T t) {
this.platform = platform;
this.factory = factory;
this.sender = new WeakReference<>(t);
- this.uuid = factory.getUuid(t);
+ this.uniqueId = factory.getUniqueId(t);
this.name = factory.getName(t);
}
@@ -65,8 +65,8 @@ public final class AbstractSender implements Sender {
}
@Override
- public UUID getUuid() {
- return this.uuid;
+ public UUID getUniqueId() {
+ return this.uniqueId;
}
@Override
@@ -135,11 +135,11 @@ public final class AbstractSender implements Sender {
if (o == this) return true;
if (!(o instanceof AbstractSender)) return false;
final AbstractSender that = (AbstractSender) o;
- return this.getUuid().equals(that.getUuid());
+ return this.getUniqueId().equals(that.getUniqueId());
}
@Override
public int hashCode() {
- return this.uuid.hashCode();
+ return this.uniqueId.hashCode();
}
}
diff --git a/common/src/main/java/me/lucko/luckperms/common/sender/DummySender.java b/common/src/main/java/me/lucko/luckperms/common/sender/DummySender.java
index fdcf645e6..6842c3199 100644
--- a/common/src/main/java/me/lucko/luckperms/common/sender/DummySender.java
+++ b/common/src/main/java/me/lucko/luckperms/common/sender/DummySender.java
@@ -36,12 +36,12 @@ import java.util.UUID;
public abstract class DummySender implements Sender {
private final LuckPermsPlugin platform;
- private final UUID uuid;
+ private final UUID uniqueId;
private final String name;
- public DummySender(LuckPermsPlugin plugin, UUID uuid, String name) {
+ public DummySender(LuckPermsPlugin plugin, UUID uniqueId, String name) {
this.platform = plugin;
- this.uuid = uuid;
+ this.uniqueId = uniqueId;
this.name = name;
}
@@ -77,8 +77,8 @@ public abstract class DummySender implements Sender {
}
@Override
- public UUID getUuid() {
- return this.uuid;
+ public UUID getUniqueId() {
+ return this.uniqueId;
}
@Override
diff --git a/common/src/main/java/me/lucko/luckperms/common/sender/Sender.java b/common/src/main/java/me/lucko/luckperms/common/sender/Sender.java
index 2788b4ce4..9da6fd634 100644
--- a/common/src/main/java/me/lucko/luckperms/common/sender/Sender.java
+++ b/common/src/main/java/me/lucko/luckperms/common/sender/Sender.java
@@ -107,7 +107,7 @@ public interface Sender {
*
* @return the sender's uuid
*/
- UUID getUuid();
+ UUID getUniqueId();
/**
* Send a message to the Sender.
@@ -157,7 +157,7 @@ public interface Sender {
* @return if the sender is the console
*/
default boolean isConsole() {
- return CONSOLE_UUID.equals(getUuid()) || IMPORT_UUID.equals(getUuid());
+ return CONSOLE_UUID.equals(getUniqueId()) || IMPORT_UUID.equals(getUniqueId());
}
/**
@@ -166,7 +166,7 @@ public interface Sender {
* @return if the sender is an import process
*/
default boolean isImport() {
- return IMPORT_UUID.equals(getUuid());
+ return IMPORT_UUID.equals(getUniqueId());
}
/**
diff --git a/common/src/main/java/me/lucko/luckperms/common/sender/SenderFactory.java b/common/src/main/java/me/lucko/luckperms/common/sender/SenderFactory.java
index 1b1ee50fe..6fea70c1a 100644
--- a/common/src/main/java/me/lucko/luckperms/common/sender/SenderFactory.java
+++ b/common/src/main/java/me/lucko/luckperms/common/sender/SenderFactory.java
@@ -50,7 +50,7 @@ public abstract class SenderFactory {
return this.plugin;
}
- protected abstract UUID getUuid(T t);
+ protected abstract UUID getUniqueId(T t);
protected abstract String getName(T t);
diff --git a/common/src/main/java/me/lucko/luckperms/common/storage/Storage.java b/common/src/main/java/me/lucko/luckperms/common/storage/Storage.java
index d1c01e093..3bfc3032d 100644
--- a/common/src/main/java/me/lucko/luckperms/common/storage/Storage.java
+++ b/common/src/main/java/me/lucko/luckperms/common/storage/Storage.java
@@ -132,9 +132,9 @@ public class Storage {
return makeFuture(() -> this.implementation.applyBulkUpdate(bulkUpdate));
}
- public CompletableFuture loadUser(UUID uuid, String username) {
+ public CompletableFuture loadUser(UUID uniqueId, String username) {
return makeFuture(() -> {
- User user = this.implementation.loadUser(uuid, username);
+ User user = this.implementation.loadUser(uniqueId, username);
if (user != null) {
this.plugin.getEventFactory().handleUserLoad(user);
}
@@ -242,21 +242,21 @@ public class Storage {
});
}
- public CompletableFuture savePlayerData(UUID uuid, String username) {
+ public CompletableFuture savePlayerData(UUID uniqueId, String username) {
return makeFuture(() -> {
- PlayerSaveResult result = this.implementation.savePlayerData(uuid, username);
+ PlayerSaveResult result = this.implementation.savePlayerData(uniqueId, username);
if (result != null) {
- this.plugin.getEventFactory().handlePlayerDataSave(uuid, username, result);
+ this.plugin.getEventFactory().handlePlayerDataSave(uniqueId, username, result);
}
return result;
});
}
- public CompletableFuture getPlayerUuid(String username) {
- return makeFuture(() -> this.implementation.getPlayerUuid(username));
+ public CompletableFuture getPlayerUniqueId(String username) {
+ return makeFuture(() -> this.implementation.getPlayerUniqueId(username));
}
- public CompletableFuture getPlayerName(UUID uuid) {
- return makeFuture(() -> this.implementation.getPlayerName(uuid));
+ public CompletableFuture getPlayerName(UUID uniqueId) {
+ return makeFuture(() -> this.implementation.getPlayerName(uniqueId));
}
}
diff --git a/common/src/main/java/me/lucko/luckperms/common/storage/implementation/StorageImplementation.java b/common/src/main/java/me/lucko/luckperms/common/storage/implementation/StorageImplementation.java
index 4db75097a..d8c15b696 100644
--- a/common/src/main/java/me/lucko/luckperms/common/storage/implementation/StorageImplementation.java
+++ b/common/src/main/java/me/lucko/luckperms/common/storage/implementation/StorageImplementation.java
@@ -65,7 +65,7 @@ public interface StorageImplementation {
void applyBulkUpdate(BulkUpdate bulkUpdate) throws Exception;
- User loadUser(UUID uuid, String username) throws Exception;
+ User loadUser(UUID uniqueId, String username) throws Exception;
void saveUser(User user) throws Exception;
@@ -95,9 +95,9 @@ public interface StorageImplementation {
void deleteTrack(Track track) throws Exception;
- PlayerSaveResult savePlayerData(UUID uuid, String username) throws Exception;
+ PlayerSaveResult savePlayerData(UUID uniqueId, String username) throws Exception;
- @Nullable UUID getPlayerUuid(String username) throws Exception;
+ @Nullable UUID getPlayerUniqueId(String username) throws Exception;
- @Nullable String getPlayerName(UUID uuid) throws Exception;
+ @Nullable String getPlayerName(UUID uniqueId) throws Exception;
}
diff --git a/common/src/main/java/me/lucko/luckperms/common/storage/implementation/file/AbstractConfigurateStorage.java b/common/src/main/java/me/lucko/luckperms/common/storage/implementation/file/AbstractConfigurateStorage.java
index e5b5f020f..19c989cc2 100644
--- a/common/src/main/java/me/lucko/luckperms/common/storage/implementation/file/AbstractConfigurateStorage.java
+++ b/common/src/main/java/me/lucko/luckperms/common/storage/implementation/file/AbstractConfigurateStorage.java
@@ -36,7 +36,6 @@ import me.lucko.luckperms.common.context.contextset.ImmutableContextSetImpl;
import me.lucko.luckperms.common.model.Group;
import me.lucko.luckperms.common.model.Track;
import me.lucko.luckperms.common.model.User;
-import me.lucko.luckperms.common.model.UserIdentifier;
import me.lucko.luckperms.common.model.manager.group.GroupManager;
import me.lucko.luckperms.common.node.factory.NodeBuilders;
import me.lucko.luckperms.common.node.types.Inheritance;
@@ -196,35 +195,35 @@ public abstract class AbstractConfigurateStorage implements StorageImplementatio
}
@Override
- public User loadUser(UUID uuid, String username) {
- User user = this.plugin.getUserManager().getOrMake(UserIdentifier.of(uuid, username));
+ public User loadUser(UUID uniqueId, String username) {
+ User user = this.plugin.getUserManager().getOrMake(uniqueId, username);
user.getIoLock().lock();
try {
- ConfigurationNode object = readFile(StorageLocation.USER, uuid.toString());
+ ConfigurationNode object = readFile(StorageLocation.USER, uniqueId.toString());
if (object != null) {
String name = object.getNode("name").getString();
user.getPrimaryGroup().setStoredValue(object.getNode(this.loader instanceof JsonLoader ? "primaryGroup" : "primary-group").getString());
user.setNodes(DataType.NORMAL, readNodes(object));
- user.setName(name, true);
+ user.setUsername(name, true);
boolean save = this.plugin.getUserManager().giveDefaultIfNeeded(user, false);
- if (user.getName().isPresent() && (name == null || !user.getName().get().equalsIgnoreCase(name))) {
+ if (user.getUsername().isPresent() && (name == null || !user.getUsername().get().equalsIgnoreCase(name))) {
save = true;
}
- if (save | user.auditTemporaryPermissions()) {
+ if (save | user.auditTemporaryNodes()) {
saveUser(user);
}
} else {
if (this.plugin.getUserManager().shouldSave(user)) {
- user.clearEnduringNodes();
+ user.clearNodes(DataType.NORMAL, null, true);
user.getPrimaryGroup().setStoredValue(null);
this.plugin.getUserManager().giveDefaultIfNeeded(user, false);
}
}
} catch (Exception e) {
- throw reportException(uuid.toString(), e);
+ throw reportException(uniqueId.toString(), e);
} finally {
user.getIoLock().unlock();
}
@@ -236,20 +235,20 @@ public abstract class AbstractConfigurateStorage implements StorageImplementatio
user.getIoLock().lock();
try {
if (!this.plugin.getUserManager().shouldSave(user)) {
- saveFile(StorageLocation.USER, user.getUuid().toString(), null);
+ saveFile(StorageLocation.USER, user.getUniqueId().toString(), null);
} else {
ConfigurationNode data = SimpleConfigurationNode.root();
if (this instanceof SeparatedConfigurateStorage) {
- data.getNode("uuid").setValue(user.getUuid().toString());
+ data.getNode("uuid").setValue(user.getUniqueId().toString());
}
- data.getNode("name").setValue(user.getName().orElse("null"));
+ data.getNode("name").setValue(user.getUsername().orElse("null"));
data.getNode(this.loader instanceof JsonLoader ? "primaryGroup" : "primary-group").setValue(user.getPrimaryGroup().getStoredValue().orElse(GroupManager.DEFAULT_GROUP_NAME));
writeNodes(data, user.normalData().immutable().values());
- saveFile(StorageLocation.USER, user.getUuid().toString(), data);
+ saveFile(StorageLocation.USER, user.getUniqueId().toString(), data);
}
} catch (Exception e) {
- throw reportException(user.getUuid().toString(), e);
+ throw reportException(user.getUniqueId().toString(), e);
} finally {
user.getIoLock().unlock();
}
@@ -340,7 +339,7 @@ public abstract class AbstractConfigurateStorage implements StorageImplementatio
} finally {
group.getIoLock().unlock();
}
- this.plugin.getGroupManager().unload(group);
+ this.plugin.getGroupManager().unload(group.getName());
}
@Override
@@ -435,22 +434,22 @@ public abstract class AbstractConfigurateStorage implements StorageImplementatio
} finally {
track.getIoLock().unlock();
}
- this.plugin.getTrackManager().unload(track);
+ this.plugin.getTrackManager().unload(track.getName());
}
@Override
- public PlayerSaveResult savePlayerData(UUID uuid, String username) {
- return this.uuidCache.addMapping(uuid, username);
+ public PlayerSaveResult savePlayerData(UUID uniqueId, String username) {
+ return this.uuidCache.addMapping(uniqueId, username);
}
@Override
- public UUID getPlayerUuid(String username) {
+ public UUID getPlayerUniqueId(String username) {
return this.uuidCache.lookupUuid(username);
}
@Override
- public String getPlayerName(UUID uuid) {
- return this.uuidCache.lookupUsername(uuid);
+ public String getPlayerName(UUID uniqueId) {
+ return this.uuidCache.lookupUsername(uniqueId);
}
private static ImmutableContextSet readContexts(ConfigurationNode attributes) {
diff --git a/common/src/main/java/me/lucko/luckperms/common/storage/implementation/file/CombinedConfigurateStorage.java b/common/src/main/java/me/lucko/luckperms/common/storage/implementation/file/CombinedConfigurateStorage.java
index 3b790e251..13b3e4660 100644
--- a/common/src/main/java/me/lucko/luckperms/common/storage/implementation/file/CombinedConfigurateStorage.java
+++ b/common/src/main/java/me/lucko/luckperms/common/storage/implementation/file/CombinedConfigurateStorage.java
@@ -27,6 +27,8 @@ package me.lucko.luckperms.common.storage.implementation.file;
import me.lucko.luckperms.common.bulkupdate.BulkUpdate;
import me.lucko.luckperms.common.bulkupdate.comparison.Constraint;
+import me.lucko.luckperms.common.model.Group;
+import me.lucko.luckperms.common.model.Track;
import me.lucko.luckperms.common.model.manager.group.GroupManager;
import me.lucko.luckperms.common.model.manager.track.TrackManager;
import me.lucko.luckperms.common.node.model.HeldNodeImpl;
@@ -312,7 +314,8 @@ public class CombinedConfigurateStorage extends AbstractConfigurateStorage {
GroupManager> gm = this.plugin.getGroupManager();
gm.getAll().values().stream()
- .filter(g -> !groups.contains(g.getName()))
+ .map(Group::getName)
+ .filter(g -> !groups.contains(g))
.forEach(gm::unload);
}
@@ -366,7 +369,8 @@ public class CombinedConfigurateStorage extends AbstractConfigurateStorage {
TrackManager> tm = this.plugin.getTrackManager();
tm.getAll().values().stream()
- .filter(t -> !tracks.contains(t.getName()))
+ .map(Track::getName)
+ .filter(t -> !tracks.contains(t))
.forEach(tm::unload);
}
diff --git a/common/src/main/java/me/lucko/luckperms/common/storage/implementation/file/SeparatedConfigurateStorage.java b/common/src/main/java/me/lucko/luckperms/common/storage/implementation/file/SeparatedConfigurateStorage.java
index 633946f25..c2bae9f7e 100644
--- a/common/src/main/java/me/lucko/luckperms/common/storage/implementation/file/SeparatedConfigurateStorage.java
+++ b/common/src/main/java/me/lucko/luckperms/common/storage/implementation/file/SeparatedConfigurateStorage.java
@@ -27,6 +27,8 @@ package me.lucko.luckperms.common.storage.implementation.file;
import me.lucko.luckperms.common.bulkupdate.BulkUpdate;
import me.lucko.luckperms.common.bulkupdate.comparison.Constraint;
+import me.lucko.luckperms.common.model.Group;
+import me.lucko.luckperms.common.model.Track;
import me.lucko.luckperms.common.model.User;
import me.lucko.luckperms.common.model.manager.group.GroupManager;
import me.lucko.luckperms.common.model.manager.track.TrackManager;
@@ -305,7 +307,8 @@ public class SeparatedConfigurateStorage extends AbstractConfigurateStorage {
GroupManager> gm = this.plugin.getGroupManager();
gm.getAll().values().stream()
- .filter(g -> !groups.contains(g.getName()))
+ .map(Group::getName)
+ .filter(g -> !groups.contains(g))
.forEach(gm::unload);
}
@@ -361,7 +364,8 @@ public class SeparatedConfigurateStorage extends AbstractConfigurateStorage {
TrackManager> tm = this.plugin.getTrackManager();
tm.getAll().values().stream()
- .filter(t -> !tracks.contains(t.getName()))
+ .map(Track::getName)
+ .filter(t -> !tracks.contains(t))
.forEach(tm::unload);
}
diff --git a/common/src/main/java/me/lucko/luckperms/common/storage/implementation/mongodb/MongoStorage.java b/common/src/main/java/me/lucko/luckperms/common/storage/implementation/mongodb/MongoStorage.java
index 78e7f5a5b..c0b70120c 100644
--- a/common/src/main/java/me/lucko/luckperms/common/storage/implementation/mongodb/MongoStorage.java
+++ b/common/src/main/java/me/lucko/luckperms/common/storage/implementation/mongodb/MongoStorage.java
@@ -45,7 +45,6 @@ import me.lucko.luckperms.common.context.contextset.MutableContextSetImpl;
import me.lucko.luckperms.common.model.Group;
import me.lucko.luckperms.common.model.Track;
import me.lucko.luckperms.common.model.User;
-import me.lucko.luckperms.common.model.UserIdentifier;
import me.lucko.luckperms.common.model.manager.group.GroupManager;
import me.lucko.luckperms.common.model.manager.track.TrackManager;
import me.lucko.luckperms.common.node.factory.NodeBuilders;
@@ -297,12 +296,12 @@ public class MongoStorage implements StorageImplementation {
}
@Override
- public User loadUser(UUID uuid, String username) {
- User user = this.plugin.getUserManager().getOrMake(UserIdentifier.of(uuid, username));
+ public User loadUser(UUID uniqueId, String username) {
+ User user = this.plugin.getUserManager().getOrMake(uniqueId, username);
user.getIoLock().lock();
try {
MongoCollection c = this.database.getCollection(this.prefix + "users");
- try (MongoCursor cursor = c.find(new Document("_id", user.getUuid())).iterator()) {
+ try (MongoCursor cursor = c.find(new Document("_id", user.getUniqueId())).iterator()) {
if (cursor.hasNext()) {
// User exists, let's load.
Document d = cursor.next();
@@ -310,19 +309,19 @@ public class MongoStorage implements StorageImplementation {
String name = d.getString("name");
user.getPrimaryGroup().setStoredValue(d.getString("primaryGroup"));
user.setNodes(DataType.NORMAL, nodesFromDoc(d));
- user.setName(name, true);
+ user.setUsername(name, true);
boolean save = this.plugin.getUserManager().giveDefaultIfNeeded(user, false);
- if (user.getName().isPresent() && (name == null || !user.getName().get().equalsIgnoreCase(name))) {
+ if (user.getUsername().isPresent() && (name == null || !user.getUsername().get().equalsIgnoreCase(name))) {
save = true;
}
- if (save | user.auditTemporaryPermissions()) {
- c.replaceOne(new Document("_id", user.getUuid()), userToDoc(user));
+ if (save | user.auditTemporaryNodes()) {
+ c.replaceOne(new Document("_id", user.getUniqueId()), userToDoc(user));
}
} else {
if (this.plugin.getUserManager().shouldSave(user)) {
- user.clearEnduringNodes();
+ user.clearNodes(DataType.NORMAL, null, true);
user.getPrimaryGroup().setStoredValue(null);
this.plugin.getUserManager().giveDefaultIfNeeded(user, false);
}
@@ -340,9 +339,9 @@ public class MongoStorage implements StorageImplementation {
try {
MongoCollection c = this.database.getCollection(this.prefix + "users");
if (!this.plugin.getUserManager().shouldSave(user)) {
- c.deleteOne(new Document("_id", user.getUuid()));
+ c.deleteOne(new Document("_id", user.getUniqueId()));
} else {
- c.replaceOne(new Document("_id", user.getUuid()), userToDoc(user), new ReplaceOptions().upsert(true));
+ c.replaceOne(new Document("_id", user.getUniqueId()), userToDoc(user), new ReplaceOptions().upsert(true));
}
} finally {
user.getIoLock().unlock();
@@ -459,7 +458,8 @@ public class MongoStorage implements StorageImplementation {
GroupManager> gm = this.plugin.getGroupManager();
gm.getAll().values().stream()
- .filter(g -> !groups.contains(g.getName()))
+ .map(Group::getName)
+ .filter(g -> !groups.contains(g))
.forEach(gm::unload);
}
@@ -585,7 +585,8 @@ public class MongoStorage implements StorageImplementation {
TrackManager> tm = this.plugin.getTrackManager();
tm.getAll().values().stream()
- .filter(t -> !tracks.contains(t.getName()))
+ .map(Track::getName)
+ .filter(t -> !tracks.contains(t))
.forEach(tm::unload);
}
@@ -612,16 +613,16 @@ public class MongoStorage implements StorageImplementation {
}
@Override
- public PlayerSaveResult savePlayerData(UUID uuid, String username) {
+ public PlayerSaveResult savePlayerData(UUID uniqueId, String username) {
username = username.toLowerCase();
MongoCollection c = this.database.getCollection(this.prefix + "uuid");
// find any existing mapping
- String oldUsername = getPlayerName(uuid);
+ String oldUsername = getPlayerName(uniqueId);
// do the insert
if (!username.equalsIgnoreCase(oldUsername)) {
- c.replaceOne(new Document("_id", uuid), new Document("_id", uuid).append("name", username), new ReplaceOptions().upsert(true));
+ c.replaceOne(new Document("_id", uniqueId), new Document("_id", uniqueId).append("name", username), new ReplaceOptions().upsert(true));
}
PlayerSaveResultImpl result = PlayerSaveResultImpl.determineBaseResult(username, oldUsername);
@@ -632,7 +633,7 @@ public class MongoStorage implements StorageImplementation {
conflicting.add(cursor.next().get("_id", UUID.class));
}
}
- conflicting.remove(uuid);
+ conflicting.remove(uniqueId);
if (!conflicting.isEmpty()) {
// remove the mappings for conflicting uuids
@@ -644,7 +645,7 @@ public class MongoStorage implements StorageImplementation {
}
@Override
- public UUID getPlayerUuid(String username) {
+ public UUID getPlayerUniqueId(String username) {
MongoCollection c = this.database.getCollection(this.prefix + "uuid");
Document doc = c.find(new Document("name", username.toLowerCase())).first();
if (doc != null) {
@@ -654,9 +655,9 @@ public class MongoStorage implements StorageImplementation {
}
@Override
- public String getPlayerName(UUID uuid) {
+ public String getPlayerName(UUID uniqueId) {
MongoCollection c = this.database.getCollection(this.prefix + "uuid");
- Document doc = c.find(new Document("_id", uuid)).first();
+ Document doc = c.find(new Document("_id", uniqueId)).first();
if (doc != null) {
return doc.get("name", String.class);
}
@@ -668,8 +669,8 @@ public class MongoStorage implements StorageImplementation {
.map(MongoStorage::nodeToDoc)
.collect(Collectors.toList());
- return new Document("_id", user.getUuid())
- .append("name", user.getName().orElse("null"))
+ return new Document("_id", user.getUniqueId())
+ .append("name", user.getUsername().orElse("null"))
.append("primaryGroup", user.getPrimaryGroup().getStoredValue().orElse(GroupManager.DEFAULT_GROUP_NAME))
.append("permissions", nodes);
}
diff --git a/common/src/main/java/me/lucko/luckperms/common/storage/implementation/split/SplitStorage.java b/common/src/main/java/me/lucko/luckperms/common/storage/implementation/split/SplitStorage.java
index 43e4662b1..b72997838 100644
--- a/common/src/main/java/me/lucko/luckperms/common/storage/implementation/split/SplitStorage.java
+++ b/common/src/main/java/me/lucko/luckperms/common/storage/implementation/split/SplitStorage.java
@@ -134,8 +134,8 @@ public class SplitStorage implements StorageImplementation {
}
@Override
- public User loadUser(UUID uuid, String username) throws Exception {
- return implFor(SplitStorageType.USER).loadUser(uuid, username);
+ public User loadUser(UUID uniqueId, String username) throws Exception {
+ return implFor(SplitStorageType.USER).loadUser(uniqueId, username);
}
@Override
@@ -209,17 +209,17 @@ public class SplitStorage implements StorageImplementation {
}
@Override
- public PlayerSaveResult savePlayerData(UUID uuid, String username) throws Exception {
- return implFor(SplitStorageType.UUID).savePlayerData(uuid, username);
+ public PlayerSaveResult savePlayerData(UUID uniqueId, String username) throws Exception {
+ return implFor(SplitStorageType.UUID).savePlayerData(uniqueId, username);
}
@Override
- public UUID getPlayerUuid(String username) throws Exception {
- return implFor(SplitStorageType.UUID).getPlayerUuid(username);
+ public UUID getPlayerUniqueId(String username) throws Exception {
+ return implFor(SplitStorageType.UUID).getPlayerUniqueId(username);
}
@Override
- public String getPlayerName(UUID uuid) throws Exception {
- return implFor(SplitStorageType.UUID).getPlayerName(uuid);
+ public String getPlayerName(UUID uniqueId) throws Exception {
+ return implFor(SplitStorageType.UUID).getPlayerName(uniqueId);
}
}
diff --git a/common/src/main/java/me/lucko/luckperms/common/storage/implementation/sql/SqlNode.java b/common/src/main/java/me/lucko/luckperms/common/storage/implementation/sql/SqlNode.java
index 8ae88b1c9..9d9f4fa7b 100644
--- a/common/src/main/java/me/lucko/luckperms/common/storage/implementation/sql/SqlNode.java
+++ b/common/src/main/java/me/lucko/luckperms/common/storage/implementation/sql/SqlNode.java
@@ -25,7 +25,9 @@
package me.lucko.luckperms.common.storage.implementation.sql;
+import me.lucko.luckperms.common.context.ContextSetJsonSerializer;
import me.lucko.luckperms.common.node.factory.NodeBuilders;
+import me.lucko.luckperms.common.util.gson.GsonProvider;
import net.luckperms.api.context.ContextSet;
import net.luckperms.api.context.DefaultContextKeys;
@@ -76,7 +78,15 @@ public final class SqlNode {
long expiry = node.hasExpiry() ? node.getExpiry().getEpochSecond() : 0L;
- return new SqlNode(node.getKey(), node.getValue(), server, world, expiry, contexts.immutableCopy());
+ return new SqlNode(node.getKey(), node.getValue(), server, world, expiry, contexts.immutableCopy(), -1);
+ }
+
+ public static SqlNode fromSqlFields(String permission, boolean value, String server, String world, long expiry, String contexts) {
+ return new SqlNode(permission, value, server, world, expiry, ContextSetJsonSerializer.deserializeContextSet(GsonProvider.normal(), contexts).immutableCopy(), -1);
+ }
+
+ public static SqlNode fromSqlFields(long sqlId, String permission, boolean value, String server, String world, long expiry, String contexts) {
+ return new SqlNode(permission, value, server, world, expiry, ContextSetJsonSerializer.deserializeContextSet(GsonProvider.normal(), contexts).immutableCopy(), sqlId);
}
private final String permission;
@@ -85,14 +95,16 @@ public final class SqlNode {
private final String world;
private final long expiry;
private final ImmutableContextSet contexts;
+ private final long sqlId;
- public SqlNode(String permission, boolean value, String server, String world, long expiry, ImmutableContextSet contexts) {
+ private SqlNode(String permission, boolean value, String server, String world, long expiry, ImmutableContextSet contexts, long sqlId) {
this.permission = Objects.requireNonNull(permission, "permission");
this.value = value;
this.server = Objects.requireNonNull(server, "server");
this.world = Objects.requireNonNull(world, "world");
this.expiry = expiry;
this.contexts = Objects.requireNonNull(contexts, "contexts");
+ this.sqlId = sqlId;
}
public Node toNode() {
@@ -129,6 +141,13 @@ public final class SqlNode {
return this.contexts;
}
+ public long getSqlId() {
+ if (this.sqlId == -1) {
+ throw new IllegalStateException("sql id not set");
+ }
+ return this.sqlId;
+ }
+
@Override
public boolean equals(Object o) {
if (o == this) return true;
diff --git a/common/src/main/java/me/lucko/luckperms/common/storage/implementation/sql/SqlStorage.java b/common/src/main/java/me/lucko/luckperms/common/storage/implementation/sql/SqlStorage.java
index 2f324f945..a5ef39e86 100644
--- a/common/src/main/java/me/lucko/luckperms/common/storage/implementation/sql/SqlStorage.java
+++ b/common/src/main/java/me/lucko/luckperms/common/storage/implementation/sql/SqlStorage.java
@@ -37,7 +37,6 @@ import me.lucko.luckperms.common.context.ContextSetJsonSerializer;
import me.lucko.luckperms.common.model.Group;
import me.lucko.luckperms.common.model.Track;
import me.lucko.luckperms.common.model.User;
-import me.lucko.luckperms.common.model.UserIdentifier;
import me.lucko.luckperms.common.model.manager.group.GroupManager;
import me.lucko.luckperms.common.model.manager.track.TrackManager;
import me.lucko.luckperms.common.node.model.HeldNodeImpl;
@@ -81,8 +80,8 @@ import java.util.stream.Collectors;
public class SqlStorage implements StorageImplementation {
private static final Type LIST_STRING_TYPE = new TypeToken>(){}.getType();
- private static final String USER_PERMISSIONS_SELECT = "SELECT permission, value, server, world, expiry, contexts FROM {prefix}user_permissions WHERE uuid=?";
- private static final String USER_PERMISSIONS_DELETE_SPECIFIC = "DELETE FROM {prefix}user_permissions WHERE uuid=? AND permission=? AND value=? AND server=? AND world=? AND expiry=? AND contexts=?";
+ private static final String USER_PERMISSIONS_SELECT = "SELECT id, permission, value, server, world, expiry, contexts FROM {prefix}user_permissions WHERE uuid=?";
+ private static final String USER_PERMISSIONS_DELETE_SPECIFIC = "DELETE FROM {prefix}user_permissions WHERE id=?";
private static final String USER_PERMISSIONS_DELETE = "DELETE FROM {prefix}user_permissions WHERE uuid=?";
private static final String USER_PERMISSIONS_INSERT = "INSERT INTO {prefix}user_permissions(uuid, permission, value, server, world, expiry, contexts) VALUES(?, ?, ?, ?, ?, ?, ?)";
private static final String USER_PERMISSIONS_SELECT_DISTINCT = "SELECT DISTINCT uuid FROM {prefix}user_permissions";
@@ -98,9 +97,9 @@ public class SqlStorage implements StorageImplementation {
private static final String PLAYER_SELECT_PRIMARY_GROUP_BY_UUID = "SELECT primary_group FROM {prefix}players WHERE uuid=? LIMIT 1";
private static final String PLAYER_UPDATE_PRIMARY_GROUP_BY_UUID = "UPDATE {prefix}players SET primary_group=? WHERE uuid=?";
- private static final String GROUP_PERMISSIONS_SELECT = "SELECT permission, value, server, world, expiry, contexts FROM {prefix}group_permissions WHERE name=?";
+ private static final String GROUP_PERMISSIONS_SELECT = "SELECT id, permission, value, server, world, expiry, contexts FROM {prefix}group_permissions WHERE name=?";
+ private static final String GROUP_PERMISSIONS_DELETE_SPECIFIC = "DELETE FROM {prefix}group_permissions WHERE id=?";
private static final String GROUP_PERMISSIONS_DELETE = "DELETE FROM {prefix}group_permissions WHERE name=?";
- private static final String GROUP_PERMISSIONS_DELETE_SPECIFIC = "DELETE FROM {prefix}group_permissions WHERE name=? AND permission=? AND value=? AND server=? AND world=? AND expiry=? AND contexts=?";
private static final String GROUP_PERMISSIONS_INSERT = "INSERT INTO {prefix}group_permissions(name, permission, value, server, world, expiry, contexts) VALUES(?, ?, ?, ?, ?, ?, ?)";
private static final String GROUP_PERMISSIONS_SELECT_PERMISSION = "SELECT name, permission, value, server, world, expiry, contexts FROM {prefix}group_permissions WHERE ";
@@ -324,8 +323,8 @@ public class SqlStorage implements StorageImplementation {
}
@Override
- public User loadUser(UUID uuid, String username) throws SQLException {
- User user = this.plugin.getUserManager().getOrMake(UserIdentifier.of(uuid, username));
+ public User loadUser(UUID uniqueId, String username) throws SQLException {
+ User user = this.plugin.getUserManager().getOrMake(uniqueId, username);
user.getIoLock().lock();
try {
List data = new ArrayList<>();
@@ -335,7 +334,7 @@ public class SqlStorage implements StorageImplementation {
// Collect user permissions
try (Connection c = this.connectionFactory.getConnection()) {
try (PreparedStatement ps = c.prepareStatement(this.statementProcessor.apply(USER_PERMISSIONS_SELECT))) {
- ps.setString(1, user.getUuid().toString());
+ ps.setString(1, user.getUniqueId().toString());
try (ResultSet rs = ps.executeQuery()) {
while (rs.next()) {
@@ -345,7 +344,7 @@ public class SqlStorage implements StorageImplementation {
String world = rs.getString("world");
long expiry = rs.getLong("expiry");
String contexts = rs.getString("contexts");
- data.add(deserializeNode(permission, value, server, world, expiry, contexts));
+ data.add(SqlNode.fromSqlFields(permission, value, server, world, expiry, contexts));
}
}
}
@@ -354,7 +353,7 @@ public class SqlStorage implements StorageImplementation {
// Collect user meta (username & primary group)
try (Connection c = this.connectionFactory.getConnection()) {
try (PreparedStatement ps = c.prepareStatement(this.statementProcessor.apply(PLAYER_SELECT_BY_UUID))) {
- ps.setString(1, user.getUuid().toString());
+ ps.setString(1, user.getUniqueId().toString());
try (ResultSet rs = ps.executeQuery()) {
if (rs.next()) {
@@ -372,7 +371,7 @@ public class SqlStorage implements StorageImplementation {
user.getPrimaryGroup().setStoredValue(primaryGroup);
// Update their username to what was in the storage if the one in the local instance is null
- user.setName(userName, true);
+ user.setUsername(userName, true);
// If the user has any data in storage
if (!data.isEmpty()) {
@@ -380,7 +379,7 @@ public class SqlStorage implements StorageImplementation {
user.setNodes(DataType.NORMAL, nodes);
// Save back to the store if data they were given any defaults or had permissions expire
- if (this.plugin.getUserManager().giveDefaultIfNeeded(user, false) | user.auditTemporaryPermissions()) {
+ if (this.plugin.getUserManager().giveDefaultIfNeeded(user, false) | user.auditTemporaryNodes()) {
// This should be fine, as the lock will be acquired by the same thread.
saveUser(user);
}
@@ -388,7 +387,7 @@ public class SqlStorage implements StorageImplementation {
} else {
// User has no data in storage.
if (this.plugin.getUserManager().shouldSave(user)) {
- user.clearEnduringNodes();
+ user.clearNodes(DataType.NORMAL, null, true);
user.getPrimaryGroup().setStoredValue(null);
this.plugin.getUserManager().giveDefaultIfNeeded(user, false);
}
@@ -407,12 +406,12 @@ public class SqlStorage implements StorageImplementation {
if (!this.plugin.getUserManager().shouldSave(user)) {
try (Connection c = this.connectionFactory.getConnection()) {
try (PreparedStatement ps = c.prepareStatement(this.statementProcessor.apply(USER_PERMISSIONS_DELETE))) {
- ps.setString(1, user.getUuid().toString());
+ ps.setString(1, user.getUniqueId().toString());
ps.execute();
}
try (PreparedStatement ps = c.prepareStatement(this.statementProcessor.apply(PLAYER_UPDATE_PRIMARY_GROUP_BY_UUID))) {
ps.setString(1, GroupManager.DEFAULT_GROUP_NAME);
- ps.setString(2, user.getUuid().toString());
+ ps.setString(2, user.getUniqueId().toString());
ps.execute();
}
}
@@ -423,17 +422,18 @@ public class SqlStorage implements StorageImplementation {
Set remote = new HashSet<>();
try (Connection c = this.connectionFactory.getConnection()) {
try (PreparedStatement ps = c.prepareStatement(this.statementProcessor.apply(USER_PERMISSIONS_SELECT))) {
- ps.setString(1, user.getUuid().toString());
+ ps.setString(1, user.getUniqueId().toString());
try (ResultSet rs = ps.executeQuery()) {
while (rs.next()) {
+ long id = rs.getLong("id");
String permission = rs.getString("permission");
boolean value = rs.getBoolean("value");
String server = rs.getString("server");
String world = rs.getString("world");
long expiry = rs.getLong("expiry");
String contexts = rs.getString("contexts");
- remote.add(deserializeNode(permission, value, server, world, expiry, contexts));
+ remote.add(SqlNode.fromSqlFields(id, permission, value, server, world, expiry, contexts));
}
}
}
@@ -450,13 +450,7 @@ public class SqlStorage implements StorageImplementation {
try (Connection c = this.connectionFactory.getConnection()) {
try (PreparedStatement ps = c.prepareStatement(this.statementProcessor.apply(USER_PERMISSIONS_DELETE_SPECIFIC))) {
for (SqlNode nd : toRemove) {
- ps.setString(1, user.getUuid().toString());
- ps.setString(2, nd.getPermission());
- ps.setBoolean(3, nd.getValue());
- ps.setString(4, nd.getServer());
- ps.setString(5, nd.getWorld());
- ps.setLong(6, nd.getExpiry());
- ps.setString(7, GsonProvider.normal().toJson(ContextSetJsonSerializer.serializeContextSet(nd.getContexts())));
+ ps.setLong(1, nd.getSqlId());
ps.addBatch();
}
ps.executeBatch();
@@ -468,7 +462,7 @@ public class SqlStorage implements StorageImplementation {
try (Connection c = this.connectionFactory.getConnection()) {
try (PreparedStatement ps = c.prepareStatement(this.statementProcessor.apply(USER_PERMISSIONS_INSERT))) {
for (SqlNode nd : toAdd) {
- ps.setString(1, user.getUuid().toString());
+ ps.setString(1, user.getUniqueId().toString());
ps.setString(2, nd.getPermission());
ps.setBoolean(3, nd.getValue());
ps.setString(4, nd.getServer());
@@ -486,7 +480,7 @@ public class SqlStorage implements StorageImplementation {
boolean hasPrimaryGroupSaved;
try (PreparedStatement ps = c.prepareStatement(this.statementProcessor.apply(PLAYER_SELECT_PRIMARY_GROUP_BY_UUID))) {
- ps.setString(1, user.getUuid().toString());
+ ps.setString(1, user.getUniqueId().toString());
try (ResultSet rs = ps.executeQuery()) {
hasPrimaryGroupSaved = rs.next();
}
@@ -496,14 +490,14 @@ public class SqlStorage implements StorageImplementation {
// update
try (PreparedStatement ps = c.prepareStatement(this.statementProcessor.apply(PLAYER_UPDATE_PRIMARY_GROUP_BY_UUID))) {
ps.setString(1, user.getPrimaryGroup().getStoredValue().orElse(GroupManager.DEFAULT_GROUP_NAME));
- ps.setString(2, user.getUuid().toString());
+ ps.setString(2, user.getUniqueId().toString());
ps.execute();
}
} else {
// insert
try (PreparedStatement ps = c.prepareStatement(this.statementProcessor.apply(PLAYER_INSERT))) {
- ps.setString(1, user.getUuid().toString());
- ps.setString(2, user.getName().orElse("null").toLowerCase());
+ ps.setString(1, user.getUniqueId().toString());
+ ps.setString(2, user.getUsername().orElse("null").toLowerCase());
ps.setString(3, user.getPrimaryGroup().getStoredValue().orElse(GroupManager.DEFAULT_GROUP_NAME));
ps.execute();
}
@@ -549,7 +543,7 @@ public class SqlStorage implements StorageImplementation {
long expiry = rs.getLong("expiry");
String contexts = rs.getString("contexts");
- SqlNode data = deserializeNode(perm, value, server, world, expiry, contexts);
+ SqlNode data = SqlNode.fromSqlFields(perm, value, server, world, expiry, contexts);
held.add(HeldNodeImpl.of(holder, data.toNode()));
}
}
@@ -622,7 +616,7 @@ public class SqlStorage implements StorageImplementation {
String world = rs.getString("world");
long expiry = rs.getLong("expiry");
String contexts = rs.getString("contexts");
- data.add(deserializeNode(permission, value, server, world, expiry, contexts));
+ data.add(SqlNode.fromSqlFields(permission, value, server, world, expiry, contexts));
}
}
}
@@ -632,7 +626,7 @@ public class SqlStorage implements StorageImplementation {
Set nodes = data.stream().map(SqlNode::toNode).collect(Collectors.toSet());
group.setNodes(DataType.NORMAL, nodes);
} else {
- group.clearNodes(DataType.NORMAL, null);
+ group.clearNodes(DataType.NORMAL, null, false);
}
} finally {
group.getIoLock().unlock();
@@ -669,7 +663,8 @@ public class SqlStorage implements StorageImplementation {
GroupManager> gm = this.plugin.getGroupManager();
gm.getAll().values().stream()
- .filter(g -> !groups.contains(g.getName()))
+ .map(Group::getName)
+ .filter(g -> !groups.contains(g))
.forEach(gm::unload);
}
@@ -696,13 +691,14 @@ public class SqlStorage implements StorageImplementation {
try (ResultSet rs = ps.executeQuery()) {
while (rs.next()) {
+ long id = rs.getLong("id");
String permission = rs.getString("permission");
boolean value = rs.getBoolean("value");
String server = rs.getString("server");
String world = rs.getString("world");
long expiry = rs.getLong("expiry");
String contexts = rs.getString("contexts");
- remote.add(deserializeNode(permission, value, server, world, expiry, contexts));
+ remote.add(SqlNode.fromSqlFields(id, permission, value, server, world, expiry, contexts));
}
}
}
@@ -719,13 +715,7 @@ public class SqlStorage implements StorageImplementation {
try (Connection c = this.connectionFactory.getConnection()) {
try (PreparedStatement ps = c.prepareStatement(this.statementProcessor.apply(GROUP_PERMISSIONS_DELETE_SPECIFIC))) {
for (SqlNode nd : toRemove) {
- ps.setString(1, group.getName());
- ps.setString(2, nd.getPermission());
- ps.setBoolean(3, nd.getValue());
- ps.setString(4, nd.getServer());
- ps.setString(5, nd.getWorld());
- ps.setLong(6, nd.getExpiry());
- ps.setString(7, GsonProvider.normal().toJson(ContextSetJsonSerializer.serializeContextSet(nd.getContexts())));
+ ps.setLong(1, nd.getSqlId());
ps.addBatch();
}
ps.executeBatch();
@@ -774,7 +764,7 @@ public class SqlStorage implements StorageImplementation {
group.getIoLock().unlock();
}
- this.plugin.getGroupManager().unload(group);
+ this.plugin.getGroupManager().unload(group.getName());
}
@Override
@@ -795,7 +785,7 @@ public class SqlStorage implements StorageImplementation {
long expiry = rs.getLong("expiry");
String contexts = rs.getString("contexts");
- SqlNode data = deserializeNode(perm, value, server, world, expiry, contexts);
+ SqlNode data = SqlNode.fromSqlFields(perm, value, server, world, expiry, contexts);
held.add(HeldNodeImpl.of(holder, data.toNode()));
}
}
@@ -907,7 +897,8 @@ public class SqlStorage implements StorageImplementation {
TrackManager> tm = this.plugin.getTrackManager();
tm.getAll().values().stream()
- .filter(t -> !tracks.contains(t.getName()))
+ .map(Track::getName)
+ .filter(t -> !tracks.contains(t))
.forEach(tm::unload);
}
@@ -942,15 +933,15 @@ public class SqlStorage implements StorageImplementation {
track.getIoLock().unlock();
}
- this.plugin.getTrackManager().unload(track);
+ this.plugin.getTrackManager().unload(track.getName());
}
@Override
- public PlayerSaveResult savePlayerData(UUID uuid, String username) throws SQLException {
+ public PlayerSaveResult savePlayerData(UUID uniqueId, String username) throws SQLException {
username = username.toLowerCase();
// find any existing mapping
- String oldUsername = getPlayerName(uuid);
+ String oldUsername = getPlayerName(uniqueId);
// do the insert
if (!username.equals(oldUsername)) {
@@ -958,12 +949,12 @@ public class SqlStorage implements StorageImplementation {
if (oldUsername != null) {
try (PreparedStatement ps = c.prepareStatement(this.statementProcessor.apply(PLAYER_UPDATE_USERNAME_FOR_UUID))) {
ps.setString(1, username);
- ps.setString(2, uuid.toString());
+ ps.setString(2, uniqueId.toString());
ps.execute();
}
} else {
try (PreparedStatement ps = c.prepareStatement(this.statementProcessor.apply(PLAYER_INSERT))) {
- ps.setString(1, uuid.toString());
+ ps.setString(1, uniqueId.toString());
ps.setString(2, username);
ps.setString(3, GroupManager.DEFAULT_GROUP_NAME);
ps.execute();
@@ -978,7 +969,7 @@ public class SqlStorage implements StorageImplementation {
try (Connection c = this.connectionFactory.getConnection()) {
try (PreparedStatement ps = c.prepareStatement(this.statementProcessor.apply(PLAYER_SELECT_ALL_UUIDS_BY_USERNAME))) {
ps.setString(1, username);
- ps.setString(2, uuid.toString());
+ ps.setString(2, uniqueId.toString());
try (ResultSet rs = ps.executeQuery()) {
while (rs.next()) {
conflicting.add(UUID.fromString(rs.getString("uuid")));
@@ -992,7 +983,7 @@ public class SqlStorage implements StorageImplementation {
try (Connection c = this.connectionFactory.getConnection()) {
try (PreparedStatement ps = c.prepareStatement(this.statementProcessor.apply(PLAYER_DELETE_ALL_UUIDS_BY_USERNAME))) {
ps.setString(1, username);
- ps.setString(2, uuid.toString());
+ ps.setString(2, uniqueId.toString());
ps.execute();
}
}
@@ -1003,7 +994,7 @@ public class SqlStorage implements StorageImplementation {
}
@Override
- public UUID getPlayerUuid(String username) throws SQLException {
+ public UUID getPlayerUniqueId(String username) throws SQLException {
username = username.toLowerCase();
try (Connection c = this.connectionFactory.getConnection()) {
try (PreparedStatement ps = c.prepareStatement(this.statementProcessor.apply(PLAYER_SELECT_UUID_BY_USERNAME))) {
@@ -1019,10 +1010,10 @@ public class SqlStorage implements StorageImplementation {
}
@Override
- public String getPlayerName(UUID uuid) throws SQLException {
+ public String getPlayerName(UUID uniqueId) throws SQLException {
try (Connection c = this.connectionFactory.getConnection()) {
try (PreparedStatement ps = c.prepareStatement(this.statementProcessor.apply(PLAYER_SELECT_USERNAME_BY_UUID))) {
- ps.setString(1, uuid.toString());
+ ps.setString(1, uniqueId.toString());
try (ResultSet rs = ps.executeQuery()) {
if (rs.next()) {
return rs.getString("username");
@@ -1052,7 +1043,4 @@ public class SqlStorage implements StorageImplementation {
return Maps.immutableEntry(toAdd, toRemove);
}
- private SqlNode deserializeNode(String permission, boolean value, String server, String world, long expiry, String contexts) {
- return new SqlNode(permission, value, server, world, expiry, ContextSetJsonSerializer.deserializeContextSet(GsonProvider.normal(), contexts).immutableCopy());
- }
}
diff --git a/common/src/main/java/me/lucko/luckperms/common/tasks/ExpireTemporaryTask.java b/common/src/main/java/me/lucko/luckperms/common/tasks/ExpireTemporaryTask.java
index 995f277f3..ee9be4357 100644
--- a/common/src/main/java/me/lucko/luckperms/common/tasks/ExpireTemporaryTask.java
+++ b/common/src/main/java/me/lucko/luckperms/common/tasks/ExpireTemporaryTask.java
@@ -44,7 +44,7 @@ public class ExpireTemporaryTask implements Runnable {
if (shouldSkip(group)) {
continue;
}
- if (group.auditTemporaryPermissions()) {
+ if (group.auditTemporaryNodes()) {
this.plugin.getStorage().saveGroup(group);
groupChanges = true;
}
@@ -54,7 +54,7 @@ public class ExpireTemporaryTask implements Runnable {
if (shouldSkip(user)) {
continue;
}
- if (user.auditTemporaryPermissions()) {
+ if (user.auditTemporaryNodes()) {
this.plugin.getStorage().saveUser(user);
}
}
diff --git a/common/src/main/java/me/lucko/luckperms/common/treeview/PermissionRegistry.java b/common/src/main/java/me/lucko/luckperms/common/treeview/PermissionRegistry.java
index 4d9c0102b..f010354d4 100644
--- a/common/src/main/java/me/lucko/luckperms/common/treeview/PermissionRegistry.java
+++ b/common/src/main/java/me/lucko/luckperms/common/treeview/PermissionRegistry.java
@@ -59,11 +59,8 @@ public class PermissionRegistry extends RepeatingTask {
return this.rootNode;
}
- @Override
- protected void tick() {
- for (String e; (e = this.queue.poll()) != null; ) {
- insert(e);
- }
+ public List rootAsList() {
+ return this.rootNode.makeImmutableCopy().getNodeEndings().stream().map(Map.Entry::getValue).collect(ImmutableCollectors.toList());
}
public void offer(String permission) {
@@ -73,6 +70,13 @@ public class PermissionRegistry extends RepeatingTask {
this.queue.offer(permission);
}
+ @Override
+ protected void tick() {
+ for (String e; (e = this.queue.poll()) != null; ) {
+ insert(e);
+ }
+ }
+
public void insert(String permission) {
try {
doInsert(permission);
@@ -81,14 +85,6 @@ public class PermissionRegistry extends RepeatingTask {
}
}
- public List rootAsList() {
- return this.rootNode.makeImmutableCopy().getNodeEndings().stream().map(Map.Entry::getValue).collect(ImmutableCollectors.toList());
- }
-
- public int getSize() {
- return this.rootNode.getDeepSize();
- }
-
private void doInsert(String permission) {
// split the permission up into parts
List parts = DOT_SPLIT.splitToList(permission);
diff --git a/common/src/main/java/me/lucko/luckperms/common/treeview/TreeView.java b/common/src/main/java/me/lucko/luckperms/common/treeview/TreeView.java
index c7053bc26..ec06cef74 100644
--- a/common/src/main/java/me/lucko/luckperms/common/treeview/TreeView.java
+++ b/common/src/main/java/me/lucko/luckperms/common/treeview/TreeView.java
@@ -146,14 +146,14 @@ public class TreeView {
.add("root", this.rootPosition)
.add("uploader", new JObject()
.add("name", sender.getNameWithLocation())
- .add("uuid", sender.getUuid().toString())
+ .add("uuid", sender.getUniqueId().toString())
);
JObject checks;
if (user != null && checker != null) {
metadata.add("referenceUser", new JObject()
.add("name", user.getPlainDisplayName())
- .add("uuid", user.getUuid().toString())
+ .add("uuid", user.getUniqueId().toString())
);
checks = new JObject();
diff --git a/common/src/main/java/me/lucko/luckperms/common/verbose/VerboseHandler.java b/common/src/main/java/me/lucko/luckperms/common/verbose/VerboseHandler.java
index 72c5172fc..7630b1ff5 100644
--- a/common/src/main/java/me/lucko/luckperms/common/verbose/VerboseHandler.java
+++ b/common/src/main/java/me/lucko/luckperms/common/verbose/VerboseHandler.java
@@ -118,7 +118,7 @@ public class VerboseHandler extends RepeatingTask {
* @param notify if the sender should be notified in chat on each check
*/
public void registerListener(Sender sender, VerboseFilter filter, boolean notify) {
- this.listeners.put(sender.getUuid(), new VerboseListener(sender, filter, notify));
+ this.listeners.put(sender.getUniqueId(), new VerboseListener(sender, filter, notify));
this.listening = true;
}
diff --git a/common/src/main/java/me/lucko/luckperms/common/verbose/VerboseListener.java b/common/src/main/java/me/lucko/luckperms/common/verbose/VerboseListener.java
index 5e4dee736..9eb4b3a29 100644
--- a/common/src/main/java/me/lucko/luckperms/common/verbose/VerboseListener.java
+++ b/common/src/main/java/me/lucko/luckperms/common/verbose/VerboseListener.java
@@ -279,7 +279,7 @@ public class VerboseListener {
)
.add("uploader", new JObject()
.add("name", this.notifiedSender.getNameWithLocation())
- .add("uuid", this.notifiedSender.getUuid().toString())
+ .add("uuid", this.notifiedSender.getUniqueId().toString())
)
.add("filter", filter)
.add("truncated", truncated);
diff --git a/common/src/main/java/me/lucko/luckperms/common/web/WebEditor.java b/common/src/main/java/me/lucko/luckperms/common/web/WebEditor.java
index 6ffa6d26d..b74736498 100644
--- a/common/src/main/java/me/lucko/luckperms/common/web/WebEditor.java
+++ b/common/src/main/java/me/lucko/luckperms/common/web/WebEditor.java
@@ -88,7 +88,7 @@ public final class WebEditor {
.add("commandAlias", cmdLabel)
.add("uploader", new JObject()
.add("name", sender.getNameWithLocation())
- .add("uuid", sender.getUuid().toString())
+ .add("uuid", sender.getUniqueId().toString())
)
.add("time", System.currentTimeMillis())
.add("pluginVersion", plugin.getBootstrap().getVersion())
diff --git a/nukkit/src/main/java/me/lucko/luckperms/nukkit/LPNukkitBootstrap.java b/nukkit/src/main/java/me/lucko/luckperms/nukkit/LPNukkitBootstrap.java
index 67682cd18..bceba535c 100644
--- a/nukkit/src/main/java/me/lucko/luckperms/nukkit/LPNukkitBootstrap.java
+++ b/nukkit/src/main/java/me/lucko/luckperms/nukkit/LPNukkitBootstrap.java
@@ -180,17 +180,17 @@ public class LPNukkitBootstrap extends PluginBase implements LuckPermsBootstrap
}
@Override
- public Optional getPlayer(UUID uuid) {
- return Optional.ofNullable(getServer().getOnlinePlayers().get(uuid));
+ public Optional getPlayer(UUID uniqueId) {
+ return Optional.ofNullable(getServer().getOnlinePlayers().get(uniqueId));
}
@Override
- public Optional lookupUuid(String username) {
+ public Optional lookupUniqueId(String username) {
return Optional.empty();
}
@Override
- public Optional lookupUsername(UUID uuid) {
+ public Optional lookupUsername(UUID uniqueId) {
return Optional.empty();
}
@@ -210,8 +210,8 @@ public class LPNukkitBootstrap extends PluginBase implements LuckPermsBootstrap
}
@Override
- public boolean isPlayerOnline(UUID uuid) {
- Player player = getServer().getOnlinePlayers().get(uuid);
+ public boolean isPlayerOnline(UUID uniqueId) {
+ Player player = getServer().getOnlinePlayers().get(uniqueId);
return player != null && player.isOnline();
}
}
diff --git a/nukkit/src/main/java/me/lucko/luckperms/nukkit/LPNukkitPlugin.java b/nukkit/src/main/java/me/lucko/luckperms/nukkit/LPNukkitPlugin.java
index 69ca26021..955ccd603 100644
--- a/nukkit/src/main/java/me/lucko/luckperms/nukkit/LPNukkitPlugin.java
+++ b/nukkit/src/main/java/me/lucko/luckperms/nukkit/LPNukkitPlugin.java
@@ -207,7 +207,7 @@ public class LPNukkitPlugin extends AbstractLuckPermsPlugin {
if (getConfiguration().get(ConfigKeys.AUTO_OP)) {
getApiProvider().getEventBus().subscribe(UserDataRecalculateEvent.class, event -> {
User user = ApiUser.cast(event.getUser());
- Optional player = getBootstrap().getPlayer(user.getUuid());
+ Optional player = getBootstrap().getPlayer(user.getUniqueId());
player.ifPresent(this::refreshAutoOp);
});
}
@@ -251,7 +251,7 @@ public class LPNukkitPlugin extends AbstractLuckPermsPlugin {
final User user = getUserManager().getIfLoaded(player.getUniqueId());
if (user != null) {
user.getCachedData().invalidate();
- getUserManager().unload(user);
+ getUserManager().unload(user.getUniqueId());
}
}
@@ -291,7 +291,7 @@ public class LPNukkitPlugin extends AbstractLuckPermsPlugin {
@Override
public Optional getQueryOptionsForUser(User user) {
- return this.bootstrap.getPlayer(user.getUuid()).map(player -> this.contextManager.getQueryOptions(player));
+ return this.bootstrap.getPlayer(user.getUniqueId()).map(player -> this.contextManager.getQueryOptions(player));
}
@Override
diff --git a/nukkit/src/main/java/me/lucko/luckperms/nukkit/NukkitSenderFactory.java b/nukkit/src/main/java/me/lucko/luckperms/nukkit/NukkitSenderFactory.java
index d5d48de5c..d555af16d 100644
--- a/nukkit/src/main/java/me/lucko/luckperms/nukkit/NukkitSenderFactory.java
+++ b/nukkit/src/main/java/me/lucko/luckperms/nukkit/NukkitSenderFactory.java
@@ -53,7 +53,7 @@ public class NukkitSenderFactory extends SenderFactory {
}
@Override
- protected UUID getUuid(CommandSender sender) {
+ protected UUID getUniqueId(CommandSender sender) {
if (sender instanceof Player) {
return ((Player) sender).getUniqueId();
}
diff --git a/nukkit/src/main/java/me/lucko/luckperms/nukkit/inject/permissible/LPPermissionAttachment.java b/nukkit/src/main/java/me/lucko/luckperms/nukkit/inject/permissible/LPPermissionAttachment.java
index d31a09f0d..3e40f013b 100644
--- a/nukkit/src/main/java/me/lucko/luckperms/nukkit/inject/permissible/LPPermissionAttachment.java
+++ b/nukkit/src/main/java/me/lucko/luckperms/nukkit/inject/permissible/LPPermissionAttachment.java
@@ -192,7 +192,7 @@ public class LPPermissionAttachment extends PermissionAttachment {
// set the transient node
User user = this.permissible.getUser();
- ((Result) user.setPermission(DataType.TRANSIENT, node, true)).wasSuccessful();
+ ((Result) user.setNode(DataType.TRANSIENT, node, true)).wasSuccessful();
}
private void unsetPermissionInternal(String name) {
diff --git a/sponge/src/main/java/me/lucko/luckperms/sponge/LPSpongeBootstrap.java b/sponge/src/main/java/me/lucko/luckperms/sponge/LPSpongeBootstrap.java
index c8098361f..7c869f12c 100644
--- a/sponge/src/main/java/me/lucko/luckperms/sponge/LPSpongeBootstrap.java
+++ b/sponge/src/main/java/me/lucko/luckperms/sponge/LPSpongeBootstrap.java
@@ -263,16 +263,16 @@ public class LPSpongeBootstrap implements LuckPermsBootstrap {
}
@Override
- public Optional getPlayer(UUID uuid) {
+ public Optional getPlayer(UUID uniqueId) {
if (!getGame().isServerAvailable()) {
return Optional.empty();
}
- return getGame().getServer().getPlayer(uuid);
+ return getGame().getServer().getPlayer(uniqueId);
}
@Override
- public Optional lookupUuid(String username) {
+ public Optional lookupUniqueId(String username) {
if (!getGame().isServerAvailable()) {
return Optional.empty();
}
@@ -284,12 +284,12 @@ public class LPSpongeBootstrap implements LuckPermsBootstrap {
}
@Override
- public Optional lookupUsername(UUID uuid) {
+ public Optional lookupUsername(UUID uniqueId) {
if (!getGame().isServerAvailable()) {
return Optional.empty();
}
- return getGame().getServer().getGameProfileManager().get(uuid)
+ return getGame().getServer().getGameProfileManager().get(uniqueId)
.thenApply(GameProfile::getName)
.exceptionally(x -> Optional.empty())
.join();
@@ -311,8 +311,8 @@ public class LPSpongeBootstrap implements LuckPermsBootstrap {
}
@Override
- public boolean isPlayerOnline(UUID uuid) {
- return getGame().isServerAvailable() ? getGame().getServer().getPlayer(uuid).map(Player::isOnline).orElse(false) : false;
+ public boolean isPlayerOnline(UUID uniqueId) {
+ return getGame().isServerAvailable() ? getGame().getServer().getPlayer(uniqueId).map(Player::isOnline).orElse(false) : false;
}
}
diff --git a/sponge/src/main/java/me/lucko/luckperms/sponge/LPSpongePlugin.java b/sponge/src/main/java/me/lucko/luckperms/sponge/LPSpongePlugin.java
index 0c7025c86..fc0d6886e 100644
--- a/sponge/src/main/java/me/lucko/luckperms/sponge/LPSpongePlugin.java
+++ b/sponge/src/main/java/me/lucko/luckperms/sponge/LPSpongePlugin.java
@@ -251,7 +251,7 @@ public class LPSpongePlugin extends AbstractLuckPermsPlugin {
@Override
public Optional getQueryOptionsForUser(User user) {
- return this.bootstrap.getPlayer(user.getUuid()).map(player -> this.contextManager.getQueryOptions(player));
+ return this.bootstrap.getPlayer(user.getUniqueId()).map(player -> this.contextManager.getQueryOptions(player));
}
@Override
diff --git a/sponge/src/main/java/me/lucko/luckperms/sponge/SpongeSenderFactory.java b/sponge/src/main/java/me/lucko/luckperms/sponge/SpongeSenderFactory.java
index 711db0bd6..a9ebe56f5 100644
--- a/sponge/src/main/java/me/lucko/luckperms/sponge/SpongeSenderFactory.java
+++ b/sponge/src/main/java/me/lucko/luckperms/sponge/SpongeSenderFactory.java
@@ -54,7 +54,7 @@ public class SpongeSenderFactory extends SenderFactory {
}
@Override
- protected UUID getUuid(CommandSource source) {
+ protected UUID getUniqueId(CommandSource source) {
if (source instanceof Player) {
return ((Player) source).getUniqueId();
}
diff --git a/sponge/src/main/java/me/lucko/luckperms/sponge/model/SpongeUser.java b/sponge/src/main/java/me/lucko/luckperms/sponge/model/SpongeUser.java
index f99e709e0..0387be6d8 100644
--- a/sponge/src/main/java/me/lucko/luckperms/sponge/model/SpongeUser.java
+++ b/sponge/src/main/java/me/lucko/luckperms/sponge/model/SpongeUser.java
@@ -38,20 +38,14 @@ import java.util.UUID;
public class SpongeUser extends User implements SpongePermissionHolder {
private final UserSubject spongeData;
- public SpongeUser(UUID uuid, LPSpongePlugin plugin) {
- super(uuid, plugin);
- this.spongeData = new UserSubject(plugin, this);
- }
-
- public SpongeUser(UUID uuid, String name, LPSpongePlugin plugin) {
- super(uuid, name, plugin);
+ public SpongeUser(UUID uniqueId, LPSpongePlugin plugin) {
+ super(uniqueId, plugin);
this.spongeData = new UserSubject(plugin, this);
}
@Override
protected void invalidateCache() {
super.invalidateCache();
-
this.spongeData.fireUpdateEvent();
}
diff --git a/sponge/src/main/java/me/lucko/luckperms/sponge/model/manager/SpongeUserManager.java b/sponge/src/main/java/me/lucko/luckperms/sponge/model/manager/SpongeUserManager.java
index 89a70c538..59d4acffd 100644
--- a/sponge/src/main/java/me/lucko/luckperms/sponge/model/manager/SpongeUserManager.java
+++ b/sponge/src/main/java/me/lucko/luckperms/sponge/model/manager/SpongeUserManager.java
@@ -35,7 +35,6 @@ import com.google.common.collect.Maps;
import me.lucko.luckperms.common.bulkupdate.comparison.Constraint;
import me.lucko.luckperms.common.bulkupdate.comparison.StandardComparison;
import me.lucko.luckperms.common.context.contextset.ImmutableContextSetImpl;
-import me.lucko.luckperms.common.model.UserIdentifier;
import me.lucko.luckperms.common.model.manager.user.AbstractUserManager;
import me.lucko.luckperms.common.model.manager.user.UserHousekeeper;
import me.lucko.luckperms.common.util.ImmutableCollectors;
@@ -105,10 +104,8 @@ public class SpongeUserManager extends AbstractUserManager implement
}
@Override
- public SpongeUser apply(UserIdentifier id) {
- return !id.getUsername().isPresent() ?
- new SpongeUser(id.getUuid(), this.plugin) :
- new SpongeUser(id.getUuid(), id.getUsername().get(), this.plugin);
+ public SpongeUser apply(UUID id) {
+ return new SpongeUser(id, this.plugin);
}
@Override
@@ -170,7 +167,7 @@ public class SpongeUserManager extends AbstractUserManager implement
return CompletableFuture.completedFuture(false);
}
- if (isLoaded(UserIdentifier.of(uuid, null))) {
+ if (isLoaded(uuid)) {
return CompletableFuture.completedFuture(true);
}
@@ -203,7 +200,7 @@ public class SpongeUserManager extends AbstractUserManager implement
return CompletableFuture.supplyAsync(() -> {
ImmutableSet.Builder ids = ImmutableSet.builder();
- getAll().keySet().forEach(uuid -> ids.add(uuid.getUuid().toString()));
+ getAll().keySet().forEach(uuid -> ids.add(uuid.toString()));
this.plugin.getStorage().getUniqueUsers().join().forEach(uuid -> ids.add(uuid.toString()));
return ids.build();
diff --git a/sponge/src/main/java/me/lucko/luckperms/sponge/service/model/permissionholder/PermissionHolderSubjectData.java b/sponge/src/main/java/me/lucko/luckperms/sponge/service/model/permissionholder/PermissionHolderSubjectData.java
index f567d9b80..0740ab4dc 100644
--- a/sponge/src/main/java/me/lucko/luckperms/sponge/service/model/permissionholder/PermissionHolderSubjectData.java
+++ b/sponge/src/main/java/me/lucko/luckperms/sponge/service/model/permissionholder/PermissionHolderSubjectData.java
@@ -131,20 +131,20 @@ public class PermissionHolderSubjectData implements LPSubjectData {
if (tristate == Tristate.UNDEFINED) {
// Unset
Node node = NodeBuilders.determineMostApplicable(permission).withContext(contexts).build();
- this.holder.unsetPermission(this.type, node);
+ this.holder.unsetNode(this.type, node);
return save(this.holder).thenApply(v -> true);
}
Node node = NodeBuilders.determineMostApplicable(permission).value(tristate.asBoolean()).withContext(contexts).build();
// unset the inverse, to allow false -> true, true -> false overrides.
- this.holder.unsetPermission(this.type, node);
- this.holder.setPermission(this.type, node, true);
+ this.holder.unsetNode(this.type, node);
+ this.holder.setNode(this.type, node, true);
return save(this.holder).thenApply(v -> true);
}
@Override
public CompletableFuture clearPermissions() {
- if (!this.holder.clearNodes(this.type, null)) {
+ if (!this.holder.clearNodes(this.type, null, false)) {
return CompletableFuture.completedFuture(false);
}
@@ -158,7 +158,7 @@ public class PermissionHolderSubjectData implements LPSubjectData {
@Override
public CompletableFuture clearPermissions(ImmutableContextSet contexts) {
Objects.requireNonNull(contexts, "contexts");
- if (!this.holder.clearNodes(this.type, contexts)) {
+ if (!this.holder.clearNodes(this.type, contexts, false)) {
return CompletableFuture.completedFuture(false);
}
@@ -172,12 +172,10 @@ public class PermissionHolderSubjectData implements LPSubjectData {
@Override
public ImmutableMap> getAllParents() {
ImmutableMap.Builder> ret = ImmutableMap.builder();
- for (Map.Entry> entry : this.holder.getData(this.type).immutable().asMap().entrySet()) {
+ for (Map.Entry> entry : this.holder.getData(this.type).immutableInheritance().asMap().entrySet()) {
ImmutableList.Builder builder = ImmutableList.builder();
- for (Node n : entry.getValue()) {
- if (n instanceof InheritanceNode) {
- builder.add(this.service.getGroupSubjects().loadSubject(((InheritanceNode) n).getGroupName()).join().toReference());
- }
+ for (InheritanceNode n : entry.getValue()) {
+ builder.add(this.service.getGroupSubjects().loadSubject(n.getGroupName()).join().toReference());
}
ret.put(entry.getKey(), builder.build());
}
@@ -187,10 +185,8 @@ public class PermissionHolderSubjectData implements LPSubjectData {
@Override
public ImmutableList getParents(ImmutableContextSet contexts) {
ImmutableList.Builder builder = ImmutableList.builder();
- for (Node n : this.holder.getData(this.type).immutable().get(contexts)) {
- if (n instanceof InheritanceNode) {
- builder.add(this.service.getGroupSubjects().loadSubject(((InheritanceNode) n).getGroupName()).join().toReference());
- }
+ for (InheritanceNode n : this.holder.getData(this.type).immutableInheritance().get(contexts)) {
+ builder.add(this.service.getGroupSubjects().loadSubject(n.getGroupName()).join().toReference());
}
return builder.build();
}
@@ -208,7 +204,7 @@ public class PermissionHolderSubjectData implements LPSubjectData {
.withContext(contexts)
.build();
- if (!this.holder.setPermission(this.type, node, true).wasSuccessful()) {
+ if (!this.holder.setNode(this.type, node, true).wasSuccessful()) {
return CompletableFuture.completedFuture(false);
}
@@ -228,7 +224,7 @@ public class PermissionHolderSubjectData implements LPSubjectData {
.withContext(contexts)
.build();
- if (!this.holder.unsetPermission(this.type, node).wasSuccessful()) {
+ if (!this.holder.unsetNode(this.type, node).wasSuccessful()) {
return CompletableFuture.completedFuture(false);
}
@@ -245,7 +241,7 @@ public class PermissionHolderSubjectData implements LPSubjectData {
case TRANSIENT:
ret = streamNodes()
.filter(n -> n instanceof InheritanceNode)
- .peek(n -> this.holder.unsetPermission(DataType.TRANSIENT, n))
+ .peek(n -> this.holder.unsetNode(DataType.TRANSIENT, n))
.findAny().isPresent();
break;
default:
@@ -271,7 +267,7 @@ public class PermissionHolderSubjectData implements LPSubjectData {
ret = streamNodes()
.filter(n -> n instanceof InheritanceNode)
.filter(n -> n.getContexts().equals(contexts))
- .peek(n -> this.holder.unsetPermission(DataType.TRANSIENT, n))
+ .peek(n -> this.holder.unsetNode(DataType.TRANSIENT, n))
.findAny().isPresent();
break;
default:
@@ -350,7 +346,7 @@ public class PermissionHolderSubjectData implements LPSubjectData {
streamNodes()
.filter(n -> type.nodeType().matches(n))
.filter(n -> n.getContexts().equals(contexts))
- .forEach(n -> this.holder.unsetPermission(this.type, n));
+ .forEach(n -> this.holder.unsetNode(this.type, n));
MetaAccumulator metaAccumulator = this.holder.accumulateMeta(null, QueryOptions.defaultContextualOptions().toBuilder().context(contexts).build());
metaAccumulator.complete();
@@ -364,12 +360,12 @@ public class PermissionHolderSubjectData implements LPSubjectData {
streamNodes()
.filter(n -> n instanceof MetaNode && ((MetaNode) n).getMetaKey().equals(key))
.filter(n -> n.getContexts().equals(contexts))
- .forEach(n -> this.holder.unsetPermission(this.type, n));
+ .forEach(n -> this.holder.unsetNode(this.type, n));
node = Meta.builder(key, value).withContext(contexts).build();
}
- this.holder.setPermission(this.type, node, true);
+ this.holder.setNode(this.type, node, true);
return save(this.holder).thenApply(v -> true);
}
@@ -389,7 +385,7 @@ public class PermissionHolderSubjectData implements LPSubjectData {
}
})
.filter(n -> n.getContexts().equals(contexts))
- .forEach(n -> this.holder.unsetPermission(this.type, n));
+ .forEach(n -> this.holder.unsetNode(this.type, n));
return save(this.holder).thenApply(v -> true);
}
@@ -401,7 +397,7 @@ public class PermissionHolderSubjectData implements LPSubjectData {
boolean success = streamNodes()
.filter(NodeType.META_OR_CHAT_META::matches)
.filter(n -> n.getContexts().equals(contexts))
- .peek(n -> this.holder.unsetPermission(this.type, n))
+ .peek(n -> this.holder.unsetNode(this.type, n))
.findAny().isPresent();
if (!success) {
@@ -415,7 +411,7 @@ public class PermissionHolderSubjectData implements LPSubjectData {
public CompletableFuture clearOptions() {
boolean success = streamNodes()
.filter(NodeType.META_OR_CHAT_META::matches)
- .peek(n -> this.holder.unsetPermission(this.type, n))
+ .peek(n -> this.holder.unsetNode(this.type, n))
.findAny().isPresent();
if (!success) {
diff --git a/sponge/src/main/java/me/lucko/luckperms/sponge/service/model/permissionholder/UserSubject.java b/sponge/src/main/java/me/lucko/luckperms/sponge/service/model/permissionholder/UserSubject.java
index c34b5d782..8648e0e12 100644
--- a/sponge/src/main/java/me/lucko/luckperms/sponge/service/model/permissionholder/UserSubject.java
+++ b/sponge/src/main/java/me/lucko/luckperms/sponge/service/model/permissionholder/UserSubject.java
@@ -47,17 +47,17 @@ public final class UserSubject extends PermissionHolderSubject imple
@Override
public String getIdentifier() {
- return this.parent.getUuid().toString();
+ return this.parent.getUniqueId().toString();
}
@Override
public Optional getFriendlyIdentifier() {
- return this.parent.getName();
+ return this.parent.getUsername();
}
@Override
public Optional getCommandSource() {
- final UUID uuid = this.parent.getUuid();
+ final UUID uuid = this.parent.getUniqueId();
return Sponge.getServer().getPlayer(uuid).map(Function.identity());
}
diff --git a/velocity/src/main/java/me/lucko/luckperms/velocity/LPVelocityBootstrap.java b/velocity/src/main/java/me/lucko/luckperms/velocity/LPVelocityBootstrap.java
index c172c6b05..6573a1b3e 100644
--- a/velocity/src/main/java/me/lucko/luckperms/velocity/LPVelocityBootstrap.java
+++ b/velocity/src/main/java/me/lucko/luckperms/velocity/LPVelocityBootstrap.java
@@ -205,17 +205,17 @@ public class LPVelocityBootstrap implements LuckPermsBootstrap {
}
@Override
- public Optional getPlayer(UUID uuid) {
- return this.proxy.getPlayer(uuid);
+ public Optional getPlayer(UUID uniqueId) {
+ return this.proxy.getPlayer(uniqueId);
}
@Override
- public Optional lookupUuid(String username) {
+ public Optional lookupUniqueId(String username) {
return Optional.empty();
}
@Override
- public Optional lookupUsername(UUID uuid) {
+ public Optional lookupUsername(UUID uniqueId) {
return Optional.empty();
}
@@ -235,8 +235,8 @@ public class LPVelocityBootstrap implements LuckPermsBootstrap {
}
@Override
- public boolean isPlayerOnline(UUID uuid) {
- Player player = this.proxy.getPlayer(uuid).orElse(null);
+ public boolean isPlayerOnline(UUID uniqueId) {
+ Player player = this.proxy.getPlayer(uniqueId).orElse(null);
return player != null && player.isActive();
}
}
diff --git a/velocity/src/main/java/me/lucko/luckperms/velocity/LPVelocityPlugin.java b/velocity/src/main/java/me/lucko/luckperms/velocity/LPVelocityPlugin.java
index 7152146a7..e9dcaac6d 100644
--- a/velocity/src/main/java/me/lucko/luckperms/velocity/LPVelocityPlugin.java
+++ b/velocity/src/main/java/me/lucko/luckperms/velocity/LPVelocityPlugin.java
@@ -192,7 +192,7 @@ public class LPVelocityPlugin extends AbstractLuckPermsPlugin {
@Override
public Optional getQueryOptionsForUser(User user) {
- return this.bootstrap.getPlayer(user.getUuid()).map(player -> this.contextManager.getQueryOptions(player));
+ return this.bootstrap.getPlayer(user.getUniqueId()).map(player -> this.contextManager.getQueryOptions(player));
}
@Override
diff --git a/velocity/src/main/java/me/lucko/luckperms/velocity/VelocitySenderFactory.java b/velocity/src/main/java/me/lucko/luckperms/velocity/VelocitySenderFactory.java
index b1002057d..f303f2bf6 100644
--- a/velocity/src/main/java/me/lucko/luckperms/velocity/VelocitySenderFactory.java
+++ b/velocity/src/main/java/me/lucko/luckperms/velocity/VelocitySenderFactory.java
@@ -53,7 +53,7 @@ public class VelocitySenderFactory extends SenderFactory {
}
@Override
- protected UUID getUuid(CommandSource source) {
+ protected UUID getUniqueId(CommandSource source) {
if (source instanceof Player) {
return ((Player) source).getUniqueId();
}