Um tutorial em progresso de como criar um plugin para um servidor de minecraft usando PowerNukkitX e Kotlin para os falantes de Brasileiro.
Você se encontra exitado porque quer criar um plugin para um servidor de Minecraft e não tem quase nada a respeito disso para o PowerNukkitX com Gradle e Kotlin no Brasil.
- Um cérebro funcional (opcional)
- Força de vontade
- Inglês básico (Não tem para onde correr, na duvida baixa um Duolingo® da vida)
- Algum editor de texto (Como o IntelliJ IDEA®)
- Gradle instalado
- Conhecimento em Kotlin básico
- JVM também instalado
- Um sistema operacional baseado em Linux (Não irei abordar Janelas nesse tutorial, caso você use esse sistema use WSL, vai te poupar sofrimento.)
Agora que você já tem o ferramental necessário, e hora de queimar uns neurônios configurando seu projeto. Vamos começar
Primeiramente você precisa de um projeto gradle antes de tudo, então como você pode ter isso? É muito simples.
- Crie uma pasta para seu projeto, por exemplo na
~/Fontes/KPlugins/OlaMundo
- Entre nessa pasta e execute um comando parecido com esse:
gradle init
.- Selecione o tipo de projeto library digitando o digito 3.
- Na linguagem de implementação você deve selecionar o Kotlin digitando o número
4
. - Para o DSL (A linguagem que o gradle vai usar para si-configurar), você deve selecionar Kotlin digitando o número
1
, ou tu pode ser meio alternativo e selecionar Groovy, mas não irei o abordar nesse tutorial. - Bote um bom nome para o seu projeto como "VoltaParaMimAlicia"
- Também um bom ID de pacote para seu projeto como
pedrinho.redpiu
- Selecione alguma versão para deixar como alvo. Recomendo deixar o valor padrão.
- Caso você for vida louca e quiser usar as novas apis, bote
yes
. Mas também recomendo deixar o valor padrão. - Pronto! Agora você tem seu projeto gradle básico para o vosso plugin!
- Adicione os repositórios necessários
Abra o arquivo
lib/build.gradle.kts
no seu editor favorito e ache o bloco chamadorepositories
que ummavenCentral()
dentro. Logo depois adicione os repositórios do CloudBurstMC e do JitPack. Basicamente é só adicionar as linhas abaixos de baixo domavenCentral()
mantendo eles dentro das chaves.
maven { setUrl("https://jitpack.io") }
maven { setUrl("https://repo.opencollab.dev/maven-releases") }
maven { setUrl("https://repo.opencollab.dev/maven-snapshots") }
- Adicione a dependência do PowerNukkitX, a mãe dos plugins e dos servidores de Minecraft baseado nela.
Tá ligado o quê tu fez com os repositórios? Pois então você irá fazer algo parecido com dependências. Aqui eu irei usar a versão
1.20.0-r2
da biblioteca do PNX.- Vá dentro do bloco do
dependencies
. - Coloque a dependência
cn.powernukkitx:powernukkitx:1.20.0-r2
como compileOnly já que ela só vai usada para gerar o intellisense no seu compilador. Caso você for preguiçoso: É só botar essa linha dentro do blococompileOnly("cn.powernukkitx:powernukkitx:1.20.0-r2")
.
- Vá dentro do bloco do
- Agora já está quase tudo pronto. Só falta o principal: sua classe principal! Yay! Vá no
Library.kt
que irá ficar provavelmente emlib/src/main/kotlin/[SEU PACOTE SEPARADO POR /]/Library.kt
e abra ele no seu editor. E agora Giovanni? Você deverá importar a classePluginBase
do pacotecn.nukkit.plugin
utilizandoimport cn.nukkit.plugin.PluginBase
. E herde essa classe na sua classeLibrary
, no Kotlin é super de boa só botar um: PluginBase()
logo depois do nome da sua classe. Claro, antes da chave. Depois crie uma função chamadaonEnable
que será ativada quando seu plugin for habilitado pelo servidor sobrescrevendo a declaração da classe pai.override fun onEnable()
) dentro dela você pode botar a lógica do seu plugin, contudo, como esse é seu primeiro você pode botar fazer a ação mais mágica do mundo dos animes: dizer "Olá mundo" com Kotlin usandoprintln("Olá mundo!")
. - Crie o manifesto para o seu plugin para dizer para o PNX o que é o seu plugin. Como? Você deve se perguntar. É fácil: crie um arquivo no
lib/src/main/resources/
chamadoplugin.yml
e configure-o com o template abaixo.
name: O nome do seu plugin
version: 1.0.0 # A versão do seu plugin
main: pedrinho.redpiu.Library # exemplo, essa é a classe principal do seu plugin.
api: [ "1.0.14" ] # Versão da API que seu plugin irá ultilizar.
author: PedrinhoFreeFire # Você. Provavelmente você é o autor desse plugin.
description: Esse plugin mostra \"Olá mundo\" no console. # A descrição do plugin fica aqui.
- Agora você tem duas maneiras de distribuir seu plugin da forma fitness sem nenhum excesso, somente o código do teu plugin usando
./gradlew jar
(Não irei abordar nesse tutorial). Ou você pode adicionar o plugin shadowJar que irá includir o Runtime do Kotlin e futuras dependências do seu projeto. Veja mais a baixo como adicionar. - Compile seu projeto em um arquivo
.jar
: Na pasta do seu projeto execute:./gradlew shadowJar
. Se tudo dar certo, o resultado irá ficar emlib/build/libs/lib-all.jar
copie isso em algum lugar que fique de fácil acesso, você irá precisar dele depois.
Entre no arquivo lib/build.gradle.kts
e logo depois vá para o bloco plugins
dentro e simplesmente bote id("com.github.johnrengelman.shadow") version "8.1.1"
depois da ultima linha do bloco, claro, antes do fechamento chave.
Parece que você conseguiu criar seu plugin básico amigo, agora é hora do quê? Sim, sacrificar quatro bodes para fazer o PNX funcionar.
Primeiramente você precisa do PNX-CLI instalado, nesse caso você pode obter-o nesse link: https://github.com/PowerNukkitX/PNX-CLI/releases/tag/0.1.6 Depois extraia a versão para o sistema operacional que vossa mercê esteja usando no momento de leitura desse ritual.
Agora segue o MatheusFreeFireGameplaysHD4KDoublyAtmos:
- Crie uma pasta em algum lugar para o servidor que você ira criar daqui a pouco, por exemplo:
mkdir -p ~/Servidores/MonicaMeDaUmBeijo
. - Entre na pasta do seu servidor, e logo depois execute o binário do PNX-CLI.
- Espere o CLI baixar as dependências, e depois de completar, feche o servidor com
stop
e logo após pressione Enter. - Tá ligado aonde tu deixou teu plugin? Então. Bote ele na pasta chamada
plugins
. - Rode o PNX-CLI de novo, agora ele irá iniciar o servidor e provavelmente você irá ver alguma mensagem como
Olá mundo
Pronto!!! Agora você tem seu ambiente de desenvolvimento PocketNukkitX. Seja feliz e sacrifique um bode nesse exato momento, ou se não você irá ser procurado pela CIA/FBI ou até mesmo a NASA.
Obrigado. Seja feliz, Provavelmente eu.
Provavelmente você está usando o Minecraft UWP. E por alguma razão a M$ não permitiu que os aplicativos baseados em UWP acessem o localhost, então tu precisa rodar um comando no powershell bem especifico como administrador e reiniciar o jogo:
CheckNetIsolation LoopbackExempt -a -n="Microsoft.MinecraftUWP_8wekyb3d8bbwe"