Dwurdy Sharks 1.3.0 for Minecraft 1.21.1
Curse Maven Snippet
What's new
Dwurdy Sharks 1.3.0 — Minecraft 1.21.1
Dwurdy Sharks 1.3.0 is a community maintenance release for the NeoForge 1.21.1 target.
⚠️ Breaking change: mod ID renamed to dwurdysharks
The mod ID changed from benssharks to dwurdysharks in this release. Every
registry namespace — entities, items, blocks, effects, sounds, recipes, loot
tables, and tags — moved from benssharks:* to dwurdysharks:*.
What this means for existing worlds:
- Worlds saved by Ben's Sharks or Dwurdy Sharks ≤1.2.8 contain
benssharks:*identifiers that this build does not resolve. Loading such a world under 1.3.0 will leave those modded entities, items, and blocks missing. - Make a world backup before upgrading. There is no automatic data migration in this release.
- Never load both the old and new jars together.
- To keep an existing world fully intact, stay on Dwurdy Sharks 1.2.8, which
still uses the
benssharksID.
Internal SavedData keys (benssharks_mapvars/benssharks_worldvars) are
unchanged so stored mod variables still load.
Added
- New opt-in gamerule
aggressiveSharks(categorymobs, defaultfalse, matching upstream Ben's Sharks 1.3.0). When enabled, large predatory sharks (great white, bull, tiger, mako, bonnethead, blacktip reef, lemon, cookiecutter, megalodon, blue, greenland, oceanic whitetip, barracuda and nurse) gain a low-priorityNearestAttackableTargetGoalagainst players, checked everycanUse/canContinueToUseviaAggressiveSharksProcedureProcedure. Filter feeders (whale shark, basking shark, krill) and bottom feeders stay passive. Tamed nurse sharks never target their owner. Documented indocs/GAMERULES.md. - Simplified Chinese translation
zh_cn.json(upstream issue #17): all 157 keys, including the fork-only Barracuda/Greenland/Whitetip/Megalodon-tooth items and the new effect descriptions. - In-game descriptions for the nine custom mob effects (upstream issue #9):
effect.dwurdysharks.<id>.descriptionlang keys surface on the effects inventory screen viaGatherEffectScreenTooltipsEventand on potion items viaItemTooltipEvent, scoped to thedwurdysharksnamespace. Effects that are intentionally hidden from GUIs (Detached, Prey, Fertilized, Dryout) stay hidden — the keys exist for consistency but never render. - GameTest coverage in
net.mcreator.sharks.gametest.BenssharksGameTests(run viagradlew runGameTestServer).
Fixed
- Tamed sharks no longer path onto land while following their owner
(upstream issue #13).
FollowIfTamedProcedurenow only callsWaterBoundPathNavigation.moveTowhen the owner's block or the block below contains water; the existing dryout/beached handling is unchanged. - Entity-tick procedures are scoped to their entity types (upstream issue
#14). All 27 non-empty
EntityTickEvent.Presubscribers now return early on aninstanceof/entity-type check before touching coordinates or running logic; the three empty no-op subscribers (BREACHProcedure,ChaseTargetProcedure,MovementRotationProcedure) were left as-is. - Shark renderers moved from
RenderType.entityTranslucenttoRenderType.entityCutoutNoCull(upstream issue #4). All 24 entity textures use binary alpha, so the cutout pass is pixel-identical while avoiding the translucent render pass that shader packs such as Iris "makeup-ultrafast" cull incorrectly above water.
Audited, not applicable
- Upstream issue #10 ("Tried to add entity benssharks:shoal but it was marked
as removed already"): this fork has no
ShoalEntity/sardine shoal mechanic — it was added upstream in 1.3.0, which this fork does not include. AlladdFreshEntitycall sites here spawn fresh instances; no removed entity is re-added. Seedocs/UPSTREAM-ISSUE-10.md.
Verification
gradlew.bat clean buildpasses on Java 21 with NeoForge 21.1.248 (pre-existing deprecation warnings only).gradlew.bat runGameTestServer: all 5 required tests passed —sharkIgnoresPlayerWhenRuleOff,sharkTargetsPlayerWhenRuleOn,filterFeederIgnoresPlayerWhenRuleOn,tamedSharkDoesNotTargetOwner,tamedSharkDoesNotPathToOwnerOnLand(differential: no path while the owner is on land, path created once the owner enters water).- Real packaged NeoForge 21.1.248 dedicated server (shipped jar + GeckoLib
4.7.3, not the dev classpath): boot reached
Done, mod listed as Dwurdy Sharks under thedwurdysharksID. - RCON on the live server verified the gamerule defaults to
falseand toggles live:Gamerule aggressiveSharks is currently set to: false→Gamerule aggressiveSharks is now set to: true. - Server-side
FakePlayerverification (NeoForge 21.1 rejects vanilla clients, so a throwaway harness mod provided realServerPlayerinstances): with the rule off, bull sharks heldtarget=nullbeside a player; with the rule on they acquired and held the player as a target; a whale shark stayed passive; a tamed nurse shark remained in the pool with its owner standing on dry land and never stranded. - Performance A/B on the same world with ~300 persisted foreign mobs
(
/tick query): master/1.2.7 averaged 7.3 ms/tick (P50 7.0, P95 9.9); this build averaged 5.3 ms/tick (P50 5.2, P95 6.5) — ~27% lower measured tick time in that test setup. pwsh -NoProfile -File tools/verify-persistence.ps1passes.zh_cn.jsonkey parity checked programmatically: 157/157 keys vsen_us.json, valid UTF-8 JSON, no extra keys.- Visual confirmation of the shader render-path change and the translated strings requires an interactive client session and is not covered by the automated checks above.
This release is for Minecraft 1.21.1 + NeoForge only. Other Minecraft versions and loaders require separate ports and verification.
All Relations
- All Relations
- Embedded Library
- Optional Dependency
- Required Dependency
- Tool
- Incompatible
- Include

