- 1.20.2-1.21 supported! (make sure to check versions before installing!)
- Make sure to follow this project to get notified about new features!
- Fill out this form if you've used this datapack!
About Me
GUI Maker is a datapack mapmaking tool that allows mapmakers to create Inventory GUI in their minecraft worlds! This is a storage-based datapack which stores page layout details in appropriate storage paths and draws from them with the help of macros. This datapack is released under MIT license, meaning that if you wish to make changes, you can download its source code and modify accordingly.
For usage guide, you may refer to this video.
Features
-
Create Multiple Inventory GUI
This datapack allows for an easy way to create multiple GUI in the same minecraft world! It also allows for easy navigation and page-changing feature!
-
Multiplayer-Friendly!
The Minecart "GUI" is surrounded by interaction entity that prevents other players from opening the Minecart's Inventory without looking at it from a certain angle. Although it is not 100% possible to prevent other players from interacting with the GUI, this method prevents players from accidently interacting with it.
-
Performance-Efficient!
This datapack has been made to account for performance load and prevent lag spikes caused by its functions. If you feel that the datapack is not efficient enough and can be further improved, feel free to contact me or make your own version of this datapack.
FAQ (problems!)
-
I can't use the commands shown in the video.
The commands in this datapack are only enabled for people that are in creative mode. This means that, for example, if you installed the datapack and loaded it with the /reload command WHILST NOT being in creative mode, the command won't be enabled for you. TO FIX THIS, GO INTO CREATIVE MODE AND /RELOAD THE DATAPACK AGAIN. Make sure that before you reload you are in creative mode. -
I can't make buttons run specific functions/commands.
Run the command/trigger gm-editPage
. Navigate to your desired GUI and PAGE. Once, that's done, open the GUI by right clicking it, and click the Item whose config you want to modify. Once you do that, the GUI will kill itself and the config will be shown to you. The config displays all the current settings bound to the Item. Click [CHANGE VALUES]. Then, your chat will be filled with a /function command followed by a function name and a set of parameters{...}
. Fill in the required parameters to make desired changes and press enter/run the command.
Points to Note
-
Setup ALL of your GUI Layouts before Using!
It is advised that users set up everything relating to the pages before attempting to use this datapack. If you do this, it will surely speed up your creation process. -
Do NOT leave EMPTY SLOTS in the GUI/GUI template!
It is advised that users do not keep any slots empty. If they wanted to do so, they may use "light gray stained glass pane" instead.
How to Make a GUI
Here's a video tutorial.
-
First, Create a GUI Profile
To create a GUI Profile, run the following command:
/trigger gm-createGUIprofile
This will create a GUI profile and send you a tellraw message.
-
Next, Add a page
Next, you'll want to append pages to your GUI. So we'll setup a page layout in a chest/barrel/shulker_box, stand on the container block and run the following command:
/trigger gm-addPage
You'll be shown a list of GUIs to edit. Find the GUI that you just created and click on it while standing on the chest/barrel/shulker_box simultaneously. Then the datapack will get the page layout from the chest youre looking at. The pages are prepended (new page goes to last) and the page number increments for every new page.
-
Lastly, Edit the page
Lastly, you'll want to edit the items in the pages to do stuff when clicked. To do this, we'll have to edit the page of the item. Run the following command:
/trigger gm-editPage
You'll be shown a list of GUIs to edit, once again. Select the GUI you want to edit. You'll then be shown the Page number you want to edit. Then a CHEST_MINECART will be summoned at your location. Open the GUI and click on the item you want to edit CONFIG for. Note, that if you click again on the item or any other item, it will run the default GUI functions as set in the config. Note that by keeping arguments blank it also removes the existing value!
This is what the command would look like when changes are made:
/function ... {function_file:"test:file",item_modifier:"test:modifier",change_gui:"<either the same gui id or different gui id>",change_page:"<either current page index or a different gui id's page index>",slot:"<slot of item, do not change>",gui_id:"<DO NOT CHANGE>",page:<DO NOT CHANGE>}
You can set FUNCTION_FILE value to the function file you want to run.
You can set ITEM_MODIFIER value to the item modifier to be applied to the item.
You must set CHANGE_GUI value to a different value if you want the GUI page to change to that GUI-ID's page when clicked.
You must set CHANGE_PAGE value to the page index of GUI-ID specified in CHANGE_GUI.
**YOU MUST NOT CHANGE THE LAST THREE ARGUMENTS**
Other
You must NOT re-upload this exact datapack under any circumstances.
You can package this datapack + your function files and upload them, as you wish.
You can make changes you want as you wish and use it/upload it as you wish.
You are allowed to use this datapack in your creations and upload this datapack with your creation combined.
Extras
Thanks for reading the description of this project. Alot of features are planned for this datapack, mainly to aid in GUI creation. There are many suggestions from people, some of which sadly couldn't be done, such as a GUI method to make/edit GUIS. Datapacks are already limited and something like that is extra work for something that can be done with a tellraw alternative. Another thing I wanted to talk about is the idea of having a flexible usage system. Having this in mind, the datapack was made in two parts in the same pack. One part of the datapack only helps in setting up the GUI in the world, while the other part helps run the actual GUI system. This means that if in future, lets say, there was a website like misode but it helped make GUI Menus and export them via a single command (which is possible btw), then if the person just installs the 2nd part of datapack (one that does all the functionality) it would be possible to include GUIs in datapacks. Another thing is items input/output detect. It is very much planned though it might take a significant modification of the current system which I'm still unsure about. But it is coming.
Thank you!
-
Thanks for downloading this datapack (if you've downloaded it)!
-
Thanks for using this datapack in your creations!
-
Thanks for showing interest in this datapack project!
TO-DO list:
- add ability to accept item input by players.
- prevent players from losing items.
- add more flexibility in usage.
90% of ad revenue goes to creators
Support creators and Modrinth ad-free with Modrinth+