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

     1  package block
     2  
     3  import "github.com/df-mc/dragonfly/server/world"
     4  
     5  // encodeWallBlock encodes the provided block in to an identifier and meta value that can be used to encode the wall.
     6  func encodeWallBlock(block world.Block) (string, int16) {
     7  	switch block := block.(type) {
     8  	case Andesite:
     9  		if !block.Polished {
    10  			return "andesite", 4
    11  		}
    12  	case Blackstone:
    13  		if block.Type == NormalBlackstone() {
    14  			return "blackstone", 0
    15  		} else if block.Type == PolishedBlackstone() {
    16  			return "polished_blackstone", 0
    17  		}
    18  	case Bricks:
    19  		return "brick", 6
    20  	case Cobblestone:
    21  		if block.Mossy {
    22  			return "mossy_cobblestone", 1
    23  		}
    24  		return "cobblestone", 0
    25  	case Deepslate:
    26  		if block.Type == CobbledDeepslate() {
    27  			return "cobbled_deepslate", 0
    28  		} else if block.Type == PolishedDeepslate() {
    29  			return "polished_deepslate", 0
    30  		}
    31  	case DeepslateBricks:
    32  		if !block.Cracked {
    33  			return "deepslate_brick", 0
    34  		}
    35  	case DeepslateTiles:
    36  		if !block.Cracked {
    37  			return "deepslate_tile", 0
    38  		}
    39  	case Diorite:
    40  		if !block.Polished {
    41  			return "diorite", 3
    42  		}
    43  	case EndBricks:
    44  		return "end_brick", 10
    45  	case Granite:
    46  		if !block.Polished {
    47  			return "granite", 2
    48  		}
    49  	case MudBricks:
    50  		return "mud_brick", 0
    51  	case NetherBricks:
    52  		if block.Type == NormalNetherBricks() {
    53  			return "nether_brick", 9
    54  		} else if block.Type == RedNetherBricks() {
    55  			return "red_nether_brick", 13
    56  		}
    57  	case PolishedBlackstoneBrick:
    58  		if !block.Cracked {
    59  			return "polished_blackstone_brick", 0
    60  		}
    61  	case Prismarine:
    62  		if block.Type == NormalPrismarine() {
    63  			return "prismarine", 11
    64  		}
    65  	case Sandstone:
    66  		if block.Type == NormalSandstone() {
    67  			if block.Red {
    68  				return "red_sandstone", 12
    69  			}
    70  			return "sandstone", 5
    71  		}
    72  	case StoneBricks:
    73  		if block.Type == NormalStoneBricks() {
    74  			return "stone_brick", 7
    75  		} else if block.Type == MossyStoneBricks() {
    76  			return "mossy_stone_brick", 8
    77  		}
    78  	}
    79  	panic("invalid block used for wall")
    80  }
    81  
    82  // WallBlocks returns a list of all possible blocks for a wall.
    83  func WallBlocks() []world.Block {
    84  	return []world.Block{
    85  		Andesite{},
    86  		Blackstone{Type: PolishedBlackstone()},
    87  		Blackstone{},
    88  		Bricks{},
    89  		Cobblestone{Mossy: true},
    90  		Cobblestone{},
    91  		DeepslateBricks{},
    92  		DeepslateTiles{},
    93  		Deepslate{Type: CobbledDeepslate()},
    94  		Deepslate{Type: PolishedDeepslate()},
    95  		Diorite{},
    96  		EndBricks{},
    97  		Granite{},
    98  		MudBricks{},
    99  		NetherBricks{Type: RedNetherBricks()},
   100  		NetherBricks{},
   101  		PolishedBlackstoneBrick{},
   102  		Prismarine{},
   103  		Sandstone{Red: true},
   104  		Sandstone{},
   105  		StoneBricks{Type: MossyStoneBricks()},
   106  		StoneBricks{},
   107  	}
   108  }