Metadata-Version: 2.4
Name: easy-mc-launcher
Version: 0.4.1
Summary: A simple package to make creating Minecraft launchers easier.
Author: Jamie
Classifier: Programming Language :: Python :: 3
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Requires-Python: >=3.7
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: minecraft-launcher-lib
Requires-Dist: requests
Dynamic: license-file

# Easy MC Launcher

Ein simples Python-Package, um ohne Kopfschmerzen eigene Minecraft-Launcher zu programmieren.

Wenn du schon mal versucht hast, einen Minecraft-Launcher von Grund auf neu zu schreiben, kennst du wahrscheinlich die Probleme: Man muss sich mit verschiedenen Java-Versionen herumschlagen, komplexe JSON-Dateien von Mojang parsen, gigantische Start-Parameter generieren und die Installation von Forge oder Fabric ist oft ein Albtraum.

Dieses Package ist ein intelligenter Wrapper um die Bibliothek `minecraft-launcher-lib`. Es versteckt die ganze komplizierte Logik und bietet dir einfach zu verstehende Befehle. Du sagst im Code einfach "Installiere Fabric" oder "Starte das Spiel und joine Server X", und das Package kümmert sich um den Rest.

## Installation

```bash
pip install easy-mc-launcher
```

## Code-Beispiele & Dokumentation

### 1. Die Basics: Vanilla Minecraft starten
Um das Spiel zu starten, musst du nur den Launcher initialisieren, grundlegende Einstellungen wie den RAM festlegen und die Start-Funktion aufrufen. Wenn Dateien oder Assets auf dem PC des Nutzers fehlen, lädt das Package sie automatisch von den Mojang-Servern herunter.

```python
from easy_mc_launcher import EasyLauncher, SettingsManager

# Der SettingsManager speichert alle Einstellungen automatisch in einer launcher_settings.json Datei
settings = SettingsManager()
settings.set("username", "Notch")
settings.set("ram_max", "4G")

# Hauptklasse initialisieren
launcher = EasyLauncher()

# Lädt alles Nötige herunter und startet Minecraft 1.20.1
launcher.launch("1.20.1", settings)
```

### 2. Direkt auf einen Server verbinden
Wenn du einen Launcher für deinen eigenen Minecraft-Server baust, möchtest du wahrscheinlich, dass sich das Spiel beim Starten automatisch mit deinem Server verbindet. Das geht über die Launch-Parameter.

```python
from easy_mc_launcher import EasyLauncher, SettingsManager

launcher = EasyLauncher()
settings = SettingsManager()

# Startet das Spiel und wirft den Spieler direkt auf den angegebenen Server
launcher.launch("1.20.1", settings, server_ip="mc.hypixel.net", server_port=25565)
```

### 3. Automatisch das richtige Java herunterladen
Ein sehr häufiges Problem bei Custom Launchern ist, dass Spieler nicht das richtige Java installiert haben (alte Versionen brauchen Java 8, neue Versionen Java 17 oder 21). Du kannst das exakt richtige Java einfach von Mojang in den lokalen `.minecraft`-Ordner laden lassen.

```python
from easy_mc_launcher import EasyLauncher

launcher = EasyLauncher()

# Prüft, welches Java für 1.20.1 benötigt wird und lädt es herunter
launcher.install_java("1.20.1")
```

### 4. Forge oder Fabric installieren
Einen Modloader über reinen Code zu installieren, ist normalerweise extrem aufwendig. Hier reicht ein einziger Befehl.

```python
from easy_mc_launcher import EasyLauncher, SettingsManager

launcher = EasyLauncher()
settings = SettingsManager()

# Installiert Fabric und gibt den Namen des neuen Profils zurück 
# (z.B. 'fabric-loader-0.15.7-1.20.1')
fabric_version = launcher.install_fabric("1.20.1")

# Für Forge gibst du stattdessen die MC-Version und die Forge-Version an:
# forge_version = launcher.install_forge("1.20.1-47.1.0")

# Startet das Spiel mit dem neu installierten Modloader
launcher.launch(fabric_version, settings)
```

### 5. Mods per Code verwalten
Du kannst Mods dynamisch herunterladen, aktivieren, deaktivieren oder löschen. Das ist extrem nützlich, wenn du ein eigenes Modpack automatisch updaten willst, sobald der User den Launcher öffnet.

```python
from easy_mc_launcher import EasyLauncher, ModManager

launcher = EasyLauncher()

# ModManager für den aktuellen Minecraft-Ordner initialisieren
mods = ModManager(launcher.minecraft_directory)

# Eine Mod über einen direkten Download-Link (z.B. von Modrinth) in den /mods Ordner laden
mods.download_mod("https://link-zur-mod.jar", "meine_mod.jar")

# Eine Mod deaktivieren (benennt sie in .jar.disabled um, sodass das Spiel sie beim Start ignoriert)
mods.disable_mod("meine_mod.jar")

# Die Mod wieder aktivieren
mods.enable_mod("meine_mod.jar")

# Liste aller aktiven Mods anzeigen
print("Aktive Mods:", mods.get_installed_mods())
```

### 6. Resource Packs verwalten
Genau wie bei den Mods kannst du auch Texturenpakete verwalten.

```python
from easy_mc_launcher import EasyLauncher, ResourcePackManager

launcher = EasyLauncher()
packs = ResourcePackManager(launcher.minecraft_directory)

# Ein Texturenpaket direkt als ZIP in den richtigen Ordner herunterladen
packs.download_pack("https://link-zum-pack.zip", "MeinTexturenpaket.zip")
```

### 7. Versionen aufräumen & suchen
Du kannst alte Versionen löschen, um Speicherplatz auf dem PC der Nutzer freizumachen, oder einfach die allerneuste Version suchen, wenn du immer auf dem aktuellsten Stand sein willst.

```python
from easy_mc_launcher import EasyLauncher

launcher = EasyLauncher()

# Gibt die aktuellste Vanilla-Release-Version zurück (z.B. '1.20.4')
print(launcher.get_latest_release())

# Löscht eine bestimmte Version komplett von der Festplatte
launcher.delete_version("1.19.2")
```

## Die Einstellungen im Detail (`SettingsManager`)
Der `SettingsManager` ist dafür da, dass du dich nicht selbst um das Lesen und Schreiben von JSON-Dateien kümmern musst. Folgende Keys werden aktuell unterstützt:

- `"username"`: Der Ingame-Name des Spielers.
- `"uuid"`: Die Spieler-UUID. Wenn du diesen Key weglässt, generiert das Package automatisch eine saubere Offline-UUID aus dem Benutzernamen. Das hilft dabei, dass Skins auf manchen Offline-Servern richtig geladen werden.
- `"ram_min"`: Der minimal reservierte Arbeitsspeicher (z.B. `"1G"`).
- `"ram_max"`: Der maximal reservierte Arbeitsspeicher (z.B. `"4G"`).
- `"resolution"`: Die Fenstergröße beim Start (Standard: `{"width": 854, "height": 480}`).
- `"show_logs"`: Wenn du das auf `True` setzt, werden die Live-Logs von Minecraft direkt in dein Python-Terminal gestreamt. Hilft extrem bei der Fehlersuche, wenn das Spiel mal abstürzt.
- `"java_path"`: Optional. Hier kannst du den absoluten Pfad zu einer eigenen `javaw.exe` erzwingen. Wenn du das leer lässt, sucht das Package selbst nach der besten Java-Version.
