Files
go-mc/save/level.go
2022-12-17 14:31:29 +08:00

88 lines
2.2 KiB
Go

package save
import (
"io"
"github.com/Tnze/go-mc/nbt"
)
type Level struct {
Data LevelData
}
type LevelData struct {
AllowCommands byte `nbt:"allowCommands"`
BorderCenterX, BorderCenterZ float64
BorderDamagePerBlock float64
BorderSafeZone float64
BorderSize float64
BorderSizeLerpTarget float64
BorderSizeLerpTime int64
BorderWarningBlocks float64
BorderWarningTime float64
ClearWeatherTime int32 `nbt:"clearWeatherTime"`
CustomBossEvents map[string]CustomBossEvent
DataPacks struct {
Enabled, Disabled []string
}
DataVersion int32
DayTime int64
Difficulty byte
DifficultyLocked bool
DimensionData struct {
TheEnd struct {
DragonFight struct {
Gateways []int32
DragonKilled byte
PreviouslyKilled byte
}
} `nbt:"1"`
}
GameRules map[string]string
WorldGenSettings WorldGenSettings
GameType int32
HardCore bool `nbt:"hardcore"`
Initialized bool `nbt:"initialized"`
LastPlayed int64
LevelName string
MapFeatures bool
Player map[string]interface{}
Raining bool `nbt:"raining"`
RainTime int32 `nbt:"rainTime"`
RandomSeed int64
SizeOnDisk int64
SpawnAngle float32
SpawnX, SpawnY, SpawnZ int32
Thundering bool `nbt:"thundering"`
ThunderTime int32 `nbt:"thunderTime"`
Time int64
Version struct {
ID int32 `nbt:"Id"`
Name string
Series string
Snapshot byte
}
WanderingTraderId []int32
WanderingTraderSpawnChance int32
WanderingTraderSpawnDelay int32
WasModded bool
}
type CustomBossEvent struct {
Players [][]int32
Color string
CreateWorldFog bool
DarkenScreen bool
Max int32
Value int32
Name string
Overlay string
PlayBossMusic bool
Visible bool
}
func ReadLevel(r io.Reader) (data Level, err error) {
_, err = nbt.NewDecoder(r).Decode(&data)
return
}