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 e375ccc5d..870f20cd3 100644 --- a/sponge/src/main/java/me/lucko/luckperms/sponge/LPSpongePlugin.java +++ b/sponge/src/main/java/me/lucko/luckperms/sponge/LPSpongePlugin.java @@ -266,6 +266,7 @@ public class LPSpongePlugin implements LuckPermsPlugin { lateLoad = true; } else { game.getServiceManager().setProvider(this, PermissionService.class, service); + game.getServiceManager().setProvider(this, LuckPermsService.class, service); } // register with the LP API @@ -299,6 +300,7 @@ public class LPSpongePlugin implements LuckPermsPlugin { if (lateLoad) { getLog().info("Providing late registration of PermissionService..."); game.getServiceManager().setProvider(this, PermissionService.class, service); + game.getServiceManager().setProvider(this, LuckPermsService.class, service); } } @@ -321,23 +323,14 @@ public class LPSpongePlugin implements LuckPermsPlugin { @Listener public void onPostInit(GamePostInitializationEvent event) { // register permissions - Optional ps = game.getServiceManager().provide(PermissionService.class); - if (!ps.isPresent()) { - getLog().warn("Unable to register all LuckPerms permissions. PermissionService not available."); - return; - } - - final PermissionService p = ps.get(); - - Optional builder = p.newDescriptionBuilder(this); - if (!builder.isPresent()) { - getLog().warn("Unable to register all LuckPerms permissions. Description Builder not available."); + LuckPermsService service = this.service; + if (service == null) { return; } for (Permission perm : Permission.values()) { for (String node : perm.getNodes()) { - registerPermission(p, node); + registerPermission(service, node); } } } @@ -473,7 +466,7 @@ public class LPSpongePlugin implements LuckPermsPlugin { return map; } - private void registerPermission(PermissionService p, String node) { + private void registerPermission(LuckPermsService p, String node) { Optional builder = p.newDescriptionBuilder(this); if (!builder.isPresent()) return; diff --git a/sponge/src/main/java/me/lucko/luckperms/sponge/commands/OptionClear.java b/sponge/src/main/java/me/lucko/luckperms/sponge/commands/OptionClear.java index caebb6aa6..21f376db6 100644 --- a/sponge/src/main/java/me/lucko/luckperms/sponge/commands/OptionClear.java +++ b/sponge/src/main/java/me/lucko/luckperms/sponge/commands/OptionClear.java @@ -33,12 +33,11 @@ import me.lucko.luckperms.common.commands.utils.Util; import me.lucko.luckperms.common.constants.Permission; import me.lucko.luckperms.common.plugin.LuckPermsPlugin; import me.lucko.luckperms.common.utils.Predicates; - -import org.spongepowered.api.service.permission.SubjectData; +import me.lucko.luckperms.sponge.service.proxy.LPSubjectData; import java.util.List; -public class OptionClear extends SubCommand { +public class OptionClear extends SubCommand { public OptionClear() { super("clear", "Clears the Subjects options", Permission.SPONGE_OPTION_CLEAR, Predicates.alwaysFalse(), Arg.list( @@ -48,13 +47,13 @@ public class OptionClear extends SubCommand { } @Override - public CommandResult execute(LuckPermsPlugin plugin, Sender sender, SubjectData subjectData, List args, String label) throws CommandException { + public CommandResult execute(LuckPermsPlugin plugin, Sender sender, LPSubjectData subjectData, List args, String label) throws CommandException { ContextSet contextSet = ArgumentUtils.handleContexts(0, args); if (contextSet.isEmpty()) { subjectData.clearOptions(); Util.sendPluginMessage(sender, "&aCleared options matching contexts &bANY&a."); } else { - subjectData.clearOptions(SpongeUtils.convertContexts(contextSet)); + subjectData.clearOptions(contextSet); Util.sendPluginMessage(sender, "&aCleared options matching contexts &b" + SpongeUtils.contextToString(contextSet)); } return CommandResult.SUCCESS; diff --git a/sponge/src/main/java/me/lucko/luckperms/sponge/commands/OptionInfo.java b/sponge/src/main/java/me/lucko/luckperms/sponge/commands/OptionInfo.java index 35bd4fdff..79a6b004e 100644 --- a/sponge/src/main/java/me/lucko/luckperms/sponge/commands/OptionInfo.java +++ b/sponge/src/main/java/me/lucko/luckperms/sponge/commands/OptionInfo.java @@ -23,6 +23,7 @@ package me.lucko.luckperms.sponge.commands; import me.lucko.luckperms.api.context.ContextSet; +import me.lucko.luckperms.api.context.ImmutableContextSet; import me.lucko.luckperms.common.commands.Arg; import me.lucko.luckperms.common.commands.CommandException; import me.lucko.luckperms.common.commands.CommandResult; @@ -33,15 +34,12 @@ import me.lucko.luckperms.common.commands.utils.Util; import me.lucko.luckperms.common.constants.Permission; import me.lucko.luckperms.common.plugin.LuckPermsPlugin; import me.lucko.luckperms.common.utils.Predicates; - -import org.spongepowered.api.service.context.Context; -import org.spongepowered.api.service.permission.SubjectData; +import me.lucko.luckperms.sponge.service.proxy.LPSubjectData; import java.util.List; import java.util.Map; -import java.util.Set; -public class OptionInfo extends SubCommand { +public class OptionInfo extends SubCommand { public OptionInfo() { super("info", "Shows info about the subject's options", Permission.SPONGE_OPTION_INFO, Predicates.alwaysFalse(), Arg.list(Arg.create("contexts...", false, "the contexts to filter by")) @@ -49,23 +47,22 @@ public class OptionInfo extends SubCommand { } @Override - public CommandResult execute(LuckPermsPlugin plugin, Sender sender, SubjectData subjectData, List args, String label) throws CommandException { + public CommandResult execute(LuckPermsPlugin plugin, Sender sender, LPSubjectData subjectData, List args, String label) throws CommandException { ContextSet contextSet = ArgumentUtils.handleContexts(0, args); if (contextSet.isEmpty()) { Util.sendPluginMessage(sender, "&aShowing options matching contexts &bANY&a."); - Map, Map> options = subjectData.getAllOptions(); + Map> options = subjectData.getOptions(); if (options.isEmpty()) { Util.sendPluginMessage(sender, "That subject does not have any options defined."); return CommandResult.SUCCESS; } - for (Map.Entry, Map> e : options.entrySet()) { - ContextSet set = SpongeUtils.convertContexts(e.getKey()); - Util.sendPluginMessage(sender, "&3>> &bContext: " + SpongeUtils.contextToString(set) + "\n" + SpongeUtils.optionsToString(e.getValue())); + for (Map.Entry> e : options.entrySet()) { + Util.sendPluginMessage(sender, "&3>> &bContext: " + SpongeUtils.contextToString(e.getKey()) + "\n" + SpongeUtils.optionsToString(e.getValue())); } } else { - Map options = subjectData.getOptions(SpongeUtils.convertContexts(contextSet)); + Map options = subjectData.getOptions(contextSet); if (options.isEmpty()) { Util.sendPluginMessage(sender, "That subject does not have any options defined in those contexts."); return CommandResult.SUCCESS; diff --git a/sponge/src/main/java/me/lucko/luckperms/sponge/commands/OptionSet.java b/sponge/src/main/java/me/lucko/luckperms/sponge/commands/OptionSet.java index d6542f0d5..ba047f67f 100644 --- a/sponge/src/main/java/me/lucko/luckperms/sponge/commands/OptionSet.java +++ b/sponge/src/main/java/me/lucko/luckperms/sponge/commands/OptionSet.java @@ -33,12 +33,11 @@ import me.lucko.luckperms.common.commands.utils.Util; import me.lucko.luckperms.common.constants.Permission; import me.lucko.luckperms.common.plugin.LuckPermsPlugin; import me.lucko.luckperms.common.utils.Predicates; - -import org.spongepowered.api.service.permission.SubjectData; +import me.lucko.luckperms.sponge.service.proxy.LPSubjectData; import java.util.List; -public class OptionSet extends SubCommand { +public class OptionSet extends SubCommand { public OptionSet() { super("set", "Sets an option for the Subject", Permission.SPONGE_OPTION_SET, Predicates.inRange(0, 1), Arg.list( @@ -50,12 +49,12 @@ public class OptionSet extends SubCommand { } @Override - public CommandResult execute(LuckPermsPlugin plugin, Sender sender, SubjectData subjectData, List args, String label) throws CommandException { + public CommandResult execute(LuckPermsPlugin plugin, Sender sender, LPSubjectData subjectData, List args, String label) throws CommandException { String key = args.get(0); String value = args.get(1); ContextSet contextSet = ArgumentUtils.handleContexts(2, args); - if (subjectData.setOption(SpongeUtils.convertContexts(contextSet), key, value)) { + if (subjectData.setOption(contextSet, key, value)) { Util.sendPluginMessage(sender, "&aSet &f\"" + key + "&f\"&a to &f\"" + value + "&f\"&a in context " + SpongeUtils.contextToString(contextSet)); } else { Util.sendPluginMessage(sender, "Unable to set option. Does the Subject already have it set?"); diff --git a/sponge/src/main/java/me/lucko/luckperms/sponge/commands/OptionUnset.java b/sponge/src/main/java/me/lucko/luckperms/sponge/commands/OptionUnset.java index c0986c705..adef7c7ad 100644 --- a/sponge/src/main/java/me/lucko/luckperms/sponge/commands/OptionUnset.java +++ b/sponge/src/main/java/me/lucko/luckperms/sponge/commands/OptionUnset.java @@ -33,12 +33,11 @@ import me.lucko.luckperms.common.commands.utils.Util; import me.lucko.luckperms.common.constants.Permission; import me.lucko.luckperms.common.plugin.LuckPermsPlugin; import me.lucko.luckperms.common.utils.Predicates; - -import org.spongepowered.api.service.permission.SubjectData; +import me.lucko.luckperms.sponge.service.proxy.LPSubjectData; import java.util.List; -public class OptionUnset extends SubCommand { +public class OptionUnset extends SubCommand { public OptionUnset() { super("unset", "Unsets an option for the Subject", Permission.SPONGE_OPTION_UNSET, Predicates.is(0), Arg.list( @@ -49,11 +48,11 @@ public class OptionUnset extends SubCommand { } @Override - public CommandResult execute(LuckPermsPlugin plugin, Sender sender, SubjectData subjectData, List args, String label) throws CommandException { + public CommandResult execute(LuckPermsPlugin plugin, Sender sender, LPSubjectData subjectData, List args, String label) throws CommandException { String key = args.get(0); ContextSet contextSet = ArgumentUtils.handleContexts(1, args); - if (subjectData.setOption(SpongeUtils.convertContexts(contextSet), key, null)) { + if (subjectData.setOption(contextSet, key, null)) { Util.sendPluginMessage(sender, "&aUnset &f\"" + key + "&f\"&a in context " + SpongeUtils.contextToString(contextSet)); } else { Util.sendPluginMessage(sender, "Unable to unset option. Are you sure the Subject has it set?"); diff --git a/sponge/src/main/java/me/lucko/luckperms/sponge/commands/ParentAdd.java b/sponge/src/main/java/me/lucko/luckperms/sponge/commands/ParentAdd.java index b03874e61..d6681df65 100644 --- a/sponge/src/main/java/me/lucko/luckperms/sponge/commands/ParentAdd.java +++ b/sponge/src/main/java/me/lucko/luckperms/sponge/commands/ParentAdd.java @@ -33,16 +33,16 @@ import me.lucko.luckperms.common.commands.utils.Util; import me.lucko.luckperms.common.constants.Permission; import me.lucko.luckperms.common.plugin.LuckPermsPlugin; import me.lucko.luckperms.common.utils.Predicates; +import me.lucko.luckperms.sponge.service.LuckPermsService; +import me.lucko.luckperms.sponge.service.proxy.LPSubject; +import me.lucko.luckperms.sponge.service.proxy.LPSubjectCollection; +import me.lucko.luckperms.sponge.service.proxy.LPSubjectData; import org.spongepowered.api.Sponge; -import org.spongepowered.api.service.permission.PermissionService; -import org.spongepowered.api.service.permission.Subject; -import org.spongepowered.api.service.permission.SubjectCollection; -import org.spongepowered.api.service.permission.SubjectData; import java.util.List; -public class ParentAdd extends SubCommand { +public class ParentAdd extends SubCommand { public ParentAdd() { super("add", "Adds a parent to the Subject", Permission.SPONGE_PARENT_ADD, Predicates.inRange(0, 1), Arg.list( @@ -54,24 +54,24 @@ public class ParentAdd extends SubCommand { } @Override - public CommandResult execute(LuckPermsPlugin plugin, Sender sender, SubjectData subjectData, List args, String label) throws CommandException { + public CommandResult execute(LuckPermsPlugin plugin, Sender sender, LPSubjectData subjectData, List args, String label) throws CommandException { String collection = args.get(0); String name = args.get(1); ContextSet contextSet = ArgumentUtils.handleContexts(2, args); - PermissionService service = Sponge.getServiceManager().provideUnchecked(PermissionService.class); - if (service.getKnownSubjects().keySet().stream().map(String::toLowerCase).noneMatch(s -> s.equalsIgnoreCase(collection))) { + LuckPermsService service = Sponge.getServiceManager().provideUnchecked(LuckPermsService.class); + if (service.getCollections().keySet().stream().map(String::toLowerCase).noneMatch(s -> s.equalsIgnoreCase(collection))) { Util.sendPluginMessage(sender, "Warning: SubjectCollection '&4" + collection + "&c' doesn't already exist."); } - SubjectCollection c = service.getSubjects(collection); + LPSubjectCollection c = service.getSubjects(collection); if (!c.hasRegistered(name)) { Util.sendPluginMessage(sender, "Warning: Subject '&4" + name + "&c' doesn't already exist."); } - Subject subject = c.get(name); + LPSubject subject = c.get(name); - if (subjectData.addParent(SpongeUtils.convertContexts(contextSet), subject)) { + if (subjectData.addParent(contextSet, subject.toReference())) { Util.sendPluginMessage(sender, "&aAdded parent &b" + subject.getContainingCollection().getIdentifier() + "&a/&b" + subject.getIdentifier() + "&a in context " + SpongeUtils.contextToString(contextSet)); } else { diff --git a/sponge/src/main/java/me/lucko/luckperms/sponge/commands/ParentClear.java b/sponge/src/main/java/me/lucko/luckperms/sponge/commands/ParentClear.java index 33b741e1c..2bf8117bf 100644 --- a/sponge/src/main/java/me/lucko/luckperms/sponge/commands/ParentClear.java +++ b/sponge/src/main/java/me/lucko/luckperms/sponge/commands/ParentClear.java @@ -33,12 +33,11 @@ import me.lucko.luckperms.common.commands.utils.Util; import me.lucko.luckperms.common.constants.Permission; import me.lucko.luckperms.common.plugin.LuckPermsPlugin; import me.lucko.luckperms.common.utils.Predicates; - -import org.spongepowered.api.service.permission.SubjectData; +import me.lucko.luckperms.sponge.service.proxy.LPSubjectData; import java.util.List; -public class ParentClear extends SubCommand { +public class ParentClear extends SubCommand { public ParentClear() { super("clear", "Clears the Subjects parents", Permission.SPONGE_PARENT_CLEAR, Predicates.alwaysFalse(), Arg.list( @@ -48,13 +47,13 @@ public class ParentClear extends SubCommand { } @Override - public CommandResult execute(LuckPermsPlugin plugin, Sender sender, SubjectData subjectData, List args, String label) throws CommandException { + public CommandResult execute(LuckPermsPlugin plugin, Sender sender, LPSubjectData subjectData, List args, String label) throws CommandException { ContextSet contextSet = ArgumentUtils.handleContexts(0, args); if (contextSet.isEmpty()) { subjectData.clearParents(); Util.sendPluginMessage(sender, "&aCleared parents matching contexts &bANY&a."); } else { - subjectData.clearParents(SpongeUtils.convertContexts(contextSet)); + subjectData.clearParents(contextSet); Util.sendPluginMessage(sender, "&aCleared parents matching contexts &b" + SpongeUtils.contextToString(contextSet)); } return CommandResult.SUCCESS; diff --git a/sponge/src/main/java/me/lucko/luckperms/sponge/commands/ParentInfo.java b/sponge/src/main/java/me/lucko/luckperms/sponge/commands/ParentInfo.java index 2339b28f8..6c228737b 100644 --- a/sponge/src/main/java/me/lucko/luckperms/sponge/commands/ParentInfo.java +++ b/sponge/src/main/java/me/lucko/luckperms/sponge/commands/ParentInfo.java @@ -23,6 +23,7 @@ package me.lucko.luckperms.sponge.commands; import me.lucko.luckperms.api.context.ContextSet; +import me.lucko.luckperms.api.context.ImmutableContextSet; import me.lucko.luckperms.common.commands.Arg; import me.lucko.luckperms.common.commands.CommandException; import me.lucko.luckperms.common.commands.CommandResult; @@ -33,16 +34,14 @@ import me.lucko.luckperms.common.commands.utils.Util; import me.lucko.luckperms.common.constants.Permission; import me.lucko.luckperms.common.plugin.LuckPermsPlugin; import me.lucko.luckperms.common.utils.Predicates; - -import org.spongepowered.api.service.context.Context; -import org.spongepowered.api.service.permission.Subject; -import org.spongepowered.api.service.permission.SubjectData; +import me.lucko.luckperms.sponge.service.proxy.LPSubjectData; +import me.lucko.luckperms.sponge.service.references.SubjectReference; import java.util.List; import java.util.Map; import java.util.Set; -public class ParentInfo extends SubCommand { +public class ParentInfo extends SubCommand { public ParentInfo() { super("info", "Shows info about the subject's parents", Permission.SPONGE_PARENT_INFO, Predicates.alwaysFalse(), Arg.list(Arg.create("contexts...", false, "the contexts to filter by")) @@ -50,23 +49,22 @@ public class ParentInfo extends SubCommand { } @Override - public CommandResult execute(LuckPermsPlugin plugin, Sender sender, SubjectData subjectData, List args, String label) throws CommandException { + public CommandResult execute(LuckPermsPlugin plugin, Sender sender, LPSubjectData subjectData, List args, String label) throws CommandException { ContextSet contextSet = ArgumentUtils.handleContexts(0, args); if (contextSet.isEmpty()) { Util.sendPluginMessage(sender, "&aShowing parents matching contexts &bANY&a."); - Map, List> parents = subjectData.getAllParents(); + Map> parents = subjectData.getParents(); if (parents.isEmpty()) { Util.sendPluginMessage(sender, "That subject does not have any parents defined."); return CommandResult.SUCCESS; } - for (Map.Entry, List> e : parents.entrySet()) { - ContextSet set = SpongeUtils.convertContexts(e.getKey()); - Util.sendPluginMessage(sender, "&3>> &bContext: " + SpongeUtils.contextToString(set) + "\n" + SpongeUtils.parentsToString(e.getValue())); + for (Map.Entry> e : parents.entrySet()) { + Util.sendPluginMessage(sender, "&3>> &bContext: " + SpongeUtils.contextToString(e.getKey()) + "\n" + SpongeUtils.parentsToString(e.getValue())); } } else { - List parents = subjectData.getParents(SpongeUtils.convertContexts(contextSet)); + Set parents = subjectData.getParents(contextSet); if (parents.isEmpty()) { Util.sendPluginMessage(sender, "That subject does not have any parents defined in those contexts."); return CommandResult.SUCCESS; diff --git a/sponge/src/main/java/me/lucko/luckperms/sponge/commands/ParentRemove.java b/sponge/src/main/java/me/lucko/luckperms/sponge/commands/ParentRemove.java index 724d2f681..05e24992b 100644 --- a/sponge/src/main/java/me/lucko/luckperms/sponge/commands/ParentRemove.java +++ b/sponge/src/main/java/me/lucko/luckperms/sponge/commands/ParentRemove.java @@ -33,16 +33,16 @@ import me.lucko.luckperms.common.commands.utils.Util; import me.lucko.luckperms.common.constants.Permission; import me.lucko.luckperms.common.plugin.LuckPermsPlugin; import me.lucko.luckperms.common.utils.Predicates; +import me.lucko.luckperms.sponge.service.LuckPermsService; +import me.lucko.luckperms.sponge.service.proxy.LPSubject; +import me.lucko.luckperms.sponge.service.proxy.LPSubjectCollection; +import me.lucko.luckperms.sponge.service.proxy.LPSubjectData; import org.spongepowered.api.Sponge; -import org.spongepowered.api.service.permission.PermissionService; -import org.spongepowered.api.service.permission.Subject; -import org.spongepowered.api.service.permission.SubjectCollection; -import org.spongepowered.api.service.permission.SubjectData; import java.util.List; -public class ParentRemove extends SubCommand { +public class ParentRemove extends SubCommand { public ParentRemove() { super("remove", "Removes a parent from the Subject", Permission.SPONGE_PARENT_REMOVE, Predicates.inRange(0, 1), Arg.list( @@ -54,24 +54,24 @@ public class ParentRemove extends SubCommand { } @Override - public CommandResult execute(LuckPermsPlugin plugin, Sender sender, SubjectData subjectData, List args, String label) throws CommandException { + public CommandResult execute(LuckPermsPlugin plugin, Sender sender, LPSubjectData subjectData, List args, String label) throws CommandException { String collection = args.get(0); String name = args.get(1); ContextSet contextSet = ArgumentUtils.handleContexts(2, args); - PermissionService service = Sponge.getServiceManager().provideUnchecked(PermissionService.class); - if (service.getKnownSubjects().keySet().stream().map(String::toLowerCase).noneMatch(s -> s.equalsIgnoreCase(collection))) { + LuckPermsService service = Sponge.getServiceManager().provideUnchecked(LuckPermsService.class); + if (service.getCollections().keySet().stream().map(String::toLowerCase).noneMatch(s -> s.equalsIgnoreCase(collection))) { Util.sendPluginMessage(sender, "Warning: SubjectCollection '&4" + collection + "&c' doesn't exist."); } - SubjectCollection c = service.getSubjects(collection); + LPSubjectCollection c = service.getSubjects(collection); if (!c.hasRegistered(name)) { Util.sendPluginMessage(sender, "Warning: Subject '&4" + name + "&c' doesn't exist."); } - Subject subject = c.get(name); + LPSubject subject = c.get(name); - if (subjectData.removeParent(SpongeUtils.convertContexts(contextSet), subject)) { + if (subjectData.removeParent(contextSet, subject.toReference())) { Util.sendPluginMessage(sender, "&aRemoved parent &b" + subject.getContainingCollection().getIdentifier() + "&a/&b" + subject.getIdentifier() + "&a in context " + SpongeUtils.contextToString(contextSet)); } else { diff --git a/sponge/src/main/java/me/lucko/luckperms/sponge/commands/PermissionClear.java b/sponge/src/main/java/me/lucko/luckperms/sponge/commands/PermissionClear.java index aecea4703..8f7b5c787 100644 --- a/sponge/src/main/java/me/lucko/luckperms/sponge/commands/PermissionClear.java +++ b/sponge/src/main/java/me/lucko/luckperms/sponge/commands/PermissionClear.java @@ -33,12 +33,11 @@ import me.lucko.luckperms.common.commands.utils.Util; import me.lucko.luckperms.common.constants.Permission; import me.lucko.luckperms.common.plugin.LuckPermsPlugin; import me.lucko.luckperms.common.utils.Predicates; - -import org.spongepowered.api.service.permission.SubjectData; +import me.lucko.luckperms.sponge.service.proxy.LPSubjectData; import java.util.List; -public class PermissionClear extends SubCommand { +public class PermissionClear extends SubCommand { public PermissionClear() { super("clear", "Clears the Subjects permissions", Permission.SPONGE_PERMISSION_CLEAR, Predicates.alwaysFalse(), Arg.list( @@ -48,13 +47,13 @@ public class PermissionClear extends SubCommand { } @Override - public CommandResult execute(LuckPermsPlugin plugin, Sender sender, SubjectData subjectData, List args, String label) throws CommandException { + public CommandResult execute(LuckPermsPlugin plugin, Sender sender, LPSubjectData subjectData, List args, String label) throws CommandException { ContextSet contextSet = ArgumentUtils.handleContexts(0, args); if (contextSet.isEmpty()) { subjectData.clearPermissions(); Util.sendPluginMessage(sender, "&aCleared permissions matching contexts &bANY&a."); } else { - subjectData.clearPermissions(SpongeUtils.convertContexts(contextSet)); + subjectData.clearPermissions(contextSet); Util.sendPluginMessage(sender, "&aCleared permissions matching contexts &b" + SpongeUtils.contextToString(contextSet)); } return CommandResult.SUCCESS; diff --git a/sponge/src/main/java/me/lucko/luckperms/sponge/commands/PermissionInfo.java b/sponge/src/main/java/me/lucko/luckperms/sponge/commands/PermissionInfo.java index 2699196cf..0616f5d71 100644 --- a/sponge/src/main/java/me/lucko/luckperms/sponge/commands/PermissionInfo.java +++ b/sponge/src/main/java/me/lucko/luckperms/sponge/commands/PermissionInfo.java @@ -23,6 +23,7 @@ package me.lucko.luckperms.sponge.commands; import me.lucko.luckperms.api.context.ContextSet; +import me.lucko.luckperms.api.context.ImmutableContextSet; import me.lucko.luckperms.common.commands.Arg; import me.lucko.luckperms.common.commands.CommandException; import me.lucko.luckperms.common.commands.CommandResult; @@ -33,15 +34,12 @@ import me.lucko.luckperms.common.commands.utils.Util; import me.lucko.luckperms.common.constants.Permission; import me.lucko.luckperms.common.plugin.LuckPermsPlugin; import me.lucko.luckperms.common.utils.Predicates; - -import org.spongepowered.api.service.context.Context; -import org.spongepowered.api.service.permission.SubjectData; +import me.lucko.luckperms.sponge.service.proxy.LPSubjectData; import java.util.List; import java.util.Map; -import java.util.Set; -public class PermissionInfo extends SubCommand { +public class PermissionInfo extends SubCommand { public PermissionInfo() { super("info", "Shows info about the subject's permissions", Permission.SPONGE_PERMISSION_INFO, Predicates.alwaysFalse(), Arg.list(Arg.create("contexts...", false, "the contexts to filter by")) @@ -49,23 +47,22 @@ public class PermissionInfo extends SubCommand { } @Override - public CommandResult execute(LuckPermsPlugin plugin, Sender sender, SubjectData subjectData, List args, String label) throws CommandException { + public CommandResult execute(LuckPermsPlugin plugin, Sender sender, LPSubjectData subjectData, List args, String label) throws CommandException { ContextSet contextSet = ArgumentUtils.handleContexts(0, args); if (contextSet.isEmpty()) { Util.sendPluginMessage(sender, "&aShowing permissions matching contexts &bANY&a."); - Map, Map> permissions = subjectData.getAllPermissions(); + Map> permissions = subjectData.getPermissions(); if (permissions.isEmpty()) { Util.sendPluginMessage(sender, "That subject does not have any permissions defined."); return CommandResult.SUCCESS; } - for (Map.Entry, Map> e : permissions.entrySet()) { - ContextSet set = SpongeUtils.convertContexts(e.getKey()); - Util.sendPluginMessage(sender, "&3>> &bContext: " + SpongeUtils.contextToString(set) + "\n" + SpongeUtils.nodesToString(e.getValue())); + for (Map.Entry> e : permissions.entrySet()) { + Util.sendPluginMessage(sender, "&3>> &bContext: " + SpongeUtils.contextToString(e.getKey()) + "\n" + SpongeUtils.nodesToString(e.getValue())); } } else { - Map permissions = subjectData.getPermissions(SpongeUtils.convertContexts(contextSet)); + Map permissions = subjectData.getPermissions(contextSet); if (permissions.isEmpty()) { Util.sendPluginMessage(sender, "That subject does not have any permissions defined in those contexts."); return CommandResult.SUCCESS; diff --git a/sponge/src/main/java/me/lucko/luckperms/sponge/commands/PermissionSet.java b/sponge/src/main/java/me/lucko/luckperms/sponge/commands/PermissionSet.java index 87a72f03a..54ea5b0dc 100644 --- a/sponge/src/main/java/me/lucko/luckperms/sponge/commands/PermissionSet.java +++ b/sponge/src/main/java/me/lucko/luckperms/sponge/commands/PermissionSet.java @@ -22,6 +22,7 @@ package me.lucko.luckperms.sponge.commands; +import me.lucko.luckperms.api.Tristate; import me.lucko.luckperms.api.context.ContextSet; import me.lucko.luckperms.common.commands.Arg; import me.lucko.luckperms.common.commands.CommandException; @@ -33,13 +34,11 @@ import me.lucko.luckperms.common.commands.utils.Util; import me.lucko.luckperms.common.constants.Permission; import me.lucko.luckperms.common.plugin.LuckPermsPlugin; import me.lucko.luckperms.common.utils.Predicates; - -import org.spongepowered.api.service.permission.SubjectData; -import org.spongepowered.api.util.Tristate; +import me.lucko.luckperms.sponge.service.proxy.LPSubjectData; import java.util.List; -public class PermissionSet extends SubCommand { +public class PermissionSet extends SubCommand { public PermissionSet() { super("set", "Sets a permission for the Subject", Permission.SPONGE_PERMISSION_SET, Predicates.inRange(0, 1), Arg.list( @@ -51,12 +50,12 @@ public class PermissionSet extends SubCommand { } @Override - public CommandResult execute(LuckPermsPlugin plugin, Sender sender, SubjectData subjectData, List args, String label) throws CommandException { + public CommandResult execute(LuckPermsPlugin plugin, Sender sender, LPSubjectData subjectData, List args, String label) throws CommandException { String node = args.get(0); Tristate tristate = SpongeUtils.parseTristate(1, args); ContextSet contextSet = ArgumentUtils.handleContexts(2, args); - if (subjectData.setPermission(SpongeUtils.convertContexts(contextSet), node, tristate)) { + if (subjectData.setPermission(contextSet, node, tristate)) { Util.sendPluginMessage(sender, "&aSet &b" + node + "&a to &b" + tristate.toString().toLowerCase() + "&a in context " + SpongeUtils.contextToString(contextSet)); } else { Util.sendPluginMessage(sender, "Unable to set permission. Does the Subject already have it set?"); diff --git a/sponge/src/main/java/me/lucko/luckperms/sponge/commands/SpongeMainCommand.java b/sponge/src/main/java/me/lucko/luckperms/sponge/commands/SpongeMainCommand.java index eb5c3313f..fb7577fa0 100644 --- a/sponge/src/main/java/me/lucko/luckperms/sponge/commands/SpongeMainCommand.java +++ b/sponge/src/main/java/me/lucko/luckperms/sponge/commands/SpongeMainCommand.java @@ -39,10 +39,9 @@ import me.lucko.luckperms.common.utils.ImmutableCollectors; import me.lucko.luckperms.common.utils.Predicates; import me.lucko.luckperms.sponge.LPSpongePlugin; import me.lucko.luckperms.sponge.service.LuckPermsService; - -import org.spongepowered.api.service.permission.Subject; -import org.spongepowered.api.service.permission.SubjectCollection; -import org.spongepowered.api.service.permission.SubjectData; +import me.lucko.luckperms.sponge.service.proxy.LPSubject; +import me.lucko.luckperms.sponge.service.proxy.LPSubjectCollection; +import me.lucko.luckperms.sponge.service.proxy.LPSubjectData; import java.util.ArrayList; import java.util.Arrays; @@ -50,26 +49,25 @@ import java.util.List; import java.util.Map; import java.util.Optional; import java.util.stream.Collectors; -import java.util.stream.StreamSupport; -public class SpongeMainCommand extends BaseCommand { +public class SpongeMainCommand extends BaseCommand { private final LPSpongePlugin plugin; - private final Map>> subCommands = ImmutableMap.>>builder() - .put("permission", ImmutableList.>builder() + private final Map>> subCommands = ImmutableMap.>>builder() + .put("permission", ImmutableList.>builder() .add(new PermissionInfo()) .add(new PermissionSet()) .add(new PermissionClear()) .build() ) - .put("parent", ImmutableList.>builder() + .put("parent", ImmutableList.>builder() .add(new ParentInfo()) .add(new ParentAdd()) .add(new ParentRemove()) .add(new ParentClear()) .build() ) - .put("option", ImmutableList.>builder() + .put("option", ImmutableList.>builder() .add(new OptionInfo()) .add(new OptionSet()) .add(new OptionUnset()) @@ -119,11 +117,11 @@ public class SpongeMainCommand extends BaseCommand { Util.sendPluginMessage(sender, "Warning: SubjectCollection '&4" + subjectCollection + "&c' doesn't already exist. Creating it now."); } - SubjectCollection collection = service.getSubjects(subjectCollection); + LPSubjectCollection collection = service.getSubjects(subjectCollection); if (args.size() < 2) { - List subjects = StreamSupport.stream(collection.getAllSubjects().spliterator(), false) - .map(Subject::getIdentifier) + List subjects = collection.getSubjects().stream() + .map(LPSubject::getIdentifier) .collect(Collectors.toList()); if (subjects.size() > 50) { @@ -156,7 +154,7 @@ public class SpongeMainCommand extends BaseCommand { } String cmd = args.get(3); - Optional> o = subCommands.get(type).stream() + Optional> o = subCommands.get(type).stream() .filter(s -> s.getName().equalsIgnoreCase(cmd)) .findAny(); @@ -165,7 +163,7 @@ public class SpongeMainCommand extends BaseCommand { return CommandResult.INVALID_ARGS; } - final Command sub = o.get(); + final Command sub = o.get(); if (!sub.isAuthorized(sender)) { Message.COMMAND_NO_PERMISSION.send(sender); return CommandResult.NO_PERMISSION; @@ -186,8 +184,8 @@ public class SpongeMainCommand extends BaseCommand { Util.sendPluginMessage(sender, "Warning: Subject '&4" + subjectId + "&c' doesn't already exist. Creating it now."); } - Subject subject = collection.get(subjectId); - SubjectData subjectData = persistent ? subject.getSubjectData() : subject.getTransientSubjectData(); + LPSubject subject = collection.get(subjectId); + LPSubjectData subjectData = persistent ? subject.getSubjectData() : subject.getTransientSubjectData(); CommandResult result; try { @@ -232,12 +230,12 @@ public class SpongeMainCommand extends BaseCommand { return "/%s sponge "; } - public List> getSubCommands() { + public List> getSubCommands() { return subCommands.values().stream().flatMap(List::stream).collect(ImmutableCollectors.toImmutableList()); } @Override - public Optional>> getChildren() { + public Optional>> getChildren() { return Optional.of(getSubCommands()); } } diff --git a/sponge/src/main/java/me/lucko/luckperms/sponge/commands/SpongeUtils.java b/sponge/src/main/java/me/lucko/luckperms/sponge/commands/SpongeUtils.java index 8850cab63..f4f8ecd59 100644 --- a/sponge/src/main/java/me/lucko/luckperms/sponge/commands/SpongeUtils.java +++ b/sponge/src/main/java/me/lucko/luckperms/sponge/commands/SpongeUtils.java @@ -24,19 +24,14 @@ package me.lucko.luckperms.sponge.commands; import lombok.experimental.UtilityClass; -import com.google.common.collect.Maps; - +import me.lucko.luckperms.api.Tristate; import me.lucko.luckperms.api.context.ContextSet; import me.lucko.luckperms.common.commands.utils.ArgumentUtils; - -import org.spongepowered.api.service.context.Context; -import org.spongepowered.api.service.permission.Subject; -import org.spongepowered.api.util.Tristate; +import me.lucko.luckperms.sponge.service.references.SubjectReference; import java.util.List; import java.util.Map; import java.util.Set; -import java.util.stream.Collectors; @UtilityClass public class SpongeUtils { @@ -78,13 +73,13 @@ public class SpongeUtils { return sb.toString(); } - public static String parentsToString(List parents) { + public static String parentsToString(Set parents) { StringBuilder sb = new StringBuilder(); - for (Subject s : parents) { + for (SubjectReference s : parents) { sb.append("&3> &a") .append(s.getIdentifier()) .append(" &bfrom collection &a") - .append(s.getContainingCollection().getIdentifier()) + .append(s.getCollection()) .append("&b.\n"); } return sb.toString(); @@ -102,12 +97,4 @@ public class SpongeUtils { return sb.delete(sb.length() - 2, sb.length()).toString(); } - public static ContextSet convertContexts(Set contexts) { - return ContextSet.fromEntries(contexts.stream().map(c -> Maps.immutableEntry(c.getKey(), c.getValue())).collect(Collectors.toSet())); - } - - public static Set convertContexts(ContextSet contexts) { - return contexts.toSet().stream().map(e -> new Context(e.getKey(), e.getValue())).collect(Collectors.toSet()); - } - }