HUGE code cleanup

This commit is contained in:
jomo
2014-06-10 01:31:03 +02:00
parent 3dd467afec
commit cb716abd6b
12 changed files with 316 additions and 313 deletions

View File

@@ -1,5 +1,5 @@
#pylint: disable=F0401
from helpers import * from helpers import *
import org.bukkit as bukkit
ac_permission = "utils.ac" ac_permission = "utils.ac"
ac_key = "," ac_key = ","
@@ -17,7 +17,7 @@ def adminchat(sender, msg):
# ac toggle # ac toggle
@hook.command("act") @hook.command("act")
def onCommand(sender,args): def onActCommand(sender, args):
if sender.hasPermission(ac_permission): if sender.hasPermission(ac_permission):
p = sender.getName() p = sender.getName()
if p in ac_toggle_list: if p in ac_toggle_list:
@@ -32,7 +32,7 @@ def onCommand(sender,args):
@hook.command("ac") @hook.command("ac")
def onCommand(sender, args): def onAcCommand(sender, args):
if sender.hasPermission(ac_permission): if sender.hasPermission(ac_permission):
if not checkargs(sender, args, 1, -1): if not checkargs(sender, args, 1, -1):
return True return True

View File

@@ -1,6 +1,6 @@
#pylint: disable=F0401
from helpers import * from helpers import *
import simplejson as json import simplejson as json
import org.bukkit as bukkit
chatgroups_filename = "plugins/redstoner-utils.py.dir/files/chatgroups.json" chatgroups_filename = "plugins/redstoner-utils.py.dir/files/chatgroups.json"
groups = {} groups = {}
@@ -13,7 +13,7 @@ except Exception, e:
error("Failed to load chatgroups: %s" % e) error("Failed to load chatgroups: %s" % e)
@hook.command("chatgroup") @hook.command("chatgroup")
def onCommand(sender, args): def onChatgroupCommand(sender, args):
try: try:
plugHeader(sender, "ChatGroups") plugHeader(sender, "ChatGroups")
if len(args) == 1 and args[0] == "leave": if len(args) == 1 and args[0] == "leave":
@@ -30,7 +30,8 @@ def onCommand(sender, args):
msg(sender, "&aCurrent chatgroup: %s" % group) msg(sender, "&aCurrent chatgroup: %s" % group)
users = [] users = []
for user, ugroup in groups.iteritems(): for user, ugroup in groups.iteritems():
if ugroup == group: users += [user] if ugroup == group:
users += [user]
msg(sender, "&aUsers in this group:") msg(sender, "&aUsers in this group:")
msg(sender, "&a%s" % ", ".join(users)) msg(sender, "&a%s" % ", ".join(users))
else: else:
@@ -49,7 +50,7 @@ def onCommand(sender, args):
error(e) error(e)
@hook.command("cgt") @hook.command("cgt")
def onCommand(sender,args): def onCgtCommand(sender, args):
p = sender.getName() p = sender.getName()
if p in cg_toggle_list: if p in cg_toggle_list:
cg_toggle_list.remove(p) cg_toggle_list.remove(p)
@@ -86,11 +87,11 @@ def saveGroups():
@hook.event("player.PlayerChatEvent", "normal") @hook.event("player.PlayerChatEvent", "normal")
def onChat(event): def onChat(event):
sender = event.getPlayer() sender = event.getPlayer()
msg = event.getMessage() msge = event.getMessage()
if not event.isCancelled(): if not event.isCancelled():
if msg[:len(cg_key)] == cg_key and sender.getName() in groups.keys(): if msge[:len(cg_key)] == cg_key and sender.getName() in groups.keys():
groupchat(sender, msg[1:]) groupchat(sender, msge[1:])
event.setCancelled(True) event.setCancelled(True)
elif sender.getName() in cg_toggle_list: elif sender.getName() in cg_toggle_list:
groupchat(sender, msg) groupchat(sender, msge)
event.setCancelled(True) event.setCancelled(True)

View File

@@ -1,10 +1,10 @@
#pylint: disable=F0401
from re import sub from re import sub
import org.bukkit as bukkit import org.bukkit as bukkit
import org.bukkit.Location as Location import org.bukkit.Location as Location
import org.bukkit.entity.Player as Player import org.bukkit.entity.Player as Player
import org.bukkit.event.player.PlayerTeleportEvent.TeleportCause as TeleportCause import org.bukkit.event.player.PlayerTeleportEvent.TeleportCause as TeleportCause
import org.bukkit.block as block import org.bukkit.block as bblock
from java.util.logging import Level
server = bukkit.Bukkit.getServer() server = bukkit.Bukkit.getServer()
@@ -14,7 +14,7 @@ def log(text):
def error(text): def error(text):
server.getLogger().severe("[RedstonerUtils] %s" % text) server.getLogger().severe("[RedstonerUtils] %s" % text)
def msg(player, text, usecolor=True, basecolor=None): def msg(player, text, usecolor = True, basecolor = None):
if player and (player == server.getConsoleSender() or player.getPlayer()): #getPlayer() returns None when offline if player and (player == server.getConsoleSender() or player.getPlayer()): #getPlayer() returns None when offline
if basecolor: if basecolor:
player.sendMessage(colorify("&%s" % basecolor) + (colorify(text) if usecolor else text)) player.sendMessage(colorify("&%s" % basecolor) + (colorify(text) if usecolor else text))
@@ -24,19 +24,16 @@ def msg(player, text, usecolor=True, basecolor=None):
# better than bukkit's broadcast. # better than bukkit's broadcast.
# bukkit only works with permissibles that are subscribed to perm # bukkit only works with permissibles that are subscribed to perm
def broadcast(perm, text): def broadcast(perm, text):
try:
text = colorify(text) text = colorify(text)
for recipient in server.getOnlinePlayers().tolist() + [server.getConsoleSender()]: for recipient in server.getOnlinePlayers().tolist() + [server.getConsoleSender()]:
(not perm or recipient.hasPermission(perm)) and msg(recipient, text) (not perm or recipient.hasPermission(perm)) and msg(recipient, text)
except Exception, e:
error(e)
def colorify(text): def colorify(text):
return sub("&(?=[?\da-fk-or])", u"\u00A7", "%s" % text) return sub("&(?=[?\\da-fk-or])", u"\u00A7", "%s" % text)
def safetp(player, world, x, y, z, yaw=0, pitch=0): def safetp(player, world, x, y, z, yaw = 0, pitch = 0):
tpblock = Location(world, x, y, z).getBlock() tpblock = Location(world, x, y, z).getBlock()
if (tpblock.isEmpty() and tpblock.getRelative(block.BlockFace.UP).isEmpty()) or y > 255: if (tpblock.isEmpty() and tpblock.getRelative(bblock.BlockFace.UP).isEmpty()) or y > 255:
player.teleport(Location(world, x+0.5, y, z+0.5, yaw, pitch), TeleportCause.COMMAND) player.teleport(Location(world, x+0.5, y, z+0.5, yaw, pitch), TeleportCause.COMMAND)
else: else:
safetp(player, world, x, y+1, z, yaw, pitch) safetp(player, world, x, y+1, z, yaw, pitch)
@@ -53,16 +50,16 @@ def runas(player, cmd):
def isPlayer(sender): def isPlayer(sender):
return (isinstance(sender, Player)) return (isinstance(sender, Player))
def checkargs(sender, args, min, max): def checkargs(sender, args, amin, amax):
if not (len(args) >= min and (max < 0 or len(args) <= max)): if not (len(args) >= amin and (amax < 0 or len(args) <= amax)):
if min == max: if amin == amax:
msg(sender, "&cNeeds " + str(min) + " arguments!") msg(sender, "&cNeeds " + str(amin) + " arguments!")
return False return False
elif max < 0: elif amax < 0:
msg(sender, "&cNeeds at least " + str(min) + " arguments!") msg(sender, "&cNeeds at least " + str(amin) + " arguments!")
return False return False
else: else:
msg(sender, "&cNeeds " + str(min) + " to " + str(max) + " arguments!") msg(sender, "&cNeeds " + str(amin) + " to " + str(amax) + " arguments!")
return False return False
return True return True

View File

@@ -1,3 +1,4 @@
#pylint: disable=F0401
import org.bukkit as bukkit import org.bukkit as bukkit
from helpers import * from helpers import *
@@ -35,7 +36,7 @@ def tpChunk(sender, id):
msg(sender, "&aTeleported to &b%s&a, &b%s&a in &7%s&a with &b%s&a entities nearby." % (chunk[1], chunk[3], chunk[0].getName(), chunk[4])) msg(sender, "&aTeleported to &b%s&a, &b%s&a in &7%s&a with &b%s&a entities nearby." % (chunk[1], chunk[3], chunk[0].getName(), chunk[4]))
@hook.command("lagchunks") @hook.command("lagchunks")
def onCommand(sender, args): def onLagchunksCommand(sender, args):
try: try:
if sender.hasPermission("utils.lagchunks"): if sender.hasPermission("utils.lagchunks"):
plugHeader(sender, "Lagchunks") plugHeader(sender, "Lagchunks")

243
main.py
View File

@@ -7,261 +7,28 @@ import sys
sys.path += ['', '/usr/lib/python2.7', '/usr/lib/python2.7/plat-linux2', '/usr/lib/python2.7/lib-tk', '/usr/lib/python2.7/lib-old', '/usr/lib/python2.7/lib-dynload', '/usr/local/lib/python2.7/dist-packages', '/usr/lib/python2.7/dist-packages', '/usr/lib/pymodules/python2.7', '/usr/lib/pyshared/python2.7'] sys.path += ['', '/usr/lib/python2.7', '/usr/lib/python2.7/plat-linux2', '/usr/lib/python2.7/lib-tk', '/usr/lib/python2.7/lib-old', '/usr/lib/python2.7/lib-dynload', '/usr/local/lib/python2.7/dist-packages', '/usr/lib/python2.7/dist-packages', '/usr/lib/pymodules/python2.7', '/usr/lib/pyshared/python2.7']
try: try:
from helpers import * from helpers import log, error
except Exception, e: except Exception, e:
print("[RedstonerUtils] ERROR: Failed to import helpers: %s" % e) print("[RedstonerUtils] ERROR: Failed to import helpers: %s" % e)
log("Loading RedstonerUtils...") log("Loading RedstonerUtils...")
# Import all modules # Import all modules
modules = ["adminchat", "lagchunks", "reports", "chatgroups", "webtoken", "saylol", "skullclick", "tilehelper"] modules = ["misc", "adminchat", "lagchunks", "reports", "chatgroups", "webtoken", "saylol", "skullclick", "tilehelper"]
mod = {}
for module in modules: for module in modules:
try: try:
__import__(module) mod[module] = __import__(module)
log("Module %s loaded." % module) log("Module %s loaded." % module)
except Exception, e: except Exception, e:
error("Failed to import module %s: '%s'" % (module, e)) error("Failed to import module %s: '%s'" % (module, e))
import thread
import org.bukkit.entity.Player as Player
@hook.enable @hook.enable
def onEnable(): def onEnable():
log("RedstonerUtils enabled!") log("RedstonerUtils enabled!")
@hook.disable @hook.disable
def onDisable(): def onDisable():
reports.stopChecking() mod["reports"].stopChecking()
log("RedstonerUtils disabled!") log("RedstonerUtils disabled!")
# warp aliases
@hook.command("spawn")
def onCommand(sender, args):
warp(sender, args, "spawn")
return True
@hook.command("cr")
def onCommand(sender, args):
warp(sender, args, "cr")
return True
@hook.command("tr")
def onCommand(sender, args):
warp(sender, args, "tr")
return True
@hook.command("faq")
def onCommand(sender, args):
warp(sender, args, "faq")
return True
# misc
@hook.event("player.PlayerJoinEvent", "monitor")
def onJoin(event):
player = event.getPlayer()
for item in player.getInventory():
if (item != None and item.getTypeId() == 175 and item.getDurability() > 5):
item.setDurability(0)
log("&cPlayer '%s' had 175:6 or higher in his inventory! Replaced with 175:0" % player.getName())
msg(player, " &a----------------------------------------------------")
msg(player, " &4&lWARNING: &cYou had 175:7 (invalid flower) in your inventory.")
msg(player, " &cThis crashes your client. We have replaced it with 175:0.")
msg(player, " &a----------------------------------------------------")
if not server.getOfflinePlayer(player.getName()).hasPlayedBefore():
broadcast("utils.greet_new", "")
broadcast("utils.greet_new", "&a&lPlease welcome &f" + player.getDisplayName() + " &a&lto Redstoner!")
broadcast("utils.greet_new", "")
# clear out some eventual crap before
msg(player, " \n \n \n \n \n \n \n \n \n \n \n \n ")
msg(player, " &4Welcome to the Redstoner Server!")
msg(player, " &6please make sure to read the info here:")
msg(player, " &6/The FAQ at /spawn")
msg(player, " &6/rules")
msg(player, " &6/ranks")
msg(player, " &6thank you and happy playing ;)")
msg(player, " \n ")
def evalThread(foo, sender, code):
try:
msg(sender, "%s" % unicode(eval(code)), False, "a")
except Exception, e:
msg(sender, "%s: %s" % (e.__class__.__name__, e), False, "c")
thread.exit()
@hook.command("pyeval")
def onCommand(sender, args):
if sender.hasPermission("utils.pyeval"):
if not checkargs(sender, args, 1, -1):
return True
msg(sender, "%s" % " ".join(args), False, "e")
try:
thread.start_new_thread(evalThread, ("foo", sender, " ".join(args)))
except Exception, e:
msg(sender, "&cInternal error: %s" % e)
else:
noperm(sender)
return True
@hook.command("sudo")
def onCommand(sender, args):
if sender.hasPermission("utils.sudo"):
plugHeader(sender, "Sudo")
if not checkargs(sender, args, 2, -1):
return True
target = args[0]
cmd = " ".join(args[1:])
msg(sender, "Running '&e%s&r' as &3%s" % (cmd, target))
if cmd[0] == "/":
cmd = cmd[1:]
if target.lower() == "server" or target.lower() == "console":
runas(server.getConsoleSender(), cmd)
elif server.getPlayer(target):
runas(server.getPlayer(target), cmd)
else:
msg(sender, "&cPlayer %s not found!" % target)
else:
if target.lower() == "server" or target.lower() == "console":
runas(server.getConsoleSender(), "say %s" % cmd)
elif server.getPlayer(target):
server.getPlayer(target).chat(cmd)
else:
msg(sender, "&cPlayer %s not found!" % target)
else:
noperm(sender)
return True
# text things
@hook.command("rules")
def onCommand(sender, args):
if not checkargs(sender, args, 0, 0):
return True
arrow = u"\u2192"
plugHeader(sender, "Redstoner rules")
msg(sender, "&31 &7" + arrow + " &bMake use of common sense and respect.")
msg(sender, "&32 &7" + arrow + " &bDo NOT ask for promotion.")
msg(sender, "&33 &7" + arrow + " &bDo NOT use cheats in Survival worlds.")
msg(sender, "&34 &7" + arrow + " &bDo NOT spam entities or leave clocks running.")
msg(sender, "&35 &7" + arrow + " &bSwearing is okay, offending is NOT.")
msg(sender, "&36 &7" + arrow + " &bDo NOT build huge walls around your plot.")
msg(sender, "&37 &7" + arrow + " &bListen to the admins and mods, even if it is not in the rules.")
msg(sender, "&38 &7" + arrow + " &bOnly english in public chat.")
msg(sender, "&39 &7" + arrow + " &bEveryone can get punished, even admins.")
msg(sender, "&310 &7" + arrow + " &bSame rules for everyone.")
msg(sender, "&311 &7" + arrow + " &bNO OP items.")
msg(sender, "&312 &7" + arrow + " &bDo NOT trap other players.")
return True
@hook.command("history")
def onCOmmand(sender, args):
if not checkargs(sender, args, 0, 0):
return True
plugHeader(sender, "Redstoner history")
msg(sender, "")
msg(sender, " &2First, oliverissocool1 owned redstoner.com plus the server which usually had 10-15 players on.")
msg(sender, "")
msg(sender, " &2Oliver became lazy and thus moved ownership to oleerik, who was another admin there.")
msg(sender, "")
msg(sender, " &2Dico joined the server and later he became a moderator.")
msg(sender, "")
msg(sender, " &2But then oleerik also became lazy, lost interest and shut down the server.")
msg(sender, "")
msg(sender, " &2Some time later he offered dico to use the server and he was - of course - interested in it.")
msg(sender, "")
msg(sender, " &2The server did not have the old worlds and configuration anymore and it was down for a good while, so it was like a complete new server.")
msg(sender, "")
msg(sender, " &2He invited some friends to help him set up the server before opening it to the public (as his 'fan server').")
msg(sender, "")
msg(sender, " &2Redstone Sheep was one of these friends and made the website, he happened to become the guy who maintains the whole server.")
msg(sender, "")
msg(sender, " &2The server somtimes crashed or lost it's connection and we were not too happy plus oleerik was always paying for it, without using it himself.")
msg(sender, "")
msg(sender, " &2PanFritz first helped out by donating and then offered to host a physical server.")
msg(sender, "")
msg(sender, " &2We discussed a lot and moved everything, it worked very well.")
msg(sender, "")
msg(sender, " &2A month or two later, a new server was bought from donations and it took some time until the new machine was ready, but the move went quick and without much downtime.")
msg(sender, "")
msg(sender, " &2Another couple months later, the server underwent many major changes, this update was known as Redstoner 2.0 and vastly improved almost every aspect of the server.")
msg(sender, "")
msg(sender, " &2That's our story for now.")
return True
@hook.command("nick")
def onCommand(sender, args):
plugHeader(sender, "Nicknames")
msg(sender, "&31. &aYou need to be Donor or Trusted. &8&o(See /ranks)")
msg(sender, "&32. &aHas to begin with &nat least&3&o " + sender.getName()[:3] + "&a.")
msg(sender, "&33. &aMore characters are required when other players")
msg(sender, "&a begin with the same 3 letters.")
msg(sender, "&34. &aIt must not be longer than your name.")
msg(sender, "&a (e.g. No addons like '&3" + sender.getName() + "TheCoolOne&a'.)")
msg(sender, "&6Ask any staff to get your nickname. Requests are ignored when requirements are not covered. Be patient.")
return True
@hook.command("ranks")
def onCommand(sender, args):
if not checkargs(sender, args, 0, 0):
return True
plugHeader(sender, "Rank colours")
msg(sender, " &7Guest")
msg(sender, " &fMember")
msg(sender, " &aBuilder")
msg(sender, " &3Trusted")
msg(sender, " &cModerator")
msg(sender, " &4Admin")
plugHeader(sender, "Rank info")
msg(sender, " &oitalic &rnames are nicks. use &a/realname <nick>&r to check")
msg(sender, " &eDonator&r rank has <name> &e$&r")
msg(sender, " &eDonator+&r rank has <name> &e&l$&r")
msg(sender, " To get the &e$&r, see &a/donate&r for more info")
msg(sender, "")
return True
@hook.command("donate")
def onCommand(sender, args):
if not checkargs(sender, args, 0, 0):
return True
msg(sender, "")
plugHeader(sender, "Donations")
msg(sender, " &aWant to donate? Awesome!")
msg(sender, " &6all info is at &nredstoner.com/donate&r")
msg(sender, "")
return True
# debug and logging
@hook.command("pluginversions")
def onCommand(sender, args):
plugHeader(sender, "Plugin versions")
plugins = server.getPluginManager().getPlugins().tolist()
plugins.sort(key=lambda pl: pl.getName())
msg(sender, "&3Listing all " + str(len(plugins)) + " plugins and their version:")
for plugin in plugins:
msg(sender, "&6" + plugin.getName() + "&r: &e" + plugin.getDescription().getVersion())
return True

237
misc.py Normal file
View File

@@ -0,0 +1,237 @@
from helpers import *
import thread
#
# Welcome new players
#
@hook.event("player.PlayerJoinEvent", "monitor")
def onJoin(event):
player = event.getPlayer()
for item in player.getInventory():
if (item != None and item.getTypeId() == 175 and item.getDurability() > 5):
item.setDurability(0)
log("&cPlayer '%s' had 175:6 or higher in his inventory! Replaced with 175:0" % player.getName())
msg(player, " &a----------------------------------------------------")
msg(player, " &4&lWARNING: &cYou had 175:7 (invalid flower) in your inventory.")
msg(player, " &cThis crashes your client. We have replaced it with 175:0.")
msg(player, " &a----------------------------------------------------")
if not server.getOfflinePlayer(player.getName()).hasPlayedBefore():
broadcast("utils.greet_new", "")
broadcast("utils.greet_new", "&a&lPlease welcome &f" + player.getDisplayName() + " &a&lto Redstoner!")
broadcast("utils.greet_new", "")
# clear out some eventual crap before
msg(player, " \n \n \n \n \n \n \n \n \n \n \n \n ")
msg(player, " &4Welcome to the Redstoner Server!")
msg(player, " &6please make sure to read the info here:")
msg(player, " &6/The FAQ at /spawn")
msg(player, " &6/rules")
msg(player, " &6/ranks")
msg(player, " &6thank you and happy playing ;)")
msg(player, " \n ")
#
# /pyeval - run python ingame
#
def evalThread(sender, code):
try:
msg(sender, "%s" % unicode(eval(code)), False, "a")
except Exception, e:
msg(sender, "%s: %s" % (e.__class__.__name__, e), False, "c")
thread.exit()
@hook.command("pyeval")
def onPyevalCommand(sender, args):
if sender.hasPermission("utils.pyeval"):
if not checkargs(sender, args, 1, -1):
return True
msg(sender, "%s" % " ".join(args), False, "e")
try:
thread.start_new_thread(evalThread, (sender, " ".join(args)))
except Exception, e:
msg(sender, "&cInternal error: %s" % e)
else:
noperm(sender)
return True
#
# /sudo - execute command/chat *as* a player/console
#
@hook.command("sudo")
def onSudoCommand(sender, args):
if sender.hasPermission("utils.sudo"):
plugHeader(sender, "Sudo")
if not checkargs(sender, args, 2, -1):
return True
target = args[0]
cmd = " ".join(args[1:])
msg(sender, "Running '&e%s&r' as &3%s" % (cmd, target))
if cmd[0] == "/":
cmd = cmd[1:]
if target.lower() == "server" or target.lower() == "console":
runas(server.getConsoleSender(), cmd)
elif server.getPlayer(target):
runas(server.getPlayer(target), cmd)
else:
msg(sender, "&cPlayer %s not found!" % target)
else:
if target.lower() == "server" or target.lower() == "console":
runas(server.getConsoleSender(), "say %s" % cmd)
elif server.getPlayer(target):
server.getPlayer(target).chat(cmd)
else:
msg(sender, "&cPlayer %s not found!" % target)
else:
noperm(sender)
return True
#
# Various text commands
#
@hook.command("rules")
def onRulesCommand(sender, args):
if not checkargs(sender, args, 0, 0):
return True
arrow = u"\u2192"
plugHeader(sender, "Redstoner rules")
msg(sender, "&31 &7" + arrow + " &bMake use of common sense and respect.")
msg(sender, "&32 &7" + arrow + " &bDo NOT ask for promotion.")
msg(sender, "&33 &7" + arrow + " &bDo NOT use cheats in Survival worlds.")
msg(sender, "&34 &7" + arrow + " &bDo NOT spam entities or leave clocks running.")
msg(sender, "&35 &7" + arrow + " &bSwearing is okay, offending is NOT.")
msg(sender, "&36 &7" + arrow + " &bDo NOT build huge walls around your plot.")
msg(sender, "&37 &7" + arrow + " &bListen to the admins and mods, even if it is not in the rules.")
msg(sender, "&38 &7" + arrow + " &bOnly english in public chat.")
msg(sender, "&39 &7" + arrow + " &bEveryone can get punished, even admins.")
msg(sender, "&310 &7" + arrow + " &bSame rules for everyone.")
msg(sender, "&311 &7" + arrow + " &bNO OP items.")
msg(sender, "&312 &7" + arrow + " &bDo NOT trap other players.")
return True
@hook.command("history")
def onHistoryCommand(sender, args):
if not checkargs(sender, args, 0, 0):
return True
plugHeader(sender, "Redstoner history")
msg(sender, "")
msg(sender, " &2First, oliverissocool1 owned redstoner.com plus the server which usually had 10-15 players on.\n")
msg(sender, " &2Oliver became lazy and thus moved ownership to oleerik, who was another admin there.\n")
msg(sender, " &2Dico joined the server and later he became a moderator.\n")
msg(sender, " &2But then oleerik also became lazy, lost interest and shut down the server.\n")
msg(sender, " &2Some time later he offered dico to use the server and he was - of course - interested in it.\n")
msg(sender, " &2The server did not have the old worlds and configuration anymore and it was down for a good while, so it was like a complete new server.\n")
msg(sender, " &2He invited some friends to help him set up the server before opening it to the public (as his 'fan server').\n")
msg(sender, " &2Redstone Sheep was one of these friends and made the website, he happened to become the guy who maintains the whole server.\n")
msg(sender, " &2The server somtimes crashed or lost it's connection and we were not too happy plus oleerik was always paying for it, without using it himself.\n")
msg(sender, " &2PanFritz first helped out by donating and then offered to host a physical server.\n")
msg(sender, " &2We discussed a lot and moved everything, it worked very well.\n")
msg(sender, " &2A month or two later, a new server was bought from donations and it took some time until the new machine was ready, but the move went quick and without much downtime.\n")
msg(sender, " &2Another couple months later, the server underwent many major changes, this update was known as Redstoner 2.0 and vastly improved almost every aspect of the server.\n")
msg(sender, " &2That's our story for now.")
return True
@hook.command("nick")
def onNickCommand(sender, args):
plugHeader(sender, "Nicknames")
msg(sender, "&31. &aYou need to be Donor or Trusted. &8&o(See /ranks)")
msg(sender, "&32. &aHas to begin with &nat least&3&o " + sender.getName()[:3] + "&a.")
msg(sender, "&33. &aMore characters are required when other players")
msg(sender, "&a begin with the same 3 letters.")
msg(sender, "&34. &aIt must not be longer than your name.")
msg(sender, "&a (e.g. No addons like '&3" + sender.getName() + "TheCoolOne&a'.)")
msg(sender, "&6Ask any staff to get your nickname. Requests are ignored when requirements are not covered. Be patient.")
return True
@hook.command("ranks")
def onRanksCommand(sender, args):
if not checkargs(sender, args, 0, 0):
return True
plugHeader(sender, "Rank colours")
msg(sender, " &7Guest")
msg(sender, " &fMember")
msg(sender, " &aBuilder")
msg(sender, " &3Trusted")
msg(sender, " &cModerator")
msg(sender, " &4Admin")
plugHeader(sender, "Rank info")
msg(sender, " &oitalic &rnames are nicks. use &a/realname <nick>&r to check")
msg(sender, " &eDonator&r rank has <name> &e$&r")
msg(sender, " &eDonator+&r rank has <name> &e&l$&r")
msg(sender, " To get the &e$&r, see &a/donate&r for more info")
msg(sender, "")
return True
@hook.command("donate")
def onDonateCommand(sender, args):
if not checkargs(sender, args, 0, 0):
return True
msg(sender, "")
plugHeader(sender, "Donations")
msg(sender, " &aWant to donate? Awesome!")
msg(sender, " &6all info is at &nredstoner.com/donate&r")
msg(sender, "")
return True
#
# /pluginversions - print all plugins + versions; useful when updating plugins
#
@hook.command("pluginversions")
def onPluginversionsCommand(sender, args):
plugHeader(sender, "Plugin versions")
plugins = server.getPluginManager().getPlugins().tolist()
plugins.sort(key=lambda pl: pl.getName())
msg(sender, "&3Listing all " + str(len(plugins)) + " plugins and their version:")
for plugin in plugins:
msg(sender, "&6" + plugin.getName() + "&r: &e" + plugin.getDescription().getVersion())
return True
#
# Various command aliases
#
@hook.command("spawn")
def onSpawnCommand(sender, args):
warp(sender, args, "spawn")
return True
@hook.command("cr")
def onCrCommand(sender, args):
warp(sender, args, "cr")
return True
@hook.command("tr")
def onTrCommand(sender, args):
warp(sender, args, "tr")
return True
@hook.command("faq")
def onFaqCommand(sender, args):
warp(sender, args, "faq")
return True

View File

@@ -1,3 +1,4 @@
#pylint: disable=F0401
import java.lang.reflect.Method import java.lang.reflect.Method
import java.io.File import java.io.File
import java.net.URL import java.net.URL
@@ -7,6 +8,8 @@ from java.lang import Class
# hacky code to add mysql-connector to java's classpath ('classPathHack') # hacky code to add mysql-connector to java's classpath ('classPathHack')
# DO NOT TOUCH, it works, mkay?
jarfile = "lib/mysql-connector.jar" jarfile = "lib/mysql-connector.jar"
driver = "com.mysql.jdbc.Driver" driver = "com.mysql.jdbc.Driver"

View File

@@ -1,13 +1,8 @@
from helpers import * from helpers import *
import simplejson as json import simplejson as json
import time import time
import sys
import os
import thread import thread
# pythonloader changes this for some reason..
#sys.path += ['', '/usr/lib/python2.7', '/usr/lib/python2.7/plat-linux2', '/usr/lib/python2.7/lib-tk', '/usr/lib/python2.7/lib-old', '/usr/lib/python2.7/lib-dynload', '/usr/local/lib/python2.7/dist-packages', '/usr/lib/python2.7/dist-packages', '/usr/lib/pymodules/python2.7']
reports_filename = "plugins/redstoner-utils.py.dir/files/reports.json" reports_filename = "plugins/redstoner-utils.py.dir/files/reports.json"
time_format = "%Y.%m.%d %H:%M" time_format = "%Y.%m.%d %H:%M"
reports = [] reports = []
@@ -57,7 +52,7 @@ def saveReports():
error("Failed to write reports: " + str(e)) error("Failed to write reports: " + str(e))
@hook.command("rp") @hook.command("rp")
def onCommand(sender, args): def onRpCommand(sender, args):
if sender.hasPermission("utils.rp"): if sender.hasPermission("utils.rp"):
plugHeader(sender, "Reports") plugHeader(sender, "Reports")
if len(args) > 0: if len(args) > 0:
@@ -68,7 +63,7 @@ def onCommand(sender, args):
return True return True
try: try:
repid = int(args[1]) repid = int(args[1])
except: except ValueError:
msg(sender, "&cDoesn't look like &3" + args[1] + "&c is a valid number!") msg(sender, "&cDoesn't look like &3" + args[1] + "&c is a valid number!")
printHelp(sender) printHelp(sender)
return True return True
@@ -88,7 +83,7 @@ def onCommand(sender, args):
return True return True
@hook.command("report") @hook.command("report")
def onCommand(sender, args): def onReportCommand(sender, args):
plugHeader(sender, "Report") plugHeader(sender, "Report")
if not isPlayer(sender): if not isPlayer(sender):
msg(sender, "&conly players can do this") msg(sender, "&conly players can do this")
@@ -115,7 +110,7 @@ def onCommand(sender, args):
msg(sender, "&aReported \"&e" + text + "&a\"") msg(sender, "&aReported \"&e" + text + "&a\"")
return True return True
def checkForReports(foo, sender): # needs 2 args for unknown reason def checkForReports(): # needs 2 args for unknown reason
while True: while True:
for i in range(0, check_delay*2): for i in range(0, check_delay*2):
time.sleep(0.5) # check every 0.5 seconds if we should kill the thread time.sleep(0.5) # check every 0.5 seconds if we should kill the thread
@@ -127,7 +122,8 @@ def checkForReports(foo, sender): # needs 2 args for unknown reason
broadcast("utils.rp", "&aThere are %s pending reports!" % len(reports)) broadcast("utils.rp", "&aThere are %s pending reports!" % len(reports))
def stopChecking(): def stopChecking():
global check_reports
log("Ending reports reminder thread") log("Ending reports reminder thread")
check_reports = False check_reports = False
thread.start_new_thread(checkForReports, ("foo", "bar")) thread.start_new_thread(checkForReports, ())

View File

@@ -1,5 +1,4 @@
import simplejson as json import simplejson as json
import org.bukkit as bukkit
from time import time from time import time
from helpers import * from helpers import *
from random import randrange from random import randrange
@@ -28,15 +27,15 @@ def add_lol(txt):
lols.append(txt) lols.append(txt)
save_lols() save_lols()
def del_lol(id): def del_lol(lid):
lols.pop(id) lols.pop(lid)
save_lols() save_lols()
def print_lol(sender, id): def print_lol(sender, lid):
global last_msg global last_msg
if time() - last_msg > timeout: if time() - last_msg > timeout:
dispname = sender.getDisplayName() if isPlayer(sender) else sender.getName() dispname = sender.getDisplayName() if isPlayer(sender) else sender.getName()
broadcast("", "&8[&blol&8] &7%s&8: &e%s" % (dispname, lols[id])) broadcast("", "&8[&blol&8] &7%s&8: &e%s" % (dispname, lols[lid]))
last_msg = time() last_msg = time()
else: else:
plugHeader(sender, "SayLol") plugHeader(sender, "SayLol")
@@ -44,27 +43,30 @@ def print_lol(sender, id):
@hook.command("lol") @hook.command("lol")
def onCommand(sender, args): def onLolCommand(sender, args):
cmd = args[0] if len(args) > 0 else None cmd = args[0] if len(args) > 0 else None
if len(args) == 0: if len(args) == 0:
if sender.hasPermission("utils.lol"): if sender.hasPermission("utils.lol"):
print_lol(sender, randrange(len(lols))) print_lol(sender, randrange(len(lols)))
else: else:
noperm(sender) noperm(sender)
elif cmd == "id": elif cmd == "id":
if sender.hasPermission("utils.lol.id"): if sender.hasPermission("utils.lol.id"):
try: try:
i = int(args[1]) i = int(args[1])
print_lol(sender, i) print_lol(sender, i)
except Exception, e: except ValueError:
plugHeader(sender, "SayLol") plugHeader(sender, "SayLol")
msg(sender, "&cInvalid number '&e%s&c'" % args[1]) msg(sender, "&cInvalid number '&e%s&c'" % args[1])
else: else:
noperm(sender) noperm(sender)
elif cmd == "list": elif cmd == "list":
plugHeader(sender, "SayLol") plugHeader(sender, "SayLol")
for i in range(len(lols)): for i in range(len(lols)):
msg(sender, "&a%s: &e%s" % (str(i).rjust(3), lols[i])) msg(sender, "&a%s: &e%s" % (str(i).rjust(3), lols[i]))
elif cmd == "add": elif cmd == "add":
if sender.hasPermission("utils.lol.modify"): if sender.hasPermission("utils.lol.modify"):
plugHeader(sender, "SayLol") plugHeader(sender, "SayLol")
@@ -72,6 +74,7 @@ def onCommand(sender, args):
msg(sender, "&aNew lol message added!") msg(sender, "&aNew lol message added!")
else: else:
noperm(sender) noperm(sender)
elif cmd == "del": elif cmd == "del":
if sender.hasPermission("utils.lol.modify"): if sender.hasPermission("utils.lol.modify"):
plugHeader(sender, "SayLol") plugHeader(sender, "SayLol")
@@ -79,8 +82,9 @@ def onCommand(sender, args):
i = int(args[1]) i = int(args[1])
del_lol(i) del_lol(i)
msg(sender, "&aLol message &e#%s&a deleted!" % i) msg(sender, "&aLol message &e#%s&a deleted!" % i)
except Exception, e: except ValueError:
msg(sender, "&cInvalid number '&e%s&c'" % args[1]) msg(sender, "&cInvalid number '&e%s&c'" % args[1])
else: else:
plugHeader(sender, "SayLol") plugHeader(sender, "SayLol")
msg(sender, "&a/lol &eSay random message") msg(sender, "&a/lol &eSay random message")

View File

@@ -1,5 +1,6 @@
#pylint: disable=F0401
import org.bukkit as bukkit import org.bukkit as bukkit
from helpers import * from helpers import msg
@hook.event("player.PlayerInteractEvent", "monitor") @hook.event("player.PlayerInteractEvent", "monitor")
def onInteract(event): def onInteract(event):

View File

@@ -1,4 +1,4 @@
import org.bukkit as bukkit #pylint: disable=F0401
import org.bukkit.event.block.BlockPlaceEvent as BlockPlaceEvent import org.bukkit.event.block.BlockPlaceEvent as BlockPlaceEvent
from helpers import * from helpers import *

View File

@@ -1,3 +1,4 @@
#pylint: disable=F0401
import mysqlhack import mysqlhack
import thread import thread
from re import match from re import match
@@ -41,18 +42,13 @@ def generate_token(length):
token += vows[randrange(5)] token += vows[randrange(5)]
return token return token
def set_token(uuid):
token = generate_token(6)
# REPLACE INTO website.register_token uuid={uuid}, token={token};
return token
def get_token(uuid): def get_token(uuid):
# ae795aa86327408e92ab25c8a59f3ba1 # ae795aa86327408e92ab25c8a59f3ba1
results = mysql_query("SELECT DISTINCT `token`, `email` FROM register_tokens WHERE `uuid` = ? LIMIT 1", (uuid,)) results = mysql_query("SELECT DISTINCT `token`, `email` FROM register_tokens WHERE `uuid` = ? LIMIT 1", (uuid,))
return results[0] if len(results) == 1 else None return results[0] if len(results) == 1 else None
def token_command(sender, args, foo): def token_command(sender):
plugHeader(sender, "Website Token") plugHeader(sender, "Website Token")
if isPlayer(sender): if isPlayer(sender):
try: try:
@@ -68,13 +64,13 @@ def token_command(sender, args, foo):
else: else:
msg(sender, "&cThis is only for players..") msg(sender, "&cThis is only for players..")
def tokengen_command(sender, args, foo): def tokengen_command(sender, args):
plugHeader(sender, "Website Token") plugHeader(sender, "Website Token")
if isPlayer(sender): if isPlayer(sender):
if checkargs(sender, args, 1, -1): if checkargs(sender, args, 1, -1):
# email regex, needs something followed by an @ followed by something # email regex, needs something followed by an @ followed by something
mail = " ".join(args) # email may contain spaces mail = " ".join(args) # email may contain spaces
if match("^.+@(.+\..{2,}|\[[0-9a-fA-F:.]+\])$", mail) != None: if match("^.+@(.+\\..{2,}|\\[[0-9a-fA-F:.]+\\])$", mail) != None:
token = generate_token(6) token = generate_token(6)
uuid = sender.getUniqueId().toString().replace("-", "") uuid = sender.getUniqueId().toString().replace("-", "")
try: try:
@@ -94,13 +90,13 @@ def tokengen_command(sender, args, foo):
@hook.command("token") @hook.command("token")
def onCommand(sender, args): def onTokenCommand(sender, args):
thread.start_new_thread(token_command, (sender, args, "foo")) thread.start_new_thread(token_command, (sender,))
return True return True
@hook.command("tokengen") @hook.command("tokengen")
def onCommand(sender, args): def onTokengenCommand(sender, args):
thread.start_new_thread(tokengen_command, (sender, args, "foo")) thread.start_new_thread(tokengen_command, (sender, args))
return True return True