|
25 | 25 | import net.william278.husksync.redis.RedisKeyType;
|
26 | 26 | import net.william278.husksync.redis.RedisManager;
|
27 | 27 | import net.william278.husksync.user.CommandUser;
|
| 28 | +import net.william278.husksync.user.OnlineUser; |
28 | 29 | import net.william278.husksync.user.User;
|
29 | 30 | import net.william278.husksync.util.UserDataDumper;
|
30 | 31 | import net.william278.husksync.util.DataSnapshotList;
|
@@ -52,6 +53,7 @@ public void provide(@NotNull BaseCommand<?> command) {
|
52 | 53 | command.addSubCommand("view", needsOp("view"), view());
|
53 | 54 | command.addSubCommand("list", needsOp("list"), list());
|
54 | 55 | command.addSubCommand("delete", needsOp("delete"), delete());
|
| 56 | + command.addSubCommand("save", needsOp("save"), save()); |
55 | 57 | command.addSubCommand("restore", needsOp("restore"), restore());
|
56 | 58 | command.addSubCommand("pin", needsOp("pin"), pin());
|
57 | 59 | command.addSubCommand("dump", needsOp("dump"), dump());
|
@@ -102,6 +104,13 @@ private void listSnapshots(@NotNull CommandUser executor, @NotNull User user, in
|
102 | 104 | DataSnapshotList.create(dataList, user, plugin).displayPage(executor, page);
|
103 | 105 | }
|
104 | 106 |
|
| 107 | + // Create and save a snapshot of a user's current data |
| 108 | + private void createAndSaveSnapshot(@NotNull CommandUser executor, @NotNull OnlineUser onlineUser) { |
| 109 | + plugin.getDataSyncer().saveCurrentUserData(onlineUser, DataSnapshot.SaveCause.SAVE_COMMAND); |
| 110 | + plugin.getLocales().getLocale("data_saved", onlineUser.getName()) |
| 111 | + .ifPresent(executor::sendMessage); |
| 112 | + } |
| 113 | + |
105 | 114 | // Delete a snapshot
|
106 | 115 | private void deleteSnapshot(@NotNull CommandUser executor, @NotNull User user, @NotNull UUID version) {
|
107 | 116 | if (!plugin.getDatabase().deleteSnapshot(user, version)) {
|
@@ -234,6 +243,14 @@ private CommandProvider delete() {
|
234 | 243 | }, user("username"), uuid("version"));
|
235 | 244 | }
|
236 | 245 |
|
| 246 | + @NotNull |
| 247 | + private CommandProvider save() { |
| 248 | + return (sub) -> sub.addSyntax((ctx) -> { |
| 249 | + final OnlineUser user = ctx.getArgument("username", OnlineUser.class); |
| 250 | + createAndSaveSnapshot(user(sub, ctx), user); |
| 251 | + }, onlineUser("username")); |
| 252 | + } |
| 253 | + |
237 | 254 | @NotNull
|
238 | 255 | private CommandProvider restore() {
|
239 | 256 | return (sub) -> sub.addSyntax((ctx) -> {
|
|
0 commit comments