Added command intercepter tool, used it for //calc #49

Closed
Dico200 wants to merge 8 commits from command-intercepter into dev
2 changed files with 20 additions and 19 deletions
Showing only changes of commit 3c7bd7409d - Show all commits

View File

@ -22,7 +22,7 @@ def on_enable():
if "blockplacemods" in shared["modules"]: if "blockplacemods" in shared["modules"]:
shared["modules"]["blockplacemods"].schedule_torch_breaker() shared["modules"]["blockplacemods"].schedule_torch_breaker()
if "serversigns" in shared["modules"]: if "serversigns" in shared["modules"]:
shared["modules"]["serversigns"].check_all_signs() shared["modules"]["serversigns"].check_all_signs_and_intercept_command()
info("RedstonerUtils enabled!") info("RedstonerUtils enabled!")

View File

@ -392,17 +392,7 @@ def can_build2(player, block):
return not event.isCancelled() return not event.isCancelled()
def check_all_signs(): def check_all_signs_and_intercept_command():
"""
Check if all registered signs have an associated sign block in the world.
WorldEdit commands could remove them without notification.
Pistons might also be able to achieve the same thing.
A sign missing from the world won't affect the world so it only checks on start.
"""
for loc in signs:
if server.getWorld(loc[0]).getBlockAt(loc[1], loc[2], loc[3]).getType() not in (Material.WALL_SIGN, Material.SIGN_POST):
del signs[loc]
try: try:
CommandInterceptions = shared["modules"]["misc"].CommandInterceptions CommandInterceptions = shared["modules"]["misc"].CommandInterceptions
@ -413,10 +403,21 @@ try:
rsutils_cmd.execute(sender, label, args) rsutils_cmd.execute(sender, label, args)
return False return False
def tab_completetion(original, sender, alias, args): def tab_completion(original, sender, alias, args):
return rsutils_cmd.tabComplete(sender, alias, args) return rsutils_cmd.tabComplete(sender, alias, args)
shared["modules"]["misc"].CommandInterceptions.register("serversigns", "serversigns", interception, tab_completion) shared["modules"]["misc"].CommandInterceptions.register("serversigns", "serversigns", interception, tab_completion)
except: except:
error("[Serversigns] failed to force commands") error("[Serversigns] failed to force commands")
error(trace()) error(trace())
"""
Check if all registered signs have an associated sign block in the world.
WorldEdit commands could remove them without notification.
Pistons might also be able to achieve the same thing.
A sign missing from the world won't affect the world so it only checks on start.
"""
for loc in signs:
if server.getWorld(loc[0]).getBlockAt(loc[1], loc[2], loc[3]).getType() not in (Material.WALL_SIGN, Material.SIGN_POST):
del signs[loc]