diff --git a/.idea/AndroidProjectSystem.xml b/.idea/AndroidProjectSystem.xml
new file mode 100644
index 0000000..4a53bee
--- /dev/null
+++ b/.idea/AndroidProjectSystem.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/gradle.xml b/.idea/gradle.xml
index 9b06c1b..ba7ef6c 100644
--- a/.idea/gradle.xml
+++ b/.idea/gradle.xml
@@ -4,13 +4,14 @@
diff --git a/.idea/material_theme_project_new.xml b/.idea/material_theme_project_new.xml
new file mode 100644
index 0000000..69f3723
--- /dev/null
+++ b/.idea/material_theme_project_new.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/sqldialects.xml b/.idea/sqldialects.xml
deleted file mode 100644
index 96c24d8..0000000
--- a/.idea/sqldialects.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/gradle.properties b/gradle.properties
index 54ce473..78f8da7 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -3,5 +3,5 @@ org.gradle.downloadSources=false
org.gradle.parallel=true
org.gradle.degree_of_parallelism=16
project_group=top.r3944realms.ltdmanager
-project_version=1.17-SNAPSHOT
+project_version=1.19-SNAPSHOT
dg_lab_version=4.4.14.19
diff --git a/src/main/kotlin/top/r3944realms/ltdmanager/dglab/model/game/GameClientOperation.kt b/src/main/kotlin/top/r3944realms/ltdmanager/dglab/model/game/GameClientOperation.kt
index ed181de..f55a6d9 100644
--- a/src/main/kotlin/top/r3944realms/ltdmanager/dglab/model/game/GameClientOperation.kt
+++ b/src/main/kotlin/top/r3944realms/ltdmanager/dglab/model/game/GameClientOperation.kt
@@ -43,7 +43,7 @@ class GameClientOperation(
var clientSelf: DGPBClientManager? = null
private var hasBinding = false
private var bindingTimeoutJob: kotlinx.coroutines.Job? = null // 保存倒计时任务
-
+ var info: ClientManager.ClientStrengthInfo? = null
override fun ClientStartingHandler() {
LoggerUtil.logger.debug("Player $playerId is starting the client...")
scope.launch {
@@ -245,19 +245,19 @@ class GameClientOperation(
// }
when (p0?.commandType) {
PowerBoxDataType.STRENGTH -> scope.launch {
-// val strengthInfo : IPowerBoxMsg.StrengthInfo
-//
-// strengthInfo = IPowerBoxMsg.StrengthInfo.read(
-// PowerBoxMessage.createPowerBoxMessage(
-// p0,
-// MessageDirection.of(
-// MessageDirection.DirectType.PLACEHOLDER_TO_PLACEHOLDER,
-// ROM_UUID,
-// ROM_UUID
-// )
-// )
-// )
+ val strengthInfo : IPowerBoxMsg.StrengthInfo
+ strengthInfo = IPowerBoxMsg.StrengthInfo.read(
+ PowerBoxMessage.createPowerBoxMessage(
+ p0,
+ MessageDirection.of(
+ MessageDirection.DirectType.PLACEHOLDER_TO_PLACEHOLDER,
+ ROM_UUID,
+ ROM_UUID
+ )
+ )
+ )
+ info = ClientManager.ClientStrengthInfo(strengthInfo.aValue, strengthInfo.aMax, strengthInfo.bValue, strengthInfo.bMax)
// napCatClient.sendUnit(SendPrivateMsgRequest(listOf(MessageElement.text("强度信息:\n A:${strengthInfo.aValue}/${strengthInfo.aMax} \n B:${strengthInfo.bValue}/${strengthInfo.bMax}")), ID.long(playerId)))
}
PowerBoxDataType.PULSE -> scope.launch {
diff --git a/src/main/kotlin/top/r3944realms/ltdmanager/module/DGLabModule.kt b/src/main/kotlin/top/r3944realms/ltdmanager/module/DGLabModule.kt
index c8c66ed..241c10a 100644
--- a/src/main/kotlin/top/r3944realms/ltdmanager/module/DGLabModule.kt
+++ b/src/main/kotlin/top/r3944realms/ltdmanager/module/DGLabModule.kt
@@ -350,7 +350,7 @@ class DGLabModule(
private var dgLabState = loadState()
override fun getState(): DgLabState = dgLabState
override fun getStateFileInternal(): File = stateFile
-
+ private var refreshJob: Job? = null
private val triggerFilter by lazy {
TriggerMessageFilter(
listOf(
@@ -377,9 +377,16 @@ class DGLabModule(
if (loaded) handleMessages(messages)
}
}
+ refreshJob = scope!!.launch {
+ while (isActive) {
+ delay(30 * 1000L) // 30秒
+ refreshPlayerList()
+ }
+ }
}
override suspend fun onUnload() {
saveState(dgLabState)
+ refreshJob?.cancel()
dgLabManager?.close()
scope?.cancel()
LoggerUtil.logger.info("[$name] 模块已卸载完成")
@@ -502,6 +509,40 @@ class DGLabModule(
.associate { it.userId to it.nickname })
dgLabManager?.initClientManager()
}
+ private suspend fun refreshPlayerList() {
+ try {
+ val getGroupMemberListEvent = napCatClient.send(
+ GetGroupMemberListRequest(
+ ID.long(groupMessagePollingModule.targetGroupId),
+ false
+ )
+ )
+ val currentMembers = getGroupMemberListEvent.data.filter { !it.isRobot }
+ .associate { it.userId to it.nickname }
+
+ val playerManager = dgLabManager?.getPlayerManager() ?: return
+
+ // 获取当前玩家列表
+ val existingPlayers = playerManager.allPlayers().map { it.id }.toSet()
+ val targetPlayers = currentMembers.keys.toSet()
+
+ // 新增玩家
+ (targetPlayers - existingPlayers).forEach { id ->
+ playerManager.addPlayer(Player(id, currentMembers[id] ?: id.toString(), false))
+ LoggerUtil.logger.info("[$name] 定时刷新 - 新增玩家: $id")
+ }
+
+ // 移除不存在的玩家
+ (existingPlayers - targetPlayers).forEach { id ->
+ playerManager.removePlayer(id)
+ dgLabManager?.removeClient(id.toString())
+ LoggerUtil.logger.info("[$name] 定时刷新 - 移除玩家: $id")
+ }
+ } catch (e: Exception) {
+ LoggerUtil.logger.error("[$name] 刷新玩家列表失败", e)
+ }
+ }
+
// private fun getHelp(): Int {
// scope?.launch {
// sendMessage()
diff --git a/src/main/kotlin/top/r3944realms/ltdmanager/module/InvitationCodesModule.kt b/src/main/kotlin/top/r3944realms/ltdmanager/module/InvitationCodesModule.kt
index 4f95f71..4948cee 100644
--- a/src/main/kotlin/top/r3944realms/ltdmanager/module/InvitationCodesModule.kt
+++ b/src/main/kotlin/top/r3944realms/ltdmanager/module/InvitationCodesModule.kt
@@ -76,7 +76,7 @@ class InvitationCodesModule(
private val mailModule: MailModule,
private val apiToken: String,
selfId: Long,
- private val cooldownMillis: Long = 120_000,
+ private val cooldownMillis: Long = 120_000L,
private val keywords: Set = setOf("申请邀请码")
) : BaseModule(Modules.INVITATION_CODE, moduleName), PersistentState {
@@ -448,9 +448,10 @@ class InvitationCodesModule(
if (response.response is InvitationCodeGenerationResponse) {
if (response.response.success) {
response.response.data
- } else
+ } else {
LoggerUtil.logger.warn("[$name] API返回失败: ${response.response.message}")
- null
+ null
+ }
} else {
LoggerUtil.logger.warn("[$name] 返回非预期对象类型: ${response.response.javaClass}")
null
diff --git a/src/main/resources/mail-body.html b/src/main/resources/mail-body.html
index faf4135..c381a29 100644
--- a/src/main/resources/mail-body.html
+++ b/src/main/resources/mail-body.html
@@ -93,7 +93,7 @@
请点击下方按钮前往注册:
- 皮肤站注册
+ 皮肤站注册
如有任何问题,欢迎随时联系我们的
技术支持。