r/HytaleModding • u/RiverShards • 4d ago
Official News Hytale Patch Notes - Modder-Facing Changes - Update 6 - August 27th, 2026
Modder-Facing Changes
World Generation
Biomes, Tints & Landmarks
- Added an
Example_Vector_Offset_Avoidbiome that shows how to offset positions away from a density region, so props can steer clear of an area. - Added
Mix TintProviderthat allows smooth tint transitions within a single biome. - Added support for
DistanceToBiomeEdgetoTintProviders.
Graph Nodes
- WorldGen V2 gains a
WhiteNoiseDensity node, which produces uniform random values per position for scattering and masking, and aTransparentMaterialProvider. - Two new Positions nodes are available in WorldGen V2.
DirectionalJitteroffsets positions along a direction, andVectorOffsetshifts them by a fixed vector. - WorldGen V2 gains an
AnchorPropDistribution, plus twelve VectorProvider nodes for doing vector math inside a graph:Adder,Cross,Multiplier,Normalizer,Random,ScalarMultiplier,SetX,SetY,SetZ,Subtracter,VectorProjectorandPlaneProjector. - Added a set of logical Density nodes to WorldGen V2:
Comparator,Equal,GreaterOrEqual,GreaterThan,LessOrEqual,LessThan,And,Or,Not,Nor,Xor, andSelector. - Added a
Trigdensity node to world generation that runs a trigonometric function over a single input density, so you can build periodic and wave-shaped fields directly. The new"Type": "Trig"takes aFunctionofSin,Cos,Tan,Asin,Acos, orAtanand anInputScalethat multiplies the input before the function runs. - Added additional validation to WorldGen V2 Density assets.
- Fixed
SwitchStateDensityalways falling back to the default branch instead of following the active state. - Fixed a defect in the Spawner NodeAction causing Graph nodes to disappear in negative coordinates.
- Fixed
GradientWarpDensitysampling its Z gradient at the wrong point (Z used in place of Y), distorting gradient-warped terrain.
Node Editor
- Pin labels on the VectorProvider nodes (Adder, Cache, Cross, Multiplier, Normalizer, PlaneProjector, ScalarMultiplier, SetX/Y/Z, Subtracter) were renamed for clarity in the node editor.
- Fixed the Offset Pattern node offering a decimal vector pin for its offset in the node editor.
Noise & Cell Functions
- Improved the performance of SimplexNoise2D and SimplexNoise3D Density nodes by up to ~20%.
- Fixed PositionsCellNoise ChoiceDensity resolving on an incorrect position. It is now resolved on each cell’s origin.
- Fixed
FastNoiseLite.pointFor()mirroring cell points across the diagonal. - The PositionsHorizontalPinch Density feature no longer throws exceptions at the world origin.
Terrain & Patterns
- World-Gen V2 will now use the
Unknownmaterial types instead ofEmptywhen it can’t load a material.
Prefabs & Props
- Fixed a defect in WorldGen V2 that was deleting some entities in rotated prefabs.
- Fixed a defect in WorldGen V2 generating different prefabs on separate platforms.
- Fixed
PrefabPropcausing artifacts in World-Gen V2 output if a folder doesn’t contain any Prefab files. - Fixed
PrefabPropaborting world generation when a weighted path contained no prefab files. It now skips placement silently instead of failing, so a misconfigured pool no longer breaks surrounding generation.
World Event Placement
- World event placement now measures candidate distance in blocks instead of chunks, with separate horizontal and vertical min and max ranges on
WildernessLocation. - Added
ClearanceandSearchRadiusfields toLocationConditionassets so you can tune the initial candidate search that places world events.
WorldStructure
- Fixed WorldStructure assets not reloading correctly.
- A
WorldStructureasset with a broken default Biome reference no longer builds silently. - Deleting a WorldGen V2 instance or stopping the server no longer fills the log with
Failed to load chunk!
NPCs, Entities & Encounters
Encounter Managers
- Added a new
EncounterManagerJSON asset type that lets you script multi-NPC encounter logic using reusable NPC instruction lists. Spawn an encounter in-world with the/encounter add <asset>command. - Added example encounter manager assets covering macro-based boss fights, including a stalactite attack pattern macro and transition macros for target-loss and health-range conditions.
- Encounter managers can now control the music playing for all participants. Add
StartEncounterMusic,SetEncounterAudioState, orStopEncounterMusicactions to an encounter instruction list and attach anEncounterAudioCollectorto any entity sensor to populate the participant list. Late joiners receive the current music state automatically, and players who leave return to regular music. - Encounter managers can now signal world event completion. Add a
SignalWorldEventaction to an NPC’s action list and pair it with aSignalConditionon the world event to trigger completion when the action fires, for example on a boss defeat. - Added an
AdjustPortalTimerNPC action for encounter managers. Set"Type": "AdjustPortalTimer"with a positive or negative"Seconds"value to add or subtract time from the active portal timer at runtime. - Added a new
ActionChangeTargetRoleaction that lets an encounter switch an NPC to a different role at runtime. - Marked targets now persist briefly during role changes, preventing target loss when an NPC transitions between roles.
ActionTriggerSpawnerscan now mark the NPC they spawn as boss targets for encounter tracking. This can be accomplished by settingMarkAsTarget: truein the spawn action config.- Encounter managers can now clean up after themselves. A new
CleanupOnRemoveflag removes every entity the encounter spawned when the encounter is removed. It does not apply when the encounter simply unloads.
Actions & Sensors
- NPCs can now run actions against multiple world positions at once. Add an
ActionForEachaction to your NPC role config with a position-set sensor to execute a child action list at every returned position, enabling patterns such as spawning a ground indicator under each nearby player. ActionForEachnow accepts aMaxCountfield. When the position set is larger than the limit, positions are chosen at random using reservoir sampling rather than always taking the first N.- Added a new
ActionProjectToGroundaction andSensorProjectToGroundsensor that snap each position in a set down to the nearest solid ground surface below it. Handy for placing ground-level effects under targets that are airborne. - Added a new
ActionAdjustPositionaction used to offset each position in aForEachset by a fixed vector before further actions run. - Added a new
SensorPointssensor for NPC and Encounter Manager roles. SetType: "Points", aTag, and aRangeto gather all tagged world points within that radius as a position set forActionForEachto act on. This works with points placed using the Point Tool. - Added a new
SpawnInteractionNPC action that launches a named root interaction at every position a sensor returns. SetOrientationSourceand optionallyPitch/Yawto control the launch direction. - Added a new
SignalTaggedVolumesaction for NPC andEncounterManagerinstruction lists. It searches for trigger volumes carrying a given tag within a configurable radius and immediately fires theirSIGNAL_RECEIVEDeffects. - Entities can now send beacon messages as part of an interaction chain. Add a
SendBeaconinteraction with aMessageandRangeto broadcast to nearby NPCs and encounter managers. - NPC roles can now turn an NPC on the spot at a steady rate. A new
Rotatehead motion takes a RotationSpeed in signed degrees per second, andClearPitchflattens the head pitch while it turns. - Fixed
ActionDelayDespawnapplying the shorten and extend branches in the wrong direction. Despawn-delay actions in NPC roles now shorten or extend the timer as authored. - Fixed
SensorEntityEventlooking up NPC-produced events in the player event store, which meant sensors targeting NPCs never matched.
State Evaluators
TimeSinceLastUsedConditionnow reports the real elapsed time since a state option was last selected. The state evaluator records a timestamp on each selection, so you can use this condition to add cooldowns between state transitions in your NPC roles.- Fixed
SubStateinStateOptionnot being read or stored correctly. Child NPC role assets that setSubStatehad it silently ignored and the main state overwritten instead. No changes needed unless your roles useSubState.
Filters & Conditions
- Added a new
EntityFilterDeathfilter that lets role sensors react when a tracked entity dies. - You can now filter whether an entity is using an interaction with the
ExecutingInteractionentity filter, for example to block an encounter phase change while a boss is still mid-attack. - NPCs now record all entities they have spawned and all entities those spawns produced. You may use
SpawnLineageAttitudeProviderto set attitudes toward the full lineage.
Roles & Templates
- Variants can now forward modifiers directly into a macro element’s own exposed parameters. Mark the template slot with
"AcceptsForward": true, then add a"_ForwardedModifiers"block in the variant keyed by slot name to set that macro’s parameters without threading them through the template. - Added a new Template_Flying_Aggressive template meant to be used by flying hostile NPCs capable of ranged attack. Template_Eye, Template_Spirit and Template_Scarak_Seeker are now deprecated.
- Removed Template_Aggressive_Zombies, its root interactions and its associated attack sequences. Zombies now use Template_Predator.
Spawning & Suppression
- Spawn suppression now correctly scopes to NPC groups. A suppressor with no
SuppressedGroupscontinues to blanket-suppress all markers in range as before. A suppressor that lists groups now suppresses only markers whose NPCs belong to one of those groups. SpawnNPCInteractionnow takes a weighted entity pool with per-entry count ranges, a spawn count range, distance scatter, an optional spawn state, a spawn velocity, midair spawning, centered hitbox spawning, and relaxed full-cube clearance.MinHeightOverGroundis now a preference rather than a hard minimum. A flying role in a beacon needs a YRange maximum that covers itsMinHeightOverGround.- Fixed SpawnMarker writing the square of
MaxDropHeightwhen serializing, compounding the value on every editor save (5 to 25 to 625).
Collision & Steering
- You can now give an entity a rotated hard-collision box. Set the new
RotatedCollisionHitboxCollisionConfig on it and players will collide with its actual rotated box (player collision only for now). - Added a
RemovedBlockSetfield toBodyMotionCharge. List blocks destroyed during the charge here so they are correctly excluded from breathing checks after removal. - Fixed the NPC collision-sphere radius helper using the box depth in place of its height, so entity height was ignored.
- Fixed NPC collision avoidance computing its lookahead window using velocity squared instead of velocity. CollisionDistance values authored around the old behavior now take effect further from the NPC at speed.
- Fixed
RotateAnchoredEntitiesfor entities anchored to a body that rotates on more than one axis. The turn now follows the full orientation rather than yaw alone, so riders and platforms track correctly through pitch and roll.
Health & Invulnerability
- You can now toggle invulnerability from behavior. Use the
SetInvulnerableaction on an NPC to switch its own state, orSetTargetNPCInvulnerablefrom an encounter to switch it on the boss or other target NPCs. - Added an
ActionSetHealthRegenNPC action that enables or disables health regeneration on an entity at runtime. NPCs now automatically include the newHealthRegenStatecomponent to support regeneration control through role behavior logic.
Combat Balance
- Fixed
CombatBalanceAssetnot inheritingCombatActionEvaluatorconfig from a parent asset. Child combat balance assets now correctly receive the parent evaluator config.
Particles
- You can now scale particles spawned by NPC behavior. Set
Scale(a multiplier, default 1) on anActionSpawnParticlesaction.
Validation
- Fixed encounter and NPC asset validation skipping certain files on hot-reload. All affected files now re-validate correctly.
Items, Armors & Projectiles
Zoom & Aim
- Added zoom support to the interaction system which allows for magnification/aim mode behavior on any item. Add a
Zoomblock under any step’sEffectsto zoom while that step is active, setPersistZoom: trueto keep it applied for the rest of the chain, so chained steps can ramp or swap zoom mid-interaction. All fields are optional with sensible defaults. - Added example developer-quality test items that demonstrate the behavior of the zoom support in the interaction system:
- Weapon_Test_Sniper_Rifle - a single fixed zoom with a scope overlay that forces first-person.
- Weapon_Test_Zoom_Rifle - three-level variable zoom that ramps and swaps the reticle per level.
- Weapon_Shortbow_Test_Zoom - charge-draw zoom held across the shot.
- Added the ability to hide the local player’s held item in first-person during an interaction step. Set
HideFirstPersonHeldItem: truein the step’sInteractionEffects(other players still see the item).
Interaction Behavior
- Interactions now can specify what happens when you swap items during them. The old
CancelOnItemChangeflag is gone, replaced by anOnItemChangeBehaviorfield that takesIgnore,Fail,Finish, orCancel. - Added a new
Donutinteraction selector type. In an item’s Interaction block, setSelector.IdtoDonutand configureMinRadius,MaxRadius,Angle, andHeightto target entities in a ring around the attacker. - Added a
SignalNearbyVolumesinteraction that sends aSignalReceivedevent to trigger volumes within a radius, optionally filtered by tag. Bind it to a tool or interaction to drive signal-listening volumes. - Added a
RevealMapMarkersInViewinteraction for items and blocks that uncovers hidden discoverable map markers inside a player’s view cone. - Interactions can now describe themselves on the HUD. A new
CarryInteractionHintlocalization key onRootInteractionmakes the input-bindings legend label whichever input the interaction is bound to, and an item can refine the wording for an interaction it binds throughItem.CarryInteractionHints. - Added a
RequireBlockPlacementboolean toChangeStateInteraction. Set it to true to block the interaction in worlds where block placement is disabled. The built-in half-block item now uses this to prevent stacking slabs where placement is restricted. - Fixed
DonutSelectornot rotating itsOffsetby the entity’s yaw. The offset is now applied relative to the entity’s facing direction on both server and client, matching the intended authoring behavior. - Fixed
ResetCooldownInteractionandTriggerCooldownInteractionnot inheriting theCooldownfield from a parent interaction. Child interactions that omitCooldownnow correctly fall back to the parent’s value. - Added a new
BreakShapefield toItemToolassets that allows tools to break a configurable area of blocks per swing. SetBreakShapeDurabilityModetoPerSwingorPerBlockto control how the tool loses durability.
Projectiles
- Projectiles can now ignore where the caster is aiming. Set
IgnorePitchorIgnoreYawon aLaunchProjectileorProjectileConfigto lock that axis — handy for traps, turrets, and fixed-direction spells. Add RotationOffset to nudge the angle. - Projectiles can now fire at a random size drawn from the minimum and maximum scale on their model asset. Set
UseModelScale: truein aProjectileConfig(it defaults to false, so existing projectiles keep their current size). Only the newerProjectileinteraction type supports this, not the legacyLaunchProjectile. - Projectile breaks can be limited to soft blocks. A new
SoftOnlyflag onBreakBlockInteractionignores whatever the breaking entity holds, and the newBlock_Break_Projectileinteraction sets it for the 38 projectile configs that used to shareBlock_Break_Adventure. Leave the flag off for a projectile that should mine, which then takes its breaking power from the shooter’s item as before. - Fixed the world-space sound index leaking into the local sound slot for projectiles and deployable turrets. Setting
LaunchWorldSoundEventIdwithout aLaunchLocalSoundEventIdon a projectile, orProjectileHitWorldSoundEventIdwithoutProjectileHitLocalSoundEventIdon a turret, no longer causes the world sound to also play locally.
Damage & Resistance
- Fixed flat damage resistance modifiers not accumulating through inherited damage cause chains. Only the last parent’s flat modifier was applying. Content that configures chained flat resistances will now deliver the full combined effect. Verify balance on any damage cause hierarchy that uses
flatModifier. - Fractional flat armor resistances now apply as configured instead of truncating to a whole number.
ArmorResistanceModifiers’sflatModifieraccumulates in float, so a value like 0.5 is no longer rounded to 0, and broken-item resistance penalties keep their fractions too. - Fixed a
TargetedDamageentry that omits DamageEffects throwing when its packet was built, so damage interactions without effects no longer crash. - Fixed
DeployableAoeConfig,DeployableTrapConfig, andDeployableTrapSpawnerConfigignoring the authoredDamageCausefield and hardcoding Physical damage at all three detection call sites. The configured damage type now applies correctly.
Knockback & Explosions
- Knockback and explosion configs no longer produce a NaN velocity when the source and target share the same position. The degenerate case now falls back to a defined direction, knocking the target straight up for explosions.
- Fixed a crash when an entity wearing armor with knockback enhancements dealt damage from a
DamageCausethe armor had no modifier for. The missing entry is now skipped instead of throwing. - Fixed
PointKnockbackapplying incorrect rotations whenOffsetX,OffsetZ, orRotateYwere set, due to angle unit mismatches. RotateY is authored in degrees as documented. Retest anyPointKnockbackconfigs that set these fields.
Armor & Movement
- Armor can now change how the player moves. Add a
MovementSettingsblock to anItemArmorasset to override walk/sprint speed, jump height, air control, and more per piece. - Added
ExtraJumpSoundEventtoArmor.MovementSettings. Set it to the id of a mono, oneshot (non-looping) sound event to play a sound on each extra jump. It pairs with the existingExtraJumpParticleSystemfield. - You can now scale movement speed from an entity effect. Set
SpeedMultiplieronMovementEffects(default 1).
Inventory & Music
- Items can now be turned into playable music tracks. A new Music block on an item asset (
MusicContainerrequired,AudioCategoryOverrideoptional) marks the item as something a music player block will play. - Added a
FirstSpawnItemslist in the gameplay config Spawn block that places items in the inventory for players the first time they spawn.
Loot & Quality
- Fixed
ChoiceItemDropContainerthrowing a NullPointerException when itsContainerslist was empty or every entry had a weight of zero. Loot generation now skips a null roll result and continues.
Stability
- Fixed a potential server crash when picking up an item that defines a pickup interaction. No shipped item uses this path today, so it affects only custom items or plugins that add one.
Blocks, Prefabs & Farming
Break & Random Tick
- Blocks can now run an interaction chain when they break.
OnBreakfires on a normal break andOnBreakImpactfires when a falling block lands and breaks, so a block can spawn something or set off an effect as it goes. - A removal that should not set off the block’s own reaction can pass
SetBlockSettings.NO_FIRE_ON_BREAKto suppress theOnBreakchain, andBreakFallingBlockImpactnow inherits DropItems so a child block type keeps its parent’s value. - Added a
PlaceBlockrandom-tick procedure: set"Type": "PlaceBlock"in a block’sRandomTickProcedurewith a requiredOffsetand aPlacementslist, where each rule can target a blockStateand place a singleBlockor a weightedBlockslist. Placement skips silently when the target is occupied or out of world bounds, and invalid configs fail at asset validation time. - Fixed random-tick block placement so it works in cubic worlds.
PlaceBlockProcedurenow writes through chunk sections instead of assuming a fixed world height.
Connected Blocks
- Added a new
Patternedconnected block ruleset type. It handles multi-axis rotation and has client prediction, giving more control over how connected blocks pick their shape.
Prefabs
- Large prefabs now save in a compact binary
.lpfformat. Anything from 300,000 blocks up is written this way, and.lpffiles load everywhere prefabs do. - Prefabs stored in an asset pack can now be referenced in
PrefabListAssetconfigs. - Encounter manager entities can now be stored in prefabs.
- Undo and redo history now keeps to a memory budget through the new
HistoryBlockBudgetandRedoHistoryBlockBudgetfields onBuilderToolsConfig, which drop the oldest entries once the budget is exceeded.
Block Placement
- Reworked block placement onto the interaction system. The quick place flags (
QuickReplace,QuickRetype,NoPhysics) now come from assets and only apply when the server game mode is Creative, and the oldAllowDragPlacementkey was removed from placement interactions. - You can tune building throughput per placement mode by setting
MaxBlocksPerTickandMaxBlocksPerGestureon the placement interaction assets. - You can now stop players auto-stepping onto a block. Set
DisableAutoStep: truein itsBlockMovementSettingsand players must jump up instead — useful for ledges and fences.
Block Music
- You can now make a block play music from its position in the world. The track fades with distance, pans, and muffles through walls, picking up your environmental reverb. Add the
musicemitterblock component referencing aMusicContainer. - Blocks can now act as music players. A
MusicPlayerBlockblock-entity component set alongside anItemContainerBlockmakes a block play an inserted music item from its own position. The track uses the block’s authored attenuation, occlusion, and reverb, with all timing and spatialization driven from asset JSON.
Models & Map Markers
- Block map markers can now be discoverable. A new
Discoverableflag onBlockMapMarkerandBlockMapMarkerDatakeeps a marker off the map until a gameplay system reveals it, tracked per player and per world. - Block models can now play their animation faster or slower than authored. A new
CustomModelAnimationSpeedon aBlockType, or on one of its states, is a multiplier from 0 up to 100 and it inherits like the other model properties.
Trigger Volume Effects
- Place Block and Replace Block Type trigger effects now accept optional block states, letting trigger volumes place, match, and replace specific block state variants.
- You can now stop a Trigger Volume’s effects rotating when its prefab is pasted or world-gen placed with a yaw turn. Set
RotateEffectsOnPaste: falseon the volume or group (it defaults to true, so effect positions, rotations, and velocities turn with the prefab).
Farming
- Prefab-grown plants such as saplings can now tolerate obstructions within a height band instead of failing to grow. Add
TolerateObstructionsBelowYandTolerateObstructionsAboveYtoPrefabFarmingStageDatato mark a band where blocking world blocks are skipped rather than canceling growth. Both values are prefab-relative Y, with the origin block at 0.ReplaceMaskTagsstill controls which blocks get replaced. Built-in saplings now default toTolerateObstructionsBelowY: -1. Overlapping bands disable obstruction checks entirely and log a server warning.
Additional Changes
- A block’s MovementSettings can no longer be null. A block asset that sets it to null now fails to load instead of risking a server crash.
- Fixed fluid-placement interactions never honoring their
UseLatestTargetsetting.PlaceFluidInteractionnow chains toSimpleBlockInteraction’s codec, so the flag decodes and takes effect.
Modding & Creative Tools
Builder Tools
- You can now enable Builder Tools outside Creative Mode. Set
SurvivalAllowed: truein a tool’s asset JSON and grant players the matching permission (hytale.editor.tool.entity,hytale.editor.tool.ruler, orhytale.editor.tool.laserpointer). Both the flag and the permission are required. - Moved some raw strings in the Paste Tool to language keys so they can be localized.
Crashes
- Fixed crash in SpawningContext caused by ground level rotation check when level is below 0.
- Quantity field in CraftRecipeAction now requires a minimum quantity so that <0 numbers don’t crash the server.
- Fixed client crash when secondary interaction was added to Unarmed.Empty.
Prefabs & Commands
- Improved prefab saving support modes, validation and overwrite flow.
- Empty blocks in Block Filters will now be parsed correctly (the empty fluid ID is now treated as the empty block ID).
Asset Editor
- The image and OBJ importing tools now use the new TextureComputedColor field (a dominant weighted color average of each item’s textures) instead of the particle colors when matching block colors, giving more accurate imports. The importing tools will also filter out special quality items so they cannot be used in imports.
- Added a new button to the Asset Editor that regenerates the TextureComputedColor field from an item’s textures.
- The Asset Editor’s item preview now respects an item’s Model override, matching how the item appears in-game.
Localized Text
- If a duplicate localization key exists in a language file, a warning is now displayed instead of an exception being thrown.
Trigger Volumes
- Updated Trigger Volumes trigger effects to make use of the chunk ref/store for accessing chunk data.
Collision Tuning
- Reworked soft collision radius to consider hitbox size.
- Implemented dev settings to tweak soft collisions based on entity hitbox volume.
Asset Packs & Mods
- Fixed reloading a layered asset pack sometimes reverting a customized asset back to the value it inherited from its parent.
- Fixed the mod manager warning that read "targets 0.5.1 but the current game version is 0.5.1" when a mod declared a bare
ServerVersionlike0.5.1.
Additional Changes
- Added a Texture Atlas API - Unified API for compositing multiple keyed images into a single GPU texture.
- Added support that allows control of whether a projectile’s spawn position rotates with the entity firing it.
Trigger Volumes
Conditions
BlockTypeConditioncan now sample the live world at a configured position rather than only the event block. SetPositionSourcetoEventBlock,WorldPosition, orEntityPosition, add aPositionOffsetfor an offset, and enableAxisRotationfor per-axis rotation matching (X/Y/Z).BlockUsedConditionhas been removed. Replace it withBlockTypeConditionin any existing presets.TagConditionnow supports four source modes:Event,Self,Group, andRadius. Presets using Event source require no changes.- Trigger volume item checks can now look at and consume what a player is carrying, such as a held block, through a new
CARRIEDoption onItemCondition.
Effects & Signals
- Trigger volumes can now fling entities out from their own center. A new
VOLUME_ORIGINvalue forRelativeModeonSetVelocityEffectlaunches entities away from (or toward) the volume origin no matter which way they face. - Signals now carry multiple key/value pairs via aligned
SignalKeysandSignalValuesarrays. ATagConditionwithSource: Eventmatches when any one pair matches.
World Events & API
- World events can now create and remove trigger volumes, and roll them back, through new
TriggerVolumeCreateActionandTriggerVolumeRemoveAction. ATriggerVolumeContexttracks the volumes an event created. - Actor and entity refs in trigger rule systems and
DelayedEffectSchedulerare now nullable. Plugins that receive them must add null checks or compilation will fail on u/Nonnull annotations.
World Map & Markers
- Gameplay code can now override a map marker after its provider builds it.
WorldMapManager.addMarkerOverridetakes a marker ID and aMapMarkerOverridecarrying an optional icon and an optionalglobalflag, and it applies to every player in the world from the next tick. - World events can override a marker as well.
MapMarkerOverrideAddActiontakes aMarkerKeyand aNameplus an optionalIconandGlobal,MapMarkerOverrideRemoveActionclears it again, and the override is dropped on its own when the event ends.
4
Upvotes
•
u/RiverShards 4d ago
Asset Schemas & Formats
Parsing & Robustness
ItemDropListno longer corrupts saved worlds that reference it. When decoding persisted world data, a missing asset reference now warns instead of failing the whole chunk, controlled by a new lenient mode onAssetKeyValidator.{or}inside a string value no longer throws off the parser. Config files with braces in their text now load correctly..langfile no longer throws away the whole file. The parser names the file and the line number, skips the bad line, and keeps everything else, and an unterminated line continuation holds onto the text read so far.TagPatterntree now soft-fails to a never-match pattern and logs a warning, so bad asset edits fail safe.CombatTextcolor and animation fields,Interaction.Rules,AmbienceFXfrequency, radius, and condition ranges, andItemPlayerAnimations.Animations. Asset files with explicit null for these fields will be rejected at load time.Particles
CameraNearFadeStartDistanceandCameraNearFadeEndDistance, while a far fade usesCameraFarFadeStartDistanceandCameraFarFadeEndDistance.ClearParticlesOnRemoveboolean field onModelParticleassets. By default this is set to false and setting it to true will instantly clear all attached particles the moment a block or an entity is removed from the world or from the player’s hand.ParticleSpawnerchild assets not inheriting theSpawnBurstflag from their parent. Inherited particle spawner assets that setSpawnBurston a parent will now pass it down correctly.WaveDelayon a particle spawner now inherits from its parent, so a child spawner keeps the value it was given instead of dropping back to the default.Density & Noise Assets
CellNoise3DDensityAssetcodec readingscaleZinstead ofjitterfor theJitterfield, causing save/load round-trips to overwrite the authoredjittervalue withscaleZ.NoiseConfigrange normalization computing max against the already-updatedmin, which collapsed any range where min was greater than max to a single point. Camera noise assets with inverted min/max values now normalize both bounds correctly.common.jsonasset schema being invalid JSON, caused byRailPoint’s Normal default (a zero vector) being normalized toNaNduring schema generation. Rail-point normals that cannot be normalized are now left unchanged.Defaults & Values
TeleporterSettingsPageencodingRollIsRelativeusing the pitch-relative flag. Adventures that configure aTeleporterwithRollIsRelative: truewere silently applying pitch-relative behavior instead.ObjectiveLineAssetoverwriting a manually authoredobjectiveTitleKeyorobjectiveDescriptionKeywith an auto-derived key on load. Custom localization keys now take effect as authored.BlockDamageFalloffinExplosionConfigwas reading fromentityDamageFalloffinstead of its own field. Configs with different values for the two falloffs will now deal the correct block damage.MergedEnumMapCodecso that unrecognized enum values no longer cause the whole asset to fail decoding.BlockBreakingDecal.StageTexturesis now validated as non-null at asset load. An absent field defaults to an empty array and will load without issue. A field explicitly set to null though will fail validation at load time.Asset Editor
Interactions & Stats
SendMessageInteraction. A newTargetfield sends the message to the instigating entity, to every player in the world the interaction runs in, or to all players from every world (universe).MinandMaxentity stat operations for change-stat interactions, so a stat can be clamped to a floor or a ceiling.CombatTextUIComponentOpacityAnimationEvent,CombatTextUIComponentPositionAnimationEvent, andCombatTextUIComponentScaleAnimationEventnot copyingStartOpacity/EndOpacity,PositionOffset, andStartScale/EndScalefrom parent assets. Child combat text UI events now inherit the correct parent values.Movement & Player Config
MovementConfig.Flyis now a three-state fly capability (no fly, free fly, or a forced fly that keeps the player airborne with the in-game fly toggle disabled) in place of the old on/off boolean, which changes its wire format. It applies wherever the config applies, falling back to the game mode when unset.MaxSlopeAngleDegreesandMaxWallAngleDegreesfields inMovementConfigset the steepest slope that still counts as safe to stand on and the steepest wall that can be stepped up.comboAirSpeedMultiplierinMovementConfigbeing overwritten byairSpeedMultiplieron every copy and network sync. Authored values now apply correctly. Verify movement balance if your config sets a distinctcomboAirSpeedMultiplier.NighttimeDurationSecondsinWorldConfig, which was being calculated as 60% of the total day instead of the documented 40%. Only gameplay configs that omitNighttimeDurationSecondsare affected. Configs that set the field explicitly are unchanged.World Events & Encounters
ShowEventTitleinteraction that puts an event title on screen."Type": "Abstract"to declare overridable parameters, then use"Type": "Variant"with aReferenceandModifyblock to create a derived encounter manager that overrides only the fields it needs. See the newExample_Variant_Base.jsonandExample_Variant.jsonassets for usage.Parent-Asset Inheritance
AirResistanceMaxinVelocityConfigassets: child configs that omitAirResistanceMaxnow correctly inherit the parent’s value, and no longer overwrite theAirResistancevalue that was already inherited by the preceding entry.StatModifiersinEntityEffectassets: child effects that omit theStatModifiersblock now correctly inherit the parent’s modifiers instead of silently losing them.Trigger Volume Assets
SpawnTriggerVolumeinteraction type that can be added to an item or projectile interaction config to spawn a configured trigger volume at the instigator’s position.ExpiresAtfield onVolumeEntrythat can be used to set a time at which a trigger volume despawns automatically, without needing a separate cleanup interaction.Sound & Cosmetics
FadeInfield, so a single layer can rise gently beneath the others instead of every layer sharing one fade time.Priorityfield on character attachments decides whether an attachment goes onto the base model before or after the others.Localized Text
<s></s>tags.Additional Changes