Replaces some local class usage with KnarLib methods
All checks were successful
EpicKnarvik97/Books-Without-Borders/pipeline/head This commit looks good
All checks were successful
EpicKnarvik97/Books-Without-Borders/pipeline/head This commit looks good
This commit is contained in:
2
pom.xml
2
pom.xml
@@ -125,7 +125,7 @@
|
|||||||
<dependency>
|
<dependency>
|
||||||
<groupId>net.knarcraft</groupId>
|
<groupId>net.knarcraft</groupId>
|
||||||
<artifactId>knarlib</artifactId>
|
<artifactId>knarlib</artifactId>
|
||||||
<version>1.2.18</version>
|
<version>1.2.19</version>
|
||||||
<scope>compile</scope>
|
<scope>compile</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
|
|||||||
@@ -8,8 +8,6 @@ import net.knarcraft.bookswithoutborders.gui.PagedBookIndex;
|
|||||||
import net.knarcraft.bookswithoutborders.state.BookDirectory;
|
import net.knarcraft.bookswithoutborders.state.BookDirectory;
|
||||||
import net.knarcraft.bookswithoutborders.utility.BookFileUtil;
|
import net.knarcraft.bookswithoutborders.utility.BookFileUtil;
|
||||||
import net.knarcraft.bookswithoutborders.utility.InputCleaningUtil;
|
import net.knarcraft.bookswithoutborders.utility.InputCleaningUtil;
|
||||||
import net.knarcraft.bookswithoutborders.utility.InputParsingUtil;
|
|
||||||
import net.knarcraft.bookswithoutborders.utility.TabCompletionTypeUtil;
|
|
||||||
import net.knarcraft.knarlib.formatting.FormatBuilder;
|
import net.knarcraft.knarlib.formatting.FormatBuilder;
|
||||||
import net.knarcraft.knarlib.util.SignHelper;
|
import net.knarcraft.knarlib.util.SignHelper;
|
||||||
import net.knarcraft.knarlib.util.TabCompletionHelper;
|
import net.knarcraft.knarlib.util.TabCompletionHelper;
|
||||||
@@ -88,9 +86,9 @@ public class CommandCreateBwBSign implements TabExecutor {
|
|||||||
return TabCompletionHelper.filterMatchingContains(BooksWithoutBorders.getAvailableBooks(sender, true), arguments[1]);
|
return TabCompletionHelper.filterMatchingContains(BooksWithoutBorders.getAvailableBooks(sender, true), arguments[1]);
|
||||||
} else {
|
} else {
|
||||||
List<String> books = BooksWithoutBorders.getAvailableBooks(sender, true);
|
List<String> books = BooksWithoutBorders.getAvailableBooks(sender, true);
|
||||||
String merged = InputParsingUtil.mergeArguments(1, arguments);
|
String merged = TabCompletionHelper.mergeArguments(1, arguments);
|
||||||
List<String> filtered = TabCompletionHelper.filterMatchingContains(books, merged);
|
List<String> filtered = TabCompletionHelper.filterMatchingContains(books, merged);
|
||||||
return TabCompletionTypeUtil.getCleanedTabCompletions(arguments, filtered, 1, "");
|
return TabCompletionHelper.getCleanedTabCompletions(arguments, filtered, 1, "");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -172,7 +170,7 @@ public class CommandCreateBwBSign implements TabExecutor {
|
|||||||
*/
|
*/
|
||||||
private boolean createGiveSign(@NotNull String[] arguments, @NotNull SignSide side, @NotNull Player player) {
|
private boolean createGiveSign(@NotNull String[] arguments, @NotNull SignSide side, @NotNull Player player) {
|
||||||
File bookFile = BookFileUtil.getFile(BookDirectory.PUBLIC, null,
|
File bookFile = BookFileUtil.getFile(BookDirectory.PUBLIC, null,
|
||||||
InputParsingUtil.mergeArguments(1, arguments));
|
TabCompletionHelper.mergeArguments(1, arguments));
|
||||||
if (bookFile == null) {
|
if (bookFile == null) {
|
||||||
new FormatBuilder(Translatable.ERROR_LOAD_FAILED).error(player);
|
new FormatBuilder(Translatable.ERROR_LOAD_FAILED).error(player);
|
||||||
return false;
|
return false;
|
||||||
|
|||||||
@@ -6,8 +6,6 @@ import net.knarcraft.bookswithoutborders.config.translation.Translatable;
|
|||||||
import net.knarcraft.bookswithoutborders.gui.PagedBookIndex;
|
import net.knarcraft.bookswithoutborders.gui.PagedBookIndex;
|
||||||
import net.knarcraft.bookswithoutborders.state.BookDirectory;
|
import net.knarcraft.bookswithoutborders.state.BookDirectory;
|
||||||
import net.knarcraft.bookswithoutborders.utility.BookFileUtil;
|
import net.knarcraft.bookswithoutborders.utility.BookFileUtil;
|
||||||
import net.knarcraft.bookswithoutborders.utility.InputParsingUtil;
|
|
||||||
import net.knarcraft.bookswithoutborders.utility.TabCompletionTypeUtil;
|
|
||||||
import net.knarcraft.knarlib.formatting.FormatBuilder;
|
import net.knarcraft.knarlib.formatting.FormatBuilder;
|
||||||
import net.knarcraft.knarlib.util.TabCompletionHelper;
|
import net.knarcraft.knarlib.util.TabCompletionHelper;
|
||||||
import org.bukkit.command.Command;
|
import org.bukkit.command.Command;
|
||||||
@@ -57,7 +55,7 @@ public class CommandDelete implements TabExecutor {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
performBookDeletion(sender, InputParsingUtil.mergeArguments(arguments, 0), deletePublic);
|
performBookDeletion(sender, TabCompletionHelper.mergeArguments(arguments, 0), deletePublic);
|
||||||
//Update the book list
|
//Update the book list
|
||||||
BooksWithoutBorders.updateBooks(sender, deletePublic);
|
BooksWithoutBorders.updateBooks(sender, deletePublic);
|
||||||
}
|
}
|
||||||
@@ -119,9 +117,9 @@ public class CommandDelete implements TabExecutor {
|
|||||||
protected List<String> doTabCompletion(@NotNull CommandSender sender, @NotNull String[] arguments, boolean deletePublic) {
|
protected List<String> doTabCompletion(@NotNull CommandSender sender, @NotNull String[] arguments, boolean deletePublic) {
|
||||||
List<String> filtered = TabCompletionHelper.filterMatchingContains(
|
List<String> filtered = TabCompletionHelper.filterMatchingContains(
|
||||||
BooksWithoutBorders.getAvailableBooks(sender, deletePublic),
|
BooksWithoutBorders.getAvailableBooks(sender, deletePublic),
|
||||||
InputParsingUtil.mergeArguments(arguments, 0));
|
TabCompletionHelper.mergeArguments(arguments, 0));
|
||||||
if (arguments.length > 1) {
|
if (arguments.length > 1) {
|
||||||
return TabCompletionTypeUtil.getCleanedTabCompletions(arguments, filtered, 0, "");
|
return TabCompletionHelper.getCleanedTabCompletions(arguments, filtered, 0, "");
|
||||||
} else {
|
} else {
|
||||||
return filtered;
|
return filtered;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,11 +10,8 @@ import net.knarcraft.bookswithoutborders.manager.EconomyManager;
|
|||||||
import net.knarcraft.bookswithoutborders.state.BookDirectory;
|
import net.knarcraft.bookswithoutborders.state.BookDirectory;
|
||||||
import net.knarcraft.bookswithoutborders.state.ItemSlot;
|
import net.knarcraft.bookswithoutborders.state.ItemSlot;
|
||||||
import net.knarcraft.bookswithoutborders.utility.BookFileUtil;
|
import net.knarcraft.bookswithoutborders.utility.BookFileUtil;
|
||||||
import net.knarcraft.bookswithoutborders.utility.InputParsingUtil;
|
|
||||||
import net.knarcraft.bookswithoutborders.utility.InventoryUtil;
|
import net.knarcraft.bookswithoutborders.utility.InventoryUtil;
|
||||||
import net.knarcraft.bookswithoutborders.utility.TabCompletionTypeUtil;
|
|
||||||
import net.knarcraft.knarlib.formatting.FormatBuilder;
|
import net.knarcraft.knarlib.formatting.FormatBuilder;
|
||||||
import net.knarcraft.knarlib.util.TabCompletionHelper;
|
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.command.Command;
|
import org.bukkit.command.Command;
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
@@ -32,6 +29,11 @@ import java.util.List;
|
|||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
import java.util.regex.Pattern;
|
import java.util.regex.Pattern;
|
||||||
|
|
||||||
|
import static net.knarcraft.knarlib.util.TabCompletionHelper.filterMatchingContains;
|
||||||
|
import static net.knarcraft.knarlib.util.TabCompletionHelper.filterMatchingStartsWith;
|
||||||
|
import static net.knarcraft.knarlib.util.TabCompletionHelper.getCleanedTabCompletions;
|
||||||
|
import static net.knarcraft.knarlib.util.TabCompletionHelper.mergeArguments;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The command for altering configuration values
|
* The command for altering configuration values
|
||||||
*/
|
*/
|
||||||
@@ -64,9 +66,9 @@ public class CommandEditConfig implements TabExecutor {
|
|||||||
}
|
}
|
||||||
case TITLE_AUTHOR_SEPARATOR, LORE_LINE_SEPARATOR -> setSeparator(option, arguments[1], sender);
|
case TITLE_AUTHOR_SEPARATOR, LORE_LINE_SEPARATOR -> setSeparator(option, arguments[1], sender);
|
||||||
case LANGUAGE -> setString(option, arguments[1]);
|
case LANGUAGE -> setString(option, arguments[1]);
|
||||||
case MESSAGE_FOR_NEW_PLAYERS -> setString(option, InputParsingUtil.mergeArguments(0, arguments));
|
case MESSAGE_FOR_NEW_PLAYERS -> setString(option, mergeArguments(0, arguments));
|
||||||
case MAX_DUPLICATES -> setMaxDuplicates(arguments[1], sender);
|
case MAX_DUPLICATES -> setMaxDuplicates(arguments[1], sender);
|
||||||
case BOOKS_FOR_NEW_PLAYERS -> setBooks(InputParsingUtil.mergeArguments(1, arguments), sender);
|
case BOOKS_FOR_NEW_PLAYERS -> setBooks(mergeArguments(1, arguments), sender);
|
||||||
case PRICE_ITEM_TYPE, PRICE_QUANTITY -> setCost(arguments, sender);
|
case PRICE_ITEM_TYPE, PRICE_QUANTITY -> setCost(arguments, sender);
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -86,7 +88,7 @@ public class CommandEditConfig implements TabExecutor {
|
|||||||
for (ConfigOption option : ConfigOption.values()) {
|
for (ConfigOption option : ConfigOption.values()) {
|
||||||
configOptions.add(option.getOptionName());
|
configOptions.add(option.getOptionName());
|
||||||
}
|
}
|
||||||
return TabCompletionHelper.filterMatchingContains(configOptions, arguments[0]);
|
return filterMatchingContains(configOptions, arguments[0]);
|
||||||
}
|
}
|
||||||
|
|
||||||
ConfigOption option = ConfigOption.getByString(arguments[0]);
|
ConfigOption option = ConfigOption.getByString(arguments[0]);
|
||||||
@@ -103,24 +105,24 @@ public class CommandEditConfig implements TabExecutor {
|
|||||||
case FORMAT_AFTER_SIGNING, ENABLE_BOOKSHELF_PEEKING, AUTHOR_ONLY_COPY, AUTHOR_ONLY_SAVE,
|
case FORMAT_AFTER_SIGNING, ENABLE_BOOKSHELF_PEEKING, AUTHOR_ONLY_COPY, AUTHOR_ONLY_SAVE,
|
||||||
AUTHOR_ONLY_UNSIGN, ADMIN_AUTO_DECRYPT, USE_REAL_ENCRYPTION, ALLOW_PREVENT_ADMIN_DECRYPTION,
|
AUTHOR_ONLY_UNSIGN, ADMIN_AUTO_DECRYPT, USE_REAL_ENCRYPTION, ALLOW_PREVENT_ADMIN_DECRYPTION,
|
||||||
CHANGE_GENERATION_ON_COPY:
|
CHANGE_GENERATION_ON_COPY:
|
||||||
return TabCompletionHelper.filterMatchingContains(List.of("true", "false"), arguments[1]);
|
return filterMatchingContains(List.of("true", "false"), arguments[1]);
|
||||||
case PRICE_QUANTITY, PRICE_ITEM_TYPE:
|
case PRICE_QUANTITY, PRICE_ITEM_TYPE:
|
||||||
return TabCompletionHelper.filterMatchingContains(List.of(
|
return filterMatchingContains(List.of(
|
||||||
StaticMessage.COST_ECONOMY.toString().toLowerCase(),
|
StaticMessage.COST_ECONOMY.toString().toLowerCase(),
|
||||||
StaticMessage.COST_ITEM.toString(), CLEAR), arguments[1]);
|
StaticMessage.COST_ITEM.toString(), CLEAR), arguments[1]);
|
||||||
case LORE_LINE_SEPARATOR, LANGUAGE:
|
case LORE_LINE_SEPARATOR, LANGUAGE:
|
||||||
return TabCompletionHelper.filterMatchingStartsWith(List.of(String.valueOf(option.getDefaultValue())), arguments[1]);
|
return filterMatchingStartsWith(List.of(String.valueOf(option.getDefaultValue())), arguments[1]);
|
||||||
case MAX_DUPLICATES:
|
case MAX_DUPLICATES:
|
||||||
return TabCompletionHelper.filterMatchingStartsWith(List.of("1", "2", "3", "4", "5"), arguments[1]);
|
return filterMatchingStartsWith(List.of("1", "2", "3", "4", "5"), arguments[1]);
|
||||||
case MESSAGE_FOR_NEW_PLAYERS:
|
case MESSAGE_FOR_NEW_PLAYERS:
|
||||||
return List.of("Text text text", CLEAR);
|
return List.of("Text text text", CLEAR);
|
||||||
case TITLE_AUTHOR_SEPARATOR:
|
case TITLE_AUTHOR_SEPARATOR:
|
||||||
return TabCompletionHelper.filterMatchingStartsWith(List.of(",", "¤"), arguments[1]);
|
return filterMatchingStartsWith(List.of(",", "¤"), arguments[1]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (arguments.length == 3 && (option == ConfigOption.PRICE_QUANTITY || option == ConfigOption.PRICE_ITEM_TYPE)) {
|
if (arguments.length == 3 && (option == ConfigOption.PRICE_QUANTITY || option == ConfigOption.PRICE_ITEM_TYPE)) {
|
||||||
return TabCompletionHelper.filterMatchingStartsWith(List.of("0", "1", "5", "10"), arguments[2]);
|
return filterMatchingStartsWith(List.of("0", "1", "5", "10"), arguments[2]);
|
||||||
}
|
}
|
||||||
|
|
||||||
return List.of();
|
return List.of();
|
||||||
@@ -136,7 +138,7 @@ public class CommandEditConfig implements TabExecutor {
|
|||||||
@NotNull
|
@NotNull
|
||||||
private List<String> getBookTabCompletions(@NotNull String[] arguments, @NotNull CommandSender commandSender) {
|
private List<String> getBookTabCompletions(@NotNull String[] arguments, @NotNull CommandSender commandSender) {
|
||||||
List<String> availableBooks = BooksWithoutBorders.getAvailableBooks(commandSender, true);
|
List<String> availableBooks = BooksWithoutBorders.getAvailableBooks(commandSender, true);
|
||||||
String booksString = InputParsingUtil.mergeArguments(1, arguments);
|
String booksString = mergeArguments(1, arguments);
|
||||||
String prefix = "";
|
String prefix = "";
|
||||||
if (booksString.contains(BOOK_SEPARATOR)) {
|
if (booksString.contains(BOOK_SEPARATOR)) {
|
||||||
String[] parts = booksString.split(Pattern.quote(BOOK_SEPARATOR), -1);
|
String[] parts = booksString.split(Pattern.quote(BOOK_SEPARATOR), -1);
|
||||||
@@ -147,14 +149,14 @@ public class CommandEditConfig implements TabExecutor {
|
|||||||
}
|
}
|
||||||
booksString = parts[parts.length - 1];
|
booksString = parts[parts.length - 1];
|
||||||
|
|
||||||
List<String> filtered = TabCompletionHelper.filterMatchingContains(availableBooks, booksString);
|
List<String> filtered = filterMatchingContains(availableBooks, booksString);
|
||||||
return TabCompletionTypeUtil.getCleanedTabCompletions(newArguments, filtered, 0, prefix);
|
return getCleanedTabCompletions(newArguments, filtered, 0, prefix);
|
||||||
} else {
|
} else {
|
||||||
if (arguments.length == 2) {
|
if (arguments.length == 2) {
|
||||||
availableBooks.add(CLEAR);
|
availableBooks.add(CLEAR);
|
||||||
}
|
}
|
||||||
List<String> filtered = TabCompletionHelper.filterMatchingContains(availableBooks, booksString);
|
List<String> filtered = filterMatchingContains(availableBooks, booksString);
|
||||||
return TabCompletionTypeUtil.getCleanedTabCompletions(arguments, filtered, 1, prefix);
|
return getCleanedTabCompletions(arguments, filtered, 1, prefix);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -9,7 +9,6 @@ import net.knarcraft.bookswithoutborders.utility.BookLoaderUtil;
|
|||||||
import net.knarcraft.bookswithoutborders.utility.InputCleaningUtil;
|
import net.knarcraft.bookswithoutborders.utility.InputCleaningUtil;
|
||||||
import net.knarcraft.bookswithoutborders.utility.TabCompletionTypeUtil;
|
import net.knarcraft.bookswithoutborders.utility.TabCompletionTypeUtil;
|
||||||
import net.knarcraft.knarlib.formatting.FormatBuilder;
|
import net.knarcraft.knarlib.formatting.FormatBuilder;
|
||||||
import net.knarcraft.knarlib.util.TabCompletionHelper;
|
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.Server;
|
import org.bukkit.Server;
|
||||||
import org.bukkit.command.Command;
|
import org.bukkit.command.Command;
|
||||||
@@ -26,7 +25,10 @@ import java.util.List;
|
|||||||
import static java.lang.Boolean.parseBoolean;
|
import static java.lang.Boolean.parseBoolean;
|
||||||
import static net.knarcraft.bookswithoutborders.utility.InputParsingUtil.isBoolean;
|
import static net.knarcraft.bookswithoutborders.utility.InputParsingUtil.isBoolean;
|
||||||
import static net.knarcraft.bookswithoutborders.utility.InputParsingUtil.isInt;
|
import static net.knarcraft.bookswithoutborders.utility.InputParsingUtil.isInt;
|
||||||
import static net.knarcraft.bookswithoutborders.utility.InputParsingUtil.mergeArguments;
|
import static net.knarcraft.knarlib.util.TabCompletionHelper.filterMatchingContains;
|
||||||
|
import static net.knarcraft.knarlib.util.TabCompletionHelper.filterMatchingStartsWith;
|
||||||
|
import static net.knarcraft.knarlib.util.TabCompletionHelper.getCleanedTabCompletions;
|
||||||
|
import static net.knarcraft.knarlib.util.TabCompletionHelper.mergeArguments;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Command executor for the give command
|
* Command executor for the give command
|
||||||
@@ -89,15 +91,15 @@ public class CommandGive implements TabExecutor {
|
|||||||
Server server = booksWithoutBorders.getServer();
|
Server server = booksWithoutBorders.getServer();
|
||||||
int argumentCount = arguments.length;
|
int argumentCount = arguments.length;
|
||||||
if (argumentCount == 1) {
|
if (argumentCount == 1) {
|
||||||
return TabCompletionHelper.filterMatchingContains(BooksWithoutBorders.getAvailableBooks(sender, listPublic), arguments[0]);
|
return filterMatchingContains(BooksWithoutBorders.getAvailableBooks(sender, listPublic), arguments[0]);
|
||||||
}
|
}
|
||||||
|
|
||||||
List<String> output = new ArrayList<>();
|
List<String> output = new ArrayList<>();
|
||||||
List<String> books = BooksWithoutBorders.getAvailableBooks(sender, listPublic);
|
List<String> books = BooksWithoutBorders.getAvailableBooks(sender, listPublic);
|
||||||
List<String> filtered = TabCompletionHelper.filterMatchingContains(books, mergeArguments(arguments, 0));
|
List<String> filtered = filterMatchingContains(books, mergeArguments(arguments, 0));
|
||||||
|
|
||||||
if (!filtered.isEmpty()) {
|
if (!filtered.isEmpty()) {
|
||||||
List<String> cleaned = TabCompletionTypeUtil.getCleanedTabCompletions(arguments, filtered, 0, "");
|
List<String> cleaned = getCleanedTabCompletions(arguments, filtered, 0, "");
|
||||||
if (!books.contains(mergeArguments(arguments, 1))) {
|
if (!books.contains(mergeArguments(arguments, 1))) {
|
||||||
return cleaned;
|
return cleaned;
|
||||||
} else {
|
} else {
|
||||||
@@ -109,17 +111,17 @@ public class CommandGive implements TabExecutor {
|
|||||||
return output;
|
return output;
|
||||||
} else if (argumentCount > 2 && server.getPlayerExact(arguments[argumentCount - 3]) != null &&
|
} else if (argumentCount > 2 && server.getPlayerExact(arguments[argumentCount - 3]) != null &&
|
||||||
isInt(arguments[argumentCount - 2])) {
|
isInt(arguments[argumentCount - 2])) {
|
||||||
output.addAll(TabCompletionHelper.filterMatchingStartsWith(
|
output.addAll(filterMatchingStartsWith(
|
||||||
TabCompletionTypeUtil.getBooleans(), arguments[argumentCount - 1]));
|
TabCompletionTypeUtil.getBooleans(), arguments[argumentCount - 1]));
|
||||||
} else if (argumentCount > 2 && server.getPlayerExact(arguments[argumentCount - 2]) != null) {
|
} else if (argumentCount > 2 && server.getPlayerExact(arguments[argumentCount - 2]) != null) {
|
||||||
output.addAll(TabCompletionHelper.filterMatchingStartsWith(
|
output.addAll(filterMatchingStartsWith(
|
||||||
TabCompletionTypeUtil.getBooleansAndNumbers(1, 3), arguments[argumentCount - 1]));
|
TabCompletionTypeUtil.getBooleansAndNumbers(1, 3), arguments[argumentCount - 1]));
|
||||||
} else {
|
} else {
|
||||||
List<String> players = new ArrayList<>();
|
List<String> players = new ArrayList<>();
|
||||||
for (Player player : Bukkit.getOnlinePlayers()) {
|
for (Player player : Bukkit.getOnlinePlayers()) {
|
||||||
players.add(player.getName());
|
players.add(player.getName());
|
||||||
}
|
}
|
||||||
output.addAll(TabCompletionHelper.filterMatchingStartsWith(players, arguments[argumentCount - 1]));
|
output.addAll(filterMatchingStartsWith(players, arguments[argumentCount - 1]));
|
||||||
}
|
}
|
||||||
return output;
|
return output;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,7 +8,6 @@ import net.knarcraft.bookswithoutborders.utility.BookLoaderUtil;
|
|||||||
import net.knarcraft.bookswithoutborders.utility.InputCleaningUtil;
|
import net.knarcraft.bookswithoutborders.utility.InputCleaningUtil;
|
||||||
import net.knarcraft.bookswithoutborders.utility.TabCompletionTypeUtil;
|
import net.knarcraft.bookswithoutborders.utility.TabCompletionTypeUtil;
|
||||||
import net.knarcraft.knarlib.formatting.FormatBuilder;
|
import net.knarcraft.knarlib.formatting.FormatBuilder;
|
||||||
import net.knarcraft.knarlib.util.TabCompletionHelper;
|
|
||||||
import org.bukkit.command.Command;
|
import org.bukkit.command.Command;
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
import org.bukkit.command.TabExecutor;
|
import org.bukkit.command.TabExecutor;
|
||||||
@@ -22,7 +21,10 @@ import java.util.List;
|
|||||||
import static java.lang.Integer.parseInt;
|
import static java.lang.Integer.parseInt;
|
||||||
import static net.knarcraft.bookswithoutborders.utility.InputParsingUtil.isBoolean;
|
import static net.knarcraft.bookswithoutborders.utility.InputParsingUtil.isBoolean;
|
||||||
import static net.knarcraft.bookswithoutborders.utility.InputParsingUtil.isInt;
|
import static net.knarcraft.bookswithoutborders.utility.InputParsingUtil.isInt;
|
||||||
import static net.knarcraft.bookswithoutborders.utility.InputParsingUtil.mergeArguments;
|
import static net.knarcraft.knarlib.util.TabCompletionHelper.filterMatchingContains;
|
||||||
|
import static net.knarcraft.knarlib.util.TabCompletionHelper.filterMatchingStartsWith;
|
||||||
|
import static net.knarcraft.knarlib.util.TabCompletionHelper.getCleanedTabCompletions;
|
||||||
|
import static net.knarcraft.knarlib.util.TabCompletionHelper.mergeArguments;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Command executor for the load command
|
* Command executor for the load command
|
||||||
@@ -83,16 +85,16 @@ public class CommandLoad implements TabExecutor {
|
|||||||
protected List<String> doTabCompletion(@NotNull CommandSender sender, @NotNull String[] arguments, boolean loadPublic) {
|
protected List<String> doTabCompletion(@NotNull CommandSender sender, @NotNull String[] arguments, boolean loadPublic) {
|
||||||
int argumentCount = arguments.length;
|
int argumentCount = arguments.length;
|
||||||
if (argumentCount == 1) {
|
if (argumentCount == 1) {
|
||||||
return TabCompletionHelper.filterMatchingContains(BooksWithoutBorders.getAvailableBooks(sender, loadPublic), arguments[0]);
|
return filterMatchingContains(BooksWithoutBorders.getAvailableBooks(sender, loadPublic), arguments[0]);
|
||||||
}
|
}
|
||||||
|
|
||||||
List<String> output = new ArrayList<>();
|
List<String> output = new ArrayList<>();
|
||||||
List<String> books = BooksWithoutBorders.getAvailableBooks(sender, loadPublic);
|
List<String> books = BooksWithoutBorders.getAvailableBooks(sender, loadPublic);
|
||||||
List<String> filtered = TabCompletionHelper.filterMatchingContains(books,
|
List<String> filtered = filterMatchingContains(books,
|
||||||
mergeArguments(arguments, 0));
|
mergeArguments(arguments, 0));
|
||||||
|
|
||||||
if (!filtered.isEmpty()) {
|
if (!filtered.isEmpty()) {
|
||||||
List<String> cleaned = TabCompletionTypeUtil.getCleanedTabCompletions(arguments, filtered, 0, "");
|
List<String> cleaned = getCleanedTabCompletions(arguments, filtered, 0, "");
|
||||||
if (!books.contains(mergeArguments(arguments, 1))) {
|
if (!books.contains(mergeArguments(arguments, 1))) {
|
||||||
return cleaned;
|
return cleaned;
|
||||||
} else {
|
} else {
|
||||||
@@ -103,9 +105,9 @@ public class CommandLoad implements TabExecutor {
|
|||||||
if (isBoolean(arguments[argumentCount - 2])) {
|
if (isBoolean(arguments[argumentCount - 2])) {
|
||||||
return output;
|
return output;
|
||||||
} else if (isInt(arguments[argumentCount - 2])) {
|
} else if (isInt(arguments[argumentCount - 2])) {
|
||||||
output.addAll(TabCompletionHelper.filterMatchingStartsWith(TabCompletionTypeUtil.getBooleans(), arguments[argumentCount - 1]));
|
output.addAll(filterMatchingStartsWith(TabCompletionTypeUtil.getBooleans(), arguments[argumentCount - 1]));
|
||||||
} else {
|
} else {
|
||||||
output.addAll(TabCompletionHelper.filterMatchingStartsWith(TabCompletionTypeUtil.getBooleansAndNumbers(1, 3), arguments[argumentCount - 1]));
|
output.addAll(filterMatchingStartsWith(TabCompletionTypeUtil.getBooleansAndNumbers(1, 3), arguments[argumentCount - 1]));
|
||||||
}
|
}
|
||||||
return output;
|
return output;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ import net.knarcraft.bookswithoutborders.state.ItemSlot;
|
|||||||
import net.knarcraft.bookswithoutborders.utility.InputParsingUtil;
|
import net.knarcraft.bookswithoutborders.utility.InputParsingUtil;
|
||||||
import net.knarcraft.bookswithoutborders.utility.InventoryUtil;
|
import net.knarcraft.bookswithoutborders.utility.InventoryUtil;
|
||||||
import net.knarcraft.knarlib.formatting.FormatBuilder;
|
import net.knarcraft.knarlib.formatting.FormatBuilder;
|
||||||
|
import net.knarcraft.knarlib.util.TabCompletionHelper;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.command.Command;
|
import org.bukkit.command.Command;
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
@@ -47,7 +48,7 @@ public class CommandSetTitle implements TabExecutor {
|
|||||||
String title;
|
String title;
|
||||||
if (InputParsingUtil.isBoolean(arguments[arguments.length - 1])) {
|
if (InputParsingUtil.isBoolean(arguments[arguments.length - 1])) {
|
||||||
setDisplayName = Boolean.parseBoolean(arguments[arguments.length - 1]);
|
setDisplayName = Boolean.parseBoolean(arguments[arguments.length - 1]);
|
||||||
title = InputParsingUtil.mergeArguments(arguments, 1);
|
title = TabCompletionHelper.mergeArguments(arguments, 1);
|
||||||
} else {
|
} else {
|
||||||
title = String.join(" ", arguments);
|
title = String.join(" ", arguments);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,8 +7,8 @@ import net.knarcraft.bookswithoutborders.config.translation.Placeholder;
|
|||||||
import net.knarcraft.bookswithoutborders.container.Bookshelf;
|
import net.knarcraft.bookswithoutborders.container.Bookshelf;
|
||||||
import net.knarcraft.bookswithoutborders.handler.BookshelfHandler;
|
import net.knarcraft.bookswithoutborders.handler.BookshelfHandler;
|
||||||
import net.knarcraft.bookswithoutborders.utility.BookMetaUtil;
|
import net.knarcraft.bookswithoutborders.utility.BookMetaUtil;
|
||||||
import net.knarcraft.bookswithoutborders.utility.IntegerToRomanUtil;
|
|
||||||
import net.knarcraft.knarlib.formatting.FormatBuilder;
|
import net.knarcraft.knarlib.formatting.FormatBuilder;
|
||||||
|
import net.knarcraft.knarlib.util.IntegerToRomanUtil;
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.block.Block;
|
import org.bukkit.block.Block;
|
||||||
@@ -202,7 +202,7 @@ public class BookshelfListener implements Listener {
|
|||||||
@NotNull
|
@NotNull
|
||||||
private String getEnchantmentName(@NotNull Enchantment enchantment) {
|
private String getEnchantmentName(@NotNull Enchantment enchantment) {
|
||||||
// Note: While depreciated, changing this is incompatible with Paper
|
// Note: While depreciated, changing this is incompatible with Paper
|
||||||
return uppercaseFirst(enchantment.getKey().getKey().replace("_", " "));
|
return uppercaseFirstEachWord(enchantment.getKey().getKey().replace("_", " "));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -212,7 +212,7 @@ public class BookshelfListener implements Listener {
|
|||||||
* @return <p>The input string with more uppercase</p>
|
* @return <p>The input string with more uppercase</p>
|
||||||
*/
|
*/
|
||||||
@NotNull
|
@NotNull
|
||||||
private String uppercaseFirst(@NotNull String input) {
|
private String uppercaseFirstEachWord(@NotNull String input) {
|
||||||
String[] parts = input.split(" ");
|
String[] parts = input.split(" ");
|
||||||
for (int i = 0; i < parts.length; i++) {
|
for (int i = 0; i < parts.length; i++) {
|
||||||
parts[i] = parts[i].substring(0, 1).toUpperCase() + parts[i].substring(1);
|
parts[i] = parts[i].substring(0, 1).toUpperCase() + parts[i].substring(1);
|
||||||
|
|||||||
@@ -32,47 +32,6 @@ public final class InputParsingUtil {
|
|||||||
return input.matches("[0-9]+");
|
return input.matches("[0-9]+");
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Merges all arguments to a string with spaces
|
|
||||||
*
|
|
||||||
* @param arguments <p>The arguments to merge</p>
|
|
||||||
* @param stripLastN <p>How many of the last arguments to ignore</p>
|
|
||||||
* @return <p>The merged arguments</p>
|
|
||||||
*/
|
|
||||||
@NotNull
|
|
||||||
public static String mergeArguments(@NotNull String[] arguments, int stripLastN) {
|
|
||||||
return mergeArguments(0, arguments, stripLastN);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Merges all arguments to a string with spaces
|
|
||||||
*
|
|
||||||
* @param stripFirstN <p>How many of the first arguments to ignore</p>
|
|
||||||
* @param arguments <p>The arguments to merge</p>
|
|
||||||
* @return <p>The merged arguments</p>
|
|
||||||
*/
|
|
||||||
@NotNull
|
|
||||||
public static String mergeArguments(int stripFirstN, @NotNull String[] arguments) {
|
|
||||||
return mergeArguments(stripFirstN, arguments, 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Merges all arguments to a string with spaces
|
|
||||||
*
|
|
||||||
* @param stripFirstN <p>How many of the first arguments to ignore</p>
|
|
||||||
* @param arguments <p>The arguments to merge</p>
|
|
||||||
* @param stripLastN <p>How many of the last arguments to ignore</p>
|
|
||||||
* @return <p>The merged arguments</p>
|
|
||||||
*/
|
|
||||||
@NotNull
|
|
||||||
public static String mergeArguments(int stripFirstN, @NotNull String[] arguments, int stripLastN) {
|
|
||||||
StringBuilder builder = new StringBuilder(arguments[stripFirstN]);
|
|
||||||
for (int i = stripFirstN + 1; i < arguments.length - stripLastN; i++) {
|
|
||||||
builder.append(" ").append(arguments[i]);
|
|
||||||
}
|
|
||||||
return builder.toString();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Parses a page number for a string like "page1"
|
* Parses a page number for a string like "page1"
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -1,94 +0,0 @@
|
|||||||
package net.knarcraft.bookswithoutborders.utility;
|
|
||||||
|
|
||||||
import org.jetbrains.annotations.NotNull;
|
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* A utility for converting from an integer to a roman numeral
|
|
||||||
*/
|
|
||||||
public final class IntegerToRomanUtil {
|
|
||||||
|
|
||||||
private final static List<Integer> romanValues = new ArrayList<>();
|
|
||||||
private final static List<Character> romanCharacters = new ArrayList<>();
|
|
||||||
|
|
||||||
static {
|
|
||||||
// Initialize the roman numbers
|
|
||||||
romanValues.add(1000);
|
|
||||||
romanValues.add(500);
|
|
||||||
romanValues.add(100);
|
|
||||||
romanValues.add(50);
|
|
||||||
romanValues.add(10);
|
|
||||||
romanValues.add(5);
|
|
||||||
romanValues.add(1);
|
|
||||||
|
|
||||||
romanCharacters.add('M');
|
|
||||||
romanCharacters.add('D');
|
|
||||||
romanCharacters.add('C');
|
|
||||||
romanCharacters.add('L');
|
|
||||||
romanCharacters.add('X');
|
|
||||||
romanCharacters.add('V');
|
|
||||||
romanCharacters.add('I');
|
|
||||||
}
|
|
||||||
|
|
||||||
private IntegerToRomanUtil() {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Gets the given number as a roman number string
|
|
||||||
*
|
|
||||||
* @param number <p>The number to convert</p>
|
|
||||||
* @return <p>The roman representation of the number</p>
|
|
||||||
*/
|
|
||||||
@NotNull
|
|
||||||
public static String getRomanNumber(int number) {
|
|
||||||
StringBuilder output = new StringBuilder();
|
|
||||||
int remainder = number;
|
|
||||||
for (int i = 0; i < romanCharacters.size(); i++) {
|
|
||||||
int romanValue = romanValues.get(i);
|
|
||||||
char romanCharacter = romanCharacters.get(i);
|
|
||||||
|
|
||||||
// Repeat the roman character, and calculate the new remainder
|
|
||||||
if (remainder >= romanValue) {
|
|
||||||
output.append(repeat(romanCharacter, remainder / romanValue));
|
|
||||||
remainder = remainder % romanValue;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Exit early to prevent unexpected trailing characters
|
|
||||||
if (remainder == 0) {
|
|
||||||
return output.toString();
|
|
||||||
}
|
|
||||||
|
|
||||||
// Generate the special case IV and similar
|
|
||||||
for (int j = i; j < romanCharacters.size(); j++) {
|
|
||||||
int value = romanValues.get(j);
|
|
||||||
int difference = Math.max(romanValue - value, 0);
|
|
||||||
|
|
||||||
/* If the remainder is "one" less than the current roman value, we hit the IV/IX/XL case.
|
|
||||||
Note that 5 triggers the special case when 10 is tested, as 5 = 10 - 5, which requires a test, so it
|
|
||||||
can be filtered out. */
|
|
||||||
if (remainder == difference && value != romanValue / 2) {
|
|
||||||
output.append(romanCharacters.get(j)).append(romanCharacter);
|
|
||||||
remainder = 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return output.toString();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Repeats the given character
|
|
||||||
*
|
|
||||||
* @param character <p>The character to repeat</p>
|
|
||||||
* @param times <p>The number of times to repeat the character</p>
|
|
||||||
* @return <p>The repeated string</p>
|
|
||||||
*/
|
|
||||||
@NotNull
|
|
||||||
private static String repeat(char character, int times) {
|
|
||||||
return String.valueOf(character).repeat(Math.max(0, times));
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -20,10 +20,7 @@ public final class TabCompletionTypeUtil {
|
|||||||
*/
|
*/
|
||||||
@NotNull
|
@NotNull
|
||||||
public static List<String> getBooleans() {
|
public static List<String> getBooleans() {
|
||||||
List<String> booleans = new ArrayList<>();
|
return List.of("true", "false");
|
||||||
booleans.add("true");
|
|
||||||
booleans.add("false");
|
|
||||||
return booleans;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -52,47 +49,9 @@ public final class TabCompletionTypeUtil {
|
|||||||
@NotNull
|
@NotNull
|
||||||
public static List<String> getBooleansAndNumbers(int start, int end) {
|
public static List<String> getBooleansAndNumbers(int start, int end) {
|
||||||
List<String> booleansAndNumbers = new ArrayList<>();
|
List<String> booleansAndNumbers = new ArrayList<>();
|
||||||
List<String> booleans = getBooleans();
|
booleansAndNumbers.addAll(getBooleans());
|
||||||
List<String> numbers = getNumbers(start, end);
|
booleansAndNumbers.addAll(getNumbers(start, end));
|
||||||
booleansAndNumbers.addAll(booleans);
|
|
||||||
booleansAndNumbers.addAll(numbers);
|
|
||||||
return booleansAndNumbers;
|
return booleansAndNumbers;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Gets tab-completions with only remaining text, from a list of full strings
|
|
||||||
*
|
|
||||||
* @param arguments <p>The arguments given by the user</p>
|
|
||||||
* @param filtered <p>Tab-completions filtered by user input</p>
|
|
||||||
* @param offset <p>The offset to use, if other arguments are preceding the book specification</p>
|
|
||||||
* @param prefix <p>The prefix to use before each tab-completion</p>
|
|
||||||
* @return <p>The cleaned tab-completions</p>
|
|
||||||
*/
|
|
||||||
@NotNull
|
|
||||||
public static List<String> getCleanedTabCompletions(@NotNull String[] arguments, @NotNull List<String> filtered,
|
|
||||||
int offset, @NotNull String prefix) {
|
|
||||||
List<String> cleaned = new ArrayList<>();
|
|
||||||
int offsetCount = arguments.length - offset;
|
|
||||||
for (String name : filtered) {
|
|
||||||
int startIndex = arguments.length == 0 ? 0 : (offsetCount > 1 ? offsetCount - 1 : 0);
|
|
||||||
String[] parts = name.split(" ", -1);
|
|
||||||
// Skip non-matching entries
|
|
||||||
if ((offsetCount > 1 && !parts[offsetCount - 2].equalsIgnoreCase(arguments[offsetCount - 2 + offset])) ||
|
|
||||||
startIndex >= parts.length) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (startIndex == 0) {
|
|
||||||
cleaned.add(prefix + name);
|
|
||||||
} else {
|
|
||||||
StringBuilder builder = new StringBuilder(prefix).append(parts[startIndex]);
|
|
||||||
for (int i = startIndex + 1; i < parts.length; i++) {
|
|
||||||
builder.append(" ").append(parts[i]);
|
|
||||||
}
|
|
||||||
cleaned.add(builder.toString());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return cleaned;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,40 +0,0 @@
|
|||||||
package net.knarcraft.bookswithoutborders.util;
|
|
||||||
|
|
||||||
import org.junit.Test;
|
|
||||||
|
|
||||||
import static net.knarcraft.bookswithoutborders.utility.IntegerToRomanUtil.getRomanNumber;
|
|
||||||
import static org.junit.Assert.assertEquals;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* A test class for IntegerToRomanConverter
|
|
||||||
*/
|
|
||||||
public class IntegerToRomanUtilTest {
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void basicNumbersTest() {
|
|
||||||
assertEquals("I", getRomanNumber(1));
|
|
||||||
assertEquals("II", getRomanNumber(2));
|
|
||||||
assertEquals("III", getRomanNumber(3));
|
|
||||||
assertEquals("IV", getRomanNumber(4));
|
|
||||||
assertEquals("V", getRomanNumber(5));
|
|
||||||
assertEquals("X", getRomanNumber(10));
|
|
||||||
assertEquals("XV", getRomanNumber(15));
|
|
||||||
assertEquals("XX", getRomanNumber(20));
|
|
||||||
assertEquals("L", getRomanNumber(50));
|
|
||||||
assertEquals("C", getRomanNumber(100));
|
|
||||||
assertEquals("D", getRomanNumber(500));
|
|
||||||
assertEquals("M", getRomanNumber(1000));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void nineFourTest() {
|
|
||||||
assertEquals("IV", getRomanNumber(4));
|
|
||||||
assertEquals("IX", getRomanNumber(9));
|
|
||||||
assertEquals("XIV", getRomanNumber(14));
|
|
||||||
assertEquals("XIX", getRomanNumber(19));
|
|
||||||
assertEquals("XXIV", getRomanNumber(24));
|
|
||||||
assertEquals("XL", getRomanNumber(40));
|
|
||||||
assertEquals("IL", getRomanNumber(49));
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
Reference in New Issue
Block a user