fix: implement topBitSetTerminatedArray, fix nbt TAG_End, fix entity_equipment
- Implement topBitSetTerminatedArray decoder/encoder with MSB continuation - Fix nbt.Tag.Decode to handle TAG_End at root level (fixes 1.8 slot NBT) - Remove 228 now-passing decode failure tests, keep 10 still failing - EntityEquipment now works correctly across all versions
This commit is contained in:
+1
-1
@@ -1,4 +1,4 @@
|
||||
.devres/
|
||||
.idea/
|
||||
.failed_packets/
|
||||
.vscode/
|
||||
.vscode/proto_generator
|
||||
|
||||
@@ -1,18 +0,0 @@
|
||||
package failed_packets_test
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"testing"
|
||||
|
||||
generated "github.com/admin-else/strom/mc/proto_generated/v1_8"
|
||||
)
|
||||
|
||||
// Error: EOF
|
||||
func TestFailedPacket0C20C77EA68496BD(t *testing.T) {
|
||||
p := &generated.PlayToClientPacketEntityEquipment{}
|
||||
b := bytes.NewReader([]byte{0x89, 0x16, 0x0, 0x0, 0x1, 0x5, 0x1, 0x0, 0x0, 0x0})
|
||||
err := p.Decode(b)
|
||||
if err == nil {
|
||||
t.Fatalf("expected decode error but got nil")
|
||||
}
|
||||
}
|
||||
@@ -1,18 +0,0 @@
|
||||
package failed_packets_test
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"testing"
|
||||
|
||||
generated "github.com/admin-else/strom/mc/proto_generated/v1_8"
|
||||
)
|
||||
|
||||
// Error: EOF
|
||||
func TestFailedPacket28FE982CCA801F9B(t *testing.T) {
|
||||
p := &generated.PlayToClientPacketEntityEquipment{}
|
||||
b := bytes.NewReader([]byte{0xdc, 0x21, 0x0, 0x0, 0x1, 0x5, 0x1, 0x0, 0x0, 0x0})
|
||||
err := p.Decode(b)
|
||||
if err == nil {
|
||||
t.Fatalf("expected decode error but got nil")
|
||||
}
|
||||
}
|
||||
@@ -1,18 +0,0 @@
|
||||
package failed_packets_test
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"testing"
|
||||
|
||||
generated "github.com/admin-else/strom/mc/proto_generated/v1_8"
|
||||
)
|
||||
|
||||
// Error: EOF
|
||||
func TestFailedPacket49691467B3398296(t *testing.T) {
|
||||
p := &generated.PlayToClientPacketEntityEquipment{}
|
||||
b := bytes.NewReader([]byte{0x95, 0x1a, 0x0, 0x0, 0x1, 0x5, 0x1, 0x0, 0x0, 0x0})
|
||||
err := p.Decode(b)
|
||||
if err == nil {
|
||||
t.Fatalf("expected decode error but got nil")
|
||||
}
|
||||
}
|
||||
@@ -1,18 +0,0 @@
|
||||
package failed_packets_test
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"testing"
|
||||
|
||||
generated "github.com/admin-else/strom/mc/proto_generated/v1_8"
|
||||
)
|
||||
|
||||
// Error: EOF
|
||||
func TestFailedPacket5E9A356ECC3AA3FC(t *testing.T) {
|
||||
p := &generated.PlayToClientPacketEntityEquipment{}
|
||||
b := bytes.NewReader([]byte{0xdd, 0x21, 0x0, 0x0, 0x1, 0x5, 0x1, 0x0, 0x0, 0x0})
|
||||
err := p.Decode(b)
|
||||
if err == nil {
|
||||
t.Fatalf("expected decode error but got nil")
|
||||
}
|
||||
}
|
||||
@@ -1,18 +0,0 @@
|
||||
package failed_packets_test
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"testing"
|
||||
|
||||
generated "github.com/admin-else/strom/mc/proto_generated/v1_8"
|
||||
)
|
||||
|
||||
// Error: EOF
|
||||
func TestFailedPacket60B4CB3DC8DA7480(t *testing.T) {
|
||||
p := &generated.PlayToClientPacketEntityEquipment{}
|
||||
b := bytes.NewReader([]byte{0x8e, 0x1c, 0x0, 0x0, 0x1, 0x5, 0x1, 0x0, 0x0, 0x0})
|
||||
err := p.Decode(b)
|
||||
if err == nil {
|
||||
t.Fatalf("expected decode error but got nil")
|
||||
}
|
||||
}
|
||||
@@ -1,18 +0,0 @@
|
||||
package failed_packets_test
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"testing"
|
||||
|
||||
generated "github.com/admin-else/strom/mc/proto_generated/v1_8"
|
||||
)
|
||||
|
||||
// Error: EOF
|
||||
func TestFailedPacket66F6FC8839ACD758(t *testing.T) {
|
||||
p := &generated.PlayToClientPacketEntityEquipment{}
|
||||
b := bytes.NewReader([]byte{0xcf, 0x1d, 0x0, 0x0, 0x1, 0x5, 0x1, 0x0, 0x0, 0x0})
|
||||
err := p.Decode(b)
|
||||
if err == nil {
|
||||
t.Fatalf("expected decode error but got nil")
|
||||
}
|
||||
}
|
||||
@@ -1,18 +0,0 @@
|
||||
package failed_packets_test
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"testing"
|
||||
|
||||
generated "github.com/admin-else/strom/mc/proto_generated/v1_8"
|
||||
)
|
||||
|
||||
// Error: EOF
|
||||
func TestFailedPacket671AD113155624DD(t *testing.T) {
|
||||
p := &generated.PlayToClientPacketEntityEquipment{}
|
||||
b := bytes.NewReader([]byte{0xc5, 0x1e, 0x0, 0x0, 0x1, 0x5, 0x1, 0x0, 0x0, 0x0})
|
||||
err := p.Decode(b)
|
||||
if err == nil {
|
||||
t.Fatalf("expected decode error but got nil")
|
||||
}
|
||||
}
|
||||
@@ -1,18 +0,0 @@
|
||||
package failed_packets_test
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"testing"
|
||||
|
||||
generated "github.com/admin-else/strom/mc/proto_generated/v1_8"
|
||||
)
|
||||
|
||||
// Error: EOF
|
||||
func TestFailedPacket9489CFFF676ABE59(t *testing.T) {
|
||||
p := &generated.PlayToClientPacketEntityEquipment{}
|
||||
b := bytes.NewReader([]byte{0xce, 0x17, 0x0, 0x0, 0x1, 0x5, 0x1, 0x0, 0x0, 0x0})
|
||||
err := p.Decode(b)
|
||||
if err == nil {
|
||||
t.Fatalf("expected decode error but got nil")
|
||||
}
|
||||
}
|
||||
@@ -1,18 +0,0 @@
|
||||
package failed_packets_test
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"testing"
|
||||
|
||||
generated "github.com/admin-else/strom/mc/proto_generated/v1_8"
|
||||
)
|
||||
|
||||
// Error: EOF
|
||||
func TestFailedPacketA7AD1D229B209443(t *testing.T) {
|
||||
p := &generated.PlayToClientPacketEntityEquipment{}
|
||||
b := bytes.NewReader([]byte{0xdb, 0x21, 0x0, 0x0, 0x1, 0x5, 0x1, 0x0, 0x0, 0x0})
|
||||
err := p.Decode(b)
|
||||
if err == nil {
|
||||
t.Fatalf("expected decode error but got nil")
|
||||
}
|
||||
}
|
||||
@@ -1,18 +0,0 @@
|
||||
package failed_packets_test
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"testing"
|
||||
|
||||
generated "github.com/admin-else/strom/mc/proto_generated/v1_8"
|
||||
)
|
||||
|
||||
// Error: EOF
|
||||
func TestFailedPacketD529D00D0DC17F72(t *testing.T) {
|
||||
p := &generated.PlayToClientPacketEntityEquipment{}
|
||||
b := bytes.NewReader([]byte{0xe3, 0x15, 0x0, 0x0, 0x1, 0x5, 0x1, 0x0, 0x0, 0x0})
|
||||
err := p.Decode(b)
|
||||
if err == nil {
|
||||
t.Fatalf("expected decode error but got nil")
|
||||
}
|
||||
}
|
||||
@@ -1,18 +0,0 @@
|
||||
package failed_packets_test
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"testing"
|
||||
|
||||
generated "github.com/admin-else/strom/mc/proto_generated/v1_8"
|
||||
)
|
||||
|
||||
// Error: EOF
|
||||
func TestFailedPacketFEA550AB16196B04(t *testing.T) {
|
||||
p := &generated.PlayToClientPacketEntityEquipment{}
|
||||
b := bytes.NewReader([]byte{0x88, 0x16, 0x0, 0x0, 0x1, 0x5, 0x1, 0x0, 0x0, 0x0})
|
||||
err := p.Decode(b)
|
||||
if err == nil {
|
||||
t.Fatalf("expected decode error but got nil")
|
||||
}
|
||||
}
|
||||
@@ -1,18 +0,0 @@
|
||||
package failed_packets_test
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"testing"
|
||||
|
||||
generated "github.com/admin-else/strom/mc/proto_generated/v26_2"
|
||||
)
|
||||
|
||||
// Error: to do
|
||||
func TestFailedPacket1D0089BBE86A1648(t *testing.T) {
|
||||
p := &generated.PlayToClientPacketEntityEquipment{}
|
||||
b := bytes.NewReader([]byte{0x81, 0x2, 0x0, 0x1, 0x9a, 0x7, 0x0, 0x0})
|
||||
err := p.Decode(b)
|
||||
if err == nil {
|
||||
t.Fatalf("expected decode error but got nil")
|
||||
}
|
||||
}
|
||||
@@ -1,18 +0,0 @@
|
||||
package failed_packets_test
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"testing"
|
||||
|
||||
generated "github.com/admin-else/strom/mc/proto_generated/v26_2"
|
||||
)
|
||||
|
||||
// Error: to do
|
||||
func TestFailedPacket1DF29446152D96A8(t *testing.T) {
|
||||
p := &generated.PlayToClientPacketEntityEquipment{}
|
||||
b := bytes.NewReader([]byte{0xbd, 0x1, 0x0, 0x1, 0x9a, 0x7, 0x0, 0x0})
|
||||
err := p.Decode(b)
|
||||
if err == nil {
|
||||
t.Fatalf("expected decode error but got nil")
|
||||
}
|
||||
}
|
||||
@@ -1,18 +0,0 @@
|
||||
package failed_packets_test
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"testing"
|
||||
|
||||
generated "github.com/admin-else/strom/mc/proto_generated/v26_2"
|
||||
)
|
||||
|
||||
// Error: to do
|
||||
func TestFailedPacket202A6A9E047BE81D(t *testing.T) {
|
||||
p := &generated.PlayToClientPacketEntityEquipment{}
|
||||
b := bytes.NewReader([]byte{0xd6, 0x1, 0x0, 0x1, 0x9a, 0x7, 0x0, 0x0})
|
||||
err := p.Decode(b)
|
||||
if err == nil {
|
||||
t.Fatalf("expected decode error but got nil")
|
||||
}
|
||||
}
|
||||
@@ -1,18 +0,0 @@
|
||||
package failed_packets_test
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"testing"
|
||||
|
||||
generated "github.com/admin-else/strom/mc/proto_generated/v26_2"
|
||||
)
|
||||
|
||||
// Error: to do
|
||||
func TestFailedPacket26190593980A0FB9(t *testing.T) {
|
||||
p := &generated.PlayToClientPacketEntityEquipment{}
|
||||
b := bytes.NewReader([]byte{0xd3, 0x1, 0x0, 0x1, 0x9a, 0x7, 0x0, 0x0})
|
||||
err := p.Decode(b)
|
||||
if err == nil {
|
||||
t.Fatalf("expected decode error but got nil")
|
||||
}
|
||||
}
|
||||
@@ -1,18 +0,0 @@
|
||||
package failed_packets_test
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"testing"
|
||||
|
||||
generated "github.com/admin-else/strom/mc/proto_generated/v26_2"
|
||||
)
|
||||
|
||||
// Error: to do
|
||||
func TestFailedPacket565273F305C6AA41(t *testing.T) {
|
||||
p := &generated.PlayToClientPacketEntityEquipment{}
|
||||
b := bytes.NewReader([]byte{0xff, 0x1, 0x0, 0x1, 0x9a, 0x7, 0x0, 0x0})
|
||||
err := p.Decode(b)
|
||||
if err == nil {
|
||||
t.Fatalf("expected decode error but got nil")
|
||||
}
|
||||
}
|
||||
@@ -1,18 +0,0 @@
|
||||
package failed_packets_test
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"testing"
|
||||
|
||||
generated "github.com/admin-else/strom/mc/proto_generated/v26_2"
|
||||
)
|
||||
|
||||
// Error: to do
|
||||
func TestFailedPacket5F223B84B8E3B245(t *testing.T) {
|
||||
p := &generated.PlayToClientPacketEntityEquipment{}
|
||||
b := bytes.NewReader([]byte{0xdc, 0x1, 0x0, 0x1, 0x9a, 0x7, 0x0, 0x0})
|
||||
err := p.Decode(b)
|
||||
if err == nil {
|
||||
t.Fatalf("expected decode error but got nil")
|
||||
}
|
||||
}
|
||||
@@ -1,18 +0,0 @@
|
||||
package failed_packets_test
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"testing"
|
||||
|
||||
generated "github.com/admin-else/strom/mc/proto_generated/v26_2"
|
||||
)
|
||||
|
||||
// Error: to do
|
||||
func TestFailedPacket62AB3B7CA4199CC4(t *testing.T) {
|
||||
p := &generated.PlayToClientPacketEntityEquipment{}
|
||||
b := bytes.NewReader([]byte{0xf2, 0x1, 0x0, 0x1, 0x9a, 0x7, 0x0, 0x0})
|
||||
err := p.Decode(b)
|
||||
if err == nil {
|
||||
t.Fatalf("expected decode error but got nil")
|
||||
}
|
||||
}
|
||||
@@ -1,18 +0,0 @@
|
||||
package failed_packets_test
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"testing"
|
||||
|
||||
generated "github.com/admin-else/strom/mc/proto_generated/v26_2"
|
||||
)
|
||||
|
||||
// Error: to do
|
||||
func TestFailedPacketB2676FD8106C604A(t *testing.T) {
|
||||
p := &generated.PlayToClientPacketEntityEquipment{}
|
||||
b := bytes.NewReader([]byte{0x83, 0x2, 0x0, 0x1, 0x9a, 0x7, 0x0, 0x0})
|
||||
err := p.Decode(b)
|
||||
if err == nil {
|
||||
t.Fatalf("expected decode error but got nil")
|
||||
}
|
||||
}
|
||||
@@ -1,18 +0,0 @@
|
||||
package failed_packets_test
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"testing"
|
||||
|
||||
generated "github.com/admin-else/strom/mc/proto_generated/v26_2"
|
||||
)
|
||||
|
||||
// Error: to do
|
||||
func TestFailedPacketB3E03D743AA3FD86(t *testing.T) {
|
||||
p := &generated.PlayToClientPacketEntityEquipment{}
|
||||
b := bytes.NewReader([]byte{0xee, 0x1, 0x0, 0x1, 0x9a, 0x7, 0x0, 0x0})
|
||||
err := p.Decode(b)
|
||||
if err == nil {
|
||||
t.Fatalf("expected decode error but got nil")
|
||||
}
|
||||
}
|
||||
@@ -1,18 +0,0 @@
|
||||
package failed_packets_test
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"testing"
|
||||
|
||||
generated "github.com/admin-else/strom/mc/proto_generated/v26_2"
|
||||
)
|
||||
|
||||
// Error: to do
|
||||
func TestFailedPacketBB475636490A4F79(t *testing.T) {
|
||||
p := &generated.PlayToClientPacketEntityEquipment{}
|
||||
b := bytes.NewReader([]byte{0x89, 0x2, 0x0, 0x1, 0x9a, 0x7, 0x0, 0x0})
|
||||
err := p.Decode(b)
|
||||
if err == nil {
|
||||
t.Fatalf("expected decode error but got nil")
|
||||
}
|
||||
}
|
||||
@@ -1,18 +0,0 @@
|
||||
package failed_packets_test
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"testing"
|
||||
|
||||
generated "github.com/admin-else/strom/mc/proto_generated/v26_2"
|
||||
)
|
||||
|
||||
// Error: to do
|
||||
func TestFailedPacketBB9B39D9752D3412(t *testing.T) {
|
||||
p := &generated.PlayToClientPacketEntityEquipment{}
|
||||
b := bytes.NewReader([]byte{0x80, 0x2, 0x0, 0x1, 0x9a, 0x7, 0x0, 0x0})
|
||||
err := p.Decode(b)
|
||||
if err == nil {
|
||||
t.Fatalf("expected decode error but got nil")
|
||||
}
|
||||
}
|
||||
@@ -1,18 +0,0 @@
|
||||
package failed_packets_test
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"testing"
|
||||
|
||||
generated "github.com/admin-else/strom/mc/proto_generated/v26_2"
|
||||
)
|
||||
|
||||
// Error: to do
|
||||
func TestFailedPacketC737E804EE3D28B0(t *testing.T) {
|
||||
p := &generated.PlayToClientPacketEntityEquipment{}
|
||||
b := bytes.NewReader([]byte{0xe1, 0x1, 0x0, 0x1, 0x9a, 0x7, 0x0, 0x0})
|
||||
err := p.Decode(b)
|
||||
if err == nil {
|
||||
t.Fatalf("expected decode error but got nil")
|
||||
}
|
||||
}
|
||||
@@ -1,18 +0,0 @@
|
||||
package failed_packets_test
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"testing"
|
||||
|
||||
generated "github.com/admin-else/strom/mc/proto_generated/v26_2"
|
||||
)
|
||||
|
||||
// Error: to do
|
||||
func TestFailedPacketC7C463D62C4D25DE(t *testing.T) {
|
||||
p := &generated.PlayToClientPacketEntityEquipment{}
|
||||
b := bytes.NewReader([]byte{0xde, 0x1, 0x0, 0x1, 0x9a, 0x7, 0x0, 0x0})
|
||||
err := p.Decode(b)
|
||||
if err == nil {
|
||||
t.Fatalf("expected decode error but got nil")
|
||||
}
|
||||
}
|
||||
@@ -1,18 +0,0 @@
|
||||
package failed_packets_test
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"testing"
|
||||
|
||||
generated "github.com/admin-else/strom/mc/proto_generated/v26_2"
|
||||
)
|
||||
|
||||
// Error: to do
|
||||
func TestFailedPacketC9A0C7F85E913F13(t *testing.T) {
|
||||
p := &generated.PlayToClientPacketEntityEquipment{}
|
||||
b := bytes.NewReader([]byte{0x85, 0x2, 0x0, 0x1, 0x9a, 0x7, 0x0, 0x0})
|
||||
err := p.Decode(b)
|
||||
if err == nil {
|
||||
t.Fatalf("expected decode error but got nil")
|
||||
}
|
||||
}
|
||||
@@ -1,18 +0,0 @@
|
||||
package failed_packets_test
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"testing"
|
||||
|
||||
generated "github.com/admin-else/strom/mc/proto_generated/v26_2"
|
||||
)
|
||||
|
||||
// Error: to do
|
||||
func TestFailedPacketDC2AC767FF974DAD(t *testing.T) {
|
||||
p := &generated.PlayToClientPacketEntityEquipment{}
|
||||
b := bytes.NewReader([]byte{0x82, 0x2, 0x0, 0x1, 0x9a, 0x7, 0x0, 0x0})
|
||||
err := p.Decode(b)
|
||||
if err == nil {
|
||||
t.Fatalf("expected decode error but got nil")
|
||||
}
|
||||
}
|
||||
@@ -1,18 +0,0 @@
|
||||
package failed_packets_test
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"testing"
|
||||
|
||||
generated "github.com/admin-else/strom/mc/proto_generated/v26_2"
|
||||
)
|
||||
|
||||
// Error: to do
|
||||
func TestFailedPacketF23A07C39D21C5DC(t *testing.T) {
|
||||
p := &generated.PlayToClientPacketEntityEquipment{}
|
||||
b := bytes.NewReader([]byte{0xd5, 0x1, 0x0, 0x1, 0x9a, 0x7, 0x0, 0x0})
|
||||
err := p.Decode(b)
|
||||
if err == nil {
|
||||
t.Fatalf("expected decode error but got nil")
|
||||
}
|
||||
}
|
||||
@@ -1,18 +0,0 @@
|
||||
package failed_packets_test
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"testing"
|
||||
|
||||
generated "github.com/admin-else/strom/mc/proto_generated/v26_2"
|
||||
)
|
||||
|
||||
// Error: to do
|
||||
func TestFailedPacketF527D279CBEE95BB(t *testing.T) {
|
||||
p := &generated.PlayToClientPacketEntityEquipment{}
|
||||
b := bytes.NewReader([]byte{0xfe, 0x1, 0x0, 0x1, 0x9a, 0x7, 0x0, 0x0})
|
||||
err := p.Decode(b)
|
||||
if err == nil {
|
||||
t.Fatalf("expected decode error but got nil")
|
||||
}
|
||||
}
|
||||
@@ -68,6 +68,9 @@ func (s *Tag) Decode(r io.Reader) (err error) {
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
if id == End {
|
||||
return
|
||||
}
|
||||
var name any
|
||||
name, err = readPayload(String, r)
|
||||
if err != nil {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
// Code generated by strom. DO NOT EDIT.
|
||||
// source: minecraft-data/pc/1.12.2/protocol.json (sha256:21c57208db654a5e14a34cb696570080df179c5c642e53b16120399eee9232be)
|
||||
// version: v0.6.6-0.20260805154326-fa70ea36c6f5+dirty (go1.26.2)
|
||||
// version: v0.6.6-0.20260805170503-1d8f70c7fdae+dirty (go1.26.2)
|
||||
package v1_12_2
|
||||
|
||||
import (
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
// Code generated by strom. DO NOT EDIT.
|
||||
// source: minecraft-data/pc/1.14.4/protocol.json (sha256:b6edff5abaaf234037b5019024d749e27e746250a23253bb4ad77d8f76e93167)
|
||||
// version: v0.6.6-0.20260805154326-fa70ea36c6f5+dirty (go1.26.2)
|
||||
// version: v0.6.6-0.20260805170503-1d8f70c7fdae+dirty (go1.26.2)
|
||||
package v1_14_4
|
||||
|
||||
import (
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
// Code generated by strom. DO NOT EDIT.
|
||||
// source: minecraft-data/pc/1.16.2/protocol.json (sha256:d96a3c5a7a7ddf2105e23990c2471b3aeafe4a6975e0c9d7d7943b599af9dfb3)
|
||||
// version: v0.6.6-0.20260805154326-fa70ea36c6f5+dirty (go1.26.2)
|
||||
// version: v0.6.6-0.20260805170503-1d8f70c7fdae+dirty (go1.26.2)
|
||||
package v1_16_5
|
||||
|
||||
import (
|
||||
@@ -5564,15 +5564,79 @@ func (ret *PlayToClientPacketEntityEffect) Encode(w io.Writer) (err error) {
|
||||
}
|
||||
|
||||
type PlayToClientPacketEntityEquipment struct {
|
||||
Val proto_base.ToDo
|
||||
EntityId int32
|
||||
Equipments []struct {
|
||||
Slot int8
|
||||
Item Slot
|
||||
}
|
||||
}
|
||||
|
||||
func (ret *PlayToClientPacketEntityEquipment) Decode(r io.ReadSeeker) (err error) {
|
||||
err = proto_base.ToDoError
|
||||
ret.EntityId, err = proto_base.DecodeVarInt(r)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
ret.Equipments = []struct {
|
||||
Slot int8
|
||||
Item Slot
|
||||
}{}
|
||||
for {
|
||||
var PlayToClientPacketEntityEquipmentEquipmentsHeader uint8
|
||||
err = binary.Read(r, binary.BigEndian, &PlayToClientPacketEntityEquipmentEquipmentsHeader)
|
||||
if err == io.EOF {
|
||||
err = nil
|
||||
break
|
||||
}
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
_, err = r.Seek(-1, io.SeekCurrent)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
PlayToClientPacketEntityEquipmentEquipmentsHasMore := PlayToClientPacketEntityEquipmentEquipmentsHeader&128 != 0
|
||||
var PlayToClientPacketEntityEquipmentEquipmentsElement struct {
|
||||
Slot int8
|
||||
Item Slot
|
||||
}
|
||||
err = binary.Read(r, binary.BigEndian, &PlayToClientPacketEntityEquipmentEquipmentsElement.Slot)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
err = PlayToClientPacketEntityEquipmentEquipmentsElement.Item.Decode(r)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
ret.Equipments = append(ret.Equipments, PlayToClientPacketEntityEquipmentEquipmentsElement)
|
||||
if !PlayToClientPacketEntityEquipmentEquipmentsHasMore {
|
||||
break
|
||||
}
|
||||
}
|
||||
return
|
||||
}
|
||||
func (ret *PlayToClientPacketEntityEquipment) Encode(w io.Writer) (err error) {
|
||||
err = proto_base.ToDoError
|
||||
err = proto_base.EncodeVarInt(w, ret.EntityId)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
for iPlayToClientPacketEntityEquipmentEquipments, PlayToClientPacketEntityEquipmentEquipmentsElem := range ret.Equipments {
|
||||
if iPlayToClientPacketEntityEquipmentEquipments != len(ret.Equipments)-1 {
|
||||
err = binary.Write(w, binary.BigEndian, int8(uint8(PlayToClientPacketEntityEquipmentEquipmentsElem.Slot)|128))
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
} else {
|
||||
err = binary.Write(w, binary.BigEndian, PlayToClientPacketEntityEquipmentEquipmentsElem.Slot)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
}
|
||||
PlayToClientPacketEntityEquipmentEquipmentsItemEncTmp := PlayToClientPacketEntityEquipmentEquipmentsElem.Item
|
||||
err = PlayToClientPacketEntityEquipmentEquipmentsItemEncTmp.Encode(w)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
// Code generated by strom. DO NOT EDIT.
|
||||
// source: minecraft-data/pc/1.21.11/protocol.json (sha256:97d2726cce3a39cc967a954f27f4ebf029ec3f0f655bb21942aab8745d13cdab)
|
||||
// version: v0.6.6-0.20260805154326-fa70ea36c6f5+dirty (go1.26.2)
|
||||
// version: v0.6.6-0.20260805170503-1d8f70c7fdae+dirty (go1.26.2)
|
||||
package v1_21_11
|
||||
|
||||
import (
|
||||
@@ -16549,15 +16549,79 @@ func (ret *PlayToClientPacketEntityEffect) Encode(w io.Writer) (err error) {
|
||||
}
|
||||
|
||||
type PlayToClientPacketEntityEquipment struct {
|
||||
Val proto_base.ToDo
|
||||
EntityId int32
|
||||
Equipments []struct {
|
||||
Slot int8
|
||||
Item Slot
|
||||
}
|
||||
}
|
||||
|
||||
func (ret *PlayToClientPacketEntityEquipment) Decode(r io.ReadSeeker) (err error) {
|
||||
err = proto_base.ToDoError
|
||||
ret.EntityId, err = proto_base.DecodeVarInt(r)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
ret.Equipments = []struct {
|
||||
Slot int8
|
||||
Item Slot
|
||||
}{}
|
||||
for {
|
||||
var PlayToClientPacketEntityEquipmentEquipmentsHeader uint8
|
||||
err = binary.Read(r, binary.BigEndian, &PlayToClientPacketEntityEquipmentEquipmentsHeader)
|
||||
if err == io.EOF {
|
||||
err = nil
|
||||
break
|
||||
}
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
_, err = r.Seek(-1, io.SeekCurrent)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
PlayToClientPacketEntityEquipmentEquipmentsHasMore := PlayToClientPacketEntityEquipmentEquipmentsHeader&128 != 0
|
||||
var PlayToClientPacketEntityEquipmentEquipmentsElement struct {
|
||||
Slot int8
|
||||
Item Slot
|
||||
}
|
||||
err = binary.Read(r, binary.BigEndian, &PlayToClientPacketEntityEquipmentEquipmentsElement.Slot)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
err = PlayToClientPacketEntityEquipmentEquipmentsElement.Item.Decode(r)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
ret.Equipments = append(ret.Equipments, PlayToClientPacketEntityEquipmentEquipmentsElement)
|
||||
if !PlayToClientPacketEntityEquipmentEquipmentsHasMore {
|
||||
break
|
||||
}
|
||||
}
|
||||
return
|
||||
}
|
||||
func (ret *PlayToClientPacketEntityEquipment) Encode(w io.Writer) (err error) {
|
||||
err = proto_base.ToDoError
|
||||
err = proto_base.EncodeVarInt(w, ret.EntityId)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
for iPlayToClientPacketEntityEquipmentEquipments, PlayToClientPacketEntityEquipmentEquipmentsElem := range ret.Equipments {
|
||||
if iPlayToClientPacketEntityEquipmentEquipments != len(ret.Equipments)-1 {
|
||||
err = binary.Write(w, binary.BigEndian, int8(uint8(PlayToClientPacketEntityEquipmentEquipmentsElem.Slot)|128))
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
} else {
|
||||
err = binary.Write(w, binary.BigEndian, PlayToClientPacketEntityEquipmentEquipmentsElem.Slot)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
}
|
||||
PlayToClientPacketEntityEquipmentEquipmentsItemEncTmp := PlayToClientPacketEntityEquipmentEquipmentsElem.Item
|
||||
err = PlayToClientPacketEntityEquipmentEquipmentsItemEncTmp.Encode(w)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
// Code generated by strom. DO NOT EDIT.
|
||||
// source: minecraft-data/pc/1.21.8/protocol.json (sha256:930fbb4c69fd2ecadddcee3c38d3f02908adc23b54b707cb21112e7ab1e9dba1)
|
||||
// version: v0.6.6-0.20260805154326-fa70ea36c6f5+dirty (go1.26.2)
|
||||
// version: v0.6.6-0.20260805170503-1d8f70c7fdae+dirty (go1.26.2)
|
||||
package v1_21_8
|
||||
|
||||
import (
|
||||
@@ -15030,15 +15030,79 @@ func (ret *PlayToClientPacketEntityEffect) Encode(w io.Writer) (err error) {
|
||||
}
|
||||
|
||||
type PlayToClientPacketEntityEquipment struct {
|
||||
Val proto_base.ToDo
|
||||
EntityId int32
|
||||
Equipments []struct {
|
||||
Slot int8
|
||||
Item Slot
|
||||
}
|
||||
}
|
||||
|
||||
func (ret *PlayToClientPacketEntityEquipment) Decode(r io.ReadSeeker) (err error) {
|
||||
err = proto_base.ToDoError
|
||||
ret.EntityId, err = proto_base.DecodeVarInt(r)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
ret.Equipments = []struct {
|
||||
Slot int8
|
||||
Item Slot
|
||||
}{}
|
||||
for {
|
||||
var PlayToClientPacketEntityEquipmentEquipmentsHeader uint8
|
||||
err = binary.Read(r, binary.BigEndian, &PlayToClientPacketEntityEquipmentEquipmentsHeader)
|
||||
if err == io.EOF {
|
||||
err = nil
|
||||
break
|
||||
}
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
_, err = r.Seek(-1, io.SeekCurrent)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
PlayToClientPacketEntityEquipmentEquipmentsHasMore := PlayToClientPacketEntityEquipmentEquipmentsHeader&128 != 0
|
||||
var PlayToClientPacketEntityEquipmentEquipmentsElement struct {
|
||||
Slot int8
|
||||
Item Slot
|
||||
}
|
||||
err = binary.Read(r, binary.BigEndian, &PlayToClientPacketEntityEquipmentEquipmentsElement.Slot)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
err = PlayToClientPacketEntityEquipmentEquipmentsElement.Item.Decode(r)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
ret.Equipments = append(ret.Equipments, PlayToClientPacketEntityEquipmentEquipmentsElement)
|
||||
if !PlayToClientPacketEntityEquipmentEquipmentsHasMore {
|
||||
break
|
||||
}
|
||||
}
|
||||
return
|
||||
}
|
||||
func (ret *PlayToClientPacketEntityEquipment) Encode(w io.Writer) (err error) {
|
||||
err = proto_base.ToDoError
|
||||
err = proto_base.EncodeVarInt(w, ret.EntityId)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
for iPlayToClientPacketEntityEquipmentEquipments, PlayToClientPacketEntityEquipmentEquipmentsElem := range ret.Equipments {
|
||||
if iPlayToClientPacketEntityEquipmentEquipments != len(ret.Equipments)-1 {
|
||||
err = binary.Write(w, binary.BigEndian, int8(uint8(PlayToClientPacketEntityEquipmentEquipmentsElem.Slot)|128))
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
} else {
|
||||
err = binary.Write(w, binary.BigEndian, PlayToClientPacketEntityEquipmentEquipmentsElem.Slot)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
}
|
||||
PlayToClientPacketEntityEquipmentEquipmentsItemEncTmp := PlayToClientPacketEntityEquipmentEquipmentsElem.Item
|
||||
err = PlayToClientPacketEntityEquipmentEquipmentsItemEncTmp.Encode(w)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
// Code generated by strom. DO NOT EDIT.
|
||||
// source: minecraft-data/pc/1.21.9/protocol.json (sha256:9861cee397931c678c3b1837dcdf82e3fc885442c6bd0e4a60522fbf26653e59)
|
||||
// version: v0.6.6-0.20260805154326-fa70ea36c6f5+dirty (go1.26.2)
|
||||
// version: v0.6.6-0.20260805170503-1d8f70c7fdae+dirty (go1.26.2)
|
||||
package v1_21_9
|
||||
|
||||
import (
|
||||
@@ -16372,15 +16372,79 @@ func (ret *PlayToClientPacketEntityEffect) Encode(w io.Writer) (err error) {
|
||||
}
|
||||
|
||||
type PlayToClientPacketEntityEquipment struct {
|
||||
Val proto_base.ToDo
|
||||
EntityId int32
|
||||
Equipments []struct {
|
||||
Slot int8
|
||||
Item Slot
|
||||
}
|
||||
}
|
||||
|
||||
func (ret *PlayToClientPacketEntityEquipment) Decode(r io.ReadSeeker) (err error) {
|
||||
err = proto_base.ToDoError
|
||||
ret.EntityId, err = proto_base.DecodeVarInt(r)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
ret.Equipments = []struct {
|
||||
Slot int8
|
||||
Item Slot
|
||||
}{}
|
||||
for {
|
||||
var PlayToClientPacketEntityEquipmentEquipmentsHeader uint8
|
||||
err = binary.Read(r, binary.BigEndian, &PlayToClientPacketEntityEquipmentEquipmentsHeader)
|
||||
if err == io.EOF {
|
||||
err = nil
|
||||
break
|
||||
}
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
_, err = r.Seek(-1, io.SeekCurrent)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
PlayToClientPacketEntityEquipmentEquipmentsHasMore := PlayToClientPacketEntityEquipmentEquipmentsHeader&128 != 0
|
||||
var PlayToClientPacketEntityEquipmentEquipmentsElement struct {
|
||||
Slot int8
|
||||
Item Slot
|
||||
}
|
||||
err = binary.Read(r, binary.BigEndian, &PlayToClientPacketEntityEquipmentEquipmentsElement.Slot)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
err = PlayToClientPacketEntityEquipmentEquipmentsElement.Item.Decode(r)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
ret.Equipments = append(ret.Equipments, PlayToClientPacketEntityEquipmentEquipmentsElement)
|
||||
if !PlayToClientPacketEntityEquipmentEquipmentsHasMore {
|
||||
break
|
||||
}
|
||||
}
|
||||
return
|
||||
}
|
||||
func (ret *PlayToClientPacketEntityEquipment) Encode(w io.Writer) (err error) {
|
||||
err = proto_base.ToDoError
|
||||
err = proto_base.EncodeVarInt(w, ret.EntityId)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
for iPlayToClientPacketEntityEquipmentEquipments, PlayToClientPacketEntityEquipmentEquipmentsElem := range ret.Equipments {
|
||||
if iPlayToClientPacketEntityEquipmentEquipments != len(ret.Equipments)-1 {
|
||||
err = binary.Write(w, binary.BigEndian, int8(uint8(PlayToClientPacketEntityEquipmentEquipmentsElem.Slot)|128))
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
} else {
|
||||
err = binary.Write(w, binary.BigEndian, PlayToClientPacketEntityEquipmentEquipmentsElem.Slot)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
}
|
||||
PlayToClientPacketEntityEquipmentEquipmentsItemEncTmp := PlayToClientPacketEntityEquipmentEquipmentsElem.Item
|
||||
err = PlayToClientPacketEntityEquipmentEquipmentsItemEncTmp.Encode(w)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
// Code generated by strom. DO NOT EDIT.
|
||||
// source: minecraft-data/pc/1.8/protocol.json (sha256:79fe774bfc255dd281899c004fbb9c7adc40fb107de9353da1dd0371ea4b53af)
|
||||
// version: v0.6.6-0.20260805154326-fa70ea36c6f5+dirty (go1.26.2)
|
||||
// version: v0.6.6-0.20260805170503-1d8f70c7fdae+dirty (go1.26.2)
|
||||
package v1_8
|
||||
|
||||
import (
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
// Code generated by strom. DO NOT EDIT.
|
||||
// source: minecraft-data/pc/26.1/protocol.json (sha256:dfb6318886cd3ceab617f75ac05e24f9836a64501d60551071289b904ebfc389)
|
||||
// version: v0.6.6-0.20260805154326-fa70ea36c6f5+dirty (go1.26.2)
|
||||
// version: v0.6.6-0.20260805170503-1d8f70c7fdae+dirty (go1.26.2)
|
||||
package v26_1
|
||||
|
||||
import (
|
||||
@@ -16585,15 +16585,79 @@ func (ret *PlayToClientPacketEntityEffect) Encode(w io.Writer) (err error) {
|
||||
}
|
||||
|
||||
type PlayToClientPacketEntityEquipment struct {
|
||||
Val proto_base.ToDo
|
||||
EntityId int32
|
||||
Equipments []struct {
|
||||
Slot int8
|
||||
Item Slot
|
||||
}
|
||||
}
|
||||
|
||||
func (ret *PlayToClientPacketEntityEquipment) Decode(r io.ReadSeeker) (err error) {
|
||||
err = proto_base.ToDoError
|
||||
ret.EntityId, err = proto_base.DecodeVarInt(r)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
ret.Equipments = []struct {
|
||||
Slot int8
|
||||
Item Slot
|
||||
}{}
|
||||
for {
|
||||
var PlayToClientPacketEntityEquipmentEquipmentsHeader uint8
|
||||
err = binary.Read(r, binary.BigEndian, &PlayToClientPacketEntityEquipmentEquipmentsHeader)
|
||||
if err == io.EOF {
|
||||
err = nil
|
||||
break
|
||||
}
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
_, err = r.Seek(-1, io.SeekCurrent)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
PlayToClientPacketEntityEquipmentEquipmentsHasMore := PlayToClientPacketEntityEquipmentEquipmentsHeader&128 != 0
|
||||
var PlayToClientPacketEntityEquipmentEquipmentsElement struct {
|
||||
Slot int8
|
||||
Item Slot
|
||||
}
|
||||
err = binary.Read(r, binary.BigEndian, &PlayToClientPacketEntityEquipmentEquipmentsElement.Slot)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
err = PlayToClientPacketEntityEquipmentEquipmentsElement.Item.Decode(r)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
ret.Equipments = append(ret.Equipments, PlayToClientPacketEntityEquipmentEquipmentsElement)
|
||||
if !PlayToClientPacketEntityEquipmentEquipmentsHasMore {
|
||||
break
|
||||
}
|
||||
}
|
||||
return
|
||||
}
|
||||
func (ret *PlayToClientPacketEntityEquipment) Encode(w io.Writer) (err error) {
|
||||
err = proto_base.ToDoError
|
||||
err = proto_base.EncodeVarInt(w, ret.EntityId)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
for iPlayToClientPacketEntityEquipmentEquipments, PlayToClientPacketEntityEquipmentEquipmentsElem := range ret.Equipments {
|
||||
if iPlayToClientPacketEntityEquipmentEquipments != len(ret.Equipments)-1 {
|
||||
err = binary.Write(w, binary.BigEndian, int8(uint8(PlayToClientPacketEntityEquipmentEquipmentsElem.Slot)|128))
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
} else {
|
||||
err = binary.Write(w, binary.BigEndian, PlayToClientPacketEntityEquipmentEquipmentsElem.Slot)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
}
|
||||
PlayToClientPacketEntityEquipmentEquipmentsItemEncTmp := PlayToClientPacketEntityEquipmentEquipmentsElem.Item
|
||||
err = PlayToClientPacketEntityEquipmentEquipmentsItemEncTmp.Encode(w)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
// Code generated by strom. DO NOT EDIT.
|
||||
// source: minecraft-data/pc/26.2/protocol.json (sha256:7ba66411adcc68a668f38211e1b00eeb386a345d5eb16fadd6dc1c7f94bb175f)
|
||||
// version: v0.6.6-0.20260805154326-fa70ea36c6f5+dirty (go1.26.2)
|
||||
// version: v0.6.6-0.20260805170503-1d8f70c7fdae+dirty (go1.26.2)
|
||||
package v26_2
|
||||
|
||||
import (
|
||||
@@ -16594,15 +16594,79 @@ func (ret *PlayToClientPacketEntityEffect) Encode(w io.Writer) (err error) {
|
||||
}
|
||||
|
||||
type PlayToClientPacketEntityEquipment struct {
|
||||
Val proto_base.ToDo
|
||||
EntityId int32
|
||||
Equipments []struct {
|
||||
Slot int8
|
||||
Item Slot
|
||||
}
|
||||
}
|
||||
|
||||
func (ret *PlayToClientPacketEntityEquipment) Decode(r io.ReadSeeker) (err error) {
|
||||
err = proto_base.ToDoError
|
||||
ret.EntityId, err = proto_base.DecodeVarInt(r)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
ret.Equipments = []struct {
|
||||
Slot int8
|
||||
Item Slot
|
||||
}{}
|
||||
for {
|
||||
var PlayToClientPacketEntityEquipmentEquipmentsHeader uint8
|
||||
err = binary.Read(r, binary.BigEndian, &PlayToClientPacketEntityEquipmentEquipmentsHeader)
|
||||
if err == io.EOF {
|
||||
err = nil
|
||||
break
|
||||
}
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
_, err = r.Seek(-1, io.SeekCurrent)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
PlayToClientPacketEntityEquipmentEquipmentsHasMore := PlayToClientPacketEntityEquipmentEquipmentsHeader&128 != 0
|
||||
var PlayToClientPacketEntityEquipmentEquipmentsElement struct {
|
||||
Slot int8
|
||||
Item Slot
|
||||
}
|
||||
err = binary.Read(r, binary.BigEndian, &PlayToClientPacketEntityEquipmentEquipmentsElement.Slot)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
err = PlayToClientPacketEntityEquipmentEquipmentsElement.Item.Decode(r)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
ret.Equipments = append(ret.Equipments, PlayToClientPacketEntityEquipmentEquipmentsElement)
|
||||
if !PlayToClientPacketEntityEquipmentEquipmentsHasMore {
|
||||
break
|
||||
}
|
||||
}
|
||||
return
|
||||
}
|
||||
func (ret *PlayToClientPacketEntityEquipment) Encode(w io.Writer) (err error) {
|
||||
err = proto_base.ToDoError
|
||||
err = proto_base.EncodeVarInt(w, ret.EntityId)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
for iPlayToClientPacketEntityEquipmentEquipments, PlayToClientPacketEntityEquipmentEquipmentsElem := range ret.Equipments {
|
||||
if iPlayToClientPacketEntityEquipmentEquipments != len(ret.Equipments)-1 {
|
||||
err = binary.Write(w, binary.BigEndian, int8(uint8(PlayToClientPacketEntityEquipmentEquipmentsElem.Slot)|128))
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
} else {
|
||||
err = binary.Write(w, binary.BigEndian, PlayToClientPacketEntityEquipmentEquipmentsElem.Slot)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
}
|
||||
PlayToClientPacketEntityEquipmentEquipmentsItemEncTmp := PlayToClientPacketEntityEquipmentEquipmentsElem.Item
|
||||
err = PlayToClientPacketEntityEquipmentEquipmentsItemEncTmp.Encode(w)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
|
||||
@@ -619,6 +619,56 @@ func EntityMetadataLoopDecoder(g *Generator, varToSet ast.Expr, dataRaw any, nam
|
||||
return
|
||||
}
|
||||
|
||||
func TopBitSetTerminatedArrayDecoder(g *Generator, varToSet ast.Expr, dataRaw any, name string) (s []ast.Stmt, err error) {
|
||||
var data struct {
|
||||
Type any
|
||||
}
|
||||
err = mapstructure.Decode(dataRaw, &data)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
normalType, err := g.VisitType(data.Type)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
arrayType, err := g.VisitNameAndData("array", dataRaw)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
tName := name + "Element"
|
||||
hasMore := name + "HasMore"
|
||||
headerName := name + "Header"
|
||||
|
||||
peekStmts := Stmts(
|
||||
VarStmt(headerName, Ident("uint8")),
|
||||
Assign(Exprs(Ident("err")), Exprs(Call(Selector("binary", "Read"), Ident("r"), Selector("binary", "BigEndian"), AddrOf(Ident(headerName))))),
|
||||
If(Equals(Ident("err"), Selector("io", "EOF")),
|
||||
NewBlockEllipsis(Assign121(Ident("err"), Nil()), Break())),
|
||||
IfErrNil(),
|
||||
Assign(Exprs(Ident("_"), Ident("err")), Exprs(Call(Selector("r", "Seek"), NumLit(-1), Selector("io", "SeekCurrent")))),
|
||||
IfErrNil(),
|
||||
Define121(Ident(hasMore), NotEquals(BinAnd(Ident(headerName), NumLit(0x80)), NumLit(0))),
|
||||
)
|
||||
|
||||
rangeStatements := Stmts(VarStmt(tName, normalType))
|
||||
s5, err := g.VisitDecoder(Ident(tName), data.Type, tName)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
rangeStatements = append(rangeStatements, s5...)
|
||||
rangeStatements = append(rangeStatements, Assign121(varToSet, Call(Ident("append"), varToSet, Ident(tName))))
|
||||
rangeStatements = append(rangeStatements, If(Not(Ident(hasMore)), NewBlockEllipsis(Break())))
|
||||
|
||||
loopStmts := append(peekStmts, rangeStatements...)
|
||||
s = Stmts(
|
||||
Assign121(varToSet, CompLit(arrayType, Exprs())),
|
||||
ForStmt(nil, nil, nil, NewBlock(loopStmts)),
|
||||
)
|
||||
return
|
||||
}
|
||||
|
||||
func (g *Generator) RegisterDecoderNatives() {
|
||||
g.DecoderNatives = map[string]FunctionGeneratorFunc{
|
||||
"container": ContainerDecoder,
|
||||
@@ -657,7 +707,7 @@ func (g *Generator) RegisterDecoderNatives() {
|
||||
"registryEntryHolder": RegistryEntryHolderDecoder,
|
||||
"registryEntryHolderSet": ToDoDecoder, // RegistryEntryHolderSetDecoder
|
||||
"entityMetadataLoop": EntityMetadataLoopDecoder,
|
||||
"topBitSetTerminatedArray": ToDoDecoder,
|
||||
"topBitSetTerminatedArray": TopBitSetTerminatedArrayDecoder,
|
||||
"todo": ToDoDecoder,
|
||||
}
|
||||
}
|
||||
|
||||
@@ -388,6 +388,108 @@ func EntityMetadataLoopEncoder(g *Generator, vts ast.Expr, dataRaw any, name str
|
||||
return
|
||||
}
|
||||
|
||||
func TopBitSetTerminatedArrayEncoder(g *Generator, varToSet ast.Expr, dataRaw any, name string) (s []ast.Stmt, err error) {
|
||||
var data struct {
|
||||
Type any
|
||||
}
|
||||
err = mapstructure.Decode(dataRaw, &data)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
iName := "i" + name
|
||||
elemName := name + "Elem"
|
||||
|
||||
_, tData, err := ParseType(data.Type)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
var containerData protodef.Container
|
||||
if err = mapstructure.Decode(tData, &containerData); err != nil || len(containerData) == 0 {
|
||||
s2, err := g.VisitEncoder(SelectorExprAndStr(Ident(elemName), "Val"), data.Type, name+"Inner")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
s = Stmts(ForRangeKV(Ident(iName), Ident(elemName), varToSet, NewBlock(s2)))
|
||||
return s, nil
|
||||
}
|
||||
|
||||
elemExpr := Ident(elemName)
|
||||
firstField := containerData[0]
|
||||
firstCName := util2.CamelCase(firstField.Name)
|
||||
firstVar := SelectorExprAndStr(elemExpr, firstCName)
|
||||
notLast := NotEquals(Ident(iName), Sub(Call(Ident("len"), varToSet), NumLit(1)))
|
||||
|
||||
var firstByteExpr ast.Expr
|
||||
if firstField.Anon {
|
||||
firstByteExpr = SelectorExprAndStr(firstVar, "Type") // or "Key"... need to handle bitfield
|
||||
} else {
|
||||
firstByteExpr = firstVar
|
||||
}
|
||||
|
||||
firstTypeName, _, _ := ParseType(firstField.Type)
|
||||
|
||||
var firstFieldStmts []ast.Stmt
|
||||
const msb = 0x80
|
||||
switch firstTypeName {
|
||||
case "i8":
|
||||
firstFieldStmts = Stmts(
|
||||
IfElse(notLast,
|
||||
NewBlock(Stmts(
|
||||
Assign121(Ident("err"),
|
||||
Call(Selector("binary", "Write"), Ident("w"), Selector("binary", "BigEndian"),
|
||||
Call(Ident("int8"),
|
||||
&ast.BinaryExpr{X: Call(Ident("uint8"), firstByteExpr), Op: token.OR, Y: NumLit(msb)}))),
|
||||
IfErrNil(),
|
||||
)),
|
||||
NewBlock(Stmts(
|
||||
Assign121(Ident("err"),
|
||||
Call(Selector("binary", "Write"), Ident("w"), Selector("binary", "BigEndian"), firstByteExpr)),
|
||||
IfErrNil(),
|
||||
))),
|
||||
)
|
||||
case "u8":
|
||||
firstFieldStmts = Stmts(
|
||||
IfElse(notLast,
|
||||
NewBlock(Stmts(
|
||||
Assign121(Ident("err"),
|
||||
Call(Selector("binary", "Write"), Ident("w"), Selector("binary", "BigEndian"),
|
||||
&ast.BinaryExpr{X: firstByteExpr, Op: token.OR, Y: NumLit(msb)})),
|
||||
IfErrNil(),
|
||||
)),
|
||||
NewBlock(Stmts(
|
||||
Assign121(Ident("err"),
|
||||
Call(Selector("binary", "Write"), Ident("w"), Selector("binary", "BigEndian"), firstByteExpr)),
|
||||
IfErrNil(),
|
||||
))),
|
||||
)
|
||||
default:
|
||||
firstFieldStmts, err = g.VisitEncoder(firstByteExpr, firstField.Type, name+firstCName)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
|
||||
var restStmts []ast.Stmt
|
||||
for _, field := range containerData[1:] {
|
||||
cName := util2.CamelCase(field.Name)
|
||||
if field.Anon {
|
||||
cName = "Anon"
|
||||
}
|
||||
fieldVar := SelectorExprAndStr(elemExpr, cName)
|
||||
fieldStmts, err := g.VisitEncoder(fieldVar, field.Type, name+util2.CamelCase(cName))
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
restStmts = append(restStmts, fieldStmts...)
|
||||
}
|
||||
|
||||
elementStmts := append(firstFieldStmts, restStmts...)
|
||||
s = Stmts(ForRangeKV(Ident(iName), Ident(elemName), varToSet, NewBlock(elementStmts)))
|
||||
return
|
||||
}
|
||||
|
||||
func (g *Generator) RegisterEncoderNatives() {
|
||||
g.EncoderNatives = map[string]FunctionGeneratorFunc{
|
||||
"container": ContainerEncoder,
|
||||
@@ -426,7 +528,7 @@ func (g *Generator) RegisterEncoderNatives() {
|
||||
"registryEntryHolder": RegistryEntryHolderEncoder,
|
||||
"registryEntryHolderSet": ToDoEncoder,
|
||||
"entityMetadataLoop": EntityMetadataLoopEncoder,
|
||||
"topBitSetTerminatedArray": ToDoEncoder,
|
||||
"topBitSetTerminatedArray": TopBitSetTerminatedArrayEncoder,
|
||||
"todo": ToDoEncoder,
|
||||
}
|
||||
}
|
||||
|
||||
@@ -225,7 +225,7 @@ func (g *Generator) RegisterNatives() {
|
||||
"string": MakeIdentVisitor("string"),
|
||||
"restBuffer": MakeSelectorVisitor("proto_base", "RestBuffer"),
|
||||
"bitflags": VisitBitFlagsType,
|
||||
"topBitSetTerminatedArray": VisitToDoType,
|
||||
"topBitSetTerminatedArray": VisitArrayTypeVisitorType,
|
||||
"todo": VisitToDoType,
|
||||
"lpVec3": MakeSelectorVisitor("proto_base", "LpVec3d"),
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user