1.202
Jump to navigation
Jump to search
Deeper changes relevant to scripters, modders and server admins.
Created by manually analyzing the differences between 1.201.014 and 1.202.124.
Page last edited on 2025 April 29 02:49
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
- 1.202.124 additions:
- Dedicated server config (IMyDedicatedConfig) got
RemoteApiIP.
- Dedicated server config (IMyDedicatedConfig) got
- 1.202.112 additions:
- Dedicated server config (IMyDedicatedConfig) had
string WorldPlatformreplaced withbool CrossPlatform.
- Dedicated server config (IMyDedicatedConfig) had
- World settings got (
MyAPIGateway.Session.SessionSettings):EnableSpaceSuitRespawn=true (Enables player to respawn in space suit)MatchRestartWhenEmptyTime=0 (Server will restart after specified time [minutes], when it's empty after match started. Works only in PvP scenarios. When 0 feature is disabled.)EnableFactionVoiceChat=false (Faction Voice Chat removes the need of antennas and broadcasting of the character for faction.)EnableOrca=true (Enable advanced Optimal Reciprocal Collision Avoidance)MaxProductionQueueLength=50 (Maximum allowed length of a production queue. Can affect performance.)
SBC & Art Modding
- 1.202.112 additions:
- Fonts (folder) got 3 new characters (the platform icons) which are added before every player's name.
- Fonts.sbc got a
SwappedPathattribute per<Path>tag which is used in PlayStation when "AreEnterBackButtonsSwapped" which is never true on PC (also we don't have the XML they point to, gonna be tricky for mod.io font mods).
- New block types:
- EventControllerBlock (CubeBlocks_Automation.sbc)
- PathRecorderBlock (CubeBlocks_Automation.sbc)
- BasicMissionBlock (CubeBlocks_Automation.sbc)
- FlightMovementBlock (CubeBlocks_Automation.sbc)
- DefensiveCombatBlock (CubeBlocks_Automation.sbc)
- OffensiveCombatBlock (CubeBlocks_Automation.sbc)
- EmotionControllerBlock (CubeBlocks_GridAiPack.sbc)
- All block definitions got:
- <EnableUseObjectSimpleTargeting> (bool, defaults false) which if set true I think ignores the visual model when targetting an UseObject (terminal, inventory, etc)
- <MechanicalTopInitialPlacementOffset> (Vector3, defaults null) which is used only by rotors/pistons/suspensions to offset the top part spawn point, used by 2x2 suspensions.
- Camera block got a
cameradummy option which is used for position offset only (no rotation). - AirVent definition got <RotationSpeed>, <SpinUpSpeed>, <SpinDownSpeed>.
- these are for the new rotating subpart support, which grabs the very first subpart it finds no matter the name.
- Missile ammo definition got <MissileRicochetAngle> (float, -1, degrees), <MissileRicochetDamage> (float, 0), <MissileRicochetProbability> (float, 0)
- EntityComponents got a <RemoveExistingComponentOnNewInsert> (bool, true), where setting it false allows this component to be used multiple times on the same entity.
Programmable Block API
- Detailed info got color support (bottom right in terminal):
[color=#AARRGGBB]for custom colors (in hex format),[/color]closing tag.- surround with
[and]for yellow. - to print [ or ] without coloring, use
[[or]].
- New objects:
IMyEventControllerBlockIMyOffensiveCombatBlock(use TryGetSelectedAttackPattern() for getting active component)IMyAttackPatternComponentIMyOffensiveCombatCircleOrbit(entitycomponent)IMyOffensiveCombatHitAndRun(entitycomponent)IMyOffensiveCombatIntercept(entitycomponent)IMyOffensiveCombatStayAtRange(entitycomponent)
IMyDefensiveCombatBlockIMyBasicMissionBlockIMyBasicMissionComponent(entitycomponent)IMyBasicMissionFollowHome(entitycomponent)IMyBasicMissionFollowPlayer(entitycomponent)
IMySearchEnemyComponent(accessible viaSearchEnemyComponentproperty in offensive and defensive blocks)IMyFlightMovementBlockIMyPathRecorderBlockIMyPathRecorderComponent(entitycomponent)
- (Entity Components guide)
IMyAutopilotWaypointIMyEmotionControllerBlockIMySearchlightIMyWindTurbine
IMyOxygenTankwas removed (it was obsolete for several years).IMyThrustgotCurrentThrustPercentage.IMyPistonBasegotNormalizedPosition.IMyTurretControlBlockgotIsSunTrackerEnabled.IMyShipConnector'sIsConnectedis no longer tagged obsolete.IMyCubeGridgotLinearVelocityandSpeed(accessible viablock.CubeGrid).IMyInventorygotVolumeFillFactor.Vector3D&Vector3got a staticAngle().- ⚠️ Caution:
Vector3D&Vector3got an instancedNormalized()which returnsVector3[D].Normalize(this), easily mistaken forNormalize()which mutates the vector. - ⚠️ Caution:
Vector2andVector2Dare now implicitly castable (accidental precision loss). BoundingBoxD&MyOrientedBoundingBoxDgotGetCorner().
Visual Scripting Tool
(Nothing)
Mod API
- 1.202.112 additions:
- MyEntity got UpdateDuration (get only, overrideable by custom entity classes).
- MyRenderComponentBase.TextureChanges (Entity.Render) changed from
stringkey toMyStringIdkey. - [I]MyEntity.SetTextureChangesForSubparts() changed its dictionary parameter from
stringkey toMyStringIdkey. NOTE: the previous method still exists and it allocates a new dictionary! - IMyDedicatedConfig had
string WorldPlatformreplaced withbool CrossPlatform. - MyLog got ReportCodeLine().
- MyUtils got GetFixedInvalidFileNameChars() and GetFixedInvalidPathChars().
- New objects:
IMyStoredPowerRatio(cast a power-storing block or component to it).IMyComponentStack(access fromIMySlimBlock.ComponentStack).MyModAPINaturalGravityComponent,IMyModAPINaturalGravityComponent,IMyNaturalGravityComponent(seeMyAPIGateway.GravityProviderSystem).MyAutopilotComponentIMyEventControllerEntityComponent,IMyEventComponentWithGuiIMyWorkAreaTool(cast ship tools to it)
MyFakes.ENABLE_TYPES_FROM_MODSwas set totruewhich means custom OBs can be declared in mods.PathUtils.GetFilesRecursively()was added... ⚠️ it restricts to local mods folder and user folder only, it won't work after mod is published.MyAPIGateway.GravityProviderSystemwas added which can get/add/remove gravity providers.MyGamePruningStructure.Instancewas added which cloned all methods there, can't tell if there's new stuff.MyRadioBroadcasterswas made public.MyCubeGridchanges:ColorBlocks()andSkinBlocks()lost thevalidateOwnershiparg.ColorGridOrBlockRequestValidation()lost itsplayerarg.ContainerOpened()andCompetetiveContainerOpened()got anentityIdarg.- lost 2 overloads of
BuildBlockRequest(), lostRequestSetToConstruction(). - lost a bunch of methods regarding multiblocks (which is not a supported SE feature anyway).
- got
ChangePowerProducerState(),BlocksWaitingOnAttachUpdate,InternalInitFinished,NaturalGravity,LockedByCount. - got
GetConnectedGrids(GridLinkTypeEnum, Action\<MyCubeGrid\>),MechanicalConnectionBlockAttachUpdateStatusChanged(). - got static
ShowAiInfo. - got events:
OnMinMaxChanged,OnConnectionChangeCompleted,OnTargetLockLost,OnDeschedule.
IMyCubeGridgotGetMaxThrustInDirection(),RvoAgentId,IsBlockTrasferInProgress,NaturalGravity.IMyCubeGridgot events:OnGridBlockDamaged,OnTargetLocked,OnNaturalGravityChanged,SpeedChanged,OnMaxThrustChanged,OnBlockIntegrityChanged.IMyGridControlSystemgotCurrentShipController(accessible fromgrid.ControlSystem).IMyGridGasSystemgotForcePressurize(accessible fromgrid.GasSystem; NOTE: server-side only).IMySlimBlockgotComponentStack,BlockGeneralDamageModifier,IsMovedBySplit.MyCubeBlock'sResourceSinksetter is now accessible, gotGetEmissiveStateHashFromComponent,OnUpdateBeforenextFrameevents.IMyCubeBlockgotCubeGridChangedevent.IMyTerminalBlockgotIsDetailedInfoDirty,ClearDetailedInfo(),GetDetailedInfo(),SetDetailedInfoDirty().IMyControllableEntitygotIsAutopilotControlled,RelativeDampeningDistanceandRelativeDampeningTarget.MyRemoteControlhas a billion changes...MyShipController'sPrioritygetter was made public.IMyCockpitgot,IsOccupied,IsOccupiedChanged.MyDoorBasegotOpenChangedevent.IMyDoorgotOnDoorOpen,OnDoorClosedevents.IMyThrustgotThrustChangedevent.IMyMechanicalConnectionBlockgotOnAttachedChangedevent.IMyMotorStatorgotAngleChangedevent.IMyPistonBasegotNormalizedPositionChangedevent.IMyShipConnectorgotIsConnectedChangedandAttachFinishedevents.IMyShipMergeBlockgotMergeStateChangedevent.IMyPowerProducergotCurrentOutputRatioChangedevent.IMyStoreBlockgotCreateStoreItem()(4 overloads),GetStoreItems(),GetStoreItemById(),InsertStoreItem(),RemoveStoreItem().IMyInventorygotOnVolumeChangedevent.IMyCharactergotCharacterGeneralDamageModifier.IMyConfigDedicatedgotDedicatedId.MyEntities got IsShapePenetrating()(which we cannot use because it asks forHkShape).MyEntities'TestPlaceInSpace()got 2 new args.MyGridTargetinggot many changes.MyPhysics.CollisionLayersgotOpenableSubpartLayer(4).MyVisualScriptLogicProvidergotTriggerTimerBlockForNonFriendlyPlayer(),GetPlayerRespawnPoints(),GoToPostMatchState(),ReportMatchEndToAnalytics(),SetScenarioWinTypeForAnalytics().- Setting
MyEntity.Namenow automatically callsMyEntitiesInterface.SetEntityName(). - Billboard reflections now work:
This was adapted from the original on Digi's SE-ModScript-Examples wiki.