Skip to content

Releases: endixons/EndSectors

Release v1.7.4

03 Jan 22:18
a5eaf3e

Choose a tag to compare

🚀 EndSectors Update 1.7.4 | Global Market & Virtual Backpacks

📋 GENERAL OVERVIEW

Major overhaul of the storage, trade, and financial infrastructure. This update introduces a synchronized Global Market, a lease-based Virtual Backpack system, a robust Economy engine, and a network-wide player synchronization.


⚠️ MIGRATION & DEPLOYMENT (IMPORTANT!)

REDIS DATA WIPE REQUIRED: Due to a fundamental shift in the Redis HASH structure and data schema, you MUST perform a FLUSHALL or FLUSHDB on your Redis instance before booting v1.7.4. Failure to do so will result in unresolved connection states and legacy data corruption.

PROXY STABILITY FIX: This version introduces shaded and relocated Netty & Lettuce dependencies (pl.endixon.sectors.shadow.*) to prevent ClassLoader conflicts with the Velocity native transport layer.


🎒 VIRTUAL BACKPACK SYSTEM

Lease & Mechanics

  • Subscription Model: Page 1: Permanent. Pages 2-18: 7-day renewal cycle.
  • Financial Tracking: Real-time balance monitoring in GUI with dynamic color-coded coverage percentages.
  • Bulk Renewal: One-click fulfillment for all expired pages (Middle-Click/Shift).
  • Death Breach: 5% chance to drop items from unpaid pages on death with high-priority alerts.
  • Combat Integration: Automated access lockdown during active combat (CombatTag support).

Access & Administration

  • Command: /backpack – Main player interface for personal cloud storage access.
  • Command: /bpadmin <player/uuid> – Full remote audit suite for staff (inventory wipes, lease manipulation, and force-unlocks).

⚖️ GLOBAL MARKET SYSTEM

Trade & Management

  • Unified Bridge: Cross-server listing visibility and instant purchasing via NATS synchronization.
  • Segmented Profile: Dedicated windows for Active Offers, Claimable Deposits, and Expired Warehouses.
  • Real-time Monitoring: MarketBossBarTask alerts you when items are ready for pickup.
  • Command: /market – Opens the global trade interface.
  • Command: /sell <price> [amount] – List items directly from hand with automated category detection.

💸 ECONOMY & COMMANDS

Financial Engine

  • Vault Integration: Seamless economy management with high-precision double handling.
  • Command: /eco [player] – View balance with a modernized prefix (Adventure API).
  • Command: /pay <player> <amount> – Secure P2P transfers with minimum value validation (self-transfer strictly blocked).
  • Admin Actions: /eco <set/add/take> <player> <amount> – Full server-side financial control.

☁️ CLOUD PLAYER SYNC (Proxy)

Multi-Proxy Architecture

  • Global Player Count: Implemented ProxyCounterTask for network-wide synchronization across multiple proxy nodes using Redis HASH maps.
  • Optimized Sync: Task scheduled every 5 seconds to balance Redis performance with accurate player visibility.
  • Redis Integration: Each proxy reports its local state via proxyName from config.json to the central Redis database.
  • High Performance: ProxyPingListener fetches counts from a localized AtomicInteger cache, ensuring $O(1)$ latency during pings without blocking on Redis I/O.

🔧 TECHNICAL REFACTOR

Backend & Performance

  • NATS Protocol: Implementation of ExpirationNotify, Janitor, Update, and Notify listeners for cross-server sync.
  • Data Layer: BSON Schema migration (String-keys) for MongoDB POJO compatibility and repository warmup() logic.
  • Atomic Transactions: Prevention of balance/data desync during high-frequency bulk operations.

User Interface & Security

  • Adventure API Migration: Full MiniMessage implementation for modern gradients and Hex colors across all modules.
  • WindowUI v2: Advanced interaction state-machine (interactionAllowed) and Action Decorator pattern for secure event handling.

🔧 BUGFIXES

  • Paper Module: Removed redundant setCollidable(false) in PlayerLocallyJoinListener – arrows now deal damage correctly.
  • Tools Module:
    • Removed duplicated player-type check in onPlayerDamage – central PlayerTypeValidator now handles validation.
    • Added proper shutdown in onDisable() to clean up heartbeatHook and common resources (Common.getInstance().shutdown()).

⚠️ DEVELOPMENT NOTE

  • Configuration: Currently, Market, Economy, and Backpack settings (prices, limits, times) and Messages are hardcoded and not yet available in config.yml.
  • Stability: This version is production-ready. Configuration support and message localization will be introduced in v1.7.5, provided that no critical bugs are found.

🏗️ BUILD INFO

  • Java: 21 | Paper API: 1.21.4
  • Infrastructure: NATS, MongoDB, Redis, Vault
  • Manual Build: You can build the project manually using the provided Gradle wrapper:
./gradlew clean build

🔗 Full Changelog: v1.7.3...v1.7.4

Release v1.7.3

30 Dec 08:37
94394db

Choose a tag to compare

🚀 EndSectors 1.7.3

Logging improvements, exploit fixes & Paper 1.21.4 compatibility (Adventure API)


🧾 Overview

This release focuses on full migration to Adventure API across Paper and Tools modules, enhancing the logging system, and fully updating the project for Paper 1.21.4.

💡 Why Adventure API?

We have completely moved away from legacy String-based text handling. This change was necessary to:

  • Fix Font Issues: Resolved the "distorted/italic" font bug that occurred by default in Paper 1.21.4.
  • Modern Color Support: Native support for MiniMessage and HEX/RGB gradients without "stripping" colors or causing ParsingException.
  • Future Proofing: Following the latest Paper/Bukkit standards to ensure stability in future Minecraft updates.

The update improves stability, removes IDE/runtime warnings, and hardens the plugin against known and potential exploits across all project modules.


🔧 Technical Changes

🎨 UI & Text (Adventure API Migration - Paper & Tools)

  • Refactored ChatAdventureUtil (Tools module):
    • Rewrote parsing logic to safely handle mixed formats (MiniMessage, Legacy §, and Ampersand &).
    • Fixed ParsingExceptionImpl caused by legacy codes in modern strings.
    • Implemented automatic italic decoration removal to ensure clean, readable fonts in all GUIs and messages.
  • Modernized StackBuilder (Paper module):
    • Fully migrated displayName and lore to use Component API.
    • Fixed deprecated StackBuilder.type(Material) method.
  • WindowUI Improvements:
    • Updated inventory creation to use Component titles, removing deprecation warnings and ensuring 1.21.4 compatibility.

🛡 Exploit Fixes & Protection (Paper module)

  • Anti-Duplication: Added preventive protection against item duplication exploits involving dispensers, sticky mechanics, and shulker boxes.
  • Shulker Protection: Added listener to prevent interacting with shulker boxes inside sector border distance (works silently).
  • Projectile Fix: Corrected ProjectileLaunchEvent handling to safely check shooter type, preventing ClassCastException from non-player entities.

🧪 Serialization, Logic & Cleanup

  • Legal & Documentation: Added missing Non-Commercial License (2025) headers to all source files to protect intellectual property.
  • Potion Effects: Refactored PlayerDataSerializerUtil to use the new registry-based API compatible with Paper 1.21+.
  • SendSectorInfoTask: Replaced static instance usage with proper field-based paperSector instance.
  • General Code Cleanup: Applied various minor formatting fixes (e.g., knockBorder logic), cosmetic code improvements, and simplified internal logic.

🪵 Logging & Diagnostics

  • Structured Logging: Added LoggerUtil.warn(String, Throwable) and replaced all printStackTrace() calls with proper logging.
  • TPS Monitoring: Updated TpsUtil to log exceptions properly with a safe 20.0 TPS fallback.

⚙️ Build & Compatibility

  • Updated Gradle to paper-api:1.21.4-R0.1-SNAPSHOT.
  • Project fully compatible with Paper 1.21.4 and the latest Bukkit/Paper registry-based APIs.

📦 Requirements

  • Paper: 1.21.4
  • Java / JDK: 21

📥 Local Build

./gradlew clean build

Release v1.7.2

29 Dec 09:37
75a9ed8

Choose a tag to compare

feat(tools/config + refactor): load config + clean deprecated methods

  • Add ConfigLoader in tools module to load configuration from config.json (MongoDB host, port, db, etc.)
  • Refactor StackBuilder and WindowUI to use MiniMessage for text formatting
  • Update StackBuilder methods (durability, name) to handle new item meta
  • Remove deprecated methods and improve code readability across Paper, Proxy, and Tools modules

Full Changelog: v1.7.1...v1.7.2

Release v1.7.1

29 Dec 08:45
1074149

Choose a tag to compare

refactor: enhance code readability, logging, null safety, and heartbeat logic

  • Add NotNull annotations to method parameters in HomeCommand.java and RandomTPCommand.java to improve null safety.
  • Refactor CommonHeartbeatHook: introduce isCommonOffline() for clearer offline checks and more robust heartbeat handling.
  • Simplify and standardize logging messages in TeleportToSectorListener.java, InfrastructureIntegrityListener.java, and other classes; convert non-English log messages to English for consistency.
  • Remove unused variables, fields, and methods in UserProfileCache.java and SectorQueueRegistry.java to clean up the codebase; remove the unused constructor in UserProfileCache for clarity.
  • Remove unused dispatchers map in NatsManager to reduce memory overhead and simplify code.
  • Improve code formatting and remove unnecessary line breaks across multiple files for enhanced readability.
  • Update project version in build.gradle.kts from 1.7.0-SNAPSHOT to 1.7.1-SNAPSHOT to reflect the latest changes and prepare for release.

Full Changelog: v1.7.0...v1.7.1

Release v1.7.0

28 Dec 20:13
d0d042d

Choose a tag to compare

build: release 1.7.0 and CI improvements

  • Promoted version to stable (removed BETA tag).
  • Integrated Dependabot for dependency management.
  • Fixed release workflow to filter out only redundant JARs (sources/javadoc) without touching the main fat JAR.
  • Disabled empty root project JAR generation to prevent accidental uploads.
  • Ensured main application JAR keeps full size to avoid Netty/Lettuce runtime issues.

1.6 FIX

27 Dec 00:23

Choose a tag to compare

EndSectors v1.6 - FIX Release Notes

⚠️ Warning: Experimental version; some features may still be unstable.
Minimum Minecraft version: 1.20


🆕 Major Updates

Major Update: Separate Common Service & Server Failure Handling

  • Common is now a standalone service required for all proxy and sector servers.
  • Proxy and Paper servers check Common availability on startup:
    • Proxy blocks players if Common is unavailable.
    • Paper servers fail to start properly without Common.
  • Runtime failure handling:
    • Proxy: Does not shut down; kicks players, blocks new logins, updates MOTD to maintenance, logs errors on lost Common.
    • Paper servers: Detect loss of Common and immediately shut down to prevent player data corruption.
  • Summary: Gameplay impossible without Common running; servers behave to protect data.

Configuration System Update

  • Config creation now uses Gson instead of Jackson.
  • Improves performance and consistency across proxy and sector modules.

Messaging & Redis Refactor

  • Centralized Redis and NATS initialization in Common module:
    • Moved Redis and NATS initialization from individual modules to Common.
    • Added initInstance() to safely initialize the singleton.
    • Added detailed logging for Redis and NATS initialization and shutdown.
    • Simplified shutdown logic with proper logs.
  • Removed Redis-based packet publishing/subscribing.
  • Redis retained only for player data caching.
  • Integrated NATS for inter-server messaging and packet handling.
  • Messaging is now sector-specific and more efficient.
  • Redis Fix: Fixed Lettuce epoll issue on Linux/VPS that prevented Redis connections in the Common application.

Messaging & Config Fixes

  • Fix: Missing channel/show messages in MessageLoader.
  • Added missing CHANNEL_* and SHOW_* message keys.
  • Fixed configuration desync caused by outdated message.json.

Tools & Homes Update

  • Restriction on creating homes in the SPAWN sector:
    • Users can no longer create homes in the SPAWN sector.
    • Updated Home GUI to prevent adding new homes in restricted sectors.
    • Teleportation and GUI updates remain functional for existing homes.
  • User & Inter-Sector Homes:
    • Added User management module with MongoDB integration.
    • Implemented cross-sector home system.
    • Fixed /spawn command for inter-sector teleportation.
    • Fixed /randomtp command for inter-sector teleportation.
  • TODO: Add cooldown task for /home.

Paper Module Update

  • Added SectorsAPI class for plugin and sector interaction:
    • Provides singleton access to the PaperSector plugin instance.
    • Methods for teleportation, random locations, and user retrieval.
    • Access to SectorManager and async user fetching.
    • Logs initialization on startup.

💬 Discord Support

Join our official Discord server for support and updates: dsc.gg/endsectors


This release improves infrastructure and communication between modules.
Gameplay now requires the Common service to be running first; without it, plugins will not start.

Recommended startup sequence

  1. Common – start the core service first:
    java -jar common-1.6-BETA-all.jar
  2. Proxy – start the proxy server next.
  3. Sectors – start the sector servers (PaperSpigot).

The order must be:
Common → Proxy → PaperSpigot

Additional Improvements

  • General optimizations across all modules for performance and stability.
  • Fixed minor bugs and corrected inconsistencies in various systems.
  • Enhanced logging and error handling for better maintainability.
  • Internal code refactoring to simplify workflows and improve efficiency.

1.5

15 Dec 12:34
f39fdad

Choose a tag to compare

1.5

EndSectors v1.5 Release Notes

⚠️ Warning: Testing version, may contain minor issues.
Minecraft minimum version: 1.20

🆕 Changes & Improvements

  • Removed MongoDB; user data now stored in Redis (Lettuce).
  • Replaced previous Redis client (Redisson) with Lettuce for better performance; publish/subscribe and packet sending logic completely rebuilt.
  • Added SectorsAPI class to expose sector management, teleportation, and utility methods for plugins.
  • Improved sector handling: faster transfers, better synchronization, and bug fixes.
  • Added method to check if a sector is full (isSectorFull) so plugins can handle full sectors properly (e.g., show title, knock border, or prevent entry).
  • Queue system updated: properly fetches lastSector and handles first join logic.
  • Player creation logic fixed: new users are correctly initialized, and first join random teleport works properly.
  • Movement listener (MoveListener) logic fixed: sector checks and teleport triggers now function correctly.
  • Scoreboard system added: configurable via plugin config, can be enabled or disabled.
  • Hex color support added: action bars, boss bars, /ch and /sektor show commands, and nearly all player messages now support hex colors.
  • Several API and internal methods optimized to reduce unnecessary async calls and improve reliability.
  • General code optimizations to enhance sector synchronization and overall performance.
  • New Gradle module tools added with example plugin demonstrating usage of SectorsAPI:
    • /randomtp command for teleporting to a random location in a sector.
    • /spawn command for teleporting to the spawn sector.

1.4

07 Dec 15:02

Choose a tag to compare

1.4

EndSectors v1.4 Release Notes

⚠️ Warning: Testing version, may contain minor issues.
ℹ️ Requirements: Redis and MongoDB must be installed and running.
Minecraft minimum version: 1.20

🆕 Features

  • Queue system fully integrated with Redis, cache, and async communication.
  • Players joining QUEUE sectors are handled correctly: first join actions and random teleport skipped.
  • UserFlagCache singleton added for proxy-side caching (existence, request state, last sector).
  • Redis communication packets:
    • PacketUserCheck (query from Proxy → Paper)
    • PacketUserCheckListener (Paper, fetches user data async and responds via Redis)
    • PacketUserCheckProxyListener (Proxy, updates cache and queues players)
  • LastSectorConnectListener handles players connecting to QUEUE: removes from previous queues, polls Paper for user data.
  • GUI improvements:
    • WindowUI and WindowHolder fixed.
    • Inventory click events properly trigger actions.
    • Heads, TPS, online counts, and sector info display correctly.

🛠 Bugfixes & Improvements

  • Async database fetching for user data.
  • TPS display and scoreboard fixed with legacy color codes.
  • First join skipped in QUEUE sectors.
  • Cooldowns between transfers enforced.
  • General code cleanup and scheduler improvements.