Releases: qwazar14/riverfishing
Release list
River Fishing 0.8.2
River Fishing 0.8.2 — the giants can be fought, the groundbait can be made
Minecraft 1.20.1 (Fabric & Forge) · 1.21.1 (Fabric & NeoForge) · 26.1.2 (Fabric & NeoForge)
· 26.2 (Fabric & NeoForge).
Everything here came out of what you reported after 0.8.1, and two of them were things nobody could
have found by playing well — only by reading a log or doing the arithmetic.
Base groundbait can be crafted again on 26.x
Reported as issue #15, from the log:
Couldn't parse data file 'riverfishing:groundbait_powder'
DataResult.Error['List is too short: 0, expected range [1-9]']
Minecraft 1.21.2 replaced the ingredient object with the id itself, so {"item": "minecraft:dirt"}
stopped parsing. Both files still spoke the old dialect: they were ported from the 1.21.1 branch
verbatim, months after the other thirty-seven were converted. The codec dropped what it could not read,
the empty list failed the size check, and the recipe simply did not exist.
Base Groundbait and Groundbait Soil could not be crafted on 26.1.2 or 26.2 at all, since 0.8.0. The
base is the item every mix is built on, so the headline feature of that release was buyable from the
fisherman and unmakeable by hand. Nothing crashed, which is why it went a release and a half unnoticed.
The divers stop running out the clock
Reported twice, from opposite ends of the same wall: "did anyone test landing a beluga? two hours and
we never got even a small one — its thirteen dives take the whole fight", and "the problem isn't the
600 kg one, even a small one runs 185 seconds and then it's gone."
Both were the fight timing out, and there were two causes.
A dive cost twice what it was meant to. The drain shipped in 0.5.0 as a flat rate per tick, in the
same commit that made a dive 60–109 ticks long — about a third of the land bar per dive. The rod
overhaul then lengthened every run by 2.2×, and never revisited that line:
| dive length | cost per dive | a beluga's ten dives | |
|---|---|---|---|
| as tuned in 0.5.0 | 85 ticks | 0.30 of the bar | 3.0 |
| as shipped in 0.8.1 | 188 ticks | 0.66 of the bar | 6.6 |
The bar holds 1.00. A dive now costs a fixed share of it however long it runs, so the next time a run
length moves, this stays put.
And the fish never tired. The fatigue clock grows with mass forever while the fight timeout is
capped at 170 seconds, so past a certain size the two stop meeting. A 90 kg beluga ended a full fight
0.11 spent; a 600 kg one, 0.03. Fatigue is what shortens a run, thins the runs out and lifts your
gain — none of it ever arrived, so the fight ran at first-minute density until the clock killed it.
All seven diving species were in that state.
The clock is now capped at a share of the fish's own fight. Where it already fitted it still decides —
sixty-five of the ninety-three species keep their numbers to the tick, and nothing under about
three kilos moved at all.
| spent by the end, before | now | |
|---|---|---|
| Beluga, 90 kg | 0.11 | 0.71 |
| Swordfish, 80 kg | 0.10 | 0.59 |
| Goliath grouper, 55 kg | 0.17 | 0.66 |
| Yellowfin tuna, 30 kg | 0.26 | 0.56 |
| Sturgeon, 22 kg | 0.34 | 0.61 |
The six giants are no longer legendary
Arapaima, beluga, bull shark, frilled shark, goliath grouper and piraiba were given a legendary
specimen when they landed in 0.8.0. That was never intended, and they go back to being very large
ordinary fish. The original eight are untouched.
Seeds compost, and the maggot farm eats properly
Corn, pea and barley seeds now compost — which also feeds the worm farm, because that block
asks the composter what counts as organic matter rather than keeping a list of its own.
The maggot farm takes carrion, not one item. It used to accept rotten flesh and nothing else; it
now reads a tag — rotten flesh, spider eye, and raw beef, pork, chicken, mutton and rabbit. Cooked
food and fish stay out: it is a carrion box, not a larder. Being a tag, a modpack can add spoiled meat
from another mod without touching the block.
The catastrophic snap stops naming the fish
The 0.3 % break hands out an advancement called It Was DEFINITELY Huge — the oldest lie in angling,
and it only works while nobody can check. The message was checking: it printed the weight of the fish
that got away, and losing a rig to a ten gram fish does not read as a joke, it reads as a bug in
the line. It says nothing now. The break itself is unchanged.
Bug reports, catches and arguments about groundbait: discord.gg/Kk2nKvsuRh
River Fishing 0.8.1
River Fishing 0.8.1 — the line goes where you cast it, and the giants can be landed
Minecraft 1.20.1 (Fabric & Forge) · 1.21.1 (Fabric & NeoForge) · 26.1.2 (Fabric & NeoForge)
· 26.2 (Fabric & NeoForge).
A repair release for 0.8.0, from what you reported in Discord. Two of these were real bugs and one of
them was arithmetic pretending to be difficulty.
The line goes where you cast it
Reported on NeoForge 1.21.1: "you cast at one spot and, depending on where the character is, the line
ends up anywhere but there."
The first-person line is drawn in the same pass as the rod, welded to the tip's own matrix — that is
what keeps it stuck to a tip that bends, whips and jerks with no frame of lag. But it is submitted with
an identity matrix, so it lands in whatever space the model-view happens to hold when the batch flushes,
and the code simply assumed vanilla's. A loader or a shaderpack that flushes the hand batch under
the world matrix leaves the other space, and then the far end of the line swings around you as you turn
your head.
It is no longer assumed. The game measures it: turn your head, and a tip held in eye space stays put
while a tip in world space follows the camera. One clear turn answers the question, the answer is latched
and remembered, and nothing is drawn on a guess in the meantime — the world pass keeps your line on
screen until the verdict lands, so you never see the switch. /rfrod handspace view|world|auto pins it
by hand if your setup outsmarts the test.
The giants were not hard, they were arithmetic
Reported: "how do you even land a sturgeon over 60 kg, or a blue marlin? There is not enough drag, and
the number of jumps is unreal — half a day on one marlin. He bites, but there is no way on earth to land
him."
Both halves were true, and both were our fault.
The pull was linear in mass. A 400 kg marlin asked for 802 kg of line; a 600 kg beluga, 1202. The
strongest braid in the mod carries 108 kg and the biggest reel adds twelve. Those fish could not be
landed by any tackle that exists here — not by playing badly, by playing at all.
So the mass a fight is fought against now tapers above 20 kg. Below the knee nothing changed at all,
so every fish the mod was balanced around keeps the numbers it shipped with; above it the curve
compresses, which is also the honest physics — real crews land 400 kg marlin on 60 kg line, with drag
and time, not dead lift.
| Fish | Was | Now |
|---|---|---|
| Blue marlin, 110 kg | 222 kg of pull — unlandable | 104 kg — hard, winnable |
| Blue marlin, 400 kg | 802 kg — impossible | 210 kg — the fight of your life |
| Sturgeon, 60 kg | 110 kg — needed perfect tackle | 68 kg |
| Sturgeon, 150 kg | 272 kg — unlandable | 111 kg |
| Beluga, 600 kg | 1202 kg — impossible | 262 kg — still the hardest fish in the game |
Nothing under 20 kg moved by a gram.
And the breaching was a metronome. A marlin jumped every four seconds of a long fight, each jump
opening a window in which cranking rips the hook out — a fight you could only lose by attrition. Jumps
are rarer now, and they taper off as the fish tires, so a fight you are winning visibly calms down.
The jump window also has four ticks of grace at the front. The crank already on its way when the
fish leaves the water is not a mistake, it is human reaction time, and every player was being charged
for it. Now you get a fifth of a second to let go, and the rest of the window still punishes you for
holding on.
Two more of the carp family
Kutum — a Caspian roach that grew up. Brackish water and the rivers that run into it, a spring run
upstream, and a mouth built for shellfish: worm and bloodworm on the bottom. Half a kilo is ordinary,
eight is the fish of the season, and it does not fight like the roach it is related to.
Naked Carp — a carp that never put its scales on, bare skin end to end, with the same appetite as
the rest of the family. Boilies on the bottom and a carp rod. It grows past twenty kilos and uses every
one of them.
Ninety-three species now.
Repainted
Crucian carp and mirror carp have new sprites and new journal illustrations.
The wiki tells the truth again
The documentation had drifted from the game — in places by a whole release. The worst of it:
- the last dash at the bank has been a rolled chance since 0.8.0, not a guarantee, and the wiki went
on promising it in three languages; - the run-length table was short by more than half, because the runs were lengthened and the table was
not; - fifteen species need a wire leader, not the seven that were listed — the other eight read as safe
to fish on a bare line, which costs you the rig; - fourteen species hide a legendary specimen, not eight;
- the species counts, biome tallies and bait tables were a roster or two behind.
There is also a new Compatibility page: the exact Biomes O' Plenty,
Serene Seasons, TerraBlender and GlitchCore versions every build is tested against, and why a conflict
on 26.2 is never River Fishing's — it holds no version bound on either mod and reaches Serene Seasons
only by reflection.
Bug reports, catches and arguments about groundbait: discord.gg/Kk2nKvsuRh
River Fishing 0.8.0
River Fishing 0.8.0 — a rod you can feel, groundbait you mix yourself, and a journal worth reading
Minecraft 1.20.1 (Fabric & Forge) · 1.21.1 (Fabric & NeoForge) · 26.1.2 (Fabric & NeoForge)
· 26.2 (Fabric & NeoForge).
Three headlines. The rod became a real object — thirteen hand-modelled blanks that bend, whip and
fight in your hands. Groundbait stops being four jars and becomes one base you mix your own into. And
the journal stops being a list of fish you have caught and becomes the book that explains the mod —
with the tables you would otherwise have had to open the wiki for. Twelve new species come with them,
from a two-gram sunbleak to a half-tonne beluga.
The rod is a rod now
Every rod in the game was a picture: a 16-pixel sprite held at an angle, with a pre-drawn bent copy for
when a fish pulled. All thirteen are now modelled, hand-built blank by blank — grips, reel seats,
guides, the lot — and the one that ends up in your hands is drawn at its true length. A feeder rod is
three blocks of carbon, because a feeder rod is 3.9 metres of carbon.
They bend as a chain. A blank is cut into sections — up to eight on the sea spinner — and each joint
turns a little more than the one behind it, so the tip travels furthest and the butt barely moves. That
is forward kinematics, which a model file cannot express (its rotations are baked at load and only three
angles are legal), so the chain lives in the renderer and is recomputed every frame at any angle.
And they bend toward the fish. Not down — toward. A fish running left lays the blank over to the
left; swing the camera to counter it and the bend follows the pull, which is what tells you where the
fish went. Look down past your own line and the rod rolls over and bows up toward it, because that is
where the pull is.
The blank has mass. Each rod carries its own spring — a whippy ultralight and a broomstick trolling
rod are not the same object — so turning your view leaves the tip trailing, and it overshoots on the way
back. A fish hitting the line kicks that same spring, and the rod visibly yanks.
The line is threaded. It leaves the spool, runs through every guide ring and out of the tip, and its
colour, thickness and transparency come from the line you actually spooled: braid draws dark and solid,
fluorocarbon nearly vanishes, 0.8 mm carp mono is visibly heavier than 0.1 mm braid. Off the tip it runs
to the water — welded to the drawn tip, through bend, whip and jerk alike.
The reel turns. All eleven sizes are modelled and seated on the rod's own seat, the handle sweeps
while you crank, and the knob orbits with the lever while staying level, the way a real one spins on its
bearing.
The fight is played with the camera. Holding your view against a run is the primary input now, like
steering a rod in a simulator — the four key bindings still work as a quiet override, but nothing tells
you to press them. And nothing tells you which way the fish went any more: the boss bar no longer
spells out "going LEFT — pull RIGHT", and the arrow glyph under the crosshair is gone. The rod says it.
That was the whole point of building it.
The bend reads the blank, not the line. These two are different things and conflating them was a
real bug: tension is measured against your line's breaking point, and heavy tackle deliberately keeps
that number low — so a trolling rod stayed arrow-straight over a hooked 2 kg bass. The bend now reads the
fish's pull against the rod's own power class, derived from its casting rating. The same fish bows an
ultralight flat and makes a trolling rod nod.
The line reads the fight. It pulls string-straight under load with a fine tremble near breaking, and
bellies well below the chord when the fish runs at you — with the whole readable middle in between,
chased asymmetrically, because a line snaps tight instantly and relaxes at cable speed.
Rods on a rod pod are real blanks too, lying through both saddles with the line leaving the actual tip.
And the bank surge at the end of a fight is a roll now — 35% normally, more for a trophy or a hard
fighter, never for a boot — instead of a scripted certainty every single time.
Everything above is on by default. /rfrod blank off puts the sprites back and /rfrod phys off stops
the springs, if you want the old look or your machine prefers it.
The second headline is groundbait. It used to be four jars you bought or crafted and threw at the water, and
the water either liked them or did not. It is now one base and whatever you put in it — and what you
put in it is the difference between catching bleak all evening and catching the bream you came for.
This replaces the old groundbait entirely. The four jars are gone from the game: from crafting, from
the fisherman's trades, from every fish profile. Nothing carries over. Read the first section before you
go fishing, because "throw more at it" is no longer an answer to anything.
One jar, and it is a base
Craft Wheat Seeds + Bread → 2 × Base Groundbait. The fisherman sells it too.
You can feed a spot with plain base and it works — just not very well. It sits exactly in the middle,
neutral grind and neutral richness, with nothing it is sharpened for. Everything else is what you
add.
Put the base in a crafting grid together with anything, up to 8 more items. One SLOT is one item: a
stack of 64 in a slot still counts once, because crafting takes one item from a slot. The base is
required — corn and boilies are not groundbait on their own, they are what you put in groundbait.
You cannot overfeed a spot. Throw as much as you like: more feed means more fish, and feeding never
makes a swim worse. The one thing groundbait cannot do is out-argue its own recipe. How strong a swim
gets is decided by what went into the mix, not by how much of it you tipped in. The question is not "how
much" — it is "made of what".
Four numbers, and your fish has an opinion about all of them
Every mix has a grind and a richness, averaged over everything in it by count. Every one of the
All 91 species now have their own preferred pair, in place of the old "this fish likes this category":
menu how much of the mix is food this fish actually eats (its own bait list)
grind 1 - |mix grind - species grind| -> 0.45 .. 1.00
richness 1 - |mix richness - species richness| -> 0.60 .. 1.00
variety 0.90 .. 1.00, by number of distinct components
total = menu x grind x richness x variety, capped at 1.0
an unfed spot = 0.40
★ A big grind calls big fish. Dust clouds the water and brings up bleak and roach. Whole grain and
boilies lie on the bottom, and that is what a bream or a carp is looking for. A 20 g bleak wants 0.14; a
4 kg carp wants 0.73. This is also the honest answer to "why do I only catch tiddlers" — it is a choice,
not a bug. Feed coarser. A coarse table does one more thing: it flattens the size curve, so what
turns up is more often a decent fish.
Richness is how much food, and how much of it is wanted. A carp wants a laid table (0.85); a bleak
wants a cloud (0.46), and a table laid for the carp is not what the bleak came for. This is why "just
throw boilies" does not work — boilies are the richest and coarsest thing in the pantry, which is exactly
why they are perfect for carp and useless for roach.
Ballast is the most important thing in the pantry. Groundbait Soil and Clay give you bulk, cloud and
colour and zero calories, so they are how you make a mix leaner and bigger without making it worse.
The vanilla shelf is real, not a courtesy. Wheat, bread, potato and beetroot are an hour's work, and
over the base they mix into something that genuinely fishes. You do not have to wait for a corn farm to
start feeding.
There is a full article on the wiki with the pantry table, the formula, a
worked example, a ten-recipe cookbook found by brute force rather than guessed, and the grind/richness
pair for all 91 species. Four pages of it are in the in-game journal too.
The last mix in wins, and the feed works where you fish
Throw a different mix on a fed spot and the new one takes over — no blending, no averaging. Throwing
the same mix again tops it up.
And a fix that mattered more than it looks: a loaded feeder cage was scored as if you had fed the
swim, at the cast surface. It handed the spot a flat middling freshness at the finest possible grind,
which usually beat the mix actually sitting on the bottom — so a carp angler feeding whole grain was
being scored as if fishing over dust. The swim is now the only thing that answers "is there feed here",
and it answers about the place the rig is lying.
One fillet
There were two items: a "fish strip" if you crouched with the filleting knife, and a "raw fillet" if you
did not. Same knife, same fish, and the only real difference was the yield — a hidden shift key on a
number rather than a choice about anything.
Now there is Raw Fish Fillet, one product, 200 g per piece. It is the universal saltwater bait,
a groundbait component, and it smokes, smelts and campfires into Cooked Fish Fillet.
Also gone: the shapeless recipe that turned any tagged fish into a flat 4 strips with no knife
involved, which meant a 20 g bleak and a 400 kg marlin paid the same and the knife's weight scaling could
be skipped entirely.
The electrofisher puts fish in
The creative-only operator tool could only take a species out of a water. It now puts one in as well,
and the same click does both — restoring a fish you culled and introducing one that was never there
turned out to be literally one operation.
That also fixes an undo that never worked. The old list was built from what could be caught in that
water, and a culled species cannot be — so the fish you removed fell out of the very list that was
supp...
River Fishing 0.7.1
River Fishing 0.7.1 — the rod gets its own keys
Minecraft 1.20.1 (Fabric & Forge) · 1.21.1 (Fabric & NeoForge) · 26.1.2 (Fabric & NeoForge)
· 26.2 (Fabric & NeoForge).
Everything here came from players in the first days after 0.7.0. Two of the fixes below were destroying
things you caught, so update before you fish again.
The fight moved off the movement keys
The course is now answered with the arrow keys, and they are rebindable in the ordinary Minecraft
Controls screen, next to Attack and Use. Four new bindings: pull left, pull right, lift the rod, rod
down. No settings tab of ours — the game already has one, with conflict detection.
WASD now means your feet and nothing else. That is the whole point. The course never needed you to
move — it only ever read which key was held, and the walking was a side effect. On a pier that side
effect put you in the water.
The vertical is inverted from 0.7.x, deliberately. W used to mean "rod down" and S "rod up", which is
backwards from anything you would guess — which is why the boss bar had to print the letter for you.
Now the arrow points where the rod tip goes, and all four courses collapse into one sentence: press the
arrow opposite the glyph on the bar. It goes ◀, you press →. It has gone ▼, you press ↑.
And the bar stops naming keys it cannot know. The [W] on the end of those lines was written by the
server, which has no idea what you have bound — so it was already wrong for anyone who had rebound
movement, and it would have been wrong for everyone now. The key moved to the cue under the boss bar,
which reads your actual binding.
This also fixes a fight that was arguing with itself
Sharing one keyboard between two systems had consequences nobody asked for:
- Answering a DOWN course paid you twice. S countered the run and backed you away from the hook,
which the mod reads as pumping with your legs. - Answering an UP course punished you. W walks you at the fish, which is slack, and slack is how a
hook falls out. There is a guard in the code whose own comment says the game "killed you for obeying
its own boss bar" — it exists because of the shared keys, not because of the design.
Both go away on their own now that the rod and the feet are separate. Backing away to win line is
untouched and still works exactly as it did.
You cannot walk off a pier with a fish on
Separate keys fix the input; they do not fix the ledge, because backing away from the water is still
part of the fight and the mod will keep asking you to do it. So while a fish is on, you get the same
edge protection the game already gives you when you sneak: walk to the brink and you stop at it.
Nothing was invented for this — it is vanilla's own behaviour, turned on for the duration of a fight.
Rivers finally know what country they are in
Found by белебобик, who asked whether taiga counts as a cold biome. It does — but his river did not,
and that turned out to be the interesting half.
A river in Minecraft is its own biome, minecraft:river, base temperature 0.5. The mod reads the
biome at the water block, so the land a river runs through never reached the fish: a river across a taiga
scored as ordinary temperate water. And because a species whose biome list matches nothing at all is
treated as absent, not merely unlikely, this was not a small penalty.
Twenty of the sixty river species could not be caught in a river. At all. The whole northern group —
taimen, trout, grayling, lenok, char, whitefish, plus pink salmon and smelt — asks for cold, taiga or
mountain water, and a river offered none of them. The taimen has the highest river affinity of any fish
in the mod and was catchable only in a frozen river. The warm Florida group — peacock bass, oscar,
Mayan cichlid, snakehead, tarpon, snook, jack crevalle — could not be caught in any river, frozen or not.
The five koi want a cherry grove, which a river never is.
A river now reads its banks. Eight directions, out to 32 blocks, taking the first real land in each
and skipping any water on the way. A taiga river is cold and temperate, so the taimen moves in without
evicting the roach; a jungle river holds the Florida fish; a river through a cherry grove holds koi.
Lakes, ponds and the sea are untouched — they always sat inside the biome they belong to.
If your home river suddenly holds fish it never did, that is this. It was a bug, and a big one.
A bleak cannot be humpbacked
Reported by белебобик, whose friend landed five yellow bleak in a row, each named hunchback.
Two of the three morphs — the stunted fish of a fished-out water and the deep-bodied one of an
overcrowded one — applied to every species in the game. They are real conditions and the mod is right
to model them, but they are things that happen to still-water fish in a pond, and a bleak is a slender
surface fish of 150 g with nowhere to put a hump. The same table was handing them to eels, pike, salmon
and blue marlin.
Humpbacked is now the fish that actually go deep-bodied in a crowded pond — the carps, the breams,
tench, roach, rudd, ide, nase, bluegill, and the perch, because «окунь-горбач» is the name Russian anglers
already use for exactly that fish. Seventeen species instead of seventy-nine.
Stunted stays broader, because any freshwater population fished past its recovery does stunt, and a
runt is a shape most small fish can take — but nothing that lives at sea. Twenty-nine species.
Nothing about the rates or the triggers changed. A crowded water still produces humpbacked fish at the
same rate; it just no longer produces humpbacked bleak.
For players who learned 0.7.0
The arrows are bound out of the box; you do not have to set anything up. If you want the old WASD feel,
bind the four River Fishing entries to W/A/S/D in Controls — the game will flag the conflict with your
movement keys, and that conflict is exactly the bug this release is about.
And the six things 0.7.0 got wrong
Your catch is no longer eaten by a full inventory
Reported by the mod's own author. Land a fish with no room in your bag and the mod threw it — along
your line of sight, which is the water you were just fishing. A fish item that sits in water is
released: the mod credits it back to the pond and deletes it. So the chat line said you caught it,
the journal recorded it, the personal best updated, and there was nothing in your inventory.
The distinction the mod needed was already there and simply not consulted. Minecraft records a
thrower on an item only when the drop was deliberate — the Q key. A drop the game performs because
it had nowhere else to put something records none. The release now asks that question, so a fish you
chose to let go still swims away and a fish you had no room for lies on the ground where you can pick
it up.
Same fix, same cause: dying near water no longer deletes every fish you were carrying while the
rest of your inventory floats.
A live bait no longer catches something smaller than itself
Reported by the mod's author, and worth stating plainly: a 150 g baitfish could land a 100 g perch.
The rule that a predator is at least six times its meal has been in since 0.4.0 and was skipped on
every spinning rod.
A predator rig has no bait slot — it is a leader and a lure, and the lure slot deliberately accepts a
live baitfish. But the query that weighs the baitfish only ever looked in bait slots, so on the one rig
class you actually livebait with, the bait weighed nothing and the size floor turned itself off. The
two neighbouring queries in that same file already looked in both slots; this one did not.
The bait is gone when the fish takes it
Reported by the mod's author. Bait was charged only when you set the hook. Miss the strike, or let
the bite window run out, and the worm was still on the hook — so the cheapest way to fish was to keep
missing. The rod pod's own code comment said "bait gone" about a path that had never taken any.
"Did the fish eat the bait" now has one owner and one answer, and a bite you fluffed costs you the bait
like a bite you landed. Artificial lures are still never consumed, and the Frugal perk still saves you
bait at the same rate.
The mod no longer tells you to reel and not to reel at once
Reported by Makaronn. A big-game fish breaches, a red line appears — "It jumps — give slack, do not
reel!" — and directly underneath it, in green, the fight prompt said reel. Both were on screen
together. He waited for the red text to go, reeled, and lost the fish to the jump.
The fight prompt only knew whether the fish was running, and a breach can only happen when it is not.
It never learned about jumps at all. It does now, for exactly the length of the window — and because
the signal ends the instant the window closes, the moment it turns back to reel is a real all-clear
rather than a message quietly timing out four seconds late.
The old boot advancement was backwards
Reported by белебобик, who fished up leather boots and got nothing. The check asked whether the
loot was a boot after handing it to you — and handing an item over empties the stack it came in, so
the answer was always no. It fired only when your inventory was full and the pickup failed. You now get
it for the boot, which is the joke.
One answer for how many fillets
Reported by the mod's author. The knife pays by weight; the Farmer's Delight cutting board paid a
fixed number per species. They disagreed by 2× on small fish and by up to 300× on big ones.
It turned out the second number was never obtainable: those recipes asked for a cutting tool that does
not exist — Farmer's Delight has no action by that name, and Forge invents one silently for any name it
is given, so the recipe loaded and then nothing in the game could ever satisfy it. The cutting board
could not cut a fish on any ver...
River Fishing 0.7.0 — the water you can see into
Downloads
| Minecraft | Loader | File |
|---|---|---|
| 1.20.1 | Fabric | riverfishing-0.7.0-mc1.20.1-fabric.jar |
| 1.20.1 | Forge | riverfishing-0.7.0-mc1.20.1-forge.jar |
| 1.21.1 | Fabric | riverfishing-0.7.0-mc1.21.1-fabric.jar |
| 1.21.1 | NeoForge | riverfishing-0.7.0-mc1.21.1-neoforge.jar |
| 26.1.2 | Fabric | riverfishing-0.7.0-mc26.1.2-fabric.jar |
| 26.1.2 | NeoForge | riverfishing-0.7.0-mc26.1.2-neoforge.jar |
| 26.2 | Fabric | riverfishing-0.7.0-mc26.2-fabric.jar |
| 26.2 | NeoForge | riverfishing-0.7.0-mc26.2-neoforge.jar |
Checksums in SHA256SUMS.txt. The full wiki, in English, Russian and Ukrainian:
https://qwazar14.github.io/riverfishing/
River Fishing 0.7.0 — the water you can see into
Minecraft 1.20.1 (Fabric & Forge) · 1.21.1 (Fabric & NeoForge) · 26.1.2 (Fabric & NeoForge)
· 26.2 (Fabric & NeoForge).
Requires Architectury API; on Fabric
also Fabric API. Serene Seasons and Biomes O' Plenty are optional and the balance assumes them.
Two things this update is about. You can now see what lives in the water before you cast into it.
And when a fish is on, the fight asks you a question every few seconds and you answer it with your hands
— which is the difference between a fight and a progress bar.
Look into the water
Lean over a lake and the fish are there: drifting under the surface, at their real size, in the numbers
the water actually holds. A shoal of roach reads as a shoal. A single big shadow on the bottom is a single
big fish, and you will want to know what it is.
What you never get is a label. You get a shape and a size, and working out what it is stays yours to do.
And they swim. Every fish keeps a position and a heading of its own between frames rather than being
placed on a circle each frame, so a shoal browses instead of orbiting: it turns away from a bank before it
reaches one, drifts on its own slow rhythm, and breaks for deep water when something startles it. A fish
points where it is going — which sounds like nothing at all until you have watched one travel sideways.
Muddy water, rain and dusk dim them; depth does not — a fish sitting deep is a fish you can still make
out if you lean over and look. Every water is described out to three chunks around you, so the pressure
on a spot, the stocking you did last week and the species that genuinely live there all became things you
can look at instead of infer.
And the fish can see you. Sprinting along the bank, landing hard, splashing in the shallows — each of
those spooks the water you are standing over, and a spooked fish does not bite. Move up quietly, or wait
for it to settle.
The fight has a direction
Before this update a fight was tension up, progress up. A forty-minute catfish differed from a
forty-second roach only in how long the numbers took.
Now every run has a course, and you answer it with the movement keys:
| The fish | You |
|---|---|
| tracks left | D — lean on it from the right |
| tracks right | A |
| goes deep | S — pull back, get its head up |
| comes up to jump | W — rod down, which is what actually stops a fish leaping off |
The boss bar names the course and the key, and the rod tip is dragged the way the fish is going, so you
can read the fight off the rod as well as off the bar.
Answering correctly is not a tax you avoid — it is the thing that lets you work. The fish tires nearly
three times as fast, the run loads your tackle at half rate, and you actually gain line during a
run instead of the near-nothing a wind into a run has always been. Pull the same way it is going and you
get none of that. Stand there doing nothing and you are in between: a player who has not worked the
mechanic out yet still lands fish, slowly.
Runs last about 2.2× longer, because a run is where all of this lives and the old two-second burst was
over before anyone could read the bar, decide and press.
Your feet are tackle too
This works whether or not you have ever heard of the course mechanic. Backing away from the water is
pumping with your legs — it wins line and it loads the rod, the same trade a crank makes. It is how you
actually beat a fish off a bank. Walk the whole way and you snap: on a carp that is about five blocks of
room, on a marlin one. Walking at the fish is slack, and a dead line is how a hook falls out.
A hooked fish also pins you down — you move at under a third of normal speed while one is on. Braced
against the rod, shuffling, not jogging.
The angler runs out
A stamina bar for the person holding the rod. Winding costs it; holding against a running fish costs it,
and more when the rod is pointed the wrong way. It comes back only when you stop pulling. Spent arms
wind weakly and load the line harder, so the answer to being tired is to stop rather than to click faster
— which is the real technique the fight had never asked for.
A heavier line finally buys something
Reported as: top rod, thickest braid, snapped on a ten-kilo fish. It was not bad luck. Tolerance was
clamped, so every line from just enough upward behaved identically — 108 kg of braid was exactly 22 kg
of braid, and the ten mono diameters above the minimum bought you nothing at all. Strong tackle now
changes how fast the load arrives rather than the ceiling. Same fish, closed drag: 9 seconds to the limit
on the heaviest braid instead of 1.6.
Every species tires differently
Every profile has carried a stamina value since profiles existed, and nothing ever read it — a 2 kg pike
and a 2 kg carp gassed out on the same tick. It is wired in, and the fight table got the review that goes
with it: the rotan (90 g, the first fish anyone hooks) was set to fight like a pike, and two level-4 carp
ran harder than a blue marlin. The difficulty now climbs with the level gate instead of crossing it.
Somewhere to put the tackle
Asked for plainly by arsen_501. This mod ships seventeen line diameters, six hook sizes, four rig
types and dozens of baits, and until now they all lived loose in the same nine rows as your food.
- Four sizes — 9, 18, 27 and 36 slots, each a craft of the one below, with a chest at the heart of
every recipe. - Tackle only: line, hooks, rigs, lures, bait, leaders. Not rods and reels — a box that swallowed a
rod would be a backpack wearing a tackle box's name. - Rename it in the box, top row, no anvil. Dye the inserts like leather armour — the colour shows
on the icon, inside the open box and on the placed one. - Right-click to set it down and it faces you; sneak + right-click to open, in hand or placed.
Break it and it keeps everything.
The fisherman sells four ready-made kits — float, pike, carp and saltwater — each named, dyed and
packed with bench-graded tackle. A kit is the answer to "what do I actually need for pike", in a form you
can carry to the water and open.
He also paints what he sells now. Lure colour has affected the bite since 0.6.0, but every lure on his
rack came out the same factory silver, so the system was invisible until you owned a bench, a lure and a
dye. Two spinners from the same villager are now two different spinners, in colour and in weight.
The fisherman's prices were never real
The mod has promised, in three languages since 0.5.0, that the fisherman's order of the day pays ×2.5.
It never did. Not on any version, not once, unless you were extraordinarily unlucky in your timing.
The price was worked out inside a vanilla trade listing, and a listing runs in exactly one place: the
moment a villager gains a merchant level. Restocking does not rebuild an offer, and loading a world reads
the old number straight back out of the save. So the emerald count was decided at the instant a level
unlocked and then frozen there for that villager's life. The ×2.5 landed only if a stall happened to be
promoted on that specific day with that specific species in that specific slot. The glut discount — the
falling price of an overfished species — was frozen by the same mechanism.
The price is recomputed when you open the counter now. What the trade screen shows is what the market
says today, on all four Minecraft versions.
- One seat on every counter is today's order. It is the same seat every day, and it changes with the
order rather than appearing and disappearing — so there is always somewhere to sell what the mod just
asked you for, provided your stall is senior enough to buy that species. - The order can no longer name a fish nobody buys. It used to be drawn from a hand-written list of
sixteen species while what is sellable was decided somewhere else entirely; the two were never held
together. The rotation is now read out of the trades themselves — all 74 sellable species, up from
sixteen. - The counter is twice the size. A tier registers between eight and twenty-six species and used to put
exactly two of them on any one stall, frozen there forever: an angler with the whole journal filled
could sell about five things in the world. Four now, with a fourth offer per level to make room for
them rather than crowding out the tackle. - The nine Florida species could be caught and not sold on 1.20.1 and 1.21.1 — they shipped with
trades on 26.x only. You could land a tarpon and have nowhere on earth to take it.
One thing to know: an existing fisherman keeps the counter he was built with. A villager only rebuilds
his offers when he is promoted, so a stall already at Master will not grow the extra slots. New stalls
have them from the start.
Taking a species out of a water
Asked for by vptareo-aao: a way to remove a nuisance species from a particular water. The
electrofisher does it — which is what real electrofishing is for.
Right-click water, get the list of what genuinel...
River Fishing 0.6.1 — the tackle & fight update
River Fishing 0.6.1 — the tackle & fight update
0.6.0 with every fix that came out of the first week of player reports. If you are installing for the
first time, this is the whole update; if you are on 0.6.0, this is the fix release.
What 0.6.1 fixes
The cast no longer disappears on its own. The mod checks that you are still holding the rod your cast
was made with, and it was making that check by comparing the rod's item by memory reference. That
reference goes stale the moment anything rewrites your inventory slot — far more common on a server than
in single player — and from that moment the mod believed you had swapped rods and ended the cast
silently, with no message at all. From the bank it looked exactly like the rod reeling itself in a
second after the cast. It hit every rod class, which is why it was reported for lures and for bait alike.
It now tracks the hotbar slot, which cannot go stale. Confirmed fixed by the player who reported it, on
the server where it happened.
The Fishing Stall opens its bench on Forge. On 1.20.1 Forge only, right-clicking the stall with an
empty hand opened the Tackle Station server-side but never drew the screen — the block simply did nothing.
Registered on every other loader.
The mod no longer teaches the wrong input. The lure cast message said "Hold right-click to retrieve";
holding auto-repeats about five times a second, which empties the retrieve at full speed and is too fast
a cadence for a fish to take, by design. Every rod's tooltip now names its class on the first line —
active rods are worked with rhythmic clicks, float and bottom rods are cast and left alone — and a new
journal guide covers the two rod classes you never retrieve.
What 0.6.0 brought
Tackle now has a weight, and weight is a decision.
- The Tackle Station — right-click a Fishing Stall with an empty hand and it becomes a tackle bench.
6 bottom rigs and 8 lures, each with its own weight ladder, hooks pre-slotted, optional dye. - Three systems read that weight: the blank's cast-weight window, the lure-size filter, and cast
distance. A lure's mass is its size. - The fight has physics — the rod bends in six steps under real tension and everyone nearby sees it, a
running fish loads the tackle by itself, fish tire out, and a 200 g roach stops fighting like a carp. - The fisherman is not a fish market — three offers per level from a per-tier pool, rods sold assembled
only, real bench tackle on the stall. - Every rod and reel is craftable on one cost ladder — 24 recipes, no gaps.
- 70 species — common dace, Volga zander, white-eye bream and the round goby join, plus a realism pass
over the existing weights and lengths. - Ukrainian, all 811 strings, with real angling vocabulary and real ichthyonyms.
- The wiki, online in three languages — https://qwazar14.github.io/riverfishing/
Files
| File | Loader | Minecraft |
|---|---|---|
riverfishing-fabric-0.6.1+1.20.1.jar |
Fabric | 1.20.1 |
riverfishing-forge-0.6.1+1.20.1.jar |
Forge | 1.20.1 |
riverfishing-fabric-0.6.1+1.21.1.jar |
Fabric | 1.21.1 |
riverfishing-neoforge-0.6.1+1.21.1.jar |
NeoForge | 1.21.1 |
riverfishing-fabric-0.6.1+26.1.2.jar |
Fabric | 26.1.2 |
riverfishing-neoforge-0.6.1+26.1.2.jar |
NeoForge | 26.1.2 |
riverfishing-fabric-0.6.1+26.2.jar |
Fabric | 26.2 |
riverfishing-neoforge-0.6.1+26.2.jar |
NeoForge | 26.2 |
Requires Architectury API; on Fabric
also Fabric API. Serene Seasons and Biomes O' Plenty are optional, and the balance assumes them.
SHA256SUMS.txt carries the hash of every jar. CHANGELOG-en.md is the mod-page note;
CHANGELOG-en-uk-ru.md is the full record in all three languages.
Known limitations, stated plainly
- Hook link, balance and blade size do nothing yet — written to the tackle and shown on its tooltip,
read by nothing. Treat them as cosmetic. - The dynamic fish market is missing on 26.1.2 and 26.2. Prices are static there.
- JEI and Jade integration is missing on 26.1.2 and 26.2. Both work on 1.20.1 and 1.21.1.
- There is no config file yet. Difficulty is fixed at the realism preset in code.
These are the next release's job.
Every fix in this release started as a player report. Discord: https://discord.gg/Kk2nKvsuRh
The source for each Minecraft line lives on its own branch: mc-1.21.1 (tagged here), mc-1.20.1, and
the 26.x Stonecutter tree.
River Fishing 0.6.0 — Minecraft 1.20.1 / 1.21.1 / 26.1.2 / 26.2
River Fishing 0.6.0 — The Tackle & Fight Update
Tackle now has a weight, and weight is a decision. Everything else in this release follows from that.
English
The Tackle Station. Right-click a Fishing Stall with an empty hand and it becomes a tackle bench: pick a form, step the weight, feed it hooks, iron and string. 6 bottom rigs and 8 lures, each with its own weight ladder, hooks pre-slotted, optional dye. The block that gives a village its fisherman is the same block you tie your own gear on.
Weight drives three systems. Your blank's cast-weight window, cast distance, and the lure-size filter — a lure's mass is its size, so a heavy pilker silences the small stuff and sets a floor on how small the hooked fish can be. The sea sizes of spoon, wobbler, jig and castmaster exist only at the bench, so the sea spinning, boat and trolling blanks finally have tackle inside their test windows.
The fight has physics. The rod visibly bends under real tension in six steps, and everyone nearby sees it. A running fish loads the tackle by itself — you no longer have to be cranking for the line to be in danger. Fish tire out, so a long fight is won by outlasting rather than out-clicking. And small fry stop fighting like monsters: a 200 g roach no longer behaves like a carp.
The fisherman is not a fish market. Three offers per level instead of two, drawn from a per-tier pool, with a guaranteed simple fish in tier 1. Rods are sold fully assembled only. Stall tackle is real bench tackle carrying the same weight stamp, and the stall also stocks plain vanilla goods.
70 species. Common dace, Volga zander, White-eye bream and the Round goby join, each with its own habitat gates and fight profile — plus a realism pass correcting weights and lengths against the real fish.
Every rod and reel is craftable on one cost ladder — 24 recipes, no gaps. Hooks #2 and #1 joined the hooks tag, which had quietly locked the two biggest hooks out of every lure recipe.
Ukrainian, all 806 strings, with real Ukrainian angling vocabulary and real ichthyonyms rather than transliterations.
The wiki is online in three languages: https://qwazar14.github.io/riverfishing/ — 18 pages in English, Russian and Ukrainian on one URL with a language switcher, every number as the game actually uses it, and all 91 recipes drawn as real crafting grids generated from the recipe files.
Fixes. The rod's assembly screen wrote tackle into a detached copy of the rod, so edits could be silently lost — this is the bug behind the "rod is not assembled" reports. The message now names which part is missing. Five registry gaps, including saltwater durability and a drag curve computed two different ways. On 26.1.2 and 26.2 only: the four new species rendered as missing-texture squares and the journal's Guides tab ignored clicks; both fixed.
Known limits, stated plainly. Hook link, balance and blade size are written and displayed but read by nothing — groundwork, treat them as cosmetic. The dynamic fish market is missing on 26.1.2 and 26.2. There is still no config file; difficulty is fixed at the realism preset.
Русский
Снастевой станок. ПКМ по рыболовному прилавку пустой рукой — и он становится верстаком: выбери форму, набери вес, скорми крючки, железо и нить. 6 донных оснасток и 8 приманок, у каждой своя весовая лестница, крючки уже в слотах, по желанию — покраска. Блок, который даёт деревне рыбака, — тот же, на котором ты вяжешь себе снасть.
Вес читают три системы. Тестовое окно бланка, дальность заброса и фильтр размера приманки — масса приманки и есть её размер, поэтому тяжёлая пилька отсекает мелочь и задаёт нижнюю границу размера рыбы. Морские размеры колебалки, воблера, джига и кастмастера существуют только на станке, так что морской спиннинг, лодочное и троллинговое удилища наконец получили снасть в своих тестовых окнах.
В бою появилась физика. Удилище гнётся под настоящим натяжением в шесть ступеней, и это видят все рядом. Рыба на рывке сама нагружает снасть — теперь не обязательно мотать, чтобы леска была в опасности. Рыба устаёт, поэтому долгий бой выигрывается выдержкой, а не скоростью кликов. И мелочь больше не воюет как монстр: плотва на 200 г не ведёт себя как карп.
Рыбак — не рыбный рынок. Три предложения на уровень вместо двух, из пула на каждый ранг, и в первом ранге гарантированно есть простая рыба. Удочки продаются только полностью собранными. Снасть с прилавка — настоящая снасть со станка с тем же штампом веса, и там же есть обычные ванильные товары.
70 видов. Добавились елец, берш, белоглазка и бычок-кругляк, у каждого свои условия обитания и манера боя, плюс проход по реализму: веса и длины сверены с настоящей рыбой.
Каждое удилище и каждая катушка крафтятся на одной лестнице стоимости — 24 рецепта, без пробелов. Крючки №2 и №1 добавлены в тег крючков, который до этого тихо не пускал два самых больших крючка ни в один рецепт приманки.
Украинский язык, все 806 строк, с настоящей рыболовной лексикой и настоящими ихтионимами, а не транслитерациями.
Вики онлайн на трёх языках: https://qwazar14.github.io/riverfishing/ — 18 страниц на английском, русском и украинском по одной ссылке с переключателем, все числа такие, какими их использует игра, и все 91 рецепт нарисованы настоящими сетками крафта прямо из файлов рецептов.
Исправления. Экран сборки удочки писал снасть в отцепленную копию предмета, и правки могли тихо пропадать — именно из-за этого приходили жалобы «удочка не собрана». Теперь сообщение говорит, какой именно части не хватает. Пять пробелов в реестре, включая прочность морских бланков и кривую фрикциона, считавшуюся двумя разными способами. Только на 26.1.2 и 26.2: четыре новых вида рисовались шахматкой, а вкладка «Гайды» в дневнике не реагировала на клики — оба починены.
Что осознанно не доделано. Отступ крючка, огрузка и номер лепестка записываются и показываются, но ничем не читаются — это заготовка, считайте их косметикой. Живой рынок цен отсутствует на 26.1.2 и 26.2. Конфига по-прежнему нет, сложность зафиксирована на пресете realism.
Files
| File | Loader | Minecraft |
|---|---|---|
riverfishing-fabric-0.6.0+1.20.1.jar |
Fabric | 1.20.1 |
riverfishing-forge-0.6.0+1.20.1.jar |
Forge | 1.20.1 |
riverfishing-fabric-0.6.0+1.21.1.jar |
Fabric | 1.21.1 |
riverfishing-neoforge-0.6.0+1.21.1.jar |
NeoForge | 1.21.1 |
riverfishing-fabric-0.6.0+26.1.2.jar |
Fabric | 26.1.2 |
riverfishing-neoforge-0.6.0+26.1.2.jar |
NeoForge | 26.1.2 |
riverfishing-fabric-0.6.0+26.2.jar |
Fabric | 26.2 |
riverfishing-neoforge-0.6.0+26.2.jar |
NeoForge | 26.2 |
Requires Architectury API; on Fabric also Fabric API. Serene Seasons and Biomes O' Plenty are optional, and the balance assumes them.
SHA256SUMS.txt carries the hash of every jar. CHANGELOG-en-uk-ru.md is the full patchnote in all three languages.
The source for each Minecraft line lives on its own branch: mc-1.21.1 (tagged here), mc-1.20.1, and the 26.x Stonecutter tree. Discord: https://discord.gg/Kk2nKvsuRh
River Fishing 0.5.0 — Minecraft 1.20.1 / 1.21.1 / 26.1 / 26.2
River Fishing 0.5.0 — The Sea & Big Game Update
(includes everything from the unreleased 0.4.0)
English
Sea fishing. Sea rods, big-game reels (12000/14000) with heavy lines, ocean zones with a coastal-to-pelagic species gradient. Trolling v1: trail a lure behind your boat and hold on.
Big-game fights. Sounding and greyhounding fight patterns — deep dives that steal line and surface runs with jumps where you must give slack or lose the hook.
66 species. The northern wave (12 new species: taimen, muksun, omul and friends), the American mini-pack, the RU trio (silver carp, sabrefish, blue bream) — plus legendary boss fish: Grandpa Sazan and the Megalodon.
Live bait 2.0 & topwaters. Local small fish as live bait with honest size logic; popper surface lures with pop-pause cadence and blow-up strikes.
Tackle stress. Lines no longer snap instantly at the limit — overstress builds a rising break chance. Ease off when the rod screams.
Stocking 2.0. Release fish to build local stock — weight- and fit-based settling, every water body holds its own species set.
Also: hand-drawn 256px icons for all 66 fish, quest chain up to stage 8, bait traps, mini-aquarium trophy stand, update checker.
Русский
Морская рыбалка. Морские удилища, катушки 12000/14000 с тяжёлыми шнурами, зоны океана от прибрежки до пелагиали. Троллинг v1 — приманка за лодкой.
Биг-гейм бои. Паттерны sounding и greyhounding: глубокие нырки со срывом шнура и свечки на поверхности — дай слабину или потеряешь рыбу.
66 видов. Северная волна (12 новых: таймень, муксун, омуль и другие), американский мини-пак, русская тройка (толстолобик, чехонь, синец) + легендарные боссы: Дед Сазан и Мегалодон.
Живец 2.0 и топвотеры. Местная мелочь как живец с честной логикой размера; попперы с ритмом pop-pause и атакой-всплеском.
Стресс снасти. Леска больше не рвётся мгновенно на пределе — перегруз копит шанс обрыва. Ослабляй, когда удилище стонет.
Зарыбление 2.0. Выпускай рыбу и создавай локальный запас — оседание по весу и пригодности, у каждого водоёма свой набор видов.
А также: рисованные 256px иконки всех 66 рыб, цепочка квестов до 8 этапа, ловушки для живца, мини-аквариум вместо стойки трофеев, проверка обновлений.
Files
| Minecraft | Fabric | Forge / NeoForge |
|---|---|---|
| 1.20.1 | riverfishing-fabric-0.5.0+1.20.1.jar |
Forge: riverfishing-forge-0.5.0+1.20.1.jar |
| 1.21.1 | riverfishing-fabric-0.5.0+1.21.1.jar |
NeoForge: riverfishing-neoforge-0.5.0+1.21.1.jar |
| 26.1 | riverfishing-fabric-0.5.0+26.1.2.jar |
NeoForge: riverfishing-neoforge-0.5.0+26.1.2.jar |
| 26.2 | riverfishing-fabric-0.5.0+26.2.jar |
NeoForge: riverfishing-neoforge-0.5.0+26.2.jar |
Requires Architectury API. Fabric also needs Fabric API.
Also on Modrinth and CurseForge.
River Fishing 0.3.0 — Minecraft 26.1.2 (NeoForge + Fabric)
River Fishing 0.3.0 — Minecraft 26.1.2
River Fishing lands on Minecraft 26.1! Same mod, same 0.3.0 feature set — rebuilt for the
new engine. Loaders: NeoForge + Fabric (the 1.21.1 build stays available as
0.3.0 for 1.21.1).
Requires: Java 25 · Architectury API 20+ · Fabric API (on Fabric)
🚀 The port
- Full feature parity with 0.3.0 on 1.21.1: the whole tackle system, bite engine, fights,
journal, quests & skills, fisherman villager, rod pods, aquarium, trophies, ice fishing,
bait farms and crops — everything made the jump. - Rebuilt on 26.1's new rendering and item-model pipeline: composited rod icons (blank + reel +
line + rig), weight-scaled fish icons and painted-lure tints are now fully data-driven —
resource packs can restyle every layer without touching code. - The fisherman's trades are datapack JSON now (
data/riverfishing/villager_trade/…) —
modpack authors can rebalance prices, add or remove trades with a plain datapack. - Serene Seasons 26.1.2 support works out of the box (crop fertility windows).
📝 Notes
- Fish caught before the port keep a standard-size icon — the size-scaled icon is written at
the catch. - The in-hand casting animation (wind-up + whip) and the live
/rfrodpose tuning are back and
work on both loaders.
River Fishing 0.3.0 — Minecraft 1.21.1 (NeoForge + Fabric)
River Fishing moves to Minecraft 1.21.1. Loaders are now NeoForge + Fabric (Architectury no longer supports LexForge on 1.21 — the Forge 1.20.1 build stays available as 0.2.0). Requires Java 21 and Architectury API 13; internals migrated to 1.21 Data Components and the 1.21 datapack layout.
New features
- Lure painting — dye any artificial lure with dyes, exactly like leather armour. Colours fall into three classes (natural / bright / dark), and the right colour for the light, weather, depth, water and season earns up to +35% bites — the wrong one costs you.
- Four new predator lures — Popper (topwater: chub, asp), Crankbait (perch, pike), Soft Jig (the deep-water lure: zander, catfish, burbot, eel) and Castmaster (long-cast: trout, asp). All 8 lures retuned so each owns a distinct niche.
- Bait crops — grow Corn, Peas and Barley (yields pearl barley) on farmland. Seeds drop from grass and are sold by the fisherman villager; Serene Seasons fertility is supported out of the box (peas: spring/autumn, barley: spring/summer, corn: summer).
- Prime-fish trading is back — the fisherman again buys only prime specimens (≥70% of the species' max weight), and the trade now shows the required weight.
- Ice Jig — the Mormyshka got its proper English name, its own tooltip and a journal description; the Grusha rig is now the 3-Hook Feeder Rig in English.
Balance
- Angler XP scales with size — a bleak is ~5 XP, a carp ~155, a catfish ~300+. Farming minnow swarms is no longer the best way to level.
- Anti-macro pass — swarm bite-speed softcap, harsher spot depletion (deplete faster, recover slower), shaved minnow base rates.
- Angler level matters — each level below a species' recommendation roughly halves its bite chance (a lucky fluke stays possible).
- Ultralight vs Spinning — the ultralight is now the finesse rod for small/wary predators; the spinning rod shines on size. Crossover around 1 kg.
- Foul-hooking is a flat 1% per spinning retrieve; a new 0.8% catastrophic tackle break can part the line on the take.
- The reel↔line diameter limit is lifted (kept as journal guidance).
Art
- New hand-crafted pixel art in a warm Stardew-inspired style: all 11 natural baits (including a realistic maggot and earthworm), the four original spinning lures, seed packets and 4-stage crop plants.
Fixes
- Journal: background blur removed; the journal scales to fit at GUI Scale 3–4.
- Rig contents (hook/bait/groundbait) persist correctly; the hook slot holds exactly one hook.
- NeoForge 1.21: item icons, menu screens, model registration and datapack loading all fixed.
- All recipes converted to the 1.21 format.
Known
- JEI integration is temporarily removed (returns after the 1.21 API rework).
Install: pick the jar for your loader — riverfishing-neoforge-0.3.0.jar or riverfishing-fabric-0.3.0.jar — plus Architectury API 13 (and Fabric API on Fabric).
Full changelog: v0.2.0...v0.3.0