Gerenciador moderno de atualizações e sincronização de modpacks para TLauncher / Minecraft.
Desenvolvido em Python 3.13, CustomTkinter, arquitetura limpa e integração nativa com o ecossistema CurseForge, Modrinth e TLauncher CDN.
Visão Geral • Diferenciais • Funcionalidades • Arquitetura • Tags & SEO • Tecnologias • Instalação • Roadmap • Apoie
TLauncher Mod Update Checker é uma aplicação desktop de alta performance criada para inspecionar, comparar, atualizar e sincronizar modpacks locais do Minecraft gerenciados pelo TLauncher sem corromper arquivos ou depender de downloads externos manuais.
Operando de forma cirúrgica sobre o arquivo oficial TLauncherAdditional.json, a ferramenta identifica todos os Mods, Resource Packs e Shaders instalados, consulta as versões mais recentes nos repositórios oficiais (CurseForge e Modrinth) e atualiza os metadados diretamente no JSON — permitindo que o próprio TLauncher efetue os downloads oficiais com integridade de hash garantida.
- Corrupção de Modpacks: Modpacks do TLauncher utilizam um formato proprietário em
TLauncherAdditional.json. Atualizar arquivos.jarmanualmente quebra a sincronização do lançador, gerando erros comoillegal hashou falhas de inicialização. - Erros 404 no Repositório do TLauncher: Mods atualizados na CurseForge frequentemente demoram para ser espelhados nos servidores do TLauncher (
rescl.tlauncher.org). Nosso checker verifica a disponibilidade prévia no CDN oficial antes de permitir a aplicação da atualização. - Sobrescrita Indesejada de Resource Packs: Atualizações convencionais redefinem o estado de pacotes de textura ativos. Nossa solução preserva estritamente
stateGameElement("active" / "no_active"). - Dificuldade de Compartilhamento: Enviar modpacks completos com gigabytes de
.jaré lento e inviável. Nosso sistema gera um Sync ZIP em milissegundos (~1,2 MB) com suporte a Drag-and-Drop nativo para Discord, WhatsApp e pastas do sistema.
| Inovação | Descrição Técnica |
|---|---|
| Validação Prévia de CDN (Anti-404) | Checagem de disponibilidade em tempo real via requisições HEAD/Range no repositório oficial do TLauncher (rescl.tlauncher.org). Um mod ou addon só é marcado como pronto se já existir no espelho oficial. |
| Resolução Precisa de Hashes SHA-1 | Consulta automática da API de arquivos da CurseForge (api.curse.tools), garantindo que o novo SHA-1 e o tamanho do arquivo correspondam exatamente ao esperado pelo lançador, eliminando qualquer erro de illegal hash. |
| Zero Download de JARs | A aplicação nunca baixa arquivos .jar diretamente. Ela atua exclusivamente como orquestradora de metadados no TLauncherAdditional.json, mantendo a integridade total do motor nativo do TLauncher. |
Preservação Estrita de Estado (stateGameElement) |
Ao atualizar Resource Packs e Shaders, o estado de ativação (active vs no_active) é preservado integralmente, impedindo desconfigurações nas escolhas visuais do jogador. |
| Exportação Instantânea com OLE Drag & Drop | Componente visual interativo que compacta TLauncherAdditional.json, config/, options.txt e pastas essenciais em um .zip ultraleve em ~300ms, permitindo arrastar o arquivo diretamente para o Discord ou colar com Ctrl+V (CF_HDROP). |
| Diagnóstico de Performance e Conflitos | Análise e correção automática de gargalos críticos de carregamento (como indexação síncrona do JEI, mixins de busca do ModernFix e ordenação correta das camadas de Resource Packs). |
- Scaneamento Automático: Detecção automática de modpacks na pasta do Minecraft (
%APPDATA%\.minecrafte discos adicionais comoD:\Games\.minecraft). - Verificação Multithread Assíncrona: Consulta rápida em lote utilizando
ThreadPoolExecutorcom retorno em tempo real de progresso e estatísticas. - Painel Master-Detail Rico: Visualização de changelogs, categorias, autores, downloads totais/mensais, links de código-fonte e licenças.
- Filtros Inteligentes: Filtragem por Todos, Com Atualização, Confirmados TLauncher e Já Atualizados.
- Limpeza Automática de
.jarAntigos: Remoção opcional e segura da versão antiga ao atualizar para evitar duplicatas na pastamods/.
- Visualização Dedicada: Gestão separada de pacotes de textura (
resourcepacks/) e shaders (shaderpacks/). - Badges de Estado Visual: Identificação clara se o pacote está atualmente ativo ou inativo no jogo.
- Atualização Segura de Versão: Atualização dos links e caminhos sem tocar no estado de carregamento do Minecraft.
- Geração em Milissegundos: Criação automática de pacotes de sincronização leves (~1 MB) contendo JSONs de metadados, pastas
config/,defaultconfigs/eoptions.txt. - Drag-and-Drop Nativo do Windows: Arraste o card diretamente para fora da janela (para o Discord, Telegram, WhatsApp ou Área de Trabalho).
- Cópia para Clipboard: Coloque o arquivo
.zipna Área de Transferência como objeto de arquivo do Windows (CF_HDROP) com apenas um clique para colar em qualquer aplicativo viaCtrl + V.
O projeto adota princípios de Clean Architecture e SOLID, desacoplando a interface visual das regras de negócio e serviços de rede:
graph TD
subgraph UI ["Camada de Apresentação (CustomTkinter)"]
MainApp["MainApp (Janela Principal)"]
PackSelector["PackSelector (Seleção de Modpack & Controles)"]
ModList["ModList (Lista Master com Checkboxes & Filtros)"]
DetailPanel["DetailPanel (Metadados Ricos, Changelog, Links)"]
AddonTab["AddonTab (Gestão de Resource Packs & Shaders)"]
DragExportCard["DragExportCard (Arrastar & Copiar ZIP)"]
end
subgraph Services ["Camada de Serviços (Services)"]
ScannerService["ScannerService (Scan de Modpacks & Discos)"]
UpdateService["UpdateService (CFWidget, Modrinth & Hash Resolver)"]
AddonService["AddonUpdateService (Varredura de Addons & Estado)"]
JsonUpdater["JsonUpdaterService (Atualização de Metadados JSON)"]
PackExportService["PackExportService (Compactação & OLE Drag/Clipboard)"]
end
subgraph Core ["Camada de Domínio & Núcleo (Core)"]
Models["Models (ModItem, ModpackInfo, UpdateStatus)"]
AddonModels["AddonModels (AddonItem, AddonType, AddonUpdateStatus)"]
JsonManager["JsonManager (Leitura & Escrita Segura com Backup)"]
Config["Config (URLs de Repositórios, Timeouts e Caminhos)"]
end
MainApp --> PackSelector
MainApp --> ModList
MainApp --> DetailPanel
MainApp --> AddonTab
MainApp --> DragExportCard
PackSelector --> ScannerService
ModList --> UpdateService
DetailPanel --> UpdateService
AddonTab --> AddonService
DragExportCard --> PackExportService
MainApp --> JsonUpdater
ScannerService --> Models
UpdateService --> Models
AddonService --> AddonModels
JsonUpdater --> JsonManager
PackExportService --> Models
TLauncherModUpdateChecker/
├── src/
│ ├── core/ # Modelos de domínio, entidades e constantes
│ │ ├── addon_models.py # Modelos de Resource Packs e Shader Packs
│ │ ├── config.py # URLs, endpoints de APIs e caminhos padrão
│ │ ├── json_manager.py # Serialização e manipulação do TLauncherAdditional.json
│ │ └── models.py # Modelos de ModItem, ModpackInfo e status
│ ├── services/ # Regras de negócio e comunicação com repositórios
│ │ ├── addon_service.py # Consulta de atualizações para addons
│ │ ├── addon_updater_service.py # Atualizador do JSON para resource packs/shaders
│ │ ├── image_service.py # Carregamento e cache assíncrono de miniaturas
│ │ ├── json_updater_service.py # Atualizador seguro de mods no JSON
│ │ ├── pack_export_service.py # Empacotamento em milissegundos e OLE Drag/Drop
│ │ ├── scanner_service.py # Localização de pastas de versões do Minecraft
│ │ └── update_service.py # Verificação de versões (CFWidget, Modrinth e Hashes)
│ └── ui/ # Componentes gráficos CustomTkinter
│ ├── components/ # Widgets reutilizáveis (lista, detalhe, drag card)
│ │ ├── addon_card.py
│ │ ├── addon_detail_panel.py
│ │ ├── addon_list.py
│ │ ├── detail_panel.py
│ │ ├── drag_export_card.py # Card interativo com Drag-and-Drop
│ │ ├── mod_card.py
│ │ ├── mod_list.py
│ │ ├── pack_selector.py
│ │ └── progress_panel.py
│ ├── tabs/ # Abas principais da interface
│ │ └── addon_tab.py # Aba de Resource Packs e Shaders
│ └── app.py # Janela principal e controle de fluxo
├── tests/ # Suíte de testes unitários e de integração
│ ├── test_integration.py
│ ├── test_json_updater.py
│ ├── test_pack_export.py
│ └── test_scanner.py
├── main.py # Ponto de entrada da aplicação
├── requirements.txt # Dependências do projeto
└── PERFORMANCE_AND_MULTIPLAYER_GUIDE.md # Guia técnico analítico de otimizações
O projeto está categorizado e tagueado no GitHub para máxima descoberta pela comunidade de Minecraft e desenvolvedores Python:
| Componente | Tecnologia | Finalidade |
|---|---|---|
| Linguagem Principal | Python 3.10+ (Testado em 3.13) | Execução veloz, concorrência com threads e manipulação de arquivos |
| Interface Gráfica (GUI) | CustomTkinter (v5.2.2) | Interface moderna com suporte nativo a modo escuro e widgets polidos |
| Processamento de Imagens | Pillow (PIL) | Decodificação e redimensionamento de thumbnails e ícones de mods |
| Integração com Windows | pywin32 + pythonnet | Suporte nativo a Drag & Drop OLE (System.Windows.Forms) e Clipboard (CF_HDROP) |
| APIs de Consulta | CFWidget API + Modrinth API v2 | Consulta livre de metadados sem necessidade de chaves de API pagas |
| API de Hashes Oficiais | CurseForge API Proxy (api.curse.tools) |
Obtenção de hashes SHA-1 oficiais (algo 1) e tamanhos de arquivos exatos |
| Validação de Repositório | TLauncher CDN (rescl.tlauncher.org) |
Verificação prévia de disponibilidade dos arquivos antes da atualização |
| Testes Automatizados | unittest (Python Standard Library) | Suíte automatizada de testes para scanners, serialização e exportação |
- Python 3.10 ou superior instalado (Download oficial).
- Sistema operacional Windows 10 ou 11.
git clone https://github.com/ChickChuck2/TLauncherModUpdateChecker.git
cd TLauncherModUpdateCheckerpython -m venv venv
.\venv\Scripts\activatepip install -r requirements.txtpython main.pypython -m unittest discover tests- Leitura e escrita bidirecional em
TLauncherAdditional.jsoncom backup automático (.bak). - Verificação multithread de versões na CurseForge via CFWidget e Modrinth com cache inteligente.
- Consulta de SHA-1 e tamanho direto na CurseForge para eliminar o erro
illegal hash. - Validação prévia de disponibilidade no repositório oficial do TLauncher (Anti-404).
- Interface moderna escura em CustomTkinter com layout Master-Detail.
- Aba dedicada para Resource Packs e Shaders preservando
stateGameElement. - Card interativo Arrastar para Enviar com suporte nativo a OLE Drag-and-Drop e
Ctrl+V. - Guia analítico de performance para carregamento de inventário, chunks e multijogador.
- Exportação com upload direto em um clique para serviços temporários (GoFile / Catbox) com link encurtado.
- Detecção e aviso de dependências ausentes de mods recém-atualizados.
- Suporte a perfis de múltiplos lançadores (Prism Launcher / Modrinth App).
Se o TLauncher Mod Update Checker facilitou a gestão de mods, sincronização com seus amigos ou eliminou gargalos no seu jogo, considere apoiar o projeto:
- ⭐ Deixe uma Estrela (Star): No topo direito desta página para dar visibilidade ao repositório no GitHub!
- 🍴 Fork o Repositório: Crie uma ramificação para desenvolver melhorias ou novas ideias.
- 📢 Compartilhe: Envie o link do repositório para o seu grupo de amigos ou comunidade do Discord.
- 💡 Sugira Melhorias: Abra uma Issue com sugestões de recursos ou problemas encontrados.
Contribuições são muito bem-vindas! Se você deseja colaborar:
- Faça um Fork do projeto.
- Crie uma branch para a sua funcionalidade:
git checkout -b feature/minha-nova-funcionalidade
- Realize seus commits seguindo mensagens semânticas:
git commit -m "feat: adiciona suporte a exportacao de logs simplificados" - Envie as alterações para o seu fork:
git push origin feature/minha-nova-funcionalidade
- Abra um Pull Request detalhado explicando as alterações realizadas.
Este projeto está licenciado sob a licença MIT. Consulte o arquivo LICENSE para mais detalhes.