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
spawnTiffyNpcto 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.oggsound effect plays when a ring drops - Light Beam Effect: Rings now spawn with
LightBeam_Epicvisual effect (golden beam) - Epic Item Background: All rings have
Rarity: Epicwith golden inventory background - Gaia Medallion:
Rarity: Legendarywith 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
ConcurrentHashMapto 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 npcslist 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.blockymodelwith 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
RingDamageSystemwhen HP - damage <= 0 - Thread-Safe:
ConcurrentLinkedQueuefor 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
RingSnapshotfor single-pass inventory scanning (reduces CPU overhead by 80% per tick). - Efficiency: Centralized event handling in
IllegalRings.javato prevent double registration. - Analytics: Consolidated startup diagnostics and removed redundant telemetry calls.
- Reflection: Optimized
RecipeManagerby caching reflection fields.
Fixed
- Flight: Restored heartbeat sync in
FlyRingto 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
registerEventsflag). - Removed unused
setup()methods in handlers. - Cleaned up duplicate imports (e.g.,
awt.ColorinHealRing).
- Streamlined all ring handler constructors (removed
- 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_numberto 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
_noticefield inconfig.jsonnow 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_numberto 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)
- Activation: Requires ring + trigger item (Default:
- New Config Options:
nightVisionEnabled(boolean) - Toggle the entire listenernightVisionTriggerItem(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 deprecatedplayer.getUuid() - Build Sync:
BuildInfo.javais 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
/fullbrightcommand (deemed too "cheaty" for standard gameplay).
v0.3.250 - 2026-01-30
🚀 Notification & Update System
- Smart Notification Logic: Introduced the
isVersionOlderhelper 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
versionstable on the first report. - Performance Optimization: Replaced the expensive
SELECT DISTINCTscan 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 theException when handling packet 60 UpdateRecipescrash, the mod now waits for thePlayerReadyEvent(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.langfolder - 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:
gaiaMedallionenable/disable logic to RecipeManager - Behavior: When
craftable.gaiaMedallionisfalse, 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
falldamageImmunePlayersSet to FlyRing handler - Integrated FlyRing into RingDamageSystem damage filtering
- Added
isFallRelated()check for "fall" and "impact" damage
- Added
- 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/§ccodes to.color(Color.RED), etc. - Now matches IllegalPipe's working implementation
- Red:
Color.RED - Orange:
Color.ORANGE - Green:
Color.GREEN
- Changed from invalid
- 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/toItems/directory - Updated icon paths in all item JSONs
- Applied proper rotation and scale (0.8)
- Moved PNGs from
- 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/tiffytomods/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
ScheduledExecutorServiceat 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
IGNOREtoFRIENDLY. 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.
- Interaction Fix: Changed AI attitude from
- Flight Stability:
- Gamemode Conflict: Fixed an issue where switching to
/gm adventurewould revoke flight. The mod now correctly enforces flight privileges regardless of gamemode defaults.
- Gamemode Conflict: Fixed an issue where switching to
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
SkipSentryExceptioncrash by ensuring all player component access is performed safely on the respective World thread.
- Resolved
- Improved Fall Damage Immunity:
- Optimized fall distance reset for better reliability during rapid vertical movement.
- Enhanced Debugging:
- Added
Heartbeatlogging to validate scheduler activity. - Added proactive sync packets every few seconds to prevent client-server desync.
- Expanded
DebugEventListenerto trackInteract,MouseButton,Ready,WorldChange, andUseBlockevents.
- Added
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
RingUtilsto centralize inventory scanning. - Improved performance by reducing redundant inventory checks.
- Support for custom storage components and modded inventory containers.
- Implemented
v0.3.2 - 2026-01-24
- Recipe Batch Synchronization:
- Refactored
RecipeManagerto collect all modified recipes into a batch. - Updates are now performed in a single
loadAssetscall instead of individual updates. - Mitigates "only 60 recipes" limit issues and improves performance during the first tick.
- Refactored
v0.3.1 - 2026-01-20
- Bench Requirement System:
- NEW:
benchRequirementscan now be customized for each ring inconfig.json. - Move rings to any crafting station (e.g.,
Workbench_Tinkering) or category. - Supports multiple workbenches and custom tier levels.
- NEW:
- Config Auto-Sync & Repair:
- The mod now automatically repairs
config.jsonat every start. - Missing rings or empty bench requirements are automatically restored with default templates.
- User settings for ingredients and existing workbench configs are preserved.
- The mod now automatically repairs
- Improved Transparency:
- Added a
_noticefield toconfig.jsonthat shows the current mod version and regeneration instructions.
- Added a
- Crafting Toggle Refinement:
- Rings with
"craftable": falseare now completely hidden from the crafting UI.
- Rings with
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
debugLoggingtoconfig.jsonto silence spammy server logs (Lifesteal, Damage cancellation, Flight revocation). Defaults tofalse. - Logging Refactor: Centralized logging via new
Loghelper class.
v0.2.6 - 2026-01-18
Added - Configuration System
- External Configuration File:
config.jsonnow stored inmods/tiffy/for easy server-side customization - Ring Enable/Disable Switches: Individual control for each ring:
enabled.flyRing- Toggle Fly Ring functionalityenabled.fireRing- Toggle Fire Ring immunityenabled.waterRing- Toggle Water Ring immunityenabled.healRing- Toggle Heal Ring lifestealenabled.peacefulRing- Toggle Peaceful Ring NPC immunity
- Configurable Lifesteal:
gameplay.lifestealPercentallows 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 toIGNOREfor ring wearersPeacefulTargetClearSystem- Actively clears ring wearers from NPC target memoryPeacefulAttitudeSystem- 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
enabledflags- 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.png→Jewelry_Heal_Ring.png) - Fixed
Jewelry_Peacefull_Ring.jsonto 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
DamageEventSystemin theFilterDamageGroupfor 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
EntityEffectassets and improved item inventory detection.
v0.2.4
- Critical Fix: Main Thread Synchronization: Resolved
java.lang.NoClassDefFoundErrorandPlayerRef.getComponent(Velocity) called asyncerrors 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.

