import flet
import flet as ft
from flet import *
import subprocess
import minecraft_launcher_lib
class ListItem(UserControl):
def __init__(self):
super().__init__()
self.value = None
def set_value(self, e):
self.value = e.control.value
def build(self):
all_version = minecraft_launcher_lib.utils.get_version_list()
supported_versions = []
for i in all_version:
# forge_version = minecraft_launcher_lib.forge.find_forge_version(i["id"])
# fabric_version = minecraft_launcher_lib.fabric.is_minecraft_version_supported(i["id"])
if i["id"] is not None:
supported_versions.append(i['id'])
# if forge_version is not None:
# supported_versions.append(i['id'])
# if fabric_version is not False:
# supported_versions.append(i['id'])
self.List = Dropdown(
options=[ft.dropdown.Option(i) for i in supported_versions],
label="Supported Versions",
on_change=lambda e: self.set_value(e),
)
return self.List
def main(page: ft.Page):
page.window_title_bar_hidden = False
page.window_title_bar_buttons_hidden = True
page.theme_mode = "dark"
page.vertical_alignment = ft.MainAxisAlignment.CENTER
def runGame(username: str, version: str):
print(username)
print(version)
minecraft_launcher_lib.install.install_minecraft_version(version, "./moon")
page.add(
ft.Row(
[
Column(
[
username := ft.TextField(label="Hello, World!"),
item := ListItem(),
ft.TextButton("Start", on_click=lambda _: runGame(username.value, item.value)),
],
alignment=ft.MainAxisAlignment.CENTER,
)
],
alignment=ft.MainAxisAlignment.CENTER,
)
)
page.add()
page.update()
pass
if __name__ == "__main__":
flet.app(target=main)