Files

77 lines
2.0 KiB
Go
Raw Permalink Normal View History

2026-07-09 08:33:57 +08:00
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"
)
// Deepslate is similar to stone but is naturally found deep underground around Y0 and below, and is harder to break.
type Deepslate struct {
solid
bassDrum
// Type is the type of deepslate of the block.
Type DeepslateType
// Axis is the axis which the deepslate faces.
Axis cube.Axis
}
// BreakInfo ...
func (d Deepslate) BreakInfo() BreakInfo {
if d.Type == NormalDeepslate() {
return newBreakInfo(3, pickaxeHarvestable, pickaxeEffective, silkTouchOneOf(Deepslate{Type: CobbledDeepslate()}, d)).withBlastResistance(30)
}
return newBreakInfo(3.5, pickaxeHarvestable, pickaxeEffective, oneOf(d)).withBlastResistance(30)
}
// SmeltInfo ...
func (d Deepslate) SmeltInfo() item.SmeltInfo {
if d.Type == CobbledDeepslate() {
return newSmeltInfo(item.NewStack(Deepslate{}, 1), 0.1)
}
return item.SmeltInfo{}
}
// UseOnBlock ...
func (d Deepslate) 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, d)
if !used {
return
}
if d.Type == NormalDeepslate() {
d.Axis = face.Axis()
}
place(tx, pos, d, user, ctx)
return placed(ctx)
}
// EncodeItem ...
func (d Deepslate) EncodeItem() (name string, meta int16) {
return "minecraft:" + d.Type.String(), 0
}
// EncodeBlock ...
func (d Deepslate) EncodeBlock() (string, map[string]any) {
if d.Type == NormalDeepslate() {
return "minecraft:deepslate", map[string]any{"pillar_axis": d.Axis.String()}
}
return "minecraft:" + d.Type.String(), nil
}
// allDeepslate returns a list of all deepslate block variants.
func allDeepslate() (s []world.Block) {
for _, t := range DeepslateTypes() {
axes := []cube.Axis{0}
if t == NormalDeepslate() {
axes = cube.Axes()
}
for _, axis := range axes {
s = append(s, Deepslate{Type: t, Axis: axis})
}
}
return
}