diff options
| author | raven <citrons@mondecitronne.com> | 2026-03-22 00:46:34 -0500 |
|---|---|---|
| committer | raven <citrons@mondecitronne.com> | 2026-03-22 00:46:34 -0500 |
| commit | 56aca59c6f75b35f5fb85388b409b8e49ced0b3e (patch) | |
| tree | 82b8301fee0597f397035f02dc880ed4e740bb4a /server/player.go | |
| parent | 19c6461ef30974f1c8dfc10051842bac17cbbf60 (diff) | |
LongerMessages
Diffstat (limited to 'server/player.go')
| -rw-r--r-- | server/player.go | 28 |
1 files changed, 20 insertions, 8 deletions
diff --git a/server/player.go b/server/player.go index 5ac99da..b7698b1 100644 --- a/server/player.go +++ b/server/player.go @@ -5,6 +5,7 @@ import ( "os" "fmt" "regexp" + "strings" "git.citrons.xyz/metronode/phony" "git.citrons.xyz/metronode/classic" ) @@ -18,6 +19,7 @@ type player struct { extensions map[string]bool level *level levelLoaded bool + currentMessage string } type authLevel int @@ -129,19 +131,29 @@ func (p *player) handlePacket(packet classic.Packet) { } p.level.SetBlock(p, pos, block) case *classic.Message: - message := classic.UnpadString(pck.Message) - isCmd, text := isCommand(message) - if text == "" { - break - } - if !isCmd { - p.server.OnPlayerMessage(p, p.name, text) + incomplete := pck.PlayerId == 1 && p.extensions["LongerMessages"] + message := p.currentMessage + classic.UnpadString(pck.Message) + if !incomplete { + p.handleChat(message) + p.currentMessage = "" } else { - p.server.ExecuteCommand(p, p.state.Auth, text) + p.currentMessage += string(pck.Message[:]) // preserve whitespace } } } +func (p *player) handleChat(message string) { + isCmd, text := isCommand(message) + if strings.TrimSpace(text) == "" { + return + } + if !isCmd { + p.server.OnPlayerMessage(p, p.name, text) + } else { + p.server.ExecuteCommand(p, p.state.Auth, text) + } +} + func (p *player) Save(from phony.Actor, done func()) { p.Act(from, func() { p.save(func() { |
