mirror of
https://github.com/TriM-Organization/Musicreater.git
synced 2024-11-13 10:57:43 +08:00
优化example结构,支持mcstructure的计分板播放
This commit is contained in:
parent
b0bdb7b445
commit
041c64ff65
3
.gitignore
vendored
3
.gitignore
vendored
@ -18,6 +18,9 @@
|
|||||||
/utils
|
/utils
|
||||||
test.py
|
test.py
|
||||||
RES.txt
|
RES.txt
|
||||||
|
/MSCT_Packer.py
|
||||||
|
/Packer/*.MPK
|
||||||
|
/Packer/checksum.txt
|
||||||
|
|
||||||
# Byte-compiled / optimized
|
# Byte-compiled / optimized
|
||||||
__pycache__/
|
__pycache__/
|
||||||
|
@ -5,8 +5,8 @@
|
|||||||
Musicreater(音·创)
|
Musicreater(音·创)
|
||||||
A free open source library used for convert midi file into formats that is suitable for **Minecraft**.
|
A free open source library used for convert midi file into formats that is suitable for **Minecraft**.
|
||||||
|
|
||||||
版权所有 © 2023 音·创 开发者
|
版权所有 © 2024 音·创 开发者
|
||||||
Copyright © 2023 all the developers of Musicreater
|
Copyright © 2024 all the developers of Musicreater
|
||||||
|
|
||||||
开源相关声明请见 仓库根目录下的 License.md
|
开源相关声明请见 仓库根目录下的 License.md
|
||||||
Terms & Conditions: License.md in the root directory
|
Terms & Conditions: License.md in the root directory
|
||||||
@ -17,8 +17,8 @@ Terms & Conditions: License.md in the root directory
|
|||||||
# 若需转载或借鉴 许可声明请查看仓库目录下的 License.md
|
# 若需转载或借鉴 许可声明请查看仓库目录下的 License.md
|
||||||
|
|
||||||
|
|
||||||
__version__ = "1.7.2.1"
|
__version__ = "1.7.3"
|
||||||
__vername__ = "修复指令错误问题"
|
__vername__ = "功能结构化"
|
||||||
__author__ = (
|
__author__ = (
|
||||||
("金羿", "Eilles Wan"),
|
("金羿", "Eilles Wan"),
|
||||||
("诸葛亮与八卦阵", "bgArray"),
|
("诸葛亮与八卦阵", "bgArray"),
|
||||||
|
@ -5,8 +5,8 @@
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
"""
|
"""
|
||||||
版权所有 © 2023 音·创 开发者
|
版权所有 © 2024 音·创 开发者
|
||||||
Copyright © 2023 all the developers of Musicreater
|
Copyright © 2024 all the developers of Musicreater
|
||||||
|
|
||||||
开源相关声明请见 仓库根目录下的 License.md
|
开源相关声明请见 仓库根目录下的 License.md
|
||||||
Terms & Conditions: License.md in the root directory
|
Terms & Conditions: License.md in the root directory
|
||||||
|
@ -5,8 +5,8 @@
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
"""
|
"""
|
||||||
版权所有 © 2023 音·创 开发者
|
版权所有 © 2024 音·创 开发者
|
||||||
Copyright © 2023 all the developers of Musicreater
|
Copyright © 2024 all the developers of Musicreater
|
||||||
|
|
||||||
开源相关声明请见 仓库根目录下的 License.md
|
开源相关声明请见 仓库根目录下的 License.md
|
||||||
Terms & Conditions: License.md in the root directory
|
Terms & Conditions: License.md in the root directory
|
||||||
|
@ -5,8 +5,8 @@
|
|||||||
|
|
||||||
|
|
||||||
"""
|
"""
|
||||||
版权所有 © 2023 音·创 开发者
|
版权所有 © 2024 音·创 开发者
|
||||||
Copyright © 2023 all the developers of Musicreater
|
Copyright © 2024 all the developers of Musicreater
|
||||||
|
|
||||||
开源相关声明请见 仓库根目录下的 License.md
|
开源相关声明请见 仓库根目录下的 License.md
|
||||||
Terms & Conditions: License.md in the root directory
|
Terms & Conditions: License.md in the root directory
|
||||||
|
@ -22,8 +22,8 @@
|
|||||||
Musicreater (音·创)
|
Musicreater (音·创)
|
||||||
A free open source library used for convert midi file into formats that is suitable for **Minecraft**.
|
A free open source library used for convert midi file into formats that is suitable for **Minecraft**.
|
||||||
|
|
||||||
版权所有 © 2023 音·创 开发者
|
版权所有 © 2024 音·创 开发者
|
||||||
Copyright © 2023 all the developers of Musicreater
|
Copyright © 2024 all the developers of Musicreater
|
||||||
|
|
||||||
开源相关声明请见 ../License.md
|
开源相关声明请见 ../License.md
|
||||||
Terms & Conditions: ../License.md
|
Terms & Conditions: ../License.md
|
||||||
|
@ -7,8 +7,8 @@
|
|||||||
Musicreater (音·创)
|
Musicreater (音·创)
|
||||||
A free open source library used for convert midi file into formats that is suitable for **Minecraft**.
|
A free open source library used for convert midi file into formats that is suitable for **Minecraft**.
|
||||||
|
|
||||||
版权所有 © 2023 音·创 开发者
|
版权所有 © 2024 音·创 开发者
|
||||||
Copyright © 2023 all the developers of Musicreater
|
Copyright © 2024 all the developers of Musicreater
|
||||||
|
|
||||||
开源相关声明请见 仓库根目录下的 License.md
|
开源相关声明请见 仓库根目录下的 License.md
|
||||||
Terms & Conditions: License.md in the root directory
|
Terms & Conditions: License.md in the root directory
|
||||||
@ -724,7 +724,7 @@ class MidiConvert:
|
|||||||
command_channels.append(this_channel)
|
command_channels.append(this_channel)
|
||||||
|
|
||||||
self.music_tick_num = max_score
|
self.music_tick_num = max_score
|
||||||
return (command_channels, command_amount, max_score)
|
return command_channels, command_amount, max_score
|
||||||
|
|
||||||
def to_command_list_in_delay(
|
def to_command_list_in_delay(
|
||||||
self,
|
self,
|
||||||
|
@ -2,8 +2,8 @@
|
|||||||
"""
|
"""
|
||||||
存放非音·创本体的附加内容(插件?)
|
存放非音·创本体的附加内容(插件?)
|
||||||
|
|
||||||
版权所有 © 2023 音·创 开发者
|
版权所有 © 2024 音·创 开发者
|
||||||
Copyright © 2023 all the developers of Musicreater
|
Copyright © 2024 all the developers of Musicreater
|
||||||
|
|
||||||
开源相关声明请见 仓库根目录下的 License.md
|
开源相关声明请见 仓库根目录下的 License.md
|
||||||
Terms & Conditions: License.md in the root directory
|
Terms & Conditions: License.md in the root directory
|
||||||
@ -15,8 +15,57 @@ Terms & Conditions: License.md in the root directory
|
|||||||
|
|
||||||
|
|
||||||
__all__ = [
|
__all__ = [
|
||||||
|
# 通用
|
||||||
"ConvertConfig",
|
"ConvertConfig",
|
||||||
|
"bottem_side_length_of_smallest_square_bottom_box",
|
||||||
|
# 打包
|
||||||
|
"compress_zipfile",
|
||||||
|
"behavior_mcpack_manifest",
|
||||||
|
# MCSTRUCTURE 函数
|
||||||
|
"antiaxis",
|
||||||
|
"forward_IER",
|
||||||
|
"command_statevalue",
|
||||||
|
"form_note_block_in_NBT_struct",
|
||||||
|
"form_repeater_in_NBT_struct",
|
||||||
|
"form_command_block_in_NBT_struct",
|
||||||
|
"commands_to_structure",
|
||||||
|
"commands_to_redstone_delay_structure",
|
||||||
|
# MCSTRUCTURE 常量
|
||||||
|
"AXIS_PARTICULAR_VALUE",
|
||||||
|
"COMPABILITY_VERSION_117",
|
||||||
|
"COMPABILITY_VERSION_119",
|
||||||
|
# BDX 函数
|
||||||
|
"bdx_move",
|
||||||
|
"form_command_block_in_BDX_bytes",
|
||||||
|
"commands_to_BDX_bytes",
|
||||||
|
# BDX 常量
|
||||||
|
"BDX_MOVE_KEY",
|
||||||
]
|
]
|
||||||
__author__ = (("金羿", "Eilles Wan"), ("诸葛亮与八卦阵", "bgArray"))
|
__author__ = (("金羿", "Eilles Wan"), ("诸葛亮与八卦阵", "bgArray"))
|
||||||
|
|
||||||
from .main import *
|
from .main import ConvertConfig
|
||||||
|
|
||||||
|
from .archive import compress_zipfile, behavior_mcpack_manifest
|
||||||
|
|
||||||
|
from .bdx import (
|
||||||
|
BDX_MOVE_KEY,
|
||||||
|
bdx_move,
|
||||||
|
form_command_block_in_BDX_bytes,
|
||||||
|
commands_to_BDX_bytes,
|
||||||
|
)
|
||||||
|
|
||||||
|
from .common import bottem_side_length_of_smallest_square_bottom_box
|
||||||
|
|
||||||
|
from .mcstructure import (
|
||||||
|
antiaxis,
|
||||||
|
forward_IER,
|
||||||
|
AXIS_PARTICULAR_VALUE,
|
||||||
|
COMPABILITY_VERSION_119,
|
||||||
|
COMPABILITY_VERSION_117,
|
||||||
|
command_statevalue,
|
||||||
|
form_note_block_in_NBT_struct,
|
||||||
|
form_repeater_in_NBT_struct,
|
||||||
|
form_command_block_in_NBT_struct,
|
||||||
|
commands_to_structure,
|
||||||
|
commands_to_redstone_delay_structure,
|
||||||
|
)
|
||||||
|
@ -2,8 +2,8 @@
|
|||||||
"""
|
"""
|
||||||
用以生成附加包的附加功能
|
用以生成附加包的附加功能
|
||||||
|
|
||||||
版权所有 © 2023 音·创 开发者
|
版权所有 © 2024 音·创 开发者
|
||||||
Copyright © 2023 all the developers of Musicreater
|
Copyright © 2024 all the developers of Musicreater
|
||||||
|
|
||||||
开源相关声明请见 仓库根目录下的 License.md
|
开源相关声明请见 仓库根目录下的 License.md
|
||||||
Terms & Conditions: License.md in the root directory
|
Terms & Conditions: License.md in the root directory
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
"""
|
"""
|
||||||
版权所有 © 2023 音·创 开发者
|
版权所有 © 2024 音·创 开发者
|
||||||
Copyright © 2023 all the developers of Musicreater
|
Copyright © 2024 all the developers of Musicreater
|
||||||
|
|
||||||
开源相关声明请见 仓库根目录下的 License.md
|
开源相关声明请见 仓库根目录下的 License.md
|
||||||
Terms & Conditions: License.md in the root directory
|
Terms & Conditions: License.md in the root directory
|
||||||
|
@ -5,8 +5,8 @@
|
|||||||
|
|
||||||
|
|
||||||
"""
|
"""
|
||||||
版权所有 © 2023 音·创 开发者
|
版权所有 © 2024 音·创 开发者
|
||||||
Copyright © 2023 all the developers of Musicreater
|
Copyright © 2024 all the developers of Musicreater
|
||||||
|
|
||||||
开源相关声明请见 仓库根目录下的 License.md
|
开源相关声明请见 仓库根目录下的 License.md
|
||||||
Terms & Conditions: License.md in the root directory
|
Terms & Conditions: License.md in the root directory
|
||||||
|
@ -4,8 +4,8 @@
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
"""
|
"""
|
||||||
版权所有 © 2023 音·创 开发者
|
版权所有 © 2024 音·创 开发者
|
||||||
Copyright © 2023 all the developers of Musicreater
|
Copyright © 2024 all the developers of Musicreater
|
||||||
|
|
||||||
开源相关声明请见 仓库根目录下的 License.md
|
开源相关声明请见 仓库根目录下的 License.md
|
||||||
Terms & Conditions: License.md in the root directory
|
Terms & Conditions: License.md in the root directory
|
||||||
@ -21,7 +21,7 @@ from ..constants import x, y, z
|
|||||||
from ..subclass import SingleCommand
|
from ..subclass import SingleCommand
|
||||||
from .common import bottem_side_length_of_smallest_square_bottom_box
|
from .common import bottem_side_length_of_smallest_square_bottom_box
|
||||||
|
|
||||||
bdx_key = {
|
BDX_MOVE_KEY = {
|
||||||
"x": [b"\x0f", b"\x0e", b"\x1c", b"\x14", b"\x15"],
|
"x": [b"\x0f", b"\x0e", b"\x1c", b"\x14", b"\x15"],
|
||||||
"y": [b"\x11", b"\x10", b"\x1d", b"\x16", b"\x17"],
|
"y": [b"\x11", b"\x10", b"\x1d", b"\x16", b"\x17"],
|
||||||
"z": [b"\x13", b"\x12", b"\x1e", b"\x18", b"\x19"],
|
"z": [b"\x13", b"\x12", b"\x1e", b"\x18", b"\x19"],
|
||||||
@ -34,21 +34,18 @@ def bdx_move(axis: str, value: int):
|
|||||||
if value == 0:
|
if value == 0:
|
||||||
return b""
|
return b""
|
||||||
if abs(value) == 1:
|
if abs(value) == 1:
|
||||||
return bdx_key[axis][0 if value == -1 else 1]
|
return BDX_MOVE_KEY[axis][0 if value == -1 else 1]
|
||||||
|
|
||||||
pointer = sum(
|
pointer = sum(
|
||||||
[
|
[
|
||||||
1 if i else 0
|
value != -1,
|
||||||
for i in (
|
value < -1 or value > 1,
|
||||||
value != -1,
|
value < -128 or value > 127,
|
||||||
value < -1 or value > 1,
|
value < -32768 or value > 32767,
|
||||||
value < -128 or value > 127,
|
|
||||||
value < -32768 or value > 32767,
|
|
||||||
)
|
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
|
|
||||||
return bdx_key[axis][pointer] + value.to_bytes(
|
return BDX_MOVE_KEY[axis][pointer] + value.to_bytes(
|
||||||
2 ** (pointer - 2), "big", signed=True
|
2 ** (pointer - 2), "big", signed=True
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -198,13 +195,13 @@ def commands_to_BDX_bytes(
|
|||||||
):
|
):
|
||||||
now_z -= 1 if z_forward else -1
|
now_z -= 1 if z_forward else -1
|
||||||
z_forward = not z_forward
|
z_forward = not z_forward
|
||||||
_bytes += bdx_key[x][1]
|
_bytes += BDX_MOVE_KEY[x][1]
|
||||||
now_x += 1
|
now_x += 1
|
||||||
else:
|
else:
|
||||||
_bytes += bdx_key[z][int(z_forward)]
|
_bytes += BDX_MOVE_KEY[z][int(z_forward)]
|
||||||
|
|
||||||
else:
|
else:
|
||||||
_bytes += bdx_key[y][int(y_forward)]
|
_bytes += BDX_MOVE_KEY[y][int(y_forward)]
|
||||||
|
|
||||||
return (
|
return (
|
||||||
_bytes,
|
_bytes,
|
||||||
|
@ -2,8 +2,8 @@
|
|||||||
"""
|
"""
|
||||||
用以生成BDX结构文件的附加功能
|
用以生成BDX结构文件的附加功能
|
||||||
|
|
||||||
版权所有 © 2023 音·创 开发者
|
版权所有 © 2024 音·创 开发者
|
||||||
Copyright © 2023 all the developers of Musicreater
|
Copyright © 2024 all the developers of Musicreater
|
||||||
|
|
||||||
开源相关声明请见 仓库根目录下的 License.md
|
开源相关声明请见 仓库根目录下的 License.md
|
||||||
Terms & Conditions: License.md in the root directory
|
Terms & Conditions: License.md in the root directory
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
"""
|
"""
|
||||||
版权所有 © 2023 音·创 开发者
|
版权所有 © 2024 音·创 开发者
|
||||||
Copyright © 2023 all the developers of Musicreater
|
Copyright © 2024 all the developers of Musicreater
|
||||||
|
|
||||||
开源相关声明请见 仓库根目录下的 License.md
|
开源相关声明请见 仓库根目录下的 License.md
|
||||||
Terms & Conditions: License.md in the root directory
|
Terms & Conditions: License.md in the root directory
|
||||||
|
@ -4,8 +4,8 @@
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
"""
|
"""
|
||||||
版权所有 © 2023 音·创 开发者
|
版权所有 © 2024 音·创 开发者
|
||||||
Copyright © 2023 all the developers of Musicreater
|
Copyright © 2024 all the developers of Musicreater
|
||||||
|
|
||||||
开源相关声明请见 仓库根目录下的 License.md
|
开源相关声明请见 仓库根目录下的 License.md
|
||||||
Terms & Conditions: License.md in the root directory
|
Terms & Conditions: License.md in the root directory
|
||||||
|
@ -4,8 +4,8 @@
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
"""
|
"""
|
||||||
版权所有 © 2023 音·创 开发者
|
版权所有 © 2024 音·创 开发者
|
||||||
Copyright © 2023 all the developers of Musicreater
|
Copyright © 2024 all the developers of Musicreater
|
||||||
|
|
||||||
开源相关声明请见 仓库根目录下的 License.md
|
开源相关声明请见 仓库根目录下的 License.md
|
||||||
Terms & Conditions: License.md in the root directory
|
Terms & Conditions: License.md in the root directory
|
||||||
|
@ -2,8 +2,8 @@
|
|||||||
"""
|
"""
|
||||||
用以生成单个mcstructure文件的附加功能
|
用以生成单个mcstructure文件的附加功能
|
||||||
|
|
||||||
版权所有 © 2023 音·创 开发者
|
版权所有 © 2024 音·创 开发者
|
||||||
Copyright © 2023 all the developers of Musicreater
|
Copyright © 2024 all the developers of Musicreater
|
||||||
|
|
||||||
开源相关声明请见 仓库根目录下的 License.md
|
开源相关声明请见 仓库根目录下的 License.md
|
||||||
Terms & Conditions: License.md in the root directory
|
Terms & Conditions: License.md in the root directory
|
||||||
@ -17,7 +17,8 @@ Terms & Conditions: License.md in the root directory
|
|||||||
__all__ = [
|
__all__ = [
|
||||||
"to_mcstructure_file_in_delay",
|
"to_mcstructure_file_in_delay",
|
||||||
"to_mcstructure_file_in_repeater",
|
"to_mcstructure_file_in_repeater",
|
||||||
|
"to_mcstructure_file_in_score",
|
||||||
]
|
]
|
||||||
__author__ = (("金羿", "Eilles Wan"),)
|
__author__ = (("金羿", "Eilles Wan"),)
|
||||||
|
|
||||||
from .main import to_mcstructure_file_in_delay, to_mcstructure_file_in_repeater
|
from .main import to_mcstructure_file_in_delay, to_mcstructure_file_in_repeater, to_mcstructure_file_in_score
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
"""
|
"""
|
||||||
版权所有 © 2023 音·创 开发者
|
版权所有 © 2024 音·创 开发者
|
||||||
Copyright © 2023 all the developers of Musicreater
|
Copyright © 2024 all the developers of Musicreater
|
||||||
|
|
||||||
开源相关声明请见 仓库根目录下的 License.md
|
开源相关声明请见 仓库根目录下的 License.md
|
||||||
Terms & Conditions: License.md in the root directory
|
Terms & Conditions: License.md in the root directory
|
||||||
@ -14,9 +14,10 @@ Terms & Conditions: License.md in the root directory
|
|||||||
import os
|
import os
|
||||||
from typing import Literal
|
from typing import Literal
|
||||||
|
|
||||||
from ...exceptions import CommandFormatError
|
# from ...exceptions import CommandFormatError
|
||||||
from ...main import MidiConvert
|
from ...main import MidiConvert
|
||||||
from ..main import ConvertConfig
|
from ..main import ConvertConfig
|
||||||
|
from ...subclass import SingleCommand
|
||||||
from ..mcstructure import (
|
from ..mcstructure import (
|
||||||
COMPABILITY_VERSION_117,
|
COMPABILITY_VERSION_117,
|
||||||
COMPABILITY_VERSION_119,
|
COMPABILITY_VERSION_119,
|
||||||
@ -47,7 +48,7 @@ def to_mcstructure_file_in_delay(
|
|||||||
|
|
||||||
Returns
|
Returns
|
||||||
-------
|
-------
|
||||||
tuple[tuple[int,]结构大小, int音乐总延迟]
|
tuple[tuple[int,int,int]结构大小, int音乐总延迟]
|
||||||
"""
|
"""
|
||||||
|
|
||||||
compability_ver = (
|
compability_ver = (
|
||||||
@ -80,6 +81,78 @@ def to_mcstructure_file_in_delay(
|
|||||||
return size, max_delay
|
return size, max_delay
|
||||||
|
|
||||||
|
|
||||||
|
def to_mcstructure_file_in_score(
|
||||||
|
midi_cvt: MidiConvert,
|
||||||
|
data_cfg: ConvertConfig,
|
||||||
|
scoreboard_name: str = "mscplay",
|
||||||
|
auto_reset: bool = False,
|
||||||
|
max_height: int = 64,
|
||||||
|
):
|
||||||
|
"""
|
||||||
|
将midi以延迟播放器形式转换为mcstructure结构文件
|
||||||
|
|
||||||
|
Parameters
|
||||||
|
----------
|
||||||
|
midi_cvt: MidiConvert 对象
|
||||||
|
用于转换的MidiConvert对象
|
||||||
|
data_cfg: ConvertConfig 对象
|
||||||
|
部分转换通用参数
|
||||||
|
scoreboard_name: str
|
||||||
|
我的世界的计分板名称
|
||||||
|
auto_reset: bool
|
||||||
|
是否自动重置计分板
|
||||||
|
max_height: int
|
||||||
|
生成结构最大高度
|
||||||
|
|
||||||
|
Returns
|
||||||
|
-------
|
||||||
|
tuple[tuple[int,int,int]结构大小, int音乐总延迟, int指令数量
|
||||||
|
"""
|
||||||
|
|
||||||
|
compability_ver = (
|
||||||
|
COMPABILITY_VERSION_117
|
||||||
|
if midi_cvt.enable_old_exe_format
|
||||||
|
else COMPABILITY_VERSION_119
|
||||||
|
)
|
||||||
|
|
||||||
|
cmd_list, cmd_count, max_delay = midi_cvt.to_command_list_in_score(
|
||||||
|
scoreboard_name,
|
||||||
|
data_cfg.volume_ratio,
|
||||||
|
data_cfg.speed_multiplier,
|
||||||
|
)
|
||||||
|
|
||||||
|
if not os.path.exists(data_cfg.dist_path):
|
||||||
|
os.makedirs(data_cfg.dist_path)
|
||||||
|
|
||||||
|
struct, size, end_pos = commands_to_structure(
|
||||||
|
midi_cvt.music_command_list+(
|
||||||
|
[
|
||||||
|
SingleCommand(
|
||||||
|
command="scoreboard players reset @a[scores={"
|
||||||
|
+ scoreboard_name
|
||||||
|
+ "="
|
||||||
|
+ str(max_delay + 20)
|
||||||
|
+ "}] "
|
||||||
|
+ scoreboard_name,
|
||||||
|
annotation="自动重置计分板",
|
||||||
|
)
|
||||||
|
]
|
||||||
|
if auto_reset
|
||||||
|
else []
|
||||||
|
), max_height - 1, compability_version_=compability_ver
|
||||||
|
)
|
||||||
|
|
||||||
|
with open(
|
||||||
|
os.path.abspath(
|
||||||
|
os.path.join(data_cfg.dist_path, f"{midi_cvt.midi_music_name}.mcstructure")
|
||||||
|
),
|
||||||
|
"wb+",
|
||||||
|
) as f:
|
||||||
|
struct.dump(f)
|
||||||
|
|
||||||
|
return size, max_delay, cmd_count
|
||||||
|
|
||||||
|
|
||||||
def to_mcstructure_file_in_repeater(
|
def to_mcstructure_file_in_repeater(
|
||||||
midi_cvt: MidiConvert,
|
midi_cvt: MidiConvert,
|
||||||
data_cfg: ConvertConfig,
|
data_cfg: ConvertConfig,
|
||||||
@ -105,7 +178,7 @@ def to_mcstructure_file_in_repeater(
|
|||||||
|
|
||||||
Returns
|
Returns
|
||||||
-------
|
-------
|
||||||
tuple[tuple[int,]结构大小, int音乐总延迟]
|
tuple[tuple[int,int,int]结构大小, int音乐总延迟]
|
||||||
"""
|
"""
|
||||||
|
|
||||||
compability_ver = (
|
compability_ver = (
|
||||||
|
@ -4,8 +4,8 @@
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
"""
|
"""
|
||||||
版权所有 © 2023 音·创 开发者
|
版权所有 © 2024 音·创 开发者
|
||||||
Copyright © 2023 all the developers of Musicreater
|
Copyright © 2024 all the developers of Musicreater
|
||||||
|
|
||||||
开源相关声明请见 仓库根目录下的 License.md
|
开源相关声明请见 仓库根目录下的 License.md
|
||||||
Terms & Conditions: License.md in the root directory
|
Terms & Conditions: License.md in the root directory
|
||||||
|
@ -4,8 +4,8 @@
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
"""
|
"""
|
||||||
版权所有 © 2023 音·创 开发者
|
版权所有 © 2024 音·创 开发者
|
||||||
Copyright © 2023 all the developers of Musicreater
|
Copyright © 2024 all the developers of Musicreater
|
||||||
|
|
||||||
开源相关声明请见 仓库根目录下的 License.md
|
开源相关声明请见 仓库根目录下的 License.md
|
||||||
Terms & Conditions: License.md in the root directory
|
Terms & Conditions: License.md in the root directory
|
||||||
|
@ -4,8 +4,8 @@
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
"""
|
"""
|
||||||
版权所有 © 2023 音·创 开发者
|
版权所有 © 2024 音·创 开发者
|
||||||
Copyright © 2023 all the developers of Musicreater
|
Copyright © 2024 all the developers of Musicreater
|
||||||
|
|
||||||
开源相关声明请见 仓库根目录下的 License.md
|
开源相关声明请见 仓库根目录下的 License.md
|
||||||
Terms & Conditions: License.md in the root directory
|
Terms & Conditions: License.md in the root directory
|
||||||
|
@ -2,8 +2,8 @@
|
|||||||
"""
|
"""
|
||||||
用以生成Schematic结构的附加功能
|
用以生成Schematic结构的附加功能
|
||||||
|
|
||||||
版权所有 © 2023 音·创 开发者
|
版权所有 © 2024 音·创 开发者
|
||||||
Copyright © 2023 all the developers of Musicreater
|
Copyright © 2024 all the developers of Musicreater
|
||||||
|
|
||||||
开源相关声明请见 仓库根目录下的 License.md
|
开源相关声明请见 仓库根目录下的 License.md
|
||||||
Terms & Conditions: License.md in the root directory
|
Terms & Conditions: License.md in the root directory
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
"""
|
"""
|
||||||
版权所有 © 2023 音·创 开发者
|
版权所有 © 2024 音·创 开发者
|
||||||
Copyright © 2023 all the developers of Musicreater
|
Copyright © 2024 all the developers of Musicreater
|
||||||
|
|
||||||
开源相关声明请见 仓库根目录下的 License.md
|
开源相关声明请见 仓库根目录下的 License.md
|
||||||
Terms & Conditions: License.md in the root directory
|
Terms & Conditions: License.md in the root directory
|
||||||
|
@ -4,8 +4,8 @@
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
"""
|
"""
|
||||||
版权所有 © 2023 音·创 开发者
|
版权所有 © 2024 音·创 开发者
|
||||||
Copyright © 2023 all the developers of Musicreater
|
Copyright © 2024 all the developers of Musicreater
|
||||||
|
|
||||||
开源相关声明请见 仓库根目录下的 License.md
|
开源相关声明请见 仓库根目录下的 License.md
|
||||||
Terms & Conditions: License.md in the root directory
|
Terms & Conditions: License.md in the root directory
|
||||||
|
@ -2,8 +2,8 @@
|
|||||||
"""
|
"""
|
||||||
用以启动WebSocket服务器播放的附加功能
|
用以启动WebSocket服务器播放的附加功能
|
||||||
|
|
||||||
版权所有 © 2023 音·创 开发者
|
版权所有 © 2024 音·创 开发者
|
||||||
Copyright © 2023 all the developers of Musicreater
|
Copyright © 2024 all the developers of Musicreater
|
||||||
|
|
||||||
开源相关声明请见 仓库根目录下的 License.md
|
开源相关声明请见 仓库根目录下的 License.md
|
||||||
Terms & Conditions: License.md in the root directory
|
Terms & Conditions: License.md in the root directory
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
"""
|
"""
|
||||||
版权所有 © 2023 音·创 开发者
|
版权所有 © 2024 音·创 开发者
|
||||||
Copyright © 2023 all the developers of Musicreater
|
Copyright © 2024 all the developers of Musicreater
|
||||||
|
|
||||||
开源相关声明请见 仓库根目录下的 License.md
|
开源相关声明请见 仓库根目录下的 License.md
|
||||||
Terms & Conditions: License.md in the root directory
|
Terms & Conditions: License.md in the root directory
|
||||||
|
@ -4,8 +4,8 @@
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
"""
|
"""
|
||||||
版权所有 © 2023 音·创 开发者
|
版权所有 © 2024 音·创 开发者
|
||||||
Copyright © 2023 all the developers of Musicreater
|
Copyright © 2024 all the developers of Musicreater
|
||||||
|
|
||||||
开源相关声明请见 仓库根目录下的 License.md
|
开源相关声明请见 仓库根目录下的 License.md
|
||||||
Terms & Conditions: License.md in the root directory
|
Terms & Conditions: License.md in the root directory
|
||||||
|
@ -5,8 +5,8 @@
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
"""
|
"""
|
||||||
版权所有 © 2023 音·创 开发者
|
版权所有 © 2024 音·创 开发者
|
||||||
Copyright © 2023 all the developers of Musicreater
|
Copyright © 2024 all the developers of Musicreater
|
||||||
|
|
||||||
开源相关声明请见 仓库根目录下的 License.md
|
开源相关声明请见 仓库根目录下的 License.md
|
||||||
Terms & Conditions: License.md in the root directory
|
Terms & Conditions: License.md in the root directory
|
||||||
|
@ -5,8 +5,8 @@
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
"""
|
"""
|
||||||
版权所有 © 2023 音·创 开发者
|
版权所有 © 2024 音·创 开发者
|
||||||
Copyright © 2023 all the developers of Musicreater
|
Copyright © 2024 all the developers of Musicreater
|
||||||
|
|
||||||
开源相关声明请见 仓库根目录下的 License.md
|
开源相关声明请见 仓库根目录下的 License.md
|
||||||
Terms & Conditions: License.md in the root directory
|
Terms & Conditions: License.md in the root directory
|
||||||
|
@ -4,8 +4,8 @@
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
"""
|
"""
|
||||||
版权所有 © 2023 音·创 开发者
|
版权所有 © 2024 音·创 开发者
|
||||||
Copyright © 2023 all the developers of Musicreater
|
Copyright © 2024 all the developers of Musicreater
|
||||||
|
|
||||||
开源相关声明请见 仓库根目录下的 License.md
|
开源相关声明请见 仓库根目录下的 License.md
|
||||||
Terms & Conditions: License.md in the root directory
|
Terms & Conditions: License.md in the root directory
|
||||||
|
70
Packer/MSCT_Packer.py
Normal file
70
Packer/MSCT_Packer.py
Normal file
@ -0,0 +1,70 @@
|
|||||||
|
import Musicreater
|
||||||
|
import Musicreater.experiment
|
||||||
|
import Musicreater.previous
|
||||||
|
|
||||||
|
import Musicreater.plugin
|
||||||
|
|
||||||
|
from Musicreater.plugin.addonpack import (
|
||||||
|
to_addon_pack_in_delay,
|
||||||
|
to_addon_pack_in_repeater,
|
||||||
|
to_addon_pack_in_score,
|
||||||
|
)
|
||||||
|
from Musicreater.plugin.mcstructfile import (
|
||||||
|
to_mcstructure_file_in_delay,
|
||||||
|
to_mcstructure_file_in_repeater,
|
||||||
|
to_mcstructure_file_in_score,
|
||||||
|
)
|
||||||
|
|
||||||
|
from Musicreater.plugin.bdxfile import to_BDX_file_in_delay, to_BDX_file_in_score
|
||||||
|
|
||||||
|
MSCT_MAIN = (
|
||||||
|
Musicreater,
|
||||||
|
Musicreater.experiment,
|
||||||
|
Musicreater.previous,
|
||||||
|
)
|
||||||
|
|
||||||
|
MSCT_PLUGIN = (Musicreater.plugin,)
|
||||||
|
|
||||||
|
MSCT_PLUGIN_FUNCTION = (
|
||||||
|
to_addon_pack_in_delay,
|
||||||
|
to_addon_pack_in_repeater,
|
||||||
|
to_addon_pack_in_score,
|
||||||
|
to_mcstructure_file_in_delay,
|
||||||
|
to_mcstructure_file_in_repeater,
|
||||||
|
to_mcstructure_file_in_score,
|
||||||
|
to_BDX_file_in_delay,
|
||||||
|
to_BDX_file_in_score,
|
||||||
|
)
|
||||||
|
|
||||||
|
import hashlib
|
||||||
|
|
||||||
|
import dill
|
||||||
|
import brotli
|
||||||
|
|
||||||
|
|
||||||
|
def enpack_llc_pack(sth, to_dist: str):
|
||||||
|
packing_bytes = brotli.compress(
|
||||||
|
dill.dumps(
|
||||||
|
sth,
|
||||||
|
)
|
||||||
|
)
|
||||||
|
with open(
|
||||||
|
to_dist,
|
||||||
|
"wb",
|
||||||
|
) as f:
|
||||||
|
f.write(packing_bytes)
|
||||||
|
|
||||||
|
return hashlib.sha256(packing_bytes)
|
||||||
|
|
||||||
|
|
||||||
|
with open("./Packer/checksum.txt", "w", encoding="utf-8") as f:
|
||||||
|
f.write("MSCT_MAIN:\n")
|
||||||
|
f.write(enpack_llc_pack(MSCT_MAIN, "./Packer/MSCT_MAIN.MPK").hexdigest())
|
||||||
|
f.write("\nMSCT_PLUGIN:\n")
|
||||||
|
f.write(enpack_llc_pack(MSCT_PLUGIN, "./Packer/MSCT_PLUGIN.MPK").hexdigest())
|
||||||
|
f.write("\nMSCT_PLUGIN_FUNCTION:\n")
|
||||||
|
f.write(
|
||||||
|
enpack_llc_pack(
|
||||||
|
MSCT_PLUGIN_FUNCTION, "./Packer/MSCT_PLUGIN_FUNCTION.MPK"
|
||||||
|
).hexdigest()
|
||||||
|
)
|
@ -12,8 +12,8 @@
|
|||||||
|
|
||||||
**_使用时请遵循协议规定_**
|
**_使用时请遵循协议规定_**
|
||||||
|
|
||||||
- 版权所有 © 2023 音·创 开发者
|
- 版权所有 © 2024 音·创 开发者
|
||||||
- Copyright © 2023 all the developers of Musicreater
|
- Copyright © 2024 all the developers of Musicreater
|
||||||
|
|
||||||
* 开源相关声明请见 仓库根目录下的 License.md
|
* 开源相关声明请见 仓库根目录下的 License.md
|
||||||
* Terms & Conditions: License.md in the root directory
|
* Terms & Conditions: License.md in the root directory
|
||||||
|
142
example.py
142
example.py
@ -9,8 +9,8 @@
|
|||||||
Musicreater (音·创)
|
Musicreater (音·创)
|
||||||
A free open source library used for convert midi file into formats that is suitable for **Minecraft**.
|
A free open source library used for convert midi file into formats that is suitable for **Minecraft**.
|
||||||
|
|
||||||
版权所有 © 2023 音·创 开发者
|
版权所有 © 2024 音·创 开发者
|
||||||
Copyright © 2023 all the developers of Musicreater
|
Copyright © 2024 all the developers of Musicreater
|
||||||
|
|
||||||
开源相关声明请见 ./License.md
|
开源相关声明请见 ./License.md
|
||||||
Terms & Conditions: ./License.md
|
Terms & Conditions: ./License.md
|
||||||
@ -25,6 +25,12 @@ from Musicreater.plugin.addonpack import (
|
|||||||
to_addon_pack_in_repeater,
|
to_addon_pack_in_repeater,
|
||||||
to_addon_pack_in_score,
|
to_addon_pack_in_score,
|
||||||
)
|
)
|
||||||
|
from Musicreater.plugin.mcstructfile import (
|
||||||
|
to_mcstructure_file_in_delay,
|
||||||
|
to_mcstructure_file_in_repeater,
|
||||||
|
to_mcstructure_file_in_score,
|
||||||
|
)
|
||||||
|
|
||||||
from Musicreater.plugin.bdxfile import to_BDX_file_in_delay, to_BDX_file_in_score
|
from Musicreater.plugin.bdxfile import to_BDX_file_in_delay, to_BDX_file_in_score
|
||||||
|
|
||||||
# 获取midi列表
|
# 获取midi列表
|
||||||
@ -36,7 +42,9 @@ out_path = input(f"请输入输出路径:")
|
|||||||
|
|
||||||
|
|
||||||
# 选择输出格式
|
# 选择输出格式
|
||||||
fileFormat = int(input(f"请输入输出格式[BDX(1) 或 MCPACK(0)]:").lower())
|
fileFormat = int(
|
||||||
|
input(f"请输入输出格式[MCSTRUCTURE(2) 或 BDX(1) 或 MCPACK(0)]:").lower()
|
||||||
|
)
|
||||||
playerFormat = int(input(f"请选择播放方式[红石(2) 或 计分板(1) 或 延迟(0)]:").lower())
|
playerFormat = int(input(f"请选择播放方式[红石(2) 或 计分板(1) 或 延迟(0)]:").lower())
|
||||||
|
|
||||||
|
|
||||||
@ -50,7 +58,17 @@ def bool_str(sth: str):
|
|||||||
elif str(sth).lower() in ("false", "假", "否", "f", "n"):
|
elif str(sth).lower() in ("false", "假", "否", "f", "n"):
|
||||||
return False
|
return False
|
||||||
else:
|
else:
|
||||||
raise ValueError("布尔字符串啊?")
|
raise ValueError("非法逻辑字串")
|
||||||
|
|
||||||
|
|
||||||
|
def isin(sth: str, range_list: dict):
|
||||||
|
sth = sth.lower()
|
||||||
|
for bool_value, res_list in range_list.items():
|
||||||
|
if sth in res_list:
|
||||||
|
return bool_value
|
||||||
|
raise ValueError(
|
||||||
|
"不在可选范围内:{}".format([j for i in range_list.values() for j in i])
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
if os.path.exists("./demo_config.json"):
|
if os.path.exists("./demo_config.json"):
|
||||||
@ -74,31 +92,63 @@ else:
|
|||||||
bool_str,
|
bool_str,
|
||||||
),
|
),
|
||||||
(
|
(
|
||||||
f"计分板名称:",
|
(
|
||||||
str,
|
f"计分板名称:",
|
||||||
)
|
str,
|
||||||
if playerFormat == 1
|
)
|
||||||
else (
|
if playerFormat == 1
|
||||||
f"玩家选择器:",
|
else (
|
||||||
str,
|
f"玩家选择器:",
|
||||||
|
str,
|
||||||
|
)
|
||||||
),
|
),
|
||||||
(
|
(
|
||||||
f"是否自动重置计分板:",
|
(
|
||||||
bool_str,
|
f"是否自动重置计分板:",
|
||||||
)
|
bool_str,
|
||||||
if playerFormat == 1
|
)
|
||||||
else (),
|
if playerFormat == 1
|
||||||
|
else ()
|
||||||
|
),
|
||||||
(
|
(
|
||||||
f"作者名称:",
|
(
|
||||||
str,
|
f"BDX作者署名:",
|
||||||
)
|
str,
|
||||||
if fileFormat == 1
|
)
|
||||||
else (),
|
if fileFormat == 1
|
||||||
()
|
else (
|
||||||
if playerFormat == 1
|
(
|
||||||
else (
|
(
|
||||||
f"最大结构高度:",
|
"结构延展方向:",
|
||||||
int,
|
lambda a: isin(
|
||||||
|
a,
|
||||||
|
{
|
||||||
|
"z+": ["z+", "Z+"],
|
||||||
|
"x+": ["X+", "x+"],
|
||||||
|
"z-": ["Z-", "z-"],
|
||||||
|
"x-": ["x-", "X-"],
|
||||||
|
},
|
||||||
|
),
|
||||||
|
)
|
||||||
|
if (playerFormat == 2 and fileFormat == 2)
|
||||||
|
else ()
|
||||||
|
),
|
||||||
|
)
|
||||||
|
),
|
||||||
|
(
|
||||||
|
()
|
||||||
|
if playerFormat == 1
|
||||||
|
else (
|
||||||
|
(
|
||||||
|
"基础空白方块:",
|
||||||
|
str,
|
||||||
|
)
|
||||||
|
if (playerFormat == 2 and fileFormat == 2)
|
||||||
|
else (
|
||||||
|
f"最大结构高度:",
|
||||||
|
int,
|
||||||
|
)
|
||||||
|
)
|
||||||
),
|
),
|
||||||
]:
|
]:
|
||||||
if args:
|
if args:
|
||||||
@ -109,12 +159,20 @@ print(f"正在处理 {midi_path} :")
|
|||||||
cvt_mid = Musicreater.MidiConvert.from_midi_file(midi_path, old_exe_format=False)
|
cvt_mid = Musicreater.MidiConvert.from_midi_file(midi_path, old_exe_format=False)
|
||||||
cvt_cfg = ConvertConfig(out_path, *prompts[:3])
|
cvt_cfg = ConvertConfig(out_path, *prompts[:3])
|
||||||
|
|
||||||
if playerFormat == 1:
|
if fileFormat == 0:
|
||||||
cvt_method = to_addon_pack_in_score
|
if playerFormat == 1:
|
||||||
elif playerFormat == 0:
|
cvt_method = to_addon_pack_in_score
|
||||||
cvt_method = to_addon_pack_in_delay
|
elif playerFormat == 0:
|
||||||
elif playerFormat == 2:
|
cvt_method = to_addon_pack_in_delay
|
||||||
cvt_method = to_addon_pack_in_repeater
|
elif playerFormat == 2:
|
||||||
|
cvt_method = to_addon_pack_in_repeater
|
||||||
|
elif fileFormat == 2:
|
||||||
|
if playerFormat == 1:
|
||||||
|
cvt_method = to_mcstructure_file_in_score
|
||||||
|
elif playerFormat == 0:
|
||||||
|
cvt_method = to_mcstructure_file_in_delay
|
||||||
|
elif playerFormat == 2:
|
||||||
|
cvt_method = to_mcstructure_file_in_repeater
|
||||||
|
|
||||||
|
|
||||||
print(
|
print(
|
||||||
@ -122,11 +180,21 @@ print(
|
|||||||
*(cvt_method(cvt_mid, cvt_cfg, *prompts[3:])) # type: ignore
|
*(cvt_method(cvt_mid, cvt_cfg, *prompts[3:])) # type: ignore
|
||||||
)
|
)
|
||||||
if fileFormat == 0
|
if fileFormat == 0
|
||||||
else " 指令总长:{},最高延迟:{},结构大小{},终点坐标{}".format(
|
else (
|
||||||
*(
|
" 指令总长:{},最高延迟:{},结构大小{},终点坐标{}".format(
|
||||||
to_BDX_file_in_score(cvt_mid, cvt_cfg, *prompts[3:])
|
*(
|
||||||
if playerFormat == 1
|
to_BDX_file_in_score(cvt_mid, cvt_cfg, *prompts[3:])
|
||||||
else to_BDX_file_in_delay(cvt_mid, cvt_cfg, *prompts[3:])
|
if playerFormat == 1
|
||||||
|
else to_BDX_file_in_delay(cvt_mid, cvt_cfg, *prompts[3:])
|
||||||
|
)
|
||||||
|
)
|
||||||
|
if fileFormat == 1
|
||||||
|
else (" 结构大小:{},延迟总数:{},指令数量:{}".format(
|
||||||
|
*(cvt_method(cvt_mid, cvt_cfg, *prompts[3:])) # type: ignore
|
||||||
|
) if playerFormat == 2 else
|
||||||
|
" 结构大小:{},延迟总数:{}".format(
|
||||||
|
*(cvt_method(cvt_mid, cvt_cfg, *prompts[3:])) # type: ignore
|
||||||
|
)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
@ -1,11 +0,0 @@
|
|||||||
import Musicreater
|
|
||||||
import Musicreater.plugin
|
|
||||||
import Musicreater.plugin.mcstructfile
|
|
||||||
|
|
||||||
print(
|
|
||||||
Musicreater.plugin.mcstructfile.to_mcstructure_file_in_delay(
|
|
||||||
Musicreater.MidiConvert.from_midi_file(input("midi路径:"), old_exe_format=False),
|
|
||||||
Musicreater.plugin.ConvertConfig(input("输出路径:"), volume=1),
|
|
||||||
max_height=32,
|
|
||||||
)
|
|
||||||
)
|
|
@ -1,10 +0,0 @@
|
|||||||
import Musicreater
|
|
||||||
import Musicreater.plugin
|
|
||||||
import Musicreater.plugin.mcstructfile
|
|
||||||
|
|
||||||
print(
|
|
||||||
Musicreater.plugin.mcstructfile.to_mcstructure_file_in_repeater(
|
|
||||||
Musicreater.MidiConvert.from_midi_file(input("midi路径:"), old_exe_format=False),
|
|
||||||
Musicreater.plugin.ConvertConfig(input("输出路径:"), volume=1),
|
|
||||||
)
|
|
||||||
)
|
|
@ -1,12 +0,0 @@
|
|||||||
import Musicreater.experiment
|
|
||||||
import Musicreater.plugin
|
|
||||||
import Musicreater.plugin.mcstructfile
|
|
||||||
|
|
||||||
print(
|
|
||||||
Musicreater.plugin.mcstructfile.to_mcstructure_file_in_repeater(
|
|
||||||
Musicreater.experiment.FutureMidiConvertM4.from_midi_file(
|
|
||||||
input("midi路径:"), old_exe_format=False
|
|
||||||
),
|
|
||||||
Musicreater.plugin.ConvertConfig(input("输出路径:"), volume=1),
|
|
||||||
)
|
|
||||||
)
|
|
@ -11,4 +11,4 @@
|
|||||||
不得用于商业用途
|
不得用于商业用途
|
||||||
若 音·创 库被用于商业用途,应当将其剔除
|
若 音·创 库被用于商业用途,应当将其剔除
|
||||||
|
|
||||||
版权所有 © 2023 诸葛亮与八卦阵
|
版权所有 © 2024 诸葛亮与八卦阵
|
Loading…
Reference in New Issue
Block a user