Skip to content
InputBooster
Configuration ReferenceFiles

The config file

Where inputbooster.properties lives, how it is written, how it is read, and what happens to a value it cannot parse.

3 min readInputBooster 4.1.2-alphaMinecraft 26.2 / 26.3

Everything the mod remembers between sessions lives in one properties file. It is written atomically, read defensively and never fatal: a broken value costs you that one setting, not the game.

Location

Default location
$ .minecraft/config/inputbooster.properties

The directory is resolved from the inputbooster.configDir system property when it is set, and config relative to the game directory otherwise. The system property exists so the automated tests can use a throwaway folder.

FilePurpose
inputbooster.propertiesThe main settings
inputbooster_profiles.jsonSaved profiles, JSON
inputbooster_server_profiles.propertiesServer-to-profile bindings

Format

A standard Java properties file: key=value, one per line, # starts a comment.

properties
#InputBooster 4.1.2-alpha configuration - by Ahaduzzaman Khan
poll_rate_hz=200
poll_rate_auto=true
burst_mode=true
combo_keys=true
sprint_fix=true
auto_sprint=true
wtap_assist=true
anti_idle=true
auto_strafe=true
cps_limiter=true
max_cps=20
cps_mode=FIXED
click_sounds=false
click_sound_pitch=1.35
click_sound_volume=0.35
replay_enabled=true
safe_mode=true
event_log=true
key_conflict_warn=true
per_server_profiles=true
custom_keyboard_handler=false
show_f3_info=true
show_keystrokes=true
overlay_position=0
overlay_scale=1.0
overlay_opacity=0.8
show_action_bar=true
fps_check_interval=20
debug_mode=false
engine_mode=0
keyboard_repeat_guard=true
mouse_scroll_debounce_ms=0
mouse_click_dedupe_ms=0
compat_fallback=true
overlay_mode=0
overlay_show_engine=true
overlay_show_events=true
overlay_show_overhead=true
config_version=305

That is all 39 persisted keys with their default values. The full table with ranges and readers is in the key reference.

How it is written

The save is synchronous and atomic:

  1. The parent directory is created if it does not exist.
  2. A temporary file is created in the same directory.
  3. Every key is written to it.
  4. The temporary file is moved over the real file, atomically where the filesystem supports it.
java
Path temp = Files.createTempFile(parent, "inputbooster", ".tmp");
try (OutputStream out = Files.newOutputStream(temp)) {
    props.store(out, "InputBooster " + MOD_VERSION + " configuration - by Ahaduzzaman Khan");
}
try {
    Files.move(temp, CONFIG_PATH, StandardCopyOption.REPLACE_EXISTING,
        StandardCopyOption.ATOMIC_MOVE);
} catch (AtomicMoveNotSupportedException e) {
    Files.move(temp, CONFIG_PATH, StandardCopyOption.REPLACE_EXISTING);
}

How it is read

load() starts from the documented defaults every time and then applies the file. That ordering matters: an earlier version only assigned the keys that were present, so any key missing from the file kept whatever value it had in memory — importing a partial config leaked the previous session's settings.

Accepted boolean spellings

SpellingResult
true, True, TRUEtrue
yes, Yestrue
1true
on, Ontrue
false, Falsefalse
no, Nofalse
0false
off, Offfalse

Anything else falls back to the default, and the key is named in the warning line described in validation.

Ranges

Numeric values are clamped, not rejected, when they are read and when they are set:

KeyRange
poll_rate_hz60 to 1000
max_cps1 to 20
click_sound_pitch0.5 to 2.0
click_sound_volume0.0 to 1.0
overlay_position0 to 3
overlay_scale0.5 to 3.0
overlay_opacity0.0 to 1.0
fps_check_interval1 to 100
engine_mode0 to 2
mouse_scroll_debounce_ms0 to 200
mouse_click_dedupe_ms0 to 100
overlay_mode0 to 1

The schema version

config_version is the on-disk schema version. The current value is 305.

When the mod loads a file with a lower version it logs a migration line and renames three legacy keys:

Legacy keyCurrent key
auto_sprint_keyauto_sprint
watapwtap_assist
pollratepoll_rate_hz

The version is written back on the next save, so a migrated file stops migrating.

The three files

InputBooster files
.minecraft/
config/
inputbooster_profiles.json
inputbooster_server_profiles.properties
inputbooster.properties

Only the first is created automatically. The profile file appears when you save a profile; the bindings file appears when a binding is written.