Lists paid signs 7 at a time, instead of all at once
This commit is contained in:
parent
337c4573e0
commit
3eee197fb1
@ -31,10 +31,16 @@ public class ListCommand extends TokenizedCommand {
|
|||||||
@NotNull String[] args) {
|
@NotNull String[] args) {
|
||||||
super.onCommand(sender, command, label, args);
|
super.onCommand(sender, command, label, args);
|
||||||
if (argumentSize < 1) {
|
if (argumentSize < 1) {
|
||||||
displaySigns(sender);
|
displaySigns(sender, 0);
|
||||||
return true;
|
return true;
|
||||||
} else if (argumentSize < 3) {
|
} else if (argumentSize < 3) {
|
||||||
return parsePaidSignSelection(sender);
|
try {
|
||||||
|
int pageNumber = Integer.parseInt(arguments.get(0)) - 1;
|
||||||
|
displaySigns(sender, pageNumber);
|
||||||
|
return true;
|
||||||
|
} catch (NumberFormatException exception) {
|
||||||
|
return parsePaidSignSelection(sender);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@ -42,20 +48,38 @@ public class ListCommand extends TokenizedCommand {
|
|||||||
/**
|
/**
|
||||||
* Displays all available signs
|
* Displays all available signs
|
||||||
*
|
*
|
||||||
* @param sender <p>The command sender to display the signs to</p>
|
* @param sender <p>The command sender to display the signs to</p>
|
||||||
|
* @param pageNumber <p>The page of the sign list to display</p>
|
||||||
*/
|
*/
|
||||||
private void displaySigns(CommandSender sender) {
|
private void displaySigns(CommandSender sender, int pageNumber) {
|
||||||
StringBuilder signs = new StringBuilder();
|
StringBuilder signs = new StringBuilder();
|
||||||
Set<String> signNames = PaidSigns.getInstance().getSignManager().getAllPaidSigns().keySet();
|
Set<String> signNames = PaidSigns.getInstance().getSignManager().getAllPaidSigns().keySet();
|
||||||
List<String> signNameList = new ArrayList<>(signNames);
|
List<String> signNameList = new ArrayList<>(signNames);
|
||||||
Collections.sort(signNameList);
|
Collections.sort(signNameList);
|
||||||
String infoFormat = Translator.getTranslatedMessage(TranslatableMessage.PAID_SIGNS_INFO_FORMAT);
|
String infoFormat = Translator.getTranslatedMessage(TranslatableMessage.PAID_SIGNS_INFO_FORMAT);
|
||||||
|
|
||||||
for (String signName : signNameList) {
|
//Display up to 10 signs per page
|
||||||
|
int signsPerPage = 7;
|
||||||
|
int alreadyDisplayed = pageNumber * signsPerPage;
|
||||||
|
for (int signIndex = alreadyDisplayed; signIndex < alreadyDisplayed + signsPerPage; signIndex++) {
|
||||||
|
if (signIndex >= signNameList.size()) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
String signName = signNameList.get(signIndex);
|
||||||
signs.append(StringFormatter.replacePlaceholder(infoFormat, "{name}", signName));
|
signs.append(StringFormatter.replacePlaceholder(infoFormat, "{name}", signName));
|
||||||
}
|
}
|
||||||
sender.sendMessage(StringFormatter.replacePlaceholder(Translator.getTranslatedMessage(
|
|
||||||
TranslatableMessage.PAID_SIGNS_INFO), "{signs}", signs.toString()));
|
//Display that another page exists, if necessary
|
||||||
|
boolean hasNextPage = alreadyDisplayed + signsPerPage < signNameList.size();
|
||||||
|
String nextPagePrompt = "";
|
||||||
|
if (hasNextPage) {
|
||||||
|
nextPagePrompt = StringFormatter.replacePlaceholder(Translator.getTranslatedMessage(
|
||||||
|
TranslatableMessage.PAID_SIGNS_NEXT_PROMPT), "{nextPage}", String.valueOf((pageNumber + 2)));
|
||||||
|
}
|
||||||
|
|
||||||
|
sender.sendMessage(StringFormatter.replacePlaceholders(Translator.getTranslatedMessage(
|
||||||
|
TranslatableMessage.PAID_SIGNS_INFO), new String[]{"{signs}", "{nextPagePrompt}"},
|
||||||
|
new String[]{signs.toString(), nextPagePrompt}));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -65,6 +65,11 @@ public enum TranslatableMessage {
|
|||||||
*/
|
*/
|
||||||
PAID_SIGNS_INFO_FORMAT,
|
PAID_SIGNS_INFO_FORMAT,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The prompt displayed when the paid sign list has more items
|
||||||
|
*/
|
||||||
|
PAID_SIGNS_NEXT_PROMPT,
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The info text used to display information about a paid sign
|
* The info text used to display information about a paid sign
|
||||||
*/
|
*/
|
||||||
|
@ -11,10 +11,12 @@ en:
|
|||||||
SUCCESS_REFUNDED: "&bYou were refunded &3{cost} {unit} &bfor your broken sign"
|
SUCCESS_REFUNDED: "&bYou were refunded &3{cost} {unit} &bfor your broken sign"
|
||||||
PAID_SIGNS_INFO: |
|
PAID_SIGNS_INFO: |
|
||||||
&f---&3Paid signs&f---
|
&f---&3Paid signs&f---
|
||||||
{signs}
|
{signs}{nextPagePrompt}
|
||||||
&f-----------
|
&f-----------
|
||||||
PAID_SIGNS_INFO_FORMAT: |
|
PAID_SIGNS_INFO_FORMAT: |
|
||||||
&f| &b{name}
|
&f| &b{name}
|
||||||
|
PAID_SIGNS_NEXT_PROMPT: |
|
||||||
|
&f| &3Use /lps {nextPage} to see more
|
||||||
PAID_SIGN_INFO: |
|
PAID_SIGN_INFO: |
|
||||||
&f---&3Paid sign&f---
|
&f---&3Paid sign&f---
|
||||||
&f| &bName: &3{name}
|
&f| &bName: &3{name}
|
||||||
|
Loading…
Reference in New Issue
Block a user