Releases: beduality/clock-time
Releases · beduality/clock-time
Release list
Release v0.4.0
Added
Server Administrators
- [Paper & Fabric]
item-frame-clocks.encode-spacesconfiguration option (default:true)- Why: Bedrock clients (e.g. via Geyser) treat regular spaces (
U+0020) as word-break boundaries in itemCUSTOM_NAMEfields, causing item frame clock names like"3:45 PM"to split or truncate. When enabled, regular spaces in item frame display names are replaced with non-breaking spaces (U+00A0). Affects only the item frame / wall clock name path — chat messages are untouched. Disable if running a Java-only server and non-breaking spaces cause unexpected rendering.
- Why: Bedrock clients (e.g. via Geyser) treat regular spaces (
Fixed
Players
- [Paper & Fabric] Prevent players from rotating or interacting with clocks placed in item frames.
- Why: The item frame is used as a workaround to display the clock in vanilla, so allowing player interaction or rotation is a visual bug.
Release v0.3.0
Added
Players
- [Paper & Fabric] Realtime clocks in item frames
- Why: Allow players to place clocks in item frames to serve as visual wall clocks that display in-game time in real-time when looked at.
Server Administrators
- [Paper & Fabric] Configuration options for item frame clocks
- Why: Enable configuration (
item-frame-clocks/itemFrameClocks) to toggle the feature and set custom update intervals (defaulting to 16 ticks).
- Why: Enable configuration (
- [Paper] Configuration schema version 2 migration path
- Why: Automatically upgrade older server config files to version 2 while preserving existing settings.
Developers
- [Paper & Fabric] Optimized item frame clock tracking and updates
- Why: Track loaded clock-containing frames via an event-driven registry and cache Minecraft minute values to minimize processing overhead.
Release v0.2.0
Added
Players
- [Fabric] Ported to the Fabric platform (supporting Minecraft 1.20.6)
- Why: Expand platform availability to Fabric servers and single-player/client environments.
Server Administrators
- [Paper] Dynamic translation scanning and locale registration
- Why: Enable server administrators to dynamically add translations for any arbitrary language (e.g.,
messages_sv.properties) without modifications to the plugin code.
- Why: Enable server administrators to dynamically add translations for any arbitrary language (e.g.,
- [Paper] Configuration for custom wild-spin dimensions (
wild-spin-worlds)- Why: Allow server administrators to define custom/modded dimensions that should exhibit wild clock spin behavior (like Nether/End) instead of normal time display.
Developers
- [Common] Multi-module Gradle build restructure
- Why: Cleanly isolate platform-agnostic domain logic (
clock-time-common) from platform-specific infrastructure (clock-time-paper,clock-time-fabric) under a tidymodules/subdirectory structure to support multiple targets without code duplication.
- Why: Cleanly isolate platform-agnostic domain logic (
- [Common] Compile-time dimension abstraction (
WorldInfo)- Why: Abstract Minecraft's dimension state away from Bukkit API classes to enable cross-platform compatibility.
- [Common] Translation registry classpath fallback resilience
- Why: Enable default language properties to load from resource classpath bundles when JAR-file zip extraction fails or is skipped (e.g. in MockBukkit test and dev environments).
Release v0.1.0
Added
Players
- Client-locale and 12/24-hour time formatting
- Why: Support heterogeneous client environments and user preferences without manual server configuration.
- Dimension-aware time display behavior for the Nether and The End
- Why: Avoid displaying invalid or static time readouts where standard day/night cycles do not apply.
Server Administrators
- Dynamic extraction of default translations to the
languages/folder- Why: Allow server administrators to customize language strings directly without modifying the plugin jar.
- Programmatic configuration generation using Configurate
- Why: Ensure configuration schema validation and automatic updates for default values.
- Automated release workflows to Hangar and Modrinth
- Why: Simplify artifact distribution for operators and maintainers.
- Local translation overwrite prevention
- Why: Ensure custom edits made by server administrators are preserved during updates or restarts.
Developers
- Custom ClassLoader fallback translation resolution
- Why: Prevent translation loading failures in environments with non-standard classloaders.
- JitPack support and Maven publishing tasks
- Why: Enable downstream developers to integrate the plugin as a dependency in their own builds.