/
info.go
105 lines (86 loc) · 2.37 KB
/
info.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
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
package main
import (
"sort"
"strings"
"time"
"github.com/andreasgoulas/go-mcc/mcc"
)
func (plugin *plugin) handleCommands(sender mcc.CommandSender, command *mcc.Command, message string) {
if len(message) != 0 {
command.PrintUsage(sender)
return
}
var cmds []string
sender.Server().ForEachCommand(func(cmd *mcc.Command) {
cmds = append(cmds, cmd.Name)
})
sort.Strings(cmds)
sender.SendMessage(strings.Join(cmds, ", "))
}
func (plugin *plugin) handleHelp(sender mcc.CommandSender, command *mcc.Command, message string) {
args := strings.Fields(message)
if len(args) != 1 {
command.PrintUsage(sender)
return
}
cmd := sender.Server().FindCommand(args[0])
if cmd == nil {
sender.SendMessage("Unknown command " + args[0])
return
}
sender.SendMessage(cmd.Description)
cmd.PrintUsage(sender)
}
func (plugin *plugin) handleLevels(sender mcc.CommandSender, command *mcc.Command, message string) {
if len(message) != 0 {
command.PrintUsage(sender)
return
}
var levels []string
sender.Server().ForEachLevel(func(level *mcc.Level) {
levels = append(levels, level.Name)
})
sort.Strings(levels)
sender.SendMessage(strings.Join(levels, ", "))
}
func (plugin *plugin) handlePlayers(sender mcc.CommandSender, command *mcc.Command, message string) {
var players []string
args := strings.Fields(message)
switch len(args) {
case 0:
sender.Server().ForEachPlayer(func(player *mcc.Player) {
players = append(players, player.Name())
})
case 1:
level := sender.Server().FindLevel(args[0])
if level == nil {
sender.SendMessage("Level " + args[0] + " not found")
return
}
level.ForEachPlayer(func(player *mcc.Player) {
players = append(players, player.Name())
})
default:
command.PrintUsage(sender)
return
}
sort.Strings(players)
sender.SendMessage(strings.Join(players, ", "))
}
func (plugin *plugin) handleSeen(sender mcc.CommandSender, command *mcc.Command, message string) {
args := strings.Fields(message)
if len(args) != 1 {
command.PrintUsage(sender)
return
}
if sender.Server().FindPlayer(args[0]) != nil {
sender.SendMessage("Player " + args[0] + " is currently online")
return
}
if db, ok := plugin.db.queryPlayer(args[0]); ok {
dt := time.Since(db.LastLogin)
sender.SendMessage("Player " + args[0] + " was last seen " + fmtDuration(dt) + " ago")
} else {
sender.SendMessage("Player " + args[0] + " not found")
}
}