@dcl-regenesislabs/web-editor 0.3.22 → 0.3.23-41465068147.commit-06ea194
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/editor.js +432 -432
- package/package.json +3 -2
- package/prefabs/catalog.json +1 -1
- package/prefabs/game-flow/ai.md +7 -0
- package/prefabs/game-flow/composite.json +1 -1
- package/prefabs/game-flow/data.json +9 -1
- package/prefabs/game-flow/scripts/game-flow.ts +42 -3
- package/prefabs/game-flow/scripts/pure/flow.ts +68 -12
package/package.json
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dcl-regenesislabs/web-editor",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.23-41465068147.commit-06ea194",
|
|
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
|
-
}
|
|
10
|
+
},
|
|
11
|
+
"commit": "06ea194f756e86411489447890ab72928e831ea6"
|
|
11
12
|
}
|
package/prefabs/catalog.json
CHANGED
|
@@ -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.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}}}]
|
|
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.3.1\",\n \"changelog\": [\n {\n \"version\": \"1.3.1\",\n \"notes\": \"The 2D panel no longer rebuilds its labels every frame; it does so only when you change one.\"\n },\n {\n \"version\": \"1.3.0\",\n \"notes\": \"Every word on the panel and in the winners line is a param you can write in your game's language, with English defaults. Before the first round players see the game's title and \\\"Waiting for players\\\" instead of a note about the server.\"\n },\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-sYDj/U6NBf25ADmD7gJOKBWs1YtwwKVX9NYDLlFFllXZoWh54b2Mj4hicgCciKmy","size":5198},"composite.json":{"integrity":"sha384-2ekU6EITviXDtsX/f/FZ1lO3k+vNb45NKwrGheSL66tuX9Yb5ihufNGRSF0X3U9+","size":913},"data.json":{"integrity":"sha384-g6QrSK4miGNWyCl+dNAgjLFqSPft4bd5iUMgKzSqeBLJaadF3BBz0Nw1h2PsKqao","size":1585},"scripts/game-flow.ts":{"integrity":"sha384-9ziokGOhiCq68UYHSyYJsDhG45DEWYm87k0wpEIw4x2s1FTYc0S41O5M0+9DIfnX","size":8227},"scripts/pure/flow.ts":{"integrity":"sha384-vTJqL02DDbe8ZsTnd2Gj2pSDiV0SMzRX587zVjvKrcJ+Etbo/+rBNlTkP3Cuwgq4","size":9417},"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}}}]
|
package/prefabs/game-flow/ai.md
CHANGED
|
@@ -58,6 +58,13 @@ Params of the prefab's script — set them in the placePrefab request:
|
|
|
58
58
|
- `display`: `3D text` or `2D UI`. The screen timer uses UI Theme and includes
|
|
59
59
|
the lobby countdown, current round and intermission. No custom HUD is needed.
|
|
60
60
|
- `position`: top, top left, top right or bottom, for the screen timer.
|
|
61
|
+
- Words players read, English by default — set them in the game's language:
|
|
62
|
+
`gameTitle` (shown while players gather; empty shows `lobbyLabel`),
|
|
63
|
+
`lobbyLabel` (`LOBBY`), `waitingLabel` (`Waiting for players`), `playersLabel`
|
|
64
|
+
(`{present}/{needed}`, after the waiting label), `startingLabel` (`Starting`),
|
|
65
|
+
`roundLabel` (`ROUND {round}`), `roundOverLabel` (`ROUND {round} OVER`),
|
|
66
|
+
`winnersLabel` (`Round over — {winners}`), `noWinnersLabel`. Keep the
|
|
67
|
+
`{…}` placeholders; an empty label falls back to English.
|
|
61
68
|
|
|
62
69
|
For an individual obstacle-course timer use Run Progress. Game Flow owns shared
|
|
63
70
|
rounds and restarts everyone on a new round; do not add it merely to show a stopwatch.
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
"data": {
|
|
17
17
|
"0": {
|
|
18
18
|
"json": {
|
|
19
|
-
"text": "
|
|
19
|
+
"text": "LOBBY\n--:--\nWaiting for players",
|
|
20
20
|
"fontSize": 3,
|
|
21
21
|
"textColor": { "r": 1, "g": 1, "b": 1, "a": 1 },
|
|
22
22
|
"outlineColor": { "r": 0, "g": 0, "b": 0 },
|
|
@@ -14,8 +14,16 @@
|
|
|
14
14
|
"winners"
|
|
15
15
|
],
|
|
16
16
|
"requiresSdk": "auth-server",
|
|
17
|
-
"version": "1.
|
|
17
|
+
"version": "1.3.1",
|
|
18
18
|
"changelog": [
|
|
19
|
+
{
|
|
20
|
+
"version": "1.3.1",
|
|
21
|
+
"notes": "The 2D panel no longer rebuilds its labels every frame; it does so only when you change one."
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
"version": "1.3.0",
|
|
25
|
+
"notes": "Every word on the panel and in the winners line is a param you can write in your game's language, with English defaults. Before the first round players see the game's title and \"Waiting for players\" instead of a note about the server."
|
|
26
|
+
},
|
|
19
27
|
{
|
|
20
28
|
"version": "1.2.0",
|
|
21
29
|
"notes": "The 2D status panel takes its place in the shared HUD layout, so it no longer overlaps other HUDs on any screen."
|