aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/me/xmrvizzy/skyblocker/skyblock/dwarven
diff options
context:
space:
mode:
authorLifeIsAParadox <LifeIsAParadox@users.noreply.github.com>2021-09-19 22:51:57 +0200
committerGitHub <noreply@github.com>2021-09-19 22:51:57 +0200
commitf204e0f0459ec8eb993fdc4dd419bca0504fbb8d (patch)
tree018390da69b3e2efa04d21828927ee2b65d882f7 /src/main/java/me/xmrvizzy/skyblocker/skyblock/dwarven
parent731c9430f4cf4cd5f9410cd490d724ba55fa7414 (diff)
parent8b0d4faea23ac4486795345fe0981d9cb3059059 (diff)
downloadSkyblocker-f204e0f0459ec8eb993fdc4dd419bca0504fbb8d.tar.gz
Skyblocker-f204e0f0459ec8eb993fdc4dd419bca0504fbb8d.tar.bz2
Skyblocker-f204e0f0459ec8eb993fdc4dd419bca0504fbb8d.zip
Merge pull request #11 from ExternalTime/chat-parsing-refactor
Chat parsing refactor
Diffstat (limited to 'src/main/java/me/xmrvizzy/skyblocker/skyblock/dwarven')
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/skyblock/dwarven/Fetchur.java68
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/skyblock/dwarven/Puzzler.java72
2 files changed, 84 insertions, 56 deletions
diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dwarven/Fetchur.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dwarven/Fetchur.java
index 232ad99a..0051e1dd 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dwarven/Fetchur.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dwarven/Fetchur.java
@@ -1,47 +1,53 @@
package me.xmrvizzy.skyblocker.skyblock.dwarven;
+import me.xmrvizzy.skyblocker.chat.ChatListener;
+import me.xmrvizzy.skyblocker.config.SkyblockerConfig;
import net.minecraft.client.MinecraftClient;
import net.minecraft.text.Text;
import net.minecraft.text.TranslatableText;
-import net.minecraft.util.Formatting;
-import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
-import java.util.Arrays;
import java.util.HashMap;
-import java.util.List;
import java.util.Map;
-public class Fetchur {
+public class Fetchur extends ChatListener {
+ private static Map<String, String> answers;
- public static Map<String, List<String>> getAnswers() {
- Map<String, List<String>> answers = new HashMap<>();
- answers.put("yellow, see-through", Arrays.asList(new TranslatableText("block.minecraft.yellow_stained_glass").getString()));
- answers.put("circular and sometimes moves", Arrays.asList(new TranslatableText("item.minecraft.compass").getString()));
- answers.put("circlular and sometimes moves", Arrays.asList(new TranslatableText("item.minecraft.compass").getString()));
- answers.put("expensive minerals", Arrays.asList("Mithril"));
- answers.put("useful during celebrations", Arrays.asList(new TranslatableText("item.minecraft.firework_rocket").getString()));
- answers.put("hot, gives energy", Arrays.asList("Cheap Coffee", "Decent Coffee"));
- answers.put("tall, can be opened", Arrays.asList(new TranslatableText("block.minecraft.oak_door").getString()));
- answers.put("explosive, more than usual", Arrays.asList("Superboom TNT"));
- answers.put("wearable, grows", Arrays.asList(new TranslatableText("block.minecraft.pumpkin").getString()));
- answers.put("shiny, makes sparks", Arrays.asList(new TranslatableText("item.minecraft.flint_and_steel").getString()));
- answers.put("red and white and you can mine it", Arrays.asList(new TranslatableText("block.minecraft.nether_quartz_ore").getString()));
- answers.put("round and green, or purple", Arrays.asList(new TranslatableText("item.minecraft.ender_pearl").getString()));
- answers.put("red and Soft", Arrays.asList(new TranslatableText("block.minecraft.red_wool").getString()));
- return answers;
+ public Fetchur() {
+ super("^§e\\[NPC] Fetchur§f: (?:its|theyre) ([a-zA-Z, \\-]*)$");
}
- public static void solve(String message, CallbackInfo ci) {
+ @Override
+ public boolean isEnabled() {
+ return SkyblockerConfig.get().locations.dwarvenMines.solveFetchur;
+ }
+
+ @Override
+ public boolean onMessage(String[] groups) {
MinecraftClient client = MinecraftClient.getInstance();
- if (client.player == null) return;
+ assert client.player != null;
+ String answer = answers.getOrDefault(groups[1], groups[1]);
+ client.player.sendMessage(Text.of("§e[NPC] Fetchur§f: " + answer), false);
+ return true;
+ }
- for (String key : getAnswers().keySet()) {
- if (message.contains(key)) {
- Text text = Text.of(message + " " + Formatting.GREEN + getAnswers().get(key).toString());
- client.player.sendMessage(text, false);
- ci.cancel();
- break;
- }
- }
+ static {
+ //It seems that hints on wiki aren't up to date.
+ //I will assume doors weren't the only ones changed
+ //and that admins did it to make hints more consistent.
+ //Will need to verify if this true.
+ //Changed most commas into "and"s.
+ answers = new HashMap<>();
+ answers.put("yellow and see-through", new TranslatableText("block.minecraft.yellow_stained_glass").getString());
+ answers.put("circular and sometimes moves", new TranslatableText("item.minecraft.compass").getString());
+ answers.put("expensive minerals", "Mithril");
+ answers.put("useful during celebrations", new TranslatableText("item.minecraft.firework_rocket").getString());
+ answers.put("hot and gives energy", "Cheap / Decent Coffee");
+ answers.put("tall and can be opened", new TranslatableText("block.minecraft.oak_door").getString());
+ answers.put("explosive, more than usual", "Superboom TNT");
+ answers.put("wearable and grows", new TranslatableText("block.minecraft.pumpkin").getString());
+ answers.put("shiny and makes sparks", new TranslatableText("item.minecraft.flint_and_steel").getString());
+ answers.put("red and white and you can mine it", new TranslatableText("block.minecraft.nether_quartz_ore").getString());
+ answers.put("round and green, or purple", new TranslatableText("item.minecraft.ender_pearl").getString());
+ answers.put("red and Soft", new TranslatableText("block.minecraft.red_wool").getString());
}
} \ No newline at end of file
diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dwarven/Puzzler.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dwarven/Puzzler.java
index 6c1def82..377ffbf4 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dwarven/Puzzler.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dwarven/Puzzler.java
@@ -1,35 +1,57 @@
package me.xmrvizzy.skyblocker.skyblock.dwarven;
-import net.minecraft.block.Blocks;
+import me.xmrvizzy.skyblocker.chat.ChatListener;
+import me.xmrvizzy.skyblocker.config.SkyblockerConfig;
import net.minecraft.client.MinecraftClient;
-import net.minecraft.util.Formatting;
-import net.minecraft.util.math.BlockPos;
+import net.minecraft.text.Text;
-public class Puzzler {
-
- public static void solve(String message) {
- MinecraftClient client = MinecraftClient.getInstance();
- if (client.player == null && client.world == null) return;
-
- int x = 181;
- int y = 195;
- int z = 135;
+public class Puzzler extends ChatListener {
+ public Puzzler() {
+ super("^§e\\[NPC] §dPuzzler§f: ((?:§d▲|§5▶|§b◀|§a▼){10})$");
+ }
- String path = Formatting.strip(message);
- path = path.substring(path.indexOf(":") + 2);
- String check = path
- .replaceAll("▲", "").replaceAll("▶", "")
- .replaceAll("▼", "").replaceAll("◀", "");
+ @Override
+ public boolean isEnabled() {
+ return SkyblockerConfig.get().locations.dwarvenMines.solvePuzzler;
+ }
- if (check.isEmpty()) {
- for (char c : path.toCharArray()) {
- if (c == '▲') z += 1;
- if (c == '▶') x -= 1;
- if (c == '▼') z -= 1;
- if (c == '◀') x += 1;
+ @Override
+ public boolean onMessage(String[] groups) {
+ int x = 0;
+ int z = 0;
+ for (char c : groups[1].toCharArray()) {
+ switch (c) {
+ case '▲': z += 1;
+ case '▶': x -= 1;
+ case '▼': z -= 1;
+ case '◀': x += 1;
}
-
- client.world.setBlockState(new BlockPos(x, y, z), Blocks.EMERALD_BLOCK.getDefaultState());
}
+ StringBuilder message = new StringBuilder("§e[NPC] §dPuzzler§f: ");
+ if(z > 0) {
+ message.append("§d");
+ message.append(z);
+ message.append("▲");
+ }
+ else if (z < 0) {
+ message.append("§a▼");
+ message.append(-z);
+ message.append("▼");
+ }
+ if(x > 0) {
+ message.append("§b");
+ message.append(x);
+ message.append("◀");
+ }
+ else if (x < 0) {
+ message.append("§5▶");
+ message.append(-x);
+ message.append("▶");
+ }
+
+ MinecraftClient client = MinecraftClient.getInstance();
+ assert client.player != null;
+ client.player.sendMessage(Text.of(message.toString()), false);
+ return true;
}
} \ No newline at end of file