mirror of
https://github.com/plan-player-analytics/Plan.git
synced 2025-03-02 11:11:21 +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))
|
||||
.description(locale.getString(HelpLang.UNREGISTER))
|
||||
.inDepthDescription(locale.getString(DeepHelpLang.UNREGISTER))
|
||||
.onCommand((sender, arguments) -> registrationCommands.onUnregister(commandName, sender, arguments))
|
||||
.onCommand(registrationCommands::onUnregister)
|
||||
.onTabComplete(this::webUserNames)
|
||||
.build();
|
||||
}
|
||||
@ -348,7 +348,7 @@ public class PlanCommand {
|
||||
.optionalArgument("--remove_offline", "Remove offline players if given")
|
||||
.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.")
|
||||
.onCommand((sender, arguments) -> databaseCommands.onOnlineConversion(commandName, sender, arguments))
|
||||
.onCommand(databaseCommands::onOnlineConversion)
|
||||
.build();
|
||||
}
|
||||
|
||||
@ -358,7 +358,7 @@ public class PlanCommand {
|
||||
.requirePermission(Permissions.DATA_CLEAR)
|
||||
.requiredArgument(locale.getString(HelpLang.ARG_SERVER), locale.getString(HelpLang.DESC_ARG_SERVER_IDENTIFIER))
|
||||
.description(locale.getString(HelpLang.JOIN_ADDRESS_REMOVAL))
|
||||
.onCommand((sender, arguments) -> databaseCommands.onFixFabricJoinAddresses(commandName, sender, arguments))
|
||||
.onCommand(databaseCommands::onFixFabricJoinAddresses)
|
||||
.onTabComplete(this::serverNames)
|
||||
.build();
|
||||
}
|
||||
@ -384,7 +384,7 @@ public class PlanCommand {
|
||||
.optionalArgument(DB_ARG_OPTIONS, locale.getString(HelpLang.DESC_ARG_DB_RESTORE))
|
||||
.description(locale.getString(HelpLang.DB_RESTORE))
|
||||
.inDepthDescription(locale.getString(DeepHelpLang.DB_RESTORE))
|
||||
.onCommand((sender, arguments) -> databaseCommands.onRestore(commandName, sender, arguments))
|
||||
.onCommand(databaseCommands::onRestore)
|
||||
.onTabComplete(this::getBackupFilenames)
|
||||
.build();
|
||||
}
|
||||
@ -409,7 +409,7 @@ public class PlanCommand {
|
||||
.requiredArgument(DB_ARG_OPTIONS, locale.getString(HelpLang.DESC_ARG_DB_MOVE_TO))
|
||||
.description(locale.getString(HelpLang.DB_MOVE))
|
||||
.inDepthDescription(locale.getString(DeepHelpLang.DB_MOVE))
|
||||
.onCommand((sender, arguments) -> databaseCommands.onMove(commandName, sender, arguments))
|
||||
.onCommand(databaseCommands::onMove)
|
||||
.onTabComplete((sender, arguments) -> DBType.names())
|
||||
.build();
|
||||
}
|
||||
@ -434,7 +434,7 @@ public class PlanCommand {
|
||||
.requiredArgument(DB_ARG_OPTIONS, locale.getString(HelpLang.DESC_ARG_DB_REMOVE))
|
||||
.description(locale.getString(HelpLang.DB_CLEAR))
|
||||
.inDepthDescription(locale.getString(DeepHelpLang.DB_CLEAR))
|
||||
.onCommand((sender, arguments) -> databaseCommands.onClear(commandName, sender, arguments))
|
||||
.onCommand(databaseCommands::onClear)
|
||||
.onTabComplete((sender, arguments) ->
|
||||
arguments.isEmpty() ? DBType.names() : Collections.emptyList()
|
||||
).build();
|
||||
@ -447,7 +447,7 @@ public class PlanCommand {
|
||||
.requiredArgument(locale.getString(HelpLang.ARG_NAME_UUID), locale.getString(HelpLang.DESC_ARG_PLAYER_IDENTIFIER_REMOVE))
|
||||
.description(locale.getString(HelpLang.DB_REMOVE))
|
||||
.inDepthDescription(locale.getString(DeepHelpLang.DB_REMOVE))
|
||||
.onCommand((sender, arguments) -> databaseCommands.onRemove(commandName, sender, arguments))
|
||||
.onCommand(databaseCommands::onRemove)
|
||||
.onTabComplete(this::playerNames)
|
||||
.build();
|
||||
}
|
||||
|
@ -17,12 +17,15 @@
|
||||
package com.djrapitops.plan.commands.subcommands;
|
||||
|
||||
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.lang.CommandLang;
|
||||
import com.github.benmanes.caffeine.cache.Cache;
|
||||
import com.github.benmanes.caffeine.cache.Caffeine;
|
||||
|
||||
import javax.inject.Inject;
|
||||
import javax.inject.Named;
|
||||
import javax.inject.Singleton;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
import java.util.function.Consumer;
|
||||
@ -31,20 +34,57 @@ import java.util.function.Consumer;
|
||||
public class Confirmation {
|
||||
|
||||
private final Cache<CMDSender, Consumer<Boolean>> awaiting;
|
||||
|
||||
private final String mainCommand;
|
||||
private final ColorScheme colors;
|
||||
private final Locale locale;
|
||||
|
||||
@Inject
|
||||
public Confirmation(
|
||||
@Named("mainCommandName") String mainCommand,
|
||||
ColorScheme colors,
|
||||
Locale locale
|
||||
) {
|
||||
this.mainCommand = mainCommand;
|
||||
this.colors = colors;
|
||||
this.locale = locale;
|
||||
awaiting = Caffeine.newBuilder()
|
||||
.expireAfterWrite(5, TimeUnit.MINUTES)
|
||||
.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);
|
||||
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);
|
||||
}
|
||||
|
||||
|
@ -62,6 +62,8 @@ import java.util.stream.Collectors;
|
||||
@Singleton
|
||||
public class DatabaseCommands {
|
||||
|
||||
private static final String SUPPORTED_DB_OPTIONS = "<MySQL/SQLite>";
|
||||
|
||||
private final Locale locale;
|
||||
private final Confirmation confirmation;
|
||||
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)
|
||||
.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 (sender.supportsChatEvents()) {
|
||||
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("§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();
|
||||
}
|
||||
String prompt = locale.getString(CommandLang.CONFIRM_OVERWRITE_DB,
|
||||
toDB.getType().getName(),
|
||||
backupDBFile.toPath().toString());
|
||||
|
||||
confirmation.confirm(sender, choice -> {
|
||||
confirmation.confirm(sender, prompt, choice -> {
|
||||
if (Boolean.TRUE.equals(choice)) {
|
||||
performRestore(sender, backupDBFile, toDB);
|
||||
} 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)
|
||||
.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)
|
||||
.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) {
|
||||
throw new IllegalArgumentException(locale.getString(CommandLang.FAIL_SAME_DB));
|
||||
}
|
||||
|
||||
if (sender.supportsChatEvents()) {
|
||||
sender.buildMessage()
|
||||
.addPart(colors.getMainColor() + locale.getString(CommandLang.CONFIRM_OVERWRITE_DB, toDB.getName(), 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_OVERWRITE_DB, toDB.getName(), fromDB.getName())).newLine()
|
||||
.addPart(colors.getTertiaryColor() + locale.getString(CommandLang.CONFIRM)).addPart("§a/" + mainCommand + " accept")
|
||||
.addPart(" ")
|
||||
.addPart("§c/" + mainCommand + " cancel")
|
||||
.send();
|
||||
}
|
||||
String prompt = locale.getString(CommandLang.CONFIRM_OVERWRITE_DB,
|
||||
toDB.getName(),
|
||||
fromDB.getName());
|
||||
|
||||
confirmation.confirm(sender, choice -> {
|
||||
confirmation.confirm(sender, prompt, choice -> {
|
||||
if (Boolean.TRUE.equals(choice)) {
|
||||
performMove(sender, fromDB, toDB);
|
||||
} 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)
|
||||
.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()) {
|
||||
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();
|
||||
}
|
||||
String prompt = locale.getString(CommandLang.CONFIRM_CLEAR_DB, fromDB.getName());
|
||||
|
||||
confirmation.confirm(sender, choice -> {
|
||||
confirmation.confirm(sender, prompt, choice -> {
|
||||
if (Boolean.TRUE.equals(choice)) {
|
||||
performClear(sender, fromDB);
|
||||
} 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(" ");
|
||||
Optional<ServerUUID> serverUUID = identifiers.getServerUUID(identifier);
|
||||
if (serverUUID.isEmpty()) {
|
||||
@ -345,24 +306,9 @@ public class DatabaseCommands {
|
||||
|
||||
Database database = dbSystem.getDatabase();
|
||||
|
||||
if (sender.supportsChatEvents()) {
|
||||
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();
|
||||
}
|
||||
String prompt = locale.getString(CommandLang.CONFIRM_JOIN_ADDRESS_REMOVAL, identifier, database.getType().getName());
|
||||
|
||||
confirmation.confirm(sender, choice -> {
|
||||
confirmation.confirm(sender, prompt, choice -> {
|
||||
if (Boolean.TRUE.equals(choice)) {
|
||||
performJoinAddressRemoval(sender, serverUUID.get(), database);
|
||||
} 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(" ");
|
||||
UUID playerUUID = identifiers.getPlayerUUID(identifier);
|
||||
if (playerUUID == null) {
|
||||
@ -395,24 +341,9 @@ public class DatabaseCommands {
|
||||
|
||||
Database database = dbSystem.getDatabase();
|
||||
|
||||
if (sender.supportsChatEvents()) {
|
||||
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();
|
||||
}
|
||||
String prompt = locale.getString(CommandLang.CONFIRM_REMOVE_PLAYER_DB, playerUUID, database.getType().getName());
|
||||
|
||||
confirmation.confirm(sender, choice -> {
|
||||
confirmation.confirm(sender, prompt, choice -> {
|
||||
if (Boolean.TRUE.equals(choice)) {
|
||||
performRemoval(sender, database, playerUUID);
|
||||
} else {
|
||||
@ -463,7 +394,7 @@ public class DatabaseCommands {
|
||||
|
||||
public void onHotswap(CMDSender sender, @Untrusted Arguments arguments) {
|
||||
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 {
|
||||
Database database = dbSystem.getActiveDatabaseByType(toDB);
|
||||
@ -483,7 +414,7 @@ public class DatabaseCommands {
|
||||
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)
|
||||
.map("--remove_offline"::equals)
|
||||
.orElse(false);
|
||||
@ -515,9 +446,8 @@ public class DatabaseCommands {
|
||||
if (actualUUID == null) {
|
||||
offlineOnlyUsers++;
|
||||
if (removeOfflinePlayers) transactions.add(new RemovePlayerTransaction(recordedUUID));
|
||||
continue;
|
||||
}
|
||||
if (recordedUUID == actualUUID) {
|
||||
if (actualUUID == null || recordedUUID.equals(actualUUID)) {
|
||||
continue;
|
||||
}
|
||||
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.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() + " Moving to new UUID: " + move).newLine()
|
||||
.addPart(colors.getSecondaryColor() + " Combining offline and online profiles: " + combine).newLine()
|
||||
.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();
|
||||
}
|
||||
.addPart(colors.getSecondaryColor() + " Estimated online UUID players in database after: " + (totalProfiles - combine - offlineOnlyUsers) + (removeOfflinePlayers ? "" : " (+" + offlineOnlyUsers + " offline)")).newLine();
|
||||
|
||||
confirmation.confirm(sender, choice -> {
|
||||
confirmation.confirm(sender, prompt, choice -> {
|
||||
if (Boolean.TRUE.equals(choice)) {
|
||||
transactions.forEach(dbSystem.getDatabase()::executeTransaction);
|
||||
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));
|
||||
|
||||
Database database = dbSystem.getDatabase();
|
||||
@ -195,24 +195,9 @@ public class RegistrationCommands {
|
||||
throw new IllegalArgumentException(locale.getString(CommandLang.USER_NOT_LINKED));
|
||||
}
|
||||
|
||||
if (sender.supportsChatEvents()) {
|
||||
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();
|
||||
}
|
||||
String prompt = locale.getString(CommandLang.CONFIRM_UNREGISTER, user.getUsername(), user.getLinkedTo());
|
||||
|
||||
confirmation.confirm(sender, choice -> {
|
||||
confirmation.confirm(sender, prompt, choice -> {
|
||||
if (Boolean.TRUE.equals(choice)) {
|
||||
try {
|
||||
sender.send(colors.getMainColor() + locale.getString(CommandLang.UNREGISTER, user.getUsername()));
|
||||
|
Loading…
Reference in New Issue
Block a user