Skip to content

Commit 9cc2f2a

Browse files
committed
Don't register the placeholder command if the user has previously enabled PB
If an experienced user wants PB to be disabled, then it should be completely disabled
1 parent 5111517 commit 9cc2f2a

2 files changed

Lines changed: 49 additions & 16 deletions

File tree

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
from pathlib import Path
2+
3+
from mcdreforged.api.all import PluginServerInterface, SimpleCommandBuilder, CommandSource, RColor
4+
5+
from prime_backup import logger
6+
from prime_backup.config.config import Config
7+
from prime_backup.mcdr.text_components import TextComponents
8+
from prime_backup.utils import mcdr_utils
9+
10+
11+
class DisabledCommandHelper:
12+
def __init__(self, server: PluginServerInterface, self_name: str):
13+
self.config = Config.get()
14+
self.logger = logger.get()
15+
16+
self.server = server
17+
self.self_name = self_name
18+
self.__mark_file = Path(server.get_data_folder()) / '.enabled_mark'
19+
20+
def on_disabled(self):
21+
if self.__mark_file.exists():
22+
return
23+
self.__register_disabled_command()
24+
25+
def __register_disabled_command(self):
26+
builder = SimpleCommandBuilder()
27+
28+
@builder.command(self.config.command.prefix)
29+
def handle_root(source: CommandSource):
30+
with source.preferred_language_context():
31+
doc_url = mcdr_utils.tr('command.disabled.doc_url').to_plain_text()
32+
mcdr_utils.reply_message(source, mcdr_utils.tr('command.disabled.disabled_by_config', self.self_name).set_color(RColor.yellow))
33+
mcdr_utils.reply_message(source, mcdr_utils.tr('command.disabled.read_doc', self.self_name, TextComponents.url(doc_url)))
34+
35+
builder.register(self.server)
36+
37+
def on_enabled(self):
38+
try:
39+
if not self.__mark_file.exists():
40+
self.__mark_file.write_bytes(b'')
41+
except Exception as e:
42+
self.logger.error('Failed to create enabled mark file at {}: {}'.format(self.__mark_file, e))

prime_backup/mcdr/mcdr_entrypoint.py

Lines changed: 7 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,11 @@
1111
from prime_backup.db.access import DbAccess
1212
from prime_backup.mcdr import mcdr_globals
1313
from prime_backup.mcdr.command.commands import CommandManager
14+
from prime_backup.mcdr.command.disabled_command_helper import DisabledCommandHelper
1415
from prime_backup.mcdr.crontab_manager import CrontabManager
1516
from prime_backup.mcdr.online_player_counter import OnlinePlayerCounter
1617
from prime_backup.mcdr.task_manager import TaskManager
17-
from prime_backup.mcdr.text_components import TextComponents
18-
from prime_backup.utils import misc_utils, mcdr_utils
18+
from prime_backup.utils import misc_utils
1919

2020
config: Optional[Config] = None
2121
task_manager: Optional[TaskManager] = None
@@ -72,27 +72,18 @@ def init():
7272
init_ok = is_enabled()
7373
server.logger.debug('{} init done, init_ok={}'.format(self_name, init_ok))
7474

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)
87-
8875
global config, task_manager, command_manager, crontab_manager, online_player_counter
8976
with handle_init_error():
9077
config = server.load_config_simple(target_class=Config, failure_policy='raise')
9178
set_config_instance(config)
79+
80+
disabled_command_helper = DisabledCommandHelper(server, self_name)
9281
if not is_enabled():
9382
server.logger.warning('{} is disabled by config'.format(self_name))
94-
register_disabled_command()
83+
disabled_command_helper.on_disabled()
9584
return
85+
else:
86+
disabled_command_helper.on_enabled()
9687

9788
task_manager = TaskManager()
9889
crontab_manager = CrontabManager(task_manager)

0 commit comments

Comments
 (0)