mirror of
https://github.com/plan-player-analytics/Plan.git
synced 2025-03-09 21:29:12 +01:00
Refactor duplicate code: command confirmation
This commit is contained in:
parent
e0d80cb3b4
commit
acf9d92b1d
@ -238,7 +238,7 @@ public class PlanCommand {
|
|||||||
.optionalArgument(locale.getString(HelpLang.ARG_USERNAME), locale.getString(HelpLang.DESC_ARG_USERNAME))
|
.optionalArgument(locale.getString(HelpLang.ARG_USERNAME), locale.getString(HelpLang.DESC_ARG_USERNAME))
|
||||||
.description(locale.getString(HelpLang.UNREGISTER))
|
.description(locale.getString(HelpLang.UNREGISTER))
|
||||||
.inDepthDescription(locale.getString(DeepHelpLang.UNREGISTER))
|
.inDepthDescription(locale.getString(DeepHelpLang.UNREGISTER))
|
||||||
.onCommand((sender, arguments) -> registrationCommands.onUnregister(commandName, sender, arguments))
|
.onCommand(registrationCommands::onUnregister)
|
||||||
.onTabComplete(this::webUserNames)
|
.onTabComplete(this::webUserNames)
|
||||||
.build();
|
.build();
|
||||||
}
|
}
|
||||||
@ -348,7 +348,7 @@ public class PlanCommand {
|
|||||||
.optionalArgument("--remove_offline", "Remove offline players if given")
|
.optionalArgument("--remove_offline", "Remove offline players if given")
|
||||||
.description(locale.getString(HelpLang.ONLINE_UUID_MIGRATION))
|
.description(locale.getString(HelpLang.ONLINE_UUID_MIGRATION))
|
||||||
.inDepthDescription("Moves and combines offline uuid data to online uuids where possible. Leaves offline-only players to database.")
|
.inDepthDescription("Moves and combines offline uuid data to online uuids where possible. Leaves offline-only players to database.")
|
||||||
.onCommand((sender, arguments) -> databaseCommands.onOnlineConversion(commandName, sender, arguments))
|
.onCommand(databaseCommands::onOnlineConversion)
|
||||||
.build();
|
.build();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -358,7 +358,7 @@ public class PlanCommand {
|
|||||||
.requirePermission(Permissions.DATA_CLEAR)
|
.requirePermission(Permissions.DATA_CLEAR)
|
||||||
.requiredArgument(locale.getString(HelpLang.ARG_SERVER), locale.getString(HelpLang.DESC_ARG_SERVER_IDENTIFIER))
|
.requiredArgument(locale.getString(HelpLang.ARG_SERVER), locale.getString(HelpLang.DESC_ARG_SERVER_IDENTIFIER))
|
||||||
.description(locale.getString(HelpLang.JOIN_ADDRESS_REMOVAL))
|
.description(locale.getString(HelpLang.JOIN_ADDRESS_REMOVAL))
|
||||||
.onCommand((sender, arguments) -> databaseCommands.onFixFabricJoinAddresses(commandName, sender, arguments))
|
.onCommand(databaseCommands::onFixFabricJoinAddresses)
|
||||||
.onTabComplete(this::serverNames)
|
.onTabComplete(this::serverNames)
|
||||||
.build();
|
.build();
|
||||||
}
|
}
|
||||||
@ -384,7 +384,7 @@ public class PlanCommand {
|
|||||||
.optionalArgument(DB_ARG_OPTIONS, locale.getString(HelpLang.DESC_ARG_DB_RESTORE))
|
.optionalArgument(DB_ARG_OPTIONS, locale.getString(HelpLang.DESC_ARG_DB_RESTORE))
|
||||||
.description(locale.getString(HelpLang.DB_RESTORE))
|
.description(locale.getString(HelpLang.DB_RESTORE))
|
||||||
.inDepthDescription(locale.getString(DeepHelpLang.DB_RESTORE))
|
.inDepthDescription(locale.getString(DeepHelpLang.DB_RESTORE))
|
||||||
.onCommand((sender, arguments) -> databaseCommands.onRestore(commandName, sender, arguments))
|
.onCommand(databaseCommands::onRestore)
|
||||||
.onTabComplete(this::getBackupFilenames)
|
.onTabComplete(this::getBackupFilenames)
|
||||||
.build();
|
.build();
|
||||||
}
|
}
|
||||||
@ -409,7 +409,7 @@ public class PlanCommand {
|
|||||||
.requiredArgument(DB_ARG_OPTIONS, locale.getString(HelpLang.DESC_ARG_DB_MOVE_TO))
|
.requiredArgument(DB_ARG_OPTIONS, locale.getString(HelpLang.DESC_ARG_DB_MOVE_TO))
|
||||||
.description(locale.getString(HelpLang.DB_MOVE))
|
.description(locale.getString(HelpLang.DB_MOVE))
|
||||||
.inDepthDescription(locale.getString(DeepHelpLang.DB_MOVE))
|
.inDepthDescription(locale.getString(DeepHelpLang.DB_MOVE))
|
||||||
.onCommand((sender, arguments) -> databaseCommands.onMove(commandName, sender, arguments))
|
.onCommand(databaseCommands::onMove)
|
||||||
.onTabComplete((sender, arguments) -> DBType.names())
|
.onTabComplete((sender, arguments) -> DBType.names())
|
||||||
.build();
|
.build();
|
||||||
}
|
}
|
||||||
@ -434,7 +434,7 @@ public class PlanCommand {
|
|||||||
.requiredArgument(DB_ARG_OPTIONS, locale.getString(HelpLang.DESC_ARG_DB_REMOVE))
|
.requiredArgument(DB_ARG_OPTIONS, locale.getString(HelpLang.DESC_ARG_DB_REMOVE))
|
||||||
.description(locale.getString(HelpLang.DB_CLEAR))
|
.description(locale.getString(HelpLang.DB_CLEAR))
|
||||||
.inDepthDescription(locale.getString(DeepHelpLang.DB_CLEAR))
|
.inDepthDescription(locale.getString(DeepHelpLang.DB_CLEAR))
|
||||||
.onCommand((sender, arguments) -> databaseCommands.onClear(commandName, sender, arguments))
|
.onCommand(databaseCommands::onClear)
|
||||||
.onTabComplete((sender, arguments) ->
|
.onTabComplete((sender, arguments) ->
|
||||||
arguments.isEmpty() ? DBType.names() : Collections.emptyList()
|
arguments.isEmpty() ? DBType.names() : Collections.emptyList()
|
||||||
).build();
|
).build();
|
||||||
@ -447,7 +447,7 @@ public class PlanCommand {
|
|||||||
.requiredArgument(locale.getString(HelpLang.ARG_NAME_UUID), locale.getString(HelpLang.DESC_ARG_PLAYER_IDENTIFIER_REMOVE))
|
.requiredArgument(locale.getString(HelpLang.ARG_NAME_UUID), locale.getString(HelpLang.DESC_ARG_PLAYER_IDENTIFIER_REMOVE))
|
||||||
.description(locale.getString(HelpLang.DB_REMOVE))
|
.description(locale.getString(HelpLang.DB_REMOVE))
|
||||||
.inDepthDescription(locale.getString(DeepHelpLang.DB_REMOVE))
|
.inDepthDescription(locale.getString(DeepHelpLang.DB_REMOVE))
|
||||||
.onCommand((sender, arguments) -> databaseCommands.onRemove(commandName, sender, arguments))
|
.onCommand(databaseCommands::onRemove)
|
||||||
.onTabComplete(this::playerNames)
|
.onTabComplete(this::playerNames)
|
||||||
.build();
|
.build();
|
||||||
}
|
}
|
||||||
|
@ -17,12 +17,15 @@
|
|||||||
package com.djrapitops.plan.commands.subcommands;
|
package com.djrapitops.plan.commands.subcommands;
|
||||||
|
|
||||||
import com.djrapitops.plan.commands.use.CMDSender;
|
import com.djrapitops.plan.commands.use.CMDSender;
|
||||||
|
import com.djrapitops.plan.commands.use.ColorScheme;
|
||||||
|
import com.djrapitops.plan.commands.use.MessageBuilder;
|
||||||
import com.djrapitops.plan.settings.locale.Locale;
|
import com.djrapitops.plan.settings.locale.Locale;
|
||||||
import com.djrapitops.plan.settings.locale.lang.CommandLang;
|
import com.djrapitops.plan.settings.locale.lang.CommandLang;
|
||||||
import com.github.benmanes.caffeine.cache.Cache;
|
import com.github.benmanes.caffeine.cache.Cache;
|
||||||
import com.github.benmanes.caffeine.cache.Caffeine;
|
import com.github.benmanes.caffeine.cache.Caffeine;
|
||||||
|
|
||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
|
import javax.inject.Named;
|
||||||
import javax.inject.Singleton;
|
import javax.inject.Singleton;
|
||||||
import java.util.concurrent.TimeUnit;
|
import java.util.concurrent.TimeUnit;
|
||||||
import java.util.function.Consumer;
|
import java.util.function.Consumer;
|
||||||
@ -31,20 +34,57 @@ import java.util.function.Consumer;
|
|||||||
public class Confirmation {
|
public class Confirmation {
|
||||||
|
|
||||||
private final Cache<CMDSender, Consumer<Boolean>> awaiting;
|
private final Cache<CMDSender, Consumer<Boolean>> awaiting;
|
||||||
|
|
||||||
|
private final String mainCommand;
|
||||||
|
private final ColorScheme colors;
|
||||||
private final Locale locale;
|
private final Locale locale;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
public Confirmation(
|
public Confirmation(
|
||||||
|
@Named("mainCommandName") String mainCommand,
|
||||||
|
ColorScheme colors,
|
||||||
Locale locale
|
Locale locale
|
||||||
) {
|
) {
|
||||||
|
this.mainCommand = mainCommand;
|
||||||
|
this.colors = colors;
|
||||||
this.locale = locale;
|
this.locale = locale;
|
||||||
awaiting = Caffeine.newBuilder()
|
awaiting = Caffeine.newBuilder()
|
||||||
.expireAfterWrite(5, TimeUnit.MINUTES)
|
.expireAfterWrite(5, TimeUnit.MINUTES)
|
||||||
.build();
|
.build();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void confirm(CMDSender sender, Consumer<Boolean> confirmation) {
|
private void sendConfirmOptionMessages(CMDSender sender, String prompt) {
|
||||||
|
MessageBuilder message = sender.buildMessage()
|
||||||
|
.addPart(colors.getMainColor() + prompt).newLine();
|
||||||
|
sendConfirmOptionMessages(sender, message);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void sendConfirmOptionMessages(CMDSender sender, MessageBuilder message) {
|
||||||
|
if (sender.supportsChatEvents()) {
|
||||||
|
message
|
||||||
|
.addPart(colors.getTertiaryColor() + locale.getString(CommandLang.CONFIRM))
|
||||||
|
.addPart("§2§l[\u2714]").command("/" + mainCommand + " accept").hover(locale.getString(CommandLang.CONFIRM_ACCEPT))
|
||||||
|
.addPart(" ")
|
||||||
|
.addPart("§4§l[\u2718]").command("/" + mainCommand + " cancel").hover(locale.getString(CommandLang.CONFIRM_DENY))
|
||||||
|
.send();
|
||||||
|
} else {
|
||||||
|
message
|
||||||
|
.addPart(colors.getTertiaryColor() + locale.getString(CommandLang.CONFIRM)).addPart("§a/" + mainCommand + " accept")
|
||||||
|
.addPart(" ")
|
||||||
|
.addPart("§c/" + mainCommand + " cancel")
|
||||||
|
.send();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void confirm(CMDSender sender, String prompt, Consumer<Boolean> confirmation) {
|
||||||
if (awaiting.getIfPresent(sender) != null) onCancel(sender);
|
if (awaiting.getIfPresent(sender) != null) onCancel(sender);
|
||||||
|
sendConfirmOptionMessages(sender, prompt);
|
||||||
|
awaiting.put(sender, confirmation);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void confirm(CMDSender sender, MessageBuilder message, Consumer<Boolean> confirmation) {
|
||||||
|
if (awaiting.getIfPresent(sender) != null) onCancel(sender);
|
||||||
|
sendConfirmOptionMessages(sender, message);
|
||||||
awaiting.put(sender, confirmation);
|
awaiting.put(sender, confirmation);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -62,6 +62,8 @@ import java.util.stream.Collectors;
|
|||||||
@Singleton
|
@Singleton
|
||||||
public class DatabaseCommands {
|
public class DatabaseCommands {
|
||||||
|
|
||||||
|
private static final String SUPPORTED_DB_OPTIONS = "<MySQL/SQLite>";
|
||||||
|
|
||||||
private final Locale locale;
|
private final Locale locale;
|
||||||
private final Confirmation confirmation;
|
private final Confirmation confirmation;
|
||||||
private final ColorScheme colors;
|
private final ColorScheme colors;
|
||||||
@ -151,7 +153,7 @@ public class DatabaseCommands {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void onRestore(String mainCommand, CMDSender sender, @Untrusted Arguments arguments) {
|
public void onRestore(CMDSender sender, @Untrusted Arguments arguments) {
|
||||||
@Untrusted String backupDbName = arguments.get(0)
|
@Untrusted String backupDbName = arguments.get(0)
|
||||||
.orElseThrow(() -> new IllegalArgumentException(locale.getString(CommandLang.FAIL_REQ_ARGS, 1, "<" + locale.getString(HelpLang.ARG_BACKUP_FILE) + ">")));
|
.orElseThrow(() -> new IllegalArgumentException(locale.getString(CommandLang.FAIL_REQ_ARGS, 1, "<" + locale.getString(HelpLang.ARG_BACKUP_FILE) + ">")));
|
||||||
|
|
||||||
@ -178,24 +180,11 @@ public class DatabaseCommands {
|
|||||||
|
|
||||||
if (toDB.getState() != Database.State.OPEN) toDB.init();
|
if (toDB.getState() != Database.State.OPEN) toDB.init();
|
||||||
|
|
||||||
if (sender.supportsChatEvents()) {
|
String prompt = locale.getString(CommandLang.CONFIRM_OVERWRITE_DB,
|
||||||
sender.buildMessage()
|
toDB.getType().getName(),
|
||||||
.addPart(colors.getMainColor() + locale.getString(CommandLang.CONFIRM_OVERWRITE_DB, toDB.getType().getName(), backupDBFile.toPath().toString())).newLine()
|
backupDBFile.toPath().toString());
|
||||||
.addPart(colors.getTertiaryColor() + locale.getString(CommandLang.CONFIRM))
|
|
||||||
.addPart("§2§l[\u2714]").command("/" + mainCommand + " accept").hover(locale.getString(CommandLang.CONFIRM_ACCEPT))
|
|
||||||
.addPart(" ")
|
|
||||||
.addPart("§4§l[\u2718]").command("/" + mainCommand + " cancel").hover(locale.getString(CommandLang.CONFIRM_DENY))
|
|
||||||
.send();
|
|
||||||
} else {
|
|
||||||
sender.buildMessage()
|
|
||||||
.addPart(colors.getMainColor() + locale.getString(CommandLang.CONFIRM_OVERWRITE_DB, toDB.getType().getName(), backupDBFile.toPath().toString())).newLine()
|
|
||||||
.addPart(colors.getTertiaryColor() + locale.getString(CommandLang.CONFIRM)).addPart("§a/" + mainCommand + " accept")
|
|
||||||
.addPart(" ")
|
|
||||||
.addPart("§c/" + mainCommand + " cancel")
|
|
||||||
.send();
|
|
||||||
}
|
|
||||||
|
|
||||||
confirmation.confirm(sender, choice -> {
|
confirmation.confirm(sender, prompt, choice -> {
|
||||||
if (Boolean.TRUE.equals(choice)) {
|
if (Boolean.TRUE.equals(choice)) {
|
||||||
performRestore(sender, backupDBFile, toDB);
|
performRestore(sender, backupDBFile, toDB);
|
||||||
} else {
|
} else {
|
||||||
@ -220,35 +209,22 @@ public class DatabaseCommands {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void onMove(String mainCommand, CMDSender sender, @Untrusted Arguments arguments) {
|
public void onMove(CMDSender sender, @Untrusted Arguments arguments) {
|
||||||
DBType fromDB = arguments.get(0).flatMap(DBType::getForName)
|
DBType fromDB = arguments.get(0).flatMap(DBType::getForName)
|
||||||
.orElseThrow(() -> new IllegalArgumentException(locale.getString(CommandLang.FAIL_INCORRECT_DB, arguments.get(0).orElse("<MySQL/SQLite>"))));
|
.orElseThrow(() -> new IllegalArgumentException(locale.getString(CommandLang.FAIL_INCORRECT_DB, arguments.get(0).orElse(SUPPORTED_DB_OPTIONS))));
|
||||||
|
|
||||||
DBType toDB = arguments.get(1).flatMap(DBType::getForName)
|
DBType toDB = arguments.get(1).flatMap(DBType::getForName)
|
||||||
.orElseThrow(() -> new IllegalArgumentException(locale.getString(CommandLang.FAIL_INCORRECT_DB, arguments.get(0).orElse("<MySQL/SQLite>"))));
|
.orElseThrow(() -> new IllegalArgumentException(locale.getString(CommandLang.FAIL_INCORRECT_DB, arguments.get(0).orElse(SUPPORTED_DB_OPTIONS))));
|
||||||
|
|
||||||
if (fromDB == toDB) {
|
if (fromDB == toDB) {
|
||||||
throw new IllegalArgumentException(locale.getString(CommandLang.FAIL_SAME_DB));
|
throw new IllegalArgumentException(locale.getString(CommandLang.FAIL_SAME_DB));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (sender.supportsChatEvents()) {
|
String prompt = locale.getString(CommandLang.CONFIRM_OVERWRITE_DB,
|
||||||
sender.buildMessage()
|
toDB.getName(),
|
||||||
.addPart(colors.getMainColor() + locale.getString(CommandLang.CONFIRM_OVERWRITE_DB, toDB.getName(), fromDB.getName())).newLine()
|
fromDB.getName());
|
||||||
.addPart(colors.getTertiaryColor() + locale.getString(CommandLang.CONFIRM))
|
|
||||||
.addPart("§2§l[\u2714]").command("/" + mainCommand + " accept").hover(locale.getString(CommandLang.CONFIRM_ACCEPT))
|
|
||||||
.addPart(" ")
|
|
||||||
.addPart("§4§l[\u2718]").command("/" + mainCommand + " cancel").hover(locale.getString(CommandLang.CONFIRM_DENY))
|
|
||||||
.send();
|
|
||||||
} else {
|
|
||||||
sender.buildMessage()
|
|
||||||
.addPart(colors.getMainColor() + locale.getString(CommandLang.CONFIRM_OVERWRITE_DB, toDB.getName(), fromDB.getName())).newLine()
|
|
||||||
.addPart(colors.getTertiaryColor() + locale.getString(CommandLang.CONFIRM)).addPart("§a/" + mainCommand + " accept")
|
|
||||||
.addPart(" ")
|
|
||||||
.addPart("§c/" + mainCommand + " cancel")
|
|
||||||
.send();
|
|
||||||
}
|
|
||||||
|
|
||||||
confirmation.confirm(sender, choice -> {
|
confirmation.confirm(sender, prompt, choice -> {
|
||||||
if (Boolean.TRUE.equals(choice)) {
|
if (Boolean.TRUE.equals(choice)) {
|
||||||
performMove(sender, fromDB, toDB);
|
performMove(sender, fromDB, toDB);
|
||||||
} else {
|
} else {
|
||||||
@ -283,28 +259,13 @@ public class DatabaseCommands {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public void onClear(String mainCommand, CMDSender sender, @Untrusted Arguments arguments) {
|
public void onClear(CMDSender sender, @Untrusted Arguments arguments) {
|
||||||
DBType fromDB = arguments.get(0).flatMap(DBType::getForName)
|
DBType fromDB = arguments.get(0).flatMap(DBType::getForName)
|
||||||
.orElseThrow(() -> new IllegalArgumentException(locale.getString(CommandLang.FAIL_INCORRECT_DB, arguments.get(0).orElse("<MySQL/SQLite>"))));
|
.orElseThrow(() -> new IllegalArgumentException(locale.getString(CommandLang.FAIL_INCORRECT_DB, arguments.get(0).orElse(SUPPORTED_DB_OPTIONS))));
|
||||||
|
|
||||||
if (sender.supportsChatEvents()) {
|
String prompt = locale.getString(CommandLang.CONFIRM_CLEAR_DB, fromDB.getName());
|
||||||
sender.buildMessage()
|
|
||||||
.addPart(colors.getMainColor() + locale.getString(CommandLang.CONFIRM_CLEAR_DB, fromDB.getName())).newLine()
|
|
||||||
.addPart(colors.getTertiaryColor() + locale.getString(CommandLang.CONFIRM))
|
|
||||||
.addPart("§2§l[\u2714]").command("/" + mainCommand + " accept").hover(locale.getString(CommandLang.CONFIRM_ACCEPT))
|
|
||||||
.addPart(" ")
|
|
||||||
.addPart("§4§l[\u2718]").command("/" + mainCommand + " cancel").hover(locale.getString(CommandLang.CONFIRM_DENY))
|
|
||||||
.send();
|
|
||||||
} else {
|
|
||||||
sender.buildMessage()
|
|
||||||
.addPart(colors.getMainColor() + locale.getString(CommandLang.CONFIRM_CLEAR_DB, fromDB.getName())).newLine()
|
|
||||||
.addPart(colors.getTertiaryColor() + locale.getString(CommandLang.CONFIRM)).addPart("§a/" + mainCommand + " accept")
|
|
||||||
.addPart(" ")
|
|
||||||
.addPart("§c/" + mainCommand + " cancel")
|
|
||||||
.send();
|
|
||||||
}
|
|
||||||
|
|
||||||
confirmation.confirm(sender, choice -> {
|
confirmation.confirm(sender, prompt, choice -> {
|
||||||
if (Boolean.TRUE.equals(choice)) {
|
if (Boolean.TRUE.equals(choice)) {
|
||||||
performClear(sender, fromDB);
|
performClear(sender, fromDB);
|
||||||
} else {
|
} else {
|
||||||
@ -336,7 +297,7 @@ public class DatabaseCommands {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void onFixFabricJoinAddresses(String mainCommand, CMDSender sender, @Untrusted Arguments arguments) {
|
public void onFixFabricJoinAddresses(CMDSender sender, @Untrusted Arguments arguments) {
|
||||||
@Untrusted String identifier = arguments.concatenate(" ");
|
@Untrusted String identifier = arguments.concatenate(" ");
|
||||||
Optional<ServerUUID> serverUUID = identifiers.getServerUUID(identifier);
|
Optional<ServerUUID> serverUUID = identifiers.getServerUUID(identifier);
|
||||||
if (serverUUID.isEmpty()) {
|
if (serverUUID.isEmpty()) {
|
||||||
@ -345,24 +306,9 @@ public class DatabaseCommands {
|
|||||||
|
|
||||||
Database database = dbSystem.getDatabase();
|
Database database = dbSystem.getDatabase();
|
||||||
|
|
||||||
if (sender.supportsChatEvents()) {
|
String prompt = locale.getString(CommandLang.CONFIRM_JOIN_ADDRESS_REMOVAL, identifier, database.getType().getName());
|
||||||
sender.buildMessage()
|
|
||||||
.addPart(colors.getMainColor() + locale.getString(CommandLang.CONFIRM_JOIN_ADDRESS_REMOVAL, identifier, database.getType().getName())).newLine()
|
|
||||||
.addPart(colors.getTertiaryColor() + locale.getString(CommandLang.CONFIRM))
|
|
||||||
.addPart("§2§l[\u2714]").command("/" + mainCommand + " accept").hover(locale.getString(CommandLang.CONFIRM_ACCEPT))
|
|
||||||
.addPart(" ")
|
|
||||||
.addPart("§4§l[\u2718]").command("/" + mainCommand + " cancel").hover(locale.getString(CommandLang.CONFIRM_DENY))
|
|
||||||
.send();
|
|
||||||
} else {
|
|
||||||
sender.buildMessage()
|
|
||||||
.addPart(colors.getMainColor() + locale.getString(CommandLang.CONFIRM_JOIN_ADDRESS_REMOVAL, identifier, database.getType().getName())).newLine()
|
|
||||||
.addPart(colors.getTertiaryColor() + locale.getString(CommandLang.CONFIRM)).addPart("§a/" + mainCommand + " accept")
|
|
||||||
.addPart(" ")
|
|
||||||
.addPart("§c/" + mainCommand + " cancel")
|
|
||||||
.send();
|
|
||||||
}
|
|
||||||
|
|
||||||
confirmation.confirm(sender, choice -> {
|
confirmation.confirm(sender, prompt, choice -> {
|
||||||
if (Boolean.TRUE.equals(choice)) {
|
if (Boolean.TRUE.equals(choice)) {
|
||||||
performJoinAddressRemoval(sender, serverUUID.get(), database);
|
performJoinAddressRemoval(sender, serverUUID.get(), database);
|
||||||
} else {
|
} else {
|
||||||
@ -386,7 +332,7 @@ public class DatabaseCommands {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void onRemove(String mainCommand, CMDSender sender, @Untrusted Arguments arguments) {
|
public void onRemove(CMDSender sender, @Untrusted Arguments arguments) {
|
||||||
@Untrusted String identifier = arguments.concatenate(" ");
|
@Untrusted String identifier = arguments.concatenate(" ");
|
||||||
UUID playerUUID = identifiers.getPlayerUUID(identifier);
|
UUID playerUUID = identifiers.getPlayerUUID(identifier);
|
||||||
if (playerUUID == null) {
|
if (playerUUID == null) {
|
||||||
@ -395,24 +341,9 @@ public class DatabaseCommands {
|
|||||||
|
|
||||||
Database database = dbSystem.getDatabase();
|
Database database = dbSystem.getDatabase();
|
||||||
|
|
||||||
if (sender.supportsChatEvents()) {
|
String prompt = locale.getString(CommandLang.CONFIRM_REMOVE_PLAYER_DB, playerUUID, database.getType().getName());
|
||||||
sender.buildMessage()
|
|
||||||
.addPart(colors.getMainColor() + locale.getString(CommandLang.CONFIRM_REMOVE_PLAYER_DB, playerUUID, database.getType().getName())).newLine()
|
|
||||||
.addPart(colors.getTertiaryColor() + locale.getString(CommandLang.CONFIRM))
|
|
||||||
.addPart("§2§l[\u2714]").command("/" + mainCommand + " accept").hover(locale.getString(CommandLang.CONFIRM_ACCEPT))
|
|
||||||
.addPart(" ")
|
|
||||||
.addPart("§4§l[\u2718]").command("/" + mainCommand + " cancel").hover(locale.getString(CommandLang.CONFIRM_DENY))
|
|
||||||
.send();
|
|
||||||
} else {
|
|
||||||
sender.buildMessage()
|
|
||||||
.addPart(colors.getMainColor() + locale.getString(CommandLang.CONFIRM_REMOVE_PLAYER_DB, playerUUID, database.getType().getName())).newLine()
|
|
||||||
.addPart(colors.getTertiaryColor() + locale.getString(CommandLang.CONFIRM)).addPart("§a/" + mainCommand + " accept")
|
|
||||||
.addPart(" ")
|
|
||||||
.addPart("§c/" + mainCommand + " cancel")
|
|
||||||
.send();
|
|
||||||
}
|
|
||||||
|
|
||||||
confirmation.confirm(sender, choice -> {
|
confirmation.confirm(sender, prompt, choice -> {
|
||||||
if (Boolean.TRUE.equals(choice)) {
|
if (Boolean.TRUE.equals(choice)) {
|
||||||
performRemoval(sender, database, playerUUID);
|
performRemoval(sender, database, playerUUID);
|
||||||
} else {
|
} else {
|
||||||
@ -463,7 +394,7 @@ public class DatabaseCommands {
|
|||||||
|
|
||||||
public void onHotswap(CMDSender sender, @Untrusted Arguments arguments) {
|
public void onHotswap(CMDSender sender, @Untrusted Arguments arguments) {
|
||||||
DBType toDB = arguments.get(0).flatMap(DBType::getForName)
|
DBType toDB = arguments.get(0).flatMap(DBType::getForName)
|
||||||
.orElseThrow(() -> new IllegalArgumentException(locale.getString(CommandLang.FAIL_INCORRECT_DB, arguments.get(0).orElse("<MySQL/SQLite>"))));
|
.orElseThrow(() -> new IllegalArgumentException(locale.getString(CommandLang.FAIL_INCORRECT_DB, arguments.get(0).orElse(SUPPORTED_DB_OPTIONS))));
|
||||||
|
|
||||||
try {
|
try {
|
||||||
Database database = dbSystem.getActiveDatabaseByType(toDB);
|
Database database = dbSystem.getActiveDatabaseByType(toDB);
|
||||||
@ -483,7 +414,7 @@ public class DatabaseCommands {
|
|||||||
statusCommands.onReload(sender);
|
statusCommands.onReload(sender);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void onOnlineConversion(String mainCommand, CMDSender sender, @Untrusted Arguments arguments) {
|
public void onOnlineConversion(CMDSender sender, @Untrusted Arguments arguments) {
|
||||||
boolean removeOfflinePlayers = arguments.get(0)
|
boolean removeOfflinePlayers = arguments.get(0)
|
||||||
.map("--remove_offline"::equals)
|
.map("--remove_offline"::equals)
|
||||||
.orElse(false);
|
.orElse(false);
|
||||||
@ -515,9 +446,8 @@ public class DatabaseCommands {
|
|||||||
if (actualUUID == null) {
|
if (actualUUID == null) {
|
||||||
offlineOnlyUsers++;
|
offlineOnlyUsers++;
|
||||||
if (removeOfflinePlayers) transactions.add(new RemovePlayerTransaction(recordedUUID));
|
if (removeOfflinePlayers) transactions.add(new RemovePlayerTransaction(recordedUUID));
|
||||||
continue;
|
|
||||||
}
|
}
|
||||||
if (recordedUUID == actualUUID) {
|
if (actualUUID == null || recordedUUID.equals(actualUUID)) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
BaseUser alreadyExistingProfile = baseUsersByUUID.get(actualUUID);
|
BaseUser alreadyExistingProfile = baseUsersByUUID.get(actualUUID);
|
||||||
@ -530,30 +460,16 @@ public class DatabaseCommands {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
MessageBuilder messageBuilder = sender.buildMessage()
|
MessageBuilder prompt = sender.buildMessage()
|
||||||
.addPart(colors.getMainColor() + "Moving to online-only UUIDs (irreversible):").newLine()
|
.addPart(colors.getMainColor() + "Moving to online-only UUIDs (irreversible):").newLine()
|
||||||
.addPart(colors.getSecondaryColor() + " Total players in database: " + totalProfiles).newLine()
|
.addPart(colors.getSecondaryColor() + " Total players in database: " + totalProfiles).newLine()
|
||||||
.addPart(colors.getSecondaryColor() + (removeOfflinePlayers ? "Removing (no online UUID): " : " Offline only (no online UUID): ") + offlineOnlyUsers).newLine()
|
.addPart(colors.getSecondaryColor() + (removeOfflinePlayers ? "Removing (no online UUID): " : " Offline only (no online UUID): ") + offlineOnlyUsers).newLine()
|
||||||
.addPart(colors.getSecondaryColor() + " Moving to new UUID: " + move).newLine()
|
.addPart(colors.getSecondaryColor() + " Moving to new UUID: " + move).newLine()
|
||||||
.addPart(colors.getSecondaryColor() + " Combining offline and online profiles: " + combine).newLine()
|
.addPart(colors.getSecondaryColor() + " Combining offline and online profiles: " + combine).newLine()
|
||||||
.newLine()
|
.newLine()
|
||||||
.addPart(colors.getSecondaryColor() + " Estimated online UUID players in database after: " + (totalProfiles - combine - offlineOnlyUsers) + (removeOfflinePlayers ? "" : " (+" + offlineOnlyUsers + " offline)")).newLine()
|
.addPart(colors.getSecondaryColor() + " Estimated online UUID players in database after: " + (totalProfiles - combine - offlineOnlyUsers) + (removeOfflinePlayers ? "" : " (+" + offlineOnlyUsers + " offline)")).newLine();
|
||||||
.addPart(colors.getTertiaryColor() + locale.getString(CommandLang.CONFIRM));
|
|
||||||
if (sender.supportsChatEvents()) {
|
|
||||||
messageBuilder
|
|
||||||
.addPart("§2§l[\u2714]").command("/" + mainCommand + " accept").hover(locale.getString(CommandLang.CONFIRM_ACCEPT))
|
|
||||||
.addPart(" ")
|
|
||||||
.addPart("§4§l[\u2718]").command("/" + mainCommand + " cancel").hover(locale.getString(CommandLang.CONFIRM_DENY))
|
|
||||||
.send();
|
|
||||||
} else {
|
|
||||||
messageBuilder
|
|
||||||
.addPart(colors.getTertiaryColor() + locale.getString(CommandLang.CONFIRM)).addPart("§a/" + mainCommand + " accept")
|
|
||||||
.addPart(" ")
|
|
||||||
.addPart("§c/" + mainCommand + " cancel")
|
|
||||||
.send();
|
|
||||||
}
|
|
||||||
|
|
||||||
confirmation.confirm(sender, choice -> {
|
confirmation.confirm(sender, prompt, choice -> {
|
||||||
if (Boolean.TRUE.equals(choice)) {
|
if (Boolean.TRUE.equals(choice)) {
|
||||||
transactions.forEach(dbSystem.getDatabase()::executeTransaction);
|
transactions.forEach(dbSystem.getDatabase()::executeTransaction);
|
||||||
dbSystem.getDatabase().executeTransaction(new Transaction() {
|
dbSystem.getDatabase().executeTransaction(new Transaction() {
|
||||||
|
@ -171,7 +171,7 @@ public class RegistrationCommands {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void onUnregister(String mainCommand, CMDSender sender, @Untrusted Arguments arguments) {
|
public void onUnregister(CMDSender sender, @Untrusted Arguments arguments) {
|
||||||
@Untrusted Optional<String> givenUsername = arguments.get(0).filter(arg -> sender.hasPermission(Permissions.UNREGISTER_OTHER));
|
@Untrusted Optional<String> givenUsername = arguments.get(0).filter(arg -> sender.hasPermission(Permissions.UNREGISTER_OTHER));
|
||||||
|
|
||||||
Database database = dbSystem.getDatabase();
|
Database database = dbSystem.getDatabase();
|
||||||
@ -195,24 +195,9 @@ public class RegistrationCommands {
|
|||||||
throw new IllegalArgumentException(locale.getString(CommandLang.USER_NOT_LINKED));
|
throw new IllegalArgumentException(locale.getString(CommandLang.USER_NOT_LINKED));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (sender.supportsChatEvents()) {
|
String prompt = locale.getString(CommandLang.CONFIRM_UNREGISTER, user.getUsername(), user.getLinkedTo());
|
||||||
sender.buildMessage()
|
|
||||||
.addPart(colors.getMainColor() + locale.getString(CommandLang.CONFIRM_UNREGISTER, user.getUsername(), user.getLinkedTo())).newLine()
|
|
||||||
.addPart(colors.getTertiaryColor() + locale.getString(CommandLang.CONFIRM))
|
|
||||||
.addPart("§2§l[\u2714]").command("/" + mainCommand + " accept").hover(locale.getString(CommandLang.CONFIRM_ACCEPT))
|
|
||||||
.addPart(" ")
|
|
||||||
.addPart("§4§l[\u2718]").command("/" + mainCommand + " cancel").hover(locale.getString(CommandLang.CONFIRM_DENY))
|
|
||||||
.send();
|
|
||||||
} else {
|
|
||||||
sender.buildMessage()
|
|
||||||
.addPart(colors.getMainColor() + locale.getString(CommandLang.CONFIRM_UNREGISTER, user.getUsername(), user.getLinkedTo())).newLine()
|
|
||||||
.addPart(colors.getTertiaryColor() + locale.getString(CommandLang.CONFIRM)).addPart("§a/" + mainCommand + " accept")
|
|
||||||
.addPart(" ")
|
|
||||||
.addPart("§c/" + mainCommand + " cancel")
|
|
||||||
.send();
|
|
||||||
}
|
|
||||||
|
|
||||||
confirmation.confirm(sender, choice -> {
|
confirmation.confirm(sender, prompt, choice -> {
|
||||||
if (Boolean.TRUE.equals(choice)) {
|
if (Boolean.TRUE.equals(choice)) {
|
||||||
try {
|
try {
|
||||||
sender.send(colors.getMainColor() + locale.getString(CommandLang.UNREGISTER, user.getUsername()));
|
sender.send(colors.getMainColor() + locale.getString(CommandLang.UNREGISTER, user.getUsername()));
|
||||||
|
Loading…
Reference in New Issue
Block a user