diff options
author | jomo <github@jomo.tv> | 2014-05-16 23:04:40 +0200 |
---|---|---|
committer | jomo <github@jomo.tv> | 2014-05-16 23:04:40 +0200 |
commit | 9f1ed1fb668f0a60170eac88909bf2b3e69402f8 (patch) | |
tree | 4a82a8a58a1f623ef29af4bc0fdb2c780d4f773c /chatgroups.py |
first commit via git
Diffstat (limited to 'chatgroups.py')
-rwxr-xr-x | chatgroups.py | 96 |
1 files changed, 96 insertions, 0 deletions
diff --git a/chatgroups.py b/chatgroups.py new file mode 100755 index 0000000..5412b55 --- /dev/null +++ b/chatgroups.py @@ -0,0 +1,96 @@ +from helpers import * +import simplejson as json +import org.bukkit as bukkit + +chatgroups_filename = "plugins/RedstonerUtils.py.dir/files/chatgroups.json" +groups = {} +cg_key = "." +cg_toggle_list = [] + +try: + groups = json.loads(open(chatgroups_filename).read()) +except Exception, e: + error("Failed to load chatgroups: %s" % e) + +@hook.command("chatgroup") +def onCommand(sender, args): + try: + plugHeader(sender, "ChatGroups") + if len(args) == 1 and args[0] == "leave": + if sender.getName() in groups.keys(): + groupchat(sender, "left the group", True) + group = groups[sender.getName()] + del(groups[sender.getName()]) + saveGroups() + else: + msg(sender, "&aYou can't leave no group, derp!") + elif len(args) == 1 and args[0] == "info": + if sender.getName() in groups.keys(): + group = groups[sender.getName()] + msg(sender, "&aCurrent chatgroup: %s" % group) + users = [] + for user, ugroup in groups.iteritems(): + if ugroup == group: users += [user] + msg(sender, "&aUsers in this group:") + msg(sender, "&a%s" % ", ".join(users)) + else: + msg(sender, "&aYou're in no chatgroup.") + elif len(args) == 2 and args[0] == "join": + groups[sender.getName()] = args[1] + groupchat(sender, "joined the group", True) + saveGroups() + msg(sender, "&aYour chatgroup is set to '%s'" % args[1]) + msg(sender, "&aAnyone in the group sees chat that begins with &e%s" % cg_key) + else: + msg(sender, "&e/chatgroup join <name>") + msg(sender, "&e/chatgroup leave") + msg(sender, "&e/chatgroup info") + except Exception, e: + error(e) + +@hook.command("cgt") +def onCommand(sender,args): + p = sender.getName() + if p in cg_toggle_list: + cg_toggle_list.remove(p) + msg(sender, "&8[&bCG&8] &e&oCG toggle: off") + else: + cg_toggle_list.append(p) + msg(sender, "&8[&bAC&8] &e&oCG toggle: on") + return True + +def groupchat(sender, message, ann=False): + #try: + group = groups.get(sender.getName()) + if group == None: + msg(sender, "&cYou are not in a group!") + return + name = sender.getDisplayName() + if ann: + mesg = "&8[&bCG&8] &e&o%s&e&o %s" % (name, message) + else: + mesg = "&8[&bCG&8] &f%s&f: &6%s" % (name, message) + for receiver in server.getOnlinePlayers(): + groups.get(receiver.getName()) == group and msg(receiver, mesg) + #except Exception, e: + # error(e) + +def saveGroups(): + try: + chatgroups_file = open(chatgroups_filename, "w") + chatgroups_file.write(json.dumps(groups)) + chatgroups_file.close() + except Exception, e: + error("Failed to write reports: " + str(e)) + +@hook.event("player.PlayerChatEvent", "normal") +def onChat(event): + sender = event.getPlayer() + msg = event.getMessage() + if not event.isCancelled(): + if msg[:len(cg_key)] == cg_key and sender.getName() in groups.keys(): + groupchat(sender, msg[1:]) + event.setCancelled(True) + elif sender.getName() in cg_toggle_list: + groupchat(sender, msg) + event.setCancelled(True) |