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..d5b9f6e22 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[] letterItems; @Override public @NotNull String getName() { @@ -82,7 +82,15 @@ public static void refuseLetter(Player player, int id) { } public void accept() { + ItemStack[] items = getLetterItems(); + 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,10 @@ 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,7 +136,7 @@ public void onClose(InventoryCloseEvent event) {} public @NotNull Map getContent() { Map content = new HashMap<>(); - ItemStack[] items = letter.getCachedItems(); + ItemStack[] items = getLetterItems(); if (items == null || items.length == 0) { byte[] serializedItems = letter.getItems(); @@ -164,6 +168,17 @@ public void cancel() { ); } + private ItemStack[] getLetterItems() { + if (letterItems != null) return letterItems; + ItemStack[] items = letter.getCachedItems(); + if (items == null || items.length == 0) { + byte[] serializedItems = letter.getItems(); + items = serializedItems != null ? BukkitSerializer.deserializeItemStacks(serializedItems) : new ItemStack[0]; + } + letterItems = items; + return items; + } + @Override public List getTakableSlot() { return List.of(); diff --git a/src/main/java/fr/openmc/core/features/mailboxes/utils/MailboxMenuManager.java b/src/main/java/fr/openmc/core/features/mailboxes/utils/MailboxMenuManager.java index cd2ca3cd2..3d700b25c 100644 --- a/src/main/java/fr/openmc/core/features/mailboxes/utils/MailboxMenuManager.java +++ b/src/main/java/fr/openmc/core/features/mailboxes/utils/MailboxMenuManager.java @@ -66,7 +66,11 @@ public static ItemBuilder sendBtn(Menu menu) { } public static ItemBuilder refuseBtn(Menu menu) { - return getBtn(menu, "✘", "Refuser", "omc_menus:mailbox_refuse_btn", NamedTextColor.DARK_RED, true); + ItemBuilder item = getBtn(menu, "✘", "Refuser", "omc_menus:mailbox_refuse_btn", NamedTextColor.DARK_RED, true); + item.editMeta( + meta -> meta.lore(List.of(Component.text("Si vous faites cela, les items seront supprimés", NamedTextColor.RED, TextDecoration.BOLD).decoration(TextDecoration.ITALIC, false))) + ); + return item; } public static ItemBuilder homeBtn(Menu menu) {