---
id: configuration-reference
---

# Configuration reference for Araxer's Bestiary

This page documents every configuration option exposed by the mod and explains how it affects gameplay and performance. Unless noted otherwise, options live in:

- config/araxers_bestiary-common.toml

Edit this file while Minecraft is closed, save, then restart. Server configs apply to all players on that server.

Tip: Some options are client-side (rendering/UI), others are server-side (gameplay/progression). Server-side options should match on server and client for consistent behavior.

## Quick start: example TOML

```toml
# Enable the progression system and use ranks with points mode
enableProgressionSystem = true
progressionSystemType = "ranks"   # "kills" | "ranks" | "sighting"
esMode = "points"                 # E→S progression: "points" | "chance"

# Rank information visibility thresholds
spawnLocationRank = "D"
lootIconRank = "C"
lootChanceRank = "A"
advancedAttributesRank = "B"
descriptionRank = "B"

# Low-end graphics tweaks (client)
lowEndMode = false
```

The sections below list all keys with defaults, valid ranges, and guidance.

---

## Core progression

- enableProgressionSystem (boolean, default: true)
  - Enables the Bestiary discovery/progression system. When false, all information is shown and most thresholds/obfuscation rules are ignored.

- progressionSystemType (string, default: "ranks")
  - Which high-level progression style to use:
    - "kills": Information unlocks after reaching kill-count thresholds.
    - "ranks": Each entity has a rank from E to S that you improve via interactions.
    - "sighting": A spyglass-first style where sighting contributes heavily to discovery (full details depend on other settings and datapacks).

- esMode (string, default: "points")
  - E→S progression mechanic used when progressionSystemType = "ranks":
    - "points": Deterministic point thresholds per step (E→D→C→B→A→S).
    - "chance": Probabilistic rank increases based on event chances and difficulty multipliers.

### Observation behavior

- allowObservationChanceRolls (boolean, default: false)
  - If true, completing a spyglass observation may assign an initial rank via the weighted distribution (a "roll"). If false, observation only awards E→S points and never triggers a chance roll. Applies regardless of esMode; when points mode is active, this only affects whether a roll can also happen on sighting.

### Mob-type chip unlock

- mobTypeChipKillsThreshold (int, default: 1, min: 1)
  - Kills required to unlock the “mob-type” chip when using kills mode.

- mobTypeChipRank (string, default: "E")
  - Minimum rank (E, D, C, B, A, S) that unlocks the “mob-type” chip when using ranks mode.

---

## Kill-based progression thresholds (used when progressionSystemType = "kills")

- spawnLocationThreshold (int, default: 10, min: 1)
  - Kills required before spawn locations are revealed.

- lootIconThreshold (int, default: 20, min: 1)
  - Kills required before loot items become visible.

- lootChanceThreshold (int, default: 50, min: 1)
  - Kills required before numeric drop chances are shown.

- advancedAttributesThreshold (int, default: 30, min: 1)
  - Kills required before advanced attributes (KB resistance, armor, speed) are revealed.

- descriptionThreshold (int, default: 40, min: 1)
  - Kills required before the entity description text is revealed.

---

## Rank-based progression: chance mode (used when esMode = "chance")

- rankKillChance (double, default: 0.15, range: 0.01–1.0)
  - Base chance to gain a rank on kill.

- rankFeedChance (double, default: 0.03, range: 0.01–1.0)
  - Base chance to gain a rank when feeding.

- rankHitChance (double, default: 0.01, range: 0.01–1.0)
  - Base chance to gain a rank on hit.

- rankTradeChance (double, default: 0.10, range: 0.01–1.0)
  - Base chance to gain a rank on a villager trade.

- bossRankMultiplier (double, default: 3.0, range: 1.0–10.0)
  - Multiplies the above chances when the target entity is a boss.

- commandRolls (double, default: 0.15, range: 0.0–1.0)
  - Success chance used by the /bestiary rank roll command when applying a rolled rank.

### Progressive rank difficulty (chance mode)

- enableProgressiveRankDifficulty (boolean, default: true)
  - If true, higher ranks are increasingly harder to obtain.

- rankDDifficultyMultiplier (double, default: 0.4, range: 0.01–1.0)
- rankCDifficultyMultiplier (double, default: 0.3, range: 0.01–1.0)
- rankBDifficultyMultiplier (double, default: 0.2, range: 0.01–1.0)
- rankADifficultyMultiplier (double, default: 0.1, range: 0.01–1.0)
- rankSDifficultyMultiplier (double, default: 0.05, range: 0.01–1.0)
  - Lower values make that rank harder to reach.

---

## Rank-based progression: points mode (used when esMode = "points")

Thresholds per step (points required to advance one rank):

- pointsEToD (int, default: 50)
- pointsDToC (int, default: 100)
- pointsCToB (int, default: 200)
- pointsBToA (int, default: 300)
- pointsAToS (int, default: 400)

Point awards (base values per interaction):

- pointsKill (int, default: 3)
- pointsFeed (int, default: 1)
- pointsHit (int, default: 0)
- pointsTrade (int, default: 2)
- pointsBreed (int, default: 2)
- pointsObserve (int, default: 5)
- pointsTame (int, default: 4)
- pointsSpecialBiome (int, default: 0)

- pointsBossMultiplier (double, default: 2.0)
  - Multiplies point awards when the target entity is a boss.

---

## Information visibility by rank (used when progressionSystemType = "ranks")

- spawnLocationRank (string, default: "D")
- lootIconRank (string, default: "C")
- lootChanceRank (string, default: "A")
- advancedAttributesRank (string, default: "B")
- descriptionRank (string, default: "B")

These define the minimum current rank on an entity required before the given information is shown.

---

## Initial discovery rank distribution

When a player first discovers an entity, its starting rank is chosen using weighted randomness. Tune these weights to make higher or lower ranks more likely.

- rankEWeight (int, default: 150)
- rankDWeight (int, default: 50)
- rankCWeight (int, default: 25)
- rankBWeight (int, default: 15)
- rankAWeight (int, default: 10)
- rankSWeight (int, default: 2)

Higher weight = more common.

---

## Entity visibility and obfuscation

- hideZeroKillEntities (boolean, default: false)
  - In kills mode, hide entities with 0 kills from lists.

- hideNoRankEntities (boolean, default: false)
  - In ranks mode, hide entities that have no rank yet.

- forceObfuscation (boolean, default: false)
  - Forces obfuscation for undiscovered/low-progress entities, even if other settings might show them.

- hideUndiscovered (boolean, default: false)
  - Hide undiscovered entities completely instead of showing them with obfuscated entries.

- entityBlacklist (list`<string>`, default: ["minecraft:armor_stand"])
  - Entities that should never appear in the Bestiary.

- entityIncludeList (list`<string>`, default: [])
  - Entities that should always be considered/included even if they’re outside typical categories.

- monsterCategories (list`<string>`, default: [])
  - Which MobCategory values should be considered “monsters”. Valid values include:
    - "monster", "creature", "water_creature", "underground_water_creature", "ambient", "water_ambient", "axolotls", "misc"

---

## Global progression bar (header)

- globalSRankThresholds (list`<int>`, default: [50]) [Server config]
  - Server-side thresholds for total S-ranked entities to advance global progression and benefits. Progress fills between consecutive values.

- globalBenefits (list`<string>`, default: []) [Server config]
  - Benefits applied to the player when reaching each corresponding threshold in globalSRankThresholds. Same order, 1:1 mapping. Missing entries do nothing; extra entries are ignored.
  - You can intentionally skip a benefit for a specific threshold by putting `"-"` (or `"skip"`) in that slot.
  - Format per entry: `namespace:id:value`.
    - If `id` is a mob effect, `value` is the effect level (1-based), e.g., `minecraft:strength:2` gives Strength II. Multiple entries of the same effect ID STACK additively across unlocked thresholds (e.g., Strength 2 + Strength 3 -> Strength 5 total). Effects are applied with a very long duration and re-applied on login/config changes as needed.
    - If `id` is an attribute, `value` is the amount added (e.g., `minecraft:generic.max_health:4`). Attribute entries naturally stack additively via separate permanent modifiers.
  - Examples:
    - thresholds `[50, 100]` with benefits `["minecraft:strength:2", "minecraft:generic.max_health:4"]`.
    - thresholds `[50, 75, 100]` with benefits `["minecraft:strength:2", "-", "minecraft:generic.max_health:4"]` → applies on first and third thresholds; second is skipped.
    - stacking example: thresholds `[10, 20]` with benefits `["minecraft:generic.movement_speed:0.05", "minecraft:generic.movement_speed:0.05"]` gives a total +0.10 speed when both are unlocked.

- globalRankProgressBarType (string, default: "S") [Server config]
  - Controls which global metric is used for the header bar and for global benefits thresholds: "S" (count S-and-above) or "X" (count Rank-X unlocks).

- enableGlobalRankProgressBarCycling (boolean, default: true)
  - If true, you can click the bar to cycle between S and X.

- progressBarSpriteSource (string, default: "mod") [Client]
  - Which sprite to use for progress bars in the UI: "vanilla" (villager2.png) or "mod" (bestiary.png).

---

## Loot information generation and safety

- initialLootSampleBatches (int, default: 300, range: 50–2000)
  - How many sampling iterations to estimate initial drop chances from loot tables. Higher = more accurate but slower.

- prewarmLootCacheOnStart (boolean, default: false)
  - If true, the server gradually generates loot info across ticks after start. If false, loot data is generated lazily when needed.

- prewarmMaxEntitiesPerTick (int, default: 10, min: 1)
  - Caps how many entities are prewarmed per tick when prewarming is enabled.

Safety toggles (for heavily modded packs):

- enableLootJsonInspectionFallback (boolean, default: true)
  - Uses safe JSON inspection of loot tables when direct deserialization is risky. Keep enabled for stability.

- enableGlobalLootModifierSupplement (boolean, default: false)
  - Attempts to supplement loot by reading Global Loot Modifier (GLM) JSON. Disable if you see decode/condition errors in logs.

---

## Dynamic drop tracking

- enableDynamicDropTracking (boolean, default: true)
  - Tracks real drop events to refine displayed chances over time.

- dynamicDropSampleSize (int, default: 50, range: 10–1000)
  - How many observed drops to collect before recomputing chances.

- dynamicDropWeight (double, default: 0.7, range: 0.0–1.0)
  - Relative weight of tracked drops vs. loot-table-derived values.

- ignoreModifiedDropEvents (boolean, default: true)
  - If true, ignores events where the killer’s tool/enchantments might have modified drops (e.g., Looting, Fire Aspect).

- modifiedDropEnchantments (list`<string>`, default: ["minecraft:looting", "minecraft:fire_aspect"])
  - When ignoreModifiedDropEvents is true and this list is non-empty: only ignore events if the killer’s item has any enchantment from this list. If empty, any enchantment causes the event to be ignored.

---

## UI, client, and performance

- enableKeybind (boolean, default: true)
  - Enables the keybind for opening the Bestiary.

- lowEndMode (boolean, default: false)
  - Toggles several low-end optimizations for GUI/preview rendering.

- lowEndEntityPreview (boolean, default: true)
  - When lowEndMode is enabled, reduces cost of the 3D entity preview (skips fancy path, lowers preview FPS).

- guiMaxEntityScale (int, default: 100, range: 40–200)
  - Caps the UI preview scale to prevent excessive overdraw on low-end GPUs.

- lowEndMarqueeIntervalMultiplier (double, default: 1.5, range: 1.0–5.0)
  - Slows marquee animations in low-end mode to reduce CPU/GPU churn.

---

## Debug and advanced

- debugMode (boolean, default: false)
  - Enables extra debug logging. Useful for datapack troubleshooting. Expect more verbose logs.

- showChallenges (boolean, default: false)
  - Shows the Challenges page for Rank-X progression in the Bestiary. Rank-X itself is configured via datapacks

- enableCheeseDetection (boolean, default: true)
  - When true, the mod detects certain “cheese” tactics against bosses (beds, end crystals, respawn anchors) and can ignore such events for Rank-X logic. If false, datapack disallowedCheese lists are ignored.

---

## Notes on datapack interaction

- Displayed loot can be provided/overridden by datapacks in `data/<ns>/bestiary/<entity_ns>/<entity>.json`. See “Bestiary entity loot format” for schema.
- Config settings here don’t change actual in-game drops; they control what the Bestiary displays and how progression works.

---

## Troubleshooting

- If changes don’t take effect, ensure you edited the correct file (server vs client) and restarted the game/server.
- Check logs for lines like “Loaded bestiary loot data for … entities” and warnings about invalid ids or file paths.
- For performance issues, try enabling lowEndMode and reducing guiMaxEntityScale.
