up3
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
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
This commit is contained in:
@@ -0,0 +1,60 @@
|
||||
package block
|
||||
|
||||
import (
|
||||
"math/rand/v2"
|
||||
|
||||
"github.com/df-mc/dragonfly/server/item"
|
||||
"github.com/df-mc/dragonfly/server/world"
|
||||
)
|
||||
|
||||
// Blackstone is a naturally generating block in the nether that can be used to craft stone tools, brewing stands and
|
||||
// furnaces. Gilded blackstone also has a 10% chance to drop 2-6 golden nuggets.
|
||||
type Blackstone struct {
|
||||
solid
|
||||
bassDrum
|
||||
|
||||
// Type is the type of blackstone of the block.
|
||||
Type BlackstoneType
|
||||
}
|
||||
|
||||
// BreakInfo ...
|
||||
func (b Blackstone) BreakInfo() BreakInfo {
|
||||
drops := oneOf(b)
|
||||
hardness := 1.5
|
||||
|
||||
switch b.Type {
|
||||
case GildedBlackstone():
|
||||
drops = func(t item.Tool, enchantments []item.Enchantment) []item.Stack {
|
||||
if hasSilkTouch(enchantments) {
|
||||
return []item.Stack{item.NewStack(b, 1)}
|
||||
}
|
||||
nuggetChances := []float64{0.1, 1.0 / 7.0, 0.25, 1.0}
|
||||
if rand.Float64() < nuggetChances[min(fortuneLevel(enchantments), 3)] {
|
||||
return []item.Stack{item.NewStack(item.GoldNugget{}, rand.IntN(4)+2)}
|
||||
}
|
||||
return []item.Stack{item.NewStack(b, 1)}
|
||||
}
|
||||
case PolishedBlackstone():
|
||||
hardness = 2
|
||||
}
|
||||
|
||||
return newBreakInfo(hardness, pickaxeHarvestable, pickaxeEffective, drops).withBlastResistance(30)
|
||||
}
|
||||
|
||||
// EncodeItem ...
|
||||
func (b Blackstone) EncodeItem() (name string, meta int16) {
|
||||
return "minecraft:" + b.Type.String(), 0
|
||||
}
|
||||
|
||||
// EncodeBlock ...
|
||||
func (b Blackstone) EncodeBlock() (string, map[string]any) {
|
||||
return "minecraft:" + b.Type.String(), nil
|
||||
}
|
||||
|
||||
// allBlackstone returns a list of all blackstone block variants.
|
||||
func allBlackstone() (s []world.Block) {
|
||||
for _, t := range BlackstoneTypes() {
|
||||
s = append(s, Blackstone{Type: t})
|
||||
}
|
||||
return
|
||||
}
|
||||
Reference in New Issue
Block a user