Skip to content

Commit 07b7534

Browse files
committed
v1.1.0 for MCDR2 format
1 parent cfdb5d9 commit 07b7534

File tree

6 files changed

+83
-49
lines changed

6 files changed

+83
-49
lines changed

.gitignore

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,2 @@
1-
.idea
1+
.idea
2+
*.mcdr

SimpleOP.py

Lines changed: 0 additions & 48 deletions
This file was deleted.

lang/en_us.yml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
simple_op.help.op: 'Give me op'
2+
simple_op.help.restart: 'Restart the server with {0} seconds delay'
3+
simple_op.op.needs_player: 'You need to be a player'
4+
simple_op.restart.spam: 'Already restarting'
5+
simple_op.restart.countdown: 'Restart the server in {0}s!'

lang/zh_cn.yml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
simple_op.help.op: '给我op'
2+
simple_op.help.restart: '重启服务器,延迟{0}秒'
3+
simple_op.op.needs_player: '你需要是一个玩家'
4+
simple_op.restart.spam: '已经在重启了'
5+
simple_op.restart.countdown: '{0}秒后重启服务器!'

mcdreforged.plugin.json

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
{
2+
"id": "simple_op",
3+
"version": "1.1.0",
4+
"name": "Simple OP",
5+
"description": {
6+
"en_us": "!!op to get op, !!restart to restart the server",
7+
"zh_cn": "!!op 以获取op, !!restart 以重启服务器"
8+
},
9+
"author": [
10+
"Fallen_Breath"
11+
],
12+
"link": "https://github.com/MCDReforged/SimpleOP",
13+
"resources": [
14+
"lang"
15+
]
16+
}

simple_op/__init__.py

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
import time
2+
from threading import Lock
3+
4+
from mcdreforged.api.all import *
5+
6+
7+
class Config(Serializable):
8+
restart_delay: int = 5
9+
10+
11+
PLUGIN_METADATA = ServerInterface.get_instance().as_plugin_server_interface().get_self_metadata()
12+
restart_lock = Lock()
13+
config = Config.get_default()
14+
15+
16+
def tr(translation_key: str, *args, **kwargs):
17+
return ServerInterface.get_instance().tr('{}.{}'.format(PLUGIN_METADATA.id, translation_key), *args, **kwargs)
18+
19+
20+
@new_thread(PLUGIN_METADATA.name + ' - restart')
21+
def restart(source: CommandSource):
22+
acq = restart_lock.acquire(blocking=False)
23+
if not acq:
24+
source.reply(tr('restart.spam'))
25+
return
26+
try:
27+
for i in range(config.restart_delay):
28+
source.get_server().broadcast(RText(tr('restart.countdown', config.restart_delay - i), color=RColor.red))
29+
time.sleep(1)
30+
source.get_server().restart()
31+
finally:
32+
restart_lock.release()
33+
34+
35+
def give_op(source: CommandSource):
36+
if isinstance(source, PlayerCommandSource):
37+
source.get_server().execute('op {}'.format(source.player))
38+
else:
39+
source.reply(tr('op.needs_player'))
40+
41+
42+
def on_load(server: PluginServerInterface, prev):
43+
try:
44+
global restart_lock
45+
assert type(prev.restart_lock) is type(restart_lock)
46+
restart_lock = prev.restart_lock
47+
except (AttributeError, AssertionError):
48+
pass
49+
50+
global config
51+
config = server.load_config_simple(target_class=Config)
52+
server.register_help_message('!!op', tr('help.op'))
53+
server.register_help_message('!!restart', tr('help.restart', config.restart_delay))
54+
server.register_command(Literal('!!op').runs(give_op))
55+
server.register_command(Literal('!!restart').runs(restart))

0 commit comments

Comments
 (0)