• 你好,Guest,欢迎回来!Nukkit-MOT BBS社区是专为Minecraft玩家和开发者提供的Nukkit-MOT平台技术论坛。Nukkit-MOT是一个多版本、内置实体AI、广泛插件兼容的我的世界服务器软件,采用Java编写,专为性能和可扩展性设计,支持插件开发和自定义功能。在Nukkit-MOT BBS,您可以轻松找到开服教程、插件开发资源和插件分享,帮助您快速搭建和管理Nukkit-MOT服务器,提升开发技能,推广您的插件。

    You can join [Discord] to get the latest notifications.
    为了避免一些意外情况,你可以【加入QQ群】来获取最新通知
Resource icon

Open Source FakeInventories 2026-01-16

Resource Type
Second modification
Copyright Link
https://github.com/MemoriesOfTime/FakeInventories

Fake Inventories

Easily create fake inventories that players can interact with.

Download

Usage

1. Add Dependency in plugin.yml

depend:
  - FakeInventories

2. Get Service

public void onEnable() {
    RegisteredServiceProvider<FakeInventories> provider =
        getServer().getServiceManager().getProvider(FakeInventories.class);

    if (provider == null || provider.getProvider() == null) {
        getLogger().error("FakeInventories not found!");
        getServer().getPluginManager().disablePlugin(this);
        return;
    }

    FakeInventories fakeInventories = provider.getProvider();
}

3. Create Fake Inventory

Single Chest (27 slots):

ChestFakeInventory inventory = new ChestFakeInventory();
// or with custom title
ChestFakeInventory inventory = new ChestFakeInventory(null, "Custom Title");

Double Chest (54 slots):

DoubleChestFakeInventory inventory = new DoubleChestFakeInventory();
// or with custom title
DoubleChestFakeInventory inventory = new DoubleChestFakeInventory(null, "Custom Title");

Hopper (5 slots):

HopperFakeInventory inventory = new HopperFakeInventory();
// or with custom title
HopperFakeInventory inventory = new HopperFakeInventory(null, "Custom Title");

4. Set Items

inventory.setItem(0, Item.get(Item.DIAMOND));
inventory.setItem(1, Item.get(Item.GOLD_INGOT, 0, 64));

5. Add Event Listener

inventory.addListener(event -> {
    Player player = event.getPlayer();
    SlotChangeAction action = event.getAction();

    int slot = action.getSlot();
    Item sourceItem = action.getSourceItem();  // item before change
    Item targetItem = action.getTargetItem();  // item after change

    // Cancel the action (prevent item modification)
    event.setCancelled();

    // Handle click logic
    player.sendMessage("You clicked slot " + slot);
});

6. Show to Player

player.addWindow(inventory);

Complete Example

public class MyPlugin extends PluginBase {

    public void openMenu(Player player) {
        ChestFakeInventory menu = new ChestFakeInventory(null, "My Menu");

        // Set menu items
        menu.setItem(0, Item.get(Item.DIAMOND).setCustomName("Option 1"));
        menu.setItem(1, Item.get(Item.EMERALD).setCustomName("Option 2"));
        menu.setItem(2, Item.get(Item.GOLD_INGOT).setCustomName("Option 3"));

        // Handle clicks
        menu.addListener(event -> {
            event.setCancelled(); // Prevent taking items

            Player p = event.getPlayer();
            int slot = event.getAction().getSlot();

            switch (slot) {
                case 0:
                    p.sendMessage("Selected Option 1");
                    break;
                case 1:
                    p.sendMessage("Selected Option 2");
                    break;
                case 2:
                    p.sendMessage("Selected Option 3");
                    break;
            }

            p.removeWindow(event.getInventory()); // Close menu
        });

        player.addWindow(menu);
    }
}

Maven Dependency

    <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>
Author
lt_name
Downloads
3
Views
7
First release
Last update
Rating
0.00 star(s) 0 ratings

More resources from lt_name

.block.block--category>.block-container:before { margin-bottom: 4px; } .message:not(:last-of-type):after { margin-bottom: -7px; }
Forgot your password?
or Log in using