• 欢迎加入MineBBS QQ讨论群:点击查看所有的官方讨论群
  • 我们将于近期对服务器进行迁移,服务可能中断至多2日。请各位安排好自己的访问计划,造成不便敬请谅解!
  • MineBBS入站考试已经上线!想要成为【正式会员】解锁更多功能吗?快来参与吧!【点我去看】
资源图标

二次开发 FakeInventories 1.0.3-MOT-SNAPSHOT

完成注册/登录后下载
版权类型
二次开发
API版本
Nukkit-MOT
版权链接
https://github.com/MemoriesOfTime/FakeInventories/
[MD] # Fake Inventories 一个 Nukkit-MOT 服务器插件,用于轻松创建玩家可交互的虚拟物品栏(GUI 界面)。 ## 功能特性 - 支持单箱子(27格)、双箱子(54格)、漏斗(5格)三种物品栏类型 - 支持自定义标题 - 支持监听玩家点击事件 - 支持取消物品操作(实现纯 GUI 菜单) - 通过 ServiceManager 注册服务,方便其他插件调用 ## 使用方法 ### 1. 在 plugin.yml 中添加依赖 ```yaml depend: - FakeInventories ``` ### 2. 获取服务 ```java public void onEnable() { RegisteredServiceProvider<FakeInventories> provider = getServer().getServiceManager().getProvider(FakeInventories.class); if (provider == null || provider.getProvider() == null) { getLogger().error("未找到 FakeInventories 插件!"); getServer().getPluginManager().disablePlugin(this); return; } FakeInventories fakeInventories = provider.getProvider(); } ``` ### 3. 创建虚拟物品栏 **单箱子(27格):** ```java ChestFakeInventory inventory = new ChestFakeInventory(); // 或使用自定义标题 ChestFakeInventory inventory = new ChestFakeInventory(null, "自定义标题"); ``` **双箱子(54格):** ```java DoubleChestFakeInventory inventory = new DoubleChestFakeInventory(); // 或使用自定义标题 DoubleChestFakeInventory inventory = new DoubleChestFakeInventory(null, "自定义标题"); ``` **漏斗(5格):** ```java HopperFakeInventory inventory = new HopperFakeInventory(); // 或使用自定义标题 HopperFakeInventory inventory = new HopperFakeInventory(null, "自定义标题"); ``` ### 4. 设置物品 ```java inventory.setItem(0, Item.get(Item.DIAMOND)); inventory.setItem(1, Item.get(Item.GOLD_INGOT, 0, 64)); ``` ### 5. 添加事件监听器 ```java inventory.addListener(event -> { Player player = event.getPlayer(); SlotChangeAction action = event.getAction(); int slot = action.getSlot(); Item sourceItem = action.getSourceItem(); // 变更前的物品 Item targetItem = action.getTargetItem(); // 变更后的物品 // 取消操作(阻止物品修改) event.setCancelled(); // 处理点击逻辑 player.sendMessage("你点击了第 " + slot + " 格"); }); ``` ### 6. 显示给玩家 ```java player.addWindow(inventory); ``` ### 完整示例 ```java public class MyPlugin extends PluginBase { public void openMenu(Player player) { ChestFakeInventory menu = new ChestFakeInventory(null, "我的菜单"); // 设置菜单物品 menu.setItem(0, Item.get(Item.DIAMOND).setCustomName("选项 1")); menu.setItem(1, Item.get(Item.EMERALD).setCustomName("选项 2")); menu.setItem(2, Item.get(Item.GOLD_INGOT).setCustomName("选项 3")); // 处理点击事件 menu.addListener(event -> { event.setCancelled(); // 阻止拿取物品 Player p = event.getPlayer(); int slot = event.getAction().getSlot(); switch (slot) { case 0: p.sendMessage("已选择选项 1"); break; case 1: p.sendMessage("已选择选项 2"); break; case 2: p.sendMessage("已选择选项 3"); break; } p.removeWindow(event.getInventory()); // 关闭菜单 }); player.addWindow(menu); } } ``` ## Maven 依赖 ```xml <repositories> <repository> <id>repo-lanink-cn</id> <url>https://repo.lanink.cn/repository/maven-public/</url> </repository> </repositories> <dependencies> <dependency> <groupId>com.nukkitx</groupId> <artifactId>fakeinventories</artifactId> <version>1.0.3-MOT-SNAPSHOT</version> <scope>provided</scope> </dependency> </dependencies> ``` [/MD]
作者
lt_name
下载
7
查看
156
首次发布
最后更新

评分

0.00 星 0 次评分

lt_name 的其他资源

后退
顶部 底部