/Criando-Seu-Plugin-Com-PNX-E-Kotlin

Um tutorial em progresso de como criar um plugin para um servidor de minecraft usando PowerNukkitX e Kotlin para os falantes de Brasileiro.

Creative Commons Zero v1.0 UniversalCC0-1.0

Criando-Seu-Plugin-Com-PNX-E-Kotlin

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.

AINDA EM PROGRESSO.

Pre-requisitos

  • 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.)

OK, Já tenho tudo isso agora como começo?

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.

  1. Crie uma pasta para seu projeto, por exemplo na ~/Fontes/KPlugins/OlaMundo
  2. Entre nessa pasta e execute um comando parecido com esse: gradle init.
    1. Selecione o tipo de projeto library digitando o digito 3.
    2. Na linguagem de implementação você deve selecionar o Kotlin digitando o número 4.
    3. 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.
    4. Bote um bom nome para o seu projeto como "VoltaParaMimAlicia"
    5. Também um bom ID de pacote para seu projeto como pedrinho.redpiu
    6. Selecione alguma versão para deixar como alvo. Recomendo deixar o valor padrão.
    7. Caso você for vida louca e quiser usar as novas apis, bote yes. Mas também recomendo deixar o valor padrão.
    8. Pronto! Agora você tem seu projeto gradle básico para o vosso plugin!
  3. Adicione os repositórios necessários Abra o arquivo lib/build.gradle.kts no seu editor favorito e ache o bloco chamado repositories que um mavenCentral() dentro. Logo depois adicione os repositórios do CloudBurstMC e do JitPack. Basicamente é só adicionar as linhas abaixos de baixo do mavenCentral() 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") }
  1. 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.
    1. Vá dentro do bloco do dependencies.
    2. 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 bloco compileOnly("cn.powernukkitx:powernukkitx:1.20.0-r2").
  2. Agora já está quase tudo pronto. Só falta o principal: sua classe principal! Yay! Vá no Library.kt que irá ficar provavelmente em lib/src/main/kotlin/[SEU PACOTE SEPARADO POR /]/Library.kt e abra ele no seu editor. E agora Giovanni? Você deverá importar a classe PluginBase do pacote cn.nukkit.plugin utilizando import cn.nukkit.plugin.PluginBase. E herde essa classe na sua classe Library, 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 chamada onEnable 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 usando println("Olá mundo!").
  3. 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/ chamado plugin.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.
  1. 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.
  2. Compile seu projeto em um arquivo .jar : Na pasta do seu projeto execute: ./gradlew shadowJar. Se tudo dar certo, o resultado irá ficar em lib/build/libs/lib-all.jar copie isso em algum lugar que fique de fácil acesso, você irá precisar dele depois.

Adicionado o plugin shadow no seu projeto.

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.

Baixando e rodando o PowerNukkitX.

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:

  1. Crie uma pasta em algum lugar para o servidor que você ira criar daqui a pouco, por exemplo: mkdir -p ~/Servidores/MonicaMeDaUmBeijo.
  2. Entre na pasta do seu servidor, e logo depois execute o binário do PNX-CLI.
  3. Espere o CLI baixar as dependências, e depois de completar, feche o servidor com stop e logo após pressione Enter.
  4. Tá ligado aonde tu deixou teu plugin? Então. Bote ele na pasta chamada plugins.
  5. 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.

Dicas

Meu servidor de Minecraft não está aparecendo e não consigo conectar!!!

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"