From d27d35e4caa652bd84a2421e2d544920ce9aa5fd Mon Sep 17 00:00:00 2001 From: olim Date: Thu, 15 Feb 2024 22:06:08 +0000 Subject: added annoucments added the announcement output option for the chat rules --- .../hysky/skyblocker/skyblock/chat/ChatRule.java | 4 +- .../skyblock/chat/ChatRuleAnnouncementScreen.java | 53 ++++++++++++++++++++++ .../skyblocker/skyblock/chat/ChatRulesHandler.java | 13 ++---- 3 files changed, 60 insertions(+), 10 deletions(-) create mode 100644 src/main/java/de/hysky/skyblocker/skyblock/chat/ChatRuleAnnouncementScreen.java (limited to 'src/main/java/de/hysky/skyblocker/skyblock/chat') 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 9643b413..af35647f 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/chat/ChatRule.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/chat/ChatRule.java @@ -174,7 +174,7 @@ public class ChatRule { } //filter - if (testFilter.isEmpty()) return false; + if (testFilter.isBlank()) return false; if(isRegex) { if (isPartialMatch) { if (! Pattern.compile(testFilter).matcher(testString).find()) return false; @@ -190,7 +190,7 @@ public class ChatRule { } //location - if (validLocations.isEmpty()){ //if no locations do not check + if (validLocations.isBlank()){ //if no locations do not check return true; } String rawLocation = Utils.getLocationRaw(); diff --git a/src/main/java/de/hysky/skyblocker/skyblock/chat/ChatRuleAnnouncementScreen.java b/src/main/java/de/hysky/skyblocker/skyblock/chat/ChatRuleAnnouncementScreen.java new file mode 100644 index 00000000..e6300808 --- /dev/null +++ b/src/main/java/de/hysky/skyblocker/skyblock/chat/ChatRuleAnnouncementScreen.java @@ -0,0 +1,53 @@ +package de.hysky.skyblocker.skyblock.chat; + +import de.hysky.skyblocker.config.SkyblockerConfigManager; +import de.hysky.skyblocker.skyblock.dwarven.CrystalsHudConfigScreen; +import de.hysky.skyblocker.utils.scheduler.Scheduler; +import net.fabricmc.fabric.api.client.command.v2.ClientCommandManager; +import net.fabricmc.fabric.api.client.command.v2.ClientCommandRegistrationCallback; +import net.fabricmc.fabric.api.client.rendering.v1.HudRenderCallback; +import net.minecraft.client.MinecraftClient; +import net.minecraft.client.gui.DrawContext; +import net.minecraft.client.util.math.MatrixStack; +import net.minecraft.text.Text; + +public class ChatRuleAnnouncementScreen { + + private static final MinecraftClient CLIENT = MinecraftClient.getInstance(); + private static float timer; + + private static Text text = null; + + public static void init() { + HudRenderCallback.EVENT.register((context, tickDelta) -> { + if (timer <= 0 || text == null) { + return; + } + render(context, tickDelta); + }); + } + + /** + * renders {@link ChatRuleAnnouncementScreen#text} to the middle of the top of the screen. + * @param context render context + * @param tickDelta difference from last render to remove from timer + */ + private static void render(DrawContext context, float tickDelta) { + int scale = SkyblockerConfigManager.get().messages.chatRuleConfig.announcementScale; + //decrement timer + timer -= tickDelta; + //scale text up and center + MatrixStack matrices = context.getMatrices(); + matrices.push(); + matrices.translate(context.getScaledWindowWidth() / 2f, context.getScaledWindowHeight() * 0.3, 0f); + matrices.scale(scale, scale, 0f); + //render text + context.drawCenteredTextWithShadow(CLIENT.textRenderer,text,0, 0, 0xFFFFFF); + + matrices.pop(); + } + protected static void setText(Text newText) { + text = newText; + timer = SkyblockerConfigManager.get().messages.chatRuleConfig.announcementLength; + } +} 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 f8823589..3e933f1a 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/chat/ChatRulesHandler.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/chat/ChatRulesHandler.java @@ -1,15 +1,10 @@ package de.hysky.skyblocker.skyblock.chat; -import com.google.gson.Gson; import com.google.gson.JsonObject; import com.google.gson.reflect.TypeToken; import de.hysky.skyblocker.SkyblockerMod; -import de.hysky.skyblocker.skyblock.shortcut.Shortcuts; import de.hysky.skyblocker.utils.Utils; -import net.fabricmc.fabric.api.client.command.v2.ClientCommandRegistrationCallback; -import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientLifecycleEvents; import net.fabricmc.fabric.api.client.message.v1.ClientReceiveMessageEvents; -import net.fabricmc.fabric.api.client.message.v1.ClientSendMessageEvents; import net.minecraft.client.MinecraftClient; import net.minecraft.text.Text; import org.slf4j.Logger; @@ -78,14 +73,16 @@ public class ChatRulesHandler { if (rule.isMatch(plain)) { //get a replacement message Text newMessage; - if (!rule.getReplaceMessage().isEmpty()){ + if (!rule.getReplaceMessage().isBlank()){ newMessage = Text.of(rule.getReplaceMessage()); } else { newMessage =message; } - //todo show announcement + if (rule.getShowAnnouncement()){ + ChatRuleAnnouncementScreen.setText(newMessage); + } //show in action bar if (rule.getShowActionBar() && CLIENT.player != null) { @@ -102,7 +99,7 @@ public class ChatRulesHandler { return true; } private static String trimItemColor(String str) { - if (str.isEmpty()) return str; + if (str.isBlank()) return str; return str.replaceAll("ยง[0-9a-g]", ""); } -- cgit