promotional bannermobile promotional banner

OrbisGuard | Region Management

Region protection plugin for Hytale servers. Define areas, set flags (block-break, block-place, use), and control who can build where. Based on WorldGuard for Minecraft.
Back to Files

OrbisGuard-0.10.0.jar

File nameOrbisGuard-0.10.0.jar
Uploader
wiflowwiflow
Uploaded
Aug 29, 2026
Downloads
116
Size
467.5 KB
File ID
8760559
Type
R
Release
Supported game versions
  • Early Access

What's new

Changelog

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


[0.10.0] - 2026-08-29 (Release 0.6.2 Compatibility)

Build system

  • compileOnly path is back on release/package/game/latest/Server/HytaleServer.jar. The 0.9.0 entry described a switch to pre-release/; the build files now point at release/ again.
  • Java toolchain unchanged at 25. The 0.6.2 release JAR is class file version 69.0, same as the pre-release, so no toolchain move was needed. Mixin bytecode still emits as Java 16 (class v60) to satisfy Hyinit's compatibilityLevel JAVA_16 cap.
  • hytale_server_version in processResources expand props updated 0.5.10.6.2. Note this property is currently unused — both manifest.json files hardcode "ServerVersion": "*" and never reference the placeholder — so the value is documentation only.
  • Version bumped to 0.10.0 across build.gradle, orbisguard-api/build.gradle, orbisguard-mixins/build.gradle, and the root pack manifest.json (including both fileName entries).

Server API changes (upstream)

Chunk storage is now section-based. This is the root cause of most of the delta. WorldChunk no longer implements BlockAccessor, and BlockComponentChunk / EntityChunk are gone as chunk-level containers — block entities now hang off BlockSection. Removed from WorldChunk: getBlockComponentChunk(), getEntityChunk(), getChunkAccessor(), toHolder(), getTint(int,int), not(ChunkFlag), toggleFlag(ChunkFlag), isLightingUpdatesEnabled(), and the 5-arg constructor. Added in their place: direct getBlockType(...), setBlock(...) (6 overloads), breakBlock(...), and setBlockInteractionState(...). OrbisGuard never referenced the removed container types, so the blast radius was limited to the two items below.

MovementSettings.canFly (boolean) → MovementSettings.fly (FlyMode) — New enum com.hypixel.hytale.protocol.FlyMode with three states: Disabled, Allowed, Forced. The static accessors getCanFly(MemorySegment[, int]) became getFly(...), and the packed constructor's boolean slot is now a FlyMode. MovementSettings also gained maxSlopeAngleDegrees and maxWallAngleDegrees.

WorldChunk.getTint(int,int) moved to BlockChunkWorldChunk was only delegating; the palette lives on BlockChunk. Reach it via worldChunk.getBlockChunk().getTint(x, z). getHeight and getBlock are unaffected.

BlockModule.BlockStateInfo rebuilt around sectionsgetChunkRef() is now getSectionRef() and points at a section rather than a chunk. More usefully, the class gained fillWorldPos(Vector3i) and fillWorldPos(ComponentAccessor<ChunkStore>, Vector3i), which resolve a block-state index straight to a world position. This is the proper API replacement for hand-rolled chunk math. BlockModule.ensureBlockEntity(WorldChunk, int, int, int) was also replaced by getBlockEntity(ComponentAccessor, Ref, int, int, int).

ChunkUtil column helpers removedindexBlockInColumn, indexBlockInColumnFromColumn, xFromBlockInColumn, yFromBlockInColumn, and zFromBlockInColumn are gone, consistent with the move away from column-indexed storage. Use BlockStateInfo.fillWorldPos(...) instead of reconstructing coordinates by hand.

BlockHarvestUtils.performBlockDamage grew again — The 11-arg variant is now 13-arg: a second Ref<EntityStore> (the damage source entity) was inserted at position 2, and a boolean at position 10. The convenience overload went 8-arg → 9-arg with a boolean at position 6. A new batch overload performBlockDamage(Ref, Ref, List<Vector3i>, ...) returning int was added. Separately, removeBlock gained a BlockSection parameter before its trailing accessor, and performPickupByInteraction gained one too.

FarmingUtil.harvest first parameter WorldComponentAccessor<ChunkStore> — A 4-arg overload dropping BlockType/rotationIndex was also added. tickFarming now takes a BlockModule.BlockStateInfo where it previously took a BlockChunk.

SpatialStructure queries take read-only vectorsclosest, collect, collectBox, collectCylinder, ordered, and ordered3DAxis all moved from org.joml.Vector3d to org.joml.Vector3dc. Source that passes a Vector3d still compiles (it implements Vector3dc), so this change is invisible to javac and only surfaces in baked mixin descriptors.

ECS core gained a seqlockRef now carries a seq field with getSeq(), beginMutation(), endMutation(), and isValid(Store); setArchetypeChunk(...) and setChunkEntityIndex(...) were merged into setPosition(ArchetypeChunk, int). Store gained getComponentConcurrent(Ref, ComponentType) and ArchetypeChunk a matching internal. copySerializableEntity on both Store and ArchetypeChunk now takes a Predicate<ComponentType> filter. Nothing in OrbisGuard uses the removed setters, but the concurrent read path is now available if region lookups ever need it.

Permission query object — New com.hypixel.hytale.server.core.permissions.PermissionQuery. BuilderToolsPacketHandler.hasPermission(PlayerRef, String) became hasPermission(PlayerRef, PermissionQuery), and a new isAuthorizedForTool(...) helper was added. PlayerRef.hasPermission(String) is unchanged, so OrbisGuard's bypass checks are unaffected.

TransformComponent lost its chunk back-referencesgetChunkRef(), getChunk(), setChunkLocation(...), and markChunkDirty(...) are gone. OrbisGuard does not use them.

World chunk lookups no longer return BlockAccessorgetChunkIfInMemory, getChunkIfLoaded, getChunkIfNonTicking, and loadChunkIfInMemory changed return type as a consequence of WorldChunk dropping the interface.

New ECS eventsEnvironmentBreakBlockEvent, RespawnEvent, UseEntityEvent, GameModeTypeEnterEvent, GameModeTypeExitEvent, BreathingCheckEvent, SectionUnloadEvent, ChunkSectionPreLoadProcessEvent, WorldGenChunksClearedEvent, and portals.events.EnterPortalEvent. Only RespawnEvent extends CancellableEcsEvent — see the mixin note below.

New worldevents builtin packageWorldEventManager, GlobalWorldEventManager, a pluggable EventAction / EventCondition codec set, and /worldevent commands. Not related to OrbisGuard regions.

Fixed (main plugin)

  • MovementControlSystem / PlayerRegionTracker — migrated off MovementSettings.canFly to MovementSettings.fly. PlayerRegionTracker.PlayerMovementState now stores the FlyMode enum rather than a boolean, so a player whose flight was Forced is restored to Forced when they leave a no-fly region instead of being silently downgraded to Allowed. The deny path sets FlyMode.Disabled and the guard tests settings.fly != FlyMode.Disabled.
  • OrbisGuardMapImageBuilder — tint sampling now goes through worldChunk.getBlockChunk().getTint(x, z).

Mixin status (see orbisguard-mixins/CHANGELOG.md for details)

Hyinit is still required, and no mixin can be retired. 0.6.2 does add official ECS events, but the ones that would matter are not cancellable: EnvironmentBreakBlockEvent and EnterPortalEvent both extend plain EcsEvent, so they are informational and cannot replace the explosion or portal hooks. RespawnEvent is cancellable and is the one genuine candidate, but it carries no location, so it only partly covers RespawnLocationMixin. There is still no MobSpawnEvent, DurabilityChangeEvent, FireSpreadEvent, or AutoPickupEvent.

5 of 28 mixins changed; the other 23 target-match unchanged. Updated: PlayerItemEntityPickupSystemMixin, BlockHarvestUtilsMixin, ExplosionBlockDamageMixin, HarvestCropInteractionMixin, CraftingManagerMixin. Three of those five compile cleanly against 0.6.2 with stale descriptors and would only have failed at server startup.


This mod has no additional files