Описание
**CropXp** rewards farming: harvest a mature crop and there's a chance it
drops a few experience orbs. Which crops count, how much XP, and the drop
chance are all yours to configure.
## ✨ Highlights
- 🌾 XP for harvesting crops, with configurable amount and chance
- 🎚️ In-game settings screen (via Mod Menu + Cloth Config)
- 📦 Add, remove, or retune any crop with data pack files — great for modpacks and servers
- 📈 Optional LevelZ support — also grants LevelZ farming XP when LevelZ is installed
- ♻️ `/reload` applies changes instantly; Creative mode is opt-in
## 📦 Compatibility
Fabric **1.19.2**, **1.20.1**, **1.21.1**
**Required:** Fabric API
**Optional:** Mod Menu + Cloth Config (in-game settings), LevelZ (LevelZ XP)
## ⚙️ Configuration
Edit the settings in-game via **Mod Menu → CropXp**, or edit `config/cropxp.json`
directly. These are the **global defaults** used by every crop that doesn't
override them. Upgrading from a 1.x config is automatic.
```json
{
"general": {
"enabled": true,
"dropInCreative": false,
"defaults": { "min": 1, "max": 2, "chance": 0.5 }
},
"levelz": {
"enabled": true,
"defaults": { "min": 1, "max": 1, "chance": 0.25 }
}
}
```
| Setting | Default | Meaning |
|---|---|---|
| `general.enabled` | `true` | Master switch for vanilla XP drops. |
| `general.dropInCreative` | `false` | If `true`, XP also drops while in Creative mode. |
| `general.defaults.min` / `max` | `1` / `2` | Vanilla XP amount; a whole number is rolled evenly between min and max. |
| `general.defaults.chance` | `0.5` | Chance per harvest to drop vanilla XP (`0.0`–`1.0`). `0` = never, `1` = always. |
| `levelz.enabled` | `true` | Switch for LevelZ XP (only matters when LevelZ is installed). |
| `levelz.defaults.min` / `max` | `1` / `1` | LevelZ XP amount range. |
| `levelz.defaults.chance` | `0.25` | Chance per harvest to drop LevelZ XP. Rolled independently of vanilla XP. |
## 🌱 Custom crops (data packs)
Every recognized crop is a JSON file, so you can add, retune, or disable any
crop — including modded ones — without changing the mod. Place files in a data
pack at:
```
data//cropxp/crops/.json
```
`` can be anything (use your pack's name); `cropxp/crops` is the
fixed folder CropXp scans. Put the pack in a world's `datapacks/` folder or ship
it inside a mod. Run `/reload` after editing — the **Recognized Crops** tab in
the config screen lists everything currently loaded.
| Field | Type | Required | Description |
|---|---|---|---|
| `block` | string | ✅ | Block id, e.g. `minecraft:carrots`. |
| `conditions` | object | — | Block-state values that must **all** match for XP to drop, e.g. `{ "age": 7 }`. Omit to match any state. |
| `vanilla` | object | — | Vanilla XP override `{ min, max, chance }`. Any field omitted falls back to the global default. |
| `levelz` | object | — | LevelZ XP override `{ min, max, chance }`. |
| `requiresCorrectTool` | boolean | — | If `true`, XP only drops when the block is broken with the correct tool. |
| `enabled` | boolean | — | Set `false` to turn a crop off (e.g. to disable a built-in one). |
**Conditions** use the block's own state properties — for example `age` (`0–7`
for wheat, `0–3` for nether wart), or `half` (`lower` / `upper`). Only states
that match every listed condition grant XP, so unripe crops are skipped.
### Examples
Mature carrots with custom XP:
```json
{
"block": "minecraft:carrots",
"conditions": { "age": 7 },
"vanilla": { "min": 1, "max": 3, "chance": 0.6 }
}
```
Fully-grown nether wart, overriding both vanilla and LevelZ XP:
```json
{
"block": "minecraft:nether_wart",
"conditions": { "age": 3 },
"vanilla": { "min": 2, "max": 4, "chance": 1.0 },
"levelz": { "min": 1, "max": 2, "chance": 0.5 }
}
```
Turn off a built-in crop:
```json
{ "block": "minecraft:cocoa", "enabled": false }
```
The same pattern works for modded crops — use the modded block id and its own
growth property in `conditions`.
## 🧺 Built-in crops
Wheat, carrots, potatoes, beetroots, nether wart, cocoa, melon & pumpkin stems
(including the attached-stem state), and pitcher crop (where that block exists).
Melon/pumpkin blocks and torchflower are excluded on purpose — they regrow or
can be re-placed, which would allow infinite XP.
---
> Originally built for my own modpack, now shared for everyone. 🌾