package component import ( "io" "git.konjactw.dev/patyhank/minego/codec/data/slot" "github.com/Tnze/go-mc/chat" "github.com/Tnze/go-mc/net/packet" ) type JukeboxPlayable struct { Mode int8 Name packet.Identifier SongData packet.OptID[JukeboxSongData, *JukeboxSongData] } func (p *JukeboxPlayable) ReadFrom(r io.Reader) (n int64, err error) { n1, err := (*packet.Byte)(&p.Mode).ReadFrom(r) if err != nil { return n1, err } if p.Mode == 0 { n2, err := p.Name.ReadFrom(r) return n1 + n2, err } if p.Mode == 1 { n2, err := p.SongData.ReadFrom(r) return n1 + n2, err } return n1, err } func (p JukeboxPlayable) WriteTo(w io.Writer) (int64, error) { n1, err := (*packet.Byte)(&p.Mode).WriteTo(w) if err != nil { return n1, err } if p.Mode == 0 { n2, err := p.Name.WriteTo(w) return n1 + n2, err } if p.Mode == 1 { n2, err := p.SongData.WriteTo(w) return n1 + n2, err } return n1, err } //codec:gen type JukeboxSongData struct { SoundEvent packet.OptID[SoundEvent, *SoundEvent] Description chat.Message Duration float32 Output int32 `mc:"VarInt"` } func (*JukeboxPlayable) Type() slot.ComponentID { return 55 } func (*JukeboxPlayable) ID() string { return "minecraft:jukebox_playable" }