---
id: troubleshooting-tools
---

# Troubleshooting & tools

This article lists common issues, how to validate your datapack files, and tips for testing your changes quickly.

## Common pitfalls

- Wrong folder path: Bestiary expects files at `data/<your_ns>/bestiary/<entity_ns>/<entity_path>.json`. If you put them under `data/<your_ns>/bestiary.json` or add extra folders, they won’t load.
- Mismatched entity namespace: For vanilla mobs, use minecraft (e.g., data/my_pack/bestiary/minecraft/zombie.json). For modded mobs, use the mod’s id.
- Invalid item ids: Unknown items are ignored and logged with a warning.
- Overriding by accident: Setting any loot entry’s override: true causes a full override for the entity, even if lootOverride is false. Remove those flags if you only intend to supplement.

## Quick testing workflow

1) Place the datapack in world/datapacks (singleplayer) or server/datapacks.
2) Run /reload in-game or on the server console.
3) Open the Bestiary for the target entity and inspect the Loot section.
4) If nothing changed, check your logs.

## Reading the logs

Araxer’s Bestiary writes helpful messages:

- "Loaded bestiary loot data for N entities" — how many JSON files Bestiary parsed.
- "Using datapack override" — indicates an entity is using datapack-only loot.
- "Supplemented loot cache with datapack entries" — datapack items were added to entities without loot table results.
- Warnings like "Invalid bestiary loot file path" or "Unknown item" explain why a file or entry was skipped.

Tip: Enable debug logging if you need deeper insight. Many detailed lines are logged at DEBUG level (depends on your log4j configuration).

## Validating JSON

- Use a JSON linter/formatter to spot missing commas or quotes.
- Ensure numbers use dots for decimals (0.25), not commas.
- dropChance should be between 0 and 1. Use -1 or omit for unknown.

## Translations

If you use displayNameKey, you must provide a language file somewhere on the client (as a resource pack or mod):

assets/`<your_ns>`/lang/en_us.json
```json
{
  "bestiary.note.rare": "(rare)"
}
```

Alternatively, use displayName for literal text.

## When loot tables don’t exist

On the client or for some entities, Bestiary may not obtain loot table results immediately. In that case, your datapack entries act as a fallback (unless you’ve enabled override). Later, the mod may enrich unknown chances when server-side data becomes available.

## What’s not configurable via datapack (currently)

- Spawn locations/biomes and entity attributes are discovered from the game at runtime. Bestiary does not currently read datapack files for these.

If you need those, consider contributing or opening a feature request.
