func (e Effect) Type() Type {
	return e.t
}
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.
package effect
import (
	"github.com/df-mc/dragonfly/server/entity/damage"
	"github.com/df-mc/dragonfly/server/entity/healing"
	"github.com/df-mc/dragonfly/server/world"
	"image/color"
	"time"
)
type LastingType interface {
	Type
	RGBA() color.RGBA
	Start(e world.Entity, lvl int)
	End(e world.Entity, lvl int)
}
type Type interface {
	Apply(e world.Entity, lvl int, d time.Duration)
}
type Effect struct {
	t                        Type
	d                        time.Duration
	lvl                      int
	ambient, particlesHidden bool
}
func NewInstant(t Type, lvl int) Effect {
	return Effect{t: t, lvl: lvl}
}
func New(t LastingType, lvl int, d time.Duration) Effect {
	return Effect{t: t, lvl: lvl, d: d}
}
func NewAmbient(t LastingType, lvl int, d time.Duration) Effect {
	return Effect{t: t, lvl: lvl, d: d, ambient: true}
}
func (e Effect) WithoutParticles() Effect {
	e.particlesHidden = true
	return e
}
func (e Effect) ParticlesHidden() bool {
	return e.particlesHidden
}
func (e Effect) Level() int {
	return e.lvl
}
func (e Effect) Duration() time.Duration {
	return e.d
}
func (e Effect) Ambient() bool {
	return e.ambient
}