promotional bannermobile promotional banner

Jvips

JVIPS — VIP System with Vouchers for Hytale

File Details

Jvips-1.3.0.jar

  • R
  • Feb 13, 2026
  • 2.38 MB
  • 50
  • Early Access

File Name

Jvips-1.3.0.jar

Supported Versions

  • Early Access

JVIPS — Changelog

All notable changes to this project will be documented in this file.


v1.3.0 — Command Vouchers

Single-use vouchers that only execute commands — no VIP, no duration, no persistence.

✨ Added

  • Command Voucher System — new voucher type for running server commands via items
  • Separate config file command_vouchers.json — independent from vips.json
  • No HMAC — simplified system without cryptographic overhead
  • No data persistence — nothing written to players.json or history.json
  • Never blocked by active VIP — works regardless of player's VIP status
  • Any item ID — supports custom items (Jvips_Voucher2, etc.) for different visuals
  • UUID-bound — non-transferable, same security as VIP vouchers
  • Drop-blocked — cannot be thrown on the ground
  • New command /vips givecmd <id> <player> — delivers a command voucher (requires jvips.admin)
  • New messages:
    • commandvoucher.received — player notification on receiving a command voucher
    • commandvoucher.activated — player notification on activation
    • error.invalidCommandVoucher — unknown command voucher ID
    • error.commandVoucherNotLoaded — config not loaded
    • admin.givecmd.ok — admin confirmation after delivery
  • Full localization in en_US, pt_BR, and es_ES
  • Reloaded automatically via /vips reload

🔧 Changed

  • JvipsVoucherInteraction — detects jvips:type = "command_voucher" and routes to separate handler
  • VoucherDropBlockSystem — now blocks both vip_voucher and command_voucher types
  • VoucherUseListener — recognizes both voucher types
  • VipCommandService — new public dispatchCommand(String) method for command vouchers
  • VipsCommand — registered /vips givecmd subcommand
  • JvipsPlugin — loads and reloads command_vouchers.json on startup and /vips reload
  • admin.help messages updated with /vips givecmd in all 3 languages

📁 New Files

File Description
CommandVoucherDefinition.java Model: id, displayName, voucher spec, commandsOnActivate
CommandVoucherConfig.java Loader for command_vouchers.json
CommandVoucherItemFactory.java Creates items with jvips:type = "command_voucher" metadata
VipsGiveCmdCommand.java /vips givecmd admin command
command_vouchers.json Default config with hunterquest example

💡 Use Cases

  • Quest starters — teleport player to quest area
  • Kit delivery — give items via commands
  • Event access — run permission commands
  • Reward coupons — execute any server command
  • Teleport tokens — tp to specific locations

v1.2.0 — Stacking, Custom Duration & Smart Config Merge

✨ Added — Voucher Stacking

  • New stackable (boolean) and stackAmount (int) per-VIP in vips.json
  • Using a voucher of the same VIP type extends the active duration instead of being blocked
  • stackAmount: 0 = unlimited stacking; any other value = max extensions allowed
  • Stack count tracked per player in players.json
  • Works with both voucher activation (Right Click) and /vips add
  • New messages: player.vipStacked, error.stackLimitReached

✨ Added — Custom Duration

  • New --duration flag for /vips givekey and /vips add
  • Compact format: 1d2h10m5s (days, hours, minutes, seconds)
  • Custom duration embedded in voucher's HMAC signature (tamper-proof)
  • Voucher lore and admin messages reflect the effective duration
  • New utility: DurationParser.java — parses duration strings to seconds
  • New message: error.invalidDuration

✨ Added — Smart Config Merge

  • Automatic merge of new configuration properties on plugin update
  • config.json — new sections and fields added without overwriting existing values
  • vips.json — new VIP properties (e.g., stackable) injected into all existing VIPs
  • Messages/*.json — new message keys added to all language files
  • Arrays (commandsOnActivate, commandsOnExpire, lore) are never modified
  • Runs on startup and /vips reload
  • All merge actions logged to console for transparency

📁 New Files

File Description
DurationParser.java Parses 1d2h10m5s format to seconds
ConfigMerger.java Generic deep-merge for JSON configs
VipsConfigMerger.java Specialized merge for vips.json structure

v1.1.0 — Virtual Chest & History

✨ Added — Virtual Chest

  • New /vips chest command with native Hytale container GUI
  • Permission-based capacity: jvips.chest.9 through jvips.chest.54 (1–6 rows)
  • Full item persistence (ID, quantity, durability, metadata)
  • Smart downgrade: excess items dropped at player's feet via ECS item spawning (never silently deleted)
  • Atomic JSON writes prevent data loss on crash
  • Persistent storage: items survive VIP expiration and are restored when renewed

✨ Added — History & Status

  • New /vips status command for players — view active VIPs with remaining time
  • New /vips list <player> for admins — view any player's active VIPs
  • New /vips history <player> for admins — full activation/expiration history with timestamps
  • Paginated output for large histories
  • Full event log stored in data/history.json

✨ Added — Multilingual

  • Added es_ES (Spanish) language file
  • All new features fully localized in en_US, pt_BR, and es_ES

📁 New Files

File Description
VipsChestStore.java Persistent storage for chest contents
VipsChestManager.java Chest logic: open, save, capacity, downgrade
VipsChestWindow.java Native Hytale container GUI integration
VipsChestCommand.java /vips chest command
HistoryStore.java Storage for VIP event history
HistoryRecorder.java Records activation/expiration events
VipStatusCommand.java /vips status player command
VipsHistoryCommand.java /vips history admin command
es_ES.json Spanish language file

v1.0.3 — Initial Release

✨ Core

  • Secure voucher system with HMAC-SHA256 validation
  • Player-bound vouchers (UUID) — non-transferable
  • Persistent VIP storage in data/players.json

✨ Automation

  • Automatic VIP expiration via background ticking system
  • Player does not need to be online for expiration
  • Configurable commandsOnActivate and commandsOnExpire per VIP
  • Sequential command execution (order guaranteed)

✨ Assets

  • Embedded asset pack with custom Jvips_Voucher item
  • Custom icon and 3D model

🔒 Security

  • HMAC signature validation on all vouchers
  • Voucher replay protection (used vouchers tracked in data/vouchers.json)
  • Drop-blocking for VIP vouchers
  • Atomic file writes (.tmp + move) for all persistent data

✨ Multilingual

  • en_US (English) and pt_BR (Portuguese) language files
  • Fully customizable messages via JSON
  • Language selection via config.json

🧾 Commands

  • /vips givekey <vip> <player> — give a VIP voucher
  • /vips add <player> <vip> — grant VIP directly
  • /vips remove <player> <vip> — remove VIP
  • /vips reload — reload configuration

📢 VIP Broadcast (included since v1.0.3)

  • Global EventTitle broadcast on VIP activation
  • Cooldown and grouping support for multiple activations
  • Plain-text optimized for Hytale UI stability
  • Fully customizable via language files