Item Despawn Timer — Fabric 26.2 port
This branch is Fabric-only and intentionally separates authority:
config/item-despawn-timer-server.json— dedicated server only; server gameplay: default despawn time and per-item overrides.-1means infinite when enabled.config/item-despawn-timer-client.json— client only; presentation settings: timer/name visibility, heights, threshold and colors.
Since v0.3.7, a physical client no longer creates item-despawn-timer-server.json. The main Fabric initializer also runs on clients, so ServerConfig explicitly checks the physical environment before reading/writing its persistent file. Integrated singleplayer uses the built-in server defaults in memory; dedicated servers continue to use the persistent server JSON.
Minecraft 26.2 uses the unobfuscated Mojang/official names and Java 25. This port therefore does not reuse the old Yarn-named common/client GUI classes from 0.2.2. Client rendering lives only in src/client, while server/gameplay code lives in src/main.
Run compiler.bat on Windows or ./compiler.sh on Linux/macOS. The script checks whether the existing JAR contains the same mod_version+mc<minecraft_version> as gradle.properties; matching builds offer Push/Recompile/Quit. After a successful build it offers Git push and retries failed pushes in groups of three.
Commands (v0.3.7)
/idt reload
- Client player (non-operator): reloads only
item-despawn-timer-client.json. - Client player (operator/moderator): reloads the client config and requests a server-config reload. The server validates permission before accepting the request.
- Dedicated-server console: reloads only
item-despawn-timer-server.json. - The server-side
/idt reloadnode requires Minecraft moderator/operator permission, so it is not advertised by the server command tree to ordinary players. The client-side command remains available because ordinary players are allowed to reload their own presentation config.
Client display colors
clockColor, timerTextColor, and nameTextColor use #RRGGBB values. The bundled clock.png is rendered as a bitmap glyph on the same baseline as the countdown text.