Skip to content

Package minecraft is a level viewer/editor for the popular creative game minecraft

License

Notifications You must be signed in to change notification settings

MJKWoolnough/minecraft

Repository files navigation

minecraft

-- import "vimagination.zapto.org/minecraft"

Package minecraft is a level viewer/editor for the popular creative game

minecraft

Usage

const (
	DefaultGenerator    = "default"
	FlatGenerator       = "flat"
	LargeBiomeGenerator = "largeBiomes"
	AmplifiedGenerator  = "amplified"
	CustomGenerator     = "customized"
	DebugGenerator      = "debug_all_block_states"
)

Default minecraft generators

const (
	Survival int32 = iota
	Creative
	Adventure
	Spectator
)

Game Modes Settings

const (
	Peaceful int8 = iota
	Easy
	Normal
	Hard
)

Difficulty Settings

const (
	SunRise  = 0
	Noon     = 6000
	SunSet   = 12000
	MidNight = 18000
	Day      = 24000
)

Time-of-day convenience constants

const (
	GZip byte = 1
	Zlib byte = 2
)

Compression convenience constants

var (
	// ErrOOB is an error returned when sanity checking section data
	ErrOOB = errors.New("received out-of-bounds error")
	// ErrNoLock is an error returns by path types to indicate that the lock on the
	// minecraft level has been locked and needs reinstating to continue
	ErrNoLock = errors.New("lost lock on files")
)
var (
	// TransparentBlocks is a slice of the block ids that are transparent.
	// This is used in lighting calculations and is user overrideable for custom
	// blocks
	TransparentBlocks = TransparentBlockList{0, 6, 18, 20, 26, 27, 28, 29, 30, 31, 33, 34, 37, 38, 39, 40, 50, 51, 52, 54, 55, 59, 63, 64, 65, 66, 69, 70, 71, 75, 76, 77, 78, 79, 81, 83, 85, 90, 92, 93, 94, 96, 102, 106, 107, 117, 118, 119, 120, 750}
	// LightBlocks is a map of block ids to the amount of light they give off
	LightBlocks = LightBlockList{
		10:  15,
		11:  15,
		39:  1,
		50:  14,
		51:  15,
		62:  13,
		74:  13,
		76:  7,
		89:  15,
		90:  11,
		91:  15,
		94:  9,
		117: 1,
		119: 15,
		120: 1,
		122: 1,
		124: 15,
		130: 7,
		138: 15,
	}
)

type Biome

type Biome uint8

Biome is a convenience type for biomes

const (
	Ocean                Biome = 0
	Plains               Biome = 1
	Desert               Biome = 2
	ExtremeHills         Biome = 3
	Forest               Biome = 4
	Taiga                Biome = 5
	Swampland            Biome = 6
	River                Biome = 7
	Hell                 Biome = 8
	Sky                  Biome = 9
	FrozenOcean          Biome = 10
	FrozenRiver          Biome = 11
	IcePlains            Biome = 12
	IceMountains         Biome = 13
	MushroomIsland       Biome = 14
	MushroomIslandShore  Biome = 15
	Beach                Biome = 16
	DesertHills          Biome = 17
	ForestHills          Biome = 18
	TaigaHills           Biome = 19
	ExtremeHillsEdge     Biome = 20
	Jungle               Biome = 21
	JungleHills          Biome = 22
	JungleEdge           Biome = 23
	DeepOcean            Biome = 24
	StoneBeach           Biome = 25
	ColdBeach            Biome = 26
	BirchForest          Biome = 27
	BirchForestHills     Biome = 28
	RoofedForest         Biome = 29
	ColdTaiga            Biome = 30
	ColdTaigaHills       Biome = 31
	MegaTaiga            Biome = 32
	MegaTaigaHills       Biome = 33
	ExtremeHillsPlus     Biome = 34
	Savanna              Biome = 35
	SavannaPlateau       Biome = 36
	Mesa                 Biome = 37
	MesaPlateauF         Biome = 38
	MesaPlateau          Biome = 39
	SunflowerPlains      Biome = 129
	DeserM               Biome = 130
	ExtremeHillsM        Biome = 131
	FlowerForest         Biome = 132
	TaigaM               Biome = 133
	SwamplandM           Biome = 134
	IcePlainsSpikes      Biome = 140
	JungleM              Biome = 149
	JungleEdgeM          Biome = 151
	BirchForestM         Biome = 155
	BirchForestHillsM    Biome = 156
	RoofedForestM        Biome = 157
	ColdTaigaM           Biome = 158
	MegaSpruceTaiga      Biome = 160
	MegaSpruceTaigaHills Biome = 161
	ExtremeHillsPlusM    Biome = 162
	SavannaM             Biome = 163
	SavannaPlateauM      Biome = 164
	MesaBryce            Biome = 165
	MesaPlateauFM        Biome = 166
	MesaPlateauM         Biome = 167
	AutoBiome            Biome = 255
)

Biome constants

func (Biome) Equal

func (b Biome) Equal(e interface{}) bool

Equal is an implementation of the equaler.Equaler interface

func (Biome) String

func (b Biome) String() string

type Block

type Block struct {
	ID   uint16
	Data uint8
}

Block is a type that represents the full information for a block, id, data, metadata and scheduled tick data

func (*Block) AddTicks

func (b *Block) AddTicks(t ...Tick)

AddTicks adds one or more scheduled ticks to the block

func (Block) Equal

func (b Block) Equal(e interface{}) bool

Equal is an implementation of the equaler.Equaler interface

func (Block) EqualBlock

func (b Block) EqualBlock(c Block) bool

EqualBlock checks for equality between the two blocks

func (Block) GetMetadata

func (b Block) GetMetadata() nbt.Compound

GetMetadata returns a copy of the metadata for this block, or nil is it has none

func (Block) GetTicks

func (b Block) GetTicks() []Tick

GetTicks returns all of the scheduled ticks for a block

func (Block) HasMetadata

func (b Block) HasMetadata() bool

HasMetadata returns true the the block contains extended metadata

func (Block) HasTicks

func (b Block) HasTicks() bool

HasTicks returns true if the block has any scheduled ticks

func (Block) IsLiquid

func (b Block) IsLiquid() bool

IsLiquid returns true if the block id matches a liquid

func (Block) Light

func (b Block) Light() uint8

Light returns how much light is generated by this block.

func (Block) Opacity

func (b Block) Opacity() uint8

Opacity returns how much light is blocked by this block.

func (*Block) SetMetadata

func (b *Block) SetMetadata(data nbt.Compound)

SetMetadata sets the blocks metadata to a copy of the given metadata

func (*Block) SetTicks

func (b *Block) SetTicks(t []Tick)

SetTicks sets the scheduled ticks for the block, replacing any existing ones

func (Block) String

func (b Block) String() string

type ConflictError

type ConflictError struct {
	X, Z int32
}

ConflictError is an error return by SetChunk when trying to save a single chunk multiple times during the same save operation

func (ConflictError) Error

func (c ConflictError) Error() string

type FilePath

type FilePath struct {
}

FilePath implements the Path interface and provides a standard minecraft save format.

func NewFilePath

func NewFilePath(dirname string) (*FilePath, error)

NewFilePath constructs a new directory based path to read from.

func NewFilePathDimension

func NewFilePathDimension(dirname string, dimension int) (*FilePath, error)

NewFilePathDimension create a new FilePath, but with the option to set the dimension that chunks are loaded from.

Example. Dimension -1 == The Nether

Dimension  1 == The End

func (*FilePath) Defrag

func (p *FilePath) Defrag(x, z int32) error

Defrag rewrites a region file to reduce wasted space.

func (*FilePath) GetChunk

func (p *FilePath) GetChunk(x, z int32) (nbt.Tag, error)

GetChunk returns the chunk at chunk coords x, z.

func (*FilePath) GetChunks

func (p *FilePath) GetChunks(x, z int32) ([][2]int32, error)

GetChunks returns a list of all chunks within a region with coords x,z

func (*FilePath) GetRegions

func (p *FilePath) GetRegions() [][2]int32

GetRegions returns a list of region x,z coords of all generated regions.

func (*FilePath) HasLock

func (p *FilePath) HasLock() bool

HasLock returns whether or not another program has taken the lock.

func (*FilePath) Lock

func (p *FilePath) Lock() error

Lock will retake the lock file if it has been lost. May cause corruption.

func (*FilePath) ReadLevelDat

func (p *FilePath) ReadLevelDat() (nbt.Tag, error)

ReadLevelDat returns the level data.

func (*FilePath) RemoveChunk

func (p *FilePath) RemoveChunk(x, z int32) error

RemoveChunk deletes the chunk at chunk coords x, z.

func (*FilePath) SetChunk

func (p *FilePath) SetChunk(data ...nbt.Tag) error

SetChunk saves multiple chunks at once, possibly returning a MultiError if multiple errors were encountered.

func (*FilePath) WriteLevelDat

func (p *FilePath) WriteLevelDat(data nbt.Tag) error

WriteLevelDat Writes the level data.

type FilePathSetError

type FilePathSetError struct {
	X, Z int32
	Err  error
}

FilePathSetError is an error returned from SetChunk when some error is returned either from converting the nbt or saving it

func (FilePathSetError) Error

func (f FilePathSetError) Error() string

type Level

type Level struct {
}

Level is the base type for minecraft data, all data for a minecraft level is either store in, or accessed from, this type

func NewLevel

func NewLevel(location Path) (*Level, error)

NewLevel creates/Loads a minecraft level from the given path.

func (*Level) AllowCommands

func (l *Level) AllowCommands(a bool)

AllowCommands enables/disables the cheat commands

func (*Level) BorderCenter

func (l *Level) BorderCenter(x, z float64)

BorderCenter sets the position of the center of the World Border

func (*Level) BorderSize

func (l *Level) BorderSize(w float64)

BorderSize sets the width of the border

func (*Level) Close

func (l *Level) Close()

Close closes all open chunks, but does not save them.

func (*Level) CommandBlockOutput

func (l *Level) CommandBlockOutput(d bool)

CommandBlockOutput enables/disables chat echo for command blocks

func (*Level) CommandFeedback

func (l *Level) CommandFeedback(d bool)

CommandFeedback enables/disables the echo for player commands in the chat

func (*Level) DayLightCycle

func (l *Level) DayLightCycle(d bool)

DayLightCycle enables/disables the day/night cycle

func (*Level) DeathMessages

func (l *Level) DeathMessages(d bool)

DeathMessages enables/disables the logging of player deaths to the chat

func (*Level) Difficulty

func (l *Level) Difficulty(d int8)

Difficulty sets the level difficulty

func (*Level) DifficultyLocked

func (l *Level) DifficultyLocked(dl bool)

DifficultyLocked locks the difficulty in game

func (*Level) FireTick

func (l *Level) FireTick(d bool)

FireTick enables/disables fire updates, such as spreading and extinguishing

func (*Level) GameMode

func (l *Level) GameMode(gm int32)

GameMode sets the game mode type

func (*Level) Generator

func (l *Level) Generator(generator string)

Generator sets the generator type

func (*Level) GeneratorOptions

func (l *Level) GeneratorOptions(options string)

GeneratorOptions sets the generator options for a flat or custom generator. The syntax is not checked.

func (*Level) GetBiome

func (l *Level) GetBiome(x, z int32) (Biome, error)

GetBiome returns the biome for the column x, z.

func (*Level) GetBlock

func (l *Level) GetBlock(x, y, z int32) (Block, error)

GetBlock gets the block at coordinates x, y, z.

func (*Level) GetHeight

func (l *Level) GetHeight(x, z int32) (int32, error)

GetHeight returns the y coordinate for the highest non-transparent block at column x, z.

func (*Level) GetLevelName

func (l *Level) GetLevelName() string

GetLevelName sets the given string to the name of the minecraft level.

func (*Level) GetSpawn

func (l *Level) GetSpawn() (x int32, y int32, z int32)

GetSpawn sets the given x, y, z coordinates to the current spawn point.

func (*Level) Hardcore

func (l *Level) Hardcore(h bool)

Hardcore enables/disables hardcore mode

func (*Level) HealthRegeneration

func (l *Level) HealthRegeneration(d bool)

HealthRegeneration enables/disables the regeneration of the players health when their hunger is high enough

func (*Level) KeepInventory

func (l *Level) KeepInventory(d bool)

KeepInventory enables/disables the keeping of a players inventory upon death

func (*Level) LevelName

func (l *Level) LevelName(name string)

LevelName sets the name of the minecraft level.

func (*Level) LogAdminCommands

func (l *Level) LogAdminCommands(d bool)

LogAdminCommands enables/disables the logging of admin commmands to the log

func (*Level) MapFeatures

func (l *Level) MapFeatures(mf bool)

MapFeatures enables/disables map feature generation (villages, strongholds, mineshafts, etc.)

func (*Level) MobGriefing

func (l *Level) MobGriefing(d bool)

MobGriefing enables/disables the ability of mobs to destroy blocks

func (*Level) MobLoot

func (l *Level) MobLoot(d bool)

MobLoot enables/disable mob loot drops

func (*Level) MobSpawning

func (l *Level) MobSpawning(d bool)

MobSpawning enables/disables mob spawning

func (*Level) RainTime

func (l *Level) RainTime(time int32)

RainTime sets the time until the rain state changes

func (*Level) Raining

func (l *Level) Raining(raining bool)

Raining sets the rain on or off

func (*Level) Save

func (l *Level) Save() error

Save saves all open chunks, but does not close them.

func (*Level) Seed

func (l *Level) Seed(seed int64)

Seed sets the random seed for the level

func (*Level) SetBiome

func (l *Level) SetBiome(x, z int32, biome Biome) error

SetBiome sets the biome for the column x, z.

func (*Level) SetBlock

func (l *Level) SetBlock(x, y, z int32, block Block) error

SetBlock sets the block at coordinates x, y, z. Also processes any lighting updates if applicable.

func (*Level) Spawn

func (l *Level) Spawn(x, y, z int32)

Spawn sets the spawn point to the given coordinates.

func (*Level) ThunderTime

func (l *Level) ThunderTime(time int32)

ThunderTime sets the tune until the thunder state changes

func (*Level) Thundering

func (l *Level) Thundering(thundering bool)

Thundering sets the lightning/thunder on or off

func (*Level) TicksExisted

func (l *Level) TicksExisted(t int64)

TicksExisted sets how many ticks have passed in game

func (*Level) TileDrops

func (l *Level) TileDrops(d bool)

TileDrops enables/disables the dropping of items upon block breakage

func (*Level) Time

func (l *Level) Time(t int64)

Time sets the in world time.

type LightBlockList

type LightBlockList map[uint16]uint8

LightBlockList is a map of block ids to the amount of light they give off

func (LightBlockList) Add

func (l LightBlockList) Add(blockID uint16, light uint8) bool

Add is a convenience method for the light block list. It adds a new block id to the list with its corresponding light level

func (LightBlockList) Remove

func (l LightBlockList) Remove(blockID uint16) bool

Remove is a convenience method to remove a block id from the light block list

type MemPath

type MemPath struct {
}

MemPath is an in memory minecraft level format that implements the Path interface.

func NewMemPath

func NewMemPath() *MemPath

NewMemPath creates a new MemPath implementation.

func (*MemPath) GetChunk

func (m *MemPath) GetChunk(x, z int32) (nbt.Tag, error)

GetChunk returns the chunk at chunk coords x, z.

func (*MemPath) ReadLevelDat

func (m *MemPath) ReadLevelDat() (nbt.Tag, error)

ReadLevelDat Returns the level data.

func (*MemPath) RemoveChunk

func (m *MemPath) RemoveChunk(x, z int32) error

RemoveChunk deletes the chunk at chunk coords x, z.

func (*MemPath) SetChunk

func (m *MemPath) SetChunk(data ...nbt.Tag) error

SetChunk saves multiple chunks at once.

func (*MemPath) WriteLevelDat

func (m *MemPath) WriteLevelDat(data nbt.Tag) error

WriteLevelDat Writes the level data.

type MissingTagError

type MissingTagError struct {
	TagName string
}

MissingTagError is an error type returned when an expected tag is not found

func (MissingTagError) Error

func (m MissingTagError) Error() string

type MultiError

type MultiError struct {
	Errors []error
}

MultiError is an error type that contains multiple errors

func (MultiError) Error

func (m MultiError) Error() string

type Option

type Option func(*Level)

Option is a function used to set an option for a minecraft level struct

type Path

type Path interface {
	// Returns an empty nbt.Tag (TagEnd) when chunk does not exists
	GetChunk(int32, int32) (nbt.Tag, error)
	SetChunk(...nbt.Tag) error
	RemoveChunk(int32, int32) error
	ReadLevelDat() (nbt.Tag, error)
	WriteLevelDat(nbt.Tag) error
}

The Path interface allows the minecraft level to be created from/saved to different formats.

type Tick

type Tick struct {
	I, T, P int32
}

Tick is a type that represents a scheduled tick

type TransparentBlockList

type TransparentBlockList []uint16

TransparentBlockList is a slice of the block ids that are transparent.

func (*TransparentBlockList) Add

func (t *TransparentBlockList) Add(blockID uint16) bool

Add is a convenience method for the transparent block list. It adds a new block id to the list, making sure to not add duplicates

func (*TransparentBlockList) Remove

func (t *TransparentBlockList) Remove(blockID uint16) bool

Remove is a convenience method to remove a block id from the transparent block list

type UnexpectedValue

type UnexpectedValue struct {
	TagName, Expecting, Got string
}

UnexpectedValue is an error returned from chunk loading during sanity checking

func (UnexpectedValue) Error

func (u UnexpectedValue) Error() string

type UnknownCompression

type UnknownCompression struct {
	Code byte
}

UnknownCompression is an error returned by path types when it encounters a compression scheme it is not prepared to handle or an unkown compression scheme

func (UnknownCompression) Error

func (u UnknownCompression) Error() string

type WrongTypeError

type WrongTypeError struct {
	TagName        string
	Expecting, Got nbt.TagID
}

WrongTypeError is an error returned when a nbt tag has an unexpected type

func (WrongTypeError) Error

func (w WrongTypeError) Error() string

About

Package minecraft is a level viewer/editor for the popular creative game minecraft

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published