Files
mc/server/world/block_model.go
T

29 lines
1009 B
Go
Raw Normal View History

2026-07-09 08:33:57 +08:00
package world
import (
"github.com/df-mc/dragonfly/server/block/cube"
)
// BlockModel represents the model of a block. These models specify the ways a block can be collided with and
// whether specific faces are solid wrt. being able to, for example, place torches onto those sides.
type BlockModel interface {
// BBox returns the bounding boxes that a block with this model can be collided with.
BBox(pos cube.Pos, s BlockSource) []cube.BBox
// FaceSolid checks if a specific face of a block at the position in a world passed is solid. Blocks may
// be attached to these faces.
FaceSolid(pos cube.Pos, face cube.Face, s BlockSource) bool
}
// unknownModel is the model used for unknown blocks. It is the equivalent of a fully solid model.
type unknownModel struct{}
// BBox ...
func (u unknownModel) BBox(cube.Pos, BlockSource) []cube.BBox {
return []cube.BBox{cube.Box(0, 0, 0, 1, 1, 1)}
}
// FaceSolid ...
func (u unknownModel) FaceSolid(cube.Pos, cube.Face, BlockSource) bool {
return true
}