block

package
v0.0.0-...-05212bf Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 11, 2022 License: MIT Imports: 3 Imported by: 0

Documentation

Overview

Package block provides means for registering blocks and creating blocks from registered block descriptors. A BlockDescriptor is a description of a block, kind of a blueprint. One can register a BlockDescriptor, which will allow for later creation of a block with the ID in the block descriptor.

id := id.ParseID("plugin:block")
myBlockDescriptor := BlockDescriptor{ID: id}
block.Must(block.RegisterBlock(myBlockDescriptor)) // panic on fail
block.Create(id)                                   // will succeed

A block can not be created, if there's no block descriptor for it. Almost the same goes for properties that are supported for a block. A PropertyDescriptor doesn't have to be explicitly registered, but is registered with a BlockDescriptor. If one tries to create a block with a property whose PropertyDescriptor is not listed in the BlockDescriptor, the creation will fail.

One can only register one BlockDescriptor per block ID and per numeric ID. Registering a duplicate block descriptor will result in an error.

Index

Constants

This section is empty.

Variables

View Source
var (
	Air = BlockDescriptor{
		ID: id.ID{"minecraft", "air"},
	}
	Andesite = BlockDescriptor{
		ID: id.ID{"minecraft", "andesite"},
	}
	Bedrock = BlockDescriptor{
		ID: id.ID{"minecraft", "bedrock"},
	}
	CaveAir = BlockDescriptor{
		ID: id.ID{"minecraft", "cave_air"},
	}
	Clay = BlockDescriptor{
		ID: id.ID{"minecraft", "clay"},
	}
	CoalOre = BlockDescriptor{
		ID: id.ID{"minecraft", "coal_ore"},
	}
	Cobblestone = BlockDescriptor{
		ID: id.ID{"minecraft", "cobblestone"},
	}
	Cobweb = BlockDescriptor{
		ID: id.ID{"minecraft", "cobweb"},
	}
	Diorite = BlockDescriptor{
		ID: id.ID{"minecraft", "diorite"},
	}
	Dirt = BlockDescriptor{
		ID: id.ID{"minecraft", "dirt"},
	}
	GoldOre = BlockDescriptor{
		ID: id.ID{"minecraft", "gold_ore"},
	}
	Granite = BlockDescriptor{
		ID: id.ID{"minecraft", "granite"},
	}
	Grass = BlockDescriptor{
		ID: id.ID{"minecraft", "grass"},
	}
	GrassBlock = BlockDescriptor{
		ID: id.ID{"minecraft", "grass_block"},
	}
	Gravel = BlockDescriptor{
		ID: id.ID{"minecraft", "gravel"},
	}
	IronOre = BlockDescriptor{
		ID: id.ID{"minecraft", "iron_ore"},
	}
	LapisOre = BlockDescriptor{
		ID: id.ID{"minecraft", "lapis_ore"},
	}
	LilyPad = BlockDescriptor{
		ID: id.ID{"minecraft", "lily_pad"},
	}
	OakFence = BlockDescriptor{
		ID: id.ID{"minecraft", "oak_fence"},
	}
	OakLeaves = BlockDescriptor{
		ID: id.ID{"minecraft", "oak_leaves"},
	}
	OakLog = BlockDescriptor{
		ID: id.ID{"minecraft", "oak_log"},
	}
	OakPlanks = BlockDescriptor{
		ID: id.ID{"minecraft", "oak_planks"},
	}
	Rail = BlockDescriptor{
		ID: id.ID{"minecraft", "rail"},
	}
	RedstoneOre = BlockDescriptor{
		ID: id.ID{"minecraft", "redstone_ore"},
	}
	Seagrass = BlockDescriptor{
		ID: id.ID{"minecraft", "seagrass"},
	}
	Stone = BlockDescriptor{
		ID: id.ID{"minecraft", "stone"},
	}
	TallSeagrass = BlockDescriptor{
		ID: id.ID{"minecraft", "tall_seagrass"},
	}
	Vine = BlockDescriptor{
		ID: id.ID{"minecraft", "vine"},
	}
	VoidAir = BlockDescriptor{
		ID: id.ID{"minecraft", "void_air"},
	}
	Water = BlockDescriptor{
		ID: id.ID{"minecraft", "water"},
	}
)

Functions

func Must

func Must(err error)

Must panics if the given error is not nil.

func RegisterBlock

func RegisterBlock(desc BlockDescriptor) error

Types

type Block

type Block interface {
	ID() id.ID
	Properties() map[string]Property
}

func Create

func Create(id id.ID, properties ...Property) (Block, error)

func CreateFromDescriptor

func CreateFromDescriptor(desc BlockDescriptor) (Block, error)

type BlockDescriptor

type BlockDescriptor struct {
	ID                  id.ID
	AvailableProperties []PropertyDescriptor
}

type Property

type Property interface {
	Name() string
	Value() interface{}
}

type PropertyDescriptor

type PropertyDescriptor struct {
	Name          string
	Type          reflect.Type
	DefaultValue  interface{}
	AllowedValues []interface{}
}

func DescriptorForPropertyName

func DescriptorForPropertyName(name string) (PropertyDescriptor, bool)

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL