feat(pocket-base): split hostile and passive mob spawning
Release / release (push) Successful in 2m50s
CI / build (push) Successful in 1m13s

This commit is contained in:
dmg
2026-08-24 10:41:44 -04:00
parent 6ea5bc16f4
commit b2ba4d5821
12 changed files with 246 additions and 117 deletions
+3 -2
View File
@@ -95,8 +95,9 @@ description: Chronological record of material decisions affecting the Spigot Bas
## 2026-08-24 — Pocket Base mob-spawning control
- Disabled natural hostile and passive mob spawning by default in new and existing Pocket Bases without a saved preference.
- Added the persisted owner setting `/basesettings pocket mobs enable|disable`, contextual autocomplete, and status reporting.
- Reapplied saved spawn flags when Pocket Base worlds load and restored the prior world setting when persistence fails.
- Added independent persisted owner settings through `/basesettings pocket mobs <hostile|passive> <enable|disable>`, contextual autocomplete, and status reporting.
- Migrated each legacy combined mob-spawning preference to both categories to preserve existing behavior.
- Reapplied both saved spawn flags when Pocket Base worlds load and restored both prior world settings when persistence fails.
- Verified the feature with `./gradlew clean check jar`.
## 2026-08-24 — Relocatable Pocket Base return portals
@@ -1,25 +1,27 @@
---
type: User Story
title: "US-018: Control Pocket Base mob spawning"
description: Let Pocket Base owners control natural mob spawning in their private world, with spawning disabled by default.
description: Let Pocket Base owners control hostile and passive natural mob spawning independently in their private world, with both disabled by default.
status: done
---
# US-018: Control Pocket Base mob spawning
As a **Pocket Base owner**, I want to enable or disable natural mob spawning in my Pocket Base so that I can choose whether the private world supports normal mob activity.
As a **Pocket Base owner**, I want to enable or disable hostile and passive natural mob spawning independently in my Pocket Base so that I can choose which kinds of normal mob activity its private world supports.
## Acceptance criteria
- [x] Natural mob spawning is disabled by default in every new Pocket Base and in existing Pocket Bases that have no saved preference.
- [x] A Pocket Base owner can use `/basesettings pocket mobs enable|disable` to control natural mob spawning in their own Pocket Base.
- [x] The setting controls both hostile and passive natural spawning only in the owner's Pocket Base.
- [x] The command is unavailable until Pocket Base I is unlocked.
- [x] The command and its modes are offered through contextual autocomplete.
- [x] `/basesettings status` displays the current Pocket Base mob-spawning setting.
- [x] The preference persists across restarts and is reapplied when the Pocket Base world loads.
- [x] Disabling natural spawning does not remove existing mobs or prevent explicitly spawned or summoned mobs.
- [x] Persistence or world-application failures produce a clear failure message without reporting a successful change.
- [x] Hostile and passive natural mob spawning are both disabled by default in every new Pocket Base and in existing Pocket Bases that have no saved preference.
- [x] A Pocket Base owner can use `/basesettings pocket mobs hostile enable|disable` to control hostile natural mob spawning in their own Pocket Base.
- [x] A Pocket Base owner can use `/basesettings pocket mobs passive enable|disable` to control passive natural mob spawning in their own Pocket Base.
- [x] Changing one mob category does not change the other category.
- [x] The commands are unavailable until Pocket Base I is unlocked.
- [x] The commands, categories, and modes are offered through contextual autocomplete.
- [x] `/basesettings status` displays the current hostile and passive Pocket Base mob-spawning settings.
- [x] Both preferences persist across restarts and are reapplied when the Pocket Base world loads.
- [x] Existing saved `mob-spawning-enabled` values migrate to both category preferences, preserving prior behavior.
- [x] Disabling either natural-spawning category does not remove existing mobs or prevent explicitly spawned or summoned mobs.
- [x] Persistence or world-application failures produce a clear failure message, restore both prior world flags, and do not report a successful change.
## Related