The Endex 1.5.8-JAN80235 | Dynamic Market & Addons [1.20.1 - 1.21.x]
Bring a living economy to your server. Prices move with player demand and supply, with a slick Market GUI, timed events, optional web dashboard, virtual holdings system, and an addon framework.
The Endex is a dynamic economy plugin that brings realistic market mechanics to your Minecraft server. Prices fluctuate based on player trading activity, server-wide item storage, and random market events.
🆕 Version 1.5.8-JAN80235 Highlights:
- 🛡️ Anti-Exploit Protection System — 4-layer defense prevents infinite money exploits!
- 💰 6% Buy/Sell Spread — Creates friction cost that blocks profitable arbitrage loops!
- ⏱️ 60-Second Sell Cooldown — Prevents instant buy→sell flipping after purchases!
- 📉 Price Mean Reversion — Manipulated prices drift back to base during idle periods!
- 🔄 Config Auto-Update — Automatically migrates old configs while preserving your settings!
- ⚡ Zero Performance Impact — All protections use <0.01% CPU overhead!
What's Protected:
- ✅ Buy-Sell Arbitrage — Can't buy low and sell high for instant profit
- ✅ Price Manipulation — Prices automatically correct when manipulation stops
- ✅ Instant Flipping — Must wait 60 seconds after buying before selling
- ✅ Your Economy — Fair, balanced gameplay for all players
Previous Version (1.5.8-JAN70109):
- 🔧 Shop Editor Fixes — Fixed deleteCategory() and saveShopChanges() not working properly!
- 🌐 Language Files — Added shop-editor language section to Korean, Russian, Portuguese, and Chinese translations!
- 🔐 Permissions Fix — Added missing shop editor and web dashboard permissions to plugin.yml!
Earlier 1.5.8 Features:
- Inflation System — New configurable inflation/deflation system with per-category rates!
- Market Items Manager — New editor button to view/edit all market items in one place!
- Price Editor Fix — Fixed vanilla item price editing in the market editor!
- Admin Commands Fixed —
/market remove,disable,setbase,setmin,setmaxnow persist properly!
💰 Dynamic Pricing
Prices react to demand/supply with configurable sensitivity, EMA smoothing, and per-item min/max caps.
🌍 World Storage Scanner
Prices adapt to global item quantities across ALL server storage. Abundant items drop in price; scarce items rise.
📦 Virtual Holdings
Buy items into virtual storage with average cost tracking and profit/loss display. Withdraw when ready.
🖥️ Market GUI
Beautiful interface with categories, search, sorting, quick buy/sell buttons, and real-time price charts.
📸 Screenshots
⚡ Market Events
Time-boxed price multipliers (Ore Rush, Market Crash, etc.) with server broadcasts.
🌐 Web Dashboard
Optional REST API with live updates, charts, item icons, and trading from your browser.
🔌 Addon Framework
Extensible API for custom addons with command routing and web integration.
📬 Delivery System
Overflow protection when inventory or holdings are full. Claim items anytime.
🔗 PlaceholderAPI Support
30+ placeholders for scoreboards, holograms, tab lists, and more. Display prices, trends, holdings, leaderboards, and market stats anywhere.
📊 bStats Metrics
Anonymous usage statistics to help improve the plugin.
/endex help - Show help menu
/endex version - Display plugin version
/market - Open market GUI
/shop - Alias for /market
/m, /trade, /exchange - Additional market aliases
/market buy <item> <amt> - Purchase items
/market sell <item> <amt>- Sell items
/market price <item> - Check current price
/market top - View top traded items
/market holdings - View your virtual holdings
/market withdraw <item> - Withdraw items to inventory
/market withdraw all - Withdraw everything
/market sellholdings <item> <amt> - Sell directly from holdings
/market delivery list - View pending deliveries
/market delivery claim - Claim delivered items
/market delivery gui - Open delivery GUI
/market invest buy <item> <amount>
/market invest list
/market invest redeem-all
/market event list - View active events
/market event <name> - Start an event (admin)
/market event end <name> - End an event (admin)
/market event clear - Clear all events (admin)
# Namespaced commands also work:
/endex:shop, /endex:market, /endex:m
theendex.market - Access market GUI (default: true)
theendex.buy - Purchase items (default: true)
theendex.sell - Sell items (default: true)
theendex.holdings - Access holdings system (default: true)
theendex.withdraw - Withdraw from holdings (default: true)
theendex.invest - Use investments (default: true)
theendex.admin - Admin commands (default: op)
endex.shop.editor - Access shop editor (default: op)
endex.shop.admin - Shop admin commands (default: op)
endex.web.trade - Web dashboard trading (default: true)
endex.web.admin - View other players' holdings (default: op)
📋 Requirements
- Server: Paper/Spigot 1.20.1 - 1.21.x
- Java: 17 or higher
- Economy: Vault + Economy plugin (EssentialsX, CMI, etc.)
💾 Storage Options
- YAML (default) or SQLite database
- Automatic backups and safe reloads
- CSV price history export
Configuration Highlights
Virtual Holdings:
holdings:
enabled: true
max-per-player: 10000
max-materials-per-player: 100
mode: VIRTUAL
World Storage Scanner:
price-world-storage:
enabled: true
scan-interval-seconds: 300
sensitivity: 0.01
global-baseline: 1000
containers:
chests: true
barrels: true
shulker-boxes: true
anti-manipulation:
per-chunk-item-cap: 10000
per-material-chunk-cap: 5000
min-tps: 18.0
Inventory-aware pricing:
price-inventory:
enabled: true
sensitivity: 0.02
per-player-baseline: 64
max-impact-percent: 10.0
Web combined holdings:
web:
roles:
default: TRADER
trader-permission: endex.web.trade
admin-view-permission: endex.web.admin
holdings:
inventory:
enabled: true
include-enderchest: false
cache-seconds: 15
Compatibility
- Server: Paper/Spigot 1.20.1 to 1.21.x
- Java: 17 runtime
- Economy: Vault (soft dependency)
Data & Reliability
- YAML storage in the plugin folder by default; optional SQLite database
- Periodic backups and orderly saves; safe reload reschedules tasks cleanly
- Atomic CSV export to
plugins/TheEndex/history - Holdings operations use atomic transactions to prevent duplication exploits
API & Addons
- Public API service for other plugins:
org.lokixcz.theendex.api.EndexAPI - Addon loader with command routing and aliasing
- Customizable Web UI override (
web.custom.*) – export default index.html and modify
Changelog
📜 Full Changelog
New in 1.5.8-JAN70109:
- Shop Editor deleteCategory() Fix: Delete category button now properly calls
CustomShopManager.removeCategory()instead of showing "coming soon" - Shop Editor saveShopChanges() Fix: Save button now properly calls
CustomShopManager.reload()instead of only playing a sound - Language Files: Added shop-editor language section (~60 keys) to Korean, Russian, Portuguese, and Chinese translations
- Permissions Fix: Added missing permissions to plugin.yml:
endex.shop.editor,endex.shop.admin,endex.web.trade,endex.web.admin
New in 1.5.8-JAN60132:
- Shop Editor Category Fix: Fixed "Create Category" dialog in the shop editor not responding to clicks
- Clicking compass (Filter mode) or chest (Manual mode) icons now properly creates new categories
- Added
CREATE_CATEGORYstate tracking and proper click handling flow - Categories now persist immediately to shop YAML config files
New in 1.5.7-dec1038:
- Polish Language Support: Complete Polish (Polski) translation for plugin and documentation
- Config Translations Auto-Extract: 10 language configs now auto-extract to
plugins/TheEndex/config_translations/on first run - Optimized Default Configuration: Ships with minimal resource usage settings by default
- World storage scanning DISABLED by default (easily re-enabled for full features)
- Inventory-based pricing DISABLED by default
- Save-on-each-update DISABLED by default (reduced disk I/O)
- Update interval increased to 120 seconds (was 60)
- Prominent optimization guide added to top of config.yml
New in 1.5.7-dec1022:
- Web Dashboard Translation: Google Translate integration for 26+ languages
- GUI Bug Fix: Fixed ArrayIndexOutOfBoundsException when middle-clicking items in market details
- Performance Indicators: Config options now show
[PERF: LOW/MEDIUM/HIGH]impact tags - Translated Configs: Pre-translated config files in 9 languages (Chinese, Spanish, French, German, Japanese, Korean, Portuguese, Russian, Arabic)
- Market GUI: Increased details inventory size from 27 to 36 slots to fix button placement
New in 1.5.7:
- Sell from Holdings: Sell items directly from virtual holdings without withdrawing to inventory first
- Arclight/Hybrid Server Compatibility: Fixed plugin recognition, SLF4J logging, ServiceLoader, and clickable chat links
- Market GUI: Item details now shows "Inventory: X | Holdings: Y" with new sell buttons (slots 33 & 35)
- Custom Shop GUI: Vanilla items can now be sold from holdings when inventory is insufficient
- Web API: New
POST /api/sell-holdingsendpoint for web dashboard selling - New Command:
/market sellholdings <material> <amount>
New in 1.5.6:
- Minecraft 1.20.1+ Compatibility: Lowered api-version from '1.21' to '1.20' to restore support for 1.20.1+ servers (Arclight, etc.)
- In-Game Layout Editor: Complete visual GUI editor for custom shop layouts — no config editing required!
- Custom Items Support: Add any material as decoration with personalized names and lores
- 5 Editor Modes: Place Category, Place Decoration, Place Button, Edit Slot, Remove Slot
- Right-Click Editing: Customize item names and lores via chat prompts
- Real-Time Preview: See changes instantly before saving
- One-Click Save: Save layouts directly to shop config file
- Custom Category Icons: Categories display custom names/lores in /market
New in 1.5.5:
- Economy Plugin Compatibility: Fixed "Economy unavailable" error with late-loading economy plugins (SimpleEconomy, etc.)
- Added delayed retry (2 seconds) for economy provider detection
- Economy plugins that register with Vault after TheEndex loads are now properly detected
- Added common economy plugins to softdepend list to improve load order
New in 1.5.4:
- bStats Metrics: Plugin analytics with custom charts (storage mode, shop mode, web UI, holdings, item count)
- Custom Shop Enhancements: Holdings button (slot 45) and Sort button (slot 53) in category pages
- Filter-Based Categories: Auto-populate shop categories using material filters instead of manual item lists
- Default GUI Improvements: Removed Amount button, Sort moved to slot 49, cleaner layout
- Fixed: Hotbar interaction no longer blocked while GUI is open
- Fixed: Sort order now correctly shows highest prices/changes first (descending)
- Fixed: Holdings button in Custom Shop now properly opens holdings panel
- Fixed:
/ex marketcommand respectsshop.modeconfig setting
New in 1.5.3:
- PlaceholderAPI Integration: 30+ placeholders for prices, trends, holdings, leaderboards, and stats
- Update Checker: Automatic notifications on startup and OP join when updates available
- GUI Customization: Per-GUI config files for layout, colors, slot positions, and categories
- Command Aliases: Create custom shortcuts (e.g.,
/shop→/market) via commands.yml - Full documentation available at https://lokixcz-plugins.kagsystems.tech/
New in 1.5.2:
- Optimized World Storage Scanner: Complete rewrite with intelligent chunk caching and dirty tracking
- Chunk-level caching with configurable expiry — 80-90% reduction in redundant scanning
- Event-driven dirty tracking — only re-scans chunks where containers were modified
- Disk persistence for cache data across server restarts
- GUI Fix (MC 1.21+): Fixed critical bug where market items could be taken and clicks weren't registering
- UUID-based GUI state tracking replaces unreliable title matching
New in 1.5.1:
- World Storage Scanner: Prices now react to ALL items stored on your server (chests, barrels, shulker boxes, etc.)
- Global item tracking for true server-wide scarcity economics
- Anti-manipulation protection: per-chunk caps, per-material limits, suspicious activity logging
- TPS-aware throttling: scanner skips if server is under load
- Double chest deduplication prevents double-counting
- Nested shulker content scanning (items inside shulkers in chests)
- Configurable container types and world exclusions
New in 1.5.0:
- Virtual Holdings System: Complete redesign where purchased items go into virtual holdings instead of inventory
- Holdings GUI: New panel showing all holdings with quantity, avg cost, current price, and profit/loss
- Holdings Commands:
/market holdingsto view,/market withdraw <item> [amount]to claim items - Web UI Withdraw: Withdraw buttons on each holding row plus "Withdraw All" button
- Minecraft 1.21 Support: Full compatibility with Minecraft 1.21.x servers
- New permissions:
theendex.holdingsandtheendex.withdraw(both default: true) - Configurable limits:
holdings.max-per-player(default 10,000) andholdings.max-materials-per-player(default 100)
New in 1.4.0:
- Virtual Delivery System: overflow purchases now enter a pending delivery queue
- Delivery Commands:
/market delivery list|claim|claim-all|gui - Web + API updates: new
/api/deliveriesendpoints - Fixed buy loop issue on 1.20.1 servers
New in 1.3.x:
- Inventory capacity checked before charging; oversized orders capped
- Security hardening: removed reflective access, session token moved to Authorization header
- Hashed API token support via
web.api.token-hashes(SHA-256)
See CHANGELOG.md for full release notes.
⚠️ Disclaimer
This plugin was created with the help of AI. While thoroughly tested, please expect potential bugs or issues. Report problems on Discord or GitHub.



