Packaged Core 1.0.16: Tide + Alex's Mobs Devil's Hole Pupfish

Alex's Mobs Pupfish now drops exactly one tide:devils_hole_pupfish on death.
The loot table is conditionally loaded only when both mods are present.

Tide FishData.shouldKeep(FishingContext) is gated for the Tide Pupfish item
using AMWorldData.get(serverLevel).isInPupfishChunk(context.blockPos()).
The bobber must be within the saved 16x16 Devil's Hole chunk in the Overworld.
Outside the chunk, the fish is excluded before Tide's weighted selection.
The normal Overworld/water conditions and legendary rarity are preserved.
Tide's former Y=20-30 condition is removed so water throughout the actual
chunk is eligible. Other fish are unaffected. If the chunk is not selected
yet, the check rejects catches until Alex's Mobs selects it normally.
If restrictPupfishSpawns is disabled and AM never chooses a chunk, fishing
remains unavailable: no fallback broadens catches beyond the requested chunk.
Use Alex's Mobs' Strange Fish Finder to locate the real Devil's Hole chunk.

This feature is bundled into Packaged Core. No additional datapack or
companion mod is required. Keep the separate Shroomfin/Angler Fish datapack
if desired; that datapack contains no Pupfish override and does not conflict.

Validation: compiled for Java 21; inspected actual AM and Tide target
signatures; 20 stub-based behavior tests including negative chunk edges,
other dimensions, missing chunk, other fish, and absent Alex's Mobs.
ZIP/JSON/TOML validated; all pre-existing classes and unrelated resources
preserved byte-for-byte. Not tested in a running Minecraft instance.
