Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 11 additions & 7 deletions collapse/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -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')
Expand All @@ -38,7 +42,7 @@

except ValueError:
logger.error('Choose number')
pass
continue

if choosed <= len(cheats):
cheat = selector.get_cheat_by_index(choosed)
Expand All @@ -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')
2 changes: 1 addition & 1 deletion collapse/utils/Cheat.py
Original file line number Diff line number Diff line change
Expand Up @@ -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)

Expand Down
6 changes: 5 additions & 1 deletion collapse/utils/Cheats.py
Original file line number Diff line number Diff line change
Expand Up @@ -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 = [
Expand All @@ -21,5 +23,7 @@
speedclient,
hachclient,
expensive,
expensive_upgrade
expensive_upgrade,
vegaline,
fluger
]
16 changes: 11 additions & 5 deletions collapse/utils/Data.py
Original file line number Diff line number Diff line change
Expand Up @@ -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')

Expand Down Expand Up @@ -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)
Expand Down
2 changes: 1 addition & 1 deletion collapse/utils/Logger.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,4 +22,4 @@ def setup_logger(name, level):

return logger

logger = setup_logger('CollapseLogger', logging.INFO)
logger = setup_logger('CollapseLogger', logging.INFO)
26 changes: 22 additions & 4 deletions collapse/utils/Selector.py
Original file line number Diff line number Diff line change
@@ -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()

Expand All @@ -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):
Expand All @@ -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()
30 changes: 30 additions & 0 deletions collapse/utils/Updater.py
Original file line number Diff line number Diff line change
@@ -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()
Binary file modified logo.ico
Binary file not shown.