9
0
mirror of https://github.com/WiIIiam278/HuskSync.git synced 2025-12-28 11:09:11 +00:00

Shrink built jar file size, work on MySQLPlayerDataBridge migrator

This commit is contained in:
William
2022-07-09 00:29:39 +01:00
parent f650db4438
commit 96c6a878c4
16 changed files with 436 additions and 62 deletions

View File

@@ -6,11 +6,13 @@ import net.william278.husksync.data.DataAdapter;
import net.william278.husksync.editor.DataEditor;
import net.william278.husksync.database.Database;
import net.william278.husksync.event.EventCannon;
import net.william278.husksync.migrator.Migrator;
import net.william278.husksync.player.OnlineUser;
import net.william278.husksync.redis.RedisManager;
import net.william278.husksync.util.Logger;
import org.jetbrains.annotations.NotNull;
import java.util.List;
import java.util.Optional;
import java.util.Set;
import java.util.UUID;
@@ -32,6 +34,8 @@ public interface HuskSync {
@NotNull EventCannon getEventCannon();
@NotNull List<Migrator> getAvailableMigrators();
@NotNull Settings getSettings();
@NotNull Locales getLocales();

View File

@@ -82,7 +82,7 @@ public class EnderChestCommand extends CommandBase implements TabCompletable {
@Override
public List<String> onTabComplete(@NotNull OnlineUser player, @NotNull String[] args) {
return plugin.getOnlineUsers().stream().map(user -> user.username)
.filter(argument -> argument.startsWith(args.length >= 1 ? args[1] : ""))
.filter(argument -> argument.startsWith(args.length >= 1 ? args[0] : ""))
.sorted().collect(Collectors.toList());
}

View File

@@ -3,12 +3,14 @@ package net.william278.husksync.command;
import de.themoep.minedown.MineDown;
import net.william278.husksync.HuskSync;
import net.william278.husksync.config.Locales;
import net.william278.husksync.migrator.Migrator;
import net.william278.husksync.player.OnlineUser;
import net.william278.husksync.util.UpdateChecker;
import org.jetbrains.annotations.NotNull;
import java.util.Arrays;
import java.util.List;
import java.util.Optional;
import java.util.logging.Level;
import java.util.stream.Collectors;
@@ -50,11 +52,13 @@ public class HuskSyncCommand extends CommandBase implements TabCompletable, Cons
return;
}
plugin.reload();
player.sendMessage(new MineDown("[HuskSync](#00fb9a bold) [| Reloaded config & message files.](#00fb9a)"));
plugin.getLocales().getLocale("reload_complete").ifPresent(player::sendMessage);
}
case "migrate" ->
plugin.getLocales().getLocale("error_console_command_only").ifPresent(player::sendMessage);
default -> plugin.getLocales().getLocale("error_invalid_syntax",
"/husksync <update/info/reload>")
.ifPresent(player::sendMessage);
.ifPresent(player::sendMessage);
}
}
@@ -74,13 +78,46 @@ public class HuskSyncCommand extends CommandBase implements TabCompletable, Cons
plugin.getLoggingAdapter().log(Level.INFO, "Reloaded config & message files.");
}
case "migrate" -> {
//todo - MPDB migrator
if (args.length < 2) {
plugin.getLoggingAdapter().log(Level.INFO,
"Please choose a migrator, then run \"husksync migrate <migrator>\"");
logMigratorsList();
return;
}
final Optional<Migrator> selectedMigrator = plugin.getAvailableMigrators().stream().filter(availableMigrator ->
availableMigrator.getIdentifier().equalsIgnoreCase(args[1])).findFirst();
selectedMigrator.ifPresentOrElse(migrator -> {
if (args.length < 3) {
plugin.getLoggingAdapter().log(Level.INFO,
"Invalid syntax. Console usage: \"husksync migrate " + args[1] + "<start/set>");
return;
}
switch (args[2]) {
case "start" -> migrator.start();
case "set" -> migrator.handleConfigurationCommand(Arrays.copyOfRange(args, 3, args.length));
default -> plugin.getLoggingAdapter().log(Level.INFO,
"Invalid syntax. Console usage: \"husksync migrate " + args[1] + "<start/set>");
}
}, () -> {
plugin.getLoggingAdapter().log(Level.INFO,
"Please specify a valid migrator.\n" +
"If a migrator is not available, please verify that you meet the prerequisites to use it.");
logMigratorsList();
});
}
default -> plugin.getLoggingAdapter().log(Level.INFO,
"Invalid syntax. Console usage: \"husksync <update/info/reload/migrate>\"");
}
}
private void logMigratorsList() {
plugin.getLoggingAdapter().log(Level.INFO,
"List of available migrators:\nMigrator ID / Migrator Name:\n" +
plugin.getAvailableMigrators().stream()
.map(migrator -> migrator.getIdentifier() + " - " + migrator.getName())
.collect(Collectors.joining("\n")));
}
@Override
public List<String> onTabComplete(@NotNull OnlineUser player, @NotNull String[] args) {
return Arrays.stream(COMMAND_ARGUMENTS)

View File

@@ -81,7 +81,7 @@ public class InventoryCommand extends CommandBase implements TabCompletable {
@Override
public List<String> onTabComplete(@NotNull OnlineUser player, @NotNull String[] args) {
return plugin.getOnlineUsers().stream().map(user -> user.username)
.filter(argument -> argument.startsWith(args.length >= 1 ? args[1] : ""))
.filter(argument -> argument.startsWith(args.length >= 1 ? args[0] : ""))
.sorted().collect(Collectors.toList());
}
}

View File

@@ -58,10 +58,18 @@ public enum DataSaveCause {
* @since 2.0
*/
API,
MPDB_IMPORT,
LEGACY_IMPORT,
MANUAL_IMPORT,
/**
* Indicates data was saved from being imported from MySQLPlayerDataBridge
*
* @since 2.0
*/
MPDB_MIGRATION,
/**
* Indicates data was saved from being imported from a legacy version (v1.x)
*
* @since 2.0
*/
LEGACY_MIGRATION,
/**
* Indicates data was saved by an unknown cause.
* </p>

View File

@@ -13,6 +13,7 @@ import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.concurrent.CompletableFuture;
import java.util.stream.Collectors;
/**
* Provides methods for displaying and editing user data
@@ -121,16 +122,18 @@ public class DataEditor {
private @NotNull String generateAdvancementPreview(@NotNull List<AdvancementData> advancementData) {
final StringJoiner joiner = new StringJoiner("\n");
final List<AdvancementData> advancementsToPreview = advancementData.stream().filter(dataItem ->
!dataItem.key.startsWith("minecraft:recipes/")).toList();
final int PREVIEW_SIZE = 8;
for (int i = 0; i < advancementData.size(); i++) {
joiner.add(advancementData.get(i).key);
for (int i = 0; i < advancementsToPreview.size(); i++) {
joiner.add(advancementsToPreview.get(i).key);
if (i >= PREVIEW_SIZE) {
break;
}
}
final int remainingAdvancements = advancementData.size() - PREVIEW_SIZE;
final int remainingAdvancements = advancementsToPreview.size() - PREVIEW_SIZE;
if (remainingAdvancements > 0) {
joiner.add(locales.getRawLocale("data_manager_advancement_preview_remaining",
joiner.add(locales.getRawLocale("data_manager_advancements_preview_remaining",
Integer.toString(remainingAdvancements)).orElse("+" + remainingAdvancements + ""));
}
return joiner.toString();

View File

@@ -0,0 +1,43 @@
package net.william278.husksync.migrator;
import net.william278.husksync.HuskSync;
import org.jetbrains.annotations.NotNull;
import java.util.concurrent.CompletableFuture;
//todo: implement this
public class LegacyMigrator extends Migrator {
public LegacyMigrator(@NotNull HuskSync plugin) {
super(plugin);
}
@Override
public CompletableFuture<Boolean> start() {
return null;
}
@Override
public void handleConfigurationCommand(@NotNull String[] args) {
}
@NotNull
@Override
public String getIdentifier() {
return "legacy";
}
@NotNull
@Override
public String getName() {
return "HuskSync v1.x --> v2.x";
}
@NotNull
@Override
public String getHelpMenu() {
return null;
}
}

View File

@@ -0,0 +1,38 @@
package net.william278.husksync.migrator;
import net.william278.husksync.HuskSync;
import org.jetbrains.annotations.NotNull;
import java.util.concurrent.CompletableFuture;
public abstract class Migrator {
protected final HuskSync plugin;
protected Migrator(@NotNull HuskSync plugin) {
this.plugin = plugin;
}
/**
* Start the migrator
*
* @return A future that will be completed when the migrator is done
*/
public abstract CompletableFuture<Boolean> start();
/**
* Handle a command that sets migrator configuration parameters
* @param args The command arguments
*/
public abstract void handleConfigurationCommand(@NotNull String[] args);
@NotNull
public abstract String getIdentifier();
@NotNull
public abstract String getName();
@NotNull
public abstract String getHelpMenu();
}