diff options
Diffstat (limited to 'src/main/java/de/hysky/skyblocker/skyblock')
5 files changed, 43 insertions, 14 deletions
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/chat/ChatRuleAnnouncementScreen.java b/src/main/java/de/hysky/skyblocker/skyblock/chat/ChatRuleAnnouncementScreen.java index e6300808..0ee3c2c5 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/chat/ChatRuleAnnouncementScreen.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/chat/ChatRuleAnnouncementScreen.java @@ -1,16 +1,13 @@ 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(); @@ -25,8 +22,11 @@ public class ChatRuleAnnouncementScreen { } render(context, tickDelta); }); + } + + /** * renders {@link ChatRuleAnnouncementScreen#text} to the middle of the top of the screen. * @param context render context diff --git a/src/main/java/de/hysky/skyblocker/skyblock/chat/ChatRuleConfigScreen.java b/src/main/java/de/hysky/skyblocker/skyblock/chat/ChatRuleConfigScreen.java index f46af79b..7d2280f0 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/chat/ChatRuleConfigScreen.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/chat/ChatRuleConfigScreen.java @@ -190,7 +190,11 @@ public class ChatRuleConfigScreen extends Screen { } MutableText newText = getSoundName(); soundsToggle.setMessage(newText); - chatRule.setCustomSound(soundsLookup.get(newText)); + SoundEvent sound = soundsLookup.get(newText); + chatRule.setCustomSound(sound); + if (client.player != null && sound != null) { + client.player.playSound(sound, 100f, 0.1f); + } }) .position(currentPos.leftInt() + lineXOffset, currentPos.rightInt()) .size(100,20) diff --git a/src/main/java/de/hysky/skyblocker/skyblock/chat/ChatRulesConfigListWidget.java b/src/main/java/de/hysky/skyblocker/skyblock/chat/ChatRulesConfigListWidget.java index 4e8038d6..84e9082d 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/chat/ChatRulesConfigListWidget.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/chat/ChatRulesConfigListWidget.java @@ -11,7 +11,6 @@ import net.minecraft.client.gui.widget.ButtonWidget; import net.minecraft.client.gui.widget.ElementListWidget; import net.minecraft.screen.ScreenTexts; import net.minecraft.text.Text; -import org.jetbrains.annotations.Nullable; import java.awt.*; import java.util.List; diff --git a/src/main/java/de/hysky/skyblocker/skyblock/chat/ChatRulesConfigScreen.java b/src/main/java/de/hysky/skyblocker/skyblock/chat/ChatRulesConfigScreen.java index 2cbb735b..11ea5a7a 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/chat/ChatRulesConfigScreen.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/chat/ChatRulesConfigScreen.java @@ -1,10 +1,8 @@ package de.hysky.skyblocker.skyblock.chat; -import de.hysky.skyblocker.skyblock.shortcut.Shortcuts; import net.minecraft.client.gui.DrawContext; import net.minecraft.client.gui.screen.ConfirmScreen; import net.minecraft.client.gui.screen.Screen; -import net.minecraft.client.gui.tooltip.Tooltip; import net.minecraft.client.gui.widget.ButtonWidget; import net.minecraft.client.gui.widget.GridWidget; import net.minecraft.client.gui.widget.SimplePositioningWidget; @@ -53,7 +51,11 @@ public class ChatRulesConfigScreen extends Screen { close(); } }).build(); + adder.add(buttonDone); + gridWidget.refreshPositions(); + SimplePositioningWidget.setPos(gridWidget, 0, this.height - 64, this.width, 64); gridWidget.forEachChild(this::addDrawableChild); + } @Override 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 29ee1386..4afedc52 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/chat/ChatRulesHandler.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/chat/ChatRulesHandler.java @@ -6,8 +6,10 @@ import de.hysky.skyblocker.SkyblockerMod; import de.hysky.skyblocker.utils.Utils; import net.fabricmc.fabric.api.client.message.v1.ClientReceiveMessageEvents; import net.minecraft.client.MinecraftClient; -import net.minecraft.sound.SoundEvents; +import net.minecraft.text.MutableText; +import net.minecraft.text.Style; import net.minecraft.text.Text; +import net.minecraft.util.Formatting; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -69,13 +71,13 @@ public class ChatRulesHandler { private static boolean checkMessage(Text message, Boolean overlay) { if (!Utils.isOnSkyblock()) return true; //do not work not on skyblock if (overlay) return true; //ignore messages in overlay - String plain = trimItemColor(message.getString()); + String plain = Formatting.strip(message.getString()); for (ChatRule rule : chatRuleList) { if (rule.isMatch(plain)) { //get a replacement message Text newMessage; if (!rule.getReplaceMessage().isBlank()) { - newMessage = Text.of(rule.getReplaceMessage()); + newMessage = formatText(rule.getReplaceMessage()); } else { newMessage = message; @@ -106,9 +108,31 @@ public class ChatRulesHandler { } return true; } - private static String trimItemColor(String str) { - if (str.isBlank()) return str; - return str.replaceAll("ยง[0-9a-g]", ""); + + /** + * Converts a string with color codes into a formatted Text object + * @param codedString the string with color codes in + * @return formatted text + */ + + protected static MutableText formatText(String codedString) { + if (codedString.contains(String.valueOf(Formatting.FORMATTING_CODE_PREFIX)) || codedString.contains("&")){ + MutableText newText = Text.literal(""); + String[] parts = codedString.split("[" + Formatting.FORMATTING_CODE_PREFIX +"&]"); + Style style = Style.EMPTY; + for (String part : parts) { + if (part.isEmpty()) continue; + Formatting formatting = Formatting.byCode(part.charAt(0)); + if (formatting != null){ + style = style.withFormatting(formatting); + Text.literal(part.substring(1)).getWithStyle(style).forEach(newText::append); + } else { + newText.append(Text.of(part)); + } + } + return newText; + } + return Text.literal(codedString); } } |