@@ -320,6 +320,13 @@ private void addNavigationButtons(Map<Integer, ItemStack> updates, SpawnerData s
320320 ItemStack sellIndicator = createSellButton (spawner , sellButton .getMaterial ());
321321 updates .put (sellButton .getSlot (), sellIndicator );
322322 }
323+
324+ // Add sell and exp button if shop integration is available and button is enabled
325+ if (layout .hasButton ("sell_and_exp" )) {
326+ GuiButton sellAndExpButton = layout .getButton ("sell_and_exp" );
327+ ItemStack sellAndExpIndicator = createSellAndExpButton (spawner , sellAndExpButton .getMaterial ());
328+ updates .put (sellAndExpButton .getSlot (), sellAndExpIndicator );
329+ }
323330 }
324331
325332 private int calculateTotalPages (SpawnerData spawner ) {
@@ -380,6 +387,21 @@ private ItemStack createSellButton(SpawnerData spawner, Material material) {
380387 return createButton (material , name , lore );
381388 }
382389
390+ private ItemStack createSellAndExpButton (SpawnerData spawner , Material material ) {
391+ // Create placeholders for total sell price
392+ Map <String , String > placeholders = new HashMap <>();
393+ // Check if sell value needs recalculation before displaying
394+ if (spawner .isSellValueDirty ()) {
395+ spawner .recalculateSellValue ();
396+ }
397+ double totalSellPrice = spawner .getAccumulatedSellValue ();
398+ placeholders .put ("total_sell_price" , languageManager .formatNumber (totalSellPrice ));
399+
400+ String name = languageManager .getGuiItemName ("sell_and_exp_button.name" , placeholders );
401+ List <String > lore = languageManager .getGuiItemLoreAsList ("sell_and_exp_button.lore" );
402+ return createButton (material , name , lore );
403+ }
404+
383405 private ItemStack createSortButton (SpawnerData spawner , Material material ) {
384406 Map <String , String > placeholders = new HashMap <>();
385407
0 commit comments