Machine menus
With zMenu installed, right-clicking a
machine (with machineengine.use) opens its menu. Menus are ordinary zMenu
inventory files in plugins/MachineEngine/menus/, with MachineEngine's
placeholders and button types. Everything zMenu
offers works as usual — see the
zMenu documentation.
/machineengine reload config reloads the menu files.
Which file a machine opens
- The file named for its type under
menus.by-typeinconfig.yml. - Else
<namespace>_<value>.yml:mekanized_basic_bin.ymlformekanized:basic_bin. - Else
menus.default(machine.yml).
machine.yml is written on the first start (and when missing), with every
placeholder and button type listed in its comments. Addons install their own
files (Mekanized writes mekanized_*.yml).
Live values
Buttons with update: true are redrawn every update-interval milliseconds. A
button whose material holds a machine placeholder needs no update: true:
MachineEngine redraws all of them together, every update-interval and whenever
the machine changes, so the cells of a bar never disagree.
Button types
machineengine_slot
One slot of a machine storage. Items are shown as the real item; empty slots and
other resources use the button's item. Clicking puts the cursor item in
(right-click: one), or takes the contents out; shift-clicking an item in the
player's inventory puts it into the menu's slots in order.
input-slot:
type: machineengine_slot
slot: 20
storage: input # storage id (default input)
storage-slot: 1 # 1-based slot of that storage (default 1)
allow-insert: true # default true
allow-take: true # default true
item: {material: LIGHT_GRAY_STAINED_GLASS_PANE, name: '&7Input'}
machineengine_cancel_process
Cancels the running process; its inputs go back to the machine. Hidden while
nothing runs, unless always-show: true.
machineengine_upgrades
The upgrade tab. Clicking with upgrades on the cursor installs as many as fit
(right-click: one). An empty hand opens the upgrades menu: menu: <file>, else
<the machine's menu>_upgrades; when there is none, the last installed upgrade
comes back as an item.
upgrades:
type: machineengine_upgrades
slot: 8
item:
{
material: NETHER_STAR,
name: '&bUpgrades',
lore: ['&7%zmenu_machineengine_upgrades%'],
}
machineengine_action
Runs one of the machine type's actions with the click (left, right, shift, drop) and the stack on the cursor. What the action takes comes off the cursor; what it gives goes to the player's inventory; its message shows on the action bar. Hidden on machines that do not have the action.
Every machine with upgrade slots has the action upgrade and the list
upgrades. Addons add their own (Mekanized's modification station: module and
modules).
| Key | Meaning |
|---|---|
action | The action to run. |
index | Passed to the action (the row of a list), default 0. |
list | Hides the button when index is past the end of that list: one button per row. |
empty | With list: what a row past the end shows instead of hiding (material, name, lore); clicking does nothing. |
input | true: a shift-click on a stack in the player's inventory runs the action too. One button per menu. |
upgrade-0:
type: machineengine_action
action: upgrade # held upgrades: install; empty hand: take one out (shift: all)
list: upgrades
index: 0
slot: 19
item:
material: 'craftengine:%zmenu_machineengine_list_upgrades_0_item%'
name: '%zmenu_machineengine_list_upgrades_0_count%/%zmenu_machineengine_list_upgrades_0_max%'
empty: {material: LIGHT_GRAY_STAINED_GLASS_PANE, name: '<gray>No upgrade'}
input:
type: machineengine_action
action: upgrade
input: true # shift-clicking upgrades in the player's inventory installs them
index: 99
slot: 40
item: {material: HOPPER, name: 'Put upgrades here'}
machineengine_data
Changes a setting of the machine that its type declares (data: <id>), such as
a mode: a switch is toggled, a text goes to the next of values: [...]. Show it
with %zmenu_machineengine_data_<id>%.
machineengine_side
Side configuration: what one side (side: front, back, left, right,
top, bottom) does for a port group (group: items) — input, output, both or
nothing. A click goes to the next state the machine allows. Hidden when the
machine has no port in the group. Show it with
%zmenu_machineengine_side_<group>_<side>%.
machineengine_menu
Opens another menu for the same machine (menu: <file>); without menu, the
machine's own menu (a back button). zMenu's own inventory button would lose
which machine the menu shows.
group: items: shown only for machines with ports in that group.groups: [items, energy]: opens<menu>_<group>for the first group the machine has.
machineengine_player_setting
Changes one of the viewer's own settings (setting: <namespace>:<id>): left
click toggles or goes forward, right click goes back. Hidden when the setting is
not installed or the server locked it. Works in any zMenu menu — see
Player data and settings.
Textured menus
Menus can look like a mod's GUI, drawn by CraftEngine's resource pack:
- The title holds what does not move — the panel, slot frames, bar frames —
as CraftEngine images (
<image:…>and<shift:…>tags) that CraftEngine turns into resource pack glyphs. - Slots hold CraftEngine items for what changes. A fill bar covers 3 slots,
cell 0 at the bottom (or left): each slot's material picks the item for its
level with
_cell_<k>(0 to 18, 16 for the last cell), andcomponents: dyed-colortints it with_color:
item:
material: 'craftengine:mekanized:gui/bar/chemical/0/%zmenu_machineengine_storage_tank_cell_0%'
components:
dyed-color: '%zmenu_machineengine_storage_tank_color%'
flags: [HIDE_DYE, HIDE_ATTRIBUTES]
The images and bar items come from a CraftEngine pack — Mekanized ships a full
set (mekanized:gui/…). Players need the resource pack: without it, titles show
boxes and bars are invisible.
Mekanized's crusher menu: a zMenu inventory drawn by the resource pack, with live progress and energy bars.
The Modification Station: one action button per module row, empty rows shown faded.