Skip to content

Commit 14f938f

Browse files
committed
Add autocomplete to /ahs, /bzs, & /bz
1 parent 0dc4cf1 commit 14f938f

3 files changed

Lines changed: 66 additions & 0 deletions

File tree

src/main/java/de/hysky/skyblocker/mixins/ClientboundCommandsPacketMixin.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import com.mojang.brigadier.tree.CommandNode;
55
import com.mojang.brigadier.tree.LiteralCommandNode;
66

7+
import de.hysky.skyblocker.skyblock.AuctionBazaarAutocomplete;
78
import de.hysky.skyblocker.skyblock.CallAutocomplete;
89
import de.hysky.skyblocker.skyblock.ChaptersAutocomplete;
910
import de.hysky.skyblocker.skyblock.JoinInstanceAutocomplete;
@@ -34,6 +35,11 @@ public CommandNode<? extends SharedSuggestionProvider> modifyCommandSuggestions(
3435
case String s when s.equals("rngmeter") && RngMeterAutocomplete.longCommand != null -> RngMeterAutocomplete.longCommand;
3536
case String s when s.equals("rng") && RngMeterAutocomplete.shortCommand != null -> RngMeterAutocomplete.shortCommand;
3637
case String s when s.equals("call") && CallAutocomplete.commandNode != null -> CallAutocomplete.commandNode;
38+
case String s when s.equals("ahs") && AuctionBazaarAutocomplete.ahsNode != null -> AuctionBazaarAutocomplete.ahsNode;
39+
case String s when s.equals("ahsearch") && AuctionBazaarAutocomplete.ahsearchNode != null -> AuctionBazaarAutocomplete.ahsearchNode;
40+
case String s when s.equals("bzs") && AuctionBazaarAutocomplete.bzsNode != null -> AuctionBazaarAutocomplete.bzsNode;
41+
case String s when s.equals("bz") && AuctionBazaarAutocomplete.bzNode != null -> AuctionBazaarAutocomplete.bzNode;
42+
case String s when s.equals("bazaar") && AuctionBazaarAutocomplete.bazaarNode != null -> AuctionBazaarAutocomplete.bazaarNode;
3743
case String s when s.equals("chapter") && ChaptersAutocomplete.singularCommandNode != null -> ChaptersAutocomplete.singularCommandNode;
3844
case String s when s.equals("chapters") && ChaptersAutocomplete.pluralCommandNode != null -> ChaptersAutocomplete.pluralCommandNode;
3945
default -> original;
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
package de.hysky.skyblocker.skyblock;
2+
3+
import static net.fabricmc.fabric.api.client.command.v2.ClientCommands.argument;
4+
import static net.fabricmc.fabric.api.client.command.v2.ClientCommands.literal;
5+
6+
import com.mojang.brigadier.arguments.StringArgumentType;
7+
import com.mojang.brigadier.tree.LiteralCommandNode;
8+
import de.hysky.skyblocker.annotations.Init;
9+
import de.hysky.skyblocker.skyblock.searchoverlay.SearchOverManager;
10+
import de.hysky.skyblocker.utils.NEURepoManager;
11+
import de.hysky.skyblocker.utils.Utils;
12+
import de.hysky.skyblocker.utils.command.CommandUtils;
13+
import net.fabricmc.fabric.api.client.command.v2.FabricClientCommandSource;
14+
import net.minecraft.commands.SharedSuggestionProvider;
15+
import org.jspecify.annotations.Nullable;
16+
17+
import java.util.function.Supplier;
18+
19+
public class AuctionBazaarAutocomplete {
20+
public static @Nullable LiteralCommandNode<FabricClientCommandSource> ahsNode;
21+
public static @Nullable LiteralCommandNode<FabricClientCommandSource> ahsearchNode;
22+
public static @Nullable LiteralCommandNode<FabricClientCommandSource> bzsNode;
23+
public static @Nullable LiteralCommandNode<FabricClientCommandSource> bzNode;
24+
public static @Nullable LiteralCommandNode<FabricClientCommandSource> bazaarNode;
25+
26+
@Init(priority = 100) // Load after SearchOverManager
27+
public static void init() {
28+
NEURepoManager.runAsyncAfterLoad(AuctionBazaarAutocomplete::createNodes);
29+
}
30+
31+
private static void createNodes() {
32+
ahsNode = createNode("ahs", SearchOverManager::getAuctionItems);
33+
ahsearchNode = createNode("ahsearch", SearchOverManager::getAuctionItems);
34+
bzsNode = createNode("bzs", SearchOverManager::getBazaarItems);
35+
bzNode = createNode("bz", SearchOverManager::getBazaarItems);
36+
bazaarNode = createNode("bazaar", SearchOverManager::getBazaarItems);
37+
}
38+
39+
private static LiteralCommandNode<FabricClientCommandSource> createNode(String command, Supplier<Iterable<String>> suggester) {
40+
return literal(command)
41+
.requires(_ -> Utils.isOnSkyblock())
42+
.executes(CommandUtils.noOp)
43+
.then(argument("item", StringArgumentType.greedyString())
44+
.suggests((_, builder) -> SharedSuggestionProvider.suggest(suggester.get(), builder))
45+
.executes(CommandUtils.noOp))
46+
.build();
47+
}
48+
}

src/main/java/de/hysky/skyblocker/skyblock/searchoverlay/SearchOverManager.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,11 +90,15 @@ public static void init() {
9090
private static void registerSearchCommands(CommandDispatcher<FabricClientCommandSource> dispatcher, CommandBuildContext registryAccess) {
9191
if (SkyblockerConfigManager.get().uiAndVisuals.searchOverlay.enableCommands) {
9292
dispatcher.register(literal("ahs").executes(_ -> startCommand(true, "")));
93+
dispatcher.register(literal("ahsearch").executes(_ -> startCommand(true, "")));
9394
dispatcher.register(literal("bzs").executes(_ -> startCommand(false, "")));
9495

9596
dispatcher.register(literal("ahs").then(argument("item", StringArgumentType.greedyString())
9697
.executes(context -> startCommand(true, StringArgumentType.getString(context, "item"))
9798
)));
99+
dispatcher.register(literal("ahsearch").then(argument("item", StringArgumentType.greedyString())
100+
.executes(context -> startCommand(true, StringArgumentType.getString(context, "item"))
101+
)));
98102
dispatcher.register(literal("bzs").then(argument("item", StringArgumentType.greedyString())
99103
.executes(context -> startCommand(false, StringArgumentType.getString(context, "item"))
100104
)));
@@ -215,6 +219,14 @@ private static void loadItems() {
215219
SearchOverManager.namesToNeuId = namesToNeuId;
216220
}
217221

222+
public static HashSet<String> getBazaarItems() {
223+
return bazaarItems;
224+
}
225+
226+
public static HashSet<String> getAuctionItems() {
227+
return auctionItems;
228+
}
229+
218230
/**
219231
* Receives data when a search is started and resets values
220232
*

0 commit comments

Comments
 (0)