Commit Graph

14 Commits

Author SHA1 Message Date
9a2389e050 fix(infra): cap Bedrock containers at 1.5G so a hung world can't OOM neighbours
All checks were successful
Deploy Addons / deploy (push) Successful in 45s
Host (Docker2, 8 GB RAM) has been seeing one Bedrock balloon and trigger
the kernel OOM-killer, which picks the next-largest RSS process and kills
that — i.e. one runaway world takes a healthy world down with it. dmesg
captured this happening to mc-lobby (cgroup 8f5bb1bc...) right after Jamie
threw a Watchdog 'Hang' from the Vehicles Pro pack.

mem_limit: 1500m / memswap_limit: 2500m on each of lobby/jamie/lyla/mya
keeps the blast radius inside the offending container — it OOMs itself
(recoverable via restart: unless-stopped) instead of nuking a sibling.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-26 00:03:14 +01:00
3e08a59972 feat: A-frame tent + portal walk-through field + texture polish
All checks were successful
Deploy Addons / deploy (push) Successful in 14s
- camping: replace cube tent with A-frame slope panels (tent_panel_l/r) +
  cardinal_direction permutations; vote-skip sleep that mixes
  player.isSleeping bed sleepers with tent occupants and respects the
  playersSleepingPercentage gamerule; new weathered-canvas texture.
- lobby: walk-through silverlabs:portal_field block (no collision,
  translucent swirl, cross-plane geo) auto-placed above each portal frame;
  invisible silverlabs:portal_label entity floats above each portal with
  the destination world name; transfer detection now scans down through
  the field to find the destination frame.
- postal: regenerate post_office and mailbox block textures so they fill
  the full block face (brick + POST plaque, full red panel with slot/latch
  /flag/rivets) instead of small sprites floating on transparent.
- dynamite + tow-boat: ship the addons (volumes wired into all four
  worlds; enabled_packs registers them into Mya's world).
- art: build-textures.py extended; build-art-catalog.py added to project.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-25 23:17:31 +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
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
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
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
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
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
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
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