1.205
Jump to navigation
Jump to search
Deeper changes relevant to scripters, modders and server admins.
Official patch notes: 1.205
Created by manually analyzing the differences between 1.204.018b2 and 1.205.026.
Page last edited on 2026 January 14 12:53
All sections can affect modAPI too.
For example a new element in a definition noted in SBC section would not also be marked in the ModAPI section.
For example a new element in a definition noted in SBC section would not also be marked in the ModAPI section.
Servers & Admins
- All servers in server browsers now include total mod size.
- Clients are now declined connection if their name is longer than 32 characters.
- Players are no longer able to transfer to "nobody", only admin-rank can.
- AssemblerSpeedMultiplier's math changed:
- Was:
(World_AssemblerSpeedMultiplier * block_AssemblySpeed) + modules_Productivity - Now:
World_AssemblerSpeedMultiplier * (block_AssemblySpeed + modules_Productivity)
- Was:
Note: The "default" below means the value if not defined in the world file, however world templates and scenarios will likely have a different predefined value, search for the <TagName> in files to find them.
- New visible world settings:
- Block Limits: Limit Blocks by (
<LimitBlocksBy>- enum, default BlockPairName; all values: BlockPairName, Tag) - Others: Max messages in HUD chat (
<MaxHudChatMessageCount>- int, default 100)- Game's description: Maximum number of messages displayed in HUD chat
- Environment: Encounter Density (
<EncounterDensity>- float, default 0.35)- Game's description: Defines density of the procedurally generated encounters.
- NPCs: Global Encounter PCU (
<GlobalEncounterPCU>- int, default 25000)- Game's description: Number of Performance Cost Units allocated for global encounters.
- NPCs: Global Encounter Timer [min] (
<GlobalEncounterTimer>- int, default 15)- Game's description: Global Encounter spawns every X minutes.
- NPCs: Global Encounter Cap (
<GlobalEncounterCap>- int, default 1)- Game's description: Maximum of active Global Encounters at the same time. Turned off when 0.
- NPCs: Global Encounter Enable Removal (
<GlobalEncounterEnableRemovalTimer>- bool, default true)- Game's description: Enable of removal of Global Encounters.
- NPCs: Removal Timer Min [mins] (
<GlobalEncounterMinRemovalTimer>- int, default 90)- Game's description: Minimum removal timer [minutes] for Global Encounters.
- NPCs: Removal Timer Max [mins] (
<GlobalEncounterMaxRemovalTimer>- int, default 180)- Game's description: Maximum removal timer [minutes] for Global Encounters.
- NPCs: Removal Time Clock [mins] (
<GlobalEncounterRemovalTimeClock>- int, default 30)- Game's description: When the game should start countdown for removal of Global Encounter.
- NPCs: Enable Planetary Encounters (
<EnablePlanetaryEncounters>- bool, default true)- Game's description: Enables planetary encounters in the world.
- NPCs: Installations Timer Min [mins] (
<PlanetaryEncounterTimerMin>- float, default 15)- Game's description: Minimum [minutes] for Planetary Encounter spawn timer.
- NPCs: Installations Timer Max [mins] (
<PlanetaryEncounterTimerMax>- float, default 30)- Game's description: Maximum [minutes] for Planetary Encounter spawn timer.
- NPCs: Existing structures allowed [m] (
<PlanetaryEncounterExistingStructuresRange>- int, default 7000)- Game's description: Minimum distance to existing structures for Planetary Encounter spawns.
- NPCs: Existing installations allowed [m] (
<PlanetaryEncounterAreaLockdownRange>- int, default 10000)- Game's description: Claim area radius for Planetary Encounter spawns - no more installations would spawn there until clean-up.
- NPCs: Desired spawn distance [m] (
<PlanetaryEncounterDesiredSpawnRange>- int, default 6000)- Game's description: Player-based distance for Planetary Encounter spawns.
- NPCs: Presence distance [m] (
<PlanetaryEncounterPresenceRange>- int, default 20000)- Game's description: Player presence within this range prevents installation auto-removal.
- NPCs: Installations despawn timeout [mins] (
<PlanetaryEncounterDespawnTimeout>- float, default 120)- Game's description: Timeout [minutes] for permanent installation auto-removal.
- Block Limits: Limit Blocks by (
- New hidden world settings:
<EncounterGeneratorVersion>- int, default 6
- World setting changes:
- NPCs: Pirate PCU (
<PiratePCU>) default changed from 50000 to 25000. - NPCs: NPC Factions Count (
<TradeFactionsCount>) default changed from 15 to 10. - NPCs: Stations Inner Radius (
StationsDistanceInnerRadius) default changed from 10000000 to 5000000. - NPCs: Stations Outer Radius Start (
StationsDistanceInnerRadius) default changed from 10000000 to 5000000. - NPCs: Stations Outer Radius End (
StationsDistanceInnerRadius) default changed from 30000000 to 10000000. - Environment: "Procedural Density" renamed to "Procedural Asteroids Density".
- Environment: "Max Broadcast Controller distance when owner offline [m]" renamed to "Offline Broadcast Controller Distance [m]"
- NPCs: Pirate PCU (
SBC & Art Modding
- Factions:
- SessionComponentEconomyDefinition (Game/SessionComponents_Economy.sbc) - all the
<Station_Rule_*>tags got moved to FactionTypes_Economy.sbc. - FactionTypeDefinition (FactionTypes.sbc) got
<Station_Rule_*>(see above) plus<PreferDeep>,<Relations>,<FriendsWith>,<TypeDescription>,<TypeDescriptionVariants>,<FactionRatio>(refer to FactionTypes.sbc for documentation). - FactionNameDefinition (FactionNames.sbc) got
<Type>(refer to Factions.sbc for documentation). - FactionDefinition (Factions.sbc) got
<Type>,<StaticReputation>,<IconColor>,<BackgroundColor>(refer to Factions.sbc for documentation).
- SessionComponentEconomyDefinition (Game/SessionComponents_Economy.sbc) - all the
- Blocks:
- All door types now open/close from interacting with
detector_terminalempty (was only the Door type previously). - All block definition (CubeBlockDefinition) changes:
<UsePhysicsCastForInteractionCheck>renamed to<AllowInteractionThroughBlock>(bool, default false) - game's doc: Used when block has see-through parts (like holodisplay) that you want to be able to interact through.- Got
<NewsletterSubscriptionNeeded>(bool, default false) - if true the block requires client to've subscribed to Keen's newsletter to be able to use. - Got
<SimpleUpdateVisualOnSkinChange>(bool, default false) - game's doc: Set to true if you dont want to reset subpart positions or reload the whole model on skin change.
- AirtightSlideDoor and AirtightHangarDoor now get placed closed instead of open.
- Assembler and SurvivalKit got
<IgnoreEfficiencyMultiplier>(bool, defaults false) - this assembler ignores the AssemblerEfficiencyMultiplier world setting. - JumpDrive got:
<ShipJumpDriveChargingSound>(audio subtypeId, default: ShipJumpDriveCharging)<ShipJumpDriveJumpInSound>(audio subtypeId, default: ShipJumpDriveJumpIn)<ShipJumpDriveJumpOutSound>(audio subtypeId, default: ShipJumpDriveJumpOut)<JumpParticleEffect>(particle subtypeId, default: Warp)
- InteriorLight and ReflectorLight got
<LightOnlyNoEffectsDummyName>(string, dummy name, default empty; separates light source from flare and cone). - Rotors got
<MediumTopPart>(string, blockpair name, defaults null) - the tag exists for all mechanical blocks but it's only implemented for rotor types; used by the "Add Medium Head" button in terminal and toolbar. - ShipConnector got
<ConnectDirection>(SerializableVector3, defaults 0,0,-1) - Determines which direction the connector can connect, at a max hardcoded angle of 45deg off. +X is right, +Y is down (yes it's wrong) and +Z is back. You can mix all 3 to get a diagonal direction too. Example:<ConnectDirection x="-1" y="0" z="1" />for 45deg left and forward. - ShipDrill got:
<DiscardingMultiplier>(float, default 3)<Speed>(float, radians, default 12.566371 or pi*4)<CounterRotatingSubparts>(<string>list of model paths; see CubeBlocks_Prototech.sbc)<DustEffect>(particle subtypeId, default Smoke_DrillDust)<DustStoneEffect>(particle subtypeId, default Smoke_DrillDust)<SparksEffect>(particle subtypeId, default Smoke_DrillDust_Metal)<DrillingMaterialName>(PhysicalMaterial subtypeId, default ShipDrill)
<ThrusterType>from Thrust block type can also be assigned toPrototechnow (see ShipSoundGroups.sbc).
- All door types now open/close from interacting with
- Encounters & Loot:
- Game\Game.sbc got
<EncounterColors>(list of hex RGB values, defaults empty); prefabs spawned with SpawningOptions.RandomizeColor get colors randomized for blocks painted as a specific red color (360°, 100%, 100% in-game HSV or 1, 0.2, 0.55 inside the file). - ContainerTypeDefinition (ContainerTypes.sbc, loot)'s
<Item>got<StoryCategory>(string for Stories.sbc subtypeId) - DropContainerDefinition (DropContainers.sbc) got
<AuthorshipFaction>(string, faction definition subtypeId). GlobalEncountersGeneratorDefinitiongot added to Game\SessionComponents.sbc and GpsColor is indeed the only tag available.- Configuration.sbc changes:
- No longer uses a single
<LootBag>but multiple inside<LootBags> <LootBag>(ContainerDefinition) got<Size>(grid size either Small or Large, defaults Large).
- No longer uses a single
- SpawnGroupDefinition (SpawnGroups_*.sbc) has changes:
- Note: SpawnGroups_GlobalEncounters.sbc has documentation for these.
- Got
<IsGlobalEncounter>(bool, default false) - Got
<GlobalEncounterSettings>(complex, default null) - Got
<FactionTypes>(list of<Type>with string values, default empty) - Got
<Factions>(list of<SubtypeId>with string values, default empty) - Got
<IsPlanetaryEncounter>(bool, default false) - Got
<PlanetaryInstallationSettings>(complex, default null) with some mentions that are not in the SBC's docs:<PlanetName>is checked as contains for the planet name (case-sensitive), so if you had a planet called NotEuropa it will get the vanilla planetary encounters meant for Europa.<MaterialTypeName>refers to a voxel material's<MaterialTypeName>(where multiple can use the same one), not the<SubtypeId>.
- Got
<RandomizedPaint>(bool, default false) - Got
<MinFactionSubEncounters>(byte, default 0) - Got
<MaxFactionSubEncounters>(byte, default 5) - Got
<MinHostileSubEncounters>(byte, default 0) - Got
<MaxHostileSubEncounters>(byte, default 1 or 5 who knows which one is respected) - Got
<FactionSubEncounters>(complex, default null) - Got
<HostileSubEncounters>(complex, default null) <IsPirate>was removed (replacement is to use Pirate value in<FactionTypes>)<Prefab>got<GpsGrid>(bool, default false)<Voxel>got<Orientation>(nullable quaternion, default null)
- Game\Game.sbc got
- EntityComponents:
EntityCapacitorComponentDefinition(EntityComponents.sbc for railguns) got<ChargeMultiplier>(float, default 0.8 - multiplies input power, 0.8 means 20% loss)RandomCargoEntityComponentcan exist in prefabs' blocks; it's a block-independent version of ContainerType tag in cargo containers, it still requires the prefab to be spawned via with SpawningOptions.SpawnRandomCargo to function; refer to /Content/Data/Prefabs/GlobalEncounters or PlanetaryEncounters for examples.RotatingSubpartComponentDefinition(EntityComponents.sbc) got:<PropagateRotationToChildernSubparts>(bool, default false)<Spinup>(float, default 1)<Spindown>(float, default 1)<NeedsEnergyToRotate>(bool, default false)
ShipSoundGroup's<Sounds>(ShipSoundGroups.sbc) gotPrototechThrusters,PrototechThrustersIdle,PrototechThrusterSpeedUptypes.
Programmable Block API
- PB's Run toolbar action now has a second prompt for a label which is written on the action icon (it's normally for status).
- New objects:
MyRotationDirection(enum, used byIMyMotorStator.RotateToAngle())
- The obsolete
Ingame.IMyOxygenGeneratorwas removed. IMyTerminalBlock.CustomNamesetter is now limited to max 512 characters.IMyGasGeneratorgotIsProducing.IMyMotorStatorgotRotateToAngle().IMyPistonBasegotMoveToPosition().IUserCustomizableTerminalActiongotGetBlock()(still inaccessible).IMyShipController.GetCurrentMass()was changed which mass value it adds to tally physical mass, unclear what the consequences are.MathHelpergotClamp(byte, byte, byte)overload.- Terminal Property "ShowInToolbarConfig" was removed (bugreport) - this does not affect the interface property.
Visual Scripting Tool
SetChatMaxMessageCount()no longer does anything.
Mod API
- Official API docs have been updated for 205 (changes)
- Unofficial/community API docs
- New Objects:
IMyGlobalEncounterComponent(entity component marking a global encounter, can be on grids and voxelmaps)IMyRandomCargoEntityComponent(block entity component)IMyRespawnComponent(block entity component)GlobalEncounterSettings(data struct)MyCubeBlockTagDefinition(BlockTags.sbc; currently the Tag is assigned from SubtypeId)MyStoryCategoryDefinitionandMyStoryDefinition(Stories.sbc)PlanetaryInstallationSettingsandSubEncounter(used byMyObjectBuilder_SpawnGroupDefinition)MyBlueprintIdTrackerMyLightSourceType(used byMyLight)IMyRandomCargoEntityComponent(block entity component)IMySubtypedComponent
- The obsolete
ModAPI.IMyOxygenGeneratorwas removed. MyCubeBlockDefinitiongotTagDefinitionfield reference (it's not defined in block SBC however, but in BlockTags.sbc)MyPhysics.CollisionLayersgotStaticGridsSearchCollisionLayer(5) which ignores collisions with a lot of things, see Physics (section Layers) for details.SpawningOptionsenum got:RandomizeColor- Replaces mask color (Vector3(1f, 0.2f, 0.55f)) with a random colorSetNpcSpawnedGrid-Sets NPC spawned grid to true for the spawned gridsSetOwnerNobody- Sets ownership to nobody
IMyNPCGridClaimSessionComponentgot some events (doesn't matter, no way to get reference to this).MyDefinitionManagergot:TryGetSpawnGroupDefinition()GetStoryDefinition(),GetStoryDefinitions(),GetRandomStoryDefinition(),GetAllStoriesDefinition()GetStoryCategoryDefinition(),GetAllStoryCategoriesDefinition()GetTagDefinition(),GetStoryDefinition()GetLootBagDefinition()now has a required parameterMyCubeSize size
Sandbox.Game.StringExtensionsgotTruncate().MyCubeBlock.UpdateEmissiveParts()is no longer static.MyAutopilotWaypointgot aToolbarfield (not directly usable).MyCubeBlockHighlightModesenum gotWhenIsWorkingvalue (and it's used by all doors).MyCubeGridgot:OnBlockAddedGlobally,OnBlockRemovedGlobally,OnBlocksChangeFinishedGloballystatic eventsOnDynamicNPCGridOrSubgridShootingeventHasMechanicalTopPenindingReattachbool field (and HasMechanicalBlocksWaitingOnAttachUpdate includes it with OR)HasCubeGridRenderandIsBlockAreaChangebool get propertiesInitFromClipboardbool get&set property; game doc: "True if created from <see cref="T:Sandbox.Game.Entities.Cube.MyGridClipboard" />. Set earlier than IsProjected, before blocks/ec are handled"RemoveBlocksBuiltByID(long)was replaced byRemoveBlocksBuiltByIDs(List<long>)ChangeShareRequest()static method- Probably should not be used:
HandleRemovalOfOwnershipTransferRequests(),OnChangeOwnersRequestConfirmation(),CancelPendingTransferRequestsServerSide(),Players_PlayerRemoved()static methods andGunShooting()method.
IMyGridGroups(MyAPIGateway.GridGroups),MyGridGroupsHelper,MyCubeGridGroupsall gotFindConnection()(has docs on it).MyEntitiesno longer hasIsWorldLimited(),WorldHalfExtent(),WorldSafeHalfExtent(),IsInsideWorld()(the ones in MyAPIGateway.Entities / IMyEntities still work, they got redirected to their new internal location).MyEntities.RemapObjectBuilder()now returnsIMyRemapHelper.IMyRemapHelpergotGetRemapInfo().MyEntityList.GetEntityList()got an overload with IEnumerable<MyEntity> parameter.MyFloatingObjectgotShouldUpdateTooltipsbool get property.MyGyrogotOnGyroPowerChangedevent andIsAccountedByGyroSystembool get&set property.MySessionComponentSafeZonesgotGetBelongingSafezones()andIsInSafezone()static methods.MyVoxelBasegotIsGlobalEncounterAsteroidproperty.MyStoreBuyItemResultsenum gotLimitsGridSize,LimitsNoFaction,LimitsPerBlockType,LimitsPlayervalues.MyLightingLogic.LightLocalDatagotTypefield.MyResourceSinkComponentgotForceCallNextIsPoweredChanged().MyLightgotLightSourceType.IMyEntityCapacitorComponentis now implemented by the internal component therefore can be retrieved viablock.Components.TryGet<IMyEntityCapacitorComponent>(out variable).MyFactionTypesenum gotCustomoption (which is automatically used if it's not one of the other presets).MyFactionNameTypeEnumenum gotUnknownoption.MyComponentContainergotTryGet(Type, MyStringHash, out MyComponentBase)overload.MyHierarchyComponentBasechanged return type ofChildrenNeedingWorldMatrixfromListReader<MyHierarchyComponentBase>toHashSetReader<MyHierarchyComponentBase>.MyEntitygotPropagateSubpartRotationThroughHieerarchybool field andGetCubeBlockParent()static method.MyEntity.SetEmissivePartsForSubparts()is now recursive to affect the entire tree of subparts.IMyUseObjectgotShouldUpdateTooltipsbool property.MyActionDescriptionandMyUseObjectBasegotthing.IMyCubeGridgotIsNpcSpawnedGridbool property.IMyFactiongotFactionTypeproperty andHasLastMember()method.IMyFactionCollection's (MyAPIGateway.Session.Factions)CreateFaction()method got marked obsolete, andCreateFactionNew()was added.- ObjectBuilder notable changes (there's more than this transformed in other sections):
MyObjectBuilder_AirVentgotToolbar.MyObjectBuilder_Gps.Entry:- Got
IsGlobalEncounterGPS. - Notice:
List<MyObjectBuilder_Gps.Entry> Entrieshas a different ProtoMember tag number (31 to 35), only affects modders storing these as binary and reading them back, won't get any entries; game uses XML parser.
- Got
MyObjectBuilder_IdentitygotIsGlobalEncounterSpawner.MyObjectBuilder_PlayergotGameAcronym.