diff options
| author | Rime <81419447+Emirlol@users.noreply.github.com> | 2024-11-01 20:43:57 +0300 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-11-02 01:43:57 +0800 |
| commit | 83c31b2eb0f342a72fc477250e70fb1a5c6f2b84 (patch) | |
| tree | 72ef0fdd3bb493caac73d8b621922b583e454eca /src/main/java/de | |
| parent | 4d7efc2e7ca7e86c85ef27c9916784ee3ae05e02 (diff) | |
| download | Skyblocker-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.java | 58 |
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; + } + } +} |
