Skip to content

Commit ebc7406

Browse files
committed
Fix /bzs autocomplete & a related bug
1 parent 14f938f commit ebc7406

3 files changed

Lines changed: 31 additions & 10 deletions

File tree

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

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,6 @@ public CommandNode<? extends SharedSuggestionProvider> modifyCommandSuggestions(
3737
case String s when s.equals("call") && CallAutocomplete.commandNode != null -> CallAutocomplete.commandNode;
3838
case String s when s.equals("ahs") && AuctionBazaarAutocomplete.ahsNode != null -> AuctionBazaarAutocomplete.ahsNode;
3939
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;
4140
case String s when s.equals("bz") && AuctionBazaarAutocomplete.bzNode != null -> AuctionBazaarAutocomplete.bzNode;
4241
case String s when s.equals("bazaar") && AuctionBazaarAutocomplete.bazaarNode != null -> AuctionBazaarAutocomplete.bazaarNode;
4342
case String s when s.equals("chapter") && ChaptersAutocomplete.singularCommandNode != null -> ChaptersAutocomplete.singularCommandNode;

src/main/java/de/hysky/skyblocker/skyblock/AuctionBazaarAutocomplete.java

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,9 @@
44
import static net.fabricmc.fabric.api.client.command.v2.ClientCommands.literal;
55

66
import com.mojang.brigadier.arguments.StringArgumentType;
7+
import com.mojang.brigadier.context.CommandContext;
8+
import com.mojang.brigadier.suggestion.Suggestions;
9+
import com.mojang.brigadier.suggestion.SuggestionsBuilder;
710
import com.mojang.brigadier.tree.LiteralCommandNode;
811
import de.hysky.skyblocker.annotations.Init;
912
import de.hysky.skyblocker.skyblock.searchoverlay.SearchOverManager;
@@ -14,12 +17,12 @@
1417
import net.minecraft.commands.SharedSuggestionProvider;
1518
import org.jspecify.annotations.Nullable;
1619

20+
import java.util.concurrent.CompletableFuture;
1721
import java.util.function.Supplier;
1822

1923
public class AuctionBazaarAutocomplete {
2024
public static @Nullable LiteralCommandNode<FabricClientCommandSource> ahsNode;
2125
public static @Nullable LiteralCommandNode<FabricClientCommandSource> ahsearchNode;
22-
public static @Nullable LiteralCommandNode<FabricClientCommandSource> bzsNode;
2326
public static @Nullable LiteralCommandNode<FabricClientCommandSource> bzNode;
2427
public static @Nullable LiteralCommandNode<FabricClientCommandSource> bazaarNode;
2528

@@ -28,10 +31,14 @@ public static void init() {
2831
NEURepoManager.runAsyncAfterLoad(AuctionBazaarAutocomplete::createNodes);
2932
}
3033

34+
// since /bzs is only client-side it needs separate handling
35+
public static CompletableFuture<Suggestions> suggestBzs(CommandContext<FabricClientCommandSource> context, SuggestionsBuilder builder) {
36+
return SharedSuggestionProvider.suggest(SearchOverManager.getBazaarItems(), builder);
37+
}
38+
3139
private static void createNodes() {
3240
ahsNode = createNode("ahs", SearchOverManager::getAuctionItems);
3341
ahsearchNode = createNode("ahsearch", SearchOverManager::getAuctionItems);
34-
bzsNode = createNode("bzs", SearchOverManager::getBazaarItems);
3542
bzNode = createNode("bz", SearchOverManager::getBazaarItems);
3643
bazaarNode = createNode("bazaar", SearchOverManager::getBazaarItems);
3744
}

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

Lines changed: 22 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
import de.hysky.skyblocker.config.configs.UIAndVisualsConfig;
1111
import de.hysky.skyblocker.debug.Debug;
1212
import de.hysky.skyblocker.injected.SkyblockerStack;
13+
import de.hysky.skyblocker.skyblock.AuctionBazaarAutocomplete;
1314
import de.hysky.skyblocker.skyblock.item.tooltip.info.TooltipInfoType;
1415
import de.hysky.skyblocker.skyblock.itemlist.ItemRepository;
1516
import de.hysky.skyblocker.skyblock.museum.Donation;
@@ -19,6 +20,7 @@
1920
import de.hysky.skyblocker.utils.FlexibleItemStack;
2021
import de.hysky.skyblocker.utils.ItemUtils;
2122
import de.hysky.skyblocker.utils.NEURepoManager;
23+
import de.hysky.skyblocker.utils.Utils;
2224
import de.hysky.skyblocker.utils.scheduler.MessageScheduler;
2325
import io.github.moulberry.repo.data.NEUItem;
2426
import io.github.moulberry.repo.util.NEUId;
@@ -89,17 +91,30 @@ public static void init() {
8991

9092
private static void registerSearchCommands(CommandDispatcher<FabricClientCommandSource> dispatcher, CommandBuildContext registryAccess) {
9193
if (SkyblockerConfigManager.get().uiAndVisuals.searchOverlay.enableCommands) {
92-
dispatcher.register(literal("ahs").executes(_ -> startCommand(true, "")));
93-
dispatcher.register(literal("ahsearch").executes(_ -> startCommand(true, "")));
94-
dispatcher.register(literal("bzs").executes(_ -> startCommand(false, "")));
95-
96-
dispatcher.register(literal("ahs").then(argument("item", StringArgumentType.greedyString())
94+
dispatcher.register(literal("ahs")
95+
.requires(_ -> Utils.isOnSkyblock())
96+
.executes(_ -> startCommand(true, "")));
97+
dispatcher.register(literal("ahsearch")
98+
.requires(_ -> Utils.isOnSkyblock())
99+
.executes(_ -> startCommand(true, "")));
100+
dispatcher.register(literal("bzs")
101+
.requires(_ -> Utils.isOnSkyblock())
102+
.executes(_ -> startCommand(false, "")));
103+
104+
dispatcher.register(literal("ahs")
105+
.requires(_ -> Utils.isOnSkyblock())
106+
.then(argument("item", StringArgumentType.greedyString())
97107
.executes(context -> startCommand(true, StringArgumentType.getString(context, "item"))
98108
)));
99-
dispatcher.register(literal("ahsearch").then(argument("item", StringArgumentType.greedyString())
109+
dispatcher.register(literal("ahsearch")
110+
.requires(_ -> Utils.isOnSkyblock())
111+
.then(argument("item", StringArgumentType.greedyString())
100112
.executes(context -> startCommand(true, StringArgumentType.getString(context, "item"))
101113
)));
102-
dispatcher.register(literal("bzs").then(argument("item", StringArgumentType.greedyString())
114+
dispatcher.register(literal("bzs")
115+
.requires(_ -> Utils.isOnSkyblock())
116+
.then(argument("item", StringArgumentType.greedyString())
117+
.suggests(AuctionBazaarAutocomplete::suggestBzs)
103118
.executes(context -> startCommand(false, StringArgumentType.getString(context, "item"))
104119
)));
105120
}

0 commit comments

Comments
 (0)