entity

package
v0.0.0-...-183dbea Latest Latest
Warning

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

Go to latest
Published: Apr 29, 2024 License: MIT Imports: 19 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

DefaultRegistry is a world.EntityRegistry that registers all default entities implemented by Dragonfly.

Functions

func EyePosition

func EyePosition(e world.Entity) mgl64.Vec3

EyePosition returns the position of the eyes of the entity if the entity implements entity.Eyed, or the actual position if it doesn't.

Types

type AreaEffectCloudBehaviour

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

AreaEffectCloudBehaviour is the cloud that is created when: lingering potions are thrown; creepers with potion effects explode; dragon fireballs hit the ground.

func (*AreaEffectCloudBehaviour) Effects

func (a *AreaEffectCloudBehaviour) Effects() []effect.Effect

Effects returns the effects the area effect cloud provides.

func (*AreaEffectCloudBehaviour) Radius

func (a *AreaEffectCloudBehaviour) Radius() float64

Radius returns the current radius of the area effect cloud.

func (*AreaEffectCloudBehaviour) Tick

func (a *AreaEffectCloudBehaviour) Tick(e *Ent) *Movement

Tick ...

type AreaEffectCloudBehaviourConfig

type AreaEffectCloudBehaviourConfig struct {
	// Radius specifies the initial radius of the cloud. Defaults to 3.0.
	Radius float64
	// RadiusUseGrowth is the value that is added to the radius every time the
	// effect cloud is used/consumed. This is typically a negative value. (-0.5)
	RadiusUseGrowth float64
	// RadiusTickGrowth is the value added to the radius every tick. This is
	// typically a negative value. (-0.005)
	RadiusTickGrowth float64
	// Duration specifies the initial duration of the cloud. Defaults to 30s.
	Duration time.Duration
	// DurationUseGrowth is the duration that is added to the effect cloud every
	// time it is used/consumed. This is 0 in normal situations.
	DurationUseGrowth time.Duration
	// ReapplicationDelay specifies the delay with which the effects from the
	// cloud can be re-applied to users.
	ReapplicationDelay time.Duration
}

AreaEffectCloudBehaviourConfig contains optional parameters for an area effect cloud entity.

func (AreaEffectCloudBehaviourConfig) New

New creates an AreaEffectCloudBehaviour using the parameter in conf and t.

type AreaEffectCloudType

type AreaEffectCloudType struct{}

AreaEffectCloudType is a world.EntityType implementation for AreaEffectCloud.

func (AreaEffectCloudType) BBox

func (AreaEffectCloudType) DecodeNBT

func (AreaEffectCloudType) DecodeNBT(m map[string]any) world.Entity

func (AreaEffectCloudType) EncodeEntity

func (AreaEffectCloudType) EncodeEntity() string

func (AreaEffectCloudType) EncodeNBT

func (AreaEffectCloudType) EncodeNBT(e world.Entity) map[string]any

type ArrowShakeAction

type ArrowShakeAction struct {
	// Duration is the duration of the shake.
	Duration time.Duration
	// contains filtered or unexported fields
}

ArrowShakeAction makes an arrow entity display a shaking animation for the given duration.

func (ArrowShakeAction) EntityAction

func (ArrowShakeAction) EntityAction()

type ArrowType

type ArrowType struct{}

ArrowType is a world.EntityType implementation for Arrow.

func (ArrowType) BBox

func (ArrowType) BBox(world.Entity) cube.BBox

func (ArrowType) DecodeNBT

func (ArrowType) DecodeNBT(m map[string]any) world.Entity

func (ArrowType) EncodeEntity

func (ArrowType) EncodeEntity() string

func (ArrowType) EncodeNBT

func (ArrowType) EncodeNBT(e world.Entity) map[string]any

type AttackDamageSource

type AttackDamageSource struct {
	// Attacker holds the attacking entity. The entity may be a player or
	// any other entity.
	Attacker world.Entity
}

AttackDamageSource is used for damage caused by other entities, for example when a player attacks another player.

func (AttackDamageSource) Fire

func (AttackDamageSource) Fire() bool

func (AttackDamageSource) ReducedByArmour

func (AttackDamageSource) ReducedByArmour() bool

func (AttackDamageSource) ReducedByResistance

func (AttackDamageSource) ReducedByResistance() bool

type Behaviour

type Behaviour interface {
	// Tick ticks the Ent using the Behaviour. A Movement is returned that
	// specifies the movement of the entity over the tick. Nil may be returned
	// if the entity did not move.
	Tick(e *Ent) *Movement
}

Behaviour implements the behaviour of an Ent.

type BottleOfEnchantingType

type BottleOfEnchantingType struct{}

BottleOfEnchantingType is a world.EntityType for BottleOfEnchanting.

func (BottleOfEnchantingType) BBox

func (BottleOfEnchantingType) DecodeNBT

func (BottleOfEnchantingType) DecodeNBT(m map[string]any) world.Entity

func (BottleOfEnchantingType) EncodeEntity

func (BottleOfEnchantingType) EncodeEntity() string

func (BottleOfEnchantingType) EncodeNBT

func (BottleOfEnchantingType) EncodeNBT(e world.Entity) map[string]any

func (BottleOfEnchantingType) Glint

func (BottleOfEnchantingType) Glint() bool

Glint returns true if the bottle should render with glint. It always returns true for bottles of enchanting.

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 item.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 Config

type Config struct {
	Behaviour Behaviour
}

Config allows specifying options that influence the way an Ent behaves.

func (Config) New

func (conf Config) New(t world.EntityType, pos mgl64.Vec3) *Ent

New creates a new Ent using conf. The entity has a type and a position.

type CriticalHitAction

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

CriticalHitAction is a world.EntityAction that makes an entity display critical hit particles. This will show stars around the entity.

func (CriticalHitAction) EntityAction

func (CriticalHitAction) EntityAction()

type DeathAction

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

DeathAction is a world.EntityAction that makes an entity display the death animation. After this animation, the entity disappears from viewers watching it.

func (DeathAction) EntityAction

func (DeathAction) EntityAction()

type DrowningDamageSource

type DrowningDamageSource struct{}

DrowningDamageSource is used for damage caused by an entity drowning in water.

func (DrowningDamageSource) Fire

func (DrowningDamageSource) Fire() bool

func (DrowningDamageSource) ReducedByArmour

func (DrowningDamageSource) ReducedByArmour() bool

func (DrowningDamageSource) ReducedByResistance

func (DrowningDamageSource) ReducedByResistance() bool

type EatAction

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

EatAction is a world.EntityAction that makes an entity display the eating particles at its mouth to viewers with the item in its hand being eaten.

func (EatAction) EntityAction

func (EatAction) EntityAction()

type EffectManager

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

EffectManager manages the effects of an entity. The effect manager will only store effects that last for a specific duration. Instant effects are applied instantly and not stored.

func NewEffectManager

func NewEffectManager() *EffectManager

NewEffectManager creates and returns a new initialised EffectManager.

func (*EffectManager) Add

func (m *EffectManager) Add(e effect.Effect, entity Living) effect.Effect

Add adds an effect to the manager. If the effect is instant, it is applied to the Living entity passed immediately. If not, the effect is added to the EffectManager and is applied to the entity every time the Tick method is called. Effect levels of 0 or below will not do anything. Effect returns the final effect it added to the entity. That might be the effect passed or an effect with a higher level/duration than the one passed. Add panics if the effect has a negative duration or level.

func (*EffectManager) Effect

func (m *EffectManager) Effect(e effect.Type) (effect.Effect, bool)

Effect returns the effect instance and true if the entity has the effect. If not found, it will return an empty effect instance and false.

func (*EffectManager) Effects

func (m *EffectManager) Effects() []effect.Effect

Effects returns a list of all effects currently present in the effect manager. This will never include effects that have expired.

func (*EffectManager) Remove

func (m *EffectManager) Remove(e effect.Type, entity Living)

Remove removes any Effect present in the EffectManager with the type of the effect passed.

func (*EffectManager) Tick

func (m *EffectManager) Tick(entity Living)

Tick ticks the EffectManager, applying all of its effects to the Living entity passed when applicable and removing expired effects.

type EggType

type EggType struct{}

EggType is a world.EntityType implementation for Egg.

func (EggType) BBox

func (EggType) BBox(world.Entity) cube.BBox

func (EggType) DecodeNBT

func (EggType) DecodeNBT(m map[string]any) world.Entity

func (EggType) EncodeEntity

func (EggType) EncodeEntity() string

func (EggType) EncodeNBT

func (EggType) EncodeNBT(e world.Entity) map[string]any

type EnderPearlType

type EnderPearlType struct{}

EnderPearlType is a world.EntityType implementation for EnderPearl.

func (EnderPearlType) BBox

func (EnderPearlType) DecodeNBT

func (EnderPearlType) DecodeNBT(m map[string]any) world.Entity

func (EnderPearlType) EncodeEntity

func (EnderPearlType) EncodeEntity() string

func (EnderPearlType) EncodeNBT

func (EnderPearlType) EncodeNBT(e world.Entity) map[string]any

type Ent

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

Ent is a world.Entity implementation that allows entity implementations to share a lot of code. It is currently under development and is prone to (breaking) changes.

func NewAreaEffectCloud

func NewAreaEffectCloud(pos mgl64.Vec3, p potion.Potion) *Ent

NewAreaEffectCloud creates a new area effect cloud entity and returns it.

func NewAreaEffectCloudWith

func NewAreaEffectCloudWith(pos mgl64.Vec3, t potion.Potion, duration, reapplicationDelay, durationOnUse time.Duration, radius, radiusOnUse, radiusGrowth float64) *Ent

NewAreaEffectCloudWith ...

func NewArrow

func NewArrow(pos mgl64.Vec3, rot cube.Rotation, owner world.Entity) *Ent

NewArrow creates a new Arrow and returns it. It is equivalent to calling NewTippedArrow with `potion.Potion{}` as tip.

func NewArrowWithDamage

func NewArrowWithDamage(pos mgl64.Vec3, rot cube.Rotation, damage float64, owner world.Entity) *Ent

NewArrowWithDamage creates a new Arrow with the given base damage, and returns it. It is equivalent to calling NewTippedArrowWithDamage with `potion.Potion{}` as tip.

func NewBottleOfEnchanting

func NewBottleOfEnchanting(pos mgl64.Vec3, owner world.Entity) *Ent

NewBottleOfEnchanting ...

func NewEgg

func NewEgg(pos mgl64.Vec3, owner world.Entity) *Ent

NewEgg creates an Egg entity. Egg is as a throwable entity that can be used to spawn chicks.

func NewEnderPearl

func NewEnderPearl(pos mgl64.Vec3, owner world.Entity) *Ent

NewEnderPearl creates an EnderPearl entity. EnderPearl is a smooth, greenish- blue item used to teleport.

func NewExperienceOrb

func NewExperienceOrb(pos mgl64.Vec3, xp int) *Ent

NewExperienceOrb creates a new experience orb and returns it.

func NewExperienceOrbs

func NewExperienceOrbs(pos mgl64.Vec3, amount int) (orbs []*Ent)

NewExperienceOrbs takes in a position and an amount and automatically splits the amount into multiple orbs, returning a slice of the created orbs.

func NewFallingBlock

func NewFallingBlock(block world.Block, pos mgl64.Vec3) *Ent

NewFallingBlock creates a new FallingBlock entity.

func NewFirework

func NewFirework(pos mgl64.Vec3, rot cube.Rotation, firework item.Firework) *Ent

NewFirework creates a firework entity. Firework is an item (and entity) used for creating decorative explosions, boosting when flying with elytra, and loading into a crossbow as ammunition.

func NewFireworkAttached

func NewFireworkAttached(pos mgl64.Vec3, rot cube.Rotation, firework item.Firework, owner world.Entity, attached bool) *Ent

NewFireworkAttached creates a firework entity with an owner that the firework may be attached to.

func NewItem

func NewItem(i item.Stack, pos mgl64.Vec3) *Ent

NewItem creates a new item entity using the item stack passed. The item entity will be positioned at the position passed. If the stack's count exceeds its max count, the count of the stack will be changed to the maximum.

func NewItemPickupDelay

func NewItemPickupDelay(i item.Stack, pos mgl64.Vec3, delay time.Duration) *Ent

NewItemPickupDelay creates a new item entity containing item stack i. A delay may be specified which defines for how long the item stack cannot be picked up from the ground.

func NewLightning

func NewLightning(pos mgl64.Vec3) *Ent

NewLightning creates a lightning entity. The lightning entity will be positioned at the position passed. Lightning is a lethal element to thunderstorms. Lightning momentarily increases the skylight's brightness to slightly greater than full daylight.

func NewLightningWithDamage

func NewLightningWithDamage(pos mgl64.Vec3, dmg float64, blockFire bool, entityFireDuration time.Duration) *Ent

NewLightningWithDamage creates a new lightning entities using the damage and fire properties passed.

func NewLingeringPotion

func NewLingeringPotion(pos mgl64.Vec3, owner world.Entity, t potion.Potion) *Ent

NewLingeringPotion creates a new lingering potion. LingeringPotion is a variant of a splash potion that can be thrown to leave clouds with status effects that linger on the ground in an area.

func NewSnowball

func NewSnowball(pos mgl64.Vec3, owner world.Entity) *Ent

NewSnowball creates a snowball entity at a position with an owner entity.

func NewSplashPotion

func NewSplashPotion(pos mgl64.Vec3, owner world.Entity, t potion.Potion) *Ent

NewSplashPotion creates a splash potion. SplashPotion is an item that grants effects when thrown.

func NewTNT

func NewTNT(pos mgl64.Vec3, fuse time.Duration, igniter world.Entity) *Ent

NewTNT creates a new primed TNT entity.

func NewText

func NewText(text string, pos mgl64.Vec3) *Ent

NewText creates and returns a new Text entity with the text and position provided.

func NewTippedArrow

func NewTippedArrow(pos mgl64.Vec3, rot cube.Rotation, owner world.Entity, tip potion.Potion) *Ent

NewTippedArrow creates a new Arrow with a potion effect added to an entity when hit.

func NewTippedArrowWithDamage

func NewTippedArrowWithDamage(pos mgl64.Vec3, rot cube.Rotation, damage float64, owner world.Entity, tip potion.Potion) *Ent

NewTippedArrowWithDamage creates a new Arrow with a potion effect added to an entity when hit and, and returns it. It uses the given damage as the base damage.

func (*Ent) Age

func (e *Ent) Age() time.Duration

Age returns the total time lived of this entity. It increases by time.Second/20 for every time Tick is called.

func (*Ent) Behaviour

func (e *Ent) Behaviour() Behaviour

func (*Ent) Close

func (e *Ent) Close() error

Close closes the Ent and removes the associated entity from the world.

func (*Ent) Explode

func (e *Ent) Explode(src mgl64.Vec3, impact float64, conf block.ExplosionConfig)

Explode propagates the explosion behaviour of the underlying Behaviour.

func (*Ent) Extinguish

func (e *Ent) Extinguish()

Extinguish ...

func (*Ent) NameTag

func (e *Ent) NameTag() string

NameTag returns the name tag of the entity. An empty string is returned if no name tag was set.

func (*Ent) OnFireDuration

func (e *Ent) OnFireDuration() time.Duration

OnFireDuration ...

func (*Ent) Position

func (e *Ent) Position() mgl64.Vec3

Position returns the current position of the entity.

func (*Ent) Rotation

func (e *Ent) Rotation() cube.Rotation

Rotation returns the rotation of the entity.

func (*Ent) SetNameTag

func (e *Ent) SetNameTag(s string)

SetNameTag changes the name tag of an entity. The name tag is removed if an empty string is passed.

func (*Ent) SetOnFire

func (e *Ent) SetOnFire(duration time.Duration)

SetOnFire ...

func (*Ent) SetVelocity

func (e *Ent) SetVelocity(v mgl64.Vec3)

SetVelocity sets the velocity of the entity. The values in the Vec3 passed represent the speed on that axis in blocks/tick.

func (*Ent) Tick

func (e *Ent) Tick(w *world.World, current int64)

Tick ticks Ent, progressing its lifetime and closing the entity if it is in the void.

func (*Ent) Type

func (e *Ent) Type() world.EntityType

Type returns the world.EntityType passed to Config.New.

func (*Ent) Velocity

func (e *Ent) Velocity() mgl64.Vec3

Velocity returns the current velocity of the entity. The values in the Vec3 returned represent the speed on that axis in blocks/tick.

func (*Ent) World

func (e *Ent) World() *world.World

World returns the world of the entity.

type ExperienceManager

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

ExperienceManager manages experience and levels for entities, and provides functions to add, remove, and calculate experience needed for upcoming levels.

func NewExperienceManager

func NewExperienceManager() *ExperienceManager

NewExperienceManager returns a new ExperienceManager with no experience.

func (*ExperienceManager) Add

func (e *ExperienceManager) Add(amount int) (level int, progress float64)

Add adds experience to the total experience and recalculates the level and progress if necessary. Passing a negative value is valid. If the new experience would otherwise drop below 0, it is set to 0.

func (*ExperienceManager) Experience

func (e *ExperienceManager) Experience() int

Experience returns the amount of experience the manager currently has.

func (*ExperienceManager) Level

func (e *ExperienceManager) Level() int

Level returns the current experience level.

func (*ExperienceManager) Progress

func (e *ExperienceManager) Progress() float64

Progress returns the progress towards the next level.

func (*ExperienceManager) Reset

func (e *ExperienceManager) Reset()

Reset resets the total experience, level, and progress of the manager to zero.

func (*ExperienceManager) SetLevel

func (e *ExperienceManager) SetLevel(level int)

SetLevel sets the level of the manager.

func (*ExperienceManager) SetProgress

func (e *ExperienceManager) SetProgress(progress float64)

SetProgress sets the progress of the manager.

type ExperienceOrbBehaviour

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

ExperienceOrbBehaviour implements Behaviour for an experience orb entity.

func (*ExperienceOrbBehaviour) Experience

func (exp *ExperienceOrbBehaviour) Experience() int

Experience returns the amount of experience the orb carries.

func (*ExperienceOrbBehaviour) Tick

func (exp *ExperienceOrbBehaviour) Tick(e *Ent) *Movement

Tick finds a target for the experience orb and moves the orb towards it.

type ExperienceOrbBehaviourConfig

type ExperienceOrbBehaviourConfig struct {
	// Gravity is the amount of Y velocity subtracted every tick.
	Gravity float64
	// Drag is used to reduce all axes of the velocity every tick. Velocity is
	// multiplied with (1-Drag) every tick.
	Drag float64
	// ExistenceDuration specifies how long the experience orb should last. The
	// default is time.Minute * 5.
	ExistenceDuration time.Duration
	// Experience is the amount of experience held by the orb. Default is 1.
	Experience int
}

ExperienceOrbBehaviourConfig holds optional parameters for the creation of an ExperienceOrbBehaviour.

func (ExperienceOrbBehaviourConfig) New

New creates an ExperienceOrbBehaviour using the parameters in conf.

type ExperienceOrbType

type ExperienceOrbType struct{}

ExperienceOrbType is a world.EntityType implementation for ExperienceOrb.

func (ExperienceOrbType) BBox

func (ExperienceOrbType) DecodeNBT

func (ExperienceOrbType) DecodeNBT(m map[string]any) world.Entity

func (ExperienceOrbType) EncodeEntity

func (ExperienceOrbType) EncodeEntity() string

func (ExperienceOrbType) EncodeNBT

func (ExperienceOrbType) EncodeNBT(e world.Entity) map[string]any

type ExplosionDamageSource

type ExplosionDamageSource struct{}

ExplosionDamageSource is used for damage caused by an explosion.

func (ExplosionDamageSource) AffectedByEnchantment

func (ExplosionDamageSource) AffectedByEnchantment(e item.EnchantmentType) bool

func (ExplosionDamageSource) Fire

func (ExplosionDamageSource) Fire() bool

func (ExplosionDamageSource) ReducedByArmour

func (ExplosionDamageSource) ReducedByArmour() bool

func (ExplosionDamageSource) ReducedByResistance

func (ExplosionDamageSource) ReducedByResistance() bool

type Eyed

type Eyed interface {
	// EyeHeight returns the offset from their base position that the eyes of an entity are found at.
	EyeHeight() float64
}

Eyed represents an entity that has eyes.

type FallDamageSource

type FallDamageSource struct{}

FallDamageSource is used for damage caused by falling.

func (FallDamageSource) AffectedByEnchantment

func (FallDamageSource) AffectedByEnchantment(e item.EnchantmentType) bool

func (FallDamageSource) Fire

func (FallDamageSource) Fire() bool

func (FallDamageSource) ReducedByArmour

func (FallDamageSource) ReducedByArmour() bool

func (FallDamageSource) ReducedByResistance

func (FallDamageSource) ReducedByResistance() bool

type FallingBlockBehaviour

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

FallingBlockBehaviour implements the behaviour for falling block entities.

func (*FallingBlockBehaviour) Block

func (f *FallingBlockBehaviour) Block() world.Block

Block returns the world.Block of the entity.

func (*FallingBlockBehaviour) Tick

func (f *FallingBlockBehaviour) Tick(e *Ent) *Movement

Tick implements the movement and solidification behaviour of falling blocks.

type FallingBlockBehaviourConfig

type FallingBlockBehaviourConfig struct {
	// Gravity is the amount of Y velocity subtracted every tick.
	Gravity float64
	// Drag is used to reduce all axes of the velocity every tick. Velocity is
	// multiplied with (1-Drag) every tick.
	Drag float64
}

FallingBlockBehaviourConfig holds optional parameters for FallingBlockBehaviour.

func (FallingBlockBehaviourConfig) New

New creates a FallingBlockBehaviour using the optional parameters in conf and a block type.

type FallingBlockType

type FallingBlockType struct{}

FallingBlockType is a world.EntityType implementation for FallingBlock.

func (FallingBlockType) BBox

func (FallingBlockType) DecodeNBT

func (FallingBlockType) DecodeNBT(m map[string]any) world.Entity

func (FallingBlockType) EncodeEntity

func (FallingBlockType) EncodeEntity() string

func (FallingBlockType) EncodeNBT

func (FallingBlockType) EncodeNBT(e world.Entity) map[string]any

func (FallingBlockType) NetworkOffset

func (FallingBlockType) NetworkOffset() float64

type FireworkBehaviour

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

FireworkBehaviour implements Behaviour for a firework entity.

func (*FireworkBehaviour) Attached

func (f *FireworkBehaviour) Attached() bool

Attached specifies if the firework is attached to its owner.

func (*FireworkBehaviour) Firework

func (f *FireworkBehaviour) Firework() item.Firework

Firework returns the underlying item.Firework of the FireworkBehaviour.

func (*FireworkBehaviour) Owner

func (f *FireworkBehaviour) Owner() world.Entity

Owner returns the world.Entity that launched the firework.

func (*FireworkBehaviour) Tick

func (f *FireworkBehaviour) Tick(e *Ent) *Movement

Tick moves the firework and makes it explode when it reaches its maximum duration.

type FireworkBehaviourConfig

type FireworkBehaviourConfig struct {
	// ExistenceDuration is the duration that an entity with this behaviour
	// should last. Once this time expires, the entity is closed. If
	// ExistenceDuration is 0, the entity will never expire automatically.
	ExistenceDuration time.Duration
	// SidewaysVelocityMultiplier is a value that the sideways velocity (X/Z) is
	// multiplied with every tick. For normal fireworks this is 1.15.
	SidewaysVelocityMultiplier float64
	// UpwardsAcceleration is a value added to the firework's velocity every
	// tick. For normal fireworks, this is 0.04.
	UpwardsAcceleration float64
	// Attached specifies if the firework is attached to its owner. If true,
	// the firework will boost the speed of the owner while flying.
	Attached bool
}

FireworkBehaviourConfig holds optional parameters for a FireworkBehaviour.

func (FireworkBehaviourConfig) New

New creates a FireworkBehaviour for an fw and owner using the optional parameters in conf.

type FireworkExplosionAction

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

FireworkExplosionAction is a world.EntityAction that makes a Firework rocket display an explosion particle.

func (FireworkExplosionAction) EntityAction

func (FireworkExplosionAction) EntityAction()

type FireworkType

type FireworkType struct{}

FireworkType is a world.EntityType implementation for Firework.

func (FireworkType) BBox

func (FireworkType) DecodeNBT

func (FireworkType) DecodeNBT(m map[string]any) world.Entity

func (FireworkType) EncodeEntity

func (FireworkType) EncodeEntity() string

func (FireworkType) EncodeNBT

func (FireworkType) EncodeNBT(e world.Entity) map[string]any

type Flammable

type Flammable interface {
	// OnFireDuration returns duration of fire in ticks.
	OnFireDuration() time.Duration
	// SetOnFire sets the entity on fire for the specified duration.
	SetOnFire(duration time.Duration)
	// Extinguish extinguishes the entity.
	Extinguish()
}

Flammable is an interface for entities that can be set on fire.

type FoodHealingSource

type FoodHealingSource struct{}

FoodHealingSource is a healing source used for when an entity regenerates health automatically when their food bar is at least 90% filled.

func (FoodHealingSource) HealingSource

func (FoodHealingSource) HealingSource()

type GlideDamageSource

type GlideDamageSource struct{}

GlideDamageSource is used for damage caused by gliding into a block.

func (GlideDamageSource) Fire

func (GlideDamageSource) Fire() bool

func (GlideDamageSource) ReducedByArmour

func (GlideDamageSource) ReducedByArmour() bool

func (GlideDamageSource) ReducedByResistance

func (GlideDamageSource) ReducedByResistance() bool

type HealthManager

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

HealthManager handles the health of an entity.

func NewHealthManager

func NewHealthManager(health, max float64) *HealthManager

NewHealthManager returns a new health manager with the health and max health provided.

func (*HealthManager) AddHealth

func (m *HealthManager) AddHealth(health float64)

AddHealth adds a given amount of health points to the player. If the health added to the current health exceeds the max, health will be set to the max. If the health is instead negative and results in a health lower than 0, the final health will be 0.

func (*HealthManager) Health

func (m *HealthManager) Health() float64

Health returns the current health of an entity.

func (*HealthManager) MaxHealth

func (m *HealthManager) MaxHealth() float64

MaxHealth returns the maximum health of the entity.

func (*HealthManager) SetMaxHealth

func (m *HealthManager) SetMaxHealth(max float64)

SetMaxHealth changes the max health of an entity to the maximum passed. If the maximum is set to 0 or lower, SetMaxHealth will default to a value of 1.

type HurtAction

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

HurtAction is a world.EntityAction that makes an entity display the animation for being hurt. The entity will be shown as red for a short duration.

func (HurtAction) EntityAction

func (HurtAction) EntityAction()

type ItemBehaviour

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

ItemBehaviour implements the behaviour of item entities.

func (*ItemBehaviour) Item

func (i *ItemBehaviour) Item() item.Stack

Item returns the item.Stack held by the entity.

func (*ItemBehaviour) Tick

func (i *ItemBehaviour) Tick(e *Ent) *Movement

Tick moves the entity, checks if it should be picked up by a nearby collector or if it should merge with nearby item entities.

type ItemBehaviourConfig

type ItemBehaviourConfig struct {
	// Gravity is the amount of Y velocity subtracted every tick.
	Gravity float64
	// Drag is used to reduce all axes of the velocity every tick. Velocity is
	// multiplied with (1-Drag) every tick.
	Drag float64
	// ExistenceDuration specifies how long the item stack should last. The
	// default is time.Minute * 5.
	ExistenceDuration time.Duration
	// PickupDelay specifies how much time must expire before the item can be
	// picked up by collectors. The default is time.Second / 2.
	PickupDelay time.Duration
}

ItemBehaviourConfig holds optional parameters for an ItemBehaviour.

func (ItemBehaviourConfig) New

New creates an ItemBehaviour using i and the optional parameters in conf.

type ItemType

type ItemType struct{}

ItemType is a world.EntityType implementation for Item.

func (ItemType) BBox

func (ItemType) BBox(world.Entity) cube.BBox

func (ItemType) DecodeNBT

func (ItemType) DecodeNBT(m map[string]any) world.Entity

func (ItemType) EncodeEntity

func (ItemType) EncodeEntity() string

func (ItemType) EncodeNBT

func (ItemType) EncodeNBT(e world.Entity) map[string]any

func (ItemType) NetworkOffset

func (ItemType) NetworkOffset() float64

type LightningDamageSource

type LightningDamageSource struct{}

LightningDamageSource is used for damage caused by being struck by lightning.

func (LightningDamageSource) Fire

func (LightningDamageSource) Fire() bool

func (LightningDamageSource) ReducedByArmour

func (LightningDamageSource) ReducedByArmour() bool

func (LightningDamageSource) ReducedByResistance

func (LightningDamageSource) ReducedByResistance() bool

type LightningType

type LightningType struct{}

LightningType is a world.EntityType implementation for Lightning.

func (LightningType) BBox

func (LightningType) DecodeNBT

func (LightningType) DecodeNBT(map[string]any) world.Entity

func (LightningType) EncodeEntity

func (LightningType) EncodeEntity() string

func (LightningType) EncodeNBT

func (LightningType) EncodeNBT(world.Entity) map[string]any

type LingeringPotionType

type LingeringPotionType struct{}

LingeringPotionType is a world.EntityType implementation for LingeringPotion.

func (LingeringPotionType) BBox

func (LingeringPotionType) DecodeNBT

func (LingeringPotionType) DecodeNBT(m map[string]any) world.Entity

func (LingeringPotionType) EncodeEntity

func (LingeringPotionType) EncodeEntity() string

func (LingeringPotionType) EncodeNBT

func (LingeringPotionType) EncodeNBT(e world.Entity) map[string]any

func (LingeringPotionType) Glint

func (LingeringPotionType) Glint() bool

type Living

type Living interface {
	world.Entity
	// Health returns the health of the entity.
	Health() float64
	// MaxHealth returns the maximum health of the entity.
	MaxHealth() float64
	// SetMaxHealth changes the maximum health of the entity to the value passed.
	SetMaxHealth(v float64)
	// Dead checks if the entity is considered dead. True is returned if the health of the entity is equal to or
	// lower than 0.
	Dead() bool
	// AttackImmune checks if the entity is currently immune to entity attacks. Entities typically turn
	// immune for half a second after being attacked.
	AttackImmune() bool
	// Hurt hurts the entity for a given amount of damage. The source passed represents the cause of the
	// damage, for example AttackDamageSource if the entity is attacked by another entity.
	// If the final damage exceeds the health that the entity currently has, the entity is killed.
	// Hurt returns the final amount of damage dealt to the Living entity and returns whether the Living entity
	// was vulnerable to the damage at all.
	Hurt(damage float64, src world.DamageSource) (n float64, vulnerable bool)
	// Heal heals the entity for a given amount of health. The source passed represents the cause of the
	// healing, for example FoodHealingSource if the entity healed by having a full food bar. If the health
	// added to the original health exceeds the entity's max health, Heal may not add the full amount.
	Heal(health float64, src world.HealingSource)
	// KnockBack knocks the entity back with a given force and height. A source is passed which indicates the
	// source of the velocity, typically the position of an attacking entity. The source is used to calculate
	// the direction which the entity should be knocked back in.
	KnockBack(src mgl64.Vec3, force, height float64)
	// Velocity returns the players current velocity.
	Velocity() mgl64.Vec3
	// SetVelocity updates the entity's velocity.
	SetVelocity(velocity mgl64.Vec3)
	// AddEffect adds an entity.Effect to the entity. If the effect is instant, it is applied to the entity
	// immediately. If not, the effect is applied to the entity every time the Tick method is called.
	// AddEffect will overwrite any effects present if the level of the effect is higher than the existing one, or
	// if the effects' levels are equal and the new effect has a longer duration.
	AddEffect(e effect.Effect)
	// RemoveEffect removes any effect that might currently be active on the entity.
	RemoveEffect(e effect.Type)
	// Effects returns any effect currently applied to the entity. The returned effects are guaranteed not to have
	// expired when returned.
	Effects() []effect.Effect
	// Speed returns the current speed of the living entity. The default value is different for each entity.
	Speed() float64
	// SetSpeed sets the speed of an entity to a new value.
	SetSpeed(float64)
}

Living represents an entity that is alive and that has health. It is able to take damage and will die upon taking fatal damage.

type Movement

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

Movement represents the movement of a world.Entity as a result of a call to MovementComputer.TickMovement. The resulting position and velocity can be obtained by calling Position and Velocity. These can be sent to viewers by calling Send.

func (*Movement) Position

func (m *Movement) Position() mgl64.Vec3

Position returns the position as a result of the Movement as an mgl64.Vec3.

func (*Movement) Rotation

func (m *Movement) Rotation() cube.Rotation

Rotation returns the rotation, yaw and pitch, of the entity after the Movement.

func (*Movement) Send

func (m *Movement) Send()

Send sends the Movement to any viewers watching the entity at the time of the movement. If the position/velocity changes were negligible, nothing is sent.

func (*Movement) Velocity

func (m *Movement) Velocity() mgl64.Vec3

Velocity returns the velocity after the Movement as an mgl64.Vec3.

type MovementComputer

type MovementComputer struct {
	Gravity, Drag     float64
	DragBeforeGravity bool
	// contains filtered or unexported fields
}

MovementComputer is used to compute movement of an entity. When constructed, the Gravity of the entity the movement is computed for must be passed.

func (*MovementComputer) OnGround

func (c *MovementComputer) OnGround() bool

OnGround checks if the entity that this computer calculates is currently on the ground.

func (*MovementComputer) TickMovement

func (c *MovementComputer) TickMovement(e world.Entity, pos, vel mgl64.Vec3, rot cube.Rotation) *Movement

TickMovement performs a movement tick on an entity. Velocity is applied and changed according to the values of its Drag and Gravity. The new position of the entity after movement is returned. The resulting Movement can be sent to viewers by calling Movement.Send.

type PassiveBehaviour

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

PassiveBehaviour implements Behaviour for entities that act passively. This means that they can move, but only under influence of the environment, which includes, for example, falling, and flowing water.

func (*PassiveBehaviour) Explode

func (p *PassiveBehaviour) Explode(e *Ent, src mgl64.Vec3, impact float64, _ block.ExplosionConfig)

Explode adds velocity to a passive entity to blast it away from the explosion's source.

func (*PassiveBehaviour) Fuse

func (p *PassiveBehaviour) Fuse() time.Duration

Fuse returns the leftover time until PassiveBehaviourConfig.Expire is called, or -1 if this function is not set.

func (*PassiveBehaviour) Tick

func (p *PassiveBehaviour) Tick(e *Ent) *Movement

Tick implements the behaviour for a passive entity. It performs movement and updates its state.

type PassiveBehaviourConfig

type PassiveBehaviourConfig struct {
	// Gravity is the amount of Y velocity subtracted every tick.
	Gravity float64
	// Drag is used to reduce all axes of the velocity every tick. Velocity is
	// multiplied with (1-Drag) every tick.
	Drag float64
	// ExistenceDuration is the duration that an entity with this behaviour
	// should last. Once this time expires, the entity is closed. If
	// ExistenceDuration is 0, the entity will never expire automatically.
	ExistenceDuration time.Duration
	// Expire is called when the entity expires due to its age reaching the
	// ExistenceDuration.
	Expire func(e *Ent)
	// Tick is called for every tick that the entity is alive. Tick is called
	// after the entity moves on a tick.
	Tick func(e *Ent)
}

PassiveBehaviourConfig holds optional parameters for a PassiveBehaviour.

func (PassiveBehaviourConfig) New

New creates a PassiveBehaviour using the parameters in conf.

type PickedUpAction

type PickedUpAction struct {
	// Collector is the entity that collected the item.
	Collector world.Entity
	// contains filtered or unexported fields
}

PickedUpAction is a world.EntityAction that makes an item get picked up by a collector. After this animation, the item disappears from viewers watching it.

func (PickedUpAction) EntityAction

func (PickedUpAction) EntityAction()

type ProjectileBehaviour

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

ProjectileBehaviour implements the behaviour of projectiles. Its specifics may be configured using ProjectileBehaviourConfig.

func (*ProjectileBehaviour) Critical

func (lt *ProjectileBehaviour) Critical() bool

Critical returns true if ProjectileBehaviourConfig.Critical was set to true and if the projectile has not collided.

func (*ProjectileBehaviour) Explode

func (lt *ProjectileBehaviour) Explode(e *Ent, src mgl64.Vec3, impact float64, _ block.ExplosionConfig)

Explode adds velocity to a projectile to blast it away from the explosion's source.

func (*ProjectileBehaviour) Owner

func (lt *ProjectileBehaviour) Owner() world.Entity

Owner returns the owner of the projectile.

func (*ProjectileBehaviour) Potion

func (lt *ProjectileBehaviour) Potion() potion.Potion

Potion returns the potion.Potion that is applied to an entity if hit by the projectile.

func (*ProjectileBehaviour) Tick

func (lt *ProjectileBehaviour) Tick(e *Ent) *Movement

Tick runs the tick-based behaviour of a ProjectileBehaviour and returns the Movement within the tick. Tick handles the movement, collision and hitting of a projectile.

type ProjectileBehaviourConfig

type ProjectileBehaviourConfig struct {
	// Gravity is the amount of Y velocity subtracted every tick.
	Gravity float64
	// Drag is used to reduce all axes of the velocity every tick. Velocity is
	// multiplied with (1-Drag) every tick.
	Drag float64
	// Damage specifies the base damage dealt by the Projectile. If set to a
	// negative number, entities hit are not hurt at all and are not knocked
	// back. The base damage is multiplied with the velocity of the projectile
	// to calculate the final damage of the projectile.
	Damage float64
	// Potion is the potion effect that is applied to an entity when the
	// projectile hits it.
	Potion potion.Potion
	// KnockBackForceAddend is the additional horizontal velocity that is
	// applied to an entity when it is hit by the projectile.
	KnockBackForceAddend float64
	// KnockBackHeightAddend is the additional vertical velocity that is applied
	// to an entity when it is hit by the projectile.
	KnockBackHeightAddend float64
	// Particle is a particle that is spawned when the projectile hits a
	// target, either a block or an entity. No particle is spawned if left nil.
	Particle world.Particle
	// ParticleCount is the amount of particles that should be spawned if
	// Particle is not nil. ParticleCount will be set to 1 if Particle is not
	// nil and ParticleCount is 0.
	ParticleCount int
	// Sound is a sound that is played when the projectile hits a target, either
	// a block or an entity. No sound is played if left nil.
	Sound world.Sound
	// Critical specifies if the projectile is critical. This spawns critical
	// hit particles behind the projectile and causes it to deal up to 50% more
	// damage.
	Critical bool
	// Hit is a function that is called when the projectile Ent hits a target
	// (the trace.Result). The target is either of the type trace.EntityResult
	// or trace.BlockResult. Hit may be set to run additional behaviour when a
	// projectile hits a target.
	Hit func(e *Ent, target trace.Result)
	// SurviveBlockCollision specifies if a projectile with this
	// ProjectileBehaviour should survive collision with a block. If set to
	// false, the projectile will break when hitting a block (like a snowball).
	// If set to true, the projectile will survive like an arrow does.
	SurviveBlockCollision bool
	// BlockCollisionVelocityMultiplier is the multiplier used to modify the
	// velocity of a projectile that has SurviveBlockCollision set to true. The
	// default, 0, will cause the projectile to lose its velocity completely. A
	// multiplier such as 0.5 will reduce the projectile's velocity, but retain
	// half of it after inverting the axis on which the projectile collided.
	BlockCollisionVelocityMultiplier float64
	// DisablePickup specifies if picking up the projectile should be disabled,
	// which is relevant in the case SurviveBlockCollision is set to true. Some
	// projectiles, such as arrows, cannot be picked up if they are shot by
	// monsters like skeletons.
	DisablePickup bool
	// PickupItem is the item that is given to a player when it picks up this
	// projectile. If left as an empty item.Stack, no item is given upon pickup.
	PickupItem item.Stack
}

ProjectileBehaviourConfig allows the configuration of projectiles. Calling ProjectileBehaviourConfig.New() creates a ProjectileBehaviour using these settings.

func (ProjectileBehaviourConfig) New

New creates a new ProjectileBehaviour using conf. The owner passed may be nil if the projectile does not have one.

type ProjectileDamageSource

type ProjectileDamageSource struct {
	// Projectile and Owner are the world.Entity that dealt the damage and
	// the one that fired the projectile respectively.
	Projectile, Owner world.Entity
}

ProjectileDamageSource is used for damage caused by a projectile.

func (ProjectileDamageSource) AffectedByEnchantment

func (ProjectileDamageSource) AffectedByEnchantment(e item.EnchantmentType) bool

func (ProjectileDamageSource) Fire

func (ProjectileDamageSource) ReducedByArmour

func (ProjectileDamageSource) ReducedByArmour() bool

func (ProjectileDamageSource) ReducedByResistance

func (ProjectileDamageSource) ReducedByResistance() bool

type SnowballType

type SnowballType struct{}

SnowballType is a world.EntityType implementation for snowballs.

func (SnowballType) BBox

func (SnowballType) DecodeNBT

func (SnowballType) DecodeNBT(m map[string]any) world.Entity

func (SnowballType) EncodeEntity

func (SnowballType) EncodeEntity() string

func (SnowballType) EncodeNBT

func (SnowballType) EncodeNBT(e world.Entity) map[string]any

type Solidifiable

type Solidifiable interface {
	// Solidifies returns whether the falling block can solidify at the position it is currently in. If so,
	// the block will immediately stop falling.
	Solidifies(pos cube.Pos, w *world.World) bool
}

Solidifiable represents a block that can solidify by specific adjacent blocks. An example is concrete powder, which can turn into concrete by touching water.

type SplashPotionType

type SplashPotionType struct{}

SplashPotionType is a world.EntityType implementation for SplashPotion.

func (SplashPotionType) BBox

func (SplashPotionType) DecodeNBT

func (SplashPotionType) DecodeNBT(m map[string]any) world.Entity

func (SplashPotionType) EncodeEntity

func (SplashPotionType) EncodeEntity() string

func (SplashPotionType) EncodeNBT

func (SplashPotionType) EncodeNBT(e world.Entity) map[string]any

func (SplashPotionType) Glint

func (SplashPotionType) Glint() bool

type StationaryBehaviour

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

StationaryBehaviour implements the behaviour of an entity that is unable to move, such as a text entity or an area effect cloud. Applying velocity to such entities will not move them.

func (*StationaryBehaviour) Immobile

func (s *StationaryBehaviour) Immobile() bool

Immobile always returns true.

func (*StationaryBehaviour) Tick

func (s *StationaryBehaviour) Tick(e *Ent) *Movement

Tick checks if the entity should be closed and runs whatever additional behaviour the entity might require.

type StationaryBehaviourConfig

type StationaryBehaviourConfig struct {
	// ExistenceDuration is the duration that an entity with this behaviour
	// should last. Once this time expires, the entity is closed. If
	// ExistenceDuration is 0, the entity will never expire automatically.
	ExistenceDuration time.Duration
	// SpawnSounds is a slice of sounds to be played upon the spawning of the
	// entity.
	SpawnSounds []world.Sound
	// Tick is a function called every world tick. It may be used to implement
	// additional behaviour for stationary entities.
	Tick func(e *Ent)
}

StationaryBehaviourConfig holds settings that influence the way StationaryBehaviour operates. StationaryBehaviourConfig.New() may be called to create a new behaviour with this config.

func (StationaryBehaviourConfig) New

New creates a StationaryBehaviour using the settings provided in conf.

type SuffocationDamageSource

type SuffocationDamageSource struct{}

SuffocationDamageSource is used for damage caused by an entity suffocating in a block.

func (SuffocationDamageSource) Fire

func (SuffocationDamageSource) ReducedByArmour

func (SuffocationDamageSource) ReducedByArmour() bool

func (SuffocationDamageSource) ReducedByResistance

func (SuffocationDamageSource) ReducedByResistance() bool

type SwingArmAction

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

SwingArmAction is a world.EntityAction that makes an entity or player swing its arm.

func (SwingArmAction) EntityAction

func (SwingArmAction) EntityAction()

type TNTType

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

TNTType is a world.EntityType implementation for TNT.

func (TNTType) BBox

func (TNTType) BBox(world.Entity) cube.BBox

func (TNTType) DecodeNBT

func (t TNTType) DecodeNBT(m map[string]any) world.Entity

func (TNTType) EncodeEntity

func (TNTType) EncodeEntity() string

func (TNTType) EncodeNBT

func (TNTType) EncodeNBT(e world.Entity) map[string]any

func (TNTType) Igniter

func (t TNTType) Igniter() world.Entity

Igniter returns the entity that ignited the TNT. It is nil if ignited by a world source like fire.

func (TNTType) NetworkOffset

func (TNTType) NetworkOffset() float64

type TextType

type TextType struct{}

TextType is a world.EntityType implementation for Text.

func (TextType) BBox

func (TextType) BBox(world.Entity) cube.BBox

func (TextType) DecodeNBT

func (TextType) DecodeNBT(m map[string]any) world.Entity

func (TextType) EncodeEntity

func (TextType) EncodeEntity() string

func (TextType) EncodeNBT

func (TextType) EncodeNBT(e world.Entity) map[string]any

func (TextType) NetworkEncodeEntity

func (TextType) NetworkEncodeEntity() string

type TotemUseAction

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

TotemUseAction is a world.EntityAction that displays the totem use particles and animation.

func (TotemUseAction) EntityAction

func (TotemUseAction) EntityAction()

type VoidDamageSource

type VoidDamageSource struct{}

VoidDamageSource is used for damage caused by an entity being in the void.

func (VoidDamageSource) Fire

func (VoidDamageSource) Fire() bool

func (VoidDamageSource) ReducedByArmour

func (VoidDamageSource) ReducedByArmour() bool

func (VoidDamageSource) ReducedByResistance

func (VoidDamageSource) ReducedByResistance() bool

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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