feat: add blocks_tool

This commit is contained in:
2026-05-26 13:32:50 +08:00
parent 23e105ffae
commit 73f8c1f2be
5 changed files with 180 additions and 1 deletions

85
scripts/blocks_tool.py Normal file
View File

@@ -0,0 +1,85 @@
import argparse
import sys
import tomllib
from pathlib import Path
from typing import Any
from loguru import logger
VERSION = "0.0.1"
DATA_PATH = "assets/data/block"
TEXTURE_PATH = "assets/texture/block"
def show_data_list():
work_path = Path().parent
data_path = work_path / DATA_PATH
blocks: list[dict[str, Any]] = []
for block in data_path.rglob("*.toml"):
if not block.is_file():
continue
if block.name == "template.toml":
continue
with open(block, "rb") as f:
blocks.append(tomllib.load(f))
blocks.sort(key=lambda x: x["id"])
for block in blocks:
print(f"id: {block['id']} name: {block['name']}")
def check_path():
work_path = Path().parent
logger.info(f"Work Path {work_path.resolve()}")
logger.info(f"Script Dir {sys.path[0]}")
data_path = work_path / DATA_PATH
if not data_path.exists():
logger.error(f"Blcoks Data Path {data_path} not Exists!")
else:
logger.info(f"Blocks Data Path {data_path}")
texture_path = work_path / TEXTURE_PATH
if not texture_path.exists():
logger.error(f"Blocks Texture Path {texture_path} not Exists!")
else:
logger.info(f"Blocks Texture Path {texture_path}")
def handle_args(args: argparse.Namespace):
if args.version:
print(f"Blocks Tools: {VERSION}")
print(f"Python: {sys.version}")
if args.path:
check_path()
if args.list:
show_data_list()
def init_parser(parser: argparse.ArgumentParser):
parser.add_argument(
"-v", "--version", action="store_true", help="Show Blocks Tools Version"
)
parser.add_argument(
"--path", action="store_true", help="Check Blcoks Data and Texture Path"
)
parser.add_argument("-l", "--list", action="store_true", help="Show Blocks List")
def main():
parser = argparse.ArgumentParser(description="Block Manage Tool")
init_parser(parser)
if len(sys.argv) == 1:
parser.print_help()
exit(0)
args = parser.parse_args()
handle_args(args)
if __name__ == "__main__":
main()