Files
2025-12-10 23:05:46 +07:00

40 lines
1.1 KiB
Go

package legacypacket
import (
"github.com/akmalfairuz/legacy-version/internal/typeconf"
"github.com/akmalfairuz/legacy-version/legacyver/proto"
"github.com/sandertv/gophertunnel/minecraft/protocol"
"github.com/sandertv/gophertunnel/minecraft/protocol/packet"
)
// Event is sent by the server to send an event with additional data. It is typically sent to the client for
// telemetry reasons, much like the SimpleEvent packet.
type Event struct {
// EntityRuntimeID is the runtime ID of the player. The runtime ID is unique for each world session, and
// entities are generally identified in packets using this runtime ID.
EntityRuntimeID int64
// UsePlayerID ...
// TODO: Figure out what UsePlayerID is for.
UsePlayerID bool
// Event is the event that is transmitted.
Event protocol.Event
}
// ID ...
func (*Event) ID() uint32 {
return packet.IDEvent
}
func (pk *Event) Marshal(io protocol.IO) {
io.Varint64(&pk.EntityRuntimeID)
io.EventType(&pk.Event)
if proto.IsProtoGTE(io, proto.ID898) {
io.Bool(&pk.UsePlayerID)
} else {
v := typeconf.BoolToByte(pk.UsePlayerID)
io.Uint8(&v)
pk.UsePlayerID = typeconf.ByteToBool(v)
}
pk.Event.Marshal(io)
}