All Mods Resource Packs Data Packs Shaders Modpacks Plugins
Inventory Menu

Inventory Menu

by InfinityI • Downloads: 0 • Followers: 0
Description
Gallery
Changelog
Versions

Inventory Menu

🔎 About this mod

Inventory Menu is a server side data-driven mod that allows players to create customizable, chest-style menus in Minecraft.

⭐ 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.

⚙️ Installation

  • Required on server.
  • No need to install on client
  • Required a datapack install on server to function

📖 Usage

Inventory Menu uses the datapack folder structure to store menus. It is recommended that you have a basic understanding of Minecraft’s datapack system. Visit the wiki to learn how to use this mod.

✏️ Notes

  • If you encounter bugs or have a feature suggestion please contact me.
  • My contact: Discord, Gmail

All Versions

+ Add Version
Name Game version Platforms Published Downloads Actions
26.3
Fabric
7d ago 1
26.2
Fabric
7d ago 1
26.1.x
Fabric
7d ago 1
1.21.11
Fabric
7d ago 1
26.3
Fabric
1mo ago 1
26.2
Fabric
4mo ago 1
26.1.x
Fabric
4mo ago 1
1.21.11
Fabric
4mo ago 1
26.1.1
Fabric
7mo ago 1
26.1
Fabric
7mo ago 1
1.21.11
Fabric
11mo ago 1
1.21.10
Fabric
last yr. 1
1.21.10
Fabric
last yr. 1
1.21.9
Fabric
last yr. 1
1.21.8
Fabric
last yr. 1
1.21.7
Fabric
last yr. 1
1.21.6
Fabric
last yr. 1
1.21.5
Fabric
last yr. 1
1.21.4
Fabric
last yr. 1
1.21.3
Fabric
last yr. 1
1.21.2
Fabric
last yr. 1
1.21.1
Fabric
last yr. 1
1.21.10
Fabric
last yr. 1
1.21.9
Fabric
last yr. 1
1.21.8
Fabric
last yr. 1
1.21.8
Fabric
last yr. 1
1.21.8
Fabric
last yr. 1
1.21.8
Fabric
last yr. 1
1.21.8
Fabric
last yr. 1
1.21.8
Fabric
last yr. 1
1.21.8
Fabric
last yr. 1
[1.2.1] Inventory Menu 1.2.1 by InfinityI on Oct 22, 2026
Download
### New Features

#### Empty Slot Filler (fill)

You can now define an optional fill item in menu layouts. Empty slots that are not assigned to any item will be filled automatically with this item stack.

``json
{
"name": "My Menu",
"rows": 3,
"fill": {
"id": "minecraft:gray_stained_glass_pane",
"components": {
"minecraft:custom_name": " "
}
},
"items": []
}
`

#### Menu Close Policy (
close_container)

You can now specify whether and when clicking an item should close the menu using
close_container:
  • "default": Default menu closing behavior.
  • "on_success" (or true): Closes the menu only when all actions succeed.
  • "on_failure": Closes the menu if conditions or action costs fail.
  • "always": Always closes the menu on click.
  • "never" (or false): Keeps the menu open regardless of success or failure.

`json
{
"slot": [1, 5],
"close_container": "on_success",
"item": {
"type": "custom",
"id": "minecraft:compass"
}
}
`

#### Non-Closing Item Condition Checks

  • If a player fails an item predicate check (condition), they receive the failure message without having the entire menu force-closed. Menu-level conditions still close unauthorized menus.

#### Safe Player Teleportation

  • Teleporting to another player now checks if the destination position is safe (safe_check`), preventing teleportation into void, lava, or suffocation blocks.

### Fixes & Improvements

#### Exploits & Spam Protection
  • Click Spam & Autoclicker Prevention:** Added a 0.1-second delay between menu clicks to stop players from spamming buttons or using autoclickers.
  • Fair Cost Charging on Multiple Actions:** If a button runs multiple actions with costs, the total combined cost (items, XP, or scoreboard points) is checked before taking anything, preventing players from cheating multi-step actions.
  • Fixed Shift-Click Glitches:** Blocked shift-clicking inside menus to prevent item duplication bugs and inventory glitches.
  • No Negative Scoreboards:** Scoreboard points can no longer drop below zero when paying for an action.

#### Crash Fixes & Safety
  • Infinite Loop Protection:** If custom items accidentally reference each other in a loop, the mod now safely catches the error instead of crashing the server.
  • Safer Identifier Handling:** Typos or invalid item/menu names in configs, entity tags, or item data will now log a warning instead of crashing the game.
  • Safer Teleports:** Teleporting to offline players, unloaded areas, or missing worlds now shows a clean error message instead of causing a crash.
  • Advancement Display Safety:** Viewing advancements in menus will no longer accidentally alter original game advancement icons.

#### Performance & Memory
  • No More Server Reload Leaks:** Fixed memory leaks where reloading the server would leave behind old event handlers and use up RAM.
  • Cleaner Player Data:** Menus now properly clean up player data as soon as a menu is closed or a player
...
[1.2.1] Inventory Menu 1.2.1 by InfinityI on Oct 22, 2026
Download
### New Features

#### Empty Slot Filler (fill)

You can now define an optional fill item in menu layouts. Empty slots that are not assigned to any item will be filled automatically with this item stack.

``json
{
"name": "My Menu",
"rows": 3,
"fill": {
"id": "minecraft:gray_stained_glass_pane",
"components": {
"minecraft:custom_name": " "
}
},
"items": []
}
`

#### Menu Close Policy (
close_container)

You can now specify whether and when clicking an item should close the menu using
close_container:
  • "default": Default menu closing behavior.
  • "on_success" (or true): Closes the menu only when all actions succeed.
  • "on_failure": Closes the menu if conditions or action costs fail.
  • "always": Always closes the menu on click.
  • "never" (or false): Keeps the menu open regardless of success or failure.

`json
{
"slot": [1, 5],
"close_container": "on_success",
"item": {
"type": "custom",
"id": "minecraft:compass"
}
}
`

#### Non-Closing Item Condition Checks

  • If a player fails an item predicate check (condition), they receive the failure message without having the entire menu force-closed. Menu-level conditions still close unauthorized menus.

#### Safe Player Teleportation

  • Teleporting to another player now checks if the destination position is safe (safe_check`), preventing teleportation into void, lava, or suffocation blocks.

### Fixes & Improvements

#### Exploits & Spam Protection
  • Click Spam & Autoclicker Prevention:** Added a 0.1-second delay between menu clicks to stop players from spamming buttons or using autoclickers.
  • Fair Cost Charging on Multiple Actions:** If a button runs multiple actions with costs, the total combined cost (items, XP, or scoreboard points) is checked before taking anything, preventing players from cheating multi-step actions.
  • Fixed Shift-Click Glitches:** Blocked shift-clicking inside menus to prevent item duplication bugs and inventory glitches.
  • No Negative Scoreboards:** Scoreboard points can no longer drop below zero when paying for an action.

#### Crash Fixes & Safety
  • Infinite Loop Protection:** If custom items accidentally reference each other in a loop, the mod now safely catches the error instead of crashing the server.
  • Safer Identifier Handling:** Typos or invalid item/menu names in configs, entity tags, or item data will now log a warning instead of crashing the game.
  • Safer Teleports:** Teleporting to offline players, unloaded areas, or missing worlds now shows a clean error message instead of causing a crash.
  • Advancement Display Safety:** Viewing advancements in menus will no longer accidentally alter original game advancement icons.

#### Performance & Memory
  • No More Server Reload Leaks:** Fixed memory leaks where reloading the server would leave behind old event handlers and use up RAM.
  • Cleaner Player Data:** Menus now properly clean up player data as soon as a menu is closed or a player
...
[1.2.1] Inventory Menu 1.2.1 by InfinityI on Oct 22, 2026
Download
### New Features

#### Empty Slot Filler (fill)

You can now define an optional fill item in menu layouts. Empty slots that are not assigned to any item will be filled automatically with this item stack.

``json
{
"name": "My Menu",
"rows": 3,
"fill": {
"id": "minecraft:gray_stained_glass_pane",
"components": {
"minecraft:custom_name": " "
}
},
"items": []
}
`

#### Menu Close Policy (
close_container)

You can now specify whether and when clicking an item should close the menu using
close_container:
  • "default": Default menu closing behavior.
  • "on_success" (or true): Closes the menu only when all actions succeed.
  • "on_failure": Closes the menu if conditions or action costs fail.
  • "always": Always closes the menu on click.
  • "never" (or false): Keeps the menu open regardless of success or failure.

`json
{
"slot": [1, 5],
"close_container": "on_success",
"item": {
"type": "custom",
"id": "minecraft:compass"
}
}
`

#### Non-Closing Item Condition Checks

  • If a player fails an item predicate check (condition), they receive the failure message without having the entire menu force-closed. Menu-level conditions still close unauthorized menus.

#### Safe Player Teleportation

  • Teleporting to another player now checks if the destination position is safe (safe_check`), preventing teleportation into void, lava, or suffocation blocks.

### Fixes & Improvements

#### Exploits & Spam Protection
  • Click Spam & Autoclicker Prevention:** Added a 0.1-second delay between menu clicks to stop players from spamming buttons or using autoclickers.
  • Fair Cost Charging on Multiple Actions:** If a button runs multiple actions with costs, the total combined cost (items, XP, or scoreboard points) is checked before taking anything, preventing players from cheating multi-step actions.
  • Fixed Shift-Click Glitches:** Blocked shift-clicking inside menus to prevent item duplication bugs and inventory glitches.
  • No Negative Scoreboards:** Scoreboard points can no longer drop below zero when paying for an action.

#### Crash Fixes & Safety
  • Infinite Loop Protection:** If custom items accidentally reference each other in a loop, the mod now safely catches the error instead of crashing the server.
  • Safer Identifier Handling:** Typos or invalid item/menu names in configs, entity tags, or item data will now log a warning instead of crashing the game.
  • Safer Teleports:** Teleporting to offline players, unloaded areas, or missing worlds now shows a clean error message instead of causing a crash.
  • Advancement Display Safety:** Viewing advancements in menus will no longer accidentally alter original game advancement icons.

#### Performance & Memory
  • No More Server Reload Leaks:** Fixed memory leaks where reloading the server would leave behind old event handlers and use up RAM.
  • Cleaner Player Data:** Menus now properly clean up player data as soon as a menu is closed or a player
...
[1.2.1] Inventory Menu 1.2.1 by InfinityI on Oct 22, 2026
Download
### New Features

#### Empty Slot Filler (fill)

You can now define an optional fill item in menu layouts. Empty slots that are not assigned to any item will be filled automatically with this item stack.

``json
{
"name": "My Menu",
"rows": 3,
"fill": {
"id": "minecraft:gray_stained_glass_pane",
"components": {
"minecraft:custom_name": " "
}
},
"items": []
}
`

#### Menu Close Policy (
close_container)

You can now specify whether and when clicking an item should close the menu using
close_container:
  • "default": Default menu closing behavior.
  • "on_success" (or true): Closes the menu only when all actions succeed.
  • "on_failure": Closes the menu if conditions or action costs fail.
  • "always": Always closes the menu on click.
  • "never" (or false): Keeps the menu open regardless of success or failure.

`json
{
"slot": [1, 5],
"close_container": "on_success",
"item": {
"type": "custom",
"id": "minecraft:compass"
}
}
`

#### Non-Closing Item Condition Checks

  • If a player fails an item predicate check (condition), they receive the failure message without having the entire menu force-closed. Menu-level conditions still close unauthorized menus.

#### Safe Player Teleportation

  • Teleporting to another player now checks if the destination position is safe (safe_check`), preventing teleportation into void, lava, or suffocation blocks.

### Fixes & Improvements

#### Exploits & Spam Protection
  • Click Spam & Autoclicker Prevention:** Added a 0.1-second delay between menu clicks to stop players from spamming buttons or using autoclickers.
  • Fair Cost Charging on Multiple Actions:** If a button runs multiple actions with costs, the total combined cost (items, XP, or scoreboard points) is checked before taking anything, preventing players from cheating multi-step actions.
  • Fixed Shift-Click Glitches:** Blocked shift-clicking inside menus to prevent item duplication bugs and inventory glitches.
  • No Negative Scoreboards:** Scoreboard points can no longer drop below zero when paying for an action.

#### Crash Fixes & Safety
  • Infinite Loop Protection:** If custom items accidentally reference each other in a loop, the mod now safely catches the error instead of crashing the server.
  • Safer Identifier Handling:** Typos or invalid item/menu names in configs, entity tags, or item data will now log a warning instead of crashing the game.
  • Safer Teleports:** Teleporting to offline players, unloaded areas, or missing worlds now shows a clean error message instead of causing a crash.
  • Advancement Display Safety:** Viewing advancements in menus will no longer accidentally alter original game advancement icons.

#### Performance & Memory
  • No More Server Reload Leaks:** Fixed memory leaks where reloading the server would leave behind old event handlers and use up RAM.
  • Cleaner Player Data:** Menus now properly clean up player data as soon as a menu is closed or a player
...
[1.2.0] Inventory Menu 1.2.0 by InfinityI on Sep 17, 2026
Download
Support for Minecraft 26.3
[1.2.0] Inventory Menu 1.2.0 by InfinityI on Jun 22, 2026
Download
## Version 1.2.0

### New features

Add action costs. You can now make a menu action charge a player before it runs.

Use it to charge a player for running an action.

Existing menus still work. If an action does not have an action cost, it behaves the same as before.

If one menu item has more than one action, all action_cost checks must pass first. No cost is taken and no action runs unless every action cost can be paid.

  • Added action_cost to actions.
  • Added 3 action cost types: XP, item, and scoreboard.
  • Added support for more than one cost on the same action.
  • Added fail_message for action costs.
  • Added %action_cost% item placeholder.
  • Added support for Minecraft 26.2.

### XP Cost Example

This action costs 3 XP levels before sending the message.

``json
{
"type": "message",
"message": {
"text": "You paid 3 levels."
},
"action_cost": {
"type": "minecraft:xp",
"xp": 3,
"is_level": true
}
}
`

Use
"is_level": false if you want to charge XP points instead of levels.

### Item Cost Example

This action costs 2 emeralds.

`json
{
"type": "message",
"message": {
"text": "You paid 2 emeralds."
},
"action_cost": {
"type": "minecraft:item",
"item": {
"id": "minecraft:emerald",
"count": 2
}
}
}
`

The item must match the item and its data. For example, a named item only matches the same named item.

### Score Cost Example

This action costs 5 points from the
coins scoreboard objective.

`json
{
"type": "message",
"message": {
"text": "You spent 5 coins."
},
"action_cost": {
"type": "minecraft:score",
"objective": "coins",
"amount": 5
}
}
`

The scoreboard objective must exist, and the player must have enough score.

### Multiple Costs On One Action

You can write one cost or a list of costs.

This action costs 2 XP levels and 5 coins.

`json
{
"type": "message",
"message": {
"text": "You paid both costs."
},
"action_cost": [
{
"type": "minecraft:xp",
"xp": 2,
"is_level": true
},
{
"type": "minecraft:score",
"objective": "coins",
"amount": 5
}
]
}
`

All costs must be paid before the action runs.

### Fail Message Example

Add
fail_message inside a cost if you want to tell the player why the action did not run.

`json
"action_cost": {
"type": "minecraft:xp",
"xp": 3,
"is_level": true,
"fail_message": {
"message": {
"text": "You need 3 XP levels.",
"color": "red"
}
}
}
`

If more than one action has a fail message, each non-empty fail message is sent.

### Action Cost Placeholder

Use
%action_cost% in item names or lore to show the cost.

`text
Cost: %action_cost%
`

Use
%action_cost:<bullet>% to show one cost per line.

`text
%action_cost:-%
`

This can show:

`text
  • 2 levels
  • 5 coins
``

### Multiple Actions Example

In this example, the player must have both 1 diamond and 2 XP levels.

If either cost cannot be p
...
[1.2.0] Inventory Menu 1.2.0 by InfinityI on Jun 22, 2026
Download
## Version 1.2.0

### New features

Add action costs. You can now make a menu action charge a player before it runs.

Use it to charge a player for running an action.

Existing menus still work. If an action does not have an action cost, it behaves the same as before.

If one menu item has more than one action, all action_cost checks must pass first. No cost is taken and no action runs unless every action cost can be paid.

  • Added action_cost to actions.
  • Added 3 action cost types: XP, item, and scoreboard.
  • Added support for more than one cost on the same action.
  • Added fail_message for action costs.
  • Added %action_cost% item placeholder.
  • Added support for Minecraft 26.2.

### XP Cost Example

This action costs 3 XP levels before sending the message.

``json
{
"type": "message",
"message": {
"text": "You paid 3 levels."
},
"action_cost": {
"type": "minecraft:xp",
"xp": 3,
"is_level": true
}
}
`

Use
"is_level": false if you want to charge XP points instead of levels.

### Item Cost Example

This action costs 2 emeralds.

`json
{
"type": "message",
"message": {
"text": "You paid 2 emeralds."
},
"action_cost": {
"type": "minecraft:item",
"item": {
"id": "minecraft:emerald",
"count": 2
}
}
}
`

The item must match the item and its data. For example, a named item only matches the same named item.

### Score Cost Example

This action costs 5 points from the
coins scoreboard objective.

`json
{
"type": "message",
"message": {
"text": "You spent 5 coins."
},
"action_cost": {
"type": "minecraft:score",
"objective": "coins",
"amount": 5
}
}
`

The scoreboard objective must exist, and the player must have enough score.

### Multiple Costs On One Action

You can write one cost or a list of costs.

This action costs 2 XP levels and 5 coins.

`json
{
"type": "message",
"message": {
"text": "You paid both costs."
},
"action_cost": [
{
"type": "minecraft:xp",
"xp": 2,
"is_level": true
},
{
"type": "minecraft:score",
"objective": "coins",
"amount": 5
}
]
}
`

All costs must be paid before the action runs.

### Fail Message Example

Add
fail_message inside a cost if you want to tell the player why the action did not run.

`json
"action_cost": {
"type": "minecraft:xp",
"xp": 3,
"is_level": true,
"fail_message": {
"message": {
"text": "You need 3 XP levels.",
"color": "red"
}
}
}
`

If more than one action has a fail message, each non-empty fail message is sent.

### Action Cost Placeholder

Use
%action_cost% in item names or lore to show the cost.

`text
Cost: %action_cost%
`

Use
%action_cost:<bullet>% to show one cost per line.

`text
%action_cost:-%
`

This can show:

`text
  • 2 levels
  • 5 coins
``

### Multiple Actions Example

In this example, the player must have both 1 diamond and 2 XP levels.

If either cost cannot be p
...
[1.2.0] Inventory Menu 1.2.0 by InfinityI on Jun 22, 2026
Download
# Changelog

## Version 1.2.0

### New features

Add action costs. You can now make a menu action charge a player before it runs.

Use it to charge a player for running an action.

Existing menus still work. If an action does not have an action cost, it behaves the same as before.

If one menu item has more than one action, all action_cost checks must pass first. No cost is taken and no action runs unless every action cost can be paid.

  • Added action_cost to actions.
  • Added 3 action cost types: XP, item, and scoreboard.
  • Added support for more than one cost on the same action.
  • Added fail_message for action costs.
  • Added %action_cost% item placeholder.
  • Added support for Minecraft 26.2.

### XP Cost Example

This action costs 3 XP levels before sending the message.

``json
{
"type": "message",
"message": {
"text": "You paid 3 levels."
},
"action_cost": {
"type": "minecraft:xp",
"xp": 3,
"is_level": true
}
}
`

Use
"is_level": false if you want to charge XP points instead of levels.

### Item Cost Example

This action costs 2 emeralds.

`json
{
"type": "message",
"message": {
"text": "You paid 2 emeralds."
},
"action_cost": {
"type": "minecraft:item",
"item": {
"id": "minecraft:emerald",
"count": 2
}
}
}
`

The item must match the item and its data. For example, a named item only matches the same named item.

### Score Cost Example

This action costs 5 points from the
coins scoreboard objective.

`json
{
"type": "message",
"message": {
"text": "You spent 5 coins."
},
"action_cost": {
"type": "minecraft:score",
"objective": "coins",
"amount": 5
}
}
`

The scoreboard objective must exist, and the player must have enough score.

### Multiple Costs On One Action

You can write one cost or a list of costs.

This action costs 2 XP levels and 5 coins.

`json
{
"type": "message",
"message": {
"text": "You paid both costs."
},
"action_cost": [
{
"type": "minecraft:xp",
"xp": 2,
"is_level": true
},
{
"type": "minecraft:score",
"objective": "coins",
"amount": 5
}
]
}
`

All costs must be paid before the action runs.

### Fail Message Example

Add
fail_message inside a cost if you want to tell the player why the action did not run.

`json
"action_cost": {
"type": "minecraft:xp",
"xp": 3,
"is_level": true,
"fail_message": {
"message": {
"text": "You need 3 XP levels.",
"color": "red"
}
}
}
`

If more than one action has a fail message, each non-empty fail message is sent.

### Action Cost Placeholder

Use
%action_cost% in item names or lore to show the cost.

`text
Cost: %action_cost%
`

Use
%action_cost:<bullet>% to show one cost per line.

`text
%action_cost:-%
`

This can show:

`text
  • 2 levels
  • 5 coins
``

### Multiple Actions Example

In this example, the player must have both 1 diamond and 2 XP levels.

If either cos
...
[1.1.0] Inventory Menu 1.1.0 by InfinityI on Apr 03, 2026
Download
Inventory menu 1.1.0 - Minecraft 26.1.1
[1.1.0] Inventory Menu 1.1.0 by InfinityI on Mar 25, 2026
Download
add support for 26.1
[1.1.0] Inventory Menu 1.1.0 by InfinityI on Nov 12, 2025
Download
### New features


  • Action Support for Advancement Items: The 'Advancement' item type now supports actions.


### Changes

  • Improved Item Loading: When a "defined" item is not found, an error item will now be displayed in its slot instead of leaving it empty. This provides better visual feedback for debugging menus.

  • Debug Messages: The debug message for an invalid menu has been reformatted for better readability and clarity.

### Fixed bugs:
  • Teleport Cost System: Resolved a bug that allowed players to teleport even if they did not meet the experience level requirement.

Report issue: https://github.com/tqcuong2000/inventory-menu/issues


[1.0.8] Inventory Menu 1.0.8 by InfinityI on Nov 05, 2025
Download
  • Removed the TPA feature completely.
  • Fixed an issue where predicates did not work correctly when navigating through group menus.
  • Added a configuration option to hide menu command suggestions.
  • Added a configuration option to suppress messages when a predicate fails.
[1.0.8] Inventory Menu 1.0.8 by InfinityI on Nov 05, 2025
Download
  • Removed the TPA feature completely.
  • Fixed an issue where predicates did not work correctly when navigating through group menus.
  • Added a configuration option to hide menu command suggestions.
  • Added a configuration option to suppress messages when a predicate fails.
[1.0.8] Inventory Menu 1.0.8 by InfinityI on Nov 04, 2025
Download


  • Removed the TPA feature completely.
  • Fixed an issue where predicates did not work correctly when navigating through group menus.
  • Added a configuration option to hide menu command suggestions.
  • Added a configuration option to suppress messages when a predicate fails.


[1.0.8] Inventory Menu 1.0.8 by InfinityI on Nov 04, 2025
Download
Support for 1.21.7
Inventory Menu Icon
Download Inventory Menu
Select game version
Select platform