Compatibility
Minecraft: Java Edition
Platforms
Supported environments
Creators
Details

About this mod
Welcome to Inventory Menu, a server-side mod that allows players and datapack makers to create an interactive menu by defining them within a JSON file.
This mod adds a folder to the datapack structure called "menu." If you have worked with datapacks before, specifically with predicates or advancements, this mod works in a similar way!
Written completely for the server side, this means other players can use its features without installing the mod themselves—it only needs to be installed on the server.
Features
- Create highly customizable menus.
- Powerful placeholder system to display information based on the context.
- A variety of actions that allow users to choose what happens when a player clicks on an item.
- Built-in teleport system with safe-checking and cost management.
Installation
- Required on server.
- No need to install on client
- Required a datapack install on server to function
Usage
Before you start, it is recommended to have a basic understanding of datapacks and how they work. If you are a datapack maker and have experience, then let's get started. If not, you can visit this page to learn more about them.
You can visit this wiki to learn detail about this mod.
1. Setup the datapack.
After installing this mod, you need a place to store your menus, and that's when datapacks come in handy. Just like other vanilla ways to create custom advancements or predicates, creating a menu works in the same way.
You can get inside the datapack structure folder using the following path:
- For server: <server_dicrectory>/world/datapacks/<your_datapack>/data/<namespace>/
- For client: <minecraft_folder>/saves/<your_world>/datapacks/<your_datapack>/data/<namespace>/
In your datapack namespace folder (the folder that includes the functions and advancements folders), create a new folder and name it "menu." It serves as a root folder for your menu files. Inside the folder you just created, create a file named "my_menu.json," then paste this into it:
{"name": "My menu", "items": [{"type": "item", "slot": [1,1], "item": {"id": "minecraft:diamond"}}]}
First, make sure your datapack is enabled. Use the /reload command, and if it loaded correctly, the menu should appear in the suggestions after you type /menu.

If the menu appears like this, you should be ready to create and modify your menu!
2. Display a variety of information through placeholders.
Placeholders are temporary strings used to represent information based on context. For example, %name% will show the menu opener's name. There are several of them, and you can use multiple in one line. The example below shows how to assign them; they can be put in an item's name, its lore, and even in some actions.
{"name": "My menu", 
  "items": [
    {"type": "item", 
      "slot": [1,1], 
      "item": {"id": "minecraft:diamond", "components": {"custom_name": "§b%name%'s diamond!"}}
    }
  ]}
3. Add functionality
Choose what happens when a player clicks on an item by defining an action for it. There are several actions, and each is designed for a specific purpose. The most versatile action is the command action, which executes commands upon clicking.
Say "Hello player <name>" when clicked.
{"name": "My menu",
  "items": [
    {"type": "item",
      "slot": [1,1],
      "item": {"id": "minecraft:diamond", "components": {"custom_name": "§b%name%'s diamond!"}},
      "action": {"type": "command", "command": "say Hello player %name%"}
    }
  ]}
Give night vision and glowing effect to player.
{"name": "My menu",
  "items": [
    {"type": "item",
      "slot": [1,1],
      "item": {"id": "minecraft:diamond", "components": {"custom_name": "§b%name%'s diamond!"}},
      "action": {"type": "command", "command": "say Hello player %name%"}
    },
    {
      "type": "item",
      "slot": [1,2],
      "item": {"id": "minecraft:ender_eye",
        "components": {
          "custom_name": "§aGive effects",
          "lore": ["§aNight vision: §730s", "§eGlowing: §730s"]
        }
      },
      "action": {
        "type":"command",
        "command": ["effect give %name% night_vision 30 0","effect give %name% glowing 30 0"]}
    }
  ]}
Planned features
- Support for older version



