promotional bannermobile promotional banner

Dwurdy Sharks

All the sharks. Maintained.** A credited community fork of Ben's Sharks for NeoForge 1.21.1, with 26 registered marine entity types and the wild-shark despawn fix.
Back to Files

Dwurdy Sharks 1.3.0 for Minecraft 1.21.1

File namedwurdysharks-1.3.0.jar
Uploader
dwurdydwurdy
Uploaded
Sep 19, 2026
Downloads
67
Size
2.3 MB
Mod Loaders
NeoForge
File ID
8925770
Type
R
Release
Supported game versions
  • 1.21.1

Curse Maven Snippet

NeoForge

implementation "curse.maven:dwurdy-sharks-1693295:8925770"

Learn more about Curse Maven

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 benssharks ID.

Internal SavedData keys (benssharks_mapvars/benssharks_worldvars) are unchanged so stored mod variables still load.

Added

  • New opt-in gamerule aggressiveSharks (category mobs, default false, 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-priority NearestAttackableTargetGoal against players, checked every canUse/canContinueToUse via AggressiveSharksProcedureProcedure. Filter feeders (whale shark, basking shark, krill) and bottom feeders stay passive. Tamed nurse sharks never target their owner. Documented in docs/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>.description lang keys surface on the effects inventory screen via GatherEffectScreenTooltipsEvent and on potion items via ItemTooltipEvent, scoped to the dwurdysharks namespace. 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 via gradlew runGameTestServer).

Fixed

  • Tamed sharks no longer path onto land while following their owner (upstream issue #13). FollowIfTamedProcedure now only calls WaterBoundPathNavigation.moveTo when 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.Pre subscribers now return early on an instanceof/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.entityTranslucent to RenderType.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. All addFreshEntity call sites here spawn fresh instances; no removed entity is re-added. See docs/UPSTREAM-ISSUE-10.md.

Verification

  • gradlew.bat clean build passes 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 the dwurdysharks ID.
  • RCON on the live server verified the gamerule defaults to false and toggles live: Gamerule aggressiveSharks is currently set to: false → Gamerule aggressiveSharks is now set to: true.
  • Server-side FakePlayer verification (NeoForge 21.1 rejects vanilla clients, so a throwaway harness mod provided real ServerPlayer instances): with the rule off, bull sharks held target=null beside 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.ps1 passes.
  • zh_cn.json key parity checked programmatically: 157/157 keys vs en_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.

This mod has no additional files