Files
TarnaWijaya 26ed99fda6
Build and deploy / Build (push) Has been cancelled
Build and deploy / Update Contributors (push) Has been cancelled
Build and deploy / Deploy (push) Has been cancelled
up3
2026-07-09 08:33:57 +08:00

62 lines
1.5 KiB
Go

package block
import (
"github.com/df-mc/dragonfly/server/block/cube"
"github.com/df-mc/dragonfly/server/item"
"github.com/df-mc/dragonfly/server/world"
"github.com/go-gl/mathgl/mgl64"
)
// Basalt is a type of igneous rock found in the Nether.
type Basalt struct {
solid
bassDrum
// Polished specifies if the basalt is its polished variant.
Polished bool
// Axis is the axis which the basalt faces.
Axis cube.Axis
}
// UseOnBlock ...
func (b Basalt) UseOnBlock(pos cube.Pos, face cube.Face, _ mgl64.Vec3, tx *world.Tx, user item.User, ctx *item.UseContext) (used bool) {
pos, face, used = firstReplaceable(tx, pos, face, b)
if !used {
return
}
b.Axis = face.Axis()
place(tx, pos, b, user, ctx)
return placed(ctx)
}
// BreakInfo ...
func (b Basalt) BreakInfo() BreakInfo {
return newBreakInfo(1.25, pickaxeHarvestable, pickaxeEffective, oneOf(b)).withBlastResistance(21)
}
// EncodeItem ...
func (b Basalt) EncodeItem() (name string, meta int16) {
if b.Polished {
return "minecraft:polished_basalt", 0
}
return "minecraft:basalt", 0
}
// EncodeBlock ...
func (b Basalt) EncodeBlock() (name string, properties map[string]any) {
if b.Polished {
return "minecraft:polished_basalt", map[string]any{"pillar_axis": b.Axis.String()}
}
return "minecraft:basalt", map[string]any{"pillar_axis": b.Axis.String()}
}
// allBasalt ...
func allBasalt() (basalt []world.Block) {
for _, axis := range cube.Axes() {
basalt = append(basalt, Basalt{Axis: axis, Polished: false})
basalt = append(basalt, Basalt{Axis: axis, Polished: true})
}
return
}