forked from df-mc/dragonfly
-
Notifications
You must be signed in to change notification settings - Fork 1
/
controllable.go
69 lines (59 loc) · 1.95 KB
/
controllable.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
package session
import (
"github.com/go-gl/mathgl/mgl64"
"github.com/google/uuid"
"github.com/sunproxy/sunfly/dragonfly/item"
"github.com/sunproxy/sunfly/dragonfly/player/form"
"github.com/sunproxy/sunfly/dragonfly/player/skin"
"github.com/sunproxy/sunfly/dragonfly/world"
"github.com/sunproxy/sunfly/dragonfly/world/gamemode"
)
// Controllable represents an entity that may be controlled by a Session. Generally, a Controllable is
// implemented in the form of a Player.
// Methods in Controllable will be added as Session needs them in order to handle packets.
type Controllable interface {
world.Entity
item.Carrier
form.Submitter
SetHeldItems(right, left item.Stack)
Move(deltaPos mgl64.Vec3)
Speed() float64
EyeHeight() float64
Rotate(deltaYaw, deltaPitch float64)
Chat(msg ...interface{})
ExecuteCommand(commandLine string)
GameMode() gamemode.GameMode
SetGameMode(mode gamemode.GameMode)
UseItem()
ReleaseItem()
UseItemOnBlock(pos world.BlockPos, face world.Face, clickPos mgl64.Vec3)
UseItemOnEntity(e world.Entity)
BreakBlock(pos world.BlockPos)
PickBlock(pos world.BlockPos)
AttackEntity(e world.Entity)
Drop(s item.Stack) (n int)
Respawn()
StartSneaking()
Sneaking() bool
StopSneaking()
StartSprinting()
Sprinting() bool
StopSprinting()
StartSwimming()
Swimming() bool
StopSwimming()
StartBreaking(pos world.BlockPos, face world.Face)
ContinueBreaking(face world.Face)
FinishBreaking()
AbortBreaking()
Exhaust(points float64)
// UUID returns the UUID of the controllable. It must be unique for all controllable entities present in
// the server.
UUID() uuid.UUID
// XUID returns the XBOX Live User ID of the controllable. Every controllable must have one of these if
// they are authenticated via XBOX Live, as they must be connected to an XBOX Live account.
XUID() string
// Skin returns the skin of the controllable. Each controllable must have a skin, as it defines how the
// entity looks in the world.
Skin() skin.Skin
}