diff --git a/src/main/java/fr/openmc/core/OMCPlugin.java b/src/main/java/fr/openmc/core/OMCPlugin.java index 30d956fca..2624b0abd 100644 --- a/src/main/java/fr/openmc/core/OMCPlugin.java +++ b/src/main/java/fr/openmc/core/OMCPlugin.java @@ -132,8 +132,9 @@ public void onEnable() { TPAQueue.initCommand(); FreezeManager.init(); QuestProgressSaveManager.init(); - if (!isUnitTestVersion()) + if (!isUnitTestVersion()) { TabList.init(); + } AdminShopManager.init(); BossbarManager.init(); AnimationsManager.init(); diff --git a/src/main/java/fr/openmc/core/features/mailboxes/menu/letter/LetterMenu.java b/src/main/java/fr/openmc/core/features/mailboxes/menu/letter/LetterMenu.java index 112c42258..9b67fe09e 100644 --- a/src/main/java/fr/openmc/core/features/mailboxes/menu/letter/LetterMenu.java +++ b/src/main/java/fr/openmc/core/features/mailboxes/menu/letter/LetterMenu.java @@ -15,7 +15,6 @@ import fr.openmc.core.utils.messages.Prefix; import fr.openmc.core.utils.serializer.BukkitSerializer; import net.kyori.adventure.text.Component; -import net.kyori.adventure.text.event.ClickEvent; import net.kyori.adventure.text.format.NamedTextColor; import org.bukkit.Bukkit; import org.bukkit.World; @@ -35,6 +34,7 @@ public class LetterMenu extends Menu { private final Letter letter; private final LetterHead letterHead; + private ItemStack[] resolvedItems; @Override public @NotNull String getName() { @@ -82,7 +82,15 @@ public static void refuseLetter(Player player, int id) { } public void accept() { + ItemStack[] items = resolveItems(); + if (MailboxManager.deleteLetter(letterHead.getLetterId())) { + HashMap remainingItems = getOwner().getInventory().addItem(items); + World world = getOwner().getWorld(); + for (ItemStack item : remainingItems.values()) { + world.dropItemNaturally(getOwner().getLocation(), item); + } + MessagesManager.sendMessage( getOwner(), Component.text("Vous avez reçu ", NamedTextColor.DARK_GREEN) @@ -94,14 +102,8 @@ public void accept() { ); Bukkit.getScheduler().runTask(OMCPlugin.getInstance(), () -> - Bukkit.getPluginManager().callEvent(new ClaimLetterEvent(getOwner(), MailboxManager.getById(getOwner(), letterHead.getLetterId()))) + Bukkit.getPluginManager().callEvent(new ClaimLetterEvent(getOwner(), letter)) ); - - HashMap remainingItems = getOwner().getInventory().addItem(letter.getCachedItems()); - World world = getOwner().getWorld(); - for (ItemStack item : remainingItems.values()) { - world.dropItemNaturally(getOwner().getLocation(), item); - } } else { Component message = Component.text("La lettre avec l'id ", NamedTextColor.DARK_RED) .append(Component.text(letterHead.getLetterId(), NamedTextColor.RED)) @@ -132,15 +134,11 @@ public void onClose(InventoryCloseEvent event) {} public @NotNull Map getContent() { Map content = new HashMap<>(); - ItemStack[] items = letter.getCachedItems(); + ItemStack[] items = resolveItems(); - if (items == null || items.length == 0) { - byte[] serializedItems = letter.getItems(); - items = serializedItems != null ? BukkitSerializer.deserializeItemStacks(serializedItems) : new ItemStack[0]; - } - - for (int i = 0; i < items.length; i++) + for (int i = 0; i < items.length; i++) { content.put(i + 9, new ItemBuilder(this, items[i])); + } content.put(45, homeBtn(this)); content.put(48, acceptBtn(this).setOnClick(e -> accept())); @@ -164,6 +162,17 @@ public void cancel() { ); } + private ItemStack[] resolveItems() { + if (resolvedItems != null) return resolvedItems; + ItemStack[] items = letter.getCachedItems(); + if (items == null || items.length == 0) { + byte[] serializedItems = letter.getItems(); + items = serializedItems != null ? BukkitSerializer.deserializeItemStacks(serializedItems) : new ItemStack[0]; + } + resolvedItems = items; + return items; + } + @Override public List getTakableSlot() { return List.of();