@hytopia.com/examples 1.0.57 → 1.0.59

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.
Files changed (160) hide show
  1. package/frontiers-rpg-game/dev/persistence/player-player-1.json +1 -1
  2. package/frontiers-rpg-game/dev/persistence/player-player-11.json +1 -31
  3. package/frontiers-rpg-game/dev/persistence/player-player-2.json +1 -1
  4. package/frontiers-rpg-game/dev/persistence/player-player-3.json +1 -1
  5. package/frontiers-rpg-game/dev/persistence/player-player-4.json +1 -0
  6. package/frontiers-rpg-game/dev/persistence/player-player-42.json +1 -0
  7. package/frontiers-rpg-game/dev/persistence/player-player-5.json +1 -0
  8. package/frontiers-rpg-game/dev/persistence/player-player-56.json +1 -0
  9. package/frontiers-rpg-game/dev/persistence/player-player-6.json +1 -31
  10. package/frontiers-rpg-game/dev/persistence/player-player-9.json +1 -31
  11. package/frontiers-rpg-game/src/GamePlayer.ts +16 -1
  12. package/package.json +1 -1
  13. package/tutorial-arrows/README.md +3 -0
  14. package/tutorial-arrows/assets/arrows/double-arrow.png +0 -0
  15. package/tutorial-arrows/assets/audio/sfx/step/stone/stone-step-04.mp3 +0 -0
  16. package/tutorial-arrows/assets/blocks/.atlas/atlas.json +4612 -0
  17. package/tutorial-arrows/assets/blocks/.atlas/atlas.ktx2 +0 -0
  18. package/tutorial-arrows/assets/blocks/.atlas/atlas.png +0 -0
  19. package/tutorial-arrows/assets/blocks/bamboo-slats.png +0 -0
  20. package/tutorial-arrows/assets/blocks/bricks.png +0 -0
  21. package/tutorial-arrows/assets/blocks/clay.png +0 -0
  22. package/tutorial-arrows/assets/blocks/coal-ore.png +0 -0
  23. package/tutorial-arrows/assets/blocks/cobblestone-dark.png +0 -0
  24. package/tutorial-arrows/assets/blocks/cobblestone-large-dark.png +0 -0
  25. package/tutorial-arrows/assets/blocks/cobblestone-mossy.png +0 -0
  26. package/tutorial-arrows/assets/blocks/cobblestone.png +0 -0
  27. package/tutorial-arrows/assets/blocks/cracked_sand/+x.png +0 -0
  28. package/tutorial-arrows/assets/blocks/cracked_sand/+y.png +0 -0
  29. package/tutorial-arrows/assets/blocks/cracked_sand/+z.png +0 -0
  30. package/tutorial-arrows/assets/blocks/cracked_sand/-x.png +0 -0
  31. package/tutorial-arrows/assets/blocks/cracked_sand/-y.png +0 -0
  32. package/tutorial-arrows/assets/blocks/cracked_sand/-z.png +0 -0
  33. package/tutorial-arrows/assets/blocks/creep.png +0 -0
  34. package/tutorial-arrows/assets/blocks/diamond-block.png +0 -0
  35. package/tutorial-arrows/assets/blocks/diamond-ore.png +0 -0
  36. package/tutorial-arrows/assets/blocks/dirt.png +0 -0
  37. package/tutorial-arrows/assets/blocks/dragon_block/+x.png +0 -0
  38. package/tutorial-arrows/assets/blocks/dragon_block/+y.png +0 -0
  39. package/tutorial-arrows/assets/blocks/dragon_block/+z.png +0 -0
  40. package/tutorial-arrows/assets/blocks/dragon_block/-x.png +0 -0
  41. package/tutorial-arrows/assets/blocks/dragon_block/-y.png +0 -0
  42. package/tutorial-arrows/assets/blocks/dragon_block/-z.png +0 -0
  43. package/tutorial-arrows/assets/blocks/dragons-stone.png +0 -0
  44. package/tutorial-arrows/assets/blocks/emerald-block.png +0 -0
  45. package/tutorial-arrows/assets/blocks/emerald-ore.png +0 -0
  46. package/tutorial-arrows/assets/blocks/error.png +0 -0
  47. package/tutorial-arrows/assets/blocks/ghost-dirt.png +0 -0
  48. package/tutorial-arrows/assets/blocks/glass-window-divided.png +0 -0
  49. package/tutorial-arrows/assets/blocks/glass-window.png +0 -0
  50. package/tutorial-arrows/assets/blocks/glass.png +0 -0
  51. package/tutorial-arrows/assets/blocks/gold-ore.png +0 -0
  52. package/tutorial-arrows/assets/blocks/grass/+x.png +0 -0
  53. package/tutorial-arrows/assets/blocks/grass/+y.png +0 -0
  54. package/tutorial-arrows/assets/blocks/grass/+z.png +0 -0
  55. package/tutorial-arrows/assets/blocks/grass/-x.png +0 -0
  56. package/tutorial-arrows/assets/blocks/grass/-y.png +0 -0
  57. package/tutorial-arrows/assets/blocks/grass/-z.png +0 -0
  58. package/tutorial-arrows/assets/blocks/gravel.png +0 -0
  59. package/tutorial-arrows/assets/blocks/ice-block.png +0 -0
  60. package/tutorial-arrows/assets/blocks/ice.png +0 -0
  61. package/tutorial-arrows/assets/blocks/infected-shadowrock-core.png +0 -0
  62. package/tutorial-arrows/assets/blocks/infected-shadowrock.png +0 -0
  63. package/tutorial-arrows/assets/blocks/iron-ore.png +0 -0
  64. package/tutorial-arrows/assets/blocks/jungle-block-damaged.png +0 -0
  65. package/tutorial-arrows/assets/blocks/jungle-block-face.png +0 -0
  66. package/tutorial-arrows/assets/blocks/jungle-block-mossy.png +0 -0
  67. package/tutorial-arrows/assets/blocks/jungle-block.png +0 -0
  68. package/tutorial-arrows/assets/blocks/jungle-dirt-roots.png +0 -0
  69. package/tutorial-arrows/assets/blocks/jungle-dirt-trampled.png +0 -0
  70. package/tutorial-arrows/assets/blocks/jungle-dirt.png +0 -0
  71. package/tutorial-arrows/assets/blocks/lava-dirt-cracked.png +0 -0
  72. package/tutorial-arrows/assets/blocks/lava-dirt.png +0 -0
  73. package/tutorial-arrows/assets/blocks/lava-rocky-cracked.png +0 -0
  74. package/tutorial-arrows/assets/blocks/lava-rocky.png +0 -0
  75. package/tutorial-arrows/assets/blocks/lava.png +0 -0
  76. package/tutorial-arrows/assets/blocks/log/+x.png +0 -0
  77. package/tutorial-arrows/assets/blocks/log/+y.png +0 -0
  78. package/tutorial-arrows/assets/blocks/log/+z.png +0 -0
  79. package/tutorial-arrows/assets/blocks/log/-x.png +0 -0
  80. package/tutorial-arrows/assets/blocks/log/-y.png +0 -0
  81. package/tutorial-arrows/assets/blocks/log/-z.png +0 -0
  82. package/tutorial-arrows/assets/blocks/mossy-coblestone.png +0 -0
  83. package/tutorial-arrows/assets/blocks/nuit-leaves.png +0 -0
  84. package/tutorial-arrows/assets/blocks/nuit.png +0 -0
  85. package/tutorial-arrows/assets/blocks/oak-leaves.png +0 -0
  86. package/tutorial-arrows/assets/blocks/oak-planks-dark-knotty.png +0 -0
  87. package/tutorial-arrows/assets/blocks/oak-planks-dark.png +0 -0
  88. package/tutorial-arrows/assets/blocks/oak-planks-leafy.png +0 -0
  89. package/tutorial-arrows/assets/blocks/oak-planks-leafyer.png +0 -0
  90. package/tutorial-arrows/assets/blocks/oak-planks-leafyerer.png +0 -0
  91. package/tutorial-arrows/assets/blocks/oak-planks-vertical.png +0 -0
  92. package/tutorial-arrows/assets/blocks/oak-planks.png +0 -0
  93. package/tutorial-arrows/assets/blocks/oak-slats-dark.png +0 -0
  94. package/tutorial-arrows/assets/blocks/oak-slats.png +0 -0
  95. package/tutorial-arrows/assets/blocks/sand-light.png +0 -0
  96. package/tutorial-arrows/assets/blocks/sand.png +0 -0
  97. package/tutorial-arrows/assets/blocks/sandstone-light-waterlogged.png +0 -0
  98. package/tutorial-arrows/assets/blocks/sandstone-light.png +0 -0
  99. package/tutorial-arrows/assets/blocks/sandstone.png +0 -0
  100. package/tutorial-arrows/assets/blocks/shadow-pebble.png +0 -0
  101. package/tutorial-arrows/assets/blocks/shadowrock.png +0 -0
  102. package/tutorial-arrows/assets/blocks/shale-cliff-bottom/+x.png +0 -0
  103. package/tutorial-arrows/assets/blocks/shale-cliff-bottom/+y.png +0 -0
  104. package/tutorial-arrows/assets/blocks/shale-cliff-bottom/+z.png +0 -0
  105. package/tutorial-arrows/assets/blocks/shale-cliff-bottom/-x.png +0 -0
  106. package/tutorial-arrows/assets/blocks/shale-cliff-bottom/-y.png +0 -0
  107. package/tutorial-arrows/assets/blocks/shale-cliff-bottom/-z.png +0 -0
  108. package/tutorial-arrows/assets/blocks/shale-cliff-top/+x.png +0 -0
  109. package/tutorial-arrows/assets/blocks/shale-cliff-top/+y.png +0 -0
  110. package/tutorial-arrows/assets/blocks/shale-cliff-top/+z.png +0 -0
  111. package/tutorial-arrows/assets/blocks/shale-cliff-top/-x.png +0 -0
  112. package/tutorial-arrows/assets/blocks/shale-cliff-top/-y.png +0 -0
  113. package/tutorial-arrows/assets/blocks/shale-cliff-top/-z.png +0 -0
  114. package/tutorial-arrows/assets/blocks/shale-rock.png +0 -0
  115. package/tutorial-arrows/assets/blocks/snow-icy.png +0 -0
  116. package/tutorial-arrows/assets/blocks/snow-pebbles.png +0 -0
  117. package/tutorial-arrows/assets/blocks/snow-rocks.png +0 -0
  118. package/tutorial-arrows/assets/blocks/snow-rough.png +0 -0
  119. package/tutorial-arrows/assets/blocks/snow.png +0 -0
  120. package/tutorial-arrows/assets/blocks/stone-bricks.png +0 -0
  121. package/tutorial-arrows/assets/blocks/stone.png +0 -0
  122. package/tutorial-arrows/assets/blocks/swirl-rune.png +0 -0
  123. package/tutorial-arrows/assets/blocks/void-sand.png +0 -0
  124. package/tutorial-arrows/assets/blocks/void_grass/+x.png +0 -0
  125. package/tutorial-arrows/assets/blocks/void_grass/+y.png +0 -0
  126. package/tutorial-arrows/assets/blocks/void_grass/+z.png +0 -0
  127. package/tutorial-arrows/assets/blocks/void_grass/-x.png +0 -0
  128. package/tutorial-arrows/assets/blocks/void_grass/-y.png +0 -0
  129. package/tutorial-arrows/assets/blocks/void_grass/-z.png +0 -0
  130. package/tutorial-arrows/assets/blocks/voidsoil.png +0 -0
  131. package/tutorial-arrows/assets/blocks/water-flow.png +0 -0
  132. package/tutorial-arrows/assets/blocks/water-still.png +0 -0
  133. package/tutorial-arrows/assets/map.json +2623 -0
  134. package/tutorial-arrows/assets/models/.optimized/bookshelf/bookshelf-named-nodes.glb +0 -0
  135. package/tutorial-arrows/assets/models/.optimized/bookshelf/bookshelf-no-animations.glb +0 -0
  136. package/tutorial-arrows/assets/models/.optimized/bookshelf/bookshelf.glb +0 -0
  137. package/tutorial-arrows/assets/models/.optimized/bookshelf/bookshelf.gltf.data.json +1 -0
  138. package/tutorial-arrows/assets/models/.optimized/bookshelf/bookshelf.gltf.md5 +1 -0
  139. package/tutorial-arrows/assets/models/.optimized/portal/portal-named-nodes.glb +0 -0
  140. package/tutorial-arrows/assets/models/.optimized/portal/portal-no-animations.glb +0 -0
  141. package/tutorial-arrows/assets/models/.optimized/portal/portal.glb +0 -0
  142. package/tutorial-arrows/assets/models/.optimized/portal/portal.gltf.data.json +1 -0
  143. package/tutorial-arrows/assets/models/.optimized/portal/portal.gltf.md5 +1 -0
  144. package/tutorial-arrows/assets/models/bookshelf.gltf +1 -0
  145. package/tutorial-arrows/assets/models/players/.optimized/player/player-named-nodes.glb +0 -0
  146. package/tutorial-arrows/assets/models/players/.optimized/player/player-no-animations.glb +0 -0
  147. package/tutorial-arrows/assets/models/players/.optimized/player/player.glb +0 -0
  148. package/tutorial-arrows/assets/models/players/.optimized/player/player.gltf.data.json +1 -0
  149. package/tutorial-arrows/assets/models/players/.optimized/player/player.gltf.md5 +1 -0
  150. package/tutorial-arrows/assets/models/players/player.gltf +1 -0
  151. package/tutorial-arrows/assets/models/portal.gltf +1 -0
  152. package/tutorial-arrows/assets/skyboxes/partly-cloudy/+x.png +0 -0
  153. package/tutorial-arrows/assets/skyboxes/partly-cloudy/+y.png +0 -0
  154. package/tutorial-arrows/assets/skyboxes/partly-cloudy/+z.png +0 -0
  155. package/tutorial-arrows/assets/skyboxes/partly-cloudy/-x.png +0 -0
  156. package/tutorial-arrows/assets/skyboxes/partly-cloudy/-y.png +0 -0
  157. package/tutorial-arrows/assets/skyboxes/partly-cloudy/-z.png +0 -0
  158. package/tutorial-arrows/assets/ui/index.html +17 -0
  159. package/tutorial-arrows/index.ts +53 -0
  160. package/tutorial-arrows/package.json +21 -0
@@ -1 +1 @@
1
- {"health":1,"currentRegionId":"stalkhaven","currentRegionSpawnFacingAngle":90,"currentRegionSpawnPoint":{"x":32,"y":2,"z":1},"skillExperience":[["agility",21]],"backpack":{"items":[]},"hotbar":{"items":[{"position":0,"itemId":"toy_sword"}]},"questLog":{"quests":[]},"storage":{"items":[]},"wearables":{"items":[]},"__version":281}
1
+ {"health":58,"currentRegionId":"stalkhaven","currentRegionSpawnFacingAngle":0,"currentRegionSpawnPoint":{"x":1,"y":2,"z":40},"skillExperience":[["agility",29]],"backpack":{"items":[]},"hotbar":{"items":[{"position":0,"itemId":"toy_sword"}]},"questLog":{"quests":[]},"storage":{"items":[]},"wearables":{"items":[]},"__version":471}
@@ -1,31 +1 @@
1
- {
2
- "health": 100,
3
- "currentRegionId": "stalkhaven",
4
- "currentRegionSpawnFacingAngle": 90,
5
- "currentRegionSpawnPoint": {
6
- "x": 32,
7
- "y": 2,
8
- "z": 1
9
- },
10
- "skillExperience": [],
11
- "backpack": {
12
- "items": []
13
- },
14
- "hotbar": {
15
- "items": [
16
- {
17
- "position": 0,
18
- "itemId": "toy_sword"
19
- }
20
- ]
21
- },
22
- "questLog": {
23
- "quests": []
24
- },
25
- "storage": {
26
- "items": []
27
- },
28
- "wearables": {
29
- "items": []
30
- }
31
- }
1
+ {"health":30,"currentRegionId":"stalkhaven","currentRegionSpawnFacingAngle":0,"currentRegionSpawnPoint":{"x":1,"y":2,"z":40},"skillExperience":[],"backpack":{"items":[]},"hotbar":{"items":[{"position":0,"itemId":"toy_sword"}]},"questLog":{"quests":[]},"storage":{"items":[]},"wearables":{"items":[]},"__version":21}
@@ -1 +1 @@
1
- {"health":63,"currentRegionId":"hearthwilds","currentRegionSpawnFacingAngle":90,"currentRegionSpawnPoint":{"x":249,"y":22,"z":-89},"skillExperience":[],"backpack":{"items":[]},"hotbar":{"items":[{"position":0,"itemId":"toy_sword"}]},"questLog":{"quests":[]},"storage":{"items":[]},"wearables":{"items":[]},"__version":61}
1
+ {"health":63,"currentRegionId":"chitter-forest","currentRegionSpawnFacingAngle":120,"currentRegionSpawnPoint":{"x":145,"y":2,"z":-14},"skillExperience":[],"backpack":{"items":[]},"hotbar":{"items":[{"position":0,"itemId":"toy_sword"}]},"questLog":{"quests":[]},"storage":{"items":[]},"wearables":{"items":[]},"__version":71}
@@ -1 +1 @@
1
- {"__version":31,"health":100,"currentRegionId":"hearthwilds","currentRegionSpawnFacingAngle":90,"currentRegionSpawnPoint":{"x":249,"y":22,"z":-89},"skillExperience":[],"backpack":{"items":[]},"hotbar":{"items":[{"position":0,"itemId":"toy_sword"}]},"questLog":{"quests":[]},"storage":{"items":[]},"wearables":{"items":[]}}
1
+ {"__version":61,"health":61,"currentRegionId":"chitter-forest","currentRegionSpawnFacingAngle":120,"currentRegionSpawnPoint":{"x":145,"y":2,"z":-14},"skillExperience":[],"backpack":{"items":[]},"hotbar":{"items":[{"position":0,"itemId":"toy_sword"}]},"questLog":{"quests":[]},"storage":{"items":[]},"wearables":{"items":[]}}
@@ -0,0 +1 @@
1
+ {"__version":31,"health":85,"currentRegionId":"ratkin-nest","currentRegionSpawnFacingAngle":180,"currentRegionSpawnPoint":{"x":-31,"y":23,"z":-67},"skillExperience":[],"backpack":{"items":[]},"hotbar":{"items":[{"position":0,"itemId":"toy_sword"}]},"questLog":{"quests":[]},"storage":{"items":[]},"wearables":{"items":[]}}
@@ -0,0 +1 @@
1
+ {"__version":11,"health":100,"currentRegionId":"stalkhaven","currentRegionSpawnFacingAngle":90,"currentRegionSpawnPoint":{"x":32,"y":2,"z":1},"skillExperience":[],"backpack":{"items":[]},"hotbar":{"items":[{"position":0,"itemId":"toy_sword"}]},"questLog":{"quests":[]},"storage":{"items":[]},"wearables":{"items":[]}}
@@ -0,0 +1 @@
1
+ {"__version":21,"health":100,"currentRegionId":"stalkhaven-port","currentRegionSpawnFacingAngle":180,"currentRegionSpawnPoint":{"x":-6,"y":8,"z":-28},"skillExperience":[],"backpack":{"items":[]},"hotbar":{"items":[{"position":0,"itemId":"toy_sword"}]},"questLog":{"quests":[]},"storage":{"items":[]},"wearables":{"items":[]}}
@@ -0,0 +1 @@
1
+ {"__version":11,"health":100,"currentRegionId":"stalkhaven","currentRegionSpawnFacingAngle":90,"currentRegionSpawnPoint":{"x":32,"y":2,"z":1},"skillExperience":[],"backpack":{"items":[]},"hotbar":{"items":[{"position":0,"itemId":"toy_sword"}]},"questLog":{"quests":[]},"storage":{"items":[]},"wearables":{"items":[]}}
@@ -1,31 +1 @@
1
- {
2
- "health": 52,
3
- "currentRegionId": "hearthwilds",
4
- "currentRegionSpawnFacingAngle": 90,
5
- "currentRegionSpawnPoint": {
6
- "x": 249,
7
- "y": 22,
8
- "z": -89
9
- },
10
- "skillExperience": [],
11
- "backpack": {
12
- "items": []
13
- },
14
- "hotbar": {
15
- "items": [
16
- {
17
- "position": 0,
18
- "itemId": "toy_sword"
19
- }
20
- ]
21
- },
22
- "questLog": {
23
- "quests": []
24
- },
25
- "storage": {
26
- "items": []
27
- },
28
- "wearables": {
29
- "items": []
30
- }
31
- }
1
+ {"health":52,"currentRegionId":"chitter-forest","currentRegionSpawnFacingAngle":120,"currentRegionSpawnPoint":{"x":145,"y":2,"z":-14},"skillExperience":[],"backpack":{"items":[]},"hotbar":{"items":[{"position":0,"itemId":"toy_sword"}]},"questLog":{"quests":[]},"storage":{"items":[]},"wearables":{"items":[]},"__version":11}
@@ -1,31 +1 @@
1
- {
2
- "health": 100,
3
- "currentRegionId": "stalkhaven",
4
- "currentRegionSpawnFacingAngle": 90,
5
- "currentRegionSpawnPoint": {
6
- "x": 32,
7
- "y": 2,
8
- "z": 1
9
- },
10
- "skillExperience": [],
11
- "backpack": {
12
- "items": []
13
- },
14
- "hotbar": {
15
- "items": [
16
- {
17
- "position": 0,
18
- "itemId": "toy_sword"
19
- }
20
- ]
21
- },
22
- "questLog": {
23
- "quests": []
24
- },
25
- "storage": {
26
- "items": []
27
- },
28
- "wearables": {
29
- "items": []
30
- }
31
- }
1
+ {"health":100,"currentRegionId":"stalkhaven-port","currentRegionSpawnFacingAngle":180,"currentRegionSpawnPoint":{"x":-6,"y":8,"z":-28},"skillExperience":[],"backpack":{"items":[]},"hotbar":{"items":[{"position":0,"itemId":"toy_sword"}]},"questLog":{"quests":[]},"storage":{"items":[]},"wearables":{"items":[]},"__version":11}
@@ -329,7 +329,11 @@ export default class GamePlayer {
329
329
  this.setCurrentRegion(region);
330
330
  this.setCurrentRegionSpawnFacingAngle(facingAngle);
331
331
  this.setCurrentRegionSpawnPoint(spawnPoint);
332
- this.save();
332
+ // IMPORTANT:
333
+ // World switching triggers PLAYER.LEFT_WORLD and our GameRegion handler currently drops the in-memory
334
+ // GamePlayer instance. The destination world then reconstructs GamePlayer from persisted data.
335
+ // If we debounce saves here, the persisted spawn point can be stale, causing "random" teleports.
336
+ this.flushSave();
333
337
  this.player.joinWorld(region.world);
334
338
  }
335
339
 
@@ -437,6 +441,17 @@ export default class GamePlayer {
437
441
  }, 500);
438
442
  }
439
443
 
444
+ /**
445
+ * Immediately persists player state, bypassing the debounce used by {@link save}.
446
+ *
447
+ * This is critical before operations that might recreate the player state
448
+ * (e.g. switching worlds/regions) to prevent stale region spawn data.
449
+ */
450
+ public flushSave(): void {
451
+ clearTimeout(this._saveTimeout);
452
+ this.player.setPersistedData(this._serialize());
453
+ }
454
+
440
455
  public showNotification(message: string, notificationType: NotificationType): void {
441
456
  this.player.ui.sendData({
442
457
  type: 'showNotification',
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hytopia.com/examples",
3
- "version": "1.0.57",
3
+ "version": "1.0.59",
4
4
  "description": "",
5
5
  "license": "ISC",
6
6
  "author": "",
@@ -0,0 +1,3 @@
1
+ # tutorial arrows
2
+
3
+ A simple demonstration of using UI helpers to create per-player tutorial arrows.