summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDico200 <dico.karssiens@gmail.com>2016-06-25 11:48:15 +0200
committerDico200 <dico.karssiens@gmail.com>2016-06-25 11:48:15 +0200
commit80eff984e84fd9b1aa1754bd824fba201ed4c0f4 (patch)
tree7551f519dd3538708d6c8b3f7fadc4e22938e58d
parent5b118669b649f4aff6118f3e9fc65218460da12f (diff)
Replaced imbusy interception implementations with the tool from misc
-rw-r--r--imbusy.py131
-rw-r--r--main.py2
2 files changed, 32 insertions, 101 deletions
diff --git a/imbusy.py b/imbusy.py
index a8c5280..2060c89 100644
--- a/imbusy.py
+++ b/imbusy.py
@@ -209,110 +209,43 @@ def reply(sender):
reply_targets[target.getName()] = (sender_name, True)
return True
+try:
-class CommandWrapper(Command):
-
- def __init__(self, wrapped, checker):
- Command.__init__(self, wrapped.getName())
- self.setDescription(wrapped.getDescription())
- self.setPermission(wrapped.getPermission())
- self.setUsage(wrapped.getUsage())
- self.setAliases(wrapped.getAliases())
- self.wrapped = wrapped
- self.checker = checker
-
- def execute(self, sender, label, args):
- try:
- if not is_player(sender) or self.checker(sender, args):
- return self.wrapped.execute(sender, label, args)
- except:
- error(trace())
- return True
-
- def tabComplete(self, sender, alias, args):
- return self.wrapped.tabComplete(sender, alias, args)
-
+ def msg_interception(sender, args):
+ return not is_player(sender) or len(args) <= 1 or whisper(sender, args[0])
-def msg_command_checker(sender, args):
- return len(args) <= 1 or whisper(sender, args[0])
+ def reply_interception(sender, args):
+ return not is_player(sender) or len(args) == 0 or reply(sender)
-def reply_command_checker(sender, args):
- return len(args) == 0 or reply(sender)
-
-def tpa_command_checker(sender, args):
- if len(args) == 0:
+ def tpa_interception(sender, args):
+ if len(args) == 0 or not is_player(sender):
+ return True
+ target = server.getPlayer(args[0])
+ if target is not None and not can_send(sender, target):
+ msg(sender, "&c[&fBUSY&c] %s&r is busy!" % target.getDisplayName())
+ return False
return True
- target = server.getPlayer(args[0])
- if target is not None and not can_send(sender, target):
- msg(sender, "&c[&fBUSY&c] %s&r is busy!" % target.getDisplayName())
- return False
- return True
-def tpahere_command_checker(sender, args):
- return tpa_command_checker(sender, args)
+ def tpahere_interception(sender, args):
+ return tpa_command_checker(sender, args)
-def mail_command_checker(sender, args):
- if len(args) < 3 or args[0].lower() != "send":
+ def mail_interception(sender, args):
+ if len(args) < 3 or args[0].lower() != "send" or not is_player(sender):
+ return True
+ target = server.getPlayer(args[1])
+ if target is not None and not can_send(sender, target):
+ msg(sender, "&c[&fBUSY&c] %s&r is busy!" % target.getDisplayName())
+ return False
return True
- target = server.getPlayer(args[1])
- if target is not None and not can_send(sender, target):
- msg(sender, "&c[&fBUSY&c] %s&r is busy!" % target.getDisplayName())
- return False
- return True
-
-@hook.event("player.PlayerCommandPreprocessEvent", "monitor")
-def on_player_command_preprocess(event):
- message = event.getMessage().split(" ")
- if len(message) > 1 and message[0].lower() in ("/tell", "/minecraft:tell") and not whisper(event.getPlayer(), message[1]):
- event.setCancelled(True)
-
-
-def replace_ess_commands():
-
- try:
- map_field = server.getPluginManager().getClass().getDeclaredField("commandMap")
- map_field.setAccessible(True)
- command_map = map_field.get(server.getPluginManager())
-
- commands_field = command_map.getClass().getDeclaredField("knownCommands")
- commands_field.setAccessible(True)
- map = commands_field.get(command_map)
-
- ess_msg_cmd = map.get("essentials:msg")
- ess_reply_cmd = map.get("essentials:reply")
- ess_tpa_cmd = map.get("essentials:tpa")
- ess_tpahere_cmd = map.get("essentials:tpahere")
- ess_mail_cmd = map.get("essentials:mail")
-
- msg_cmd_wrapper = CommandWrapper(ess_msg_cmd, msg_command_checker)
- reply_cmd_wrapper = CommandWrapper(ess_reply_cmd, reply_command_checker)
- tpa_cmd_wrapper = CommandWrapper(ess_tpa_cmd, tpa_command_checker)
- tpahere_cmd_wrapper = CommandWrapper(ess_tpahere_cmd, tpahere_command_checker)
- mail_cmd_wrapper = CommandWrapper(ess_mail_cmd, mail_command_checker)
-
- iterator = map.entrySet().iterator()
- wrapped_commands = []
- while iterator.hasNext():
- entry = iterator.next()
- value = entry.getValue()
- changed = True
- if value is ess_msg_cmd:
- entry.setValue(msg_cmd_wrapper)
- elif value is ess_reply_cmd:
- entry.setValue(reply_cmd_wrapper)
- elif value is ess_tpa_cmd:
- entry.setValue(tpa_cmd_wrapper)
- elif value is ess_tpahere_cmd:
- entry.setValue(tpahere_cmd_wrapper)
- elif value is ess_mail_cmd:
- entry.setValue(mail_cmd_wrapper)
- else:
- changed = False
- if changed:
- wrapped_commands.append(entry.getKey())
- info("[imbusy] wrapped commands: /" + ", /".join(wrapped_commands))
-
- except:
- error("[Imbusy] Failed to wrap essentials commands")
- error(trace())
+ register = shared["modules"]["misc"].CommandInterceptions.register
+ register("essentials", "msg", msg_interception)
+ register("minecraft", "tell", msg_interception)
+ register("essentials", "reply", reply_interception)
+ register("essentials", "tpa", tpa_interception)
+ register("essentials", "tpahere", tpahere_interception)
+ register("essentials", "mail", mail_interception)
+
+except:
+ error("[Imbusy] Failed to intercept commands:")
+ error(trace())
diff --git a/main.py b/main.py
index 1b9e3f4..18bfcab 100644
--- a/main.py
+++ b/main.py
@@ -21,8 +21,6 @@ except:
def on_enable():
if "blockplacemods" in shared["modules"]:
shared["modules"]["blockplacemods"].schedule_torch_breaker()
- if "imbusy" in shared["modules"]:
- shared["modules"]["imbusy"].replace_ess_commands()
if "serversigns" in shared["modules"]:
shared["modules"]["serversigns"].check_all_signs_and_force_commands()
info("RedstonerUtils enabled!")