github.com/df-mc/dragonfly@v0.9.13/server/block/gravel.go (about)

     1  package block
     2  
     3  import (
     4  	"github.com/df-mc/dragonfly/server/block/cube"
     5  	"github.com/df-mc/dragonfly/server/item"
     6  	"github.com/df-mc/dragonfly/server/world"
     7  	"math/rand"
     8  )
     9  
    10  // Gravel is a block affected by gravity. It has a 10% chance of dropping flint instead of itself on break.
    11  type Gravel struct {
    12  	gravityAffected
    13  	solid
    14  	snare
    15  }
    16  
    17  // NeighbourUpdateTick ...
    18  func (g Gravel) NeighbourUpdateTick(pos, _ cube.Pos, w *world.World) {
    19  	g.fall(g, pos, w)
    20  }
    21  
    22  // BreakInfo ...
    23  func (g Gravel) BreakInfo() BreakInfo {
    24  	return newBreakInfo(0.6, alwaysHarvestable, shovelEffective, func(t item.Tool, enchantments []item.Enchantment) []item.Stack {
    25  		if !hasSilkTouch(enchantments) && rand.Float64() < 0.1 {
    26  			return []item.Stack{item.NewStack(item.Flint{}, 1)}
    27  		}
    28  		return []item.Stack{item.NewStack(g, 1)}
    29  	})
    30  }
    31  
    32  // EncodeItem ...
    33  func (Gravel) EncodeItem() (name string, meta int16) {
    34  	return "minecraft:gravel", 0
    35  }
    36  
    37  // EncodeBlock ...
    38  func (Gravel) EncodeBlock() (string, map[string]any) {
    39  	return "minecraft:gravel", nil
    40  }