The Endex
PluginLicenseRef-All-Rights-Reserved

The Endex

The Endex is a Minecraft plugin that turns resources into a dynamic stock market driven by player supply and demand.

200
Downloads
1
Followers
3 months ago
Updated
📦
21
Versions

📖About The Endex

The Endex 1.5.8-JAN80235 | Dynamic Market & Addons [1.20.1 - 1.21.x]

The Endex Banner

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.

Discord Documentation


About

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, setmax now persist properly!

Features

💰 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.

Market GUI Demo
📸 Screenshots
Screenshot 1 Screenshot 2

⚡ Market Events

Time-boxed price multipliers (Ore Rush, Market Crash, etc.) with server broadcasts.

Market Events Demo

🌐 Web Dashboard

Optional REST API with live updates, charts, item icons, and trading from your browser.

Web Dashboard Demo

🔌 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.

bStats

Commands
/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

Permissions
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_CATEGORY state 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-holdings endpoint 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 market command respects shop.mode config 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 holdings to 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.holdings and theendex.withdraw (both default: true)
  • Configurable limits: holdings.max-per-player (default 10,000) and holdings.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/deliveries endpoints
  • 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.

Discord

Join our Discord!