From 9f8694ef14c8732d0a8fa6fab60ba22436c3c219 Mon Sep 17 00:00:00 2001 From: bgArray <474037765@qq.com> Date: Tue, 1 Feb 2022 00:07:22 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=B9=B4=E7=AC=AC=E4=B8=80=E6=AC=A1?= =?UTF-8?q?=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/.gitignore | 3 + .idea/Musicreater.iml | 12 + .idea/inspectionProfiles/Project_Default.xml | 46 ++ .../inspectionProfiles/profiles_settings.xml | 6 + .idea/misc.xml | 4 + .idea/modules.xml | 8 + .idea/vcs.xml | 6 + Musicreater.py | 392 ++++++++++-------- bgArrayLib/reader.py | 19 +- languages/__pycache__/__init__.cpython-39.pyc | Bin 180 -> 180 bytes languages/__pycache__/lang.cpython-39.pyc | Bin 490 -> 490 bytes languages/__pycache__/zhCN.cpython-39.pyc | Bin 6958 -> 7148 bytes languages/zhCN.py | 25 +- msctspt/__pycache__/__init__.cpython-39.pyc | Bin 178 -> 178 bytes .../__pycache__/bugReporter.cpython-39.pyc | Bin 4392 -> 4622 bytes .../__pycache__/threadOpera.cpython-39.pyc | Bin 1065 -> 1065 bytes msctspt/funcOpera.py | 124 ++++-- msctspt/transfer.py | 165 +++----- nmcsup/__pycache__/__init__.cpython-39.pyc | Bin 177 -> 177 bytes nmcsup/__pycache__/log.cpython-39.pyc | Bin 1759 -> 1759 bytes nmcsup/__pycache__/vers.cpython-39.pyc | Bin 2172 -> 2172 bytes nmcsup/trans.py | 31 +- 22 files changed, 499 insertions(+), 342 deletions(-) create mode 100644 .idea/.gitignore create mode 100644 .idea/Musicreater.iml create mode 100644 .idea/inspectionProfiles/Project_Default.xml create mode 100644 .idea/inspectionProfiles/profiles_settings.xml create mode 100644 .idea/misc.xml create mode 100644 .idea/modules.xml create mode 100644 .idea/vcs.xml diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..eaf91e2 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,3 @@ +# Default ignored files +/shelf/ +/workspace.xml diff --git a/.idea/Musicreater.iml b/.idea/Musicreater.iml new file mode 100644 index 0000000..2946dc0 --- /dev/null +++ b/.idea/Musicreater.iml @@ -0,0 +1,12 @@ + + + + + + + + + + \ No newline at end of file diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml new file mode 100644 index 0000000..a2a5d19 --- /dev/null +++ b/.idea/inspectionProfiles/Project_Default.xml @@ -0,0 +1,46 @@ + + + + \ No newline at end of file diff --git a/.idea/inspectionProfiles/profiles_settings.xml b/.idea/inspectionProfiles/profiles_settings.xml new file mode 100644 index 0000000..105ce2d --- /dev/null +++ b/.idea/inspectionProfiles/profiles_settings.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..8d93904 --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..b125bed --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..9661ac7 --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/Musicreater.py b/Musicreater.py index 2f0f35d..4c4399d 100644 --- a/Musicreater.py +++ b/Musicreater.py @@ -101,7 +101,7 @@ dataset = [ 'FileName': 'Music' }, 'notes': [ - + ] }, ], @@ -216,6 +216,7 @@ def __main__(): else: return k + # 老的列表读取 def ReadMidi(midfile: str): # -> str from nmcsup.nmcreader import ReadMidi as midiRead k = midiRead(midfile) @@ -225,17 +226,19 @@ def __main__(): else: return k + # 音色读取 def LoadMidi(midfile: str): # -> str - from nmcsup.nmcreader import midi_conversion - k = midi_conversion(midfile) + from bgArrayLib.reader import midiNewReader + k = midiNewReader(midfile) if k is False: tk.messagebox.showerror(title=READABLETEXT[0], message=READABLETEXT[105].format(midfile)) return else: return k + # 新的类读取 def MidiAnalysisClass(midfile: str): - from nmcsup.nmcreader import midiClassReader + from bgArrayLib.reader import midiClassReader k = midiClassReader(midfile) if k is False: tk.messagebox.showerror(title=READABLETEXT[0], message=READABLETEXT[105].format(midfile)) @@ -502,99 +505,6 @@ def __main__(): RefreshMain() RefreshMusic(NowMusic) - # def openNewProject(): - # global is_save - # if is_save is not True: - # result = tkinter.messagebox.askyesno(title=READABLETEXT[1], message=READABLETEXT[106]) - # if result: - # SaveProject() - # fn = tkinter.filedialog.askopenfilename(title=READABLETEXT[7], initialdir=r'./', - # filetypes=[(READABLETEXT[108], '.msct'), (READABLETEXT[112], '*')], - # multiple=True) - # if fn is None or fn == '': - # return - # else: - # # print(fn) - # fn = fn[0] - # # print(fn) - # log("尝试打开:" + fn) - # try: - # try: - # with open(fn, 'rb') as C: - # global dataset - # # print(pickle.load(C)) - # read = pickle.load(C) # 重要的事情说三遍!!!pickle.load只能load一次,所以多load几次就有bug,要一次读完! - # # 重要的事情说三遍!!!pickle.load只能load一次,所以多load几次就有bug,要一次读完! - # # 重要的事情说三遍!!!pickle.load只能load一次,所以多load几次就有bug,要一次读完! - # # print(read) - # dataset = read[0] - # pkl1 = read[1] - # log("读取新文件成功") - # with open("1.pkl", 'wb') as w: - # pickle.dump(pkl1, w) - # except KeyError: - # with open(fn, 'rb') as C: - # dataset[0] = pickle.load(C) - # log("读取新文件成功") - # except pickle.UnpicklingError: # 程序规范修改:根据新的语法标准:except后面不能没有错误类型,测试后改为: - # # pickle.UnpicklingError - # print(READABLETEXT[8].format(fn)) - # log('无法打开{}'.format(fn)) - # return - # global is_new_file - # global ProjectName - # is_new_file = False - # ProjectName = fn - # del fn - # global NowMusic - # RefreshMain() - # RefreshMusic(NowMusic) - - # def openClassProject(): - # global is_save - # if is_save is not True: - # result = tkinter.messagebox.askyesno(title=READABLETEXT[1], message=READABLETEXT[106]) - # if result: - # SaveProject() - # fn = tkinter.filedialog.askopenfilename(title=READABLETEXT[7], initialdir=r'./', - # filetypes=[(READABLETEXT[108], '.msct'), (READABLETEXT[112], '*')], - # multiple=True) - # if fn is None or fn == '': - # return - # else: - # # print(fn) - # fn = fn[0] - # # print(fn) - # log("尝试打开:" + fn) - # try: - # try: - # with open(fn, 'rb') as C: - # global dataset - # # print(pickle.load(C)) - # read = pickle.load(C) # 重要的事情说三遍!!!pickle.load只能load一次,所以多load几次就有bug,要一次读完! - # # 重要的事情说三遍!!!pickle.load只能load一次,所以多load几次就有bug,要一次读完! - # # 重要的事情说三遍!!!pickle.load只能load一次,所以多load几次就有bug,要一次读完! - # # print(read) - # dataset = read - # log("读取新文件成功") - # except KeyError: - # with open(fn, 'rb') as C: - # dataset[0] = pickle.load(C) - # log("读取新文件成功") - # except pickle.UnpicklingError: # 程序规范修改:根据新的语法标准:except后面不能没有错误类型,测试后改为: - # # pickle.UnpicklingError - # print(READABLETEXT[8].format(fn)) - # log('无法打开{}'.format(fn)) - # return - # global is_new_file - # global ProjectName - # is_new_file = False - # ProjectName = fn - # del fn - # global NowMusic - # RefreshMain() - # RefreshMusic(NowMusic) - print('打开项目命令加载完成!') def appabout(): @@ -698,7 +608,7 @@ def __main__(): print('读MP3加载完成') - def FromMidi(): + def FromListMidi(): log('从midi导入音乐') midfile = tkinter.filedialog.askopenfilename(title=READABLETEXT[21], initialdir=r'./', filetypes=[(READABLETEXT[114], '.mid .midi'), @@ -727,7 +637,7 @@ def __main__(): threading.Thread(target=midiSPT, args=(th,)).start() del th - def NewFromMidi(): + def FromNewMidi(): try: tkinter.messagebox.showinfo("开发提示", "因为一些原因这个功能暂时取消") except tkinter.TclError: @@ -760,7 +670,7 @@ def __main__(): del th dataset[0]['mainset']['ReadMethod'] = "new" - def FromMidiClass(): + def FromClassMidi(): log('从midi导入音乐并采用类读取方式') midfile = tkinter.filedialog.askopenfilename(title=READABLETEXT[21], initialdir=r'./', filetypes=[(READABLETEXT[114], '.mid .midi'), @@ -842,6 +752,7 @@ def __main__(): RefreshMusic(NowMusic) print('写入命令加载完成!') + print('开始加载列表生成函数函数。') def ShowCMD(): log('展示指令') @@ -861,16 +772,6 @@ def __main__(): else: makeFuncFiles(dataset[0], file + '/') - def MakeNewCMD(): - log('生成新文件') - from msctspt.funcOpera import makeNewFuncFiles - file = tkinter.filedialog.askdirectory(title=READABLETEXT[25], initialdir=r'./') - if file is None or file == '': - log('取消') - return - else: - makeNewFuncFiles(dataset[0], file + '/') - def MakeCMDdir(): log('生成函数包') from msctspt.funcOpera import makeFunDir @@ -881,16 +782,6 @@ def __main__(): else: makeFunDir(dataset[0], file + '/') - def MakeNewCMDdir(): - log('生成新函数包与材质包') - from msctspt.funcOpera import makeNewFunDir - file = tkinter.filedialog.askdirectory(title=READABLETEXT[26], initialdir=r'./') - if file is None or file == '': - log('取消') - return - else: - makeNewFunDir(dataset[0], file + '/') - def MakePackFile(): file = tkinter.filedialog.askdirectory(title=READABLETEXT[27], initialdir=r'./') if file is None or file == '': @@ -918,6 +809,29 @@ def __main__(): shutil.move('./manifest.json', './temp/') shutil.rmtree('./temp/') + print('完成加载列表生成函数函数。') + print('开始加载乐器类生成函数函数。') + + def MakeNewCMD(): + log('生成新文件') + from msctspt.funcOpera import makeNewFuncFiles + file = tkinter.filedialog.askdirectory(title=READABLETEXT[25], initialdir=r'./') + if file is None or file == '': + log('取消') + return + else: + makeNewFuncFiles(dataset[0], file + '/') + + def MakeNewCMDdir(): + log('生成新函数包与材质包') + from msctspt.funcOpera import makeNewFunDir + file = tkinter.filedialog.askdirectory(title=READABLETEXT[26], initialdir=r'./') + if file is None or file == '': + log('取消') + return + else: + makeNewFunDir(dataset[0], file + '/') + def MakeNewFunctionPackFile(): file = tkinter.filedialog.askdirectory(title=READABLETEXT[27], initialdir=r'./') if file is None or file == '': @@ -983,6 +897,9 @@ def __main__(): shutil.move('./manifest.json', './temp/') shutil.rmtree('./temp/') + print('完成加载乐器类生成函数函数。') + print('开始加载乐器音色资源绑定函数。') + def changeResourcesPath(): file = tkinter.filedialog.askdirectory(title=READABLETEXT[27], initialdir=r'./') if file is None or file == '': @@ -999,6 +916,58 @@ def __main__(): else: tkinter.messagebox.showinfo(title=READABLETEXT[1], message=READABLETEXT[159]) + print('开始加载类生成函数函数。') + + def MakeClassCMD(): + log('生成类文件') + from msctspt.funcOpera import makeClassFuncFiles + file = tkinter.filedialog.askdirectory(title=READABLETEXT[25], initialdir=r'./') + if file is None or file == '': + log('取消') + return + else: + makeClassFuncFiles(dataset[0], file + '/') + + def MakeClassCMDdir(): + log('生成类函数包与材质包') + from msctspt.funcOpera import makeClassFunDir + file = tkinter.filedialog.askdirectory(title=READABLETEXT[26], initialdir=r'./') + if file is None or file == '': + log('取消') + return + else: + makeClassFunDir(dataset[0], file + '/') + + def MakeClassFunctionPackFile(): + file = tkinter.filedialog.askdirectory(title=READABLETEXT[27], initialdir=r'./') + if file is None or file == '': + log('取消') + return + import zipfile + + from msctspt.funcOpera import makeClassFunDir + log('生成附加包文件') + if not os.path.exists('./temp/'): + os.makedirs('./temp/') + makeClassFunDir(dataset[0], './temp/') + + shutil.move('./temp/{}Pack/behavior_packs/{}/functions'.format(dataset[0]['mainset']['PackName'], + dataset[0]['mainset']['PackName']), './') + + shutil.move('./temp/{}Pack/behavior_packs/{}/manifest.json'.format(dataset[0]['mainset']['PackName'], + dataset[0]['mainset']['PackName']), './') + + with zipfile.ZipFile('{}/{}.mcpack'.format(file, dataset[0]['mainset']['PackName']), 'w') as zipobj: + for i in os.listdir('./functions/'): + zipobj.write('./functions/{}'.format(i)) + zipobj.write('./manifest.json') + shutil.move('./functions', './temp/') + shutil.move('./manifest.json', './temp/') + shutil.rmtree('./temp/') + + print('完成加载类生成函数函数。') + print('开始加载地图函数。') + # 转为空方块世界 def ToBlockWorldEpt(): import zipfile @@ -1290,8 +1259,6 @@ def __main__(): log('转换结束!\n' + str(res)) tkinter.messagebox.showinfo(READABLETEXT[33], READABLETEXT[124].format(str(res))) - - def toBDXfile(): log('整首歌转BDX') from msctspt.transfer import music2BDX @@ -1313,8 +1280,9 @@ def __main__(): (READABLETEXT[112], '*')], defaultextension=dataset[0]['mainset']['PackName'] + '.bdx', initialfile=dataset[0]['mainset']['PackName'] + '.bdx') - + maxHeight = 200 + print(maxHeight) # 使用变量 while True: maxHeight = tkinter.simpledialog.askinteger(title=READABLETEXT[28], @@ -1322,31 +1290,23 @@ def __main__(): initialvalue='200') if maxHeight >= 5: break - elif maxHeight == None: + elif maxHeight is None: log('取消') return else: tkinter.messagebox.showerror(title=READABLETEXT[0], message=READABLETEXT[94]) continue - + if fileName is None or fileName == '': log('取消') return log('获得文件名:' + fileName) - res = music2BDX(fileName, dire, dataset[0],) + res = music2BDX(fileName, dire, dataset[0], ) log('转换结束!\n' + str(res)) tkinter.messagebox.showinfo(READABLETEXT[33], READABLETEXT[124].format(str(res))) - - - - - - - - def wsPlay(): from msctspt.transfer import note2webs spd = tkinter.simpledialog.askfloat(READABLETEXT[34], prompt=READABLETEXT[125], initialvalue='5.0') @@ -1666,18 +1626,6 @@ def __main__(): filemenu.add_command(label=READABLETEXT[55], command=SaveProject) filemenu.add_command(label=READABLETEXT[56], command=SaveAsProject) - # filemenu.add_separator() - # - # filemenu.add_command(label=READABLETEXT[149], command=openNewProject) - # filemenu.add_command(label=READABLETEXT[150], command=SaveNewProject) - # filemenu.add_command(label=READABLETEXT[151], command=SaveAsNewProject) - - # filemenu.add_separator() - # - # filemenu.add_command(label=READABLETEXT[161], command=openClassProject) - # filemenu.add_command(label=READABLETEXT[162], command=SaveClassProject) - # filemenu.add_command(label=READABLETEXT[163], command=SaveAsClassProject) - filemenu.add_separator() # 分隔符 filemenu.add_command(label=READABLETEXT[57], command=exitapp) @@ -1688,12 +1636,12 @@ def __main__(): # 创建编辑菜单 editmenu = tk.Menu(main_menu_bar, tearoff=0) editmenu.add_command(label=READABLETEXT[59], command=FromMP3) - editmenu.add_command(label=READABLETEXT[60], command=FromMidi) + editmenu.add_command(label=READABLETEXT[60], command=FromListMidi) editmenu.add_command(label=READABLETEXT[61], command=FromForm) editmenu.add_command(label=READABLETEXT[62], command=FromText) editmenu.add_separator() - editmenu.add_command(label=READABLETEXT[160], command=FromMidiClass) - editmenu.add_command(label=READABLETEXT[148], command=NewFromMidi) + editmenu.add_command(label=READABLETEXT[160], command=FromClassMidi) + editmenu.add_command(label=READABLETEXT[148], command=FromNewMidi) # 将子菜单加入到菜单条中 main_menu_bar.add_cascade(label=READABLETEXT[63], menu=editmenu) @@ -1707,6 +1655,10 @@ def __main__(): funcmenu.add_command(label=READABLETEXT[153], command=MakeNewCMDdir) funcmenu.add_command(label=READABLETEXT[154], command=MakeNewFunctionPackFile) funcmenu.add_command(label=READABLETEXT[155], command=MakeNewFunctionPack_ResourcesPacks_File) + funcmenu.add_separator() + funcmenu.add_command(label=READABLETEXT[164], command=MakeClassCMD) + funcmenu.add_command(label=READABLETEXT[165], command=MakeClassCMDdir) + funcmenu.add_command(label=READABLETEXT[166], command=MakeClassFunctionPackFile) # 将子菜单加入到菜单条中 main_menu_bar.add_cascade(label=READABLETEXT[67], menu=funcmenu) @@ -1724,8 +1676,6 @@ def __main__(): # 将子菜单加入到菜单条中 main_menu_bar.add_cascade(label=READABLETEXT[74], menu=worldmenu) - - # 创建结构功能菜单 structureMenu = tk.Menu(main_menu_bar, tearoff=0) structureMenu.add_command(label=READABLETEXT[92], command=toBDXfile) @@ -1736,8 +1686,6 @@ def __main__(): main_menu_bar.add_cascade(label=READABLETEXT[95], menu=structureMenu) - - # 创建辅助功能菜单 otherMenu = tk.Menu(main_menu_bar, tearoff=0) otherMenu.add_command(label=READABLETEXT[75], command=MakeFuncPlayer) @@ -1747,7 +1695,6 @@ def __main__(): main_menu_bar.add_cascade(label=READABLETEXT[81], menu=otherMenu) - # 创建实验功能菜单 trymenu = tk.Menu(main_menu_bar, tearoff=0) trymenu.add_command(label=READABLETEXT[82], command=ShowCMD) @@ -1780,10 +1727,15 @@ def __main__(): # 大标题 tk.Label(UpLeftFrame, text=READABLETEXT[91], font=('', 20)).pack() # 按钮式文本 - LabelPackName = tk.Label(UpLeftFrame, bg='white', text=READABLETEXT[46].format(str(dataset[0]['mainset']['PackName'])), font=('', 15)) - LabelMusicTitle = tk.Label(UpLeftFrame, bg='white', text=READABLETEXT[47].format(str(dataset[0]['mainset']['MusicTitle'])), font=('', 15)) - LabelIsRepeat = tk.Label(UpLeftFrame, bg='white', text=READABLETEXT[48].format(str(dataset[0]['mainset']['IsRepeat'])), font=('', 15)) - LabelPlayerSelect = tk.Label(UpLeftFrame, bg='white', text=READABLETEXT[49].format(str(dataset[0]['mainset']['PlayerSelect'])), font=('', 15)) + LabelPackName = tk.Label(UpLeftFrame, bg='white', + text=READABLETEXT[46].format(str(dataset[0]['mainset']['PackName'])), font=('', 15)) + LabelMusicTitle = tk.Label(UpLeftFrame, bg='white', + text=READABLETEXT[47].format(str(dataset[0]['mainset']['MusicTitle'])), font=('', 15)) + LabelIsRepeat = tk.Label(UpLeftFrame, bg='white', + text=READABLETEXT[48].format(str(dataset[0]['mainset']['IsRepeat'])), font=('', 15)) + LabelPlayerSelect = tk.Label(UpLeftFrame, bg='white', + text=READABLETEXT[49].format(str(dataset[0]['mainset']['PlayerSelect'])), + font=('', 15)) # 绑定按钮 LabelPackName.bind('', changePackName) LabelMusicTitle.bind('', changeMusicTitle) @@ -1816,10 +1768,17 @@ def __main__(): # 大标题 tk.Label(UpRightFrame, text=READABLETEXT[97], font=('', 20)).pack() # 按钮式文本 - LabelEntityName = tk.Label(UpRightFrame, bg='white', text=READABLETEXT[42].format(dataset[0]['musics'][NowMusic]['set']['EntityName']), font=('', 15)) - LabelScoreboardName = tk.Label(UpRightFrame, bg='white', text=READABLETEXT[43].format(dataset[0]['musics'][NowMusic]['set']['ScoreboardName']), font=('', 15)) - LabelInstrument = tk.Label(UpRightFrame, bg='white', text=READABLETEXT[44].format(dataset[0]['musics'][NowMusic]['set']['Instrument']), font=('', 15)) - LabelFileName = tk.Label(UpRightFrame, bg='white', text=READABLETEXT[45].format(dataset[0]['musics'][NowMusic]['set']['FileName']), font=('', 15)) + LabelEntityName = tk.Label(UpRightFrame, bg='white', + text=READABLETEXT[42].format(dataset[0]['musics'][NowMusic]['set']['EntityName']), + font=('', 15)) + LabelScoreboardName = tk.Label(UpRightFrame, bg='white', text=READABLETEXT[43].format( + dataset[0]['musics'][NowMusic]['set']['ScoreboardName']), font=('', 15)) + LabelInstrument = tk.Label(UpRightFrame, bg='white', + text=READABLETEXT[44].format(dataset[0]['musics'][NowMusic]['set']['Instrument']), + font=('', 15)) + LabelFileName = tk.Label(UpRightFrame, bg='white', + text=READABLETEXT[45].format(dataset[0]['musics'][NowMusic]['set']['FileName']), + font=('', 15)) # 绑定按钮 LabelEntityName.bind('', changeEntityName) LabelScoreboardName.bind('', changeScoreboardName) @@ -1909,3 +1868,112 @@ def __main__(): if __name__ == '__main__': __main__() + +################## + + # def openNewProject(): + # global is_save + # if is_save is not True: + # result = tkinter.messagebox.askyesno(title=READABLETEXT[1], message=READABLETEXT[106]) + # if result: + # SaveProject() + # fn = tkinter.filedialog.askopenfilename(title=READABLETEXT[7], initialdir=r'./', + # filetypes=[(READABLETEXT[108], '.msct'), (READABLETEXT[112], '*')], + # multiple=True) + # if fn is None or fn == '': + # return + # else: + # # print(fn) + # fn = fn[0] + # # print(fn) + # log("尝试打开:" + fn) + # try: + # try: + # with open(fn, 'rb') as C: + # global dataset + # # print(pickle.load(C)) + # read = pickle.load(C) # 重要的事情说三遍!!!pickle.load只能load一次,所以多load几次就有bug,要一次读完! + # # 重要的事情说三遍!!!pickle.load只能load一次,所以多load几次就有bug,要一次读完! + # # 重要的事情说三遍!!!pickle.load只能load一次,所以多load几次就有bug,要一次读完! + # # print(read) + # dataset = read[0] + # pkl1 = read[1] + # log("读取新文件成功") + # with open("1.pkl", 'wb') as w: + # pickle.dump(pkl1, w) + # except KeyError: + # with open(fn, 'rb') as C: + # dataset[0] = pickle.load(C) + # log("读取新文件成功") + # except pickle.UnpicklingError: # 程序规范修改:根据新的语法标准:except后面不能没有错误类型,测试后改为: + # # pickle.UnpicklingError + # print(READABLETEXT[8].format(fn)) + # log('无法打开{}'.format(fn)) + # return + # global is_new_file + # global ProjectName + # is_new_file = False + # ProjectName = fn + # del fn + # global NowMusic + # RefreshMain() + # RefreshMusic(NowMusic) + + # def openClassProject(): + # global is_save + # if is_save is not True: + # result = tkinter.messagebox.askyesno(title=READABLETEXT[1], message=READABLETEXT[106]) + # if result: + # SaveProject() + # fn = tkinter.filedialog.askopenfilename(title=READABLETEXT[7], initialdir=r'./', + # filetypes=[(READABLETEXT[108], '.msct'), (READABLETEXT[112], '*')], + # multiple=True) + # if fn is None or fn == '': + # return + # else: + # # print(fn) + # fn = fn[0] + # # print(fn) + # log("尝试打开:" + fn) + # try: + # try: + # with open(fn, 'rb') as C: + # global dataset + # # print(pickle.load(C)) + # read = pickle.load(C) # 重要的事情说三遍!!!pickle.load只能load一次,所以多load几次就有bug,要一次读完! + # # 重要的事情说三遍!!!pickle.load只能load一次,所以多load几次就有bug,要一次读完! + # # 重要的事情说三遍!!!pickle.load只能load一次,所以多load几次就有bug,要一次读完! + # # print(read) + # dataset = read + # log("读取新文件成功") + # except KeyError: + # with open(fn, 'rb') as C: + # dataset[0] = pickle.load(C) + # log("读取新文件成功") + # except pickle.UnpicklingError: # 程序规范修改:根据新的语法标准:except后面不能没有错误类型,测试后改为: + # # pickle.UnpicklingError + # print(READABLETEXT[8].format(fn)) + # log('无法打开{}'.format(fn)) + # return + # global is_new_file + # global ProjectName + # is_new_file = False + # ProjectName = fn + # del fn + # global NowMusic + # RefreshMain() + # RefreshMusic(NowMusic) + + +# ------------------ + # filemenu.add_separator() + # + # filemenu.add_command(label=READABLETEXT[149], command=openNewProject) + # filemenu.add_command(label=READABLETEXT[150], command=SaveNewProject) + # filemenu.add_command(label=READABLETEXT[151], command=SaveAsNewProject) + + # filemenu.add_separator() + # + # filemenu.add_command(label=READABLETEXT[161], command=openClassProject) + # filemenu.add_command(label=READABLETEXT[162], command=SaveClassProject) + # filemenu.add_command(label=READABLETEXT[163], command=SaveAsClassProject) diff --git a/bgArrayLib/reader.py b/bgArrayLib/reader.py index b4b78b3..86df2bb 100644 --- a/bgArrayLib/reader.py +++ b/bgArrayLib/reader.py @@ -1,16 +1,10 @@ # -*- coding: utf-8 -*- - - from nmcsup.log import log import pickle - - - - class Note: def __init__(self, channel, pitch, velocity, time, time_position, instrument): self.channel = channel @@ -28,7 +22,7 @@ class Note: self.CD = "d" -def midi_conversion(midfile: str): +def midiNewReader(midfile: str): import mido # from msctspt.threadOpera import NewThread from bgArrayLib.bpm import get @@ -129,6 +123,7 @@ def midiClassReader(midfile: str): def Time(mt, tpb_a, bpm_a): return round(mt / tpb_a / bpm_a * 60 * 20) + Notes = [] tracks = [] try: @@ -150,13 +145,3 @@ def midiClassReader(midfile: str): Notes.append(tracks) print(Notes.__len__()) return Notes - - - - - - - - - - diff --git a/languages/__pycache__/__init__.cpython-39.pyc b/languages/__pycache__/__init__.cpython-39.pyc index 56d137b496d95ad2bfc55d572f7ceaed99cbda1b..ff82f624dd88dc5e7e97d9c967e8a000c35569c3 100644 GIT binary patch delta 36 qcmdnOxP_5Bk(ZZ?0SJnJf1k*m&ik}${)^_lF=YmN=6Z$`>rDaFy$rDc delta 36 qcmdnOxP_5Bk(ZZ?0SM&zzE0#$=Y6)Y?b*C-F=YmNrh29m>rDZ&n zHs>%Zu=4N%C11|pd}#aAj@g?RvQ1;H7X^wu-OvUUe6n-G)Af6vw(okfW0#XlM5zH# z=EeH$FZNA-+Pd^vPy3VIOI}Xi_k7CyXB`us&1rbKddBnFJD#rJ31mFowM^qt=TcM6 z(m0@|XH6?0nx4;Uc{X*!v)*;j=5)STzy8tOp7(otkTtzn?+i8n$&Q96J61i}(ff2m z|C3#PCP1xE8}S&#P%Gtj=xs(f86 z0wC=Wzk|YQ=8DOCgsdie2o_mJtZS6cpWj zUs#)I@_Heu$>qYXOq#Pc=Zjro6o>(;d>IQOKtcO5ezLv9tH~CUy4*`Z+@&C5+2jIA zake=?X3?CDM zs(G@1?$fn1p6u8KR0WX%3qS2&hAa$JJ^81w!Q}g5u1uwYlmCh-Zk{Eg%~Y?7u;uy2 z-Or}&e71QicDp2y?SiX?+6a<_+lVX)v{!THEv}HF#Ju91#FG4?mq3*aFBw4u69dC$ z2k~8ulldf{aZd$_Oal?qCx4JM)K~~&E&>sYfrOtX<1L;bS4S5|Cm+`k*NBjn3`Mhn z;zhG3drIl^K3mxKY~Hq*G6OwRJ=4jpQo3v=KpU8tCO?pppL|_v8apc!BNHnVGmtMk TIaiuz@@pv#C@sd^z;G1+00q>S diff --git a/languages/zhCN.py b/languages/zhCN.py index e2ae0d7..7debaf8 100644 --- a/languages/zhCN.py +++ b/languages/zhCN.py @@ -120,7 +120,7 @@ READABLETEXT = { 105: "找不到或无法读取文件😢:{}", 106: "您当前的项目已修改但未存储,是否先保存当前项目?", 107: "项目已经存储至:{}", - 108: ("音·创0.0.X工程文件","音·创0.1+工程文件","音·创0.1+TEST工程文件"), + 108: ("音·创0.0.X工程文件", "音·创0.1+工程文件", "音·创0.1+TEST工程文件"), 109: "任意类型", 110: "函数音创工程文件", 111: "MMFM0.0.6版本工程文件", @@ -160,22 +160,25 @@ READABLETEXT = { 145: "您输入的乐器并非游戏内置乐器,是否继续用您输入的字符作为乐器?", 146: "修改本音轨生成的文件名", # -----2022.1.25更新 - 147: "生成新文件至...", + 147: "生成乐器文件至...", 148: "从midi导入音轨且用新方法解析", - 149: "打开 新: 音·创项目...", - 150: "保存为新项目", - 151: "另存为新项...", + # 149: "打开 新: 音·创项目...", + # 150: "保存为新项目", + # 151: "另存为新项...", 152: "(开发调试)关闭本次日志记录", - 153: "生成新函数包至...", - 154: "生成新函数附加包文件至...", - 155: "生成新函数附加包文件,并将神羽资源包以散包形式放置至...", + 153: "生成乐器函数包至...", + 154: "生成乐器函数附加包文件至...", + 155: "生成乐器函数附加包文件,并将神羽资源包以散包形式放置至...", 156: "[神羽资源包位置选择]:选择文件夹...", 157: "没有路径文件(.rpposi文件),请仔细阅读Readme或先试用:帮助与疑问->[神羽资源包位置选择]:选择文件夹... 方法添加路径文件吧!", 158: "有路径文件(.rpposi文件),但路径指示错误,请仔细阅读Readme或先用:帮助与疑问->[神羽资源包位置选择]:选择文件夹... 更改路径!", 159: "更改路径文件(.rpposi文件)成功!!", 160: "从midi导入音轨且用类方法解析", - 161: "打开 类方法: 音·创项目...", - 162: "保存为类方法项目", - 163: "另存为类方法项...", + # 161: "打开 类方法: 音·创项目...", + # 162: "保存为类方法项目", + # 163: "另存为类方法项...", + 164: "生成新文件至...", + 165: "生成新函数包至...", + 166: "生成新函数附加包文件至...", } diff --git a/msctspt/__pycache__/__init__.cpython-39.pyc b/msctspt/__pycache__/__init__.cpython-39.pyc index 42f98716f05cb02567a3ae816a0145933f80a617..24dd6940a689e329a3b0c2f0802dc26cd7eee296 100644 GIT binary patch delta 36 qcmdnQxQUTFk(ZZ?0SJnJf1k*m&ik}${)^_lF=YmN=6Z$`>x}`_FAS>y delta 36 qcmdnQxQUTFk(ZZ?0SM&zzE0#$=Y6)Y?b*C-F=YmNrh29m>x}`q2Mc=u diff --git a/msctspt/__pycache__/bugReporter.cpython-39.pyc b/msctspt/__pycache__/bugReporter.cpython-39.pyc index c6740f964e111e790dd124aa8834d04a1c99f581..5e56a52eb321b57aaeb6779989bb85b49855fc73 100644 GIT binary patch delta 679 zcmZvaO=uHA6vt;~H=9keyIl{OAQWRLwu>~>gI{e8;z!YgURs2f)(|oQQ`1Ce)1qaU z7Fxwr?PbJEswRk_Pz14uQmnmu6cNce+s2C?L@YIA z9!3!MuOAtA_bVeM>E6PV*4+B&R8R6~^3dyH>7yE!q2r|J>gC6^M7y3-sJet{h=%6_ zBS9LW+B_OjsWgZzgJ01W@L~Q<8^$mA1-*~_?Bd^zu0abo0{J4%-N+Jf+71Okg***u ze*&SHk^-8*F2RDO0&yjWQ28ohv;JIi<>{Cs*JMZH@AZQ-2i!ner9meUMROPIABYh8$c)kK{U3uU{$-flC-%KKLCGQT0jNA>Ai59z27_{^x4^@<3^_NY64>VyqX=#v&jM#lC5ma}$=r5~6lONJ>ah$SJOy zo$+gcb_WO|8dm*5a13i$!C}z7e8}va$zsv)Hw24|^)J!@a8M1^5gZbYV|W)l*#pI` z>dNNgGw)@k_4Jmv#=pL~_qo2-e7n)wc;HnZH&_dHFa0Hm8mN delta 421 zcmeBES)s(2$ji&c00crFUlU)6Y~-_J=6$xX?b*C-F=YmNrh2BEBbl#pa4`c_H~?|6 z)?`Z_C0_OvjuwU}wiM=I22IY%6+B&x29ue2BN;U($MRZxB{Kq5!T>9f!2!h1KwNwQ zNTe{PFy%1hGS)IOg4oPCOtnlkj43SHOhq+dK65Q|l|&8m0+t%4$)bGP^-8rYB^)X2 zH7w!`%|JahOba+uI6%AV)pWagy@V f`{Zyzc}CaCje?3ips?a#WMN}r=Hr;WK`;&gXc=AG diff --git a/msctspt/__pycache__/threadOpera.cpython-39.pyc b/msctspt/__pycache__/threadOpera.cpython-39.pyc index 0c4e9c32a8a58a4e66cf602967ac02c14a7de6ae..cea8210928b3cb8063ea7f3344df91c5ce14d0b6 100644 GIT binary patch delta 39 ucmZ3 maxlen: maxlen = len(musicset['musics'][i]['notes']) with open(path + musicset['mainset']['MusicTitle'] + '_Part' + str(i) + '.mcfunction', 'w', encoding='UTF-8') as f: - f.writelines(classList_conversion(musicset['musics'][i]['notes'], - musicset['musics'][i]['set']['ScoreboardName'])) + f.writelines(newList_conversion_SinglePlayer(musicset['musics'][i]['notes'], + musicset['musics'][i]['set']['ScoreboardName'])) if musicset['mainset']['IsRepeat']: log("增加重复语句") for i in range(len(musicset['musics'])): @@ -245,7 +268,61 @@ def makeNewFunDir(musicset, path='./'): log("完成============================") -def makeFunDir(musicset, path='./'): +def makeClassFuncFiles(musicset, path='./'): + """在指定目录下生成函数文件""" + from msctspt.transfer import classList_conversion_SinglePlayer + commands = [] + starts = [] + starts.__len__() + starts.append("scoreboard objectives add " + musicset['musics'][0]['set']['ScoreboardName'] + " dummy\n") + starts.append("summon armor_stand " + musicset['musics'][0]['set']['EntityName'] + '\n') + starts.append("scoreboard objectives setdisplay sidebar " + musicset['musics'][0]['set']['ScoreboardName'] + '\n') + starts.append("scoreboard players set @e[type=armor_stand, name=\"" + musicset['musics'][0]['set']['EntityName'] + + "\"] " + musicset['musics'][0]['set']['ScoreboardName'] + " 0" + '\n') + log("=========================正在在此处生成文件:" + path) + commands.append("scoreboard players add @e[name=\"" + musicset['musics'][0]['set']['EntityName'] + "\"] " + + musicset['musics'][0]['set']['ScoreboardName'] + " 1\n") + maxlen = -1 + for i in range(len(musicset['musics'])): + log('写入第' + str(i) + '个数据') + # commands.append("execute @e[name=\"" + musicset['musics'][i]['set']['EntityName'] + "\",scores={" + + # musicset['musics'][i]['set']['ScoreboardName'] + "=1..10}] ~~~ title @a" + musicset['mainset'] + # [ + # 'PlayerSelect'] + " title " + musicset['mainset']['MusicTitle'] + "\n") + # commands.append("execute @e[name=\"" + musicset['musics'][i]['set']['EntityName'] + "\",scores={" + + # musicset['musics'][i]['set']['ScoreboardName'] + "=1..10}] ~~~ title @a" + musicset['mainset'] + # [ + # 'PlayerSelect'] + " subtitle 本函数乐曲由§b§l凌云§r§3函数音乐创建§r生成\n") + if len(musicset['musics'][i]['notes']) > maxlen: + maxlen = len(musicset['musics'][i]['notes']) + with open(path + musicset['mainset']['MusicTitle'] + '_Part' + str(i) + '.mcfunction', 'w', + encoding='UTF-8') as f: + f.writelines(classList_conversion_SinglePlayer(musicset['musics'][i]['notes'], + musicset['musics'][i]['set']['ScoreboardName'], + musicset['musics'][i]['set']['Instrument'], + musicset['mainset']['PlayerSelect'], + True)) + if musicset['mainset']['IsRepeat']: + log("增加重复语句") + for i in range(len(musicset['musics'])): + commands.append("execute @e[name=\"" + musicset['musics'][i]['set']['EntityName'] + "\",scores={" + + musicset['musics'][i]['set']['ScoreboardName'] + "=" + str( + (maxlen + 2) * 10) + "}] ~~~ scoreboard players set @e[name=\"" + musicset['musics'][i]['set'][ + 'EntityName'] + "\"] " + musicset['musics'][i]['set']['ScoreboardName'] + " -1\n") + log("增加版权语句") + commands.append("\n\n# 凌云我的世界开发团队 x 凌云软件开发团队 : W-YI(金羿),bgArray(诸葛亮与八卦阵)\n") + starts.append("\n\n# 凌云我的世界开发团队 x 凌云软件开发团队 : W-YI(金羿),bgArray(诸葛亮与八卦阵)\n") + log("写入支持文件") + with open(path + musicset['mainset']['MusicTitle'] + '_Support.mcfunction', 'w', encoding='UTF-8') as f: + f.writelines(commands) + log("写入开始文件") + with open(path + 'Start_' + musicset['mainset']['MusicTitle'] + '.mcfunction', 'w', encoding='UTF-8') as f: + f.writelines(starts) + del commands, starts, maxlen + log("完成============================") + + +def makeClassFunDir(musicset, path='./'): """在指定目录下生成函数包文件夹""" import os import uuid @@ -265,7 +342,6 @@ def makeFunDir(musicset, path='./'): path + musicset['mainset']['PackName'] + "Pack/world_behavior_packs.json") and os.path.exists( path + musicset['mainset']['PackName'] + "Pack/behavior_packs/" + musicset['mainset'][ 'PackName'] + "/manifest.json")): - log("创建manifest.json以及world_behavior_packs.json") behaviorUuid = uuid.uuid4() with open(path + musicset['mainset']['PackName'] + "Pack/world_behavior_packs.json", "w") as f: @@ -280,7 +356,7 @@ def makeFunDir(musicset, path='./'): 'PackName'] + " Pack : behavior pack\",\n \"type\": \"data\",\n \"version\":" " [ 0, 0, 1 ],\n \"uuid\": \"" + str( uuid.uuid4()) + "\"\n }\n ]\n}") - makeFuncFiles(musicset, path + musicset['mainset']['PackName'] + "Pack/behavior_packs/" + musicset['mainset'][ + makeClassFuncFiles(musicset, path + musicset['mainset']['PackName'] + "Pack/behavior_packs/" + musicset['mainset'][ 'PackName'] + "/functions/") log("完成============================") diff --git a/msctspt/transfer.py b/msctspt/transfer.py index 56167f3..a51ca89 100644 --- a/msctspt/transfer.py +++ b/msctspt/transfer.py @@ -1,6 +1,5 @@ """音·创 的转换工具库""" - # 诸葛亮与八卦阵帮忙修改语法 日期:---2022年1月19日 # 统计:致命(三级)错误:0个;警告(二级)错误:4个--未解决1个;语法(一级)错误:302个 @@ -26,15 +25,8 @@ def hans2pinyin(hans, style=3): return final - - - - - - - -def classList_conversion_SinglePlayer(List: list, ScoreboardName: str, playerSelection: str = '', - isProsess: bool = False) -> list: +def classList_conversion_SinglePlayer(List: list, ScoreboardName: str, Instrument: str, playerSelection: str = '', + isProsess: bool = False) -> list: from bgArrayLib.compute import round_up commands = [] length = len(List) @@ -48,11 +40,17 @@ def classList_conversion_SinglePlayer(List: list, ScoreboardName: str, playerSel if i.instrument > 119: pass else: - commands.append(f"execute @a{playerSelection} ~ ~ ~ execute @s[scores={{{ScoreboardName}={str(round_up(i.time_position)).replace('.0', '')}}}] ~ ~{127 - i.velocity} ~ playsound {i.instrument}{i.CD}.{i.pitch} @s ~ ~ ~ 1000 1.0 1000\n") + commands.append( + f"execute @a{playerSelection} ~ ~ ~ execute @s[scores={{{ScoreboardName}=" + f"{str(round_up(i.time_position)).replace('.0', '')}}}] ~ ~{127 - i.velocity} " + f"~ playsound {Instrument} @s ~ ~ ~ 1000 {i.pitch} 1000\n") if isProsess: - commands.append(f"execute @a{playerSelection} ~ ~ ~ execute @s[scores={{{ScoreboardName}={str(round_up(i.time_position)).replace('.0', '')}}}] ~ ~ ~ title @s actionbar §e▶ 播放中: §a{j}/{length} || {int(j / length * 1000) / 10}\n") + commands.append( + f"execute @a{playerSelection} ~ ~ ~ execute @s[scores={{{ScoreboardName}=" + f"{str(round_up(i.time_position)).replace('.0', '')}}}] ~ ~ ~ " + f"title @s actionbar §e▶ 播放中: §a{j}/{length} || {int(j / length * 1000) / 10}\n") j += 1 - except : + except: pass # a += List[i][1] # commands.append("\n\n# 凌云我的世界开发团队 x 凌云软件开发团队 : W-YI(金羿)\n") @@ -60,13 +58,37 @@ def classList_conversion_SinglePlayer(List: list, ScoreboardName: str, playerSel return commands - - - - - - - +def newList_conversion_SinglePlayer(List: list, ScoreboardName: str, playerSelection: str = '', + isProsess: bool = False) -> list: + from bgArrayLib.compute import round_up + commands = [] + length = len(List) + j = 1 + print(List) + for k in range(len(List)): + i = List[k][0] + print(i) + print(type(i)) + try: + if i.instrument > 119: + pass + else: + commands.append( + f"execute @a{playerSelection} ~ ~ ~ execute @s[scores={{{ScoreboardName}=" + f"{str(round_up(i.time_position)).replace('.0', '')}}}] ~ ~{127 - i.velocity} " + f"~ playsound {i.instrument}{i.CD}.{i.pitch} @s ~ ~ ~ 1000 1.0 1000\n") + if isProsess: + commands.append( + f"execute @a{playerSelection} ~ ~ ~ execute @s[scores={{{ScoreboardName}=" + f"{str(round_up(i.time_position)).replace('.0', '')}}}] ~ ~ ~ " + f"title @s actionbar §e▶ 播放中: §a{j}/{length} || {int(j / length * 1000) / 10}\n") + j += 1 + except: + pass + # a += List[i][1] + # commands.append("\n\n# 凌云我的世界开发团队 x 凌云软件开发团队 : W-YI(金羿)\n") + print(commands) + return commands def classList_conversion(List: list, ScoreboardName: str, isProsess: bool = False) -> list: @@ -104,25 +126,6 @@ def classList_conversion(List: list, ScoreboardName: str, isProsess: bool = Fals print(commands) return commands - - - - - - - - - - - - - - - - - - - def formCmdBlock(direction: Iterable, command: str, particularValue: int, impluse: int = 0, condition: bool = False, needRedstone: bool = True, tickDelay: int = 0, customName: str = '', lastOutput: str = '', @@ -172,7 +175,7 @@ def formCmdBlock(direction: Iterable, command: str, particularValue: int, implus 是否输出 :return: 指令方块字典结构,如下 - ''' + """ ''' :param block: { "direction": [x: int, y: int, z: int] #方块位置 @@ -188,7 +191,7 @@ def formCmdBlock(direction: Iterable, command: str, particularValue: int, implus "conditional": int, #是否有条件 1 bytes "needRedstone": int #是否需要红石 1 bytes } - """ + ''' return {"direction": direction, "block_name": "command_block", "particular_value": particularValue, @@ -205,7 +208,7 @@ def formCmdBlock(direction: Iterable, command: str, particularValue: int, implus def note2bdx(filePath: str, dire: list, Notes: list, ScoreboardName: str, Instrument: str, - PlayerSelect: str = '', isProsess: bool = False, height: int = 200): + PlayerSelect: str = '', isProsess: bool = False, height: int = 200): """使用方法同Note2Cmd :param 参数说明: filePath: 生成.bdx文件的位置 @@ -257,24 +260,8 @@ def note2bdx(filePath: str, dire: list, Notes: list, ScoreboardName: str, Instru return BdxConverter(filePath, 'Build by RyounMusicreater', blocks) - - - - - - - - - - - - - - - - - -def music2BDX(filePath: str, direction: Iterable, music: dict, isProsess: bool = False, height: int = 200, isSquare: bool = False): +def music2BDX(filePath: str, direction: Iterable, music: dict, isProsess: bool = False, height: int = 200, + isSquare: bool = False): """使用方法同Note2Cmd :param 参数说明: filePath: 生成.bdx文件的位置 @@ -293,14 +280,18 @@ def music2BDX(filePath: str, direction: Iterable, music: dict, isProsess: bool = direction = list(direction) for track in music['musics']: - cmdList = classList_conversion_SinglePlayer(track['notes'],track['set']['ScoreboardName'],music['mainset']['PlayerSelect'],isProsess) + cmdList = classList_conversion_SinglePlayer(track['notes'], track['set']['ScoreboardName'], + music['mainset']['PlayerSelect'], isProsess) dire = direction down = False '''当前是否为向下的阶段?''' - #开头的指令方块 - blocks.append(formCmdBlock(dire, f"scoreboard players add @a{music['mainset']['PlayerSelect']} {track['set']['ScoreboardName']} 1", 1, 1)) + # 开头的指令方块 + blocks.append(formCmdBlock(dire, + f"scoreboard players add @a{music['mainset']['PlayerSelect']} " + f"{track['set']['ScoreboardName']} 1", + 1, 1)) dire[1] += 1 - blocks.append(formCmdBlock(dire, cmdList.pop(0), 2,needRedstone=False)) + blocks.append(formCmdBlock(dire, cmdList.pop(0), 2, needRedstone=False)) dire[1] += 1 # :0 下 无条件 # :1 上 无条件 @@ -309,36 +300,24 @@ def music2BDX(filePath: str, direction: Iterable, music: dict, isProsess: bool = # :4 x轴负方向 无条件 # :5 x轴正方向 无条件 for cmd in cmdList: - blocks.append(formCmdBlock(dire,cmd,5 if (down == False and dire[1] == height+direction[1]) or (down and dire[1] == direction+1) else 0 if down else 1,2,needRedstone=False)) - + blocks.append(formCmdBlock(dire, cmd, 5 if (down is False and dire[1] == height + direction[1]) or ( + down and dire[1] == direction + 1) else 0 if down else 1, 2, needRedstone=False)) + if down: - if dire[1] > direction[1]+1: - dire[1]-=1 + if dire[1] > direction[1] + 1: + dire[1] -= 1 else: - if dire[1] < height+direction[1]: - dire[1]+=1 - - if (down == False and dire[1] == height+direction[1]) or (down and dire[1] == direction+1): + if dire[1] < height + direction[1]: + dire[1] += 1 + + if (down is False and dire[1] == height + direction[1]) or (down and dire[1] == direction + 1): down = not down dire[0] += 1 direction[2] += 2 - - return BdxConverter(filePath, 'Build by Ryoun Musicreater', blocks) - - - - - - - - - - - def note2webs(Notes: list, Instrument: str, speed: float = 5.0, PlayerSelect: str = '', isProsess: bool = False): """传入音符,在oaclhost:8080上建立websocket服务器以供我的世界connect/wssever指令连接 :param 参数说明: @@ -369,17 +348,13 @@ def note2webs(Notes: list, Instrument: str, speed: float = 5.0, PlayerSelect: st await fcwslib.send_command(websocket, 'execute @a' + PlayerSelect + ' ~ ~ ~ title @s actionbar §e▶ 播放中: §a' + str( - j) + '/' + str(length) + ' || ' + str(int(j / length * 1000) / 10)) + j) + '/' + str(length) + ' || ' + str(int(j / length * 1000) / 10)) j += 1 time.sleep(Notes[i][1] / speed) fcwslib.run_server(run_server) - - - - def note2RSworld(world: str, startpos: list, notes: list, instrument: str, speed: float = 2.5, posadder: Iterable = (1, 0, 0), baseblock: str = 'stone'): # -> bool """传入音符,生成以音符盒存储的红石音乐 @@ -407,7 +382,7 @@ def note2RSworld(world: str, startpos: list, notes: list, instrument: str, speed powered = 'true' else: powered = 'false' - return Block('universal_minecraft', 'noteblock', + return Block('universal_minecraft', 'notebooks', {"instrument": ts(instrument1.replace("note.", '')), 'note': ts(str(note)), 'powered': ts(powered)}) @@ -487,11 +462,6 @@ def note2RSworld(world: str, startpos: list, notes: list, instrument: str, speed level.close() - - - - - class ryStruct: def __init__(self, world: str) -> None: @@ -556,9 +526,6 @@ class ryStruct: return self.RyStruct - - - """ RyStruct = { (0,0,0) = { diff --git a/nmcsup/__pycache__/__init__.cpython-39.pyc b/nmcsup/__pycache__/__init__.cpython-39.pyc index 05ad50549ce234f4050cdf7401f66d9e482de4dd..80b787be61951407471c647baeb75a84ff9d78a8 100644 GIT binary patch delta 36 qcmdnUxRH@Nk(ZZ?0SJnJf1k*m&ik}${)^_lF=YmN=6Z$`>x}@@=nSX; delta 36 qcmdnUxRH@Nk(ZZ?0SM&zzE0#$=Y6)Y?b*C-F=YmNrh29m>x}@ozzcW) diff --git a/nmcsup/__pycache__/log.cpython-39.pyc b/nmcsup/__pycache__/log.cpython-39.pyc index d009632fc916940fff180db0c8786f204b39172e..8f961898c0aa934d3208507d26e107cbc55611fe 100644 GIT binary patch delta 129 zcmcc5d!Ls#k(ZZ?0SJnJe@}e4k@py*aEO~G%Pp47ytMpV?3u;kMVTe3lkYOhO=e*- zWn`Re#gxd%G|EZs6rKvRoZ dKxQ-YFcv8TX-$?QHX!8|;S*VcWBL+hWQL^i1_kH{W4ezzP8S;0>Pu diff --git a/nmcsup/trans.py b/nmcsup/trans.py index 76538d6..adc532c 100644 --- a/nmcsup/trans.py +++ b/nmcsup/trans.py @@ -5,7 +5,6 @@ from nmcsup.log import log - import amulet import amulet_nbt from amulet.api.block import Block @@ -83,9 +82,6 @@ def Mp32Mid(mp3File, midFile): PianoTranscription(device="cpu").transcribe(audio, midFile) - - - # 传入一个音符列表转为指令列表 def Note2Cmd(Notes: list, ScoreboardName: str, Instrument: str, PlayerSelect: str = '', isProsess: bool = False) -> list: @@ -105,27 +101,11 @@ def Note2Cmd(Notes: list, ScoreboardName: str, Instrument: str, PlayerSelect: st j += 1 commands.append("\n\n# 凌云我的世界开发团队 x 凌云软件开发团队 : W-YI(金羿)\n") return commands + + # def newDataStructureCounterChange(): - - - - - - - - - - - - - - - - - - # 简单载入方块 # level.set_version_block(posx,posy,posz,"minecraft:overworld",("bedrock", (1, 16, 20)),Block(namespace, name)) @@ -264,10 +244,3 @@ def Notes2Player(Note, dire: list, CmdData: dict): def Datas2BlkWorld(NoteData, world: str, dire: list): for i in range(len(NoteData)): Blocks2World(world, [dire[0], dire[1], dire[2] + i], NoteData[i]) - - -if __name__ == '__main__': - from nmcreader import midi_conversion - path = "L:\\0WorldMusicCreater-MFMS new edition\\框架\\v0.3.2\\Musicreater\\测试用\\同道殊途标准.mid" - b = midi_conversion(path) - # classList_conversion(b, "n")