Skip to content

Commit

Permalink
feat(minecraft_command_register): make minecraft_command_register fit…
Browse files Browse the repository at this point in the history
…s the mod MCDRCommandFabric (#66)

* Update __init__.py

make this plugin fits MCDRCommandsFabric mod

* Update __init__.py

create mcdr command !!manual_update
  • Loading branch information
ZhuRuoLing authored Nov 21, 2022
1 parent 7772c22 commit aa24c67
Showing 1 changed file with 25 additions and 4 deletions.
29 changes: 25 additions & 4 deletions minecraft_command_register/minecraft_command_register/__init__.py
Original file line number Diff line number Diff line change
@@ -1,31 +1,48 @@
import json
from enum import Enum

from mcdreforged.api.types import PluginServerInterface
from mcdreforged.api.all import *
from mcdreforged.mcdr_server import MCDReforgedServer
from mcdreforged.plugin.plugin_registry import PluginCommandHolder

mcdr_server: MCDReforgedServer


class Node:
type: str = "GREEDY_STRING"
children = {}

def __init__(self, node):
self.children = {}

self.type = "LITERAL"
# Argument children
for argument_child in node._children:
child_name = f'<{argument_child._ArgumentNode__name}>'
child_name = f'Argument<{argument_child._ArgumentNode__name}>'
self.children[child_name] = Node(argument_child)

# Literal children
for key, literal_children in node._children_literal.items():
self.children[key] = Node(literal_children[0])
# has children
if not node._children:
match type(node).__name__:
case "Integer":
self.type = "INTEGER"
case "Float":
self.type = "DOUBLE"
case "QuotableText":
self.type = "GREEDY_STRING"
case "Text":
self.type = "WORD"
case _:
self.type = "NOTHING"

@property
def dict(self):
if self.children:
return {key: value.dict for key, value in self.children.items()}
else:
return None
return self.type


def register(server: PluginServerInterface):
Expand Down Expand Up @@ -61,6 +78,10 @@ def new_on_plugin_registry_changed():

mcdr_server.on_plugin_registry_changed = new_on_plugin_registry_changed

server.register_command(Literal("!!manual_update").runs(
lambda src, ctx: register(server)
))


def on_server_startup(server: PluginServerInterface):
register(server)

0 comments on commit aa24c67

Please sign in to comment.