TickMender

37 switchable fixes for crashes, memory leaks, server lag and slow starts in large Fabric 1.21.1 packs. No gameplay change.
Back to Files

tickmender-1.3.0.jar

File nametickmender-1.3.0.jar
Uploader
NavrelisNavrelis
Uploaded
Oct 13, 2026
Downloads
65
Size
390.5 KB
Mod Loaders
Fabric
File ID
9167278
Type
R
Release
Supported game versions
  • 1.21.1

Curse Maven Snippet

Fabric

modImplementation "curse.maven:tickmender-1726415:9167278"

Learn more about Curse Maven

What's new

1.3.0 - 2026-10-14

No new switch: TickMender still has 40. Two of them do more. The log filter can now remove noise that a server owner cannot act on (the grave lines of You're in Grave Danger, scanner noise in the Netty pipeline, the death notices of named mobs), and the JVM arguments hint now also speaks on a dedicated server. The other 38 switches are unchanged.

Log filter (logFilter)

  • Two new, optional lists in config/tickmender-logfilter.json, next to exact and regex:
    • thrown: a WARN or ERROR event that carries an exception, and that neither exact nor regex matched, is also removed when one of these expressions is found in its message, a colon, a space and the exception as text. This is for messages that are the same for noise and for a real error, where only the exception tells them apart.
    • info: an INFO message in which one of these expressions is found is removed. It is the only list that touches INFO events; exact, regex and thrown still mean WARN and ERROR only. While the list is empty the filter does not even format INFO messages.
  • The defaults are now 58 patterns instead of 52: 39 exact, 15 regex, 2 thrown, 2 info. The six new ones, each naming one known message of one mod:
    • Tried to load invalid item: 'No key id in MapLike[{Slot:...,dropRule:"...",visible:...b}]': the empty slots of the graves of You're in Grave Danger 2.4.18, written without an item id (452 lines per server start). Only that exact shape is matched. Any other Tried to load invalid item stays visible.
    • Ignoring unknown attribute for six names only: minecraft:movement_speed, minecraft:follow_range, minecraft:attack_damage, minecraft:armor, minecraft:armor_toughness and porting_lib:step_height_addition. Any other attribute stays visible, except porting_lib:entity_gravity, which was filtered before.
    • Exception occurred in netty pipeline when the exception is a ReadTimeoutException or a NativeIoException that says Connection reset by peer (thrown): internet scanners that connect and leave. The same message with any other exception, for instance a DecoderException or an EncoderException, is a real error and stays in the log; the message is the same in every case, which is why this list looks at the exception.
    • Named entity ... died: ... and Villager ... died, message: '...' (info): about 5000 lines in ten days on a production server, almost all of them mobs that mods spawn with a name.
  • A trade-off you should know about. With the info defaults the death of a player's name-tagged pet is not in the log either, because it is a named entity like the others. Remove the ^Named entity .+ died: entry from info in config/tickmender-logfilter.json if you need those lines.
  • Still visible, on purpose: Error upgrading chunk, Failed to load chunk, and every other error the old list did not name.
  • The summary line has a clause for the INFO events, after the WARN/ERROR figure and only when there were any: TickMender: log filter: 76 of 423 WARN/ERROR events suppressed and <m> INFO events; most hits: .... INFO events are not counted as "looked at", so the first figure is still a share of the WARN and ERROR events. The fallback that writes the summary when the JVM shuts down without any of the usual moments (a crash of the client) now also writes it after a stretch in which the filter only removed INFO events.
  • The state in the start-up line reads active (58 patterns, installed in ...).

JVM arguments hint (jvmArgumentsHint) on dedicated servers

  • Until now the hint was for players only. A dedicated server that was started without the recommended JVM arguments now says so, once the game has logged its "Done" line: one line in the log of what was decided, and, while the flags are missing, one WARN with the line to copy: TickMender: JVM arguments hint: this server was started without the recommended JVM arguments (preset g1-server). Add this to the start command and restart: <line> | Instructions are in tickmender-jvm-arguments.txt in the server folder; -Dtickmender.jvmHint=off silences this line.
  • tickmender-jvm-arguments.txt in the server folder has the same line with instructions, in English and in server wording: where in the start script it goes (after java, before -jar; a hosting panel has a field for it), that you keep your own -Xms and -Xmx, and that the flags expect both to be the same value. The line itself never contains a heap flag. A server gets no sentence about memory.
  • Aikar's flags, not measured on the pack. The two server presets are Aikar's flags, a widely used set for Minecraft servers. They were not measured with this modpack, unlike the client line, and the file says so. g1-server is for a heap of 6000 to 12999 MB, g1-server-large for 13000 MB and more (G1 with a larger young generation and a later start of the mixed collections); both need 2 CPUs and Java 21. A smaller heap, one CPU, Java below 21 or a JVM that is not HotSpot gets no hint.
  • A server has no "shown once": it warns at every start until the flags are set (the hint is silent when the JVM was started with every flag of the line, or with another garbage collector) or -Dtickmender.jvmHint=off is given. -Dtickmender.jvmHint=show forces the WARN even with the flags set. "jvmArgumentsHint": false in config/tickmender.json switches it off on both sides.
  • The preset table gets an optional "side": client, server or both. A preset without it is a client preset, so a table written before this version never reaches a server. Any other value makes the table unusable (one warning, the table is ignored).
  • The state in the start-up line is active (decides at the title screen) on a client and active (decides when the server has started) on a dedicated server. It is no longer idle (client only) on a server. Like logFilter and cameraShakeLimit, the hint now reports its own state: three switches do.

Updating from 1.2.0

Replace the jar. There is no new switch and config/tickmender.json is unchanged.

  • An existing config/tickmender-logfilter.json is not rewritten, by this update either, so it keeps exactly the patterns it has: without thrown and info it filters as before. The new patterns reach an existing install only in one of two ways: the pack ships the updated file, or you delete the file and let TickMender write the new defaults at the next start (write down any hand-made entries first; and if config/nytheriaoptimiser.json is still there, its patterns are imported instead of the defaults, with both new lists empty).
  • A preset table of your own in config/tickmender-jvm-presets.json that has no side stays client-only. To give a dedicated server a line from your own table, write "side": "server" (or "both") on that preset.
  • A dedicated server logs one WARN at every start until the flags are set or -Dtickmender.jvmHint=off is given, and writes tickmender-jvm-arguments.txt in its folder. If you do not want either, give the property or set "jvmArgumentsHint": false.

This mod has no additional files