NeoEssentials
> NeoEssentials is a comprehensive, config-driven essentials mod for Minecraft NeoForge 1.21.1 - 1.21.11 servers. It provides 50+ commands, GUI tools, advanced administration, and a real-time web dashboard—all managed by modular JSON config files and standardized documentation.
🌟 Overview
NeoEssentials brings essential server management, player utilities, and advanced admin features to NeoForge servers. All features are strictly documented and driven by config files for reliability and transparency.
Server-Side Only: No client install required—works with vanilla clients. 50+ Commands: Covers all major server functions, utilities, and moderation. Modern UI: GUI commands, color code support, and web dashboard.
✨ Core Systems & Features
- Economy System: Player balances, payments, kits, and shop support.
- Chat & Messaging: Private messages, mail, ignore/socialspy, AFK system.
- Moderation: Ban, kick, mute, jail, vanish, freeze, sudo, player data.
- Teleportation: Homes, warps, spawn, teleport requests, back system.
- Kit Management: Configurable item kits with cooldowns and preview.
- Web Dashboard: Real-time server monitoring, config editing, API endpoints.
- Permission System: LuckPerms, FTB Ranks, and built-in support.
- Item Management: Item spawning, repair, enchant, clearinventory, powertool.
- Utility Systems: Nicknames, MOTD, near, ping, depth, helpop, rules, suicide, etc.
- API & Placeholder System: PlaceholderAPI integration, custom placeholders, REST API endpoints.
📖 Documentation
Start at Home for a complete, config-driven documentation hub. All major systems are documented and standardized to match the codebase and config files:
- EconomySystem
- ChatSystem
- ModerationSystem
- TeleportationSystem
- KitManagement
- WebDashboard
- PermissionSystem
- ItemManagement
- UtilitySystems
- APISystem
- AFKSystem
See APISystem for API & Placeholder System details, including:
- PlaceholderAPI integration for dynamic text
- Custom and expansion placeholders
- Web Dashboard REST API endpoints for server status, player info, logs, config, events, and statistics
- Permissions and config options for API features
🚀 Quick Start
Installation
- Download the latest release
- Place the JAR file in your server's
modsfolder - Start your server to generate configuration files in
config/neoessentials/ - Configure permissions and features as needed
- Restart the server to apply changes
Essential Configuration Files
config/neoessentials/
├── config.json # Main configuration settings
├── permissions.json # Permission system setup
├── language/ # Language files directory
├── shops.json # Shop system configuration
└── settings.json # Additional mod settings
Quick Permission Setup
For LuckPerms users:
/lp group admin permission set neoessentials.admin true
/lp group moderator permission set neoessentials.moderator true
/lp group default permission set neoessentials.player true
🎮 Command Reference
See Home and individual system docs above for full command lists and config options.
🔧 Configuration Examples
All features are managed by modular JSON config files. See Home and system docs above for details.
🔗 API Integration for Modders
See APISystem for full API and PlaceholderAPI documentation, including:
- Registering custom placeholders
- Using REST API endpoints for server data
- Economy API for mod integration
🔗 Integration & Compatibility
- LuckPerms and FTB Ranks supported
- Server-Side Only (no client mods required)
- Vanilla Client Support
- Performance Optimized
🛠️ Development
IDE Setup
This project uses IntelliJ IDEA Community Edition with Gradle.
Setup Instructions:
- Clone the repository
- Open the project in IntelliJ IDEA
- Import as a Gradle project
- Wait for Gradle to sync and download dependencies
- The IDE is configured to automatically download sources and javadocs
Running the Mod:
- Use Gradle run configurations provided by NeoForge ModDev
runClient- Test in client moderunServer- Test in server moderunData- Generate data resources
Building:
./gradlew build
Output JAR: build/libs/neoessentials-VERSION+build.XXX.jar
Project Structure
- Java 21 - Target JDK version
- Gradle - Build system with auto-incrementing build numbers
- NeoForge ModDev 2.0.107 - Modern mod development plugin
- Parchment Mappings - Better parameter names and javadocs
🤝 Support & Community
- Discord: Join our Discord server for support and community discussion
- Bug Reports: Report issues and bugs through GitHub or Discord
- Feature Requests: Suggest new features and improvements
- Documentation: See Home and system docs above
📄 License
NeoEssentials is licensed under the MIT License. See the LICENSE file for details.
🌟 Ready to enhance your server? Download NeoEssentials and give your players the essential tools they need!
Made with ❤️ for the Minecraft community
How to Install NeoEssentials (Mod)
NeoEssentials by Unknown is verified for Neoforge across Minecraft versions 1.21.1, 1.21.10, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7 (latest release: 1.0.6, file size: 3.6 MB). Follow the steps below to install it safely from ModCraft.tv:
- Click the Download button above and select your Minecraft version (1.21.1, 1.21.10, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7) and platform (Neoforge).
- Make sure you have the compatible loader or environment installed for Neoforge.
- Move the downloaded NeoEssentials file into your Minecraft
.minecraft/modsfolder and launch the game.
All Versions
+ Add Version- Minecraft 26.2 · NeoForge 26.2.0.63+**
All notable changes to this branch are documented here, starting from
- v1.0.6** — earlier history (v1.0.5.x and before, including the port's own
## [1.0.6] — 2026-08-27
### Added
- 2026-10-09** — Build 87 ([
41c8f805](https://github.com/ZeroG-Network-PTY-LTD/NeoEssentials/commit/41c8f8052939a9ae547db14a2a339e65679ea3ba)) — The NPC shop window now shows your live balance on a gold ingot (bottom-right slot), refreshed after every buy/sell — previously only in the title, which couldn't update while the window was open. - 2026-10-09** — Build 86 ([
c82a9111](https://github.com/ZeroG-Network-PTY-LTD/NeoEssentials/commit/c82a9111ecf2ad424c0eaaf2a5763cfe45f8d221)) — Fixed/npcshop additemand NPC shop listings not recognizing modded items with noworth.ymlentry (e.g.mekanism:osmium_ingot) — now falls back to the item registry. - 2026-10-09** — Build 85 ([
277ee52f](https://github.com/ZeroG-Network-PTY-LTD/NeoEssentials/commit/277ee52f4e1a2ed1d4ed7c775542a117a089c082)) — Modded ids work in/npcshop additem,addcommandandentitytype;entitytype's<ai>is optional. - 2026-10-08** — Build 84 ([
1a3920ca](https://github.com/ZeroG-Network-PTY-LTD/NeoEssentials/commit/1a3920cabba8b83a03b6c7e53ac30203b911347e)) — Easier shops:/npcshopaccepts shop names orthis, newadditemhandandeditlisting ... price, 1-based slots, shift-click stacks and balance in the NPC shop window, second-click confirmation aboveshop.confirmAbove, and fuller/chestshop infofor command signs. - 2026-10-07** — Build 83 ([
0596bf64](https://github.com/ZeroG-Network-PTY-LTD/NeoEssentials/commit/0596bf64c3e4e18725a94abf5fd270f107b04464)) — Command shops: sell commands from NPC shops (/npcshop addcommand,/npcshop editlisting) or[Command]Admin Shop signs (/chestshop command ...). Runs as console or the buyer,{player}/{uuid}placeholders, optional permission node, and the buyer is never charged for a command that can't run. - 2026-10-06** — Build 82 ([
caf1ee68](https://github.com/ZeroG-Network-PTY-LTD/NeoEssentials/commit/caf1ee689e6ed4e895d39b6806facbc52b9fd149)) — The[NE]message prefix is now configurable viageneral.messagePrefix(""removes it). - 2026-09-16** — Build 77 ([
e5758be3](https://github.com/ZeroG-Network-PTY-LTD/NeoEssentials/commit/e5758be361debd0cc7d455b2e98af94e76beee00)) — Valued permission nodes — groups can now hold a"meta"map (node -> value) for permission systems expecting a number/string instead of a plain grant, wired into NeoForge's Permission API forINTEGER/STRINGnode types. Used to give the rank ladder progressively higher FTB Chunks (ftbchunks.max_claimed/max_force_loaded) claim limits per tier — only effective if a mod queries limits through NeoForge's Permission API rather than its own separate config. - 2026-09-16** — Build 76 ([`d63a7
- Minecraft 26.1–26.1.2 · NeoForge 26.1.2.76+**
All notable changes to this branch are documented here, starting from
- v1.0.6** — earlier history (v1.0.5.x and before, including the port's own
## [1.0.6] — 2026-08-27
### Added
- 2026-10-09** — Build 87 ([
6c2e99cb](https://github.com/ZeroG-Network-PTY-LTD/NeoEssentials/commit/6c2e99cb13ae748c4384f55af3b225a60c3d3458)) — The NPC shop window now shows your live balance on a gold ingot (bottom-right slot), refreshed after every buy/sell — previously only in the title, which couldn't update while the window was open. - 2026-10-09** — Build 86 ([
3ffed2df](https://github.com/ZeroG-Network-PTY-LTD/NeoEssentials/commit/3ffed2df243125955bd1a0aa02d37c45ca120bc4)) — Fixed/npcshop additemand NPC shop listings not recognizing modded items with noworth.ymlentry (e.g.mekanism:osmium_ingot) — now falls back to the item registry. - 2026-10-09** — Build 85 ([
469bb962](https://github.com/ZeroG-Network-PTY-LTD/NeoEssentials/commit/469bb96239689794110effc2c694a8ce27305294)) — Modded ids work in/npcshop additem,addcommandandentitytype;entitytype's<ai>is optional. - 2026-10-08** — Build 84 ([
3424d4d0](https://github.com/ZeroG-Network-PTY-LTD/NeoEssentials/commit/3424d4d04d33a013bb8e9c6ae12b485654fb1e32)) — Easier shops:/npcshopaccepts shop names orthis, newadditemhandandeditlisting ... price, 1-based slots, shift-click stacks and balance in the NPC shop window, second-click confirmation aboveshop.confirmAbove, and fuller/chestshop infofor command signs. - 2026-10-07** — Build 83 ([
f589beda](https://github.com/ZeroG-Network-PTY-LTD/NeoEssentials/commit/f589beda8de5b630c8fcda5489aa20feb7f040c5)) — Command shops: sell commands from NPC shops (/npcshop addcommand,/npcshop editlisting) or[Command]Admin Shop signs (/chestshop command ...). Runs as console or the buyer,{player}/{uuid}placeholders, optional permission node, and the buyer is never charged for a command that can't run. - 2026-10-06** — Build 82 ([
4f55f20a](https://github.com/ZeroG-Network-PTY-LTD/NeoEssentials/commit/4f55f20a54464a7a8188a4d0b71aa4bcf573a2cc)) — The[NE]message prefix is now configurable viageneral.messagePrefix(""removes it). - 2026-09-16** — Build 77 ([
893aeb43](https://github.com/ZeroG-Network-PTY-LTD/NeoEssentials/commit/893aeb43375f06591726457eba84e36b69c4b9ec)) — Valued permission nodes — groups can now hold a"meta"map (node -> value) for permission systems expecting a number/string instead of a plain grant, wired into NeoForge's Permission API forINTEGER/STRINGnode types. Used to give the rank ladder progressively higher FTB Chunks (ftbchunks.max_claimed/max_force_loaded) claim limits per tier — only effective if a mod queries limits through NeoForge's Permission API rather than its own separate config. - 2026-09-16** — Build 76 (
Starting from **v1.0.6** — earlier history (v1.0.5.x and before) is not carried over.
- Minecraft 1.21.1 – 1.21.10 · NeoForge 21.1.179+**
## [1.0.6] — 2026-08-27
### Added
- 2026-10-09** — Build 87 ([
786492e9](https://github.com/ZeroG-Network-PTY-LTD/NeoEssentials/commit/786492e93cd10a24ac9d4ab0444d62b10e4d0008)) — The NPC shop window now shows your live balance on a gold ingot (bottom-right slot), refreshed after every buy/sell — previously only in the title, which couldn't update while the window was open. - 2026-10-09** — Build 86 ([
d82acad1](https://github.com/ZeroG-Network-PTY-LTD/NeoEssentials/commit/d82acad1c93bd92b9e91ea20a69a2749b19ca151)) — Fixed/npcshop additemand NPC shop listings not recognizing modded items with noworth.ymlentry (e.g.mekanism:osmium_ingot) — now falls back to the item registry. - 2026-10-09** — Build 85 ([
a7208a94](https://github.com/ZeroG-Network-PTY-LTD/NeoEssentials/commit/a7208a94fe1830740627b461d85e325c2cbaf451)) — Modded ids work in/npcshop additem,addcommandandentitytype;entitytype's<ai>is optional. - 2026-10-08** — Build 84 ([
6a3dc7be](https://github.com/ZeroG-Network-PTY-LTD/NeoEssentials/commit/6a3dc7be7e8be88a7b9e738507ff043c85f32abb)) — Easier shops:/npcshopaccepts shop names orthis, newadditemhandandeditlisting ... price, 1-based slots, shift-click stacks and balance in the NPC shop window, second-click confirmation aboveshop.confirmAbove, and fuller/chestshop infofor command signs. - 2026-10-07** — Build 83 ([
4ab8fcaa](https://github.com/ZeroG-Network-PTY-LTD/NeoEssentials/commit/4ab8fcaafb4a911f7a8e6f178e1282a333a8ffe9)) — Command shops: sell commands from NPC shops (/npcshop addcommand,/npcshop editlisting) or[Command]Admin Shop signs (/chestshop command ...). Runs as console or the buyer,{player}/{uuid}placeholders, optional permission node, and the buyer is never charged for a command that can't run. - 2026-10-06** — Build 82 ([
814b32ea](https://github.com/ZeroG-Network-PTY-LTD/NeoEssentials/commit/814b32ea6d2a3eb405b6083a84b7343c68610bce)) — The[NE]message prefix is now configurable viageneral.messagePrefix(""removes it). - 2026-09-16** — Build 77 ([
1c4cc11c](https://github.com/ZeroG-Network-PTY-LTD/NeoEssentials/commit/1c4cc11caf760ddaefb9ca2dfe3e14f4b59f440f)) — Valued permission nodes — groups can now hold a"meta"map (node -> value) for permission systems expecting a number/string instead of a plain grant, wired into NeoForge's Permission API forINTEGER/STRINGnode types. Used to give the rank ladder progressively higher FTB Chunks (ftbchunks.max_claimed/max_force_loaded) claim limits per tier — only effective if a mod queries limits through NeoForge's Permission API rather than its own separate config. - 2026-09-16** — Build 76 ([
6233db30](https://github.com/ZeroG-Network-PTY-LTD/NeoEssentials/commit/6233db30f89fabfb28f37af0ab85ce82d9ca2
- Minecraft 26.2 · NeoForge 26.2.0.63+**
All notable changes to this branch are documented here, starting from
- v1.0.5** — earlier history (v1.0.4.x and before, including the port's own
## 1.0.5+build.54 — 2026-08-25
### 🐛 Resource Pack Uploads, Login Lockout, and Warp Limits — Three Race-Condition Fixes
- Uploading a resource pack through the web dashboard could silently corrupt the file — the upload parser was decoding the raw zip bytes as text. Fixed with a proper binary-safe parser.
- The dashboard's login lockout (locking an account after repeated failed attempts) could be dodged by firing several login attempts at once — some of the failed-attempt count got lost in the race. Now correctly counted no matter how many attempts land at the same time.
- Creating warps from multiple sources at the same moment could push the total warp count past your configured limit. The limit is now enforced atomically.
## 1.0.5+build.53 — 2026-08-25
### 🐛 Kit Items With Enchantments/Custom Names Were Silently Dropped on Every Boot
- If a kit item had saved enchantments, a custom name, or any other item data, it failed to load every single time the server started (you'd see "Failed to deserialize item entry in kit" in the log) — because kits were being loaded before the game's item systems were fully ready. Kits are now re-loaded once the server has actually finished starting, so this data isn't lost anymore.
## 1.0.5+build.52 — 2026-08-25
### 🐛 /pay Could Lose Money on a Very Unlucky Double Failure
- In the rare case where
/payfailed to credit the receiver AND the automatic refund back to the sender also failed, the sender's money vanished into nowhere. The refund now guarantees it lands back in the sender's account no matter what.
## 1.0.5+build.51 — 2026-08-25
### 🐛 /tpa Timeout Wasn't Thread-Safe
- Internal fix: the background timer that expires a
/tparequest after it times out could run into the same off-main-thread issue as several dashboard fixes below. No visible behavior change — just safer under real player load.
## 1.0.5+build.50 — 2026-08-25
### 🐛 /mail sendall, Config Saves, and Three More Dashboard Endpoints Made Thread-Safe
/mail sendall/sendtempallran on a background thread that could corrupt the shared mailbox if players were sending/reading mail at the same time. It now runs safely on the main thread.- Config files and mail data could be left truncated or corrupted if the server crashed mid-save. Saves are now atomic (write-then-rename) everywhere, matching how moderation data already worked.
- The dashboard's Statistics, Permissions, and Discord integration pages were reading live server state directly from the HTTP request thread instead of the main thread — same bug class as the vanish/jail/ban fixes further down, now fixed here too.
## 1.0.5+build.49 — 2026-08-25
### 🐛 AFK Detection and Discord Role
...
- Minecraft 26.1–26.1.2 · NeoForge 26.1.2.76+**
All notable changes to this branch are documented here, starting from
- v1.0.5** — earlier history (v1.0.4.x and before, including the port's own
## 1.0.5+build.54 — 2026-08-25
### 🐛 Resource Pack Uploads, Login Lockout, and Warp Limits — Three Race-Condition Fixes
- Uploading a resource pack through the web dashboard could silently corrupt the file — the upload parser was decoding the raw zip bytes as text. Fixed with a proper binary-safe parser.
- The dashboard's login lockout (locking an account after repeated failed attempts) could be dodged by firing several login attempts at once — some of the failed-attempt count got lost in the race. Now correctly counted no matter how many attempts land at the same time.
- Creating warps from multiple sources at the same moment could push the total warp count past your configured limit. The limit is now enforced atomically.
## 1.0.5+build.53 — 2026-08-25
### 🐛 Kit Items With Enchantments/Custom Names Were Silently Dropped on Every Boot
- If a kit item had saved enchantments, a custom name, or any other item data, it failed to load every single time the server started (you'd see "Failed to deserialize item entry in kit" in the log) — because kits were being loaded before the game's item systems were fully ready. Kits are now re-loaded once the server has actually finished starting, so this data isn't lost anymore.
## 1.0.5+build.52 — 2026-08-25
### 🐛 /pay Could Lose Money on a Very Unlucky Double Failure
- In the rare case where
/payfailed to credit the receiver AND the automatic refund back to the sender also failed, the sender's money vanished into nowhere. The refund now guarantees it lands back in the sender's account no matter what.
## 1.0.5+build.51 — 2026-08-25
### 🐛 /tpa Timeout Wasn't Thread-Safe
- Internal fix: the background timer that expires a
/tparequest after it times out could run into the same off-main-thread issue as several dashboard fixes below. No visible behavior change — just safer under real player load.
## 1.0.5+build.50 — 2026-08-25
### 🐛 /mail sendall, Config Saves, and Three More Dashboard Endpoints Made Thread-Safe
/mail sendall/sendtempallran on a background thread that could corrupt the shared mailbox if players were sending/reading mail at the same time. It now runs safely on the main thread.- Config files and mail data could be left truncated or corrupted if the server crashed mid-save. Saves are now atomic (write-then-rename) everywhere, matching how moderation data already worked.
- The dashboard's Statistics, Permissions, and Discord integration pages were reading live server state directly from the HTTP request thread instead of the main thread — same bug class as the vanish/jail/ban fixes further down, now fixed here too.
## 1.0.5+build.49 — 2026-08-25
### 🐛 AFK Detection and Disco
...
Starting from **v1.0.5** — earlier history (v1.0.4.x and before) is not carried over.
- Minecraft 1.21.1 – 1.21.11 · NeoForge 21.1.179+**
## 1.0.5+build.54 — 2026-08-25
### 🐛 Resource Pack Uploads, Login Lockout, and Warp Limits — Three Race-Condition Fixes
- Uploading a resource pack through the web dashboard could silently corrupt the file — the upload parser was decoding the raw zip bytes as text. Fixed with a proper binary-safe parser.
- The dashboard's login lockout (locking an account after repeated failed attempts) could be dodged by firing several login attempts at once — some of the failed-attempt count got lost in the race. Now correctly counted no matter how many attempts land at the same time.
- Creating warps from multiple sources at the same moment could push the total warp count past your configured limit. The limit is now enforced atomically.
## 1.0.5+build.53 — 2026-08-25
### 🐛 Kit Items With Enchantments/Custom Names Were Silently Dropped on Every Boot
- If a kit item had saved enchantments, a custom name, or any other item data, it failed to load every single time the server started (you'd see "Failed to deserialize item entry in kit" in the log) — because kits were being loaded before the game's item systems were fully ready. Kits are now re-loaded once the server has actually finished starting, so this data isn't lost anymore.
## 1.0.5+build.52 — 2026-08-25
### 🐛 /pay Could Lose Money on a Very Unlucky Double Failure
- In the rare case where
/payfailed to credit the receiver AND the automatic refund back to the sender also failed, the sender's money vanished into nowhere. The refund now guarantees it lands back in the sender's account no matter what.
## 1.0.5+build.51 — 2026-08-25
### 🐛 /tpa Timeout Wasn't Thread-Safe
- Internal fix: the background timer that expires a
/tparequest after it times out could run into the same off-main-thread issue as several dashboard fixes below. No visible behavior change — just safer under real player load.
## 1.0.5+build.50 — 2026-08-25
### 🐛 /mail sendall, Config Saves, and Three More Dashboard Endpoints Made Thread-Safe
/mail sendall/sendtempallran on a background thread that could corrupt the shared mailbox if players were sending/reading mail at the same time. It now runs safely on the main thread.- Config files and mail data could be left truncated or corrupted if the server crashed mid-save. Saves are now atomic (write-then-rename) everywhere, matching how moderation data already worked.
- The dashboard's Statistics, Permissions, and Discord integration pages were reading live server state directly from the HTTP request thread instead of the main thread — same bug class as the vanish/jail/ban fixes further down, now fixed here too.
## 1.0.5+build.49 — 2026-08-25
### 🐛 AFK Detection and Discord Role-Sync Messages Made Thread-Safe
- The AFK system's movement-detection timer, and the chat message s
Starting from **v1.0.4** — earlier history (v1.0.3.x and before) is not carried over.
- Minecraft 1.21.1 – 1.21.11 · NeoForge 21.1.179+**
## 1.0.4+build.61 — 2026-08-17
### 🐛 Commands Now Logged to Console
- Every player command now gets logged to console/
latest.log(e.g. "PlayerName issued command:
Controlled by
logging.categories.commands.normal (on by default) — turn it off there if you'drather not see it.
## 1.0.4+build.60 — 2026-08-17
### 🐛 Clickable Player Names Were Ignoring Your Chat Colors
- If you had
chat.clickablePlayerNamesenabled (the default) and put a color code before
{neoessentials_username}/{neoessentials_displayname} in your chat format, the name itselfstill rendered white — the color simply wasn't being applied to it. Fixed; the name now picks
up whatever color comes before it in your template, same as any other part of the line.
## 1.0.4+build.59 — 2026-08-17
### 🐛 SDLink Discord Duplicates Actually Fixed Now
- Last update only warned you about SDLink's own native join/leave/chat/advancement messages
duplicates. Now NeoEssentials detects it automatically and stays quiet on its side, so a normal
SDLink install just works with no duplicate posts and no config editing needed.
- This only affects Discord messages — in-game chat is unaffected.
## 1.0.4+build.45 — 2026-08-17
### 🐛 Doubled Rank Prefix in Chat, Duplicate SDLink Join/Leave Messages
- Fixed a bug where players' rank prefix could show up twice in chat, e.g.
<[Owner] [Owner] PlayerName>. This happened when your permissions plugin (LuckPerms inparticular) formats names using Minecraft's own team system — the display name already had the
prefix in it, and the chat template added it again on top. No config changes needed.
- Fixed duplicate join/leave (and advancement) messages showing up in Discord for servers using
independently of NeoEssentials, and both were firing at once. You'll now get a clear warning in
your server log telling you exactly which SDLink setting to turn off if this affects you.
## 1.0.4+build.44 — 2026-08-13
### ✨ Per-Category Logging Configuration
- You can now control logging per-subsystem instead of all-or-nothing. New
logging.categories
config.json — 12 categories (chat, economy, permissions, teleportation,moderation, auction house, kits, web dashboard, Discord, config, commands, general), each with
its own
normal (routine messages) and debug (verbose troubleshooting output) switch.debug output goes to logs/debug.log, keeping your normal console/log clean.- If you had the old debug toggle on, it carries over automatically — every ca
- Minecraft 26.1.2 · NeoForge 26.1.2.76+**
All notable changes to this branch are documented here, starting from
- v1.0.4** — earlier history (v1.0.3.x and before, including the port's own
## 1.0.4-mc26.1.2+build.61 — 2026-08-17
### 🐛 Commands Now Logged to Console
- Every player command now gets logged to console/
latest.log(e.g. "PlayerName issued command:
Controlled by
logging.categories.commands.normal (on by default) — turn it off there if you'drather not see it.
## 1.0.4-mc26.1.2+build.60 — 2026-08-17
### 🐛 Clickable Player Names Were Ignoring Your Chat Colors
- If you had
chat.clickablePlayerNamesenabled (the default) and put a color code before
{neoessentials_username}/{neoessentials_displayname} in your chat format, the name itselfstill rendered white — the color simply wasn't being applied to it. Fixed; the name now picks
up whatever color comes before it in your template, same as any other part of the line.
## 1.0.4-mc26.1.2+build.59 — 2026-08-17
### 🐛 SDLink Discord Duplicates Actually Fixed Now
- Last update only warned you about SDLink's own native join/leave/chat/advancement messages
duplicates. Now NeoEssentials detects it automatically and stays quiet on its side, so a normal
SDLink install just works with no duplicate posts and no config editing needed.
- This only affects Discord messages — in-game chat is unaffected.
## 1.0.4-mc26.1.2+build.46 — 2026-08-17
### 🐛 Doubled Rank Prefix in Chat, Duplicate SDLink Join/Leave Messages
- Fixed a bug where players' rank prefix could show up twice in chat, e.g.
<[Owner] [Owner] PlayerName>. This happened when your permissions plugin (LuckPerms inparticular) formats names using Minecraft's own team system — the display name already had the
prefix in it, and the chat template added it again on top. No config changes needed.
- Fixed duplicate join/leave (and advancement) messages showing up in Discord for servers using
independently of NeoEssentials, and both were firing at once. You'll now get a clear warning in
your server log telling you exactly which SDLink setting to turn off if this affects you.
## 1.0.4-mc26.1.2+build.45 — 2026-08-13
### ✨ Per-Category Logging Configuration
- You can now control logging per-subsystem instead of all-or-nothing. New
logging.categories
config.json — 12 categories (chat, economy, permissions, teleportation,moderation, auction house, kits, web dashboard, Discord, config, commands, general), each with
its own
normal (routine messages) and debug (verbose troubleshooting output) switch....
Starting from **v1.0.3** — earlier history (v1.0.2.x and before) is not carried over.
- Minecraft 1.21.1 – 1.21.11 · NeoForge 21.1.179+**
## 1.0.3+build.78 — 2026-07-21
### 🐛 Vanish No Longer Makes Noise or Gets Noticed by Mobs
- Fixed vanished players still being audible — footsteps, splashes, etc. no longer play for
- Fixed hostile mobs still targeting and attacking vanished players — they're now ignored
- Vanished players can no longer hurt other players, interact with anything, or break/place
(
neoessentials.vanish.hurt/.interact/.build, or the neoessentials.vanish.* wildcardfor all three) rather than being tied to the "can see vanished players" permission.
- The "who can see who" rank system for vanish now uses proper permission nodes
neoessentials.vanish.priority.<number> — higher number wins, equal numbers can see eachother too) instead of a fixed list of group names, so it works with any permission setup,
not just the specific group names the mod used to expect.
## 1.0.3+build.77 — 2026-07-21
### 🐛 Fixed /sell Selling the Wrong Item at the Wrong Price
- Fixed
/sell handsometimes showing "minecraft:air" in the sale message and overcharging
- Server admins (OPs) and permission groups with a broad wildcard permission no longer
those now have to be granted on purpose. (Configurable if you actually want the old
behavior back.)
- Typing
/sellwith no arguments now sells whatever's in your hand, same as/sell hand. - Fixed a config file typo that could break Discord-login syncing on server start.
## 1.0.3+build.24 — 2026-07-18
### 🧹 Config Cleanup — Kit Commands Now Actually Run
- Removed a handful of dead/duplicate config settings that either did nothing or were
- Fixed:** the
commandslist on a kit (run when it's claimed, e.g. a welcome message)
- The service-account login option for external dashboards has been removed — use
/dashboard pair or /apikey create instead (see below).## 1.0.3+build.23 — 2026-07-18
### ✨ Economy Now Supports Third-Party Economy Mods
- Added support for [SG Economy API](https://www.curseforge.com/minecraft/mc-mods/sg-economy-api)
economy.useExternalEconomy: true in config.json if you'd rather players' balances livein that mod instead. Off by default.
- The mod's internal economy/permission interop system (used for advanced mod-to-mod
...
- Minecraft 26.1.2 · NeoForge 26.1.2.76+**
All notable changes to this branch are documented here, starting from
- v1.0.3** — earlier history (v1.0.2.x and before, including the port's own
## 1.0.3-mc26.1.2+build.78 — 2026-07-21
### 🐛 Vanish No Longer Makes Noise or Gets Noticed by Mobs
- Fixed vanished players still being audible — footsteps, splashes, etc. no longer play for
- Fixed hostile mobs still targeting and attacking vanished players — they're now ignored
- Vanished players can no longer hurt other players, interact with anything, or break/place
(
neoessentials.vanish.hurt/.interact/.build, or the neoessentials.vanish.* wildcardfor all three) rather than being tied to the "can see vanished players" permission.
- The "who can see who" rank system for vanish now uses proper permission nodes
neoessentials.vanish.priority.<number> — higher number wins, equal numbers can see eachother too) instead of a fixed list of group names, so it works with any permission setup,
not just the specific group names the mod used to expect.
## 1.0.3-mc26.1.2+build.77 — 2026-07-21
### 🐛 Fixed /sell Selling the Wrong Item at the Wrong Price
- Fixed
/sell handsometimes showing "minecraft:air" in the sale message and overcharging
- Server admins (OPs) and permission groups with a broad wildcard permission no longer
those now have to be granted on purpose. (Configurable if you actually want the old
behavior back.)
- Typing
/sellwith no arguments now sells whatever's in your hand, same as/sell hand. - Fixed a config file typo that could break Discord-login syncing on server start.
## 1.0.3-mc26.1.2+build.24 — 2026-07-18
### 🧹 Config Cleanup — Kit Commands Now Actually Run
- Removed a handful of dead/duplicate config settings that either did nothing or were
- Fixed:** the
commandslist on a kit (run when it's claimed, e.g. a welcome message)
- The service-account login option for external dashboards has been removed — use
/dashboard pair or /apikey create instead (see below).## 1.0.3-mc26.1.2+build.23 — 2026-07-18
### ✨ Economy Now Supports Third-Party Economy Mods
- Added support for [SG Economy API](https://www.curseforge.com/minecraft/mc-mods/sg-economy-api)
economy.useExternalEconomy: true in config.json if you'd rather players' balances livein that mod instead. Off by default.
- The mod's internal ec
- Minecraft 1.21.1 – 1.21.11 · NeoForge 21.1.179+**
## 1.0.2.6+build.480 — 2026-07-10
### 🐛 Bug Fixes
- ChestShop double chests:** Buy/sell, stock checks, and dynamic pricing only read
even with space/stock free on the other side. Now reads the full combined 54-slot
inventory.
- ChestShop admin shop holograms:**
/chestshop hologram enable|disable|move
UUID that admin shops don't have). Now authorized via
neoessentials.shop.create.admin.### ✨ Improvements
- Command feedback messages** now show a small
[NE]tag and use softer,
recognizable and easier on the eyes.
- NPC Shops:** Selling now actually works (previously configuring a sell price did
(
neoessentials.shop.use) before opening the shop menu. Added/npcshop respawn <shopId> to re-summon a shop's NPC if it's ever lost (e.g. voiddamage) without losing its configured listings.
### 🔧 Maintenance
- Build version string now includes the target Minecraft version
1.0.2.6-mc1.21.1+build.N), matching the 26.1.x port branch.> The entries below (build.~225 – build.~460) reconstruct work done between
> build.214 and build.480 that was never logged at the time. Build numbers are
> **approximate** — dates and content are accurate to the commit history.
## 1.0.2.6+build.~460 — 2026-07-08
### 🐛 Bug Fixes
/invseeedit,/ecedit:** Fixed the edit lock never releasing — the first use
yourself) until a server restart. Now releases on GUI close or disconnect.
/pay:** Fixed the amount and player name showing in swapped positions (e.g.
<player>$ to 1000.0" instead of "Paid 1000.00$ to <player>"), plus adecimal-formatting mismatch between the amount and fee/net values in the same
message.
/eco give|take|set|reset:** The admin's own confirmation message was missing
/eco take also never notified the target player that moneywas taken — now it does, matching
give/set/reset.- Localization:** fixed a
localize()overload ambiguity that silently shifted
{n} message placeholders across jail/ban/freeze/etc. messages. Also fixedswapped/missing arguments in several moderation messages, and a duplicate-broadcast
bug where staff saw every moderation action twice.
/jailwas completely broken** — every attempt threw an internal error before
null being passed where it wasn't allowed. Fixed.- Tablist:** fixed prefix/suffix silently reverting to blank after the first
### ✨ Features
- Added cuboid/sp
- Minecraft 26.1.2 · NeoForge 26.1.2.76+**
All notable changes to this branch are documented here, starting from where it
forked off
Dev-Builds to begin the Minecraft 26.1.2 port.> Build numbers below are approximate except build.482 (the real build counter
> isn't tracked in git for historical commits).
>
> **Known gap:** this branch hasn't yet merged several
Dev-Builds fixes from> 07-06/07-08 (after this branch had already forked) — including a
>
/jail-breaking NPE, permission precedence, kit and Auction House> duplication fixes, dashboard security hardening, and
/invseeedit//pay/>
/eco fixes. These need porting over separately.## 1.0.2.6+build.~330 — 2026-07-04
### 🎉 Port Started: Minecraft 26.1.2 / NeoForge 26.1.2.76
This branch forks from
Dev-Builds here to begin porting NeoEssentials toMinecraft 26.1.2. Mojang introduced a new versioning scheme with 26.1.2 and
NeoForge 26.1.2.76 carries substantial breaking API changes over 1.21.1 —
this is not a drop-in recompile.
### 🔀 Initial API Migration
Five commits mechanically migrating the codebase toward NeoForge 26.1.2.76 /
Minecraft 26.1.2 compatibility (reduced compile errors from 645 to 103):
ResourceLocation→Identifier renames, permission-level API changes,GameProfileCache replacement, teleportTo signature changes, ClickType→ContainerInput, the new WorldClock time API, inventoryarmor/offhand restructuring, registry/
CompoundTag Optional-wrappingchanges, and several other mechanical renames.
## 1.0.2.6-mc26.1.2+build.~460 — 2026-07-09
### 🚀 Milestone
The full Minecraft/NeoForge 26.1 API migration is complete — the mod compiles
and boots to "Done" with no exceptions on Minecraft 26.1.2 / NeoForge
26.1.2.76.
### 🔧 Maintenance
- Build version string now tags the target Minecraft version
1.0.2.6-mc26.1.2+build.N).## 1.0.2.6-mc26.1.2+build.482 — 2026-07-10
### 🐛 Bug Fixes
- ChestShop double chests:** Buy/sell, stock checks, and dynamic pricing only
inventory.
- ChestShop admin shop holograms:**
/chestshop hologram enable|disable|move
neoessentials.shop.create.admin.### ✨ Improvements
- Command feedback messages** now show a small
[NE]tag and use softer,
- NPC Shops:** Selling now actually works (previously only buying was
/npcshop respawn <shopId> to re-summon a lost shop NPC without losing itslistings.
- 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)
/powertooltogglenow actually works** — was checking a dead legacy class instead of the real per-player toggle- Dead
PowertoolToggleCommandclass 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.jsontablist sections - New
groupColors— colour player names by permission group in the header/footer &colour codes work everywhere in the file- New
/tablist configcommand shows a live settings summary /tablist infonow 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.jsonremoved /tablist reloadresets 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 inAdmin Shops** — Admin Shop on line 1 = unlimited stock, no chest requiredShops persist across restarts in neoessentials/shops.jsonFull 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## 1.0.2.5+build.908 — 2026-03-03
### ✨ 50+ New Commands
Player info, world interaction, teleportation, item customisation, admin tools, eco
...
## 🚨 CRITICAL UPDATE - Module Conflict Resolution + Teleportation Fix
- Build #750** | January 13, 2026 | MC 1.21.1 - 1.21.11 | NeoForge 21.1.179+ / 21.11.24-beta
This release fixes critical compatibility issues AND teleportation safety bugs!
## 🐛 Critical Fixes
### Unsafe Teleportation System - FIXED ✅
- The Problem:**
- Safety config options (
enableHomeTeleportSafety: false) didn't work - Mod blocked teleportation to "unsafe" locations even when safety was disabled
- Couldn't teleport to Nether ceiling, lava bases, intentional unsafe builds
- All teleportation types affected (homes, warps, spawn, TPA)
- The Solution:**
- ✅ Fixed safety check logic in HomeManager, WarpManager, SpawnManager
- ✅ When safety
true: Finds safe alternatives or blocks if none exist - ✅ When safety
false: Allows teleportation ANYWHERE (even dangerous spots) - ✅ Updated all config comments to clearly explain behavior
- ✅ Tested with Nether ceiling, void platforms, lava builds
- The Result:**
- 🎉 Full control over teleportation safety!
- 🎉 Advanced players can disable safety for legitimate use cases!
- 🎉 Nether ceiling farms work when safety is disabled!
- 🎉 Default behavior unchanged (safe by default for casual players)!
- Affected Config Options:**
json
"enableHomeTeleportSafety": false // Now works! Allows homes in lava, void, etc.
"enableWarpSafety": false // Now works! Allows warps at dangerous locations
"enableSpawnSafety": false // Now works! Allows spawn anywhere
"enableTeleportSafety": false // Now works! Allows TPA to unsafe locations
`
### Module Export Conflicts - RESOLVED ✅
- The Problem:**
- Server crashes with "Module neoessentials exports package..." errors
- Conflicts with: JadeAddons, SmoothChunk, SDLink, LetMeDespawn, and others
- Incompatible with Arclight/hybrid server platforms
- "Module neoforge reads more than one module named com.google.gson"
- The Solution:**
- ✅ Migrated from Shadow plugin to NeoForge's native JarJar system
- ✅ Removed Gson dependency (NeoForge already provides it)
- ✅ Properly isolated Java-WebSocket library
- ✅ Eliminated module-info.class conflicts
- ✅ No longer exports Minecraft/NeoForge packages
- The Result:**
- 🎉 Works with ALL tested mod combinations!
- 🎉 Compatible with Arclight & hybrid platforms!
- 🎉 Clean server startup every time!
- 🎉 No more module resolution errors!
- Technical Changes:**
- Build system: Shadow → JarJar
- Dependencies: Gson removed, Java-WebSocket isolated
- JAR structure: Optimized for NeoForge module system
- Module metadata: Cleaned up, no package exports
## 🎉 Previous Updates (v1.0.2.4)
### Chat Channels System
- FIXED:** Channels were configured but commands didn't exist!
/l, /g, /staff commands now workPrefix support: !message (global), @message` (staff)### Config Auto-Update System
- FIXE
- Build #698+** | January 6, 2026 | Minecraft 1.21.1 - 1.21.11 | NeoForge 21.1.179+ / 21.11.24-beta
## 🎯 Build #698 - Documentation & Final Polish
### 🛠️ Perfect Code Quality! ✨
- Achievement: ZERO Warnings! 🏆**
- Final fixes:**
- ✅ Performance: StringBuffer → StringBuilder
- ✅ Modern Java: .length() > 0 → !isEmpty()
- ✅ Clean code: Removed redundant suppressions
- ✅ Type safety: Fixed @Nullable annotations
- ✅ Simplification: Cleaner if statements
- Result:**
- 100% clean compilation
- Professional code standards
- Production-ready quality
### 🔇 Clean Logs Verified
Debug logging properly controlled by config - clean logs in production!
## 🎯 Build #680+ - LuckPerms & Quality Improvements
### 🏷️ LuckPerms Placeholders - Now Working! 🎉
All LuckPerms placeholders fixed and working perfectly:
- Available Placeholders:**
{luckperms_prefix}- Player's prefix{luckperms_suffix}- Player's suffix{luckperms_group}- Primary group name{luckperms_displayname}- Full formatted name
- Example Usage:**
json
{
"chat-format": "{luckperms_prefix}{neoessentials_name}: {MESSAGE}"
}
`
- Result:**
[Admin] PlayerName: Hello!
- What was fixed:**
- Placeholders now properly query LuckPerms API
- Enhanced debug logging for troubleshooting
- Full support for weighted prefixes/suffixes
### 🔇 Clean Logs - No More Console Spam! 🧹
- Removed 70+ lines of debug output per chat message!**
- New config option:**
`json
{
"logging": {
"enableDebugLogging": false
}
}
`
Set to true only when debugging issues, otherwise enjoy clean logs!
- What was cleaned:**
- Chat formatting debug (40+ lines → 0)
- Placeholder resolution (6 lines → 0)
- Permission queries (7 lines → 0)
- LuckPerms integration (20+ lines → 0)
### 🛠️ Code Quality - 31+ Fixes! ✨
- Professional, production-ready code:**
- ✅ 8 critical errors fixed
- ✅ 23+ warnings resolved
- ✅ Zero compilation errors
- ✅ Clean, maintainable codebase
- Major fixes:**
- Constructor issues
- File corruption repairs
- NPE protection
- Duplicate methods removed
- Resource handling improved
## 🎯 Build #627 - Critical Shutdown Fix
### 🔧 Server Shutdown Hang RESOLVED 🎉
- The Problem:**
Server would freeze forever when stopping/restarting:
`
[INFO] ThreadedAnvilChunkStorage: All dimensions are saved
[HANGS HERE - Never exits, requires force-kill]
`
- The Solution:**
Complete thread pool shutdown - server now exits cleanly in 10-30 seconds!
- What Was Fixed:**
- ✅ Economy system executors (balances, transactions, toggles)
- ✅ AFK detection schedulers (manager + movement detector)
- ✅ Ban cleanup scheduler
- ✅ Teleport request timeouts
- ✅ Dashboard HTTP server (5-second graceful shutdown)
- Result:**
- Server exits cleanly every time
- No more hanging on
/stopAll resources properly released Detailed shutdown logging
### 🛠️ New: Thread Diagnostics
- Automatic monitoring:**
``[INFO] Running thre
...