O tutorial original pode ser encontrado aqui: https://launcher.sashok724.net/- já adianto que está tudo em russo. Você vai precisar de uma máquina com Linux para prosseguir. --- Esse launcher foi feito com Java 8 utilizando a tecnologia JavaFX, possibilitando a customização total. Sistema anti-cheat integrado, sistema de login e cadastro pelo próprio launcher, painel de controle de usuário e integração com os mais famosos CMS e Fóruns, tais como: IPB, PHPBB, XenForo, vBulletin, WordPress, DLE e etc.
Instalando:
Execute o script de instalação em uma pasta qualquer (necessário ter o curl):
curl -s https://launcher.sashok724.net/download/setup.sh | sh
Inicie o Launcher como um aplicativo comum Java:
java -Xmx256M -jar LaunchServer.jar
Personalizando o LaunchServer.cfg
Quando você iniciar a configuração, ele solicitará o IP para que o launcher se conecte e após isso o arquivo LaunchServer.cfg será gerado. IP server para autenticação, sistema se skins, processamento de UUID e gerador de arquivo .exe pelo Launch4J. Você pode utilizar o localhost para testes:
address: "localhost"; # Local do VDS (dóminio ou IP)
port: 7240; # Porta do launcher (não altere)
Métodos de autenticação (authProvider)
Maneira padrão para autenticação via Launcher. O método é bem aceitável para testes, porém para uma versão final, recomenda-se utilização de: reject, file, request, mysql. Todos esses métodos requerem uma configuração adicional no arquivo authProviderConfig:
authProvider: "accept"; # Método de autorização
authProviderConfig: {
# configurar método de autenticação
};
Processo Reject:
Esse método de autenticação faz com que qualquer nome de usuário e senha estejam incorretos, levando a uma tela de falha. Esse método pode ser utilizado para manutenção do servidor. Exemplo:
message: "Em manutenção, volta mais tarde!"; # mensagem que será exibida como erro
Processo File:
Para autenticação de usuários, esse método utiliza um arquivo especificado. É recomendado para servidores privados, com número de jogadores pré-estabelecidos. Exemplo:
file: "users.txt"; # Dentro do arquivo deverá ter a configuração "usuário:senha"
digest: "SHA-256"; # Algorítimo hash da senha. Suporta plain, MD5, SHA-1, SHA-224, SHA-256, SHA-512
Processo Request:
Esse método de autenticação utiliza uma url especifica. É recomendado para grandes projetos que utilizam CMS com hash proprietário. Exemplo:
url: "https://myserver.tld/auth.php?login=%login%&password=%password%"; # URL que o launcher utilizará para autenticar. %login% e %password% são subistituidos por nome de usuário e senha, respectivamente.
response: "OK:(?<username>.+)"; # Máscara de autenticação bem sucedida. O grupo de captura <username> deve ser o nome do usuário. Se a resposta for diferente, retornará um erro.
Você pode baixar os arquivos de autenticação pré-configurados: WordPress, XenForo, IPB e PHPBB. (devem ser adicionados à raiz do seu site).
Processo com MySQL:
Esse método de autenticação utiliza o MySQL. É recomendado para grandes projetos que utilizam o hash padrão, como DLE ou sites produzidos por você. Exemplo:
address: "mysqlserver.tld"; # Endereço do MySQL
port: 3306; # Porta do MySQL (porta default 3306)
username: "root"; # Usuário do banco de dados MySQL
password: "PSP1004"; # Senha do B=banco de dados MySQl
database: "dle"; # Nome do banco de dados MySQL
query: "SELECT name FROM dle_users WHERE (email=? OR name=?) AND password=MD5(MD5(?)) LIMIT 1"; # Como a query deve ser
queryParams: [ "%login%", "%login%", "%password%" ]; # Parametros da query. %login% e %password% serão substituídos por nome de usuário e senha respectivamente.
Verificar autorização:
Para verificar uma autorização, basta executar o comando:
auth "username" "password"
- Não irei incluir o processo de UUID porque o padrão é suficiente. Caso você use o UUID em MySQL utilize o tutorial original.
Sistema de Skins e Capas:
O sistema de skins e capas permite que um usuário faça alteração mesmo sem possuir uma conta original Minecraft. Esse sistema pode ser ou não ativado, para isso você deverá criar um sistema de upload no painel de usuário do seu site e configurar no launcher. Veja os exemplos:
Padrão para conta originais:
skinsURL: "http://skins.minecraft.net/MinecraftSkins/%username%.png"; # URL das Skins
cloaksURL: "http://skins.minecraft.net/MinecraftCloaks/%username%.png"; # URL das Capas
Para contas não originais, hospedadas pelo seu servidor:
skinsURL: "http://skins.meuservidor.com/MinecraftSkins/%username%.png"; # URL das Skins
cloaksURL: "http://skins.meuservidor.com/MinecraftCloaks/%username%.png"; # URL das Capas
Criando um executável .exe com Launch4J:
O launcher pode gerar automáticamente um arquivo .exe. Para isso você deverá alterar as informações como desejar, assim como o favicon.ico. Veja o exemplo de configuração:
launch4J: true; # Ativa a produção do arquivo .exe via Launch4J
Versões do Minecraft e Perfis:
Versões do jogo e perfis para servidores com mais de um tipo de servidor. Aqui você gerencia os downloads que os jogadores irão efetuar.
Assets que você irá utilizar:
Primeiro você deverá definir qual versão do Minecraft que seu servidor irá utilizar, após isso, execute o comando para que os assets da versão sejam baixados:
downloadAsset 1.7.10 "asset1.7.10" # Entre aspas será o nome da pasta
Obs: o launcher suporta as versões 1.6.4/1.7.2/1.7.10/1.8.9/1.9
Clientes que você irá utilizar:
Basicamente o cliente é o executável do Minecraft. É importante utilizar o mesmo cliente que você utilizou pros assets. Veja o Exemplo:
downloadClient 1.7.10 "HiTech" # Entre aspas será o nome da pasta do cliente.
Esse também irá criar um arquivo de configurações de perfis, profile.cfg:
version: "x.x.x"; # Versão do cliente
assetIndex: "x.x.x"; # Versão dos assets (1.7.10+)
# Runtime-dependent params
dir: "XXXXX"; # Diretório do cliente
assetDir: "XXXXX"; # diretório dos assets
# Client params
sortIndex: 0; # índice para organizar os perfis, o menor fica no topo da lista.
title: "XXXXX"; # Nome do servidor que utilizará esse perfil, por exemplo: MeuServer - PVP
serverAddress: "server.tld"; # IP do servidor que utilizará esse perfil
serverPort: 25565; # Porta do servidor
# Updater and client watch service
update: []; # Arquivos e diretórios que serão atualizados, mas não será verificada durante o jogo
updateVerify: [ # Os arquivos e diretórios que devem sempre ser verificados. Importante para impedir modificações no cliente proveniente de hackers.
"libraries", "natives", "mods",
"minecraft\\.jar", "forge\\.jar"
];
updateExclusions: [ # Aquivos e diretórios que deverão ser excluídos de atualizações e verificações
# ...
];
# Client launcher params
mainClass: "net.minecraft.launchwrapper.Launch"; # Classe principal do cliente
classPath: [ "libraries", "minecraft.jar", "forge.jar" ]; # Cliente classpath
jvmArgs: [ # Argumentos adicionais JVM
"-Dfml.ignorePatchDiscrepancies=true", # ignora diferenças
"-Dfml.ignoreInvalidMinecraftCertificates=true", # ignora falta de certificados
"-Dorg.lwjgl.opengl.Display.allowSoftwareOpenGL=true" # Jogadores sem placas de vídeo também poderão jogar
];
clientArgs: [ # Argumentos adicionais
"--tweakClass", "cpw.mods.fml.common.launcher.FMLTweaker" # Se você utilizar o Forge
];
Atualizações e sincronizações de Clientes e Perfis:
Para garantir alto desempenho, launchserver armazena o conteúdo das atualizações de diretório e perfis. Ao atualizar esses arquivos o launcher dos jogadores pode não estar na mesma versão ocasionando erros. Para manter sincronizado, existem dois comandos:
syncUpdates # Sincroniza o conteúdo de atualização
syncProfiles # Sincroniza o conteúdo dos perfis
Esses comandos são necessários após a modificação do cliente, dos perfis ou dos assets! Caso contrário você e seus jogadores irão receber erros!
Construção do Launcher:
Agora que você configurou o launcherserver, hora de configurar o launcher (executável). Abra o arquivo runtime/config.js:
var config = {
dir: "sashok724", // Local (pasta) onde o launcher irá armazenar os arquivos (%user.home%/dir)
title: "sashok724's Launcher", // Título do Launcher
icons: [ "favicon.png" ], // ícone do seu launcher (em runtime)
// Tela de login
newsURL: "https://launcher.sashok724.net/", // URL das notícias que serão exibidas na tela principal
linkText: "link", // Texto do link acima do login
linkURL: new java.net.URL("http://bit.ly/1SP0Rl8"), // URL do texto acima do login
// Valores de configuração padrão
settingsMagic: 0xBEEF, // Não altere
autoLoginDefault: false, // Entrar automáticamente
fullScreenDefault: false, // Launcher em fullscreen
ramDefault: 1024, // Quantidade de ram (utilize 0 para automático)
// Nome dos diretórios do JRE, se você não entende não altere
jreMustdie32Dir: "jre-8u66-win32", jreMustdie64Dir: "jre-8u66-win64",
jreLinux32Dir: "jre-8u66-linux32", jreLinux64Dir: "jre-8u66-linux64",
jreMacOSXDir: "jre-8u66-macosx", jreUnknownDir: "jre-8u66-unknown"
}
Buildando o Launcher:
Para gerar seu launcher, é necessário compilar. Esse comando irá compilar e gerar um arquivo .jar e um .exe caso a opção Launch4J esteja ativada.
build # Gera um arquivo Launcher.jar e um Launcher.exe