3.7 KiB
Hızlı Başlangıç
Bu kılavuz, Zig programlama dilini kullanarak Pumpkin sunucu eklentileri yazmaya başlamanıza yardımcı olacaktır.
Pumpkin için Zig eklentileri, resmi pumpkin-api-zig bağlamaları kullanılarak WebAssembly (Wasm) bileşenleri olarak derlenir.
Ön Koşullar
Başlamadan önce aşağıdaki araçların kurulu olduğundan emin olun:
- Zig: Sürüm 0.16.0 veya üzeri.
wasm-tools:PATHortam değişkeninde mevcut olmalıdır (derleme betiği tarafından WIT meta verilerini gömmek ve WebAssembly bileşenini oluşturmak için kullanılır).
1. Projeyi Kurma
Eklenti projeniz için yeni bir dizin oluşturun:
mkdir my-zig-plugin
cd my-zig-plugin
pumpkin-api-zig paketini bağımlılık olarak ekleyin:
zig fetch --save git+https://github.com/Pumpkin-MC/pumpkin-api-zig
Proje kökünde build.zig dosyasını oluşturun:
const std = @import("std");
const pumpkin_api = @import("pumpkin_api_zig");
pub fn build(b: *std.Build) void {
_ = pumpkin_api.addPlugin(b, b.dependency("pumpkin_api_zig", .{}), .{
.name = "my-zig-plugin",
.root_source_file = b.path("src/main.zig"),
});
}
2. Eklentiyi Yazma
src dizinini oluşturun ve kodunuzu src/main.zig içine ekleyin:
const std = @import("std");
const pumpkin = @import("pumpkin");
pub const std_options: std.Options = .{ .logFn = pumpkin.logFn };
const MyPlugin = struct {
pub const metadata: pumpkin.Metadata = .{
.name = "my-zig-plugin",
.version = "0.1.0",
.authors = &.{"Adınız"},
.description = "Zig dilinde örnek bir eklenti.",
};
pub const events = .{
.player_join_event = onJoin,
};
pub fn onLoad(_: pumpkin.Context) !void {
std.log.info("Zig eklentisinden merhaba!", .{});
}
fn onJoin(_: pumpkin.Server, ev: *pumpkin.EventData(.player_join_event)) void {
std.log.info("{s} katıldı", .{ev.player.getName()});
}
};
comptime {
pumpkin.register(MyPlugin);
}
Önemli Bileşenler:
std_options:pumpkin.logFnaracılığıyla standart Zig günlüklerini (std.log) Pumpkin günlük sistemine yönlendirir.pub const metadata: Bileşen yüklendiğinde Pumpkin tarafından gerekli görülen eklenti bilgilerini (ad, sürüm, yazarlar, açıklama) tanımlar.pub const events: Eklenti tarafından kaydedilen olay işleyicilerini (örneğin.player_join_event) tanımlar.pub fn onLoad: Pumpkin eklentiyi başlattığında çağrılan giriş noktasıdır.pumpkin.register(MyPlugin): Derleme sırasında gerekli WebAssembly bileşeni dışa aktarımlarını ve giriş noktalarını üretir.
Note
API tarafından döndürülen her şey (tanıtıcılar/handles dahil), yalnızca geçerli geri arama (callback) dönene kadar geçerlidir. Bir tanıtıcıyı korumak için
keep()işlevini çağırın ve işiniz bittiğindedeinit()ile serbest bırakın.
3. Eklentiyi Derleme
Eklentinizi bir WebAssembly bileşeni olarak derleyin:
zig build
Bu komut proje kök dizininizde zig-out/my-zig-plugin.wasm dosyasını oluşturacaktır.
4. Eklentiyi Çalıştırma
- Derlenen
.wasmdosyasını Pumpkin sunucunuzunplugins/dizinine kopyalayın:cp zig-out/my-zig-plugin.wasm /yol/pumpkin/plugins/ - Pumpkin sunucusunu başlatın veya yeniden başlatın:
./pumpkin - Eklentinin yüklendiğini doğrulamak için sunucu günlüklerini kontrol edin:
[INFO] Zig eklentisinden merhaba!