# FAQ Configuration

# FAQ Configuration

**File:** `faq/faq.json`

Defines frequently asked questions, organized in categories.

## Complete Example

```json
{
  "settings": {
    "showCategories": true,
    "expandFirstAnswer": false,
    "itemsPerPage": 5
  },
  "categories": [
    {
      "id": "getting-started",
      "name": "Getting Started",
      "description": "Questions for new players",
      "icon": "Deco_Book_Pile_Small",
      "questions": [
        {
          "question": "How do I get started on the server?",
          "answer": "Welcome! First read /rules, then use /spawn to get to the main area. From there you can explore or claim your own land.",
          "tags": ["new", "beginner", "start"]
        },
        {
          "question": "How do I claim land?",
          "answer": "Use a golden shovel to select two corners of your claim. You earn claim blocks by playing on the server.",
          "tags": ["claim", "land", "protection"]
        },
        {
          "question": "How do I set my home?",
          "answer": "Use /sethome [name] to set a home at your current position. With /home [name] you teleport back.",
          "tags": ["home", "teleport"]
        }
      ]
    },
    {
      "id": "economy",
      "name": "Economy",
      "description": "Questions about money and trading",
      "icon": "Ore_Gold",
      "questions": [
        {
          "question": "How do I earn money?",
          "answer": "You can earn money by: Selling items at /shop, completing jobs, or trading with other players.",
          "tags": ["money", "earn", "income"]
        },
        {
          "question": "How do I send money to other players?",
          "answer": "Use /pay [player] [amount] to send money to another player.",
          "tags": ["pay", "transfer", "money"]
        }
      ]
    }
  ]
}
```

---

## Settings

```json
{
  "settings": {
    "showCategories": true,
    "expandFirstAnswer": false,
    "itemsPerPage": 5
  }
}
```

| Setting | Type | Default | Description |
|---------|------|---------|-------------|
| `showCategories` | Boolean | `true` | Show category grouping |
| `expandFirstAnswer` | Boolean | `false` | Open the first answer of a category automatically |
| `itemsPerPage` | Integer | `5` | Questions per page in the list view |

---

## Category Structure

```json
{
  "id": "category-id",
  "name": "Category Name",
  "description": "Category description",
  "icon": "Item_Id",
  "permission": null,
  "priority": 1,
  "questions": []
}
```

| Field | Type | Description |
|-------|------|-------------|
| `id` | String | Unique category ID |
| `name` | String | Display name |
| `description` | String | Category description |
| `icon` | String | Item ID for icon |
| `permission` | String | Permission to view this category (null = everyone) |
| `priority` | Integer | Sort order (lower = higher, default: `99`) |
| `questions` | Array | FAQ entries in this category |

---

## Question Structure

```json
{
  "id": "question-id",
  "question": "The question text?",
  "answer": "The answer to the question.",
  "tags": ["search", "terms"],
  "relatedLinks": [
    {
      "label": "Visit Shop",
      "url": "/shop",
      "action": "command"
    }
  ]
}
```

| Field | Type | Description |
|-------|------|-------------|
| `id` | String | Unique question ID |
| `question` | String | The question |
| `answer` | String | The answer |
| `tags` | Array | Search keywords (optional) |
| `relatedLinks` | Array | Related links shown below the answer (optional) |

### Related Links

| Field | Type | Description |
|-------|------|-------------|
| `label` | String | Link display text |
| `url` | String | Command line, web link or book target |
| `action` | String | `"command"` (shown as a chip; a click puts the command into the player's chat, nothing runs), `"url"` (the link is sent to chat) or `"book"` (`url` is a book target such as `rules`, `faq:<id>`, `page:<id>`, `rule:<category>:<id>`) |
| `i18n` | Object | Optional label per language |

The FAQ tab shows category pills, **expand / collapse all** and accordion answers. Category `permission` and `priority` are respected everywhere (browse, search, counts). Questions, answers and category names accept an optional `i18n` map per language.

---

## Examples

### Technical Questions

```json
{
  "id": "technical",
  "name": "Technical",
  "description": "Technical questions and troubleshooting",
  "icon": "Deco_Inkwell",
  "questions": [
    {
      "question": "How do I reduce lag?",
      "answer": "Try: 1) Lower render distance, 2) Close other programs, 3) Connect via Ethernet instead of WiFi.",
      "tags": ["lag", "fps", "performance"]
    },
    {
      "question": "What mods are allowed?",
      "answer": "Only cosmetic mods are allowed (shaders, minimaps without cave mode). Any mod giving gameplay advantages is forbidden.",
      "tags": ["mods", "allowed", "hacks"]
    }
  ]
}
```

### Ranks & Donations

```json
{
  "id": "ranks",
  "name": "Ranks & Donations",
  "description": "Questions about server ranks",
  "icon": "Rock_Gem_Diamond",
  "questions": [
    {
      "question": "How do I get a rank?",
      "answer": "Ranks can be obtained through our store at store.example.com or earned through gameplay achievements.",
      "tags": ["rank", "vip", "donate"]
    },
    {
      "question": "Are donations refundable?",
      "answer": "No, all donations are final and non-refundable as per our terms of service.",
      "tags": ["refund", "donation", "chargebacke"]
    }
  ]
}
```

### Gameplay Questions

```json
{
  "id": "gameplay",
  "name": "Gameplay",
  "description": "General gameplay questions",
  "icon": "Weapon_Sword_Iron",
  "questions": [
    {
      "question": "How do I join a guild?",
      "answer": "Ask a guild leader for an invite, or use /guild list to browse open guilds you can join.",
      "tags": ["guild", "clan", "group"]
    },
    {
      "question": "How do I enchant items?",
      "answer": "Use an enchanting table with lapis lazuli and XP levels. Higher levels give better enchantments.",
      "tags": ["enchant", "magic", "upgrade"]
    }
  ]
}
```

---

## Search Tags

Tags help players find answers through the global search:

```json
{
  "question": "How do I protect my items from being stolen?",
  "answer": "Claim your land, use locked chests, and don't share home locations with strangers.",
  "tags": ["protect", "theft", "steal", "lock", "chest", "claim", "security"]
}
```

:::tip Best Practices
- Include common misspellings
- Add synonyms (e.g., "money", "coins", "currency")
- Include related topics
:::

---

## Formatting Answers

You can use line breaks and formatting in answers:

```json
{
  "question": "What are the available commands?",
  "answer": "Main commands:\n\n/spawn - Go to spawn\n/home - Teleport home\n/shop - Open shop\n/help - Get help\n\nFor a full list, check the Commands section.",
  "tags": ["commands", "list"]
}
```

### Color Codes

You can use Minecraft-style color codes in FAQ answers:

| Code | Color | Code | Color |
|------|-------|------|-------|
| `&0` | Black | `&8` | Dark Gray |
| `&1` | Dark Blue | `&9` | Blue |
| `&2` | Dark Green | `&a` | Green |
| `&3` | Dark Cyan | `&b` | Cyan |
| `&4` | Dark Red | `&c` | Red |
| `&5` | Purple | `&d` | Pink |
| `&6` | Gold | `&e` | Yellow |
| `&7` | Gray | `&f` | White |
| `&r` | Reset | | |

**Example with colors:**

```json
{
  "question": "How do I become VIP?",
  "answer": "Visit our &6Shop&r at &b/shop&r or donate on &aour website&r!",
  "tags": ["vip", "rank", "donate"]
}
```

:::tip Text Wrapping
FAQ answers automatically wrap to fit the display area. Long answers will be fully visible without truncation.
:::

---

## Best Practices

1. **Keep answers concise** - Link to detailed guides if needed
2. **Use practical examples** - Show command syntax
3. **Include tags** - Improves searchability
4. **Group logically** - Related questions together
5. **Update regularly** - Remove outdated information