Commit Graph

46 Commits

Author SHA1 Message Date
f126eeb955 feat(postal): multi-mailbox per player with labels, redirect flow, icon refresh
All checks were successful
Deploy Addons / deploy (push) Successful in 14s
Players can now place up to 5 mailboxes, each labelled like a lodestone
waypoint. Sending mail picks recipient then mailbox; redirect collapses
one of your own mailboxes into another and removes the source.

- v1 -> v2 schema migration runs once on boot; existing claims default to
  label "Mailbox".
- Two-step send picker (skipped when recipient has only one mailbox).
- Post office root menu adds Redirect option.
- Per-entry break handling so removing one mailbox keeps the others claimed.
- minecraft:icon component + 16x16 inventory icons for both blocks.
- Refreshed pack_icon.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-25 02:12:36 +01:00
60603ab74c fix(camping): scan-down now uses air/liquid check + hammock camera pull
All checks were successful
Deploy Addons / deploy (push) Successful in 15s
The tent's scan-down-for-ground loop still used b.isSolid (undefined
in BDS), so it always fell through the break conditions and
decremented feetY by 3 blocks before checking ground. That's why
clicking grass reported "dirt" and stone reported "dirt/stone from
underneath the surface". Replaced both solid checks with
!isAir && !isLiquid like the main ground check.

Also added a cinematic third-person camera when climbing into the
hammock (ease 0.8s out_sine), cleared on exit. Gives the player a
"lying back, can see myself" view while resting.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-24 16:32:26 +01:00
ad5c365c2c fix(camping): use air/liquid check for tent ground + legacy geo format
All checks were successful
Deploy Addons / deploy (push) Successful in 15s
Two live-testing regressions:

- block.isSolid is not a reliable member of the @minecraft/server Block
  API in BDS 1.26 — it returned undefined, so !b.isSolid was always
  true and every ground cell failed. Replaced with !b.isAir &&
  !b.isLiquid (same predicate the clear-space check below already
  uses), which correctly accepts grass/dirt/stone and only rejects air
  or water/lava.

- The half-slab hammock geometry was silently rejected and rendered
  invisible. The block-model parser wants the legacy 1.12.0 format
  with simple "uv": [0, 0], not 1.21.0 with per-face UV objects.
  Rewritten hammock_slab.geo.json to match the working
  addon/spark_pet_RP/models/blocks/dragon_basket.geo.json format.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-24 15:19:39 +01:00
7e3432d868 fix(camping): half-slab hammock geometry + smarter tent grounding
All checks were successful
Deploy Addons / deploy (push) Successful in 15s
- Hammock now uses a custom geometry.silverlabs.hammock_slab (8-voxel
  tall half-slab instead of a full cube), matching its thin collision
  box so the block reads visually as a hammock cradle, not a brick.

- Tent placement now projects the player's feet down to the nearest
  solid block (up to 3 blocks) before picking the base Y, so mid-jump
  fractional positions or standing-on-slab cases don't mis-place the
  footprint one block too high.

- Failure messages now include the exact failing cell coordinates and
  the block type that's in the way, so we can diagnose live pitch
  attempts without guesswork.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-24 15:08:34 +01:00
5c1af25468 fix(camping): tent clearance + real hammock lie-in behavior
All checks were successful
Deploy Addons / deploy (push) Successful in 15s
Three fixes for feedback from live testing:

1) Tent pitch check required 3 blocks of air above the footprint but
   the tent is only 2 blocks tall. Relaxed clearance to match the
   actual structure height (h <= 1).

2) Hammock block had a 4px-tall collision box which pushed the player
   on TOP of the cloth. Reduced collision to 1px so the player stands
   inside the hammock cell. Selection box stays at 4px for easy click.

3) Climbing in now actually locks the player: applies slowness 255,
   weakness, mining_fatigue for the duration, saves the anchor point
   in a dynamic property, and the upkeep loop re-teleports them if
   they drift off. Sneak-exit nudges them ~1.2 blocks forward of the
   cradle so they don't immediately re-enter.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-24 14:51:50 +01:00
82250164ca fix(camping): use plain-string minecraft:icon and redraw item icons
All checks were successful
Deploy Addons / deploy (push) Successful in 14s
The nested {"texture": "..."} form for minecraft:icon is rejected by the
1.21.0 item schema (BDS warned: "this member was found in the input,
but is not present in the Schema"), so tent and hammock had no inventory
icons at all. Switched to the plain-string form used by every other
addon in the repo.

While here, replaced the placeholder PNGs (a flat green triangle and a
red squiggle) with proper 16x16 pixel art:
  - tent: A-frame canvas silhouette with doorway slit and ground line
  - hammock: side-view sling with rope ends rising off-screen and a
    sagging red-and-white striped fabric

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-24 02:06:18 +01:00
3a010091e5 fix(camping): reshape hammock recipe to fit 3x3 crafting grid
All checks were successful
Deploy Addons / deploy (push) Successful in 15s
Original 5x2 pattern (T   T / TWWWT) exceeded the vanilla crafting grid
and BDS rejected it with "Adding a recipe larger than 3x3". Replaced
with a 3x3 layout: strings on the four corners as suspension points,
wool row across the middle as the cloth.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-24 01:36:18 +01:00
14dd6d5ce7 ci(deploy): include camping-supplies-addon in workflow sync
The camping-supplies addon was added to docker-compose.yml as a bind
mount but never added to the workflow's path filter or PATHS checkout
list, so the directory on the server stayed empty and the pack was
invisible to all four worlds.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-24 01:11:53 +01:00
25870ef082 fix(lobby_transfer): pass connectionOptions object to transferPlayer
All checks were successful
Deploy Addons / deploy (push) Successful in 14s
The @minecraft/server-admin beta transferPlayer API takes
(player, { hostname, port }) — passing host/port positionally raised
"incorrect arguments, expected 2 received 3" at runtime. Matches the
working call site in hub_return_transfer_BP.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-24 00:33:31 +01:00
c35b97afef fix(lobby_transfer): restore transferPlayer beta API (Player.transfer does not exist in BDS 1.26)
All checks were successful
Deploy Addons / deploy (push) Successful in 15s
Commit 81f84b5 misdiagnosed the mc-lobby crash loop and stripped the
@minecraft/server-admin@1.0.0-beta dependency, swapping in
player.transfer({hostname,port}). At runtime that throws
"player.transfer is not a function" the first time anyone steps on a
portal — the stable @minecraft/server API never exposed transfer() on
Player in BDS 1.26.14.

The real root cause of the original crash loop was unrelated: the
mc-lobby Docker volume had lost its vanilla behavior-pack collection
(vanilla_*, chemistry*, editor, server_library, …). Copying those back
from a healthy sibling volume fixed the boot crash; nothing in the
lobby_transfer pack needed to change. Restoring the beta transferPlayer
here brings lobby back in line with hub-return-addon, which has always
used this pattern successfully on jamie/lyla/mya.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-24 00:00:53 +01:00
81f84b56a0 fix(lobby_transfer): replace removed @minecraft/server-admin transferPlayer with stable Player.transfer
All checks were successful
Deploy Addons / deploy (push) Successful in 15s
Bedrock 1.26 rejects the @minecraft/server-admin 1.0.0-beta dependency at
pack load, which was crashing mc-lobby on boot (exit 1 right after pack
stack + block-version logging). The transferPlayer helper has been part of
the stable @minecraft/server API as Player.transfer since 1.21, so we can
drop the server-admin import and dependency entirely.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-23 23:36:16 +01:00
db8f37a24d fix(addons): populate recipe unlock with crafting_table ingredient
All checks were successful
Deploy Addons / deploy (push) Successful in 14s
Bedrock 1.26 rejects { context } variants as "malformed unlocking context"
and [] as "empty unlocking ingredient array". The unlock field must contain
at least one ingredient item; players who have that item unlock the recipe.

Using minecraft:crafting_table as the unlock ingredient makes semantic sense
(all 26 recipes already require the crafting_table tag) and effectively means
"visible once the player has any crafting table".

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-23 23:28:17 +01:00
e6148a2949 fix(addons): correct recipe unlock shape and block format_version
All checks were successful
Deploy Addons / deploy (push) Successful in 13s
Follow-up to 4324882. The { "context": "always_unlocked" } form triggered
"malformed unlocking context" on 1.26-series Bedrock (AlwaysUnlocked pascal
form fared no better). Empty-array form is the universally accepted "recipe
always known" shape. This unblocks mc-lobby which was crashing on boot.

Also reverts block format_version on mailbox.json + smart_crafting_table.json
to 1.21.0 — every other working block in the repo uses that, so the prior
1.21.60 choice was unnecessary.

- 19 dragon + portal recipes (spark_pet_BP, lobby_transfer_BP): unlock -> []
- 7 other recipes touching unlock { context: ... }: same
- 2 block files: format_version 1.21.60 -> 1.21.0

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-23 23:22:41 +01:00
43248820fa fix(addons): bring silverlabs packs into schema compliance
All checks were successful
Deploy Addons / deploy (push) Successful in 14s
- recipes: add unlock { context: always_unlocked } to all spark_pet and lobby_transfer recipes (1.20+ requirement) — fixes mc-lobby crash loop
- spark_dragon entity_sensor: wrap in subsensors[] and convert sensor_range → range [a,b] per 1.21 schema
- anthrax_cat interact: wrap event/filters in on_interact to match Bedrock 1.21 interact schema
- block format_version: bump mailbox and smart_crafting_table to 1.21.60
- item icons: replace { texture: X } with shorthand string form
- heyhe_egg description: replace bare category with menu_category block

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-23 23:18:24 +01:00
8b83e324f0 feat(camping): add craftable tent and hammock addon
All checks were successful
Deploy Addons / deploy (push) Successful in 13s
Tent pitches over a 2x3 flat footprint and lets players skip to dawn
without touching their spawn point. Hammock strings between two posts
3-6 blocks apart (straight or diagonal, +/-1 block height) and keeps
hostile mobs at bay while occupied. Both are craftable (wool/sticks and
wool/string) and mounted in all four worlds.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-23 23:10:21 +01:00
579dfec633 feat(hub-return): add lodestone waypoints with compass menu and HUD guidance
All checks were successful
Deploy Addons / deploy (push) Successful in 40s
Right-clicking the recovery compass now opens an ActionForm menu with
"Return to Hub" plus any lodestone waypoints the player has placed in
the current dimension. Placing a lodestone prompts for a label and
saves it under the waypoints_v1 world dynamic property (max 10 per
player). Selected waypoints drive an on-screen actionbar HUD with
distance and an 8-direction arrow, clearing on arrival within 3 blocks.
Lodestone breaks are ownership-gated and drop the block back.

Bumps pack to 1.0.5 and declares the @minecraft/server-ui dependency
required by the new ActionForm/Modal/MessageForm flows.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-23 20:39:47 +01:00
SysAdmin
c1cd32eeb5 fix(compose): remove server.properties-aliased env vars so UI edits persist
All checks were successful
Deploy Addons / deploy (push) Successful in 16s
The itzg/minecraft-bedrock-server entrypoint rewrites server.properties
from env vars on every start. Any property edited via mc-manager's UI was
being clobbered because those env vars were set here. Remove them so
/data/server.properties (on the named volume) is the real source of truth:

  - SERVER_NAME, GAMEMODE, DIFFICULTY, ALLOW_CHEATS, ONLINE_MODE,
    MAX_PLAYERS, DEFAULT_PLAYER_PERMISSION_LEVEL
  - LEVEL_SEED (jamie) — world already generated
  - LEVEL_NAME — moved to docker-compose.override.yml, managed by
    mc-manager so UI Set Active survives future deploys

Kept: EULA, SERVER_PORT (deploy-time wiring), OP_PERMISSION_LEVEL
(not a server.properties key).

Override file is gitignored so mc-manager's writes don't leak into git.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-23 11:45:17 +01:00
d6bafb9d16 feat(smart-crafting): add smart crafting table using private chest inventory
All checks were successful
Deploy Addons / deploy (push) Successful in 14s
Adds an upgraded crafting block that scans the player's owned private chests
and aggregates their contents with the personal inventory when deciding which
recipes are craftable. Ingredients are consumed from the player first then
from chests; the result goes to the player (or drops at their feet).

Also redraws the post_office and mailbox block textures via a new
scripts/build-textures.py generator.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-21 11:16:19 +01:00
f7aa71e9eb feat(postal): add postal service addon and bundle pending addon work
All checks were successful
Deploy Addons / deploy (push) Successful in 16s
- New postal-service-addon: per-player mailboxes + post-office send block
  (ActionForm recipient picker, offline notification queue, chunk-load
  retry via tickingarea)
- Commit previously untracked private-chest, home-sign, keep-inventory
  addons and their docker-compose mounts
- Deploy workflow: add postal + previously unwired addons to path filter
  and checkout list; drop easter-egg from deployment
- enabled_packs.json: register postal UUIDs for Lyla + Mya

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-20 20:07:39 +01:00
cc18066c17 fix(lobby,easter-egg): update portal coordinates and egg-check ring
Lobby portal zones and signs moved to the rebuilt portal area at
~(436..488, 65..74, -322..-281), including a second Lyla's-World
"Super Kitties" portal. Signs now use per-portal facing_direction
so they face the hub walkway correctly.

Easter-egg placeAllEggs validation now samples the far-ring eggs
(indices 45-49) before falling back to the near ring — avoids false
"blocks missing" reports when only close-ring eggs have been picked up.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-20 14:19:33 +01:00
c176263ec5 feat(monkey): add cheeky banana-throwing monkey addon
New silverlabs:cheeky_monkey mob that wanders the lobby watching players
and throwing harmless (knockback-only) silverlabs:banana_projectile at
them. Drops 1-2 silverlabs:banana (food) on death. Spawn rules target
jungle biomes for future deployment to survival worlds; for now the pack
is bind-mounted into the lobby service only.

Also bundles a stray docker-compose tidy from earlier local work
(Jamie's world seed pinned, pet addons dropped from Jamie).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-20 14:19:18 +01:00
64e12603de fix(village-evolution): bind-mount enabled_packs.json for persistent pack activation
All checks were successful
Deploy Addons / deploy (push) Successful in 44s
BDS reads pack activation from LevelDB, not world_behavior_packs.json.
The enabled_packs.json in config/default/ is the correct mechanism to
activate new packs in existing worlds. Bind-mounted so it survives
container recreates via CI/CD.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-07 02:34:47 +01:00
d283de4e6d feat(village-evolution): add village growth addon for survival worlds
All checks were successful
Deploy Addons / deploy (push) Successful in 14s
Villages now evolve organically as villager populations grow. The addon
scans every 5 minutes, clusters villagers by proximity, and places new
buildings (well, lamp post, houses, farm, blacksmith) adjacent to
existing villages as population thresholds are reached. State is
persisted across restarts via world dynamic properties.

Deploys to jamie, lyla, mya survival worlds only.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-07 02:26:12 +01:00
23f2e6c3bd feat(anthrax-cat): add craftable item, recipe, and inventory entry
All checks were successful
Deploy Addons / deploy (push) Successful in 14s
- Custom item silverlabs:anthrax_cat with entity_placer — place cat by right-clicking ground
- Shaped recipe: 4 gold ingots + 1 red dye (cross pattern) at crafting table
- Recipe unlocks when player has a gold ingot
- Item appears in creative inventory under Items > Misc
- Item icon: 16x16 Maneki-neko pixel art
- Set is_spawnable: false on entity (use crafted item instead of spawn egg)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-06 21:05:38 +01:00
d552525281 feat(anthrax-cat): add Maneki-neko lucky cat decoration addon, remove easter egg
All checks were successful
Deploy Addons / deploy (push) Successful in 46s
- New silverlabs:anthrax_cat entity: sitting cat with waving paw animation,
  idle body bob, look-at-player, fortune message + bell sound on interact
- Custom 64x64 texture (cream/white, red bib, gold coin, orange tabby patches)
- Custom geometry: body, head, ears, raised left arm, tail, bib, coin bones
- Removed easter egg addon mounts from all 4 servers (lobby + 3 child worlds)
- Anthrax Cat mounted on all 4 servers

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-06 20:24:26 +01:00
367f46ad8b fix(heyhe): bump RP version to 1.0.1 to force client cache refresh
Some checks failed
Deploy Addons / deploy (push) Failing after 7s
Bedrock clients cache resource packs by version — unchanged version means
the client never re-downloads the updated textures/model.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-05 09:50:19 +01:00
86950012e9 fix(heyhe): correct egg spawn, fix taming, skinny model, wonky eyes, persistent
All checks were successful
Deploy Addons / deploy (push) Successful in 14s
- heyhe_egg: rebuild spawn mechanism with component groups (spawn_entity/die
  can't live in event sequences — follow dragon_egg pattern exactly)
- heyhe_chicken: move interact to base components so taming always works
  regardless of spawn method; add persistent to stop vanishing
- Geometry: skinny tall body, thin neck, proper UV coordinates throughout
- Texture: fill whole atlas white first (no dark gaps), matched UV regions,
  wonky asymmetric eyes (one big+high, one small+low)
- Animation: neck peck 3x per cycle at 22deg, body sway on walk, wing flutter

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-05 09:37:25 +01:00
56ed7d76ee fix(pet): add recipe unlock for heyhe_egg (Bedrock 1.20+ requirement)
All checks were successful
Deploy Addons / deploy (push) Successful in 15s
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-05 09:15:57 +01:00
1bdac0e157 feat(pet): add Hey Hey chicken pet addon
All checks were successful
Deploy Addons / deploy (push) Successful in 15s
Tameable white chicken modelled on Hey Hey from Moana — custom plump
geometry, waddly walk/peck animations, hatching egg item, and vanilla
chicken sounds. Mounted on all 4 servers via docker-compose.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-05 09:14:39 +01:00
616395de88 revert(easter-egg): single-block eggs — 2-block block-state syntax broke placement
All checks were successful
Deploy Addons / deploy (push) Successful in 14s
Block state syntax ["facing_direction":N] in setblock silently failed, so no
egg blocks were placed and nothing could be collected. Revert to plain single
block setblock with no states.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-05 03:02:13 +01:00
5befc216d3 fix(easter-egg): remove false tag rebuild that inflated scores; console reset
All checks were successful
Deploy Addons / deploy (push) Successful in 14s
rebuildTagsAndBasket was wrongly treating any missing egg block as "collected"
— but blocks were missing because setblock silently failed on unloaded chunks,
not because the player found them. This caused StinkyRoger's score to jump to
21+ when only 3 eggs had been found.

Fix: remove rebuildTagsAndBasket entirely. The block-existence check inside
collectEgg() already prevents re-collection of a gone block. Tags remain as
a per-session fast-path only; the basket is the cross-server truth.

Also allow /scriptevent eggs:cmd reseteggsworld to work without a player
source so MCP/console can trigger a world egg reset remotely.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-05 02:54:23 +01:00
e5568fe1f3 fix(easter-egg): persistent cross-server counts via inventory basket; 2-block tall eggs
All checks were successful
Deploy Addons / deploy (push) Successful in 15s
Player tags are server-local and wiped on transfer, breaking lobby scores.
Switch to an Egg Basket (nether_star, custom nameTag "[j:N,l:N,m:N]") that
travels with the player's inventory so the lobby can always read accurate counts.

Child worlds rebuild lost tags from block-state on each player join (missing
egg block = previously collected), keeping within-world deduplication intact.
Basket is updated on every collection and after every tag rebuild.

Lobby reads basket counts directly instead of tags.

Also make eggs visually egg-shaped: 2 glazed-terracotta blocks tall with
opposing facing_direction (2 bottom, 3 top) to create an oval silhouette.
collectEgg() now clears both Y and Y+1; detection dy extended to 3.0.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-05 02:46:26 +01:00
793c1f5f3d fix(easter-eggs): place eggs around player location, validate before skipping
All checks were successful
Deploy Addons / deploy (push) Successful in 15s
- Use joining player's position as egg centre instead of world default
  spawn, so eggs appear where players actually play
- Store centre in dynamic property so all players find the same eggs
- Validate that egg blocks actually exist before trusting eggs_placed flag,
  auto-recovering if setblock commands silently failed (e.g. unloaded chunks)
- Trigger placement on first playerSpawn not server startup timeout

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-05 02:29:10 +01:00
b91aec3bf7 fix(ci): use docker compose up --force-recreate so new volume mounts apply
docker restart does not re-read docker-compose.yml, so new bind mounts
added to the compose file are ignored until containers are recreated.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-05 02:10:01 +01:00
90a0b96634 feat(easter-eggs): add easter egg hunt addon across all worlds
All checks were successful
Deploy Addons / deploy (push) Successful in 17s
50 eggs hidden per child world (Jamie/Lyla/Mya) in 8 creative hiding
scenes (barrels, hay bales, flower patches, logs, fences, crafting
tables, mossy ledges, leaf clusters). Each world uses a distinct glazed
terracotta colour. Found eggs are tracked via player tags which persist
across server transfers; lobby reads tags and maintains a scoreboard
leaderboard (egg_count objective). Gitea deploy workflow updated to
include easter-egg-addon/ and docker-compose.yml in checkout.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-05 02:00:11 +01:00
5c4f8b9da5 feat(spark_pet): tame with personality foods; fix remaining "fish" IDs
All checks were successful
Deploy Addons / deploy (push) Successful in 16s
Wild dragons now show interaction prompts for each personality food —
the food used to tame sets the starting trait immediately:
- Raw Chicken → Relaxed trait
- Raw Beef → Explorer trait
- Cooked Salmon → Affectionate trait
- Melon Slice → Playful trait
- Bamboo → Independent trait

Cod/salmon via minecraft:tameable (33% chance) still works as a fallback,
resulting in the Relaxed trait. After taming, sneak+food still switches
traits as before.

Also fix remaining stale "fish" item IDs (pre-1.13) in:
- behavior.tempt (wild and tamed groups)
- minecraft:ageable feed_items
- minecraft:healable items
- minecraft:interact mood_boost entry

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-25 04:12:17 +00:00
2697fa1d9f fix(spark_pet): egg auto-hatch, repeated spawning, taming, despawn, and nest selection
All checks were successful
Deploy Addons / deploy (push) Successful in 16s
- Remove auto-advance timers from egg cold (180s) and warming (120s) stages
  so eggs only progress via player interaction (bonemeal → blaze powder)
- Remove fire/lava damage sensors from cold and warming stages to prevent
  fire-tick re-triggering advance_to_hatching on every tick (caused dragon spam)
- Shorten egg hatching despawn timer from 60-90s to 3s so egg disappears
  promptly after dragon spawns
- Fix taming: change tame_items "fish" → "cod" (pre-1.13 ID was broken;
  only salmon worked before)
- Change egg colour recipes from egg+nest_item to egg+dye (simpler UX):
  white_dye=white, brown_dye=brown, lime_dye=green, red_dye=red,
  cyan_dye=teal, black_dye=black
- Increase nest block selection_box height from 5px to 14px to match
  visible basket geometry so right-click entity_placer works on nest blocks

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-25 03:56:42 +00:00
4bd9efc081 feat(spark_pet): major overhaul — traits, animations, riding, fire, coloured hatching
All checks were successful
Deploy Addons / deploy (push) Successful in 24s
- Movement: slower follow (speed 0.3, stop_dist 5), near-zero teleport chance
- Scales: baby 0.65, juvenile 0.9, adult 1.3 (up from 0.4/0.7/1.0)
- Personality traits (0–4): set by feeding specific foods while sneaking;
  affects stroll range, follow distance, look-at-player frequency
- Passtime animations driven by pure Molang lifecycle math (no timer components):
  groom, sniff, stretch, happy_bounce cycling ~every 3 min per dragon
- Rideable adults: minecraft:rideable + input_ground_controlled, seat at [0,0.9,-0.3]
- Fire breathing: autonomous vs monsters (radius 16) + player-triggered (sneak + fire_charge)
- New hatching system: 6 nest block variants (oak/spruce/jungle/crimson/warped/obsidian),
  craft nest + dragon_egg → coloured egg item; place egg, bonemeal + blaze powder → hatch;
  dragon colour matches nest type via 6 separate egg entity types + born_color events
- 18 new PNG textures: 6 dragon colours, 6 nest blocks, 6 egg items (HSV hue rotation)
- Render controller updated to use texture array indexed by silverlabs:dragon_color property

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-25 02:12:44 +00:00
c32dbf42c4 feat(addons): update portal blocks, recipes, and transfer scripts
All checks were successful
Deploy Addons / deploy (push) Successful in 17s
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-21 11:31:40 +00:00
4bc7eb05b6 chore(ci): add Gitea Actions deploy workflow for addon auto-deploy
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-21 00:05:57 +00:00
d9eafd2c12 feat(portals): add craftable portal blocks replacing hardcoded coordinates
Portal frame crafted from obsidian + ender pearl, combined with crystals
(emerald/amethyst/prismarine) to create world-specific portal blocks.
Stepping on a portal block triggers transfer. Includes resource pack with
vanilla textures, block definitions, crafting recipes, and updated script.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-19 14:23:23 +00:00
5eefd26f67 feat(portals): add portal signs, transfer notifications, and welcome titles
Lobby portals now have oak wall signs showing whose world each portal leads to
(Jamie/Lyla/Mya with color-coded text). Players see a title notification when
entering a portal. Child worlds show a welcome title with the world name on
arrival, read from variables.json via @minecraft/server-admin.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-19 02:46:03 +00:00
c12a468958 fix(transfer): use transferPlayer() beta API and enable experiments in level.dat
Switch from runCommand("transfer ...") to the @minecraft/server-admin
transferPlayer() function for reliable server-to-server transfers.
Enable Beta APIs experiment (gametest flag) in all 4 world level.dat files.
Add spawn protection to prevent transfer loops on arrival.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-19 02:34:29 +00:00
2b0a0c4997 fix(transfer): remove quotes around player name in transfer command
The /transfer command doesn't accept quoted player names. Removing the
embedded double quotes fixes portal transfers in both lobby and hub-return
addons.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-18 22:23:20 +00:00
389e053dc5 feat: add multi-world hub system with lobby portals and hub-return addon
Lobby addon detects players in portal zones at X: -15/0/15 and transfers
them to Jamie/Lyla/Mya survival worlds. Hub-return addon gives players a
recovery compass and chat commands (!hub, !lobby) to return to the lobby.

Includes docker-compose.yml for 4 Bedrock servers (lobby + 3 child worlds),
spark pet behavior/resource packs, and updated .gitignore.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-18 22:02:56 +00:00
4c68cb60bc feat: initialize minecraft-aiworld Claude Code workspace
Configure mc-ai-bridge MCP server at 10.0.0.247:3002 for AI-driven
Minecraft Bedrock interaction with all 6 tools documented.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-16 17:04:54 +00:00