Skip to content
Merged

3.2.2 #136

Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 6 additions & 21 deletions API/src/main/java/info/preva1l/fadah/api/AuctionHouseAPI.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,14 @@

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;
import info.preva1l.fadah.records.collection.ExpiredItems;
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;
Expand All @@ -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
Expand Down
31 changes: 31 additions & 0 deletions API/src/main/java/info/preva1l/fadah/api/menus/MenuManager.java
Original file line number Diff line number Diff line change
@@ -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);
}
Original file line number Diff line number Diff line change
@@ -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,
}
14 changes: 14 additions & 0 deletions API/src/main/java/info/preva1l/fadah/api/menus/SortingMethod.java
Original file line number Diff line number Diff line change
@@ -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
}
Original file line number Diff line number Diff line change
@@ -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;
Expand All @@ -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() {
Expand Down
Original file line number Diff line number Diff line change
@@ -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;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -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()));
})
);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ private PriceParser() {

@Override
public boolean hasMax() {
return true;
return false;
}

@Override
Expand Down
Original file line number Diff line number Diff line change
@@ -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;
Expand Down Expand Up @@ -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);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand All @@ -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
Expand Down Expand Up @@ -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<Bid> bids;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand Down Expand Up @@ -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<Bid> bids;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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));
}
Expand Down Expand Up @@ -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));
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;

/**
Expand Down Expand Up @@ -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;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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) {
Expand Down
4 changes: 2 additions & 2 deletions Bukkit/src/main/java/info/preva1l/fadah/utils/Tasks.java
Original file line number Diff line number Diff line change
Expand Up @@ -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);
}

/**
Expand Down
Loading
Loading