pip install minecraft-launcher-lib PyQt5
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QProgressBar, QVBoxLayout, QWidget
from PyQt5.QtCore import QThread, pyqtSignal
import minecraft_launcher_lib
import os
class DownloadThread(QThread):
progress_changed = pyqtSignal(int)
def run(self):
options = {
"username": "Player",
"uuid": "user-uuid",
"token": "user-token",
"version": "1.16.5",
"path": os.path.expanduser("~/.minecraft"),
"callback": {
"setStatus": self.set_status,
"setProgress": self.set_progress,
}
}
minecraft_launcher_lib.install.install_minecraft_version("1.16.5", os.path.expanduser("~/.minecraft"), callback=options["callback"])
def set_status(self, text):
print(text)
def set_progress(self, progress):
self.progress_changed.emit(int(progress * 100))
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.setWindowTitle("Minecraft Downloader")
self.setGeometry(100, 100, 400, 200)
self.progress_bar = QProgressBar(self)
self.progress_bar.setGeometry(50, 80, 300, 30)
self.progress_bar.setMaximum(100)
self.download_thread = DownloadThread()
self.download_thread.progress_changed.connect(self.update_progress)
self.download_thread.start()
def update_progress(self, value):
self.progress_bar.setValue(value)
if __name__ == "__main__":
app = QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec_())