Pumpkin-Docs/docs/tr_TR/plugin-dev/migrating-from-bukkit/inventories.md
Alexander Medvedev 5c23b676ed feat: d binding
2026-09-17 09:23:24 +02:00

2.4 KiB
Raw Blame History

Bukkit'ten Envanterleri ve GUI'leri Taşıma

Envanter GUI'leri (sandık menüleri, mağaza arayüzleri veya özel oyuncu pencereleri gibi) oluşturmak, Minecraft eklenti geliştirmede yaygın bir görevdir.

Bukkit'te özel GUI'ler Bukkit.createInventory() kullanılarak oluşturulur ve InventoryClickEvent aracılığıyla işlenir. Pumpkin'da ise envanter pencereleri Pencere API'leri (Window APIs) ve konteyner tıklama paketleri aracılığıyla yönetilir.


Temel Farklar

Özellik Bukkit / Spigot Pumpkin
Envanter Oluşturma Bukkit.createInventory(owner, size, title) Pencere konteyner tanımları (WindowType)
Pencereleri Açma player.openInventory(inv) player.open_window(window)
Tıklamaları Yakalama InventoryClickEvent işleme Pencere tıklama geri çağırma (callback) işleyicileri
Eşya Verisi ItemMeta içeren ItemStack Bileşenler / NBT içeren ItemStack

Kod Karşılaştırması: Özel Menü GUI'si Açma

1. Bukkit Uygulaması (Java)

public class MenuGUI implements Listener {

    public void openMenu(Player player) {
        Inventory inv = Bukkit.createInventory(null, 9, Component.text("Custom Menu"));

        ItemStack item = new ItemStack(Material.DIAMOND);
        ItemMeta meta = item.getItemMeta();
        meta.displayName(Component.text("Click Me!"));
        item.setItemMeta(meta);

        inv.setItem(4, item);
        player.openInventory(inv);
    }

    @EventHandler
    public void onInventoryClick(InventoryClickEvent event) {
        if (event.getView().getTitle().equals("Custom Menu")) {
            event.setCancelled(true);
            if (event.getSlot() == 4) {
                event.getWhoClicked().sendMessage("Diamond clicked!");
            }
        }
    }
}

2. Pumpkin Uygulaması (Rust)

use pumpkin_plugin_api::{
    player::Player,
    item::ItemStack,
    window::{Window, WindowType},
    text::TextComponent,
};

pub fn open_custom_menu(player: &Player) {
    // 1. Create a 9-slot chest window
    let mut window = Window::new(WindowType::Generic9x1, TextComponent::text("Custom Menu"));

    // 2. Set item in slot 4
    let item = ItemStack::new("minecraft:diamond", 1);
    window.set_item(4, Some(item));

    // 3. Open window for player
    player.open_window(window);
}