Files
legacy-version/legacyver/proto/container.go
AkmalFairuz 151816f18d fix...
2025-12-11 08:08:58 +07:00

41 lines
1.3 KiB
Go

package proto
import "github.com/sandertv/gophertunnel/minecraft/protocol"
// FullContainerName contains information required to identify a container in a StackRequestSlotInfo.
type FullContainerName struct {
// ContainerID is the ID of the container that the slot was in.
ContainerID byte
// DynamicContainerID is the ID of the container if it is dynamic. If the container is not dynamic, this
// field should be left empty. A non-optional value of 0 is assumed to be non-empty.
DynamicContainerID protocol.Optional[uint32]
}
func (x *FullContainerName) FromLatest(v protocol.FullContainerName) FullContainerName {
x.ContainerID = v.ContainerID
x.DynamicContainerID = v.DynamicContainerID
return *x
}
func (x *FullContainerName) ToLatest() protocol.FullContainerName {
return protocol.FullContainerName{
ContainerID: x.ContainerID,
DynamicContainerID: x.DynamicContainerID,
}
}
func (x *FullContainerName) Marshal(r protocol.IO) {
r.Uint8(&x.ContainerID)
if IsProtoGTE(r, ID729) {
protocol.OptionalFunc(r, &x.DynamicContainerID, r.Uint32)
} else if IsProtoGTE(r, ID712) {
dynamicContainerID, _ := x.DynamicContainerID.Value()
r.Uint32(&dynamicContainerID)
if dynamicContainerID != 0 {
x.DynamicContainerID = protocol.Option(dynamicContainerID)
} else {
x.DynamicContainerID = protocol.Optional[uint32]{}
}
}
}