Signed-off-by: Quentin Legot <legotquentin@gmail.com>
This commit is contained in:
parent
351b8aaf84
commit
48e53e0edb
@ -6,6 +6,7 @@ import net.minecraft.text.ClickEvent;
|
|||||||
import net.minecraft.text.MutableText;
|
import net.minecraft.text.MutableText;
|
||||||
import net.minecraft.text.Text;
|
import net.minecraft.text.Text;
|
||||||
import net.minecraft.util.Formatting;
|
import net.minecraft.util.Formatting;
|
||||||
|
import org.jetbrains.annotations.Nullable;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@ -29,26 +30,44 @@ public class PaginatedContent {
|
|||||||
secondSplit.add(elem);
|
secondSplit.add(elem);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
int line = 0;
|
|
||||||
List<Text> currentPage = new ArrayList<>();
|
List<Text> currentPage = new ArrayList<>();
|
||||||
for(String elem : secondSplit) {
|
for(String elem : secondSplit) {
|
||||||
line++;
|
if(!elem.isEmpty()) {
|
||||||
if(!elem.isEmpty())
|
|
||||||
currentPage.add(Text.literal(elem));
|
currentPage.add(Text.literal(elem));
|
||||||
if(line == 8 || elem.isEmpty()) {
|
}
|
||||||
|
if(currentPage.size() == 8 || elem.isEmpty()) {
|
||||||
pages.add(new Page(currentPage));
|
pages.add(new Page(currentPage));
|
||||||
line = 0;
|
|
||||||
currentPage = new ArrayList<>();
|
currentPage = new ArrayList<>();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
pages.add(new Page(currentPage));
|
pages.add(new Page(currentPage));
|
||||||
}
|
}
|
||||||
|
|
||||||
private Text buildHeader(String header) {
|
public PaginatedContent(@Nullable Text header, List<Text> content) {
|
||||||
int numberOfEq = (50 - header.length()) / 2;
|
this.header = buildHeader(header);
|
||||||
|
this.pages = new ArrayList<>();
|
||||||
|
List<Text> currentPage = new ArrayList<>();
|
||||||
|
for(Text elem : content) {
|
||||||
|
if(elem != null)
|
||||||
|
currentPage.add(elem);
|
||||||
|
if(currentPage.size() == 8 || elem == null) {
|
||||||
|
pages.add(new Page(currentPage));
|
||||||
|
currentPage = new ArrayList<>();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
pages.add(new Page(currentPage));
|
||||||
|
}
|
||||||
|
|
||||||
|
private Text buildHeader(@Nullable String header) {
|
||||||
|
int numberOfEq = (50 - (header != null ? header.length() : 0)) / 2;
|
||||||
return Text.literal("=".repeat(numberOfEq) + " " + header + " " + "=".repeat(numberOfEq));
|
return Text.literal("=".repeat(numberOfEq) + " " + header + " " + "=".repeat(numberOfEq));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private Text buildHeader(@Nullable Text header) {
|
||||||
|
int numberOfEq = (50 - (header != null ? header.getString().length() : 0)) / 2;
|
||||||
|
return Text.literal("=".repeat(numberOfEq) + " ").append(header).append(" " + "=".repeat(numberOfEq));
|
||||||
|
}
|
||||||
|
|
||||||
public void display(ServerPlayerEntity playerEntity, int page) throws PageIndexOutOfBoundException {
|
public void display(ServerPlayerEntity playerEntity, int page) throws PageIndexOutOfBoundException {
|
||||||
if(page >= this.pages.size()) {
|
if(page >= this.pages.size()) {
|
||||||
throw new PageIndexOutOfBoundException("api.pagination.page_higher_than_expected", this.pages.size(), (page + 1));
|
throw new PageIndexOutOfBoundException("api.pagination.page_higher_than_expected", this.pages.size(), (page + 1));
|
||||||
|
@ -2,6 +2,7 @@ package fr.altarik.toolbox.pagination.api;
|
|||||||
|
|
||||||
import net.minecraft.server.network.ServerPlayerEntity;
|
import net.minecraft.server.network.ServerPlayerEntity;
|
||||||
import net.minecraft.text.Text;
|
import net.minecraft.text.Text;
|
||||||
|
import org.jetbrains.annotations.Nullable;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@ -48,7 +49,7 @@ public interface PaginationApi {
|
|||||||
* </ol>
|
* </ol>
|
||||||
* @see Text#empty()
|
* @see Text#empty()
|
||||||
*/
|
*/
|
||||||
void createTable(ServerPlayerEntity playerEntity, List<Text> content, Text header, boolean display);
|
void createTable(ServerPlayerEntity playerEntity, List<Text> content, @Nullable Text header, boolean display);
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -9,6 +9,7 @@ import net.minecraft.server.MinecraftServer;
|
|||||||
import net.minecraft.server.network.ServerPlayerEntity;
|
import net.minecraft.server.network.ServerPlayerEntity;
|
||||||
import net.minecraft.text.Text;
|
import net.minecraft.text.Text;
|
||||||
import net.minecraft.util.Pair;
|
import net.minecraft.util.Pair;
|
||||||
|
import org.jetbrains.annotations.Nullable;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
@ -35,6 +36,19 @@ public class PaginationApiImpl implements PaginationApi {
|
|||||||
throw new IllegalArgumentException("Preconditions aren't satisfied");
|
throw new IllegalArgumentException("Preconditions aren't satisfied");
|
||||||
}
|
}
|
||||||
PaginatedContent paginatedContent1 = new PaginatedContent(header, content);
|
PaginatedContent paginatedContent1 = new PaginatedContent(header, content);
|
||||||
|
storeAndDisplay(playerEntity, paginatedContent1, display);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void createTable(ServerPlayerEntity playerEntity, List<Text> content, @Nullable Text header, boolean display) {
|
||||||
|
if(playerCondition.test(playerEntity)) {
|
||||||
|
throw new IllegalArgumentException("Preconditions aren't satisfied");
|
||||||
|
}
|
||||||
|
PaginatedContent paginatedContent1 = new PaginatedContent(header, content);
|
||||||
|
storeAndDisplay(playerEntity, paginatedContent1, display);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void storeAndDisplay(ServerPlayerEntity playerEntity, PaginatedContent paginatedContent1, boolean display) {
|
||||||
paginatedContent.put(playerEntity, new Pair<>(18000, paginatedContent1));
|
paginatedContent.put(playerEntity, new Pair<>(18000, paginatedContent1));
|
||||||
if(display) {
|
if(display) {
|
||||||
try {
|
try {
|
||||||
@ -45,11 +59,6 @@ public class PaginationApiImpl implements PaginationApi {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void createTable(ServerPlayerEntity playerEntity, List<Text> content, Text header, boolean display) {
|
|
||||||
throw new UnsupportedOperationException("Not yet implemented");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void display(ServerPlayerEntity player, int page) throws PageIndexOutOfBoundException {
|
public void display(ServerPlayerEntity player, int page) throws PageIndexOutOfBoundException {
|
||||||
if(player == null)
|
if(player == null)
|
||||||
|
@ -9,6 +9,10 @@ import fr.altarik.toolbox.pagination.Pagination;
|
|||||||
import fr.altarik.toolbox.pagination.api.PageIndexOutOfBoundException;
|
import fr.altarik.toolbox.pagination.api.PageIndexOutOfBoundException;
|
||||||
import fr.altarik.toolbox.pagination.api.PaginationApi;
|
import fr.altarik.toolbox.pagination.api.PaginationApi;
|
||||||
import net.minecraft.server.command.ServerCommandSource;
|
import net.minecraft.server.command.ServerCommandSource;
|
||||||
|
import net.minecraft.text.Text;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
import static net.minecraft.server.command.CommandManager.argument;
|
import static net.minecraft.server.command.CommandManager.argument;
|
||||||
import static net.minecraft.server.command.CommandManager.literal;
|
import static net.minecraft.server.command.CommandManager.literal;
|
||||||
@ -30,6 +34,9 @@ public class CommandsRegister {
|
|||||||
).then(literal("test")
|
).then(literal("test")
|
||||||
.requires(source -> source.isExecutedByPlayer() && source.hasPermissionLevel(3))
|
.requires(source -> source.isExecutedByPlayer() && source.hasPermissionLevel(3))
|
||||||
.executes(this::testPageCommand)
|
.executes(this::testPageCommand)
|
||||||
|
).then(literal("testText")
|
||||||
|
.requires(source -> source.isExecutedByPlayer() && source.hasPermissionLevel(3))
|
||||||
|
.executes(this::testPageTextCommand)
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@ -39,7 +46,7 @@ public class CommandsRegister {
|
|||||||
*/
|
*/
|
||||||
private int testPageCommand(CommandContext<ServerCommandSource> context) {
|
private int testPageCommand(CommandContext<ServerCommandSource> context) {
|
||||||
api.createTable(context.getSource().getPlayer(), """
|
api.createTable(context.getSource().getPlayer(), """
|
||||||
first line
|
first line, string version
|
||||||
Second line
|
Second line
|
||||||
|
|
||||||
second page
|
second page
|
||||||
@ -57,6 +64,26 @@ public class CommandsRegister {
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private int testPageTextCommand(CommandContext<ServerCommandSource> context) {
|
||||||
|
List<Text> content = new ArrayList<>();
|
||||||
|
content.add(Text.literal("first line, text version"));
|
||||||
|
content.add(Text.literal("Second line"));
|
||||||
|
content.add(null);
|
||||||
|
content.add(Text.literal("second page"));
|
||||||
|
content.add(Text.literal("dqdq"));
|
||||||
|
content.add(Text.literal("dqdqd"));
|
||||||
|
content.add(Text.literal("dqdqd"));
|
||||||
|
content.add(Text.literal("dqdq"));
|
||||||
|
content.add(Text.literal("dqdq"));
|
||||||
|
content.add(Text.literal("dqdq"));
|
||||||
|
content.add(Text.literal("dqdqd"));
|
||||||
|
content.add(Text.literal("third page"));
|
||||||
|
content.add(Text.literal("dqdqd"));
|
||||||
|
content.add(Text.literal("dqdqd"));
|
||||||
|
api.createTable(context.getSource().getPlayer(), content, Text.literal("My Text Header"), true);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
private int selectPageCommand(CommandContext<ServerCommandSource> context) throws CommandSyntaxException {
|
private int selectPageCommand(CommandContext<ServerCommandSource> context) throws CommandSyntaxException {
|
||||||
try {
|
try {
|
||||||
int page = IntegerArgumentType.getInteger(context, "page");
|
int page = IntegerArgumentType.getInteger(context, "page");
|
||||||
@ -67,4 +94,9 @@ public class CommandsRegister {
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private enum TestType {
|
||||||
|
String,
|
||||||
|
Text;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user