Enter at least two characters

PlaceholderAPI

Docs version: v1.0.0

When PlaceholderAPI is installed, KaFurnace automatically registers its internal %kafurnace_*% expansion. No separate eCloud download is required. PlaceholderAPI is a soft dependency; furnaces, databases, and built-in UI variables continue to work without it.

Placeholder format#

KaFurnace placeholders use this format:

%kafurnace_<furnace number>_<field>%

The furnace number is 1..10 and matches the stable number shown in the player's main menu. For example, %kafurnace_1_input_amount% is the input amount in furnace 1.

Identity, state, and levels#

Field Example Description
furnace_index %kafurnace_1_furnace_index% Stable furnace number for the owner
furnace_type %kafurnace_1_furnace_type% FURNACE, BLAST_FURNACE, or SMOKER
state / state_id %kafurnace_1_state% Raw state enum name
completed %kafurnace_1_completed% Completed cooking cycles
fuel_efficiency_level %kafurnace_1_fuel_efficiency_level% Fuel-efficiency level
smelting_speed_level %kafurnace_1_smelting_speed_level% Smelting-speed level
input_slot_level %kafurnace_1_input_slot_level% Input-slot level and unlocked count
fuel_slot_level %kafurnace_1_fuel_slot_level% Fuel-slot level and unlocked count
output_slot_level %kafurnace_1_output_slot_level% Output-slot level and unlocked count
offline_smelting / offline_smelting_enabled %kafurnace_1_offline_smelting_enabled% Whether offline cooking is enabled
auto_output_delivery / auto_output_delivery_enabled %kafurnace_1_auto_output_delivery_enabled% Whether online output delivery is enabled
completion_notification / completion_notification_enabled %kafurnace_1_completion_notification_enabled% Whether one-time completion notification is enabled

PAPI state is not localized. Like state_id, it returns IDLE, RUNNING, PAUSED_OFFLINE, or BLOCKED_OUTPUT.

Item slots#

Field Example Description
input_amount %kafurnace_1_input_amount% Total amount across all unlocked input slots
input_type %kafurnace_1_input_type% Material enum in the first non-empty unlocked input slot
fuel_amount %kafurnace_1_fuel_amount% Total unignited amount across all unlocked fuel slots
fuel_type %kafurnace_1_fuel_type% Material enum in the first non-empty unlocked fuel slot
output_amount %kafurnace_1_output_amount% Total amount across all unlocked output slots
output_type %kafurnace_1_output_type% Material enum in the first non-empty unlocked output slot

Ignited fuel has already been removed from the fuel slot. Use the fuel-time placeholders for its remaining duration instead of fuel_amount.

Cooking progress and time#

Field Description
cook_progress / cook_percent Current cooking percentage from 0..100
cook_progress_bar Colored cooking bar made from exactly 20 `
cook_elapsed_ms / cook_elapsed_seconds Elapsed time in the current cycle
cook_progress_seconds / smelt_progress_seconds Aliases for elapsed seconds
cook_total_ms / cook_total_seconds Total recipe time for the current cycle
smelt_total_seconds Alias for total cycle seconds
cook_remaining_ms / cook_remaining_seconds Remaining time in the current cycle
smelt_remaining_seconds Alias for remaining cycle seconds
cook_all_total_ms / cook_all_total_seconds Estimated total time for all current input
cook_all_remaining_ms / cook_all_remaining_seconds Estimated remaining time for all current input
estimated_all_seconds / estimated_remaining_seconds Aliases for all-input remaining seconds
cook_all_finish_epoch_ms Estimated Unix completion timestamp in milliseconds
cook_all_finish_time Estimated completion time in the server time zone

Example:

Progress: %kafurnace_1_cook_progress_bar% %kafurnace_1_cook_progress%%
Current cycle: %kafurnace_1_cook_remaining_seconds% seconds left
All input: %kafurnace_1_estimated_remaining_seconds% seconds left

The all-input estimate assumes an unchanged recipe, enough fuel, and unblocked output. It is display-only and must not control payments, rewards, or deadlines.

Fuel progress and time#

Field Description
burn_progress Percentage of the current fuel already burned, from 0..100
burn_remaining_percent / burn_percent Percentage of the current fuel remaining
burn_progress_bar Colored fuel bar made from exactly 20 `
burn_elapsed_ms / burn_elapsed_seconds Elapsed burn time
burn_progress_seconds / fuel_elapsed_seconds Aliases for elapsed burn seconds
burn_total_ms / burn_total_seconds Total duration of the current fuel
fuel_total_seconds / fuel_time_seconds Aliases for total fuel seconds
burn_remaining_ms / burn_remaining_seconds Remaining burn time
fuel_remaining_seconds Alias for remaining fuel seconds
fuel_all_remaining_ms / fuel_all_remaining_seconds Combined burn time from the active remainder and every stored fuel item
fuel_sufficient_for_all_input Whether all available fuel can finish all current valid input; true or false

Both progress-bar fields return Minecraft color control codes ready for display. All remaining-second fields round up to whole seconds; millisecond fields and elapsed/total second fields retain their precision.

The all-fuel estimate applies the current fuel-efficiency multiplier to every item in all unlocked fuel slots and adds the remaining duration of the ignited fuel. fuel_sufficient_for_all_input is false when there is no input or the current recipe cannot be estimated.

Using other PAPI placeholders in the UI#

Titles, button names, and lore in ui/main.yml, ui/furnace.yml, and ui/upgrade.yml can use placeholders from other expansions:

name: "&e%player_name%'s Furnace 1"
lore:
  - "&7Play time: &f%statistic_time_played%"

Text is resolved in this order: KaFurnace built-in {variables}, PAPI %placeholders%, then & colors. Colors such as &a returned by a PAPI expansion therefore also work. Without PlaceholderAPI, %placeholders% remain unchanged in UI text.

Empty values and refresh behavior#

  • A valid but unpurchased furnace number returns 0 for amounts and times, false for fuel_sufficient_for_all_input, a 20-segment dark-gray empty progress bar, AIR for material types, IDLE for state, and - for the estimated finish time.
  • Invalid numbers, unknown fields, and requests without player context return an empty string.
  • Localized {furnace_type_name} and the button-specific {percent} context are not exposed as PAPI fields.
  • Reads use thread-safe immutable snapshots and do not advance a furnace, so values may trail by up to one default 5-tick engine interval.
  • KaFurnace placeholders are safe for asynchronous reads. Other third-party expansions used in UI text remain responsible for their own Folia thread compatibility.

These placeholders can be used in scoreboards, chat formats, Tab lists, menu plugins, and other plugins that support PlaceholderAPI.