A Data-Driven GUI Framework for Minecraft Mapmaking
Large Minecraft servers often use custom user interfaces in which the inventory of a container (e.g., a chest) is used to display interactive elements to players as in-game items. While plugins have made the design of such menus trivial to server developers, the limitations of Minecraft commands and datapacks make it difficult to replicate these item-based GUIs in situations where plugins are not available.
Various datapacks as well as datapack generators have been made with the intent to provide mapmakers with a GUI framework. However, these are usually basic, being restricted to essential features that rarely go beyond the creation of buttons and page navigation, and they may often not be designed with reliability into account. Furthermore, existing approaches involve datapack templates in which the logic of specific GUIs is hard-coded, requiring mapmakers to understand and modify part of the code.
This framework aims to be the ultimate mapmaking tool for creating and managing complex and robust item-based GUIs in-game, removing the need to write code or ever touch the datapack. This is achieved by simply dragging and dropping items with custom NBT tags in containers within a world, which the datapack can use to generate GUIs according to mapmakers' specifications:
- Block Entity GUIs: Placed at a fixed position and shared by all players. These are generated upon compilation.
- Chest Boat GUIs: Retrieved from a database and accessible anywhere by specified players only. These are obtained directly from the above by porting GUIs to players.
The datapack provides the following features:
- NBT tag standard for quick and easy creation of advanced item-based GUIs
- Completely in-game workflow, with the entire datapack being a black box that the mapmaker can ignore
- Robust design, support for multiplayer, including personalized GUIs, and no interference with player inventories
- Complete documentation, in-game tutorial and demos