Skip to content
This repository was archived by the owner on Nov 28, 2025. It is now read-only.

Commit e8ff728

Browse files
authored
Merge pull request #181 from DockyardMC/fix/send-system-message
Fix `player.sendSystemMessage` raising `ServerSendPlayerMessageEvent`
2 parents 0801e38 + 04d7b09 commit e8ff728

File tree

2 files changed

+20
-3
lines changed

2 files changed

+20
-3
lines changed

src/main/kotlin/io/github/dockyardmc/player/Player.kt

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -327,9 +327,11 @@ class Player(
327327
// this event and the `isSystem` arg is quite literally only for one feature in my other project,
328328
// but it's my server implementation anyway I can do whatever I want
329329
// - maya
330-
val event = ServerSendPlayerMessageEvent(this, message, isSystem, getPlayerEventContext(this))
331-
Events.dispatch(event)
332-
if (event.cancelled) return
330+
if (!isActionBar) {
331+
val event = ServerSendPlayerMessageEvent(this, message, isSystem, getPlayerEventContext(this))
332+
Events.dispatch(event)
333+
if (event.cancelled) return
334+
}
333335

334336
if (networkManager.state != ProtocolState.PLAY) {
335337
queuedMessages.add(message to isActionBar)

src/test/kotlin/io/github/dockyard/tests/events/ServerSendPlayerMessageEventTest.kt

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,4 +33,19 @@ class ServerSendPlayerMessageEventTest {
3333
assertTrue(count.await(5L, TimeUnit.SECONDS))
3434
pool.dispose()
3535
}
36+
37+
@Test
38+
fun testEventDoesNotFire() {
39+
val pool = EventPool()
40+
val count = CountDownLatch(1)
41+
42+
pool.on<ServerSendPlayerMessageEvent> {
43+
count.countDown()
44+
}
45+
PlayerTestUtil.getOrCreateFakePlayer().sendActionBar("not :3")
46+
47+
count.await(2L, TimeUnit.SECONDS)
48+
assertTrue { count.count == 1L }
49+
pool.dispose()
50+
}
3651
}

0 commit comments

Comments
 (0)