diff --git a/common/src/main/java/me/lucko/luckperms/common/commands/generic/parent/ParentAddTemp.java b/common/src/main/java/me/lucko/luckperms/common/commands/generic/parent/ParentAddTemp.java index bdb77c54a..40770eaed 100644 --- a/common/src/main/java/me/lucko/luckperms/common/commands/generic/parent/ParentAddTemp.java +++ b/common/src/main/java/me/lucko/luckperms/common/commands/generic/parent/ParentAddTemp.java @@ -83,7 +83,7 @@ public class ParentAddTemp extends GenericChildCommand { return; } - if (group.getName().equalsIgnoreCase(target.getObjectName())) { + if (group.getName().equalsIgnoreCase(target.getIdentifier().getName())) { Message.ALREADY_TEMP_INHERITS.send(sender, target, group, context); return; } diff --git a/common/src/main/java/me/lucko/luckperms/common/locale/Message.java b/common/src/main/java/me/lucko/luckperms/common/locale/Message.java index 9ddf461c3..5f340c5a2 100644 --- a/common/src/main/java/me/lucko/luckperms/common/locale/Message.java +++ b/common/src/main/java/me/lucko/luckperms/common/locale/Message.java @@ -1671,7 +1671,7 @@ public interface Message { .append(space()) .append(formatContextSetBracketed(node.getContexts(), empty())) .apply(builder -> { - String holderName = holder.getType() == HolderType.GROUP ? holder.getObjectName() : holder.getPlainDisplayName(); + String holderName = holder.getType() == HolderType.GROUP ? holder.getIdentifier().getName() : holder.getPlainDisplayName(); boolean explicitGlobalContext = !holder.getPlugin().getConfiguration().getContextsFile().getDefaultContexts().isEmpty(); Component hover = join(newline(), @@ -1701,7 +1701,7 @@ public interface Message { .append(space()) .append(formatContextSetBracketed(node.getContexts(), empty())) .apply(builder -> { - String holderName = holder.getType() == HolderType.GROUP ? holder.getObjectName() : holder.getPlainDisplayName(); + String holderName = holder.getType() == HolderType.GROUP ? holder.getIdentifier().getName() : holder.getPlainDisplayName(); boolean explicitGlobalContext = !holder.getPlugin().getConfiguration().getContextsFile().getDefaultContexts().isEmpty(); Component hover = join(newline(), @@ -1771,7 +1771,7 @@ public interface Message { .content(node.getGroupName()) .color(GREEN) .apply(builder -> { - String holderName = holder.getType() == HolderType.GROUP ? holder.getObjectName() : holder.getPlainDisplayName(); + String holderName = holder.getType() == HolderType.GROUP ? holder.getIdentifier().getName() : holder.getPlainDisplayName(); boolean explicitGlobalContext = !holder.getPlugin().getConfiguration().getContextsFile().getDefaultContexts().isEmpty(); Component hover = join(newline(), @@ -1804,7 +1804,7 @@ public interface Message { .content(node.getGroupName()) .color(GREEN) .apply(builder -> { - String holderName = holder.getType() == HolderType.GROUP ? holder.getObjectName() : holder.getPlainDisplayName(); + String holderName = holder.getType() == HolderType.GROUP ? holder.getIdentifier().getName() : holder.getPlainDisplayName(); boolean explicitGlobalContext = !holder.getPlugin().getConfiguration().getContextsFile().getDefaultContexts().isEmpty(); Component hover = join(newline(), diff --git a/common/src/main/java/me/lucko/luckperms/common/model/Group.java b/common/src/main/java/me/lucko/luckperms/common/model/Group.java index 2814b8d80..54ff97955 100644 --- a/common/src/main/java/me/lucko/luckperms/common/model/Group.java +++ b/common/src/main/java/me/lucko/luckperms/common/model/Group.java @@ -68,8 +68,8 @@ public class Group extends PermissionHolder { private final GroupCachedDataManager cachedData; public Group(String name, LuckPermsPlugin plugin) { - super(plugin); - this.name = name.toLowerCase(Locale.ROOT); + super(plugin, name.toLowerCase(Locale.ROOT)); + this.name = getIdentifier().getName(); this.cachedData = new GroupCachedDataManager(this); getPlugin().getEventDispatcher().dispatchGroupCacheLoad(this, this.cachedData); @@ -89,11 +89,6 @@ public class Group extends PermissionHolder { return this.name; } - @Override - public String getObjectName() { - return this.name; - } - public ApiGroup getApiProxy() { return this.apiProxy; } diff --git a/common/src/main/java/me/lucko/luckperms/common/model/InheritanceOrigin.java b/common/src/main/java/me/lucko/luckperms/common/model/InheritanceOrigin.java index 5dbd596ca..8fbe8f33c 100644 --- a/common/src/main/java/me/lucko/luckperms/common/model/InheritanceOrigin.java +++ b/common/src/main/java/me/lucko/luckperms/common/model/InheritanceOrigin.java @@ -25,28 +25,47 @@ package me.lucko.luckperms.common.model; -import net.luckperms.api.model.PermissionHolder; import net.luckperms.api.model.data.DataType; import net.luckperms.api.node.metadata.types.InheritanceOriginMetadata; import org.checkerframework.checker.nullness.qual.NonNull; +import java.util.Objects; + public class InheritanceOrigin implements InheritanceOriginMetadata { - private final PermissionHolder.Identifier location; + private final PermissionHolderIdentifier origin; private final DataType dataType; - public InheritanceOrigin(PermissionHolder.Identifier location, DataType dataType) { - this.location = location; + public InheritanceOrigin(PermissionHolderIdentifier origin, DataType dataType) { + this.origin = origin; this.dataType = dataType; } @Override - public PermissionHolder.@NonNull Identifier getOrigin() { - return this.location; + public @NonNull PermissionHolderIdentifier getOrigin() { + return this.origin; } @Override public @NonNull DataType getDataType() { return this.dataType; } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (!(o instanceof InheritanceOriginMetadata)) return false; + InheritanceOriginMetadata that = (InheritanceOriginMetadata) o; + return this.origin.equals(that.getOrigin()) && this.dataType == that.getDataType(); + } + + @Override + public int hashCode() { + return Objects.hash(this.origin, getDataType()); + } + + @Override + public String toString() { + return this.origin + " (" + this.dataType + ")"; + } } diff --git a/common/src/main/java/me/lucko/luckperms/common/model/PermissionHolder.java b/common/src/main/java/me/lucko/luckperms/common/model/PermissionHolder.java index d5577e7f2..fd9e71d4c 100644 --- a/common/src/main/java/me/lucko/luckperms/common/model/PermissionHolder.java +++ b/common/src/main/java/me/lucko/luckperms/common/model/PermissionHolder.java @@ -53,7 +53,6 @@ import net.luckperms.api.query.Flag; import net.luckperms.api.query.QueryOptions; import net.luckperms.api.util.Tristate; -import org.checkerframework.checker.nullness.qual.MonotonicNonNull; import org.checkerframework.checker.nullness.qual.NonNull; import org.checkerframework.checker.nullness.qual.Nullable; @@ -102,7 +101,7 @@ public abstract class PermissionHolder { /** * The holders identifier */ - private @MonotonicNonNull PermissionHolderIdentifier identifier; + private final PermissionHolderIdentifier identifier; /** * The holders persistent nodes. @@ -135,8 +134,9 @@ public abstract class PermissionHolder { * * @param plugin the plugin instance */ - protected PermissionHolder(LuckPermsPlugin plugin) { + protected PermissionHolder(LuckPermsPlugin plugin, String objectName) { this.plugin = plugin; + this.identifier = new PermissionHolderIdentifier(getType(), objectName); } // getters @@ -169,22 +169,9 @@ public abstract class PermissionHolder { } public PermissionHolderIdentifier getIdentifier() { - if (this.identifier == null) { - this.identifier = new PermissionHolderIdentifier(getType(), getObjectName()); - } return this.identifier; } - /** - * Gets the unique name of this holder object. - * - *
Used as a base for identifying permission holding objects. Also acts - * as a method for preventing circular inheritance issues.
- * - * @return the object name - */ - public abstract String getObjectName(); - /** * Gets the formatted display name of this permission holder * (for use in commands, etc) @@ -439,7 +426,7 @@ public abstract class PermissionHolder { } public Tristate hasNode(DataType type, Node node, NodeEqualityPredicate equalityPredicate) { - if (this.getType() == HolderType.GROUP && node instanceof InheritanceNode && ((InheritanceNode) node).getGroupName().equalsIgnoreCase(getObjectName())) { + if (this.getType() == HolderType.GROUP && node instanceof InheritanceNode && ((InheritanceNode) node).getGroupName().equalsIgnoreCase(getIdentifier().getName())) { return Tristate.TRUE; } diff --git a/common/src/main/java/me/lucko/luckperms/common/model/PermissionHolderIdentifier.java b/common/src/main/java/me/lucko/luckperms/common/model/PermissionHolderIdentifier.java index c8d58f720..dc829ff69 100644 --- a/common/src/main/java/me/lucko/luckperms/common/model/PermissionHolderIdentifier.java +++ b/common/src/main/java/me/lucko/luckperms/common/model/PermissionHolderIdentifier.java @@ -36,7 +36,9 @@ public final class PermissionHolderIdentifier implements Identifier { private final String name; public PermissionHolderIdentifier(HolderType type, String name) { - this.type = type == HolderType.USER ? Identifier.USER_TYPE : Identifier.GROUP_TYPE; + this.type = type == HolderType.USER + ? Identifier.USER_TYPE + : Identifier.GROUP_TYPE; this.name = name; } @@ -46,13 +48,13 @@ public final class PermissionHolderIdentifier implements Identifier { } @Override - public @NonNull String getName() { - return this.name; + public @NonNull String getType() { + return this.type; } @Override - public @NonNull String getType() { - return this.type; + public @NonNull String getName() { + return this.name; } @Override @@ -60,12 +62,16 @@ public final class PermissionHolderIdentifier implements Identifier { if (this == o) return true; if (!(o instanceof Identifier)) return false; Identifier that = (Identifier) o; - return getType().equals(that.getType()) && - getName().equals(that.getName()); + return this.type.equals(that.getType()) && this.name.equals(that.getName()); } @Override public int hashCode() { - return Objects.hash(getType(), getName()); + return Objects.hash(this.type, this.name); + } + + @Override + public String toString() { + return this.type + '/' + this.name; } } 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 24ce90573..879624bad 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 @@ -62,7 +62,7 @@ public class User extends PermissionHolder { private final UserCachedDataManager cachedData; public User(UUID uniqueId, LuckPermsPlugin plugin) { - super(plugin); + super(plugin, uniqueId.toString()); this.uniqueId = uniqueId; this.primaryGroup = plugin.getConfiguration().get(ConfigKeys.PRIMARY_GROUP_CALCULATION).apply(this); this.cachedData = new UserCachedDataManager(this); @@ -77,11 +77,6 @@ public class User extends PermissionHolder { return Optional.ofNullable(this.username); } - @Override - public String getObjectName() { - return this.uniqueId.toString(); - } - @Override public Component getFormattedDisplayName() { return Component.text(getPlainDisplayName()); diff --git a/common/src/main/java/me/lucko/luckperms/common/model/WeightCache.java b/common/src/main/java/me/lucko/luckperms/common/model/WeightCache.java index 48613caa5..e261c36f4 100644 --- a/common/src/main/java/me/lucko/luckperms/common/model/WeightCache.java +++ b/common/src/main/java/me/lucko/luckperms/common/model/WeightCache.java @@ -63,7 +63,7 @@ public class WeightCache extends Cache