From c73ec8816a517cf684807c31d681ccfa925ccb22 Mon Sep 17 00:00:00 2001 From: UDPSendToFailed Date: Sat, 28 Feb 2026 22:21:46 +0100 Subject: [PATCH] Fix server freezing with /give written_book --- .../java/com/earth2me/essentials/MetaItemStack.java | 10 ++++++++-- Essentials/src/main/resources/messages.properties | 1 + Essentials/src/main/resources/messages_en.properties | 1 + 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/Essentials/src/main/java/com/earth2me/essentials/MetaItemStack.java b/Essentials/src/main/java/com/earth2me/essentials/MetaItemStack.java index 43e6c6f026e..48c6984a32f 100644 --- a/Essentials/src/main/java/com/earth2me/essentials/MetaItemStack.java +++ b/Essentials/src/main/java/com/earth2me/essentials/MetaItemStack.java @@ -308,8 +308,14 @@ public void addStringMeta(final CommandSource sender, final boolean allowUnsafe, final BookMeta meta = (BookMeta) stack.getItemMeta(); meta.setTitle(title); stack.setItemMeta(meta); - } else if (split.length > 1 && split[0].startsWith("page") && split[0].length() > 4 && MaterialUtil.isEditableBook(stack.getType()) && hasMetaPermission(sender, "page", false, true, ess)) { - final int page = NumberUtil.isInt(split[0].substring(4)) ? (Integer.parseInt(split[0].substring(4)) - 1) : 0; + } else if (split.length > 1 && split[0].startsWith("page") && split[0].length() > 4 + && MaterialUtil.isEditableBook(stack.getType()) + && hasMetaPermission(sender, "page", false, true, ess)) { + final int page = NumberUtil.isInt(split[0].substring(4)) ? (Integer.parseInt(split[0].substring(4)) - 1) + : 0; + if (page > 100) { + throw new TranslatableException("pageLimitExceeded"); + } final BookMeta meta = (BookMeta) stack.getItemMeta(); final List pages = meta.hasPages() ? new ArrayList<>(meta.getPages()) : new ArrayList<>(); final List lines = new ArrayList<>(); diff --git a/Essentials/src/main/resources/messages.properties b/Essentials/src/main/resources/messages.properties index 2eb9381f265..50e945d886f 100644 --- a/Essentials/src/main/resources/messages.properties +++ b/Essentials/src/main/resources/messages.properties @@ -909,6 +909,7 @@ openingDisposal=Opening disposal menu... orderBalances=Ordering balances of {0} users, please wait... oversizedMute=You may not mute a player for this period of time. oversizedTempban=You may not ban a player for this period of time. +pageLimitExceeded=Page number exceeds the maximum limit (100). passengerTeleportFail=You cannot be teleported while carrying passengers. payCommandDescription=Pays another player from your balance. payCommandUsage=/ diff --git a/Essentials/src/main/resources/messages_en.properties b/Essentials/src/main/resources/messages_en.properties index 7aa38dabc01..0689d5b2948 100644 --- a/Essentials/src/main/resources/messages_en.properties +++ b/Essentials/src/main/resources/messages_en.properties @@ -904,6 +904,7 @@ openingDisposal=Opening disposal menu... orderBalances=Ordering balances of {0} users, please wait... oversizedMute=You may not mute a player for this period of time. oversizedTempban=You may not ban a player for this period of time. +pageLimitExceeded=Page number exceeds the maximum limit (100). passengerTeleportFail=You cannot be teleported while carrying passengers. payCommandDescription=Pays another player from your balance. payCommandUsage=/