summaryrefslogtreecommitdiff
path: root/chatgroups.py
diff options
context:
space:
mode:
authorjomo <github@jomo.tv>2014-05-16 23:04:40 +0200
committerjomo <github@jomo.tv>2014-05-16 23:04:40 +0200
commit9f1ed1fb668f0a60170eac88909bf2b3e69402f8 (patch)
tree4a82a8a58a1f623ef29af4bc0fdb2c780d4f773c /chatgroups.py
first commit via git
Diffstat (limited to 'chatgroups.py')
-rwxr-xr-xchatgroups.py96
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)