Skip to content

Commit cae0226

Browse files
Added customize broadcast trigger.
1 parent 953352a commit cae0226

File tree

3 files changed

+29
-17
lines changed

3 files changed

+29
-17
lines changed

src/main/java/NoMathExpectation/chatExchange/neoForged/mixin/ServerGamePacketListenerImplMixin.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,11 +28,11 @@ private ServerboundChatPacket onHandleChat(ServerboundChatPacket packet) {
2828

2929
var data = ChatExchangeDataKt.getChatExchangeData(player.server);
3030
var string = packet.message();
31-
if ((!ChatExchangeConfig.INSTANCE.getChat().get() || data.isIgnoredPlayer(player.getUUID())) && !ExchangeServerKt.startsWithBroadcastPrefix(string)) {
31+
if ((!ChatExchangeConfig.INSTANCE.getChat().get() || data.isIgnoredPlayer(player.getUUID())) && !ChatExchangeConfigKt.startsWithBroadcastPrefix(string)) {
3232
return packet;
3333
}
3434

35-
var newString = ExchangeServerKt.removeBroadcastPrefix(string);
35+
var newString = ChatExchangeConfigKt.removeBroadcastPrefix(string);
3636
ExchangeServer.Companion.sendEvent(
3737
new MessageEvent(
3838
ExchangeServer.Companion.componentToString(player.getName()),

src/main/kotlin/NoMathExpectation/chatExchange/neoForged/ChatExchangeConfig.kt

Lines changed: 26 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,15 @@ object ChatExchangeConfig {
6464
.translation("modid.config.advancement")
6565
.define("advancement", true)
6666

67-
val broadcastPrefix: ModConfigSpec.ConfigValue<String> = builder.comment("The prefix to prepend when the chat message is being broadcast manually.")
67+
val broadcastTriggerPrefix: ModConfigSpec.ConfigValue<MutableList<out String>> = builder.comment("The prefix to recognize to trigger broadcast in chat message.")
68+
.translation("modid.config.broadcastTriggerPrefix")
69+
.defineListAllowEmpty(
70+
"broadcastTriggerPrefix",
71+
{ mutableListOf("@广播", "@bc", "@broadcast") },
72+
{ "@broadcast" },
73+
{ true }
74+
)
75+
val broadcastPrefix: ModConfigSpec.ConfigValue<String> = builder.comment("The prefix to prepend when displaying manually broadcast chat message.")
6876
.translation("modid.config.broadcastPrefix")
6977
.define("broadcastPrefix", "")
7078
val commandBroadcastFormat: ModConfigSpec.ConfigValue<String> = builder.comment("The message format when player broadcast message using the command.", "Will not prepend broadcast prefix.")
@@ -104,4 +112,20 @@ object ChatExchangeConfig {
104112
val regex = regexStr.toRegex()
105113
return regex.matches(name)
106114
}
107-
}
115+
}
116+
117+
fun String.startsWithBroadcastPrefix() =
118+
ChatExchangeConfig.broadcastTriggerPrefix
119+
.get()
120+
.any { startsWith(it) }
121+
122+
fun String.removeBroadcastPrefix() = run {
123+
ChatExchangeConfig.broadcastTriggerPrefix
124+
.get()
125+
.forEach {
126+
if (startsWith(it)) {
127+
return@run removePrefix(it)
128+
}
129+
}
130+
this
131+
}.trimStart()

src/main/kotlin/NoMathExpectation/chatExchange/neoForged/ExchangeServer.kt

Lines changed: 1 addition & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -185,16 +185,4 @@ class ExchangeServer(
185185
}
186186

187187
fun String.toExchangeServerTranslatedLiteral(vararg args: Any?): Component =
188-
toTranslatedLiteral(*args, language = ExchangeServer.language)
189-
190-
fun String.startsWithBroadcastPrefix(): Boolean = startsWith("@广播") || startsWith("@broadcast") || startsWith("@bc")
191-
192-
fun String.removeBroadcastPrefix(): String = if (startsWith("@广播")) {
193-
removePrefix("@广播")
194-
} else if (startsWith("@broadcast")) {
195-
removePrefix("@broadcast")
196-
} else if (startsWith("@bc")) {
197-
removePrefix("@bc")
198-
} else {
199-
this
200-
}.trimStart()
188+
toTranslatedLiteral(*args, language = ExchangeServer.language)

0 commit comments

Comments
 (0)