1.21.6 Clientbound PlayState Packets

This commit is contained in:
2025-06-20 04:22:08 +08:00
parent e40ed2e534
commit 195d34f32d
204 changed files with 10118 additions and 3287 deletions

View File

@ -1,8 +1,7 @@
package component
import (
"git.konjactw.dev/patyhank/minego/codec/data/slot"
pk "github.com/Tnze/go-mc/net/packet"
"git.konjactw.dev/patyhank/minego/codec/slot"
)
//codec:gen
@ -12,8 +11,8 @@ type AttributeModifiers struct {
//codec:gen
type AttributeModifier struct {
AttributeID int32 `mc:"VarInt"`
ModifierID pk.Identifier
AttributeID int32 `mc:"VarInt"`
ModifierID string `mc:"Identifier"`
Value float64
Operation int32 `mc:"VarInt"` // 0=Add, 1=Multiply base, 2=Multiply total
Slot int32 `mc:"VarInt"` // 0=Any, 1=Main hand, 2=Off hand, etc.

View File

@ -1,6 +1,6 @@
package component
import "git.konjactw.dev/patyhank/minego/codec/data/slot"
import "git.konjactw.dev/patyhank/minego/codec/slot"
//codec:gen
type AxolotlVariant struct {

View File

@ -1,8 +1,7 @@
package component
import (
"git.konjactw.dev/patyhank/minego/codec/data/slot"
"github.com/Tnze/go-mc/net/packet"
"git.konjactw.dev/patyhank/minego/codec/slot"
pk "github.com/Tnze/go-mc/net/packet"
)
@ -13,9 +12,11 @@ type BannerPatterns struct {
//codec:gen
type BannerLayer struct {
PatternType int32 `mc:"VarInt"`
AssetID pk.Option[packet.Identifier, *packet.Identifier]
TranslationKey pk.Option[pk.String, *pk.String]
Pattern int32 `mc:"VarInt"`
//opt:enum:Pattern:0
AssetID pk.Identifier
//opt:enum:Pattern:0
TranslationKey string
Color DyeColor
}

View File

@ -1,6 +1,6 @@
package component
import "git.konjactw.dev/patyhank/minego/codec/data/slot"
import "git.konjactw.dev/patyhank/minego/codec/slot"
//codec:gen
type BaseColor struct {

View File

@ -1,7 +1,7 @@
package component
import (
"git.konjactw.dev/patyhank/minego/codec/data/slot"
"git.konjactw.dev/patyhank/minego/codec/slot"
"github.com/Tnze/go-mc/nbt"
)

View File

@ -1,7 +1,7 @@
package component
import (
"git.konjactw.dev/patyhank/minego/codec/data/slot"
"git.konjactw.dev/patyhank/minego/codec/slot"
"github.com/Tnze/go-mc/nbt"
)

View File

@ -1,6 +1,6 @@
package component
import "git.konjactw.dev/patyhank/minego/codec/data/slot"
import "git.konjactw.dev/patyhank/minego/codec/slot"
//codec:gen
type BlockState struct {

View File

@ -1,7 +1,7 @@
package component
import (
"git.konjactw.dev/patyhank/minego/codec/data/slot"
"git.konjactw.dev/patyhank/minego/codec/slot"
pk "github.com/Tnze/go-mc/net/packet"
)
@ -14,16 +14,29 @@ type BlocksAttacks struct {
ItemDamageBase float32
ItemDamageFactor float32
BypassedBy pk.Option[pk.Identifier, *pk.Identifier]
BlockSound pk.Option[SoundEvent, *SoundEvent]
DisableSound pk.Option[SoundEvent, *SoundEvent]
HasBlockSound bool
//opt:optional:HasBlockSound
BlockSoundID int32 `mc:"VarInt"`
//opt:optional:HasBlockSound
//opt:id:BlockSoundID
BlockSound SoundEvent
HasDisableSound bool
//opt:optional:HasDisableSound
DisableSoundID int32 `mc:"VarInt"`
//opt:optional:HasDisableSound
//opt:id:DisableSoundID
DisableSound SoundEvent
}
//codec:gen
type DamageReduction struct {
HorizontalBlockingAngle float32
Type pk.Option[pk.IDSet, *pk.IDSet]
Base float32
Factor float32
HasType bool
//opt:optional:HasType
Type pk.IDSet
Base float32
Factor float32
}
func (*BlocksAttacks) Type() slot.ComponentID {

View File

@ -1,7 +1,7 @@
package component
import (
"git.konjactw.dev/patyhank/minego/codec/data/slot"
"git.konjactw.dev/patyhank/minego/codec/slot"
"github.com/Tnze/go-mc/net/packet"
)

View File

@ -1,7 +1,7 @@
package component
import (
"git.konjactw.dev/patyhank/minego/codec/data/slot"
"git.konjactw.dev/patyhank/minego/codec/slot"
"github.com/Tnze/go-mc/nbt"
)

View File

@ -1,6 +1,6 @@
package component
import "git.konjactw.dev/patyhank/minego/codec/data/slot"
import "git.konjactw.dev/patyhank/minego/codec/slot"
//codec:gen
type BundleContents struct {

View File

@ -1,6 +1,6 @@
package component
import "git.konjactw.dev/patyhank/minego/codec/data/slot"
import "git.konjactw.dev/patyhank/minego/codec/slot"
//codec:gen
type CanBreak struct {

View File

@ -3,7 +3,7 @@ package component
import (
"io"
"git.konjactw.dev/patyhank/minego/codec/data/slot"
"git.konjactw.dev/patyhank/minego/codec/slot"
"github.com/Tnze/go-mc/nbt"
pk "github.com/Tnze/go-mc/net/packet"
)

View File

@ -1,6 +1,6 @@
package component
import "git.konjactw.dev/patyhank/minego/codec/data/slot"
import "git.konjactw.dev/patyhank/minego/codec/slot"
//codec:gen
type CatCollar struct {

View File

@ -1,6 +1,6 @@
package component
import "git.konjactw.dev/patyhank/minego/codec/data/slot"
import "git.konjactw.dev/patyhank/minego/codec/slot"
//codec:gen
type CatVariant struct {

View File

@ -1,6 +1,6 @@
package component
import "git.konjactw.dev/patyhank/minego/codec/data/slot"
import "git.konjactw.dev/patyhank/minego/codec/slot"
//codec:gen
type ChargedProjectiles struct {

View File

@ -3,7 +3,7 @@ package component
import (
"io"
"git.konjactw.dev/patyhank/minego/codec/data/slot"
"git.konjactw.dev/patyhank/minego/codec/slot"
"github.com/Tnze/go-mc/net/packet"
)

File diff suppressed because it is too large Load Diff

View File

@ -1,102 +1,294 @@
package component
import "git.konjactw.dev/patyhank/minego/codec/data/slot"
import "git.konjactw.dev/patyhank/minego/codec/slot"
func init() {
slot.RegisterComponent(&CustomData{})
slot.RegisterComponent(&MaxStackSize{})
slot.RegisterComponent(&MaxDamage{})
slot.RegisterComponent(&Damage{})
slot.RegisterComponent(&Unbreakable{})
slot.RegisterComponent(&CustomName{})
slot.RegisterComponent(&ItemName{})
slot.RegisterComponent(&ItemModel{})
slot.RegisterComponent(&Lore{})
slot.RegisterComponent(&Rarity{})
slot.RegisterComponent(&Enchantments{})
slot.RegisterComponent(&CanPlaceOn{})
slot.RegisterComponent(&CanBreak{})
slot.RegisterComponent(&AttributeModifiers{})
slot.RegisterComponent(&CustomModelData{})
slot.RegisterComponent(&TooltipDisplay{})
slot.RegisterComponent(&RepairCost{})
slot.RegisterComponent(&CreativeSlotLock{})
slot.RegisterComponent(&EnchantmentGlintOverride{})
slot.RegisterComponent(&IntangibleProjectile{})
slot.RegisterComponent(&Food{})
slot.RegisterComponent(&Consumable{})
slot.RegisterComponent(&UseRemainder{})
slot.RegisterComponent(&UseCooldown{})
slot.RegisterComponent(&DamageResistant{})
slot.RegisterComponent(&Tool{})
slot.RegisterComponent(&Weapon{})
slot.RegisterComponent(&Enchantable{})
slot.RegisterComponent(&Equippable{})
slot.RegisterComponent(&Repairable{})
slot.RegisterComponent(&Glider{})
slot.RegisterComponent(&TooltipStyle{})
slot.RegisterComponent(&DeathProtection{})
slot.RegisterComponent(&BlocksAttacks{})
slot.RegisterComponent(&StoredEnchantments{})
slot.RegisterComponent(&DyedColor{})
slot.RegisterComponent(&MapColor{})
slot.RegisterComponent(&MapID{})
slot.RegisterComponent(&MapDecorations{})
slot.RegisterComponent(&MapPostProcessing{})
slot.RegisterComponent(&ChargedProjectiles{})
slot.RegisterComponent(&BundleContents{})
slot.RegisterComponent(&PotionContents{})
slot.RegisterComponent(&PotionDurationScale{})
slot.RegisterComponent(&SuspiciousStewEffects{})
slot.RegisterComponent(&WritableBookContent{})
slot.RegisterComponent(&WrittenBookContent{})
slot.RegisterComponent(&Trim{})
slot.RegisterComponent(&DebugStickState{})
slot.RegisterComponent(&EntityData{})
slot.RegisterComponent(&BucketEntityData{})
slot.RegisterComponent(&BlockEntityData{})
slot.RegisterComponent(&Instrument{})
slot.RegisterComponent(&ProvidesTrimMaterial{})
slot.RegisterComponent(&OminousBottleAmplifier{})
slot.RegisterComponent(&JukeboxPlayable{})
slot.RegisterComponent(&ProvidesBannerPatterns{})
slot.RegisterComponent(&Recipes{})
slot.RegisterComponent(&LodestoneTracker{})
slot.RegisterComponent(&FireworkExplosion{})
slot.RegisterComponent(&Fireworks{})
slot.RegisterComponent(&Profile{})
slot.RegisterComponent(&NoteBlockSound{})
slot.RegisterComponent(&BannerPatterns{})
slot.RegisterComponent(&BaseColor{})
slot.RegisterComponent(&PotDecorations{})
slot.RegisterComponent(&Container{})
slot.RegisterComponent(&BlockState{})
slot.RegisterComponent(&Bees{})
slot.RegisterComponent(&Lock{})
slot.RegisterComponent(&ContainerLoot{})
slot.RegisterComponent(&BreakSound{})
slot.RegisterComponent(&VillagerVariant{})
slot.RegisterComponent(&WolfVariant{})
slot.RegisterComponent(&WolfSoundVariant{})
slot.RegisterComponent(&WolfCollar{})
slot.RegisterComponent(&FoxVariant{})
slot.RegisterComponent(&SalmonSize{})
slot.RegisterComponent(&ParrotVariant{})
slot.RegisterComponent(&TropicalFishPattern{})
slot.RegisterComponent(&TropicalFishBaseColor{})
slot.RegisterComponent(&TropicalFishPatternColor{})
slot.RegisterComponent(&MooshroomVariant{})
slot.RegisterComponent(&RabbitVariant{})
slot.RegisterComponent(&PigVariant{})
slot.RegisterComponent(&CowVariant{})
slot.RegisterComponent(&ChickenVariant{})
slot.RegisterComponent(&FrogVariant{})
slot.RegisterComponent(&HorseVariant{})
slot.RegisterComponent(&PaintingVariant{})
slot.RegisterComponent(&LlamaVariant{})
slot.RegisterComponent(&AxolotlVariant{})
slot.RegisterComponent(&CatVariant{})
slot.RegisterComponent(&CatCollar{})
slot.RegisterComponent(&SheepColor{})
slot.RegisterComponent(&ShulkerColor{})
slot.RegisterComponent(func() slot.Component {
return &CustomData{}
})
slot.RegisterComponent(func() slot.Component {
return &MaxStackSize{}
})
slot.RegisterComponent(func() slot.Component {
return &MaxDamage{}
})
slot.RegisterComponent(func() slot.Component {
return &Damage{}
})
slot.RegisterComponent(func() slot.Component {
return &Unbreakable{}
})
slot.RegisterComponent(func() slot.Component {
return &CustomName{}
})
slot.RegisterComponent(func() slot.Component {
return &ItemName{}
})
slot.RegisterComponent(func() slot.Component {
return &ItemModel{}
})
slot.RegisterComponent(func() slot.Component {
return &Lore{}
})
slot.RegisterComponent(func() slot.Component {
return &Rarity{}
})
slot.RegisterComponent(func() slot.Component {
return &Enchantments{}
})
slot.RegisterComponent(func() slot.Component {
return &CanPlaceOn{}
})
slot.RegisterComponent(func() slot.Component {
return &CanBreak{}
})
slot.RegisterComponent(func() slot.Component {
return &AttributeModifiers{}
})
slot.RegisterComponent(func() slot.Component {
return &CustomModelData{}
})
slot.RegisterComponent(func() slot.Component {
return &TooltipDisplay{}
})
slot.RegisterComponent(func() slot.Component {
return &RepairCost{}
})
slot.RegisterComponent(func() slot.Component {
return &CreativeSlotLock{}
})
slot.RegisterComponent(func() slot.Component {
return &EnchantmentGlintOverride{}
})
slot.RegisterComponent(func() slot.Component {
return &IntangibleProjectile{}
})
slot.RegisterComponent(func() slot.Component {
return &Food{}
})
slot.RegisterComponent(func() slot.Component {
return &Consumable{}
})
slot.RegisterComponent(func() slot.Component {
return &UseRemainder{}
})
slot.RegisterComponent(func() slot.Component {
return &UseCooldown{}
})
slot.RegisterComponent(func() slot.Component {
return &DamageResistant{}
})
slot.RegisterComponent(func() slot.Component {
return &Tool{}
})
slot.RegisterComponent(func() slot.Component {
return &Weapon{}
})
slot.RegisterComponent(func() slot.Component {
return &Enchantable{}
})
slot.RegisterComponent(func() slot.Component {
return &Equippable{}
})
slot.RegisterComponent(func() slot.Component {
return &Repairable{}
})
slot.RegisterComponent(func() slot.Component {
return &Glider{}
})
slot.RegisterComponent(func() slot.Component {
return &TooltipStyle{}
})
slot.RegisterComponent(func() slot.Component {
return &DeathProtection{}
})
slot.RegisterComponent(func() slot.Component {
return &BlocksAttacks{}
})
slot.RegisterComponent(func() slot.Component {
return &StoredEnchantments{}
})
slot.RegisterComponent(func() slot.Component {
return &DyedColor{}
})
slot.RegisterComponent(func() slot.Component {
return &MapColor{}
})
slot.RegisterComponent(func() slot.Component {
return &MapID{}
})
slot.RegisterComponent(func() slot.Component {
return &MapDecorations{}
})
slot.RegisterComponent(func() slot.Component {
return &MapPostProcessing{}
})
slot.RegisterComponent(func() slot.Component {
return &ChargedProjectiles{}
})
slot.RegisterComponent(func() slot.Component {
return &BundleContents{}
})
slot.RegisterComponent(func() slot.Component {
return &PotionContents{}
})
slot.RegisterComponent(func() slot.Component {
return &PotionDurationScale{}
})
slot.RegisterComponent(func() slot.Component {
return &SuspiciousStewEffects{}
})
slot.RegisterComponent(func() slot.Component {
return &WritableBookContent{}
})
slot.RegisterComponent(func() slot.Component {
return &WrittenBookContent{}
})
slot.RegisterComponent(func() slot.Component {
return &Trim{}
})
slot.RegisterComponent(func() slot.Component {
return &DebugStickState{}
})
slot.RegisterComponent(func() slot.Component {
return &EntityData{}
})
slot.RegisterComponent(func() slot.Component {
return &BucketEntityData{}
})
slot.RegisterComponent(func() slot.Component {
return &BlockEntityData{}
})
slot.RegisterComponent(func() slot.Component {
return &Instrument{}
})
slot.RegisterComponent(func() slot.Component {
return &ProvidesTrimMaterial{}
})
slot.RegisterComponent(func() slot.Component {
return &OminousBottleAmplifier{}
})
slot.RegisterComponent(func() slot.Component {
return &JukeboxPlayable{}
})
slot.RegisterComponent(func() slot.Component {
return &ProvidesBannerPatterns{}
})
slot.RegisterComponent(func() slot.Component {
return &Recipes{}
})
slot.RegisterComponent(func() slot.Component {
return &LodestoneTracker{}
})
slot.RegisterComponent(func() slot.Component {
return &FireworkExplosion{}
})
slot.RegisterComponent(func() slot.Component {
return &Fireworks{}
})
slot.RegisterComponent(func() slot.Component {
return &Profile{}
})
slot.RegisterComponent(func() slot.Component {
return &NoteBlockSound{}
})
slot.RegisterComponent(func() slot.Component {
return &BannerPatterns{}
})
slot.RegisterComponent(func() slot.Component {
return &BaseColor{}
})
slot.RegisterComponent(func() slot.Component {
return &PotDecorations{}
})
slot.RegisterComponent(func() slot.Component {
return &Container{}
})
slot.RegisterComponent(func() slot.Component {
return &BlockState{}
})
slot.RegisterComponent(func() slot.Component {
return &Bees{}
})
slot.RegisterComponent(func() slot.Component {
return &Lock{}
})
slot.RegisterComponent(func() slot.Component {
return &ContainerLoot{}
})
slot.RegisterComponent(func() slot.Component {
return &BreakSound{}
})
slot.RegisterComponent(func() slot.Component {
return &VillagerVariant{}
})
slot.RegisterComponent(func() slot.Component {
return &WolfVariant{}
})
slot.RegisterComponent(func() slot.Component {
return &WolfSoundVariant{}
})
slot.RegisterComponent(func() slot.Component {
return &WolfCollar{}
})
slot.RegisterComponent(func() slot.Component {
return &FoxVariant{}
})
slot.RegisterComponent(func() slot.Component {
return &SalmonSize{}
})
slot.RegisterComponent(func() slot.Component {
return &ParrotVariant{}
})
slot.RegisterComponent(func() slot.Component {
return &TropicalFishPattern{}
})
slot.RegisterComponent(func() slot.Component {
return &TropicalFishBaseColor{}
})
slot.RegisterComponent(func() slot.Component {
return &TropicalFishPatternColor{}
})
slot.RegisterComponent(func() slot.Component {
return &MooshroomVariant{}
})
slot.RegisterComponent(func() slot.Component {
return &RabbitVariant{}
})
slot.RegisterComponent(func() slot.Component {
return &PigVariant{}
})
slot.RegisterComponent(func() slot.Component {
return &CowVariant{}
})
slot.RegisterComponent(func() slot.Component {
return &ChickenVariant{}
})
slot.RegisterComponent(func() slot.Component {
return &FrogVariant{}
})
slot.RegisterComponent(func() slot.Component {
return &HorseVariant{}
})
slot.RegisterComponent(func() slot.Component {
return &PaintingVariant{}
})
slot.RegisterComponent(func() slot.Component {
return &LlamaVariant{}
})
slot.RegisterComponent(func() slot.Component {
return &AxolotlVariant{}
})
slot.RegisterComponent(func() slot.Component {
return &CatVariant{}
})
slot.RegisterComponent(func() slot.Component {
return &CatCollar{}
})
slot.RegisterComponent(func() slot.Component {
return &SheepColor{}
})
slot.RegisterComponent(func() slot.Component {
return &ShulkerColor{}
})
}

View File

@ -1,29 +1,42 @@
package component
import (
"git.konjactw.dev/patyhank/minego/codec/data/slot"
"git.konjactw.dev/patyhank/minego/codec/slot"
"github.com/Tnze/go-mc/net/packet"
)
//codec:gen
type Consumable struct {
ConsumeSeconds float32
Animation int32 `mc:"VarInt"` // 0=none, 1=eat, 2=drink, etc.
Sound SoundEvent
ConsumeSeconds float32
Animation int32 `mc:"VarInt"` // 0=none, 1=eat, 2=drink, etc.
SoundID int32 `mc:"VarInt"`
//opt:id:SoundID
SoundEvent *SoundEvent
HasConsumeParticles bool
Effects []ConsumeEffect
}
//codec:gen
type SoundEvent struct {
SoundEventID packet.Identifier
FixedRange packet.Option[packet.Float, *packet.Float]
SoundEventID packet.Identifier
HasFixedRange bool
//opt:optional:HasFixedRange
FixedRange float32
}
//codec:gen
type ConsumeEffect struct {
Type int32 `mc:"VarInt"`
// Data varies by type - would need custom handling
//opt:enum:Type:0
ApplyEffects []PotionEffect
//opt:enum:Type:0
ApplyProbability float32
//opt:enum:Type:1
RemoveEffects packet.IDSet
//opt:enum:Type:3
TeleportRandomlyDiameter float32
//opt:enum:Type:4
PlaySound SoundEvent
}
func (*Consumable) Type() slot.ComponentID {

View File

@ -1,6 +1,6 @@
package component
import "git.konjactw.dev/patyhank/minego/codec/data/slot"
import "git.konjactw.dev/patyhank/minego/codec/slot"
//codec:gen
type Container struct {

View File

@ -1,7 +1,7 @@
package component
import (
"git.konjactw.dev/patyhank/minego/codec/data/slot"
"git.konjactw.dev/patyhank/minego/codec/slot"
"github.com/Tnze/go-mc/nbt"
)

View File

@ -1,6 +1,6 @@
package component
import "git.konjactw.dev/patyhank/minego/codec/data/slot"
import "git.konjactw.dev/patyhank/minego/codec/slot"
//codec:gen
type CowVariant struct {

View File

@ -1,6 +1,6 @@
package component
import "git.konjactw.dev/patyhank/minego/codec/data/slot"
import "git.konjactw.dev/patyhank/minego/codec/slot"
//codec:gen
type CreativeSlotLock struct {

View File

@ -1,7 +1,7 @@
package component
import (
"git.konjactw.dev/patyhank/minego/codec/data/slot"
"git.konjactw.dev/patyhank/minego/codec/slot"
"github.com/Tnze/go-mc/nbt"
)

View File

@ -1,6 +1,6 @@
package component
import "git.konjactw.dev/patyhank/minego/codec/data/slot"
import "git.konjactw.dev/patyhank/minego/codec/slot"
//codec:gen
type CustomModelData struct {

View File

@ -1,7 +1,7 @@
package component
import (
"git.konjactw.dev/patyhank/minego/codec/data/slot"
"git.konjactw.dev/patyhank/minego/codec/slot"
"github.com/Tnze/go-mc/chat"
)

View File

@ -1,6 +1,6 @@
package component
import "git.konjactw.dev/patyhank/minego/codec/data/slot"
import "git.konjactw.dev/patyhank/minego/codec/slot"
//codec:gen
type Damage struct {

View File

@ -1,7 +1,7 @@
package component
import (
"git.konjactw.dev/patyhank/minego/codec/data/slot"
"git.konjactw.dev/patyhank/minego/codec/slot"
pk "github.com/Tnze/go-mc/net/packet"
)

View File

@ -1,6 +1,6 @@
package component
import "git.konjactw.dev/patyhank/minego/codec/data/slot"
import "git.konjactw.dev/patyhank/minego/codec/slot"
//codec:gen
type DeathProtection struct {

View File

@ -1,7 +1,7 @@
package component
import (
"git.konjactw.dev/patyhank/minego/codec/data/slot"
"git.konjactw.dev/patyhank/minego/codec/slot"
"github.com/Tnze/go-mc/nbt"
)

View File

@ -1,6 +1,6 @@
package component
import "git.konjactw.dev/patyhank/minego/codec/data/slot"
import "git.konjactw.dev/patyhank/minego/codec/slot"
//codec:gen
type DyedColor struct {

View File

@ -1,6 +1,6 @@
package component
import "git.konjactw.dev/patyhank/minego/codec/data/slot"
import "git.konjactw.dev/patyhank/minego/codec/slot"
//codec:gen
type Enchantable struct {

View File

@ -1,6 +1,6 @@
package component
import "git.konjactw.dev/patyhank/minego/codec/data/slot"
import "git.konjactw.dev/patyhank/minego/codec/slot"
//codec:gen
type EnchantmentGlintOverride struct {

View File

@ -1,15 +1,16 @@
package component
import "git.konjactw.dev/patyhank/minego/codec/data/slot"
import "git.konjactw.dev/patyhank/minego/codec/slot"
//codec:gen
type Enchantments struct {
Enchantments []Enchantment
}
//codec:gen
type Enchantment struct {
TypeID int32 `mc:"VarInt"`
Level int32 `mc:"VarInt"`
Type int32 `mc:"VarInt"`
Level int32 `mc:"VarInt"`
}
func (*Enchantments) Type() slot.ComponentID {

View File

@ -1,7 +1,7 @@
package component
import (
"git.konjactw.dev/patyhank/minego/codec/data/slot"
"git.konjactw.dev/patyhank/minego/codec/slot"
"github.com/Tnze/go-mc/nbt"
)

View File

@ -1,23 +1,28 @@
package component
import (
"git.konjactw.dev/patyhank/minego/codec/data/slot"
"git.konjactw.dev/patyhank/minego/codec/slot"
pk "github.com/Tnze/go-mc/net/packet"
)
//codec:gen
type Equippable struct {
Slot int32 `mc:"VarInt"` // 0=mainhand, 1=feet, 2=legs, etc.
EquipSound SoundEvent
HasModel bool
Model pk.Option[pk.Identifier, *pk.Identifier]
HasCameraOverlay bool
CameraOverlay pk.Option[pk.Identifier, *pk.Identifier]
Slot int32 `mc:"VarInt"` // 0=mainhand, 1=feet, 2=legs, etc.
EquipSoundID int32 `mc:"VarInt"`
//opt:id:EquipSoundID
EquipSoundEvent *SoundEvent
HasModel bool
//opt:optional:HasModel
Model string `mc:"Identifier"`
HasCameraOverlay bool
//opt:optional:HasCameraOverlay
CameraOverlay string `mc:"Identifier"`
HasAllowedEntities bool
AllowedEntities pk.Option[pk.IDSet, *pk.IDSet]
Dispensable bool
Swappable bool
DamageOnHurt bool
//opt:optional:HasAllowedEntities
AllowedEntitiesID pk.IDSet
Dispensable bool
Swappable bool
DamageOnHurt bool
}
func (*Equippable) Type() slot.ComponentID {

View File

@ -1,6 +1,6 @@
package component
import "git.konjactw.dev/patyhank/minego/codec/data/slot"
import "git.konjactw.dev/patyhank/minego/codec/slot"
//codec:gen
type FireworkExplosion struct {
@ -9,9 +9,9 @@ type FireworkExplosion struct {
//codec:gen
type FireworkExplosionData struct {
Shape int32 `mc:"VarInt"`
Colors []int32 `mc:"PrefixedArray"`
FadeColors []int32 `mc:"PrefixedArray"`
Shape int32 `mc:"VarInt"`
Colors []int32
FadeColors []int32
HasTrail bool
HasTwinkle bool
}

View File

@ -1,6 +1,6 @@
package component
import "git.konjactw.dev/patyhank/minego/codec/data/slot"
import "git.konjactw.dev/patyhank/minego/codec/slot"
//codec:gen
type Fireworks struct {

View File

@ -1,6 +1,6 @@
package component
import "git.konjactw.dev/patyhank/minego/codec/data/slot"
import "git.konjactw.dev/patyhank/minego/codec/slot"
//codec:gen
type Food struct {

View File

@ -1,6 +1,6 @@
package component
import "git.konjactw.dev/patyhank/minego/codec/data/slot"
import "git.konjactw.dev/patyhank/minego/codec/slot"
//codec:gen
type FoxVariant struct {

View File

@ -1,6 +1,6 @@
package component
import "git.konjactw.dev/patyhank/minego/codec/data/slot"
import "git.konjactw.dev/patyhank/minego/codec/slot"
//codec:gen
type FrogVariant struct {

View File

@ -1,6 +1,6 @@
package component
import "git.konjactw.dev/patyhank/minego/codec/data/slot"
import "git.konjactw.dev/patyhank/minego/codec/slot"
//codec:gen
type Glider struct {

View File

@ -1,6 +1,6 @@
package component
import "git.konjactw.dev/patyhank/minego/codec/data/slot"
import "git.konjactw.dev/patyhank/minego/codec/slot"
//codec:gen
type HorseVariant struct {

View File

@ -1,7 +1,7 @@
package component
import (
"git.konjactw.dev/patyhank/minego/codec/data/slot"
"git.konjactw.dev/patyhank/minego/codec/slot"
"github.com/Tnze/go-mc/chat"
"github.com/Tnze/go-mc/net/packet"
)

View File

@ -1,7 +1,7 @@
package component
import (
"git.konjactw.dev/patyhank/minego/codec/data/slot"
"git.konjactw.dev/patyhank/minego/codec/slot"
"github.com/Tnze/go-mc/nbt"
)

View File

@ -1,7 +1,7 @@
package component
import (
"git.konjactw.dev/patyhank/minego/codec/data/slot"
"git.konjactw.dev/patyhank/minego/codec/slot"
"github.com/Tnze/go-mc/net/packet"
)

View File

@ -1,7 +1,7 @@
package component
import (
"git.konjactw.dev/patyhank/minego/codec/data/slot"
"git.konjactw.dev/patyhank/minego/codec/slot"
"github.com/Tnze/go-mc/chat"
)

View File

@ -3,7 +3,7 @@ package component
import (
"io"
"git.konjactw.dev/patyhank/minego/codec/data/slot"
"git.konjactw.dev/patyhank/minego/codec/slot"
"github.com/Tnze/go-mc/chat"
"github.com/Tnze/go-mc/net/packet"
)

View File

@ -1,6 +1,6 @@
package component
import "git.konjactw.dev/patyhank/minego/codec/data/slot"
import "git.konjactw.dev/patyhank/minego/codec/slot"
//codec:gen
type LlamaVariant struct {

View File

@ -1,7 +1,7 @@
package component
import (
"git.konjactw.dev/patyhank/minego/codec/data/slot"
"git.konjactw.dev/patyhank/minego/codec/slot"
"github.com/Tnze/go-mc/nbt"
)

View File

@ -1,7 +1,7 @@
package component
import (
"git.konjactw.dev/patyhank/minego/codec/data/slot"
"git.konjactw.dev/patyhank/minego/codec/slot"
"github.com/Tnze/go-mc/net/packet"
pk "github.com/Tnze/go-mc/net/packet"
)

View File

@ -1,7 +1,7 @@
package component
import (
"git.konjactw.dev/patyhank/minego/codec/data/slot"
"git.konjactw.dev/patyhank/minego/codec/slot"
"github.com/Tnze/go-mc/chat"
)

View File

@ -1,6 +1,6 @@
package component
import "git.konjactw.dev/patyhank/minego/codec/data/slot"
import "git.konjactw.dev/patyhank/minego/codec/slot"
//codec:gen
type MapColor struct {

View File

@ -1,7 +1,7 @@
package component
import (
"git.konjactw.dev/patyhank/minego/codec/data/slot"
"git.konjactw.dev/patyhank/minego/codec/slot"
"github.com/Tnze/go-mc/nbt"
)

View File

@ -1,6 +1,6 @@
package component
import "git.konjactw.dev/patyhank/minego/codec/data/slot"
import "git.konjactw.dev/patyhank/minego/codec/slot"
//codec:gen
type MapID struct {

View File

@ -1,6 +1,6 @@
package component
import "git.konjactw.dev/patyhank/minego/codec/data/slot"
import "git.konjactw.dev/patyhank/minego/codec/slot"
//codec:gen
type MapPostProcessing struct {

View File

@ -1,6 +1,6 @@
package component
import "git.konjactw.dev/patyhank/minego/codec/data/slot"
import "git.konjactw.dev/patyhank/minego/codec/slot"
//codec:gen
type MaxDamage struct {

View File

@ -1,6 +1,6 @@
package component
import "git.konjactw.dev/patyhank/minego/codec/data/slot"
import "git.konjactw.dev/patyhank/minego/codec/slot"
//codec:gen
type MaxStackSize struct {

View File

@ -1,6 +1,6 @@
package component
import "git.konjactw.dev/patyhank/minego/codec/data/slot"
import "git.konjactw.dev/patyhank/minego/codec/slot"
//codec:gen
type MooshroomVariant struct {

View File

@ -1,7 +1,7 @@
package component
import (
"git.konjactw.dev/patyhank/minego/codec/data/slot"
"git.konjactw.dev/patyhank/minego/codec/slot"
"github.com/Tnze/go-mc/net/packet"
)

View File

@ -1,6 +1,6 @@
package component
import "git.konjactw.dev/patyhank/minego/codec/data/slot"
import "git.konjactw.dev/patyhank/minego/codec/slot"
//codec:gen
type OminousBottleAmplifier struct {

View File

@ -1,7 +1,7 @@
package component
import (
"git.konjactw.dev/patyhank/minego/codec/data/slot"
"git.konjactw.dev/patyhank/minego/codec/slot"
"github.com/Tnze/go-mc/chat"
pk "github.com/Tnze/go-mc/net/packet"
)

View File

@ -1,6 +1,6 @@
package component
import "git.konjactw.dev/patyhank/minego/codec/data/slot"
import "git.konjactw.dev/patyhank/minego/codec/slot"
//codec:gen
type ParrotVariant struct {

View File

@ -1,6 +1,6 @@
package component
import "git.konjactw.dev/patyhank/minego/codec/data/slot"
import "git.konjactw.dev/patyhank/minego/codec/slot"
//codec:gen
type PigVariant struct {

View File

@ -1,6 +1,6 @@
package component
import "git.konjactw.dev/patyhank/minego/codec/data/slot"
import "git.konjactw.dev/patyhank/minego/codec/slot"
//codec:gen
type PotDecorations struct {

View File

@ -1,8 +1,7 @@
package component
import (
"git.konjactw.dev/patyhank/minego/codec/data/slot"
pk "github.com/Tnze/go-mc/net/packet"
"git.konjactw.dev/patyhank/minego/codec/slot"
)
//codec:gen
@ -19,23 +18,19 @@ type PotionContents struct {
type PotionEffect struct {
TypeID int32 `mc:"VarInt"`
Amplifier int32 `mc:"VarInt"`
Duration int32 `mc:"VarInt"`
Ambient bool
ShowParticles bool
ShowIcon bool
HasHiddenEffect bool
HiddenEffect pk.Option[PotionEffectExtraDetails, *PotionEffectExtraDetails]
Details PotionEffectDetails
}
//codec:gen
type PotionEffectExtraDetails struct {
type PotionEffectDetails struct {
Amplifier int32 `mc:"VarInt"`
Duration int32 `mc:"VarInt"`
Ambient bool
ShowParticles bool
ShowIcon bool
HasHiddenEffect bool
//opt:optional:HasHiddenEffect
HiddenEffect *PotionEffect
}
func (*PotionContents) Type() slot.ComponentID {

View File

@ -1,6 +1,6 @@
package component
import "git.konjactw.dev/patyhank/minego/codec/data/slot"
import "git.konjactw.dev/patyhank/minego/codec/slot"
//codec:gen
type PotionDurationScale struct {

View File

@ -1,7 +1,7 @@
package component
import (
"git.konjactw.dev/patyhank/minego/codec/data/slot"
"git.konjactw.dev/patyhank/minego/codec/slot"
pk "github.com/Tnze/go-mc/net/packet"
)

View File

@ -1,7 +1,7 @@
package component
import (
"git.konjactw.dev/patyhank/minego/codec/data/slot"
"git.konjactw.dev/patyhank/minego/codec/slot"
"github.com/Tnze/go-mc/net/packet"
)

View File

@ -3,7 +3,7 @@ package component
import (
"io"
"git.konjactw.dev/patyhank/minego/codec/data/slot"
"git.konjactw.dev/patyhank/minego/codec/slot"
"github.com/Tnze/go-mc/net/packet"
)

View File

@ -1,6 +1,6 @@
package component
import "git.konjactw.dev/patyhank/minego/codec/data/slot"
import "git.konjactw.dev/patyhank/minego/codec/slot"
//codec:gen
type RabbitVariant struct {

View File

@ -1,6 +1,6 @@
package component
import "git.konjactw.dev/patyhank/minego/codec/data/slot"
import "git.konjactw.dev/patyhank/minego/codec/slot"
//codec:gen
type Rarity struct {

View File

@ -1,7 +1,7 @@
package component
import (
"git.konjactw.dev/patyhank/minego/codec/data/slot"
"git.konjactw.dev/patyhank/minego/codec/slot"
"github.com/Tnze/go-mc/nbt"
)

View File

@ -1,6 +1,6 @@
package component
import "git.konjactw.dev/patyhank/minego/codec/data/slot"
import "git.konjactw.dev/patyhank/minego/codec/slot"
//codec:gen
type RepairCost struct {

View File

@ -1,7 +1,7 @@
package component
import (
"git.konjactw.dev/patyhank/minego/codec/data/slot"
"git.konjactw.dev/patyhank/minego/codec/slot"
pk "github.com/Tnze/go-mc/net/packet"
)

View File

@ -1,6 +1,6 @@
package component
import "git.konjactw.dev/patyhank/minego/codec/data/slot"
import "git.konjactw.dev/patyhank/minego/codec/slot"
//codec:gen
type SalmonSize struct {

View File

@ -1,6 +1,6 @@
package component
import "git.konjactw.dev/patyhank/minego/codec/data/slot"
import "git.konjactw.dev/patyhank/minego/codec/slot"
//codec:gen
type SheepColor struct {

View File

@ -1,6 +1,6 @@
package component
import "git.konjactw.dev/patyhank/minego/codec/data/slot"
import "git.konjactw.dev/patyhank/minego/codec/slot"
//codec:gen
type ShulkerColor struct {

View File

@ -1,6 +1,6 @@
package component
import "git.konjactw.dev/patyhank/minego/codec/data/slot"
import "git.konjactw.dev/patyhank/minego/codec/slot"
//codec:gen
type StoredEnchantments struct {

View File

@ -1,6 +1,6 @@
package component
import "git.konjactw.dev/patyhank/minego/codec/data/slot"
import "git.konjactw.dev/patyhank/minego/codec/slot"
//codec:gen
type SuspiciousStewEffects struct {

View File

@ -1,7 +1,7 @@
package component
import (
"git.konjactw.dev/patyhank/minego/codec/data/slot"
"git.konjactw.dev/patyhank/minego/codec/slot"
pk "github.com/Tnze/go-mc/net/packet"
)

View File

@ -1,6 +1,6 @@
package component
import "git.konjactw.dev/patyhank/minego/codec/data/slot"
import "git.konjactw.dev/patyhank/minego/codec/slot"
//codec:gen
type TooltipDisplay struct {

View File

@ -1,7 +1,7 @@
package component
import (
"git.konjactw.dev/patyhank/minego/codec/data/slot"
"git.konjactw.dev/patyhank/minego/codec/slot"
pk "github.com/Tnze/go-mc/net/packet"
)

View File

@ -1,7 +1,7 @@
package component
import (
"git.konjactw.dev/patyhank/minego/codec/data/slot"
"git.konjactw.dev/patyhank/minego/codec/slot"
"github.com/Tnze/go-mc/chat"
pk "github.com/Tnze/go-mc/net/packet"
)
@ -19,6 +19,7 @@ type TrimMaterial struct {
Description chat.Message
}
//codec:gen
type TrimOverride struct {
MaterialType pk.Identifier
OverrideAssetName string

View File

@ -1,6 +1,6 @@
package component
import "git.konjactw.dev/patyhank/minego/codec/data/slot"
import "git.konjactw.dev/patyhank/minego/codec/slot"
//codec:gen
type TropicalFishBaseColor struct {

View File

@ -1,6 +1,6 @@
package component
import "git.konjactw.dev/patyhank/minego/codec/data/slot"
import "git.konjactw.dev/patyhank/minego/codec/slot"
//codec:gen
type TropicalFishPattern struct {

View File

@ -1,6 +1,6 @@
package component
import "git.konjactw.dev/patyhank/minego/codec/data/slot"
import "git.konjactw.dev/patyhank/minego/codec/slot"
//codec:gen
type TropicalFishPatternColor struct {

View File

@ -1,6 +1,6 @@
package component
import "git.konjactw.dev/patyhank/minego/codec/data/slot"
import "git.konjactw.dev/patyhank/minego/codec/slot"
//codec:gen
type Unbreakable struct {

View File

@ -1,7 +1,7 @@
package component
import (
"git.konjactw.dev/patyhank/minego/codec/data/slot"
"git.konjactw.dev/patyhank/minego/codec/slot"
pk "github.com/Tnze/go-mc/net/packet"
)

View File

@ -1,6 +1,6 @@
package component
import "git.konjactw.dev/patyhank/minego/codec/data/slot"
import "git.konjactw.dev/patyhank/minego/codec/slot"
//codec:gen
type UseRemainder struct {

View File

@ -1,6 +1,6 @@
package component
import "git.konjactw.dev/patyhank/minego/codec/data/slot"
import "git.konjactw.dev/patyhank/minego/codec/slot"
//codec:gen
type VillagerVariant struct {

View File

@ -1,6 +1,6 @@
package component
import "git.konjactw.dev/patyhank/minego/codec/data/slot"
import "git.konjactw.dev/patyhank/minego/codec/slot"
//codec:gen
type Weapon struct {

View File

@ -1,6 +1,6 @@
package component
import "git.konjactw.dev/patyhank/minego/codec/data/slot"
import "git.konjactw.dev/patyhank/minego/codec/slot"
//codec:gen
type WolfCollar struct {

View File

@ -1,6 +1,6 @@
package component
import "git.konjactw.dev/patyhank/minego/codec/data/slot"
import "git.konjactw.dev/patyhank/minego/codec/slot"
//codec:gen
type WolfSoundVariant struct {

View File

@ -1,6 +1,6 @@
package component
import "git.konjactw.dev/patyhank/minego/codec/data/slot"
import "git.konjactw.dev/patyhank/minego/codec/slot"
//codec:gen
type WolfVariant struct {

View File

@ -1,7 +1,7 @@
package component
import (
"git.konjactw.dev/patyhank/minego/codec/data/slot"
"git.konjactw.dev/patyhank/minego/codec/slot"
pk "github.com/Tnze/go-mc/net/packet"
)

View File

@ -1,7 +1,7 @@
package component
import (
"git.konjactw.dev/patyhank/minego/codec/data/slot"
"git.konjactw.dev/patyhank/minego/codec/slot"
"github.com/Tnze/go-mc/chat"
pk "github.com/Tnze/go-mc/net/packet"
)

262
codec/metadata/codecs.go Normal file
View File

@ -0,0 +1,262 @@
// Code generated by github.com/go-mc/packetizer; DO NOT EDIT.
package metadata
import (
"io"
"github.com/Tnze/go-mc/net/packet"
)
func (c *Rotation) ReadFrom(r io.Reader) (n int64, err error) {
var temp int64
temp, err = (*packet.Float)(&c.X).ReadFrom(r)
n += temp
if err != nil {
return n, err
}
temp, err = (*packet.Float)(&c.Y).ReadFrom(r)
n += temp
if err != nil {
return n, err
}
temp, err = (*packet.Float)(&c.Z).ReadFrom(r)
n += temp
if err != nil {
return n, err
}
return n, err
}
func (c Rotation) WriteTo(w io.Writer) (n int64, err error) {
var temp int64
temp, err = (*packet.Float)(&c.X).WriteTo(w)
n += temp
if err != nil {
return n, err
}
temp, err = (*packet.Float)(&c.Y).WriteTo(w)
n += temp
if err != nil {
return n, err
}
temp, err = (*packet.Float)(&c.Z).WriteTo(w)
n += temp
if err != nil {
return n, err
}
return n, err
}
func (c *NBT) ReadFrom(r io.Reader) (n int64, err error) {
var temp int64
temp, err = packet.NBT(&c.Data).ReadFrom(r)
n += temp
if err != nil {
return n, err
}
return n, err
}
func (c NBT) WriteTo(w io.Writer) (n int64, err error) {
var temp int64
temp, err = packet.NBT(&c.Data).WriteTo(w)
n += temp
if err != nil {
return n, err
}
return n, err
}
func (c *Particles) ReadFrom(r io.Reader) (n int64, err error) {
var temp int64
temp, err = packet.Array(&c.Particles).ReadFrom(r)
n += temp
if err != nil {
return n, err
}
return n, err
}
func (c Particles) WriteTo(w io.Writer) (n int64, err error) {
var temp int64
temp, err = packet.Array(&c.Particles).WriteTo(w)
n += temp
if err != nil {
return n, err
}
return n, err
}
func (c *VillagerData) ReadFrom(r io.Reader) (n int64, err error) {
var temp int64
temp, err = (*packet.VarInt)(&c.Type).ReadFrom(r)
n += temp
if err != nil {
return n, err
}
temp, err = (*packet.VarInt)(&c.Profession).ReadFrom(r)
n += temp
if err != nil {
return n, err
}
temp, err = (*packet.VarInt)(&c.Level).ReadFrom(r)
n += temp
if err != nil {
return n, err
}
return n, err
}
func (c VillagerData) WriteTo(w io.Writer) (n int64, err error) {
var temp int64
temp, err = (*packet.VarInt)(&c.Type).WriteTo(w)
n += temp
if err != nil {
return n, err
}
temp, err = (*packet.VarInt)(&c.Profession).WriteTo(w)
n += temp
if err != nil {
return n, err
}
temp, err = (*packet.VarInt)(&c.Level).WriteTo(w)
n += temp
if err != nil {
return n, err
}
return n, err
}
func (c *GlobalPosition) ReadFrom(r io.Reader) (n int64, err error) {
var temp int64
temp, err = (&c.Dimension).ReadFrom(r)
n += temp
if err != nil {
return n, err
}
temp, err = (&c.Position).ReadFrom(r)
n += temp
if err != nil {
return n, err
}
return n, err
}
func (c GlobalPosition) WriteTo(w io.Writer) (n int64, err error) {
var temp int64
temp, err = (&c.Dimension).WriteTo(w)
n += temp
if err != nil {
return n, err
}
temp, err = (&c.Position).WriteTo(w)
n += temp
if err != nil {
return n, err
}
return n, err
}
func (c *OptGlobalPosition) ReadFrom(r io.Reader) (n int64, err error) {
var temp int64
temp, err = (&c.GlobalPosition).ReadFrom(r)
n += temp
if err != nil {
return n, err
}
return n, err
}
func (c OptGlobalPosition) WriteTo(w io.Writer) (n int64, err error) {
var temp int64
temp, err = (&c.GlobalPosition).WriteTo(w)
n += temp
if err != nil {
return n, err
}
return n, err
}
func (c *Vector3) ReadFrom(r io.Reader) (n int64, err error) {
var temp int64
temp, err = (*packet.Float)(&c.X).ReadFrom(r)
n += temp
if err != nil {
return n, err
}
temp, err = (*packet.Float)(&c.Y).ReadFrom(r)
n += temp
if err != nil {
return n, err
}
temp, err = (*packet.Float)(&c.Z).ReadFrom(r)
n += temp
if err != nil {
return n, err
}
return n, err
}
func (c Vector3) WriteTo(w io.Writer) (n int64, err error) {
var temp int64
temp, err = (*packet.Float)(&c.X).WriteTo(w)
n += temp
if err != nil {
return n, err
}
temp, err = (*packet.Float)(&c.Y).WriteTo(w)
n += temp
if err != nil {
return n, err
}
temp, err = (*packet.Float)(&c.Z).WriteTo(w)
n += temp
if err != nil {
return n, err
}
return n, err
}
func (c *Quaternion) ReadFrom(r io.Reader) (n int64, err error) {
var temp int64
temp, err = (*packet.Float)(&c.X).ReadFrom(r)
n += temp
if err != nil {
return n, err
}
temp, err = (*packet.Float)(&c.Y).ReadFrom(r)
n += temp
if err != nil {
return n, err
}
temp, err = (*packet.Float)(&c.Z).ReadFrom(r)
n += temp
if err != nil {
return n, err
}
temp, err = (*packet.Float)(&c.W).ReadFrom(r)
n += temp
if err != nil {
return n, err
}
return n, err
}
func (c Quaternion) WriteTo(w io.Writer) (n int64, err error) {
var temp int64
temp, err = (*packet.Float)(&c.X).WriteTo(w)
n += temp
if err != nil {
return n, err
}
temp, err = (*packet.Float)(&c.Y).WriteTo(w)
n += temp
if err != nil {
return n, err
}
temp, err = (*packet.Float)(&c.Z).WriteTo(w)
n += temp
if err != nil {
return n, err
}
temp, err = (*packet.Float)(&c.W).WriteTo(w)
n += temp
if err != nil {
return n, err
}
return n, err
}

156
codec/metadata/metadata.go Normal file
View File

@ -0,0 +1,156 @@
package metadata
import (
pk "github.com/Tnze/go-mc/net/packet"
"io"
)
type MetadataType int32
const (
MetadataByte MetadataType = iota
MetadataVarInt
MetadataVarLong
MetadataFloat
MetadataString
MetadataChat
MetadataOptChat
MetadataSlot
MetadataBoolean
MetadataRotation
MetadataPosition
MetadataOptPosition
MetadataDirection
MetadataOptLivingEntity
MetadataBlockState
MetadataOptBlockState
MetadataNBT
MetadataParticle
MetadataParticles
MetadataVillagerData
MetadataOptVarInt
MetadataPose
MetadataCatVariant
MetadataCowVariant
MetadataWolfVariant
MetadataWolfSoundVariant
MetadataFrogVariant
MetadataPigVariant
MetadataChickenVariant
MetadataOptGlobalPosition
MetadataPaintingVariant
MetadataSnifferVariant
MetadataArmadilloState
MetadataVector3
MetadataQuaternion
)
type entityMetadata interface {
EntityMetadataType() MetadataType
pk.Field
}
type EntityMetadata struct {
Data map[uint8]entityMetadata
}
func (m EntityMetadata) WriteTo(w io.Writer) (int64, error) {
n := int64(0)
for u, metadata := range m.Data {
n1, err := pk.UnsignedByte(u).WriteTo(w)
n += n1
if err != nil {
return n, err
}
n2, err := pk.VarInt(metadata.EntityMetadataType()).WriteTo(w)
n += n2
if err != nil {
return n, err
}
n3, err := metadata.WriteTo(w)
n += n3
if err != nil {
return n, err
}
}
n4, err := pk.UnsignedByte(0xff).WriteTo(w)
n += n4
if err != nil {
return n, err
}
return n, nil
}
func (m *EntityMetadata) ReadFrom(r io.Reader) (int64, error) {
var index uint8
n, err := (*pk.UnsignedByte)(&index).ReadFrom(r)
if err != nil {
return n, err
}
for index != 0xff {
var typeId MetadataType
n1, err := (*pk.VarInt)(&typeId).ReadFrom(r)
n += n1
if err != nil {
return n, err
}
metadata := metadataType[typeId]()
n2, err := metadata.ReadFrom(r)
n += n2
if err != nil {
return n, err
}
m.Data[index] = metadata
n3, err := (*pk.UnsignedByte)(&index).ReadFrom(r)
n += n3
if err != nil {
return n, err
}
}
return n, nil
}
type metadataCreator func() entityMetadata
var metadataType = map[MetadataType]metadataCreator{}
func init() {
metadataType[MetadataByte] = func() entityMetadata { return &Byte{} }
metadataType[MetadataVarInt] = func() entityMetadata { return &VarInt{} }
metadataType[MetadataVarLong] = func() entityMetadata { return &VarLong{} }
metadataType[MetadataFloat] = func() entityMetadata { return &Float{} }
metadataType[MetadataString] = func() entityMetadata { return &String{} }
metadataType[MetadataChat] = func() entityMetadata { return &Chat{} }
metadataType[MetadataOptChat] = func() entityMetadata { return &OptChat{} }
metadataType[MetadataSlot] = func() entityMetadata { return &Slot{} }
metadataType[MetadataBoolean] = func() entityMetadata { return &Boolean{} }
metadataType[MetadataRotation] = func() entityMetadata { return &Rotation{} }
metadataType[MetadataPosition] = func() entityMetadata { return &Position{} }
metadataType[MetadataOptPosition] = func() entityMetadata { return &OptPosition{} }
metadataType[MetadataDirection] = func() entityMetadata { return &Direction{} }
metadataType[MetadataOptLivingEntity] = func() entityMetadata { return &OptLivingEntity{} }
metadataType[MetadataBlockState] = func() entityMetadata { return &BlockState{} }
metadataType[MetadataOptBlockState] = func() entityMetadata { return &OptBlockState{} }
metadataType[MetadataNBT] = func() entityMetadata { return &NBT{} }
metadataType[MetadataParticle] = func() entityMetadata { return &Particle{} }
metadataType[MetadataParticles] = func() entityMetadata { return &Particles{} }
metadataType[MetadataVillagerData] = func() entityMetadata { return &VillagerData{} }
metadataType[MetadataOptVarInt] = func() entityMetadata { return &OptVarInt{} }
metadataType[MetadataPose] = func() entityMetadata { return &Pose{} }
metadataType[MetadataCatVariant] = func() entityMetadata { return &CatVariant{} }
metadataType[MetadataCowVariant] = func() entityMetadata { return &CowVariant{} }
metadataType[MetadataWolfVariant] = func() entityMetadata { return &WolfVariant{} }
metadataType[MetadataWolfSoundVariant] = func() entityMetadata { return &WolfSoundVariant{} }
metadataType[MetadataFrogVariant] = func() entityMetadata { return &FrogVariant{} }
metadataType[MetadataPigVariant] = func() entityMetadata { return &PigVariant{} }
metadataType[MetadataChickenVariant] = func() entityMetadata { return &ChickenVariant{} }
metadataType[MetadataOptGlobalPosition] = func() entityMetadata { return &OptGlobalPosition{} }
metadataType[MetadataPaintingVariant] = func() entityMetadata { return &PaintingVariant{} }
metadataType[MetadataSnifferVariant] = func() entityMetadata { return &SnifferVariant{} }
metadataType[MetadataArmadilloState] = func() entityMetadata { return &ArmadilloState{} }
metadataType[MetadataVector3] = func() entityMetadata { return &Vector3{} }
metadataType[MetadataQuaternion] = func() entityMetadata { return &Quaternion{} }
}

Some files were not shown because too many files have changed in this diff Show More