Skip to content

Commit 3ddd784

Browse files
committed
[2.3.16] 1.21.11
1 parent 831b338 commit 3ddd784

6 files changed

Lines changed: 66 additions & 34 deletions

File tree

build.gradle.kts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,9 +37,10 @@ subprojects {
3737
install(JavaScript)
3838
install(Bukkit, BungeeCord, Velocity)
3939
disableOnSkippedVersion = false
40+
// disableOnUnsupportedVersion = false
4041
}
4142
version {
42-
taboolib = "6.2.4-7f8b30dc"
43+
taboolib = "6.2.4-5902762"
4344
coroutines = null
4445
}
4546
}

gradle.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
group=me.arasple.mc.trchat
2-
version=2.3.15
2+
version=2.3.16
33
kotlin.incremental=true
44
kotlin.incremental.java=true
55
kotlin.caching.enabled=true

project/runtime-bukkit/src/main/kotlin/me/arasple/mc/trchat/api/event/TrChatEvent.kt

Lines changed: 6 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ package me.arasple.mc.trchat.api.event
33
import me.arasple.mc.trchat.module.display.ChatSession
44
import me.arasple.mc.trchat.module.display.channel.Channel
55
import me.arasple.mc.trchat.module.display.channel.PrivateChannel
6-
import me.arasple.mc.trchat.util.pass
76
import taboolib.module.chat.ComponentText
87
import taboolib.module.chat.Components
98
import taboolib.platform.type.BukkitProxyEvent
@@ -12,6 +11,9 @@ import taboolib.platform.type.BukkitProxyEvent
1211
* TrChatEvent
1312
* me.arasple.mc.trchat.api.event
1413
*
14+
* 在 ChannelEvents 前触发
15+
* component 仅包含玩家消息部分
16+
*
1517
* @author ItsFlicker
1618
* @since 2021/8/20 20:53
1719
*/
@@ -25,12 +27,6 @@ class TrChatEvent(
2527

2628
val player = session.player
2729

28-
var message = component.toLegacyText()
29-
set(value) {
30-
field = value
31-
component = Components.text(value)
32-
}
33-
3430
init {
3531
if (channel is PrivateChannel) {
3632
val event = TrChatPrivateEvent(channel, session, component)
@@ -39,28 +35,10 @@ class TrChatEvent(
3935
this.component = event.component
4036
}
4137
}
42-
fun getFullMessage() : String{
43-
// 获取符合条件的格式
44-
val format = channel.formats.firstOrNull { it.condition.pass(player) }
45-
// 构建完整消息
46-
val fullComponent = Components.empty()
4738

48-
// 添加前缀
49-
format?.prefix?.forEach { prefix ->
50-
prefix.value.firstOrNull { it.condition.pass(player) }?.content
51-
?.toTextComponent(player)?.let { fullComponent.append(it) }
52-
}
53-
54-
// 添加消息内容
55-
fullComponent.append(component)
56-
57-
// 添加后缀
58-
format?.suffix?.forEach { suffix ->
59-
suffix.value.firstOrNull { it.condition.pass(player) }?.content
60-
?.toTextComponent(player)?.let { fullComponent.append(it) }
61-
}
39+
fun getMessage() = component.toLegacyText()
6240

63-
val fullMessage = fullComponent.toLegacyText()
64-
return fullMessage
41+
fun setMessage(message: String) {
42+
component = Components.text(message)
6543
}
6644
}
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
package me.arasple.mc.trchat.api.event
2+
3+
import me.arasple.mc.trchat.module.display.ChatSession
4+
import me.arasple.mc.trchat.module.display.channel.Channel
5+
import taboolib.module.chat.ComponentText
6+
import taboolib.module.chat.Components
7+
import taboolib.platform.type.BukkitProxyEvent
8+
9+
/**
10+
* TrChatSendEvent
11+
* me.arasple.mc.trchat.api.event
12+
*
13+
* 在消息链构造完成后触发
14+
* component 包含整条即将发送的聊天消息
15+
*
16+
*/
17+
class TrChatSendEvent(
18+
val channel: Channel,
19+
val session: ChatSession,
20+
var component: ComponentText,
21+
val type: Type = Type.COMMON
22+
) : BukkitProxyEvent() {
23+
24+
val player = session.player
25+
26+
fun getMessage() = component.toLegacyText()
27+
28+
fun setMessage(message: String) {
29+
component = Components.text(message)
30+
}
31+
32+
enum class Type {
33+
COMMON, SENDER, RECEIVER
34+
}
35+
36+
}

project/runtime-bukkit/src/main/kotlin/me/arasple/mc/trchat/module/display/channel/Channel.kt

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package me.arasple.mc.trchat.module.display.channel
22

33
import me.arasple.mc.trchat.TrChat
44
import me.arasple.mc.trchat.api.event.TrChatEvent
5+
import me.arasple.mc.trchat.api.event.TrChatSendEvent
56
import me.arasple.mc.trchat.api.impl.BukkitProxyManager
67
import me.arasple.mc.trchat.module.conf.file.Settings
78
import me.arasple.mc.trchat.module.display.channel.obj.*
@@ -153,7 +154,7 @@ open class Channel(
153154
ChatLogs.logNormal(player.name, plain)
154155
Metrics.increase(0)
155156

156-
val component = Components.empty()
157+
var component = Components.empty()
157158
formats.firstOrNull { it.condition.pass(player) }?.let { format ->
158159
format.prefix
159160
.mapNotNull { prefix -> prefix.value.firstOrNull { it.condition.pass(player) }?.content?.toTextComponent(player) }
@@ -169,6 +170,11 @@ open class Channel(
169170
session.cancelChat = false
170171
return ChannelExecuteResult(failedReason = ChannelExecuteResult.FailReason.EVENT)
171172
}
173+
val sendEvent = TrChatSendEvent(this, session, component)
174+
if (!sendEvent.call()) {
175+
return ChannelExecuteResult(failedReason = ChannelExecuteResult.FailReason.EVENT)
176+
}
177+
component = sendEvent.component
172178
// Proxy
173179
if (settings.proxy) {
174180
if (BukkitProxyManager.processor != null || settings.forceProxy) {

project/runtime-bukkit/src/main/kotlin/me/arasple/mc/trchat/module/display/channel/PrivateChannel.kt

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package me.arasple.mc.trchat.module.display.channel
22

33
import me.arasple.mc.trchat.api.event.TrChatEvent
4+
import me.arasple.mc.trchat.api.event.TrChatSendEvent
45
import me.arasple.mc.trchat.api.impl.BukkitProxyManager
56
import me.arasple.mc.trchat.module.display.channel.obj.ChannelBindings
67
import me.arasple.mc.trchat.module.display.channel.obj.ChannelEvents
@@ -164,8 +165,8 @@ class PrivateChannel(
164165
?: return ChannelExecuteResult(failedReason = ChannelExecuteResult.FailReason.EVENT)
165166
plain = msg.toPlainText()
166167

167-
val send = Components.empty()
168168
val msgComponent = Components.empty()
169+
var send = Components.empty()
169170
sender.firstOrNull { it.condition.pass(player) }?.let { format ->
170171
format.prefix
171172
.mapNotNull { prefix -> prefix.value.firstOrNull { it.condition.pass(player) }?.content?.toTextComponent(player) }
@@ -179,7 +180,7 @@ class PrivateChannel(
179180
.forEach { suffix -> send.append(suffix) }
180181
} ?: return ChannelExecuteResult(failedReason = ChannelExecuteResult.FailReason.NO_FORMAT)
181182

182-
val receive = Components.empty()
183+
var receive = Components.empty()
183184
receiver.firstOrNull { it.condition.pass(player) }?.let { format ->
184185
format.prefix
185186
.mapNotNull { prefix -> prefix.value.firstOrNull { it.condition.pass(player) }?.content?.toTextComponent(player) }
@@ -198,7 +199,11 @@ class PrivateChannel(
198199
if (!events.send(player, to, plain)) {
199200
return ChannelExecuteResult(failedReason = ChannelExecuteResult.FailReason.EVENT)
200201
}
201-
player.sendComponent(player, send)
202+
val senderEvent = TrChatSendEvent(this, session, send, type = TrChatSendEvent.Type.SENDER)
203+
if (senderEvent.call()) {
204+
send = senderEvent.component
205+
player.sendComponent(player, send)
206+
}
202207

203208
PlayerData.spying.forEach {
204209
Bukkit.getPlayer(it)?.sendLang("Private-Message-Spy-Format", player.name, to, msgComponent.toLegacyText())
@@ -209,6 +214,12 @@ class PrivateChannel(
209214
ChatLogs.logPrivate(player.name, to, plain)
210215
Metrics.increase(0)
211216

217+
val receiverEvent = TrChatSendEvent(this, session, receive, type = TrChatSendEvent.Type.RECEIVER)
218+
if (!receiverEvent.call()) {
219+
return ChannelExecuteResult(failedReason = ChannelExecuteResult.FailReason.EVENT)
220+
}
221+
receive = receiverEvent.component
222+
212223
if (settings.proxy && BukkitProxyManager.processor != null) {
213224
BukkitProxyManager.sendPrivateRaw(
214225
player,

0 commit comments

Comments
 (0)