fix: implement IDSet (registryEntryHolderSet) decoder/encoder
- Replace old broken RegistryEntryHolderSetDecoder with correct varint discriminator: id != 0 returns raw ID, id == 0 decodes string base - Add RegistryEntryHolderSetEncoder using type switch (string/int32) - Add NonErroringIndex to proto_base (zero-fallback index lookup) - DeclareRecipes now fails with index not found (mapper) instead of to do
This commit is contained in:
File diff suppressed because one or more lines are too long
@@ -262,6 +262,12 @@ func ErroringIndex[K comparable, V any, M map[K]V](m M, i K) (v V, err error) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// NonErroringIndex looks up key k in map m and returns the zero value without error if not found.
|
||||||
|
func NonErroringIndex[K comparable, V any, M map[K]V](m M, i K) (v V, err error) {
|
||||||
|
v, _ = m[i]
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
// EncodeDecodeAble is implemented by types that can be encoded and decoded for
|
// EncodeDecodeAble is implemented by types that can be encoded and decoded for
|
||||||
// Minecraft protocol packets.
|
// Minecraft protocol packets.
|
||||||
type EncodeDecodeAble interface {
|
type EncodeDecodeAble interface {
|
||||||
|
|||||||
@@ -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: v0.6.6-0.20260805170503-1d8f70c7fdae+dirty (go1.26.2)
|
// version: v0.6.6-0.20260805173638-56ac8e154ea1+dirty (go1.26.2)
|
||||||
package v1_12_2
|
package v1_12_2
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
|||||||
@@ -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: v0.6.6-0.20260805170503-1d8f70c7fdae+dirty (go1.26.2)
|
// version: v0.6.6-0.20260805173638-56ac8e154ea1+dirty (go1.26.2)
|
||||||
package v1_14_4
|
package v1_14_4
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
|||||||
@@ -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: v0.6.6-0.20260805170503-1d8f70c7fdae+dirty (go1.26.2)
|
// version: v0.6.6-0.20260805173638-56ac8e154ea1+dirty (go1.26.2)
|
||||||
package v1_16_5
|
package v1_16_5
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
|||||||
@@ -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: v0.6.6-0.20260805170503-1d8f70c7fdae+dirty (go1.26.2)
|
// version: v0.6.6-0.20260805173638-56ac8e154ea1+dirty (go1.26.2)
|
||||||
package v1_21_11
|
package v1_21_11
|
||||||
|
|
||||||
import (
|
import (
|
||||||
@@ -901,11 +901,42 @@ type IDSet struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (ret *IDSet) Decode(r io.ReadSeeker) (err error) {
|
func (ret *IDSet) Decode(r io.ReadSeeker) (err error) {
|
||||||
err = proto_base.ToDoError
|
var IDSetId int32
|
||||||
|
IDSetId, err = proto_base.DecodeVarInt(r)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if IDSetId != 0 {
|
||||||
|
ret.Val = IDSetId
|
||||||
|
} else {
|
||||||
|
var IDSetResult string
|
||||||
|
IDSetResult, err = proto_base.DecodeString(r)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
ret.Val = IDSetResult
|
||||||
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
func (ret *IDSet) Encode(w io.Writer) (err error) {
|
func (ret *IDSet) Encode(w io.Writer) (err error) {
|
||||||
err = proto_base.ToDoError
|
switch IDSetKnownType := ret.Val.(type) {
|
||||||
|
case string:
|
||||||
|
err = proto_base.EncodeVarInt(w, 0)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
err = proto_base.EncodeString(w, IDSetKnownType)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
case int32:
|
||||||
|
err = proto_base.EncodeVarInt(w, IDSetKnownType)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
err = proto_base.BadTypeError
|
||||||
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -965,11 +996,115 @@ type ItemBlockPredicate struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (ret *ItemBlockPredicate) Decode(r io.ReadSeeker) (err error) {
|
func (ret *ItemBlockPredicate) Decode(r io.ReadSeeker) (err error) {
|
||||||
err = proto_base.ToDoError
|
var ItemBlockPredicateBlockSetPresent bool
|
||||||
|
err = binary.Read(r, binary.BigEndian, &ItemBlockPredicateBlockSetPresent)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if ItemBlockPredicateBlockSetPresent {
|
||||||
|
var ItemBlockPredicateBlockSetPresentValue any
|
||||||
|
var ItemBlockPredicateBlockSetId int32
|
||||||
|
ItemBlockPredicateBlockSetId, err = proto_base.DecodeVarInt(r)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if ItemBlockPredicateBlockSetId != 0 {
|
||||||
|
ItemBlockPredicateBlockSetPresentValue = ItemBlockPredicateBlockSetId
|
||||||
|
} else {
|
||||||
|
var ItemBlockPredicateBlockSetResult string
|
||||||
|
ItemBlockPredicateBlockSetResult, err = proto_base.DecodeString(r)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
ItemBlockPredicateBlockSetPresentValue = ItemBlockPredicateBlockSetResult
|
||||||
|
}
|
||||||
|
ret.BlockSet = &ItemBlockPredicateBlockSetPresentValue
|
||||||
|
}
|
||||||
|
var ItemBlockPredicatePropertiesPresent bool
|
||||||
|
err = binary.Read(r, binary.BigEndian, &ItemBlockPredicatePropertiesPresent)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if ItemBlockPredicatePropertiesPresent {
|
||||||
|
var ItemBlockPredicatePropertiesPresentValue []ItemBlockProperty
|
||||||
|
var lItemBlockPredicateProperties int32
|
||||||
|
lItemBlockPredicateProperties, err = proto_base.DecodeVarInt(r)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
ItemBlockPredicatePropertiesPresentValue = []ItemBlockProperty{}
|
||||||
|
for range lItemBlockPredicateProperties {
|
||||||
|
var ItemBlockPredicatePropertiesElement ItemBlockProperty
|
||||||
|
err = ItemBlockPredicatePropertiesElement.Decode(r)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
ItemBlockPredicatePropertiesPresentValue = append(ItemBlockPredicatePropertiesPresentValue, ItemBlockPredicatePropertiesElement)
|
||||||
|
}
|
||||||
|
ret.Properties = &ItemBlockPredicatePropertiesPresentValue
|
||||||
|
}
|
||||||
|
err = ret.Nbt.Decode(r)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
err = ret.Components.Decode(r)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
func (ret *ItemBlockPredicate) Encode(w io.Writer) (err error) {
|
func (ret *ItemBlockPredicate) Encode(w io.Writer) (err error) {
|
||||||
err = proto_base.ToDoError
|
err = binary.Write(w, binary.BigEndian, ret.BlockSet != nil)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if ret.BlockSet != nil {
|
||||||
|
switch ItemBlockPredicateBlockSetKnownType := (*ret.BlockSet).(type) {
|
||||||
|
case string:
|
||||||
|
err = proto_base.EncodeVarInt(w, 0)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
err = proto_base.EncodeString(w, ItemBlockPredicateBlockSetKnownType)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
case int32:
|
||||||
|
err = proto_base.EncodeVarInt(w, ItemBlockPredicateBlockSetKnownType)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
err = proto_base.BadTypeError
|
||||||
|
}
|
||||||
|
}
|
||||||
|
err = binary.Write(w, binary.BigEndian, ret.Properties != nil)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if ret.Properties != nil {
|
||||||
|
err = proto_base.EncodeVarInt(w, int32(len(*ret.Properties)))
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
for iItemBlockPredicateProperties := range len(*ret.Properties) {
|
||||||
|
ItemBlockPredicatePropertiesInnerEncTmp := (*ret.Properties)[iItemBlockPredicateProperties]
|
||||||
|
err = ItemBlockPredicatePropertiesInnerEncTmp.Encode(w)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
ItemBlockPredicateNbtEncTmp := ret.Nbt
|
||||||
|
err = ItemBlockPredicateNbtEncTmp.Encode(w)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
ItemBlockPredicateComponentsEncTmp := ret.Components
|
||||||
|
err = ItemBlockPredicateComponentsEncTmp.Encode(w)
|
||||||
|
if err != nil {
|
||||||
|
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.8/protocol.json (sha256:930fbb4c69fd2ecadddcee3c38d3f02908adc23b54b707cb21112e7ab1e9dba1)
|
// source: minecraft-data/pc/1.21.8/protocol.json (sha256:930fbb4c69fd2ecadddcee3c38d3f02908adc23b54b707cb21112e7ab1e9dba1)
|
||||||
// version: v0.6.6-0.20260805170503-1d8f70c7fdae+dirty (go1.26.2)
|
// version: v0.6.6-0.20260805173638-56ac8e154ea1+dirty (go1.26.2)
|
||||||
package v1_21_8
|
package v1_21_8
|
||||||
|
|
||||||
import (
|
import (
|
||||||
@@ -525,11 +525,42 @@ type IDSet struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (ret *IDSet) Decode(r io.ReadSeeker) (err error) {
|
func (ret *IDSet) Decode(r io.ReadSeeker) (err error) {
|
||||||
err = proto_base.ToDoError
|
var IDSetId int32
|
||||||
|
IDSetId, err = proto_base.DecodeVarInt(r)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if IDSetId != 0 {
|
||||||
|
ret.Val = IDSetId
|
||||||
|
} else {
|
||||||
|
var IDSetResult string
|
||||||
|
IDSetResult, err = proto_base.DecodeString(r)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
ret.Val = IDSetResult
|
||||||
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
func (ret *IDSet) Encode(w io.Writer) (err error) {
|
func (ret *IDSet) Encode(w io.Writer) (err error) {
|
||||||
err = proto_base.ToDoError
|
switch IDSetKnownType := ret.Val.(type) {
|
||||||
|
case string:
|
||||||
|
err = proto_base.EncodeVarInt(w, 0)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
err = proto_base.EncodeString(w, IDSetKnownType)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
case int32:
|
||||||
|
err = proto_base.EncodeVarInt(w, IDSetKnownType)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
err = proto_base.BadTypeError
|
||||||
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -589,11 +620,115 @@ type ItemBlockPredicate struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (ret *ItemBlockPredicate) Decode(r io.ReadSeeker) (err error) {
|
func (ret *ItemBlockPredicate) Decode(r io.ReadSeeker) (err error) {
|
||||||
err = proto_base.ToDoError
|
var ItemBlockPredicateBlockSetPresent bool
|
||||||
|
err = binary.Read(r, binary.BigEndian, &ItemBlockPredicateBlockSetPresent)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if ItemBlockPredicateBlockSetPresent {
|
||||||
|
var ItemBlockPredicateBlockSetPresentValue any
|
||||||
|
var ItemBlockPredicateBlockSetId int32
|
||||||
|
ItemBlockPredicateBlockSetId, err = proto_base.DecodeVarInt(r)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if ItemBlockPredicateBlockSetId != 0 {
|
||||||
|
ItemBlockPredicateBlockSetPresentValue = ItemBlockPredicateBlockSetId
|
||||||
|
} else {
|
||||||
|
var ItemBlockPredicateBlockSetResult string
|
||||||
|
ItemBlockPredicateBlockSetResult, err = proto_base.DecodeString(r)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
ItemBlockPredicateBlockSetPresentValue = ItemBlockPredicateBlockSetResult
|
||||||
|
}
|
||||||
|
ret.BlockSet = &ItemBlockPredicateBlockSetPresentValue
|
||||||
|
}
|
||||||
|
var ItemBlockPredicatePropertiesPresent bool
|
||||||
|
err = binary.Read(r, binary.BigEndian, &ItemBlockPredicatePropertiesPresent)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if ItemBlockPredicatePropertiesPresent {
|
||||||
|
var ItemBlockPredicatePropertiesPresentValue []ItemBlockProperty
|
||||||
|
var lItemBlockPredicateProperties int32
|
||||||
|
lItemBlockPredicateProperties, err = proto_base.DecodeVarInt(r)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
ItemBlockPredicatePropertiesPresentValue = []ItemBlockProperty{}
|
||||||
|
for range lItemBlockPredicateProperties {
|
||||||
|
var ItemBlockPredicatePropertiesElement ItemBlockProperty
|
||||||
|
err = ItemBlockPredicatePropertiesElement.Decode(r)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
ItemBlockPredicatePropertiesPresentValue = append(ItemBlockPredicatePropertiesPresentValue, ItemBlockPredicatePropertiesElement)
|
||||||
|
}
|
||||||
|
ret.Properties = &ItemBlockPredicatePropertiesPresentValue
|
||||||
|
}
|
||||||
|
err = ret.Nbt.Decode(r)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
err = ret.Components.Decode(r)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
func (ret *ItemBlockPredicate) Encode(w io.Writer) (err error) {
|
func (ret *ItemBlockPredicate) Encode(w io.Writer) (err error) {
|
||||||
err = proto_base.ToDoError
|
err = binary.Write(w, binary.BigEndian, ret.BlockSet != nil)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if ret.BlockSet != nil {
|
||||||
|
switch ItemBlockPredicateBlockSetKnownType := (*ret.BlockSet).(type) {
|
||||||
|
case string:
|
||||||
|
err = proto_base.EncodeVarInt(w, 0)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
err = proto_base.EncodeString(w, ItemBlockPredicateBlockSetKnownType)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
case int32:
|
||||||
|
err = proto_base.EncodeVarInt(w, ItemBlockPredicateBlockSetKnownType)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
err = proto_base.BadTypeError
|
||||||
|
}
|
||||||
|
}
|
||||||
|
err = binary.Write(w, binary.BigEndian, ret.Properties != nil)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if ret.Properties != nil {
|
||||||
|
err = proto_base.EncodeVarInt(w, int32(len(*ret.Properties)))
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
for iItemBlockPredicateProperties := range len(*ret.Properties) {
|
||||||
|
ItemBlockPredicatePropertiesInnerEncTmp := (*ret.Properties)[iItemBlockPredicateProperties]
|
||||||
|
err = ItemBlockPredicatePropertiesInnerEncTmp.Encode(w)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
ItemBlockPredicateNbtEncTmp := ret.Nbt
|
||||||
|
err = ItemBlockPredicateNbtEncTmp.Encode(w)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
ItemBlockPredicateComponentsEncTmp := ret.Components
|
||||||
|
err = ItemBlockPredicateComponentsEncTmp.Encode(w)
|
||||||
|
if err != nil {
|
||||||
|
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.9/protocol.json (sha256:9861cee397931c678c3b1837dcdf82e3fc885442c6bd0e4a60522fbf26653e59)
|
// source: minecraft-data/pc/1.21.9/protocol.json (sha256:9861cee397931c678c3b1837dcdf82e3fc885442c6bd0e4a60522fbf26653e59)
|
||||||
// version: v0.6.6-0.20260805170503-1d8f70c7fdae+dirty (go1.26.2)
|
// version: v0.6.6-0.20260805173638-56ac8e154ea1+dirty (go1.26.2)
|
||||||
package v1_21_9
|
package v1_21_9
|
||||||
|
|
||||||
import (
|
import (
|
||||||
@@ -807,11 +807,42 @@ type IDSet struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (ret *IDSet) Decode(r io.ReadSeeker) (err error) {
|
func (ret *IDSet) Decode(r io.ReadSeeker) (err error) {
|
||||||
err = proto_base.ToDoError
|
var IDSetId int32
|
||||||
|
IDSetId, err = proto_base.DecodeVarInt(r)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if IDSetId != 0 {
|
||||||
|
ret.Val = IDSetId
|
||||||
|
} else {
|
||||||
|
var IDSetResult string
|
||||||
|
IDSetResult, err = proto_base.DecodeString(r)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
ret.Val = IDSetResult
|
||||||
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
func (ret *IDSet) Encode(w io.Writer) (err error) {
|
func (ret *IDSet) Encode(w io.Writer) (err error) {
|
||||||
err = proto_base.ToDoError
|
switch IDSetKnownType := ret.Val.(type) {
|
||||||
|
case string:
|
||||||
|
err = proto_base.EncodeVarInt(w, 0)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
err = proto_base.EncodeString(w, IDSetKnownType)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
case int32:
|
||||||
|
err = proto_base.EncodeVarInt(w, IDSetKnownType)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
err = proto_base.BadTypeError
|
||||||
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -871,11 +902,115 @@ type ItemBlockPredicate struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (ret *ItemBlockPredicate) Decode(r io.ReadSeeker) (err error) {
|
func (ret *ItemBlockPredicate) Decode(r io.ReadSeeker) (err error) {
|
||||||
err = proto_base.ToDoError
|
var ItemBlockPredicateBlockSetPresent bool
|
||||||
|
err = binary.Read(r, binary.BigEndian, &ItemBlockPredicateBlockSetPresent)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if ItemBlockPredicateBlockSetPresent {
|
||||||
|
var ItemBlockPredicateBlockSetPresentValue any
|
||||||
|
var ItemBlockPredicateBlockSetId int32
|
||||||
|
ItemBlockPredicateBlockSetId, err = proto_base.DecodeVarInt(r)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if ItemBlockPredicateBlockSetId != 0 {
|
||||||
|
ItemBlockPredicateBlockSetPresentValue = ItemBlockPredicateBlockSetId
|
||||||
|
} else {
|
||||||
|
var ItemBlockPredicateBlockSetResult string
|
||||||
|
ItemBlockPredicateBlockSetResult, err = proto_base.DecodeString(r)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
ItemBlockPredicateBlockSetPresentValue = ItemBlockPredicateBlockSetResult
|
||||||
|
}
|
||||||
|
ret.BlockSet = &ItemBlockPredicateBlockSetPresentValue
|
||||||
|
}
|
||||||
|
var ItemBlockPredicatePropertiesPresent bool
|
||||||
|
err = binary.Read(r, binary.BigEndian, &ItemBlockPredicatePropertiesPresent)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if ItemBlockPredicatePropertiesPresent {
|
||||||
|
var ItemBlockPredicatePropertiesPresentValue []ItemBlockProperty
|
||||||
|
var lItemBlockPredicateProperties int32
|
||||||
|
lItemBlockPredicateProperties, err = proto_base.DecodeVarInt(r)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
ItemBlockPredicatePropertiesPresentValue = []ItemBlockProperty{}
|
||||||
|
for range lItemBlockPredicateProperties {
|
||||||
|
var ItemBlockPredicatePropertiesElement ItemBlockProperty
|
||||||
|
err = ItemBlockPredicatePropertiesElement.Decode(r)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
ItemBlockPredicatePropertiesPresentValue = append(ItemBlockPredicatePropertiesPresentValue, ItemBlockPredicatePropertiesElement)
|
||||||
|
}
|
||||||
|
ret.Properties = &ItemBlockPredicatePropertiesPresentValue
|
||||||
|
}
|
||||||
|
err = ret.Nbt.Decode(r)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
err = ret.Components.Decode(r)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
func (ret *ItemBlockPredicate) Encode(w io.Writer) (err error) {
|
func (ret *ItemBlockPredicate) Encode(w io.Writer) (err error) {
|
||||||
err = proto_base.ToDoError
|
err = binary.Write(w, binary.BigEndian, ret.BlockSet != nil)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if ret.BlockSet != nil {
|
||||||
|
switch ItemBlockPredicateBlockSetKnownType := (*ret.BlockSet).(type) {
|
||||||
|
case string:
|
||||||
|
err = proto_base.EncodeVarInt(w, 0)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
err = proto_base.EncodeString(w, ItemBlockPredicateBlockSetKnownType)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
case int32:
|
||||||
|
err = proto_base.EncodeVarInt(w, ItemBlockPredicateBlockSetKnownType)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
err = proto_base.BadTypeError
|
||||||
|
}
|
||||||
|
}
|
||||||
|
err = binary.Write(w, binary.BigEndian, ret.Properties != nil)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if ret.Properties != nil {
|
||||||
|
err = proto_base.EncodeVarInt(w, int32(len(*ret.Properties)))
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
for iItemBlockPredicateProperties := range len(*ret.Properties) {
|
||||||
|
ItemBlockPredicatePropertiesInnerEncTmp := (*ret.Properties)[iItemBlockPredicateProperties]
|
||||||
|
err = ItemBlockPredicatePropertiesInnerEncTmp.Encode(w)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
ItemBlockPredicateNbtEncTmp := ret.Nbt
|
||||||
|
err = ItemBlockPredicateNbtEncTmp.Encode(w)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
ItemBlockPredicateComponentsEncTmp := ret.Components
|
||||||
|
err = ItemBlockPredicateComponentsEncTmp.Encode(w)
|
||||||
|
if err != nil {
|
||||||
|
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.8/protocol.json (sha256:79fe774bfc255dd281899c004fbb9c7adc40fb107de9353da1dd0371ea4b53af)
|
// source: minecraft-data/pc/1.8/protocol.json (sha256:79fe774bfc255dd281899c004fbb9c7adc40fb107de9353da1dd0371ea4b53af)
|
||||||
// version: v0.6.6-0.20260805170503-1d8f70c7fdae+dirty (go1.26.2)
|
// version: v0.6.6-0.20260805173638-56ac8e154ea1+dirty (go1.26.2)
|
||||||
package v1_8
|
package v1_8
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
|||||||
@@ -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: v0.6.6-0.20260805170503-1d8f70c7fdae+dirty (go1.26.2)
|
// version: v0.6.6-0.20260805173638-56ac8e154ea1+dirty (go1.26.2)
|
||||||
package v26_1
|
package v26_1
|
||||||
|
|
||||||
import (
|
import (
|
||||||
@@ -901,11 +901,42 @@ type IDSet struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (ret *IDSet) Decode(r io.ReadSeeker) (err error) {
|
func (ret *IDSet) Decode(r io.ReadSeeker) (err error) {
|
||||||
err = proto_base.ToDoError
|
var IDSetId int32
|
||||||
|
IDSetId, err = proto_base.DecodeVarInt(r)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if IDSetId != 0 {
|
||||||
|
ret.Val = IDSetId
|
||||||
|
} else {
|
||||||
|
var IDSetResult string
|
||||||
|
IDSetResult, err = proto_base.DecodeString(r)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
ret.Val = IDSetResult
|
||||||
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
func (ret *IDSet) Encode(w io.Writer) (err error) {
|
func (ret *IDSet) Encode(w io.Writer) (err error) {
|
||||||
err = proto_base.ToDoError
|
switch IDSetKnownType := ret.Val.(type) {
|
||||||
|
case string:
|
||||||
|
err = proto_base.EncodeVarInt(w, 0)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
err = proto_base.EncodeString(w, IDSetKnownType)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
case int32:
|
||||||
|
err = proto_base.EncodeVarInt(w, IDSetKnownType)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
err = proto_base.BadTypeError
|
||||||
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -965,11 +996,115 @@ type ItemBlockPredicate struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (ret *ItemBlockPredicate) Decode(r io.ReadSeeker) (err error) {
|
func (ret *ItemBlockPredicate) Decode(r io.ReadSeeker) (err error) {
|
||||||
err = proto_base.ToDoError
|
var ItemBlockPredicateBlockSetPresent bool
|
||||||
|
err = binary.Read(r, binary.BigEndian, &ItemBlockPredicateBlockSetPresent)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if ItemBlockPredicateBlockSetPresent {
|
||||||
|
var ItemBlockPredicateBlockSetPresentValue any
|
||||||
|
var ItemBlockPredicateBlockSetId int32
|
||||||
|
ItemBlockPredicateBlockSetId, err = proto_base.DecodeVarInt(r)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if ItemBlockPredicateBlockSetId != 0 {
|
||||||
|
ItemBlockPredicateBlockSetPresentValue = ItemBlockPredicateBlockSetId
|
||||||
|
} else {
|
||||||
|
var ItemBlockPredicateBlockSetResult string
|
||||||
|
ItemBlockPredicateBlockSetResult, err = proto_base.DecodeString(r)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
ItemBlockPredicateBlockSetPresentValue = ItemBlockPredicateBlockSetResult
|
||||||
|
}
|
||||||
|
ret.BlockSet = &ItemBlockPredicateBlockSetPresentValue
|
||||||
|
}
|
||||||
|
var ItemBlockPredicatePropertiesPresent bool
|
||||||
|
err = binary.Read(r, binary.BigEndian, &ItemBlockPredicatePropertiesPresent)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if ItemBlockPredicatePropertiesPresent {
|
||||||
|
var ItemBlockPredicatePropertiesPresentValue []ItemBlockProperty
|
||||||
|
var lItemBlockPredicateProperties int32
|
||||||
|
lItemBlockPredicateProperties, err = proto_base.DecodeVarInt(r)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
ItemBlockPredicatePropertiesPresentValue = []ItemBlockProperty{}
|
||||||
|
for range lItemBlockPredicateProperties {
|
||||||
|
var ItemBlockPredicatePropertiesElement ItemBlockProperty
|
||||||
|
err = ItemBlockPredicatePropertiesElement.Decode(r)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
ItemBlockPredicatePropertiesPresentValue = append(ItemBlockPredicatePropertiesPresentValue, ItemBlockPredicatePropertiesElement)
|
||||||
|
}
|
||||||
|
ret.Properties = &ItemBlockPredicatePropertiesPresentValue
|
||||||
|
}
|
||||||
|
err = ret.Nbt.Decode(r)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
err = ret.Components.Decode(r)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
func (ret *ItemBlockPredicate) Encode(w io.Writer) (err error) {
|
func (ret *ItemBlockPredicate) Encode(w io.Writer) (err error) {
|
||||||
err = proto_base.ToDoError
|
err = binary.Write(w, binary.BigEndian, ret.BlockSet != nil)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if ret.BlockSet != nil {
|
||||||
|
switch ItemBlockPredicateBlockSetKnownType := (*ret.BlockSet).(type) {
|
||||||
|
case string:
|
||||||
|
err = proto_base.EncodeVarInt(w, 0)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
err = proto_base.EncodeString(w, ItemBlockPredicateBlockSetKnownType)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
case int32:
|
||||||
|
err = proto_base.EncodeVarInt(w, ItemBlockPredicateBlockSetKnownType)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
err = proto_base.BadTypeError
|
||||||
|
}
|
||||||
|
}
|
||||||
|
err = binary.Write(w, binary.BigEndian, ret.Properties != nil)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if ret.Properties != nil {
|
||||||
|
err = proto_base.EncodeVarInt(w, int32(len(*ret.Properties)))
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
for iItemBlockPredicateProperties := range len(*ret.Properties) {
|
||||||
|
ItemBlockPredicatePropertiesInnerEncTmp := (*ret.Properties)[iItemBlockPredicateProperties]
|
||||||
|
err = ItemBlockPredicatePropertiesInnerEncTmp.Encode(w)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
ItemBlockPredicateNbtEncTmp := ret.Nbt
|
||||||
|
err = ItemBlockPredicateNbtEncTmp.Encode(w)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
ItemBlockPredicateComponentsEncTmp := ret.Components
|
||||||
|
err = ItemBlockPredicateComponentsEncTmp.Encode(w)
|
||||||
|
if err != nil {
|
||||||
|
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.2/protocol.json (sha256:7ba66411adcc68a668f38211e1b00eeb386a345d5eb16fadd6dc1c7f94bb175f)
|
// source: minecraft-data/pc/26.2/protocol.json (sha256:7ba66411adcc68a668f38211e1b00eeb386a345d5eb16fadd6dc1c7f94bb175f)
|
||||||
// version: v0.6.6-0.20260805170503-1d8f70c7fdae+dirty (go1.26.2)
|
// version: v0.6.6-0.20260805173638-56ac8e154ea1+dirty (go1.26.2)
|
||||||
package v26_2
|
package v26_2
|
||||||
|
|
||||||
import (
|
import (
|
||||||
@@ -901,11 +901,42 @@ type IDSet struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (ret *IDSet) Decode(r io.ReadSeeker) (err error) {
|
func (ret *IDSet) Decode(r io.ReadSeeker) (err error) {
|
||||||
err = proto_base.ToDoError
|
var IDSetId int32
|
||||||
|
IDSetId, err = proto_base.DecodeVarInt(r)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if IDSetId != 0 {
|
||||||
|
ret.Val = IDSetId
|
||||||
|
} else {
|
||||||
|
var IDSetResult string
|
||||||
|
IDSetResult, err = proto_base.DecodeString(r)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
ret.Val = IDSetResult
|
||||||
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
func (ret *IDSet) Encode(w io.Writer) (err error) {
|
func (ret *IDSet) Encode(w io.Writer) (err error) {
|
||||||
err = proto_base.ToDoError
|
switch IDSetKnownType := ret.Val.(type) {
|
||||||
|
case string:
|
||||||
|
err = proto_base.EncodeVarInt(w, 0)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
err = proto_base.EncodeString(w, IDSetKnownType)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
case int32:
|
||||||
|
err = proto_base.EncodeVarInt(w, IDSetKnownType)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
err = proto_base.BadTypeError
|
||||||
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -965,11 +996,115 @@ type ItemBlockPredicate struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (ret *ItemBlockPredicate) Decode(r io.ReadSeeker) (err error) {
|
func (ret *ItemBlockPredicate) Decode(r io.ReadSeeker) (err error) {
|
||||||
err = proto_base.ToDoError
|
var ItemBlockPredicateBlockSetPresent bool
|
||||||
|
err = binary.Read(r, binary.BigEndian, &ItemBlockPredicateBlockSetPresent)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if ItemBlockPredicateBlockSetPresent {
|
||||||
|
var ItemBlockPredicateBlockSetPresentValue any
|
||||||
|
var ItemBlockPredicateBlockSetId int32
|
||||||
|
ItemBlockPredicateBlockSetId, err = proto_base.DecodeVarInt(r)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if ItemBlockPredicateBlockSetId != 0 {
|
||||||
|
ItemBlockPredicateBlockSetPresentValue = ItemBlockPredicateBlockSetId
|
||||||
|
} else {
|
||||||
|
var ItemBlockPredicateBlockSetResult string
|
||||||
|
ItemBlockPredicateBlockSetResult, err = proto_base.DecodeString(r)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
ItemBlockPredicateBlockSetPresentValue = ItemBlockPredicateBlockSetResult
|
||||||
|
}
|
||||||
|
ret.BlockSet = &ItemBlockPredicateBlockSetPresentValue
|
||||||
|
}
|
||||||
|
var ItemBlockPredicatePropertiesPresent bool
|
||||||
|
err = binary.Read(r, binary.BigEndian, &ItemBlockPredicatePropertiesPresent)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if ItemBlockPredicatePropertiesPresent {
|
||||||
|
var ItemBlockPredicatePropertiesPresentValue []ItemBlockProperty
|
||||||
|
var lItemBlockPredicateProperties int32
|
||||||
|
lItemBlockPredicateProperties, err = proto_base.DecodeVarInt(r)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
ItemBlockPredicatePropertiesPresentValue = []ItemBlockProperty{}
|
||||||
|
for range lItemBlockPredicateProperties {
|
||||||
|
var ItemBlockPredicatePropertiesElement ItemBlockProperty
|
||||||
|
err = ItemBlockPredicatePropertiesElement.Decode(r)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
ItemBlockPredicatePropertiesPresentValue = append(ItemBlockPredicatePropertiesPresentValue, ItemBlockPredicatePropertiesElement)
|
||||||
|
}
|
||||||
|
ret.Properties = &ItemBlockPredicatePropertiesPresentValue
|
||||||
|
}
|
||||||
|
err = ret.Nbt.Decode(r)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
err = ret.Components.Decode(r)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
func (ret *ItemBlockPredicate) Encode(w io.Writer) (err error) {
|
func (ret *ItemBlockPredicate) Encode(w io.Writer) (err error) {
|
||||||
err = proto_base.ToDoError
|
err = binary.Write(w, binary.BigEndian, ret.BlockSet != nil)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if ret.BlockSet != nil {
|
||||||
|
switch ItemBlockPredicateBlockSetKnownType := (*ret.BlockSet).(type) {
|
||||||
|
case string:
|
||||||
|
err = proto_base.EncodeVarInt(w, 0)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
err = proto_base.EncodeString(w, ItemBlockPredicateBlockSetKnownType)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
case int32:
|
||||||
|
err = proto_base.EncodeVarInt(w, ItemBlockPredicateBlockSetKnownType)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
err = proto_base.BadTypeError
|
||||||
|
}
|
||||||
|
}
|
||||||
|
err = binary.Write(w, binary.BigEndian, ret.Properties != nil)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if ret.Properties != nil {
|
||||||
|
err = proto_base.EncodeVarInt(w, int32(len(*ret.Properties)))
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
for iItemBlockPredicateProperties := range len(*ret.Properties) {
|
||||||
|
ItemBlockPredicatePropertiesInnerEncTmp := (*ret.Properties)[iItemBlockPredicateProperties]
|
||||||
|
err = ItemBlockPredicatePropertiesInnerEncTmp.Encode(w)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
ItemBlockPredicateNbtEncTmp := ret.Nbt
|
||||||
|
err = ItemBlockPredicateNbtEncTmp.Encode(w)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
ItemBlockPredicateComponentsEncTmp := ret.Components
|
||||||
|
err = ItemBlockPredicateComponentsEncTmp.Encode(w)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -456,56 +456,38 @@ func RegistryEntryHolderSetDecoder(g *Generator, varToSet ast.Expr, dataRaw any,
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
var countType ast.Expr
|
idName := name + "Id"
|
||||||
countType, err = g.VisitType("varint")
|
varIntType, err := g.VisitNameAndData("varint", nil)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
IdVar := VarStmt(idName, varIntType)
|
||||||
|
idDecodeStatements, err := g.VisitDecoder(Ident(idName), "varint", name)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
baseType, err := g.VisitType(data.Base.Type)
|
baseType, err := g.VisitType(data.Base.Type)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
otherwiseArrayType, err := g.VisitNameAndData("array", map[string]any{"type": data.Otherwise.Type})
|
resName := name + "Result"
|
||||||
|
var basePath []ast.Stmt
|
||||||
|
basePath = append(basePath, VarStmt(resName, baseType))
|
||||||
|
baseDecodeStatements, err := g.VisitDecoder(Ident(resName), data.Base.Type, name+"Base")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
otherwiseType, err := g.VisitType(data.Otherwise.Type)
|
basePath = append(basePath, baseDecodeStatements...)
|
||||||
if err != nil {
|
basePath = append(basePath, Assign121(varToSet, Ident(resName)))
|
||||||
return
|
|
||||||
}
|
|
||||||
lName := "l" + util2.CamelCase(name)
|
|
||||||
s1 := VarStmt(lName, countType)
|
|
||||||
s2, err := g.VisitDecoder(Ident(lName), "varint", name)
|
|
||||||
if err != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
s3 := Assign121(Ident(lName), Sub(Ident(lName), NumLit(1)))
|
|
||||||
resultName := name + "Result"
|
|
||||||
b1s1 := VarStmt(resultName, baseType)
|
|
||||||
b1s2, err := g.VisitDecoder(Ident(resultName), data.Base.Type, resultName)
|
|
||||||
b1s3 := Assign121(varToSet, Ident(resultName))
|
|
||||||
b1s4 := Return()
|
|
||||||
var b1 []ast.Stmt
|
|
||||||
b1 = append(b1, b1s1)
|
|
||||||
b1 = append(b1, b1s2...)
|
|
||||||
b1 = append(b1, b1s3)
|
|
||||||
b1 = append(b1, b1s4)
|
|
||||||
|
|
||||||
tName := name + "Element"
|
idPath := IfElse(NotEquals(Ident(idName), NumLit(0)),
|
||||||
rangeStatements := Stmts(VarStmt(tName, otherwiseType))
|
NewBlockEllipsis(Assign121(varToSet, Ident(idName))),
|
||||||
rangeStatementsDecode, err := g.VisitDecoder(Ident(tName), data.Otherwise.Type, tName)
|
NewBlock(basePath))
|
||||||
rangeStatements = append(rangeStatements, rangeStatementsDecode...)
|
|
||||||
rangeStatements = append(rangeStatements, Assign121(Ident(resultName), Call(Ident("append"), Ident(resultName), Ident(tName))))
|
|
||||||
|
|
||||||
s5 := If(Equals(Ident(lName), NumLit(-1)), NewBlock(b1))
|
s = Stmts(IdVar)
|
||||||
s6 := VarStmt(resultName, otherwiseArrayType)
|
s = append(s, idDecodeStatements...)
|
||||||
s7 := ForRange(nil, Ident(lName), NewBlock(rangeStatements))
|
s = append(s, idPath)
|
||||||
s = append(s, s1)
|
|
||||||
s = append(s, s2...)
|
|
||||||
s = append(s, s3)
|
|
||||||
s = append(s, s5)
|
|
||||||
s = append(s, s6)
|
|
||||||
s = append(s, s7)
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -705,7 +687,7 @@ func (g *Generator) RegisterDecoderNatives() {
|
|||||||
"bool": SimpleTypeDecoder,
|
"bool": SimpleTypeDecoder,
|
||||||
|
|
||||||
"registryEntryHolder": RegistryEntryHolderDecoder,
|
"registryEntryHolder": RegistryEntryHolderDecoder,
|
||||||
"registryEntryHolderSet": ToDoDecoder, // RegistryEntryHolderSetDecoder
|
"registryEntryHolderSet": RegistryEntryHolderSetDecoder,
|
||||||
"entityMetadataLoop": EntityMetadataLoopDecoder,
|
"entityMetadataLoop": EntityMetadataLoopDecoder,
|
||||||
"topBitSetTerminatedArray": TopBitSetTerminatedArrayDecoder,
|
"topBitSetTerminatedArray": TopBitSetTerminatedArrayDecoder,
|
||||||
"todo": ToDoDecoder,
|
"todo": ToDoDecoder,
|
||||||
|
|||||||
@@ -490,6 +490,49 @@ func TopBitSetTerminatedArrayEncoder(g *Generator, varToSet ast.Expr, dataRaw an
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func RegistryEntryHolderSetEncoder(g *Generator, varToSet ast.Expr, dataRaw any, name string) (s []ast.Stmt, err error) {
|
||||||
|
var data protodef.RegistryEntryHolderSet
|
||||||
|
err = mapstructure.Decode(dataRaw, &data)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
baseType, err := g.VisitType(data.Base.Type)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
otherwiseType, err := g.VisitType(data.Otherwise.Type)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
knownTypeName := name + "KnownType"
|
||||||
|
|
||||||
|
zeroEncode, err := g.VisitEncoder(NumLit(0), "varint", name+"Zero")
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
baseEncodeStatements, err := g.VisitEncoder(Ident(knownTypeName), data.Base.Type, name+"Base")
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
baseEncodeStatements = append(zeroEncode, baseEncodeStatements...)
|
||||||
|
|
||||||
|
otherwiseEncodeStatements, err := g.VisitEncoder(Ident(knownTypeName), data.Otherwise.Type, name+"Otherwise")
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
statements := Stmts()
|
||||||
|
statements = append(statements, Case(Exprs(baseType), baseEncodeStatements))
|
||||||
|
statements = append(statements, Case(Exprs(otherwiseType), otherwiseEncodeStatements))
|
||||||
|
statements = append(statements, Case(nil, Stmts(Assign121(Ident("err"), Selector("proto_base", "BadTypeError")))))
|
||||||
|
|
||||||
|
s = Stmts(TypeSwitch(Define121(Ident(knownTypeName), TypeAssert(varToSet, Ident("type"))), NewBlock(statements)))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
func (g *Generator) RegisterEncoderNatives() {
|
func (g *Generator) RegisterEncoderNatives() {
|
||||||
g.EncoderNatives = map[string]FunctionGeneratorFunc{
|
g.EncoderNatives = map[string]FunctionGeneratorFunc{
|
||||||
"container": ContainerEncoder,
|
"container": ContainerEncoder,
|
||||||
@@ -526,7 +569,7 @@ func (g *Generator) RegisterEncoderNatives() {
|
|||||||
"bool": SimpleTypeEncoder,
|
"bool": SimpleTypeEncoder,
|
||||||
|
|
||||||
"registryEntryHolder": RegistryEntryHolderEncoder,
|
"registryEntryHolder": RegistryEntryHolderEncoder,
|
||||||
"registryEntryHolderSet": ToDoEncoder,
|
"registryEntryHolderSet": RegistryEntryHolderSetEncoder,
|
||||||
"entityMetadataLoop": EntityMetadataLoopEncoder,
|
"entityMetadataLoop": EntityMetadataLoopEncoder,
|
||||||
"topBitSetTerminatedArray": TopBitSetTerminatedArrayEncoder,
|
"topBitSetTerminatedArray": TopBitSetTerminatedArrayEncoder,
|
||||||
"todo": ToDoEncoder,
|
"todo": ToDoEncoder,
|
||||||
|
|||||||
Reference in New Issue
Block a user