item

package
v0.0.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 13, 2020 License: MIT Imports: 15 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func RegisterCreativeItem

func RegisterCreativeItem(item Stack)

RegisterCreativeItem registers an item as a creative item, exposing it in the creative inventory.

func RegisterEnchantment

func RegisterEnchantment(id int, enchantment Enchantment)

RegisterEnchantment registers an enchantment with the ID passed. Once registered, enchantments may be received by instantiating an Enchantment struct (e.g. enchantment.Protection{})

Types

type ArmourContainer

type ArmourContainer interface {
	// SetHelmet sets the item stack passed as the helmet in the inventory.
	SetHelmet(helmet Stack)
	// Helmet returns the item stack set as helmet in the inventory.
	Helmet() Stack
	// SetChestplate sets the item stack passed as the chestplate in the inventory.
	SetChestplate(chestplate Stack)
	// Chestplate returns the item stack set as chestplate in the inventory.
	Chestplate() Stack
	// SetLeggings sets the item stack passed as the leggings in the inventory.
	SetLeggings(leggings Stack)
	// Leggings returns the item stack set as leggings in the inventory.
	Leggings() Stack
	// SetBoots sets the item stack passed as the boots in the inventory.
	SetBoots(boots Stack)
	// Boots returns the item stack set as boots in the inventory.
	Boots() Stack
}

ArmourContainer represents a container of armour. Generally, entities will want to use the inventory.Armour type.

type Armoured

type Armoured interface {
	// Armour returns the armour inventory of the entity.
	Armour() ArmourContainer
}

Armoured represents an entity that is able to wear armour in a specific armour inventory. These entities typically include human-like entities such as zombies.

type Axe

type Axe struct {
	// Tier is the tier of the axe.
	Tier tool.Tier
}

Axe is a tool generally used for mining wood-like blocks. It may also be used to break some plant-like blocks at a faster pace such as pumpkins.

func (Axe) AttackDamage

func (a Axe) AttackDamage() float64

AttackDamage ...

func (Axe) BaseMiningEfficiency

func (a Axe) BaseMiningEfficiency(world.Block) float64

BaseMiningEfficiency ...

func (Axe) DurabilityInfo

func (a Axe) DurabilityInfo() DurabilityInfo

DurabilityInfo ...

func (Axe) EncodeItem

func (a Axe) EncodeItem() (id int32, meta int16)

EncodeItem ...

func (Axe) HarvestLevel

func (a Axe) HarvestLevel() int

HarvestLevel ...

func (Axe) MaxCount

func (a Axe) MaxCount() int

MaxCount always returns 1.

func (Axe) ToolType

func (a Axe) ToolType() tool.Type

ToolType ...

func (Axe) UseOnBlock

func (a Axe) UseOnBlock(pos world.BlockPos, _ world.Face, _ mgl64.Vec3, w *world.World, _ User, ctx *UseContext) bool

UseOnBlock handles the stripping of logs when a player clicks a log with an axe.

type Boots

type Boots struct {
	// Tier is the tier of the boots.
	Tier armour.Tier
}

Boots are a defensive item that may be equipped in the boots armour slot. They come in several tiers, like leather, gold, chain, iron and diamond.

func (Boots) DefencePoints

func (b Boots) DefencePoints() float64

DefencePoints ...

func (Boots) DurabilityInfo

func (b Boots) DurabilityInfo() DurabilityInfo

DurabilityInfo ...

func (Boots) EncodeItem

func (b Boots) EncodeItem() (id int32, meta int16)

EncodeItem ...

func (Boots) KnockBackResistance added in v0.0.2

func (b Boots) KnockBackResistance() float64

KnockBackResistance ...

func (Boots) MaxCount

func (b Boots) MaxCount() int

MaxCount always returns 1.

func (Boots) Use

func (b Boots) Use(_ *world.World, user User, _ *UseContext) bool

Use handles the auto-equipping of boots in the armour slot when using it.

type Bucket

type Bucket struct {
	// Content is the content that the bucket has. By default, this value resolves to an empty bucket.
	Content bucket.Content
}

Bucket is a tool used to carry water, lava, milk and fish.

func (Bucket) Empty

func (b Bucket) Empty() bool

Empty returns true if the bucket is empty.

func (Bucket) EncodeItem

func (b Bucket) EncodeItem() (id int32, meta int16)

EncodeItem ...

func (Bucket) MaxCount

func (b Bucket) MaxCount() int

MaxCount returns 16.

func (Bucket) UseOnBlock

func (b Bucket) UseOnBlock(pos world.BlockPos, face world.Face, _ mgl64.Vec3, w *world.World, _ User, ctx *UseContext) bool

UseOnBlock handles the bucket filling and emptying logic.

type Carrier

type Carrier interface {
	// HeldItems returns the items currently held by the entity. Viewers of the entity will be able to see
	// these items.
	HeldItems() (mainHand, offHand Stack)
}

Carrier represents an entity that is able to carry an item.

type Chestplate

type Chestplate struct {
	// Tier is the tier of the chestplate.
	Tier armour.Tier
}

Chestplate is a defensive item that may be equipped in the chestplate slot. Generally, chestplates provide the most defence of all armour items.

func (Chestplate) DefencePoints

func (c Chestplate) DefencePoints() float64

DefencePoints ...

func (Chestplate) DurabilityInfo

func (c Chestplate) DurabilityInfo() DurabilityInfo

DurabilityInfo ...

func (Chestplate) EncodeItem

func (c Chestplate) EncodeItem() (id int32, meta int16)

EncodeItem ...

func (Chestplate) KnockBackResistance added in v0.0.2

func (c Chestplate) KnockBackResistance() float64

KnockBackResistance ...

func (Chestplate) MaxCount

func (c Chestplate) MaxCount() int

MaxCount always returns 1.

func (Chestplate) Use

func (c Chestplate) Use(_ *world.World, user User, _ *UseContext) bool

Use handles the using of a chestplate to auto-equip it in the designated armour slot.

type Collector

type Collector interface {
	world.Entity
	// Collect collects the stack passed. It is called if the Collector is standing near an item entity that
	// may be picked up.
	// The count of items collected from the stack n is returned.
	Collect(stack Stack) (n int)
}

Collector represents an entity in the world that is able to collect an item, typically an entity such as a player or a zombie.

type DurabilityInfo

type DurabilityInfo struct {
	// MaxDurability is the maximum durability that this item may have. This field must be positive for the
	// durability to function properly.
	MaxDurability int
	// BrokenItem is the item created when the item is broken. For most durable items, this is simply an
	// air item.
	BrokenItem func() Stack
	// AttackDurability and BreakDurability are the losses in durability that the item sustains when they are
	// used to do the respective actions.
	AttackDurability, BreakDurability int
}

DurabilityInfo is the info of a durable item. It include fields that must be set in order to define durability related behaviour.

type Durable

type Durable interface {
	// DurabilityInfo returns info related to the durability of an item.
	DurabilityInfo() DurabilityInfo
}

Durable represents an item that has durability, and may therefore be broken. Some durable items, when broken, create a new item, such as an elytra.

type Enchantment

type Enchantment interface {
	// Name returns the name of the enchantment.
	Name() string
	// Level returns the current level of the enchantment. The best way to use this is
	// by having a struct similar to the enchantment.enchantment struct to store the level.
	Level() int
	// MaxLevel returns the maximum level the enchantment should be able to have.
	MaxLevel() int
	// WithLevel is called to create a new instance of the enchantment using the level passed.
	// This method could also be used to limit the level of the enchantment using MaxLevel.
	WithLevel(level int) Enchantment
	// CompatibleWith is called when an enchantment is added to an item. It can be used to check if
	// the enchantment is compatible with the item stack based on the item type, current enchantments etc.
	CompatibleWith(s Stack) bool
}

Enchantment represents an enchantment that can be applied to an item. It has methods to get the name, get the current level, get the maximum level, get a new instance of the enchant with a certain level and to check if the enchantment is compatible with an item stack.

type Helmet

type Helmet struct {
	// Tier is the tier of the armour.
	Tier armour.Tier
}

Helmet is a defensive item that may be worn in the head slot. It comes in several tiers, each with different defence points and armour toughness.

func (Helmet) DefencePoints

func (h Helmet) DefencePoints() float64

DefencePoints ...

func (Helmet) DurabilityInfo

func (h Helmet) DurabilityInfo() DurabilityInfo

DurabilityInfo ...

func (Helmet) EncodeItem

func (h Helmet) EncodeItem() (id int32, meta int16)

EncodeItem ...

func (Helmet) KnockBackResistance added in v0.0.2

func (h Helmet) KnockBackResistance() float64

KnockBackResistance ...

func (Helmet) MaxCount

func (h Helmet) MaxCount() int

MaxCount always returns 1.

func (Helmet) Use

func (h Helmet) Use(_ *world.World, user User, _ *UseContext) bool

Use handles the using of a helmet to auto-equip it in an armour slot.

type Leggings

type Leggings struct {
	// Tier is the tier of the leggings.
	Tier armour.Tier
}

Leggings are a defensive item that may be equipped in the leggings armour slot. They come in several tiers, like leather, gold, chain, iron and diamond.

func (Leggings) DefencePoints

func (l Leggings) DefencePoints() float64

DefencePoints ...

func (Leggings) DurabilityInfo

func (l Leggings) DurabilityInfo() DurabilityInfo

DurabilityInfo ...

func (Leggings) EncodeItem

func (l Leggings) EncodeItem() (id int32, meta int16)

EncodeItem ...

func (Leggings) KnockBackResistance added in v0.0.2

func (l Leggings) KnockBackResistance() float64

KnockBackResistance ...

func (Leggings) MaxCount

func (l Leggings) MaxCount() int

MaxCount always returns 1.

func (Leggings) Use

func (l Leggings) Use(_ *world.World, user User, _ *UseContext) bool

Use handles the auto-equipping of leggings in an armour slot by using the item.

type MaxCounter

type MaxCounter interface {
	// MaxCount returns the maximum number of items that a stack may be composed of. The number returned must
	// be positive.
	MaxCount() int
}

MaxCounter represents an item that has a specific max count. By default, each item will be expected to have a maximum count of 64. MaxCounter may be implemented to change this behaviour.

type Pickaxe

type Pickaxe struct {
	// Tier is the tier of the pickaxe.
	Tier tool.Tier
}

Pickaxe is a tool generally used for mining stone-like blocks and ores at a higher speed and to obtain their drops.

func (Pickaxe) AttackDamage

func (p Pickaxe) AttackDamage() float64

AttackDamage returns the attack damage of the pickaxe.

func (Pickaxe) BaseMiningEfficiency

func (p Pickaxe) BaseMiningEfficiency(world.Block) float64

BaseMiningEfficiency is the base efficiency of the pickaxe, when it comes to mining blocks. This decides the speed with which blocks can be mined.

func (Pickaxe) DurabilityInfo

func (p Pickaxe) DurabilityInfo() DurabilityInfo

DurabilityInfo ...

func (Pickaxe) EncodeItem

func (p Pickaxe) EncodeItem() (id int32, meta int16)

EncodeItem ...

func (Pickaxe) HarvestLevel

func (p Pickaxe) HarvestLevel() int

HarvestLevel returns the level that this pickaxe is able to harvest. If a block has a harvest level above this one, this pickaxe won't be able to harvest it.

func (Pickaxe) MaxCount

func (p Pickaxe) MaxCount() int

MaxCount returns 1.

func (Pickaxe) ToolType

func (p Pickaxe) ToolType() tool.Type

ToolType returns the type for pickaxes.

type Shovel

type Shovel struct {
	// Tier is the tier of the shovel.
	Tier tool.Tier
}

Shovel is a tool generally used for mining ground-like blocks, such as sand, gravel and dirt. Additionally, shovels may be used to turn grass into grass paths.

func (Shovel) AttackDamage

func (s Shovel) AttackDamage() float64

AttackDamage returns the attack damage of the shovel.

func (Shovel) BaseMiningEfficiency

func (s Shovel) BaseMiningEfficiency(world.Block) float64

BaseMiningEfficiency ...

func (Shovel) DurabilityInfo

func (s Shovel) DurabilityInfo() DurabilityInfo

DurabilityInfo ...

func (Shovel) EncodeItem

func (s Shovel) EncodeItem() (id int32, meta int16)

EncodeItem ...

func (Shovel) HarvestLevel

func (s Shovel) HarvestLevel() int

HarvestLevel ...

func (Shovel) MaxCount

func (s Shovel) MaxCount() int

MaxCount always returns 1.

func (Shovel) ToolType

func (s Shovel) ToolType() tool.Type

ToolType returns the tool type for shovels.

func (Shovel) UseOnBlock

func (s Shovel) UseOnBlock(pos world.BlockPos, face world.Face, _ mgl64.Vec3, w *world.World, _ User, ctx *UseContext) bool

UseOnBlock handles the creation of grass path blocks from grass blocks.

type Stack

type Stack struct {
	// contains filtered or unexported fields
}

Stack represents a stack of items. The stack shares the same item type and has a count which specifies the size of the stack.

func CreativeItems

func CreativeItems() []Stack

CreativeItems returns a list with all items that have been registered as a creative item. These items will be accessible by players in-game who have creative mode enabled.

func NewStack

func NewStack(t world.Item, count int) Stack

NewStack returns a new stack using the item type and the count passed. NewStack panics if the count passed is negative or if the item type passed is nil.

func (Stack) AddStack

func (s Stack) AddStack(s2 Stack) (a, b Stack)

AddStack adds another stack to the stack and returns both stacks. The first stack returned will have as many items in it as possible to fit in the stack, according to a max count of either 64 or otherwise as returned by Item.MaxCount(). The second stack will have the leftover items: It may be empty if the count of both stacks together don't exceed the max count. If the two stacks are not comparable, AddStack will return both the original stack and the stack passed.

func (Stack) AttackDamage

func (s Stack) AttackDamage() float64

AttackDamage returns the attack damage of the stack. By default, the value returned is 2.0. If the item held implements the item.Weapon interface, this damage may be different.

func (Stack) Comparable

func (s Stack) Comparable(s2 Stack) bool

Comparable checks if two stacks can be considered comparable. True is returned if the two stacks have an equal item type and have equal enchantments, lore and custom names, or if one of the stacks is empty.

func (Stack) Count

func (s Stack) Count() int

Count returns the amount of items that is present on the stack. The count is guaranteed never to be negative.

func (Stack) CustomName

func (s Stack) CustomName() string

CustomName returns the custom name set for the Stack. An empty string is returned if the Stack has no custom name set.

func (Stack) Damage

func (s Stack) Damage(d int) Stack

Damage returns a new stack that is damaged by the amount passed. (Meaning, its durability lowered by the amount passed.) If the item does not implement the Durable interface, the original stack is returned. The damage passed may be negative to add durability. If the final durability reaches 0 or below, the item returned is the resulting item of the breaking of the item. If the final durability reaches a number higher than the maximum durability, the stack returned will get the maximum durability.

func (Stack) Durability

func (s Stack) Durability() int

Durability returns the current durability of the item stack. If the item is not one that implements the Durable interface, BaseDurability will always return -1. The closer the durability returned is to 0, the closer the item is to breaking.

func (Stack) Empty

func (s Stack) Empty() bool

Empty checks if the stack is empty (has a count of 0).

func (Stack) Enchantment

func (s Stack) Enchantment(enchant Enchantment) (Enchantment, bool)

Enchantment attempts to return an enchantment set to the Stack using Stack.WithEnchantment(). If an enchantment is found, the enchantment and the bool true is returned.

func (Stack) Enchantments

func (s Stack) Enchantments() []Enchantment

Enchantments returns an array of all Enchantments on the item.

func (Stack) Grow

func (s Stack) Grow(n int) Stack

Grow grows the Stack's count by n, returning the resulting Stack. If a positive number is passed, the stack is grown, whereas if a negative size is passed, the resulting Stack will have a lower count. The count of the returned Stack will never be negative.

func (Stack) Item

func (s Stack) Item() world.Item

Item returns the item that the stack holds. If the stack is considered empty (Stack.Empty()), Item will always return nil.

func (Stack) Lore

func (s Stack) Lore() []string

Lore returns the lore set for the Stack. If no lore is present, the slice returned has a len of 0.

func (Stack) MaxCount

func (s Stack) MaxCount() int

MaxCount returns the maximum count that the stack is able to hold when added to an inventory or when added to an item entity.

func (Stack) MaxDurability

func (s Stack) MaxDurability() int

MaxDurability returns the maximum durability that the item stack is able to have. If the item does not implement the Durable interface, MaxDurability will always return -1.

func (Stack) String

func (s Stack) String() string

String implements the fmt.Stringer interface.

func (Stack) Value

func (s Stack) Value(key string) (val interface{}, ok bool)

Value attempts to return a value set to the Stack using Stack.WithValue(). If a value is found by the key passed, it is returned and ok is true. If not found, the value returned is nil and ok is false.

func (Stack) WithCustomName

func (s Stack) WithCustomName(a ...interface{}) Stack

WithCustomName returns a copy of the Stack with the custom name passed. The custom name is formatted according to the rules of fmt.Sprintln.

func (Stack) WithDurability

func (s Stack) WithDurability(d int) Stack

WithDurability returns a new item stack with the durability passed. If the item does not implement the Durable interface, WithDurability returns the original stack. The closer the durability d is to 0, the closer the item is to breaking. If a durability of 0 is passed, a stack with the item type of the BrokenItem is returned. If a durability is passed that exceeds the maximum durability, the stack returned will have the maximum durability.

func (Stack) WithEnchantment

func (s Stack) WithEnchantment(ench Enchantment) Stack

WithEnchantment returns the current stack with the passed enchantment. If the enchantment is not compatible with the item stack, it will not be applied and will return the original stack.

func (Stack) WithLore

func (s Stack) WithLore(lines ...string) Stack

WithLore returns a copy of the Stack with the lore passed. Each string passed is put on a different line, where the first string is at the top and the last at the bottom. The lore may be cleared by passing no lines into the Stack.

func (Stack) WithValue

func (s Stack) WithValue(key string, val interface{}) Stack

WithValue returns the current Stack with a value set at a specific key. This method may be used to associate custom data with the item stack, which will persist through server restarts. The value stored may later be obtained by making a call to Stack.Value().

WithValue may be called with a nil value, in which case the value at the key will be cleared.

WithValue stores values by encoding them using the encoding/gob package. Users of WithValue must ensure that their value is valid for encoding with this package.

func (Stack) WithoutEnchantment

func (s Stack) WithoutEnchantment(enchant Enchantment) Stack

WithoutEnchantment returns the current stack but with the passed enchantment removed.

type Sword

type Sword struct {
	// Tier is the tier of the sword.
	Tier tool.Tier
}

Sword is a tool generally used to attack enemies. In addition, it may be used to mine any block slightly faster than without tool and to break cobwebs rapidly.

func (Sword) AttackDamage

func (s Sword) AttackDamage() float64

AttackDamage returns the attack damage of the sword.

func (Sword) BaseMiningEfficiency

func (s Sword) BaseMiningEfficiency(world.Block) float64

BaseMiningEfficiency always returns 1.5, unless the block passed is cobweb, in which case 15 is returned.

func (Sword) DurabilityInfo

func (s Sword) DurabilityInfo() DurabilityInfo

DurabilityInfo ...

func (Sword) EncodeItem

func (s Sword) EncodeItem() (id int32, meta int16)

EncodeItem ...

func (Sword) HarvestLevel

func (s Sword) HarvestLevel() int

HarvestLevel returns the harvest level of the sword tier.

func (Sword) MaxCount

func (s Sword) MaxCount() int

MaxCount always returns 1.

func (Sword) ToolType

func (s Sword) ToolType() tool.Type

ToolType returns the tool type for swords.

type Usable

type Usable interface {
	// Use is called when the item is used in the air. The user that used the item and the world that the item
	// was used in are passed to the method.
	// Use returns a bool indicating if the item was used successfully.
	Use(w *world.World, user User, ctx *UseContext) bool
}

Usable represents an item that may be used 'in the air'. If an item implements this interface, the Use method is called whenever the item is used while pointing at the air. (For example, when throwing an egg.)

type UsableOnBlock

type UsableOnBlock interface {
	// UseOnBlock is called when an item is used on a block. The world passed is the world that the item was
	// used in. The user passed is the entity that used the item. Usually this entity is a player.
	// The position of the block that was clicked, along with the clicked face and the position clicked
	// relative to the corner of the block are passed.
	// UseOnBlock returns a bool indicating if the item was used successfully.
	UseOnBlock(pos world.BlockPos, face world.Face, clickPos mgl64.Vec3, w *world.World, user User, ctx *UseContext) bool
}

UsableOnBlock represents an item that may be used on a block. If an item implements this interface, the UseOnBlock method is called whenever the item is used on a block.

type UsableOnEntity

type UsableOnEntity interface {
	// UseOnEntity is called when an item is used on an entity. The world passed is the world that the item is
	// used in, and the entity clicked and the user of the item are also passed.
	// UseOnEntity returns a bool indicating if the item was used successfully.
	UseOnEntity(e world.Entity, w *world.World, user User, ctx *UseContext) bool
}

UsableOnEntity represents an item that may be used on an entity. If an item implements this interface, the UseOnEntity method is called whenever the item is used on an entity.

type UseContext

type UseContext struct {
	Damage   int
	CountSub int
	// NewItem is the item that is added after the item is used. If the player no longer has an item in the
	// hand, it'll be added there.
	NewItem Stack
}

UseContext is passed to every item Use methods. It may be used to subtract items or to deal damage to them after the action is complete.

func (*UseContext) DamageItem

func (ctx *UseContext) DamageItem(d int)

DamageItem damages the item used by d points.

func (*UseContext) SubtractFromCount

func (ctx *UseContext) SubtractFromCount(d int)

SubtractFromCount subtracts d from the count of the item stack used.

type User

type User interface {
	// Facing returns the direction that the user is facing.
	Facing() world.Direction
	// Position returns the current position of the user in the world.
	Position() mgl64.Vec3
	// Yaw returns the yaw of the entity. This is horizontal rotation (rotation around the vertical axis), and
	// is 0 when the entity faces forward.
	Yaw() float64
	// Pitch returns the pitch of the entity. This is vertical rotation (rotation around the horizontal axis),
	// and is 0 when the entity faces forward.
	Pitch() float64
	HeldItems() (right, left Stack)
	SetHeldItems(right, left Stack)
}

User represents an entity that is able to use an item in the world, typically entities such as players, which interact with the world using an item.

type Weapon

type Weapon interface {
	// AttackDamage returns the custom attack damage of the weapon. The damage returned must not be negative.
	AttackDamage() float64
}

Weapon is an item that may be used as a weapon. It has an attack damage which may be different to the 2 damage that attacking with an empty hand deals.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL