from typing import Any
from mcdrpost.constants import OFFHAND_CODE
from mcdrpost.data_structure import Item
from mcdrpost.version_handler.abstract_version_handler import AbstractVersionHandler
# for doc building
try:
import minecraft_data_api as api
except ImportError:
api: Any = None
[文档]
class DefaultVersionHandler(AbstractVersionHandler):
"""这是对 Minecraft 1.17~1.20.5 的简易 Handler"""
[文档]
def get_offhand_item(self, player: str) -> Item:
item = api.convert_minecraft_json(
self.server.rcon_query(f"data get entity {player} {OFFHAND_CODE}")
)
return Item(id=item["id"], count=item["Count"], components=item.get("tag", {}))
[文档]
def replace(self, player: str, item: Item) -> None:
self.server.execute(
f"item replace entity {player} {OFFHAND_CODE} with {self.item2str(item)}"
)
[文档]
@staticmethod
def item2str(item: Item) -> str:
return f"{item.id}{item.components} {item.count}"