# NeoEssentials — Changelog
**Minecraft 1.21.1 – 1.21.11 · NeoForge 21.1.179+**
---
## 1.0.2.5+build.1072 — 2026-03-06
### 🐛 Fixed: PowerTool System
- **Powertools now fire on block right-clicks** — previously only worked when clicking in empty air; now fires on any right-click (air, block, mob)
- **`/powertooltoggle` now actually works** — was checking a dead legacy class instead of the real per-player toggle
- Dead `PowertoolToggleCommand` class replaced with a compatibility shim to prevent double command registration
---
## 1.0.2.5+build.1065 — 2026-03-05
### 📋 Tablist Config File
Tablist settings moved to **`config/neoessentials/tablist.json`** — a dedicated, fully-documented file separate from the main config.
- Auto-deployed on first start, backwards compatible with existing `config.json` tablist sections
- New `groupColors` — colour player names by permission group in the header/footer
- `&` colour codes work everywhere in the file
- New `/tablist config` command shows a live settings summary
- `/tablist info` now shows the full file path
- Reload anytime with `/tablist reload`
### 🌍 Lang File Key Audit
- ~120 missing translation keys added covering Whois, Helpop, List, ChestShop, Vault, and moderation systems
- Server lang files now **auto-merge new keys** on startup — admin edits are never overwritten
### 🐛 Fixes
- Duplicate translation keys in `en_us.json` removed
- `/tablist reload` resets animation frames immediately
---
## 1.0.2.5+build.1057 — 2026-03-05
### ✨ ChestShop System
Sign-based shops — the classic essentials shop experience, natively in NeoForge.
**Sign format (all 4 lines):**
```
[blank or name] ← auto-assigns your name if left blank
[quantity] ← e.g. 5
[B buy:S sell] ← e.g. B 10:S 5 / B FREE / S 2.50
[item or ?] ← e.g. diamond — or ? to right-click-assign
```
- Right-click sign = **BUY**, left-click sign = **SELL**
- Blank line 1 auto-assigns the creating player's name
- Write `?` on line 4, then right-click the sign holding an item to fill it in
- **Admin Shops** — `Admin Shop` on line 1 = unlimited stock, no chest required
- Shops persist across restarts in `neoessentials/shops.json`
- Full economy integration — uses EconomyManager with rollback safety
- Permission-gated creation and usage
- `/chestshop` command suite: `list`, `info`, `convert`, `remove`, `reload`
### ✨ Vault API
- Economy, Chat, and Permission Vault providers
- Chat prefix/suffix now uses LuckPerms or FTB Ranks when installed
- Deposit/withdraw events fire for all Vault-originated transactions
### 🐛 Fixes
- NeoForge 1.21.1 API compatibility fixes across multiple commands
- `config.json` duplicate keys and JSON syntax error fixed
- Vault economy currency format now reads live from config
- Vault chat prefix/suffix now correctly uses external permission adapters
---
## 1.0.2.5+build.908 — 2026-03-03
### ✨ 50+ New Commands
Player info, world interaction, teleportation, item customisation, admin tools, economy enhancements, and more. Full command list: [CHANGELOG_GITHUB.md](CHANGELOG_GITHUB.md)
### 🌍 9 Languages
English + French, German, Spanish, Portuguese (BR), Chinese, Dutch, Polish, Russian. Auto-deployed on server start, safe to edit.
### 🛒 Worth & Sell System
`/worth`, `/sell hand|inventory|all`, `/setworth` — sell multiplier, named item protection.
### 🎲 Random Teleport
`/tpr` — even distribution, nether-aware, biome exclusions, async cache, named zones.
### 🔐 Permissions
50+ missing nodes registered, `MODERATION` category added, denial messages show required node.
### 🐛 Key Fixes
- Safe teleport detection rewritten (slabs/stairs/glass now safe)
- AFK system fully functional
- Chat appears in server console
- PowerTools follow the item not the slot
- Dashboard offline login, auto-update, rich text fixed
- Timed jails with full enforcement
---
## 1.0.2.3 — initial release
Core economy, chat, moderation, teleportation, kits, warps, web dashboard, permissions, item management.
Developer information
Projects on Modrinth are automatically available through a Maven repository for use with JVM build tools such as Gradle.
maven { name = "Modrinth"; url = "https://api.modrinth.com/maven" }