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-pluginpumpkin-api-zig paketini bağımlılık olarak ekleyin:
zig fetch --save git+https://github.com/Pumpkin-MC/pumpkin-api-zigProje 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ğinde deinit() ile serbest bırakın.
3. Eklentiyi Derleme
Eklentinizi bir WebAssembly bileşeni olarak derleyin:
zig buildBu 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:bashcp zig-out/my-zig-plugin.wasm /yol/pumpkin/plugins/ - Pumpkin sunucusunu başlatın veya yeniden başlatın:bash
./pumpkin - Eklentinin yüklendiğini doğrulamak için sunucu günlüklerini kontrol edin:text
[INFO] Zig eklentisinden merhaba!