PHAYRIOSIS REBORN - PHASE 4: METEOR SCHEDULER / ELIGIBILITY FOUNDATION
Version: 0.0.13

Purpose
- Add the server-side clock/state machine for the future live falling meteor.
- Do NOT create a meteor entity, crater, sound, particles, block conversion, or visible event yet.
- Preserve Phase 3 removal of static meteor biome modifiers.

New classes
1) net.mcreator.phayriosisreborn.meteor.PhayriosisMeteorEventData
   SavedData name: phayriosisreborn_meteor_event
   Runtime-only state kept separate from PhayriosisWorldSettings.
   Persists:
   - initialized
   - nextCheckGameTime
   - lastCheckGameTime
   - lastEligibleGameTime
   - eligibilityChecks
   - rollAttempts
   - successfulRolls
   - pendingMeteor
   - pendingSinceGameTime

2) net.mcreator.phayriosisreborn.meteor.PhayriosisMeteorScheduler
   Forge EventBusSubscriber, server-side LevelTick END handler.
   Runs scheduler logic ONLY for the server's Overworld.

Eligibility rules in Phase 4
- meteorEnabled must be true.
- Overworld game time must be >= meteorMinimumDay * 24000.
- Phayriosis world phase must be >= meteorMinimumPhase.
- Player selection/presence is intentionally deferred to the launch phase; a successful roll can become a persistent pending event, and Phase 5 must wait for a valid player/target before launching it.

Scheduling behavior
- Before minimum day: scheduler sleeps directly until the minimum-day game tick.
- If disabled or the Phayriosis phase is too low: recheck every 200 ticks (10 seconds), not every tick.
- Once eligible: roll meteorChance.
- Failed roll: next roll occurs after meteorCheckIntervalTicks (minimum sanitized to 20 ticks).
- Successful roll: set pendingMeteor=true and stop making further rolls until Phase 5 successfully launches and acknowledges the event.
- Pending state survives save/reload/server restart.
- Chance is clamped to [0,1]; NaN becomes 0.
- Infinite/NaN interval falls back to 3600 ticks.

Phase 2/3 defaults currently feeding the scheduler
- meteorEnabled=true
- meteorMinimumDay=7
- meteorMinimumPhase=1
- meteorCheckIntervalTicks=3600
- meteorChance=0.5
These are not yet exposed by the new Create World GUI.

IMPORTANT CONTINUATION CONTRACT FOR PHASE 5
- Do not make the scheduler generate terrain itself.
- Phase 5 should implement a real falling meteor launch/entity system.
- First check PhayriosisMeteorScheduler.hasPendingMeteor(overworld).
- Wait until there is a valid online Overworld player and a valid target/trajectory.
- Only AFTER the meteor entity is successfully spawned call
  PhayriosisMeteorScheduler.markPendingMeteorLaunched(overworld).
- If launch/target selection fails, leave pendingMeteor untouched so the event is not lost.
- Phase 5 should not restore old static meteor biome modifiers.

Performance
- Event handler receives LevelTick events but immediately rejects START ticks, non-server levels, and non-Overworld dimensions.
- Persistent data is dirtied only on scheduler state changes/checks, not every tick.
- Before minimum day it performs only a time comparison after initialization.

Historical safety
- Phase 1 raw opcode/NOP editing broke StackMapTable verification. Phase 4 adds compiled classes and performs no raw method bytecode overwrites.
- Phase 2 initially used the wrong ServerLevelAccessor package. All Phase 4 Minecraft class descriptors were checked against working Phayriosis 1.20.1 bytecode patterns.
