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; } 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; }