aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorolim <bobq4582@gmail.com>2024-02-08 16:35:29 +0000
committerolim <bobq4582@gmail.com>2024-02-08 16:35:29 +0000
commit91ce7cff49db6df844900dd4a9c405747ff4935a (patch)
tree3c8e5abf7a4b499139ad1ac5151ba3f776b62bac
parent7a0635b4f7825ac335e79e4ec738cefcce47c2f2 (diff)
downloadSkyblocker-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
-rw-r--r--src/main/java/de/hysky/skyblocker/config/SkyblockerConfig.java3
-rw-r--r--src/main/java/de/hysky/skyblocker/config/categories/GeneralCategory.java8
-rw-r--r--src/main/java/de/hysky/skyblocker/mixin/ClientPlayerEntityMixin.java3
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/searchOverlay/OverlayScreen.java5
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/searchOverlay/SearchOverManager.java72
-rw-r--r--src/main/resources/assets/skyblocker/lang/en_us.json2
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",