func (s Shovel) ToolType() tool.Type {
	return tool.TypeShovel
}
ToolType returns the tool type for shovels.
package item
import (
	"github.com/df-mc/dragonfly/server/block/cube"
	"github.com/df-mc/dragonfly/server/item/tool"
	"github.com/df-mc/dragonfly/server/world"
	"github.com/df-mc/dragonfly/server/world/sound"
	"github.com/go-gl/mathgl/mgl64"
)
type Shovel struct {
	Tier tool.Tier
}
func (s Shovel) UseOnBlock(pos cube.Pos, face cube.Face, _ mgl64.Vec3, w *world.World, _ User, ctx *UseContext) bool {
	if b, ok := w.Block(pos).(shovellable); ok {
		if res, ok := b.Shovel(); ok {
			if face == cube.FaceDown {
				return false
			}
			if w.Block(pos.Add(cube.Pos{0, 1})) != air() {
				return false
			}
			w.PlaceBlock(pos, res)
			w.PlaySound(pos.Vec3(), sound.ItemUseOn{Block: res})
			ctx.DamageItem(1)
			return true
		}
	}
	return false
}
type shovellable interface {
	Shovel() (world.Block, bool)
}
func (s Shovel) MaxCount() int {
	return 1
}
func (s Shovel) AttackDamage() float64 {
	return s.Tier.BaseAttackDamage
}