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
Iniciando o projeto
Crie uma pasta vazia com o nome do plugin desejado.
$ mkdir explosive-pigs
Navegue até a pasta:
$ cd explosive-pigs
E agora inicie o projeto.
$ npm run crx init
O comando gerará o projeto com os seguintes arquivos:
/explosive-pigs
├── package.json
├── src
│ └── main.ts
├── tsconfig.json
└── webpack.config.js
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) => {
});
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
}
});
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
)
}
});
Agora, com a lógica concluída, vamos fazer o build do plugin.
Execute o comando:
$ npm run build:jar
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!
Top comments (0)