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:
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.
[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.
[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.
[profile.release]
lto = true
Habilita LTO apenas para builds release.