Enter at least two characters

UI Customization

Docs version: v1.0.0

Menu files are stored at:

plugins/KaFurnace/ui/main.yml
plugins/KaFurnace/ui/furnace.yml
plugins/KaFurnace/ui/upgrade.yml

Menus are not extracted automatically on first startup. An administrator installs missing templates with /kf ui zh_CN or /kf ui en_US; existing files are not overwritten. Run /kf reload after editing. Updates only add missing keys.

Layout rules#

Every row must contain exactly 9 characters, with 1 to 6 rows total. Every non-space character needs a matching button.<character> definition.

The furnace menu uses i, f, and o for input, fuel, and output. Each category must have 1 to 6 positions. Positions map to logical slots from left to right and top to bottom; the corresponding slot level controls how many are active.

The main menu uses:

Character Purpose
f Up to 10 furnace-list positions
u Select a furnace to upgrade
b Purchase the next furnace

The upgrade menu must contain n, b, s, and r for furnace, blast furnace, smoker, and return. Each upgrade character below may appear at most once. Omitting one from a custom layout hides that purchase entry:

Character Feature key
i / f / o input_slot / fuel_slot / output_slot
e / v fuel_efficiency / smelting_speed
l / a / c offline_smelting / auto_output_delivery / completion_notification

Button format#

button:
  "P":
    dynamic: cook
    display:
      material: CLOCK
      amount: 1
      name: "&bCooking Progress"
      lore:
        - "&7[{cook_progress_bar}&7] &f{cook_progress}% &7- &f{cook_remaining_seconds}s left"

UI text is written directly in menu files; lang: references are not supported. Titles, names, and lore support & color codes and arbitrary %placeholders% when PlaceholderAPI is installed. See PlaceholderAPI.

Furnace-state variables#

Variable Description
{furnace_index} / {furnace_type} / {furnace_type_name} Furnace number, type enum, and localized type name
{state} / {state_id} Localized state and raw state enum
{input_amount} / {fuel_amount} / {output_amount} Total amount across all unlocked slots in that category
{input_type} / {fuel_type} / {output_type} Material in the first non-empty unlocked slot
{completed} Completed cooking cycles
{fuel_efficiency_level} / {smelting_speed_level} Fuel-efficiency and smelting-speed levels
{input_slot_level} / {fuel_slot_level} / {output_slot_level} Slot levels and unlocked counts
{offline_smelting_enabled} Whether this furnace can process offline
{auto_output_delivery_enabled} Whether online output delivery is active
{completion_notification_enabled} Whether completion notification is active

Progress and time variables#

Variable Description
{cook_progress} / {cook_progress_bar} Current percentage and a filling 20-segment colored bar
{cook_elapsed_seconds} / {cook_total_seconds} / {cook_remaining_seconds} Current-cycle elapsed, total, and remaining time
{cook_all_remaining_seconds} / {estimated_remaining_seconds} Estimated remaining seconds for all valid input
{cook_all_finish_time} Estimated all-input completion time in the server time zone
{burn_progress} / {burn_remaining_percent} Burned and remaining percentages
{burn_progress_bar} A draining 20-segment colored fuel bar
{burn_elapsed_seconds} / {burn_total_seconds} / {burn_remaining_seconds} Time for the currently ignited fuel
{fuel_all_remaining_ms} / {fuel_all_remaining_seconds} Active remainder plus all fuel stored in unlocked slots
{fuel_sufficient_for_all_input} Whether all available fuel can finish all current valid input

Both bar variables include their own colors. Remaining-second values round up to whole seconds; millisecond and elapsed/total second values keep their actual precision. The all-input estimate assumes an unchanged recipe, enough fuel, and unblocked output and is display-only.

Price and upgrade-menu variables#

The main menu provides {owned}, {max}, {remaining_slots}, {next_furnace_index}, and:

{furnace_purchase_price}
{furnace_purchase_provider}
{furnace_purchase_provider_available}

Each of the five level keys provides {<key>_level}, {<key>_next_level}, {<key>_maxed}, {<key>_price}, {<key>_provider}, and {<key>_provider_available}. Each permanent unlock provides {<key>_enabled} plus the same price, provider, and availability variables. Type-switch price prefixes are type_furnace, type_blast_furnace, and type_smoker.