aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/de
diff options
context:
space:
mode:
authorRime <81419447+Emirlol@users.noreply.github.com>2024-11-01 20:43:57 +0300
committerGitHub <noreply@github.com>2024-11-02 01:43:57 +0800
commit83c31b2eb0f342a72fc477250e70fb1a5c6f2b84 (patch)
tree72ef0fdd3bb493caac73d8b621922b583e454eca /src/main/java/de
parent4d7efc2e7ca7e86c85ef27c9916784ee3ae05e02 (diff)
downloadSkyblocker-83c31b2eb0f342a72fc477250e70fb1a5c6f2b84.tar.gz
Skyblocker-83c31b2eb0f342a72fc477250e70fb1a5c6f2b84.tar.bz2
Skyblocker-83c31b2eb0f342a72fc477250e70fb1a5c6f2b84.zip
Add math teacher helper (#1041)
Co-authored-by: Kevinthegreat <92656833+kevinthegreat1@users.noreply.github.com>
Diffstat (limited to 'src/main/java/de')
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/events/greatspook/MathTeacherHelper.java58
1 files changed, 58 insertions, 0 deletions
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/events/greatspook/MathTeacherHelper.java b/src/main/java/de/hysky/skyblocker/skyblock/events/greatspook/MathTeacherHelper.java
new file mode 100644
index 00000000..526cb383
--- /dev/null
+++ b/src/main/java/de/hysky/skyblocker/skyblock/events/greatspook/MathTeacherHelper.java
@@ -0,0 +1,58 @@
+package de.hysky.skyblocker.skyblock.events.greatspook;
+
+import de.hysky.skyblocker.annotations.Init;
+import de.hysky.skyblocker.utils.Calculator;
+import de.hysky.skyblocker.utils.Constants;
+import net.fabricmc.fabric.api.client.message.v1.ClientReceiveMessageEvents;
+import net.minecraft.screen.ScreenTexts;
+import net.minecraft.text.ClickEvent;
+import net.minecraft.text.HoverEvent;
+import net.minecraft.text.PlainTextContent;
+import net.minecraft.text.Text;
+import net.minecraft.util.Formatting;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.util.List;
+
+/**
+ * <p>A helper class for the Math Teachers that can spawn after killing Primal Fears in the Great Spook event.</p>
+ */
+public final class MathTeacherHelper {
+ private static final Logger LOGGER = LoggerFactory.getLogger(MathTeacherHelper.class);
+
+ @Init
+ public static void init() {
+ ClientReceiveMessageEvents.MODIFY_GAME.register(MathTeacherHelper::onMessage);
+ }
+
+ /**
+ * Appends the result of the math expression to the message and a send in chat text that, well, sends the result in chat.
+ */
+ public static Text onMessage(Text message, boolean overlay) {
+ if (overlay) return message;
+ List<Text> siblings = message.getSiblings();
+ if (message.getContent() != PlainTextContent.EMPTY || siblings.size() != 3) return message;
+ if (!siblings.getFirst().getString().equals("QUICK MATHS! ")) return message;
+
+ String expression = siblings.get(2).getString().replace('x', '*'); // Hypixel uses x for multiplication while our calculator uses *
+ try {
+ String result = "%.0f".formatted(Calculator.calculate(expression));
+
+ return message.copy()
+ .append(" = ")
+ .append(Text.literal(result)
+ .formatted(Formatting.AQUA))
+ .append(ScreenTexts.SPACE)
+ .append(Text.translatable("text.skyblocker.clickToSend")
+ .formatted(Formatting.GREEN)
+ .styled(style ->
+ style.withClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/ac " + result))
+ .withHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, Constants.PREFIX.get().append(Text.translatable("text.skyblocker.clickToSend.@Tooltip"))))
+ ));
+ } catch (Exception e) {
+ LOGGER.error("[Skyblocker Math Teacher Helper] Failed to calculate math expression: {}", expression, e);
+ return message;
+ }
+ }
+}