From a273d89dd3f2118102d728b70e4a88664dade26b Mon Sep 17 00:00:00 2001 From: Andan <847091302@qq.com> Date: Mon, 29 Sep 2025 18:58:21 +0800 Subject: [PATCH 1/2] add support for the Menuitem material placeholderapi --- .../com/extendedclip/deluxemenus/menu/MenuHolder.java | 3 +++ .../deluxemenus/menu/options/MenuItemOptions.java | 8 ++++++++ 2 files changed, 11 insertions(+) diff --git a/src/main/java/com/extendedclip/deluxemenus/menu/MenuHolder.java b/src/main/java/com/extendedclip/deluxemenus/menu/MenuHolder.java index adc23192..7b1ef1b4 100644 --- a/src/main/java/com/extendedclip/deluxemenus/menu/MenuHolder.java +++ b/src/main/java/com/extendedclip/deluxemenus/menu/MenuHolder.java @@ -278,6 +278,9 @@ public void run() { continue; } + if (item.options().materialHasPlaceholders()){ + i.setType(item.getItemStack(getHolder()).getType()); + } int amt = i.getAmount(); if (item.options().dynamicAmount().isPresent()) { diff --git a/src/main/java/com/extendedclip/deluxemenus/menu/options/MenuItemOptions.java b/src/main/java/com/extendedclip/deluxemenus/menu/options/MenuItemOptions.java index f0b4bbd8..adf30058 100644 --- a/src/main/java/com/extendedclip/deluxemenus/menu/options/MenuItemOptions.java +++ b/src/main/java/com/extendedclip/deluxemenus/menu/options/MenuItemOptions.java @@ -51,6 +51,7 @@ public class MenuItemOptions { private final boolean unbreakable; private final boolean displayNameHasPlaceholders; + private final boolean materialHasPlaceholders; private final boolean loreHasPlaceholders; private final boolean hasLore; private final LoreAppendMode loreAppendMode; @@ -111,6 +112,7 @@ private MenuItemOptions(final @NotNull MenuItemOptionsBuilder builder) { this.itemFlags.addAll(builder.itemFlags); this.unbreakable = builder.unbreakable; this.displayNameHasPlaceholders = builder.displayNameHasPlaceholders; + this.materialHasPlaceholders = builder.materialHasPlaceholders; this.loreHasPlaceholders = builder.loreHasPlaceholders; this.nbtString = builder.nbtString; this.nbtByte = builder.nbtByte; @@ -246,6 +248,10 @@ public boolean displayNameHasPlaceholders() { return displayNameHasPlaceholders; } + public boolean materialHasPlaceholders() { + return materialHasPlaceholders; + } + public boolean loreHasPlaceholders() { return loreHasPlaceholders; } @@ -440,6 +446,7 @@ public static class MenuItemOptionsBuilder { private boolean unbreakable; private boolean displayNameHasPlaceholders; + private boolean materialHasPlaceholders; private boolean loreHasPlaceholders; private boolean hasLore; private LoreAppendMode loreAppendMode; @@ -477,6 +484,7 @@ private MenuItemOptionsBuilder() { public MenuItemOptionsBuilder material(final @NotNull String configMaterial) { this.material = configMaterial; + this.materialHasPlaceholders = DeluxeMenusConfig.containsPlaceholders(this.material); return this; } From ca7196ac990e01ba4e82624bbad37185e1953f4e Mon Sep 17 00:00:00 2001 From: Andan <847091302@qq.com> Date: Sat, 15 Nov 2025 17:53:47 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E7=AE=80=E5=8C=96=E5=A4=B4=E9=A2=85?= =?UTF-8?q?=E8=AE=BE=E7=BD=AE=E9=80=BB=E8=BE=91=EF=BC=8C=E7=A7=BB=E9=99=A4?= =?UTF-8?q?=E7=89=88=E6=9C=AC=E5=85=BC=E5=AE=B9=E6=80=A7=E6=A3=80=E6=9F=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../extendedclip/deluxemenus/utils/SkullUtils.java | 14 +++----------- 1 file changed, 3 insertions(+), 11 deletions(-) diff --git a/src/main/java/com/extendedclip/deluxemenus/utils/SkullUtils.java b/src/main/java/com/extendedclip/deluxemenus/utils/SkullUtils.java index 38ad9457..6cb558f4 100644 --- a/src/main/java/com/extendedclip/deluxemenus/utils/SkullUtils.java +++ b/src/main/java/com/extendedclip/deluxemenus/utils/SkullUtils.java @@ -133,19 +133,11 @@ public static ItemStack getSkullByName(@NotNull final DeluxeMenus plugin, @NotNu if (headMeta == null) { return head; } + OfflinePlayer offlinePlayer = Bukkit.getOfflinePlayer(playerName); - final OfflinePlayer offlinePlayer = Bukkit.getOfflinePlayer(playerName); - - if (VersionHelper.HAS_PLAYER_PROFILES && offlinePlayer.getPlayerProfile().getTextures().isEmpty()) { - // updates the Player Profile and populates textures for offline players - for some reason this doesn't populate when getting the Profile first time - headMeta.setOwnerProfile(offlinePlayer.getPlayerProfile().update().join()); - } else if (!VersionHelper.IS_SKULL_OWNER_LEGACY) { - headMeta.setOwningPlayer(offlinePlayer); - } else { - headMeta.setOwner(offlinePlayer.getName()); - } - + headMeta.setOwningPlayer(offlinePlayer); head.setItemMeta(headMeta); + return head; }