github.com/df-mc/dragonfly@v0.9.13/server/block/moss_carpet.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 "github.com/go-gl/mathgl/mgl64" 8 ) 9 10 // MossCarpet is a thin decorative variant of the moss block. 11 type MossCarpet struct { 12 carpet 13 transparent 14 sourceWaterDisplacer 15 } 16 17 // SideClosed ... 18 func (MossCarpet) SideClosed(cube.Pos, cube.Pos, *world.World) bool { 19 return false 20 } 21 22 // HasLiquidDrops ... 23 func (MossCarpet) HasLiquidDrops() bool { 24 return true 25 } 26 27 // NeighbourUpdateTick ... 28 func (MossCarpet) NeighbourUpdateTick(pos, _ cube.Pos, w *world.World) { 29 if _, ok := w.Block(pos.Side(cube.FaceDown)).(Air); ok { 30 w.SetBlock(pos, nil, nil) 31 } 32 } 33 34 // UseOnBlock ... 35 func (m MossCarpet) UseOnBlock(pos cube.Pos, face cube.Face, _ mgl64.Vec3, w *world.World, user item.User, ctx *item.UseContext) (used bool) { 36 pos, _, used = firstReplaceable(w, pos, face, m) 37 if !used { 38 return 39 } 40 if _, ok := w.Block(pos.Side(cube.FaceDown)).(Air); ok { 41 return 42 } 43 44 place(w, pos, m, user, ctx) 45 return placed(ctx) 46 } 47 48 // BreakInfo ... 49 func (m MossCarpet) BreakInfo() BreakInfo { 50 return newBreakInfo(0.1, alwaysHarvestable, nothingEffective, oneOf(m)) 51 } 52 53 // CompostChance ... 54 func (MossCarpet) CompostChance() float64 { 55 return 0.3 56 } 57 58 // EncodeItem ... 59 func (m MossCarpet) EncodeItem() (name string, meta int16) { 60 return "minecraft:moss_carpet", 0 61 } 62 63 // EncodeBlock ... 64 func (m MossCarpet) EncodeBlock() (string, map[string]any) { 65 return "minecraft:moss_carpet", nil 66 }