EndGit Logoendgit.
JWInventoryAPI icon

JWInventoryAPIGitHub

Edit

by junggamyeonGitHub

Inventory UI plugin for Endstone servers
Download
Size: 20 KBUploaded: 5/27/2026
18(9 this version)

Quick Install (CLI)

endgit install jwinventoryapi

What's New in v3.0.0

# Changelog ## v3.0.0 ### Breaking Changes - Minimum dependency: `bedrock-protocol-packets-ng==0.0.8` ### New Features - **Lock Mode:** Fully exploit-proof read-only mode. Sends `ItemStackResponse` rejection packets so items snap back instantly on client. No visual drag possible. - **Edit Mode:** Players can freely move items between GUI and player inventory. Supports Take, Place, Swap actions. - **Realtime Sync:** Multiple viewers of the same menu see slot changes instantly via dirty-slot tracking and per-slot `InventorySlotPacket` updates. - **Batch Mode with Dirty Tracking:** `begin_batch()` / `end_batch()` now tracks which slots changed and only notifies those on flush. - **Menu Queuing:** Opening a menu while another is active queues it automatically. - **`send_player_inventory()`:** Resends player inventory to fix ghost items after cancel. - **Monotonic Stack IDs:** Each item sent to client gets a unique incrementing stack ID, preventing protocol desync and client crashes. ### Improvements - Extracted packet handlers into separate methods for cleaner architecture - `UIInventory.set_item()` now accepts `None` to clear a slot - `is_air()` handles `None` safely - `ItemStackWrapper` no longer crashes on unknown item types (falls back to air) - `on_disable` properly closes all active sessions before clearing - Removed unused `server` variable from utils - Simplified `player_manager` using `dict.get()` / `dict.pop()` - All setters on `Menu` return `self` for chaining - `close_all()` and `refresh_contents()` iterate over copy of sessions set to avoid mutation during iteration - Event handler priority set to `HIGHEST` for reliable packet interception ### Removed - Removed all docstrings and section divider comments - Removed `__del__` from Session (unreliable destructor) ## v2.0.0 - Initial public release with click-only mode, per-slot callbacks, and basic inventory sync.

Plugin Description
Bugs

JWInventoryAPI

JWInventoryAPI is a virtual inventory GUI library for Endstone Bedrock servers, providing chest/hopper/dispenser menus with lock mode, edit mode, realtime sync, and per-slot click callbacks.

What does it do?

It allows plugins to create virtual container GUIs (chests, double chests, hoppers, dispensers) that players can interact with. These aren't real blocks — they're client-side illusions that your plugin fully controls.

Why is it useful?

  • For Server Owners: Plugins that depend on JWInventoryAPI can show interactive chest menus, crate previews, shop GUIs, and inventory editors without placing real blocks in the world.
  • For Developers: You get a clean API to create menus with per-slot click handlers, lock/edit modes, realtime multi-viewer sync, and menu queuing — all without dealing with raw Bedrock protocol packets yourself.

How to use it?

Simply install the .whl file in your server's plugins/ directory. It works as a library — other plugins depend on it.

Loading analytics...

Loading discussion...