Skip to content

MemoriesOfTime/FakeInventories

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

27 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Fake Inventories

English 中文


Easily create fake inventories that players can interact with.

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

Furnace (3 slots):

FurnaceFakeInventory inventory = new FurnaceFakeInventory();
// or with custom title
FurnaceFakeInventory inventory = new FurnaceFakeInventory(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>

About

Create fake inventories

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • Java 100.0%