aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authoringlettronald <inglettronald@gmail.com>2023-07-23 21:47:02 -0500
committeringlettronald <inglettronald@gmail.com>2023-07-23 21:47:02 -0500
commitc56059b6c9d28d17d82de090c5a0b9d9382cb82c (patch)
treeaa1f6b2c4798502c6f2ccafff788eb04f17c8379 /src
parentc36dd88ff83ff09d5941d6772b5eefff0cd10665 (diff)
downloadDulkirMod-Fabric-c56059b6c9d28d17d82de090c5a0b9d9382cb82c.tar.gz
DulkirMod-Fabric-c56059b6c9d28d17d82de090c5a0b9d9382cb82c.tar.bz2
DulkirMod-Fabric-c56059b6c9d28d17d82de090c5a0b9d9382cb82c.zip
Chat stacking with lots of refactor
Diffstat (limited to 'src')
-rw-r--r--src/main/java/com/dulkirfabric/mixin/render/InGameHudMixin.java9
-rw-r--r--src/main/kotlin/com/dulkirfabric/Registrations.kt8
-rw-r--r--src/main/kotlin/com/dulkirfabric/config/DulkirConfig.kt13
-rw-r--r--src/main/kotlin/com/dulkirfabric/events/chat/ChatEvents.kt14
-rw-r--r--src/main/kotlin/com/dulkirfabric/events/chat/ChatReceivedEvent.kt7
-rw-r--r--src/main/kotlin/com/dulkirfabric/features/ArachneFeatures.kt4
-rw-r--r--src/main/kotlin/com/dulkirfabric/features/chat/AbiPhoneDND.kt4
-rw-r--r--src/main/kotlin/com/dulkirfabric/features/chat/BridgeBotFormatter.kt6
-rw-r--r--src/main/kotlin/com/dulkirfabric/features/chat/ChatStacking.kt40
-rw-r--r--src/main/kotlin/com/dulkirfabric/util/ActionBarUtil.kt4
-rw-r--r--src/main/resources/dulkirmod-fabric.mixins.json4
-rw-r--r--src/main/resources/dulkirmod.accesswidener4
12 files changed, 89 insertions, 28 deletions
diff --git a/src/main/java/com/dulkirfabric/mixin/render/InGameHudMixin.java b/src/main/java/com/dulkirfabric/mixin/render/InGameHudMixin.java
index f0b4988..7f90b3b 100644
--- a/src/main/java/com/dulkirfabric/mixin/render/InGameHudMixin.java
+++ b/src/main/java/com/dulkirfabric/mixin/render/InGameHudMixin.java
@@ -1,13 +1,11 @@
package com.dulkirfabric.mixin.render;
import com.dulkirfabric.config.DulkirConfig;
-import com.dulkirfabric.util.ScoreBoardUtils;
import com.dulkirfabric.util.Utils;
import com.llamalad7.mixinextras.injector.ModifyExpressionValue;
import net.minecraft.client.font.TextRenderer;
import net.minecraft.client.gui.DrawContext;
import net.minecraft.client.gui.hud.InGameHud;
-import net.minecraft.scoreboard.ScoreboardObjective;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
@@ -47,4 +45,11 @@ public class InGameHudMixin {
return 1;
return original;
}
+
+ @Inject(method = "renderHeldItemTooltip",
+ at = @At("HEAD"), cancellable = true)
+ public void changeItemDisplay (DrawContext context, CallbackInfo ci) {
+ if (DulkirConfig.ConfigVars.getConfigOptions().getHideHeldItemTooltip())
+ ci.cancel();
+ }
}
diff --git a/src/main/kotlin/com/dulkirfabric/Registrations.kt b/src/main/kotlin/com/dulkirfabric/Registrations.kt
index fdace3c..7e68f90 100644
--- a/src/main/kotlin/com/dulkirfabric/Registrations.kt
+++ b/src/main/kotlin/com/dulkirfabric/Registrations.kt
@@ -3,12 +3,13 @@ package com.dulkirfabric
import com.dulkirfabric.DulkirModFabric.EVENT_BUS
import com.dulkirfabric.commands.*
import com.dulkirfabric.events.*
-import com.dulkirfabric.events.chat.ChatReceivedEvent
+import com.dulkirfabric.events.chat.ChatEvents
import com.dulkirfabric.events.chat.ModifyCommandEvent
import com.dulkirfabric.events.chat.OverlayReceivedEvent
import com.dulkirfabric.features.*
import com.dulkirfabric.features.chat.AbiPhoneDND
import com.dulkirfabric.features.chat.BridgeBotFormatter
+import com.dulkirfabric.features.chat.ChatStacking
import com.dulkirfabric.hud.ActionBarHudReplacements
import com.dulkirfabric.hud.SpeedOverlay
import com.dulkirfabric.util.ActionBarUtil
@@ -75,6 +76,7 @@ object Registrations {
EVENT_BUS.subscribe(SpeedOverlay)
EVENT_BUS.subscribe(ActionBarUtil)
EVENT_BUS.subscribe(ActionBarHudReplacements)
+ EVENT_BUS.subscribe(ChatStacking)
}
fun registerEvents() {
@@ -86,13 +88,13 @@ object Registrations {
}
ClientReceiveMessageEvents.ALLOW_GAME.register { message, overlay ->
if (!overlay)
- return@register !ChatReceivedEvent(message).post()
+ return@register !ChatEvents.AllowChat(message).post()
return@register true
}
ClientReceiveMessageEvents.MODIFY_GAME.register { message, overlay ->
if (overlay)
return@register OverlayReceivedEvent(message).post()
- return@register message
+ return@register ChatEvents.ModifyChat(message).post()
}
ClientSendMessageEvents.MODIFY_COMMAND.register { command ->
diff --git a/src/main/kotlin/com/dulkirfabric/config/DulkirConfig.kt b/src/main/kotlin/com/dulkirfabric/config/DulkirConfig.kt
index a095c23..d310be4 100644
--- a/src/main/kotlin/com/dulkirfabric/config/DulkirConfig.kt
+++ b/src/main/kotlin/com/dulkirfabric/config/DulkirConfig.kt
@@ -126,10 +126,16 @@ class DulkirConfig {
entryBuilder.mkToggle(Text.literal("Arachne Boss Spawn Timer"), configOptions::arachneSpawnTimer)
)
general.addEntry(
- entryBuilder.mkToggle(Text.literal("Convert Action Bar to HUD elements"), configOptions::hudifyActionBar, tooltip = Text.literal("This converts Mana/Health/Def/Stacks as HUD elements"))
+ entryBuilder.mkToggle(Text.literal("Convert Action Bar to HUD elements"), configOptions::hudifyActionBar,
+ tooltip = Text.literal("This converts Mana/Health/Def/Stacks as HUD elements"))
)
general.addEntry(
- entryBuilder.mkToggle(Text.literal("Include EHP in def HUD element"), configOptions::showEHP, tooltip = Text.literal("Must have Action Bar HUD elements Enabled"))
+ entryBuilder.mkToggle(Text.literal("Include EHP in def HUD element"), configOptions::showEHP,
+ tooltip = Text.literal("Must have Action Bar HUD elements Enabled"))
+ )
+ general.addEntry(
+ entryBuilder.mkToggle(Text.literal("Hide Held Item Tooltips"), configOptions::hideHeldItemTooltip,
+ tooltip = Text.literal("This is for the pesky overlay that pops up on switching items"))
)
val shortcuts = builder.getOrCreateCategory(Text.literal("Shortcuts"))
@@ -275,7 +281,8 @@ class DulkirConfig {
var bridgeNameColor: Int = Formatting.GOLD.colorValue!!,
val positions: MutableMap<String, HudElement.Positioning> = mutableMapOf(),
var hudifyActionBar: Boolean = true,
- var showEHP: Boolean = false
+ var showEHP: Boolean = false,
+ var hideHeldItemTooltip: Boolean = false
)
@Serializable
diff --git a/src/main/kotlin/com/dulkirfabric/events/chat/ChatEvents.kt b/src/main/kotlin/com/dulkirfabric/events/chat/ChatEvents.kt
new file mode 100644
index 0000000..2f57085
--- /dev/null
+++ b/src/main/kotlin/com/dulkirfabric/events/chat/ChatEvents.kt
@@ -0,0 +1,14 @@
+package com.dulkirfabric.events.chat
+
+import com.dulkirfabric.events.base.CancellableEvent
+import com.dulkirfabric.events.base.ModifyTextEvent
+import net.minecraft.text.Text
+
+class ChatEvents {
+ data class
+ AllowChat(val message: Text) : CancellableEvent()
+
+ data class
+ ModifyChat(val message: Text): ModifyTextEvent(message)
+
+} \ No newline at end of file
diff --git a/src/main/kotlin/com/dulkirfabric/events/chat/ChatReceivedEvent.kt b/src/main/kotlin/com/dulkirfabric/events/chat/ChatReceivedEvent.kt
deleted file mode 100644
index 4c268ab..0000000
--- a/src/main/kotlin/com/dulkirfabric/events/chat/ChatReceivedEvent.kt
+++ /dev/null
@@ -1,7 +0,0 @@
-package com.dulkirfabric.events.chat
-
-import com.dulkirfabric.events.base.CancellableEvent
-import net.minecraft.text.Text
-
-data class
-ChatReceivedEvent(val message: Text): CancellableEvent() \ No newline at end of file
diff --git a/src/main/kotlin/com/dulkirfabric/features/ArachneFeatures.kt b/src/main/kotlin/com/dulkirfabric/features/ArachneFeatures.kt
index f573736..1257db8 100644
--- a/src/main/kotlin/com/dulkirfabric/features/ArachneFeatures.kt
+++ b/src/main/kotlin/com/dulkirfabric/features/ArachneFeatures.kt
@@ -2,7 +2,7 @@ package com.dulkirfabric.features
import com.dulkirfabric.config.DulkirConfig
import com.dulkirfabric.events.WorldRenderLastEvent
-import com.dulkirfabric.events.chat.ChatReceivedEvent
+import com.dulkirfabric.events.chat.ChatEvents
import com.dulkirfabric.util.TablistUtils
import com.dulkirfabric.util.TextUtils
import com.dulkirfabric.util.TextUtils.unformattedString
@@ -45,7 +45,7 @@ object ArachneFeatures {
}
@EventHandler
- fun onChat(event: ChatReceivedEvent) {
+ fun onChat(event: ChatEvents.AllowChat) {
if (!DulkirConfig.configOptions.arachneSpawnTimer) return
if (TablistUtils.persistentInfo.area != "Spider's Den") return
val str = event.message.unformattedString.trim()
diff --git a/src/main/kotlin/com/dulkirfabric/features/chat/AbiPhoneDND.kt b/src/main/kotlin/com/dulkirfabric/features/chat/AbiPhoneDND.kt
index c000010..623c7b1 100644
--- a/src/main/kotlin/com/dulkirfabric/features/chat/AbiPhoneDND.kt
+++ b/src/main/kotlin/com/dulkirfabric/features/chat/AbiPhoneDND.kt
@@ -1,8 +1,8 @@
package com.dulkirfabric.features.chat
import com.dulkirfabric.config.DulkirConfig
-import com.dulkirfabric.events.chat.ChatReceivedEvent
import com.dulkirfabric.events.PlaySoundEvent
+import com.dulkirfabric.events.chat.ChatEvents
import com.dulkirfabric.util.TextUtils
import com.dulkirfabric.util.TextUtils.unformattedString
import meteordevelopment.orbit.EventHandler
@@ -24,7 +24,7 @@ object AbiPhoneDND {
}
@EventHandler
- fun handle(event: ChatReceivedEvent) {
+ fun handle(event: ChatEvents.AllowChat) {
if (!DulkirConfig.configOptions.abiPhoneDND) return
val unformatted = event.message.unformattedString
if (unformatted matches abiPhoneFormat && !unformatted.contains("Elle") && !unformatted.contains("Dean")) {
diff --git a/src/main/kotlin/com/dulkirfabric/features/chat/BridgeBotFormatter.kt b/src/main/kotlin/com/dulkirfabric/features/chat/BridgeBotFormatter.kt
index f956791..e584431 100644
--- a/src/main/kotlin/com/dulkirfabric/features/chat/BridgeBotFormatter.kt
+++ b/src/main/kotlin/com/dulkirfabric/features/chat/BridgeBotFormatter.kt
@@ -1,19 +1,17 @@
package com.dulkirfabric.features.chat
import com.dulkirfabric.config.DulkirConfig
-import com.dulkirfabric.events.chat.ChatReceivedEvent
+import com.dulkirfabric.events.chat.ChatEvents
import com.dulkirfabric.util.TextUtils
-import com.dulkirfabric.util.Utils
import meteordevelopment.orbit.EventHandler
import net.minecraft.text.Style
import net.minecraft.text.Text
-import net.minecraft.util.Formatting
object BridgeBotFormatter {
private val bridgeRegex: Regex = "^(§2Guild|§3Officer) > (?:\\S+ )?([\\w§]{3,18})(?: §[a-z0-9][[A-Z]+])?§f: ([^>]+)(?: >| »|:) (.+)".toRegex()
@EventHandler
- fun onChat(event: ChatReceivedEvent) {
+ fun onChat(event: ChatEvents.AllowChat) {
if (!DulkirConfig.configOptions.bridgeFormatter) return
val message = event.message.string
diff --git a/src/main/kotlin/com/dulkirfabric/features/chat/ChatStacking.kt b/src/main/kotlin/com/dulkirfabric/features/chat/ChatStacking.kt
new file mode 100644
index 0000000..02d1914
--- /dev/null
+++ b/src/main/kotlin/com/dulkirfabric/features/chat/ChatStacking.kt
@@ -0,0 +1,40 @@
+package com.dulkirfabric.features.chat
+
+import com.dulkirfabric.DulkirModFabric.mc
+import com.dulkirfabric.events.LongUpdateEvent
+import com.dulkirfabric.events.chat.ChatEvents
+import com.dulkirfabric.util.ScoreBoardUtils.formattedString
+import meteordevelopment.orbit.EventHandler
+import net.minecraft.text.Text
+
+object ChatStacking {
+
+ data class ChatLog(var timestamp: Long, val message: Text, var frequency: Int)
+
+ private var chatLogs = mutableSetOf<ChatLog>()
+
+ @EventHandler
+ fun modifyChat(event: ChatEvents.ModifyChat) {
+ chatLogs.forEach { curMsg ->
+ if (curMsg.message.string.equals(event.message.string)) {
+ curMsg.timestamp = System.currentTimeMillis()
+ curMsg.frequency++
+ mc.inGameHud.chatHud.messages.removeIf { msg ->
+ msg.content.string == curMsg.message.string
+ && mc.inGameHud.ticks - msg.creationTick >= 1200
+ }
+ mc.inGameHud.chatHud.refresh()
+ event.setReturnValue(Text.literal("${curMsg.message.formattedString()} §7(${curMsg .frequency})"))
+ return
+ }
+ }
+ chatLogs.add(ChatLog(System.currentTimeMillis(), event.message, 1))
+ }
+
+ @EventHandler
+ fun cullLogs(event: LongUpdateEvent) {
+ chatLogs.removeIf {
+ System.currentTimeMillis() - it.timestamp >= 60000
+ }
+ }
+} \ No newline at end of file
diff --git a/src/main/kotlin/com/dulkirfabric/util/ActionBarUtil.kt b/src/main/kotlin/com/dulkirfabric/util/ActionBarUtil.kt
index 4970ba8..b5397b5 100644
--- a/src/main/kotlin/com/dulkirfabric/util/ActionBarUtil.kt
+++ b/src/main/kotlin/com/dulkirfabric/util/ActionBarUtil.kt
@@ -28,12 +28,12 @@ object ActionBarUtil {
val sb = StringBuilder()
var stackFlag = false
event.message.formattedString().split(splitRegex).forEach {
- healthRegex.matchEntire(TextUtils.stripColorCodes(it)) ?.let { result ->
+ healthRegex.matchEntire(TextUtils.stripColorCodes(it))?.let { result ->
healthInt = result.groupValues[1].replace(",", "").toInt()
healthStr = it
return@forEach
}
- defRegex.matchEntire(TextUtils.stripColorCodes(it)) ?.let { result ->
+ defRegex.matchEntire(TextUtils.stripColorCodes(it))?.let { result ->
defInt = result.groupValues[1].replace(",", "").toInt()
defStr = it.replace(" Defense", "")
return@forEach
diff --git a/src/main/resources/dulkirmod-fabric.mixins.json b/src/main/resources/dulkirmod-fabric.mixins.json
index 1a8b3ff..29e9839 100644
--- a/src/main/resources/dulkirmod-fabric.mixins.json
+++ b/src/main/resources/dulkirmod-fabric.mixins.json
@@ -6,16 +6,16 @@
"defaultRequire": 1
},
"client": [
+ "io.KeyboardMixin",
"io.MouseMixin",
"io.SoundSystemMixin",
- "render.HandledScreenMixin",
"render.AbstractInventoryScreenMixin",
"render.DrawContextMixin",
"render.GameMenuScreenMixin",
"render.GameRendererMixin",
+ "render.HandledScreenMixin",
"render.HeldItemRendererMixin",
"render.InGameHudMixin",
- "io.KeyboardMixin",
"render.LoomScreenMixin",
"render.MinecraftClientMixin",
"render.ParticleManagerMixin",
diff --git a/src/main/resources/dulkirmod.accesswidener b/src/main/resources/dulkirmod.accesswidener
index 3497be0..71258fc 100644
--- a/src/main/resources/dulkirmod.accesswidener
+++ b/src/main/resources/dulkirmod.accesswidener
@@ -1,3 +1,5 @@
accessWidener v2 named
accessible field net/minecraft/client/render/WorldRenderer bufferBuilders Lnet/minecraft/client/render/BufferBuilderStorage;
-accessible method net/minecraft/client/gui/hud/PlayerListHud collectPlayerEntries ()Ljava/util/List; \ No newline at end of file
+accessible method net/minecraft/client/gui/hud/PlayerListHud collectPlayerEntries ()Ljava/util/List;
+accessible field net/minecraft/client/gui/hud/ChatHud messages Ljava/util/List;
+accessible method net/minecraft/client/gui/hud/ChatHud refresh ()V \ No newline at end of file