Files
SashegDev b4431702dc feat: add NeoForge support, fix Forge installPack bug, update server proxy
- Fix MinecraftLib.installPack() returning false for Forge (was dead code)
- Add NeoForgeInstaller.java with installer download and execution
- Update LaunchCommandBuilder with NeoForge JVM args, classpath, launch args
- Update LaunchMenu with NeoForge option, version selector, support check
- Update Instance.java loader type comment (vanilla, fabric, forge, neoforge)
- Update PackDownloader to handle neoforge loader type
- Update ZHttpClient with NEOFORGE_MAVEN service type and detection
- Add NeoForge proxy endpoints (/proxy/neoforge/versions, /proxy/neoforge/maven)
- Add maven.neoforged.net to proxy allowed_domains
- Add asset_index to PackMeta model and pack_manager scanning
- Include asset_index in /packs list endpoint response
2026-05-04 22:53:22 +00:00

31 lines
925 B
Python

from pydantic import BaseModel, Field
from typing import Dict, List, Optional
from datetime import datetime
import structlog
logger = structlog.get_logger(__name__)
class FileEntry(BaseModel):
path: str # относительный путь (mods/jei.jar)
hash: str # sha256
size: int
added_at: datetime
modified_at: datetime
class PackMeta(BaseModel):
pack_name: str
version: int = 1
updated_at: datetime = Field(default_factory=datetime.utcnow)
files: Dict[str, FileEntry] = Field(default_factory=dict)
ignored_dirs: List[str] = Field(
default_factory=lambda: [
"resourcepacks", "shaderpacks", "saves", "logs",
"crash-reports", "screenshots", "journeymap", "config"
]
)
minecraft_version: str
loader_type: str
loader_version: Optional[str] = None
asset_index: Optional[str] = None