API changes in 0.4.0

KCDS 0.4.0 gives the script API a new structure and new names. Old names stop working. There are no aliases, so a resource that uses an old name fails until you update it. Change the names below, then test your resources.

New structure: everything is under kcds

SDK types are no longer globals. Each one moved to kcds.<domain>.<Type>, for example Door.spawn(...) is now kcds.world.Door.spawn(...). Standard features such as console, setTimeout and fetch stay global. This applies on top of the renames below.

DomainTypes
kcds.coreAssets, Bans, Chat, Events, Exports, Game, Http, Imports, Locales, Messages, Queue, Runtime, SharedState
kcds.mathColor, Quaternion, Vector2, Vector3, Vector4
kcds.playersAppearances, Buffs, DerivedPlayerStat, Entity, Interactions, Inventory, Items, LocalPlayer, Needs, Pickpocketing, Player, PlayerStat, Progression, Trade
kcds.charactersAnimations, Dialogue, Dog, Follow, Horse, HorseLooks, LocalNpc, Npc, PatrolRoute, Quest, Vendor
kcds.worldArea, Audio, Blip, Cart, CombatMarker, CookPot, Crafting, Dice, Door, Gate, Gathering, Gizmo, Gizmos, Grave, GroundItem, LevelEdit, Light, Marker, Prop, PropGhost, PropPlacer, Recipe, Render, RestrictedAreaMarker, SiegeEngine, SiegeLadder, SmartObject, Stash, StonePile, Travel, Trees, Vfx, World, WorldMap, WorldResource
kcds.uiActionHint, Book, Camera, CharacterCreator, Compass, Controls, Discord, EmoteWheel, Freecam, Hud, Key, Keybinds, LoadingScreen, Nameplates, NativeClip, NativeElement, NativeScreen, NativeUI, NoClip, ThirdPerson, Web

Web views

OldNew
fw://resources/<resource>/<path>kcds://resources/<resource>/<path>
window.callEvent(name, json) (in the page)window.sendToGame(name, json)
Web.createView(url, options)Web.open(url, options)
Web.destroyView(view)Web.close(view)
Web.showView(view)Web.show(view)
Web.hideView(view)Web.hide(view)
Web.focusView(view, focused)Web.focus(view, focused)
Web.isViewVisible(view)Web.isVisible(view)
Web.setViewOffscreen(view, offscreen)Web.setBackground(view, background)
Web.isViewOffscreen(view)Web.isBackground(view)
Web.loadURL(view, url)Web.navigate(view, url)
Web.resizeView(view, width, height)Web.resize(view, width, height)
Web.setViewPosition(view, x, y)Web.move(view, x, y)
Web.getScreenSize()Web.screenSize()

Web view events

OldNew
browserCreatedwebViewOpened
browserLoadingStartwebViewLoading
browserDocumentReadywebViewReady
browserLoadingFailedwebViewFailed
browserNavigatewebViewNavigated
browserPopupwebViewPopup
browserCursorChangewebViewCursor
browserTooltipwebViewTooltip
browserInputFocusChangewebViewFocus
browserResourceBlockedwebViewBlocked
browserConsoleMessagewebViewConsole
browserOriginChangewebViewOrigin

Events

OldNew
Events.emitServer(...)Events.toServer(...)
Events.emitAllClients(...)Events.broadcast(...)
Events.emitTo(...)Events.toResource(...)
Events.emitLocal(...)Events.fire(...)
Events.onLocal(...)Events.listen(...)
Events.onClient(...)Events.fromClient(...)
Events.onceClient(...)Events.onceFromClient(...)
Events.offClient(...)Events.offFromClient(...)

Players, NPCs and the world

OldNew
Nametags (client)Nameplates
every ...Nametag... method, such as setNametagColor, setNametagText, isNametagVisiblethe same with Nameplate: setNameplateColor, setNameplateText, isNameplateVisible
npc.nametagnpc.nameplate
virtualWorld (property, option, event field)dimension
setVirtualWorld(...)setDimension(...)
setVisibleTo(...)showOnlyTo(...)
player.hardwareId, connection.hardwareIdplayer.deviceId, connection.deviceId

getIdentifier('hardware') keeps its name, so bans already saved on your server keep working.

Scripting core and package.json

OldNew
ExecutionEnvironmentRuntime
ExecutionEnvironment.frameworkVersionRuntime.apiVersion
ExecutionEnvironment.modVersionRuntime.serverVersion
StateBagSharedState
kcds.resourceDependencies in package.jsonkcds.requires

Error messages

If a script checks the text of an error, update it:

OldNew
Target resource not foundResource is not available
No handler for message typeResource does not handle this message type
Chat color must be a Color or a packed 0xRRGGBBAA numberChat color must be a Color, or a number packed as 0xRRGGBBAA

Errors that said virtual world now say dimension.

More renamed members

These members changed too, whichever type they are on. Old names stop working.

OldNew
addScreenEffectstartEffect
animalSpawnpointsanimalSpots
blockedPerkslockedPerks
blockPerkslockPerks
burstOnburstFrom
canActableToAct
cancelCombatstopFight
canHitinReach
carriedByheldBy
carriedItemheldItem
carryItemholdItem
clearShotendShot
closeDurationclosingTime
collisionCeilingwallTop
collisionFloorwallBottom
collisionThicknesswallThickness
combatZonefightZone
containsPlayerholdsEntity
createVirtualcreateStorage
crewPlacescrewSeats
crewRequiredcrewMinimum
damageRadiusblastRadius
destroyWithOwnerremovedWithOwner
disableActionblockAction
dismountRiderunseatRider
dropInventorydropAll
droppedByleftBy
enableActionunblockAction
entitiesInRadiusentitiesAround
equipGearfitGear
findPerkperkNamed
fistsUpguardUp
gearItemsgearList
gearLockedgearFixed
gearPresetsgearSets
getAimGuideaimLine
getAnimalLootlootOf
getAtPlayeraroundEntity
getDerivedStatderivedStat
getForArealinkedTo
getGroundZgroundHeight
getHerbsherbsWithin
getItemPriceitemPrice
getItemStatsitemStats
getLastErrorlastFailure
getOccupantwhoSits
getOpenBookcurrentBook
getPursepurseOf
getSlotCountslotTotal
getTracktrackOf
hasTriggertriggerExists
healthyStaminastaminaCap
hideCodexActionHinthideCodexHint
hideCurrentTutorialcloseTutorial
hideInfoTexthideBanner
holderIdheldById
isCategoryVisiblemapCategoryShown
isDefaultRelayrelaysChat
isElementVisiblehudPartShown
isInDialogueinConversation
isMonologueEnabledinnerVoiceOn
isScreenEffectActiveeffectRunning
isShotActiveinShot
isStoryCutscenesEnabledcutscenesOn
isVirtualisStorage
keyItemlockKey
levelGuidplacedGuid
loadDurationreloadTime
lockDifficultylockLevel
lockedByServerserverLocked
lockFancinesslockStyle
lockpickablecanBePicked
lookDirectiongaze
markCountmarkerTotal
matchOfgameOf
modelGroupmeshGroup
modelNamemeshName
moveDirTagmoveDirection
moveSpeedTagmovePace
moveWaypointshiftWaypoint
nativeXpgameXp
navigationStatustravelStatus
offUsestopWhenUsed
onUsewhenUsed
openDurationopeningTime
outfitPresetsoutfitSets
patrolStaterouteState
playOnEntityplayFrom
pointsOfInterestlandmarks
previousWeatherlastWeather
projectToScreentoScreen
pullDownRiderdragRider
putDownItemdropHeldItem
putPlayerseatPlayer
queryNearestclosestTo
rainAmountrainLevel
rainIntensityrainStrength
raycastAlltraceAll
rayThroughScreenscreenLine
rearAndThrowDownbuckRider
refillFromInventorytopUpFrom
registerRecipedefineRecipe
relativeSkillsscaledSkills
relativeStatsscaledStats
removeAllScreenEffectsendAllEffects
removeGeartakeOffGear
removeHerbsclearHerbs
removePlayerunseatPlayer
removeScreenEffectendEffect
replicasInRadiusreplicasAround
requestHideaskHide
resetRespawnTimeresetRegrowth
resolveGroundsnapToGround
respawnAllregrowEverywhere
respawnHerbsregrowHerbs
respawnTimeregrowTime
respecPerksresetPerks
restoreProgressionloadProgression
revealAllFogclearAllFog
revealFogclearFog
screenEffectseffectList
screenRayrayFromScreen
sessionOfactiveSession
setAimGuideshowAimLine
setBuyPricessetOffers
setCategoryVisiblesetMapCategory
setDefaultRelaysetChatRelay
setElementVisiblesetHudPart
setEntityParametersetSoundParameter
setEntitySwitchsetSoundSwitch
setFacialExpressionsetExpression
setFireLitsetFire
setGearsetTack
setItemNamerenameItem
setItemStatsoverrideStats
setKnowledgegrantKnowledge
setLegibilitysetReadable
setLevelCapsetMaxLevel
setMonologueEnabledsetInnerVoice
setMovementModesetPace
setNativeXpsetGameXp
setOperatorassignGunner
setPropertieseditRow
setPursefillPurse
setRespawnTimesetRegrowth
setShotstartShot
setSlotassignSlot
setSlotsassignSlots
setStocksetShelf
setStoryCutscenesEnabledsetCutscenes
setTalkingsetSpeaking
setTargetablesetLockable
setVetosetRefusal
setXpBudgetsetXpCap
setXpRatesetXpGain
showComboLearnednotifyCombo
showInfoTextshowBanner
showPerkGainednotifyPerk
showPerkUsednotifyPerkUse
showRandomEventResultnotifyEventResult
showReputationChangednotifyReputation
showXpGainnotifyXp
stanceTagbodyStance
stationIdstationKey
stopAllOnEntitysilenceEntity
stopOnEntitystopFrom
unblockPerksunlockPerks
updateCustomeditCustom
updateScreenEffectchangeEffect
vendorOfshopOf
visorClosedvisorDown
weatherBlendingweatherFade
weatherRemainingweatherLeft
withLabeltaggedWith
xpForLevelxpNeeded