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ı.