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  }