@dcl-regenesislabs/web-editor 0.3.16-40498300506.commit-c2a0d59 → 0.3.16-40596302895.commit-0ee155d

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dcl-regenesislabs/web-editor",
3
- "version": "0.3.16-40498300506.commit-c2a0d59",
3
+ "version": "0.3.16-40596302895.commit-0ee155d",
4
4
  "license": "Apache-2.0",
5
5
  "description": "The Decentraland scene editor for the web explorer: editor.js plus the files it loads beside it. Served by version, not installed.",
6
6
  "repository": {
@@ -8,5 +8,5 @@
8
8
  "url": "git+https://github.com/dcl-regenesislabs/web-editor.git",
9
9
  "directory": "packages/web"
10
10
  },
11
- "commit": "c2a0d59cc2fca5b449bd755cac27feb9b58c9a54"
11
+ "commit": "0ee155de48a80042ec61c9a28875e1c1583d74a9"
12
12
  }
@@ -9,8 +9,12 @@
9
9
  "video",
10
10
  "announcements"
11
11
  ],
12
- "version": "1.0.0",
12
+ "version": "1.1.0",
13
13
  "changelog": [
14
+ {
15
+ "version": "1.1.0",
16
+ "notes": "The panel stays inside the area the explorer leaves free of its own controls, and the full-screen layer no longer blocks clicks."
17
+ },
14
18
  {
15
19
  "version": "1.0.0",
16
20
  "notes": "Initial release: an in-world panel only the admins you list can open — moderate players, post announcements and control the scene's video screens."
@@ -31,7 +31,8 @@ import { smartItemActionsTab } from './tabs/SmartItemActions'
31
31
  import { AnnouncementOverlay, textAnnouncementsTab } from './tabs/TextAnnouncements'
32
32
  import { videoControlTab } from './tabs/VideoControl'
33
33
 
34
- const VIRTUAL_CANVAS = { virtualWidth: 1920, virtualHeight: 1080 }
34
+ // inside the area the explorer leaves free of its own controls, on desktop and phones
35
+ const VIRTUAL_CANVAS = { virtualWidth: 1920, virtualHeight: 1080, screenInset: 'interactable' as const }
35
36
 
36
37
  // The panel is scene-wide, and so is everything start() registers: one comms
37
38
  // bus, one synced video state under a fixed sync id, one drain system that the
@@ -149,7 +150,7 @@ export class AdminToolsScript {
149
150
  const player = toAdminPlayer()
150
151
 
151
152
  return (
152
- <UiEntity uiTransform={{ positionType: 'absolute', width: '100%', height: '100%' }}>
153
+ <UiEntity uiTransform={{ positionType: 'absolute', width: '100%', height: '100%', pointerFilter: 'none' }}>
153
154
  <AnnouncementOverlay
154
155
  self={this.entity}
155
156
  config={config}
@@ -13,8 +13,12 @@
13
13
  "ui"
14
14
  ],
15
15
  "requiresSdk": "auth-server",
16
- "version": "1.2.0",
16
+ "version": "1.3.0",
17
17
  "changelog": [
18
+ {
19
+ "version": "1.3.0",
20
+ "notes": "Announcements take their place in the shared HUD layout at the bottom centre, narrow enough to stay clear of the phone touch buttons and of other HUDs."
21
+ },
18
22
  {
19
23
  "version": "1.0.0",
20
24
  "notes": "Initial release: server code anywhere in the scene calls game.broadcast('announce', { text }) and every player's client shows the line for a few seconds."
@@ -1,9 +1,10 @@
1
- import ReactEcs, { ReactEcsRenderer, UiEntity } from '@dcl/sdk/react-ecs'
1
+ import ReactEcs from '@dcl/sdk/react-ecs'
2
2
  import type { Entity } from '@dcl/sdk/ecs'
3
3
  import { isServer } from '@dcl/sdk/network'
4
4
  import { game } from '~runtime/game'
5
- import { UI_CANVAS, sceneUiTheme } from '~runtime/uiTheme'
5
+ import { sceneUiTheme } from '~runtime/uiTheme'
6
6
  import { UiNotice } from '~runtime/uiComponents'
7
+ import { addHudItem, HUD_NOTICE_WIDTH } from '~runtime/hudLayout'
7
8
  import { onZone } from '~runtime/zoneBus'
8
9
  import type { ZoneName } from '~runtime/authoring'
9
10
  import { clampHold, toastText } from './pure/toast'
@@ -28,7 +29,7 @@ export class Announcer {
28
29
 
29
30
  start(): void {
30
31
  if (isServer()) { return }
31
- ReactEcsRenderer.addUiRenderer(this.entity, () => this.render(), UI_CANVAS)
32
+ addHudItem('bottom', () => this.render())
32
33
  game.onBroadcast(ANNOUNCE, (data: unknown) => this.show(data))
33
34
  if (this.zone !== '') onZone(this.zone, this.when, (event) => {
34
35
  if (event.local) this.show({ text: this.message })
@@ -51,8 +52,6 @@ export class Announcer {
51
52
 
52
53
  private render(): ReactEcs.JSX.Element | null {
53
54
  if (this.text === '') return null
54
- return <UiEntity uiTransform={{ width: '100%', height: '100%', positionType: 'absolute', justifyContent: 'center', pointerFilter: 'none' }}>
55
- <UiNotice theme={sceneUiTheme()} text={this.text} fontSize={this.fontSize} uiTransform={{ positionType: 'absolute', position: { bottom: 120 }, maxWidth: '90%' }} />
56
- </UiEntity>
55
+ return <UiNotice theme={sceneUiTheme()} text={this.text} fontSize={this.fontSize} uiTransform={{ width: HUD_NOTICE_WIDTH }} />
57
56
  }
58
57
  }
@@ -1 +1 @@
1
- [{"name":"admin-tools","data":"{\n \"id\": \"14f55d0a-1691-439c-9017-8903afcce3e3\",\n \"name\": \"Admin Tools\",\n \"description\": \"In-world admin panel: moderate players, post announcements and control video screens. Only admins you list can open it.\",\n \"category\": \"custom\",\n \"tags\": [\n \"admin\",\n \"moderation\",\n \"video\",\n \"announcements\"\n ],\n \"version\": \"1.0.0\",\n \"changelog\": [\n {\n \"version\": \"1.0.0\",\n \"notes\": \"Initial release: an in-world panel only the admins you list can open — moderate players, post announcements and control the scene's video screens.\"\n }\n ],\n \"origin\": {\n \"source\": \"builtin\"\n },\n \"requiredPermissions\": [\n \"USE_FETCH\",\n \"USE_WEB3_API\",\n \"USE_WEBSOCKET\",\n \"ALLOW_TO_MOVE_PLAYER_INSIDE_SCENE\"\n ]\n}\n","files":{"composite.json":{"integrity":"sha384-WYmVW/WiIQ9MIezdTLx0l9KALl8G6IYSnZplhupYGyuk9QOW7GXVM1GBJanG96OX","size":1886},"data.json":{"integrity":"sha384-Xz7yCWthD0HDJxSBMHEwsdqWOpo7Sgt2FHzIHZaCLXPTamjCk09MevYXmu+0IJS4","size":742},"icons/admin-panel-control-button.png":{"integrity":"sha384-gs8sS7NlWDosiswd38dlTSRMIxSmPy4uuMH9/Z0G8gWpvKerKgcp3ui7Nme/wbci","size":2217},"icons/admin-panel-moderation-control-button.png":{"integrity":"sha384-mBy3ESO3Mq875LIiSGzFVnD9iLmf9DWMqjEBRnZnT/vmQTy4cendMAM0Pw3iw4I5","size":1631},"icons/admin-panel-rewards-control-button.png":{"integrity":"sha384-lbA1p3+WUiCqMyLQZCtb/GY7G+XGMXvpmsvv6DJWVIV2F4K5G47BJGdJDcuOk9pj","size":1796},"icons/admin-panel-smart-item-control-button.png":{"integrity":"sha384-4dx0rzzVKfDcfpUwMvngJ9THOAclyEDKbUwtTo826cRQOvFez6s78DipQSJt9WMY","size":846},"icons/admin-panel-text-announcement-control-button.png":{"integrity":"sha384-Tp9W3GXQPvd9OwANHFYrfekQpNHdFzcAdRgK0KedviMH4GtXirlh1xNDZivpN7Ii","size":522},"icons/admin-panel-video-control-button.png":{"integrity":"sha384-GR1IO0b/6EbWm9nZwfSm0c6JOfNgxGMC9JmF4+dcI2E47tz5ayJ75fKIn5EdIiZn","size":726},"icons/admin-tool-background.png":{"integrity":"sha384-I87kdzFsmxJLWQNdkQAJK7ech9hyy/I5eA/LbF8+O8R+mQF/+PHTOjGoEgqnDD+M","size":792},"icons/announcements/text-announcement-chat-message.png":{"integrity":"sha384-Wamzz2shgywHVGOsvtruJrW6pEJ8BA4wLopI9m6Aj3QfLpS6+JIhVd/gQW1BeHQz","size":14307},"icons/announcements/text-announcement-check.png":{"integrity":"sha384-ocqK42WSlHJF+8PKK8yUlxlgLaq98LHnmrksUDGjZY/griiuV0QTW4LjC9N5ibj7","size":283},"icons/announcements/text-announcement-close-button.png":{"integrity":"sha384-2/dJo7RNlVSyWFmyM8PI7k2Mn7NbpTrhugMCn4b6+doaqJa83i6V1q0Lft19vMj6","size":1148},"icons/moderation-control-icon.png":{"integrity":"sha384-7A2sHB+ce6HTmfiULIsEQp/N+UZdf3tivJui0rNjghcCka7n7eSfWgl4fjvz4Cgn","size":1312},"icons/moderation/admin-panel-verified-user.png":{"integrity":"sha384-vNcq6YpNNQ7lFotU8SaOCKBhil8PLzDWsblH357op7HxAA2/M6Rg0Vj/HQzpnbZI","size":1213},"icons/moderation/ban.png":{"integrity":"sha384-cmN14nYErcvzkNCovoKGXocGHo7KGrn6R+k91cdCG/wIXtvr3RNim70WTj7rNBeN","size":470},"icons/moderation/chevron-back.png":{"integrity":"sha384-mqnl54KA63yVGjEnCmpO4OP5d0P1Yn6mKr+vBskc0k6X195fA2sby0tLRf1U/rh+","size":3165},"icons/moderation/chevron-forward.png":{"integrity":"sha384-rLe+qxxpQqYMMynmmpvQtFf7721X2H/dqLeqpe3O/PQ3GoUBU9gPU2+VrLoXbFxm","size":3171},"icons/moderation/close.png":{"integrity":"sha384-3MgIzHRKOzSovLyjR7BqmW+CDECeCtQP+qgwJYp7DyG6UncrCp69WwDmQFrAPAab","size":3851},"icons/moderation/error.png":{"integrity":"sha384-UaTdOECxl6EaoYfijFAVBut8YPdUyMQLeRibiNc1Zgl7icEN2xEXrar8IGahlkb8","size":798},"icons/moderation/person-outline.png":{"integrity":"sha384-SpgAMD/+hqIDVz9fx+47lsGoP5R04k76Ld7Vsjt/avZBqVRhfq9+1i/2cXKLYgm+","size":1085},"icons/rewards-control.png":{"integrity":"sha384-o16Vo2/34yoPpO5eaLkz2PsbfOsN6d0OKKCAiYai4QfHN3cSi6WAUJ2BNDsYcrYu","size":785},"icons/rewards/close.png":{"integrity":"sha384-3MgIzHRKOzSovLyjR7BqmW+CDECeCtQP+qgwJYp7DyG6UncrCp69WwDmQFrAPAab","size":3851},"icons/rewards/send.png":{"integrity":"sha384-S33P3X184uAhwTQAeuj9xsMUNXbZ+u/NQTEfFGBA7T0U+AJgGEf7fF++U43aoT1p","size":500},"icons/smart-item-control.png":{"integrity":"sha384-ifsViL2s+VFP4zoJYSRnK3YbSC/CHaJip0TZ+t21bWNVl70IbI1HKlCfdeW2UDSg","size":496},"icons/text-announcement-control.png":{"integrity":"sha384-7URWvpEp3gmP6yJ2hO0TRwMoGwneSaTftS0G8oJJkxEDfLuAFC0v3e5svRbe06s3","size":454},"icons/video-control.png":{"integrity":"sha384-08i8/ot11Lq7VQmc0m2GEqXsE7SydKZBg3zgTAlFEWUFw17F9+agTncc8jPekmSl","size":643},"icons/video/chevron-down.png":{"integrity":"sha384-OcKDCPWWVFuK9NILpIRUhFTh39zgaew6mFlyV7T40mJrBJXr2Q1p4/xABVEplRnf","size":343},"icons/video/chevron-up.png":{"integrity":"sha384-yX6sXRFGFknZtfhtuXNUJr3lc0DgnN8K3y2gPoHbowu9bbkdme0TxDU4/UQh9hfQ","size":346},"icons/video/copy-to-clipboard.png":{"integrity":"sha384-eyjGkM9EtomLolYvPV/xK39hFFazZIwtzd/XF34srRydJTSp2bxS3UafHk+/cP7D","size":304},"icons/video/error.png":{"integrity":"sha384-UaTdOECxl6EaoYfijFAVBut8YPdUyMQLeRibiNc1Zgl7icEN2xEXrar8IGahlkb8","size":798},"icons/video/eye-off.png":{"integrity":"sha384-xQXGDg/WIuy/UdZlYzBuwUY/d1Qp0wfSiavWmAbe5Jzs2+x2O2+qzc+wQyvpY5eS","size":9468},"icons/video/eye.png":{"integrity":"sha384-wwXqHg8tIOK/X1H/xf+6d3GWRtObvrgE553mA8H0RX05t+LFegaRQ+oekZNhfzUb","size":9696},"icons/video/help.png":{"integrity":"sha384-wur+rnzxUR5aoo/HZGtbcRtH46TTEe51XrORkzXpI6GJEzgxe26v1wB4dqUMl6rY","size":6353},"icons/video/info.png":{"integrity":"sha384-2VAiLc08J0wHLo6rbMq0dryIHmXyIwxmz+QLGvOy4CA/FoVwUw7QcxKkJdWy389l","size":37460},"icons/video/person-outline.png":{"integrity":"sha384-SpgAMD/+hqIDVz9fx+47lsGoP5R04k76Ld7Vsjt/avZBqVRhfq9+1i/2cXKLYgm+","size":1085},"icons/video/star.png":{"integrity":"sha384-9GFGGyegeJD8W7mQETsKMaajbcVwTftNidPsCZ4ZdguEqe4e7ApgMaWbbQK3Wq5q","size":612},"icons/video/video-control-dcl-cast.png":{"integrity":"sha384-jfetm7VqkoaYFM60cRDbHYFUKV9PFYdoSJoJJjnlmUMcHXJaXMdqf8CEsfTbfiW0","size":3958},"icons/video/video-control-live.png":{"integrity":"sha384-zKG2r2mRC2+KaBSuCOr8GXCooPlhdS0DM/bhkKuJcZESHLGHUmIKqKCSpBQrTtAB","size":12998},"icons/video/video-control-loop.png":{"integrity":"sha384-PmW7BM5QYFSdD7yWHRAM2ENhpXqabDVBMBraqbQZQX+FSgtzQkM+5sxOvzdnploj","size":8685},"icons/video/video-control-mute.png":{"integrity":"sha384-UNYvZ+/8Gxof8muaqCDw/PIz7H3tLC3j5WyD3vBQvf5JBnQEd0QCIlr+T24HlYPW","size":5752},"icons/video/video-control-pause-button.png":{"integrity":"sha384-cvfT4+N9agDRnU6Ow9wT+Ronr/RJx1c2CAaAt4t3xHPQLvWOJNnPlfXW/O0hyYus","size":5267},"icons/video/video-control-play-button.png":{"integrity":"sha384-CAvkQGDWHS1tYlEA/z33gKf9mvIXPAsISRbl3pdzT52NN6eF/woOQJ+ihnflI7pd","size":402},"icons/video/video-control-video-icon.png":{"integrity":"sha384-yKtdqQ/8ARbNu6EXx2DO479v9R89Qf/gkYmwT9Srj6Olr2qZom3S/TAhJSmR3Ufu","size":667},"icons/video/video-control-volume-minus-button.png":{"integrity":"sha384-P2EM6fgmDXOFDFdfWKYbfUS3/j1pIXgYe6SYkvxhOkLcVNkvDc5rM/P60COE64QP","size":188},"icons/video/video-control-volume-plus-button.png":{"integrity":"sha384-lBnQMGgUEbRTddesn4aY7SxDQ07mz3UKlB9hcwwbfJ1sO215UNs1cXIuIeGfJ4we","size":267},"scripts/actions.ts":{"integrity":"sha384-hE/4GuMatbDddD196YnJeLlpA57vKLHYTS5eRqrChRbpKSWYlfD+d69W4AWD7K52","size":7017},"scripts/admin.tsx":{"integrity":"sha384-prFwejvKrWpFxR9E1DtY1OXyijwHmSyMQeZ1ogs5P9j20VpIiYSQ/hduMqrugCd8","size":7720},"scripts/api.ts":{"integrity":"sha384-dhPp6JRdztKLmBTidsgYNe69Y/ZEFwDc73blrCgLgRtkgq6kByvEusNYrpKR8gCf","size":4464},"scripts/components.ts":{"integrity":"sha384-OvrIEnNGEwWpatTyqapsXXniSDfxjgtBFx0Zb8J/yGxaEl9JGg9j+e1JTcKywqu8","size":5953},"scripts/icons.ts":{"integrity":"sha384-W7so7VfFuLEVUMJGNxWA2kNXw5LPKL0D4ZkB+WU0pBp6fkM6NHwYDZHRaS3S4Gji","size":2306},"scripts/message-bus.ts":{"integrity":"sha384-BxGE3lQmg0OUPQpVtv7zQxnFG1AphUU2RpRcT0CaiIBduAZ+hpExXvd9gSj0dDkp","size":10293},"scripts/state.ts":{"integrity":"sha384-vNTXekH1jMcqiMauLtz6bZ2Yy5v8qwO66Jf0h6q+LIfGEhKVQsYPIgN/9i55bFlq","size":2000},"scripts/tabs/Moderation.tsx":{"integrity":"sha384-UsU9Wai6aff/kpLGiXtZAyHSEurtjb+B/umwgPRkYLmnqtQ2iSyeHrV2NKXg+Mlc","size":4717},"scripts/tabs/Rewards.tsx":{"integrity":"sha384-bKzO+bKEXJSdq3cDap8pn4KiCgm1gzqmf3Ei4ydcIrXCZA2KHmK7MeyGtQaOnlYP","size":4845},"scripts/tabs/SmartItemActions.tsx":{"integrity":"sha384-2EBxPB8FoidC82/EJIbfdj0WLZY9EM8DKIMfY6WcNkIJNazziDoT0c9TWLDQSgUu","size":6393},"scripts/tabs/TextAnnouncements.tsx":{"integrity":"sha384-auE1OM8qu77Mf+NJ0Q9phmWHoa/8hAELiRNzk0iMzh9p9P++K17e2r6n4wRu8V4q","size":6297},"scripts/tabs/VideoControl.tsx":{"integrity":"sha384-kb3f5pujq+a7c32PQSwUEOEPRfdjabLpJXnYsDCzDOepMmSPpIRpQ5ZEkbCDRajd","size":5199},"scripts/tabs/announcements/Overlay.tsx":{"integrity":"sha384-gwqwL5sPpKVyrX5zvXFl+spo+hOQuZ5Ao5HtwlcqNNjAszJtbZQZkRGoIeS91yQr","size":2933},"scripts/tabs/announcements/icons.ts":{"integrity":"sha384-ITtseCBy5n3WQxScQG0Y6LxNaD/L8CTPmI/lboI4QTMunXwHpmFmkW4SKHOgUnBn","size":455},"scripts/tabs/announcements/state.ts":{"integrity":"sha384-H8QR1U5I52xzN8kBd0JoMNmVPDXk+9h+G4Ophfhb413JPQgGUqva1XR1BC/ck8AN","size":2351},"scripts/tabs/announcements/ui.tsx":{"integrity":"sha384-PuNRzeUXeOVMuBO/sXnBrGEaB8n3qPofhnJOtC5FXz6EfnQ1T9wS63XPRa23GKRU","size":1072},"scripts/tabs/moderation/AddUserInput.tsx":{"integrity":"sha384-RiyCa08HtzCBd3VEe+tP6ntPOzHyb1F98RhXqkAwBKB14OT9puqedXekff7aGs37","size":5617},"scripts/tabs/moderation/RemoveAdminConfirmation.tsx":{"integrity":"sha384-tT43wHl1ywHy7tmio8nqzeZdr8kymxwHUfaPHoVc62u7ODx9GCygB4pu8jtHPRiX","size":2803},"scripts/tabs/moderation/UsersList.tsx":{"integrity":"sha384-0Wa4fy2crAQe39qgwbwdBwQSFswNGCrELHxCFZ1jBmxgh4R1HYKKDrFpAwtoq87/","size":7191},"scripts/tabs/moderation/api.ts":{"integrity":"sha384-Q/qkDk6GC53eutQvYwf4Lmyy3fPEH84nj1c+7JZDYEt0xrmGHgYPcXcfju2bWNii","size":1322},"scripts/tabs/moderation/icons.ts":{"integrity":"sha384-QqvX+zxVEVZojv5uHj0yl9aaSO3dPX8g7bvAizI7+jmUfT7Y919Bu6m1lbM33FYC","size":706},"scripts/tabs/moderation/kick.ts":{"integrity":"sha384-Rgr5yEmwEtTgZQirGmAOjGlJ2S9eBk35RwCgLTnkfvIQL4Q+ueU77sJ1nkeyPjfL","size":3965},"scripts/tabs/moderation/state.ts":{"integrity":"sha384-xvW2sWrMBcIr395zhA4Z/CJmvRzdtUJYIwJj4jBO0BcqYtaokEtRInseFPyfWU5A","size":1950},"scripts/tabs/moderation/ui.tsx":{"integrity":"sha384-s/X9vWTUhAfIZbzFtFwAJsjBjtBx7WcNpYOV1X5a2aruCkBB9zGqsRGF+k8ieVfW","size":5207},"scripts/tabs/moderation/utils.ts":{"integrity":"sha384-TAcs4ANF4RdzECa13ol7kWSKBtNZZZ5n+IydZlt9vl0FqZhnaw+MiBD2Q8gtacsU","size":3184},"scripts/tabs/rewards/Button.tsx":{"integrity":"sha384-Z66D7boMToX9iMvJr2cCAvA6EuxSPNKAMnIMeyry+xnokDOenJrmDaVBqX2pN6gt","size":1539},"scripts/tabs/rewards/Captcha.tsx":{"integrity":"sha384-H89W2CtQmpxF4LU6hLh409aHbadDb/Ukv5oRVc65e6kI+C7ixvCXPDtBjlerFnyo","size":2490},"scripts/tabs/rewards/api.ts":{"integrity":"sha384-T42JhF83QZuzIB06HAa09Bclq/qUwRvP/FwxhhAaVjuH7Ml0ehmiHgZDRYj95H5S","size":4796},"scripts/tabs/rewards/claim.ts":{"integrity":"sha384-pRPeSNGiGx9wb4+v35haHCGfWX+CBiMLu/1iVLitZ6pNhTzvBu24CisrFWmycQqM","size":3656},"scripts/tabs/rewards/controller.ts":{"integrity":"sha384-JPs8MvAVa6pGrdKlvoFr0H1P3FoQMIuiwwGcZMvkHC8kVVq4saX0x5T4RCIH35Rq","size":3368},"scripts/tabs/rewards/icons.ts":{"integrity":"sha384-S/7TaZ0mzvxhZJnxzt2ilqYAINoHo81Wh2vLRELZpmS/jQuL6KGBG9Tmw+COF1pb","size":275},"scripts/tabs/rewards/state.ts":{"integrity":"sha384-4PsbphYBjuf6o9Dnz8h6Iyp+s1LQrV1PYhteV0zpHz3nQFo8mZf8gRbphB+fpEdT","size":840},"scripts/tabs/smart-items/selection.ts":{"integrity":"sha384-lxSzgZrpbsomjarF9K1UhsfX1QuiPmeqMPY3jUBOG2/CU9i9ZCXrRPAexlhOaNiv","size":3331},"scripts/tabs/video/DclCast.tsx":{"integrity":"sha384-Rz/xL437EcTxwNCYvjbuHuw3klhBGL6N/Pb0hc6Vu+gjJVrLKnqRIo9hTEzeqWs6","size":8072},"scripts/tabs/video/LiveStream.tsx":{"integrity":"sha384-xJfNS7uAkczd6Mv7jI6kfVhA4cJQfbzUXZB+POKe7scklnpJJttNimcHHfl2sh5P","size":9886},"scripts/tabs/video/SpeakerShowcase.tsx":{"integrity":"sha384-5fEeVnMIEMYTQHztNlyULWEts6h/Zgv3kH5+/iQy9uIh5eNe1iqVtwArKrM0RuAP","size":3802},"scripts/tabs/video/VideoUrl.tsx":{"integrity":"sha384-pEnlEeG6qstYzljbAkeeFfQZilijueSfKmZFUPOzDC8I6K0ETrlf45hbbMX8V0fr","size":3426},"scripts/tabs/video/Volume.tsx":{"integrity":"sha384-q4odOzbD+Mx5BzotjtIx8+GQMGX9Ysy657573+S/bts+yrr1w0bMN91NtKzNc7Vf","size":2133},"scripts/tabs/video/api.ts":{"integrity":"sha384-UDwFd8lR+diOPOejRUq8Bk/DHs1OQN9nb7jNE2Nv+1KUm4JwUxu4b7LMExuWDSuJ","size":5673},"scripts/tabs/video/controls.ts":{"integrity":"sha384-8NTX/Mu0Ps34x4kxL2gwmJrbxyUVxYwT0pH5ig22+FGJU6UqHKIV2MyPZbJyBEWM","size":3886},"scripts/tabs/video/icons.ts":{"integrity":"sha384-3/0EHH0ZB0R4gcxXUlHvWFqKEoHx0WJyl7ZWh3sAGpIYGcJFT4OtqzeUkA0gRa4X","size":1662},"scripts/tabs/video/speakers.ts":{"integrity":"sha384-6YGpbWXwW6pSBAHC8o9P2Lu0P6IbhsRseHAgDG2eHWUCFd4wAXhdR6l/FYM7wrL4","size":1105},"scripts/tabs/video/state.ts":{"integrity":"sha384-yPWXz+LaGfDLrbO6xuEAe6whwGGtahVvvpOJmQsLGc+P4qopgoD9FSA9+xOxZP8I","size":2256},"scripts/tabs/video/ui.tsx":{"integrity":"sha384-ANXvEZ75Ur0nZyxxaHFOdr+NBGx3zD25r3s8M8dVb6osakUGjBKhRUEEWKo6JmpV","size":7076},"scripts/types.ts":{"integrity":"sha384-/ieszyQ/vz9IKpyeCLEw7Gae+8EWZVQMkcWmKWn6roV3KkEj34zY8n87R5w9HxIY","size":1902},"scripts/ui.tsx":{"integrity":"sha384-fUQUBEHzEB8SO6Mhl3Trm9vfgCogyEIoOiVmP+eVnE1qI/HK6lqOFsLcNZNe/Lqy","size":3216},"thumbnail.png":{"integrity":"sha384-sh8ip9U6LNItjm30RSrxl83x7aYdlbROEDnI49S5x+uj3rpx7ohWSFgVi3jXpv+4","size":11615}}},{"name":"announcer","data":"{\n \"id\": \"fb41d8d1-b842-437d-a830-f38379e74743\",\n \"name\": \"Announcer\",\n \"description\": \"Show a themed message when a player enters or leaves a chosen Trigger Area, or receive announcements from Game Flow.\",\n \"category\": \"custom\",\n \"group\": \"Multiplayer Server\",\n \"tags\": [\n \"multiplayer\",\n \"server\",\n \"announce\",\n \"message\",\n \"toast\",\n \"ui\"\n ],\n \"requiresSdk\": \"auth-server\",\n \"version\": \"1.2.0\",\n \"changelog\": [\n {\n \"version\": \"1.0.0\",\n \"notes\": \"Initial release: server code anywhere in the scene calls game.broadcast('announce', { text }) and every player's client shows the line for a few seconds.\"\n },\n {\n \"version\": \"1.1.0\",\n \"notes\": \"The placed item's Script card now shows the broadcast line that makes it speak, under its hold seconds and font size.\"\n },\n {\n \"version\": \"1.2.0\",\n \"notes\": \"Shared theme and a Trigger Area picker for local messages without writing code.\"\n }\n ],\n \"origin\": {\n \"source\": \"builtin\"\n }\n}\n","files":{"ai.md":{"integrity":"sha384-D3Cv9CWg7ofWd+5NtZB9U0GLWnX/7Mbx2KN4QumC6l0qNu9t/6EXIVVuVJcY/7NS","size":3331},"composite.json":{"integrity":"sha384-3w+7KNTh3KLidBVPFpOr5uXPyrtZH1UA5l5yy+r0WC4QYO8+bFmvO10wY6Zk1osX","size":554},"data.json":{"integrity":"sha384-/q9wX9kf4GFgtoMXDi1TNkVdRbxX/7+AlwIStA+D8n/zTlTY6JIAzQDvjSIu7tJ9","size":1009},"scripts/announcer.tsx":{"integrity":"sha384-Ofbsh4mgPw9A1wvDSesqSW4VySulCs9JFdOR5VHBR/zPXV51AL/W3IBo7XQBCKDl","size":1973},"scripts/pure/toast.ts":{"integrity":"sha384-5HsNX5Ao3DBwh0XwQx036b4r8OIvM4C7zYUAPHMVNPtEWb7kMdJASFEwKtxrb/jE","size":1171},"thumbnail.png":{"integrity":"sha384-HBZUcCEOa9jkubVyvd8Hrhnu3HU0OHKhshGy1LYXw0I6bANVnxcUy0psn8fuyqR6","size":2005}}},{"name":"black-chair","data":"{\n \"id\": \"1aa01433-9f2e-44ac-b1fb-a2bdffeb6776\",\n \"name\": \"Black Chair\",\n \"description\": \"A black dining chair. Players can sit on it.\",\n \"category\": \"custom\",\n \"tags\": [\n \"seat\",\n \"furniture\",\n \"sit\"\n ],\n \"version\": \"1.1.0\",\n \"changelog\": [\n {\n \"version\": \"1.1.0\",\n \"notes\": \"The seat no longer runs on the Multiplayer Server, where it was walking every sit spot's transform chain each frame for nobody to see.\"\n },\n {\n \"version\": \"1.0.0\",\n \"notes\": \"Initial release\"\n }\n ],\n \"origin\": {\n \"source\": \"builtin\"\n },\n \"requiredPermissions\": [\n \"ALLOW_TO_MOVE_PLAYER_INSIDE_SCENE\",\n \"ALLOW_TO_TRIGGER_AVATAR_EMOTE\"\n ],\n \"group\": \"Seats\"\n}\n","files":{"HighBackChair.glb":{"integrity":"sha384-BQAU/CeS2nc/qMg4zNmGfN9PL54Vok9qKD681gVfC64knQyWW/wh2rGXNVc53oJ6","size":32424},"composite.json":{"integrity":"sha384-3/TVCIpJOzxplhEyfQhTIfMqAzc6J/jyo6qWRCI3iQMMSlSNnYS69w8+vBdNheC2","size":1413},"data.json":{"integrity":"sha384-zBCFwVRiankPHLu/0p80cZPNHuuPr8KywXQh+Co6MN1LWmPfYffNk2UvpyFc3WK2","size":699},"scripts/seat.ts":{"integrity":"sha384-qTc33dk7kx9+avQ4JugIv1csCyESSIOVst3FKQhN3pC0OIyeh/yA32h0z8zjdIWc","size":6959},"thumbnail.png":{"integrity":"sha384-bZsSYvZkaq1R6jGe8fK1yvdC1ws8F0nAtbKUpWRkpEretquQ1Pcx05H14NIobZA4","size":8744}}},{"name":"classic-bench","data":"{\n \"id\": \"3e8dace7-01e4-4a98-a56e-52ad05ae654d\",\n \"name\": \"Classic Bench\",\n \"description\": \"A classic park bench, seating two. Players can sit on it.\",\n \"category\": \"custom\",\n \"tags\": [\n \"seat\",\n \"furniture\",\n \"sit\"\n ],\n \"version\": \"1.1.0\",\n \"changelog\": [\n {\n \"version\": \"1.1.0\",\n \"notes\": \"The seat no longer runs on the Multiplayer Server, where it was walking every sit spot's transform chain each frame for nobody to see.\"\n },\n {\n \"version\": \"1.0.1\",\n \"notes\": \"Ships the model's texture, which was missing from the folder — without it the model rendered blank white in-world.\"\n },\n {\n \"version\": \"1.0.0\",\n \"notes\": \"Initial release\"\n }\n ],\n \"origin\": {\n \"source\": \"builtin\"\n },\n \"requiredPermissions\": [\n \"ALLOW_TO_MOVE_PLAYER_INSIDE_SCENE\",\n \"ALLOW_TO_TRIGGER_AVATAR_EMOTE\"\n ],\n \"group\": \"Seats\"\n}\n","files":{"Bench_01.glb":{"integrity":"sha384-qU+pwMwPJYsOMD3Rgh5aQ/XkBKR6ls6nQyqWaRik+z125N+cSW7f7tfaH6rQPVjz","size":54436},"composite.json":{"integrity":"sha384-KTMuUiX7SNG/qh3LQ9JANv/ql+YrUC3UHna5xa8GleFBEVOx2NTafDEFyjXPlUZL","size":2004},"data.json":{"integrity":"sha384-WzR61MlY+E4phm2i405fbw1qr2W5XZhV3elr6lpAIVX7ssoqTzxb8m3lTSKaqrLi","size":887},"file1.png":{"integrity":"sha384-hkHg23U+9Yx8eU+7OWRgOsHJ1gS8nzdWZ/DEAQvtwJF3dOf7sTQwINVaIo30FRk5","size":7117},"scripts/seat.ts":{"integrity":"sha384-qTc33dk7kx9+avQ4JugIv1csCyESSIOVst3FKQhN3pC0OIyeh/yA32h0z8zjdIWc","size":6959},"thumbnail.png":{"integrity":"sha384-gVZ5hbkqeZCkqlNp2XTBqGLqDMFBH261RyXCV/+xogCBddr593SpTijJcTG75xRw","size":10722}}},{"name":"classic-bench-armrests","data":"{\n \"id\": \"88e01dcc-b242-4815-90e3-72ff52c24f45\",\n \"name\": \"Classic Bench Armrests\",\n \"description\": \"A classic park bench with armrests, seating two. Players can sit on it.\",\n \"category\": \"custom\",\n \"tags\": [\n \"seat\",\n \"furniture\",\n \"sit\"\n ],\n \"version\": \"1.1.0\",\n \"changelog\": [\n {\n \"version\": \"1.1.0\",\n \"notes\": \"The seat no longer runs on the Multiplayer Server, where it was walking every sit spot's transform chain each frame for nobody to see.\"\n },\n {\n \"version\": \"1.0.0\",\n \"notes\": \"Initial release\"\n }\n ],\n \"origin\": {\n \"source\": \"builtin\"\n },\n \"requiredPermissions\": [\n \"ALLOW_TO_MOVE_PLAYER_INSIDE_SCENE\",\n \"ALLOW_TO_TRIGGER_AVATAR_EMOTE\"\n ],\n \"group\": \"Seats\"\n}\n","files":{"Bench 1.glb":{"integrity":"sha384-gEvudQhcSvOjXcqAeY8D8iPaVbsYOkBd3YdZki2iAKCkZgkf/PQLaMW5DAJHFVZB","size":42772},"composite.json":{"integrity":"sha384-KuygG/7cDAvXqt2lz2mYDyeppiq1PZN+ZmBDndaWxdqV7csCPMdXQK/Ys40UW7YZ","size":2014},"data.json":{"integrity":"sha384-t19LA1qyWZc5sRylViJkgGHA8wo0wZqEVaA586BsRGQmzQc4itLDkgxE4LIdvHeR","size":737},"scripts/seat.ts":{"integrity":"sha384-qTc33dk7kx9+avQ4JugIv1csCyESSIOVst3FKQhN3pC0OIyeh/yA32h0z8zjdIWc","size":6959},"thumbnail.png":{"integrity":"sha384-u4mWUcX2kkrcgfIKydVN3kKeDu7K2Jfg9TKNBYavhhiIjZ0bWSUPVg9VABZZuaV1","size":19258}}},{"name":"classroom-chair","data":"{\n \"id\": \"cacd50dc-5861-4b71-83ee-83cb23fea9e4\",\n \"name\": \"Classroom Chair\",\n \"description\": \"A moulded classroom chair. Players can sit on it.\",\n \"category\": \"custom\",\n \"tags\": [\n \"seat\",\n \"furniture\",\n \"sit\"\n ],\n \"version\": \"1.1.0\",\n \"changelog\": [\n {\n \"version\": \"1.1.0\",\n \"notes\": \"The seat no longer runs on the Multiplayer Server, where it was walking every sit spot's transform chain each frame for nobody to see.\"\n },\n {\n \"version\": \"1.0.1\",\n \"notes\": \"Ships the model's texture, which was missing from the folder — without it the model rendered blank white in-world.\"\n },\n {\n \"version\": \"1.0.0\",\n \"notes\": \"Initial release\"\n }\n ],\n \"origin\": {\n \"source\": \"builtin\"\n },\n \"requiredPermissions\": [\n \"ALLOW_TO_MOVE_PLAYER_INSIDE_SCENE\",\n \"ALLOW_TO_TRIGGER_AVATAR_EMOTE\"\n ],\n \"group\": \"Seats\"\n}\n","files":{"Chair_02.glb":{"integrity":"sha384-4sbNyI8nx8fgdkKm/Df7ooV8fEtA5sUTxy7VI2R+91f/JDklg4yFxOk4U3RXIFuo","size":16368},"composite.json":{"integrity":"sha384-Esh68GGVhUf9RCOfsDXWQaUiGb273cV7Z5cC2MOXe6JkUJknpHCpvyBwgPjvIHTg","size":1447},"data.json":{"integrity":"sha384-2FqLS4bQ26dRzDJZgb3HlB/Hrlt6x8fzSQnCoHVeGFIyZHcJ77N4WClJlt0iAYQB","size":881},"file1.png":{"integrity":"sha384-hkHg23U+9Yx8eU+7OWRgOsHJ1gS8nzdWZ/DEAQvtwJF3dOf7sTQwINVaIo30FRk5","size":7117},"scripts/seat.ts":{"integrity":"sha384-qTc33dk7kx9+avQ4JugIv1csCyESSIOVst3FKQhN3pC0OIyeh/yA32h0z8zjdIWc","size":6959},"thumbnail.png":{"integrity":"sha384-xp435rb3UtVrmBql5h82OUHv9+1HRv4msRquMkJF1ABAwAmE0htpneGPsIovG1dU","size":14671}}},{"name":"court-chair","data":"{\n \"id\": \"e29fe7dd-20f3-4486-941e-bb85401d0d1d\",\n \"name\": \"Court Chair\",\n \"description\": \"An upright court chair. Players can sit on it.\",\n \"category\": \"custom\",\n \"tags\": [\n \"seat\",\n \"furniture\",\n \"sit\"\n ],\n \"version\": \"1.1.0\",\n \"changelog\": [\n {\n \"version\": \"1.1.0\",\n \"notes\": \"The seat no longer runs on the Multiplayer Server, where it was walking every sit spot's transform chain each frame for nobody to see.\"\n },\n {\n \"version\": \"1.0.1\",\n \"notes\": \"Ships the model's texture, which was missing from the folder — without it the model rendered blank white in-world.\"\n },\n {\n \"version\": \"1.0.0\",\n \"notes\": \"Initial release\"\n }\n ],\n \"origin\": {\n \"source\": \"builtin\"\n },\n \"requiredPermissions\": [\n \"ALLOW_TO_MOVE_PLAYER_INSIDE_SCENE\",\n \"ALLOW_TO_TRIGGER_AVATAR_EMOTE\"\n ],\n \"group\": \"Seats\"\n}\n","files":{"Chair_Wood_01.glb":{"integrity":"sha384-IIv1LpNQXbn42cpCwd4gsgDfThllJfAjB0pjMC51jcgUqJD6yJ25vIUv4OUSNZ0B","size":38776},"FanstasyPack_TX.png":{"integrity":"sha384-KMdE2Mz2QPnFyTWlJZWCUSxASSMsmyw/VFzHLyFQvXehN1ujIEepbskPuNqHgCI+","size":15078},"composite.json":{"integrity":"sha384-Q1IbQdubZR+c8womUaRcMywMD5GjYB/t46kuu309jIHimWA2YHGNgl/Ei5G/B1Bg","size":1408},"data.json":{"integrity":"sha384-akBy4ls/agEp39hMybq9vUIOyxV4KMBId+YLlayMWgc7QJcI/cLc+UktiHJOny6R","size":874},"scripts/seat.ts":{"integrity":"sha384-qTc33dk7kx9+avQ4JugIv1csCyESSIOVst3FKQhN3pC0OIyeh/yA32h0z8zjdIWc","size":6959},"thumbnail.png":{"integrity":"sha384-v2OuF/sRj8TMvjUqhYYJTkwfAMftvT//lNEFTULD99DFiWfc/bWhceAxxeo7emX+","size":12243}}},{"name":"curved-couch","data":"{\n \"id\": \"48dbe32d-c906-4287-bcfe-2cfe280c68f8\",\n \"name\": \"Curved Couch\",\n \"description\": \"A curved sectional couch, seating three. Players can sit along it.\",\n \"category\": \"custom\",\n \"tags\": [\n \"seat\",\n \"furniture\",\n \"sit\"\n ],\n \"version\": \"1.1.0\",\n \"changelog\": [\n {\n \"version\": \"1.1.0\",\n \"notes\": \"The seat no longer runs on the Multiplayer Server, where it was walking every sit spot's transform chain each frame for nobody to see.\"\n },\n {\n \"version\": \"1.0.0\",\n \"notes\": \"Initial release\"\n }\n ],\n \"origin\": {\n \"source\": \"builtin\"\n },\n \"requiredPermissions\": [\n \"ALLOW_TO_MOVE_PLAYER_INSIDE_SCENE\",\n \"ALLOW_TO_TRIGGER_AVATAR_EMOTE\"\n ],\n \"group\": \"Seats\"\n}\n","files":{"CurvedCouch.glb":{"integrity":"sha384-EnJVY5fVNrynT2dL7huvsxVfZ5RbbvmrxnGjrEobubreqJ1U7qQo1ofzwBcNGYgg","size":38740},"composite.json":{"integrity":"sha384-Mx4dSJiZ3vo9xNctXyshiVZNlQ6SaYKDrtdLqpRT+ODzyJGneMwOxA/64u2rfqre","size":2013},"data.json":{"integrity":"sha384-7TJ7cPkU1KWPclbaj5CKLkVvIM6Ascfewj4ikqy9H6KRpu26ZyaBZfE6UekpP/ZU","size":722},"scripts/seat.ts":{"integrity":"sha384-qTc33dk7kx9+avQ4JugIv1csCyESSIOVst3FKQhN3pC0OIyeh/yA32h0z8zjdIWc","size":6959},"thumbnail.png":{"integrity":"sha384-oyKNtE22C6BjtcNTnnoBTYjfmIqVnik0SaM5IwfC1qheKHjXVa8Lxtihi9YDu8fs","size":14388}}},{"name":"game-flow","data":"{\n \"id\": \"44374100-12fb-481f-90ce-2a4d81949084\",\n \"name\": \"Game Flow\",\n \"description\": \"Lobby, countdown, rounds, winners \\u2014 runs your game from start to end. Works with: Leaderboard, Announcer.\",\n \"category\": \"custom\",\n \"group\": \"Multiplayer Server\",\n \"tags\": [\n \"multiplayer\",\n \"server\",\n \"round\",\n \"lobby\",\n \"countdown\",\n \"timer\",\n \"winners\"\n ],\n \"requiresSdk\": \"auth-server\",\n \"version\": \"1.1.0\",\n \"changelog\": [\n {\n \"version\": \"1.0.0\",\n \"notes\": \"Initial release: lobby \\u2192 round \\u2192 winners on game.round, a countdown every client derives from one shared deadline, a winners line read from the board key a Leaderboard shows, and a \\\"script\\\" mode where your own game.newRound() ends the round and the round length is only a ceiling.\"\n },\n {\n \"version\": \"1.1.0\",\n \"notes\": \"Optional themed round timer and lobby countdown, configured in the inspector.\"\n }\n ],\n \"origin\": {\n \"source\": \"builtin\"\n }\n}\n","files":{"ai.md":{"integrity":"sha384-FSQahckNpE6r400CC5Kw5Fz1uijUfaZ0N2XZBEm+YVMsbRTMfjX5zrlyKJMleUyl","size":4677},"composite.json":{"integrity":"sha384-TXN9bYBu1C79b9fTYJ2GbtOC1J4wjEpJt6rIykdYJTu3HEUw62il/8CIFSljcB4Q","size":932},"data.json":{"integrity":"sha384-cruMbakv6U8Yd67cIbkOWRxcnbNUZ5FL9EgLUpeYGlXyHpu2JdKewtKVUQchaPkr","size":983},"scripts/game-flow.ts":{"integrity":"sha384-mFeI/fMcDDaBSqg4bqjrwSGUjLpAYnIaQki97hmagLjkI20s/J8q6WRBuX6ueTAh","size":6537},"scripts/pure/flow.ts":{"integrity":"sha384-zEgjgIQS3RzCJ8Tyud8tywm5SmD+FO8WLnFpBkexnFEnmbOoWSb37HUx3X0/DLT3","size":7575},"thumbnail.png":{"integrity":"sha384-ZQHTd8rM4CaE2+qNC5at7B4H3e1ikf1ck9K6GI/TEwn/7WKzf2/9I9sInMvrxy8J","size":13227}}},{"name":"health-respawn","data":"{\n \"id\": \"5cc3b4d7-2a87-4825-9a53-e2b007bcff24\",\n \"name\": \"Health & Respawn\",\n \"description\": \"Players can take damage and respawn. Works with: Game Flow, Trigger Area.\",\n \"category\": \"custom\",\n \"group\": \"Multiplayer Server\",\n \"tags\": [\n \"player\",\n \"health\",\n \"damage\",\n \"respawn\",\n \"multiplayer\",\n \"server\"\n ],\n \"requiresSdk\": \"auth-server\",\n \"requiredPermissions\": [\n \"ALLOW_TO_MOVE_PLAYER_INSIDE_SCENE\"\n ],\n \"drivenBy\": {\n \"rule\": \"Nothing takes hit points by itself — the server calls damage() wherever the harm happens, and this item does the dying and the respawn.\",\n \"code\": \"game.onEnterArea('Spikes', (player) => damage(player, 25))\",\n \"next\": \"Press New script below, write that inside the isServer() block it comes with, and import damage from the health.ts beside this item's own script.\"\n },\n \"version\": \"1.3.1\",\n \"changelog\": [\n { \"version\": \"1.3.1\", \"notes\": \"The health bar is on by default again; turn Health Bar off for a game that never deals damage.\" },\n { \"version\": \"1.3.0\", \"notes\": \"Health bar setting, off by default: a course that never deals damage shows no hit points.\" },\n { \"version\": \"1.2.1\", \"notes\": \"Guide covers in-bounds respawn destinations, permissions and course playtesting.\" },\n {\n \"version\": \"1.2.0\",\n \"notes\": \"Per-player checkpoint destinations, healing, forced death, death counts, optional respawn delay and protection after respawning.\"\n },\n {\n \"version\": \"1.0.0\",\n \"notes\": \"Initial release: hit points the server owns in game.state.health, a respawn point picked in the inspector, a \\\"die below height\\\" death plane, and a damage() other server code calls.\"\n },\n {\n \"version\": \"1.1.0\",\n \"notes\": \"The placed item's Script card now shows the damage() call that takes hit points, under its respawn settings.\"\n }\n ],\n \"origin\": {\n \"source\": \"builtin\"\n }\n}\n","files":{"ai.md":{"integrity":"sha384-sOrhWgNJh7HnRDNRZnTFtj+lulT6lQpepsjcZ8+8S66IEKIbA/+TR0wineLeGJ0r","size":4755},"composite.json":{"integrity":"sha384-WZskIkQZ8n8dehUBe5OKQ+99aVon0PAX6Znh5z2TmWf177Wto80aE70iod28dvCF","size":565},"data.json":{"integrity":"sha384-/9l/nKLcx51jlRHD0Yafkl9meyPTAwCxTR8XteUkuH5jmmcfa8IK6SIiDJBhoqlp","size":1911},"scripts/health-respawn.ts":{"integrity":"sha384-QwLUhaAcxp9vui+9q7ccvuEpY87QHG+d/pzfAJRPn9L2yHhrvU605ORU21pz17hP","size":5760},"scripts/health.ts":{"integrity":"sha384-/zA9uuvRZ3uRS2WdFvPml83zRvA5n4h0RTNIEd2pb59Ui6yrtX1kJHj/zbK+Md4A","size":1981},"scripts/pure/health.ts":{"integrity":"sha384-if/V7vja1R5enh/H7yM4FCh3Ea7bgld+tr76ryjTWryrk3lEw7xFe6p282WsZFji","size":2230},"scripts/pure/life.ts":{"integrity":"sha384-oNHo7xAdJWVw3t5o7oDt+wjM9ea8FD/Ynskc2l1YjP3+qvnYLNnrI4v1pENPOorD","size":2368},"thumbnail.png":{"integrity":"sha384-fVCccAg9bAVrgYD6MFlGK+1zBO5XEDpxd0Lh7LGFaobZYl2OCaxJcME3eVrQqS31","size":7116}}},{"name":"high-stool","data":"{\n \"id\": \"f8ee0d2a-19f5-45a9-9029-cd46d7a8f834\",\n \"name\": \"High Stool\",\n \"description\": \"A tall bar stool. Players can sit on it.\",\n \"category\": \"custom\",\n \"tags\": [\n \"seat\",\n \"furniture\",\n \"sit\"\n ],\n \"version\": \"1.1.0\",\n \"changelog\": [\n {\n \"version\": \"1.1.0\",\n \"notes\": \"The seat no longer runs on the Multiplayer Server, where it was walking every sit spot's transform chain each frame for nobody to see.\"\n },\n {\n \"version\": \"1.0.0\",\n \"notes\": \"Initial release\"\n }\n ],\n \"origin\": {\n \"source\": \"builtin\"\n },\n \"requiredPermissions\": [\n \"ALLOW_TO_MOVE_PLAYER_INSIDE_SCENE\",\n \"ALLOW_TO_TRIGGER_AVATAR_EMOTE\"\n ],\n \"group\": \"Seats\"\n}\n","files":{"HighStool.glb":{"integrity":"sha384-pELylPLTKad8MmTwL9+jXPGUf5KOnXgxBuY4JXguuov7duJEIVRk4pRcQ+gCgKmf","size":26332},"composite.json":{"integrity":"sha384-U3fv7ocM1aBZWJ+l9uC2Eg2acDqnoxy3tPhr8dXx1Vi7N1riaugAdQTDIpTQQyAK","size":1416},"data.json":{"integrity":"sha384-LjCLqThIrUN7Qk+zA6paffpTxFsPGIiDdRhVow2w9PlMxyX+EvyLO+tds9fHTX7O","size":694},"scripts/seat.ts":{"integrity":"sha384-qTc33dk7kx9+avQ4JugIv1csCyESSIOVst3FKQhN3pC0OIyeh/yA32h0z8zjdIWc","size":6959},"thumbnail.png":{"integrity":"sha384-Y4cPyTFXuHC5maHoDtEX7vdYSK76XLhw9JbnYPORlyOSmLAfhkvv/FjW0apjV9VS","size":9066}}},{"name":"large-couch","data":"{\n \"id\": \"ac233c16-699e-4f01-8e7c-910bb5a168af\",\n \"name\": \"Large Couch\",\n \"description\": \"A long couch, seating three. Players can sit along it.\",\n \"category\": \"custom\",\n \"tags\": [\n \"seat\",\n \"furniture\",\n \"sit\"\n ],\n \"version\": \"1.1.0\",\n \"changelog\": [\n {\n \"version\": \"1.1.0\",\n \"notes\": \"The seat no longer runs on the Multiplayer Server, where it was walking every sit spot's transform chain each frame for nobody to see.\"\n },\n {\n \"version\": \"1.0.0\",\n \"notes\": \"Initial release\"\n }\n ],\n \"origin\": {\n \"source\": \"builtin\"\n },\n \"requiredPermissions\": [\n \"ALLOW_TO_MOVE_PLAYER_INSIDE_SCENE\",\n \"ALLOW_TO_TRIGGER_AVATAR_EMOTE\"\n ],\n \"group\": \"Seats\"\n}\n","files":{"ThreeSeater_Couch.glb":{"integrity":"sha384-Oo6LBiZPQO03QYxtyTqaG4NttfLoAeL14jtchqBbJjg1HQftbWUwrE1lQ8mSXCnM","size":31868},"composite.json":{"integrity":"sha384-HtdxTfaa5dyvF9BUlo0t2tzgSA4SWn3nwT2DccLeqnmscPpMqTKKmYt886lQaFYQ","size":2023},"data.json":{"integrity":"sha384-uIPJ6qQK7hXa2HghWSKPj5E8buDUVRb0XdeSUOcYoFnnQFTx3Nn9gWGf9m6kFTnU","size":709},"scripts/seat.ts":{"integrity":"sha384-qTc33dk7kx9+avQ4JugIv1csCyESSIOVst3FKQhN3pC0OIyeh/yA32h0z8zjdIWc","size":6959},"thumbnail.png":{"integrity":"sha384-/JwNvv3M/1qncoi0bQ7ZM9h7WQKP48Ti8KgAdHqtLxiwMogRZmWRhATdgF7nBz+3","size":16512}}},{"name":"leaderboard","data":"{\n \"id\": \"493daede-2afd-4c10-9c0d-6aefb25629a8\",\n \"name\": \"Leaderboard\",\n \"description\": \"Show game scores or automatic Run Progress best times on a 3D panel or themed screen overlay.\",\n \"category\": \"custom\",\n \"group\": \"Multiplayer Server\",\n \"tags\": [\n \"multiplayer\",\n \"server\",\n \"leaderboard\",\n \"score\",\n \"ranking\",\n \"board\"\n ],\n \"requiresSdk\": \"auth-server\",\n \"version\": \"1.5.0\",\n \"changelog\": [\n {\n \"version\": \"1.5.0\",\n \"notes\": \"Before the first score the board tells players \\\"No scores yet — be the first!\\\" (or \\\"No times yet\\\" for times) instead of setup instructions, and its text wraps to stay inside the panel. A board placed before this keeps its old text size, where the new line already fits.\"\n },\n {\n \"version\": \"1.4.0\",\n \"notes\": \"The 3D panel's text is readable from its front, and players can no longer walk through the board. A board placed before this keeps its old text position and no collider: delete it and place it again.\"\n },\n {\n \"version\": \"1.3.0\",\n \"notes\": \"Rows show the display name of players in the scene, or a name the row carries; others show a short address.\"\n },\n {\n \"version\": \"1.0.0\",\n \"notes\": \"Initial release: a panel that reads the game.state key you name in boardKey and paints its top rows, so the board a Script keeps is the board every player sees and a late joiner gets it from the snapshot.\"\n },\n {\n \"version\": \"1.1.0\",\n \"notes\": \"The placed panel's Script card now shows the setState line that writes the rows it paints, under its own settings.\"\n },\n {\n \"version\": \"1.2.0\",\n \"notes\": \"Themed screen overlay and automatic persisted best times from Run Progress.\"\n }\n ],\n \"origin\": {\n \"source\": \"builtin\"\n }\n}\n","files":{"ai.md":{"integrity":"sha384-ih3iGvpx7WmDxw6sqC8t9rSzmEs27MsBmC352EG2LTq105m2EV6cS0cB5Go9bksM","size":4478},"board-panel.glb":{"integrity":"sha384-Su82WkaQqG6obG/yGRkHw+WCXQCX/vMngfKyCV/IUH7tpdqz1MS2777hwjPMNdrI","size":1276},"composite.json":{"integrity":"sha384-sFuc9KWyDZpE2r3m+p3lj2YXw/hlALVOoguXm/wf1fSuN9T5pCXAlD7ow/9gOhQk","size":1916},"data.json":{"integrity":"sha384-H+1dypk5Tjsct9DgDOdk/JQdgD6z1l1kuNby8aq5q2iTFi9R6S5z1YK/bQjcIg+O","size":1790},"scripts/leaderboard-hud.tsx":{"integrity":"sha384-6SibhVY3IaDHQG/kagXkYEWShGZ40LT74enMoKGKoMb22HxJnliCUtpgfzaYwkiX","size":1884},"scripts/leaderboard.ts":{"integrity":"sha384-iAYR33sD3yN0q/5iv+5clfq2yqiwAW2XA3I5iztG0qjC2u3WExSzTWsISCj9F+PW","size":4024},"scripts/pure/board.ts":{"integrity":"sha384-ks1PrCQkVaxlFeV4JEK7VUtIstr9rmU4dBqQLqN0QThlYOZ1StHQ5Vex+djFVxN9","size":3394},"thumbnail.png":{"integrity":"sha384-PqQ+DIWqDPRtuQIuK4NvtFcicWiCgQ94XqhBZWKGArKe+GEyHpjOdd9cerdgyamu","size":5768}}},{"name":"loveseat","data":"{\n \"id\": \"78050d8f-ee51-4db7-b060-14e7a0b48939\",\n \"name\": \"Loveseat\",\n \"description\": \"A two-seat sofa. Players can sit at either end.\",\n \"category\": \"custom\",\n \"tags\": [\n \"seat\",\n \"furniture\",\n \"sit\"\n ],\n \"version\": \"1.1.0\",\n \"changelog\": [\n {\n \"version\": \"1.1.0\",\n \"notes\": \"The seat no longer runs on the Multiplayer Server, where it was walking every sit spot's transform chain each frame for nobody to see.\"\n },\n {\n \"version\": \"1.0.1\",\n \"notes\": \"Ships the model's texture, which was missing from the folder — without it the model rendered blank white in-world.\"\n },\n {\n \"version\": \"1.0.0\",\n \"notes\": \"Initial release\"\n }\n ],\n \"origin\": {\n \"source\": \"builtin\"\n },\n \"requiredPermissions\": [\n \"ALLOW_TO_MOVE_PLAYER_INSIDE_SCENE\",\n \"ALLOW_TO_TRIGGER_AVATAR_EMOTE\"\n ],\n \"group\": \"Seats\"\n}\n","files":{"Couch_01.glb":{"integrity":"sha384-Ybann6g/XRgUPIClpvLHX3e6SqETbaQ5vwLxVFADEhbMCc4YY3Jzw/RH6hR9gxSj","size":26236},"composite.json":{"integrity":"sha384-6gJtUvbDA9wZB5J/eUzFxTl2Ior4BViiorJCNokaAIZk/6/qXcg/7S1zGC+NsR6N","size":2005},"data.json":{"integrity":"sha384-uAOd4Pflpvbc2DFGnB3IX/xsDWHwz+RsG7UDDmuMluZHnB1bzIxFhw8+NEzh7T9/","size":872},"file1.png":{"integrity":"sha384-hkHg23U+9Yx8eU+7OWRgOsHJ1gS8nzdWZ/DEAQvtwJF3dOf7sTQwINVaIo30FRk5","size":7117},"scripts/seat.ts":{"integrity":"sha384-qTc33dk7kx9+avQ4JugIv1csCyESSIOVst3FKQhN3pC0OIyeh/yA32h0z8zjdIWc","size":6959},"thumbnail.png":{"integrity":"sha384-Y12yGhzQFK62sP07Qz6ipUPa++ZBer/QiCMMbpn1qnP/7n6RAJXoaDMYSGSvA4Hh","size":23593}}},{"name":"modern-sofa","data":"{\n \"id\": \"14706421-460b-4161-b06c-8ce7db73ad11\",\n \"name\": \"Modern Sofa\",\n \"description\": \"A low modern sofa, seating three. Players can sit along it.\",\n \"category\": \"custom\",\n \"tags\": [\n \"seat\",\n \"furniture\",\n \"sit\"\n ],\n \"version\": \"1.1.0\",\n \"changelog\": [\n {\n \"version\": \"1.1.0\",\n \"notes\": \"The seat no longer runs on the Multiplayer Server, where it was walking every sit spot's transform chain each frame for nobody to see.\"\n },\n {\n \"version\": \"1.0.0\",\n \"notes\": \"Initial release\"\n }\n ],\n \"origin\": {\n \"source\": \"builtin\"\n },\n \"requiredPermissions\": [\n \"ALLOW_TO_MOVE_PLAYER_INSIDE_SCENE\",\n \"ALLOW_TO_TRIGGER_AVATAR_EMOTE\"\n ],\n \"group\": \"Seats\"\n}\n","files":{"ModernSofa.glb":{"integrity":"sha384-WT/qnGZedI5qRlBpLTndtxD90++WGbyQPpFeZJTWBDHR3555y88+LN4RG4aXLPA+","size":36796},"composite.json":{"integrity":"sha384-r6g/u0LMvBeUh8W3qMWZJ7H6OqgyqjNsPAL7jX5wOz+kvRwb178v0cD3YGoazd/T","size":2022},"data.json":{"integrity":"sha384-oMvACe5vrge+hMwWAsi9XHAe/OaFSCeWN8djSih9ET+M0j6CHHD5+tDxln/6crnw","size":714},"scripts/seat.ts":{"integrity":"sha384-qTc33dk7kx9+avQ4JugIv1csCyESSIOVst3FKQhN3pC0OIyeh/yA32h0z8zjdIWc","size":6959},"thumbnail.png":{"integrity":"sha384-+rS3k/5fjWqEHdGpcCs+Lur4gU1mESTaJ+fxHjpRjsKsUMbY1m6BP9G5VNwHtDea","size":16342}}},{"name":"outdoor-chair","data":"{\n \"id\": \"d8cb5c0f-dcf2-4fda-be37-2b76c4c0e78c\",\n \"name\": \"Outdoor Chair\",\n \"description\": \"A weathered outdoor chair. Players can sit on it.\",\n \"category\": \"custom\",\n \"tags\": [\n \"seat\",\n \"furniture\",\n \"sit\"\n ],\n \"version\": \"1.1.0\",\n \"changelog\": [\n {\n \"version\": \"1.1.0\",\n \"notes\": \"The seat no longer runs on the Multiplayer Server, where it was walking every sit spot's transform chain each frame for nobody to see.\"\n },\n {\n \"version\": \"1.0.1\",\n \"notes\": \"Ships the model's texture, which was missing from the folder — without it the model rendered blank white in-world.\"\n },\n {\n \"version\": \"1.0.0\",\n \"notes\": \"Initial release\"\n }\n ],\n \"origin\": {\n \"source\": \"builtin\"\n },\n \"requiredPermissions\": [\n \"ALLOW_TO_MOVE_PLAYER_INSIDE_SCENE\",\n \"ALLOW_TO_TRIGGER_AVATAR_EMOTE\"\n ],\n \"group\": \"Seats\"\n}\n","files":{"Chair_07.glb":{"integrity":"sha384-rh67Oyki0AbHvwI7VAKxG4R6BvIZ+ApNvK3Ub3pjli95VKdib6IEUeCQIS5xRtIy","size":26632},"composite.json":{"integrity":"sha384-SdEMJ9948Cqop6/F49vW9182dpnKhA6sj/sGGfRC5+7NLSOvMk/wmxej4ptvjZwX","size":1419},"data.json":{"integrity":"sha384-erXzZe+COuUtzmtc67RGz02/w4ROQZMqgeU5TAsRJMcF0D1Pjj72jmzpKYJtjULa","size":879},"file1.png":{"integrity":"sha384-hkHg23U+9Yx8eU+7OWRgOsHJ1gS8nzdWZ/DEAQvtwJF3dOf7sTQwINVaIo30FRk5","size":7117},"scripts/seat.ts":{"integrity":"sha384-qTc33dk7kx9+avQ4JugIv1csCyESSIOVst3FKQhN3pC0OIyeh/yA32h0z8zjdIWc","size":6959},"thumbnail.png":{"integrity":"sha384-MuAlhtUctXmuZuYnp2/jzIowRuJoMj56xdErvUjb1WC8IJKidThtoJXtoDh1Mi2u","size":22220}}},{"name":"run-progress","data":"{\n \"id\": \"8ea22784-81dd-4d60-b0ae-54fef4852fb7\",\n \"name\": \"Run Progress\",\n \"description\": \"Timed runs with per-player checkpoints, collectibles, finish conditions, restart and a configurable HUD.\",\n \"category\": \"custom\",\n \"group\": \"Multiplayer Server\",\n \"tags\": [\n \"course\",\n \"race\",\n \"checkpoint\",\n \"collectible\",\n \"timer\",\n \"hud\",\n \"restart\"\n ],\n \"requiresSdk\": \"auth-server\",\n \"version\": \"1.3.1\",\n \"changelog\": [\n {\n \"version\": \"1.3.1\",\n \"notes\": \"Hit points show unless Health & Respawn's Health Bar is turned off, so older Health & Respawn copies keep their bar.\"\n },\n {\n \"version\": \"1.3.0\",\n \"notes\": \"A missing spawn marker respawns players on its area's floor, not mid-air, and a checkpoint/marker count mismatch shows as a problem.\"\n },\n {\n \"version\": \"1.2.0\",\n \"notes\": \"HUD setting: Full, one big centred timer, or Hidden for a custom HUD. Health shows only when Health & Respawn turns its bar on.\"\n },\n {\n \"version\": \"1.1.0\",\n \"notes\": \"A missing spawn marker no longer stops the course: players respawn at the matching area, or at Health & Respawn's point.\"\n },\n {\n \"version\": \"1.0.0\",\n \"notes\": \"Timed course runs with per-player checkpoints, collectible goals, restart, best times, a persisted leaderboard and a themed HUD.\"\n }\n ],\n \"origin\": {\n \"source\": \"builtin\"\n }\n}\n","files":{"ai.md":{"integrity":"sha384-AFS7mBokYSeS3M9sN+74yd7ijMGZyLYeEantceHuwVb9j1gruYCYXWIVRZCwa+KV","size":6024},"composite.json":{"integrity":"sha384-VLC5nKAXOEJSV0e4pJv9kCp49u4nb6+OKeQImT7dYeDYMq3D21bDbiE79oyA4t0q","size":342},"data.json":{"integrity":"sha384-rPgvPXRj41+7VMKrgwZPhHPoSROZq3wwvG+8fCYVZnIbTaZaYpZrVG2iaXfN9H+W","size":1403},"scripts/moving-platform.ts":{"integrity":"sha384-+OOc2vW73HOhsJCLElk2hGAcIJHfia3CKJbWkP7mOs0H7iAX3Gh5HYbcLUAZLXWh","size":1035},"scripts/run-progress.tsx":{"integrity":"sha384-K/tf3/tGNZDEHRDKzqdb2PIdrUp1oGWOL+UR9jdmyGKK/KLbK5Bf5UGbb9msf/Yh","size":7787},"thumbnail.png":{"integrity":"sha384-6TEe0tNGVqIR8qvFRYv3jBgSHl7T2lZWQe6BuFofv7Lsfmwy2A6/ZHBc/Y1N6C2q","size":28248}}},{"name":"rustic-bench","data":"{\n \"id\": \"d6e264c5-a080-4702-827f-dcad4bfbc77c\",\n \"name\": \"Rustic Bench\",\n \"description\": \"A rough timber bench, seating two. Players can sit on it.\",\n \"category\": \"custom\",\n \"tags\": [\n \"seat\",\n \"furniture\",\n \"sit\"\n ],\n \"version\": \"1.1.0\",\n \"changelog\": [\n {\n \"version\": \"1.1.0\",\n \"notes\": \"The seat no longer runs on the Multiplayer Server, where it was walking every sit spot's transform chain each frame for nobody to see.\"\n },\n {\n \"version\": \"1.0.1\",\n \"notes\": \"Ships the model's texture, which was missing from the folder — without it the model rendered blank white in-world.\"\n },\n {\n \"version\": \"1.0.0\",\n \"notes\": \"Initial release\"\n }\n ],\n \"origin\": {\n \"source\": \"builtin\"\n },\n \"requiredPermissions\": [\n \"ALLOW_TO_MOVE_PLAYER_INSIDE_SCENE\",\n \"ALLOW_TO_TRIGGER_AVATAR_EMOTE\"\n ],\n \"group\": \"Seats\"\n}\n","files":{"Bench_01.glb":{"integrity":"sha384-HvKGBqFZmpfflUDGmAv6bnKDgdLIRfY2gJbg+AffL+GjBuNBHpMsCpXWxfLXZDlN","size":38296},"PiratesPack_TX.png.png":{"integrity":"sha384-tvHmsChchDas/4FWyTySQozen2k/SnbQEzXKuV6p90FHRLZoH5NQyiDa9EOnNiHi","size":8600},"composite.json":{"integrity":"sha384-gGr5duM8zbC3xcX1ZPdVi5VH9qbExCukBk71DnHbpKDVp3R7BXD5Zi13eDIBoQE6","size":2007},"data.json":{"integrity":"sha384-7yCiT9oSixpR2SmV25CFxXVEFyPzmMI6/CMoXUIZp3vE1Vu0R591Vp6gjJalb/BE","size":886},"scripts/seat.ts":{"integrity":"sha384-qTc33dk7kx9+avQ4JugIv1csCyESSIOVst3FKQhN3pC0OIyeh/yA32h0z8zjdIWc","size":6959},"thumbnail.png":{"integrity":"sha384-ZmLePG5FIbmqf4RKCdidRKla6XAeP/+r51k4afbck7j8BR0RSwHEIDo7QWOSmmN2","size":11775}}},{"name":"rustic-round-stool","data":"{\n \"id\": \"80f58415-1e99-4ac3-ab21-7e4b93d8c1da\",\n \"name\": \"Rustic Round Stool\",\n \"description\": \"A round wooden stool. Players can sit on it.\",\n \"category\": \"custom\",\n \"tags\": [\n \"seat\",\n \"furniture\",\n \"sit\"\n ],\n \"version\": \"1.1.0\",\n \"changelog\": [\n {\n \"version\": \"1.1.0\",\n \"notes\": \"The seat no longer runs on the Multiplayer Server, where it was walking every sit spot's transform chain each frame for nobody to see.\"\n },\n {\n \"version\": \"1.0.1\",\n \"notes\": \"Ships the model's texture, which was missing from the folder — without it the model rendered blank white in-world.\"\n },\n {\n \"version\": \"1.0.0\",\n \"notes\": \"Initial release\"\n }\n ],\n \"origin\": {\n \"source\": \"builtin\"\n },\n \"requiredPermissions\": [\n \"ALLOW_TO_MOVE_PLAYER_INSIDE_SCENE\",\n \"ALLOW_TO_TRIGGER_AVATAR_EMOTE\"\n ],\n \"group\": \"Seats\"\n}\n","files":{"Chairwood_01.glb":{"integrity":"sha384-UGMRBagdJnoipOK+RMQftg0R6vXgHD/6jTQJl45SOrw8uCclBWodtVxQj8lAwH97","size":26292},"PiratesPack_TX.png.png":{"integrity":"sha384-tvHmsChchDas/4FWyTySQozen2k/SnbQEzXKuV6p90FHRLZoH5NQyiDa9EOnNiHi","size":8600},"composite.json":{"integrity":"sha384-+vEWwi/GBNSbSKxucA5WevFwKuJvMkgdOzlA0UxB3vlTLjhfNr/db8qB9zLHoSsP","size":1423},"data.json":{"integrity":"sha384-+78WMw5CS6ay5o4yyZQC7P3dtmWW4rzjnd9j1FmyNJoAuHd4E0QeZH1bPJjJzIgZ","size":879},"scripts/seat.ts":{"integrity":"sha384-qTc33dk7kx9+avQ4JugIv1csCyESSIOVst3FKQhN3pC0OIyeh/yA32h0z8zjdIWc","size":6959},"thumbnail.png":{"integrity":"sha384-N3nz6ZelKTPqOpx5g6JLCNox5W71EwtvihYfFZffMoPDlR/oDSSVk2c44Wt/ABLH","size":13077}}},{"name":"rustic-square-stool","data":"{\n \"id\": \"9bc6d2f4-fb0a-4688-b81b-a4a83636193d\",\n \"name\": \"Rustic Square Stool\",\n \"description\": \"A square wooden stool. Players can sit on it.\",\n \"category\": \"custom\",\n \"tags\": [\n \"seat\",\n \"furniture\",\n \"sit\"\n ],\n \"version\": \"1.1.0\",\n \"changelog\": [\n {\n \"version\": \"1.1.0\",\n \"notes\": \"The seat no longer runs on the Multiplayer Server, where it was walking every sit spot's transform chain each frame for nobody to see.\"\n },\n {\n \"version\": \"1.0.1\",\n \"notes\": \"Ships the model's texture, which was missing from the folder — without it the model rendered blank white in-world.\"\n },\n {\n \"version\": \"1.0.0\",\n \"notes\": \"Initial release\"\n }\n ],\n \"origin\": {\n \"source\": \"builtin\"\n },\n \"requiredPermissions\": [\n \"ALLOW_TO_MOVE_PLAYER_INSIDE_SCENE\",\n \"ALLOW_TO_TRIGGER_AVATAR_EMOTE\"\n ],\n \"group\": \"Seats\"\n}\n","files":{"Chairwood_02.glb":{"integrity":"sha384-IZcQfO7nBmiElbfMxtEy8WimKIB3WAefGB9cnz1A8oih4z6EuLuRleGbYwNr4DYZ","size":40548},"PiratesPack_TX.png.png":{"integrity":"sha384-tvHmsChchDas/4FWyTySQozen2k/SnbQEzXKuV6p90FHRLZoH5NQyiDa9EOnNiHi","size":8600},"composite.json":{"integrity":"sha384-Xqpw2Y5Vi9LBJsQf7uJIxPgt2ypqG7mIcjiQdnz2pAgbD9KKq88XHN22EW2vctRg","size":1424},"data.json":{"integrity":"sha384-pVW/W1QTcprakc0Yei7HEYqFpBmpDLHrzVANvYbipoPpWPf1rAI6rw4vFI9SUDys","size":881},"scripts/seat.ts":{"integrity":"sha384-qTc33dk7kx9+avQ4JugIv1csCyESSIOVst3FKQhN3pC0OIyeh/yA32h0z8zjdIWc","size":6959},"thumbnail.png":{"integrity":"sha384-8rf/o+kVZ7qhW/3D8hUzNanZVTfMvUMOB5+Zs85Tvn6EWobBD42Bvkpr2zuTMzbE","size":14789}}},{"name":"server-clock","data":"{\n \"id\": \"9e37c253-b33e-4505-8231-530f62715d21\",\n \"name\": \"Server Clock\",\n \"description\": \"A clock showing NTP-synced server time, identical for every player. Runs on the Multiplayer Server.\",\n \"category\": \"custom\",\n \"group\": \"Multiplayer Server\",\n \"tags\": [\n \"multiplayer\",\n \"server\",\n \"clock\",\n \"time\"\n ],\n \"requiresSdk\": \"auth-server\",\n \"version\": \"1.1.0\",\n \"changelog\": [\n {\n \"version\": \"1.0.0\",\n \"notes\": \"Initial release: the Multiplayer Server's NTP-synced time, identical for every player, shown as 3D text at the item or as a 2D overlay on the player's client.\"\n },\n {\n \"version\": \"1.1.0\",\n \"notes\": \"Shared UI theme and independent clocks when multiple items use the overlay.\"\n }\n ],\n \"origin\": {\n \"source\": \"builtin\"\n }\n}\n","files":{"ai.md":{"integrity":"sha384-0AgqUdVYqeM0RQxl3pQ3H6zBKCZlE21T0pgaDoXpFdy5trs6+JwM96iAupPt03Bl","size":3273},"composite.json":{"integrity":"sha384-3endi+ZKs5JfksNFuC3a+KvjsuCSyG9Ee23/mA/DKuwGPqtfLasLie3EiRd2Hqs/","size":907},"data.json":{"integrity":"sha384-UNGwbMazjLH3ez9vMFyQis3SqR013F7LYPRaqNEi2lf6TWd6CVJanq3fwywusHY+","size":793},"scripts/server-clock.ts":{"integrity":"sha384-h5d/Qbi0bRVb9NpIzi3HqJIMOAd6HMNvd788iscqQJn9Vhenx6Q/f/fcorUNCWXE","size":2387},"thumbnail.png":{"integrity":"sha384-7vDACZ6Qb0G/LcQXW0w7DfZ/IyyT6NOmez0ZzJYgnwT9YECleSVRAHrXNZrWpVAo","size":8939}}},{"name":"simple-chair","data":"{\n \"id\": \"fe41823d-a0ef-4152-bf66-b9f44cdcffa2\",\n \"name\": \"Simple Chair\",\n \"description\": \"A simple lightweight chair. Players can sit on it.\",\n \"category\": \"custom\",\n \"tags\": [\n \"seat\",\n \"furniture\",\n \"sit\"\n ],\n \"version\": \"1.1.0\",\n \"changelog\": [\n {\n \"version\": \"1.1.0\",\n \"notes\": \"The seat no longer runs on the Multiplayer Server, where it was walking every sit spot's transform chain each frame for nobody to see.\"\n },\n {\n \"version\": \"1.0.1\",\n \"notes\": \"Ships the model's texture, which was missing from the folder — without it the model rendered blank white in-world.\"\n },\n {\n \"version\": \"1.0.0\",\n \"notes\": \"Initial release\"\n }\n ],\n \"origin\": {\n \"source\": \"builtin\"\n },\n \"requiredPermissions\": [\n \"ALLOW_TO_MOVE_PLAYER_INSIDE_SCENE\",\n \"ALLOW_TO_TRIGGER_AVATAR_EMOTE\"\n ],\n \"group\": \"Seats\"\n}\n","files":{"Chair_03.glb":{"integrity":"sha384-Kr1BoWrtvWuVgiTcU0TmlB2hNVHJIOjoEXu27uAvSWezai6Nn+MYq9IkPAPTVjZy","size":10140},"composite.json":{"integrity":"sha384-Ah3wQrl5kn40r1Byv3A0InbOVhRgn9Z3559lyvQCCnFhRdPjR88/pngxS0lOWYlQ","size":1444},"data.json":{"integrity":"sha384-QcAWIr/jmyykog8qMz+2TmM7WCiqgbH6WpQA7iPbyx0cvKJRIvu/FpCOwFoeCy/P","size":879},"file1.png":{"integrity":"sha384-hkHg23U+9Yx8eU+7OWRgOsHJ1gS8nzdWZ/DEAQvtwJF3dOf7sTQwINVaIo30FRk5","size":7117},"scripts/seat.ts":{"integrity":"sha384-qTc33dk7kx9+avQ4JugIv1csCyESSIOVst3FKQhN3pC0OIyeh/yA32h0z8zjdIWc","size":6959},"thumbnail.png":{"integrity":"sha384-970of2uoK/Vy8uBQAQRDTI5ubtyaXF6NVB+QdweA/VzCaUyVlHTciY2bgnX4bbcs","size":10304}}},{"name":"sit-spot","data":"{\n \"id\": \"49bc2e26-dc56-430b-888e-509d56ae79ed\",\n \"name\": \"Sit Spot\",\n \"description\": \"An invisible seat: drop it on any surface and players can sit exactly there, facing the way it points.\",\n \"category\": \"custom\",\n \"tags\": [\n \"seat\",\n \"furniture\",\n \"sit\"\n ],\n \"version\": \"1.1.0\",\n \"changelog\": [\n {\n \"version\": \"1.1.0\",\n \"notes\": \"The seat no longer runs on the Multiplayer Server, where it was walking every sit spot's transform chain each frame for nobody to see.\"\n },\n {\n \"version\": \"1.0.0\",\n \"notes\": \"Initial release\"\n }\n ],\n \"origin\": {\n \"source\": \"builtin\"\n },\n \"requiredPermissions\": [\n \"ALLOW_TO_MOVE_PLAYER_INSIDE_SCENE\",\n \"ALLOW_TO_TRIGGER_AVATAR_EMOTE\"\n ],\n \"group\": \"Seats\"\n}\n","files":{"composite.json":{"integrity":"sha384-uhBFFGia5mFzOQWC/J9UxtsSaldLqPEHiwzfnBYPzokXoME91oNDnBhwjPMNjpNc","size":799},"data.json":{"integrity":"sha384-ZpWPifWI1oc5/I6vlAeNNosb8cmuu5IEKnh/rdh8vdf57V+wnNsuVqAuFYn5aVdG","size":754},"scripts/seat.ts":{"integrity":"sha384-qTc33dk7kx9+avQ4JugIv1csCyESSIOVst3FKQhN3pC0OIyeh/yA32h0z8zjdIWc","size":6959},"thumbnail.png":{"integrity":"sha384-OrhbCwB59TLqDClVqt8Hrcy+OPXXkctZ1vW7zQTWOSaEWnyNRyne5SBtsVrZKVt2","size":18923}}},{"name":"sit-spot-edge","data":"{\n \"id\": \"6c815b58-d13f-4d30-a7ea-0f275d740084\",\n \"name\": \"Edge Sit Spot\",\n \"description\": \"An invisible seat for ledges and edges — the player sits with their legs hanging over the side.\",\n \"category\": \"custom\",\n \"tags\": [\n \"seat\",\n \"furniture\",\n \"sit\",\n \"edge\",\n \"ledge\"\n ],\n \"version\": \"1.1.0\",\n \"changelog\": [\n {\n \"version\": \"1.1.0\",\n \"notes\": \"The seat no longer runs on the Multiplayer Server, where it was walking every sit spot's transform chain each frame for nobody to see.\"\n },\n {\n \"version\": \"1.0.0\",\n \"notes\": \"Initial release\"\n }\n ],\n \"origin\": {\n \"source\": \"builtin\"\n },\n \"requiredPermissions\": [\n \"ALLOW_TO_MOVE_PLAYER_INSIDE_SCENE\",\n \"ALLOW_TO_TRIGGER_AVATAR_EMOTE\"\n ],\n \"group\": \"Seats\"\n}\n","files":{"composite.json":{"integrity":"sha384-us527Hlk6/JM3bpEqqwHclf7+Xu8hXGrtrhZJ1w/atuO4025ZqJO80d0Ov4XIXnq","size":764},"data.json":{"integrity":"sha384-CH6sS8qFyE2hi/eP5h6IP+XIhtaTkrANQsfRDKzipE1+a3/anhHvfoXa66xmW6g3","size":779},"emotes/Sit_Edge1_emote.glb":{"integrity":"sha384-8oYD8S4HilS8mFsgOj5lRbBWoq3rmF7ETStGkvefUODtwN+lo5gxdKY/F80aqLIj","size":99400},"emotes/Sit_Edge2_emote.glb":{"integrity":"sha384-bS47w9rNkTXOUXmHoSOTkM8g+3AcRbSRLwGblftdTa2Hr0avdubdOdiC2D5bkM2E","size":89300},"scripts/seat.ts":{"integrity":"sha384-XonZTJcIqIC//h6SCTzpxOTs+MfpK2IHjkDTg1t+XmUUSZ7777snXkZeRzpahO7Q","size":7017},"thumbnail.png":{"integrity":"sha384-OrhbCwB59TLqDClVqt8Hrcy+OPXXkctZ1vW7zQTWOSaEWnyNRyne5SBtsVrZKVt2","size":18923}}},{"name":"small-couch","data":"{\n \"id\": \"acca7441-52c9-4b80-83fb-af18bcbf4c7e\",\n \"name\": \"Small Couch\",\n \"description\": \"A compact couch, seating two. Players can sit at either end.\",\n \"category\": \"custom\",\n \"tags\": [\n \"seat\",\n \"furniture\",\n \"sit\"\n ],\n \"version\": \"1.1.0\",\n \"changelog\": [\n {\n \"version\": \"1.1.0\",\n \"notes\": \"The seat no longer runs on the Multiplayer Server, where it was walking every sit spot's transform chain each frame for nobody to see.\"\n },\n {\n \"version\": \"1.0.0\",\n \"notes\": \"Initial release\"\n }\n ],\n \"origin\": {\n \"source\": \"builtin\"\n },\n \"requiredPermissions\": [\n \"ALLOW_TO_MOVE_PLAYER_INSIDE_SCENE\",\n \"ALLOW_TO_TRIGGER_AVATAR_EMOTE\"\n ],\n \"group\": \"Seats\"\n}\n","files":{"TwoSeater_Couch.glb":{"integrity":"sha384-3aFVc1VRYCZMbuV54qKD37CG/Gyy8g4KkdPSjqqbmNMVELB8RVdCVn4bhaaJeTIA","size":35116},"composite.json":{"integrity":"sha384-4SsVtae9U3jtnd8ws0MFI6eEqXQA+K9d0YanHazJzExwBdh4yL/10B6oDCa5m9OE","size":2006},"data.json":{"integrity":"sha384-u6WCss6xFK0tfHpKnL40yNXkaJg1VNGwvL6RdTYzaSWbFZGSOUHJh0fK6CZhN4Io","size":715},"scripts/seat.ts":{"integrity":"sha384-qTc33dk7kx9+avQ4JugIv1csCyESSIOVst3FKQhN3pC0OIyeh/yA32h0z8zjdIWc","size":6959},"thumbnail.png":{"integrity":"sha384-Vo9jNKeVjbITSNCMK5+1FvD6QgI6prs0AZptiMN1LybCqlnhS3syD/yd7o6Dhos9","size":15304}}},{"name":"spawner","data":"{\n \"id\": \"fc759fc0-57a1-461c-aa06-22c0d3d4c3e0\",\n \"name\": \"Spawner\",\n \"description\": \"Makes copies of a prefab appear while playing — on a click, when a player walks in, on a timer, or when another script asks. Copies appear at the Spawner's own spot, only on this player's client.\",\n \"category\": \"custom\",\n \"tags\": [\n \"spawner\",\n \"spawn\",\n \"pickup\",\n \"enemy\"\n ],\n \"version\": \"1.0.0\",\n \"changelog\": [\n {\n \"version\": \"1.0.0\",\n \"notes\": \"Initial release: copies of a prefab appear while playing — on a click, when a player walks in, on a timer, or when another Script asks — made on that player's own client, with a per-spot cap, a lifetime and scatter.\"\n }\n ],\n \"origin\": {\n \"source\": \"builtin\"\n }\n}\n","files":{"ai.md":{"integrity":"sha384-z0Sma23V3knVRWNDZMCDl+EKMeObpA2NxJzO543HDEWXdjM8rq2BUvW8ivVC3s2r","size":5423},"composite.json":{"integrity":"sha384-11bTytc5FvYc2S+noZUzFBRPTTCZ+JK3gMOGtS1vg57/Aqv0jIG+H6StFjCHbr+o","size":1383},"data.json":{"integrity":"sha384-te+nomjlQGpKcP1TUxjeJBvcNMY2e/q67l6VHqU0B81p9tCWgjz8qTps7gUZ2kdf","size":747},"scripts/spawner.ts":{"integrity":"sha384-2BCX+ZtBU07fyYb1gxapwzivM8DRe8i4CetRZgpVN8N5ta0vlxxFEDdfHUmEYOkJ","size":16034},"thumbnail.png":{"integrity":"sha384-4nU0PNVHtK4o6zj4kZ7zbNlQzczBQKUQPC3F8ZPrcP7BWYbExlEs3VlFajqKPwZG","size":6786}}},{"name":"steampunk-bench","data":"{\n \"id\": \"8a80b964-1f4d-4ea3-8f6b-078809891a17\",\n \"name\": \"Steampunk Bench\",\n \"description\": \"A riveted steampunk bench, seating two. Players can sit on it.\",\n \"category\": \"custom\",\n \"tags\": [\n \"seat\",\n \"furniture\",\n \"sit\"\n ],\n \"version\": \"1.1.0\",\n \"changelog\": [\n {\n \"version\": \"1.1.0\",\n \"notes\": \"The seat no longer runs on the Multiplayer Server, where it was walking every sit spot's transform chain each frame for nobody to see.\"\n },\n {\n \"version\": \"1.0.0\",\n \"notes\": \"Initial release\"\n }\n ],\n \"origin\": {\n \"source\": \"builtin\"\n },\n \"requiredPermissions\": [\n \"ALLOW_TO_MOVE_PLAYER_INSIDE_SCENE\",\n \"ALLOW_TO_TRIGGER_AVATAR_EMOTE\"\n ],\n \"group\": \"Seats\"\n}\n","files":{"Steampunk Bench.glb":{"integrity":"sha384-l8rvgt9Z8JKpRwRI3rxw9qoH/vx1v7HvwxJoQWJi/xQ2v3+HIFzUE3SEMakC13lj","size":159244},"composite.json":{"integrity":"sha384-qT/zOtPEwpaAhxx6YNaSnoFHWNCzk9cluTzkbWVOT1ASokLY9hfUd+lhKDF6w/np","size":2019},"data.json":{"integrity":"sha384-ywBxOVAXX1Eo07MEC1qn5iwpz4Wxa0Sf9JHs8cYCOa0JL8D5/M0pRS/k2RuNCzD0","size":721},"scripts/seat.ts":{"integrity":"sha384-qTc33dk7kx9+avQ4JugIv1csCyESSIOVst3FKQhN3pC0OIyeh/yA32h0z8zjdIWc","size":6959},"thumbnail.png":{"integrity":"sha384-NNFHgxb81gJ0y4Z1APmww5ZHZz4My+jv53ogLyEKS+qjno5TAMnoSE4PFSELuGsR","size":16622}}},{"name":"steampunk-chair","data":"{\n \"id\": \"0cdcf518-9bb8-454e-9b18-a851b2a0b1df\",\n \"name\": \"Steampunk Chair\",\n \"description\": \"A brass-and-leather steampunk chair. Players can sit on it.\",\n \"category\": \"custom\",\n \"tags\": [\n \"seat\",\n \"furniture\",\n \"sit\"\n ],\n \"version\": \"1.1.0\",\n \"changelog\": [\n {\n \"version\": \"1.1.0\",\n \"notes\": \"The seat no longer runs on the Multiplayer Server, where it was walking every sit spot's transform chain each frame for nobody to see.\"\n },\n {\n \"version\": \"1.0.0\",\n \"notes\": \"Initial release\"\n }\n ],\n \"origin\": {\n \"source\": \"builtin\"\n },\n \"requiredPermissions\": [\n \"ALLOW_TO_MOVE_PLAYER_INSIDE_SCENE\",\n \"ALLOW_TO_TRIGGER_AVATAR_EMOTE\"\n ],\n \"group\": \"Seats\"\n}\n","files":{"Steampunk Chair.glb":{"integrity":"sha384-jx1WnrmD7GigwvCDb4X6HDhs3Q4rc7J10DlakX2I31xP/64hO8E76U6nCARYu1D/","size":137292},"composite.json":{"integrity":"sha384-C9XF/cSfbX7UfnePwSOg2BrpL9m3nB5WyQRJkINrSOsmV+JoEcEAEv/2bl7pl9Kd","size":1420},"data.json":{"integrity":"sha384-qoBLKLZCSylATy78bslEs1GaUl+YjZPvDh4GBtS4cAkM5JzvXbQMX2QxWjOapOAU","size":718},"scripts/seat.ts":{"integrity":"sha384-qTc33dk7kx9+avQ4JugIv1csCyESSIOVst3FKQhN3pC0OIyeh/yA32h0z8zjdIWc","size":6959},"thumbnail.png":{"integrity":"sha384-tAJBIbkGkYJOtHKoWzPwIUmcjypRoYnqLu5S7mLiuQ5KUiHKZ493plJyalIZ5aYH","size":22358}}},{"name":"tall-stool","data":"{\n \"id\": \"f83a91fb-b939-4251-a298-d334c3e48996\",\n \"name\": \"Tall Stool\",\n \"description\": \"A tall stool with a footrest. Players can sit on it.\",\n \"category\": \"custom\",\n \"tags\": [\n \"seat\",\n \"furniture\",\n \"sit\"\n ],\n \"version\": \"1.1.0\",\n \"changelog\": [\n {\n \"version\": \"1.1.0\",\n \"notes\": \"The seat no longer runs on the Multiplayer Server, where it was walking every sit spot's transform chain each frame for nobody to see.\"\n },\n {\n \"version\": \"1.0.0\",\n \"notes\": \"Initial release\"\n }\n ],\n \"origin\": {\n \"source\": \"builtin\"\n },\n \"requiredPermissions\": [\n \"ALLOW_TO_MOVE_PLAYER_INSIDE_SCENE\",\n \"ALLOW_TO_TRIGGER_AVATAR_EMOTE\"\n ],\n \"group\": \"Seats\"\n}\n","files":{"Stool_D.glb":{"integrity":"sha384-H8ztvhYutHrOV6dbXUfUSODKyMLIy/P5eEntuQxEe2zEHwMLnlQVfvqFRhWMtA+h","size":320312},"composite.json":{"integrity":"sha384-RnEdGr2iP41goFt9Gmfi5bYDprFCHPslIt+zDWXP25ohLUd8p2RO8Q6Q3fEm91w5","size":1412},"data.json":{"integrity":"sha384-C8mP3L8l99WT0GJixLoSzlekZHxR+orHexOZdET85GqVMSpbbRLCqQ6KRn9r8mjR","size":706},"scripts/seat.ts":{"integrity":"sha384-qTc33dk7kx9+avQ4JugIv1csCyESSIOVst3FKQhN3pC0OIyeh/yA32h0z8zjdIWc","size":6959},"thumbnail.png":{"integrity":"sha384-/VHtkn6ezh/nPA9bGkGF7eNlD7G/e+32phC0qmZ0/LSbEtn+jo5mWb+1RfzomHQW","size":11715}}},{"name":"trigger-zone","data":"{\n \"id\": \"f1794ec8-ed62-42c8-a71b-6c52e04b161a\",\n \"name\": \"Trigger Area\",\n \"slug\": \"trigger_zone\",\n \"description\": \"An invisible area that knows who is standing in it. Name it, scale it with the gizmo, then have a script react to that name.\",\n \"category\": \"custom\",\n \"tags\": [\n \"trigger\",\n \"area\",\n \"interactivity\"\n ],\n \"drivenBy\": {\n \"rule\": \"The area only publishes who is standing in it — a Script reacts to its name through './runtime/zoneBus', on this item or on any other entity in the scene.\",\n \"code\": \"onZone('Front Door', 'enter', (event) => { /* what happens */ })\",\n \"next\": \"Use the Add a reaction button below and the new Script arrives already listening to this area.\"\n },\n \"version\": \"1.1.1\",\n \"changelog\": [\n { \"version\": \"1.1.1\", \"notes\": \"Guide covers model bounds, active parcels and course prefab integration.\" },\n {\n \"version\": \"1.0.0\",\n \"notes\": \"Initial release: an invisible named area that publishes who is standing in it, so a Script anywhere in the scene reacts to it by name with nothing wired.\"\n },\n {\n \"version\": \"1.1.0\",\n \"notes\": \"The placed area's Script card now shows the onZone line a Script reacts with, under its area settings.\"\n }\n ],\n \"origin\": {\n \"source\": \"builtin\"\n }\n}\n","files":{"ai.md":{"integrity":"sha384-D++yhIulqWPCrKizIyGTqDJF2ZxBv5GUgm9n8tbZKFO2xiwWUs8H5jMl49jSr+GK","size":6096},"composite.json":{"integrity":"sha384-VWkNF79zDduwdioBw5OubcoLdmnXzzZq6GXkq3u3k5qwD4JDktJw+wiLhI3Hzto+","size":917},"data.json":{"integrity":"sha384-r3pReo7kADyb6lmgav6cxgC2hwAVQoEGbLaINBkvAgkObtAk517Tf/GGZPI9Ocov","size":1286},"scripts/trigger-zone.ts":{"integrity":"sha384-57lvbBOHUXnIGndfQD1G9oRA9gVOpLg7JWwSAV9LJzeD6xGyTKCPhuLai3nhXE9R","size":3837},"thumbnail.png":{"integrity":"sha384-4htEAGokLp2yZKaMa5PZanI+3zqPe3TnLcXpmfyJjfnXhYmij+KVgZ51pXdeTnXN","size":4283}}},{"name":"ui-theme","data":"{\n \"id\": \"41939776-72b2-45f1-b40a-097fa66c9790\",\n \"name\": \"UI Theme\",\n \"description\": \"One accent color and appearance for game HUDs, timers, leaderboards, buttons, results and announcements.\",\n \"category\": \"custom\",\n \"group\": \"Scene UI\",\n \"tags\": [\n \"ui\",\n \"theme\",\n \"color\",\n \"hud\",\n \"design\"\n ],\n \"version\": \"1.0.0\",\n \"changelog\": [\n {\n \"version\": \"1.0.0\",\n \"notes\": \"One accent color and dark or light appearance shared by the scene's game HUDs, buttons, timers, leaderboards and results.\"\n }\n ],\n \"origin\": {\n \"source\": \"builtin\"\n }\n}\n","files":{"ai.md":{"integrity":"sha384-IP2B0F/+aqJh+w42ZL58AyT4ItiQwZOr5tuBz0ORTDAkVNavISyjlMCFdRvN3y+r","size":1925},"composite.json":{"integrity":"sha384-GLLTfiifHN/3BNFuV3tozHl5PqIr2Sw/1lsM/jQQ8BcUY8FIt6gPCUgxcloJaxsW","size":551},"data.json":{"integrity":"sha384-EAX4DRlXK1P1PV7ZS3YFNMfTlPZ8u6joNK0xCxu/cREuF/CHfpAIDhPG8PD0vwy6","size":586},"scripts/ui-theme.ts":{"integrity":"sha384-InUblgjcHMPeDZ/IKir/gTVfws6YE4FkR/SUd0AA285wV7rJUfEorIxCetjIiXNj","size":420},"thumbnail.png":{"integrity":"sha384-Q+XsR3csSrtPv1vWF2KsovKOoh15mPBgVsBKlMdNnjJSOJi4JhhkrPZEBpjdzjRR","size":5983}}},{"name":"video-screen","data":"{\n \"id\": \"37188734-4562-4f21-afeb-2752c39278f4\",\n \"name\": \"Video Screen\",\n \"description\": \"A flat screen that plays a video file or a live stream, with volume and playback controls.\",\n \"category\": \"custom\",\n \"tags\": [\n \"video\",\n \"screen\",\n \"stream\"\n ],\n \"version\": \"1.0.0\",\n \"changelog\": [\n {\n \"version\": \"1.0.0\",\n \"notes\": \"Initial release\"\n }\n ],\n \"origin\": {\n \"source\": \"builtin\"\n }\n}\n","files":{"composite.json":{"integrity":"sha384-PNwL0kv1USZnEFOSnC3oF6kLaG3Hy0S5VGGvk16R+dkdkIidEPn40/SpRI4Eipsm","size":2536},"data.json":{"integrity":"sha384-CWXT5tqC3clzqs6wTwRMXrxBBT8PdHaNRpa4H4SFhZBVw4GfOe9/vmdjzk58KTaK","size":427},"thumbnail.png":{"integrity":"sha384-OQnhEX0GsIogArcrXaPYIo5bRqaYsK7V6GnniDUiiHDPOmojTFQKbcopVX8poMbd","size":3919},"video_player.glb":{"integrity":"sha384-Su82WkaQqG6obG/yGRkHw+WCXQCX/vMngfKyCV/IUH7tpdqz1MS2777hwjPMNdrI","size":1276}}},{"name":"wooden-chair","data":"{\n \"id\": \"c0f3a3f1-7fad-47bf-a855-e27f41f7894f\",\n \"name\": \"Wooden Chair\",\n \"description\": \"A plain wooden chair. Players can sit on it.\",\n \"category\": \"custom\",\n \"tags\": [\n \"seat\",\n \"furniture\",\n \"sit\"\n ],\n \"version\": \"1.1.0\",\n \"changelog\": [\n {\n \"version\": \"1.1.0\",\n \"notes\": \"The seat no longer runs on the Multiplayer Server, where it was walking every sit spot's transform chain each frame for nobody to see.\"\n },\n {\n \"version\": \"1.0.0\",\n \"notes\": \"Initial release\"\n }\n ],\n \"origin\": {\n \"source\": \"builtin\"\n },\n \"requiredPermissions\": [\n \"ALLOW_TO_MOVE_PLAYER_INSIDE_SCENE\",\n \"ALLOW_TO_TRIGGER_AVATAR_EMOTE\"\n ],\n \"group\": \"Seats\"\n}\n","files":{"Chair 1.glb":{"integrity":"sha384-OBKh/Bj43q8Sx1wRponwlbgpevgaWMUiN0giUov/12Oi6zrbOTERiktleBfycvzW","size":34444},"composite.json":{"integrity":"sha384-Bl50OjO++oWtYNycDeONS6QDpxb6NUTuEcNYezYybT6QL2mKs1e+Ar7bZi9C8vQ7","size":1411},"data.json":{"integrity":"sha384-5LcT4SUEiXzUl7Fm686bC0qwplC+5wqCoijTQxWYqrKqiayYS6IBeCF8cfvayJS9","size":700},"scripts/seat.ts":{"integrity":"sha384-qTc33dk7kx9+avQ4JugIv1csCyESSIOVst3FKQhN3pC0OIyeh/yA32h0z8zjdIWc","size":6959},"thumbnail.png":{"integrity":"sha384-85oGX4HxIuc6wLmDYZYFS2Et0rxNcuex0sgvRhWn/hG3xXfMjbhWHOq16rkU629x","size":18385}}},{"name":"wooden-chair-armrests","data":"{\n \"id\": \"ebd62f4c-fa46-489f-bf8e-104aafc10b0f\",\n \"name\": \"Wooden Chair Armrests\",\n \"description\": \"A wooden chair with armrests. Players can sit on it.\",\n \"category\": \"custom\",\n \"tags\": [\n \"seat\",\n \"furniture\",\n \"sit\"\n ],\n \"version\": \"1.1.0\",\n \"changelog\": [\n {\n \"version\": \"1.1.0\",\n \"notes\": \"The seat no longer runs on the Multiplayer Server, where it was walking every sit spot's transform chain each frame for nobody to see.\"\n },\n {\n \"version\": \"1.0.0\",\n \"notes\": \"Initial release\"\n }\n ],\n \"origin\": {\n \"source\": \"builtin\"\n },\n \"requiredPermissions\": [\n \"ALLOW_TO_MOVE_PLAYER_INSIDE_SCENE\",\n \"ALLOW_TO_TRIGGER_AVATAR_EMOTE\"\n ],\n \"group\": \"Seats\"\n}\n","files":{"Chair 3.glb":{"integrity":"sha384-qC94v3lBqcsvDYKbxOFSBG9sXvO2WlwJ4CZlUVUKmTvKvsn94KetxdVRfO/8VJ9Z","size":40316},"composite.json":{"integrity":"sha384-8c+9B2WZVYU90TjDED4IskWU7oRBdYvk29okBEMaheh/V6vRP82wbUlM2syOB48g","size":1426},"data.json":{"integrity":"sha384-olI3fBaKG8LfISwoMdmldQE4DxzqD2THTl9YwQlF85f4L7M+FU/6uPTx1i/vs+C0","size":717},"scripts/seat.ts":{"integrity":"sha384-qTc33dk7kx9+avQ4JugIv1csCyESSIOVst3FKQhN3pC0OIyeh/yA32h0z8zjdIWc","size":6959},"thumbnail.png":{"integrity":"sha384-g1sgPvNl8JeOjulBezQcWzMoT1bkFgk/dNp9BfPv1SEQWa8dABvHvh4IDDnrKnlG","size":16240}}}]
1
+ [{"name":"admin-tools","data":"{\n \"id\": \"14f55d0a-1691-439c-9017-8903afcce3e3\",\n \"name\": \"Admin Tools\",\n \"description\": \"In-world admin panel: moderate players, post announcements and control video screens. Only admins you list can open it.\",\n \"category\": \"custom\",\n \"tags\": [\n \"admin\",\n \"moderation\",\n \"video\",\n \"announcements\"\n ],\n \"version\": \"1.1.0\",\n \"changelog\": [\n {\n \"version\": \"1.1.0\",\n \"notes\": \"The panel stays inside the area the explorer leaves free of its own controls, and the full-screen layer no longer blocks clicks.\"\n },\n {\n \"version\": \"1.0.0\",\n \"notes\": \"Initial release: an in-world panel only the admins you list can open — moderate players, post announcements and control the scene's video screens.\"\n }\n ],\n \"origin\": {\n \"source\": \"builtin\"\n },\n \"requiredPermissions\": [\n \"USE_FETCH\",\n \"USE_WEB3_API\",\n \"USE_WEBSOCKET\",\n \"ALLOW_TO_MOVE_PLAYER_INSIDE_SCENE\"\n ]\n}\n","files":{"composite.json":{"integrity":"sha384-WYmVW/WiIQ9MIezdTLx0l9KALl8G6IYSnZplhupYGyuk9QOW7GXVM1GBJanG96OX","size":1886},"data.json":{"integrity":"sha384-OTrnY78c8LfxaEXN6NeJIfNscBPi6142qRQp9P9m/+GbCvKw86x/J0faFwW7ERTn","size":927},"icons/admin-panel-control-button.png":{"integrity":"sha384-gs8sS7NlWDosiswd38dlTSRMIxSmPy4uuMH9/Z0G8gWpvKerKgcp3ui7Nme/wbci","size":2217},"icons/admin-panel-moderation-control-button.png":{"integrity":"sha384-mBy3ESO3Mq875LIiSGzFVnD9iLmf9DWMqjEBRnZnT/vmQTy4cendMAM0Pw3iw4I5","size":1631},"icons/admin-panel-rewards-control-button.png":{"integrity":"sha384-lbA1p3+WUiCqMyLQZCtb/GY7G+XGMXvpmsvv6DJWVIV2F4K5G47BJGdJDcuOk9pj","size":1796},"icons/admin-panel-smart-item-control-button.png":{"integrity":"sha384-4dx0rzzVKfDcfpUwMvngJ9THOAclyEDKbUwtTo826cRQOvFez6s78DipQSJt9WMY","size":846},"icons/admin-panel-text-announcement-control-button.png":{"integrity":"sha384-Tp9W3GXQPvd9OwANHFYrfekQpNHdFzcAdRgK0KedviMH4GtXirlh1xNDZivpN7Ii","size":522},"icons/admin-panel-video-control-button.png":{"integrity":"sha384-GR1IO0b/6EbWm9nZwfSm0c6JOfNgxGMC9JmF4+dcI2E47tz5ayJ75fKIn5EdIiZn","size":726},"icons/admin-tool-background.png":{"integrity":"sha384-I87kdzFsmxJLWQNdkQAJK7ech9hyy/I5eA/LbF8+O8R+mQF/+PHTOjGoEgqnDD+M","size":792},"icons/announcements/text-announcement-chat-message.png":{"integrity":"sha384-Wamzz2shgywHVGOsvtruJrW6pEJ8BA4wLopI9m6Aj3QfLpS6+JIhVd/gQW1BeHQz","size":14307},"icons/announcements/text-announcement-check.png":{"integrity":"sha384-ocqK42WSlHJF+8PKK8yUlxlgLaq98LHnmrksUDGjZY/griiuV0QTW4LjC9N5ibj7","size":283},"icons/announcements/text-announcement-close-button.png":{"integrity":"sha384-2/dJo7RNlVSyWFmyM8PI7k2Mn7NbpTrhugMCn4b6+doaqJa83i6V1q0Lft19vMj6","size":1148},"icons/moderation-control-icon.png":{"integrity":"sha384-7A2sHB+ce6HTmfiULIsEQp/N+UZdf3tivJui0rNjghcCka7n7eSfWgl4fjvz4Cgn","size":1312},"icons/moderation/admin-panel-verified-user.png":{"integrity":"sha384-vNcq6YpNNQ7lFotU8SaOCKBhil8PLzDWsblH357op7HxAA2/M6Rg0Vj/HQzpnbZI","size":1213},"icons/moderation/ban.png":{"integrity":"sha384-cmN14nYErcvzkNCovoKGXocGHo7KGrn6R+k91cdCG/wIXtvr3RNim70WTj7rNBeN","size":470},"icons/moderation/chevron-back.png":{"integrity":"sha384-mqnl54KA63yVGjEnCmpO4OP5d0P1Yn6mKr+vBskc0k6X195fA2sby0tLRf1U/rh+","size":3165},"icons/moderation/chevron-forward.png":{"integrity":"sha384-rLe+qxxpQqYMMynmmpvQtFf7721X2H/dqLeqpe3O/PQ3GoUBU9gPU2+VrLoXbFxm","size":3171},"icons/moderation/close.png":{"integrity":"sha384-3MgIzHRKOzSovLyjR7BqmW+CDECeCtQP+qgwJYp7DyG6UncrCp69WwDmQFrAPAab","size":3851},"icons/moderation/error.png":{"integrity":"sha384-UaTdOECxl6EaoYfijFAVBut8YPdUyMQLeRibiNc1Zgl7icEN2xEXrar8IGahlkb8","size":798},"icons/moderation/person-outline.png":{"integrity":"sha384-SpgAMD/+hqIDVz9fx+47lsGoP5R04k76Ld7Vsjt/avZBqVRhfq9+1i/2cXKLYgm+","size":1085},"icons/rewards-control.png":{"integrity":"sha384-o16Vo2/34yoPpO5eaLkz2PsbfOsN6d0OKKCAiYai4QfHN3cSi6WAUJ2BNDsYcrYu","size":785},"icons/rewards/close.png":{"integrity":"sha384-3MgIzHRKOzSovLyjR7BqmW+CDECeCtQP+qgwJYp7DyG6UncrCp69WwDmQFrAPAab","size":3851},"icons/rewards/send.png":{"integrity":"sha384-S33P3X184uAhwTQAeuj9xsMUNXbZ+u/NQTEfFGBA7T0U+AJgGEf7fF++U43aoT1p","size":500},"icons/smart-item-control.png":{"integrity":"sha384-ifsViL2s+VFP4zoJYSRnK3YbSC/CHaJip0TZ+t21bWNVl70IbI1HKlCfdeW2UDSg","size":496},"icons/text-announcement-control.png":{"integrity":"sha384-7URWvpEp3gmP6yJ2hO0TRwMoGwneSaTftS0G8oJJkxEDfLuAFC0v3e5svRbe06s3","size":454},"icons/video-control.png":{"integrity":"sha384-08i8/ot11Lq7VQmc0m2GEqXsE7SydKZBg3zgTAlFEWUFw17F9+agTncc8jPekmSl","size":643},"icons/video/chevron-down.png":{"integrity":"sha384-OcKDCPWWVFuK9NILpIRUhFTh39zgaew6mFlyV7T40mJrBJXr2Q1p4/xABVEplRnf","size":343},"icons/video/chevron-up.png":{"integrity":"sha384-yX6sXRFGFknZtfhtuXNUJr3lc0DgnN8K3y2gPoHbowu9bbkdme0TxDU4/UQh9hfQ","size":346},"icons/video/copy-to-clipboard.png":{"integrity":"sha384-eyjGkM9EtomLolYvPV/xK39hFFazZIwtzd/XF34srRydJTSp2bxS3UafHk+/cP7D","size":304},"icons/video/error.png":{"integrity":"sha384-UaTdOECxl6EaoYfijFAVBut8YPdUyMQLeRibiNc1Zgl7icEN2xEXrar8IGahlkb8","size":798},"icons/video/eye-off.png":{"integrity":"sha384-xQXGDg/WIuy/UdZlYzBuwUY/d1Qp0wfSiavWmAbe5Jzs2+x2O2+qzc+wQyvpY5eS","size":9468},"icons/video/eye.png":{"integrity":"sha384-wwXqHg8tIOK/X1H/xf+6d3GWRtObvrgE553mA8H0RX05t+LFegaRQ+oekZNhfzUb","size":9696},"icons/video/help.png":{"integrity":"sha384-wur+rnzxUR5aoo/HZGtbcRtH46TTEe51XrORkzXpI6GJEzgxe26v1wB4dqUMl6rY","size":6353},"icons/video/info.png":{"integrity":"sha384-2VAiLc08J0wHLo6rbMq0dryIHmXyIwxmz+QLGvOy4CA/FoVwUw7QcxKkJdWy389l","size":37460},"icons/video/person-outline.png":{"integrity":"sha384-SpgAMD/+hqIDVz9fx+47lsGoP5R04k76Ld7Vsjt/avZBqVRhfq9+1i/2cXKLYgm+","size":1085},"icons/video/star.png":{"integrity":"sha384-9GFGGyegeJD8W7mQETsKMaajbcVwTftNidPsCZ4ZdguEqe4e7ApgMaWbbQK3Wq5q","size":612},"icons/video/video-control-dcl-cast.png":{"integrity":"sha384-jfetm7VqkoaYFM60cRDbHYFUKV9PFYdoSJoJJjnlmUMcHXJaXMdqf8CEsfTbfiW0","size":3958},"icons/video/video-control-live.png":{"integrity":"sha384-zKG2r2mRC2+KaBSuCOr8GXCooPlhdS0DM/bhkKuJcZESHLGHUmIKqKCSpBQrTtAB","size":12998},"icons/video/video-control-loop.png":{"integrity":"sha384-PmW7BM5QYFSdD7yWHRAM2ENhpXqabDVBMBraqbQZQX+FSgtzQkM+5sxOvzdnploj","size":8685},"icons/video/video-control-mute.png":{"integrity":"sha384-UNYvZ+/8Gxof8muaqCDw/PIz7H3tLC3j5WyD3vBQvf5JBnQEd0QCIlr+T24HlYPW","size":5752},"icons/video/video-control-pause-button.png":{"integrity":"sha384-cvfT4+N9agDRnU6Ow9wT+Ronr/RJx1c2CAaAt4t3xHPQLvWOJNnPlfXW/O0hyYus","size":5267},"icons/video/video-control-play-button.png":{"integrity":"sha384-CAvkQGDWHS1tYlEA/z33gKf9mvIXPAsISRbl3pdzT52NN6eF/woOQJ+ihnflI7pd","size":402},"icons/video/video-control-video-icon.png":{"integrity":"sha384-yKtdqQ/8ARbNu6EXx2DO479v9R89Qf/gkYmwT9Srj6Olr2qZom3S/TAhJSmR3Ufu","size":667},"icons/video/video-control-volume-minus-button.png":{"integrity":"sha384-P2EM6fgmDXOFDFdfWKYbfUS3/j1pIXgYe6SYkvxhOkLcVNkvDc5rM/P60COE64QP","size":188},"icons/video/video-control-volume-plus-button.png":{"integrity":"sha384-lBnQMGgUEbRTddesn4aY7SxDQ07mz3UKlB9hcwwbfJ1sO215UNs1cXIuIeGfJ4we","size":267},"scripts/actions.ts":{"integrity":"sha384-hE/4GuMatbDddD196YnJeLlpA57vKLHYTS5eRqrChRbpKSWYlfD+d69W4AWD7K52","size":7017},"scripts/admin.tsx":{"integrity":"sha384-Ej24LfV0mpU0RNLnAlt1nWWrDhrbpVFQQUu6gnPt4EO1k0IlvKz3cAfdA6vHzHfM","size":7868},"scripts/api.ts":{"integrity":"sha384-dhPp6JRdztKLmBTidsgYNe69Y/ZEFwDc73blrCgLgRtkgq6kByvEusNYrpKR8gCf","size":4464},"scripts/components.ts":{"integrity":"sha384-OvrIEnNGEwWpatTyqapsXXniSDfxjgtBFx0Zb8J/yGxaEl9JGg9j+e1JTcKywqu8","size":5953},"scripts/icons.ts":{"integrity":"sha384-W7so7VfFuLEVUMJGNxWA2kNXw5LPKL0D4ZkB+WU0pBp6fkM6NHwYDZHRaS3S4Gji","size":2306},"scripts/message-bus.ts":{"integrity":"sha384-BxGE3lQmg0OUPQpVtv7zQxnFG1AphUU2RpRcT0CaiIBduAZ+hpExXvd9gSj0dDkp","size":10293},"scripts/state.ts":{"integrity":"sha384-vNTXekH1jMcqiMauLtz6bZ2Yy5v8qwO66Jf0h6q+LIfGEhKVQsYPIgN/9i55bFlq","size":2000},"scripts/tabs/Moderation.tsx":{"integrity":"sha384-UsU9Wai6aff/kpLGiXtZAyHSEurtjb+B/umwgPRkYLmnqtQ2iSyeHrV2NKXg+Mlc","size":4717},"scripts/tabs/Rewards.tsx":{"integrity":"sha384-bKzO+bKEXJSdq3cDap8pn4KiCgm1gzqmf3Ei4ydcIrXCZA2KHmK7MeyGtQaOnlYP","size":4845},"scripts/tabs/SmartItemActions.tsx":{"integrity":"sha384-2EBxPB8FoidC82/EJIbfdj0WLZY9EM8DKIMfY6WcNkIJNazziDoT0c9TWLDQSgUu","size":6393},"scripts/tabs/TextAnnouncements.tsx":{"integrity":"sha384-auE1OM8qu77Mf+NJ0Q9phmWHoa/8hAELiRNzk0iMzh9p9P++K17e2r6n4wRu8V4q","size":6297},"scripts/tabs/VideoControl.tsx":{"integrity":"sha384-kb3f5pujq+a7c32PQSwUEOEPRfdjabLpJXnYsDCzDOepMmSPpIRpQ5ZEkbCDRajd","size":5199},"scripts/tabs/announcements/Overlay.tsx":{"integrity":"sha384-gwqwL5sPpKVyrX5zvXFl+spo+hOQuZ5Ao5HtwlcqNNjAszJtbZQZkRGoIeS91yQr","size":2933},"scripts/tabs/announcements/icons.ts":{"integrity":"sha384-ITtseCBy5n3WQxScQG0Y6LxNaD/L8CTPmI/lboI4QTMunXwHpmFmkW4SKHOgUnBn","size":455},"scripts/tabs/announcements/state.ts":{"integrity":"sha384-H8QR1U5I52xzN8kBd0JoMNmVPDXk+9h+G4Ophfhb413JPQgGUqva1XR1BC/ck8AN","size":2351},"scripts/tabs/announcements/ui.tsx":{"integrity":"sha384-PuNRzeUXeOVMuBO/sXnBrGEaB8n3qPofhnJOtC5FXz6EfnQ1T9wS63XPRa23GKRU","size":1072},"scripts/tabs/moderation/AddUserInput.tsx":{"integrity":"sha384-RiyCa08HtzCBd3VEe+tP6ntPOzHyb1F98RhXqkAwBKB14OT9puqedXekff7aGs37","size":5617},"scripts/tabs/moderation/RemoveAdminConfirmation.tsx":{"integrity":"sha384-tT43wHl1ywHy7tmio8nqzeZdr8kymxwHUfaPHoVc62u7ODx9GCygB4pu8jtHPRiX","size":2803},"scripts/tabs/moderation/UsersList.tsx":{"integrity":"sha384-0Wa4fy2crAQe39qgwbwdBwQSFswNGCrELHxCFZ1jBmxgh4R1HYKKDrFpAwtoq87/","size":7191},"scripts/tabs/moderation/api.ts":{"integrity":"sha384-Q/qkDk6GC53eutQvYwf4Lmyy3fPEH84nj1c+7JZDYEt0xrmGHgYPcXcfju2bWNii","size":1322},"scripts/tabs/moderation/icons.ts":{"integrity":"sha384-QqvX+zxVEVZojv5uHj0yl9aaSO3dPX8g7bvAizI7+jmUfT7Y919Bu6m1lbM33FYC","size":706},"scripts/tabs/moderation/kick.ts":{"integrity":"sha384-Rgr5yEmwEtTgZQirGmAOjGlJ2S9eBk35RwCgLTnkfvIQL4Q+ueU77sJ1nkeyPjfL","size":3965},"scripts/tabs/moderation/state.ts":{"integrity":"sha384-xvW2sWrMBcIr395zhA4Z/CJmvRzdtUJYIwJj4jBO0BcqYtaokEtRInseFPyfWU5A","size":1950},"scripts/tabs/moderation/ui.tsx":{"integrity":"sha384-s/X9vWTUhAfIZbzFtFwAJsjBjtBx7WcNpYOV1X5a2aruCkBB9zGqsRGF+k8ieVfW","size":5207},"scripts/tabs/moderation/utils.ts":{"integrity":"sha384-TAcs4ANF4RdzECa13ol7kWSKBtNZZZ5n+IydZlt9vl0FqZhnaw+MiBD2Q8gtacsU","size":3184},"scripts/tabs/rewards/Button.tsx":{"integrity":"sha384-Z66D7boMToX9iMvJr2cCAvA6EuxSPNKAMnIMeyry+xnokDOenJrmDaVBqX2pN6gt","size":1539},"scripts/tabs/rewards/Captcha.tsx":{"integrity":"sha384-H89W2CtQmpxF4LU6hLh409aHbadDb/Ukv5oRVc65e6kI+C7ixvCXPDtBjlerFnyo","size":2490},"scripts/tabs/rewards/api.ts":{"integrity":"sha384-T42JhF83QZuzIB06HAa09Bclq/qUwRvP/FwxhhAaVjuH7Ml0ehmiHgZDRYj95H5S","size":4796},"scripts/tabs/rewards/claim.ts":{"integrity":"sha384-pRPeSNGiGx9wb4+v35haHCGfWX+CBiMLu/1iVLitZ6pNhTzvBu24CisrFWmycQqM","size":3656},"scripts/tabs/rewards/controller.ts":{"integrity":"sha384-JPs8MvAVa6pGrdKlvoFr0H1P3FoQMIuiwwGcZMvkHC8kVVq4saX0x5T4RCIH35Rq","size":3368},"scripts/tabs/rewards/icons.ts":{"integrity":"sha384-S/7TaZ0mzvxhZJnxzt2ilqYAINoHo81Wh2vLRELZpmS/jQuL6KGBG9Tmw+COF1pb","size":275},"scripts/tabs/rewards/state.ts":{"integrity":"sha384-4PsbphYBjuf6o9Dnz8h6Iyp+s1LQrV1PYhteV0zpHz3nQFo8mZf8gRbphB+fpEdT","size":840},"scripts/tabs/smart-items/selection.ts":{"integrity":"sha384-lxSzgZrpbsomjarF9K1UhsfX1QuiPmeqMPY3jUBOG2/CU9i9ZCXrRPAexlhOaNiv","size":3331},"scripts/tabs/video/DclCast.tsx":{"integrity":"sha384-Rz/xL437EcTxwNCYvjbuHuw3klhBGL6N/Pb0hc6Vu+gjJVrLKnqRIo9hTEzeqWs6","size":8072},"scripts/tabs/video/LiveStream.tsx":{"integrity":"sha384-xJfNS7uAkczd6Mv7jI6kfVhA4cJQfbzUXZB+POKe7scklnpJJttNimcHHfl2sh5P","size":9886},"scripts/tabs/video/SpeakerShowcase.tsx":{"integrity":"sha384-5fEeVnMIEMYTQHztNlyULWEts6h/Zgv3kH5+/iQy9uIh5eNe1iqVtwArKrM0RuAP","size":3802},"scripts/tabs/video/VideoUrl.tsx":{"integrity":"sha384-pEnlEeG6qstYzljbAkeeFfQZilijueSfKmZFUPOzDC8I6K0ETrlf45hbbMX8V0fr","size":3426},"scripts/tabs/video/Volume.tsx":{"integrity":"sha384-q4odOzbD+Mx5BzotjtIx8+GQMGX9Ysy657573+S/bts+yrr1w0bMN91NtKzNc7Vf","size":2133},"scripts/tabs/video/api.ts":{"integrity":"sha384-UDwFd8lR+diOPOejRUq8Bk/DHs1OQN9nb7jNE2Nv+1KUm4JwUxu4b7LMExuWDSuJ","size":5673},"scripts/tabs/video/controls.ts":{"integrity":"sha384-8NTX/Mu0Ps34x4kxL2gwmJrbxyUVxYwT0pH5ig22+FGJU6UqHKIV2MyPZbJyBEWM","size":3886},"scripts/tabs/video/icons.ts":{"integrity":"sha384-3/0EHH0ZB0R4gcxXUlHvWFqKEoHx0WJyl7ZWh3sAGpIYGcJFT4OtqzeUkA0gRa4X","size":1662},"scripts/tabs/video/speakers.ts":{"integrity":"sha384-6YGpbWXwW6pSBAHC8o9P2Lu0P6IbhsRseHAgDG2eHWUCFd4wAXhdR6l/FYM7wrL4","size":1105},"scripts/tabs/video/state.ts":{"integrity":"sha384-yPWXz+LaGfDLrbO6xuEAe6whwGGtahVvvpOJmQsLGc+P4qopgoD9FSA9+xOxZP8I","size":2256},"scripts/tabs/video/ui.tsx":{"integrity":"sha384-ANXvEZ75Ur0nZyxxaHFOdr+NBGx3zD25r3s8M8dVb6osakUGjBKhRUEEWKo6JmpV","size":7076},"scripts/types.ts":{"integrity":"sha384-/ieszyQ/vz9IKpyeCLEw7Gae+8EWZVQMkcWmKWn6roV3KkEj34zY8n87R5w9HxIY","size":1902},"scripts/ui.tsx":{"integrity":"sha384-fUQUBEHzEB8SO6Mhl3Trm9vfgCogyEIoOiVmP+eVnE1qI/HK6lqOFsLcNZNe/Lqy","size":3216},"thumbnail.png":{"integrity":"sha384-sh8ip9U6LNItjm30RSrxl83x7aYdlbROEDnI49S5x+uj3rpx7ohWSFgVi3jXpv+4","size":11615}}},{"name":"announcer","data":"{\n \"id\": \"fb41d8d1-b842-437d-a830-f38379e74743\",\n \"name\": \"Announcer\",\n \"description\": \"Show a themed message when a player enters or leaves a chosen Trigger Area, or receive announcements from Game Flow.\",\n \"category\": \"custom\",\n \"group\": \"Multiplayer Server\",\n \"tags\": [\n \"multiplayer\",\n \"server\",\n \"announce\",\n \"message\",\n \"toast\",\n \"ui\"\n ],\n \"requiresSdk\": \"auth-server\",\n \"version\": \"1.3.0\",\n \"changelog\": [\n {\n \"version\": \"1.3.0\",\n \"notes\": \"Announcements take their place in the shared HUD layout at the bottom centre, narrow enough to stay clear of the phone touch buttons and of other HUDs.\"\n },\n {\n \"version\": \"1.0.0\",\n \"notes\": \"Initial release: server code anywhere in the scene calls game.broadcast('announce', { text }) and every player's client shows the line for a few seconds.\"\n },\n {\n \"version\": \"1.1.0\",\n \"notes\": \"The placed item's Script card now shows the broadcast line that makes it speak, under its hold seconds and font size.\"\n },\n {\n \"version\": \"1.2.0\",\n \"notes\": \"Shared theme and a Trigger Area picker for local messages without writing code.\"\n }\n ],\n \"origin\": {\n \"source\": \"builtin\"\n }\n}\n","files":{"ai.md":{"integrity":"sha384-D3Cv9CWg7ofWd+5NtZB9U0GLWnX/7Mbx2KN4QumC6l0qNu9t/6EXIVVuVJcY/7NS","size":3331},"composite.json":{"integrity":"sha384-3w+7KNTh3KLidBVPFpOr5uXPyrtZH1UA5l5yy+r0WC4QYO8+bFmvO10wY6Zk1osX","size":554},"data.json":{"integrity":"sha384-UiHAWkFaSxgHUM3ufcszXLhIXvc/PRRv7y2VMpJdBHNJ8C8Bzw7Yk40k9dW9Sabt","size":1217},"scripts/announcer.tsx":{"integrity":"sha384-cXTJST1CbTriSs6Vjg5CMhMzuGYX8Y5um8dH04rhrBrpMGI3/+rp7rF+OyiK6Bjs","size":1761},"scripts/pure/toast.ts":{"integrity":"sha384-5HsNX5Ao3DBwh0XwQx036b4r8OIvM4C7zYUAPHMVNPtEWb7kMdJASFEwKtxrb/jE","size":1171},"thumbnail.png":{"integrity":"sha384-HBZUcCEOa9jkubVyvd8Hrhnu3HU0OHKhshGy1LYXw0I6bANVnxcUy0psn8fuyqR6","size":2005}}},{"name":"black-chair","data":"{\n \"id\": \"1aa01433-9f2e-44ac-b1fb-a2bdffeb6776\",\n \"name\": \"Black Chair\",\n \"description\": \"A black dining chair. Players can sit on it.\",\n \"category\": \"custom\",\n \"tags\": [\n \"seat\",\n \"furniture\",\n \"sit\"\n ],\n \"version\": \"1.1.0\",\n \"changelog\": [\n {\n \"version\": \"1.1.0\",\n \"notes\": \"The seat no longer runs on the Multiplayer Server, where it was walking every sit spot's transform chain each frame for nobody to see.\"\n },\n {\n \"version\": \"1.0.0\",\n \"notes\": \"Initial release\"\n }\n ],\n \"origin\": {\n \"source\": \"builtin\"\n },\n \"requiredPermissions\": [\n \"ALLOW_TO_MOVE_PLAYER_INSIDE_SCENE\",\n \"ALLOW_TO_TRIGGER_AVATAR_EMOTE\"\n ],\n \"group\": \"Seats\"\n}\n","files":{"HighBackChair.glb":{"integrity":"sha384-BQAU/CeS2nc/qMg4zNmGfN9PL54Vok9qKD681gVfC64knQyWW/wh2rGXNVc53oJ6","size":32424},"composite.json":{"integrity":"sha384-3/TVCIpJOzxplhEyfQhTIfMqAzc6J/jyo6qWRCI3iQMMSlSNnYS69w8+vBdNheC2","size":1413},"data.json":{"integrity":"sha384-zBCFwVRiankPHLu/0p80cZPNHuuPr8KywXQh+Co6MN1LWmPfYffNk2UvpyFc3WK2","size":699},"scripts/seat.ts":{"integrity":"sha384-qTc33dk7kx9+avQ4JugIv1csCyESSIOVst3FKQhN3pC0OIyeh/yA32h0z8zjdIWc","size":6959},"thumbnail.png":{"integrity":"sha384-bZsSYvZkaq1R6jGe8fK1yvdC1ws8F0nAtbKUpWRkpEretquQ1Pcx05H14NIobZA4","size":8744}}},{"name":"classic-bench","data":"{\n \"id\": \"3e8dace7-01e4-4a98-a56e-52ad05ae654d\",\n \"name\": \"Classic Bench\",\n \"description\": \"A classic park bench, seating two. Players can sit on it.\",\n \"category\": \"custom\",\n \"tags\": [\n \"seat\",\n \"furniture\",\n \"sit\"\n ],\n \"version\": \"1.1.0\",\n \"changelog\": [\n {\n \"version\": \"1.1.0\",\n \"notes\": \"The seat no longer runs on the Multiplayer Server, where it was walking every sit spot's transform chain each frame for nobody to see.\"\n },\n {\n \"version\": \"1.0.1\",\n \"notes\": \"Ships the model's texture, which was missing from the folder — without it the model rendered blank white in-world.\"\n },\n {\n \"version\": \"1.0.0\",\n \"notes\": \"Initial release\"\n }\n ],\n \"origin\": {\n \"source\": \"builtin\"\n },\n \"requiredPermissions\": [\n \"ALLOW_TO_MOVE_PLAYER_INSIDE_SCENE\",\n \"ALLOW_TO_TRIGGER_AVATAR_EMOTE\"\n ],\n \"group\": \"Seats\"\n}\n","files":{"Bench_01.glb":{"integrity":"sha384-qU+pwMwPJYsOMD3Rgh5aQ/XkBKR6ls6nQyqWaRik+z125N+cSW7f7tfaH6rQPVjz","size":54436},"composite.json":{"integrity":"sha384-KTMuUiX7SNG/qh3LQ9JANv/ql+YrUC3UHna5xa8GleFBEVOx2NTafDEFyjXPlUZL","size":2004},"data.json":{"integrity":"sha384-WzR61MlY+E4phm2i405fbw1qr2W5XZhV3elr6lpAIVX7ssoqTzxb8m3lTSKaqrLi","size":887},"file1.png":{"integrity":"sha384-hkHg23U+9Yx8eU+7OWRgOsHJ1gS8nzdWZ/DEAQvtwJF3dOf7sTQwINVaIo30FRk5","size":7117},"scripts/seat.ts":{"integrity":"sha384-qTc33dk7kx9+avQ4JugIv1csCyESSIOVst3FKQhN3pC0OIyeh/yA32h0z8zjdIWc","size":6959},"thumbnail.png":{"integrity":"sha384-gVZ5hbkqeZCkqlNp2XTBqGLqDMFBH261RyXCV/+xogCBddr593SpTijJcTG75xRw","size":10722}}},{"name":"classic-bench-armrests","data":"{\n \"id\": \"88e01dcc-b242-4815-90e3-72ff52c24f45\",\n \"name\": \"Classic Bench Armrests\",\n \"description\": \"A classic park bench with armrests, seating two. Players can sit on it.\",\n \"category\": \"custom\",\n \"tags\": [\n \"seat\",\n \"furniture\",\n \"sit\"\n ],\n \"version\": \"1.1.0\",\n \"changelog\": [\n {\n \"version\": \"1.1.0\",\n \"notes\": \"The seat no longer runs on the Multiplayer Server, where it was walking every sit spot's transform chain each frame for nobody to see.\"\n },\n {\n \"version\": \"1.0.0\",\n \"notes\": \"Initial release\"\n }\n ],\n \"origin\": {\n \"source\": \"builtin\"\n },\n \"requiredPermissions\": [\n \"ALLOW_TO_MOVE_PLAYER_INSIDE_SCENE\",\n \"ALLOW_TO_TRIGGER_AVATAR_EMOTE\"\n ],\n \"group\": \"Seats\"\n}\n","files":{"Bench 1.glb":{"integrity":"sha384-gEvudQhcSvOjXcqAeY8D8iPaVbsYOkBd3YdZki2iAKCkZgkf/PQLaMW5DAJHFVZB","size":42772},"composite.json":{"integrity":"sha384-KuygG/7cDAvXqt2lz2mYDyeppiq1PZN+ZmBDndaWxdqV7csCPMdXQK/Ys40UW7YZ","size":2014},"data.json":{"integrity":"sha384-t19LA1qyWZc5sRylViJkgGHA8wo0wZqEVaA586BsRGQmzQc4itLDkgxE4LIdvHeR","size":737},"scripts/seat.ts":{"integrity":"sha384-qTc33dk7kx9+avQ4JugIv1csCyESSIOVst3FKQhN3pC0OIyeh/yA32h0z8zjdIWc","size":6959},"thumbnail.png":{"integrity":"sha384-u4mWUcX2kkrcgfIKydVN3kKeDu7K2Jfg9TKNBYavhhiIjZ0bWSUPVg9VABZZuaV1","size":19258}}},{"name":"classroom-chair","data":"{\n \"id\": \"cacd50dc-5861-4b71-83ee-83cb23fea9e4\",\n \"name\": \"Classroom Chair\",\n \"description\": \"A moulded classroom chair. Players can sit on it.\",\n \"category\": \"custom\",\n \"tags\": [\n \"seat\",\n \"furniture\",\n \"sit\"\n ],\n \"version\": \"1.1.0\",\n \"changelog\": [\n {\n \"version\": \"1.1.0\",\n \"notes\": \"The seat no longer runs on the Multiplayer Server, where it was walking every sit spot's transform chain each frame for nobody to see.\"\n },\n {\n \"version\": \"1.0.1\",\n \"notes\": \"Ships the model's texture, which was missing from the folder — without it the model rendered blank white in-world.\"\n },\n {\n \"version\": \"1.0.0\",\n \"notes\": \"Initial release\"\n }\n ],\n \"origin\": {\n \"source\": \"builtin\"\n },\n \"requiredPermissions\": [\n \"ALLOW_TO_MOVE_PLAYER_INSIDE_SCENE\",\n \"ALLOW_TO_TRIGGER_AVATAR_EMOTE\"\n ],\n \"group\": \"Seats\"\n}\n","files":{"Chair_02.glb":{"integrity":"sha384-4sbNyI8nx8fgdkKm/Df7ooV8fEtA5sUTxy7VI2R+91f/JDklg4yFxOk4U3RXIFuo","size":16368},"composite.json":{"integrity":"sha384-Esh68GGVhUf9RCOfsDXWQaUiGb273cV7Z5cC2MOXe6JkUJknpHCpvyBwgPjvIHTg","size":1447},"data.json":{"integrity":"sha384-2FqLS4bQ26dRzDJZgb3HlB/Hrlt6x8fzSQnCoHVeGFIyZHcJ77N4WClJlt0iAYQB","size":881},"file1.png":{"integrity":"sha384-hkHg23U+9Yx8eU+7OWRgOsHJ1gS8nzdWZ/DEAQvtwJF3dOf7sTQwINVaIo30FRk5","size":7117},"scripts/seat.ts":{"integrity":"sha384-qTc33dk7kx9+avQ4JugIv1csCyESSIOVst3FKQhN3pC0OIyeh/yA32h0z8zjdIWc","size":6959},"thumbnail.png":{"integrity":"sha384-xp435rb3UtVrmBql5h82OUHv9+1HRv4msRquMkJF1ABAwAmE0htpneGPsIovG1dU","size":14671}}},{"name":"court-chair","data":"{\n \"id\": \"e29fe7dd-20f3-4486-941e-bb85401d0d1d\",\n \"name\": \"Court Chair\",\n \"description\": \"An upright court chair. Players can sit on it.\",\n \"category\": \"custom\",\n \"tags\": [\n \"seat\",\n \"furniture\",\n \"sit\"\n ],\n \"version\": \"1.1.0\",\n \"changelog\": [\n {\n \"version\": \"1.1.0\",\n \"notes\": \"The seat no longer runs on the Multiplayer Server, where it was walking every sit spot's transform chain each frame for nobody to see.\"\n },\n {\n \"version\": \"1.0.1\",\n \"notes\": \"Ships the model's texture, which was missing from the folder — without it the model rendered blank white in-world.\"\n },\n {\n \"version\": \"1.0.0\",\n \"notes\": \"Initial release\"\n }\n ],\n \"origin\": {\n \"source\": \"builtin\"\n },\n \"requiredPermissions\": [\n \"ALLOW_TO_MOVE_PLAYER_INSIDE_SCENE\",\n \"ALLOW_TO_TRIGGER_AVATAR_EMOTE\"\n ],\n \"group\": \"Seats\"\n}\n","files":{"Chair_Wood_01.glb":{"integrity":"sha384-IIv1LpNQXbn42cpCwd4gsgDfThllJfAjB0pjMC51jcgUqJD6yJ25vIUv4OUSNZ0B","size":38776},"FanstasyPack_TX.png":{"integrity":"sha384-KMdE2Mz2QPnFyTWlJZWCUSxASSMsmyw/VFzHLyFQvXehN1ujIEepbskPuNqHgCI+","size":15078},"composite.json":{"integrity":"sha384-Q1IbQdubZR+c8womUaRcMywMD5GjYB/t46kuu309jIHimWA2YHGNgl/Ei5G/B1Bg","size":1408},"data.json":{"integrity":"sha384-akBy4ls/agEp39hMybq9vUIOyxV4KMBId+YLlayMWgc7QJcI/cLc+UktiHJOny6R","size":874},"scripts/seat.ts":{"integrity":"sha384-qTc33dk7kx9+avQ4JugIv1csCyESSIOVst3FKQhN3pC0OIyeh/yA32h0z8zjdIWc","size":6959},"thumbnail.png":{"integrity":"sha384-v2OuF/sRj8TMvjUqhYYJTkwfAMftvT//lNEFTULD99DFiWfc/bWhceAxxeo7emX+","size":12243}}},{"name":"curved-couch","data":"{\n \"id\": \"48dbe32d-c906-4287-bcfe-2cfe280c68f8\",\n \"name\": \"Curved Couch\",\n \"description\": \"A curved sectional couch, seating three. Players can sit along it.\",\n \"category\": \"custom\",\n \"tags\": [\n \"seat\",\n \"furniture\",\n \"sit\"\n ],\n \"version\": \"1.1.0\",\n \"changelog\": [\n {\n \"version\": \"1.1.0\",\n \"notes\": \"The seat no longer runs on the Multiplayer Server, where it was walking every sit spot's transform chain each frame for nobody to see.\"\n },\n {\n \"version\": \"1.0.0\",\n \"notes\": \"Initial release\"\n }\n ],\n \"origin\": {\n \"source\": \"builtin\"\n },\n \"requiredPermissions\": [\n \"ALLOW_TO_MOVE_PLAYER_INSIDE_SCENE\",\n \"ALLOW_TO_TRIGGER_AVATAR_EMOTE\"\n ],\n \"group\": \"Seats\"\n}\n","files":{"CurvedCouch.glb":{"integrity":"sha384-EnJVY5fVNrynT2dL7huvsxVfZ5RbbvmrxnGjrEobubreqJ1U7qQo1ofzwBcNGYgg","size":38740},"composite.json":{"integrity":"sha384-Mx4dSJiZ3vo9xNctXyshiVZNlQ6SaYKDrtdLqpRT+ODzyJGneMwOxA/64u2rfqre","size":2013},"data.json":{"integrity":"sha384-7TJ7cPkU1KWPclbaj5CKLkVvIM6Ascfewj4ikqy9H6KRpu26ZyaBZfE6UekpP/ZU","size":722},"scripts/seat.ts":{"integrity":"sha384-qTc33dk7kx9+avQ4JugIv1csCyESSIOVst3FKQhN3pC0OIyeh/yA32h0z8zjdIWc","size":6959},"thumbnail.png":{"integrity":"sha384-oyKNtE22C6BjtcNTnnoBTYjfmIqVnik0SaM5IwfC1qheKHjXVa8Lxtihi9YDu8fs","size":14388}}},{"name":"game-flow","data":"{\n \"id\": \"44374100-12fb-481f-90ce-2a4d81949084\",\n \"name\": \"Game Flow\",\n \"description\": \"Lobby, countdown, rounds, winners — runs your game from start to end. Works with: Leaderboard, Announcer.\",\n \"category\": \"custom\",\n \"group\": \"Multiplayer Server\",\n \"tags\": [\n \"multiplayer\",\n \"server\",\n \"round\",\n \"lobby\",\n \"countdown\",\n \"timer\",\n \"winners\"\n ],\n \"requiresSdk\": \"auth-server\",\n \"version\": \"1.2.0\",\n \"changelog\": [\n {\n \"version\": \"1.2.0\",\n \"notes\": \"The 2D status panel takes its place in the shared HUD layout, so it no longer overlaps other HUDs on any screen.\"\n },\n {\n \"version\": \"1.0.0\",\n \"notes\": \"Initial release: lobby → round → winners on game.round, a countdown every client derives from one shared deadline, a winners line read from the board key a Leaderboard shows, and a \\\"script\\\" mode where your own game.newRound() ends the round and the round length is only a ceiling.\"\n },\n {\n \"version\": \"1.1.0\",\n \"notes\": \"Optional themed round timer and lobby countdown, configured in the inspector.\"\n }\n ],\n \"origin\": {\n \"source\": \"builtin\"\n }\n}\n","files":{"ai.md":{"integrity":"sha384-FSQahckNpE6r400CC5Kw5Fz1uijUfaZ0N2XZBEm+YVMsbRTMfjX5zrlyKJMleUyl","size":4677},"composite.json":{"integrity":"sha384-TXN9bYBu1C79b9fTYJ2GbtOC1J4wjEpJt6rIykdYJTu3HEUw62il/8CIFSljcB4Q","size":932},"data.json":{"integrity":"sha384-cP7iRsJsHCRReEuJXncOHP41mG5PmbXB1BUnN0Kp16cOeLv+USBLanxLKbQNVY+U","size":1143},"scripts/game-flow.ts":{"integrity":"sha384-ALqBHmmmh5DxU2YGmpsDbjJyY3Lxh2rn2GBWGu0dlXOxXdG7h6NzhBlxdbVnkqYp","size":6524},"scripts/pure/flow.ts":{"integrity":"sha384-zEgjgIQS3RzCJ8Tyud8tywm5SmD+FO8WLnFpBkexnFEnmbOoWSb37HUx3X0/DLT3","size":7575},"thumbnail.png":{"integrity":"sha384-ZQHTd8rM4CaE2+qNC5at7B4H3e1ikf1ck9K6GI/TEwn/7WKzf2/9I9sInMvrxy8J","size":13227}}},{"name":"health-respawn","data":"{\n \"id\": \"5cc3b4d7-2a87-4825-9a53-e2b007bcff24\",\n \"name\": \"Health & Respawn\",\n \"description\": \"Players can take damage and respawn. Works with: Game Flow, Trigger Area.\",\n \"category\": \"custom\",\n \"group\": \"Multiplayer Server\",\n \"tags\": [\n \"player\",\n \"health\",\n \"damage\",\n \"respawn\",\n \"multiplayer\",\n \"server\"\n ],\n \"requiresSdk\": \"auth-server\",\n \"requiredPermissions\": [\n \"ALLOW_TO_MOVE_PLAYER_INSIDE_SCENE\"\n ],\n \"drivenBy\": {\n \"rule\": \"Nothing takes hit points by itself — the server calls damage() wherever the harm happens, and this item does the dying and the respawn.\",\n \"code\": \"game.onEnterArea('Spikes', (player) => damage(player, 25))\",\n \"next\": \"Press New script below, write that inside the isServer() block it comes with, and import damage from the health.ts beside this item's own script.\"\n },\n \"version\": \"1.3.1\",\n \"changelog\": [\n { \"version\": \"1.3.1\", \"notes\": \"The health bar is on by default again; turn Health Bar off for a game that never deals damage.\" },\n { \"version\": \"1.3.0\", \"notes\": \"Health bar setting, off by default: a course that never deals damage shows no hit points.\" },\n { \"version\": \"1.2.1\", \"notes\": \"Guide covers in-bounds respawn destinations, permissions and course playtesting.\" },\n {\n \"version\": \"1.2.0\",\n \"notes\": \"Per-player checkpoint destinations, healing, forced death, death counts, optional respawn delay and protection after respawning.\"\n },\n {\n \"version\": \"1.0.0\",\n \"notes\": \"Initial release: hit points the server owns in game.state.health, a respawn point picked in the inspector, a \\\"die below height\\\" death plane, and a damage() other server code calls.\"\n },\n {\n \"version\": \"1.1.0\",\n \"notes\": \"The placed item's Script card now shows the damage() call that takes hit points, under its respawn settings.\"\n }\n ],\n \"origin\": {\n \"source\": \"builtin\"\n }\n}\n","files":{"ai.md":{"integrity":"sha384-sOrhWgNJh7HnRDNRZnTFtj+lulT6lQpepsjcZ8+8S66IEKIbA/+TR0wineLeGJ0r","size":4755},"composite.json":{"integrity":"sha384-WZskIkQZ8n8dehUBe5OKQ+99aVon0PAX6Znh5z2TmWf177Wto80aE70iod28dvCF","size":565},"data.json":{"integrity":"sha384-/9l/nKLcx51jlRHD0Yafkl9meyPTAwCxTR8XteUkuH5jmmcfa8IK6SIiDJBhoqlp","size":1911},"scripts/health-respawn.ts":{"integrity":"sha384-QwLUhaAcxp9vui+9q7ccvuEpY87QHG+d/pzfAJRPn9L2yHhrvU605ORU21pz17hP","size":5760},"scripts/health.ts":{"integrity":"sha384-/zA9uuvRZ3uRS2WdFvPml83zRvA5n4h0RTNIEd2pb59Ui6yrtX1kJHj/zbK+Md4A","size":1981},"scripts/pure/health.ts":{"integrity":"sha384-if/V7vja1R5enh/H7yM4FCh3Ea7bgld+tr76ryjTWryrk3lEw7xFe6p282WsZFji","size":2230},"scripts/pure/life.ts":{"integrity":"sha384-oNHo7xAdJWVw3t5o7oDt+wjM9ea8FD/Ynskc2l1YjP3+qvnYLNnrI4v1pENPOorD","size":2368},"thumbnail.png":{"integrity":"sha384-fVCccAg9bAVrgYD6MFlGK+1zBO5XEDpxd0Lh7LGFaobZYl2OCaxJcME3eVrQqS31","size":7116}}},{"name":"high-stool","data":"{\n \"id\": \"f8ee0d2a-19f5-45a9-9029-cd46d7a8f834\",\n \"name\": \"High Stool\",\n \"description\": \"A tall bar stool. Players can sit on it.\",\n \"category\": \"custom\",\n \"tags\": [\n \"seat\",\n \"furniture\",\n \"sit\"\n ],\n \"version\": \"1.1.0\",\n \"changelog\": [\n {\n \"version\": \"1.1.0\",\n \"notes\": \"The seat no longer runs on the Multiplayer Server, where it was walking every sit spot's transform chain each frame for nobody to see.\"\n },\n {\n \"version\": \"1.0.0\",\n \"notes\": \"Initial release\"\n }\n ],\n \"origin\": {\n \"source\": \"builtin\"\n },\n \"requiredPermissions\": [\n \"ALLOW_TO_MOVE_PLAYER_INSIDE_SCENE\",\n \"ALLOW_TO_TRIGGER_AVATAR_EMOTE\"\n ],\n \"group\": \"Seats\"\n}\n","files":{"HighStool.glb":{"integrity":"sha384-pELylPLTKad8MmTwL9+jXPGUf5KOnXgxBuY4JXguuov7duJEIVRk4pRcQ+gCgKmf","size":26332},"composite.json":{"integrity":"sha384-U3fv7ocM1aBZWJ+l9uC2Eg2acDqnoxy3tPhr8dXx1Vi7N1riaugAdQTDIpTQQyAK","size":1416},"data.json":{"integrity":"sha384-LjCLqThIrUN7Qk+zA6paffpTxFsPGIiDdRhVow2w9PlMxyX+EvyLO+tds9fHTX7O","size":694},"scripts/seat.ts":{"integrity":"sha384-qTc33dk7kx9+avQ4JugIv1csCyESSIOVst3FKQhN3pC0OIyeh/yA32h0z8zjdIWc","size":6959},"thumbnail.png":{"integrity":"sha384-Y4cPyTFXuHC5maHoDtEX7vdYSK76XLhw9JbnYPORlyOSmLAfhkvv/FjW0apjV9VS","size":9066}}},{"name":"large-couch","data":"{\n \"id\": \"ac233c16-699e-4f01-8e7c-910bb5a168af\",\n \"name\": \"Large Couch\",\n \"description\": \"A long couch, seating three. Players can sit along it.\",\n \"category\": \"custom\",\n \"tags\": [\n \"seat\",\n \"furniture\",\n \"sit\"\n ],\n \"version\": \"1.1.0\",\n \"changelog\": [\n {\n \"version\": \"1.1.0\",\n \"notes\": \"The seat no longer runs on the Multiplayer Server, where it was walking every sit spot's transform chain each frame for nobody to see.\"\n },\n {\n \"version\": \"1.0.0\",\n \"notes\": \"Initial release\"\n }\n ],\n \"origin\": {\n \"source\": \"builtin\"\n },\n \"requiredPermissions\": [\n \"ALLOW_TO_MOVE_PLAYER_INSIDE_SCENE\",\n \"ALLOW_TO_TRIGGER_AVATAR_EMOTE\"\n ],\n \"group\": \"Seats\"\n}\n","files":{"ThreeSeater_Couch.glb":{"integrity":"sha384-Oo6LBiZPQO03QYxtyTqaG4NttfLoAeL14jtchqBbJjg1HQftbWUwrE1lQ8mSXCnM","size":31868},"composite.json":{"integrity":"sha384-HtdxTfaa5dyvF9BUlo0t2tzgSA4SWn3nwT2DccLeqnmscPpMqTKKmYt886lQaFYQ","size":2023},"data.json":{"integrity":"sha384-uIPJ6qQK7hXa2HghWSKPj5E8buDUVRb0XdeSUOcYoFnnQFTx3Nn9gWGf9m6kFTnU","size":709},"scripts/seat.ts":{"integrity":"sha384-qTc33dk7kx9+avQ4JugIv1csCyESSIOVst3FKQhN3pC0OIyeh/yA32h0z8zjdIWc","size":6959},"thumbnail.png":{"integrity":"sha384-/JwNvv3M/1qncoi0bQ7ZM9h7WQKP48Ti8KgAdHqtLxiwMogRZmWRhATdgF7nBz+3","size":16512}}},{"name":"leaderboard","data":"{\n \"id\": \"493daede-2afd-4c10-9c0d-6aefb25629a8\",\n \"name\": \"Leaderboard\",\n \"description\": \"Show game scores or automatic Run Progress best times on a 3D panel or themed screen overlay.\",\n \"category\": \"custom\",\n \"group\": \"Multiplayer Server\",\n \"tags\": [\n \"multiplayer\",\n \"server\",\n \"leaderboard\",\n \"score\",\n \"ranking\",\n \"board\"\n ],\n \"requiresSdk\": \"auth-server\",\n \"version\": \"1.6.0\",\n \"changelog\": [\n {\n \"version\": \"1.6.0\",\n \"notes\": \"The on-screen board takes its place in the shared HUD layout, so it no longer overlaps other HUDs, and shows the top 5 on phones, whose screen is a third shorter.\"\n },\n {\n \"version\": \"1.5.0\",\n \"notes\": \"Before the first score the board tells players \\\"No scores yet — be the first!\\\" (or \\\"No times yet\\\" for times) instead of setup instructions, and its text wraps to stay inside the panel. A board placed before this keeps its old text size, where the new line already fits.\"\n },\n {\n \"version\": \"1.4.0\",\n \"notes\": \"The 3D panel's text is readable from its front, and players can no longer walk through the board. A board placed before this keeps its old text position and no collider: delete it and place it again.\"\n },\n {\n \"version\": \"1.3.0\",\n \"notes\": \"Rows show the display name of players in the scene, or a name the row carries; others show a short address.\"\n },\n {\n \"version\": \"1.0.0\",\n \"notes\": \"Initial release: a panel that reads the game.state key you name in boardKey and paints its top rows, so the board a Script keeps is the board every player sees and a late joiner gets it from the snapshot.\"\n },\n {\n \"version\": \"1.1.0\",\n \"notes\": \"The placed panel's Script card now shows the setState line that writes the rows it paints, under its own settings.\"\n },\n {\n \"version\": \"1.2.0\",\n \"notes\": \"Themed screen overlay and automatic persisted best times from Run Progress.\"\n }\n ],\n \"origin\": {\n \"source\": \"builtin\"\n }\n}\n","files":{"ai.md":{"integrity":"sha384-mcZT0Ub5OZ/KpfDn6OvJ43I7ITFnl+OVGL7Y/IMznJc6cRuUKOu1VWmqVdyN5+hP","size":4523},"board-panel.glb":{"integrity":"sha384-Su82WkaQqG6obG/yGRkHw+WCXQCX/vMngfKyCV/IUH7tpdqz1MS2777hwjPMNdrI","size":1276},"composite.json":{"integrity":"sha384-sFuc9KWyDZpE2r3m+p3lj2YXw/hlALVOoguXm/wf1fSuN9T5pCXAlD7ow/9gOhQk","size":1916},"data.json":{"integrity":"sha384-TC0KbVHrPpPbhd+YP/5rmdZ7DRp6HfhUbpnEOV/8tiv+/ZPF4bRdzAAch2i36XCM","size":2009},"scripts/leaderboard-hud.tsx":{"integrity":"sha384-RKTVTqgYOCXUK/Ztei5exeXq/eeKgLJYoB6i+v9kwAJOiQsWNVJhCL7YOt9bC2kD","size":1789},"scripts/leaderboard.ts":{"integrity":"sha384-dyYY7XmhpYRYuoVvK+Gwn6iWbT7avt03iiNBuKK+5vyZPJpKBKzrv6ZiAolzayaW","size":4011},"scripts/pure/board.ts":{"integrity":"sha384-ks1PrCQkVaxlFeV4JEK7VUtIstr9rmU4dBqQLqN0QThlYOZ1StHQ5Vex+djFVxN9","size":3394},"thumbnail.png":{"integrity":"sha384-PqQ+DIWqDPRtuQIuK4NvtFcicWiCgQ94XqhBZWKGArKe+GEyHpjOdd9cerdgyamu","size":5768}}},{"name":"loveseat","data":"{\n \"id\": \"78050d8f-ee51-4db7-b060-14e7a0b48939\",\n \"name\": \"Loveseat\",\n \"description\": \"A two-seat sofa. Players can sit at either end.\",\n \"category\": \"custom\",\n \"tags\": [\n \"seat\",\n \"furniture\",\n \"sit\"\n ],\n \"version\": \"1.1.0\",\n \"changelog\": [\n {\n \"version\": \"1.1.0\",\n \"notes\": \"The seat no longer runs on the Multiplayer Server, where it was walking every sit spot's transform chain each frame for nobody to see.\"\n },\n {\n \"version\": \"1.0.1\",\n \"notes\": \"Ships the model's texture, which was missing from the folder — without it the model rendered blank white in-world.\"\n },\n {\n \"version\": \"1.0.0\",\n \"notes\": \"Initial release\"\n }\n ],\n \"origin\": {\n \"source\": \"builtin\"\n },\n \"requiredPermissions\": [\n \"ALLOW_TO_MOVE_PLAYER_INSIDE_SCENE\",\n \"ALLOW_TO_TRIGGER_AVATAR_EMOTE\"\n ],\n \"group\": \"Seats\"\n}\n","files":{"Couch_01.glb":{"integrity":"sha384-Ybann6g/XRgUPIClpvLHX3e6SqETbaQ5vwLxVFADEhbMCc4YY3Jzw/RH6hR9gxSj","size":26236},"composite.json":{"integrity":"sha384-6gJtUvbDA9wZB5J/eUzFxTl2Ior4BViiorJCNokaAIZk/6/qXcg/7S1zGC+NsR6N","size":2005},"data.json":{"integrity":"sha384-uAOd4Pflpvbc2DFGnB3IX/xsDWHwz+RsG7UDDmuMluZHnB1bzIxFhw8+NEzh7T9/","size":872},"file1.png":{"integrity":"sha384-hkHg23U+9Yx8eU+7OWRgOsHJ1gS8nzdWZ/DEAQvtwJF3dOf7sTQwINVaIo30FRk5","size":7117},"scripts/seat.ts":{"integrity":"sha384-qTc33dk7kx9+avQ4JugIv1csCyESSIOVst3FKQhN3pC0OIyeh/yA32h0z8zjdIWc","size":6959},"thumbnail.png":{"integrity":"sha384-Y12yGhzQFK62sP07Qz6ipUPa++ZBer/QiCMMbpn1qnP/7n6RAJXoaDMYSGSvA4Hh","size":23593}}},{"name":"modern-sofa","data":"{\n \"id\": \"14706421-460b-4161-b06c-8ce7db73ad11\",\n \"name\": \"Modern Sofa\",\n \"description\": \"A low modern sofa, seating three. Players can sit along it.\",\n \"category\": \"custom\",\n \"tags\": [\n \"seat\",\n \"furniture\",\n \"sit\"\n ],\n \"version\": \"1.1.0\",\n \"changelog\": [\n {\n \"version\": \"1.1.0\",\n \"notes\": \"The seat no longer runs on the Multiplayer Server, where it was walking every sit spot's transform chain each frame for nobody to see.\"\n },\n {\n \"version\": \"1.0.0\",\n \"notes\": \"Initial release\"\n }\n ],\n \"origin\": {\n \"source\": \"builtin\"\n },\n \"requiredPermissions\": [\n \"ALLOW_TO_MOVE_PLAYER_INSIDE_SCENE\",\n \"ALLOW_TO_TRIGGER_AVATAR_EMOTE\"\n ],\n \"group\": \"Seats\"\n}\n","files":{"ModernSofa.glb":{"integrity":"sha384-WT/qnGZedI5qRlBpLTndtxD90++WGbyQPpFeZJTWBDHR3555y88+LN4RG4aXLPA+","size":36796},"composite.json":{"integrity":"sha384-r6g/u0LMvBeUh8W3qMWZJ7H6OqgyqjNsPAL7jX5wOz+kvRwb178v0cD3YGoazd/T","size":2022},"data.json":{"integrity":"sha384-oMvACe5vrge+hMwWAsi9XHAe/OaFSCeWN8djSih9ET+M0j6CHHD5+tDxln/6crnw","size":714},"scripts/seat.ts":{"integrity":"sha384-qTc33dk7kx9+avQ4JugIv1csCyESSIOVst3FKQhN3pC0OIyeh/yA32h0z8zjdIWc","size":6959},"thumbnail.png":{"integrity":"sha384-+rS3k/5fjWqEHdGpcCs+Lur4gU1mESTaJ+fxHjpRjsKsUMbY1m6BP9G5VNwHtDea","size":16342}}},{"name":"outdoor-chair","data":"{\n \"id\": \"d8cb5c0f-dcf2-4fda-be37-2b76c4c0e78c\",\n \"name\": \"Outdoor Chair\",\n \"description\": \"A weathered outdoor chair. Players can sit on it.\",\n \"category\": \"custom\",\n \"tags\": [\n \"seat\",\n \"furniture\",\n \"sit\"\n ],\n \"version\": \"1.1.0\",\n \"changelog\": [\n {\n \"version\": \"1.1.0\",\n \"notes\": \"The seat no longer runs on the Multiplayer Server, where it was walking every sit spot's transform chain each frame for nobody to see.\"\n },\n {\n \"version\": \"1.0.1\",\n \"notes\": \"Ships the model's texture, which was missing from the folder — without it the model rendered blank white in-world.\"\n },\n {\n \"version\": \"1.0.0\",\n \"notes\": \"Initial release\"\n }\n ],\n \"origin\": {\n \"source\": \"builtin\"\n },\n \"requiredPermissions\": [\n \"ALLOW_TO_MOVE_PLAYER_INSIDE_SCENE\",\n \"ALLOW_TO_TRIGGER_AVATAR_EMOTE\"\n ],\n \"group\": \"Seats\"\n}\n","files":{"Chair_07.glb":{"integrity":"sha384-rh67Oyki0AbHvwI7VAKxG4R6BvIZ+ApNvK3Ub3pjli95VKdib6IEUeCQIS5xRtIy","size":26632},"composite.json":{"integrity":"sha384-SdEMJ9948Cqop6/F49vW9182dpnKhA6sj/sGGfRC5+7NLSOvMk/wmxej4ptvjZwX","size":1419},"data.json":{"integrity":"sha384-erXzZe+COuUtzmtc67RGz02/w4ROQZMqgeU5TAsRJMcF0D1Pjj72jmzpKYJtjULa","size":879},"file1.png":{"integrity":"sha384-hkHg23U+9Yx8eU+7OWRgOsHJ1gS8nzdWZ/DEAQvtwJF3dOf7sTQwINVaIo30FRk5","size":7117},"scripts/seat.ts":{"integrity":"sha384-qTc33dk7kx9+avQ4JugIv1csCyESSIOVst3FKQhN3pC0OIyeh/yA32h0z8zjdIWc","size":6959},"thumbnail.png":{"integrity":"sha384-MuAlhtUctXmuZuYnp2/jzIowRuJoMj56xdErvUjb1WC8IJKidThtoJXtoDh1Mi2u","size":22220}}},{"name":"run-progress","data":"{\n \"id\": \"8ea22784-81dd-4d60-b0ae-54fef4852fb7\",\n \"name\": \"Run Progress\",\n \"description\": \"Timed runs with per-player checkpoints, collectibles, finish conditions, restart and a configurable HUD.\",\n \"category\": \"custom\",\n \"group\": \"Multiplayer Server\",\n \"tags\": [\n \"course\",\n \"race\",\n \"checkpoint\",\n \"collectible\",\n \"timer\",\n \"hud\",\n \"restart\"\n ],\n \"requiresSdk\": \"auth-server\",\n \"version\": \"1.4.0\",\n \"changelog\": [\n {\n \"version\": \"1.4.0\",\n \"notes\": \"The run HUD fits phones: Restart moves from the bottom-right corner (under the jump button) to under the clock, panels stack in the shared HUD layout instead of overlapping other HUDs, the controls hint matches the device, and the completion screen hides the touch controls while it is open.\"\n },\n {\n \"version\": \"1.3.1\",\n \"notes\": \"Hit points show unless Health & Respawn's Health Bar is turned off, so older Health & Respawn copies keep their bar.\"\n },\n {\n \"version\": \"1.3.0\",\n \"notes\": \"A missing spawn marker respawns players on its area's floor, not mid-air, and a checkpoint/marker count mismatch shows as a problem.\"\n },\n {\n \"version\": \"1.2.0\",\n \"notes\": \"HUD setting: Full, one big centred timer, or Hidden for a custom HUD. Health shows only when Health & Respawn turns its bar on.\"\n },\n {\n \"version\": \"1.1.0\",\n \"notes\": \"A missing spawn marker no longer stops the course: players respawn at the matching area, or at Health & Respawn's point.\"\n },\n {\n \"version\": \"1.0.0\",\n \"notes\": \"Timed course runs with per-player checkpoints, collectible goals, restart, best times, a persisted leaderboard and a themed HUD.\"\n }\n ],\n \"origin\": {\n \"source\": \"builtin\"\n }\n}\n","files":{"ai.md":{"integrity":"sha384-HEhvBW1B6ev3G9F3NJwBtkHfi3fuVS7ktxQLoQodEYlXnmA989fVh1/1U/RofXWw","size":6114},"composite.json":{"integrity":"sha384-VLC5nKAXOEJSV0e4pJv9kCp49u4nb6+OKeQImT7dYeDYMq3D21bDbiE79oyA4t0q","size":342},"data.json":{"integrity":"sha384-UrkVn6sNFnSOZ117kMO+A1RCAFy0BNX0VqJltOkoUtgeXkf6nnPPWSE3FyKUal4M","size":1751},"scripts/moving-platform.ts":{"integrity":"sha384-+OOc2vW73HOhsJCLElk2hGAcIJHfia3CKJbWkP7mOs0H7iAX3Gh5HYbcLUAZLXWh","size":1035},"scripts/run-progress.tsx":{"integrity":"sha384-qdQ+X5cdmZ4W5aogIDKuOghX0zGNiJkZE1zpq0F7iHUikOjDIX9Pe91Q4ghKjHw2","size":7645},"thumbnail.png":{"integrity":"sha384-6TEe0tNGVqIR8qvFRYv3jBgSHl7T2lZWQe6BuFofv7Lsfmwy2A6/ZHBc/Y1N6C2q","size":28248}}},{"name":"rustic-bench","data":"{\n \"id\": \"d6e264c5-a080-4702-827f-dcad4bfbc77c\",\n \"name\": \"Rustic Bench\",\n \"description\": \"A rough timber bench, seating two. Players can sit on it.\",\n \"category\": \"custom\",\n \"tags\": [\n \"seat\",\n \"furniture\",\n \"sit\"\n ],\n \"version\": \"1.1.0\",\n \"changelog\": [\n {\n \"version\": \"1.1.0\",\n \"notes\": \"The seat no longer runs on the Multiplayer Server, where it was walking every sit spot's transform chain each frame for nobody to see.\"\n },\n {\n \"version\": \"1.0.1\",\n \"notes\": \"Ships the model's texture, which was missing from the folder — without it the model rendered blank white in-world.\"\n },\n {\n \"version\": \"1.0.0\",\n \"notes\": \"Initial release\"\n }\n ],\n \"origin\": {\n \"source\": \"builtin\"\n },\n \"requiredPermissions\": [\n \"ALLOW_TO_MOVE_PLAYER_INSIDE_SCENE\",\n \"ALLOW_TO_TRIGGER_AVATAR_EMOTE\"\n ],\n \"group\": \"Seats\"\n}\n","files":{"Bench_01.glb":{"integrity":"sha384-HvKGBqFZmpfflUDGmAv6bnKDgdLIRfY2gJbg+AffL+GjBuNBHpMsCpXWxfLXZDlN","size":38296},"PiratesPack_TX.png.png":{"integrity":"sha384-tvHmsChchDas/4FWyTySQozen2k/SnbQEzXKuV6p90FHRLZoH5NQyiDa9EOnNiHi","size":8600},"composite.json":{"integrity":"sha384-gGr5duM8zbC3xcX1ZPdVi5VH9qbExCukBk71DnHbpKDVp3R7BXD5Zi13eDIBoQE6","size":2007},"data.json":{"integrity":"sha384-7yCiT9oSixpR2SmV25CFxXVEFyPzmMI6/CMoXUIZp3vE1Vu0R591Vp6gjJalb/BE","size":886},"scripts/seat.ts":{"integrity":"sha384-qTc33dk7kx9+avQ4JugIv1csCyESSIOVst3FKQhN3pC0OIyeh/yA32h0z8zjdIWc","size":6959},"thumbnail.png":{"integrity":"sha384-ZmLePG5FIbmqf4RKCdidRKla6XAeP/+r51k4afbck7j8BR0RSwHEIDo7QWOSmmN2","size":11775}}},{"name":"rustic-round-stool","data":"{\n \"id\": \"80f58415-1e99-4ac3-ab21-7e4b93d8c1da\",\n \"name\": \"Rustic Round Stool\",\n \"description\": \"A round wooden stool. Players can sit on it.\",\n \"category\": \"custom\",\n \"tags\": [\n \"seat\",\n \"furniture\",\n \"sit\"\n ],\n \"version\": \"1.1.0\",\n \"changelog\": [\n {\n \"version\": \"1.1.0\",\n \"notes\": \"The seat no longer runs on the Multiplayer Server, where it was walking every sit spot's transform chain each frame for nobody to see.\"\n },\n {\n \"version\": \"1.0.1\",\n \"notes\": \"Ships the model's texture, which was missing from the folder — without it the model rendered blank white in-world.\"\n },\n {\n \"version\": \"1.0.0\",\n \"notes\": \"Initial release\"\n }\n ],\n \"origin\": {\n \"source\": \"builtin\"\n },\n \"requiredPermissions\": [\n \"ALLOW_TO_MOVE_PLAYER_INSIDE_SCENE\",\n \"ALLOW_TO_TRIGGER_AVATAR_EMOTE\"\n ],\n \"group\": \"Seats\"\n}\n","files":{"Chairwood_01.glb":{"integrity":"sha384-UGMRBagdJnoipOK+RMQftg0R6vXgHD/6jTQJl45SOrw8uCclBWodtVxQj8lAwH97","size":26292},"PiratesPack_TX.png.png":{"integrity":"sha384-tvHmsChchDas/4FWyTySQozen2k/SnbQEzXKuV6p90FHRLZoH5NQyiDa9EOnNiHi","size":8600},"composite.json":{"integrity":"sha384-+vEWwi/GBNSbSKxucA5WevFwKuJvMkgdOzlA0UxB3vlTLjhfNr/db8qB9zLHoSsP","size":1423},"data.json":{"integrity":"sha384-+78WMw5CS6ay5o4yyZQC7P3dtmWW4rzjnd9j1FmyNJoAuHd4E0QeZH1bPJjJzIgZ","size":879},"scripts/seat.ts":{"integrity":"sha384-qTc33dk7kx9+avQ4JugIv1csCyESSIOVst3FKQhN3pC0OIyeh/yA32h0z8zjdIWc","size":6959},"thumbnail.png":{"integrity":"sha384-N3nz6ZelKTPqOpx5g6JLCNox5W71EwtvihYfFZffMoPDlR/oDSSVk2c44Wt/ABLH","size":13077}}},{"name":"rustic-square-stool","data":"{\n \"id\": \"9bc6d2f4-fb0a-4688-b81b-a4a83636193d\",\n \"name\": \"Rustic Square Stool\",\n \"description\": \"A square wooden stool. Players can sit on it.\",\n \"category\": \"custom\",\n \"tags\": [\n \"seat\",\n \"furniture\",\n \"sit\"\n ],\n \"version\": \"1.1.0\",\n \"changelog\": [\n {\n \"version\": \"1.1.0\",\n \"notes\": \"The seat no longer runs on the Multiplayer Server, where it was walking every sit spot's transform chain each frame for nobody to see.\"\n },\n {\n \"version\": \"1.0.1\",\n \"notes\": \"Ships the model's texture, which was missing from the folder — without it the model rendered blank white in-world.\"\n },\n {\n \"version\": \"1.0.0\",\n \"notes\": \"Initial release\"\n }\n ],\n \"origin\": {\n \"source\": \"builtin\"\n },\n \"requiredPermissions\": [\n \"ALLOW_TO_MOVE_PLAYER_INSIDE_SCENE\",\n \"ALLOW_TO_TRIGGER_AVATAR_EMOTE\"\n ],\n \"group\": \"Seats\"\n}\n","files":{"Chairwood_02.glb":{"integrity":"sha384-IZcQfO7nBmiElbfMxtEy8WimKIB3WAefGB9cnz1A8oih4z6EuLuRleGbYwNr4DYZ","size":40548},"PiratesPack_TX.png.png":{"integrity":"sha384-tvHmsChchDas/4FWyTySQozen2k/SnbQEzXKuV6p90FHRLZoH5NQyiDa9EOnNiHi","size":8600},"composite.json":{"integrity":"sha384-Xqpw2Y5Vi9LBJsQf7uJIxPgt2ypqG7mIcjiQdnz2pAgbD9KKq88XHN22EW2vctRg","size":1424},"data.json":{"integrity":"sha384-pVW/W1QTcprakc0Yei7HEYqFpBmpDLHrzVANvYbipoPpWPf1rAI6rw4vFI9SUDys","size":881},"scripts/seat.ts":{"integrity":"sha384-qTc33dk7kx9+avQ4JugIv1csCyESSIOVst3FKQhN3pC0OIyeh/yA32h0z8zjdIWc","size":6959},"thumbnail.png":{"integrity":"sha384-8rf/o+kVZ7qhW/3D8hUzNanZVTfMvUMOB5+Zs85Tvn6EWobBD42Bvkpr2zuTMzbE","size":14789}}},{"name":"server-clock","data":"{\n \"id\": \"9e37c253-b33e-4505-8231-530f62715d21\",\n \"name\": \"Server Clock\",\n \"description\": \"A clock showing NTP-synced server time, identical for every player. Runs on the Multiplayer Server.\",\n \"category\": \"custom\",\n \"group\": \"Multiplayer Server\",\n \"tags\": [\n \"multiplayer\",\n \"server\",\n \"clock\",\n \"time\"\n ],\n \"requiresSdk\": \"auth-server\",\n \"version\": \"1.2.0\",\n \"changelog\": [\n {\n \"version\": \"1.2.0\",\n \"notes\": \"The 2D clock takes its place in the shared HUD layout, so it no longer overlaps other HUDs on any screen.\"\n },\n {\n \"version\": \"1.0.0\",\n \"notes\": \"Initial release: the Multiplayer Server's NTP-synced time, identical for every player, shown as 3D text at the item or as a 2D overlay on the player's client.\"\n },\n {\n \"version\": \"1.1.0\",\n \"notes\": \"Shared UI theme and independent clocks when multiple items use the overlay.\"\n }\n ],\n \"origin\": {\n \"source\": \"builtin\"\n }\n}\n","files":{"ai.md":{"integrity":"sha384-/Awa1V4naWhY7vA66q5GEKJ4Aq7ZLOOx3xL9IKKVk5dKVMtA/MN9nWzHBA5FS5k1","size":3296},"composite.json":{"integrity":"sha384-3endi+ZKs5JfksNFuC3a+KvjsuCSyG9Ee23/mA/DKuwGPqtfLasLie3EiRd2Hqs/","size":907},"data.json":{"integrity":"sha384-6X6uh0Isy56LSYlumS2fWeQ+BL4ubUMofh/Ry7/ZF3hW2HpBdejep7t+o8bKffwt","size":955},"scripts/server-clock.ts":{"integrity":"sha384-TcnM9kQBRxlqHv6fFVkLLZ0JTEkaATZapl2FeZcCV6m0rxqtPN5VpGfzTU4vMA7W","size":2374},"thumbnail.png":{"integrity":"sha384-7vDACZ6Qb0G/LcQXW0w7DfZ/IyyT6NOmez0ZzJYgnwT9YECleSVRAHrXNZrWpVAo","size":8939}}},{"name":"simple-chair","data":"{\n \"id\": \"fe41823d-a0ef-4152-bf66-b9f44cdcffa2\",\n \"name\": \"Simple Chair\",\n \"description\": \"A simple lightweight chair. Players can sit on it.\",\n \"category\": \"custom\",\n \"tags\": [\n \"seat\",\n \"furniture\",\n \"sit\"\n ],\n \"version\": \"1.1.0\",\n \"changelog\": [\n {\n \"version\": \"1.1.0\",\n \"notes\": \"The seat no longer runs on the Multiplayer Server, where it was walking every sit spot's transform chain each frame for nobody to see.\"\n },\n {\n \"version\": \"1.0.1\",\n \"notes\": \"Ships the model's texture, which was missing from the folder — without it the model rendered blank white in-world.\"\n },\n {\n \"version\": \"1.0.0\",\n \"notes\": \"Initial release\"\n }\n ],\n \"origin\": {\n \"source\": \"builtin\"\n },\n \"requiredPermissions\": [\n \"ALLOW_TO_MOVE_PLAYER_INSIDE_SCENE\",\n \"ALLOW_TO_TRIGGER_AVATAR_EMOTE\"\n ],\n \"group\": \"Seats\"\n}\n","files":{"Chair_03.glb":{"integrity":"sha384-Kr1BoWrtvWuVgiTcU0TmlB2hNVHJIOjoEXu27uAvSWezai6Nn+MYq9IkPAPTVjZy","size":10140},"composite.json":{"integrity":"sha384-Ah3wQrl5kn40r1Byv3A0InbOVhRgn9Z3559lyvQCCnFhRdPjR88/pngxS0lOWYlQ","size":1444},"data.json":{"integrity":"sha384-QcAWIr/jmyykog8qMz+2TmM7WCiqgbH6WpQA7iPbyx0cvKJRIvu/FpCOwFoeCy/P","size":879},"file1.png":{"integrity":"sha384-hkHg23U+9Yx8eU+7OWRgOsHJ1gS8nzdWZ/DEAQvtwJF3dOf7sTQwINVaIo30FRk5","size":7117},"scripts/seat.ts":{"integrity":"sha384-qTc33dk7kx9+avQ4JugIv1csCyESSIOVst3FKQhN3pC0OIyeh/yA32h0z8zjdIWc","size":6959},"thumbnail.png":{"integrity":"sha384-970of2uoK/Vy8uBQAQRDTI5ubtyaXF6NVB+QdweA/VzCaUyVlHTciY2bgnX4bbcs","size":10304}}},{"name":"sit-spot","data":"{\n \"id\": \"49bc2e26-dc56-430b-888e-509d56ae79ed\",\n \"name\": \"Sit Spot\",\n \"description\": \"An invisible seat: drop it on any surface and players can sit exactly there, facing the way it points.\",\n \"category\": \"custom\",\n \"tags\": [\n \"seat\",\n \"furniture\",\n \"sit\"\n ],\n \"version\": \"1.1.0\",\n \"changelog\": [\n {\n \"version\": \"1.1.0\",\n \"notes\": \"The seat no longer runs on the Multiplayer Server, where it was walking every sit spot's transform chain each frame for nobody to see.\"\n },\n {\n \"version\": \"1.0.0\",\n \"notes\": \"Initial release\"\n }\n ],\n \"origin\": {\n \"source\": \"builtin\"\n },\n \"requiredPermissions\": [\n \"ALLOW_TO_MOVE_PLAYER_INSIDE_SCENE\",\n \"ALLOW_TO_TRIGGER_AVATAR_EMOTE\"\n ],\n \"group\": \"Seats\"\n}\n","files":{"composite.json":{"integrity":"sha384-uhBFFGia5mFzOQWC/J9UxtsSaldLqPEHiwzfnBYPzokXoME91oNDnBhwjPMNjpNc","size":799},"data.json":{"integrity":"sha384-ZpWPifWI1oc5/I6vlAeNNosb8cmuu5IEKnh/rdh8vdf57V+wnNsuVqAuFYn5aVdG","size":754},"scripts/seat.ts":{"integrity":"sha384-qTc33dk7kx9+avQ4JugIv1csCyESSIOVst3FKQhN3pC0OIyeh/yA32h0z8zjdIWc","size":6959},"thumbnail.png":{"integrity":"sha384-OrhbCwB59TLqDClVqt8Hrcy+OPXXkctZ1vW7zQTWOSaEWnyNRyne5SBtsVrZKVt2","size":18923}}},{"name":"sit-spot-edge","data":"{\n \"id\": \"6c815b58-d13f-4d30-a7ea-0f275d740084\",\n \"name\": \"Edge Sit Spot\",\n \"description\": \"An invisible seat for ledges and edges — the player sits with their legs hanging over the side.\",\n \"category\": \"custom\",\n \"tags\": [\n \"seat\",\n \"furniture\",\n \"sit\",\n \"edge\",\n \"ledge\"\n ],\n \"version\": \"1.1.0\",\n \"changelog\": [\n {\n \"version\": \"1.1.0\",\n \"notes\": \"The seat no longer runs on the Multiplayer Server, where it was walking every sit spot's transform chain each frame for nobody to see.\"\n },\n {\n \"version\": \"1.0.0\",\n \"notes\": \"Initial release\"\n }\n ],\n \"origin\": {\n \"source\": \"builtin\"\n },\n \"requiredPermissions\": [\n \"ALLOW_TO_MOVE_PLAYER_INSIDE_SCENE\",\n \"ALLOW_TO_TRIGGER_AVATAR_EMOTE\"\n ],\n \"group\": \"Seats\"\n}\n","files":{"composite.json":{"integrity":"sha384-us527Hlk6/JM3bpEqqwHclf7+Xu8hXGrtrhZJ1w/atuO4025ZqJO80d0Ov4XIXnq","size":764},"data.json":{"integrity":"sha384-CH6sS8qFyE2hi/eP5h6IP+XIhtaTkrANQsfRDKzipE1+a3/anhHvfoXa66xmW6g3","size":779},"emotes/Sit_Edge1_emote.glb":{"integrity":"sha384-8oYD8S4HilS8mFsgOj5lRbBWoq3rmF7ETStGkvefUODtwN+lo5gxdKY/F80aqLIj","size":99400},"emotes/Sit_Edge2_emote.glb":{"integrity":"sha384-bS47w9rNkTXOUXmHoSOTkM8g+3AcRbSRLwGblftdTa2Hr0avdubdOdiC2D5bkM2E","size":89300},"scripts/seat.ts":{"integrity":"sha384-XonZTJcIqIC//h6SCTzpxOTs+MfpK2IHjkDTg1t+XmUUSZ7777snXkZeRzpahO7Q","size":7017},"thumbnail.png":{"integrity":"sha384-OrhbCwB59TLqDClVqt8Hrcy+OPXXkctZ1vW7zQTWOSaEWnyNRyne5SBtsVrZKVt2","size":18923}}},{"name":"small-couch","data":"{\n \"id\": \"acca7441-52c9-4b80-83fb-af18bcbf4c7e\",\n \"name\": \"Small Couch\",\n \"description\": \"A compact couch, seating two. Players can sit at either end.\",\n \"category\": \"custom\",\n \"tags\": [\n \"seat\",\n \"furniture\",\n \"sit\"\n ],\n \"version\": \"1.1.0\",\n \"changelog\": [\n {\n \"version\": \"1.1.0\",\n \"notes\": \"The seat no longer runs on the Multiplayer Server, where it was walking every sit spot's transform chain each frame for nobody to see.\"\n },\n {\n \"version\": \"1.0.0\",\n \"notes\": \"Initial release\"\n }\n ],\n \"origin\": {\n \"source\": \"builtin\"\n },\n \"requiredPermissions\": [\n \"ALLOW_TO_MOVE_PLAYER_INSIDE_SCENE\",\n \"ALLOW_TO_TRIGGER_AVATAR_EMOTE\"\n ],\n \"group\": \"Seats\"\n}\n","files":{"TwoSeater_Couch.glb":{"integrity":"sha384-3aFVc1VRYCZMbuV54qKD37CG/Gyy8g4KkdPSjqqbmNMVELB8RVdCVn4bhaaJeTIA","size":35116},"composite.json":{"integrity":"sha384-4SsVtae9U3jtnd8ws0MFI6eEqXQA+K9d0YanHazJzExwBdh4yL/10B6oDCa5m9OE","size":2006},"data.json":{"integrity":"sha384-u6WCss6xFK0tfHpKnL40yNXkaJg1VNGwvL6RdTYzaSWbFZGSOUHJh0fK6CZhN4Io","size":715},"scripts/seat.ts":{"integrity":"sha384-qTc33dk7kx9+avQ4JugIv1csCyESSIOVst3FKQhN3pC0OIyeh/yA32h0z8zjdIWc","size":6959},"thumbnail.png":{"integrity":"sha384-Vo9jNKeVjbITSNCMK5+1FvD6QgI6prs0AZptiMN1LybCqlnhS3syD/yd7o6Dhos9","size":15304}}},{"name":"spawner","data":"{\n \"id\": \"fc759fc0-57a1-461c-aa06-22c0d3d4c3e0\",\n \"name\": \"Spawner\",\n \"description\": \"Makes copies of a prefab appear while playing — on a click, when a player walks in, on a timer, or when another script asks. Copies appear at the Spawner's own spot, only on this player's client.\",\n \"category\": \"custom\",\n \"tags\": [\n \"spawner\",\n \"spawn\",\n \"pickup\",\n \"enemy\"\n ],\n \"version\": \"1.0.0\",\n \"changelog\": [\n {\n \"version\": \"1.0.0\",\n \"notes\": \"Initial release: copies of a prefab appear while playing — on a click, when a player walks in, on a timer, or when another Script asks — made on that player's own client, with a per-spot cap, a lifetime and scatter.\"\n }\n ],\n \"origin\": {\n \"source\": \"builtin\"\n }\n}\n","files":{"ai.md":{"integrity":"sha384-z0Sma23V3knVRWNDZMCDl+EKMeObpA2NxJzO543HDEWXdjM8rq2BUvW8ivVC3s2r","size":5423},"composite.json":{"integrity":"sha384-11bTytc5FvYc2S+noZUzFBRPTTCZ+JK3gMOGtS1vg57/Aqv0jIG+H6StFjCHbr+o","size":1383},"data.json":{"integrity":"sha384-te+nomjlQGpKcP1TUxjeJBvcNMY2e/q67l6VHqU0B81p9tCWgjz8qTps7gUZ2kdf","size":747},"scripts/spawner.ts":{"integrity":"sha384-2BCX+ZtBU07fyYb1gxapwzivM8DRe8i4CetRZgpVN8N5ta0vlxxFEDdfHUmEYOkJ","size":16034},"thumbnail.png":{"integrity":"sha384-4nU0PNVHtK4o6zj4kZ7zbNlQzczBQKUQPC3F8ZPrcP7BWYbExlEs3VlFajqKPwZG","size":6786}}},{"name":"steampunk-bench","data":"{\n \"id\": \"8a80b964-1f4d-4ea3-8f6b-078809891a17\",\n \"name\": \"Steampunk Bench\",\n \"description\": \"A riveted steampunk bench, seating two. Players can sit on it.\",\n \"category\": \"custom\",\n \"tags\": [\n \"seat\",\n \"furniture\",\n \"sit\"\n ],\n \"version\": \"1.1.0\",\n \"changelog\": [\n {\n \"version\": \"1.1.0\",\n \"notes\": \"The seat no longer runs on the Multiplayer Server, where it was walking every sit spot's transform chain each frame for nobody to see.\"\n },\n {\n \"version\": \"1.0.0\",\n \"notes\": \"Initial release\"\n }\n ],\n \"origin\": {\n \"source\": \"builtin\"\n },\n \"requiredPermissions\": [\n \"ALLOW_TO_MOVE_PLAYER_INSIDE_SCENE\",\n \"ALLOW_TO_TRIGGER_AVATAR_EMOTE\"\n ],\n \"group\": \"Seats\"\n}\n","files":{"Steampunk Bench.glb":{"integrity":"sha384-l8rvgt9Z8JKpRwRI3rxw9qoH/vx1v7HvwxJoQWJi/xQ2v3+HIFzUE3SEMakC13lj","size":159244},"composite.json":{"integrity":"sha384-qT/zOtPEwpaAhxx6YNaSnoFHWNCzk9cluTzkbWVOT1ASokLY9hfUd+lhKDF6w/np","size":2019},"data.json":{"integrity":"sha384-ywBxOVAXX1Eo07MEC1qn5iwpz4Wxa0Sf9JHs8cYCOa0JL8D5/M0pRS/k2RuNCzD0","size":721},"scripts/seat.ts":{"integrity":"sha384-qTc33dk7kx9+avQ4JugIv1csCyESSIOVst3FKQhN3pC0OIyeh/yA32h0z8zjdIWc","size":6959},"thumbnail.png":{"integrity":"sha384-NNFHgxb81gJ0y4Z1APmww5ZHZz4My+jv53ogLyEKS+qjno5TAMnoSE4PFSELuGsR","size":16622}}},{"name":"steampunk-chair","data":"{\n \"id\": \"0cdcf518-9bb8-454e-9b18-a851b2a0b1df\",\n \"name\": \"Steampunk Chair\",\n \"description\": \"A brass-and-leather steampunk chair. Players can sit on it.\",\n \"category\": \"custom\",\n \"tags\": [\n \"seat\",\n \"furniture\",\n \"sit\"\n ],\n \"version\": \"1.1.0\",\n \"changelog\": [\n {\n \"version\": \"1.1.0\",\n \"notes\": \"The seat no longer runs on the Multiplayer Server, where it was walking every sit spot's transform chain each frame for nobody to see.\"\n },\n {\n \"version\": \"1.0.0\",\n \"notes\": \"Initial release\"\n }\n ],\n \"origin\": {\n \"source\": \"builtin\"\n },\n \"requiredPermissions\": [\n \"ALLOW_TO_MOVE_PLAYER_INSIDE_SCENE\",\n \"ALLOW_TO_TRIGGER_AVATAR_EMOTE\"\n ],\n \"group\": \"Seats\"\n}\n","files":{"Steampunk Chair.glb":{"integrity":"sha384-jx1WnrmD7GigwvCDb4X6HDhs3Q4rc7J10DlakX2I31xP/64hO8E76U6nCARYu1D/","size":137292},"composite.json":{"integrity":"sha384-C9XF/cSfbX7UfnePwSOg2BrpL9m3nB5WyQRJkINrSOsmV+JoEcEAEv/2bl7pl9Kd","size":1420},"data.json":{"integrity":"sha384-qoBLKLZCSylATy78bslEs1GaUl+YjZPvDh4GBtS4cAkM5JzvXbQMX2QxWjOapOAU","size":718},"scripts/seat.ts":{"integrity":"sha384-qTc33dk7kx9+avQ4JugIv1csCyESSIOVst3FKQhN3pC0OIyeh/yA32h0z8zjdIWc","size":6959},"thumbnail.png":{"integrity":"sha384-tAJBIbkGkYJOtHKoWzPwIUmcjypRoYnqLu5S7mLiuQ5KUiHKZ493plJyalIZ5aYH","size":22358}}},{"name":"tall-stool","data":"{\n \"id\": \"f83a91fb-b939-4251-a298-d334c3e48996\",\n \"name\": \"Tall Stool\",\n \"description\": \"A tall stool with a footrest. Players can sit on it.\",\n \"category\": \"custom\",\n \"tags\": [\n \"seat\",\n \"furniture\",\n \"sit\"\n ],\n \"version\": \"1.1.0\",\n \"changelog\": [\n {\n \"version\": \"1.1.0\",\n \"notes\": \"The seat no longer runs on the Multiplayer Server, where it was walking every sit spot's transform chain each frame for nobody to see.\"\n },\n {\n \"version\": \"1.0.0\",\n \"notes\": \"Initial release\"\n }\n ],\n \"origin\": {\n \"source\": \"builtin\"\n },\n \"requiredPermissions\": [\n \"ALLOW_TO_MOVE_PLAYER_INSIDE_SCENE\",\n \"ALLOW_TO_TRIGGER_AVATAR_EMOTE\"\n ],\n \"group\": \"Seats\"\n}\n","files":{"Stool_D.glb":{"integrity":"sha384-H8ztvhYutHrOV6dbXUfUSODKyMLIy/P5eEntuQxEe2zEHwMLnlQVfvqFRhWMtA+h","size":320312},"composite.json":{"integrity":"sha384-RnEdGr2iP41goFt9Gmfi5bYDprFCHPslIt+zDWXP25ohLUd8p2RO8Q6Q3fEm91w5","size":1412},"data.json":{"integrity":"sha384-C8mP3L8l99WT0GJixLoSzlekZHxR+orHexOZdET85GqVMSpbbRLCqQ6KRn9r8mjR","size":706},"scripts/seat.ts":{"integrity":"sha384-qTc33dk7kx9+avQ4JugIv1csCyESSIOVst3FKQhN3pC0OIyeh/yA32h0z8zjdIWc","size":6959},"thumbnail.png":{"integrity":"sha384-/VHtkn6ezh/nPA9bGkGF7eNlD7G/e+32phC0qmZ0/LSbEtn+jo5mWb+1RfzomHQW","size":11715}}},{"name":"trigger-zone","data":"{\n \"id\": \"f1794ec8-ed62-42c8-a71b-6c52e04b161a\",\n \"name\": \"Trigger Area\",\n \"slug\": \"trigger_zone\",\n \"description\": \"An invisible area that knows who is standing in it. Name it, scale it with the gizmo, then have a script react to that name.\",\n \"category\": \"custom\",\n \"tags\": [\n \"trigger\",\n \"area\",\n \"interactivity\"\n ],\n \"drivenBy\": {\n \"rule\": \"The area only publishes who is standing in it — a Script reacts to its name through './runtime/zoneBus', on this item or on any other entity in the scene.\",\n \"code\": \"onZone('Front Door', 'enter', (event) => { /* what happens */ })\",\n \"next\": \"Use the Add a reaction button below and the new Script arrives already listening to this area.\"\n },\n \"version\": \"1.1.1\",\n \"changelog\": [\n { \"version\": \"1.1.1\", \"notes\": \"Guide covers model bounds, active parcels and course prefab integration.\" },\n {\n \"version\": \"1.0.0\",\n \"notes\": \"Initial release: an invisible named area that publishes who is standing in it, so a Script anywhere in the scene reacts to it by name with nothing wired.\"\n },\n {\n \"version\": \"1.1.0\",\n \"notes\": \"The placed area's Script card now shows the onZone line a Script reacts with, under its area settings.\"\n }\n ],\n \"origin\": {\n \"source\": \"builtin\"\n }\n}\n","files":{"ai.md":{"integrity":"sha384-D++yhIulqWPCrKizIyGTqDJF2ZxBv5GUgm9n8tbZKFO2xiwWUs8H5jMl49jSr+GK","size":6096},"composite.json":{"integrity":"sha384-VWkNF79zDduwdioBw5OubcoLdmnXzzZq6GXkq3u3k5qwD4JDktJw+wiLhI3Hzto+","size":917},"data.json":{"integrity":"sha384-r3pReo7kADyb6lmgav6cxgC2hwAVQoEGbLaINBkvAgkObtAk517Tf/GGZPI9Ocov","size":1286},"scripts/trigger-zone.ts":{"integrity":"sha384-57lvbBOHUXnIGndfQD1G9oRA9gVOpLg7JWwSAV9LJzeD6xGyTKCPhuLai3nhXE9R","size":3837},"thumbnail.png":{"integrity":"sha384-4htEAGokLp2yZKaMa5PZanI+3zqPe3TnLcXpmfyJjfnXhYmij+KVgZ51pXdeTnXN","size":4283}}},{"name":"ui-theme","data":"{\n \"id\": \"41939776-72b2-45f1-b40a-097fa66c9790\",\n \"name\": \"UI Theme\",\n \"description\": \"One accent color and appearance for game HUDs, timers, leaderboards, buttons, results and announcements.\",\n \"category\": \"custom\",\n \"group\": \"Scene UI\",\n \"tags\": [\n \"ui\",\n \"theme\",\n \"color\",\n \"hud\",\n \"design\"\n ],\n \"version\": \"1.1.0\",\n \"changelog\": [\n {\n \"version\": \"1.1.0\",\n \"notes\": \"Custom HUDs are placed through the shared HUD layout, which keeps them clear of the phone touch controls and of each other.\"\n },\n {\n \"version\": \"1.0.0\",\n \"notes\": \"One accent color and dark or light appearance shared by the scene's game HUDs, buttons, timers, leaderboards and results.\"\n }\n ],\n \"origin\": {\n \"source\": \"builtin\"\n }\n}\n","files":{"ai.md":{"integrity":"sha384-nxOv4VlTrgwQXS1doZ8l2Ka0Lf+49wlK5fZe6IeN6ym0d49eVorEF0pkP+mW0zup","size":2263},"composite.json":{"integrity":"sha384-GLLTfiifHN/3BNFuV3tozHl5PqIr2Sw/1lsM/jQQ8BcUY8FIt6gPCUgxcloJaxsW","size":551},"data.json":{"integrity":"sha384-gPrFuwJDKwYj8TGgJIkhTtOc+M6nawLruchbna5wTiCJ+3yXQQ3HlLyc/Ck0xpB8","size":766},"scripts/ui-theme.ts":{"integrity":"sha384-InUblgjcHMPeDZ/IKir/gTVfws6YE4FkR/SUd0AA285wV7rJUfEorIxCetjIiXNj","size":420},"thumbnail.png":{"integrity":"sha384-Q+XsR3csSrtPv1vWF2KsovKOoh15mPBgVsBKlMdNnjJSOJi4JhhkrPZEBpjdzjRR","size":5983}}},{"name":"video-screen","data":"{\n \"id\": \"37188734-4562-4f21-afeb-2752c39278f4\",\n \"name\": \"Video Screen\",\n \"description\": \"A flat screen that plays a video file or a live stream, with volume and playback controls.\",\n \"category\": \"custom\",\n \"tags\": [\n \"video\",\n \"screen\",\n \"stream\"\n ],\n \"version\": \"1.0.0\",\n \"changelog\": [\n {\n \"version\": \"1.0.0\",\n \"notes\": \"Initial release\"\n }\n ],\n \"origin\": {\n \"source\": \"builtin\"\n }\n}\n","files":{"composite.json":{"integrity":"sha384-PNwL0kv1USZnEFOSnC3oF6kLaG3Hy0S5VGGvk16R+dkdkIidEPn40/SpRI4Eipsm","size":2536},"data.json":{"integrity":"sha384-CWXT5tqC3clzqs6wTwRMXrxBBT8PdHaNRpa4H4SFhZBVw4GfOe9/vmdjzk58KTaK","size":427},"thumbnail.png":{"integrity":"sha384-OQnhEX0GsIogArcrXaPYIo5bRqaYsK7V6GnniDUiiHDPOmojTFQKbcopVX8poMbd","size":3919},"video_player.glb":{"integrity":"sha384-Su82WkaQqG6obG/yGRkHw+WCXQCX/vMngfKyCV/IUH7tpdqz1MS2777hwjPMNdrI","size":1276}}},{"name":"wooden-chair","data":"{\n \"id\": \"c0f3a3f1-7fad-47bf-a855-e27f41f7894f\",\n \"name\": \"Wooden Chair\",\n \"description\": \"A plain wooden chair. Players can sit on it.\",\n \"category\": \"custom\",\n \"tags\": [\n \"seat\",\n \"furniture\",\n \"sit\"\n ],\n \"version\": \"1.1.0\",\n \"changelog\": [\n {\n \"version\": \"1.1.0\",\n \"notes\": \"The seat no longer runs on the Multiplayer Server, where it was walking every sit spot's transform chain each frame for nobody to see.\"\n },\n {\n \"version\": \"1.0.0\",\n \"notes\": \"Initial release\"\n }\n ],\n \"origin\": {\n \"source\": \"builtin\"\n },\n \"requiredPermissions\": [\n \"ALLOW_TO_MOVE_PLAYER_INSIDE_SCENE\",\n \"ALLOW_TO_TRIGGER_AVATAR_EMOTE\"\n ],\n \"group\": \"Seats\"\n}\n","files":{"Chair 1.glb":{"integrity":"sha384-OBKh/Bj43q8Sx1wRponwlbgpevgaWMUiN0giUov/12Oi6zrbOTERiktleBfycvzW","size":34444},"composite.json":{"integrity":"sha384-Bl50OjO++oWtYNycDeONS6QDpxb6NUTuEcNYezYybT6QL2mKs1e+Ar7bZi9C8vQ7","size":1411},"data.json":{"integrity":"sha384-5LcT4SUEiXzUl7Fm686bC0qwplC+5wqCoijTQxWYqrKqiayYS6IBeCF8cfvayJS9","size":700},"scripts/seat.ts":{"integrity":"sha384-qTc33dk7kx9+avQ4JugIv1csCyESSIOVst3FKQhN3pC0OIyeh/yA32h0z8zjdIWc","size":6959},"thumbnail.png":{"integrity":"sha384-85oGX4HxIuc6wLmDYZYFS2Et0rxNcuex0sgvRhWn/hG3xXfMjbhWHOq16rkU629x","size":18385}}},{"name":"wooden-chair-armrests","data":"{\n \"id\": \"ebd62f4c-fa46-489f-bf8e-104aafc10b0f\",\n \"name\": \"Wooden Chair Armrests\",\n \"description\": \"A wooden chair with armrests. Players can sit on it.\",\n \"category\": \"custom\",\n \"tags\": [\n \"seat\",\n \"furniture\",\n \"sit\"\n ],\n \"version\": \"1.1.0\",\n \"changelog\": [\n {\n \"version\": \"1.1.0\",\n \"notes\": \"The seat no longer runs on the Multiplayer Server, where it was walking every sit spot's transform chain each frame for nobody to see.\"\n },\n {\n \"version\": \"1.0.0\",\n \"notes\": \"Initial release\"\n }\n ],\n \"origin\": {\n \"source\": \"builtin\"\n },\n \"requiredPermissions\": [\n \"ALLOW_TO_MOVE_PLAYER_INSIDE_SCENE\",\n \"ALLOW_TO_TRIGGER_AVATAR_EMOTE\"\n ],\n \"group\": \"Seats\"\n}\n","files":{"Chair 3.glb":{"integrity":"sha384-qC94v3lBqcsvDYKbxOFSBG9sXvO2WlwJ4CZlUVUKmTvKvsn94KetxdVRfO/8VJ9Z","size":40316},"composite.json":{"integrity":"sha384-8c+9B2WZVYU90TjDED4IskWU7oRBdYvk29okBEMaheh/V6vRP82wbUlM2syOB48g","size":1426},"data.json":{"integrity":"sha384-olI3fBaKG8LfISwoMdmldQE4DxzqD2THTl9YwQlF85f4L7M+FU/6uPTx1i/vs+C0","size":717},"scripts/seat.ts":{"integrity":"sha384-qTc33dk7kx9+avQ4JugIv1csCyESSIOVst3FKQhN3pC0OIyeh/yA32h0z8zjdIWc","size":6959},"thumbnail.png":{"integrity":"sha384-g1sgPvNl8JeOjulBezQcWzMoT1bkFgk/dNp9BfPv1SEQWa8dABvHvh4IDDnrKnlG","size":16240}}}]
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "id": "44374100-12fb-481f-90ce-2a4d81949084",
3
3
  "name": "Game Flow",
4
- "description": "Lobby, countdown, rounds, winners \u2014 runs your game from start to end. Works with: Leaderboard, Announcer.",
4
+ "description": "Lobby, countdown, rounds, winners — runs your game from start to end. Works with: Leaderboard, Announcer.",
5
5
  "category": "custom",
6
6
  "group": "Multiplayer Server",
7
7
  "tags": [
@@ -14,11 +14,15 @@
14
14
  "winners"
15
15
  ],
16
16
  "requiresSdk": "auth-server",
17
- "version": "1.1.0",
17
+ "version": "1.2.0",
18
18
  "changelog": [
19
+ {
20
+ "version": "1.2.0",
21
+ "notes": "The 2D status panel takes its place in the shared HUD layout, so it no longer overlaps other HUDs on any screen."
22
+ },
19
23
  {
20
24
  "version": "1.0.0",
21
- "notes": "Initial release: lobby \u2192 round \u2192 winners on game.round, a countdown every client derives from one shared deadline, a winners line read from the board key a Leaderboard shows, and a \"script\" mode where your own game.newRound() ends the round and the round length is only a ceiling."
25
+ "notes": "Initial release: lobby → round → winners on game.round, a countdown every client derives from one shared deadline, a winners line read from the board key a Leaderboard shows, and a \"script\" mode where your own game.newRound() ends the round and the round length is only a ceiling."
22
26
  },
23
27
  {
24
28
  "version": "1.1.0",
@@ -106,7 +106,7 @@ export class GameFlow {
106
106
  if (this.display === '2D UI') {
107
107
  VisibilityComponent.createOrReplace(this.entity, { visible: false })
108
108
  TextShape.deleteFrom(this.entity)
109
- mountStatusHud(this.entity, this.position, () => {
109
+ mountStatusHud(this.position, () => {
110
110
  const [label, value = '', detail] = this.text().split('\n')
111
111
  return { label, value, detail }
112
112
  })
@@ -49,13 +49,13 @@ Params of the prefab's script — set them in the placePrefab request:
49
49
  - `source`: `State key` (default) or `Run best times`.
50
50
  - `courseId`: matches Run Progress when source is `Run best times`.
51
51
  - `display`: `3D panel` (default) or `2D UI`. The overlay uses UI Theme.
52
- - `position`: `left` or `right` for the overlay.
52
+ - `position`: `left` or `right` column of the shared HUD layout for the overlay.
53
53
  - `title`: the heading on the panel (default "Leaderboard").
54
54
  - `boardKey`: the `game.state` key to read (default `'leaderboard'`). Game Flow
55
55
  reads the same key for its winners line — point both at one key.
56
56
  - `sort`: `'desc'` (highest wins — points) or `'asc'` (lowest wins — best times,
57
57
  which also renders the score as m:ss).
58
- - `rows`: how many places to list (default 8; max 25 in 3D, 10 on screen).
58
+ - `rows`: how many places to list (default 8; max 25 in 3D, 10 on screen, 5 on phones).
59
59
 
60
60
  For Run best times, Board Key and Sort are hidden: the course supplies the key,
61
61
  scores in seconds and ascending order. The shared key is `run:<courseId>:leaderboard`.