diff options
| author | LifeIsAParadox <LifeIsAParadox@users.noreply.github.com> | 2021-09-19 22:51:57 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-09-19 22:51:57 +0200 |
| commit | f204e0f0459ec8eb993fdc4dd419bca0504fbb8d (patch) | |
| tree | 018390da69b3e2efa04d21828927ee2b65d882f7 /src/main/java/me/xmrvizzy/skyblocker/skyblock/dwarven | |
| parent | 731c9430f4cf4cd5f9410cd490d724ba55fa7414 (diff) | |
| parent | 8b0d4faea23ac4486795345fe0981d9cb3059059 (diff) | |
| download | Skyblocker-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.java | 68 | ||||
| -rw-r--r-- | src/main/java/me/xmrvizzy/skyblocker/skyblock/dwarven/Puzzler.java | 72 |
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 |
