HUGE code cleanup
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
#pylint: disable=F0401
|
||||
from helpers import *
|
||||
import org.bukkit as bukkit
|
||||
|
||||
ac_permission = "utils.ac"
|
||||
ac_key = ","
|
||||
@@ -17,7 +17,7 @@ def adminchat(sender, msg):
|
||||
|
||||
# ac toggle
|
||||
@hook.command("act")
|
||||
def onCommand(sender,args):
|
||||
def onActCommand(sender, args):
|
||||
if sender.hasPermission(ac_permission):
|
||||
p = sender.getName()
|
||||
if p in ac_toggle_list:
|
||||
@@ -32,7 +32,7 @@ def onCommand(sender,args):
|
||||
|
||||
|
||||
@hook.command("ac")
|
||||
def onCommand(sender, args):
|
||||
def onAcCommand(sender, args):
|
||||
if sender.hasPermission(ac_permission):
|
||||
if not checkargs(sender, args, 1, -1):
|
||||
return True
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
#pylint: disable=F0401
|
||||
from helpers import *
|
||||
import simplejson as json
|
||||
import org.bukkit as bukkit
|
||||
|
||||
chatgroups_filename = "plugins/redstoner-utils.py.dir/files/chatgroups.json"
|
||||
groups = {}
|
||||
@@ -13,7 +13,7 @@ except Exception, e:
|
||||
error("Failed to load chatgroups: %s" % e)
|
||||
|
||||
@hook.command("chatgroup")
|
||||
def onCommand(sender, args):
|
||||
def onChatgroupCommand(sender, args):
|
||||
try:
|
||||
plugHeader(sender, "ChatGroups")
|
||||
if len(args) == 1 and args[0] == "leave":
|
||||
@@ -30,7 +30,8 @@ def onCommand(sender, args):
|
||||
msg(sender, "&aCurrent chatgroup: %s" % group)
|
||||
users = []
|
||||
for user, ugroup in groups.iteritems():
|
||||
if ugroup == group: users += [user]
|
||||
if ugroup == group:
|
||||
users += [user]
|
||||
msg(sender, "&aUsers in this group:")
|
||||
msg(sender, "&a%s" % ", ".join(users))
|
||||
else:
|
||||
@@ -49,7 +50,7 @@ def onCommand(sender, args):
|
||||
error(e)
|
||||
|
||||
@hook.command("cgt")
|
||||
def onCommand(sender,args):
|
||||
def onCgtCommand(sender, args):
|
||||
p = sender.getName()
|
||||
if p in cg_toggle_list:
|
||||
cg_toggle_list.remove(p)
|
||||
@@ -86,11 +87,11 @@ def saveGroups():
|
||||
@hook.event("player.PlayerChatEvent", "normal")
|
||||
def onChat(event):
|
||||
sender = event.getPlayer()
|
||||
msg = event.getMessage()
|
||||
msge = event.getMessage()
|
||||
if not event.isCancelled():
|
||||
if msg[:len(cg_key)] == cg_key and sender.getName() in groups.keys():
|
||||
groupchat(sender, msg[1:])
|
||||
if msge[:len(cg_key)] == cg_key and sender.getName() in groups.keys():
|
||||
groupchat(sender, msge[1:])
|
||||
event.setCancelled(True)
|
||||
elif sender.getName() in cg_toggle_list:
|
||||
groupchat(sender, msg)
|
||||
groupchat(sender, msge)
|
||||
event.setCancelled(True)
|
||||
|
||||
29
helpers.py
29
helpers.py
@@ -1,10 +1,10 @@
|
||||
#pylint: disable=F0401
|
||||
from re import sub
|
||||
import org.bukkit as bukkit
|
||||
import org.bukkit.Location as Location
|
||||
import org.bukkit.entity.Player as Player
|
||||
import org.bukkit.event.player.PlayerTeleportEvent.TeleportCause as TeleportCause
|
||||
import org.bukkit.block as block
|
||||
from java.util.logging import Level
|
||||
import org.bukkit.block as bblock
|
||||
|
||||
server = bukkit.Bukkit.getServer()
|
||||
|
||||
@@ -14,7 +14,7 @@ def log(text):
|
||||
def error(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 basecolor:
|
||||
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.
|
||||
# bukkit only works with permissibles that are subscribed to perm
|
||||
def broadcast(perm, text):
|
||||
try:
|
||||
text = colorify(text)
|
||||
for recipient in server.getOnlinePlayers().tolist() + [server.getConsoleSender()]:
|
||||
(not perm or recipient.hasPermission(perm)) and msg(recipient, text)
|
||||
except Exception, e:
|
||||
error(e)
|
||||
|
||||
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()
|
||||
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)
|
||||
else:
|
||||
safetp(player, world, x, y+1, z, yaw, pitch)
|
||||
@@ -53,16 +50,16 @@ def runas(player, cmd):
|
||||
def isPlayer(sender):
|
||||
return (isinstance(sender, Player))
|
||||
|
||||
def checkargs(sender, args, min, max):
|
||||
if not (len(args) >= min and (max < 0 or len(args) <= max)):
|
||||
if min == max:
|
||||
msg(sender, "&cNeeds " + str(min) + " arguments!")
|
||||
def checkargs(sender, args, amin, amax):
|
||||
if not (len(args) >= amin and (amax < 0 or len(args) <= amax)):
|
||||
if amin == amax:
|
||||
msg(sender, "&cNeeds " + str(amin) + " arguments!")
|
||||
return False
|
||||
elif max < 0:
|
||||
msg(sender, "&cNeeds at least " + str(min) + " arguments!")
|
||||
elif amax < 0:
|
||||
msg(sender, "&cNeeds at least " + str(amin) + " arguments!")
|
||||
return False
|
||||
else:
|
||||
msg(sender, "&cNeeds " + str(min) + " to " + str(max) + " arguments!")
|
||||
msg(sender, "&cNeeds " + str(amin) + " to " + str(amax) + " arguments!")
|
||||
return False
|
||||
return True
|
||||
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
#pylint: disable=F0401
|
||||
import org.bukkit as bukkit
|
||||
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]))
|
||||
|
||||
@hook.command("lagchunks")
|
||||
def onCommand(sender, args):
|
||||
def onLagchunksCommand(sender, args):
|
||||
try:
|
||||
if sender.hasPermission("utils.lagchunks"):
|
||||
plugHeader(sender, "Lagchunks")
|
||||
|
||||
243
main.py
243
main.py
@@ -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']
|
||||
|
||||
try:
|
||||
from helpers import *
|
||||
from helpers import log, error
|
||||
except Exception, e:
|
||||
print("[RedstonerUtils] ERROR: Failed to import helpers: %s" % e)
|
||||
|
||||
log("Loading RedstonerUtils...")
|
||||
|
||||
# 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:
|
||||
try:
|
||||
__import__(module)
|
||||
mod[module] = __import__(module)
|
||||
log("Module %s loaded." % module)
|
||||
except Exception, e:
|
||||
error("Failed to import module %s: '%s'" % (module, e))
|
||||
|
||||
|
||||
import thread
|
||||
import org.bukkit.entity.Player as Player
|
||||
|
||||
|
||||
@hook.enable
|
||||
def onEnable():
|
||||
log("RedstonerUtils enabled!")
|
||||
|
||||
@hook.disable
|
||||
def onDisable():
|
||||
reports.stopChecking()
|
||||
mod["reports"].stopChecking()
|
||||
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<o 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
237
misc.py
Normal 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<o 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
|
||||
@@ -1,3 +1,4 @@
|
||||
#pylint: disable=F0401
|
||||
import java.lang.reflect.Method
|
||||
import java.io.File
|
||||
import java.net.URL
|
||||
@@ -7,6 +8,8 @@ from java.lang import Class
|
||||
|
||||
|
||||
# hacky code to add mysql-connector to java's classpath ('classPathHack')
|
||||
# DO NOT TOUCH, it works, mkay?
|
||||
|
||||
jarfile = "lib/mysql-connector.jar"
|
||||
driver = "com.mysql.jdbc.Driver"
|
||||
|
||||
|
||||
16
reports.py
16
reports.py
@@ -1,13 +1,8 @@
|
||||
from helpers import *
|
||||
import simplejson as json
|
||||
import time
|
||||
import sys
|
||||
import os
|
||||
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"
|
||||
time_format = "%Y.%m.%d %H:%M"
|
||||
reports = []
|
||||
@@ -57,7 +52,7 @@ def saveReports():
|
||||
error("Failed to write reports: " + str(e))
|
||||
|
||||
@hook.command("rp")
|
||||
def onCommand(sender, args):
|
||||
def onRpCommand(sender, args):
|
||||
if sender.hasPermission("utils.rp"):
|
||||
plugHeader(sender, "Reports")
|
||||
if len(args) > 0:
|
||||
@@ -68,7 +63,7 @@ def onCommand(sender, args):
|
||||
return True
|
||||
try:
|
||||
repid = int(args[1])
|
||||
except:
|
||||
except ValueError:
|
||||
msg(sender, "&cDoesn't look like &3" + args[1] + "&c is a valid number!")
|
||||
printHelp(sender)
|
||||
return True
|
||||
@@ -88,7 +83,7 @@ def onCommand(sender, args):
|
||||
return True
|
||||
|
||||
@hook.command("report")
|
||||
def onCommand(sender, args):
|
||||
def onReportCommand(sender, args):
|
||||
plugHeader(sender, "Report")
|
||||
if not isPlayer(sender):
|
||||
msg(sender, "&conly players can do this")
|
||||
@@ -115,7 +110,7 @@ def onCommand(sender, args):
|
||||
msg(sender, "&aReported \"&e" + text + "&a\"")
|
||||
return True
|
||||
|
||||
def checkForReports(foo, sender): # needs 2 args for unknown reason
|
||||
def checkForReports(): # needs 2 args for unknown reason
|
||||
while True:
|
||||
for i in range(0, check_delay*2):
|
||||
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))
|
||||
|
||||
def stopChecking():
|
||||
global check_reports
|
||||
log("Ending reports reminder thread")
|
||||
check_reports = False
|
||||
|
||||
thread.start_new_thread(checkForReports, ("foo", "bar"))
|
||||
thread.start_new_thread(checkForReports, ())
|
||||
|
||||
20
saylol.py
20
saylol.py
@@ -1,5 +1,4 @@
|
||||
import simplejson as json
|
||||
import org.bukkit as bukkit
|
||||
from time import time
|
||||
from helpers import *
|
||||
from random import randrange
|
||||
@@ -28,15 +27,15 @@ def add_lol(txt):
|
||||
lols.append(txt)
|
||||
save_lols()
|
||||
|
||||
def del_lol(id):
|
||||
lols.pop(id)
|
||||
def del_lol(lid):
|
||||
lols.pop(lid)
|
||||
save_lols()
|
||||
|
||||
def print_lol(sender, id):
|
||||
def print_lol(sender, lid):
|
||||
global last_msg
|
||||
if time() - last_msg > timeout:
|
||||
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()
|
||||
else:
|
||||
plugHeader(sender, "SayLol")
|
||||
@@ -44,27 +43,30 @@ def print_lol(sender, id):
|
||||
|
||||
|
||||
@hook.command("lol")
|
||||
def onCommand(sender, args):
|
||||
def onLolCommand(sender, args):
|
||||
cmd = args[0] if len(args) > 0 else None
|
||||
if len(args) == 0:
|
||||
if sender.hasPermission("utils.lol"):
|
||||
print_lol(sender, randrange(len(lols)))
|
||||
else:
|
||||
noperm(sender)
|
||||
|
||||
elif cmd == "id":
|
||||
if sender.hasPermission("utils.lol.id"):
|
||||
try:
|
||||
i = int(args[1])
|
||||
print_lol(sender, i)
|
||||
except Exception, e:
|
||||
except ValueError:
|
||||
plugHeader(sender, "SayLol")
|
||||
msg(sender, "&cInvalid number '&e%s&c'" % args[1])
|
||||
else:
|
||||
noperm(sender)
|
||||
|
||||
elif cmd == "list":
|
||||
plugHeader(sender, "SayLol")
|
||||
for i in range(len(lols)):
|
||||
msg(sender, "&a%s: &e%s" % (str(i).rjust(3), lols[i]))
|
||||
|
||||
elif cmd == "add":
|
||||
if sender.hasPermission("utils.lol.modify"):
|
||||
plugHeader(sender, "SayLol")
|
||||
@@ -72,6 +74,7 @@ def onCommand(sender, args):
|
||||
msg(sender, "&aNew lol message added!")
|
||||
else:
|
||||
noperm(sender)
|
||||
|
||||
elif cmd == "del":
|
||||
if sender.hasPermission("utils.lol.modify"):
|
||||
plugHeader(sender, "SayLol")
|
||||
@@ -79,8 +82,9 @@ def onCommand(sender, args):
|
||||
i = int(args[1])
|
||||
del_lol(i)
|
||||
msg(sender, "&aLol message &e#%s&a deleted!" % i)
|
||||
except Exception, e:
|
||||
except ValueError:
|
||||
msg(sender, "&cInvalid number '&e%s&c'" % args[1])
|
||||
|
||||
else:
|
||||
plugHeader(sender, "SayLol")
|
||||
msg(sender, "&a/lol &eSay random message")
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
#pylint: disable=F0401
|
||||
import org.bukkit as bukkit
|
||||
from helpers import *
|
||||
from helpers import msg
|
||||
|
||||
@hook.event("player.PlayerInteractEvent", "monitor")
|
||||
def onInteract(event):
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import org.bukkit as bukkit
|
||||
#pylint: disable=F0401
|
||||
import org.bukkit.event.block.BlockPlaceEvent as BlockPlaceEvent
|
||||
from helpers import *
|
||||
|
||||
|
||||
20
webtoken.py
20
webtoken.py
@@ -1,3 +1,4 @@
|
||||
#pylint: disable=F0401
|
||||
import mysqlhack
|
||||
import thread
|
||||
from re import match
|
||||
@@ -41,18 +42,13 @@ def generate_token(length):
|
||||
token += vows[randrange(5)]
|
||||
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):
|
||||
# ae795aa86327408e92ab25c8a59f3ba1
|
||||
results = mysql_query("SELECT DISTINCT `token`, `email` FROM register_tokens WHERE `uuid` = ? LIMIT 1", (uuid,))
|
||||
return results[0] if len(results) == 1 else None
|
||||
|
||||
|
||||
def token_command(sender, args, foo):
|
||||
def token_command(sender):
|
||||
plugHeader(sender, "Website Token")
|
||||
if isPlayer(sender):
|
||||
try:
|
||||
@@ -68,13 +64,13 @@ def token_command(sender, args, foo):
|
||||
else:
|
||||
msg(sender, "&cThis is only for players..")
|
||||
|
||||
def tokengen_command(sender, args, foo):
|
||||
def tokengen_command(sender, args):
|
||||
plugHeader(sender, "Website Token")
|
||||
if isPlayer(sender):
|
||||
if checkargs(sender, args, 1, -1):
|
||||
# email regex, needs something followed by an @ followed by something
|
||||
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)
|
||||
uuid = sender.getUniqueId().toString().replace("-", "")
|
||||
try:
|
||||
@@ -94,13 +90,13 @@ def tokengen_command(sender, args, foo):
|
||||
|
||||
|
||||
@hook.command("token")
|
||||
def onCommand(sender, args):
|
||||
thread.start_new_thread(token_command, (sender, args, "foo"))
|
||||
def onTokenCommand(sender, args):
|
||||
thread.start_new_thread(token_command, (sender,))
|
||||
return True
|
||||
|
||||
@hook.command("tokengen")
|
||||
def onCommand(sender, args):
|
||||
thread.start_new_thread(tokengen_command, (sender, args, "foo"))
|
||||
def onTokengenCommand(sender, args):
|
||||
thread.start_new_thread(tokengen_command, (sender, args))
|
||||
return True
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user