Skip to content

Simple Virtual Inventory

Alexander edited this page Sep 29, 2019 · 3 revisions

Java edition only!

Due to Bedrock Edition doesn't have forms instead!

Here we have a basic inventory with a diamond in a middle and a listener that will trigger when someone clicks on it!

//Registering a command
manager.createCommand("Menu", "A Simple Menu", "menuCommand");


function menuCommand(sender, args){
    //Casting command as an player
    var player = cast.asPlayer(sender);

    //Creating an inventory
    var inventory = org.bukkit.Bukkit.createInventory(null, 9, "Test!");

    //Creating an Item
    var testItem = material.newItemStack(material.get(264));
    //Setting item name
    material.setName(testItem, "REEEE");
    //Setting item lore
    material.setLore(testItem, ["line 1", "line 2", "line 3"]);
    //Putting item into our virtual inventory
    inventory.setItem(4, testItem);

    //Opening the inventory for our player
    player.openInventory(inventory);
}

//Listening for Inventory clicks
function InventoryClickEvent(event){
    //Getting event inventory name
    var invName = event.getInventory().getName(); //For 1.8-1.12
    var invName = event.getView().getTitle(); //For 1.13+
    //Checking if its our virtual inventory named "Test!"
    if(invName == "Test!"){
        //Cancelling the event so the player cant take any items etc
        event.setCancelled(true);
        //Getting our player
        var player = cast.asPlayer(event.getWhoClicked());
        //Getting the clicked item
        var clickedItem = event.getCurrentItem();
        //Checking if our player closed the inventory or didnt click on an item
        if(clickedItem != null || clickedItem.getType() != material.get(0)){
            //Getting item meta
            var clickedItemMeta = clickedItem.getItemMeta();
            //Sending some basic information such as name and lore
            player.sendMessage("You've clicked on " + clickedItemMeta.getDisplayName());
            player.sendMessage("With lore:");
            //Getting lore
            var lores = clickedItemMeta.getLore();
            //Looping the lore
            for(var lore in lores){
                //sending our lores invidually
                player.sendMessage(lores[lore]);
            }
        }
    }
}