Skip to content

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 ​

ÖzellikBukkit / SpigotPumpkin
Envanter OluşturmaBukkit.createInventory(owner, size, title)Pencere konteyner tanımları (WindowType)
Pencereleri Açmaplayer.openInventory(inv)player.open_window(window)
Tıklamaları YakalamaInventoryClickEvent işlemePencere tıklama geri çağırma (callback) işleyicileri
Eşya VerisiItemMeta içeren ItemStackBileşenler / NBT içeren ItemStack

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

1. Bukkit Uygulaması (Java) ​

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) ​

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);
}

MIT Lisansı altında yayınlandı.