Skip to content

Criando um Novo Projeto

Plugins Pumpkin utilizam o sistema de build Cargo.

O código completo para este plugin pode ser encontrado como um modelo no GitHub.

Inicializando um novo crate

Primeiro, precisamos criar uma nova pasta para o projeto. Você pode fazer isso executando o seguinte comando na pasta que você criou:

bash
cargo new <nome-do-projeto> --lib

Isso criará uma pasta com alguns arquivos dentro. A estrutura da pasta deverá ser parecida com esta:

├── Cargo.toml
└── src
    └── lib.rs

Configurando o crate

Como os plugins Pumpkin são carregados em tempo de execução como bibliotecas dinâmicas, precisamos dizer ao Cargo para construir esse crate dessa forma.

toml
[package]
name = "hello-pumpkin"
version = "0.1.0"
edition = "2021"

[lib] 
crate-type = ["cdylib"]

[dependencies]

Em seguida, precisamos adicionar algumas dependências básicas. Como o Pumpkin ainda está em desenvolvimento inicial, os crates internos não estão publicados no crates.io, então precisamos dizer ao Cargo para baixar as dependências diretamente do GitHub.

toml
[package]
name = "hello-pumpkin"
version = "0.1.0"
edition = "2021"

[lib]
crate-type = ["cdylib"]

[dependencies]

# Este é um crate base com a maioria das definições de tipos de alto nível
pumpkin = { git = "https://github.com/Pumpkin-MC/Pumpkin.git", branch = "master", package = "pumpkin" }
# Outras utilidades usadas pelo Pumpkin (por exemplo, TextComponent, Vectors...)
pumpkin-util = { git = "https://github.com/Pumpkin-MC/Pumpkin.git", branch = "master", package = "pumpkin-util" }
# Macros para facilitar o desenvolvimento de plugins
pumpkin-api-macros = { git = "https://github.com/Pumpkin-MC/Pumpkin.git", branch = "master", package = "pumpkin-api-macros" }

# Uma utilidade permitindo que plugins funcionem de maneira assíncrona
async-trait = "0.1"
# Um runtime assíncrono em Rust
tokio = "1.42"
# Logging
log = "0.4"

Para melhorar o desempenho e reduzir o tamanho dos arquivos, recomendamos habilitar a Otimização em Tempo de Link (LTO).
Esteja ciente de que isso aumentará o tempo de compilação.

toml
[profile.release] 
lto = true

Habilita LTO apenas para builds release.

Distribuído sob a Licença MIT.