ENightMarket | Valorant-Style Personalized Night Market
Revitalize your server's economy and player engagement with a revolutionary concept! ENightMarket brings the "Night Market" mechanic from popular FPS games to your Paper 1.21.4 servers as a modern, fully schedulable, and highly immersive experience.Forget boring inventory menus. ENightMarket visualizes personalized, limited-time discounted offers directly in the game world. Add a premium feel to your server with glowing, interactive items that smoothly float around your players.
Core Features
Groundbreaking Visual Experience (Next-Gen)
- Modern Display Entity Infrastructure: Instead of clunky Armor Stands, it utilizes the modern Paper API's ItemDisplay, TextDisplay, and Interaction entities. Maximum performance, zero lag.
- Smooth Motion Tracking: Smoothly tracks the player who opened the market (with a natural bobbing animation). Features a Yaw-locked
- Per-Player Isolation: Each player only sees their own market and offers. It creates absolutely no visual clutter or performance drops for other players.
Immersive Reveal Animation
- Rarity-Based Custom Heads: Items initially appear "sealed" as custom-designed heads based on 4 rarity levels (COMMON / RARE / EPIC / LEGENDARY).
- Right-Click Interaction: When a player right-clicks a sealed head, the real, discounted item is revealed with a sweet explosion particle effect and sound.
- Persistent Reveal State: Bir öğe ortaya çıkarıldıktan sonra, pazar süresi boyunca ortaya çıkarılmış olarak kalır; oyuncu pazarı kapatıp tekrar açsa bile animasyon tekrarlanmaz.
Advanced Economy & RNG System
- Weighted RNG: Define specific weights for each item in the pool to have full control over the drop rates of your rarest items.
- Dynamic Discount Algorithm: Completely random and fair discounts are applied based on the min-max percentage range set in the config for each item.
- CustomModelData Support: Fully supports Custom Model Data for both the floating ItemDisplay visuals and the final reward ItemStack given to the player.
- Lore Integration: Item lore lines defined in the config are perfectly displayed on the floating holograms (TextDisplay).
Automation & Management
- Advanced Scheduler: Server owners can set automatic event start times for a specific day and hour (e.g., Friday 20:00) and automatic closing times (e.g., close after 24 hours) directly via config.
- Async Discord Webhook: When an event starts or a player makes a purchase, it asynchronously sends a stylish, color-coded Embed message to your Discord channel without affecting the main server thread.
- Local Data Storage: Player data and market schedules are safely stored in YAML files. No external MySQL database setup is required.
Fluid Interaction Mechanics
- Shift-to-Close: To close the market, the player simply presses the Sneak (Shift) key; the floating market instantly disappears with a smoke effect.
- Chest GUI Start: When players type /enightmarket, they are greeted with a sleek, single-button Chest GUI to easily spawn the market into the physical world.
Trilingual System (English/Turkish/German)
ENightMarket comes out of the box with full multi-language support for global servers.- Built-in Languages: English (EN), Turkish (TR), German (DE).
- Player Preference: Players can change their own language using the /enightmarket lang <code> command, and their preference is saved persistently.
- Localized PlaceholderAPI: Status and time-remaining placeholders are automatically localized based on the player's selected language.
PlaceholderAPI Integration
Extensive placeholder support for your scoreboards, chat formats, or menus:- %enightmarket_active% -> true / false
- %enightmarket_status% -> Active / Closed (Localized based on language)
- %enightmarket_next_open_day% -> FRIDAY (or "Every day")
- %enightmarket_next_open_time% -> 20:00
- %enightmarket_next_open_date% -> 07/06 20:00
- %enightmarket_time_remaining% -> 2d 5h 30m
Commands & Permissions
| Command | Description | Permission |
| /enightmarket | Opens the GUI to spawn the market in the physical world. | enightmarket.use |
| /enightmarket lang | Changes personal language (en, tr, de). | enightmarket.lang |
| /enightmarket start | Manually starts the event instantly & notifies Discord. | enightmarket.admin |
| /enightmarket stop | Stops the event, clears playerdata & notifies Discord. | enightmarket.admin |
| /enightmarket reload | Reloads config and language files. | enightmarket.admin |
- Aliases: /nightmarket, /gp, /nm, /gece, /gecepazari
Installation & Requirements
Requirements:
- Paper 1.21.4 (or compatible forks) is strictly required for Display Entities.
- Vault + An Economy provider (EssentialsX, CMI, etc.) is required.
- (Optional) PlaceholderAPI (For placeholder support).
Installation Steps:
- Download: Download the ENightMarket.jar file.
- Place: Drop the JAR file into your server's plugins/ folder.
- Start: Start the server. The plugin will generate the config.yml and lang/*.yml files.
- Configure: Set up your discord-webhook-url, schedule.enabled, and default-language in plugins/ENightMarket/config.yml. Add your custom items to the config pool.
- Reload: Use /enightmarket reload in-game or console to apply settings.
- Enjoy: Test the event with /enightmarket start or wait for your scheduled time!
Architecture & Developer Details
The plugin features a clean, modular, and high-performance codebase:- DI (Dependency Injection): Uses dependency injection for clean code and easy scalability.
- Clean Separation: Commands, data management, language system, economy hooks, scheduler, and visual mechanics are handled in strictly separated modules.
- YAML Data Infrastructure: Uses lightweight and reliable YAML files for PlayerMarketData and scheduler states.
Dependencies:
- Paper API 1.21.4-R0.1 (Provided)
- Vault API 1.7 (Provided)
- PlaceholderAPI 2.11.6 (Provided - soft depend)
