Criando plugins no Minecraft usando Typescript

eliezercosta

Eliezer Martins

Posted on February 20, 2024

Criando plugins no Minecraft usando Typescript

Neste post vamos criar o plugin "Porcos Explosivos" para o Minecraft utilizando o Typescript.

O que são plugins?

Plugins são modificações do servidor Minecraft que permitem alterar o gameplay utilizando recursos do próprio jogo.

A principal diferença entre plugins e mods é que os plugins não requerem que o jogador instale nada em sua máquina. É necessário apenas logar no servidor que o plugin for instalado. Plugins utilizam recursos do próprio jogo para criar novas experiências pros jogadores.

Já os mods permitem desenvolvedores criarem novos recursos como mobs, blocos e etc. Estes requerem instalação.

Instalação do CustomRealms

CustomRealms é um framework que nos permite criar plugins de Minecraft na linguagem Javascript/Typescript.

Para instalar é necessário ter o NodeJS na máquina.

Para instalá-lo execute o seguinte comando:

$ npm install -g @customrealms/cli
Enter fullscreen mode Exit fullscreen mode

Iniciando o projeto

Crie uma pasta vazia com o nome do plugin desejado.

$ mkdir explosive-pigs
Enter fullscreen mode Exit fullscreen mode

Navegue até a pasta:

$ cd explosive-pigs
Enter fullscreen mode Exit fullscreen mode

E agora inicie o projeto.

$ npm run crx init
Enter fullscreen mode Exit fullscreen mode

O comando gerará o projeto com os seguintes arquivos:

/explosive-pigs
├── package.json
├── src
│   └── main.ts
├── tsconfig.json
└── webpack.config.js
Enter fullscreen mode Exit fullscreen mode

Escrevendo nosso primeiro plugin

O primeiro passo será definir pra que servirá o nosso plugin. Como o nome sugere, iremos criar porcos explosivos. Quando um usuário bater em um porco, ele irá explodir.

O evento que precisamos é o EntityDamageByEntityEvent. Ele é disparado quando uma entidade (qualquer mob) sofre dano por outra entidade.

Para isso, vamos alterar o código do arquivo src/main.ts

import { EntityDamageByEntityEvent, ServerEvents } from '@customrealms/core';

ServerEvents.register(EntityDamageByEntityEvent, (event) => {

});
Enter fullscreen mode Exit fullscreen mode

Continuando com a lógica, agora queremos verificar se a entidade que está sofrendo dano é um porco, e a entidade que está causando dano é um player.

Altere o código para adicionar esta lógica:

import { EntityDamageByEntityEvent, ServerEvents } from '@customrealms/core';

ServerEvents.register(EntityDamageByEntityEvent, (event) => {
    const entityType = event.getEntityType();
    const damagerType = event.getDamager()?.getType();

    if (entityType === EntityType.PIG && damagerType === EntityType.PLAYER) {
  // caso ambas condições sejam verdadeiras, iremos criar uma explosão
}
});
Enter fullscreen mode Exit fullscreen mode

Seguindo com a última parte da nossa lógica, vamos adicionar a explosão na localização do porco.

import { EntityDamageByEntityEvent, ServerEvents } from '@customrealms/core';

ServerEvents.register(EntityDamageByEntityEvent, (event) => {
    const entityType = event.getEntityType();
    const damagerType = event.getDamager()?.getType();

    if (entityType === EntityType.PIG && damagerType === EntityType.PLAYER) {
    const pig = event.getEntity();

        pig
            .getWorld()
            .createExplosion(
                pig.getLocation(),
                20
            )
    }
});
Enter fullscreen mode Exit fullscreen mode

Agora, com a lógica concluída, vamos fazer o build do plugin.

Execute o comando:

$ npm run build:jar
Enter fullscreen mode Exit fullscreen mode

Aguarde uns instantes. Será gerado o arquivo final do plugin no diretório /dist.

Inicializando o servidor e instalando o plugin

Para instalar o plugin, inicialize o servidor Spigot ou Bukkit. (Guia oficial do Spigot).

Copie o arquivo /dist/explosive-pigs.jar gerado pelo passo anterior no diretório /plugins do servidor Spigot ou Bukkit.

Execute o comando /reload no terminal do servidor.

Pronto!

Agora é só logar no servidor no endereço localhost:25565 e jogar!

Image description

💖 💪 🙅 🚩
eliezercosta
Eliezer Martins

Posted on February 20, 2024

Join Our Newsletter. No Spam, Only the good stuff.

Sign up to receive the latest update from our blog.

Related