Cleanup misc.py and small fix, also in damnspam

This commit is contained in:
Dico200
2015-05-13 21:37:53 +02:00
parent 230e427f04
commit 9f4d096a57
2 changed files with 47 additions and 127 deletions

172
misc.py
View File

@@ -36,6 +36,48 @@ def on_join(event):
player.teleport(player.getWorld().getSpawnLocation())
@hook.event("player.PlayerGameModeChangeEvent", "low")
def on_gamemode(event):
user = event.getPlayer()
if str(event.getNewGameMode()) != "SPECTATOR" and user.getWorld().getName() == "Trusted" and not user.hasPermission("mv.bypass.gamemode.Trusted"):
event.setCancelled(True)
@hook.event("player.PlayerBedEnterEvent")
def on_bed_enter(event):
if event.getPlayer().getWorld().getName() in ("Survival_1", "TrustedSurvival_1"):
event.getPlayer().setSleepingIgnored(True)
@hook.event("player.PlayerBedLeaveEvent")
def on_bed_leave(event):
event.getPlayer().setSleepingIgnored(False)
@hook.event("player.PlayerTeleportEvent")
def on_player_teleport(event):
"""
Disable spectator teleportation
"""
player = event.getPlayer()
if not event.isCancelled() and str(event.getCause()) == "SPECTATE" and not player.hasPermission("utils.tp.spectate"):
event.setCancelled(True)
msg(event.getPlayer(), "&cSpectator teleportation is disabled")
@hook.event("block.BlockFromToEvent", "highest")
def on_flow(event):
if event.isCancelled():
return
block = event.getToBlock()
if block.getWorld().getName() == "Creative" and rs_material_broken_by_flow(str(block.getType())):
event.setCancelled(True)
@simplecommand("sudo",
usage = "<player> [cmd..]",
description = "Makes <player> write [cmd..] in chat",
@@ -57,6 +99,7 @@ def on_sudo_command(sender, command, label, args):
return "&cPlayer %s not found!" % target
@simplecommand("me",
usage = "[message..]",
description = "Sends a message in third person",
@@ -66,54 +109,8 @@ def on_me_command(sender, command, label, args):
broadcast("utils.me", text + " ".join(args), usecolor = sender.hasPermission("essentials.chat.color"))
return None
#
#@hook.command("gm")
#def on_gm_command(sender, args):
# """
# /gm - custom gamemode command with extra perms for greater control
# """
# if not is_player(sender):
# msg(sender, "&cDerp! Can't run that from console!")
# return True
# if not checkargs(sender, args, 1, 2):
# return True
# mode = args[0]
# target = args[1]
# if target and not sender.hasPermission("utils.gm.other"):
# msg(sender, "&cYou cannot change the gamemode of another player!")
# else:
# target = sender
# if mode < 0 or mode > 3:
# msg(sender, "&cThat gamemode does not exist!")
# elif sender.hasPermission("utils.gm." % mode):
# runas(server.getConsoleSender(), "gamemode " % mode % " " % target)
# else:
# msg(sender, "&cYou cannot access that gamemode!")
# return True
last_shear = 0.0
@hook.event("player.PlayerInteractEntityEvent")
def on_player_entity_interact(event):
"""
Clicking redstone_sheep with shears will drop redstone + wool
also makes a moo sound for the shearer
"""
global last_shear
if not event.isCancelled():
shear_time = now()
if last_shear + 0.4 < shear_time:
last_shear = shear_time
sender = event.getPlayer()
entity = event.getRightClicked()
if is_player(entity) and uid(entity) == "ae795aa8-6327-408e-92ab-25c8a59f3ba1" and str(sender.getItemInHand().getType()) == "SHEARS" and is_creative(sender):
for _ in range(5):
entity.getWorld().dropItemNaturally(entity.getLocation(), ItemStack(bukkit.Material.getMaterial("REDSTONE")))
entity.getWorld().dropItemNaturally(entity.getLocation(), ItemStack(bukkit.Material.getMaterial("WOOL")))
sender.playSound(entity.getLocation(), "mob.cow.say", 1, 1)
"""
@hook.command("pluginversions")
def on_pluginversions_command(sender, command, label, args):
""
@@ -131,7 +128,6 @@ def on_pluginversions_command(sender, command, label, args):
return True
except:
error(trace())
"""
@hook.command("echo")
@@ -143,6 +139,7 @@ def on_echo_command(sender, command, label, args):
msg(sender, " ".join(args).replace("\\n", "\n"))
def eval_thread(sender, code):
"""
/pyeval
@@ -160,29 +157,6 @@ def eval_thread(sender, code):
msg(sender, ">>> %s: %s" % (eclass.__name__, e) + "\n ", False, "c")
thread.exit()
"""
def eval_argument_thread(event):
words = event.getMessage()[5:].split(" ")
for i in range(len(words)):
word = words[i]
if is_pyeval_call(word):
code = word[5:]
try:
result = unicode(eval(code))
except:
e = exc_info()[1]
try:
eclass = e.__class__
except AttributeError:
eclass = type(e)
msg(event.getPlayer(), ">>> %s: %s" % (eclass.__name__, e) + "\n ", False, "c")
result = code
words[i] = result
event.setMessage(" ".join(words))
thread.exit()
"""
@simplecommand("pyeval",
usage = "[code..]",
description = "Runs python [code..] and returns the result",
@@ -193,6 +167,7 @@ def on_pyeval_command(sender, command, label, args):
return None
@simplecommand("tempadd",
usage = "<user> <group> [duration]",
description = "Temporarily adds <user> to <group> for \n[duration] minutes. Defaults to 1 week.",
@@ -220,6 +195,7 @@ def tempadd_command(sender, command, label, args):
return "&aAdded to group for %dd%dh%dm" % (d, h, m)
@hook.command("modules")
def on_modules_command(sender, command, label, args):
"""
@@ -229,65 +205,9 @@ def on_modules_command(sender, command, label, args):
plugin_header(sender, "Modules")
msg(sender, ", ".join([(("&a" if mod in shared["modules"] else "&c") + mod) for mod in shared["load_modules"]]))
@hook.event("player.PlayerTeleportEvent")
def on_player_teleport(event):
"""
Disable spectator teleportation
"""
player = event.getPlayer()
if not event.isCancelled() and str(event.getCause()) == "SPECTATE" and not player.hasPermission("utils.tp.spectate"):
event.setCancelled(True)
msg(event.getPlayer(), "&cSpectator teleportation is disabled")
@hook.event("block.BlockFromToEvent", "highest")
def on_flow(event):
if event.isCancelled():
return
block = event.getToBlock()
if block.getWorld().getName() == "Creative" and rs_material_broken_by_flow(str(block.getType())):
event.setCancelled(True)
def rs_material_broken_by_flow(material):
if material in ("REDSTONE", "LEVER", "TRIPWIRE"):
return True
parts = material.split("_")
length = len(parts)
return length > 1 and (parts[0] == "DIODE" or parts[1] in ("TORCH", "WIRE", "BUTTON", "HOOK") or (length == 3 and parts[1] == "COMPARATOR"))
"""
@hook.event("player.AsyncPlayerChatEvent", "lowest")
def on_chat(event):
user = event.getPlayer()
if user.hasPermission("utils.pyeval"):
thread.start_new_thread(eval_argument_thread, (event,))
@hook.event("player.PlayerCommandPreprocessEvent", "lowest")
def on_cmd(event):
user = event.getPlayer()
if user.hasPermission("utils.pyeval"):
thread.start_new_thread(eval_argument_thread, (event,))
def is_pyeval_call(string):
return len(string) > 5 and string[:5] == "EVAL:"
"""
@hook.event("player.PlayerGameModeChangeEvent", "low")
def on_gamemode(event):
user = event.getPlayer()
if str(event.getNewGameMode()) != "SPECTATOR" and user.getWorld().getName() == "Trusted" and not user.hasPermission("mv.bypass.gamemode." + trusted_world):
event.setCancelled(True)
@hook.event("player.PlayerBedEnterEvent")
def on_bed_enter(event):
if event.getPlayer().getWorld().getName() in ("Survival_1", "TrustedSurvival_1"):
event.getPlayer().setSleepingIgnored(True)
@hook.event("player.PlayerBedLeaveEvent")
def on_bed_leave(event):
event.getPlayer().setSleepingIgnored(False)