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
78 lines
2.5 KiB
Go
78 lines
2.5 KiB
Go
package item
|
|
|
|
import (
|
|
"time"
|
|
)
|
|
|
|
// Smeltable represents an item that can be input into a smelter, such as a blast furnace, furnace, or smoker, to cook and
|
|
// transform it into a different item.
|
|
type Smeltable interface {
|
|
// SmeltInfo returns information of the item related to it's smelting capabilities.
|
|
SmeltInfo() SmeltInfo
|
|
}
|
|
|
|
// Fuel represents an item that can be used as fuel in a smelter, such as a blast furnace, furnace, or smoker.
|
|
type Fuel interface {
|
|
// FuelInfo returns information of the item related to its fuel capabilities.
|
|
FuelInfo() FuelInfo
|
|
}
|
|
|
|
// SmeltInfo is a struct returned by items that implement Smeltable. It contains information about the product, experience
|
|
// gained, and more.
|
|
type SmeltInfo struct {
|
|
// Product returns the resulting item stack from smelting the item.
|
|
Product Stack
|
|
// Experience returns the experience gained from performing the smelt, alongside the Product.
|
|
Experience float64
|
|
// Food returns true if the smelt is food, for smelters such as smokers or regular furnaces.
|
|
Food bool
|
|
// Ores returns true if the smelt is ores, for smelters such as blast furnaces or regular furnaces.
|
|
Ores bool
|
|
}
|
|
|
|
// newSmeltInfo returns a new SmeltInfo with the given values.
|
|
func newSmeltInfo(product Stack, experience float64) SmeltInfo {
|
|
return SmeltInfo{
|
|
Product: product,
|
|
Experience: experience,
|
|
}
|
|
}
|
|
|
|
// newFoodSmeltInfo returns a new SmeltInfo with the given values that allows smelting in a smelter.
|
|
func newFoodSmeltInfo(product Stack, experience float64) SmeltInfo {
|
|
return SmeltInfo{
|
|
Product: product,
|
|
Experience: experience,
|
|
Food: true,
|
|
}
|
|
}
|
|
|
|
// newOreSmeltInfo returns a new SmeltInfo with the given values that allows smelting in a blast furnace.
|
|
func newOreSmeltInfo(product Stack, experience float64) SmeltInfo {
|
|
return SmeltInfo{
|
|
Product: product,
|
|
Experience: experience,
|
|
Ores: true,
|
|
}
|
|
}
|
|
|
|
// FuelInfo is a struct returned by items that implement Fuel. It contains information about the amount of fuel time
|
|
// it gives, and the residue created from burning the fuel.
|
|
type FuelInfo struct {
|
|
// Duration returns the amount of time the fuel can be used to burn an input in a smelter.
|
|
Duration time.Duration
|
|
// Residue is the resulting item from burning the fuel in a smelter.
|
|
Residue Stack
|
|
}
|
|
|
|
// WithResidue returns a new FuelInfo with a residue.
|
|
func (f FuelInfo) WithResidue(residue Stack) FuelInfo {
|
|
f.Residue = residue
|
|
return f
|
|
}
|
|
|
|
// newFuelInfo returns a new FuelInfo with the given values.
|
|
func newFuelInfo(duration time.Duration) FuelInfo {
|
|
return FuelInfo{Duration: duration}
|
|
}
|