search functionality implemented

This commit is contained in:
Kiran Hart 2021-03-24 14:24:00 -04:00
parent 906f188c99
commit 72937db61f
3 changed files with 27 additions and 0 deletions

View File

@ -19,6 +19,8 @@ import java.util.Base64;
import java.util.Date; import java.util.Date;
import java.util.concurrent.ThreadLocalRandom; import java.util.concurrent.ThreadLocalRandom;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/** /**
* The current file has been created by Kiran Hart * The current file has been created by Kiran Hart
@ -214,4 +216,10 @@ public class AuctionAPI {
e.printStackTrace(); e.printStackTrace();
} }
} }
public boolean match(String pattern, String sentence) {
Pattern patt = Pattern.compile(pattern, Pattern.CASE_INSENSITIVE);
Matcher matcher = patt.matcher(sentence);
return matcher.find();
}
} }

View File

@ -1,7 +1,10 @@
package ca.tweetzy.auctionhouse.commands; package ca.tweetzy.auctionhouse.commands;
import ca.tweetzy.auctionhouse.AuctionHouse;
import ca.tweetzy.auctionhouse.guis.GUIAuctionHouse;
import ca.tweetzy.core.commands.AbstractCommand; import ca.tweetzy.core.commands.AbstractCommand;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import java.util.List; import java.util.List;
@ -20,6 +23,14 @@ public class CommandSearch extends AbstractCommand {
@Override @Override
protected ReturnType runCommand(CommandSender sender, String... args) { protected ReturnType runCommand(CommandSender sender, String... args) {
if (args.length <= 0) return ReturnType.SYNTAX_ERROR; if (args.length <= 0) return ReturnType.SYNTAX_ERROR;
Player player = (Player) sender;
StringBuilder builder = new StringBuilder();
for (String arg : args) {
builder.append(arg).append(" ");
}
AuctionHouse.getInstance().getGuiManager().showGUI(player, new GUIAuctionHouse(AuctionHouse.getInstance().getAuctionPlayerManager().getPlayer(player.getUniqueId()), builder.toString().trim()));
return ReturnType.SUCCESS; return ReturnType.SUCCESS;
} }

View File

@ -1,6 +1,7 @@
package ca.tweetzy.auctionhouse.guis; package ca.tweetzy.auctionhouse.guis;
import ca.tweetzy.auctionhouse.AuctionHouse; import ca.tweetzy.auctionhouse.AuctionHouse;
import ca.tweetzy.auctionhouse.api.AuctionAPI;
import ca.tweetzy.auctionhouse.auction.*; import ca.tweetzy.auctionhouse.auction.*;
import ca.tweetzy.auctionhouse.guis.transaction.GUITransactionList; import ca.tweetzy.auctionhouse.guis.transaction.GUITransactionList;
import ca.tweetzy.auctionhouse.helpers.ConfigurationItemHelper; import ca.tweetzy.auctionhouse.helpers.ConfigurationItemHelper;
@ -10,6 +11,7 @@ import ca.tweetzy.core.gui.Gui;
import ca.tweetzy.core.utils.TextUtils; import ca.tweetzy.core.utils.TextUtils;
import ca.tweetzy.core.utils.items.TItemBuilder; import ca.tweetzy.core.utils.items.TItemBuilder;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import java.util.Comparator; import java.util.Comparator;
import java.util.HashMap; import java.util.HashMap;
@ -46,6 +48,12 @@ public class GUIAuctionHouse extends Gui {
} }
} }
public GUIAuctionHouse(AuctionPlayer auctionPlayer, String phrase) {
this(auctionPlayer);
// re-fetch the auction items since we wanna filter out any items that match the phrase
this.items = this.items.stream().filter(auctionItem -> AuctionAPI.getInstance().match(phrase, ChatColor.stripColor(auctionItem.getItemName())) || AuctionAPI.getInstance().match(phrase, auctionItem.getCategory().getType()) || AuctionAPI.getInstance().match(phrase, Bukkit.getOfflinePlayer(auctionItem.getOwner()).getName())).collect(Collectors.toList());
}
public GUIAuctionHouse(AuctionPlayer auctionPlayer, AuctionItemCategory filterCategory, AuctionSaleType filterAuctionType) { public GUIAuctionHouse(AuctionPlayer auctionPlayer, AuctionItemCategory filterCategory, AuctionSaleType filterAuctionType) {
this(auctionPlayer); this(auctionPlayer);
this.filterCategory = filterCategory; this.filterCategory = filterCategory;