diff options
-rw-r--r-- | README.md | 27 | ||||
-rw-r--r-- | abot.py | 8 | ||||
-rw-r--r-- | adminchat.py | 6 | ||||
-rw-r--r-- | chatgroups.py | 14 | ||||
-rw-r--r-- | cycle.py | 20 | ||||
-rw-r--r-- | damnspam.py | 18 | ||||
-rw-r--r-- | forcefield.py | 38 | ||||
-rw-r--r-- | helpers.py | 32 | ||||
-rw-r--r-- | lagchunks.py | 26 | ||||
-rw-r--r-- | main.py | 8 | ||||
-rw-r--r-- | mentio.py | 14 | ||||
-rw-r--r-- | misc.py | 23 | ||||
-rw-r--r-- | motd.py | 12 | ||||
-rw-r--r-- | reports.py | 54 | ||||
-rw-r--r-- | saylol.py | 21 | ||||
-rw-r--r-- | skullclick.py | 2 | ||||
-rw-r--r-- | spawnplayer.py | 3 | ||||
-rw-r--r-- | tilehelper.py | 13 | ||||
-rw-r--r-- | webtoken.py | 16 |
19 files changed, 221 insertions, 134 deletions
@@ -151,6 +151,33 @@ Use 2 spaces to indent. Always use double-quotes! Only use single-quotes when the string contains double-quotes that would need to be escaped. +## Capitalization +Do not use camelCase for variable or function names! Use under_score naming. + +## Aligning variable assignments +In case you have multiple variable assignments, align the equals sign: + +```Python +# bad +foo = 1 +foobar = 2 +a = 3 + +# good +foo = 1 +foobar = 2 +a = 3 +``` + +## Vertical spacing +Use at least one space left and one space right to equals signs, and one space right to colons. + +## Horizontal spacing +Leave two empty lines before function definitions. In case you need to use `@hook.something`, add the two lines before that, directly followed by the definition. + +## Meaningful names +Give function and variable names meaningful names. If you want to shorten long names, that's fine, but leave a comment on assigment with the actual meaning. + ## Comments Comments are good! Please comment everything that's non-obious or makes it easier to understand @@ -32,8 +32,8 @@ def list_answers(sender): @hook.command("abot") -def onAbotCommand(sender, args): - plugHeader(sender, "AnswerBot") +def on_abot_command(sender, args): + plugin_header(sender, "AnswerBot") if sender.hasPermission("utils.abot.admin"): if not args: msg(sender, "&2/abot list &eList all answers and their regex") @@ -51,14 +51,14 @@ def onAbotCommand(sender, args): @hook.event("player.AsyncPlayerChatEvent", "low") -def onChat(event): +def on_chat(event): sender = event.getPlayer() message = event.getMessage().lower() for answer in answers: for regex in answer["regex"]: if regex.search(message): if answer["hide-perm"] and not sender.hasPermission(answer["hide-perm"]): - plugHeader(sender, "AnswerBot") + plugin_header(sender, "AnswerBot") msg(sender, answer["message"] + "\n ") event.setCancelled(True) log("(hidden) %s: '%s'" % (sender.getName(), message)) diff --git a/adminchat.py b/adminchat.py index 9a7b299..e57108c 100644 --- a/adminchat.py +++ b/adminchat.py @@ -17,7 +17,7 @@ def adminchat(sender, msg): # ac toggle @hook.command("act") -def onActCommand(sender, args): +def on_act_command(sender, args): if sender.hasPermission(ac_permission): p = sender.getName() if p in ac_toggle_list: @@ -32,7 +32,7 @@ def onActCommand(sender, args): @hook.command("ac") -def onAcCommand(sender, args): +def on_ac_command(sender, args): if sender.hasPermission(ac_permission): if not checkargs(sender, args, 1, -1): return True @@ -43,7 +43,7 @@ def onAcCommand(sender, args): @hook.event("player.AsyncPlayerChatEvent", "low") -def onChat(event): +def on_chat(event): sender = event.getPlayer() msg = event.getMessage() if sender.hasPermission(ac_permission) and not event.isCancelled(): diff --git a/chatgroups.py b/chatgroups.py index 172b818..d5c59df 100644 --- a/chatgroups.py +++ b/chatgroups.py @@ -15,16 +15,16 @@ except Exception, e: @hook.command("chatgroup") -def onChatgroupCommand(sender, args): +def on_chatgroup_command(sender, args): try: - plugHeader(sender, "ChatGroups") + plugin_header(sender, "ChatGroups") sender_id = str(sender.getUniqueId()) if len(args) == 1 and args[0] == "leave": if sender_id in groups.keys(): groupchat(sender, "left the group", True) group = groups[sender_id] del(groups[sender_id]) - saveGroups() + save_groups() else: msg(sender, "&aYou can't leave no group, derp!") elif len(args) == 1 and args[0] == "info": @@ -44,7 +44,7 @@ def onChatgroupCommand(sender, args): elif len(args) == 2 and args[0] == "join": groups[sender_id] = args[1] groupchat(sender, "joined the group", True) - saveGroups() + save_groups() msg(sender, "&aYour chatgroup is set to '%s'" % args[1]) msg(sender, "&aUse chat like '&e%s<message>' to send messages to this group." % cg_key) else: @@ -56,7 +56,7 @@ def onChatgroupCommand(sender, args): @hook.command("cgt") -def onCgtCommand(sender, args): +def on_cgt_command(sender, args): p = str(sender.getUniqueId()) if p in cg_toggle_list: cg_toggle_list.remove(p) @@ -85,7 +85,7 @@ def groupchat(sender, message, ann=False): # error(e) -def saveGroups(): +def save_groups(): try: chatgroups_file = open(chatgroups_filename, "w") chatgroups_file.write(json.dumps(groups)) @@ -95,7 +95,7 @@ def saveGroups(): @hook.event("player.AsyncPlayerChatEvent", "normal") -def onChat(event): +def on_chat(event): sender = event.getPlayer() msge = event.getMessage() if not event.isCancelled(): @@ -10,9 +10,9 @@ except Exception, e: @hook.command("cycle") -def onCyclerCommand(sender, args): - plugHeader(sender, "Cycle") - if not isPlayer(sender): +def on_cycler_command(sender, args): + plugin_header(sender, "Cycle") + if not is_player(sender): msg(sender, "&conly players can do this") return True if not len(args) == 1: @@ -25,14 +25,14 @@ def onCyclerCommand(sender, args): if cmd == "on": if nop: no_cyclers.remove(pid) - saveCyclers() + save_cyclers() msg(sender, "&aTurned &2on&a inventory cycling!") else: msg(sender, "&aAlready turned on.") elif cmd == "off": if not nop: no_cyclers.append(pid) - saveCyclers() + save_cyclers() msg(sender, "&aTurned &coff&a inventory cycling!") else: msg(sender, "&aAlready turned off.") @@ -42,15 +42,15 @@ def onCyclerCommand(sender, args): @hook.event("player.PlayerItemHeldEvent", "normal") -def onSlotChange(event): +def on_slot_change(event): player = event.getPlayer() if str(player.getGameMode()) == "CREATIVE" and str(player.getUniqueId()) not in no_cyclers and not player.isSneaking(): prev_slot = event.getPreviousSlot() new_slot = event.getNewSlot() if (prev_slot == 0 and new_slot == 8): # left -> right - doCycle(player, True) + do_cycle(player, True) elif (prev_slot == 8 and new_slot == 0): # right -> left - doCycle(player, False) + do_cycle(player, False) # ITEM SLOTS # #_____________________________ @@ -60,7 +60,7 @@ def onSlotChange(event): #_____________________________ # | 0| 1| 2| 3| 4| 5| 6| 7| 8| -def doCycle(player, down): +def do_cycle(player, down): inv = player.getInventory() items = inv.getContents() shift = -9 if down else 9 @@ -72,7 +72,7 @@ def doCycle(player, down): break inv.setContents(items) -def saveCyclers(): +def save_cyclers(): try: chatgroups_file = open(cyclers_file, "w") chatgroups_file.write(json.dumps(no_cyclers)) diff --git a/damnspam.py b/damnspam.py index 0b10df7..9f3b558 100644 --- a/damnspam.py +++ b/damnspam.py @@ -14,7 +14,7 @@ except Exception, e: error("Failed to load buttons and levers: %s" % e) -def saveInputs(): +def save_inputs(): try: spam_file = open(spam_filename, "w") spam_file.write(json.dumps(inputs)) @@ -38,10 +38,10 @@ def add_input(creator, block, timeout_off, timeout_on): @hook.command("damnspam") -def onDammnspamCommand(sender, args): +def on_dammnspam_command(sender, args): global inputs - plugHeader(sender, "DamnSpam") + plugin_header(sender, "DamnSpam") if len(args) in [1,2]: if not str(sender.getGameMode()) == "CREATIVE": @@ -90,7 +90,7 @@ def onDammnspamCommand(sender, args): # add block to inputs add_input(sender, target, timeout_off, timeout_on) - saveInputs() + save_inputs() msg(sender, "&aSuccessfully set a timeout for this %s." % ttype.lower()) return True @@ -100,7 +100,7 @@ def onDammnspamCommand(sender, args): @hook.event("block.BlockBreakEvent", "normal") -def onBreak(event): +def on_block_break(event): global inputs sender = event.getPlayer() @@ -108,10 +108,10 @@ def onBreak(event): if str(block.getType()) in accepted_inputs and not event.isCancelled(): pos_str = location_str(block) if inputs.get(pos_str): - plugHeader(sender, "DamnSpam") + plugin_header(sender, "DamnSpam") if sender.isSneaking(): inputs.pop(pos_str) # remove - saveInputs() + save_inputs() msg(sender, "&eSuccessfully removed the input!") return True else: @@ -122,7 +122,7 @@ def onBreak(event): @hook.event("player.PlayerInteractEvent", "normal") -def onInteract(event): +def on_interact(event): if (str(event.getAction()) == "RIGHT_CLICK_BLOCK") and not event.isCancelled(): sender = event.getPlayer() block = event.getClickedBlock() @@ -134,7 +134,7 @@ def onInteract(event): checktime = data["timeout_on"] if powered else data["timeout_off"] if data["last_time"] + checktime > now(): event.setCancelled(True) - plugHeader(sender, "DamnSpam") + plugin_header(sender, "DamnSpam") msg(sender, "&cThis %s has a timeout of %ss." % (btype, checktime)) else: inputs[pos_str]["last_time"] = round(now(), 2)
\ No newline at end of file diff --git a/forcefield.py b/forcefield.py index a6e8107..5de2047 100644 --- a/forcefield.py +++ b/forcefield.py @@ -8,9 +8,10 @@ fd = 4 # forcefield distance forcefield_toggle = [] forcefield_whitelist = {} + @hook.command("forcefield") -def onForceFieldCommand(sender, args): - if not isPlayer(sender) or not sender.hasPermission(forcefield_permissions[0]): +def on_forcefield_command(sender, args): + if not is_player(sender) or not sender.hasPermission(forcefield_permissions[0]): noperm(sender) return True sender_id = str(sender.getUniqueId()) @@ -33,6 +34,7 @@ def onForceFieldCommand(sender, args): invalid_syntax(sender) return True + def whitelist_add(sender, sender_id, add, players): if not players: msg(sender, "%s &cGive space-separated playernames." % forcefield_prefix) @@ -61,7 +63,7 @@ def whitelist_add(sender, sender_id, add, players): forcefield_whitelist[sender_id].remove(uid) msg(sender, "%s &cRemoved %s from your forcefield whitelist." % (forcefield_prefix, pname)) if online == True: - msg(player, "%s %s &cRemoved you from his forcefield whitelist." % (forcefield_prefix, sender.getDisplayName())) + msg(player, "%s %s &cRemoved you from his forcefield whitelist." % (forcefield_prefix, sender.getDisplayName())) elif add == True: msg(sender, "%s &c%s &cWas already in your forcefield whitelist." % (forcefield_prefix, pname)) else: @@ -69,6 +71,7 @@ def whitelist_add(sender, sender_id, add, players): else: msg(sender, "%s &cplayer %s &cwas not found." % (forcefield_prefix, name)) + def whitelist_list(sender, sender_id): msg(sender, "%s &aForceField Whitelist:" % forcefield_prefix) if not sender_id in forcefield_whitelist or len(forcefield_whitelist[sender_id]) == 0: @@ -79,6 +82,7 @@ def whitelist_list(sender, sender_id): c+=1 msg(sender, "&a %s. &f%s" % (c, server.getPlayer(idToPlayer(uid)).getDisplayName())) + def whitelist_clear(sender, sender_id): if len(forcefield_whitelist[sender_id]) == 0: msg(sender, "%s &cYou had no players whitelisted." % forcefield_prefix) @@ -86,6 +90,7 @@ def whitelist_clear(sender, sender_id): forcefield_whitelist[sender_id] = [] msg(sender, "%s &aForceField Whitelist cleared." % forcefield_prefix) + def forcefield_help(sender): msg(sender, "%s &a&l/ForceField Help: \n&aYou can use the forcefield to keep players on distance." % forcefield_prefix) msg(sender, "&2Commands:") @@ -96,6 +101,7 @@ def forcefield_help(sender): msg(sender, "&a5. &6/ff wl &oadd <players> &a: aliases: &o+") msg(sender, "&a6. &6/ff wl &oremove <players> &a: aliases: &odelete, rem, del, -") + def toggle_forcefield(sender, sender_id): if sender_id in forcefield_toggle: forcefield_toggle.remove(sender_id) @@ -104,13 +110,16 @@ def toggle_forcefield(sender, sender_id): forcefield_toggle.append(sender_id) msg(sender, "%s &aForceField toggle: &2ON" % forcefield_prefix) + def invalid_syntax(sender): - msg(sender, "%s &cInvalid syntax. Use &o/ff ? &cfor more info." % forcefield_prefix) + msg(sender, "%s &cInvalid syntax. Use &o/ff ? &cfor more info." % forcefield_prefix) + #--------------------------------------------------------------------------------------------------------# + @hook.event("player.PlayerMoveEvent") -def onMove(event): +def on_move(event): player = event.getPlayer() player_id = str(player.getUniqueId()) if player_id in forcefield_toggle: #player has forcefield, entity should be launched @@ -118,21 +127,22 @@ def onMove(event): forcefield_whitelist[player_id] = [] for entity in player.getNearbyEntities(fd, fd, fd): log("%s" % entity.getName()) - if isPlayer(entity) and not entity.hasPermission(forcefield_permissions[1]) and not str(entity.getUniqueId()) in forcefield_whitelist[player_id] and not entity == player: - setVelocityAway(player, entity) + if is_player(entity) and not entity.hasPermission(forcefield_permissions[1]) and not str(entity.getUniqueId()) in forcefield_whitelist[player_id] and not entity == player: + set_velocity_away(player, entity) if not player.hasPermission(forcefield_permissions[1]): #player should be launched, entity has forcefield for entity in player.getNearbyEntities(fd, fd, fd): entity_id = str(entity.getUniqueId()) if not forcefield_whitelist[entity_id]: forcefield_whitelist[entity_id] = [] - if isPlayer(entity) and entity_id in forcefield_toggle and not player_id in forcefield_whitelist[entity_id] and not entity == player: - if event.getFrom().distance(entity.getLocation()) > 4: + if is_player(entity) and entity_id in forcefield_toggle and not player_id in forcefield_whitelist[entity_id] and not entity == player: + if event.getFrom().distance(entity.getLocation()) > 4: event.setCancelled(True) msg(player, "&cYou may not get closer than %sm to %s &cdue to their forcefield." % (fd, entity.getDisplayName())) else: - setVelocityAway(entity, player) #Other way around + set_velocity_away(entity, player) #Other way around -def setVelocityAway(player, entity): #Moves entity away from player + +def set_velocity_away(player, entity): #Moves entity away from player player_loc = player.getLocation() entity_loc = entity.getLocation() dx = entity_loc.getX() - player_loc.getX() @@ -141,11 +151,13 @@ def setVelocityAway(player, entity): #Moves entity away from player negator = fd/2 entity.setVelocity(negator/dx, negator/dy, negator/dz) + #--------------------------------------------------------------------------------------------------------# + @hook.event("player.PlayerQuitEvent") -def onQuit(event): +def on_quit(event): try: forcefield_toggle.remove(str(event.getPlayer().getUniqueId())) except: - pass
\ No newline at end of file + pass
\ No newline at end of file @@ -7,16 +7,19 @@ import org.bukkit.event.player.PlayerTeleportEvent.TeleportCause as TeleportCaus import org.bukkit.block as bblock -shared = {} +shared = {} # this dict can be used to share stuff across modules server = bukkit.Bukkit.getServer() + def log(text): server.getLogger().info("[RedstonerUtils] %s" % colorify(text)) + def error(text): server.getLogger().severe("[RedstonerUtils] %s" % text) + def msg(player, text, usecolor = True, basecolor = None): if player and (player == server.getConsoleSender() or player.getPlayer()): #getPlayer() returns None when offline if basecolor: @@ -24,19 +27,25 @@ def msg(player, text, usecolor = True, basecolor = None): else: player.sendMessage(colorify(text) if usecolor else text) -# better than bukkit's broadcast. -# bukkit only works with permissibles that are subscribed to perm + def broadcast(perm, text): + """ + better than bukkit's broadcast. + bukkit only works with permissibles that are subscribed to perm + """ text = colorify(text) for recipient in list(server.getOnlinePlayers()) + [server.getConsoleSender()]: (not perm or recipient.hasPermission(perm)) and msg(recipient, text) + def colorify(text): return sub("&(?=[?\\da-fk-or])", u"\u00A7", "%s" % text) + def stripcolors(text): return sub(u"\u00A7[\\da-fk-or]", "", "%s" % text) + def safetp(player, world, x, y, z, yaw = 0, pitch = 0): tpblock = Location(world, x, y, z).getBlock() if (tpblock.isEmpty() and tpblock.getRelative(bblock.BlockFace.UP).isEmpty()) or y > 255: @@ -44,20 +53,31 @@ def safetp(player, world, x, y, z, yaw = 0, pitch = 0): else: safetp(player, world, x, y+1, z, yaw, pitch) -def plugHeader(sender=None, name="Redstoner Utils"): + +def plugin_header(sender=None, name="Redstoner Utils"): + """ + sends the recipient a "Plugin Header", in the format of: + + --=[ PluginName ]=-- + """ + head = "\n&2--=[ %s ]=--" % name msg(sender, head) return head + def noperm(player): msg(player, "&cno permission") + def runas(player, cmd): server.dispatchCommand(player, cmd) -def isPlayer(sender): + +def is_player(sender): return (isinstance(sender, Player)) + def checkargs(sender, args, amin, amax): if not (len(args) >= amin and (amax < 0 or len(args) <= amax)): if amin == amax: @@ -76,4 +96,4 @@ def warp(sender, args, warpname): if not checkargs(sender, args, 0, 1): return True runas(sender, " ".join(["warp", warpname, sender.getName()])) - return True + return True
\ No newline at end of file diff --git a/lagchunks.py b/lagchunks.py index 4bec197..db45aa3 100644 --- a/lagchunks.py +++ b/lagchunks.py @@ -4,12 +4,14 @@ from helpers import * lagchunks = [] -def printHelp(sender): + +def print_help(sender): msg(sender, " &b/lagchunks <amount> &eList chunks where #entities >= <amount>") msg(sender, " &b/lagchunks list &eShow list again") msg(sender, " &b/lagchunks tp <num> &eTeleport to chunk <num> from list") -def scanChunks(amount): + +def scan_chunks(amount): try: global lagchunks chunks = [] @@ -24,37 +26,39 @@ def scanChunks(amount): except Exception, e: error(e) -def listChunks(sender): + +def list_chunks(sender): for id, chunk in enumerate(lagchunks): msg(sender, "&b%s&a: (&b%s&a) %s&7, &a%s &7(%s)" % (id, chunk[4], chunk[1], chunk[3], chunk[0].getName())) msg(sender, "&2------------------") -def tpChunk(sender, id): +def tp_chunk(sender, id): chunk = lagchunks[id] safetp(sender, chunk[0], chunk[1], chunk[2], chunk[3]) 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 onLagchunksCommand(sender, args): +def on_lagchunks_command(sender, args): try: if sender.hasPermission("utils.lagchunks"): - plugHeader(sender, "Lagchunks") + plugin_header(sender, "Lagchunks") global lagchunks if len(args) == 1 and args[0].isdigit() and int(args[0]) > 0: amount = args[0] msg(sender, "&aChunks with at least &b%s &aentities:" % amount, ) - scanChunks(int(amount)) - listChunks(sender) + scan_chunks(int(amount)) + list_chunks(sender) elif len(args) == 1 and args[0].lower() == "list": - listChunks(sender) + list_chunks(sender) elif len(args) == 2 and args[0].lower() == "tp" and args[1].isdigit() and int(args[1]) <= len(lagchunks)-1: if isinstance(sender, Player): - tpChunk(sender, int(args[1])) + tp_chunk(sender, int(args[1])) else: msg(sender, "&cOnly players can do this!") else: - printHelp(sender) + print_help(sender) else: noperm(sender) return True @@ -17,13 +17,13 @@ except: @hook.enable -def onEnable(): +def on_enable(): log("RedstonerUtils enabled!") @hook.disable -def onDisable(): - shared["modules"]["reports"].stopChecking() +def on_disable(): + shared["modules"]["reports"].stop_reporting() log("RedstonerUtils disabled!") @@ -53,4 +53,4 @@ for module in load_modules: log("Module %s loaded." % module) except: error("Failed to import module %s:" % module) - error(print_traceback()) + error(print_traceback())
\ No newline at end of file @@ -16,7 +16,7 @@ except Exception, e: @hook.event("player.AsyncPlayerChatEvent", "high") -def onChat(event): +def on_chat(event): try: if not event.isCancelled(): sender = event.getPlayer() @@ -45,13 +45,14 @@ def onChat(event): error("Failed to handle PlayerChatEvent:") error(print_traceback()) + @hook.command("listen") -def onListenCommand(sender, args): +def on_listen_command(sender, args): try: currWords = [] if str(sender.getUniqueId()) in mentions.keys(): currWords = mentions[str(sender.getUniqueId())] - + # /listen add <word> if len(args) == 2 and args[0].lower() == "add": @@ -66,7 +67,7 @@ def onListenCommand(sender, args): currWords.append(args[1].lower()) mentions[str(sender.getUniqueId())] = currWords msg(sender, "&aYou are now listening for '&2"+args[1].lower()+"'!") - saveMentions() + save_mentions() return True # /listen del <word> elif len(args) == 2 and args[0].lower() == "del": @@ -80,7 +81,7 @@ def onListenCommand(sender, args): mentions[str(sender.getUniqueId())] = currWords success = True if success == True: - saveMentions() + save_mentions() msg(sender, "&eYou are no longer listening for '&2"+args[1].lower()+"&e'!") else: msg(sender, "&cWe can't remove something that doesn't exist! Try &6/listen list") @@ -98,7 +99,8 @@ def onListenCommand(sender, args): except Exception, e: error(e) -def saveMentions(): + +def save_mentions(): try: mentio_file = open(mentio_filename, "w") mentio_file.write(json.dumps(mentions)) @@ -9,7 +9,7 @@ import org.bukkit.inventory.ItemStack as ItemStack # @hook.event("player.PlayerJoinEvent", "monitor") -def onJoin(event): +def on_join(event): player = event.getPlayer() # send welcome broadcast @@ -41,9 +41,9 @@ def onJoin(event): @hook.command("sudo") -def onSudoCommand(sender, args): +def on_sudo_command(sender, args): if sender.hasPermission("utils.sudo"): - plugHeader(sender, "Sudo") + plugin_header(sender, "Sudo") if not checkargs(sender, args, 2, -1): return True target = args[0] @@ -77,7 +77,7 @@ def onSudoCommand(sender, args): last_shear = 0.0 @hook.event("player.PlayerInteractEntityEvent") -def onPlayerInteractEntity(event): +def on_player_entity_interact(event): global last_shear if not event.isCancelled(): shear_time = now() @@ -85,7 +85,7 @@ def onPlayerInteractEntity(event): last_shear = shear_time sender = event.getPlayer() entity = event.getRightClicked() - if isPlayer(entity) and str(entity.getUniqueId()) == "ae795aa8-6327-408e-92ab-25c8a59f3ba1" and str(sender.getItemInHand().getType()) == "SHEARS" and str(sender.getGameMode()) == "CREATIVE": + if is_player(entity) and str(entity.getUniqueId()) == "ae795aa8-6327-408e-92ab-25c8a59f3ba1" and str(sender.getItemInHand().getType()) == "SHEARS" and str(sender.getGameMode()) == "CREATIVE": for i in range(5): entity.getWorld().dropItemNaturally(entity.getLocation(), ItemStack(bukkit.Material.getMaterial("REDSTONE"))) entity.getWorld().dropItemNaturally(entity.getLocation(), ItemStack(bukkit.Material.getMaterial("WOOL"))) @@ -97,8 +97,8 @@ def onPlayerInteractEntity(event): # @hook.command("pluginversions") -def onPluginversionsCommand(sender, args): - plugHeader(sender, "Plugin versions") +def on_pluginversions_command(sender, args): + plugin_header(sender, "Plugin versions") plugins = list(server.getPluginManager().getPlugins()) plugins.sort(key=lambda pl: pl.getDescription().getName()) msg(sender, "&3Listing all " + str(len(plugins)) + " plugins and their version:") @@ -112,7 +112,7 @@ def onPluginversionsCommand(sender, args): # @hook.command("echo") -def onEchoCommand(sender, args): +def on_echo_command(sender, args): msg(sender, " ".join(args).replace("\\n", "\n")) @@ -121,21 +121,22 @@ def onEchoCommand(sender, args): # # has to be in main.py so we can access the modules -def evalThread(sender, code): +def eval_thread(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): +def on_pyeval_command(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))) + thread.start_new_thread(eval_thread, (sender, " ".join(args))) except Exception, e: msg(sender, "&cInternal error: %s" % e) else: @@ -3,27 +3,29 @@ from helpers import * motd = server.getMotd() + @hook.command("getmotd") -def onGetMotdCommand(sender, args): - plugHeader(sender, "MOTD") +def on_getmotd_command(sender, args): + plugin_header(sender, "MOTD") msg(sender, motd, usecolor=False) @hook.command("setmotd") -def onSetMotdCommand(sender, args): +def on_setmotd_command(sender, args): global motd if sender.hasPermission("utils.setmotd"): if not checkargs(sender, args, 1, -1): return True motd = colorify(" ".join(args).replace("\\n", "\n")) - broadcast("", plugHeader(name="MOTD")) + broadcast("", plugin_header(name="MOTD")) broadcast("", "&aNew MOTD:&r\n%s" % motd) broadcast(" ") else: noperm(sender) return True + @hook.event("server.ServerListPingEvent") -def onServerPing(event): +def on_server_ping(event): event.setMotd(motd) @@ -13,18 +13,21 @@ try: except Exception, e: error("Failed to load reports: %s" % e) -def printHelp(sender): + +def print_help(sender): msg(sender, " &2/report <text> &eReport something") msg(sender, " &2/rp list &eList unresolved reports (id, player, text)") msg(sender, " &2/rp tp <id> &eTeleport to report's location & show details") msg(sender, " &2/rp del <id> &eResolve a report") -def printList(sender): + +def print_list(sender): msg(sender, "&a" + str(len(reports)) + " reports:") for i, report in enumerate(reports): msg(sender, "&8[&e" + str(i) + " &c" + report["time"] + "&8] &3" + report["player"] + "&f: &a" + report["msg"]) -def tp(sender, rep_id): + +def tp_report(sender, rep_id): if rep_id >= len(reports) or rep_id < 0: msg(sender, "&cReport &3#" + str(rep_id) + "&c does not exist!") return True @@ -34,19 +37,20 @@ def tp(sender, rep_id): msg(sender, "&aTeleported to report #%s" % rep_id ) -def deleteReport(sender, rep_id): +def delete_report(sender, rep_id): if len(reports) > rep_id >= 0: report = reports[rep_id] reports.pop(rep_id) - saveReports() + save_reports() msg(sender, "&aReport #%s deleted." % rep_id) reporter = server.getOfflinePlayer(report["player"]) - plugHeader(reporter, "Report") + plugin_header(reporter, "Report") msg(reporter, "&aReport '&e%s&a' was resolved by %s." % (report["msg"], sender.getName())) else: msg(sender, "&cThat report does not exist!") -def saveReports(): + +def save_reports(): try: reports_file = open(reports_filename, "w") reports_file.write(json.dumps(reports)) @@ -54,13 +58,14 @@ def saveReports(): except Exception, e: error("Failed to write reports: " + str(e)) + @hook.command("rp") -def onRpCommand(sender, args): +def on_rp_command(sender, args): if sender.hasPermission("utils.rp"): - plugHeader(sender, "Reports") + plugin_header(sender, "Reports") if len(args) > 0: if args[0] == "list": - printList(sender) + print_list(sender) else: if not checkargs(sender, args, 2, 2): return True @@ -68,27 +73,28 @@ def onRpCommand(sender, args): repid = int(args[1]) except ValueError: msg(sender, "&cDoesn't look like &3" + args[1] + "&c is a valid number!") - printHelp(sender) + print_help(sender) return True if args[0] == "tp": - if not isPlayer(sender): + if not is_player(sender): msg(sender, "&conly players can do this") return True - tp(sender, repid) + tp_report(sender, repid) elif args[0] == "del": - deleteReport(sender, repid) + delete_report(sender, repid) else: - printHelp(sender) + print_help(sender) else: - printHelp(sender) + print_help(sender) else: noperm(sender) return True + @hook.command("report") -def onReportCommand(sender, args): - plugHeader(sender, "Report") - if not isPlayer(sender): +def on_report_command(sender, args): + plugin_header(sender, "Report") + if not is_player(sender): msg(sender, "&conly players can do this") return True if not checkargs(sender, args, 1, -1): @@ -108,12 +114,13 @@ def onReportCommand(sender, args): "time": time.strftime(time_format) } reports.append(report) - saveReports() + save_reports() broadcast("utils.rp", "&aReport #" + str(len(reports) -1) + ": " + reporter + "&f: " + text) msg(sender, "&aReported \"&e" + text + "&a\"") return True -def checkForReports(): # needs 2 args for unknown reason + +def reports_reminder(): # 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 @@ -124,9 +131,10 @@ def checkForReports(): # needs 2 args for unknown reason broadcast("utils.rp", "&2--=[ Reports ]=--") broadcast("utils.rp", "&aThere are %s pending reports!" % len(reports)) -def stopChecking(): + +def stop_reporting(): global check_reports log("Ending reports reminder thread") check_reports = False -thread.start_new_thread(checkForReports, ()) +thread.start_new_thread(reports_reminder, ()) @@ -23,31 +23,34 @@ def save_lols(): except Exception, e: error("Failed to write lols: " + str(e)) + def add_lol(txt): lols.append(txt) save_lols() + def del_lol(lid): lols.pop(lid) save_lols() + def print_lol(sender, lid): global last_msg if time() - last_msg > timeout: if len(lols) > lid: - dispname = sender.getDisplayName() if isPlayer(sender) else sender.getName() + dispname = sender.getDisplayName() if is_player(sender) else sender.getName() broadcast("", "&8[&blol&8] &7%s&8: &e%s" % (dispname, lols[lid])) last_msg = time() else: - plugHeader(sender, "SayLol") + plugin_header(sender, "SayLol") msg(sender, "&cInvalid id") else: - plugHeader(sender, "SayLol") + plugin_header(sender, "SayLol") msg(sender, "&cYou can use SayLol again in &a%s seconds!" % int(timeout + 1 - (time() - last_msg))) @hook.command("lol") -def onLolCommand(sender, args): +def on_lol_command(sender, args): cmd = args[0] if len(args) > 0 else None if len(args) == 0: if sender.hasPermission("utils.lol"): @@ -61,19 +64,19 @@ def onLolCommand(sender, args): i = int(args[1]) print_lol(sender, i) except ValueError: - plugHeader(sender, "SayLol") + plugin_header(sender, "SayLol") msg(sender, "&cInvalid number '&e%s&c'" % args[1]) else: noperm(sender) elif cmd == "list": - plugHeader(sender, "SayLol") + plugin_header(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") + plugin_header(sender, "SayLol") add_lol(" ".join(args[1:])) msg(sender, "&aNew lol message added!") else: @@ -81,7 +84,7 @@ def onLolCommand(sender, args): elif cmd == "del": if sender.hasPermission("utils.lol.modify"): - plugHeader(sender, "SayLol") + plugin_header(sender, "SayLol") try: i = int(args[1]) del_lol(i) @@ -90,7 +93,7 @@ def onLolCommand(sender, args): msg(sender, "&cInvalid number '&e%s&c'" % args[1]) else: - plugHeader(sender, "SayLol") + plugin_header(sender, "SayLol") msg(sender, "&a/lol &eSay random message") msg(sender, "&a/lol list &eList all messages") msg(sender, "&a/lol id <id> &eSay specific message") diff --git a/skullclick.py b/skullclick.py index e5e022a..4bdf24c 100644 --- a/skullclick.py +++ b/skullclick.py @@ -3,7 +3,7 @@ import org.bukkit as bukkit from helpers import msg @hook.event("player.PlayerInteractEvent", "monitor") -def onInteract(event): +def on_block_interact(event): if (str(event.getAction()) == "RIGHT_CLICK_BLOCK"): sender = event.getPlayer() block = event.getClickedBlock().getState() diff --git a/spawnplayer.py b/spawnplayer.py index 0eb92bf..15dafd3 100644 --- a/spawnplayer.py +++ b/spawnplayer.py @@ -15,6 +15,7 @@ row = 1 # distance to first row of players goup = 6 # after how many rows should we go up by one? upmul = 0.95 # multiplicate with goup each row + def spawn(dispname, sender, x, y, z): """ Sends the actual player to sender @@ -30,7 +31,7 @@ def spawn(dispname, sender, x, y, z): @hook.command("spawnplayer") -def onSpawnplayerCommand(sender, args): +def on_spawnplayer_command(sender, args): global amount, row, ground, goup # X and Z position diff --git a/tilehelper.py b/tilehelper.py index 0018961..6ce88b0 100644 --- a/tilehelper.py +++ b/tilehelper.py @@ -27,8 +27,9 @@ dirmap = { # FIXME: disallow multiple regions by single person. # FIXME: could lead to two regions updating each other forever -> server freezes + @hook.event("block.BlockPlaceEvent", "low") -def onPlaceBlockInRegion(event): +def on_place_block(event): if not event.isCancelled(): player = event.getPlayer() block = event.getBlockPlaced() @@ -69,7 +70,7 @@ def onPlaceBlockInRegion(event): @hook.event("block.BlockBreakEvent", "low") -def onBreakBlockInRegion(event): +def on_break_block(event): if not event.isCancelled(): player = event.getPlayer() block = event.getBlock() @@ -99,7 +100,7 @@ def onBreakBlockInRegion(event): @hook.event("player.PlayerInteractEvent", "low") -def onClickBlockInRegion(event): +def on_block_interact(event): action = event.getAction() if not event.isCancelled() and str(action) == "RIGHT_CLICK_BLOCK": player = event.getPlayer() @@ -126,9 +127,11 @@ def onClickBlockInRegion(event): event = PlayerInteractEvent(event.getPlayer(), action, event.getItem(), newblock, event.getBlockFace()) server.getPluginManager().callEvent(event) if not event.isCancelled(): - thread.start_new_thread(updateBlock, (block, newblock)) + # FIXME: do not use bukkit API calls outside main thread + thread.start_new_thread(update_block, (block, newblock)) + -def updateBlock(block, newblock): +def update_block(block, newblock): try: # we're in a thread, the universe may hace collapsed in another thread sleep(0.2) newblock.setType(block.getType()) diff --git a/webtoken.py b/webtoken.py index 825c1eb..33cf58e 100644 --- a/webtoken.py +++ b/webtoken.py @@ -29,6 +29,7 @@ def mysql_query(query, args, fetch=True): conn.close() return results + def generate_token(length): cons = 'bcdfghjklmnpqrstvwxyz' vows = 'aeiou' @@ -42,14 +43,15 @@ def generate_token(length): token += vows[randrange(5)] return token + def get_token(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 def token_command(sender): - plugHeader(sender, "Website Token") - if isPlayer(sender): + plugin_header(sender, "Website Token") + if is_player(sender): try: token = get_token(sender.getUniqueId().toString().replace("-", "")) if token: @@ -65,9 +67,10 @@ def token_command(sender): else: msg(sender, "&cThis is only for players..") + def tokengen_command(sender, args): - plugHeader(sender, "Website Token") - if isPlayer(sender): + plugin_header(sender, "Website Token") + if is_player(sender): if len(args) < 1: msg(sender, "&cPlease use &e/gettoken <email adress>") else: @@ -96,12 +99,13 @@ def tokengen_command(sender, args): @hook.command("token") -def onTokenCommand(sender, args): +def on_token_command(sender, args): thread.start_new_thread(token_command, (sender,)) return True + @hook.command("gettoken") -def onTokengenCommand(sender, args): +def on_gettoken_command(sender, args): thread.start_new_thread(tokengen_command, (sender, args)) return True |