diff --git a/API/src/main/java/info/preva1l/fadah/api/AuctionHouseAPI.java b/API/src/main/java/info/preva1l/fadah/api/AuctionHouseAPI.java index f6755bbe..7adeb1f9 100644 --- a/API/src/main/java/info/preva1l/fadah/api/AuctionHouseAPI.java +++ b/API/src/main/java/info/preva1l/fadah/api/AuctionHouseAPI.java @@ -2,7 +2,7 @@ import info.preva1l.fadah.api.managers.CategoryManager; import info.preva1l.fadah.api.managers.ListingManager; -import info.preva1l.fadah.filters.MatcherArgsRegistry; +import info.preva1l.fadah.api.menus.MenuManager; import info.preva1l.fadah.records.Category; import info.preva1l.fadah.records.collection.CollectableItem; import info.preva1l.fadah.records.collection.CollectionBox; @@ -10,7 +10,6 @@ import info.preva1l.fadah.records.history.HistoricItem; import info.preva1l.fadah.records.history.History; import info.preva1l.fadah.records.listing.Listing; -import org.bukkit.NamespacedKey; import org.bukkit.OfflinePlayer; import org.bukkit.entity.Player; import org.jetbrains.annotations.ApiStatus; @@ -36,27 +35,13 @@ public abstract class AuctionHouseAPI { AuctionHouseAPI() {} /** - * Get the custom item filtering namespacedkey + * Get the menu manager. + * This manager allows you to open menus for players. * - * @return namespacedkey - * @deprecated replaced with {@link MatcherArgsRegistry} and category matchers + * @return the instance of the menu manager. + * @since 3.2.2 */ - @Deprecated(since = "2.9", forRemoval = true) - public NamespacedKey getCustomItemNameSpacedKey() { - throw new UnsupportedOperationException(); - } - - /** - * Set the custom item filtering namespacedkey - * - * @param key namespacedkey - * @since 1.0 - * @deprecated replaced with {@link MatcherArgsRegistry} and category matchers - */ - @Deprecated(since = "2.9", forRemoval = true) - public void setCustomItemNameSpacedKey(NamespacedKey key) { - throw new UnsupportedOperationException(); - } + public abstract MenuManager menuManager(); /** * Get a listing diff --git a/API/src/main/java/info/preva1l/fadah/api/menus/MenuManager.java b/API/src/main/java/info/preva1l/fadah/api/menus/MenuManager.java new file mode 100644 index 00000000..b0e61d14 --- /dev/null +++ b/API/src/main/java/info/preva1l/fadah/api/menus/MenuManager.java @@ -0,0 +1,31 @@ +package info.preva1l.fadah.api.menus; + +import info.preva1l.fadah.records.Category; +import info.preva1l.fadah.records.listing.Listing; +import org.bukkit.entity.Player; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +import java.util.UUID; + +/** + * Access to open menus via the api. + * + * @author Preva1l + * @since 3.2.2 + */ +@SuppressWarnings("unused") +public interface MenuManager { + boolean mainMenu(@NotNull Player player); + + boolean mainMenu(@NotNull Player player, + @Nullable Category category, + @Nullable String search, + @Nullable SortingMethod sortingMethod, + @Nullable SortingDirection sortingDirection + ); + + boolean viewListing(Player player, UUID listingId); + + boolean viewListing(Player player, Listing listing); +} diff --git a/API/src/main/java/info/preva1l/fadah/api/menus/SortingDirection.java b/API/src/main/java/info/preva1l/fadah/api/menus/SortingDirection.java new file mode 100644 index 00000000..b8cb7673 --- /dev/null +++ b/API/src/main/java/info/preva1l/fadah/api/menus/SortingDirection.java @@ -0,0 +1,12 @@ +package info.preva1l.fadah.api.menus; + +/** + * This is a class. + * + * @author Preva1l + * @since 30/09/2025 + */ +public enum SortingDirection { + ASCENDING, + DESCENDING, +} diff --git a/API/src/main/java/info/preva1l/fadah/api/menus/SortingMethod.java b/API/src/main/java/info/preva1l/fadah/api/menus/SortingMethod.java new file mode 100644 index 00000000..89f231bb --- /dev/null +++ b/API/src/main/java/info/preva1l/fadah/api/menus/SortingMethod.java @@ -0,0 +1,14 @@ +package info.preva1l.fadah.api.menus; + +/** + * This is a class. + * + * @author Preva1l + * @since 30/09/2025 + */ +public enum SortingMethod { + AGE, + ALPHABETICAL, + PRICE, + MODE +} diff --git a/Bukkit/src/main/java/info/preva1l/fadah/api/BukkitAuctionHouseAPI.java b/Bukkit/src/main/java/info/preva1l/fadah/api/BukkitAuctionHouseAPI.java index 55494554..47167e5f 100644 --- a/Bukkit/src/main/java/info/preva1l/fadah/api/BukkitAuctionHouseAPI.java +++ b/Bukkit/src/main/java/info/preva1l/fadah/api/BukkitAuctionHouseAPI.java @@ -1,9 +1,7 @@ package info.preva1l.fadah.api; -import info.preva1l.fadah.api.managers.CategoryManager; -import info.preva1l.fadah.api.managers.ImplCategoryManager; -import info.preva1l.fadah.api.managers.ImplListingManager; -import info.preva1l.fadah.api.managers.ListingManager; +import info.preva1l.fadah.api.managers.*; +import info.preva1l.fadah.api.menus.MenuManager; import info.preva1l.fadah.cache.CacheAccess; import info.preva1l.fadah.config.Lang; import info.preva1l.fadah.data.DataService; @@ -21,6 +19,12 @@ public final class BukkitAuctionHouseAPI extends AuctionHouseAPI { private final CategoryManager categoryManager = new ImplCategoryManager(); private final ListingManager listingManager = new ImplListingManager(); + private final MenuManager menuManager = new ImplMenuManager(); + + @Override + public MenuManager menuManager() { + return menuManager; + } @Override public ListingManager listingManager() { diff --git a/Bukkit/src/main/java/info/preva1l/fadah/api/managers/ImplMenuManager.java b/Bukkit/src/main/java/info/preva1l/fadah/api/managers/ImplMenuManager.java new file mode 100644 index 00000000..96a164b2 --- /dev/null +++ b/Bukkit/src/main/java/info/preva1l/fadah/api/managers/ImplMenuManager.java @@ -0,0 +1,89 @@ +package info.preva1l.fadah.api.managers; + +import info.preva1l.fadah.api.menus.MenuManager; +import info.preva1l.fadah.api.menus.SortingDirection; +import info.preva1l.fadah.api.menus.SortingMethod; +import info.preva1l.fadah.cache.CacheAccess; +import info.preva1l.fadah.guis.ConfirmPurchaseMenu; +import info.preva1l.fadah.guis.MainMenu; +import info.preva1l.fadah.guis.PlaceBidMenu; +import info.preva1l.fadah.records.Category; +import info.preva1l.fadah.records.listing.BidListing; +import info.preva1l.fadah.records.listing.BinListing; +import info.preva1l.fadah.records.listing.Listing; +import org.bukkit.entity.Player; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +import java.util.UUID; + +/** + * This is a class. + * + * @author Preva1l + * @since 30/09/2025 + */ +public final class ImplMenuManager implements MenuManager { + + @Override + public boolean mainMenu(@NotNull Player player) { + new MainMenu(null, player, null, null, null).open(player); + return true; + } + + @Override + public boolean mainMenu(@NotNull Player player, + @Nullable Category category, + @Nullable String search, + @Nullable SortingMethod sortingMethod, + @Nullable SortingDirection sortingDirection + ) { + info.preva1l.fadah.filters.SortingMethod sortMethod; + if (sortingMethod != null) { + sortMethod = info.preva1l.fadah.filters.SortingMethod.valueOf(sortingMethod.name()); + } else sortMethod = null; + + info.preva1l.fadah.filters.SortingDirection sortDirection; + if (sortingDirection != null) { + sortDirection = info.preva1l.fadah.filters.SortingDirection.valueOf(sortingDirection.name()); + } else sortDirection = null; + + new MainMenu( + category, + player, + search, + sortMethod, + sortDirection + ).open(player); + + return true; + } + + @Override + public boolean viewListing(Player player, UUID listingId) { + Listing listing = CacheAccess.get(Listing.class, listingId).orElse(null); + if (listing == null) return false; + if (listing.isOwner(player)) return false; + + if (listing instanceof BinListing bin) { + new ConfirmPurchaseMenu(bin, player, player::closeInventory).open(player); + } else if (listing instanceof BidListing bid) { + new PlaceBidMenu(bid, player, player::closeInventory).open(player); + } + + return true; + } + + @Override + public boolean viewListing(Player player, Listing listing) { + if (listing.isOwner(player)) return false; + + if (listing instanceof BinListing bin) { + new ConfirmPurchaseMenu(bin, player, player::closeInventory).open(player); + } else if (listing instanceof BidListing bid) { + new PlaceBidMenu(bid, player, player::closeInventory).open(player); + } + + return true; + } +} diff --git a/Bukkit/src/main/java/info/preva1l/fadah/commands/AuctionHouseCommand.java b/Bukkit/src/main/java/info/preva1l/fadah/commands/AuctionHouseCommand.java index e557b825..adb6568b 100644 --- a/Bukkit/src/main/java/info/preva1l/fadah/commands/AuctionHouseCommand.java +++ b/Bukkit/src/main/java/info/preva1l/fadah/commands/AuctionHouseCommand.java @@ -296,7 +296,7 @@ private void expiredItemsCommand(@Nullable String name) { OfflinePlayer finalOwner = owner; DataService.instance.loadPlayerData(owner.getUniqueId()) .thenRun(() -> - new CollectionMenu(cmd.sender(), finalOwner, LayoutService.MenuType.COLLECTION_BOX) + new CollectionMenu(cmd.sender(), finalOwner, LayoutService.MenuType.EXPIRED_LISTINGS) .open(cmd.sender())); }) ); diff --git a/Bukkit/src/main/java/info/preva1l/fadah/commands/parsers/PriceParser.java b/Bukkit/src/main/java/info/preva1l/fadah/commands/parsers/PriceParser.java index c0e3fbbf..301b4cbf 100644 --- a/Bukkit/src/main/java/info/preva1l/fadah/commands/parsers/PriceParser.java +++ b/Bukkit/src/main/java/info/preva1l/fadah/commands/parsers/PriceParser.java @@ -26,7 +26,7 @@ private PriceParser() { @Override public boolean hasMax() { - return true; + return false; } @Override diff --git a/Bukkit/src/main/java/info/preva1l/fadah/currency/CurrencyService.java b/Bukkit/src/main/java/info/preva1l/fadah/currency/CurrencyService.java index 2da6f3d0..bc766f8c 100644 --- a/Bukkit/src/main/java/info/preva1l/fadah/currency/CurrencyService.java +++ b/Bukkit/src/main/java/info/preva1l/fadah/currency/CurrencyService.java @@ -1,6 +1,5 @@ package info.preva1l.fadah.currency; -import info.preva1l.fadah.Fadah; import info.preva1l.fadah.utils.Text; import info.preva1l.trashcan.flavor.annotations.Configure; import info.preva1l.trashcan.flavor.annotations.Service; @@ -28,12 +27,11 @@ public void loadCurrencies() { if (CurrencyRegistry.getAll().isEmpty()) { Text.list(List.of( - "&4&l-------------------------------", - "&c No Economy Plugin Installed!", - "&c Plugin will now disable!", - "&4&l-------------------------------") + "&4&l---------------------------------------", + "&c No Economy Plugin Installed!", + "&cPlugin will not work without custom hook!", + "&4&l---------------------------------------") ).forEach(Bukkit.getConsoleSender()::sendMessage); - Bukkit.getPluginManager().disablePlugin(Fadah.instance); } } } diff --git a/Bukkit/src/main/java/info/preva1l/fadah/data/dao/common_sql/CommonSQLListingDao.java b/Bukkit/src/main/java/info/preva1l/fadah/data/dao/common_sql/CommonSQLListingDao.java index 274b070c..0c032b82 100644 --- a/Bukkit/src/main/java/info/preva1l/fadah/data/dao/common_sql/CommonSQLListingDao.java +++ b/Bukkit/src/main/java/info/preva1l/fadah/data/dao/common_sql/CommonSQLListingDao.java @@ -11,8 +11,6 @@ import info.preva1l.fadah.records.listing.Listing; import info.preva1l.fadah.records.listing.ListingFactory; import info.preva1l.fadah.utils.serialization.ItemSerializer; -import java.util.Map; -import java.util.stream.Collectors; import lombok.AllArgsConstructor; import org.bukkit.inventory.ItemStack; @@ -22,10 +20,12 @@ import java.sql.ResultSet; import java.sql.SQLException; import java.util.List; +import java.util.Map; import java.util.Optional; import java.util.UUID; import java.util.concurrent.ConcurrentSkipListSet; import java.util.logging.Level; +import java.util.stream.Collectors; /** * Created on 19/03/2025 @@ -198,7 +198,7 @@ private Listing createListing(UUID id, ResultSet resultSet) throws SQLException final long deletionDate = resultSet.getLong("deletionDate"); final double price = resultSet.getDouble("price"); final double tax = resultSet.getDouble("tax"); - final ItemStack itemStack = ItemSerializer.deserialize(resultSet.getString("itemStack"))[0]; + final ItemStack itemStack = ItemSerializer.deserialize(resultSet.getString("itemStack")); final boolean biddable = resultSet.getBoolean("biddable"); final String bidString = resultSet.getString("bids"); final ConcurrentSkipListSet bids; diff --git a/Bukkit/src/main/java/info/preva1l/fadah/data/dao/mongo/ListingMongoDao.java b/Bukkit/src/main/java/info/preva1l/fadah/data/dao/mongo/ListingMongoDao.java index e631cbed..eacff1bc 100644 --- a/Bukkit/src/main/java/info/preva1l/fadah/data/dao/mongo/ListingMongoDao.java +++ b/Bukkit/src/main/java/info/preva1l/fadah/data/dao/mongo/ListingMongoDao.java @@ -14,16 +14,12 @@ import info.preva1l.fadah.records.listing.Listing; import info.preva1l.fadah.records.listing.ListingFactory; import info.preva1l.fadah.utils.serialization.ItemSerializer; -import java.util.Map; import org.apache.commons.lang3.NotImplementedException; import org.bson.Document; import org.bukkit.inventory.ItemStack; import java.lang.reflect.Type; -import java.util.ArrayList; -import java.util.List; -import java.util.Optional; -import java.util.UUID; +import java.util.*; import java.util.concurrent.ConcurrentSkipListSet; import java.util.logging.Level; @@ -144,7 +140,7 @@ private Listing createListing(UUID id, Document doc) { final long deletionDate = doc.getLong("deletionDate"); final double price = doc.getDouble("price"); final double tax = doc.getDouble("tax"); - final ItemStack itemStack = ItemSerializer.deserialize(doc.getString("itemStack"))[0]; + final ItemStack itemStack = ItemSerializer.deserialize(doc.getString("itemStack")); final boolean biddable = doc.getBoolean("biddable"); final String bidString = doc.getString("bids"); final ConcurrentSkipListSet bids; diff --git a/Bukkit/src/main/java/info/preva1l/fadah/data/fixers/v2/SQLFixerV2.java b/Bukkit/src/main/java/info/preva1l/fadah/data/fixers/v2/SQLFixerV2.java index c8428537..a25476bb 100644 --- a/Bukkit/src/main/java/info/preva1l/fadah/data/fixers/v2/SQLFixerV2.java +++ b/Bukkit/src/main/java/info/preva1l/fadah/data/fixers/v2/SQLFixerV2.java @@ -30,7 +30,7 @@ public void fixExpiredItems(UUID player) { final ResultSet resultSet = statement.executeQuery(); ExpiredItems expiredItems = ImplExpiredItems.empty(player); while (resultSet.next()) { - final ItemStack itemStack = ItemSerializer.deserialize(resultSet.getString("itemStack"))[0]; + final ItemStack itemStack = ItemSerializer.deserialize(resultSet.getString("itemStack")); final long dateAdded = resultSet.getLong("dateAdded"); expiredItems.add(new CollectableItem(itemStack, dateAdded)); } @@ -61,7 +61,7 @@ public void fixCollectionBox(UUID player) { final ResultSet resultSet = statement.executeQuery(); CollectionBox box = ImplCollectionBox.empty(player); while (resultSet.next()) { - final ItemStack itemStack = ItemSerializer.deserialize(resultSet.getString("itemStack"))[0]; + final ItemStack itemStack = ItemSerializer.deserialize(resultSet.getString("itemStack")); final long dateAdded = resultSet.getLong("dateAdded"); box.add(new CollectableItem(itemStack, dateAdded)); } diff --git a/Bukkit/src/main/java/info/preva1l/fadah/guis/CollectionMenu.java b/Bukkit/src/main/java/info/preva1l/fadah/guis/CollectionMenu.java index d1142216..1a81fe53 100644 --- a/Bukkit/src/main/java/info/preva1l/fadah/guis/CollectionMenu.java +++ b/Bukkit/src/main/java/info/preva1l/fadah/guis/CollectionMenu.java @@ -109,7 +109,7 @@ private void claimItem(CollectableItem item) { getCurrentItems().remove(item); logItemClaim(item); updatePagination(); - }); + }, () -> Lang.sendMessage(player, Lang.i().getPrefix() + Lang.i().getErrors().getOther().replace("%ex%", "Ticking Issue"))); } private boolean tryAddToInventory(Player player, ItemStack item) { diff --git a/Bukkit/src/main/java/info/preva1l/fadah/records/listing/BaseListing.java b/Bukkit/src/main/java/info/preva1l/fadah/records/listing/BaseListing.java index 6283c34d..9bc896c9 100644 --- a/Bukkit/src/main/java/info/preva1l/fadah/records/listing/BaseListing.java +++ b/Bukkit/src/main/java/info/preva1l/fadah/records/listing/BaseListing.java @@ -3,9 +3,11 @@ import info.preva1l.fadah.config.Categories; import info.preva1l.fadah.records.Category; import lombok.Getter; +import org.bukkit.Material; import org.bukkit.inventory.ItemStack; import org.jetbrains.annotations.NotNull; +import java.util.List; import java.util.UUID; /** @@ -61,7 +63,8 @@ public Category getCategory() { Category category = Categories.getCategory(categoryID).orElse(null); if (category == null) { categoryID = Categories.getCategoryForItem(itemStack); - category = Categories.getCategory(categoryID).orElseThrow(); + category = Categories.getCategory(categoryID) + .orElse(new Category("_none_", "N/A", 0, 0, Material.AIR, List.of(), List.of())); } return category; diff --git a/Bukkit/src/main/java/info/preva1l/fadah/records/post/ImplPost.java b/Bukkit/src/main/java/info/preva1l/fadah/records/post/ImplPost.java index 745d30b8..d4591c0e 100644 --- a/Bukkit/src/main/java/info/preva1l/fadah/records/post/ImplPost.java +++ b/Bukkit/src/main/java/info/preva1l/fadah/records/post/ImplPost.java @@ -47,6 +47,7 @@ public PostResult buildAndSubmit() { if (bypassTax) listingBuilder.tax(0.0); Listing listing = listingBuilder.build(); + if (listing.getCategoryID().equals("_none_")) return PostResult.RESTRICTED_ITEM; if (isRestrictedItem(listing.getItemStack())) return PostResult.RESTRICTED_ITEM; if (!bypassMaxListings && player != null) { diff --git a/Bukkit/src/main/java/info/preva1l/fadah/utils/Tasks.java b/Bukkit/src/main/java/info/preva1l/fadah/utils/Tasks.java index 00eaea89..3d7afd58 100644 --- a/Bukkit/src/main/java/info/preva1l/fadah/utils/Tasks.java +++ b/Bukkit/src/main/java/info/preva1l/fadah/utils/Tasks.java @@ -32,8 +32,8 @@ public RegionizedTask sync(Plugin plugin, Runnable runnable) { * @param plugin The current plugin * @param runnable The runnable */ - public RegionizedTask sync(Plugin plugin, Entity entity, Runnable runnable) { - return MultiLib.getEntityScheduler(entity).run(plugin, t -> runnable.run(), () -> sync(plugin, runnable)); + public RegionizedTask sync(Plugin plugin, Entity entity, Runnable runnable, Runnable fail) { + return MultiLib.getEntityScheduler(entity).run(plugin, t -> runnable.run(), fail); } /** diff --git a/Bukkit/src/main/java/info/preva1l/fadah/utils/guis/FastInv.java b/Bukkit/src/main/java/info/preva1l/fadah/utils/guis/FastInv.java index 7e61775e..58902c64 100644 --- a/Bukkit/src/main/java/info/preva1l/fadah/utils/guis/FastInv.java +++ b/Bukkit/src/main/java/info/preva1l/fadah/utils/guis/FastInv.java @@ -13,7 +13,10 @@ import org.bukkit.inventory.Inventory; import org.bukkit.inventory.InventoryHolder; import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.MenuType; +import org.bukkit.inventory.view.builder.InventoryViewBuilder; import org.jetbrains.annotations.NotNull; +import org.jspecify.annotations.Nullable; import java.util.*; import java.util.function.Consumer; @@ -71,7 +74,7 @@ protected void onOpen(InventoryOpenEvent event) { protected void onClick(InventoryClickEvent event) { } - protected void onClose(InventoryCloseEvent event) { + protected void onClose(@Nullable InventoryCloseEvent event) { } protected void fillers() { @@ -171,7 +174,14 @@ public void removeItem(int slot) { * @param player The player to open the menu. */ public void open(Player player) { - Tasks.sync(Fadah.getInstance(), player, () -> player.openInventory(this.inventory)); + Tasks.sync(Fadah.getInstance(), player, () -> { + if (player.isSleeping() || !player.isValid()) { + handleClose(null); + return; + } + + player.openInventory(this.inventory); + }, () -> handleClose(null)); } /** @@ -201,12 +211,12 @@ void handleOpen(InventoryOpenEvent e) { this.openHandlers.forEach(c -> c.accept(e)); } - boolean handleClose(InventoryCloseEvent e) { + boolean handleClose(@Nullable InventoryCloseEvent e) { onClose(e); this.closeHandlers.forEach(c -> c.accept(e)); - return this.closeFilter != null && this.closeFilter.test((Player) e.getPlayer()); + return this.closeFilter != null && (e != null && this.closeFilter.test((Player) e.getPlayer())); } void handleClick(InventoryClickEvent e) { diff --git a/Bukkit/src/main/java/info/preva1l/fadah/utils/guis/PaginatedFastInv.java b/Bukkit/src/main/java/info/preva1l/fadah/utils/guis/PaginatedFastInv.java index 3dbf8746..aa1ac04a 100644 --- a/Bukkit/src/main/java/info/preva1l/fadah/utils/guis/PaginatedFastInv.java +++ b/Bukkit/src/main/java/info/preva1l/fadah/utils/guis/PaginatedFastInv.java @@ -19,7 +19,7 @@ public abstract class PaginatedFastInv extends FastInv { private List paginationMappings; private final List paginatedItems = new ArrayList<>(); protected boolean needsClearing = false; - private final ScheduledFuture updateTask; + protected final ScheduledFuture updateTask; protected PaginatedFastInv(int size, @NotNull Component title, @NotNull Player player, LayoutService.MenuType menuType) { this(size, title, player, menuType, List.of( diff --git a/Bukkit/src/main/java/info/preva1l/fadah/utils/serialization/ItemSerializer.java b/Bukkit/src/main/java/info/preva1l/fadah/utils/serialization/ItemSerializer.java index 040815c6..a1124495 100644 --- a/Bukkit/src/main/java/info/preva1l/fadah/utils/serialization/ItemSerializer.java +++ b/Bukkit/src/main/java/info/preva1l/fadah/utils/serialization/ItemSerializer.java @@ -2,43 +2,16 @@ import lombok.experimental.UtilityClass; import org.bukkit.inventory.ItemStack; -import org.bukkit.util.io.BukkitObjectInputStream; -import org.bukkit.util.io.BukkitObjectOutputStream; -import org.yaml.snakeyaml.external.biz.base64Coder.Base64Coder; -import java.io.ByteArrayInputStream; -import java.io.ByteArrayOutputStream; +import java.util.Base64; @UtilityClass public class ItemSerializer { - public static String serialize(ItemStack... items) { - try (ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); - BukkitObjectOutputStream dataOutput = new BukkitObjectOutputStream(outputStream)) { - - dataOutput.writeInt(items.length); - - for (ItemStack item : items) - dataOutput.writeObject(item); - - return Base64Coder.encodeLines(outputStream.toByteArray()); - - } catch (Exception ignored) { - return ""; - } + public static String serialize(ItemStack item) { + return Base64.getEncoder().encodeToString(item.serializeAsBytes()); } - public static ItemStack[] deserialize(String source) { - try (ByteArrayInputStream inputStream = new ByteArrayInputStream(Base64Coder.decodeLines(source)); - BukkitObjectInputStream dataInput = new BukkitObjectInputStream(inputStream)) { - - ItemStack[] items = new ItemStack[dataInput.readInt()]; - - for (int i = 0; i < items.length; i++) - items[i] = (ItemStack) dataInput.readObject(); - - return items; - } catch (Exception ignored) { - return new ItemStack[0]; - } + public static ItemStack deserialize(String source) { + return ItemStack.deserializeBytes(Base64.getDecoder().decode(source)); } } diff --git a/Bukkit/src/main/java/info/preva1l/fadah/utils/serialization/ItemStackTypeAdapter.java b/Bukkit/src/main/java/info/preva1l/fadah/utils/serialization/ItemStackTypeAdapter.java index be390cff..56bfab5f 100644 --- a/Bukkit/src/main/java/info/preva1l/fadah/utils/serialization/ItemStackTypeAdapter.java +++ b/Bukkit/src/main/java/info/preva1l/fadah/utils/serialization/ItemStackTypeAdapter.java @@ -8,7 +8,7 @@ public class ItemStackTypeAdapter implements JsonSerializer, JsonDeserializer { @Override public ItemStack deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException { - return ItemSerializer.deserialize(json.getAsJsonPrimitive().getAsString())[0]; + return ItemSerializer.deserialize(json.getAsJsonPrimitive().getAsString()); } @Override diff --git a/buildSrc/build.gradle.kts b/buildSrc/build.gradle.kts index 06ad68d3..7e6c0db9 100644 --- a/buildSrc/build.gradle.kts +++ b/buildSrc/build.gradle.kts @@ -9,8 +9,8 @@ repositories { } dependencies { - implementation("org.jetbrains.kotlin:kotlin-gradle-plugin:2.1.10") - implementation("com.gradleup.shadow:shadow-gradle-plugin:9.1.0") - implementation("org.ajoberstar.grgit:org.ajoberstar.grgit.gradle.plugin:5.3.2") + implementation("org.jetbrains.kotlin:kotlin-gradle-plugin:2.2.20") + implementation("com.gradleup.shadow:shadow-gradle-plugin:9.2.2") + implementation("org.ajoberstar.grgit:org.ajoberstar.grgit.gradle.plugin:5.3.3") implementation("info.preva1l.trashcan:Trashcan-Tooling:1.0.2") } \ No newline at end of file diff --git a/gradle.properties b/gradle.properties index 434b472c..c320653f 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,5 +1,5 @@ group = info.preva1l.fadah -version = 3.2.1 +version = 3.2.2 org.gradle.jvmargs=-Xmx4G org.gradle.parallel=true diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index cdc9cbad..7503ba51 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -3,15 +3,15 @@ hikari = "7.0.2" sqlite = "3.50.3.0" mysql = "9.4.0" -mariadb = "3.5.5" -mongo = "5.5.1" +mariadb = "3.5.6" +mongo = "5.6.1" -redisson = "3.50.0" +redisson = "3.52.0" adventure = "4.24.0" influxdb = "7.3.0" -multilib = "1.2.4" -anvilgui = "1.10.6-SNAPSHOT" +multilib = "1.2.5" +anvilgui = "1.10.9-SNAPSHOT" placeholderapi = "2.11.6" luckperms = "5.5"