Skip to content

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: PATH ortam 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:

bash
mkdir my-zig-plugin
cd my-zig-plugin

pumpkin-api-zig paketini bağımlılık olarak ekleyin:

bash
zig fetch --save git+https://github.com/Pumpkin-MC/pumpkin-api-zig

Proje kökünde build.zig dosyasını oluşturun:

zig
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:

zig
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.logFn aracı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:

bash
zig build

Bu komut proje kök dizininizde zig-out/my-zig-plugin.wasm dosyasını oluşturacaktır.


4. Eklentiyi Çalıştırma ​

  1. Derlenen .wasm dosyasını Pumpkin sunucunuzun plugins/ dizinine kopyalayın:
    bash
    cp zig-out/my-zig-plugin.wasm /yol/pumpkin/plugins/
  2. Pumpkin sunucusunu başlatın veya yeniden başlatın:
    bash
    ./pumpkin
  3. Eklentinin yüklendiğini doğrulamak için sunucu günlüklerini kontrol edin:
    text
    [INFO] Zig eklentisinden merhaba!

MIT Lisansı altında yayınlandı.