Add item DataComponent implements (part 2)

This commit is contained in:
Tnze
2024-07-28 22:45:40 +08:00
parent 090493c4ac
commit c51313a9cc
18 changed files with 287 additions and 73 deletions

View File

@ -46,15 +46,25 @@ func NewComponent(id int32) DataComponent {
case 17:
return new(CreativeSlotLock)
case 18:
return new(EnchantmentGlintOverride)
case 19:
return new(IntangibleProjectile)
case 20:
return new(Food)
case 21:
return new(FireResistant)
case 22:
return new(Tool)
case 23:
return new(StoredEnchantments)
case 24:
return new(DyedColor)
case 25:
return new(MapColor)
case 26:
return new(MapID)
case 27:
return new(MapDecorations)
case 28:
case 29:
case 30:

View File

@ -1,8 +1,6 @@
package component
import (
"io"
)
import "io"
var _ DataComponent = (*CreativeSlotLock)(nil)

View File

@ -1,28 +1,14 @@
package component
import (
"io"
pk "github.com/Tnze/go-mc/net/packet"
)
import pk "github.com/Tnze/go-mc/net/packet"
var _ DataComponent = (*Damage)(nil)
type Damage struct {
Damage pk.VarInt
pk.VarInt
}
// ID implements DataComponent.
func (Damage) ID() string {
return "minecraft:damage"
}
// ReadFrom implements DataComponent.
func (d *Damage) ReadFrom(r io.Reader) (n int64, err error) {
return d.Damage.ReadFrom(r)
}
// WriteTo implements DataComponent.
func (d *Damage) WriteTo(w io.Writer) (n int64, err error) {
return d.Damage.WriteTo(w)
}

View File

@ -0,0 +1,29 @@
package component
import (
"io"
pk "github.com/Tnze/go-mc/net/packet"
)
var _ DataComponent = (*DyedColor)(nil)
type DyedColor struct {
RGB pk.Int
ShowInTooltip pk.Boolean
}
// ID implements DataComponent.
func (DyedColor) ID() string {
return "minecraft:dyed_color"
}
// ReadFrom implements DataComponent.
func (d *DyedColor) ReadFrom(r io.Reader) (n int64, err error) {
return pk.Tuple{&d.RGB, &d.ShowInTooltip}.ReadFrom(r)
}
// WriteTo implements DataComponent.
func (d *DyedColor) WriteTo(w io.Writer) (n int64, err error) {
return pk.Tuple{&d.RGB, &d.ShowInTooltip}.WriteTo(w)
}

View File

@ -0,0 +1,28 @@
package component
import (
"io"
pk "github.com/Tnze/go-mc/net/packet"
)
var _ DataComponent = (*EnchantmentGlintOverride)(nil)
type EnchantmentGlintOverride struct {
HasGlint pk.Boolean
}
// ID implements DataComponent.
func (EnchantmentGlintOverride) ID() string {
return "minecraft:enchantment_glint_override"
}
// ReadFrom implements DataComponent.
func (e *EnchantmentGlintOverride) ReadFrom(r io.Reader) (n int64, err error) {
return e.HasGlint.ReadFrom(r)
}
// WriteTo implements DataComponent.
func (e *EnchantmentGlintOverride) WriteTo(w io.Writer) (n int64, err error) {
return e.HasGlint.WriteTo(w)
}

View File

@ -0,0 +1,22 @@
package component
import "io"
var _ DataComponent = (*FireResistant)(nil)
type FireResistant struct{}
// ID implements DataComponent.
func (FireResistant) ID() string {
return "minecraft:fire_resistant"
}
// ReadFrom implements DataComponent.
func (f *FireResistant) ReadFrom(r io.Reader) (n int64, err error) {
return 0, nil
}
// WriteTo implements DataComponent.
func (f *FireResistant) WriteTo(w io.Writer) (n int64, err error) {
return 0, nil
}

47
level/component/food.go Normal file
View File

@ -0,0 +1,47 @@
package component
import (
"io"
pk "github.com/Tnze/go-mc/net/packet"
)
var _ DataComponent = (*Food)(nil)
type Food struct {
Nutrition pk.VarInt
Saturation pk.Float
CanAlwaysEat pk.Boolean
EatSeconds pk.Float
// TODO: using_converts_to
// TODO: effects
}
// ID implements DataComponent.
func (Food) ID() string {
return "minecraft:food"
}
// ReadFrom implements DataComponent.
func (f *Food) ReadFrom(r io.Reader) (n int64, err error) {
pk.Tuple{
&f.Nutrition,
&f.Saturation,
&f.CanAlwaysEat,
&f.EatSeconds,
// TODO
}.ReadFrom(r)
panic("unimplemented")
}
// WriteTo implements DataComponent.
func (f *Food) WriteTo(w io.Writer) (n int64, err error) {
pk.Tuple{
&f.Nutrition,
&f.Saturation,
&f.CanAlwaysEat,
&f.EatSeconds,
// TODO
}.WriteTo(w)
panic("unimplemented")
}

View File

@ -1,8 +1,6 @@
package component
import (
"io"
)
import "io"
var _ DataComponent = (*HideAdditionalTooptip)(nil)

View File

@ -1,8 +1,6 @@
package component
import (
"io"
)
import "io"
var _ DataComponent = (*HideTooptip)(nil)

View File

@ -0,0 +1,22 @@
package component
import "io"
var _ DataComponent = (*IntangibleProjectile)(nil)
type IntangibleProjectile struct{}
// ID implements DataComponent.
func (IntangibleProjectile) ID() string {
return "minecraft:intangible_projectile"
}
// ReadFrom implements DataComponent.
func (i *IntangibleProjectile) ReadFrom(r io.Reader) (n int64, err error) {
return 0, nil
}
// WriteTo implements DataComponent.
func (i *IntangibleProjectile) WriteTo(w io.Writer) (n int64, err error) {
return 0, nil
}

View File

@ -0,0 +1,15 @@
package component
import pk "github.com/Tnze/go-mc/net/packet"
var _ DataComponent = (*MapColor)(nil)
type MapColor struct {
// The RGB components of the color, encoded as an integer.
pk.Int
}
// ID implements DataComponent.
func (MapColor) ID() string {
return "minecraft:map_color"
}

View File

@ -0,0 +1,29 @@
package component
import (
"io"
"github.com/Tnze/go-mc/nbt/dynbt"
pk "github.com/Tnze/go-mc/net/packet"
)
var _ DataComponent = (*MapDecorations)(nil)
type MapDecorations struct {
dynbt.Value
}
// ID implements DataComponent.
func (MapDecorations) ID() string {
return "minecraft:map_decorations"
}
// ReadFrom implements DataComponent.
func (m *MapDecorations) ReadFrom(r io.Reader) (n int64, err error) {
return pk.NBT(&m.Value).ReadFrom(r)
}
// WriteTo implements DataComponent.
func (m *MapDecorations) WriteTo(w io.Writer) (n int64, err error) {
return pk.NBT(&m.Value).WriteTo(w)
}

14
level/component/mapid.go Normal file
View File

@ -0,0 +1,14 @@
package component
import pk "github.com/Tnze/go-mc/net/packet"
var _ DataComponent = (*MapID)(nil)
type MapID struct {
pk.VarInt
}
// ID implements DataComponent.
func (MapID) ID() string {
return "minecraft:map_id"
}

View File

@ -1,28 +1,14 @@
package component
import (
"io"
pk "github.com/Tnze/go-mc/net/packet"
)
import pk "github.com/Tnze/go-mc/net/packet"
var _ DataComponent = (*MaxDamage)(nil)
type MaxDamage struct {
MaxDamage pk.VarInt
pk.VarInt
}
// ID implements DataComponent.
func (MaxDamage) ID() string {
return "minecraft:max_damage"
}
// ReadFrom implements DataComponent.
func (m *MaxDamage) ReadFrom(r io.Reader) (n int64, err error) {
return m.MaxDamage.ReadFrom(r)
}
// WriteTo implements DataComponent.
func (m *MaxDamage) WriteTo(w io.Writer) (n int64, err error) {
return m.MaxDamage.WriteTo(w)
}

View File

@ -1,28 +1,14 @@
package component
import (
"io"
pk "github.com/Tnze/go-mc/net/packet"
)
import pk "github.com/Tnze/go-mc/net/packet"
var _ DataComponent = (*MaxStackSize)(nil)
type MaxStackSize struct {
MaxStackSize pk.VarInt
pk.VarInt
}
// ID implements DataComponent.
func (MaxStackSize) ID() string {
return "minecraft:max_stack_size"
}
// ReadFrom implements DataComponent.
func (m *MaxStackSize) ReadFrom(r io.Reader) (n int64, err error) {
return m.MaxStackSize.ReadFrom(r)
}
// WriteTo implements DataComponent.
func (m *MaxStackSize) WriteTo(w io.Writer) (n int64, err error) {
return m.MaxStackSize.WriteTo(w)
}

View File

@ -1,28 +1,14 @@
package component
import (
"io"
pk "github.com/Tnze/go-mc/net/packet"
)
import pk "github.com/Tnze/go-mc/net/packet"
var _ DataComponent = (*RepairCost)(nil)
type RepairCost struct {
Cost pk.VarInt
pk.VarInt
}
// ID implements DataComponent.
func (RepairCost) ID() string {
return "minecraft:repair_cost"
}
// ReadFrom implements DataComponent.
func (r *RepairCost) ReadFrom(reader io.Reader) (n int64, err error) {
return r.Cost.ReadFrom(reader)
}
// WriteTo implements DataComponent.
func (r *RepairCost) WriteTo(writer io.Writer) (n int64, err error) {
return r.Cost.WriteTo(writer)
}

View File

@ -0,0 +1,38 @@
package component
import (
"io"
pk "github.com/Tnze/go-mc/net/packet"
)
var _ DataComponent = (*StoredEnchantments)(nil)
type StoredEnchantments struct {
Enchantments []struct {
Type pk.VarInt
Level pk.VarInt
}
ShowInTooltip pk.Boolean
}
// ID implements DataComponent.
func (StoredEnchantments) ID() string {
return "minecraft:stored_enchantments"
}
// ReadFrom implements DataComponent.
func (s *StoredEnchantments) ReadFrom(r io.Reader) (n int64, err error) {
return pk.Tuple{
pk.Array(&s.Enchantments),
&s.ShowInTooltip,
}.ReadFrom(r)
}
// WriteTo implements DataComponent.
func (s *StoredEnchantments) WriteTo(w io.Writer) (n int64, err error) {
return pk.Tuple{
pk.Array(&s.Enchantments),
&s.ShowInTooltip,
}.WriteTo(w)
}

22
level/component/tool.go Normal file
View File

@ -0,0 +1,22 @@
package component
import "io"
var _ DataComponent = (*Tool)(nil)
type Tool struct{}
// ID implements DataComponent.
func (Tool) ID() string {
return "minecraft:tool"
}
// ReadFrom implements DataComponent.
func (t *Tool) ReadFrom(r io.Reader) (n int64, err error) {
panic("unimplemented")
}
// WriteTo implements DataComponent.
func (t *Tool) WriteTo(w io.Writer) (n int64, err error) {
panic("unimplemented")
}