import os from pathlib import Path class Config: # --- Paths --- BASE_DIR = Path("/app") SERVER_DIR = BASE_DIR / "minecraft_server" MODS_DIR = SERVER_DIR / "mods" WORLD_DIR = SERVER_DIR / "world" CONFIG_DIR = SERVER_DIR / "config" LOGS_DIR = SERVER_DIR / "logs" BACKUPS_DIR = BASE_DIR / "backups" UPLOADS_DIR = BASE_DIR / "uploads" # --- Server Settings --- # Note: Using the exact jar name from the Dockerfile execution for clarity SERVER_JAR = "server.jar" MIN_RAM = "1G" # Increased minimum RAM for stability MAX_RAM = "10G" # Set a reasonable max limit for HF Spaces free tier SERVER_PORT = 25565 WEB_PORT = 7860 # Mandatory port for Hugging Face Spaces web UI # --- Authentication Credentials (Set as HF Secrets) --- ADMIN_USERNAME = os.getenv("ADMIN_USER", "admin") # Added default "admin" ADMIN_PASSWORD = os.getenv("ADMIN_PASS", "admin123") # Added safe default SECRET_KEY = os.getenv("SECRET_KEY", "tF4P23MF1SERmIbDP$xhvAPfLJfp8%KN") PLAYIT_ERROR_LOG = Path(os.getenv('MINECRAFT_SERVER_DIR', '/app/minecraft_server')) / "playit_error.log" # --- Self-ping settings --- SPACE_URL = os.getenv("SPACE_URL", "https://smodusermc-mc.hf.space") PING_INTERVAL = 300 # --- Java Path (Matches Dockerfile installation) --- JAVA_PATH = os.getenv("JAVA_HOME", "/usr/lib/jvm/temurin-21-jdk-amd64") + "/bin/java" JAVA_ARGS = [ "-XX:+UnlockExperimentalVMOptions", "-XX:+UseG1GC", "-XX:+ParallelRefProcEnabled", "-XX:MaxGCPauseMillis=50", "-XX:+DisableExplicitGC", "-XX:+AlwaysPreTouch", "-XX:G1NewSizePercent=30", "-XX:G1MaxNewSizePercent=40", "-XX:G1HeapRegionSize=8M", "-XX:G1ReservePercent=20", "-XX:G1HeapWastePercent=5", "-XX:G1MixedGCCountTarget=4", "-XX:InitiatingHeapOccupancyPercent=15", "-XX:G1MixedGCLiveThresholdPercent=90", "-XX:G1RSetUpdatingPauseTimePercent=5", "-XX:SurvivorRatio=32", "-XX:+PerfDisableSharedMem", "-XX:MaxTenuringThreshold=1" ] SUPABASE_URL = os.getenv("SUPABASE_URL", "https://klgnaqxixgrslleqhvdy.supabase.co") SUPABASE_ANON_KEY = os.getenv("SUPABASE_ANON_KEY", "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6ImtsZ25hcXhpeGdyc2xsZXFodmR5Iiwicm9sZSI6ImFub24iLCJpYXQiOjE3NjQ5NzkwNjksImV4cCI6MjA4MDU1NTA2OX0.AZOKBf0dGLwvIVZFl5bkC3OHm725SD7zP0SDBDWHW-0") SUPABASE_BUCKET_NAME = os.getenv("SUPABASE_BUCKET_NAME", "saves") config = Config()