Criando plugins no Minecraft usando Typescript
Eliezer Martins
Posted on February 20, 2024
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!
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
November 30, 2024
November 30, 2024