Files
legacy-version/legacyver/legacypacket/disconnect.go
2025-01-01 13:40:15 +07:00

41 lines
1.5 KiB
Go

package legacypacket
import (
"github.com/akmalfairuz/legacy-version/legacyver/proto"
"github.com/sandertv/gophertunnel/minecraft/protocol"
"github.com/sandertv/gophertunnel/minecraft/protocol/packet"
)
// Disconnect may be sent by the server to disconnect the client using an optional message to send as the
// disconnect screen.
type Disconnect struct {
// Reason is the reason for the disconnection. It seems as if this field has no use other than for
// telemetry reasons as it does not affect the message that gets displayed on the disconnect screen.
Reason int32
// HideDisconnectionScreen specifies if the disconnection screen should be hidden when the client is
// disconnected, meaning it will be sent directly to the main menu.
HideDisconnectionScreen bool
// Message is an optional message to show when disconnected. This message is only written if the
// HideDisconnectionScreen field is set to true.
Message string
// FilteredMessage is a filtered version of Message with all the profanity removed. The client will use
// this over Message if this field is not empty and they have the "Filter Profanity" setting enabled.
FilteredMessage string
}
// ID ...
func (*Disconnect) ID() uint32 {
return packet.IDDisconnect
}
func (pk *Disconnect) Marshal(io protocol.IO) {
io.Varint32(&pk.Reason)
io.Bool(&pk.HideDisconnectionScreen)
if !pk.HideDisconnectionScreen {
io.String(&pk.Message)
if proto.IsProtoGTE(io, proto.ID712) {
io.String(&pk.FilteredMessage)
}
}
}