From f9c1cdb4bdab18e54f88904774612ac84597f643 Mon Sep 17 00:00:00 2001 From: Luck Date: Tue, 23 Aug 2016 15:52:51 +0100 Subject: [PATCH] Add group and track rename commands --- bukkit/src/main/resources/plugin.yml | 4 + .../luckperms/commands/group/DeleteGroup.java | 6 -- .../commands/group/GroupMainCommand.java | 7 +- .../group/subcommands/GroupRename.java | 80 +++++++++++++++++++ .../luckperms/commands/track/DeleteTrack.java | 6 -- .../commands/track/TrackMainCommand.java | 7 +- .../track/subcommands/TrackRename.java | 80 +++++++++++++++++++ .../me/lucko/luckperms/constants/Message.java | 1 + .../lucko/luckperms/constants/Permission.java | 2 + .../lucko/luckperms/groups/GroupManager.java | 2 +- .../lucko/luckperms/tracks/TrackManager.java | 2 +- .../me/lucko/luckperms/users/UserManager.java | 2 +- .../luckperms/utils/AbstractManager.java | 2 +- 13 files changed, 173 insertions(+), 28 deletions(-) create mode 100644 common/src/main/java/me/lucko/luckperms/commands/group/subcommands/GroupRename.java create mode 100644 common/src/main/java/me/lucko/luckperms/commands/track/subcommands/TrackRename.java diff --git a/bukkit/src/main/resources/plugin.yml b/bukkit/src/main/resources/plugin.yml index df9c012e..eceb1628 100644 --- a/bukkit/src/main/resources/plugin.yml +++ b/bukkit/src/main/resources/plugin.yml @@ -55,11 +55,13 @@ permissions: luckperms.group.unsettempinherit: true luckperms.group.showtracks: true luckperms.group.clear: true + luckperms.group.rename: true luckperms.track.info: true luckperms.track.append: true luckperms.track.insert: true luckperms.track.remove: true luckperms.track.clear: true + luckperms.track.rename: true luckperms.log.export: true luckperms.log.userhistory: true luckperms.log.grouphistory: true @@ -106,6 +108,7 @@ permissions: luckperms.group.unsettempinherit: true luckperms.group.showtracks: true luckperms.group.clear: true + luckperms.group.rename: true luckperms.track.*: description: Gives access to all LuckPerms track commands children: @@ -114,6 +117,7 @@ permissions: luckperms.track.insert: true luckperms.track.remove: true luckperms.track.clear: true + luckperms.track.rename: true luckperms.log.*: description: Gives access to all LuckPerms log commands children: diff --git a/common/src/main/java/me/lucko/luckperms/commands/group/DeleteGroup.java b/common/src/main/java/me/lucko/luckperms/commands/group/DeleteGroup.java index 8679d800..b40383ae 100644 --- a/common/src/main/java/me/lucko/luckperms/commands/group/DeleteGroup.java +++ b/common/src/main/java/me/lucko/luckperms/commands/group/DeleteGroup.java @@ -30,7 +30,6 @@ import me.lucko.luckperms.constants.Message; import me.lucko.luckperms.constants.Permission; import me.lucko.luckperms.data.LogEntry; import me.lucko.luckperms.groups.Group; -import me.lucko.luckperms.utils.ArgumentChecker; import java.util.ArrayList; import java.util.Collections; @@ -56,11 +55,6 @@ public class DeleteGroup extends SingleMainCommand { return CommandResult.INVALID_ARGS; } - if (ArgumentChecker.checkName(groupName)) { - Message.GROUP_INVALID_ENTRY.send(sender); - return CommandResult.INVALID_ARGS; - } - if (!plugin.getDatastore().loadGroup(groupName)) { Message.GROUP_DOES_NOT_EXIST.send(sender); return CommandResult.INVALID_ARGS; diff --git a/common/src/main/java/me/lucko/luckperms/commands/group/GroupMainCommand.java b/common/src/main/java/me/lucko/luckperms/commands/group/GroupMainCommand.java index 6d10ca87..f4170fc4 100644 --- a/common/src/main/java/me/lucko/luckperms/commands/group/GroupMainCommand.java +++ b/common/src/main/java/me/lucko/luckperms/commands/group/GroupMainCommand.java @@ -30,7 +30,6 @@ import me.lucko.luckperms.commands.SubCommand; import me.lucko.luckperms.commands.group.subcommands.*; import me.lucko.luckperms.constants.Message; import me.lucko.luckperms.groups.Group; -import me.lucko.luckperms.utils.ArgumentChecker; import java.util.ArrayList; import java.util.List; @@ -52,17 +51,13 @@ public class GroupMainCommand extends MainCommand { .add(new GroupUnsetTempInherit()) .add(new GroupShowTracks()) .add(new GroupClear()) + .add(new GroupRename()) .build() ); } @Override protected Group getTarget(String target, LuckPermsPlugin plugin, Sender sender) { - if (ArgumentChecker.checkName(target)) { - Message.GROUP_INVALID_ENTRY.send(sender); - return null; - } - if (!plugin.getDatastore().loadGroup(target)) { Message.GROUP_NOT_FOUND.send(sender); return null; diff --git a/common/src/main/java/me/lucko/luckperms/commands/group/subcommands/GroupRename.java b/common/src/main/java/me/lucko/luckperms/commands/group/subcommands/GroupRename.java new file mode 100644 index 00000000..a5b2c53c --- /dev/null +++ b/common/src/main/java/me/lucko/luckperms/commands/group/subcommands/GroupRename.java @@ -0,0 +1,80 @@ +/* + * Copyright (c) 2016 Lucko (Luck) + * + * 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.commands.group.subcommands; + +import me.lucko.luckperms.LuckPermsPlugin; +import me.lucko.luckperms.commands.CommandResult; +import me.lucko.luckperms.commands.Predicate; +import me.lucko.luckperms.commands.Sender; +import me.lucko.luckperms.commands.SubCommand; +import me.lucko.luckperms.constants.Message; +import me.lucko.luckperms.constants.Permission; +import me.lucko.luckperms.data.LogEntry; +import me.lucko.luckperms.groups.Group; +import me.lucko.luckperms.utils.ArgumentChecker; + +import java.util.List; + +public class GroupRename extends SubCommand { + public GroupRename() { + super("rename", "Rename this group", "/%s group rename ", + Permission.TRACK_APPEND, Predicate.not(1)); + } + + @Override + public CommandResult execute(LuckPermsPlugin plugin, Sender sender, Group group, List args, String label) { + String newGroupName = args.get(0).toLowerCase(); + if (ArgumentChecker.checkName(newGroupName)) { + Message.GROUP_INVALID_ENTRY.send(sender); + return CommandResult.INVALID_ARGS; + } + + if (plugin.getDatastore().loadGroup(newGroupName)) { + Message.GROUP_ALREADY_EXISTS.send(sender); + return CommandResult.INVALID_ARGS; + } + + if (!plugin.getDatastore().createAndLoadGroup(newGroupName)) { + Message.CREATE_GROUP_ERROR.send(sender); + return CommandResult.FAILURE; + } + + Group newGroup = plugin.getGroupManager().get(newGroupName); + if (newGroup == null) { + Message.GROUP_LOAD_ERROR.send(sender); + return CommandResult.LOADING_ERROR; + } + + if (!plugin.getDatastore().deleteGroup(group)) { + Message.DELETE_GROUP_ERROR.send(sender); + return CommandResult.FAILURE; + } + + plugin.getGroupManager().copy(group, newGroup); + + Message.RENAME_SUCCESS.send(sender, group.getName(), newGroup.getName()); + LogEntry.build().actor(sender).acted(group).action("rename " + newGroup.getName()).build().submit(plugin, sender); + save(newGroup, sender, plugin); + return CommandResult.SUCCESS; + } +} diff --git a/common/src/main/java/me/lucko/luckperms/commands/track/DeleteTrack.java b/common/src/main/java/me/lucko/luckperms/commands/track/DeleteTrack.java index 803ac4c1..e75acdef 100644 --- a/common/src/main/java/me/lucko/luckperms/commands/track/DeleteTrack.java +++ b/common/src/main/java/me/lucko/luckperms/commands/track/DeleteTrack.java @@ -30,7 +30,6 @@ import me.lucko.luckperms.constants.Message; import me.lucko.luckperms.constants.Permission; import me.lucko.luckperms.data.LogEntry; import me.lucko.luckperms.tracks.Track; -import me.lucko.luckperms.utils.ArgumentChecker; import java.util.ArrayList; import java.util.Collections; @@ -50,11 +49,6 @@ public class DeleteTrack extends SingleMainCommand { } String trackName = args.get(0).toLowerCase(); - if (ArgumentChecker.checkName(trackName)) { - Message.TRACK_INVALID_ENTRY.send(sender); - return CommandResult.INVALID_ARGS; - } - if (!plugin.getDatastore().loadTrack(trackName)) { Message.TRACK_DOES_NOT_EXIST.send(sender); return CommandResult.INVALID_ARGS; diff --git a/common/src/main/java/me/lucko/luckperms/commands/track/TrackMainCommand.java b/common/src/main/java/me/lucko/luckperms/commands/track/TrackMainCommand.java index 8c212dab..881f9d0c 100644 --- a/common/src/main/java/me/lucko/luckperms/commands/track/TrackMainCommand.java +++ b/common/src/main/java/me/lucko/luckperms/commands/track/TrackMainCommand.java @@ -30,7 +30,6 @@ import me.lucko.luckperms.commands.SubCommand; import me.lucko.luckperms.commands.track.subcommands.*; import me.lucko.luckperms.constants.Message; import me.lucko.luckperms.tracks.Track; -import me.lucko.luckperms.utils.ArgumentChecker; import java.util.ArrayList; import java.util.List; @@ -43,17 +42,13 @@ public class TrackMainCommand extends MainCommand { .add(new TrackInsert()) .add(new TrackRemove()) .add(new TrackClear()) + .add(new TrackRename()) .build() ); } @Override protected Track getTarget(String target, LuckPermsPlugin plugin, Sender sender) { - if (ArgumentChecker.checkName(target)) { - Message.TRACK_INVALID_ENTRY.send(sender); - return null; - } - if (!plugin.getDatastore().loadTrack(target)) { Message.TRACK_NOT_FOUND.send(sender); return null; diff --git a/common/src/main/java/me/lucko/luckperms/commands/track/subcommands/TrackRename.java b/common/src/main/java/me/lucko/luckperms/commands/track/subcommands/TrackRename.java new file mode 100644 index 00000000..733acffc --- /dev/null +++ b/common/src/main/java/me/lucko/luckperms/commands/track/subcommands/TrackRename.java @@ -0,0 +1,80 @@ +/* + * Copyright (c) 2016 Lucko (Luck) + * + * 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.commands.track.subcommands; + +import me.lucko.luckperms.LuckPermsPlugin; +import me.lucko.luckperms.commands.CommandResult; +import me.lucko.luckperms.commands.Predicate; +import me.lucko.luckperms.commands.Sender; +import me.lucko.luckperms.commands.SubCommand; +import me.lucko.luckperms.constants.Message; +import me.lucko.luckperms.constants.Permission; +import me.lucko.luckperms.data.LogEntry; +import me.lucko.luckperms.tracks.Track; +import me.lucko.luckperms.utils.ArgumentChecker; + +import java.util.List; + +public class TrackRename extends SubCommand { + public TrackRename() { + super("rename", "Rename this track", "/%s track rename ", + Permission.TRACK_APPEND, Predicate.not(1)); + } + + @Override + public CommandResult execute(LuckPermsPlugin plugin, Sender sender, Track track, List args, String label) { + String newTrackName = args.get(0).toLowerCase(); + if (ArgumentChecker.checkName(newTrackName)) { + Message.TRACK_INVALID_ENTRY.send(sender); + return CommandResult.INVALID_ARGS; + } + + if (plugin.getDatastore().loadTrack(newTrackName)) { + Message.TRACK_ALREADY_EXISTS.send(sender); + return CommandResult.INVALID_ARGS; + } + + if (!plugin.getDatastore().createAndLoadTrack(newTrackName)) { + Message.CREATE_TRACK_ERROR.send(sender); + return CommandResult.FAILURE; + } + + Track newTrack = plugin.getTrackManager().get(newTrackName); + if (newTrack == null) { + Message.TRACK_LOAD_ERROR.send(sender); + return CommandResult.LOADING_ERROR; + } + + if (!plugin.getDatastore().deleteTrack(track)) { + Message.DELETE_TRACK_ERROR.send(sender); + return CommandResult.FAILURE; + } + + plugin.getTrackManager().copy(track, newTrack); + + Message.RENAME_SUCCESS.send(sender, track.getName(), newTrack.getName()); + LogEntry.build().actor(sender).acted(track).action("rename " + newTrack.getName()).build().submit(plugin, sender); + save(newTrack, sender, plugin); + return CommandResult.SUCCESS; + } +} diff --git a/common/src/main/java/me/lucko/luckperms/constants/Message.java b/common/src/main/java/me/lucko/luckperms/constants/Message.java index 3d3c0a9f..b7f7d4b6 100644 --- a/common/src/main/java/me/lucko/luckperms/constants/Message.java +++ b/common/src/main/java/me/lucko/luckperms/constants/Message.java @@ -94,6 +94,7 @@ public enum Message { */ CREATE_SUCCESS("&b%s&a was successfully created.", true), DELETE_SUCCESS("&b%s&a was successfully deleted.", true), + RENAME_SUCCESS("&b%s&a was successfully renamed to &b%s&a.", true), USER_ALREADY_MEMBER_OF("%s is already a member of '%s'.", true), USER_NOT_MEMBER_OF("%s is not a member of '%s'.", true), diff --git a/common/src/main/java/me/lucko/luckperms/constants/Permission.java b/common/src/main/java/me/lucko/luckperms/constants/Permission.java index 491ef988..ac816d70 100644 --- a/common/src/main/java/me/lucko/luckperms/constants/Permission.java +++ b/common/src/main/java/me/lucko/luckperms/constants/Permission.java @@ -76,12 +76,14 @@ public enum Permission { GROUP_UNSET_TEMP_INHERIT("unsettempinherit", "group"), GROUP_SHOWTRACKS("showtracks", "group"), GROUP_CLEAR("clear", "group"), + GROUP_RENAME("rename", "group"), TRACK_INFO("info", "track"), TRACK_APPEND("append", "track"), TRACK_INSERT("insert", "track"), TRACK_REMOVE("remove", "track"), TRACK_CLEAR("clear", "track"), + TRACK_RENAME("rename", "track"), LOG_RECENT("recent", "log"), LOG_USER_HISTORY("userhistory", "log"), diff --git a/common/src/main/java/me/lucko/luckperms/groups/GroupManager.java b/common/src/main/java/me/lucko/luckperms/groups/GroupManager.java index 811fb01d..2f374ebf 100644 --- a/common/src/main/java/me/lucko/luckperms/groups/GroupManager.java +++ b/common/src/main/java/me/lucko/luckperms/groups/GroupManager.java @@ -31,7 +31,7 @@ public class GroupManager extends AbstractManager { private final LuckPermsPlugin plugin; @Override - protected void copy(Group from, Group to) { + public void copy(Group from, Group to) { to.setNodes(from.getNodes()); } diff --git a/common/src/main/java/me/lucko/luckperms/tracks/TrackManager.java b/common/src/main/java/me/lucko/luckperms/tracks/TrackManager.java index 5c118c57..35b3fe3c 100644 --- a/common/src/main/java/me/lucko/luckperms/tracks/TrackManager.java +++ b/common/src/main/java/me/lucko/luckperms/tracks/TrackManager.java @@ -41,7 +41,7 @@ public class TrackManager extends AbstractManager { } @Override - protected void copy(Track from, Track to) { + public void copy(Track from, Track to) { to.setGroups(from.getGroups()); } diff --git a/common/src/main/java/me/lucko/luckperms/users/UserManager.java b/common/src/main/java/me/lucko/luckperms/users/UserManager.java index 57d6ebda..36cd8a1c 100644 --- a/common/src/main/java/me/lucko/luckperms/users/UserManager.java +++ b/common/src/main/java/me/lucko/luckperms/users/UserManager.java @@ -52,7 +52,7 @@ public abstract class UserManager extends AbstractManager { } @Override - protected void copy(User from, User to) { + public void copy(User from, User to) { to.setNodes(from.getNodes()); to.setPrimaryGroup(from.getPrimaryGroup()); to.refreshPermissions(); diff --git a/common/src/main/java/me/lucko/luckperms/utils/AbstractManager.java b/common/src/main/java/me/lucko/luckperms/utils/AbstractManager.java index 8cd335ef..e0507a3c 100644 --- a/common/src/main/java/me/lucko/luckperms/utils/AbstractManager.java +++ b/common/src/main/java/me/lucko/luckperms/utils/AbstractManager.java @@ -67,7 +67,7 @@ public abstract class AbstractManager> { } } - protected abstract void copy(T from, T to); + public abstract void copy(T from, T to); /** * Check to see if a object is loaded or not