Skip to content

EnderRealmFastGUI 文档

EnderRealmFastGUI 是一个简化 Minecraft 容器 UI(箱子、漏斗、熔炉等)创建的库,通过 Builder 模式和回调机制,让开发者专注于业务逻辑而非繁琐的事件处理。

核心特性

  • Builder 模式:链式调用构建容器 UI,代码简洁易读
  • 回调机制:通过 Lambda 表达式处理点击、关闭、拖拽等事件
  • 细粒度权限:支持按 slot 控制可点击、可拿走、可放入、可移动
  • 多容器支持:箱子、漏斗、熔炉、投掷器、酿造台等
  • 自动监听器:无需手动注册事件监听器,库自动处理

文档结构

快速开始

添加依赖

kotlin
// build.gradle.kts
dependencies {
    implementation(project(":EnderRealmFastGUI"))
}

初始化

java
public class MyPlugin extends JavaPlugin {
    @Override
    public void onEnable() {
        EnderRealmFastGUI.init(this);
    }
}

基本用法

java
import cn.enderrealm.fastgui.inventory.config.ContainerType;
import cn.enderrealm.fastgui.inventory.config.SlotPermission;
import cn.enderrealm.fastgui.inventory.core.InventoryGUI;

// 创建一个简单的商店 GUI
InventoryGUI gui = InventoryGUI.builder()
    .type(ContainerType.CHEST)
    .title("商店")
    .rows(3)
    .containerPermission(SlotPermission.READ_ONLY)      // 容器区域只读
    .playerInventoryPermission(SlotPermission.READ_ONLY) // 背包区域只读
    // 商品(可交互)
    .slot(10, new ItemStack(Material.DIAMOND), click -> {
        buyItem(click.getPlayer(), "diamond");
    }, SlotPermission.INTERACT_ONLY)
    // 装饰(只读)
    .slot(4, new ItemStack(Material.BLACK_STAINED_GLASS_PANE), SlotPermission.READ_ONLY)
    .build();

// 打开给玩家
gui.open(player);

权限系统

每个 slot 可以独立控制以下权限:

权限说明
clickable是否可点击触发回调
takeable是否可拿走物品
placeable是否可放入物品
movable是否可移动位置(拖拽、交换)

预设权限

预设clickabletakeableplaceablemovable
READ_ONLYfalsefalsefalsefalse
INTERACT_ONLYtruefalsefalsefalse
TAKE_ONLYfalsetruefalsefalse
PLACE_ONLYfalsefalsetruefalse
TAKE_AND_PLACEfalsetruetruefalse
FULL_ACCESStruetruetruetrue

依赖项

  • Minecraft 服务器:Paper 1.21+
  • Java 21+

许可证

GPL-3.0 License