22#type: ignore
33#Early load variables
44APP_VERSION = 1 #The API Version.
5- APP_UF_VERSION = "1.54.4 "
5+ APP_UF_VERSION = "1.54.5 "
66#The semver version
77print (f"CraftServerSetup by Enderbyte Programs v{ APP_UF_VERSION } (c) 2023-2025, some rights reserved" )
88
103103import renaminghandler #MC rename namdler
104104import texteditor #Text editor handler
105105import logutils #Load logs
106+ import bedrocklinks #Load bedrock files
106107
107108del WINDOWS
108109del DEBUG
@@ -776,31 +777,10 @@ def setup_bedrock_server(stdscr):
776777 S_INSTALL_DIR = SERVERSDIR + "/" + servername
777778 p = cursesplus .ProgressBar (stdscr ,10 ,cursesplus .ProgressBarTypes .SmallProgressBar ,cursesplus .ProgressBarLocations .BOTTOM ,message = "Setting up bedrock server" )
778779 p .step ("Getting download information" )
779- availablelinks = [g for g in extract_links_from_page (requests .get ("https://www.minecraft.net/en-us/download/server/bedrock" ,headers = {"User-Agent" :MODRINTH_USER_AGENT }).text ) if "bedrock" in g ]
780- link_win_normal = get_by_list_contains (availablelinks ,"win/" )
781- link_lx_normal = get_by_list_contains (availablelinks ,"linux/" )
782- link_win_preview = get_by_list_contains (availablelinks ,"win-preview/" )
783- link_lx_preview = get_by_list_contains (availablelinks ,"linux-preview/" )
784- if ON_WINDOWS :
785- availablelinks = [link_win_normal ,link_win_preview ]
786- else :
787- availablelinks = [link_lx_normal ,link_lx_preview ]
788-
789- l2d = availablelinks [uicomponents .menu (stdscr ,["Latest Version" ,"Latest Preview Version" ],"Please select a version" )]
790- p .step ("Downloading server file" )
791- urllib .request .urlretrieve (l2d ,S_INSTALL_DIR + "/server.zip" )
792- p .step ("Extracting server file" )
793- dirstack .pushd (S_INSTALL_DIR )#Make install easier
794- zf = zipfile .ZipFile (S_INSTALL_DIR + "/server.zip" )
795- zf .extractall (S_INSTALL_DIR )
796- zf .close ()
797- p .step ("Removing excess files" )
798- os .remove (S_INSTALL_DIR + "/server.zip" )
799- p .step ("Preparing exec" )
800- if not ON_WINDOWS :
801- os .chmod (S_INSTALL_DIR + "/bedrock_server" ,0o777 )
802-
780+ dlinfo = bedrocklinks .ui_download_bedrock_software (stdscr ,p ,S_INSTALL_DIR )
803781
782+ l2d :str = dlinfo [0 ]
783+
804784 sd = {
805785 "name" : servername ,
806786 "javapath" : "" ,
@@ -817,7 +797,7 @@ def setup_bedrock_server(stdscr):
817797 },
818798 "script" : S_INSTALL_DIR + "/bedrock_server" ,
819799 "linkused" : l2d ,
820- "ispreview" : l2d == link_lx_preview or l2d == link_win_preview
800+ "ispreview" : dlinfo [ 1 ]
821801 }
822802 try :
823803 shutil .copyfile (ASSETSDIR + "/defaulticon.png" ,S_INSTALL_DIR + "/server-icon.png" )
@@ -834,7 +814,7 @@ def setup_bedrock_server(stdscr):
834814 bedrock_manage_server (stdscr ,servername ,appdata .APPDATA ["servers" ].index (sd )+ 1 )
835815
836816def bedrock_do_update (stdscr ,chosenserver ,availablelinks ):
837- l2d = availablelinks [uicomponents .menu (stdscr ,["Latest Version" ,"Latest Preview Version" ],"Please select a version" )]
817+ l2d = bedrocklinks . get_links () [uicomponents .menu (stdscr ,["Latest Version" ,"Latest Preview Version" ],"Please select a version" )]
838818 #Remember: Don't overwrite server.properties or allowlist.json
839819 p = cursesplus .ProgressBar (stdscr ,5 )
840820 cursesplus .displaymsg (stdscr ,["Updating server" ,"Please be patient." ],False )
@@ -879,22 +859,16 @@ def bedrock_do_update(stdscr,chosenserver,availablelinks):
879859def bedrock_manage_server (stdscr ,servername ,chosenserver ):
880860 curver = appdata .APPDATA ["servers" ][chosenserver - 1 ]["linkused" ]
881861 cursesplus .displaymsg (stdscr ,["Checking for Bedrock updates" ],False )
882- availablelinks = [g for g in extract_links_from_page (requests .get ("https://www.minecraft.net/en-us/download/server/bedrock" ,headers = {"User-Agent" :MODRINTH_USER_AGENT }).text ) if "bedrock" in g ]
883- link_win_normal = get_by_list_contains (availablelinks ,"win/" )
884- link_lx_normal = get_by_list_contains (availablelinks ,"linux/" )
885- link_win_preview = get_by_list_contains (availablelinks ,"win-preview/" )
886- link_lx_preview = get_by_list_contains (availablelinks ,"linux-preview/" )
887- if ON_WINDOWS :
888- availablelinks = [link_win_normal ,link_win_preview ]
889- else :
890- availablelinks = [link_lx_normal ,link_lx_preview ]
862+
863+ availablelinks = bedrocklinks .get_links ()
891864
892865 if appdata .APPDATA ["servers" ][chosenserver - 1 ]["ispreview" ]:
893866 sel = 1
894867 else :
895868 sel = 0
896869
897870 latestlink = availablelinks [sel ]
871+ #cursesplus.messagebox.showinfo(stdscr,[latestlink,curver])
898872 if curver != latestlink :
899873 if cursesplus .messagebox .askyesno (stdscr ,["A bedrock update has been detected." ,"If you don't install it, devices can't connect." ,"Do you want to install this update?" ]):
900874 bedrock_do_update (stdscr ,chosenserver ,availablelinks )
@@ -1340,12 +1314,6 @@ def prune_servers():
13401314 dirstack .pushd (SERVERSDIR )
13411315 appdata .APPDATA ["servers" ] = [a for a in appdata .APPDATA ["servers" ] if os .path .isdir (a ["dir" ])]
13421316 #Look for unregistered directories
1343- serverdirs = [f for f in os .listdir (SERVERSDIR ) if os .path .isdir (f )]
1344- registereddirs = [a ["dir" ] for a in appdata .APPDATA ["servers" ]]
1345- for serverdir in serverdirs :
1346- if not serverdir in registereddirs :
1347- if not os .path .isfile (serverdir + "/exdata.json" ) and not os .path .isfile (serverdir + "/server.properties" ):
1348- shutil .rmtree (serverdir )
13491317 dirstack .popd ()
13501318 appdata .updateappdata ()
13511319
@@ -1707,7 +1675,7 @@ def svr_mod_mgr(stdscr,SERVERDIRECTORY: str,serverversion,servertype):
17071675 cursesplus .messagebox .showerror (stdscr ,["This plugin does not have a config file" ])
17081676
17091677def generate_script (svrdict : dict ) -> str :
1710- if svrdict ["software" ] == 0 :
1678+ if svrdict ["software" ] == 5 :
17111679 if ON_WINDOWS :
17121680 __SCRIPT__ = svrdict ["dir" ]+ "/bedrock_server.exe"
17131681 else :
@@ -3278,7 +3246,7 @@ def manage_server(stdscr,_sname: str,chosenserver: int):
32783246
32793247 if appdata .APPDATA ["settings" ]["transitions" ]["value" ]:
32803248 cursesplus .transitions .vertical_bars (stdscr )
3281- if appdata .APPDATA ["servers" ][chosenserver - 1 ]["software" ] == 0 :
3249+ if appdata .APPDATA ["servers" ][chosenserver - 1 ]["software" ] == 5 :
32823250 bedrock_manage_server (stdscr ,_sname ,chosenserver )
32833251 return
32843252 #Manager server
0 commit comments