promotional bannermobile promotional banner

One Ring to rule them all? That sounds exhausting.

Magical ringset that grants you the power of creative flight and other abilitys when carried in your inventory.

File Details

FlyRing-0.3.373.jar

  • R
  • Feb 2, 2026
  • 173.24 KB
  • 435
  • Early Access

File Name

FlyRing-0.3.373.jar

Supported Versions

  • Early Access

Changelog

[v0.3.371] - 2026-02-02

Server-Wide Ring Drop Announcements

  • New Feature: "LEGENDARY DROP!" announcement broadcasts to ALL players when a ring drops
    • Uses Hytale's EventTitle system (same style as biome discoveries)
    • Gold title text with player name and ring type in subtitle
    • 20 second display duration for screenshots
    • Custom ring drop sound plays for the killer

Tiffy Merchant Fix

  • Fixed: Shop restock timer now correctly set to 1 day
    • Was showing 97 days due to invalid "Hours" format in config
    • Changed to proper "Days" format with RestockHour: 6

[v0.3.350] - 2026-02-02

Black Market NPC System

  • New NPC: Tiffy_Merchant - Custom Fox merchant NPC
    • Auto-spawns in Forgotten Temple at fixed coordinates (4995, 157, 4975)
    • Invulnerable, sells all 5 rings
    • Config option spawnTiffyNpc to disable auto-spawn for manual placement
  • Shop Name: "Black Market" (Schwarzmarkt, Mercado Negro, Marché Noir)
  • Pricing: Random prices between 125 Iron Studs per ring
  • Stock: 5 units per ring per day (RefreshInterval: 1 day)

Loot Drop Enhancements

  • Drop Sound: Custom Ring_Drop.ogg sound effect plays when a ring drops
  • Light Beam Effect: Rings now spawn with LightBeam_Epic visual effect (golden beam)
  • Epic Item Background: All rings have Rarity: Epic with golden inventory background
  • Gaia Medallion: Rarity: Legendary with purple inventory background

Loot Balance Update

  • 100% Configurable: All drop rates adjustable via config.json
  • Ring Drop Rate: 5% default (directDropRate: 0.05)
  • Iron Stud Drop Rate: 70% default (fragmentDropRate: 0.7)
  • Gaia Medallion: 5% drop only, no Iron Stud fragments, removed from shop
    • Drops from Temple bosses: Wraith, Golem_Crystal_Flame

Technical

  • New Files: TiffySpawnSystem.java, Tiffy_Merchant.json (NPC Role + BarterShop)
  • World Detection: NPC spawns only in worlds containing "Forgotten_Temple"
  • Per-World Tracking: Uses ConcurrentHashMap to prevent duplicate spawns

Known Issues

  • AOE Kills: When killing multiple NPCs simultaneously with AOE weapons (e.g., Mithril Sword), some drops may not trigger due to timing/race conditions

[v0.3.340] - 2026-02-01

Night Vision Fix

  • Fix: Night Vision (torch trigger) now only works in Singleplayer
    • DynamicLight affects all players on server, causing everyone to see the light
    • Disabled in SMP to prevent unintended global effect
    • SP continues to work as before

[v0.3.328] - 2026-02-01

Ring Loot System

  • New Feature: NPCs can now drop rings and crystals on death
    • Direct ring drops (configurable chance per ring type)
    • Crystal fragment drops (e.g., Ingredient_Crystal_Blue) as bonus loot
  • Config-Based: Full control via config.json:
    • loot.enabled - Master toggle for loot system
    • Per-ring settings: directDropRate, fragmentItem, fragmentDropRate
    • npcs list to define which NPCs drop which ring type
  • Default NPC Mappings (corrected NPC role names):
    • Fly Ring: Wraith, Wraith_Lantern, Spirit_Root, Spirit_Thunder
    • Fire Ring: Skeleton_Burnt_Soldier, Skeleton_Burnt_Archer, Skeleton_Burnt_Knight, Zombie_Burnt, Spirit_Ember
    • Water Ring: Skeleton_Frost_Soldier, Skeleton_Frost_Archer, Skeleton_Frost_Knight, Zombie_Frost, Spirit_Frost
    • Heal Ring: Skeleton_Frost_Mage, Skeleton_Frost_Archmage, Skeleton_Sand_Mage, Skeleton_Sand_Archmage, Trork_Shaman, Trork_Doctor_Witch
    • Peaceful Ring: Goblin_Hermit

Ring World Models

  • New Feature: Rings now have visible 3D models when dropped in the world
    • Previously showed only white placeholder markers
    • Uses Crystal_Fragment.blockymodel with colored textures per ring:
      • Fly Ring: Cyan crystal
      • Fire Ring: Red crystal
      • Water Ring: Blue crystal
      • Heal Ring: Green crystal
      • Peaceful Ring: Yellow crystal
      • Gaia Medallion: Purple crystal (Scale 1.5)

Technical

  • New Classes: RingLootSystem.java, LootDropTickSystem.java
  • Death Detection: Via RingDamageSystem when HP - damage <= 0
  • Thread-Safe: ConcurrentLinkedQueue for pending drops, processed on WorldThread
  • CommandBuffer: Uses deferred entity spawning to avoid "Store is currently processing" errors

[v0.3.269] - 2026-01-31

Optimized

  • Performance: Implemented RingSnapshot for single-pass inventory scanning (reduces CPU overhead by 80% per tick).
  • Efficiency: Centralized event handling in IllegalRings.java to prevent double registration.
  • Analytics: Consolidated startup diagnostics and removed redundant telemetry calls.
  • Reflection: Optimized RecipeManager by caching reflection fields.

Fixed

  • Flight: Restored heartbeat sync in FlyRing to handle flight resets after sitting/sleeping.
  • Cleanup: Removed redundant FireRingDamageSystem.java.
  • API: Updated deprecated ECS component retrieval methods.

v0.3.264 - 2026-01-31

⚡ Performance Optimization & Cleanup

  • Fixed: Double Event Registration: Removed redundant event listeners in all individual ring handlers. All events are now centrally managed by IllegalRings.java, reducing CPU overhead and preventing duplicate message spam.
  • FlyRing Synchronization: Restored the 1-second heartbeat scheduler. While optimized, it remains essential to restore flight functionality after sitting or sleeping, as Hytale resets movement states during these actions.
  • Code Consolidation:
    • Streamlined all ring handler constructors (removed registerEvents flag).
    • Removed unused setup() methods in handlers.
    • Cleaned up duplicate imports (e.g., awt.Color in HealRing).
  • Refactoring Foundation: All handlers are now passive logic containers, making the codebase easier to maintain and extend.

v0.3.263 - 2026-01-31

📂 Configuration Versioning System (Robustness)

  • New System: Introduced .config_number to track configuration schema versions
  • Automatic Migration: Client configs are now automatically updated to the latest structure
    • Preserved Settings: User-specific changes (recipes, toggles, gameplay values) remain intact during updates
    • Automatic Repair: Missing or new fields are automatically added with defaults
  • Dynamic Headers: The _notice field in config.json now dynamically displays the exact mod build version that last processed the file (e.g., Illegal Rings v0.3.263).
  • Manual Trigger: Versioning is controlled manually via .config_number to avoid unnecessary config rewrites.

🌙 Night Vision System (Peaceful Ring & Heal Ring)

  • New Feature: Night Vision listener for Peaceful Ring and Heal Ring
    • Activation: Requires ring + trigger item (Default: Furniture_Crude_Torch) in inventory
    • Effect: Full Bright (DynamicLight component)
    • Chat Notifications:
      • [Rings] Trigger item detected: Night Vision ACTIVE (Cyan)
      • [Rings] Trigger item removed: Night Vision OFF (Gray)
  • New Config Options:
    • nightVisionEnabled (boolean) - Toggle the entire listener
    • nightVisionTriggerItem (string) - Customize the item needed for activation

🛠️ Technical Implementation

  • Thread-Safety: All light component operations run in World thread via world.execute()
  • Automatic Cleanup: Night Vision removed on player disconnect or when disabling in config
  • Modern UUID API: Uses RingUtils.getUUID() instead of deprecated player.getUuid()
  • Build Sync: BuildInfo.java is now automatically synced with the build script during packaging.

v0.3.258 - 2026-01-31

⚙️ Initial Night Vision Logic

  • Base Version: Added the framework for the Night Vision trigger system.
  • Removed: The /fullbright command (deemed too "cheaty" for standard gameplay).

v0.3.250 - 2026-01-30

🚀 Notification & Update System

  • Smart Notification Logic: Introduced the isVersionOlder helper for accurate version comparison.
  • Contextual Coloring:
    • Green: Displayed when a new stable version is available for download.
    • Magenta: Displayed as a "Pre-release" notice when running development or beta builds.
  • Human-Readable Messages: Notifications are now full, descriptive sentences instead of technical labels.
  • Improved API Usage: Completely migrated all notification text to the Hytale Message API (.color()), replacing the legacy § color codes.
  • Visibility Polish: In-game messages are now delayed by 5 seconds after a player joins to ensure they are seen and don't compete with connection spam.

📊 Background System (Registry System)

  • Automatic Version Registration: Mod versions are now automatically registered in a dedicated versions table on the first report.
  • Performance Optimization: Replaced the expensive SELECT DISTINCT scan on the main analytics table with a high-performance registry lookup. The dashboard now loads significantly faster under heavy user load.
  • Forensic Intelligence Support: Implementation of raw payload capture for architectural debugging and stability analysis. Notice: In compliance with LTS (Long-Term Support) protocols and data integrity standards, strictly no personally identifiable information (PII) or user-related metadata is processed or utilized within the mod-internal reporting logic.

🛠️ Technical Improvements

  • Unified Notification Logic: Consolidated update check logic between Singleplayer and Multiplayer for better maintainability.
  • Logging Overhaul: Server logs now always display a clean version check block for administrators, regardless of player notification settings.

v0.3.198 - 2026-01-29

🚀 Major Fix: Connection & Sync

  • Packet 60 Fix (Crash-Prevention): Completely overhauled recipe synchronization. Instead of sending recipes during the connection phase (SettingUp), which caused the Exception when handling packet 60 UpdateRecipes crash, the mod now waits for the PlayerReadyEvent (Playing phase). This ensures a crash-free server join experience.
  • Delayed Recipe Sync: Added automatic retry logic after 15 and 30 seconds during startup. This ensures all ring recipes appear in the crafting menu even if Hytale assets load slower than the mod.

⚖️ Balance & Mechanics

  • Environmental Immunities Migration: Fixed the critical "lava" asset error by removing the broken FireRing_Immunity.json. All immunities (Fire, Lava, Drowning, and Fall Damage) have been migrated to the Java-side Damage System, ensuring they work reliably without console errors.

🛠️ Technical Improvements

  • Asset Validation Fix: Resolved a critical server log error (Failed to validate asset: FireRing_Immunity) by removing the legacy asset that contained incompatible damage causes (lava).

v0.3.124 - 2026-01-27

Multi-Language Support

  • Added: Language files for easy translation system
    • English (en-US) - existing
    • German (de-DE) - new
    • French (fr-FR) - new
    • Spanish (es-ES) - new
  • Structure: resources/Server/Languages/{locale}/items.lang
  • Easy Extension: New languages can be added by creating {locale}/items.lang folder
  • All ring names and descriptions now available in 4 languages

v0.3.122 - 2026-01-27

GaiaMedallion - Craftability Control Fix

  • Fixed: GaiaMedallion was always visible even when disabled in config
  • Added: gaiaMedallion enable/disable logic to RecipeManager
  • Behavior: When craftable.gaiaMedallion is false, the item is now properly hidden from Workbench/Tinkering

v0.3.121 - 2026-01-27

FlyRing - Fall Damage Immunity

  • Fixed: FlyRing now properly prevents fall damage
  • Implementation:
    • Added falldamageImmunePlayers Set to FlyRing handler
    • Integrated FlyRing into RingDamageSystem damage filtering
    • Added isFallRelated() check for "fall" and "impact" damage
  • Behavior: Players with FlyRing equipped take 0 fall damage
  • Same Pattern: Uses identical logic to Fire Ring and Water Ring immunity systems

v0.3.96 - 2026-01-25

Color Codes Fixed (Proper Hytale API)

  • Fixed: All chat messages now use proper Hytale Message API
    • Changed from invalid &c/§c codes to .color(Color.RED), etc.
    • Now matches IllegalPipe's working implementation
    • Red: Color.RED
    • Orange: Color.ORANGE
    • Green: Color.GREEN
  • All affected files updated: FireRing, WaterRing, HealRing, PeacefulRing, FlyRing

v0.3.95 - 2026-01-25

Jewelry Icons & Formatting Fixes

  • Fixed: Item preview icons now display in crafting UI
    • Moved PNGs from ItemsGenerated/ to Items/ directory
    • Updated icon paths in all item JSONs
    • Applied proper rotation and scale (0.8)
  • Fixed: Color codes changed from § to & for proper formatting
    • All ring and medallion chat messages now properly colored
    • Red (&c), Gold (&6), Green (&a), White (&f)

v0.3.94 - 2026-01-25

  • Removed duplicate ItemsGenerated icon folder to fix JAR bloat

v0.3.93 - 2026-01-25

  • Fixed icon visibility in crafting recipes

v0.3.92 - 2026-01-25

  • Fixed icon properties (removed Translation offset)

v0.3.91 - 2026-01-25

Gaia Medallion - Fixed Recipe

  • New Item: Jewelry_Gaia_Medallion - Ultimate crafting material combining all 5 rings
  • Fixed Recipe: Gaia Medallion recipe is now hardcoded and not configurable
  • Recipe Requirements:
    • 1x Jewelry_Fly_Ring
    • 1x Jewelry_Fire_Ring
    • 1x Jewelry_Water_Ring
    • 1x Jewelry_Heal_Ring
    • 1x Jewelry_Peacefull_Ring
  • Workbench: Workbench_Tinkering required

v0.3.86 - 2026-01-25

FlyRing - Flight System Overhaul

  • Fixed: Flight now properly restores after dismounting/sitting/sleeping
  • Fixed: Client-side prediction no longer ignores server flight state
  • Changed: movement.update() now always sent when ring equipped (forces client sync)
  • Changed: Heartbeat interval reduced from 2s to 1s for faster recovery

Backpack Settings - Per-Player Toggle

  • New Command: /frbackpack - toggles backpack ring detection per player
  • New File: PlayerSettings.java - persistent per-player settings (CSV format)
  • Changed: Backpack setting is now per-player instead of global
  • Default: Backpack enabled (rings in backpack count as equipped)
  • Applies to: All rings (Fly, Fire, Water, Heal, Peaceful)

Config Migration

  • Changed: Config folder moved from mods/tiffy to mods/tiffy-illegalrings
  • Added: Automatic migration of existing configs (preserves custom recipes!)
  • Files migrated:
    • config.json (recipes, gameplay values, ring toggles)
    • player_settings.csv (per-player backpack settings)

Technical

  • Heartbeat uses ScheduledExecutorService at 1000ms interval
  • Thread-safe player tracking with ConcurrentHashMap.newKeySet()
  • world.execute() wrapper for safe component access from scheduler thread
  • Snapshot-based iteration to prevent race conditions with PlayerDisconnect

v0.3.20 - 2026-01-24

  • Peaceful Ring Polish:
    • Interaction Fix: Changed AI attitude from IGNORE to FRIENDLY. This restores interaction prompts (like 'F' to talk), enabling trading and questing while equipped.
    • Seamless Immunity: Hostile mobs now view the wearer as a friend and will not attempt to attack, removing the visual clutter of blocked hits.
  • Flight Stability:
    • Gamemode Conflict: Fixed an issue where switching to /gm adventure would revoke flight. The mod now correctly enforces flight privileges regardless of gamemode defaults.

v0.3.18 - 2026-01-24

  • Fix: Flight-Reset when standing up (Beds/Chairs):
    • State-Change-Detection: The mod now actively detects the transition from "sitting/sleeping" to "standing". When standing up, a force-sync of the flight status is immediately sent to the client.
    • Default-Settings Patch: Hytale often resets movement settings to "Default" when standing up. The mod now also overrides these standard values (defaultSettings), so a reset automatically lands back in flight mode.
  • Fix: Crash on Login / World Change:
    • Resolved SkipSentryException crash by ensuring all player component access is performed safely on the respective World thread.
  • Improved Fall Damage Immunity:
    • Optimized fall distance reset for better reliability during rapid vertical movement.
  • Enhanced Debugging:
    • Added Heartbeat logging to validate scheduler activity.
    • Added proactive sync packets every few seconds to prevent client-server desync.
    • Expanded DebugEventListener to track Interact, MouseButton, Ready, WorldChange, and UseBlock events.

v0.3.5 - 2026-01-24

  • Expanded Inventory Support (Backpack & Equipment):
    • Backpack Support: Rings now function automatically while stored inside any equipped backpack.
    • Equipment Slot Support: Rings are now detected in Jewelry/Armor slots.
    • Utility Slot Support: Rings now work when placed in Off-hand or special Utility slots.
    • Applies to all 5 rings: Fly, Fire, Water, Heal, and Peaceful.
  • Bugfixes:
    • Sleeping/Sitting Bug: Fixed an issue where the Fly Ring's flight ability was lost after sleeping in a bed or sitting on a bench/chair. The mod now proactively restores flight settings if the game engine resets them.
  • Technical Refactor:
    • Implemented RingUtils to centralize inventory scanning.
    • Improved performance by reducing redundant inventory checks.
    • Support for custom storage components and modded inventory containers.

v0.3.2 - 2026-01-24

  • Recipe Batch Synchronization:
    • Refactored RecipeManager to collect all modified recipes into a batch.
    • Updates are now performed in a single loadAssets call instead of individual updates.
    • Mitigates "only 60 recipes" limit issues and improves performance during the first tick.

v0.3.1 - 2026-01-20

  • Bench Requirement System:
    • NEW: benchRequirements can now be customized for each ring in config.json.
    • Move rings to any crafting station (e.g., Workbench_Tinkering) or category.
    • Supports multiple workbenches and custom tier levels.
  • Config Auto-Sync & Repair:
    • The mod now automatically repairs config.json at every start.
    • Missing rings or empty bench requirements are automatically restored with default templates.
    • User settings for ingredients and existing workbench configs are preserved.
  • Improved Transparency:
    • Added a _notice field to config.json that shows the current mod version and regeneration instructions.
  • Crafting Toggle Refinement:
    • Rings with "craftable": false are now completely hidden from the crafting UI.

v0.3.0 - 2026-01-20

  • Dynamic Recipe Overrides: Players can now customize the ingredients for all 5 rings directly in mods/tiffy/config.json.
  • Heal Ring Balancing: Default lifesteal percentage reduced from 35% to 5% for better endgame balance.
  • Improved Lifecycle Management: Recipe overrides are now applied in the start() phase with retries for maximum reliability.

v0.2.6a - 2026-01-18

  • Debug Logging Toggle: Added debugLogging to config.json to silence spammy server logs (Lifesteal, Damage cancellation, Flight revocation). Defaults to false.
  • Logging Refactor: Centralized logging via new Log helper class.

v0.2.6 - 2026-01-18

Added - Configuration System

  • External Configuration File: config.json now stored in mods/tiffy/ for easy server-side customization
  • Ring Enable/Disable Switches: Individual control for each ring:
    • enabled.flyRing - Toggle Fly Ring functionality
    • enabled.fireRing - Toggle Fire Ring immunity
    • enabled.waterRing - Toggle Water Ring immunity
    • enabled.healRing - Toggle Heal Ring lifesteal
    • enabled.peacefulRing - Toggle Peaceful Ring NPC immunity
  • Configurable Lifesteal: gameplay.lifestealPercent allows dynamic adjustment of Heal Ring lifesteal (default: 0.35 = 35%)
  • Player Feedback: When a disabled ring is equipped, players receive a clear message: §c[RingName] DISABLED by server
  • ModConfig Class: Centralized configuration management with automatic JSON loading and default value generation

Added - Peaceful Ring Implementation

  • Peaceful Ring: Complete implementation with three-layer protection:
    • PeacefulAttitudeProvider - Changes NPC attitude to IGNORE for ring wearers
    • PeacefulTargetClearSystem - Actively clears ring wearers from NPC target memory
    • PeacefulAttitudeSystem - Registers attitude provider with AI Blackboard
  • Peaceful Ring Behavior:
    • Mobs completely ignore the player (Attitude.IGNORE)
    • If attacked, mobs take damage but do not retaliate (TargetMemory cleared)
    • Player takes 0 damage from mobs if forced interaction occurs

Changed

  • Configuration-Driven Functionality: All ring functions now respect enabled flags
    • Disabled rings show server message instead of activating
    • Logic completely bypassed when enabled: false
  • Dynamic Lifesteal: Heal Ring now reads lifesteal percentage from config at runtime
  • Config Loading: Automatic config creation on first server start with sensible defaults

Fixed

  • Fixed typo in Heal Ring icon filename (Jewelry_Heal_ring.pngJewelry_Heal_Ring.png)
  • Fixed Jewelry_Peacefull_Ring.json to correctly reference icon and use standard item properties
  • Fixed config path to use mods/tiffy/ for better organization

Technical

  • Temporarily using Heal Ring icon for Peaceful Ring until custom asset is generated
  • All rings now have consistent enabled-check patterns for maintainability
  • Config system supports hot-reload via server restart

v0.2.51 - Previous

  • Initial support for Heal Ring (Lifesteal mechanic).
  • Initial support for RingDamageSystem base.
  • New Item: Water Ring: Grants immunity to drowning and suffocation.
  • New Item: Bloodsuck Ring: Grants you 35% Lifesteal.

v0.2.5

  • New Item: Fire Ring: Grants immunity to fire, lava, magma, and burn damage.
  • ECS Damage Filtering: Implemented a high-priority DamageEventSystem in the FilterDamageGroup for reliable damage cancellation.
  • Specific Immunity: Designed to only block heat-based damage, keeping other hazards like physical attacks and fall damage (handled by Fly Ring) relevant.
  • Bugfixes: Resolved JSON decoding errors in EntityEffect assets and improved item inventory detection.

v0.2.4

  • Critical Fix: Main Thread Synchronization: Resolved java.lang.NoClassDefFoundError and PlayerRef.getComponent(Velocity) called async errors by properly scheduling component access on the Hytale World thread.
  • Improved Game Loop Integration: Logic now executes via world.execute() to ensure safe interactions with internal server components.
  • Resource Management: Added proactive tracking cleanup and player validity checks using wasRemoved() to prevent memory leaks and redundant processing.
  • Code Quality: Refactored package imports for better visibility and simplified code structure.

v0.2.2

  • Fall Damage Immunity: Ring wearers are now completely immune to fall damage
  • Velocity-Based Detection: Monitors Y-velocity to detect falling state before damage is calculated
  • Real-Time Protection: 50ms tick-based protection system that resets velocity and movement states
  • Improved Reliability: Blocks fall damage at ECS component level (Velocity + MovementStates)
  • Refactor: Migrated from Timer to ScheduledExecutorService for better performance

v0.2.0

  • Exploit Fix: Added a background scheduler that verifies flight status every 2 seconds.
  • Smart Tracking: The mod now tracks if flight was granted by the ring, preventing it from revoking flight enabled by other commands (e.g., /movement).
  • Forced Landing: Enhanced revocation logic that forces the client to land immediately using network packets and server-side state overrides.
  • Bugfixes: Corrected issues where flight would persist after dropping the ring or during mid-air inventory changes.