package io.github.lucaseasedup.logit.command.hub;
import static io.github.lucaseasedup.logit.message.MessageHelper.sendMsg;
import static io.github.lucaseasedup.logit.message.MessageHelper.t;
import io.github.lucaseasedup.logit.command.CommandAccess;
import io.github.lucaseasedup.logit.command.CommandHelpLine;
import io.github.lucaseasedup.logit.command.wizard.ConfirmationWizard;
import io.github.lucaseasedup.logit.util.CollectionUtils;
import io.github.lucaseasedup.logit.util.PlayerUtils;
import java.util.List;
import org.bukkit.command.CommandSender;
public final class AccountRenameHubCommand extends HubCommand
{
public AccountRenameHubCommand()
{
super("account rename", new String[] {"username", "newUsername"},
new CommandAccess.Builder()
.permission("logit.account.rename")
.playerOnly(false)
.runningCoreRequired(true)
.build(),
new CommandHelpLine.Builder()
.command("logit account rename")
.descriptionLabel("subCmdDesc.account.rename")
.build());
}
@Override
public void execute(final CommandSender sender, final String[] args)
{
if (!getAccountManager().isRegistered(args[0]))
{
sendMsg(sender, t("notRegistered.others")
.replace("{0}", args[0].toLowerCase()));
return;
}
if (!args[1].matches(getConfig("secret.yml").getString("username.regex")))
{
sendMsg(sender, t("accountRename.usernameInvalid"));
return;
}
int minUsernameLength = getConfig("secret.yml").getInt("username.minLength");
int maxUsernameLength = getConfig("secret.yml").getInt("username.maxLength");
if (args[1].length() < minUsernameLength)
{
sendMsg(sender, t("accountRename.usernameTooShort")
.replace("{0}", String.valueOf(minUsernameLength)));
return;
}
if (args[1].length() > maxUsernameLength)
{
sendMsg(sender, t("accountRename.usernameTooLong")
.replace("{0}", String.valueOf(maxUsernameLength)));
return;
}
if (!args[1].matches(getConfig("secret.yml").getString("username.regex")))
{
sendMsg(sender, t("accountRename.usernameInvalid"));
return;
}
if (CollectionUtils.containsIgnoreCase(args[1],
getConfig("config.yml").getStringList("prohibitedUsernames")))
{
sendMsg(sender, t("accountRename.usernameProhibited"));
return;
}
if (PlayerUtils.isPlayerOnline(args[1]))
{
sendMsg(sender, t("accountRename.playerOnline"));
return;
}
if (getAccountManager().isRegistered(args[1]))
{
sendMsg(sender, t("accountRename.usernameTaken"));
return;
}
sendMsg(sender, t("accountRename.confirm")
.replace("{0}", args[0].toLowerCase())
.replace("{1}", args[1].toLowerCase()));
new ConfirmationWizard(sender, "rename", new Runnable()
{
@Override
public void run()
{
getAccountManager().renameAccount(args[0], args[1]);
sendMsg(sender, t("accountRename.success")
.replace("{0}", args[1].toLowerCase()));
}
}).createWizard();
}
@Override
public List<String> complete(CommandSender sender, String[] args)
{
if (!getConfig("secret.yml").getBoolean("tabCompletion"))
return null;
if (args.length == 1)
{
return getTabCompleter().completeUsername(args[0]);
}
return null;
}
}