@dcl-regenesislabs/web-editor 0.3.22-41448555429.commit-da528c6 → 0.3.22

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,12 +1,11 @@
1
1
  {
2
2
  "name": "@dcl-regenesislabs/web-editor",
3
- "version": "0.3.22-41448555429.commit-da528c6",
3
+ "version": "0.3.22",
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": {
7
7
  "type": "git",
8
8
  "url": "git+https://github.com/dcl-regenesislabs/web-editor.git",
9
9
  "directory": "packages/web"
10
- },
11
- "commit": "da528c696a15950d33eef1ffa9461dbddfc28099"
10
+ }
12
11
  }
@@ -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.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":"camera-rig","data":"{\n \"id\": \"7ea892f3-168f-40fb-8338-d9c91c23708e\",\n \"name\": \"Camera Rig\",\n \"description\": \"A fixed game camera — top-down, isometric or following the player — that takes over while a player is inside its area and frames the whole area on any screen, phones included.\",\n \"category\": \"custom\",\n \"tags\": [\n \"camera\",\n \"top-down\",\n \"isometric\",\n \"view\"\n ],\n \"version\": \"1.0.1\",\n \"changelog\": [\n {\n \"version\": \"1.0.0\",\n \"notes\": \"Initial release: a top-down, isometric or follow camera that takes over while a player is inside its area (or all the time), fits the whole area on desktop and phone screens, and hands the default camera back on the way out.\"\n },\n {\n \"version\": \"1.0.1\",\n \"notes\": \"The AI guide names genres in its examples, not a specific game.\"\n }\n ],\n \"origin\": {\n \"source\": \"builtin\"\n }\n}\n","files":{"ai.md":{"integrity":"sha384-k09gDrZwz29ZhjBRnMhGaffnJVIbhIfsYWYYGNpuKLRyPOdbfzmGhOfeA/iLLmVX","size":3863},"composite.json":{"integrity":"sha384-ou9CI0Q1Mt9ikRHU0UUDqqrC1Y3E4dv/vSlrYzb2d9SZbesrFlrit1ulk0D/gJDT","size":915},"data.json":{"integrity":"sha384-ij6tcNkfBQXRqQU9uzjowdg1VnOpLDEC2uI9NrA4kQE6RaQw4lI1kW4OeuJD8TJW","size":861},"scripts/camera-rig.ts":{"integrity":"sha384-S/ZnswWj9Wh/IMJ6RL84LmU6H6B0JLLRB6mRB2ucG3unU2jAMBVHklNp0z4vZ7iA","size":7767},"thumbnail.png":{"integrity":"sha384-jkkA8fFCJKFnzNRruLLm6Snhpa/+0i224sx+HrpzEd6JGw1+fzITRRXnFyn0lSO3","size":16703}}},{"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":"pickup-item","data":"{\n \"id\": \"3dd512ef-86ba-4ca2-8974-dc7629ded037\",\n \"name\": \"Pickup Item\",\n \"description\": \"Something players pick up with E (or the phone's action button), carry in the right hand, drop and throw. The Multiplayer Server decides who holds it, and the player sees it in hand at once. Works with: Work Station.\",\n \"category\": \"custom\",\n \"tags\": [\n \"pickup\",\n \"carry\",\n \"hold\",\n \"item\",\n \"ingredient\",\n \"throw\",\n \"multiplayer\"\n ],\n \"requiresSdk\": \"auth-server\",\n \"version\": \"1.0.0\",\n \"changelog\": [\n {\n \"version\": \"1.0.0\",\n \"notes\": \"Initial release: one holder at a time decided by the Multiplayer Server, held in the right hand and shown at once, a floating prompt with the device's own control, drop, optional throw, endless supply crates, and a script API to read, give and take what players carry.\"\n }\n ],\n \"origin\": {\n \"source\": \"builtin\"\n }\n}\n","files":{"ai.md":{"integrity":"sha384-CzKBYLtOWD8mljnxlNig5FXr+fvWXIfxtSOHA5xWGcht/zTTS+cAO8upLSnaRqvn","size":3877},"composite.json":{"integrity":"sha384-2FkUxWGQrVSUBrsJ+VIOsWI6UM2xaB5Zwx24VZSuu9Eygn+gZHtHZs0+3Efb7hca","size":1118},"data.json":{"integrity":"sha384-SCVQG/tntqzcNSWqAx+xKsX+yM1Mq8i3uQlk7aus9g7PuLtjbOgcvmzoqfUzFTZh","size":897},"scripts/pickup-item.ts":{"integrity":"sha384-McRdI62+bnf+FbGoUaQUj8GkQq9ZQaqsMGexK30YHX9hkZbnwCd85jzgv49awInR","size":1712},"thumbnail.png":{"integrity":"sha384-2NzW1gGzZb7s0Dazwb5HwmzYU+SvssGabNn1GyXPh5tKslvz58F+6LRUfhmferWV","size":6826}}},{"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}}},{"name":"work-station","data":"{\n \"id\": \"500b804b-8d35-420a-b323-243df2e0eaa9\",\n \"name\": \"Work Station\",\n \"description\": \"A spot where a carried item is put down and taken back, and optionally worked on: hold F (or the phone's second button) to chop or wash it, or let it cook by itself, with a progress bar over it. Works with: Pickup Item.\",\n \"category\": \"custom\",\n \"tags\": [\n \"station\",\n \"counter\",\n \"craft\",\n \"cook\",\n \"chop\",\n \"progress\",\n \"multiplayer\"\n ],\n \"requiresSdk\": \"auth-server\",\n \"version\": \"1.0.1\",\n \"changelog\": [\n {\n \"version\": \"1.0.0\",\n \"notes\": \"Initial release: put down and take back one carried item, hold-to-work and timed modes that turn one kind into another with a progress bar, combining two kinds, and station events a script reacts to by the station's Name.\"\n },\n {\n \"version\": \"1.0.1\",\n \"notes\": \"The AI guide names genres in its examples, not a specific game.\"\n }\n ],\n \"origin\": {\n \"source\": \"builtin\"\n }\n}\n","files":{"ai.md":{"integrity":"sha384-hC9b78IOReSOQ9kuOPS3eF68+tLwPIB+qiHDOeH+J48P+KP7aDfPz5NQuDaLGgGs","size":3977},"composite.json":{"integrity":"sha384-o11OXBbs8puE3EBpzZP8RH2je6ApNF5Y8cbiVBvEosI/iFR/wME+hFImnGHPaHBa","size":1360},"data.json":{"integrity":"sha384-3PSuKyY1spU7JRXtxpYdAsoXu1Ba6VgJHxvCOT/dVeqZiqslFX1FkQemOEDwafsh","size":975},"scripts/work-station.ts":{"integrity":"sha384-xM18mqGzqGNv7xJ93IlP+B2/vSiQZjSrT+g2liniGgB0NY5cVHSaATVRdJqVt9S5","size":1798},"thumbnail.png":{"integrity":"sha384-WdzqTBASLJKRMCT5llVoVkuIrSoQL3cyutkNphHorfgVsTVoH9lY9rqlIJubWfkJ","size":6483}}}]
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":"camera-rig","data":"{\n \"id\": \"7ea892f3-168f-40fb-8338-d9c91c23708e\",\n \"name\": \"Camera Rig\",\n \"description\": \"A fixed game camera — top-down, isometric or following the player — that takes over while a player is inside its area and frames the whole area on any screen, phones included.\",\n \"category\": \"custom\",\n \"tags\": [\n \"camera\",\n \"top-down\",\n \"isometric\",\n \"view\"\n ],\n \"version\": \"1.0.1\",\n \"changelog\": [\n {\n \"version\": \"1.0.0\",\n \"notes\": \"Initial release: a top-down, isometric or follow camera that takes over while a player is inside its area (or all the time), fits the whole area on desktop and phone screens, and hands the default camera back on the way out.\"\n },\n {\n \"version\": \"1.0.1\",\n \"notes\": \"The AI guide names genres in its examples, not a specific game.\"\n }\n ],\n \"origin\": {\n \"source\": \"builtin\"\n }\n}\n","files":{"ai.md":{"integrity":"sha384-k09gDrZwz29ZhjBRnMhGaffnJVIbhIfsYWYYGNpuKLRyPOdbfzmGhOfeA/iLLmVX","size":3863},"composite.json":{"integrity":"sha384-ou9CI0Q1Mt9ikRHU0UUDqqrC1Y3E4dv/vSlrYzb2d9SZbesrFlrit1ulk0D/gJDT","size":915},"data.json":{"integrity":"sha384-ij6tcNkfBQXRqQU9uzjowdg1VnOpLDEC2uI9NrA4kQE6RaQw4lI1kW4OeuJD8TJW","size":861},"scripts/camera-rig.ts":{"integrity":"sha384-S/ZnswWj9Wh/IMJ6RL84LmU6H6B0JLLRB6mRB2ucG3unU2jAMBVHklNp0z4vZ7iA","size":7767},"thumbnail.png":{"integrity":"sha384-jkkA8fFCJKFnzNRruLLm6Snhpa/+0i224sx+HrpzEd6JGw1+fzITRRXnFyn0lSO3","size":16703}}},{"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.7.0\",\n \"changelog\": [\n {\n \"version\": \"1.7.0\",\n \"notes\": \"On phones the on-screen board is a compact card of the top 3 with text no smaller than 20, so it fits the right column above the touch buttons and stays readable.\"\n },\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-g5bRKGhgeRdcaz44ffz4C5nTPI127T24hRDZa+1sVUchCGziBwsRcB1XGl44L0kZ","size":4552},"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-e13pTkVw/0cF2wdhG1Yv31y7MGWb7OS36lzFO1SShx3NxQAifknM6o6Xc8JRKTyz","size":2228},"scripts/leaderboard-hud.tsx":{"integrity":"sha384-TheC1KFii0SJ+7LD6240wv4cVZuO6ntfGxUWu3fqcbGkX5qQ4ekY7vP3osHKObzW","size":2028},"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":"pickup-item","data":"{\n \"id\": \"3dd512ef-86ba-4ca2-8974-dc7629ded037\",\n \"name\": \"Pickup Item\",\n \"description\": \"Something players pick up with E (or the phone's action button), carry in the right hand, drop and throw. The Multiplayer Server decides who holds it, and the player sees it in hand at once. Works with: Work Station.\",\n \"category\": \"custom\",\n \"tags\": [\n \"pickup\",\n \"carry\",\n \"hold\",\n \"item\",\n \"ingredient\",\n \"throw\",\n \"multiplayer\"\n ],\n \"requiresSdk\": \"auth-server\",\n \"version\": \"1.0.1\",\n \"changelog\": [\n {\n \"version\": \"1.0.1\",\n \"notes\": \"The assistant's guide says how the phone buttons the item declares combine with the ones a game's own scripts declare.\"\n },\n {\n \"version\": \"1.0.0\",\n \"notes\": \"Initial release: one holder at a time decided by the Multiplayer Server, held in the right hand and shown at once, a floating prompt with the device's own control, drop, optional throw, endless supply crates, and a script API to read, give and take what players carry.\"\n }\n ],\n \"origin\": {\n \"source\": \"builtin\"\n }\n}\n","files":{"ai.md":{"integrity":"sha384-cVzl98jxwdprWUSWLcXqnYf4nt0YHMMlxNa4nb+bbmZTxj3WFJp5Oa+7zgiexkXB","size":4199},"composite.json":{"integrity":"sha384-2FkUxWGQrVSUBrsJ+VIOsWI6UM2xaB5Zwx24VZSuu9Eygn+gZHtHZs0+3Efb7hca","size":1118},"data.json":{"integrity":"sha384-uTEUFSwjlu+wDxDrGRKidk1gVJTe01yKKZ2R7S61GZ3VwwRQNikMhqAw1g4QTW8S","size":1072},"scripts/pickup-item.ts":{"integrity":"sha384-McRdI62+bnf+FbGoUaQUj8GkQq9ZQaqsMGexK30YHX9hkZbnwCd85jzgv49awInR","size":1712},"thumbnail.png":{"integrity":"sha384-2NzW1gGzZb7s0Dazwb5HwmzYU+SvssGabNn1GyXPh5tKslvz58F+6LRUfhmferWV","size":6826}}},{"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.1\",\n \"changelog\": [\n {\n \"version\": \"1.4.1\",\n \"notes\": \"The assistant's guide sets up a moving platform the way the assistant can attach it: a script of its own that extends the bundled one.\"\n },\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-onaZbx5m5O71k3tSmsdDGtYqM/B2vQ4Ko790z7VZHBHsF5Ro6Wopwa4Ky3r98KVA","size":5789},"composite.json":{"integrity":"sha384-VLC5nKAXOEJSV0e4pJv9kCp49u4nb6+OKeQImT7dYeDYMq3D21bDbiE79oyA4t0q","size":342},"data.json":{"integrity":"sha384-GUJsKPmQjQdjW+nahs+DCfTPjKp7B9SLLFFpxFDbKnumVGhq9+M4JZmxNZ4eK3sT","size":1942},"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 \"enemy\"\n ],\n \"version\": \"1.0.1\",\n \"changelog\": [\n {\n \"version\": \"1.0.1\",\n \"notes\": \"The assistant's guide says copies are for one player only, so something players share or carry is never a Spawner copy, and a search for \\\"pickup\\\" no longer lists it.\"\n },\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-/9wWk6eWl2Vmfuk8KFj8URsrHXJtV8dk1Ya4Fmq+uI9sULqFCvo+mwyrZ9BXSw6X","size":5629},"composite.json":{"integrity":"sha384-11bTytc5FvYc2S+noZUzFBRPTTCZ+JK3gMOGtS1vg57/Aqv0jIG+H6StFjCHbr+o","size":1383},"data.json":{"integrity":"sha384-XKwO3JaNdVERkCoatY/K+Z/pHo8vj//wJYWHFrDClJPJA+FublDREJeDPKGoT7iR","size":957},"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.2.0\",\n \"changelog\": [\n {\n \"version\": \"1.2.0\",\n \"notes\": \"The guide points custom UI at the shared size set (uiSizes), the compact HUD pieces and the ready-made windows, so a HUD stays small and a shop or dialog is comfortable to tap on a phone.\"\n },\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-vPXHY7SELivaRhgZXXEyuWz4VwnUbxQ+u9Z3PM+HNx1nBiKh3hknb0IBt/adYyMl","size":2448},"composite.json":{"integrity":"sha384-GLLTfiifHN/3BNFuV3tozHl5PqIr2Sw/1lsM/jQQ8BcUY8FIt6gPCUgxcloJaxsW","size":551},"data.json":{"integrity":"sha384-nvJO6AYg4ZVdev9HCNtFJX9sKAcl33zUOn/anurhpMSGe9aTnlc08sGFasV39Pha","size":1010},"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}}},{"name":"work-station","data":"{\n \"id\": \"500b804b-8d35-420a-b323-243df2e0eaa9\",\n \"name\": \"Work Station\",\n \"description\": \"A spot where a carried item is put down and taken back, and optionally worked on: hold F (or the phone's second button) to chop or wash it, or let it cook by itself, with a progress bar over it. Works with: Pickup Item.\",\n \"category\": \"custom\",\n \"tags\": [\n \"station\",\n \"counter\",\n \"craft\",\n \"cook\",\n \"chop\",\n \"progress\",\n \"multiplayer\"\n ],\n \"requiresSdk\": \"auth-server\",\n \"version\": \"1.0.1\",\n \"changelog\": [\n {\n \"version\": \"1.0.0\",\n \"notes\": \"Initial release: put down and take back one carried item, hold-to-work and timed modes that turn one kind into another with a progress bar, combining two kinds, and station events a script reacts to by the station's Name.\"\n },\n {\n \"version\": \"1.0.1\",\n \"notes\": \"The AI guide names genres in its examples, not a specific game.\"\n }\n ],\n \"origin\": {\n \"source\": \"builtin\"\n }\n}\n","files":{"ai.md":{"integrity":"sha384-hC9b78IOReSOQ9kuOPS3eF68+tLwPIB+qiHDOeH+J48P+KP7aDfPz5NQuDaLGgGs","size":3977},"composite.json":{"integrity":"sha384-o11OXBbs8puE3EBpzZP8RH2je6ApNF5Y8cbiVBvEosI/iFR/wME+hFImnGHPaHBa","size":1360},"data.json":{"integrity":"sha384-3PSuKyY1spU7JRXtxpYdAsoXu1Ba6VgJHxvCOT/dVeqZiqslFX1FkQemOEDwafsh","size":975},"scripts/work-station.ts":{"integrity":"sha384-xM18mqGzqGNv7xJ93IlP+B2/vSiQZjSrT+g2liniGgB0NY5cVHSaATVRdJqVt9S5","size":1798},"thumbnail.png":{"integrity":"sha384-WdzqTBASLJKRMCT5llVoVkuIrSoQL3cyutkNphHorfgVsTVoH9lY9rqlIJubWfkJ","size":6483}}}]
@@ -55,7 +55,7 @@ Params of the prefab's script — set them in the placePrefab request:
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, 5 on phones).
58
+ - `rows`: how many places to list (default 8; max 25 in 3D, 10 on screen, 3 on phones, where the HUD stays compact).
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`.
@@ -13,8 +13,12 @@
13
13
  "board"
14
14
  ],
15
15
  "requiresSdk": "auth-server",
16
- "version": "1.6.0",
16
+ "version": "1.7.0",
17
17
  "changelog": [
18
+ {
19
+ "version": "1.7.0",
20
+ "notes": "On phones the on-screen board is a compact card of the top 3 with text no smaller than 20, so it fits the right column above the touch buttons and stays readable."
21
+ },
18
22
  {
19
23
  "version": "1.6.0",
20
24
  "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."
@@ -1,28 +1,31 @@
1
1
  import ReactEcs, { UiEntity } from '@dcl/sdk/react-ecs'
2
2
  import { isMobile } from '@dcl/sdk/platform'
3
3
  import { sceneUiTheme } from '~runtime/uiTheme'
4
- import { UiPanel, UiText } from '~runtime/uiComponents'
4
+ import { UiPanel, UiText, uiSizes } from '~runtime/uiComponents'
5
5
  import { addHudItem, HUD_COLUMN_WIDTH } from '~runtime/hudLayout'
6
6
  import { formatScore, rowLabel, type BoardRow, type BoardSort } from './pure/board'
7
7
 
8
- const ROW = 36
9
-
10
8
  export function mountLeaderboardHud(position: 'left' | 'right', read: () => {
11
9
  title: string; rows: BoardRow[]; sort: BoardSort; empty: string
12
10
  }): () => void {
13
11
  return addHudItem(position === 'left' ? 'left' : 'right', () => {
14
12
  const theme = sceneUiTheme()
15
13
  const board = read()
16
- // a phone's screen is a third shorter
17
- const rows = board.rows.slice(0, isMobile() ? 5 : 10)
18
- return <UiPanel theme={theme} uiTransform={{ width: HUD_COLUMN_WIDTH, height: 100 + Math.max(1, rows.length) * ROW, padding: 20 }}>
19
- <UiText value={board.title} color={theme.text} size={24} height={36} />
20
- <UiText value={board.sort === 'asc' ? 'FASTEST TIMES' : 'HIGH SCORES'} color={theme.muted} size={16} height={24} />
21
- {rows.length === 0 && <UiText value={board.empty} color={theme.muted} size={16} height={ROW} />}
22
- {rows.map((row) => <UiEntity key={row.player} uiTransform={{ width: '100%', height: ROW, pointerFilter: 'none' }}>
23
- <UiText value={String(row.rank).padStart(2, '0')} color={theme.accentText} size={16} mono uiTransform={{ width: 36 }} height={ROW} />
24
- <UiText value={rowLabel(row)} color={theme.text} size={18} uiTransform={{ width: 176 }} height={ROW} />
25
- <UiText value={formatScore(row.score, board.sort)} color={theme.text} size={18} mono align="middle-right" uiTransform={{ width: 88 }} height={ROW} />
14
+ const phone = isMobile()
15
+ const size = uiSizes('hud', { dense: phone })
16
+ const text = phone ? size.small : 18
17
+ const row = phone ? 30 : 36
18
+ const pad = phone ? 10 : 20
19
+ const heading = phone ? 32 : 60
20
+ const rows = board.rows.slice(0, phone ? 3 : 10)
21
+ return <UiPanel theme={theme} uiTransform={{ width: HUD_COLUMN_WIDTH, height: 2 * pad + heading + Math.max(1, rows.length) * row, padding: pad }}>
22
+ <UiText value={board.title} color={theme.text} size={size.title} height={phone ? 32 : 36} />
23
+ {!phone && <UiText value={board.sort === 'asc' ? 'FASTEST TIMES' : 'HIGH SCORES'} color={theme.muted} size={size.small} height={24} />}
24
+ {rows.length === 0 && <UiText value={board.empty} color={theme.muted} size={text} height={row} />}
25
+ {rows.map((entry) => <UiEntity key={entry.player} uiTransform={{ width: '100%', height: row, pointerFilter: 'none' }}>
26
+ <UiText value={String(entry.rank).padStart(2, '0')} color={theme.accentText} size={text} mono uiTransform={{ width: 36 }} height={row} />
27
+ <UiText value={rowLabel(entry)} color={theme.text} size={text} uiTransform={{ width: 176 }} height={row} />
28
+ <UiText value={formatScore(entry.score, board.sort)} color={theme.text} size={text} mono align="middle-right" uiTransform={{ width: 88 }} height={row} />
26
29
  </UiEntity>)}
27
30
  </UiPanel>
28
31
  }, { order: 20 })
@@ -46,8 +46,15 @@ the item id. Every round start empties all hands and sends items home.
46
46
  Controls: E / the phone's main button picks up; with nothing near it drops.
47
47
  One floating label sits over the nearest usable thing ("[E] Pick up Tomato" on
48
48
  desktop, "Pick up Tomato" on a phone). The player sees the pick at once; if the
49
- server refuses (someone was faster) it rolls back with a short notice. The
50
- prefab declares its touch buttons (E, jump, and F when throwable).
49
+ server refuses (someone was faster) it rolls back with a short notice.
50
+
51
+ Phone buttons: each copy declares its own from its client start(), E with the
52
+ pick-up icon and jump, plus F with the throw icon when `throwable` ("look only"
53
+ declares none). Once anything is declared, the phone hides every button nobody
54
+ declared: declare each other button your scripts read with declareTouchButtons
55
+ (declarations add up). mobile_check's `touch.used` counts only actions named in
56
+ your own scripts; `touch.visible` is what the phone shows, and an open modal
57
+ hides every button.
51
58
 
52
59
  No carry pose: the item rides in the right hand. No looping carry emote ships
53
60
  with the editor, and the pinned SDK cannot stop a looping emote.
@@ -63,8 +70,6 @@ takeItem…). Never restate it from memory.
63
70
  - DO call `giveItem` / `takeItem` only inside `if (isServer())`.
64
71
  - DON'T move, hide or delete the Pickup Item entity yourself; the module hides
65
72
  it and draws a copy in the hand.
66
- - DON'T use Spawner copies as pickups: they are client-local and nameless. Use
67
- `supply` "endless".
68
73
 
69
74
  ## Example
70
75