Skip to content

Update to latest pre-release including features/fixes from unmerged PRs#23

Open
Xytronix wants to merge 9 commits intoIroriPowered:pre-releasefrom
Xytronix:pre-release
Open

Update to latest pre-release including features/fixes from unmerged PRs#23
Xytronix wants to merge 9 commits intoIroriPowered:pre-releasefrom
Xytronix:pre-release

Conversation

@Xytronix
Copy link
Copy Markdown
Contributor

@Xytronix Xytronix commented May 7, 2026

Summary

Bundles compatibility, mixin gating, crashfixes, and several runtime hardening changes targeting Hytale pre-release 2026.04.30-b4f6a911e.

Related issues

Type of change

  • Bug fix (non-breaking)
  • New feature (non-breaking)
  • Breaking change (requires documentation/migration)
  • [] Chore / refactor
  • Documentation only

Implementation details

Pre-release compatibility:

  • Vector3d migrated from com.hypixel.hytale.math.vector.Vector3dorg.joml.Vector3d (joml accessors .x()/.y()/.z() instead of getX/getY/getZ) across
    MixinCollectVisible, WeakLocation, IdlePlayerService, AiTickThrottlerService, ChunkLoaderCommand, MixinSpatialSystem, ParallelSpatialCollector,
    MixinMotionControllerBase.
  • MixinPortalDeviceSummonPage.refixes$nullGuardSpawnTransform: signature gained leading PortalType param to match pre-release getSpawnTransform.

Mixin gating (RefixesMixinPlugin adoption from #7, restructured):

  • Reads mods/IroriPowered_Refixes/Refixes.json at early-mixin load and selectively disables Mixins per the config.
  • Toggles grouped into Mixins.Optimizations (default-on), Mixins.Experimental (default-off), Mixins.Crashfixes (default-on), Mixins.Helpers (default-on,
    accessor/infra), and HypixelServices.{Telemetry,LiveConfig} (inverted polarity so Telemetry.Enabled = true reads naturally).

Pre-release crashfixes:

  • MixinFillerBlockUtil - guards the removeOrphanedFillers lambda against asyncRef == null
  • MixinHideEntitySystems - wraps AdventurePlayerSystem.tick so an IllegalStateException from a stale entity ref during cross-world teleport doesn't kill the system (PR
    Add MixinHideEntitySystems to prevent world crash on cross-world teleport #16 ).
  • MixinTriggerVolumesPlugin.onWorldRemoved - null-guards getEntityStore().getStore() to skip cleanup when the store wasn't fully initialized.
  • MixinWorld.getPlayers() - null-guards entityStore.getStore(). The on-thread branch in pre-release calls forEachChunk without checking isStarted();
    WorldMapManager.setGenerator invokes this during World.init() before entityStore.start(resourceStorage) runs, producing a NPE chain that causes RemoveWorldEvent to fire
    and re-NPE through TriggerVolumesPlugin.
  • MixinTelemetryModule / MixinLiveConfigModule - suppress the new telemetry / live-config services which produces ConnectException spam every 5 min.

AiTickThrottler hardening:

  • Wall-clock budget per processWorld cycle (default MaxCycleMs = 30); the forEachEntityParallel lambda bails out early when exceeded so the world thread can resume
    ticking.
  • Per-world pile-up guard (AtomicBoolean inProgress on WorldState): if a prior cycle's world.execute is still queued, don't dispatch another.

Checklist

  • Code compiles successfully
  • Pull request does not contain unrelated changes
  • Changes follow this project's code style (Use spotlessApply when necessary)
  • Changes are tested or will be tested after submission

Additional info

  • The Telemetry/LiveConfig suppression is opt-out by design.

KabanFriends and others added 7 commits March 3, 2026 12:13
…le offset and implement chunkunloader whitelist (IroriPowered#20)

* Fix Vanilla Bug, use official Hytale API for ActiveChunkUnloader with configurable offset and implement chunkunloader whitelist

* fix build issue

* fixed compile errors
…upport (IroriPowered#17)

* fix: edge case in legacycleanup and added exclusion support

* re-deuplication, set back to 150ms.

* Fix conflict with SpawnMarkerBlockStateSystem

* Added two mixins to fix edge cases caused by AitickThrottler

* remove excludespawnmarkernpc

* legacycleanup should clean everything on AiTickThrottler false

* remove return

* CleanupFrozen false now clears everything, legacycleanup only cleans stale entries

* change default
…ipping air in UnknownBlockCleaner (IroriPowered#18)

* fix: replace per-block logging with summary and iterate by section skipping air in UnknownBlockCleaner

* async queue for performance

* dedup
* feat: external auth store with OAuth token seeding

- Add OAuth token seeding from env vars and CLI flags into credential store
- Register --oauth-access-token, --oauth-refresh-token, --oauth-access-expires CLI flags
- Add session/identity token fallback when OAuth unavailable
- Broaden update check/download auth to accept session tokens
- Gate seeding with PreferExternalAuth config option
- Add EarlyOptions.isSet() guard to prevent boot crash

* remove redundant gate

* fix loading issue

* populate profile

* set profile name

* add missing cli flags

* add support for refresh

* avoid redundant api call

* build own authstore

* add retry

* fix compile

* Terminate session on shutdown

* add support for external auth file

* sync all tokens

* fix build error

* preserve auth

* fix sig

* prioritize env vars

---------

Co-authored-by: KabanFriends <45000995+KabanFriends@users.noreply.github.com>
* initial work for hytale update 4

* exclude gson from shadowed libs

* add null check in MixinPlayerViewRadius

* feat: disable SharedInstanceWorlds by default
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants