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 }