Files
TarnaWijaya 26ed99fda6
Build and deploy / Build (push) Has been cancelled
Build and deploy / Update Contributors (push) Has been cancelled
Build and deploy / Deploy (push) Has been cancelled
up3
2026-07-09 08:33:57 +08:00

30 lines
916 B
Go

package cmd
import (
"github.com/df-mc/dragonfly/server/internal/sliceutil"
"github.com/df-mc/dragonfly/server/world"
"github.com/go-gl/mathgl/mgl64"
"slices"
)
// Target represents the target of a command. A []Target may be used as command parameter
// types to allow passing targets to the command.
type Target interface {
// Position returns the position of the Target as an mgl64.Vec3.
Position() mgl64.Vec3
}
// NamedTarget is a Target that has a name.
type NamedTarget interface {
Target
// Name returns a name of the Target. Note that this name needs not to be and is not unique for a Target.
Name() string
}
// targets returns all Targets selectable by the Source passed.
func targets(tx *world.Tx) (entities []Target, players []NamedTarget) {
ent := sliceutil.Convert[Target](slices.Collect(tx.Entities()))
pl := sliceutil.Convert[NamedTarget](slices.Collect(tx.Players()))
return ent, pl
}