From f9eda89d21d8924b634afa9560c7e55466c1cba4 Mon Sep 17 00:00:00 2001 From: dest4590 <80628386+dest4590@users.noreply.github.com> Date: Mon, 8 Apr 2024 00:00:12 +0300 Subject: [PATCH 1/2] Added version checker, fixed selector, added two dlcs --- collapse/__init__.py | 18 +++++++++++------- collapse/utils/Cheat.py | 2 +- collapse/utils/Cheats.py | 6 +++++- collapse/utils/Data.py | 16 +++++++++++----- collapse/utils/Logger.py | 2 +- collapse/utils/Selector.py | 26 ++++++++++++++++++++++---- collapse/utils/Updater.py | 30 ++++++++++++++++++++++++++++++ logo.ico | Bin 2288 -> 1675 bytes 8 files changed, 81 insertions(+), 19 deletions(-) create mode 100644 collapse/utils/Updater.py diff --git a/collapse/__init__.py b/collapse/__init__.py index 26081a4..3d5d9f0 100644 --- a/collapse/__init__.py +++ b/collapse/__init__.py @@ -9,14 +9,18 @@ from .utils.Settings import settings from .utils.RPC import rpc from .utils.Data import data +from .utils.Updater import updater # Using rich library for displaying bold and color texts print('[bold white]' + logo.full) print('[bold green]' + logo.tagline) print('[italic]VER: ' + data.version) +rpc.daemon = True rpc.start() +updater.check_version() + if not settings.get('nickname'): settings.set('nickname', f'CollapseUser{random.randint(10000, 99999)}') logger.debug('Nickname setup') @@ -38,7 +42,7 @@ except ValueError: logger.error('Choose number') - pass + continue if choosed <= len(cheats): cheat = selector.get_cheat_by_index(choosed) @@ -55,20 +59,20 @@ elif choosed == 22: if settings.get('rpc') == 'True': - # Disable logger.info('Disabled RPC') settings.set('rpc', False) rpc.disabled = True - selector.info() + selector.pause() elif settings.get('rpc') == 'False': - # Enable logger.info('Enabled RPC') settings.set('rpc', True) rpc.disabled = False rpc.start_time = time() - selector.info() - - + selector.pause() + + elif choosed == 23: + quit() + else: logger.error('Choose number') \ No newline at end of file diff --git a/collapse/utils/Cheat.py b/collapse/utils/Cheat.py index 3cc345b..7309891 100644 --- a/collapse/utils/Cheat.py +++ b/collapse/utils/Cheat.py @@ -52,7 +52,7 @@ def run(self): # Using backslash var, because f-strings not supporting it in expressions bc = '\\' - command = f"..\\jre-21.0.2\\bin\\java.exe -noverify -Xmx{settings.get('ram')}M -Djava.library.path={f'.{bc}natives;' if self.internal and os.path.isdir(f'natives') else f'..{bc}natives;'} {(f'-cp ..{bc}libraries{bc}*' if not self.internal and not os.path.isdir(f'natives') else f'-cp .{bc}libraries{bc}*' ) + ';' if self.use_libraries else ''}{f'.{bc}' + self.jar + f' {self.main_class}' if not self.use_as_jar else '-jar ' + self.jar} --username {settings.get('nickname')} --gameDir .\\ --assetsDir {f'.{bc}assets' if self.internal and os.path.isdir(f'assets') else f'..{bc}assets'} --assetIndex {self.version} --uuid N/A --accessToken 0 --userType legacy --version {self.version}" + command = f"..\\jre-21.0.2\\bin\\java.exe -noverify -Xmx{settings.get('ram')}M -Djava.library.path={f'.{bc}natives;' if self.internal and os.path.isdir(f'natives') else f'..{bc}natives;'} {(f'-cp .{bc}libraries{bc}*' if self.internal and os.path.isdir(f'natives') else f'-cp ..{bc}libraries{bc}*') + ';' if self.use_libraries else ''}{f'.{bc}' + self.jar + f' {self.main_class}' if not self.use_as_jar else '-jar ' + self.jar} --username {settings.get('nickname')} --gameDir .\\ --assetsDir {f'.{bc}assets' if self.internal and os.path.isdir(f'assets') else f'..{bc}assets'} --assetIndex {self.version} --uuid N/A --accessToken 0 --userType legacy --version {self.version}" logger.debug(command) diff --git a/collapse/utils/Cheats.py b/collapse/utils/Cheats.py index fee5f64..106bc44 100644 --- a/collapse/utils/Cheats.py +++ b/collapse/utils/Cheats.py @@ -10,6 +10,8 @@ hachclient = Cheat('HachClient', data.get_url('Hachclient.zip'), internal=True) expensive = Cheat('Expensive', data.get_url('Expensive-2.0.jar'), version='1.16') expensive_upgrade = Cheat('Expensive Upgrade', data.get_url('ExpensiveUpgrade.jar'), version='1.16') +vegaline = Cheat('VegaLine', data.get_url('VegaLine.zip'), internal=True) +fluger = Cheat('Fluger', data.get_url('Fluger.zip'), internal=True) # Don't forget to add cheats to this array cheats = [ @@ -21,5 +23,7 @@ speedclient, hachclient, expensive, - expensive_upgrade + expensive_upgrade, + vegaline, + fluger ] \ No newline at end of file diff --git a/collapse/utils/Data.py b/collapse/utils/Data.py index 8b9bf6d..1b66acd 100644 --- a/collapse/utils/Data.py +++ b/collapse/utils/Data.py @@ -9,21 +9,27 @@ class DataManager: def __init__(self) -> None: self.root_dir = 'data/' - self.server = 'https://axkanxneklh7.objectstorage.eu-amsterdam-1.oci.customer-oci.com/n/axkanxneklh7/b/loader/o/' + self.server = 'https://storage.googleapis.com/collapseloader/' + self.server_fallback = 'https://loader.collapseloader.org' self.server_assets = 'https://axkanxneklh7.objectstorage.eu-amsterdam-1.oci.customer-oci.com/n/axkanxneklh7/b/assets/o/' - self.version = '1.2.1' + self.repo = 'https://github.com/dest4590/CollapseLoader/' + self.version = '1.2.2' if not os.path.isdir(self.root_dir): os.mkdir(self.root_dir) logger.debug('Created root dir') try: - requests.get(self.server, timeout=3) + r = requests.get(self.server, timeout=3) + + if 'is not available in your location' in r.text: # If server is blocked + self.server = self.server_fallback + logger.debug('Using the main server') except requests.exceptions.RequestException: logger.debug("The main server is down/inaccessible, we're using fallback") - self.server = 'https://loader.collapseloader.org' # Uses a fallback server if the main server is down + self.server = self.server_fallback # Uses a fallback server if the main server is down logger.debug('Initialized DataManager') @@ -63,7 +69,7 @@ def download(self, path: str) -> True: total_size = int(response.headers.get('content-length', 0)) - with tqdm(total=total_size, unit="B", unit_scale=True, ascii=True, ncols=80, colour='blue') as progressbar: + with tqdm(total=total_size, desc=path, unit="B", unit_scale=True, ascii=True, ncols=80, colour='blue') as progressbar: with open(self.root_dir + filename, "wb") as f: for d in response.iter_content(1024): f.write(d) diff --git a/collapse/utils/Logger.py b/collapse/utils/Logger.py index ecd3a56..b3adf6a 100644 --- a/collapse/utils/Logger.py +++ b/collapse/utils/Logger.py @@ -22,4 +22,4 @@ def setup_logger(name, level): return logger -logger = setup_logger('CollapseLogger', logging.INFO) \ No newline at end of file +logger = setup_logger('CollapseLogger', logging.DEBUG) \ No newline at end of file diff --git a/collapse/utils/Selector.py b/collapse/utils/Selector.py index de473ac..3be49cc 100644 --- a/collapse/utils/Selector.py +++ b/collapse/utils/Selector.py @@ -1,9 +1,9 @@ from rich.console import Console +import os from .Logger import logger from .Cheats import cheats from .Cheat import Cheat -from .RPC import rpc console = Console() @@ -23,15 +23,30 @@ def __init__(self) -> None: self.text += '\n[dark_cyan]20. Select username[/]' self.text += '\n[dark_cyan]21. Enter RAM[/]' self.text += '\n[dark_cyan]22. Enable/Disable RPC[/]' - + self.text += '\n[dark_red]23. Exit[/]' + def show(self) -> None: + self.clear() console.print(self.text, highlight=False) def select(self) -> str: return input('Select >> ') - def info(self) -> None: - input('Press enter ') + def pause(self) -> None: + input('Press enter >> ') + + def ask(self, question: str) -> str: + while True: + i = input(f'{question} >> ') + + if i in ['y', '', 'yes', 'да', 'н']: + return True + + elif i in ['n', 'т', 'нет']: + return False + + else: + pass def get_cheat_by_index(self, index: int) -> Cheat: for i, c in enumerate(cheats, 1): @@ -49,4 +64,7 @@ def select_ram(self) -> int: except ValueError: logger.error('Enter gigabytes (2, 4)') + def clear(self) -> None: + os.system('cls') + selector = Selector() diff --git a/collapse/utils/Updater.py b/collapse/utils/Updater.py new file mode 100644 index 0000000..9a676c5 --- /dev/null +++ b/collapse/utils/Updater.py @@ -0,0 +1,30 @@ +import webbrowser +import requests + +from .Logger import logger +from .Data import data +from .Selector import selector + +class Updater: + def __init__(self): + self.remote_version = requests.get('https://api.github.com/repos/dest4590/CollapseLoader/releases/latest').json()['tag_name'] + self.local_version = data.version + + logger.debug(f'Remote: {self.remote_version}, local: {self.local_version}') + + def check_version(self): + if self.remote_version > self.local_version: + logger.info('Update your loader!') + + if selector.ask('Open a download page [y,n]'): + webbrowser.open(data.repo + 'releases/latest') + + quit() + + elif self.remote_version < self.local_version: + return + else: + return + + +updater = Updater() \ No newline at end of file diff --git a/logo.ico b/logo.ico index 7a50b4abbe0e51fee19f8ac08ad2d8c13ec00a27..928bd78cfbce414ecef7abd136a439b4c62e078f 100644 GIT binary patch delta 1642 zcmY*aX;f3^7QMN6ahXdgU44r3v7+%=Xh^2!f>)hb4B zCZx6Iy=ZA2ts?zWD*o~STbaCGyygu0L*6CWdojJMl#E_{)gE}2;!q~z-Eb5)Kd

E%iw5Im?1y9d6| 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 Date: Mon, 8 Apr 2024 10:02:27 +0300 Subject: [PATCH 2/2] Update Logger.py --- collapse/utils/Logger.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/collapse/utils/Logger.py b/collapse/utils/Logger.py index b3adf6a..357a1f6 100644 --- a/collapse/utils/Logger.py +++ b/collapse/utils/Logger.py @@ -22,4 +22,4 @@ def setup_logger(name, level): return logger -logger = setup_logger('CollapseLogger', logging.DEBUG) \ No newline at end of file +logger = setup_logger('CollapseLogger', logging.INFO)