Skip to content

Commit

Permalink
event notifier
Browse files Browse the repository at this point in the history
  • Loading branch information
dragon-jpg committed Feb 7, 2025
1 parent ed03850 commit 682ac8f
Show file tree
Hide file tree
Showing 4 changed files with 71 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
package dev.exceptionteam.sakura.features.modules.impl.misc

import dev.exceptionteam.sakura.events.NonNullContext
import dev.exceptionteam.sakura.events.impl.PacketEvents
import dev.exceptionteam.sakura.events.nonNullListener
import dev.exceptionteam.sakura.features.modules.Category
import dev.exceptionteam.sakura.features.modules.Module
import dev.exceptionteam.sakura.features.modules.impl.client.Language
import dev.exceptionteam.sakura.utils.ingame.ChatUtils
import net.minecraft.client.multiplayer.PlayerInfo
import net.minecraft.network.protocol.game.ClientboundPlayerInfoRemovePacket
import net.minecraft.network.protocol.game.ClientboundPlayerInfoUpdatePacket

object EventNotifier: Module(
name = "event-notifier",
category = Category.MISC
) {
private val playerJoin by setting("player-join", true)
private val playerLeave by setting("player-leave", true)

init {
nonNullListener<PacketEvents.Receive> { it ->
if (it.packet is ClientboundPlayerInfoUpdatePacket && playerJoin) {
val packet: ClientboundPlayerInfoUpdatePacket = it.packet
if (!packet.actions().contains(ClientboundPlayerInfoUpdatePacket.Action.ADD_PLAYER)) return@nonNullListener
sendJoinMessage(packet)
}
if (it.packet is ClientboundPlayerInfoRemovePacket && playerLeave) {
val packet: ClientboundPlayerInfoRemovePacket = it.packet
sendLeaveMessage(packet)
}
}
}

private fun sendJoinMessage(packet: ClientboundPlayerInfoUpdatePacket) {
for (entry in packet.entries()) {
val player = entry.profile ?: continue
when (Language.language) {
Language.Languages.EN_US -> {
ChatUtils.sendMessage("Player ${player.name} joined!")
}
Language.Languages.ZH_CN -> {
ChatUtils.sendMessage("玩家 ${player.name} 加入了伺服器!")
}
}
}
}

private fun NonNullContext.sendLeaveMessage(packet: ClientboundPlayerInfoRemovePacket) {
for (uuid in packet.profileIds) {
val leave: PlayerInfo = connection.getPlayerInfo(uuid) ?: continue
when (Language.language) {
Language.Languages.EN_US -> {
ChatUtils.sendMessage("Player ${leave.profile.name} leaved!")
}
Language.Languages.ZH_CN -> {
ChatUtils.sendMessage("Player ${leave.profile.name} 离开了伺服器!")
}
}
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,7 @@ object ModuleManager {
PacketEat,
Disabler,
FakePlayer,
EventNotifier,

// Render
NameTags,
Expand Down
4 changes: 4 additions & 0 deletions src/main/resources/assets/sakura/lang/en_us.lang
Original file line number Diff line number Diff line change
Expand Up @@ -226,3 +226,7 @@ modules.array-list=Array List
modules.array-list.text-color=Text Color
modules.array-list.shadow=Shadow
modules.array-list.scale=Scale

modules.event-notifier=Event Notifier
modules.event-notifier.player-join=Player Join
modules.event-notifier.player-leave=Player Leave
4 changes: 4 additions & 0 deletions src/main/resources/assets/sakura/lang/zh_cn.lang
Original file line number Diff line number Diff line change
Expand Up @@ -234,3 +234,7 @@ modules.array-list=功能列表
modules.array-list.text-color=文字颜色
modules.array-list.shadow=阴影
modules.array-list.scale=缩放

modules.event-notifier=事件提醒器
modules.event-notifier.player-join=玩家加入伺服器
modules.event-notifier.player-leave=玩家离开伺服器

0 comments on commit 682ac8f

Please sign in to comment.