Fractured Hardcore 0.1.4
Bug-fix release from live play. Drop-in replacement for 0.1.3: same save file, no config. Upgrade only; see the rollback note.
What was wrong
- A player who logged in with an expired downed clock was "self-revived". Vanilla 26.2 makes a freshly joined player immune to every kind of damage,
/kill-type damage included, until their client reports loaded. The join handler ran before that, so the bleed-out kill could never land at join, and the 0.1.3 fallback then cleared the downed state. Your server log shows this asBleed-out kill did not take … clearing downed stateat the join second. - A downed player who disconnected had a frozen boss bar and a paused clock. The tick loop only walked online players, and the clock was measured in world ticks, which stop whenever the server pauses for being empty or is down.
What changed
- A failed kill never clears state. The kill waits until the client has loaded and is retried every tick.
- The tick walks the records, online or not: the bar keeps counting while the player is offline, and when the clock hits zero the death is counted right then, everyone is told, the tab list updates, and the actual kill is applied the moment the player next logs in, without a second death.
- The clock is real time. Logging out, an empty server or a restart never stop it.
/hc giveupannounces only if the kill actually landed, and says "try again in a moment" while your client is still loading.- Save files from 0.1.3 are converted on the first tick: a downed player's remaining time carries over exactly (world time is saved with the world), and a clock that had already run out under 0.1.3 rules owes the death.
Requirements
| Component | Version |
|---|---|
| Minecraft Java dedicated server | 26.2 |
| Fabric Loader | ≥ 0.19.5 |
| Fabric API | 0.159.0+26.2 or newer for 26.2 |
| Java | 25 |
Upgrade from 0.1.3
- Stop the server and back up the world (keep this backup: it is the only way to roll back, see below).
- Replace the 0.1.3 jar with
fractured-hardcore-0.1.4.jarinmods/. - Start the server. Records carry over; a player who was downed at that moment keeps their remaining time (logged as
Downed clock of <name> came from 0.1.3 …). - Optional: the resource pack is byte-identical to the 0.1.2 and 0.1.3 zips (same SHA-1). Existing
server.propertieslines keep working; to point at this release use:
resource-pack=https://github.com/MusaMisto/FracturedHardcore/releases/download/v0.1.4/fractured-hardcore-resourcepack-0.1.4.zip
resource-pack-sha1=1223e50c22fd2ca07e44f9c48c13ef697c86ca2dRollback caveat: a players.dat written by 0.1.4 is not readable by 0.1.3 (downed and owed-kill state would be dropped). To roll back, restore the pre-upgrade players.dat from the backup.
Your ledger: deaths that 0.1.3 failed to charge are visible in logs/hcheart-audit.log as DOWNED_CLEARED bleed-out fallback lines; restore them with /hc set <player> <deaths> <restores> if you want the count right.
Verification
- Built and tested by CI on a fresh runner: run 34604595634. 35 JUnit tests and 41 gametests on a headless 26.2 server, all passing. The new gametests replay the reported incidents exactly: a join with the client not yet loaded and an expired clock, an offline expiry, and the 0.1.3 save-file conversion.
- The attached jar and zip are byte-identical to a clean local build of commit
c139a73(reproducible build). - Jar SHA-256:
4ad3e6903d3f75d5298afae3c3840767aa1c55895a443f2ad85b8e265b3a1af3 - Pack SHA-1:
1223e50c22fd2ca07e44f9c48c13ef697c86ca2d
Known limitations
- Expiry is noticed by the server tick. While the server is down or paused for being empty, an expiry in that window is recorded on the first tick after a player joins; the clock itself is real time, so nothing is gained by the pause.
- Every death screen reads "Game over! / Spectate world"; the button still respawns non-eliminated players.
- A downed player's own camera stays at standing height in open areas; everyone else sees them prone.