# Lynx Survival Toolkit — Vein Miner, Tree Feller & Auto Replant for Paper (26.1 – 26.3)
A lightweight **server-side** quality-of-life plugin for **Paper / Spigot** servers.
Three survival features — **Vein Miner**, **Tree Feller** (tree capitator) and
**Auto Replant** — with vanilla-accurate drops, XP and durability. No client mods,
no resource packs, no custom blocks or items: everything is validated on the
server and triggered by normal Minecraft actions.
Works for **Java and Bedrock players** (Geyser / Floodgate): Bedrock clients get
the same behaviour without installing anything.
---
## Why server owners pick it
- **Nothing to install on the client.** Pure server plugin — Bedrock players are
first-class citizens.
- **Vanilla parity.** Ores drop exactly what vanilla drops (including Fortune and
Silk Touch), block XP is preserved, and Silk Touch correctly gives **no XP**.
Durability is consumed per additional block, with Unbreaking rolled per block.
- **Respects your server.** Region/claim plugins can veto every synthetic break;
cancelled events are honoured; players need the matching permission.
- **No runaway operations.** Per-action block caps, per-player queue limits,
cooldowns, and work spread across ticks so large trees never freeze the server.
- **Safe with builds.** Tree Feller only fells something that is a real tree —
continuous trunk **plus** a leaf canopy — so walls, floors and pillars made of
logs are untouched.
- **Silent by default.** No action-bar spam; administrator commands still answer.
---
## Features
### Vein Miner
Break a connected ore vein with one swing.
- Default cap: **16 blocks** per action (configurable up to 1024).
- 6-way connectivity, optional diagonal mining.
- Same-material veins by default, with an option to merge stone/deepslate
variants of the same ore (`group-ore-variants`).
- Requires the correct pickaxe (`require-correct-tool`), consumes durability per
block, and has a configurable cooldown (default 50 ms).
- Allow list in `config.yml` — coal, iron, copper, gold, redstone, lapis,
diamond, emerald, nether gold, nether quartz, ancient debris by default.
- Drops and XP are produced by vanilla loot logic, so datapacks and enchantments
behave exactly as expected.
### Tree Feller
Fell a tree trunk in one swing, without touching your base.
- Default cap: **256 logs** per action — large 2×2 dark oak, jungle and mega
spruce trees are felled completely.
- Trunk continuity **and** leaf-canopy validation keep log walls, pillars and
floors safe.
- Leaves are left to decay naturally; `include-leaves: true` fells them too.
- Requires an axe, consumes durability per log, configurable cooldown
(default 100 ms).
- Supports every vanilla log and stem type, including stripped variants.
### Auto Replant
Harvest and replant in one swing.
- Covers **wheat, carrots, potatoes, beetroot and nether wart**.
- Only mature crops are replanted (`mature-only`), soil is validated, and the
seed is consumed **only after** the replant succeeds.
- Works on the first harvest of a session too: if the seed drop has not been
picked up yet (vanilla blocks pickups for 10 ticks after a block break), the
replant is retried for ~20 ticks before falling back to a normal harvest.
- Respects protection plugins (`BlockPlaceEvent` is fired) and permissions.
- Silent — no chat or action-bar message during play.
---
## Compatibility
| Component | Supported |
|---|---|
| Server | **Paper 26.1, 26.2, 26.3** (one jar for all three) |
| Also runs on | Spigot / Purpur API-compatible builds of the same versions |
| Runtime | **Java 25** |
| Clients | Java Edition **and** Bedrock Edition |
| Crossplay | **Geyser-Spigot**, Floodgate optional (soft dependencies) |
| Protection plugins | Any plugin that cancels `BlockBreakEvent` / `BlockPlaceEvent` |
| Client mods | **Not required** |
| Custom content | None — no new blocks, items or entities |
Tested server build: **Paper 26.3 build 200** with JDK 25 (headless smoke test and
logic diagnostics pass; see the project documentation for the full matrix).
---
## Installation
1. Drop `LynxSurvivalToolkit-1.0.0.jar` into your server's `plugins/` folder.
2. Restart the server (or start it, then reload with `/lst reload`).
3. Optional: edit `plugins/LynxSurvivalToolkit/config.yml`, then run `/lst reload`.
4. Optional crossplay: install **Geyser-Spigot** (and Floodgate for proper
Bedrock UUIDs). No extra configuration is needed for this plugin.
`config.yml` and `messages.yml` carry a `config-version`. On update, the plugin
migrates an existing file automatically and **only** rewrites values that still
hold the previous default — your custom values are never overwritten.
---
## Commands & permissions
| Command | Permission | Purpose |
|---|---|---|
| `/lst info` | `lynxsurvival.use` | Version, feature state, crossplay detection |
| `/lst toggle <feature>` | `lynxsurvival.use` | Enable/disable a feature for yourself |
| `/lst reload` | `lynxsurvival.reload` | Reload configuration and messages |
| `/lst debug` | `lynxsurvival.debug` | Toggle per-block debug logging |
| `/lst selftest` | `lynxsurvival.admin` | Run headless logic diagnostics (only when started with `-Dlynx.selftest=true`) |
| Permission | Default | Purpose |
|---|---|---|
| `lynxsurvival.use` | true | Base access |
| `lynxsurvival.veinminer` | true | Use Vein Miner |
| `lynxsurvival.treefeller` | true | Use Tree Feller |
| `lynxsurvival.autoreplant` | true | Use Auto Replant |
| `lynxsurvival.bypass.cooldown` | op | Ignore cooldowns |
| `lynxsurvival.bypass.limits` | op | Ignore per-action block caps |
| `lynxsurvival.admin` / `lynxsurvival.reload` / `lynxsurvival.debug` | op | Administration |
---
## Key configuration defaults
```yaml
settings:
feedback: "NONE" # ACTIONBAR | CHAT | NONE
performance:
max-operations-per-tick: 32
max-search-nodes: 2048
max-queued-operations-per-player: 2
features:
vein-miner:
max-blocks: 16
same-type-only: true
group-ore-variants: true
cooldown-ms: 50
tree-feller:
max-logs: 256
include-leaves: false
require-trunk-structure: true
require-leaves-nearby: true
cooldown-ms: 100
auto-replant:
require-seed: true
mature-only: true
consume-seed-on-success: true
```
Every value is validated at startup: invalid input logs a warning and falls back
to a safe default instead of breaking the plugin.
---
## FAQ
**Does it work for Bedrock players?**
Yes. Everything happens server-side; Bedrock clients joining through Geyser get
the same behaviour with no add-on packs.
**Do I need to install anything on the client?**
No. This is not a Fabric/Forge mod — it is a server plugin.
**Will it duplicate ores or XP?**
No. Additional blocks are broken through the server's own block-breaking logic,
so loot tables, Fortune, Silk Touch and XP are identical to mining by hand.
**Does Silk Touch still give XP?**
No — Silk Touch gives no block XP, exactly like vanilla.
**Will it destroy my log cabin?**
No. Tree Feller requires a continuous trunk **and** a leaf canopy nearby before
it does anything.
**Does it work with claim/protection plugins?**
Yes. Every additional block fires a synthetic break event that other plugins can
cancel, and Auto Replant fires a placement event.
**Is it heavy on the server?**
No. Work is processed in ticks with a per-tick budget and per-player queue limit;
idle cost is zero because the scheduler stops when queues are empty.
**Does it support 26.1 and 26.2 as well as 26.3?**
Yes — a single jar is declared for API 26.1 and runs on all three.
**Can I disable one feature?**
Yes. Each feature has `enabled: false`, and players can toggle features for
themselves with `/lst toggle`.
**Where is the configuration?**
`plugins/LynxSurvivalToolkit/config.yml` (behaviour) and `messages.yml` (texts).
---
## Support & feedback
Bug reports and feature requests are welcome in the project's issue tracker.
When reporting a problem, include the server version (`/version`), the plugin
version (`/lst info`), and the relevant lines from the server log — `/lst debug`
adds per-block detail that makes diagnosis fast.
Licensed under the **MIT License**.

