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

     1  package block
     2  
     3  // TallGrassType represents a tall grass plant, which can be placed on top of grass blocks.
     4  type TallGrassType struct {
     5  	tallGrass
     6  }
     7  
     8  // LegacyTallGrass returns the legacy tall grass variant of tall grass.
     9  func LegacyTallGrass() TallGrassType {
    10  	return TallGrassType{0}
    11  }
    12  
    13  // NormalTallGrass returns the tall grass variant of tall grass.
    14  func NormalTallGrass() TallGrassType {
    15  	return TallGrassType{1}
    16  }
    17  
    18  // FernTallGrass returns the fern variant of tall grass.
    19  func FernTallGrass() TallGrassType {
    20  	return TallGrassType{2}
    21  }
    22  
    23  // TallGrassTypes returns all variants of tall grass.
    24  func TallGrassTypes() []TallGrassType {
    25  	return []TallGrassType{LegacyTallGrass(), NormalTallGrass(), FernTallGrass()}
    26  }
    27  
    28  type tallGrass uint8
    29  
    30  // Uint8 ...
    31  func (g tallGrass) Uint8() uint8 {
    32  	return uint8(g)
    33  }
    34  
    35  // Double returns the double tall grass variant of the tall grass.
    36  func (g tallGrass) Double() DoubleTallGrassType {
    37  	switch g {
    38  	case 0, 1:
    39  		return NormalDoubleTallGrass()
    40  	case 2:
    41  		return FernDoubleTallGrass()
    42  	}
    43  	panic("unknown tall grass type")
    44  }
    45  
    46  // Name ...
    47  func (g tallGrass) Name() string {
    48  	switch g {
    49  	case 0, 1:
    50  		return "Grass"
    51  	case 2:
    52  		return "Fern"
    53  	}
    54  	panic("unknown tall grass type")
    55  }
    56  
    57  // String ...
    58  func (g tallGrass) String() string {
    59  	switch g {
    60  	case 0:
    61  		return "default"
    62  	case 1:
    63  		return "tall"
    64  	case 2:
    65  		return "fern"
    66  	}
    67  	panic("unknown tall grass type")
    68  }