summaryrefslogtreecommitdiff
path: root/playermanager.py
blob: eff1b17694547fe9920895cdd4ad9d76c4c08e7d (plain)
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
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
from helpers import *
import org.bukkit.entity.Player as Base_player
import blockplacemods as blockmods
import snowbrawl
import loginsecurity as login
import calc
import chatgroups as cg
import adminchat as ac
import cycle
import forcefield as ff
import imout
import mentio
import pmtoggle


get_info_perm = "utils.playermanager.info"

players = []


###############################################################
# Outside-accessible functions

def get_player(name):
    for player in players:
        if player.get_name() == name:
            return player
    return None

##############################################################
# Events

@hook.event("player.PlayerQuitEvent", "highest")
def on_quit(event):
    for i in range(len(players)):
        if players[i].get_uuid() == uid(event.getPlayer()):
            players.remove(players[i])
            return

@hook.event("player.PlayerJoinEvent", "highest")
def on_join(event):
    players.append(Player(event.getPlayer()))

#############################################################
# Commands

def send(sender, name, data):
    if isinstance(data, bool):
        if data == True:
            msg(sender, "&e-&a %s&e:&a True" % name)
        else:
            msg(sender, "&e-&a %s&e:&c False" % name)
    else:
        msg(sender, "&e-&a %s&e:&6 %s" % (name, str(data)))

def send_header(sender, name):
    msg(sender, "&e- &2 %s&e:" % name.upper())

def print_info(sender, player):
    send_header(sender, "general")
    send(sender, "Name", player.get_name())
    send(sender, "UUID", player.get_uuid())
    send(sender, "Logged in", player.logged_in())
    send_header(sender, "snowbrawl")
    send(sender, "In arena", player.in_sb_arena())
    send(sender, "Arena", player.get_sb_arena())
    send_header(sender, "place-mods")
    send(sender, "Slab flip", player.has_autoflip_slab())
    send(sender, "Cauldron fill", player.has_autofill_cauldron())
    send(sender, "Piston face", player.has_autoface_piston())
    send_header(sender, "chat groups")
    send(sender, "In chatgroup", player.in_cg())
    send(sender, "Chatgroup", player.get_cg())
    send(sender, "Key", player.get_cg_key())
    send(sender, "Toggle", player.has_cg_toggle())
    send_header(sender, "Admin chat")
    send(sender, "In adminchat", player.in_ac())
    send(sender, "Key", player.get_ac_key())
    send(sender, "Toggle", player.has_ac_toggle())
    send_header(sender, "forcefield")
    send(sender, "Whitelist", "&e, &6".join(player.get_ff_whitelist()))
    send(sender, "Toggle", player.has_ff_toggle())
    send_header(sender, "miscellaneous")
    send(sender, "Calc", player.has_calc())
    send(sender, "PM toggle", player.has_pm_toggle())
    send(sender, "Cycle toggle", player.has_cycle())
    send(sender, "Imout toggle", player.has_imout_toggle())
    send(sender, "Mentio", "&e, &6".join(player.get_mentio_list()))

@hook.command("getinfo")
def on_command(sender, cmd, label, args):
    if sender.hasPermission(get_info_perm):
        if len(args) != 1:
            msg(sender, "&e-&a /getinfo <name>")
        else:
            player = get_player(args[0])
            if player != None:
                print_info(sender, player)
            else:
                msg(sender, "&e-&c Player not online or does not exist")
    else:
        noperm(sender)
    return True

#############################################################
# Player class

class Player():

    def __init__(self, player):
        self.player = player

    def get_java_player(self):
        return self.player

    def get_uuid(self):
        return uid(self.player)

    def get_name(self):
        return self.get_java_player().getName()

    def get_display_name(self):
        return self.get_java_player().getDisplayName()

    def in_sb_arena(self):
        for arena in snowbrawl.arenas:
            if arena.in_players(self.get_java_player()):
                return True
        return False

    def get_sb_arena(self):
        for arena in snowbrawl.arenas:
            if arena.in_players(self.get_java_player()):
                return arena
        return None

    def logged_in(self):
        return self.get_name() not in login.logging_in

    def has_autoflip_slab(self):
        return blockmods.isEnabled("slab", self.get_uuid())

    def has_autofill_cauldron(self):
        return blockmods.isEnabled("cauldron", self.get_uuid())

    def has_autoface_piston(self):
        return blockmods.isEnabled("piston", self.get_uuid())

    def has_calc(self):
        return self.get_uuid() in calc.calc_users

    def in_cg(self):
        return self.get_uuid() in cg.groups.keys()

    def get_cg(self):
        if self.in_cg():
            return cg.groups[self.get_uuid()]
        else:
            return None

    def get_cg_key(self):
        return cg.get_key(self.get_uuid())

    def has_cg_toggle(self):
        return self.get_uuid() in cg.cg_toggle_list

    def in_ac(self):
        return self.get_java_player().hasPermission(ac.ac_permission)

    def get_ac_key(self):
        return ac.get_key(self.get_uuid())

    def has_ac_toggle(self):
        return self.get_name() in ac.ac_toggle_list

    def has_cycle(self):
        return self.get_uuid() not in cycle.no_cyclers

    def has_ff_toggle(self):
        return self.get_uuid() in ff.ff_users

    def get_ff_whitelist(self):
        return ff.whitelists.get(self.get_uuid(), [])

    def has_imout_toggle(self):
        return self.get_name() in imout.imout_toggle_list

    def get_mentio_list(self):
        return mentio.get_keywords(self.get_java_player())

    def has_pm_toggle(self):
        return self.get_uuid() in pmtoggle.toggle_dict