From f7d426fa144d045a3bf9cc8926ecc254e9a1f586 Mon Sep 17 00:00:00 2001 From: FakE Date: Sun, 13 Jul 2025 22:13:38 +0330 Subject: [PATCH 01/16] new stack prefix new isItemStackOption --- src/main/java/com/extendedclip/deluxemenus/utils/Constants.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/com/extendedclip/deluxemenus/utils/Constants.java b/src/main/java/com/extendedclip/deluxemenus/utils/Constants.java index 432b73a9..1a84d92f 100644 --- a/src/main/java/com/extendedclip/deluxemenus/utils/Constants.java +++ b/src/main/java/com/extendedclip/deluxemenus/utils/Constants.java @@ -32,6 +32,7 @@ private Constants() { public static final String BASE64_HEAD_TYPE = "basehead"; public static final String HDB_HEAD_TYPE = "hdb"; + public static final String STACK_PREFIX = "stack-"; public static final String PLACEHOLDER_PREFIX = "placeholder-"; public static final String WATER_BOTTLE = "water_bottle"; From a173c5e7461396890692bcac313f7a63952e25e0 Mon Sep 17 00:00:00 2001 From: FakE Date: Sun, 13 Jul 2025 22:13:59 +0330 Subject: [PATCH 02/16] new stack prefix --- .../extendedclip/deluxemenus/config/DeluxeMenusConfig.java | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/extendedclip/deluxemenus/config/DeluxeMenusConfig.java b/src/main/java/com/extendedclip/deluxemenus/config/DeluxeMenusConfig.java index f2e814e5..3fea1926 100644 --- a/src/main/java/com/extendedclip/deluxemenus/config/DeluxeMenusConfig.java +++ b/src/main/java/com/extendedclip/deluxemenus/config/DeluxeMenusConfig.java @@ -72,9 +72,7 @@ import java.util.regex.Pattern; import java.util.stream.Collectors; -import static com.extendedclip.deluxemenus.utils.Constants.PLACEHOLDER_PREFIX; -import static com.extendedclip.deluxemenus.utils.Constants.PLAYER_ITEMS; -import static com.extendedclip.deluxemenus.utils.Constants.WATER_BOTTLE; +import static com.extendedclip.deluxemenus.utils.Constants.*; public class DeluxeMenusConfig { @@ -90,6 +88,7 @@ public class DeluxeMenusConfig { VALID_MATERIALS.add(WATER_BOTTLE); VALID_MATERIAL_PREFIXES.add(PLACEHOLDER_PREFIX); + VALID_MATERIAL_PREFIXES.add(STACK_PREFIX); } private final String separator = File.separator; From 96c9d1df134381bf333dff04def744cd218a1ca7 Mon Sep 17 00:00:00 2001 From: FakE Date: Sun, 13 Jul 2025 22:14:11 +0330 Subject: [PATCH 03/16] new isItemStackOption --- .../deluxemenus/utils/ItemUtils.java | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/extendedclip/deluxemenus/utils/ItemUtils.java b/src/main/java/com/extendedclip/deluxemenus/utils/ItemUtils.java index 5c404299..7a9f1d15 100644 --- a/src/main/java/com/extendedclip/deluxemenus/utils/ItemUtils.java +++ b/src/main/java/com/extendedclip/deluxemenus/utils/ItemUtils.java @@ -9,9 +9,7 @@ import java.util.Locale; -import static com.extendedclip.deluxemenus.utils.Constants.INVENTORY_ITEM_ACCESSORS; -import static com.extendedclip.deluxemenus.utils.Constants.PLACEHOLDER_PREFIX; -import static com.extendedclip.deluxemenus.utils.Constants.WATER_BOTTLE; +import static com.extendedclip.deluxemenus.utils.Constants.*; public final class ItemUtils { @@ -29,6 +27,16 @@ public static boolean isPlaceholderOption(@NotNull final String material) { return material.toLowerCase(Locale.ROOT).startsWith(PLACEHOLDER_PREFIX); } + /** + * Checks if the string starts with the substring "stack-". The check is case-insensitive. + * + * @param material The string to check + * @return true if the string starts with "stack-", false otherwise + */ + public static boolean isItemStackOption(@NotNull final String material) { + return material.toLowerCase(Locale.ROOT).startsWith(STACK_PREFIX); + } + /** * Checks if the string is a player item. The check is case-sensitive. * Player items are: "main_hand", "off_hand", "armor_helmet", "armor_chestplate", "armor_leggings", "armor_boots" @@ -43,7 +51,7 @@ public static boolean isPlayerItem(@NotNull final String material) { /** * Checks if the material is a water bottle. The check is case-insensitive. * - * @param material The material to check + * @param itemStack The material to check * @return true if the material is a water bottle, false otherwise */ public static boolean isWaterBottle(@NotNull final String material) { From e834d9e76ceae1460920def32ae250cd1a897db3 Mon Sep 17 00:00:00 2001 From: FakE Date: Sun, 13 Jul 2025 22:14:39 +0330 Subject: [PATCH 04/16] edits to make stack-base64 work --- .../extendedclip/deluxemenus/menu/MenuItem.java | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/extendedclip/deluxemenus/menu/MenuItem.java b/src/main/java/com/extendedclip/deluxemenus/menu/MenuItem.java index 55b216e5..03b3cf5a 100644 --- a/src/main/java/com/extendedclip/deluxemenus/menu/MenuItem.java +++ b/src/main/java/com/extendedclip/deluxemenus/menu/MenuItem.java @@ -52,8 +52,7 @@ import java.util.logging.Level; import java.util.stream.Collectors; -import static com.extendedclip.deluxemenus.utils.Constants.INVENTORY_ITEM_ACCESSORS; -import static com.extendedclip.deluxemenus.utils.Constants.PLACEHOLDER_PREFIX; +import static com.extendedclip.deluxemenus.utils.Constants.*; public class MenuItem { @@ -74,10 +73,21 @@ public ItemStack getItemStack(@NotNull final MenuHolder holder) { String stringMaterial = this.options.material(); String lowercaseStringMaterial = stringMaterial.toLowerCase(Locale.ROOT); + if (ItemUtils.isPlaceholderOption(lowercaseStringMaterial)) { stringMaterial = holder.setPlaceholdersAndArguments(stringMaterial.substring(PLACEHOLDER_PREFIX.length())); lowercaseStringMaterial = stringMaterial.toLowerCase(Locale.ENGLISH); } + if (ItemUtils.isItemStackOption(lowercaseStringMaterial)) { + stringMaterial = holder.setPlaceholdersAndArguments(stringMaterial.substring(STACK_PREFIX.length())); + ItemStack base64Item = base64ToItemStack(stringMaterial); + if (base64Item != null) { + itemStack = base64Item; + amount = itemStack.getAmount(); + lowercaseStringMaterial = itemStack.getType().toString().toLowerCase(Locale.ENGLISH); + } + } + if (ItemUtils.isPlayerItem(lowercaseStringMaterial)) { final ItemStack playerItem = INVENTORY_ITEM_ACCESSORS.get(lowercaseStringMaterial).apply(viewer.getInventory()); From a2009a19e7d2f85981d8112135a0871900e1924f Mon Sep 17 00:00:00 2001 From: FakEEE14 <68513641+FakEEE14@users.noreply.github.com> Date: Mon, 14 Jul 2025 00:12:22 +0330 Subject: [PATCH 05/16] Update MenuItem.java added base64 to item --- .../deluxemenus/menu/MenuItem.java | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/src/main/java/com/extendedclip/deluxemenus/menu/MenuItem.java b/src/main/java/com/extendedclip/deluxemenus/menu/MenuItem.java index 03b3cf5a..c81f1d0d 100644 --- a/src/main/java/com/extendedclip/deluxemenus/menu/MenuItem.java +++ b/src/main/java/com/extendedclip/deluxemenus/menu/MenuItem.java @@ -64,6 +64,25 @@ public MenuItem(@NotNull final DeluxeMenus plugin, @NotNull final MenuItemOption this.options = options; } + public static ItemStack base64ToItemStack(String data) { + try { + byte[] bytes = Base64.getDecoder().decode(data); + ByteArrayInputStream inputStream = new ByteArrayInputStream(bytes); + BukkitObjectInputStream dataInput = new BukkitObjectInputStream(inputStream); + dataInput.close(); + Object object = dataInput.readObject(); + if (object instanceof ItemStack) { + return (ItemStack) object; + } + return null; + } catch (IllegalArgumentException e) { + return null; + } catch (IOException e) { + return null; + } catch (ClassNotFoundException e) { + return null; + } + } public ItemStack getItemStack(@NotNull final MenuHolder holder) { final Player viewer = holder.getViewer(); From 989c890d2cc96ad20c96a17555ed207887d52044 Mon Sep 17 00:00:00 2001 From: FakEEE14 <68513641+FakEEE14@users.noreply.github.com> Date: Mon, 14 Jul 2025 01:22:04 +0330 Subject: [PATCH 06/16] Update build.gradle.kts oraxen 1.159.0 no more --- build.gradle.kts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle.kts b/build.gradle.kts index 643c40c2..13df1c5d 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -32,7 +32,7 @@ dependencies { compileOnly(libs.headdb) compileOnly(libs.itemsadder) compileOnly(libs.nexo) - compileOnly(libs.oraxen) + compileOnly("io.th0rgal:oraxen:1.190.0") compileOnly(libs.mythiclib) compileOnly(libs.mmoitems) compileOnly(libs.score) From 0b106c95c4aef9c74b0db9f0e1c332973a484c9b Mon Sep 17 00:00:00 2001 From: FakEEE14 <68513641+FakEEE14@users.noreply.github.com> Date: Mon, 14 Jul 2025 23:39:18 +0330 Subject: [PATCH 07/16] Update DeluxeMenusConfig.java no need to import all --- .../extendedclip/deluxemenus/config/DeluxeMenusConfig.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/extendedclip/deluxemenus/config/DeluxeMenusConfig.java b/src/main/java/com/extendedclip/deluxemenus/config/DeluxeMenusConfig.java index 3fea1926..c7a6fbbc 100644 --- a/src/main/java/com/extendedclip/deluxemenus/config/DeluxeMenusConfig.java +++ b/src/main/java/com/extendedclip/deluxemenus/config/DeluxeMenusConfig.java @@ -72,7 +72,10 @@ import java.util.regex.Pattern; import java.util.stream.Collectors; -import static com.extendedclip.deluxemenus.utils.Constants.*; +import static com.extendedclip.deluxemenus.utils.Constants.PLACEHOLDER_PREFIX; +import static com.extendedclip.deluxemenus.utils.Constants.STACK_PREFIX; +import static com.extendedclip.deluxemenus.utils.Constants.PLAYER_ITEMS; +import static com.extendedclip.deluxemenus.utils.Constants.WATER_BOTTLE; public class DeluxeMenusConfig { From e3ec7ae028d9296a43f5dddf789671cbffc7cc3c Mon Sep 17 00:00:00 2001 From: FakEEE14 <68513641+FakEEE14@users.noreply.github.com> Date: Mon, 14 Jul 2025 23:40:16 +0330 Subject: [PATCH 08/16] Update MenuItem.java useless space it's spose --- src/main/java/com/extendedclip/deluxemenus/menu/MenuItem.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/java/com/extendedclip/deluxemenus/menu/MenuItem.java b/src/main/java/com/extendedclip/deluxemenus/menu/MenuItem.java index c81f1d0d..d2ccbfcb 100644 --- a/src/main/java/com/extendedclip/deluxemenus/menu/MenuItem.java +++ b/src/main/java/com/extendedclip/deluxemenus/menu/MenuItem.java @@ -92,7 +92,6 @@ public ItemStack getItemStack(@NotNull final MenuHolder holder) { String stringMaterial = this.options.material(); String lowercaseStringMaterial = stringMaterial.toLowerCase(Locale.ROOT); - if (ItemUtils.isPlaceholderOption(lowercaseStringMaterial)) { stringMaterial = holder.setPlaceholdersAndArguments(stringMaterial.substring(PLACEHOLDER_PREFIX.length())); lowercaseStringMaterial = stringMaterial.toLowerCase(Locale.ENGLISH); From d05ed8aa5f3bf536383fdd4d8839878c39f25279 Mon Sep 17 00:00:00 2001 From: FakEEE14 <68513641+FakEEE14@users.noreply.github.com> Date: Mon, 14 Jul 2025 23:41:59 +0330 Subject: [PATCH 09/16] Update ItemUtils.java wrong comment change --- .../java/com/extendedclip/deluxemenus/utils/ItemUtils.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/extendedclip/deluxemenus/utils/ItemUtils.java b/src/main/java/com/extendedclip/deluxemenus/utils/ItemUtils.java index 7a9f1d15..6ef8b7a6 100644 --- a/src/main/java/com/extendedclip/deluxemenus/utils/ItemUtils.java +++ b/src/main/java/com/extendedclip/deluxemenus/utils/ItemUtils.java @@ -30,7 +30,7 @@ public static boolean isPlaceholderOption(@NotNull final String material) { /** * Checks if the string starts with the substring "stack-". The check is case-insensitive. * - * @param material The string to check + * @param itemstack The string to check * @return true if the string starts with "stack-", false otherwise */ public static boolean isItemStackOption(@NotNull final String material) { @@ -51,7 +51,7 @@ public static boolean isPlayerItem(@NotNull final String material) { /** * Checks if the material is a water bottle. The check is case-insensitive. * - * @param itemStack The material to check + * @param material The material to check * @return true if the material is a water bottle, false otherwise */ public static boolean isWaterBottle(@NotNull final String material) { From e0aef29d084f8027fa4559f46a75d068b36d011c Mon Sep 17 00:00:00 2001 From: FakEEE14 <68513641+FakEEE14@users.noreply.github.com> Date: Mon, 14 Jul 2025 23:46:33 +0330 Subject: [PATCH 10/16] Update build.gradle.kts back to where it was --- build.gradle.kts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle.kts b/build.gradle.kts index 13df1c5d..643c40c2 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -32,7 +32,7 @@ dependencies { compileOnly(libs.headdb) compileOnly(libs.itemsadder) compileOnly(libs.nexo) - compileOnly("io.th0rgal:oraxen:1.190.0") + compileOnly(libs.oraxen) compileOnly(libs.mythiclib) compileOnly(libs.mmoitems) compileOnly(libs.score) From 2b6224e96bf416945596e97ece9830f68809829d Mon Sep 17 00:00:00 2001 From: FakEEE14 <68513641+FakEEE14@users.noreply.github.com> Date: Tue, 15 Jul 2025 03:25:17 +0330 Subject: [PATCH 11/16] Update ItemUtils.java no need to import all eather --- .../java/com/extendedclip/deluxemenus/utils/ItemUtils.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/extendedclip/deluxemenus/utils/ItemUtils.java b/src/main/java/com/extendedclip/deluxemenus/utils/ItemUtils.java index 6ef8b7a6..867345fd 100644 --- a/src/main/java/com/extendedclip/deluxemenus/utils/ItemUtils.java +++ b/src/main/java/com/extendedclip/deluxemenus/utils/ItemUtils.java @@ -8,8 +8,10 @@ import org.jetbrains.annotations.NotNull; import java.util.Locale; - -import static com.extendedclip.deluxemenus.utils.Constants.*; +import static com.extendedclip.deluxemenus.utils.Constants.INVENTORY_ITEM_ACCESSORS; +import static com.extendedclip.deluxemenus.utils.Constants.PLACEHOLDER_PREFIX; +import static com.extendedclip.deluxemenus.utils.Constants.STACK_PREFIX; +import static com.extendedclip.deluxemenus.utils.Constants.WATER_BOTTLE; public final class ItemUtils { From 0df2997d02b51d71fe71e2e31a948adbf0a7153d Mon Sep 17 00:00:00 2001 From: FakEEE14 <68513641+FakEEE14@users.noreply.github.com> Date: Thu, 17 Jul 2025 20:12:03 +0330 Subject: [PATCH 12/16] Update MenuItem.java forget this change --- src/main/java/com/extendedclip/deluxemenus/menu/MenuItem.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/extendedclip/deluxemenus/menu/MenuItem.java b/src/main/java/com/extendedclip/deluxemenus/menu/MenuItem.java index d2ccbfcb..2ed5683a 100644 --- a/src/main/java/com/extendedclip/deluxemenus/menu/MenuItem.java +++ b/src/main/java/com/extendedclip/deluxemenus/menu/MenuItem.java @@ -52,7 +52,9 @@ import java.util.logging.Level; import java.util.stream.Collectors; -import static com.extendedclip.deluxemenus.utils.Constants.*; +import static com.extendedclip.deluxemenus.utils.Constants.INVENTORY_ITEM_ACCESSORS; +import static com.extendedclip.deluxemenus.utils.Constants.PLACEHOLDER_PREFIX; +import static com.extendedclip.deluxemenus.utils.Constants.STACK_PREFIX; public class MenuItem { From caa77b2642c2f4aeb84696a9471c410312825b55 Mon Sep 17 00:00:00 2001 From: FakEEE14 <68513641+FakEEE14@users.noreply.github.com> Date: Thu, 17 Jul 2025 20:31:12 +0330 Subject: [PATCH 13/16] Update libs.versions.toml --- gradle/libs.versions.toml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 78b673a3..4f479961 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -6,7 +6,7 @@ authlib = "1.5.25" headdb = "1.3.2" itemsadder = "3.6.3-beta-14" nexo = "1.1.0" -oraxen = "1.159.0" +oraxen = "1.190.0" mythiclib = "1.7.1-SNAPSHOT" mmoitems = "6.10-SNAPSHOT" papi = "2.11.6" @@ -27,7 +27,7 @@ authlib = { module = "com.mojang:authlib", version.ref = "authlib" } headdb = { module = "com.arcaniax:HeadDatabase-API", version.ref = "headdb" } itemsadder = { module = "com.github.LoneDev6:api-itemsadder", version.ref = "itemsadder" } nexo = { module = "com.nexomc:nexo", version.ref = "nexo" } -oraxen = { module = "com.github.oraxen:oraxen", version.ref = "oraxen" } +oraxen = { module = "io.th0rgal:oraxen", version.ref = "oraxen" } mythiclib = { module = "io.lumine:MythicLib-dist", version.ref = "mythiclib"} mmoitems = { module = "net.Indyuce:MMOItems-API", version.ref = "mmoitems" } papi = { module = "me.clip:placeholderapi", version.ref = "papi" } From d383e5c7bfc6668a80c5658d0b9d94a6903958e0 Mon Sep 17 00:00:00 2001 From: FakEEE14 <68513641+FakEEE14@users.noreply.github.com> Date: Thu, 17 Jul 2025 20:39:52 +0330 Subject: [PATCH 14/16] Update ItemUtils.java --- src/main/java/com/extendedclip/deluxemenus/utils/ItemUtils.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/com/extendedclip/deluxemenus/utils/ItemUtils.java b/src/main/java/com/extendedclip/deluxemenus/utils/ItemUtils.java index 867345fd..870e8312 100644 --- a/src/main/java/com/extendedclip/deluxemenus/utils/ItemUtils.java +++ b/src/main/java/com/extendedclip/deluxemenus/utils/ItemUtils.java @@ -8,6 +8,7 @@ import org.jetbrains.annotations.NotNull; import java.util.Locale; + import static com.extendedclip.deluxemenus.utils.Constants.INVENTORY_ITEM_ACCESSORS; import static com.extendedclip.deluxemenus.utils.Constants.PLACEHOLDER_PREFIX; import static com.extendedclip.deluxemenus.utils.Constants.STACK_PREFIX; From ddfb757076bb273cec8c2733b2847c10e7bae2d5 Mon Sep 17 00:00:00 2001 From: FakEEE14 <68513641+FakEEE14@users.noreply.github.com> Date: Thu, 17 Jul 2025 21:15:25 +0330 Subject: [PATCH 15/16] Update MenuItem.java mybad --- src/main/java/com/extendedclip/deluxemenus/menu/MenuItem.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/main/java/com/extendedclip/deluxemenus/menu/MenuItem.java b/src/main/java/com/extendedclip/deluxemenus/menu/MenuItem.java index 2ed5683a..becf1af0 100644 --- a/src/main/java/com/extendedclip/deluxemenus/menu/MenuItem.java +++ b/src/main/java/com/extendedclip/deluxemenus/menu/MenuItem.java @@ -42,6 +42,9 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import java.io.ByteArrayInputStream; +import java.io.IOException; +import java.util.Base64; import java.util.Arrays; import java.util.ArrayList; import java.util.List; From 8ac93d902b75a41a3b0446a8e8c153b178fc777e Mon Sep 17 00:00:00 2001 From: FakEEE14 <68513641+FakEEE14@users.noreply.github.com> Date: Thu, 17 Jul 2025 21:17:01 +0330 Subject: [PATCH 16/16] Update MenuItem.java --- src/main/java/com/extendedclip/deluxemenus/menu/MenuItem.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/com/extendedclip/deluxemenus/menu/MenuItem.java b/src/main/java/com/extendedclip/deluxemenus/menu/MenuItem.java index becf1af0..2e49d5cd 100644 --- a/src/main/java/com/extendedclip/deluxemenus/menu/MenuItem.java +++ b/src/main/java/com/extendedclip/deluxemenus/menu/MenuItem.java @@ -39,6 +39,7 @@ import org.bukkit.inventory.meta.trim.TrimMaterial; import org.bukkit.inventory.meta.trim.TrimPattern; import org.bukkit.potion.PotionEffect; +import org.bukkit.util.io.BukkitObjectInputStream; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable;