diff --git a/src/main/java/world/bentobox/bentobox/api/panels/PanelItem.java b/src/main/java/world/bentobox/bentobox/api/panels/PanelItem.java index 146ed9ac0..6e3b5d5b4 100644 --- a/src/main/java/world/bentobox/bentobox/api/panels/PanelItem.java +++ b/src/main/java/world/bentobox/bentobox/api/panels/PanelItem.java @@ -193,6 +193,8 @@ public interface ClickHandler { public void setHead(ItemStack itemStack) { // update amount before replacing. itemStack.setAmount(this.icon.getAmount()); + ItemMeta originalMeta = this.icon.getItemMeta(); + this.icon = itemStack; // Get the meta @@ -203,6 +205,11 @@ public void setHead(ItemStack itemStack) { meta.addItemFlags(ItemFlag.HIDE_DESTROYS); meta.addItemFlags(ItemFlag.HIDE_PLACED_ON); meta.addItemFlags(ItemFlag.HIDE_ENCHANTS); + + if (originalMeta != null && originalMeta.hasCustomModelDataComponent()) { + meta.setCustomModelDataComponent(originalMeta.getCustomModelDataComponent()); + } + icon.setItemMeta(meta); } // Create the final item diff --git a/src/main/java/world/bentobox/bentobox/api/panels/builders/PanelItemBuilder.java b/src/main/java/world/bentobox/bentobox/api/panels/builders/PanelItemBuilder.java index b14dae8f8..cd256133a 100644 --- a/src/main/java/world/bentobox/bentobox/api/panels/builders/PanelItemBuilder.java +++ b/src/main/java/world/bentobox/bentobox/api/panels/builders/PanelItemBuilder.java @@ -42,15 +42,27 @@ public PanelItemBuilder icon(@Nullable ItemStack icon) { return this; } + + /** + * Assigns icon and player name to the panel item. + * @param playerName the name of player head icon. + * @param icon the original player head icon + * @return PanelItemBuilder + */ + public PanelItemBuilder icon(String playerName, ItemStack icon) { + this.icon = icon; + this.playerHeadName = playerName; + return this; + } + + /** * Set icon to player's head * @param playerName - player's name * @return PanelItemBuilder */ public PanelItemBuilder icon(String playerName) { - this.icon = new ItemStack(Material.PLAYER_HEAD); - this.playerHeadName = playerName; - return this; + return this.icon(playerName, new ItemStack(Material.PLAYER_HEAD)); } public PanelItemBuilder name(@Nullable String name) {