Skip to content

Commit 4942e63

Browse files
committed
register a placeholder command root node if pb is disabled by config
to guide doc-dislikers to read the doc
1 parent 34b19ed commit 4942e63

3 files changed

Lines changed: 29 additions & 4 deletions

File tree

lang/en_us.yml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
prime_backup:
22
command:
3+
disabled:
4+
disabled_by_config: '{} is disabled by config'
5+
read_doc: 'Please read and follow the document to enable {0}: {1}'
6+
doc_url: 'https://tisunion.github.io/PrimeBackup/quick_start.html'
37
help:
48
no_help: No detailed help message for command {}
59
confirm:

lang/zh_cn.yml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
prime_backup:
22
command:
3+
disabled:
4+
disabled_by_config: '{}已在配置文件中被禁用'
5+
read_doc: '请阅读并遵循文档指引,以启用{0}: {1}'
6+
doc_url: 'https://tisunion.github.io/PrimeBackup/zh/quick_start.html'
37
help:
48
no_help: 指令{}无详细帮助内容
59
confirm:

prime_backup/mcdr/mcdr_entrypoint.py

Lines changed: 21 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,8 @@
1414
from prime_backup.mcdr.crontab_manager import CrontabManager
1515
from prime_backup.mcdr.online_player_counter import OnlinePlayerCounter
1616
from prime_backup.mcdr.task_manager import TaskManager
17-
from prime_backup.utils import misc_utils
17+
from prime_backup.mcdr.text_components import TextComponents
18+
from prime_backup.utils import misc_utils, mcdr_utils
1819

1920
config: Optional[Config] = None
2021
task_manager: Optional[TaskManager] = None
@@ -44,12 +45,14 @@ def is_enabled() -> bool:
4445

4546

4647
def on_load(server: PluginServerInterface, old):
48+
self_name = server.get_self_metadata().name
49+
4750
@contextlib.contextmanager
4851
def handle_init_error():
4952
try:
5053
yield
5154
except Exception:
52-
server.logger.error('{} initialization failed and will be disabled'.format(server.get_self_metadata().name))
55+
server.logger.error('{} initialization failed and will be disabled'.format(self_name))
5356
server.schedule_task(functools.partial(on_unload, server))
5457
raise
5558

@@ -67,14 +70,28 @@ def init():
6770

6871
global init_ok
6972
init_ok = is_enabled()
70-
server.logger.debug('{} init done, init_ok={}'.format(mcdr_globals.metadata.name, init_ok))
73+
server.logger.debug('{} init done, init_ok={}'.format(self_name, init_ok))
74+
75+
def register_disabled_command():
76+
from mcdreforged.api.all import SimpleCommandBuilder, CommandSource, RColor
77+
builder = SimpleCommandBuilder()
78+
79+
@builder.command(config.command.prefix)
80+
def handle_root(source: CommandSource):
81+
with source.preferred_language_context():
82+
doc_url = mcdr_utils.tr('command.disabled.doc_url').to_plain_text()
83+
mcdr_utils.reply_message(source, mcdr_utils.tr('command.disabled.disabled_by_config', self_name).set_color(RColor.yellow))
84+
mcdr_utils.reply_message(source, mcdr_utils.tr('command.disabled.read_doc', self_name, TextComponents.url(doc_url)))
85+
86+
builder.register(server)
7187

7288
global config, task_manager, command_manager, crontab_manager, online_player_counter
7389
with handle_init_error():
7490
config = server.load_config_simple(target_class=Config, failure_policy='raise')
7591
set_config_instance(config)
7692
if not is_enabled():
77-
server.logger.warning('{} is disabled by config'.format(mcdr_globals.metadata.name))
93+
server.logger.warning('{} is disabled by config'.format(self_name))
94+
register_disabled_command()
7895
return
7996

8097
task_manager = TaskManager()

0 commit comments

Comments
 (0)