promotional bannermobile promotional banner

Sablewaves

Minecraft’s oceans were never meant to stay flat. With Sablewaves you can experience Minecraft the way it was meant to be.
Back to Files

sablewaves-2.25.0.jar

File namesablewaves-2.25.0.jar
Uploader
Arapatoc288Arapatoc288
Uploaded
Sep 27, 2026
Downloads
185
Size
181.8 KB
Mod Loaders
NeoForge
File ID
8985807
Type
R
Release
Supported game versions
  • 1.21.1

Curse Maven Snippet

NeoForge

implementation "curse.maven:sablewaves-1634962:8985807"

Learn more about Curse Maven

What's new

2.25.0 — your boat moves now

waves push vanilla boats. not create ships. the plain oak boat you crafted on day two.

and the reason this took until now is embarrassing enough that it's the whole post.

it was never missing. it was never reaching you.

there's a file in this mod called BoatWaveHooks. it has been in every version. it's registered on startup. it has a proper damped spring for the bob and a drag coupling for the surge and it's tuned and it works.

it only ran on the server.

here's the thing about vanilla boats that i did not know: a boat with a player in it is not simulated by the server. it's simulated by that player's own client, which then tells the server where the boat ended up, and the server just believes it. that's how minecraft boats have always worked.

so every tick, the server carefully worked out what the sea should do to your boat, and then your own client overwrote it with its own answer about a flat ocean. for months.

it has been working the whole time. on empty boats. drifting around with nobody in them. which is the one case where nobody is looking.

when user_t3bl9tn42gcybqsv asked if vanilla boats were affected yet, and i said it was hard because they don't go through sable's physics — i was wrong twice in one sentence. they don't go through sable, but they were already going through mine, in a place where it could never matter.

the fix

whoever owns the boat pushes the boat.

boat who simulates it who pushes it now
you're steering it your client your client
someone else steering their client their client
empty, drifting the server the server

nobody does the same boat twice, so there's nothing to fight over. and since your client is already the authority on the boat you're in, its answer is what everyone else sees anyway.

one detail that matters more than it sounds: the client half samples the renderer's copy of the ocean, not a fresh one. the renderer runs the waves on a smoothed frame clock — that's what stops the water juddering — and a second copy on the tick clock drifts out of step with it. not by much. just enough that your boat would sit visibly inside a crest instead of on it, which looks worse than no feature at all.

i also threw away about an hour of my own work

i wrote an entire second boat physics implementation first. new files, new maths, new test harness, the lot. then i went to register it and found BoatWaveHooks already sitting in the startup list.

deleted all of it. the code that was already there is better than what i wrote — it already knew where vanilla floats a boat at rest, which is a number i had spent a while convincing myself was impossible to find out.

TFC tides land on the right days now

Froggenheimer pointed out that TFC has its own moon and my tides weren't using it. correct.

TFC has no moon phase to read. but TFC's months are lunar months — that's the whole point of its calendar — so how far through the month you are is the phase. so:

  • spring tides at TFC's full and new moon, where they belong
  • neaps at its quarters

before this, on a TFC world, the biggest tides of the month were arriving on the days the moon was at a quarter. exactly backwards.

all through reflection. TFC is not a dependency and isn't going to become one — almost nobody running this mod has it, and a hard reference would stop the mod loading for all of them.

the other half of Froggenheimer's report — reflections not lining up with TFC's sun and moon — isn't done. i need to work out how TFC draws its sky first. next one.

and the instruments work with a full hand

the tide clock, barometer and anchor could only be read with an empty hand. minecraft only calls the no-item interaction when you're holding nothing, and i'd only implemented that one.

so you walk up holding a pickaxe, right click, nothing happens, block is broken. i reported this as a bug in my own mod and then told myself i was being dumb. i wasn't. it was broken.

boring but load-bearing

OceanConditions.java wouldn't compile at all — the decompiler had left one variable name doing two unrelated jobs and never declared it. split into two properly named locals, same arithmetic. that file's been on the "can't rebuild this one" list since the source got lost and it isn't any more.

also wrote a checker that reads TFC's calendar methods straight out of the TFC jar and compares them to what my reflection expects. the link checker is blind to reflection, so without it a TFC rename would show up as tides silently going back to the vanilla moon on somebody else's world, and i'd never hear about it.


thanks user_t3bl9tn42gcybqsv for asking the question i answered wrongly, and Froggenheimer for the TFC moon.

 

TELL ME IF IT DOESNT WORK. IT WORKS ON MY PC BUT MAY NOT WORK ON URS

This mod has no related projects