File Details
RegionSpawnMobs-1.1.7.jar
- R
- May 16, 2026
- 613.31 KB
- 50
- Early Access
File Name
RegionSpawnMobs-1.1.7.jar
Supported Versions
- Early Access
Changelog - Version 1.1.7
Release Summary
This release expands the region authoring workflow around ZONE and CUT, cleans up
region JSON output, and brings containment performance in line with the existing spawn
range system.
The main goals are:
- make cuts configurable like zones, with one cut containing multiple rectangles
- keep region files readable without changing the existing field names
- remove unnecessary Y data from area rectangles
- avoid global containment work when only nearby regions matter
- preserve existing spawn behavior, capacity, density, zones, cuts, and SpawnPoints
New for Server Admins
1) Spawn Passes - new region field
Controls how many spawn rounds a region can execute within the same valid cycle.
| Value | Behavior |
|---|---|
| 1 (default) | One spawn round per valid cycle, same as previous behavior |
| 2 - 10 | Multiple rounds per cycle; each round re-rolls quantity from the preset |
How to configure:
- Region editor -> Region tab -> Spawn Passes dropdown (1x - 10x)
Rules:
- each pass calculates remaining space before rolling quantity
- in WAVE mode, each pass also respects the remaining wave target
- if a pass spawns nothing, the next pass still runs
- passes stop early when there is no remaining capacity or the rolled quantity is 0
- the spawn interval is only marked if at least one mob is spawned across all passes
- if many passes consistently fail, a rate-limited warning is emitted every 60 seconds
Practical impact:
- useful for large regions, especially 8x8 chunks or bigger
- does not increase total capacity, only increases spawn attempts per cycle
- batchSpawnPlacement and allowChunkDensityOverflow apply independently within each pass
2) Dedicated Zone and Cut configuration pages
Added dedicated GUI pages for editing region areas:
- ZoneConfigMenu
- CutConfigMenu
Both pages support:
- selecting/loading a region
- creating an area from the current Builder Tools selection
- adding additional boxes to an existing area
- teleporting to an area or a specific box
- selecting a box back into Builder Tools selection
- relocating a box from the current selection
- removing individual boxes
- removing the whole area with confirmation
The plugin now registers both custom pages during startup.
3) Cut now follows the Zone rectangle model
Cuts no longer need to be created as many separate cut areas.
New behavior:
- /rsmaddcut <region> <cutName> creates the cut if it does not exist
- running the command again with the same cut name adds another rectangle to that same cut
- RegionRelocateCutCommand keeps the cut as a single area and replaces its rectangles when relocating
- cuts explicitly use mode = "CUT"
- cut rectangles use the region Y range automatically
This makes JSON smaller and easier to configure because one named cut can contain many strategic blocked rectangles.
4) Region editor improvements
The main region config GUI now has a Zones tab.
New region editor behavior:
- zones and their boxes are listed directly in the region editor
- zones/boxes can be teleported to from the editor
- zones/boxes can be removed with confirmation
- configured mobs are removed from row actions instead of a separate remove dropdown
- mob selection preserves the exact entity id casing
- mob count display now shows a per-entity breakdown using the live region scan
Region JSON Format
Cleaner output without changing field names
Region JSON now keeps the existing schema and field names, but writes common compact objects on one line:
- positions
- area rectangles
- entity configs
- spawn conditions
- primitive arrays such as timeOfDay, weather, and allowedEntities
- SpawnPoints
Example rectangle output:
{ "firstPosition": { "x": -489.0, "z": 697.0 }, "secondPosition": { "x": -464.0, "z": 707.0 } }
This keeps old names like firstPosition, secondPosition, entities, spawnPoints, and areas, while reducing file length and improving readability.
Area rectangles no longer write Y
ZONE and CUT rectangles no longer save y in JSON.
Reason:
- areas always use the region Y range
- per-rectangle Y made the file more confusing
- saving only X/Z reflects how cuts and zones are actually configured
Compatibility:
- old region files with y inside area rectangles still load
- old rectangles are normalized to the region boundary Y
- files are auto-saved back in the cleaner format when loaded/saved
Boundary and SpawnPoints are unchanged
The region boundary still keeps full X/Y/Z positions.
SpawnPoints still keep their own X/Y/Z because their exact height matters.
Containment and Performance
Containment now uses SpatialRegionGrid
Containment no longer loops over every active region globally.
New behavior:
- player positions are collected once per containment cycle
- nearby regions are found through SpatialRegionGrid
- the search range uses the existing playerRangeSpawnChunks
- each nearby region is still filtered by active state, world, and containment config
- the existing teleport/safe-position logic is reused
Practical impact:
- better scaling for worlds with hundreds or thousands of regions
- regions far from all players do not consume containment work
- spawn behavior and spawn quantity are unchanged
Loaded fugitive mob reconciliation
Containment now also checks loaded chunks around players for mobs with RegionTrackerComponent.
If a tracked mob is loaded near a player and is outside its original region:
- the mob's region is resolved by tracker id
- inactive/wrong-world regions are ignored
- tamed or retyped mobs have their tracker removed and are ignored
- correction uses the existing containment teleport logic
This improves the case where a mob escaped while normal border containment did not catch it yet.
Unloaded chunks are intentionally ignored until a player loads them.
Fixes
Visualization refresh tuning
Static visualization lifetime/refresh was adjusted:
- static visual time: 5.5s
- static refresh interval: 5s
This keeps region visuals responsive without re-sending static shapes every tick.
Chunk scan ignores tamed/retyped mobs
ChunkIterator now removes the region tracker from mobs whose NPC role no longer matches
the tracked entity id.
Practical impact:
- tamed mobs no longer count against region density/capacity
- trim, containment, and live mob counts ignore those mobs after tracker cleanup
Zone/Cut area Y normalization
Area rectangles are normalized to the parent region boundary Y on load/save and when creating
or relocating cuts. This avoids inconsistent JSON and keeps area behavior aligned with the
region boundary.
Documentation and Internal Cleanup
- Updated the Portuguese region action guide with CUT and ZONE behavior.
- Added documentation for area combinations, masks, zone entity pools, and area maxAlive behavior.
- Added RegionAreaRectangleAdapter for compact/compatible rectangle JSON.
- Added standalone ZoneConfigGui and CutConfigGui page implementations.
- Removed stray compiled Hytale class files from the tracked project tree.
Compatibility
- Data compatibility: compatible with 1.1.6
- Migration required: no
- New field in SpawnRegion: spawnPasses defaults to 1 and is clamped to 1-10
- Area rectangle JSON changed visually, but not conceptually:
- old X/Y/Z rectangles still load
- new saves write X/Z only for area rectangles
- boundary and SpawnPoint coordinates remain X/Y/Z
- Spawn quantity, density, capacity, ZONE, CUT, and SpawnPoint rules are preserved
Version: 1.1.7

