About Hermios Gui Framework
From Factorio Mod PortalFramework to handle guis for entities in Factorio (display, store data...)
_Please send any request to Github (See Source URL!)_
This mods lets use the gui part of the Hermios Framework. It works using the same principles
Why this mod
Static description
This mods lets describe guis statistically: Instead of using command "add" to add in runtime the children, simply describe the content once for all, then when the gui will be open, children will be added automatically
Storage of data
Data for an entity are automatically stored in the global table __custom_entities__ for this entity, under the key __control_behavior__ with appropriate structure. When reopening the gui for an entity, data are automatically loaded, and the gui appears exactly like it was before closing
Dynamic children
This mods includes a mechanism to handle dynamic children, for example when a frame shall display a list of sub elements, and this list may vary. By declaring dynamic children, a button "add" is automatically set, and buttons "x" are as well added for each child, to remove it
Extra tools
This mods includes a new lua gui element, named choose-elem-quantity-button, which has the same role as the choose-elem-button, with an extra frame to choose quantity (like for instance in combinator, to check if a signal shall be compared to another one, or to a constant) More details below
require
During the data stage, the line ``require "__Hermios_Gui_Framework__.data-libs"` must be called During the runtime stage, the line `require "__Hermios_Gui_Framework__.control-libs"`` must be called
How to use
The same way a prototype must be registered in custom_prototypes, define a gui for an element (via its type, name, train or any) using the table custom_guis Then, in the value for this element, describes the gui for the element.
Global options
the gui to describe handle following options:
- position (mandatory): where the screen shall be displayed (top, left, center, screen). See LuaGui object for more information
- clear_default (optional, default false): If set to true, the original screen of the item won't be displayed. Shall be set to true, when the entity to open is a new creation, based on an existing entity
- gui (mandatory): description of the gui
description for each lua gui element is as described in the help of Factorio. Some extra options are available, that must be stored in the __tags__ attribute of the element.
- id (string): if set, the content of the lua gui element will be stored for this entity, as value, and id is the key
- children (array): children of this element, list of lua gui elements
- get_or_set (string to a function): the mod can handle default setter/getter per type of lua gui element (for instance, textfield return the text, sprite-button the sprite etc). this option lets override this default behavior. It is indeed a string (tags don't allow functions), that point to a function, with input paramters __lua_gui_element__, and __value__. When __value__ is set, it is a setter for the lua_gui_element, otherwise the function shall return the value expected
- model (array): Define dynamic children. It contains an array of children expected, as template.
When applied, a button to add is automtically set, and for each child, a button to remove them is automatically set too. The element which use this option shall be a container (flow or frame). This will work only if an id has been set
- add_text(string): used in case of model, to override the default text of the button to add children
- on_load (string to function): function to execute when loading the element
- on_action (string to function): function to execute when a change happened on this element.__This is not necessary to set an action to store data, the mod handle this part on his own__
choose-elem-quantity-button
This new lua gui element can be used as others (But require the framework to work). It generated a "button", that will display either an item, with or without number, or a constant. When clicking on the button, this opens a new screen which let choose item or quantity or both. The element has 3 possible outputs:
- If only constant, it returns a number
- If only sprite, it returns a signalID table {type,name}
- If both, it returns a signal table {count,{type,name}}
It has 1 option:
- is_or: if set, the button will behave to deliver either a signalid or a constant number.
Full example of use of this mod can be found with the mod Logistic Train Scheduler
Highlights
From source dataFootprint
Rated a light load on a server.
License
Published under MIT.
Last update
Its author last shipped an update 3 yr ago.
Hermios Gui Framework on Nxeon
From our catalogue- One-click install
- Supported on Nxeon Factorio servers. We download it from Factorio Mod Portal, place it, and restart the server.
- Server side
- Required on the server
- Server load
- light
- Smallest plan we suggest
- Factorio — 2 GB (2 GB RAM). This follows our own load rating above, not a benchmark.
- Latest build
- 1.0.4, released 2024-04-21
Recent builds
| Build | Released | Game versions | Loaders |
|---|---|---|---|
| 1.0.4 | 2024-04-21 | 1.1 | n/a |
| 1.0.3 | 2024-04-11 | 1.1 | n/a |
| 1.0.2 | 2024-02-09 | 1.1 | n/a |
| 1.0.1 | 2024-01-27 | 1.1 | n/a |
Dependencies
- Required: Hermios Framework
Declared by the newest build that lists any. Required ones are installed with it on one-click installs.
Run Hermios Gui Framework on a Factorio server
Pick a server or deploy a new one above; it is installed in one click.
What kind of mod it is
From the catalogLibraries & compatibility
Foundations and fixes other mods build on. Usually installed because something else needs it.
Runs on your server
From source side supportFactorio Mod Portal lists Hermios Gui Framework as required on the server. Check its Factorio Mod Portal page to see whether players need it too.
Compatibility
- Game
- Factorio
- Runs on
- Serverrequired on the server
Verified at the source
- ✓Factorio Mod PortalOfficial listing, checked 2026-10-09Open ↗
- ✓AuthorHermios, as published on Factorio Mod Portal
- ✓LicenseMITFree
