aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/de/hysky
diff options
context:
space:
mode:
authorolim <bobq4582@gmail.com>2024-02-15 22:06:08 +0000
committerolim <bobq4582@gmail.com>2024-02-15 22:06:08 +0000
commitd27d35e4caa652bd84a2421e2d544920ce9aa5fd (patch)
tree4cf8ff9c74219f44920854e68a5a2ca5e21377f3 /src/main/java/de/hysky
parent5e325b27590920f1abcb0a6fbe8d037e1131b9df (diff)
downloadSkyblocker-d27d35e4caa652bd84a2421e2d544920ce9aa5fd.tar.gz
Skyblocker-d27d35e4caa652bd84a2421e2d544920ce9aa5fd.tar.bz2
Skyblocker-d27d35e4caa652bd84a2421e2d544920ce9aa5fd.zip
added annoucments
added the announcement output option for the chat rules
Diffstat (limited to 'src/main/java/de/hysky')
-rw-r--r--src/main/java/de/hysky/skyblocker/SkyblockerMod.java2
-rw-r--r--src/main/java/de/hysky/skyblocker/config/SkyblockerConfig.java9
-rw-r--r--src/main/java/de/hysky/skyblocker/config/categories/MessageFilterCategory.java18
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/chat/ChatRule.java4
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/chat/ChatRuleAnnouncementScreen.java53
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/chat/ChatRulesHandler.java13
6 files changed, 88 insertions, 11 deletions
diff --git a/src/main/java/de/hysky/skyblocker/SkyblockerMod.java b/src/main/java/de/hysky/skyblocker/SkyblockerMod.java
index 59383ff9..fc72ea3f 100644
--- a/src/main/java/de/hysky/skyblocker/SkyblockerMod.java
+++ b/src/main/java/de/hysky/skyblocker/SkyblockerMod.java
@@ -5,6 +5,7 @@ import com.google.gson.GsonBuilder;
import de.hysky.skyblocker.config.SkyblockerConfigManager;
import de.hysky.skyblocker.debug.Debug;
import de.hysky.skyblocker.skyblock.*;
+import de.hysky.skyblocker.skyblock.chat.ChatRuleAnnouncementScreen;
import de.hysky.skyblocker.skyblock.crimson.kuudra.Kuudra;
import de.hysky.skyblocker.skyblock.chat.ChatRulesHandler;
import de.hysky.skyblocker.skyblock.dungeon.*;
@@ -111,6 +112,7 @@ public class SkyblockerMod implements ClientModInitializer {
ChatMessageListener.init();
Shortcuts.init();
ChatRulesHandler.init();
+ ChatRuleAnnouncementScreen.init();
DiscordRPCManager.init();
LividColor.init();
FishingHelper.init();
diff --git a/src/main/java/de/hysky/skyblocker/config/SkyblockerConfig.java b/src/main/java/de/hysky/skyblocker/config/SkyblockerConfig.java
index b5ddcf5d..ea1f7d43 100644
--- a/src/main/java/de/hysky/skyblocker/config/SkyblockerConfig.java
+++ b/src/main/java/de/hysky/skyblocker/config/SkyblockerConfig.java
@@ -1186,6 +1186,15 @@ public class SkyblockerConfig {
@SerialEntry
public ChatFilterResult hideDicer = ChatFilterResult.PASS;
+
+ @SerialEntry
+ public ChatRuleConfig chatRuleConfig = new ChatRuleConfig();
+ }
+ public static class ChatRuleConfig {
+ @SerialEntry
+ public int announcementLength = 60;
+ @SerialEntry
+ public int announcementScale = 3;
}
public enum Info {
diff --git a/src/main/java/de/hysky/skyblocker/config/categories/MessageFilterCategory.java b/src/main/java/de/hysky/skyblocker/config/categories/MessageFilterCategory.java
index ddad018a..0f95bcaa 100644
--- a/src/main/java/de/hysky/skyblocker/config/categories/MessageFilterCategory.java
+++ b/src/main/java/de/hysky/skyblocker/config/categories/MessageFilterCategory.java
@@ -6,6 +6,7 @@ import de.hysky.skyblocker.skyblock.chat.ChatRulesConfigScreen;
import de.hysky.skyblocker.skyblock.dwarven.CrystalsHudConfigScreen;
import de.hysky.skyblocker.utils.chat.ChatFilterResult;
import dev.isxander.yacl3.api.*;
+import dev.isxander.yacl3.api.controller.IntegerSliderControllerBuilder;
import net.minecraft.client.MinecraftClient;
import net.minecraft.text.Text;
@@ -136,7 +137,22 @@ public class MessageFilterCategory {
.text(Text.translatable("text.skyblocker.open"))
.action((screen, opt) -> MinecraftClient.getInstance().setScreen(new ChatRulesConfigScreen(screen)))
.build())
-
+ .option(Option.<Integer>createBuilder()
+ .name(Text.translatable("text.autoconfig.skyblocker.option.messages.chatRules.announcementLength"))
+ .description(OptionDescription.of(Text.translatable("text.autoconfig.skyblocker.option.messages.chatRules.announcementLength.@Tooltip")))
+ .binding(defaults.messages.chatRuleConfig.announcementLength,
+ () -> config.messages.chatRuleConfig.announcementLength,
+ newValue -> config.messages.chatRuleConfig.announcementLength = newValue)
+ .controller(opt -> IntegerSliderControllerBuilder.create(opt).range(5, 200).step(1))
+ .build())
+ .option(Option.<Integer>createBuilder()
+ .name(Text.translatable("text.autoconfig.skyblocker.option.messages.chatRules.announcementScale"))
+ .description(OptionDescription.of(Text.translatable("text.autoconfig.skyblocker.option.messages.chatRules.announcementScale.@Tooltip")))
+ .binding(defaults.messages.chatRuleConfig.announcementScale,
+ () -> config.messages.chatRuleConfig.announcementScale,
+ newValue -> config.messages.chatRuleConfig.announcementScale = newValue)
+ .controller(opt -> IntegerSliderControllerBuilder.create(opt).range(1, 8).step(1))
+ .build())
.build())
.build();
}
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]", "");
}