Enter at least two characters

Properties

Docs version: v2.0.7

Properties contains type-specific values. Static chest-like menus usually do not need it; furnace-class menus use progress properties, while anvils use input and rename properties.

Field Overview#

Container type Field Type Purpose
Furnace, blast furnace, smoker burn_progress Number/variable Flame progress from 0 to 100%
Furnace, blast furnace, smoker cook_progress Number/variable Arrow progress from 0 to 100%
Anvil input String/variable Initial text and input-capture enablement
Anvil remove_chars String list or preset Cleans submitted text
Anvil repair_cost Non-negative integer/variable Level cost
Anvil maximum_repair_cost Non-negative integer/variable Maximum accepted cost
Anvil repair_item_count Non-negative integer/variable Input item consumption count

Properties apply only to the matching Container type. Furnace properties on a chest, or anvil properties on a furnace, produce a warning and do not change the UI.

Furnace-class Containers#

Applies to FURNACE, BLAST_FURNACE, and SMOKER:

Type: FURNACE
Properties:
  burn_progress: '{meta:burn}'
  cook_progress: '{meta:cook}'

Progress accepts 0, 55.31, 55.31%, and 100%, and is clamped to 0..100. This is a client-rendered flame and cook arrow, not a real furnace session: KaMenu does not consume fuel or execute recipes.

See Refresh and Events for progress intervals and completion events. Persistent offline furnace logic belongs in a separate backend plugin.

Example: Processing UI With Completion Event#

Type: FURNACE
Title: '&8Processing'
Progress-Update: 5
Properties:
  burn_progress: '{meta:fuel_pct}'
  cook_progress: '{meta:cook_pct}'

Layout:
  - 'ABC'

Events:
  Progress:
    complete:
      source: cook_progress
      condition: '{progress.current} >= 100'
      trigger_initial: false
      actions:
        - 'actionbar: &aProcessing complete'
        - 'actions: furnace/reward'
        - 'meta: type=set;key=cook_pct;var=`0`'

Buttons:
  A:
    display:
      material: RAW_IRON
      name: '&fInput'
  B:
    display:
      material: COAL
      name: '&6Fuel'
  C:
    display:
      material: IRON_INGOT
      name: '&aOutput'

Progress may come from PAPI, meta, data, or JavaScript. KaMenu only changes the client-rendered progress; it does not consume fuel, run recipes, or create output items. Persistent background processing belongs in a separate plugin.

Anvil#

Type: ANVIL
Properties:
  input: 'Name_%player_name%'
  remove_chars: ['&', '_']
  repair_cost: 0
  maximum_repair_cost: 40
  repair_item_count: 0

input is the initial text, remove_chars cleans captured input, and the repair fields control supported anvil properties. After capture, $(input) is available in button display, view_condition, actions, and close events; it is not available in Events.Open.

Clean $(input) before using it in commands, JavaScript, conditions, or persistence. The result slot is controlled by KaMenu and must not be used as player item storage.

See Input Components for cleanup and Events for lifecycle behaviour.

Example: Anvil Rename#

Type: ANVIL
Title: '&8Rename Item'
Properties:
  input: 'New name'
  remove_chars: ['&', '\n', '\r']
  repair_cost: 0
  maximum_repair_cost: 40
  repair_item_count: 0

Layout:
  - 'ABC'

Buttons:
  A:
    display:
      material: PAPER
      name: '&eCurrent name: $(input)'
    actions:
      left:
        - 'tell: &aCaptured name: $(input)'
        - 'close'
  B:
    display:
      material: NAME_TAG
      name: '&7Secondary input slot'
  C:
    display:
      material: EMERALD
      name: '&aConfirm: $(input)'
    actions:
      left:
        - 'tell: &aConfirmed name: $(input)'
        - 'close'

$(input) becomes available in button display, conditions, actions, and Events.Close after the player submits a name. Do not concatenate uncleaned input into console commands or persistent keys.