aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/de/hysky/skyblocker/skyblock/chat
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/de/hysky/skyblocker/skyblock/chat')
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/chat/ChatRule.java14
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/chat/ChatRuleConfigScreen.java1
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/chat/ChatRulesConfigListWidget.java2
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/chat/ChatRulesHandler.java47
4 files changed, 30 insertions, 34 deletions
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/chat/ChatRule.java b/src/main/java/de/hysky/skyblocker/skyblock/chat/ChatRule.java
index 34cc6352..7fd6844d 100644
--- a/src/main/java/de/hysky/skyblocker/skyblock/chat/ChatRule.java
+++ b/src/main/java/de/hysky/skyblocker/skyblock/chat/ChatRule.java
@@ -232,19 +232,19 @@ public class ChatRule {
return true;
}
- String rawLocation = Utils.getLocationRaw();
+ String cleanedMapLocation = Utils.getMap().toLowerCase().replace(" ", "");
Boolean isLocationValid = null;
-
- for (String validLocation : validLocations.replace(" ", "").toLowerCase().split(",")) {//the locations are raw locations split by "," and start with ! if not locations
- String rawValidLocation = ChatRulesHandler.locations.get(validLocation.replace("!",""));
- if (rawValidLocation == null) continue;
+ for (String validLocation : validLocations.replace(" ", "").toLowerCase().split(",")) {//the locations are split by "," and start with ! if not locations
+ if (validLocation == null) continue;
if (validLocation.startsWith("!")) {//not location
- if (Objects.equals(rawValidLocation, rawLocation.toLowerCase())) {
+ if (Objects.equals(validLocation.substring(1), cleanedMapLocation)) {
isLocationValid = false;
break;
+ } else {
+ isLocationValid = true;
}
} else {
- if (Objects.equals(rawValidLocation, rawLocation.toLowerCase())) { //normal location
+ if (Objects.equals(validLocation, cleanedMapLocation)) { //normal location
isLocationValid = true;
break;
}
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/chat/ChatRuleConfigScreen.java b/src/main/java/de/hysky/skyblocker/skyblock/chat/ChatRuleConfigScreen.java
index cb6e8cc8..9ecb71e2 100644
--- a/src/main/java/de/hysky/skyblocker/skyblock/chat/ChatRuleConfigScreen.java
+++ b/src/main/java/de/hysky/skyblocker/skyblock/chat/ChatRuleConfigScreen.java
@@ -156,6 +156,7 @@ public class ChatRuleConfigScreen extends Screen {
locationLabelTextPos = currentPos;
lineXOffset = client.textRenderer.getWidth(Text.translatable("skyblocker.config.chat.chatRules.screen.ruleScreen.locations")) + SPACER_X;
locationsInput = new TextFieldWidget(client.textRenderer, currentPos.leftInt() + lineXOffset, currentPos.rightInt(), 200, 20, Text.of(""));
+ locationsInput.setMaxLength(96);
locationsInput.setText(chatRule.getValidLocations());
MutableText locationToolTip = Text.translatable("skyblocker.config.chat.chatRules.screen.ruleScreen.locations.@Tooltip");
locationToolTip.append("\n");
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/chat/ChatRulesConfigListWidget.java b/src/main/java/de/hysky/skyblocker/skyblock/chat/ChatRulesConfigListWidget.java
index 29c052b8..1fb763e2 100644
--- a/src/main/java/de/hysky/skyblocker/skyblock/chat/ChatRulesConfigListWidget.java
+++ b/src/main/java/de/hysky/skyblocker/skyblock/chat/ChatRulesConfigListWidget.java
@@ -45,7 +45,7 @@ public class ChatRulesConfigListWidget extends ElementListWidget<ChatRulesConfig
protected void addRuleAfterSelected() {
hasChanged = true;
- int newIndex = children().indexOf(getSelectedOrNull()) + 1;
+ int newIndex = Math.max(children().indexOf(getSelectedOrNull()), 0);
ChatRulesHandler.chatRuleList.add(newIndex, new ChatRule());
children().add(newIndex + 1, new ChatRuleConfigEntry(newIndex));
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/chat/ChatRulesHandler.java b/src/main/java/de/hysky/skyblocker/skyblock/chat/ChatRulesHandler.java
index d1c7f4fd..90a3b641 100644
--- a/src/main/java/de/hysky/skyblocker/skyblock/chat/ChatRulesHandler.java
+++ b/src/main/java/de/hysky/skyblocker/skyblock/chat/ChatRulesHandler.java
@@ -8,6 +8,7 @@ import com.mojang.serialization.JsonOps;
import de.hysky.skyblocker.SkyblockerMod;
import de.hysky.skyblocker.mixins.accessors.MessageHandlerAccessor;
import de.hysky.skyblocker.utils.Http;
+import de.hysky.skyblocker.utils.Location;
import de.hysky.skyblocker.utils.Utils;
import net.fabricmc.fabric.api.client.message.v1.ClientReceiveMessageEvents;
import net.minecraft.client.MinecraftClient;
@@ -34,19 +35,33 @@ public class ChatRulesHandler {
private static final Path CHAT_RULE_FILE = SkyblockerMod.CONFIG_DIR.resolve("chat_rules.json");
private static final Codec<Map<String, List<ChatRule>>> MAP_CODEC = Codec.unboundedMap(Codec.STRING, ChatRule.LIST_CODEC);
/**
- * look up table for the locations input by the users to raw locations
- */
- protected static final HashMap<String, String> locations = new HashMap<>();
- /**
* list of possible locations still formatted for the tool tip
*/
- protected static final List<String> locationsList = new ArrayList<>();
+ protected static final List<String> locationsList = List.of (
+ "The Farming Islands",
+ "Crystal Hollows",
+ "Jerry's Workshop",
+ "The Park",
+ "Dark Auction",
+ "Dungeons",
+ "The End",
+ "Crimson Isle",
+ "Hub",
+ "Kuudra's Hollow",
+ "Private Island",
+ "Dwarven Mines",
+ "The Garden",
+ "Gold Mine",
+ "Blazing Fortress",
+ "Deep Caverns",
+ "Spider's Den",
+ "Mineshaft"
+ );
protected static final List<ChatRule> chatRuleList = new ArrayList<>();
public static void init() {
CompletableFuture.runAsync(ChatRulesHandler::loadChatRules);
- CompletableFuture.runAsync(ChatRulesHandler::loadLocations);
ClientReceiveMessageEvents.ALLOW_GAME.register(ChatRulesHandler::checkMessage);
}
@@ -76,26 +91,6 @@ public class ChatRulesHandler {
chatRuleList.add(miningAbilityRule);
}
- private static void loadLocations() {
- try {
- String response = Http.sendGetRequest("https://api.hypixel.net/v2/resources/games");
- JsonObject locationsJson = JsonParser.parseString(response).getAsJsonObject().get("games").getAsJsonObject().get("SKYBLOCK").getAsJsonObject().get("modeNames").getAsJsonObject();
- for (Map.Entry<String, JsonElement> entry : locationsJson.entrySet()) {
- //fix old naming todo remove when hypixel fix
- if (Objects.equals(entry.getKey(), "instanced")) {
- locationsList.add(entry.getValue().getAsString());
- locations.put(entry.getValue().getAsString().replace(" ", "").toLowerCase(), "kuudra");
- continue;
- }
- locationsList.add(entry.getValue().getAsString());
- //add to list in a simplified for so more lenient for user input
- locations.put(entry.getValue().getAsString().replace(" ", "").toLowerCase(), entry.getKey());
- }
- } catch (Exception e) {
- LOGGER.error("[Skyblocker Chat Rules] Failed to load locations!", e);
- }
- }
-
protected static void saveChatRules() {
JsonObject chatRuleJson = new JsonObject();
chatRuleJson.add("rules", ChatRule.LIST_CODEC.encodeStart(JsonOps.INSTANCE, chatRuleList).getOrThrow());