重构 BiomesState, fix typo

This commit is contained in:
Tnze
2023-04-23 00:08:05 +08:00
parent de2996336c
commit 5f06fa6510
5 changed files with 139 additions and 100 deletions

View File

@ -1,83 +1,102 @@
package biome
import "math/bits"
import (
"errors"
"math/bits"
)
type Type int
func (t Type) MarshalText() (text []byte, err error) {
if t >= 0 && int(t) < len(biomesNames) {
return []byte(biomesNames[t]), nil
}
return nil, errors.New("invalid type")
}
func (t *Type) UnmarshalText(text []byte) error {
var ok bool
*t, ok = biomesIDs[string(text)]
if ok {
return nil
}
return errors.New("unknown type")
}
var (
BitsPerBiome int
BiomesIDs map[string]Type
BiomesNames = []string{
"the_void",
"plains",
"sunflower_plains",
"snowy_plains",
"ice_spikes",
"desert",
"swamp",
"mangrove_swamp",
"forest",
"flower_forest",
"birch_forest",
"dark_forest",
"old_growth_birch_forest",
"old_growth_pine_taiga",
"old_growth_spruce_taiga",
"taiga",
"snowy_taiga",
"savanna",
"savanna_plateau",
"windswept_hills",
"windswept_gravelly_hills",
"windswept_forest",
"windswept_savanna",
"jungle",
"sparse_jungle",
"bamboo_jungle",
"badlands",
"eroded_badlands",
"wooded_badlands",
"meadow",
"grove",
"snowy_slopes",
"frozen_peaks",
"jagged_peaks",
"stony_peaks",
"river",
"frozen_river",
"beach",
"snowy_beach",
"stony_shore",
"warm_ocean",
"lukewarm_ocean",
"deep_lukewarm_ocean",
"ocean",
"deep_ocean",
"cold_ocean",
"deep_cold_ocean",
"frozen_ocean",
"deep_frozen_ocean",
"mushroom_fields",
"dripstone_caves",
"lush_caves",
"deep_dark",
"nether_wastes",
"warped_forest",
"crimson_forest",
"soul_sand_valley",
"basalt_deltas",
"the_end",
"end_highlands",
"end_midlands",
"small_end_islands",
"end_barrens",
biomesIDs map[string]Type
biomesNames = []string{
"minecraft:the_void",
"minecraft:plains",
"minecraft:sunflower_plains",
"minecraft:snowy_plains",
"minecraft:ice_spikes",
"minecraft:desert",
"minecraft:swamp",
"minecraft:mangrove_swamp",
"minecraft:forest",
"minecraft:flower_forest",
"minecraft:birch_forest",
"minecraft:dark_forest",
"minecraft:old_growth_birch_forest",
"minecraft:old_growth_pine_taiga",
"minecraft:old_growth_spruce_taiga",
"minecraft:taiga",
"minecraft:snowy_taiga",
"minecraft:savanna",
"minecraft:savanna_plateau",
"minecraft:windswept_hills",
"minecraft:windswept_gravelly_hills",
"minecraft:windswept_forest",
"minecraft:windswept_savanna",
"minecraft:jungle",
"minecraft:sparse_jungle",
"minecraft:bamboo_jungle",
"minecraft:badlands",
"minecraft:eroded_badlands",
"minecraft:wooded_badlands",
"minecraft:meadow",
"minecraft:grove",
"minecraft:snowy_slopes",
"minecraft:frozen_peaks",
"minecraft:jagged_peaks",
"minecraft:stony_peaks",
"minecraft:river",
"minecraft:frozen_river",
"minecraft:beach",
"minecraft:snowy_beach",
"minecraft:stony_shore",
"minecraft:warm_ocean",
"minecraft:lukewarm_ocean",
"minecraft:deep_lukewarm_ocean",
"minecraft:ocean",
"minecraft:deep_ocean",
"minecraft:cold_ocean",
"minecraft:deep_cold_ocean",
"minecraft:frozen_ocean",
"minecraft:deep_frozen_ocean",
"minecraft:mushroom_fields",
"minecraft:dripstone_caves",
"minecraft:lush_caves",
"minecraft:deep_dark",
"minecraft:nether_wastes",
"minecraft:warped_forest",
"minecraft:crimson_forest",
"minecraft:soul_sand_valley",
"minecraft:basalt_deltas",
"minecraft:the_end",
"minecraft:end_highlands",
"minecraft:end_midlands",
"minecraft:small_end_islands",
"minecraft:end_barrens",
}
)
func init() {
BitsPerBiome = bits.Len(uint(len(BiomesNames)))
BiomesIDs = make(map[string]Type, len(BiomesNames))
for i, v := range BiomesNames {
BiomesIDs[v] = Type(i)
BitsPerBiome = bits.Len(uint(len(biomesNames)))
biomesIDs = make(map[string]Type, len(biomesNames))
for i, v := range biomesNames {
biomesIDs[v] = Type(i)
}
}