fix: resolve parameterized $compareTo types and fix array count type
- VisitNameAndData: return any instead of named struct when mergeCompareTo resolves $compareTo, fixing field type mismatches for switch/container types - ContainerCompareTo: traverse anon/bitfield fields for compareTo resolution, fixes entityMetadata 'field not found' errors - Array.Count: change from string to any to handle numeric count values - ArrayEncoder: fix nil check to correctly write length prefix for arrays - ArrayDecoder: use fmt.Sprint for safe Count conversion
This commit is contained in:
@@ -1,6 +1,6 @@
|
|||||||
// Code generated by strom. DO NOT EDIT.
|
// Code generated by strom. DO NOT EDIT.
|
||||||
// source: minecraft-data/pc/1.12.2/protocol.json (sha256:21c57208db654a5e14a34cb696570080df179c5c642e53b16120399eee9232be)
|
// source: minecraft-data/pc/1.12.2/protocol.json (sha256:21c57208db654a5e14a34cb696570080df179c5c642e53b16120399eee9232be)
|
||||||
// version: (devel) (go1.26.2)
|
// version: v0.6.6-0.20260805154326-fa70ea36c6f5+dirty (go1.26.2)
|
||||||
package v1_12_2
|
package v1_12_2
|
||||||
|
|
||||||
import (
|
import (
|
||||||
@@ -45,7 +45,7 @@ type EntityMetadata struct {
|
|||||||
Key uint8
|
Key uint8
|
||||||
Type int8
|
Type int8
|
||||||
}
|
}
|
||||||
Value EntityMetadataItem
|
Value any
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -55,7 +55,7 @@ func (ret *EntityMetadata) Decode(r io.ReadSeeker) (err error) {
|
|||||||
Key uint8
|
Key uint8
|
||||||
Type int8
|
Type int8
|
||||||
}
|
}
|
||||||
Value EntityMetadataItem
|
Value any
|
||||||
})
|
})
|
||||||
var id uint8
|
var id uint8
|
||||||
for {
|
for {
|
||||||
@@ -75,7 +75,7 @@ func (ret *EntityMetadata) Decode(r io.ReadSeeker) (err error) {
|
|||||||
Key uint8
|
Key uint8
|
||||||
Type int8
|
Type int8
|
||||||
}
|
}
|
||||||
Value EntityMetadataItem
|
Value any
|
||||||
}
|
}
|
||||||
err = binary.Read(r, binary.BigEndian, &entry.Anon.Key)
|
err = binary.Read(r, binary.BigEndian, &entry.Anon.Key)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -85,10 +85,136 @@ func (ret *EntityMetadata) Decode(r io.ReadSeeker) (err error) {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
err = entry.Value.Decode(r)
|
switch entry.Anon.Type {
|
||||||
|
case 0:
|
||||||
|
var EntityMetadataInnerValue0Tmp int8
|
||||||
|
err = binary.Read(r, binary.BigEndian, &EntityMetadataInnerValue0Tmp)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
entry.Value = EntityMetadataInnerValue0Tmp
|
||||||
|
case 1:
|
||||||
|
var EntityMetadataInnerValue1Tmp int32
|
||||||
|
EntityMetadataInnerValue1Tmp, err = proto_base.DecodeVarInt(r)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
entry.Value = EntityMetadataInnerValue1Tmp
|
||||||
|
case 10:
|
||||||
|
var EntityMetadataInnerValue10Tmp int32
|
||||||
|
EntityMetadataInnerValue10Tmp, err = proto_base.DecodeVarInt(r)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
entry.Value = EntityMetadataInnerValue10Tmp
|
||||||
|
case 11:
|
||||||
|
var EntityMetadataInnerValue11Tmp *uuid.UUID
|
||||||
|
var EntityMetadataInnerValue11TmpPresent bool
|
||||||
|
err = binary.Read(r, binary.BigEndian, &EntityMetadataInnerValue11TmpPresent)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if EntityMetadataInnerValue11TmpPresent {
|
||||||
|
var EntityMetadataInnerValue11TmpPresentValue uuid.UUID
|
||||||
|
_, err = io.ReadFull(r, EntityMetadataInnerValue11TmpPresentValue[:])
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
EntityMetadataInnerValue11Tmp = &EntityMetadataInnerValue11TmpPresentValue
|
||||||
|
}
|
||||||
|
entry.Value = EntityMetadataInnerValue11Tmp
|
||||||
|
case 12:
|
||||||
|
var EntityMetadataInnerValue12Tmp int32
|
||||||
|
EntityMetadataInnerValue12Tmp, err = proto_base.DecodeVarInt(r)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
entry.Value = EntityMetadataInnerValue12Tmp
|
||||||
|
case 13:
|
||||||
|
var EntityMetadataInnerValue13Tmp nbt.Tag
|
||||||
|
err = EntityMetadataInnerValue13Tmp.Decode(r)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
entry.Value = EntityMetadataInnerValue13Tmp
|
||||||
|
case 2:
|
||||||
|
var EntityMetadataInnerValue2Tmp float32
|
||||||
|
err = binary.Read(r, binary.BigEndian, &EntityMetadataInnerValue2Tmp)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
entry.Value = EntityMetadataInnerValue2Tmp
|
||||||
|
case 3:
|
||||||
|
var EntityMetadataInnerValue3Tmp string
|
||||||
|
EntityMetadataInnerValue3Tmp, err = proto_base.DecodeString(r)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
entry.Value = EntityMetadataInnerValue3Tmp
|
||||||
|
case 4:
|
||||||
|
var EntityMetadataInnerValue4Tmp string
|
||||||
|
EntityMetadataInnerValue4Tmp, err = proto_base.DecodeString(r)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
entry.Value = EntityMetadataInnerValue4Tmp
|
||||||
|
case 5:
|
||||||
|
var EntityMetadataInnerValue5Tmp Slot
|
||||||
|
err = EntityMetadataInnerValue5Tmp.Decode(r)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
entry.Value = EntityMetadataInnerValue5Tmp
|
||||||
|
case 6:
|
||||||
|
var EntityMetadataInnerValue6Tmp bool
|
||||||
|
err = binary.Read(r, binary.BigEndian, &EntityMetadataInnerValue6Tmp)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
entry.Value = EntityMetadataInnerValue6Tmp
|
||||||
|
case 7:
|
||||||
|
var EntityMetadataInnerValue7Tmp struct {
|
||||||
|
Pitch float32
|
||||||
|
Yaw float32
|
||||||
|
Roll float32
|
||||||
|
}
|
||||||
|
err = binary.Read(r, binary.BigEndian, &EntityMetadataInnerValue7Tmp.Pitch)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
err = binary.Read(r, binary.BigEndian, &EntityMetadataInnerValue7Tmp.Yaw)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
err = binary.Read(r, binary.BigEndian, &EntityMetadataInnerValue7Tmp.Roll)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
entry.Value = EntityMetadataInnerValue7Tmp
|
||||||
|
case 8:
|
||||||
|
var EntityMetadataInnerValue8Tmp Position
|
||||||
|
err = EntityMetadataInnerValue8Tmp.Decode(r)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
entry.Value = EntityMetadataInnerValue8Tmp
|
||||||
|
case 9:
|
||||||
|
var EntityMetadataInnerValue9Tmp *Position
|
||||||
|
var EntityMetadataInnerValue9TmpPresent bool
|
||||||
|
err = binary.Read(r, binary.BigEndian, &EntityMetadataInnerValue9TmpPresent)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if EntityMetadataInnerValue9TmpPresent {
|
||||||
|
var EntityMetadataInnerValue9TmpPresentValue Position
|
||||||
|
err = EntityMetadataInnerValue9TmpPresentValue.Decode(r)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
EntityMetadataInnerValue9Tmp = &EntityMetadataInnerValue9TmpPresentValue
|
||||||
|
}
|
||||||
|
entry.Value = EntityMetadataInnerValue9Tmp
|
||||||
|
}
|
||||||
ret.Val[id] = entry
|
ret.Val[id] = entry
|
||||||
}
|
}
|
||||||
return
|
return
|
||||||
@@ -103,11 +229,176 @@ func (ret *EntityMetadata) Encode(w io.Writer) (err error) {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
EntityMetadataValueEncTmp := v.Value
|
switch v.Anon.Type {
|
||||||
|
case 0:
|
||||||
|
EntityMetadataValue, ok := v.Value.(int8)
|
||||||
|
if !ok {
|
||||||
|
err = proto_base.BadTypeError
|
||||||
|
return
|
||||||
|
}
|
||||||
|
err = binary.Write(w, binary.BigEndian, EntityMetadataValue)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
case 1:
|
||||||
|
EntityMetadataValue, ok := v.Value.(int32)
|
||||||
|
if !ok {
|
||||||
|
err = proto_base.BadTypeError
|
||||||
|
return
|
||||||
|
}
|
||||||
|
err = proto_base.EncodeVarInt(w, EntityMetadataValue)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
case 10:
|
||||||
|
EntityMetadataValue, ok := v.Value.(int32)
|
||||||
|
if !ok {
|
||||||
|
err = proto_base.BadTypeError
|
||||||
|
return
|
||||||
|
}
|
||||||
|
err = proto_base.EncodeVarInt(w, EntityMetadataValue)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
case 11:
|
||||||
|
EntityMetadataValue, ok := v.Value.(*uuid.UUID)
|
||||||
|
if !ok {
|
||||||
|
err = proto_base.BadTypeError
|
||||||
|
return
|
||||||
|
}
|
||||||
|
err = binary.Write(w, binary.BigEndian, EntityMetadataValue != nil)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if EntityMetadataValue != nil {
|
||||||
|
_, err = w.Write((*EntityMetadataValue)[:])
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
case 12:
|
||||||
|
EntityMetadataValue, ok := v.Value.(int32)
|
||||||
|
if !ok {
|
||||||
|
err = proto_base.BadTypeError
|
||||||
|
return
|
||||||
|
}
|
||||||
|
err = proto_base.EncodeVarInt(w, EntityMetadataValue)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
case 13:
|
||||||
|
EntityMetadataValue, ok := v.Value.(nbt.Tag)
|
||||||
|
if !ok {
|
||||||
|
err = proto_base.BadTypeError
|
||||||
|
return
|
||||||
|
}
|
||||||
|
EntityMetadataValueEncTmp := EntityMetadataValue
|
||||||
err = EntityMetadataValueEncTmp.Encode(w)
|
err = EntityMetadataValueEncTmp.Encode(w)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
case 2:
|
||||||
|
EntityMetadataValue, ok := v.Value.(float32)
|
||||||
|
if !ok {
|
||||||
|
err = proto_base.BadTypeError
|
||||||
|
return
|
||||||
|
}
|
||||||
|
err = binary.Write(w, binary.BigEndian, EntityMetadataValue)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
case 3:
|
||||||
|
EntityMetadataValue, ok := v.Value.(string)
|
||||||
|
if !ok {
|
||||||
|
err = proto_base.BadTypeError
|
||||||
|
return
|
||||||
|
}
|
||||||
|
err = proto_base.EncodeString(w, EntityMetadataValue)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
case 4:
|
||||||
|
EntityMetadataValue, ok := v.Value.(string)
|
||||||
|
if !ok {
|
||||||
|
err = proto_base.BadTypeError
|
||||||
|
return
|
||||||
|
}
|
||||||
|
err = proto_base.EncodeString(w, EntityMetadataValue)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
case 5:
|
||||||
|
EntityMetadataValue, ok := v.Value.(Slot)
|
||||||
|
if !ok {
|
||||||
|
err = proto_base.BadTypeError
|
||||||
|
return
|
||||||
|
}
|
||||||
|
EntityMetadataValueEncTmp := EntityMetadataValue
|
||||||
|
err = EntityMetadataValueEncTmp.Encode(w)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
case 6:
|
||||||
|
EntityMetadataValue, ok := v.Value.(bool)
|
||||||
|
if !ok {
|
||||||
|
err = proto_base.BadTypeError
|
||||||
|
return
|
||||||
|
}
|
||||||
|
err = binary.Write(w, binary.BigEndian, EntityMetadataValue)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
case 7:
|
||||||
|
EntityMetadataValue, ok := v.Value.(struct {
|
||||||
|
Pitch float32
|
||||||
|
Yaw float32
|
||||||
|
Roll float32
|
||||||
|
})
|
||||||
|
if !ok {
|
||||||
|
err = proto_base.BadTypeError
|
||||||
|
return
|
||||||
|
}
|
||||||
|
err = binary.Write(w, binary.BigEndian, EntityMetadataValue.Pitch)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
err = binary.Write(w, binary.BigEndian, EntityMetadataValue.Yaw)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
err = binary.Write(w, binary.BigEndian, EntityMetadataValue.Roll)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
case 8:
|
||||||
|
EntityMetadataValue, ok := v.Value.(Position)
|
||||||
|
if !ok {
|
||||||
|
err = proto_base.BadTypeError
|
||||||
|
return
|
||||||
|
}
|
||||||
|
EntityMetadataValueEncTmp := EntityMetadataValue
|
||||||
|
err = EntityMetadataValueEncTmp.Encode(w)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
case 9:
|
||||||
|
EntityMetadataValue, ok := v.Value.(*Position)
|
||||||
|
if !ok {
|
||||||
|
err = proto_base.BadTypeError
|
||||||
|
return
|
||||||
|
}
|
||||||
|
err = binary.Write(w, binary.BigEndian, EntityMetadataValue != nil)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if EntityMetadataValue != nil {
|
||||||
|
EntityMetadataValueEncTmp := *EntityMetadataValue
|
||||||
|
err = EntityMetadataValueEncTmp.Encode(w)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
err = binary.Write(w, binary.BigEndian, uint8(255))
|
err = binary.Write(w, binary.BigEndian, uint8(255))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -8288,11 +8579,182 @@ type PlayToClientPacketWorldParticles struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (ret *PlayToClientPacketWorldParticles) Decode(r io.ReadSeeker) (err error) {
|
func (ret *PlayToClientPacketWorldParticles) Decode(r io.ReadSeeker) (err error) {
|
||||||
err = proto_base.ToDoError
|
err = binary.Read(r, binary.BigEndian, &ret.ParticleId)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
err = binary.Read(r, binary.BigEndian, &ret.LongDistance)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
err = binary.Read(r, binary.BigEndian, &ret.X)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
err = binary.Read(r, binary.BigEndian, &ret.Y)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
err = binary.Read(r, binary.BigEndian, &ret.Z)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
err = binary.Read(r, binary.BigEndian, &ret.OffsetX)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
err = binary.Read(r, binary.BigEndian, &ret.OffsetY)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
err = binary.Read(r, binary.BigEndian, &ret.OffsetZ)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
err = binary.Read(r, binary.BigEndian, &ret.ParticleData)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
err = binary.Read(r, binary.BigEndian, &ret.Particles)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
switch ret.ParticleId {
|
||||||
|
case 36:
|
||||||
|
var PlayToClientPacketWorldParticlesData36Tmp []int32
|
||||||
|
var lPlayToClientPacketWorldParticlesData36Tmp int32
|
||||||
|
lPlayToClientPacketWorldParticlesData36Tmp = 2
|
||||||
|
PlayToClientPacketWorldParticlesData36Tmp = []int32{}
|
||||||
|
for range lPlayToClientPacketWorldParticlesData36Tmp {
|
||||||
|
var PlayToClientPacketWorldParticlesData36TmpElement int32
|
||||||
|
PlayToClientPacketWorldParticlesData36TmpElement, err = proto_base.DecodeVarInt(r)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
PlayToClientPacketWorldParticlesData36Tmp = append(PlayToClientPacketWorldParticlesData36Tmp, PlayToClientPacketWorldParticlesData36TmpElement)
|
||||||
|
}
|
||||||
|
ret.Data = PlayToClientPacketWorldParticlesData36Tmp
|
||||||
|
case 37:
|
||||||
|
var PlayToClientPacketWorldParticlesData37Tmp []int32
|
||||||
|
var lPlayToClientPacketWorldParticlesData37Tmp int32
|
||||||
|
lPlayToClientPacketWorldParticlesData37Tmp = 1
|
||||||
|
PlayToClientPacketWorldParticlesData37Tmp = []int32{}
|
||||||
|
for range lPlayToClientPacketWorldParticlesData37Tmp {
|
||||||
|
var PlayToClientPacketWorldParticlesData37TmpElement int32
|
||||||
|
PlayToClientPacketWorldParticlesData37TmpElement, err = proto_base.DecodeVarInt(r)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
PlayToClientPacketWorldParticlesData37Tmp = append(PlayToClientPacketWorldParticlesData37Tmp, PlayToClientPacketWorldParticlesData37TmpElement)
|
||||||
|
}
|
||||||
|
ret.Data = PlayToClientPacketWorldParticlesData37Tmp
|
||||||
|
case 38:
|
||||||
|
var PlayToClientPacketWorldParticlesData38Tmp []int32
|
||||||
|
var lPlayToClientPacketWorldParticlesData38Tmp int32
|
||||||
|
lPlayToClientPacketWorldParticlesData38Tmp = 1
|
||||||
|
PlayToClientPacketWorldParticlesData38Tmp = []int32{}
|
||||||
|
for range lPlayToClientPacketWorldParticlesData38Tmp {
|
||||||
|
var PlayToClientPacketWorldParticlesData38TmpElement int32
|
||||||
|
PlayToClientPacketWorldParticlesData38TmpElement, err = proto_base.DecodeVarInt(r)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
PlayToClientPacketWorldParticlesData38Tmp = append(PlayToClientPacketWorldParticlesData38Tmp, PlayToClientPacketWorldParticlesData38TmpElement)
|
||||||
|
}
|
||||||
|
ret.Data = PlayToClientPacketWorldParticlesData38Tmp
|
||||||
|
default:
|
||||||
|
var PlayToClientPacketWorldParticlesDataTmp struct {
|
||||||
|
}
|
||||||
|
ret.Data = PlayToClientPacketWorldParticlesDataTmp
|
||||||
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
func (ret *PlayToClientPacketWorldParticles) Encode(w io.Writer) (err error) {
|
func (ret *PlayToClientPacketWorldParticles) Encode(w io.Writer) (err error) {
|
||||||
err = proto_base.ToDoError
|
err = binary.Write(w, binary.BigEndian, ret.ParticleId)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
err = binary.Write(w, binary.BigEndian, ret.LongDistance)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
err = binary.Write(w, binary.BigEndian, ret.X)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
err = binary.Write(w, binary.BigEndian, ret.Y)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
err = binary.Write(w, binary.BigEndian, ret.Z)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
err = binary.Write(w, binary.BigEndian, ret.OffsetX)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
err = binary.Write(w, binary.BigEndian, ret.OffsetY)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
err = binary.Write(w, binary.BigEndian, ret.OffsetZ)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
err = binary.Write(w, binary.BigEndian, ret.ParticleData)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
err = binary.Write(w, binary.BigEndian, ret.Particles)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
switch ret.ParticleId {
|
||||||
|
case 36:
|
||||||
|
PlayToClientPacketWorldParticlesData, ok := ret.Data.([]int32)
|
||||||
|
if !ok {
|
||||||
|
err = proto_base.BadTypeError
|
||||||
|
return
|
||||||
|
}
|
||||||
|
for iPlayToClientPacketWorldParticlesData := range len(PlayToClientPacketWorldParticlesData) {
|
||||||
|
err = proto_base.EncodeVarInt(w, PlayToClientPacketWorldParticlesData[iPlayToClientPacketWorldParticlesData])
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
case 37:
|
||||||
|
PlayToClientPacketWorldParticlesData, ok := ret.Data.([]int32)
|
||||||
|
if !ok {
|
||||||
|
err = proto_base.BadTypeError
|
||||||
|
return
|
||||||
|
}
|
||||||
|
for iPlayToClientPacketWorldParticlesData := range len(PlayToClientPacketWorldParticlesData) {
|
||||||
|
err = proto_base.EncodeVarInt(w, PlayToClientPacketWorldParticlesData[iPlayToClientPacketWorldParticlesData])
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
case 38:
|
||||||
|
PlayToClientPacketWorldParticlesData, ok := ret.Data.([]int32)
|
||||||
|
if !ok {
|
||||||
|
err = proto_base.BadTypeError
|
||||||
|
return
|
||||||
|
}
|
||||||
|
for iPlayToClientPacketWorldParticlesData := range len(PlayToClientPacketWorldParticlesData) {
|
||||||
|
err = proto_base.EncodeVarInt(w, PlayToClientPacketWorldParticlesData[iPlayToClientPacketWorldParticlesData])
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
_, ok := ret.Data.(struct {
|
||||||
|
})
|
||||||
|
if !ok {
|
||||||
|
err = proto_base.BadTypeError
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
// Code generated by strom. DO NOT EDIT.
|
// Code generated by strom. DO NOT EDIT.
|
||||||
// source: minecraft-data/pc/1.14.4/protocol.json (sha256:b6edff5abaaf234037b5019024d749e27e746250a23253bb4ad77d8f76e93167)
|
// source: minecraft-data/pc/1.14.4/protocol.json (sha256:b6edff5abaaf234037b5019024d749e27e746250a23253bb4ad77d8f76e93167)
|
||||||
// version: (devel) (go1.26.2)
|
// version: v0.6.6-0.20260805154326-fa70ea36c6f5+dirty (go1.26.2)
|
||||||
package v1_14_4
|
package v1_14_4
|
||||||
|
|
||||||
import (
|
import (
|
||||||
@@ -141,7 +141,7 @@ type EntityMetadata struct {
|
|||||||
Key uint8
|
Key uint8
|
||||||
Type int32
|
Type int32
|
||||||
}
|
}
|
||||||
Value EntityMetadataItem
|
Value any
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -151,7 +151,7 @@ func (ret *EntityMetadata) Decode(r io.ReadSeeker) (err error) {
|
|||||||
Key uint8
|
Key uint8
|
||||||
Type int32
|
Type int32
|
||||||
}
|
}
|
||||||
Value EntityMetadataItem
|
Value any
|
||||||
})
|
})
|
||||||
var id uint8
|
var id uint8
|
||||||
for {
|
for {
|
||||||
@@ -171,7 +171,7 @@ func (ret *EntityMetadata) Decode(r io.ReadSeeker) (err error) {
|
|||||||
Key uint8
|
Key uint8
|
||||||
Type int32
|
Type int32
|
||||||
}
|
}
|
||||||
Value EntityMetadataItem
|
Value any
|
||||||
}
|
}
|
||||||
err = binary.Read(r, binary.BigEndian, &entry.Anon.Key)
|
err = binary.Read(r, binary.BigEndian, &entry.Anon.Key)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -181,10 +181,192 @@ func (ret *EntityMetadata) Decode(r io.ReadSeeker) (err error) {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
err = entry.Value.Decode(r)
|
switch entry.Anon.Type {
|
||||||
|
case 0:
|
||||||
|
var EntityMetadataInnerValue0Tmp int8
|
||||||
|
err = binary.Read(r, binary.BigEndian, &EntityMetadataInnerValue0Tmp)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
entry.Value = EntityMetadataInnerValue0Tmp
|
||||||
|
case 1:
|
||||||
|
var EntityMetadataInnerValue1Tmp int32
|
||||||
|
EntityMetadataInnerValue1Tmp, err = proto_base.DecodeVarInt(r)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
entry.Value = EntityMetadataInnerValue1Tmp
|
||||||
|
case 10:
|
||||||
|
var EntityMetadataInnerValue10Tmp *Position
|
||||||
|
var EntityMetadataInnerValue10TmpPresent bool
|
||||||
|
err = binary.Read(r, binary.BigEndian, &EntityMetadataInnerValue10TmpPresent)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if EntityMetadataInnerValue10TmpPresent {
|
||||||
|
var EntityMetadataInnerValue10TmpPresentValue Position
|
||||||
|
err = EntityMetadataInnerValue10TmpPresentValue.Decode(r)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
EntityMetadataInnerValue10Tmp = &EntityMetadataInnerValue10TmpPresentValue
|
||||||
|
}
|
||||||
|
entry.Value = EntityMetadataInnerValue10Tmp
|
||||||
|
case 11:
|
||||||
|
var EntityMetadataInnerValue11Tmp int32
|
||||||
|
EntityMetadataInnerValue11Tmp, err = proto_base.DecodeVarInt(r)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
entry.Value = EntityMetadataInnerValue11Tmp
|
||||||
|
case 12:
|
||||||
|
var EntityMetadataInnerValue12Tmp *uuid.UUID
|
||||||
|
var EntityMetadataInnerValue12TmpPresent bool
|
||||||
|
err = binary.Read(r, binary.BigEndian, &EntityMetadataInnerValue12TmpPresent)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if EntityMetadataInnerValue12TmpPresent {
|
||||||
|
var EntityMetadataInnerValue12TmpPresentValue uuid.UUID
|
||||||
|
_, err = io.ReadFull(r, EntityMetadataInnerValue12TmpPresentValue[:])
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
EntityMetadataInnerValue12Tmp = &EntityMetadataInnerValue12TmpPresentValue
|
||||||
|
}
|
||||||
|
entry.Value = EntityMetadataInnerValue12Tmp
|
||||||
|
case 13:
|
||||||
|
var EntityMetadataInnerValue13Tmp int32
|
||||||
|
EntityMetadataInnerValue13Tmp, err = proto_base.DecodeVarInt(r)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
entry.Value = EntityMetadataInnerValue13Tmp
|
||||||
|
case 14:
|
||||||
|
var EntityMetadataInnerValue14Tmp nbt.Tag
|
||||||
|
err = EntityMetadataInnerValue14Tmp.Decode(r)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
entry.Value = EntityMetadataInnerValue14Tmp
|
||||||
|
case 15:
|
||||||
|
var EntityMetadataInnerValue15Tmp Particle
|
||||||
|
err = EntityMetadataInnerValue15Tmp.Decode(r)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
entry.Value = EntityMetadataInnerValue15Tmp
|
||||||
|
case 16:
|
||||||
|
var EntityMetadataInnerValue16Tmp struct {
|
||||||
|
VillagerType int32
|
||||||
|
VillagerProfession int32
|
||||||
|
Level int32
|
||||||
|
}
|
||||||
|
EntityMetadataInnerValue16Tmp.VillagerType, err = proto_base.DecodeVarInt(r)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
EntityMetadataInnerValue16Tmp.VillagerProfession, err = proto_base.DecodeVarInt(r)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
EntityMetadataInnerValue16Tmp.Level, err = proto_base.DecodeVarInt(r)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
entry.Value = EntityMetadataInnerValue16Tmp
|
||||||
|
case 17:
|
||||||
|
var EntityMetadataInnerValue17Tmp Optvarint
|
||||||
|
err = EntityMetadataInnerValue17Tmp.Decode(r)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
entry.Value = EntityMetadataInnerValue17Tmp
|
||||||
|
case 18:
|
||||||
|
var EntityMetadataInnerValue18Tmp int32
|
||||||
|
EntityMetadataInnerValue18Tmp, err = proto_base.DecodeVarInt(r)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
entry.Value = EntityMetadataInnerValue18Tmp
|
||||||
|
case 2:
|
||||||
|
var EntityMetadataInnerValue2Tmp float32
|
||||||
|
err = binary.Read(r, binary.BigEndian, &EntityMetadataInnerValue2Tmp)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
entry.Value = EntityMetadataInnerValue2Tmp
|
||||||
|
case 3:
|
||||||
|
var EntityMetadataInnerValue3Tmp string
|
||||||
|
EntityMetadataInnerValue3Tmp, err = proto_base.DecodeString(r)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
entry.Value = EntityMetadataInnerValue3Tmp
|
||||||
|
case 4:
|
||||||
|
var EntityMetadataInnerValue4Tmp string
|
||||||
|
EntityMetadataInnerValue4Tmp, err = proto_base.DecodeString(r)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
entry.Value = EntityMetadataInnerValue4Tmp
|
||||||
|
case 5:
|
||||||
|
var EntityMetadataInnerValue5Tmp *string
|
||||||
|
var EntityMetadataInnerValue5TmpPresent bool
|
||||||
|
err = binary.Read(r, binary.BigEndian, &EntityMetadataInnerValue5TmpPresent)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if EntityMetadataInnerValue5TmpPresent {
|
||||||
|
var EntityMetadataInnerValue5TmpPresentValue string
|
||||||
|
EntityMetadataInnerValue5TmpPresentValue, err = proto_base.DecodeString(r)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
EntityMetadataInnerValue5Tmp = &EntityMetadataInnerValue5TmpPresentValue
|
||||||
|
}
|
||||||
|
entry.Value = EntityMetadataInnerValue5Tmp
|
||||||
|
case 6:
|
||||||
|
var EntityMetadataInnerValue6Tmp Slot
|
||||||
|
err = EntityMetadataInnerValue6Tmp.Decode(r)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
entry.Value = EntityMetadataInnerValue6Tmp
|
||||||
|
case 7:
|
||||||
|
var EntityMetadataInnerValue7Tmp bool
|
||||||
|
err = binary.Read(r, binary.BigEndian, &EntityMetadataInnerValue7Tmp)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
entry.Value = EntityMetadataInnerValue7Tmp
|
||||||
|
case 8:
|
||||||
|
var EntityMetadataInnerValue8Tmp struct {
|
||||||
|
Pitch float32
|
||||||
|
Yaw float32
|
||||||
|
Roll float32
|
||||||
|
}
|
||||||
|
err = binary.Read(r, binary.BigEndian, &EntityMetadataInnerValue8Tmp.Pitch)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
err = binary.Read(r, binary.BigEndian, &EntityMetadataInnerValue8Tmp.Yaw)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
err = binary.Read(r, binary.BigEndian, &EntityMetadataInnerValue8Tmp.Roll)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
entry.Value = EntityMetadataInnerValue8Tmp
|
||||||
|
case 9:
|
||||||
|
var EntityMetadataInnerValue9Tmp Position
|
||||||
|
err = EntityMetadataInnerValue9Tmp.Decode(r)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
entry.Value = EntityMetadataInnerValue9Tmp
|
||||||
|
}
|
||||||
ret.Val[id] = entry
|
ret.Val[id] = entry
|
||||||
}
|
}
|
||||||
return
|
return
|
||||||
@@ -199,12 +381,247 @@ func (ret *EntityMetadata) Encode(w io.Writer) (err error) {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
EntityMetadataValueEncTmp := v.Value
|
switch v.Anon.Type {
|
||||||
|
case 0:
|
||||||
|
EntityMetadataValue, ok := v.Value.(int8)
|
||||||
|
if !ok {
|
||||||
|
err = proto_base.BadTypeError
|
||||||
|
return
|
||||||
|
}
|
||||||
|
err = binary.Write(w, binary.BigEndian, EntityMetadataValue)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
case 1:
|
||||||
|
EntityMetadataValue, ok := v.Value.(int32)
|
||||||
|
if !ok {
|
||||||
|
err = proto_base.BadTypeError
|
||||||
|
return
|
||||||
|
}
|
||||||
|
err = proto_base.EncodeVarInt(w, EntityMetadataValue)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
case 10:
|
||||||
|
EntityMetadataValue, ok := v.Value.(*Position)
|
||||||
|
if !ok {
|
||||||
|
err = proto_base.BadTypeError
|
||||||
|
return
|
||||||
|
}
|
||||||
|
err = binary.Write(w, binary.BigEndian, EntityMetadataValue != nil)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if EntityMetadataValue != nil {
|
||||||
|
EntityMetadataValueEncTmp := *EntityMetadataValue
|
||||||
err = EntityMetadataValueEncTmp.Encode(w)
|
err = EntityMetadataValueEncTmp.Encode(w)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
case 11:
|
||||||
|
EntityMetadataValue, ok := v.Value.(int32)
|
||||||
|
if !ok {
|
||||||
|
err = proto_base.BadTypeError
|
||||||
|
return
|
||||||
|
}
|
||||||
|
err = proto_base.EncodeVarInt(w, EntityMetadataValue)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
case 12:
|
||||||
|
EntityMetadataValue, ok := v.Value.(*uuid.UUID)
|
||||||
|
if !ok {
|
||||||
|
err = proto_base.BadTypeError
|
||||||
|
return
|
||||||
|
}
|
||||||
|
err = binary.Write(w, binary.BigEndian, EntityMetadataValue != nil)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if EntityMetadataValue != nil {
|
||||||
|
_, err = w.Write((*EntityMetadataValue)[:])
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
case 13:
|
||||||
|
EntityMetadataValue, ok := v.Value.(int32)
|
||||||
|
if !ok {
|
||||||
|
err = proto_base.BadTypeError
|
||||||
|
return
|
||||||
|
}
|
||||||
|
err = proto_base.EncodeVarInt(w, EntityMetadataValue)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
case 14:
|
||||||
|
EntityMetadataValue, ok := v.Value.(nbt.Tag)
|
||||||
|
if !ok {
|
||||||
|
err = proto_base.BadTypeError
|
||||||
|
return
|
||||||
|
}
|
||||||
|
EntityMetadataValueEncTmp := EntityMetadataValue
|
||||||
|
err = EntityMetadataValueEncTmp.Encode(w)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
case 15:
|
||||||
|
EntityMetadataValue, ok := v.Value.(Particle)
|
||||||
|
if !ok {
|
||||||
|
err = proto_base.BadTypeError
|
||||||
|
return
|
||||||
|
}
|
||||||
|
EntityMetadataValueEncTmp := EntityMetadataValue
|
||||||
|
err = EntityMetadataValueEncTmp.Encode(w)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
case 16:
|
||||||
|
EntityMetadataValue, ok := v.Value.(struct {
|
||||||
|
VillagerType int32
|
||||||
|
VillagerProfession int32
|
||||||
|
Level int32
|
||||||
|
})
|
||||||
|
if !ok {
|
||||||
|
err = proto_base.BadTypeError
|
||||||
|
return
|
||||||
|
}
|
||||||
|
err = proto_base.EncodeVarInt(w, EntityMetadataValue.VillagerType)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
err = proto_base.EncodeVarInt(w, EntityMetadataValue.VillagerProfession)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
err = proto_base.EncodeVarInt(w, EntityMetadataValue.Level)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
case 17:
|
||||||
|
EntityMetadataValue, ok := v.Value.(Optvarint)
|
||||||
|
if !ok {
|
||||||
|
err = proto_base.BadTypeError
|
||||||
|
return
|
||||||
|
}
|
||||||
|
EntityMetadataValueEncTmp := EntityMetadataValue
|
||||||
|
err = EntityMetadataValueEncTmp.Encode(w)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
case 18:
|
||||||
|
EntityMetadataValue, ok := v.Value.(int32)
|
||||||
|
if !ok {
|
||||||
|
err = proto_base.BadTypeError
|
||||||
|
return
|
||||||
|
}
|
||||||
|
err = proto_base.EncodeVarInt(w, EntityMetadataValue)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
case 2:
|
||||||
|
EntityMetadataValue, ok := v.Value.(float32)
|
||||||
|
if !ok {
|
||||||
|
err = proto_base.BadTypeError
|
||||||
|
return
|
||||||
|
}
|
||||||
|
err = binary.Write(w, binary.BigEndian, EntityMetadataValue)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
case 3:
|
||||||
|
EntityMetadataValue, ok := v.Value.(string)
|
||||||
|
if !ok {
|
||||||
|
err = proto_base.BadTypeError
|
||||||
|
return
|
||||||
|
}
|
||||||
|
err = proto_base.EncodeString(w, EntityMetadataValue)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
case 4:
|
||||||
|
EntityMetadataValue, ok := v.Value.(string)
|
||||||
|
if !ok {
|
||||||
|
err = proto_base.BadTypeError
|
||||||
|
return
|
||||||
|
}
|
||||||
|
err = proto_base.EncodeString(w, EntityMetadataValue)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
case 5:
|
||||||
|
EntityMetadataValue, ok := v.Value.(*string)
|
||||||
|
if !ok {
|
||||||
|
err = proto_base.BadTypeError
|
||||||
|
return
|
||||||
|
}
|
||||||
|
err = binary.Write(w, binary.BigEndian, EntityMetadataValue != nil)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if EntityMetadataValue != nil {
|
||||||
|
err = proto_base.EncodeString(w, *EntityMetadataValue)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
case 6:
|
||||||
|
EntityMetadataValue, ok := v.Value.(Slot)
|
||||||
|
if !ok {
|
||||||
|
err = proto_base.BadTypeError
|
||||||
|
return
|
||||||
|
}
|
||||||
|
EntityMetadataValueEncTmp := EntityMetadataValue
|
||||||
|
err = EntityMetadataValueEncTmp.Encode(w)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
case 7:
|
||||||
|
EntityMetadataValue, ok := v.Value.(bool)
|
||||||
|
if !ok {
|
||||||
|
err = proto_base.BadTypeError
|
||||||
|
return
|
||||||
|
}
|
||||||
|
err = binary.Write(w, binary.BigEndian, EntityMetadataValue)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
case 8:
|
||||||
|
EntityMetadataValue, ok := v.Value.(struct {
|
||||||
|
Pitch float32
|
||||||
|
Yaw float32
|
||||||
|
Roll float32
|
||||||
|
})
|
||||||
|
if !ok {
|
||||||
|
err = proto_base.BadTypeError
|
||||||
|
return
|
||||||
|
}
|
||||||
|
err = binary.Write(w, binary.BigEndian, EntityMetadataValue.Pitch)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
err = binary.Write(w, binary.BigEndian, EntityMetadataValue.Yaw)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
err = binary.Write(w, binary.BigEndian, EntityMetadataValue.Roll)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
case 9:
|
||||||
|
EntityMetadataValue, ok := v.Value.(Position)
|
||||||
|
if !ok {
|
||||||
|
err = proto_base.BadTypeError
|
||||||
|
return
|
||||||
|
}
|
||||||
|
EntityMetadataValueEncTmp := EntityMetadataValue
|
||||||
|
err = EntityMetadataValueEncTmp.Encode(w)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
err = binary.Write(w, binary.BigEndian, uint8(255))
|
err = binary.Write(w, binary.BigEndian, uint8(255))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return
|
return
|
||||||
@@ -339,7 +756,7 @@ func (ret *Optvarint) Encode(w io.Writer) (err error) {
|
|||||||
|
|
||||||
type Particle struct {
|
type Particle struct {
|
||||||
ParticleId int32
|
ParticleId int32
|
||||||
Data ParticleData
|
Data any
|
||||||
}
|
}
|
||||||
|
|
||||||
func (ret *Particle) Decode(r io.ReadSeeker) (err error) {
|
func (ret *Particle) Decode(r io.ReadSeeker) (err error) {
|
||||||
@@ -347,10 +764,63 @@ func (ret *Particle) Decode(r io.ReadSeeker) (err error) {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
err = ret.Data.Decode(r)
|
switch ret.ParticleId {
|
||||||
|
case 14:
|
||||||
|
var ParticleData14Tmp struct {
|
||||||
|
Red float32
|
||||||
|
Green float32
|
||||||
|
Blue float32
|
||||||
|
Scale float32
|
||||||
|
}
|
||||||
|
err = binary.Read(r, binary.BigEndian, &ParticleData14Tmp.Red)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
err = binary.Read(r, binary.BigEndian, &ParticleData14Tmp.Green)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
err = binary.Read(r, binary.BigEndian, &ParticleData14Tmp.Blue)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
err = binary.Read(r, binary.BigEndian, &ParticleData14Tmp.Scale)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
ret.Data = ParticleData14Tmp
|
||||||
|
case 23:
|
||||||
|
var ParticleData23Tmp struct {
|
||||||
|
BlockState int32
|
||||||
|
}
|
||||||
|
ParticleData23Tmp.BlockState, err = proto_base.DecodeVarInt(r)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
ret.Data = ParticleData23Tmp
|
||||||
|
case 3:
|
||||||
|
var ParticleData3Tmp struct {
|
||||||
|
BlockState int32
|
||||||
|
}
|
||||||
|
ParticleData3Tmp.BlockState, err = proto_base.DecodeVarInt(r)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
ret.Data = ParticleData3Tmp
|
||||||
|
case 32:
|
||||||
|
var ParticleData32Tmp struct {
|
||||||
|
Item Slot
|
||||||
|
}
|
||||||
|
err = ParticleData32Tmp.Item.Decode(r)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
ret.Data = ParticleData32Tmp
|
||||||
|
default:
|
||||||
|
var ParticleDataTmp struct {
|
||||||
|
}
|
||||||
|
ret.Data = ParticleDataTmp
|
||||||
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
func (ret *Particle) Encode(w io.Writer) (err error) {
|
func (ret *Particle) Encode(w io.Writer) (err error) {
|
||||||
@@ -358,11 +828,79 @@ func (ret *Particle) Encode(w io.Writer) (err error) {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
ParticleDataEncTmp := ret.Data
|
switch ret.ParticleId {
|
||||||
err = ParticleDataEncTmp.Encode(w)
|
case 14:
|
||||||
|
ParticleData, ok := ret.Data.(struct {
|
||||||
|
Red float32
|
||||||
|
Green float32
|
||||||
|
Blue float32
|
||||||
|
Scale float32
|
||||||
|
})
|
||||||
|
if !ok {
|
||||||
|
err = proto_base.BadTypeError
|
||||||
|
return
|
||||||
|
}
|
||||||
|
err = binary.Write(w, binary.BigEndian, ParticleData.Red)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
err = binary.Write(w, binary.BigEndian, ParticleData.Green)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
err = binary.Write(w, binary.BigEndian, ParticleData.Blue)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
err = binary.Write(w, binary.BigEndian, ParticleData.Scale)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
case 23:
|
||||||
|
ParticleData, ok := ret.Data.(struct {
|
||||||
|
BlockState int32
|
||||||
|
})
|
||||||
|
if !ok {
|
||||||
|
err = proto_base.BadTypeError
|
||||||
|
return
|
||||||
|
}
|
||||||
|
err = proto_base.EncodeVarInt(w, ParticleData.BlockState)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
case 3:
|
||||||
|
ParticleData, ok := ret.Data.(struct {
|
||||||
|
BlockState int32
|
||||||
|
})
|
||||||
|
if !ok {
|
||||||
|
err = proto_base.BadTypeError
|
||||||
|
return
|
||||||
|
}
|
||||||
|
err = proto_base.EncodeVarInt(w, ParticleData.BlockState)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
case 32:
|
||||||
|
ParticleData, ok := ret.Data.(struct {
|
||||||
|
Item Slot
|
||||||
|
})
|
||||||
|
if !ok {
|
||||||
|
err = proto_base.BadTypeError
|
||||||
|
return
|
||||||
|
}
|
||||||
|
ParticleDataItemEncTmp := ParticleData.Item
|
||||||
|
err = ParticleDataItemEncTmp.Encode(w)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
_, ok := ret.Data.(struct {
|
||||||
|
})
|
||||||
|
if !ok {
|
||||||
|
err = proto_base.BadTypeError
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -10329,7 +10867,7 @@ type PlayToClientPacketWorldParticles struct {
|
|||||||
OffsetZ float32
|
OffsetZ float32
|
||||||
ParticleData float32
|
ParticleData float32
|
||||||
Particles int32
|
Particles int32
|
||||||
Data ParticleData
|
Data any
|
||||||
}
|
}
|
||||||
|
|
||||||
func (ret *PlayToClientPacketWorldParticles) Decode(r io.ReadSeeker) (err error) {
|
func (ret *PlayToClientPacketWorldParticles) Decode(r io.ReadSeeker) (err error) {
|
||||||
@@ -10373,10 +10911,63 @@ func (ret *PlayToClientPacketWorldParticles) Decode(r io.ReadSeeker) (err error)
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
err = ret.Data.Decode(r)
|
switch ret.ParticleId {
|
||||||
|
case 14:
|
||||||
|
var PlayToClientPacketWorldParticlesData14Tmp struct {
|
||||||
|
Red float32
|
||||||
|
Green float32
|
||||||
|
Blue float32
|
||||||
|
Scale float32
|
||||||
|
}
|
||||||
|
err = binary.Read(r, binary.BigEndian, &PlayToClientPacketWorldParticlesData14Tmp.Red)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
err = binary.Read(r, binary.BigEndian, &PlayToClientPacketWorldParticlesData14Tmp.Green)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
err = binary.Read(r, binary.BigEndian, &PlayToClientPacketWorldParticlesData14Tmp.Blue)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
err = binary.Read(r, binary.BigEndian, &PlayToClientPacketWorldParticlesData14Tmp.Scale)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
ret.Data = PlayToClientPacketWorldParticlesData14Tmp
|
||||||
|
case 23:
|
||||||
|
var PlayToClientPacketWorldParticlesData23Tmp struct {
|
||||||
|
BlockState int32
|
||||||
|
}
|
||||||
|
PlayToClientPacketWorldParticlesData23Tmp.BlockState, err = proto_base.DecodeVarInt(r)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
ret.Data = PlayToClientPacketWorldParticlesData23Tmp
|
||||||
|
case 3:
|
||||||
|
var PlayToClientPacketWorldParticlesData3Tmp struct {
|
||||||
|
BlockState int32
|
||||||
|
}
|
||||||
|
PlayToClientPacketWorldParticlesData3Tmp.BlockState, err = proto_base.DecodeVarInt(r)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
ret.Data = PlayToClientPacketWorldParticlesData3Tmp
|
||||||
|
case 32:
|
||||||
|
var PlayToClientPacketWorldParticlesData32Tmp struct {
|
||||||
|
Item Slot
|
||||||
|
}
|
||||||
|
err = PlayToClientPacketWorldParticlesData32Tmp.Item.Decode(r)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
ret.Data = PlayToClientPacketWorldParticlesData32Tmp
|
||||||
|
default:
|
||||||
|
var PlayToClientPacketWorldParticlesDataTmp struct {
|
||||||
|
}
|
||||||
|
ret.Data = PlayToClientPacketWorldParticlesDataTmp
|
||||||
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
func (ret *PlayToClientPacketWorldParticles) Encode(w io.Writer) (err error) {
|
func (ret *PlayToClientPacketWorldParticles) Encode(w io.Writer) (err error) {
|
||||||
@@ -10420,11 +11011,79 @@ func (ret *PlayToClientPacketWorldParticles) Encode(w io.Writer) (err error) {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
PlayToClientPacketWorldParticlesDataEncTmp := ret.Data
|
switch ret.ParticleId {
|
||||||
err = PlayToClientPacketWorldParticlesDataEncTmp.Encode(w)
|
case 14:
|
||||||
|
PlayToClientPacketWorldParticlesData, ok := ret.Data.(struct {
|
||||||
|
Red float32
|
||||||
|
Green float32
|
||||||
|
Blue float32
|
||||||
|
Scale float32
|
||||||
|
})
|
||||||
|
if !ok {
|
||||||
|
err = proto_base.BadTypeError
|
||||||
|
return
|
||||||
|
}
|
||||||
|
err = binary.Write(w, binary.BigEndian, PlayToClientPacketWorldParticlesData.Red)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
err = binary.Write(w, binary.BigEndian, PlayToClientPacketWorldParticlesData.Green)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
err = binary.Write(w, binary.BigEndian, PlayToClientPacketWorldParticlesData.Blue)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
err = binary.Write(w, binary.BigEndian, PlayToClientPacketWorldParticlesData.Scale)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
case 23:
|
||||||
|
PlayToClientPacketWorldParticlesData, ok := ret.Data.(struct {
|
||||||
|
BlockState int32
|
||||||
|
})
|
||||||
|
if !ok {
|
||||||
|
err = proto_base.BadTypeError
|
||||||
|
return
|
||||||
|
}
|
||||||
|
err = proto_base.EncodeVarInt(w, PlayToClientPacketWorldParticlesData.BlockState)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
case 3:
|
||||||
|
PlayToClientPacketWorldParticlesData, ok := ret.Data.(struct {
|
||||||
|
BlockState int32
|
||||||
|
})
|
||||||
|
if !ok {
|
||||||
|
err = proto_base.BadTypeError
|
||||||
|
return
|
||||||
|
}
|
||||||
|
err = proto_base.EncodeVarInt(w, PlayToClientPacketWorldParticlesData.BlockState)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
case 32:
|
||||||
|
PlayToClientPacketWorldParticlesData, ok := ret.Data.(struct {
|
||||||
|
Item Slot
|
||||||
|
})
|
||||||
|
if !ok {
|
||||||
|
err = proto_base.BadTypeError
|
||||||
|
return
|
||||||
|
}
|
||||||
|
PlayToClientPacketWorldParticlesDataItemEncTmp := PlayToClientPacketWorldParticlesData.Item
|
||||||
|
err = PlayToClientPacketWorldParticlesDataItemEncTmp.Encode(w)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
_, ok := ret.Data.(struct {
|
||||||
|
})
|
||||||
|
if !ok {
|
||||||
|
err = proto_base.BadTypeError
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
// Code generated by strom. DO NOT EDIT.
|
// Code generated by strom. DO NOT EDIT.
|
||||||
// source: minecraft-data/pc/1.16.2/protocol.json (sha256:d96a3c5a7a7ddf2105e23990c2471b3aeafe4a6975e0c9d7d7943b599af9dfb3)
|
// source: minecraft-data/pc/1.16.2/protocol.json (sha256:d96a3c5a7a7ddf2105e23990c2471b3aeafe4a6975e0c9d7d7943b599af9dfb3)
|
||||||
// version: (devel) (go1.26.2)
|
// version: v0.6.6-0.20260805154326-fa70ea36c6f5+dirty (go1.26.2)
|
||||||
package v1_16_5
|
package v1_16_5
|
||||||
|
|
||||||
import (
|
import (
|
||||||
@@ -141,7 +141,7 @@ type EntityMetadata struct {
|
|||||||
Key uint8
|
Key uint8
|
||||||
Type int32
|
Type int32
|
||||||
}
|
}
|
||||||
Value EntityMetadataItem
|
Value any
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -151,7 +151,7 @@ func (ret *EntityMetadata) Decode(r io.ReadSeeker) (err error) {
|
|||||||
Key uint8
|
Key uint8
|
||||||
Type int32
|
Type int32
|
||||||
}
|
}
|
||||||
Value EntityMetadataItem
|
Value any
|
||||||
})
|
})
|
||||||
var id uint8
|
var id uint8
|
||||||
for {
|
for {
|
||||||
@@ -171,7 +171,7 @@ func (ret *EntityMetadata) Decode(r io.ReadSeeker) (err error) {
|
|||||||
Key uint8
|
Key uint8
|
||||||
Type int32
|
Type int32
|
||||||
}
|
}
|
||||||
Value EntityMetadataItem
|
Value any
|
||||||
}
|
}
|
||||||
err = binary.Read(r, binary.BigEndian, &entry.Anon.Key)
|
err = binary.Read(r, binary.BigEndian, &entry.Anon.Key)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -181,10 +181,192 @@ func (ret *EntityMetadata) Decode(r io.ReadSeeker) (err error) {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
err = entry.Value.Decode(r)
|
switch entry.Anon.Type {
|
||||||
|
case 0:
|
||||||
|
var EntityMetadataInnerValue0Tmp int8
|
||||||
|
err = binary.Read(r, binary.BigEndian, &EntityMetadataInnerValue0Tmp)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
entry.Value = EntityMetadataInnerValue0Tmp
|
||||||
|
case 1:
|
||||||
|
var EntityMetadataInnerValue1Tmp int32
|
||||||
|
EntityMetadataInnerValue1Tmp, err = proto_base.DecodeVarInt(r)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
entry.Value = EntityMetadataInnerValue1Tmp
|
||||||
|
case 10:
|
||||||
|
var EntityMetadataInnerValue10Tmp *Position
|
||||||
|
var EntityMetadataInnerValue10TmpPresent bool
|
||||||
|
err = binary.Read(r, binary.BigEndian, &EntityMetadataInnerValue10TmpPresent)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if EntityMetadataInnerValue10TmpPresent {
|
||||||
|
var EntityMetadataInnerValue10TmpPresentValue Position
|
||||||
|
err = EntityMetadataInnerValue10TmpPresentValue.Decode(r)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
EntityMetadataInnerValue10Tmp = &EntityMetadataInnerValue10TmpPresentValue
|
||||||
|
}
|
||||||
|
entry.Value = EntityMetadataInnerValue10Tmp
|
||||||
|
case 11:
|
||||||
|
var EntityMetadataInnerValue11Tmp int32
|
||||||
|
EntityMetadataInnerValue11Tmp, err = proto_base.DecodeVarInt(r)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
entry.Value = EntityMetadataInnerValue11Tmp
|
||||||
|
case 12:
|
||||||
|
var EntityMetadataInnerValue12Tmp *uuid.UUID
|
||||||
|
var EntityMetadataInnerValue12TmpPresent bool
|
||||||
|
err = binary.Read(r, binary.BigEndian, &EntityMetadataInnerValue12TmpPresent)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if EntityMetadataInnerValue12TmpPresent {
|
||||||
|
var EntityMetadataInnerValue12TmpPresentValue uuid.UUID
|
||||||
|
_, err = io.ReadFull(r, EntityMetadataInnerValue12TmpPresentValue[:])
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
EntityMetadataInnerValue12Tmp = &EntityMetadataInnerValue12TmpPresentValue
|
||||||
|
}
|
||||||
|
entry.Value = EntityMetadataInnerValue12Tmp
|
||||||
|
case 13:
|
||||||
|
var EntityMetadataInnerValue13Tmp int32
|
||||||
|
EntityMetadataInnerValue13Tmp, err = proto_base.DecodeVarInt(r)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
entry.Value = EntityMetadataInnerValue13Tmp
|
||||||
|
case 14:
|
||||||
|
var EntityMetadataInnerValue14Tmp nbt.Tag
|
||||||
|
err = EntityMetadataInnerValue14Tmp.Decode(r)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
entry.Value = EntityMetadataInnerValue14Tmp
|
||||||
|
case 15:
|
||||||
|
var EntityMetadataInnerValue15Tmp Particle
|
||||||
|
err = EntityMetadataInnerValue15Tmp.Decode(r)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
entry.Value = EntityMetadataInnerValue15Tmp
|
||||||
|
case 16:
|
||||||
|
var EntityMetadataInnerValue16Tmp struct {
|
||||||
|
VillagerType int32
|
||||||
|
VillagerProfession int32
|
||||||
|
Level int32
|
||||||
|
}
|
||||||
|
EntityMetadataInnerValue16Tmp.VillagerType, err = proto_base.DecodeVarInt(r)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
EntityMetadataInnerValue16Tmp.VillagerProfession, err = proto_base.DecodeVarInt(r)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
EntityMetadataInnerValue16Tmp.Level, err = proto_base.DecodeVarInt(r)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
entry.Value = EntityMetadataInnerValue16Tmp
|
||||||
|
case 17:
|
||||||
|
var EntityMetadataInnerValue17Tmp Optvarint
|
||||||
|
err = EntityMetadataInnerValue17Tmp.Decode(r)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
entry.Value = EntityMetadataInnerValue17Tmp
|
||||||
|
case 18:
|
||||||
|
var EntityMetadataInnerValue18Tmp int32
|
||||||
|
EntityMetadataInnerValue18Tmp, err = proto_base.DecodeVarInt(r)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
entry.Value = EntityMetadataInnerValue18Tmp
|
||||||
|
case 2:
|
||||||
|
var EntityMetadataInnerValue2Tmp float32
|
||||||
|
err = binary.Read(r, binary.BigEndian, &EntityMetadataInnerValue2Tmp)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
entry.Value = EntityMetadataInnerValue2Tmp
|
||||||
|
case 3:
|
||||||
|
var EntityMetadataInnerValue3Tmp string
|
||||||
|
EntityMetadataInnerValue3Tmp, err = proto_base.DecodeString(r)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
entry.Value = EntityMetadataInnerValue3Tmp
|
||||||
|
case 4:
|
||||||
|
var EntityMetadataInnerValue4Tmp string
|
||||||
|
EntityMetadataInnerValue4Tmp, err = proto_base.DecodeString(r)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
entry.Value = EntityMetadataInnerValue4Tmp
|
||||||
|
case 5:
|
||||||
|
var EntityMetadataInnerValue5Tmp *string
|
||||||
|
var EntityMetadataInnerValue5TmpPresent bool
|
||||||
|
err = binary.Read(r, binary.BigEndian, &EntityMetadataInnerValue5TmpPresent)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if EntityMetadataInnerValue5TmpPresent {
|
||||||
|
var EntityMetadataInnerValue5TmpPresentValue string
|
||||||
|
EntityMetadataInnerValue5TmpPresentValue, err = proto_base.DecodeString(r)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
EntityMetadataInnerValue5Tmp = &EntityMetadataInnerValue5TmpPresentValue
|
||||||
|
}
|
||||||
|
entry.Value = EntityMetadataInnerValue5Tmp
|
||||||
|
case 6:
|
||||||
|
var EntityMetadataInnerValue6Tmp Slot
|
||||||
|
err = EntityMetadataInnerValue6Tmp.Decode(r)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
entry.Value = EntityMetadataInnerValue6Tmp
|
||||||
|
case 7:
|
||||||
|
var EntityMetadataInnerValue7Tmp bool
|
||||||
|
err = binary.Read(r, binary.BigEndian, &EntityMetadataInnerValue7Tmp)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
entry.Value = EntityMetadataInnerValue7Tmp
|
||||||
|
case 8:
|
||||||
|
var EntityMetadataInnerValue8Tmp struct {
|
||||||
|
Pitch float32
|
||||||
|
Yaw float32
|
||||||
|
Roll float32
|
||||||
|
}
|
||||||
|
err = binary.Read(r, binary.BigEndian, &EntityMetadataInnerValue8Tmp.Pitch)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
err = binary.Read(r, binary.BigEndian, &EntityMetadataInnerValue8Tmp.Yaw)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
err = binary.Read(r, binary.BigEndian, &EntityMetadataInnerValue8Tmp.Roll)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
entry.Value = EntityMetadataInnerValue8Tmp
|
||||||
|
case 9:
|
||||||
|
var EntityMetadataInnerValue9Tmp Position
|
||||||
|
err = EntityMetadataInnerValue9Tmp.Decode(r)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
entry.Value = EntityMetadataInnerValue9Tmp
|
||||||
|
}
|
||||||
ret.Val[id] = entry
|
ret.Val[id] = entry
|
||||||
}
|
}
|
||||||
return
|
return
|
||||||
@@ -199,12 +381,247 @@ func (ret *EntityMetadata) Encode(w io.Writer) (err error) {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
EntityMetadataValueEncTmp := v.Value
|
switch v.Anon.Type {
|
||||||
|
case 0:
|
||||||
|
EntityMetadataValue, ok := v.Value.(int8)
|
||||||
|
if !ok {
|
||||||
|
err = proto_base.BadTypeError
|
||||||
|
return
|
||||||
|
}
|
||||||
|
err = binary.Write(w, binary.BigEndian, EntityMetadataValue)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
case 1:
|
||||||
|
EntityMetadataValue, ok := v.Value.(int32)
|
||||||
|
if !ok {
|
||||||
|
err = proto_base.BadTypeError
|
||||||
|
return
|
||||||
|
}
|
||||||
|
err = proto_base.EncodeVarInt(w, EntityMetadataValue)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
case 10:
|
||||||
|
EntityMetadataValue, ok := v.Value.(*Position)
|
||||||
|
if !ok {
|
||||||
|
err = proto_base.BadTypeError
|
||||||
|
return
|
||||||
|
}
|
||||||
|
err = binary.Write(w, binary.BigEndian, EntityMetadataValue != nil)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if EntityMetadataValue != nil {
|
||||||
|
EntityMetadataValueEncTmp := *EntityMetadataValue
|
||||||
err = EntityMetadataValueEncTmp.Encode(w)
|
err = EntityMetadataValueEncTmp.Encode(w)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
case 11:
|
||||||
|
EntityMetadataValue, ok := v.Value.(int32)
|
||||||
|
if !ok {
|
||||||
|
err = proto_base.BadTypeError
|
||||||
|
return
|
||||||
|
}
|
||||||
|
err = proto_base.EncodeVarInt(w, EntityMetadataValue)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
case 12:
|
||||||
|
EntityMetadataValue, ok := v.Value.(*uuid.UUID)
|
||||||
|
if !ok {
|
||||||
|
err = proto_base.BadTypeError
|
||||||
|
return
|
||||||
|
}
|
||||||
|
err = binary.Write(w, binary.BigEndian, EntityMetadataValue != nil)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if EntityMetadataValue != nil {
|
||||||
|
_, err = w.Write((*EntityMetadataValue)[:])
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
case 13:
|
||||||
|
EntityMetadataValue, ok := v.Value.(int32)
|
||||||
|
if !ok {
|
||||||
|
err = proto_base.BadTypeError
|
||||||
|
return
|
||||||
|
}
|
||||||
|
err = proto_base.EncodeVarInt(w, EntityMetadataValue)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
case 14:
|
||||||
|
EntityMetadataValue, ok := v.Value.(nbt.Tag)
|
||||||
|
if !ok {
|
||||||
|
err = proto_base.BadTypeError
|
||||||
|
return
|
||||||
|
}
|
||||||
|
EntityMetadataValueEncTmp := EntityMetadataValue
|
||||||
|
err = EntityMetadataValueEncTmp.Encode(w)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
case 15:
|
||||||
|
EntityMetadataValue, ok := v.Value.(Particle)
|
||||||
|
if !ok {
|
||||||
|
err = proto_base.BadTypeError
|
||||||
|
return
|
||||||
|
}
|
||||||
|
EntityMetadataValueEncTmp := EntityMetadataValue
|
||||||
|
err = EntityMetadataValueEncTmp.Encode(w)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
case 16:
|
||||||
|
EntityMetadataValue, ok := v.Value.(struct {
|
||||||
|
VillagerType int32
|
||||||
|
VillagerProfession int32
|
||||||
|
Level int32
|
||||||
|
})
|
||||||
|
if !ok {
|
||||||
|
err = proto_base.BadTypeError
|
||||||
|
return
|
||||||
|
}
|
||||||
|
err = proto_base.EncodeVarInt(w, EntityMetadataValue.VillagerType)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
err = proto_base.EncodeVarInt(w, EntityMetadataValue.VillagerProfession)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
err = proto_base.EncodeVarInt(w, EntityMetadataValue.Level)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
case 17:
|
||||||
|
EntityMetadataValue, ok := v.Value.(Optvarint)
|
||||||
|
if !ok {
|
||||||
|
err = proto_base.BadTypeError
|
||||||
|
return
|
||||||
|
}
|
||||||
|
EntityMetadataValueEncTmp := EntityMetadataValue
|
||||||
|
err = EntityMetadataValueEncTmp.Encode(w)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
case 18:
|
||||||
|
EntityMetadataValue, ok := v.Value.(int32)
|
||||||
|
if !ok {
|
||||||
|
err = proto_base.BadTypeError
|
||||||
|
return
|
||||||
|
}
|
||||||
|
err = proto_base.EncodeVarInt(w, EntityMetadataValue)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
case 2:
|
||||||
|
EntityMetadataValue, ok := v.Value.(float32)
|
||||||
|
if !ok {
|
||||||
|
err = proto_base.BadTypeError
|
||||||
|
return
|
||||||
|
}
|
||||||
|
err = binary.Write(w, binary.BigEndian, EntityMetadataValue)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
case 3:
|
||||||
|
EntityMetadataValue, ok := v.Value.(string)
|
||||||
|
if !ok {
|
||||||
|
err = proto_base.BadTypeError
|
||||||
|
return
|
||||||
|
}
|
||||||
|
err = proto_base.EncodeString(w, EntityMetadataValue)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
case 4:
|
||||||
|
EntityMetadataValue, ok := v.Value.(string)
|
||||||
|
if !ok {
|
||||||
|
err = proto_base.BadTypeError
|
||||||
|
return
|
||||||
|
}
|
||||||
|
err = proto_base.EncodeString(w, EntityMetadataValue)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
case 5:
|
||||||
|
EntityMetadataValue, ok := v.Value.(*string)
|
||||||
|
if !ok {
|
||||||
|
err = proto_base.BadTypeError
|
||||||
|
return
|
||||||
|
}
|
||||||
|
err = binary.Write(w, binary.BigEndian, EntityMetadataValue != nil)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if EntityMetadataValue != nil {
|
||||||
|
err = proto_base.EncodeString(w, *EntityMetadataValue)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
case 6:
|
||||||
|
EntityMetadataValue, ok := v.Value.(Slot)
|
||||||
|
if !ok {
|
||||||
|
err = proto_base.BadTypeError
|
||||||
|
return
|
||||||
|
}
|
||||||
|
EntityMetadataValueEncTmp := EntityMetadataValue
|
||||||
|
err = EntityMetadataValueEncTmp.Encode(w)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
case 7:
|
||||||
|
EntityMetadataValue, ok := v.Value.(bool)
|
||||||
|
if !ok {
|
||||||
|
err = proto_base.BadTypeError
|
||||||
|
return
|
||||||
|
}
|
||||||
|
err = binary.Write(w, binary.BigEndian, EntityMetadataValue)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
case 8:
|
||||||
|
EntityMetadataValue, ok := v.Value.(struct {
|
||||||
|
Pitch float32
|
||||||
|
Yaw float32
|
||||||
|
Roll float32
|
||||||
|
})
|
||||||
|
if !ok {
|
||||||
|
err = proto_base.BadTypeError
|
||||||
|
return
|
||||||
|
}
|
||||||
|
err = binary.Write(w, binary.BigEndian, EntityMetadataValue.Pitch)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
err = binary.Write(w, binary.BigEndian, EntityMetadataValue.Yaw)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
err = binary.Write(w, binary.BigEndian, EntityMetadataValue.Roll)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
case 9:
|
||||||
|
EntityMetadataValue, ok := v.Value.(Position)
|
||||||
|
if !ok {
|
||||||
|
err = proto_base.BadTypeError
|
||||||
|
return
|
||||||
|
}
|
||||||
|
EntityMetadataValueEncTmp := EntityMetadataValue
|
||||||
|
err = EntityMetadataValueEncTmp.Encode(w)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
err = binary.Write(w, binary.BigEndian, uint8(255))
|
err = binary.Write(w, binary.BigEndian, uint8(255))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return
|
return
|
||||||
@@ -339,7 +756,7 @@ func (ret *Optvarint) Encode(w io.Writer) (err error) {
|
|||||||
|
|
||||||
type Particle struct {
|
type Particle struct {
|
||||||
ParticleId int32
|
ParticleId int32
|
||||||
Data ParticleData
|
Data any
|
||||||
}
|
}
|
||||||
|
|
||||||
func (ret *Particle) Decode(r io.ReadSeeker) (err error) {
|
func (ret *Particle) Decode(r io.ReadSeeker) (err error) {
|
||||||
@@ -347,10 +764,63 @@ func (ret *Particle) Decode(r io.ReadSeeker) (err error) {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
err = ret.Data.Decode(r)
|
switch ret.ParticleId {
|
||||||
|
case 14:
|
||||||
|
var ParticleData14Tmp struct {
|
||||||
|
Red float32
|
||||||
|
Green float32
|
||||||
|
Blue float32
|
||||||
|
Scale float32
|
||||||
|
}
|
||||||
|
err = binary.Read(r, binary.BigEndian, &ParticleData14Tmp.Red)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
err = binary.Read(r, binary.BigEndian, &ParticleData14Tmp.Green)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
err = binary.Read(r, binary.BigEndian, &ParticleData14Tmp.Blue)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
err = binary.Read(r, binary.BigEndian, &ParticleData14Tmp.Scale)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
ret.Data = ParticleData14Tmp
|
||||||
|
case 23:
|
||||||
|
var ParticleData23Tmp struct {
|
||||||
|
BlockState int32
|
||||||
|
}
|
||||||
|
ParticleData23Tmp.BlockState, err = proto_base.DecodeVarInt(r)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
ret.Data = ParticleData23Tmp
|
||||||
|
case 3:
|
||||||
|
var ParticleData3Tmp struct {
|
||||||
|
BlockState int32
|
||||||
|
}
|
||||||
|
ParticleData3Tmp.BlockState, err = proto_base.DecodeVarInt(r)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
ret.Data = ParticleData3Tmp
|
||||||
|
case 34:
|
||||||
|
var ParticleData34Tmp struct {
|
||||||
|
Item Slot
|
||||||
|
}
|
||||||
|
err = ParticleData34Tmp.Item.Decode(r)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
ret.Data = ParticleData34Tmp
|
||||||
|
default:
|
||||||
|
var ParticleDataTmp struct {
|
||||||
|
}
|
||||||
|
ret.Data = ParticleDataTmp
|
||||||
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
func (ret *Particle) Encode(w io.Writer) (err error) {
|
func (ret *Particle) Encode(w io.Writer) (err error) {
|
||||||
@@ -358,11 +828,79 @@ func (ret *Particle) Encode(w io.Writer) (err error) {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
ParticleDataEncTmp := ret.Data
|
switch ret.ParticleId {
|
||||||
err = ParticleDataEncTmp.Encode(w)
|
case 14:
|
||||||
|
ParticleData, ok := ret.Data.(struct {
|
||||||
|
Red float32
|
||||||
|
Green float32
|
||||||
|
Blue float32
|
||||||
|
Scale float32
|
||||||
|
})
|
||||||
|
if !ok {
|
||||||
|
err = proto_base.BadTypeError
|
||||||
|
return
|
||||||
|
}
|
||||||
|
err = binary.Write(w, binary.BigEndian, ParticleData.Red)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
err = binary.Write(w, binary.BigEndian, ParticleData.Green)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
err = binary.Write(w, binary.BigEndian, ParticleData.Blue)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
err = binary.Write(w, binary.BigEndian, ParticleData.Scale)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
case 23:
|
||||||
|
ParticleData, ok := ret.Data.(struct {
|
||||||
|
BlockState int32
|
||||||
|
})
|
||||||
|
if !ok {
|
||||||
|
err = proto_base.BadTypeError
|
||||||
|
return
|
||||||
|
}
|
||||||
|
err = proto_base.EncodeVarInt(w, ParticleData.BlockState)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
case 3:
|
||||||
|
ParticleData, ok := ret.Data.(struct {
|
||||||
|
BlockState int32
|
||||||
|
})
|
||||||
|
if !ok {
|
||||||
|
err = proto_base.BadTypeError
|
||||||
|
return
|
||||||
|
}
|
||||||
|
err = proto_base.EncodeVarInt(w, ParticleData.BlockState)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
case 34:
|
||||||
|
ParticleData, ok := ret.Data.(struct {
|
||||||
|
Item Slot
|
||||||
|
})
|
||||||
|
if !ok {
|
||||||
|
err = proto_base.BadTypeError
|
||||||
|
return
|
||||||
|
}
|
||||||
|
ParticleDataItemEncTmp := ParticleData.Item
|
||||||
|
err = ParticleDataItemEncTmp.Encode(w)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
_, ok := ret.Data.(struct {
|
||||||
|
})
|
||||||
|
if !ok {
|
||||||
|
err = proto_base.BadTypeError
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -10484,7 +11022,7 @@ type PlayToClientPacketWorldParticles struct {
|
|||||||
OffsetZ float32
|
OffsetZ float32
|
||||||
ParticleData float32
|
ParticleData float32
|
||||||
Particles int32
|
Particles int32
|
||||||
Data ParticleData
|
Data any
|
||||||
}
|
}
|
||||||
|
|
||||||
func (ret *PlayToClientPacketWorldParticles) Decode(r io.ReadSeeker) (err error) {
|
func (ret *PlayToClientPacketWorldParticles) Decode(r io.ReadSeeker) (err error) {
|
||||||
@@ -10528,10 +11066,63 @@ func (ret *PlayToClientPacketWorldParticles) Decode(r io.ReadSeeker) (err error)
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
err = ret.Data.Decode(r)
|
switch ret.ParticleId {
|
||||||
|
case 14:
|
||||||
|
var PlayToClientPacketWorldParticlesData14Tmp struct {
|
||||||
|
Red float32
|
||||||
|
Green float32
|
||||||
|
Blue float32
|
||||||
|
Scale float32
|
||||||
|
}
|
||||||
|
err = binary.Read(r, binary.BigEndian, &PlayToClientPacketWorldParticlesData14Tmp.Red)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
err = binary.Read(r, binary.BigEndian, &PlayToClientPacketWorldParticlesData14Tmp.Green)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
err = binary.Read(r, binary.BigEndian, &PlayToClientPacketWorldParticlesData14Tmp.Blue)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
err = binary.Read(r, binary.BigEndian, &PlayToClientPacketWorldParticlesData14Tmp.Scale)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
ret.Data = PlayToClientPacketWorldParticlesData14Tmp
|
||||||
|
case 23:
|
||||||
|
var PlayToClientPacketWorldParticlesData23Tmp struct {
|
||||||
|
BlockState int32
|
||||||
|
}
|
||||||
|
PlayToClientPacketWorldParticlesData23Tmp.BlockState, err = proto_base.DecodeVarInt(r)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
ret.Data = PlayToClientPacketWorldParticlesData23Tmp
|
||||||
|
case 3:
|
||||||
|
var PlayToClientPacketWorldParticlesData3Tmp struct {
|
||||||
|
BlockState int32
|
||||||
|
}
|
||||||
|
PlayToClientPacketWorldParticlesData3Tmp.BlockState, err = proto_base.DecodeVarInt(r)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
ret.Data = PlayToClientPacketWorldParticlesData3Tmp
|
||||||
|
case 34:
|
||||||
|
var PlayToClientPacketWorldParticlesData34Tmp struct {
|
||||||
|
Item Slot
|
||||||
|
}
|
||||||
|
err = PlayToClientPacketWorldParticlesData34Tmp.Item.Decode(r)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
ret.Data = PlayToClientPacketWorldParticlesData34Tmp
|
||||||
|
default:
|
||||||
|
var PlayToClientPacketWorldParticlesDataTmp struct {
|
||||||
|
}
|
||||||
|
ret.Data = PlayToClientPacketWorldParticlesDataTmp
|
||||||
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
func (ret *PlayToClientPacketWorldParticles) Encode(w io.Writer) (err error) {
|
func (ret *PlayToClientPacketWorldParticles) Encode(w io.Writer) (err error) {
|
||||||
@@ -10575,11 +11166,79 @@ func (ret *PlayToClientPacketWorldParticles) Encode(w io.Writer) (err error) {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
PlayToClientPacketWorldParticlesDataEncTmp := ret.Data
|
switch ret.ParticleId {
|
||||||
err = PlayToClientPacketWorldParticlesDataEncTmp.Encode(w)
|
case 14:
|
||||||
|
PlayToClientPacketWorldParticlesData, ok := ret.Data.(struct {
|
||||||
|
Red float32
|
||||||
|
Green float32
|
||||||
|
Blue float32
|
||||||
|
Scale float32
|
||||||
|
})
|
||||||
|
if !ok {
|
||||||
|
err = proto_base.BadTypeError
|
||||||
|
return
|
||||||
|
}
|
||||||
|
err = binary.Write(w, binary.BigEndian, PlayToClientPacketWorldParticlesData.Red)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
err = binary.Write(w, binary.BigEndian, PlayToClientPacketWorldParticlesData.Green)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
err = binary.Write(w, binary.BigEndian, PlayToClientPacketWorldParticlesData.Blue)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
err = binary.Write(w, binary.BigEndian, PlayToClientPacketWorldParticlesData.Scale)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
case 23:
|
||||||
|
PlayToClientPacketWorldParticlesData, ok := ret.Data.(struct {
|
||||||
|
BlockState int32
|
||||||
|
})
|
||||||
|
if !ok {
|
||||||
|
err = proto_base.BadTypeError
|
||||||
|
return
|
||||||
|
}
|
||||||
|
err = proto_base.EncodeVarInt(w, PlayToClientPacketWorldParticlesData.BlockState)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
case 3:
|
||||||
|
PlayToClientPacketWorldParticlesData, ok := ret.Data.(struct {
|
||||||
|
BlockState int32
|
||||||
|
})
|
||||||
|
if !ok {
|
||||||
|
err = proto_base.BadTypeError
|
||||||
|
return
|
||||||
|
}
|
||||||
|
err = proto_base.EncodeVarInt(w, PlayToClientPacketWorldParticlesData.BlockState)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
case 34:
|
||||||
|
PlayToClientPacketWorldParticlesData, ok := ret.Data.(struct {
|
||||||
|
Item Slot
|
||||||
|
})
|
||||||
|
if !ok {
|
||||||
|
err = proto_base.BadTypeError
|
||||||
|
return
|
||||||
|
}
|
||||||
|
PlayToClientPacketWorldParticlesDataItemEncTmp := PlayToClientPacketWorldParticlesData.Item
|
||||||
|
err = PlayToClientPacketWorldParticlesDataItemEncTmp.Encode(w)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
_, ok := ret.Data.(struct {
|
||||||
|
})
|
||||||
|
if !ok {
|
||||||
|
err = proto_base.BadTypeError
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
// Code generated by strom. DO NOT EDIT.
|
// Code generated by strom. DO NOT EDIT.
|
||||||
// source: minecraft-data/pc/1.21.11/protocol.json (sha256:97d2726cce3a39cc967a954f27f4ebf029ec3f0f655bb21942aab8745d13cdab)
|
// source: minecraft-data/pc/1.21.11/protocol.json (sha256:97d2726cce3a39cc967a954f27f4ebf029ec3f0f655bb21942aab8745d13cdab)
|
||||||
// version: (devel) (go1.26.2)
|
// version: v0.6.6-0.20260805154326-fa70ea36c6f5+dirty (go1.26.2)
|
||||||
package v1_21_11
|
package v1_21_11
|
||||||
|
|
||||||
import (
|
import (
|
||||||
@@ -22085,7 +22085,7 @@ func (ret *PlayToClientPacketTrackedWaypoint) Decode(r io.ReadSeeker) (err error
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
switch ret.Waypoint.Type {
|
switch ret.Waypoint.Anon {
|
||||||
case "azimuth":
|
case "azimuth":
|
||||||
var PlayToClientPacketTrackedWaypointWaypointDataAzimuthTmp float32
|
var PlayToClientPacketTrackedWaypointWaypointDataAzimuthTmp float32
|
||||||
err = binary.Read(r, binary.BigEndian, &PlayToClientPacketTrackedWaypointWaypointDataAzimuthTmp)
|
err = binary.Read(r, binary.BigEndian, &PlayToClientPacketTrackedWaypointWaypointDataAzimuthTmp)
|
||||||
@@ -22192,7 +22192,7 @@ func (ret *PlayToClientPacketTrackedWaypoint) Encode(w io.Writer) (err error) {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
switch ret.Waypoint.Type {
|
switch ret.Waypoint.Anon {
|
||||||
case "azimuth":
|
case "azimuth":
|
||||||
PlayToClientPacketTrackedWaypointWaypointData, ok := ret.Waypoint.Data.(float32)
|
PlayToClientPacketTrackedWaypointWaypointData, ok := ret.Waypoint.Data.(float32)
|
||||||
if !ok {
|
if !ok {
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
// Code generated by strom. DO NOT EDIT.
|
// Code generated by strom. DO NOT EDIT.
|
||||||
// source: minecraft-data/pc/1.21.8/protocol.json (sha256:930fbb4c69fd2ecadddcee3c38d3f02908adc23b54b707cb21112e7ab1e9dba1)
|
// source: minecraft-data/pc/1.21.8/protocol.json (sha256:930fbb4c69fd2ecadddcee3c38d3f02908adc23b54b707cb21112e7ab1e9dba1)
|
||||||
// version: (devel) (go1.26.2)
|
// version: v0.6.6-0.20260805154326-fa70ea36c6f5+dirty (go1.26.2)
|
||||||
package v1_21_8
|
package v1_21_8
|
||||||
|
|
||||||
import (
|
import (
|
||||||
@@ -20500,7 +20500,7 @@ func (ret *PlayToClientPacketTrackedWaypoint) Decode(r io.ReadSeeker) (err error
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
switch ret.Waypoint.Type {
|
switch ret.Waypoint.Anon {
|
||||||
case "azimuth":
|
case "azimuth":
|
||||||
var PlayToClientPacketTrackedWaypointWaypointDataAzimuthTmp float32
|
var PlayToClientPacketTrackedWaypointWaypointDataAzimuthTmp float32
|
||||||
err = binary.Read(r, binary.BigEndian, &PlayToClientPacketTrackedWaypointWaypointDataAzimuthTmp)
|
err = binary.Read(r, binary.BigEndian, &PlayToClientPacketTrackedWaypointWaypointDataAzimuthTmp)
|
||||||
@@ -20607,7 +20607,7 @@ func (ret *PlayToClientPacketTrackedWaypoint) Encode(w io.Writer) (err error) {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
switch ret.Waypoint.Type {
|
switch ret.Waypoint.Anon {
|
||||||
case "azimuth":
|
case "azimuth":
|
||||||
PlayToClientPacketTrackedWaypointWaypointData, ok := ret.Waypoint.Data.(float32)
|
PlayToClientPacketTrackedWaypointWaypointData, ok := ret.Waypoint.Data.(float32)
|
||||||
if !ok {
|
if !ok {
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
// Code generated by strom. DO NOT EDIT.
|
// Code generated by strom. DO NOT EDIT.
|
||||||
// source: minecraft-data/pc/1.21.9/protocol.json (sha256:9861cee397931c678c3b1837dcdf82e3fc885442c6bd0e4a60522fbf26653e59)
|
// source: minecraft-data/pc/1.21.9/protocol.json (sha256:9861cee397931c678c3b1837dcdf82e3fc885442c6bd0e4a60522fbf26653e59)
|
||||||
// version: (devel) (go1.26.2)
|
// version: v0.6.6-0.20260805154326-fa70ea36c6f5+dirty (go1.26.2)
|
||||||
package v1_21_9
|
package v1_21_9
|
||||||
|
|
||||||
import (
|
import (
|
||||||
@@ -21908,7 +21908,7 @@ func (ret *PlayToClientPacketTrackedWaypoint) Decode(r io.ReadSeeker) (err error
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
switch ret.Waypoint.Type {
|
switch ret.Waypoint.Anon {
|
||||||
case "azimuth":
|
case "azimuth":
|
||||||
var PlayToClientPacketTrackedWaypointWaypointDataAzimuthTmp float32
|
var PlayToClientPacketTrackedWaypointWaypointDataAzimuthTmp float32
|
||||||
err = binary.Read(r, binary.BigEndian, &PlayToClientPacketTrackedWaypointWaypointDataAzimuthTmp)
|
err = binary.Read(r, binary.BigEndian, &PlayToClientPacketTrackedWaypointWaypointDataAzimuthTmp)
|
||||||
@@ -22015,7 +22015,7 @@ func (ret *PlayToClientPacketTrackedWaypoint) Encode(w io.Writer) (err error) {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
switch ret.Waypoint.Type {
|
switch ret.Waypoint.Anon {
|
||||||
case "azimuth":
|
case "azimuth":
|
||||||
PlayToClientPacketTrackedWaypointWaypointData, ok := ret.Waypoint.Data.(float32)
|
PlayToClientPacketTrackedWaypointWaypointData, ok := ret.Waypoint.Data.(float32)
|
||||||
if !ok {
|
if !ok {
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
// Code generated by strom. DO NOT EDIT.
|
// Code generated by strom. DO NOT EDIT.
|
||||||
// source: minecraft-data/pc/1.8/protocol.json (sha256:79fe774bfc255dd281899c004fbb9c7adc40fb107de9353da1dd0371ea4b53af)
|
// source: minecraft-data/pc/1.8/protocol.json (sha256:79fe774bfc255dd281899c004fbb9c7adc40fb107de9353da1dd0371ea4b53af)
|
||||||
// version: (devel) (go1.26.2)
|
// version: v0.6.6-0.20260805154326-fa70ea36c6f5+dirty (go1.26.2)
|
||||||
package v1_8
|
package v1_8
|
||||||
|
|
||||||
import (
|
import (
|
||||||
@@ -45,7 +45,7 @@ type EntityMetadata struct {
|
|||||||
Type uint8
|
Type uint8
|
||||||
Key uint8
|
Key uint8
|
||||||
}
|
}
|
||||||
Value EntityMetadataItem
|
Value any
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -55,7 +55,7 @@ func (ret *EntityMetadata) Decode(r io.ReadSeeker) (err error) {
|
|||||||
Type uint8
|
Type uint8
|
||||||
Key uint8
|
Key uint8
|
||||||
}
|
}
|
||||||
Value EntityMetadataItem
|
Value any
|
||||||
})
|
})
|
||||||
var id uint8
|
var id uint8
|
||||||
for {
|
for {
|
||||||
@@ -75,7 +75,7 @@ func (ret *EntityMetadata) Decode(r io.ReadSeeker) (err error) {
|
|||||||
Type uint8
|
Type uint8
|
||||||
Key uint8
|
Key uint8
|
||||||
}
|
}
|
||||||
Value EntityMetadataItem
|
Value any
|
||||||
}
|
}
|
||||||
var EntityMetadataInnerAnonPacked uint8
|
var EntityMetadataInnerAnonPacked uint8
|
||||||
err = binary.Read(r, binary.BigEndian, &EntityMetadataInnerAnonPacked)
|
err = binary.Read(r, binary.BigEndian, &EntityMetadataInnerAnonPacked)
|
||||||
@@ -84,10 +84,6 @@ func (ret *EntityMetadata) Decode(r io.ReadSeeker) (err error) {
|
|||||||
}
|
}
|
||||||
entry.Anon.Type = EntityMetadataInnerAnonPacked << 0 >> 5
|
entry.Anon.Type = EntityMetadataInnerAnonPacked << 0 >> 5
|
||||||
entry.Anon.Key = EntityMetadataInnerAnonPacked << 3 >> 3
|
entry.Anon.Key = EntityMetadataInnerAnonPacked << 3 >> 3
|
||||||
err = entry.Value.Decode(r)
|
|
||||||
if err != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
ret.Val[id] = entry
|
ret.Val[id] = entry
|
||||||
}
|
}
|
||||||
return
|
return
|
||||||
@@ -101,11 +97,6 @@ func (ret *EntityMetadata) Encode(w io.Writer) (err error) {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
EntityMetadataValueEncTmp := v.Value
|
|
||||||
err = EntityMetadataValueEncTmp.Encode(w)
|
|
||||||
if err != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
err = binary.Write(w, binary.BigEndian, uint8(127))
|
err = binary.Write(w, binary.BigEndian, uint8(127))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -7105,11 +7096,182 @@ type PlayToClientPacketWorldParticles struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (ret *PlayToClientPacketWorldParticles) Decode(r io.ReadSeeker) (err error) {
|
func (ret *PlayToClientPacketWorldParticles) Decode(r io.ReadSeeker) (err error) {
|
||||||
err = proto_base.ToDoError
|
err = binary.Read(r, binary.BigEndian, &ret.ParticleId)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
err = binary.Read(r, binary.BigEndian, &ret.LongDistance)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
err = binary.Read(r, binary.BigEndian, &ret.X)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
err = binary.Read(r, binary.BigEndian, &ret.Y)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
err = binary.Read(r, binary.BigEndian, &ret.Z)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
err = binary.Read(r, binary.BigEndian, &ret.OffsetX)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
err = binary.Read(r, binary.BigEndian, &ret.OffsetY)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
err = binary.Read(r, binary.BigEndian, &ret.OffsetZ)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
err = binary.Read(r, binary.BigEndian, &ret.ParticleData)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
err = binary.Read(r, binary.BigEndian, &ret.Particles)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
switch ret.ParticleId {
|
||||||
|
case 36:
|
||||||
|
var PlayToClientPacketWorldParticlesData36Tmp []int32
|
||||||
|
var lPlayToClientPacketWorldParticlesData36Tmp int32
|
||||||
|
lPlayToClientPacketWorldParticlesData36Tmp = 2
|
||||||
|
PlayToClientPacketWorldParticlesData36Tmp = []int32{}
|
||||||
|
for range lPlayToClientPacketWorldParticlesData36Tmp {
|
||||||
|
var PlayToClientPacketWorldParticlesData36TmpElement int32
|
||||||
|
PlayToClientPacketWorldParticlesData36TmpElement, err = proto_base.DecodeVarInt(r)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
PlayToClientPacketWorldParticlesData36Tmp = append(PlayToClientPacketWorldParticlesData36Tmp, PlayToClientPacketWorldParticlesData36TmpElement)
|
||||||
|
}
|
||||||
|
ret.Data = PlayToClientPacketWorldParticlesData36Tmp
|
||||||
|
case 37:
|
||||||
|
var PlayToClientPacketWorldParticlesData37Tmp []int32
|
||||||
|
var lPlayToClientPacketWorldParticlesData37Tmp int32
|
||||||
|
lPlayToClientPacketWorldParticlesData37Tmp = 1
|
||||||
|
PlayToClientPacketWorldParticlesData37Tmp = []int32{}
|
||||||
|
for range lPlayToClientPacketWorldParticlesData37Tmp {
|
||||||
|
var PlayToClientPacketWorldParticlesData37TmpElement int32
|
||||||
|
PlayToClientPacketWorldParticlesData37TmpElement, err = proto_base.DecodeVarInt(r)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
PlayToClientPacketWorldParticlesData37Tmp = append(PlayToClientPacketWorldParticlesData37Tmp, PlayToClientPacketWorldParticlesData37TmpElement)
|
||||||
|
}
|
||||||
|
ret.Data = PlayToClientPacketWorldParticlesData37Tmp
|
||||||
|
case 38:
|
||||||
|
var PlayToClientPacketWorldParticlesData38Tmp []int32
|
||||||
|
var lPlayToClientPacketWorldParticlesData38Tmp int32
|
||||||
|
lPlayToClientPacketWorldParticlesData38Tmp = 1
|
||||||
|
PlayToClientPacketWorldParticlesData38Tmp = []int32{}
|
||||||
|
for range lPlayToClientPacketWorldParticlesData38Tmp {
|
||||||
|
var PlayToClientPacketWorldParticlesData38TmpElement int32
|
||||||
|
PlayToClientPacketWorldParticlesData38TmpElement, err = proto_base.DecodeVarInt(r)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
PlayToClientPacketWorldParticlesData38Tmp = append(PlayToClientPacketWorldParticlesData38Tmp, PlayToClientPacketWorldParticlesData38TmpElement)
|
||||||
|
}
|
||||||
|
ret.Data = PlayToClientPacketWorldParticlesData38Tmp
|
||||||
|
default:
|
||||||
|
var PlayToClientPacketWorldParticlesDataTmp struct {
|
||||||
|
}
|
||||||
|
ret.Data = PlayToClientPacketWorldParticlesDataTmp
|
||||||
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
func (ret *PlayToClientPacketWorldParticles) Encode(w io.Writer) (err error) {
|
func (ret *PlayToClientPacketWorldParticles) Encode(w io.Writer) (err error) {
|
||||||
err = proto_base.ToDoError
|
err = binary.Write(w, binary.BigEndian, ret.ParticleId)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
err = binary.Write(w, binary.BigEndian, ret.LongDistance)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
err = binary.Write(w, binary.BigEndian, ret.X)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
err = binary.Write(w, binary.BigEndian, ret.Y)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
err = binary.Write(w, binary.BigEndian, ret.Z)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
err = binary.Write(w, binary.BigEndian, ret.OffsetX)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
err = binary.Write(w, binary.BigEndian, ret.OffsetY)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
err = binary.Write(w, binary.BigEndian, ret.OffsetZ)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
err = binary.Write(w, binary.BigEndian, ret.ParticleData)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
err = binary.Write(w, binary.BigEndian, ret.Particles)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
switch ret.ParticleId {
|
||||||
|
case 36:
|
||||||
|
PlayToClientPacketWorldParticlesData, ok := ret.Data.([]int32)
|
||||||
|
if !ok {
|
||||||
|
err = proto_base.BadTypeError
|
||||||
|
return
|
||||||
|
}
|
||||||
|
for iPlayToClientPacketWorldParticlesData := range len(PlayToClientPacketWorldParticlesData) {
|
||||||
|
err = proto_base.EncodeVarInt(w, PlayToClientPacketWorldParticlesData[iPlayToClientPacketWorldParticlesData])
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
case 37:
|
||||||
|
PlayToClientPacketWorldParticlesData, ok := ret.Data.([]int32)
|
||||||
|
if !ok {
|
||||||
|
err = proto_base.BadTypeError
|
||||||
|
return
|
||||||
|
}
|
||||||
|
for iPlayToClientPacketWorldParticlesData := range len(PlayToClientPacketWorldParticlesData) {
|
||||||
|
err = proto_base.EncodeVarInt(w, PlayToClientPacketWorldParticlesData[iPlayToClientPacketWorldParticlesData])
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
case 38:
|
||||||
|
PlayToClientPacketWorldParticlesData, ok := ret.Data.([]int32)
|
||||||
|
if !ok {
|
||||||
|
err = proto_base.BadTypeError
|
||||||
|
return
|
||||||
|
}
|
||||||
|
for iPlayToClientPacketWorldParticlesData := range len(PlayToClientPacketWorldParticlesData) {
|
||||||
|
err = proto_base.EncodeVarInt(w, PlayToClientPacketWorldParticlesData[iPlayToClientPacketWorldParticlesData])
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
_, ok := ret.Data.(struct {
|
||||||
|
})
|
||||||
|
if !ok {
|
||||||
|
err = proto_base.BadTypeError
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
// Code generated by strom. DO NOT EDIT.
|
// Code generated by strom. DO NOT EDIT.
|
||||||
// source: minecraft-data/pc/26.1/protocol.json (sha256:dfb6318886cd3ceab617f75ac05e24f9836a64501d60551071289b904ebfc389)
|
// source: minecraft-data/pc/26.1/protocol.json (sha256:dfb6318886cd3ceab617f75ac05e24f9836a64501d60551071289b904ebfc389)
|
||||||
// version: (devel) (go1.26.2)
|
// version: v0.6.6-0.20260805154326-fa70ea36c6f5+dirty (go1.26.2)
|
||||||
package v26_1
|
package v26_1
|
||||||
|
|
||||||
import (
|
import (
|
||||||
@@ -22183,7 +22183,7 @@ func (ret *PlayToClientPacketTrackedWaypoint) Decode(r io.ReadSeeker) (err error
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
switch ret.Waypoint.Type {
|
switch ret.Waypoint.Anon {
|
||||||
case "azimuth":
|
case "azimuth":
|
||||||
var PlayToClientPacketTrackedWaypointWaypointDataAzimuthTmp float32
|
var PlayToClientPacketTrackedWaypointWaypointDataAzimuthTmp float32
|
||||||
err = binary.Read(r, binary.BigEndian, &PlayToClientPacketTrackedWaypointWaypointDataAzimuthTmp)
|
err = binary.Read(r, binary.BigEndian, &PlayToClientPacketTrackedWaypointWaypointDataAzimuthTmp)
|
||||||
@@ -22290,7 +22290,7 @@ func (ret *PlayToClientPacketTrackedWaypoint) Encode(w io.Writer) (err error) {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
switch ret.Waypoint.Type {
|
switch ret.Waypoint.Anon {
|
||||||
case "azimuth":
|
case "azimuth":
|
||||||
PlayToClientPacketTrackedWaypointWaypointData, ok := ret.Waypoint.Data.(float32)
|
PlayToClientPacketTrackedWaypointWaypointData, ok := ret.Waypoint.Data.(float32)
|
||||||
if !ok {
|
if !ok {
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
// Code generated by strom. DO NOT EDIT.
|
// Code generated by strom. DO NOT EDIT.
|
||||||
// source: minecraft-data/pc/26.2/protocol.json (sha256:7ba66411adcc68a668f38211e1b00eeb386a345d5eb16fadd6dc1c7f94bb175f)
|
// source: minecraft-data/pc/26.2/protocol.json (sha256:7ba66411adcc68a668f38211e1b00eeb386a345d5eb16fadd6dc1c7f94bb175f)
|
||||||
// version: (devel) (go1.26.2)
|
// version: v0.6.6-0.20260805154326-fa70ea36c6f5+dirty (go1.26.2)
|
||||||
package v26_2
|
package v26_2
|
||||||
|
|
||||||
import (
|
import (
|
||||||
@@ -22192,7 +22192,7 @@ func (ret *PlayToClientPacketTrackedWaypoint) Decode(r io.ReadSeeker) (err error
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
switch ret.Waypoint.Type {
|
switch ret.Waypoint.Anon {
|
||||||
case "azimuth":
|
case "azimuth":
|
||||||
var PlayToClientPacketTrackedWaypointWaypointDataAzimuthTmp float32
|
var PlayToClientPacketTrackedWaypointWaypointDataAzimuthTmp float32
|
||||||
err = binary.Read(r, binary.BigEndian, &PlayToClientPacketTrackedWaypointWaypointDataAzimuthTmp)
|
err = binary.Read(r, binary.BigEndian, &PlayToClientPacketTrackedWaypointWaypointDataAzimuthTmp)
|
||||||
@@ -22299,7 +22299,7 @@ func (ret *PlayToClientPacketTrackedWaypoint) Encode(w io.Writer) (err error) {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
switch ret.Waypoint.Type {
|
switch ret.Waypoint.Anon {
|
||||||
case "azimuth":
|
case "azimuth":
|
||||||
PlayToClientPacketTrackedWaypointWaypointData, ok := ret.Waypoint.Data.(float32)
|
PlayToClientPacketTrackedWaypointWaypointData, ok := ret.Waypoint.Data.(float32)
|
||||||
if !ok {
|
if !ok {
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ import (
|
|||||||
"go/ast"
|
"go/ast"
|
||||||
"go/token"
|
"go/token"
|
||||||
"io"
|
"io"
|
||||||
|
"maps"
|
||||||
"os"
|
"os"
|
||||||
"runtime/debug"
|
"runtime/debug"
|
||||||
"slices"
|
"slices"
|
||||||
@@ -56,6 +57,7 @@ type Generator struct {
|
|||||||
EncoderNatives map[string]FunctionGeneratorFunc
|
EncoderNatives map[string]FunctionGeneratorFunc
|
||||||
CompareToNatives map[string]CompareToGeneratorFunc
|
CompareToNatives map[string]CompareToGeneratorFunc
|
||||||
Protocol Protocol
|
Protocol Protocol
|
||||||
|
RawTypes map[string]map[string]any
|
||||||
File *ast.File
|
File *ast.File
|
||||||
|
|
||||||
// These persist in the current GenerateType call
|
// These persist in the current GenerateType call
|
||||||
@@ -129,6 +131,11 @@ func (g *Generator) VisitNameAndData(tName string, tData any) (e ast.Expr, err e
|
|||||||
}
|
}
|
||||||
t, found := g.Protocol.Types.Types[tName]
|
t, found := g.Protocol.Types.Types[tName]
|
||||||
if t != "native" && found {
|
if t != "native" && found {
|
||||||
|
if tData != nil {
|
||||||
|
if _, ok := g.mergeCompareTo(tName, t, tData); ok {
|
||||||
|
return Ident("any"), nil
|
||||||
|
}
|
||||||
|
}
|
||||||
return Ident(util2.CamelCase(tName)), nil
|
return Ident(util2.CamelCase(tName)), nil
|
||||||
}
|
}
|
||||||
t, found = g.CurrentlyGeneratingTypes.Types[tName]
|
t, found = g.CurrentlyGeneratingTypes.Types[tName]
|
||||||
@@ -152,6 +159,14 @@ func (g *Generator) VisitDecoder(varToSet ast.Expr, data any, name string) (e []
|
|||||||
if found {
|
if found {
|
||||||
return d(g, varToSet, tData, name)
|
return d(g, varToSet, tData, name)
|
||||||
}
|
}
|
||||||
|
if tData != nil {
|
||||||
|
if merged, ok := g.mergeCompareTo(tName, g.Protocol.Types.Types[tName], tData); ok {
|
||||||
|
s, found := g.DecoderNatives[merged.tName]
|
||||||
|
if found {
|
||||||
|
return s(g, varToSet, merged.data, name)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
t, found := g.Protocol.Types.Types[tName]
|
t, found := g.Protocol.Types.Types[tName]
|
||||||
if t == "native" {
|
if t == "native" {
|
||||||
err = fmt.Errorf("decoder native not implemented %v", tName)
|
err = fmt.Errorf("decoder native not implemented %v", tName)
|
||||||
@@ -160,6 +175,55 @@ func (g *Generator) VisitDecoder(varToSet ast.Expr, data any, name string) (e []
|
|||||||
return DefaultDecoder(g, varToSet, tData, name)
|
return DefaultDecoder(g, varToSet, tData, name)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type mergedType struct {
|
||||||
|
tName string
|
||||||
|
data any
|
||||||
|
}
|
||||||
|
|
||||||
|
func (g *Generator) mergeCompareTo(tName string, t any, overrideData any) (mergedType, bool) {
|
||||||
|
overrideMap, ok := overrideData.(map[string]any)
|
||||||
|
if !ok {
|
||||||
|
return mergedType{}, false
|
||||||
|
}
|
||||||
|
overrideCompareTo, hasOverride := overrideMap["compareTo"]
|
||||||
|
if !hasOverride {
|
||||||
|
return mergedType{}, false
|
||||||
|
}
|
||||||
|
if s, ok := overrideCompareTo.(string); ok && strings.HasPrefix(s, "$") {
|
||||||
|
return mergedType{}, false
|
||||||
|
}
|
||||||
|
var typeMap map[string]any
|
||||||
|
var nativeName string
|
||||||
|
if m, ok := t.(map[string]any); ok {
|
||||||
|
typeMap = m
|
||||||
|
nativeName = "container"
|
||||||
|
} else if a, ok := t.([]any); ok && len(a) >= 2 {
|
||||||
|
if m, ok := a[1].(map[string]any); ok {
|
||||||
|
typeMap = m
|
||||||
|
}
|
||||||
|
if s, ok := a[0].(string); ok {
|
||||||
|
nativeName = s
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
m, ok := g.RawTypes[tName]
|
||||||
|
if !ok {
|
||||||
|
return mergedType{}, false
|
||||||
|
}
|
||||||
|
typeMap = m
|
||||||
|
nativeName = "switch"
|
||||||
|
}
|
||||||
|
typeCompareTo, hasType := typeMap["compareTo"]
|
||||||
|
if !hasType {
|
||||||
|
return mergedType{}, false
|
||||||
|
}
|
||||||
|
if s, ok := typeCompareTo.(string); !ok || !strings.HasPrefix(s, "$") {
|
||||||
|
return mergedType{}, false
|
||||||
|
}
|
||||||
|
merged := maps.Clone(typeMap)
|
||||||
|
merged["compareTo"] = overrideCompareTo
|
||||||
|
return mergedType{tName: nativeName, data: merged}, true
|
||||||
|
}
|
||||||
|
|
||||||
func (g *Generator) VisitEncoder(varToSet ast.Expr, data any, name string) (e []ast.Stmt, err error) {
|
func (g *Generator) VisitEncoder(varToSet ast.Expr, data any, name string) (e []ast.Stmt, err error) {
|
||||||
g.Depth += 1
|
g.Depth += 1
|
||||||
defer func() { g.Depth -= 1 }()
|
defer func() { g.Depth -= 1 }()
|
||||||
@@ -172,6 +236,14 @@ func (g *Generator) VisitEncoder(varToSet ast.Expr, data any, name string) (e []
|
|||||||
if found {
|
if found {
|
||||||
return d(g, varToSet, tData, name)
|
return d(g, varToSet, tData, name)
|
||||||
}
|
}
|
||||||
|
if tData != nil {
|
||||||
|
if merged, ok := g.mergeCompareTo(tName, g.Protocol.Types.Types[tName], tData); ok {
|
||||||
|
s, found := g.EncoderNatives[merged.tName]
|
||||||
|
if found {
|
||||||
|
return s(g, varToSet, merged.data, name)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
t, found := g.Protocol.Types.Types[tName]
|
t, found := g.Protocol.Types.Types[tName]
|
||||||
if t == "native" {
|
if t == "native" {
|
||||||
err = fmt.Errorf("encoder native not implemented %v", tName)
|
err = fmt.Errorf("encoder native not implemented %v", tName)
|
||||||
@@ -357,6 +429,20 @@ func Generate(version string, w io.Writer, sourceHash string) (packetInfos []Pac
|
|||||||
|
|
||||||
g := &Generator{Protocol: protocol}
|
g := &Generator{Protocol: protocol}
|
||||||
|
|
||||||
|
g.RawTypes = make(map[string]map[string]any)
|
||||||
|
for k, v := range protocol.Types.Types {
|
||||||
|
if m, ok := v.(map[string]any); ok {
|
||||||
|
g.RawTypes[k] = m
|
||||||
|
}
|
||||||
|
if a, ok := v.([]any); ok && len(a) == 2 {
|
||||||
|
if m, ok := a[1].(map[string]any); ok {
|
||||||
|
if _, has := m["fields"]; has {
|
||||||
|
g.RawTypes[k] = m
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
g.File = NewFile("v" + strings.ReplaceAll(version, ".", "_"))
|
g.File = NewFile("v" + strings.ReplaceAll(version, ".", "_"))
|
||||||
|
|
||||||
// Add file header comment for IDE recognition and reproducibility
|
// Add file header comment for IDE recognition and reproducibility
|
||||||
|
|||||||
@@ -59,6 +59,13 @@ func ContainerCompareTo(g *Generator, parts []string, inExpr ast.Expr, dataRaw a
|
|||||||
if field.Name == name {
|
if field.Name == name {
|
||||||
return g.VisitCompareTo(parts, SelectorExprAndStr(inExpr, util2.CamelCase(field.Name)), field.Type)
|
return g.VisitCompareTo(parts, SelectorExprAndStr(inExpr, util2.CamelCase(field.Name)), field.Type)
|
||||||
}
|
}
|
||||||
|
if field.Anon {
|
||||||
|
anonParts := append([]string{name}, parts...)
|
||||||
|
e, cet, err2 := g.VisitCompareTo(anonParts, SelectorExprAndStr(inExpr, "Anon"), field.Type)
|
||||||
|
if err2 == nil {
|
||||||
|
return e, cet, nil
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
err = errors.New("field not found")
|
err = errors.New("field not found")
|
||||||
return
|
return
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"fmt"
|
||||||
"go/ast"
|
"go/ast"
|
||||||
"go/token"
|
"go/token"
|
||||||
"slices"
|
"slices"
|
||||||
@@ -124,13 +125,14 @@ func ArrayDecoder(g *Generator, varToSet ast.Expr, dataRaw any, name string) (s
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
countStr := fmt.Sprint(data.Count)
|
||||||
var n int
|
var n int
|
||||||
n, err = strconv.Atoi(data.Count)
|
n, err = strconv.Atoi(countStr)
|
||||||
var e ast.Expr
|
var e ast.Expr
|
||||||
if err == nil {
|
if err == nil {
|
||||||
e = NumLit(n)
|
e = NumLit(n)
|
||||||
} else {
|
} else {
|
||||||
e, _, err = g.ParseCompareTo(data.Count)
|
e, _, err = g.ParseCompareTo(countStr)
|
||||||
}
|
}
|
||||||
s2 = append(s2, Assign121(Ident(lName), e))
|
s2 = append(s2, Assign121(Ident(lName), e))
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -79,7 +79,7 @@ func ArrayEncoder(g *Generator, varToSet ast.Expr, dataRaw any, name string) (s
|
|||||||
iName := "i" + name
|
iName := "i" + name
|
||||||
//s, err = g.VisitEncoder(varToSet, data.Type, name)
|
//s, err = g.VisitEncoder(varToSet, data.Type, name)
|
||||||
var s1 []ast.Stmt
|
var s1 []ast.Stmt
|
||||||
if data.Count == "" {
|
if data.Count == nil {
|
||||||
s1, err = g.VisitEncoder(Call(ct, Call(Ident("len"), varToSet)), data.CountType, name)
|
s1, err = g.VisitEncoder(Call(ct, Call(Ident("len"), varToSet)), data.CountType, name)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return
|
return
|
||||||
|
|||||||
@@ -35,7 +35,7 @@ type (
|
|||||||
|
|
||||||
Array struct {
|
Array struct {
|
||||||
CountType any
|
CountType any
|
||||||
Count string
|
Count any
|
||||||
Type any
|
Type any
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user