effect

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: 5 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func ID

func ID(e Type) (int, bool)

ID attempts to return the ID an effect was registered with. If found, the id is returned and the bool true.

func Register

func Register(id int, e Type)

Register registers an Effect with a specific ID to translate from and to on disk and network. An Effect instance may be created by creating a struct instance in this package like effect.Regeneration{}.

func ResultingColour

func ResultingColour(effects []Effect) (color.RGBA, bool)

ResultingColour calculates the resulting colour of the effects passed and returns a bool specifying if the effects were ambient effects, which will cause their particles to display less frequently.

Types

type Absorption

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

Absorption is a lasting effect that increases the health of an entity over the maximum. Once this extra health is lost, it will not regenerate.

func (Absorption) Apply

func (Absorption) Apply(world.Entity, int, time.Duration)

func (Absorption) End

func (Absorption) End(e world.Entity, _ int)

End ...

func (Absorption) RGBA

func (Absorption) RGBA() color.RGBA

RGBA ...

func (Absorption) Start

func (Absorption) Start(e world.Entity, lvl int)

Start ...

type Blindness

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

Blindness is a lasting effect that greatly reduces the vision range of the entity affected.

func (Blindness) Apply

func (Blindness) Apply(world.Entity, int, time.Duration)

func (Blindness) End

func (Blindness) End(world.Entity, int)

func (Blindness) RGBA

func (Blindness) RGBA() color.RGBA

RGBA ...

func (Blindness) Start

func (Blindness) Start(world.Entity, int)

type ConduitPower

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

ConduitPower is a lasting effect that grants the affected entity the ability to breathe underwater and allows the entity to break faster when underwater or in the rain. (Similarly to haste.)

func (ConduitPower) Apply

func (ConduitPower) Apply(world.Entity, int, time.Duration)

func (ConduitPower) End

func (ConduitPower) End(world.Entity, int)

func (ConduitPower) Multiplier

func (ConduitPower) Multiplier(lvl int) float64

Multiplier returns the mining speed multiplier from this effect.

func (ConduitPower) RGBA

func (ConduitPower) RGBA() color.RGBA

RGBA ...

func (ConduitPower) Start

func (ConduitPower) Start(world.Entity, int)

type Darkness

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

Darkness is a lasting effect that causes the player's vision to dim occasionally.

func (Darkness) Apply

func (Darkness) Apply(world.Entity, int, time.Duration)

func (Darkness) End

func (Darkness) End(world.Entity, int)

func (Darkness) RGBA

func (Darkness) RGBA() color.RGBA

RGBA ...

func (Darkness) Start

func (Darkness) Start(world.Entity, int)

type Effect

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

Effect is an effect that can be added to an entity. Effects are either instant (applying the effect only once) or lasting (applying the effect every tick).

func New

func New(t LastingType, lvl int, d time.Duration) Effect

New creates a new Effect using a LastingType passed. Once added to an entity, the time.Duration passed will be ticked down by the entity until it reaches a duration of 0.

func NewAmbient

func NewAmbient(t LastingType, lvl int, d time.Duration) Effect

NewAmbient creates a new ambient (reduced particles, as when using a beacon) Effect using a LastingType passed. Once added to an entity, the time.Duration passed will be ticked down by the entity until it reaches a duration of 0.

func NewInstant

func NewInstant(t Type, lvl int) Effect

NewInstant returns a new instant Effect using the Type passed. The effect will be applied to an entity once and will expire immediately after.

func (Effect) Ambient

func (e Effect) Ambient() bool

Ambient returns whether the Effect is an ambient effect, leading to reduced particles shown to the client. False is always returned if the Effect was created using New or NewInstant.

func (Effect) Duration

func (e Effect) Duration() time.Duration

Duration returns the leftover duration of the Effect. The duration returned is always 0 if NewInstant was used to create the effect.

func (Effect) Level

func (e Effect) Level() int

Level returns the level of the Effect.

func (Effect) ParticlesHidden

func (e Effect) ParticlesHidden() bool

ParticlesHidden returns true if the Effect had its particles hidden by calling WithoutParticles.

func (Effect) TickDuration

func (e Effect) TickDuration() Effect

TickDuration ticks the effect duration, subtracting time.Second/20 from the leftover time and returning the resulting Effect.

func (Effect) Type

func (e Effect) Type() Type

Type returns the underlying type of the Effect. It is either of the type Type or LastingType, depending on whether it was created using New or NewAmbient, or NewInstant.

func (Effect) WithoutParticles

func (e Effect) WithoutParticles() Effect

WithoutParticles returns the same Effect with particles disabled. Adding the effect to players will not display the particles around the player.

type FatalPoison

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

FatalPoison is a lasting effect that causes the affected entity to lose health gradually. FatalPoison, unlike Poison, can kill the entity it is applied to.

func (FatalPoison) Apply

func (FatalPoison) Apply(e world.Entity, lvl int, d time.Duration)

Apply ...

func (FatalPoison) End

func (FatalPoison) End(world.Entity, int)

func (FatalPoison) RGBA

func (FatalPoison) RGBA() color.RGBA

RGBA ...

func (FatalPoison) Start

func (FatalPoison) Start(world.Entity, int)

type FireResistance

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

FireResistance is a lasting effect that grants immunity to fire & lava damage.

func (FireResistance) Apply

func (FireResistance) Apply(world.Entity, int, time.Duration)

func (FireResistance) End

func (FireResistance) End(world.Entity, int)

func (FireResistance) RGBA

func (FireResistance) RGBA() color.RGBA

RGBA ...

func (FireResistance) Start

func (FireResistance) Start(world.Entity, int)

type Haste

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

Haste is a lasting effect that increases the mining speed of a player by 20% for each level of the effect.

func (Haste) Apply

func (Haste) Apply(world.Entity, int, time.Duration)

func (Haste) End

func (Haste) End(world.Entity, int)

func (Haste) Multiplier

func (Haste) Multiplier(lvl int) float64

Multiplier returns the mining speed multiplier from this effect.

func (Haste) RGBA

func (Haste) RGBA() color.RGBA

RGBA ...

func (Haste) Start

func (Haste) Start(world.Entity, int)

type HealthBoost

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

HealthBoost causes the affected entity to have its maximum health changed for a specific duration.

func (HealthBoost) Apply

func (HealthBoost) Apply(world.Entity, int, time.Duration)

func (HealthBoost) End

func (HealthBoost) End(e world.Entity, lvl int)

End ...

func (HealthBoost) RGBA

func (HealthBoost) RGBA() color.RGBA

RGBA ...

func (HealthBoost) Start

func (HealthBoost) Start(e world.Entity, lvl int)

Start ...

type Hunger

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

Hunger is a lasting effect that causes an affected player to gradually lose saturation and food.

func (Hunger) Apply

func (Hunger) Apply(e world.Entity, lvl int, _ time.Duration)

Apply ...

func (Hunger) End

func (Hunger) End(world.Entity, int)

func (Hunger) RGBA

func (Hunger) RGBA() color.RGBA

RGBA ...

func (Hunger) Start

func (Hunger) Start(world.Entity, int)

type InstantDamage

type InstantDamage struct {
	// Potency specifies the potency of the instant damage. By default, this value is 1, which means 100% of
	// the instant damage will be applied to an entity. A lingering damage potion, for example, has a potency
	// of 0.5: It deals 1.5 hearts damage (per tick) instead of 3.
	Potency float64
}

InstantDamage is an instant effect that causes a living entity to immediately take some damage, depending on the level and the potency of the effect.

func (InstantDamage) Apply

func (i InstantDamage) Apply(e world.Entity, lvl int, _ time.Duration)

Apply ...

func (InstantDamage) RGBA

func (InstantDamage) RGBA() color.RGBA

RGBA ...

func (InstantDamage) WithPotency

func (i InstantDamage) WithPotency(potency float64) Type

WithPotency ...

type InstantDamageSource

type InstantDamageSource struct{}

InstantDamageSource is used for damage caused by an effect.InstantDamage applied to an entity.

func (InstantDamageSource) Fire

func (InstantDamageSource) Fire() bool

func (InstantDamageSource) ReducedByArmour

func (InstantDamageSource) ReducedByArmour() bool

func (InstantDamageSource) ReducedByResistance

func (InstantDamageSource) ReducedByResistance() bool

type InstantHealingSource

type InstantHealingSource struct{}

InstantHealingSource is a healing source used when an entity regains health from an effect.InstantHealth.

func (InstantHealingSource) HealingSource

func (InstantHealingSource) HealingSource()

type InstantHealth

type InstantHealth struct {
	// Potency specifies the potency of the instant health. By default, this value is 1, which means 100% of
	// the instant health will be applied to an entity. A lingering health potion, for example, has a potency
	// of 0.5: It heals 1 heart (per tick) instead of 2.
	Potency float64
}

InstantHealth is an instant effect that causes the player that it is applied to immediately regain some health. The amount of health regained depends on the effect level and potency.

func (InstantHealth) Apply

func (i InstantHealth) Apply(e world.Entity, lvl int, _ time.Duration)

Apply instantly heals the world.Entity passed for a bit of health, depending on the effect level and potency.

func (InstantHealth) RGBA

func (InstantHealth) RGBA() color.RGBA

RGBA ...

func (InstantHealth) WithPotency

func (i InstantHealth) WithPotency(potency float64) Type

WithPotency ...

type Invisibility

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

Invisibility is a lasting effect that causes the affected entity to turn invisible. While invisible, the entity's armour is still visible and effect particles will still be displayed.

func (Invisibility) Apply

func (Invisibility) Apply(world.Entity, int, time.Duration)

func (Invisibility) End

func (Invisibility) End(e world.Entity, _ int)

End ...

func (Invisibility) RGBA

func (Invisibility) RGBA() color.RGBA

RGBA ...

func (Invisibility) Start

func (Invisibility) Start(e world.Entity, _ int)

Start ...

type JumpBoost

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

JumpBoost is a lasting effect that causes the affected entity to be able to jump much higher, depending on the level of the effect.

func (JumpBoost) Apply

func (JumpBoost) Apply(world.Entity, int, time.Duration)

func (JumpBoost) End

func (JumpBoost) End(world.Entity, int)

func (JumpBoost) RGBA

func (JumpBoost) RGBA() color.RGBA

RGBA ...

func (JumpBoost) Start

func (JumpBoost) Start(world.Entity, int)

type LastingType

type LastingType interface {
	Type
	// Start is called for lasting effects when they are initially added to an entity.
	Start(e world.Entity, lvl int)
	// End is called for lasting effects when they are removed from an entity.
	End(e world.Entity, lvl int)
}

LastingType represents an effect type that can have a duration. An effect can be made using it by calling effect.New with the LastingType.

type Levitation

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

Levitation is a lasting effect that causes the affected entity to slowly levitate upwards. It is roughly the opposite of the SlowFalling effect.

func (Levitation) Apply

func (Levitation) Apply(world.Entity, int, time.Duration)

func (Levitation) End

func (Levitation) End(world.Entity, int)

func (Levitation) RGBA

func (Levitation) RGBA() color.RGBA

RGBA ...

func (Levitation) Start

func (Levitation) Start(world.Entity, int)

type MiningFatigue

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

MiningFatigue is a lasting effect that decreases the mining speed of a player by 10% for each level of the effect.

func (MiningFatigue) Apply

func (MiningFatigue) Apply(world.Entity, int, time.Duration)

func (MiningFatigue) End

func (MiningFatigue) End(world.Entity, int)

func (MiningFatigue) Multiplier

func (MiningFatigue) Multiplier(lvl int) float64

Multiplier returns the mining speed multiplier from this effect.

func (MiningFatigue) RGBA

func (MiningFatigue) RGBA() color.RGBA

RGBA ...

func (MiningFatigue) Start

func (MiningFatigue) Start(world.Entity, int)

type Nausea

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

Nausea is a lasting effect that causes the screen to warp, similarly to when entering a nether portal.

func (Nausea) Apply

func (Nausea) Apply(world.Entity, int, time.Duration)

func (Nausea) End

func (Nausea) End(world.Entity, int)

func (Nausea) RGBA

func (Nausea) RGBA() color.RGBA

RGBA ...

func (Nausea) Start

func (Nausea) Start(world.Entity, int)

type NightVision

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

NightVision is a lasting effect that causes the affected entity to see in dark places as though they were fully lit up.

func (NightVision) Apply

func (NightVision) Apply(world.Entity, int, time.Duration)

func (NightVision) End

func (NightVision) End(world.Entity, int)

func (NightVision) RGBA

func (NightVision) RGBA() color.RGBA

RGBA ...

func (NightVision) Start

func (NightVision) Start(world.Entity, int)

type Poison

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

Poison is a lasting effect that causes the affected entity to lose health gradually. Poison cannot kill, unlike FatalPoison.

func (Poison) Apply

func (Poison) Apply(e world.Entity, lvl int, d time.Duration)

Apply ...

func (Poison) End

func (Poison) End(world.Entity, int)

func (Poison) RGBA

func (Poison) RGBA() color.RGBA

RGBA ...

func (Poison) Start

func (Poison) Start(world.Entity, int)

type PoisonDamageSource

type PoisonDamageSource struct {
	// Fatal specifies if the damage was caused by effect.FatalPoison and if
	// the damage could therefore kill the entity.
	Fatal bool
}

PoisonDamageSource is used for damage caused by an effect.Poison or effect.FatalPoison applied to an entity.

func (PoisonDamageSource) Fire

func (PoisonDamageSource) Fire() bool

func (PoisonDamageSource) ReducedByArmour

func (PoisonDamageSource) ReducedByArmour() bool

func (PoisonDamageSource) ReducedByResistance

func (PoisonDamageSource) ReducedByResistance() bool

type PotentType

type PotentType interface {
	Type
	// WithPotency updates the potency of the type with the one given and returns it.
	WithPotency(potency float64) Type
}

PotentType represents an effect type which can have its potency changed.

type Regeneration

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

Regeneration is an effect that causes the entity that it is added to slowly regenerate health. The level of the effect influences the speed with which the entity regenerates.

func (Regeneration) Apply

func (Regeneration) Apply(e world.Entity, lvl int, d time.Duration)

Apply applies health to the world.Entity passed if the duration of the effect is at the right tick.

func (Regeneration) End

func (Regeneration) End(world.Entity, int)

func (Regeneration) RGBA

func (Regeneration) RGBA() color.RGBA

RGBA ...

func (Regeneration) Start

func (Regeneration) Start(world.Entity, int)

type RegenerationHealingSource

type RegenerationHealingSource struct{}

RegenerationHealingSource is a healing source used when an entity regenerates health from an effect.Regeneration.

func (RegenerationHealingSource) HealingSource

func (RegenerationHealingSource) HealingSource()

type Resistance

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

Resistance is a lasting effect that reduces the damage taken from any sources except for void damage or custom damage.

func (Resistance) Apply

func (Resistance) Apply(world.Entity, int, time.Duration)

func (Resistance) End

func (Resistance) End(world.Entity, int)

func (Resistance) Multiplier

func (Resistance) Multiplier(e world.DamageSource, lvl int) float64

Multiplier returns a damage multiplier for the damage source passed.

func (Resistance) RGBA

func (Resistance) RGBA() color.RGBA

RGBA ...

func (Resistance) Start

func (Resistance) Start(world.Entity, int)

type Saturation

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

Saturation is a lasting effect that causes the affected player to regain food and saturation.

func (Saturation) Apply

func (Saturation) Apply(e world.Entity, lvl int, _ time.Duration)

Apply ...

func (Saturation) End

func (Saturation) End(world.Entity, int)

func (Saturation) RGBA

func (Saturation) RGBA() color.RGBA

RGBA ...

func (Saturation) Start

func (Saturation) Start(world.Entity, int)

type SlowFalling

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

SlowFalling is a lasting effect that causes the affected entity to fall very slowly.

func (SlowFalling) Apply

func (SlowFalling) Apply(world.Entity, int, time.Duration)

func (SlowFalling) End

func (SlowFalling) End(world.Entity, int)

func (SlowFalling) RGBA

func (SlowFalling) RGBA() color.RGBA

RGBA ...

func (SlowFalling) Start

func (SlowFalling) Start(world.Entity, int)

type Slowness

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

Slowness is a lasting effect that decreases the movement speed of a living entity by 15% for each level that the effect has.

func (Slowness) Apply

func (Slowness) Apply(world.Entity, int, time.Duration)

func (Slowness) End

func (Slowness) End(e world.Entity, lvl int)

End ...

func (Slowness) RGBA

func (Slowness) RGBA() color.RGBA

RGBA ...

func (Slowness) Start

func (Slowness) Start(e world.Entity, lvl int)

Start ...

type Speed

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

Speed is a lasting effect that increases the speed of an entity by 20% for each level that the effect has.

func (Speed) Apply

func (Speed) Apply(world.Entity, int, time.Duration)

func (Speed) End

func (Speed) End(e world.Entity, lvl int)

End ...

func (Speed) RGBA

func (Speed) RGBA() color.RGBA

RGBA ...

func (Speed) Start

func (Speed) Start(e world.Entity, lvl int)

Start ...

type Strength

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

Strength is a lasting effect that increases the damage dealt with melee attacks when applied to an entity.

func (Strength) Apply

func (Strength) Apply(world.Entity, int, time.Duration)

func (Strength) End

func (Strength) End(world.Entity, int)

func (Strength) Multiplier

func (Strength) Multiplier(lvl int) float64

Multiplier returns the damage multiplier of the effect.

func (Strength) RGBA

func (Strength) RGBA() color.RGBA

RGBA ...

func (Strength) Start

func (Strength) Start(world.Entity, int)

type Type

type Type interface {
	// RGBA returns the colour of the effect. If multiple effects are present, the colours will be mixed
	// together to form a new colour.
	RGBA() color.RGBA
	// Apply applies the effect to an entity. This method applies the effect to an entity once for instant effects, such
	// as healing the world.Entity for instant health.
	// Apply always has a duration of 0 passed to it for instant effect implementations. For lasting effects that
	// implement LastingType, the appropriate leftover duration is passed.
	Apply(e world.Entity, lvl int, d time.Duration)
}

Type is an effect implementation that can be applied to an entity.

func ByID

func ByID(id int) (Type, bool)

ByID attempts to return an effect by the ID it was registered with. If found, the effect found is returned and the bool true.

type WaterBreathing

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

WaterBreathing is a lasting effect that allows the affected entity to breath underwater until the effect expires.

func (WaterBreathing) Apply

func (WaterBreathing) Apply(world.Entity, int, time.Duration)

func (WaterBreathing) End

func (WaterBreathing) End(world.Entity, int)

func (WaterBreathing) RGBA

func (WaterBreathing) RGBA() color.RGBA

RGBA ...

func (WaterBreathing) Start

func (WaterBreathing) Start(world.Entity, int)

type Weakness

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

Weakness is a lasting effect that reduces the damage dealt to other entities with melee attacks.

func (Weakness) Apply

func (Weakness) Apply(world.Entity, int, time.Duration)

func (Weakness) End

func (Weakness) End(world.Entity, int)

func (Weakness) Multiplier

func (Weakness) Multiplier(lvl int) float64

Multiplier returns the damage multiplier of the effect.

func (Weakness) RGBA

func (Weakness) RGBA() color.RGBA

RGBA ...

func (Weakness) Start

func (Weakness) Start(world.Entity, int)

type Wither

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

Wither is a lasting effect that causes an entity to take continuous damage that is capable of killing an entity.

func (Wither) Apply

func (Wither) Apply(e world.Entity, lvl int, d time.Duration)

Apply ...

func (Wither) End

func (Wither) End(world.Entity, int)

func (Wither) RGBA

func (Wither) RGBA() color.RGBA

RGBA ...

func (Wither) Start

func (Wither) Start(world.Entity, int)

type WitherDamageSource

type WitherDamageSource struct{}

WitherDamageSource is used for damage caused by an effect.Wither applied to an entity.

func (WitherDamageSource) Fire

func (WitherDamageSource) Fire() bool

func (WitherDamageSource) ReducedByArmour

func (WitherDamageSource) ReducedByArmour() bool

func (WitherDamageSource) ReducedByResistance

func (WitherDamageSource) ReducedByResistance() bool

Jump to

Keyboard shortcuts

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