diff options
author | olim <bobq4582@gmail.com> | 2024-02-08 16:35:29 +0000 |
---|---|---|
committer | olim <bobq4582@gmail.com> | 2024-02-08 16:35:29 +0000 |
commit | 91ce7cff49db6df844900dd4a9c405747ff4935a (patch) | |
tree | 3c8e5abf7a4b499139ad1ac5151ba3f776b62bac | |
parent | 7a0635b4f7825ac335e79e4ec738cefcce47c2f2 (diff) | |
download | Skyblocker-91ce7cff49db6df844900dd4a9c405747ff4935a.tar.gz Skyblocker-91ce7cff49db6df844900dd4a9c405747ff4935a.tar.bz2 Skyblocker-91ce7cff49db6df844900dd4a9c405747ff4935a.zip |
add commands to open seach
add /bzs to search bazaar and /ahs to search ah
6 files changed, 75 insertions, 18 deletions
diff --git a/src/main/java/de/hysky/skyblocker/config/SkyblockerConfig.java b/src/main/java/de/hysky/skyblocker/config/SkyblockerConfig.java index 7a9cb721..fd548d6a 100644 --- a/src/main/java/de/hysky/skyblocker/config/SkyblockerConfig.java +++ b/src/main/java/de/hysky/skyblocker/config/SkyblockerConfig.java @@ -431,6 +431,9 @@ public class SkyblockerConfig { public int historyLength = 3; @SerialEntry + public boolean enableCommands = false; + + @SerialEntry public List<String> bazaarHistory = new ArrayList<>(); @SerialEntry diff --git a/src/main/java/de/hysky/skyblocker/config/categories/GeneralCategory.java b/src/main/java/de/hysky/skyblocker/config/categories/GeneralCategory.java index 4abf7836..3d7f63ce 100644 --- a/src/main/java/de/hysky/skyblocker/config/categories/GeneralCategory.java +++ b/src/main/java/de/hysky/skyblocker/config/categories/GeneralCategory.java @@ -686,6 +686,14 @@ public class GeneralCategory { newValue -> config.general.searchOverlay.historyLength = newValue) .controller(opt -> IntegerSliderControllerBuilder.create(opt).range(0, 5).step(1)) .build()) + .option(Option.<Boolean>createBuilder() + .name(Text.translatable("text.autoconfig.skyblocker.option.general.searchOverlay.enableCommands")) + .description(OptionDescription.of(Text.translatable("text.autoconfig.skyblocker.option.general.searchOverlay.enableCommands.@Tooltip"))) + .binding(defaults.general.searchOverlay.enableCommands, + () -> config.general.searchOverlay.enableCommands, + newValue -> config.general.searchOverlay.enableCommands = newValue) + .controller(ConfigUtils::createBooleanController) + .build()) .build()) .build(); } diff --git a/src/main/java/de/hysky/skyblocker/mixin/ClientPlayerEntityMixin.java b/src/main/java/de/hysky/skyblocker/mixin/ClientPlayerEntityMixin.java index 84211f9d..bbe58d36 100644 --- a/src/main/java/de/hysky/skyblocker/mixin/ClientPlayerEntityMixin.java +++ b/src/main/java/de/hysky/skyblocker/mixin/ClientPlayerEntityMixin.java @@ -63,8 +63,7 @@ public abstract class ClientPlayerEntityMixin extends AbstractClientPlayerEntity } @Inject(method = "openEditSignScreen", at = @At("HEAD"), cancellable = true) public void skyblocker$searchOverlay(SignBlockEntity sign, boolean front, CallbackInfo callbackInfo) { - - assert client.currentScreen != null; + if (client == null) return; if (SkyblockerConfigManager.get().general.searchOverlay.enableAuctionHouse && (FabricLoader.getInstance().isDevelopmentEnvironment() || client.currentScreen.getTitle().getString().toLowerCase().contains("auction")) ) { if (sign.getText(front).getMessage(3, false).getString().equalsIgnoreCase("enter query")) { SearchOverManager.updateSign(sign, front,true); diff --git a/src/main/java/de/hysky/skyblocker/skyblock/searchOverlay/OverlayScreen.java b/src/main/java/de/hysky/skyblocker/skyblock/searchOverlay/OverlayScreen.java index 45ec2781..db72b3d8 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/searchOverlay/OverlayScreen.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/searchOverlay/OverlayScreen.java @@ -3,10 +3,8 @@ package de.hysky.skyblocker.skyblock.searchOverlay; import de.hysky.skyblocker.config.SkyblockerConfigManager; import net.minecraft.client.gui.DrawContext; import net.minecraft.client.gui.screen.Screen; -import net.minecraft.client.gui.tooltip.Tooltip; import net.minecraft.client.gui.widget.ButtonWidget; import net.minecraft.client.gui.widget.TextFieldWidget; -import net.minecraft.client.item.TooltipContext; import net.minecraft.item.ItemStack; import net.minecraft.text.Style; import net.minecraft.text.Text; @@ -24,7 +22,6 @@ public class OverlayScreen extends Screen { protected static final Identifier SEARCH_ICON_TEXTURE = new Identifier("icon/search"); private static final int rowHeight = 20; - private TextFieldWidget searchField; private ButtonWidget finishedButton; private ButtonWidget[] suggestionButtons; @@ -42,7 +39,7 @@ public class OverlayScreen extends Screen { super.init(); int rowWidth = (int)(this.width * 0.4); int startX = (int)(this.width * 0.5) - rowWidth/2; - int startY = (int) ((int)(this.height * 0.5)- (rowHeight * (1+ SkyblockerConfigManager.get().general.searchOverlay.maxSuggestions + 0.75 + SkyblockerConfigManager.get().general.searchOverlay.historyLength)) / 2); + int startY = (int) ((int)(this.height * 0.5)- (rowHeight * (1 + SkyblockerConfigManager.get().general.searchOverlay.maxSuggestions + 0.75 + SkyblockerConfigManager.get().general.searchOverlay.historyLength)) / 2); // Search field this.searchField = new TextFieldWidget(textRenderer,startX, startY, rowWidth - rowHeight, rowHeight, Text.literal("Search...")); diff --git a/src/main/java/de/hysky/skyblocker/skyblock/searchOverlay/SearchOverManager.java b/src/main/java/de/hysky/skyblocker/skyblock/searchOverlay/SearchOverManager.java index 84bcada9..d57e3174 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/searchOverlay/SearchOverManager.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/searchOverlay/SearchOverManager.java @@ -4,25 +4,31 @@ import com.google.gson.JsonArray; import com.google.gson.JsonElement; import com.google.gson.JsonObject; import com.google.gson.JsonParser; +import com.mojang.brigadier.Command; +import com.mojang.brigadier.CommandDispatcher; +import com.mojang.brigadier.context.CommandContext; import de.hysky.skyblocker.SkyblockerMod; import de.hysky.skyblocker.config.SkyblockerConfigManager; import de.hysky.skyblocker.utils.Http; import de.hysky.skyblocker.utils.NEURepoManager; +import de.hysky.skyblocker.utils.scheduler.MessageScheduler; import io.github.moulberry.repo.data.NEUItem; +import net.fabricmc.fabric.api.client.command.v2.ClientCommandRegistrationCallback; +import net.fabricmc.fabric.api.client.command.v2.FabricClientCommandSource; import net.minecraft.block.entity.SignBlockEntity; import net.minecraft.client.MinecraftClient; +import net.minecraft.command.CommandRegistryAccess; import net.minecraft.network.packet.c2s.play.UpdateSignC2SPacket; import net.minecraft.text.Text; -import org.apache.commons.lang3.StringUtils; -import org.apache.commons.lang3.text.WordUtils; import org.jetbrains.annotations.Nullable; -import java.net.http.HttpHeaders; import java.util.*; import java.util.regex.Matcher; import java.util.regex.Pattern; import java.util.stream.Collectors; +import static net.fabricmc.fabric.api.client.command.v2.ClientCommandManager.literal; + public class SearchOverManager { private static final MinecraftClient CLIENT = MinecraftClient.getInstance(); @@ -46,6 +52,7 @@ public class SearchOverManager { private static @Nullable SignBlockEntity Sign = null; private static boolean SignFront = true; private static boolean IsAuction; + private static boolean IsCommand; protected static String search = ""; @@ -60,6 +67,32 @@ public class SearchOverManager { * uses the skyblock api and Moulberry auction to load a list of items in bazaar and auction house */ public static void init() { + ClientCommandRegistrationCallback.EVENT.register(SearchOverManager::registerSearchCommands); + + LoadItems(); + } + + private static void registerSearchCommands(CommandDispatcher<FabricClientCommandSource> dispatcher, CommandRegistryAccess registryAccess) { + if (SkyblockerConfigManager.get().general.searchOverlay.enableCommands) { + dispatcher.register(literal("ahs") + .executes(context -> startCommand(true)) + ); + dispatcher.register(literal("bzs") + .executes(context -> startCommand(false)) + ); + } + } + + private static int startCommand(boolean isAuction) { + IsCommand = true; + IsAuction = isAuction; + search = ""; + suggestionsArray = new String[]{}; + CLIENT.send(() -> CLIENT.setScreen( new OverlayScreen(Text.of("")))); + return Command.SINGLE_SUCCESS; + } + + private static void LoadItems(){ //get bazaar items try { String response = Http.sendGetRequest("https://api.hypixel.net/v2/resources/skyblock/items"); @@ -108,11 +141,10 @@ public class SearchOverManager { } } } - - } catch (Exception e) { - //can not get items for bazaar search //todo log + //can not get items for bazaar search //todo log } + //get auction items try { JsonObject AuctionData = SkyblockerMod.GSON.fromJson(Http.sendGetRequest(THREE_DAY_AVERAGE), JsonObject.class); @@ -137,11 +169,9 @@ public class SearchOverManager { continue; } } - } catch (Exception e) { - //can not find ah todo logger + //can not find ah todo logger } - } /** * Capitalizes the first letter off every word in a string @@ -173,6 +203,7 @@ public class SearchOverManager { public static void updateSign(SignBlockEntity sign, boolean front, boolean isAuction) { SignFront = front; Sign = sign; + IsCommand = false; IsAuction = isAuction; if (SkyblockerConfigManager.get().general.searchOverlay.keepPreviousSearches){ Text[] messages = Sign.getText(SignFront).getMessages(CLIENT.shouldFilterText()); @@ -186,9 +217,7 @@ public class SearchOverManager { }else{ search = ""; } - suggestionsArray = new String[]{}; - } /** @@ -259,7 +288,6 @@ public class SearchOverManager { return null; } - /** * Add the current search value to the start of the history list and truncate to the max history value and save this to the config */ @@ -288,6 +316,26 @@ public class SearchOverManager { if (!search.isEmpty()){ saveHistory(); } + if (IsCommand){ + pushCommand(); + } + else { + pushSign(); + } + + + } + private static void pushCommand() { + String command; + if (IsAuction){ + command = "/ahSearch " + search; + }else{ + command = "/bz " + search; + } + MessageScheduler.INSTANCE.queueMessage(command, 0); + } + + private static void pushSign() { //splits text into 2 lines max = 30 chars StringBuilder line0 = new StringBuilder(); String line1; diff --git a/src/main/resources/assets/skyblocker/lang/en_us.json b/src/main/resources/assets/skyblocker/lang/en_us.json index acab72d0..bd6482bf 100644 --- a/src/main/resources/assets/skyblocker/lang/en_us.json +++ b/src/main/resources/assets/skyblocker/lang/en_us.json @@ -141,6 +141,8 @@ "text.autoconfig.skyblocker.option.general.searchOverlay.maxSuggestions.@Tooltip": "The maximum number off suggested items to show.", "text.autoconfig.skyblocker.option.general.searchOverlay.historyLength": "Saved Search History Length", "text.autoconfig.skyblocker.option.general.searchOverlay.historyLength.@Tooltip": "The long of a search history to save and display for the overlay.", + "text.autoconfig.skyblocker.option.general.searchOverlay.enableCommands": "Open from commands", + "text.autoconfig.skyblocker.option.general.searchOverlay.enableCommands.@Tooltip": "Opens the bazaar search with \"/bzs\" and auction house with \"/ahs\". A re-log is required for this setting to be updated.", "text.autoconfig.skyblocker.option.general.searchOverlay.historyLabel": "History:", "text.autoconfig.skyblocker.option.general.betterPartyFinder": "Better Party Finder", "skyblocker.itemTooltip.nullMessage": "§cItem price information on tooltip will renew in max 60 seconds. If not, check latest.log", |