Pumpkin-Docs/docs/tr_TR/plugin-dev/zig/quick-start.md
2026-09-19 19:21:47 +02:00

123 lines
3.7 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Hızlı Başlangıç
Bu kılavuz, [Zig programlama dilini](https://ziglang.org/) kullanarak Pumpkin sunucu eklentileri yazmaya başlamanıza yardımcı olacaktır.
Pumpkin için Zig eklentileri, resmi [`pumpkin-api-zig`](https://github.com/Pumpkin-MC/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](https://ziglang.org/download/)**: Sürüm 0.16.0 veya üzeri.
- **[`wasm-tools`](https://github.com/bytecodealliance/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 [build.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 [src/main.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!
```