
EzCountdown
Run flash sales, timed events, and launches with stunning countdowns - ActionBar, BossBar, Titles & Placeholders!
- Загрузки
- 1K
- Подписчики
- 5
- Обновлён
- 7 июля 2026 г.
- Лицензия
- MIT
Опубликован 14 января 2026 г.
EzCountdown
EzCountdown is the ultimate custom countdown timer plugin for Minecraft servers. Whether you’re launching a new map, running a flash sale, or celebrating a special event, EzCountdown lets you create, manage, and display any countdown you want, your way.
Check out our latest project: PvPIndex
Compatible with Spigot, Paper, and Bukkit 1.7-26.1 · Java 8+ · Action bar, boss bar, title, chat & scoreboard displays · PlaceholderAPI ready
Why EzCountdown?
- Create any countdown – Set up timers for launches, events, sales, or anything you can imagine. Fixed dates, durations, recurring, or manual, your choice.
- Flexible displays – Show countdowns in the action bar, boss bar, title, chat, or scoreboard. Make your timers visible everywhere players look.
- Easy configuration – Define countdowns in YAML, customize messages, and reload instantly—no coding required.
- Permission control – Limit who can see or manage each countdown.
- PlaceholderAPI support – Use countdown placeholders in any plugin or message.
Example: Custom Countdown
Want a countdown for a special event? Just add it to countdowns.yml:
countdowns:
event_launch:
type: FIXED_DATE
target: "2026-02-01 18:00"
running: true
display:
types:
- ACTION_BAR
- TITLE
update-interval: 1
visibility: "all"
messages:
format: "<gold>Event Launch</gold> <gray>in</gray> <aqua>{formatted}</aqua>"
start: "<green>The event countdown has started!</green>"
end: "<gold>🎉 The event has begun! </gold>"
commands:
end:
- "broadcast <gold>The event is live!</gold>"
zone: "UTC"
Tip: Use /countdown create <name> <date|duration|manual|recurring> to make new countdowns in-game!

Quick Start
- Drop
EzCountdown.jarinto yourplugins/folder and start the server. - Edit
plugins/EzCountdown/countdowns.ymlto define your custom countdowns. - Use
/countdown listto see active timers. - Reload changes instantly with
/countdown reload.
Commands & Permissions
| Command | Description | Permission |
|---|---|---|
/countdown create <name> <date|duration|manual|recurring> |
Create a countdown. | ezcountdown.admin |
/countdown start <name> |
Start a countdown. | ezcountdown.admin |
/countdown stop <name> |
Stop a countdown. | ezcountdown.admin |
/countdown delete <name> |
Delete a countdown. | ezcountdown.admin |
/countdown list |
List countdowns. | ezcountdown.use |
/countdown info <name> |
Show countdown details. | ezcountdown.use |
/countdown reload |
Reload configuration files. | ezcountdown.admin |
Countdown Types
- Fixed Date – Counts down to a specific date/time.
Example:/countdown create launch 2026-02-01 18:00 - Duration – Runs for a set time (e.g., 2h).
Example:/countdown create sale duration 2h - Manual – Timer starts only when triggered.
Example:/countdown create flashsale manual 15m - Recurring – Repeats at set intervals (e.g., every week).
Example:/countdown create weekly recurring 7 18:00
Display Types
- ACTION_BAR – Subtle, always-on timer above the hotbar.
- BOSS_BAR – Dramatic bar at the top of the screen.
- TITLE – Large center-screen titles for big moments.
- CHAT – Periodic chat messages.
- SCOREBOARD – Sidebar timer for ongoing events.
Mix and match display types per countdown!
Advanced Features
- Teleport players at countdown start/end using named locations.
- Firework shows for celebration moments.
- Custom messages and commands for every countdown event.
- PlaceholderAPI – Use
%ezcountdown_<name>_formatted%and more in any plugin.
Locations & Fireworks
- Set teleport locations:
/ezcd locations add <name> - Configure fireworks and teleports in
countdowns.ymlunderteleport:andfirework:sections.
PlaceholderAPI
Use these placeholders anywhere PlaceholderAPI is supported:
%ezcountdown_<name>_formatted%%ezcountdown_<name>_days%%ezcountdown_<name>_hours%%ezcountdown_<name>_minutes%%ezcountdown_<name>_seconds%
Make your next event legendary, create custom countdowns for anything, anytime!
Ченджлог
2.0.2Релиз26.1.1, 26.1.2, 26.2 · 7 июля 2026 г.
Added
- Placeholder formatted output regression tests - added unit coverage in
EzCountdownPlaceholderExpansionUnitTestto verify%ezcountdown_<name>_formatted%honorsdisplay.time-format.hide-leading-zerosfor both enabled and disabled configurations. - Optional countdown start/end sounds - countdowns can now define
sounds.startandsounds.endwith BukkitSoundenum names incountdowns.yml. - GUI sound editors - the in-game editor now includes dedicated actions to configure and validate start/end sounds, including
noneto disable either sound.
Changed
- Runtime start/end flow - when a configured start/end sound is valid, EzCountdown now plays it to online players at countdown start/end alongside existing message, teleport, firework, and command actions.
2.0.1Релиз26.1, 26.1.1, 26.1.2 · 22 мая 2026 г.
Fixed
- JitPack build compatibility - corrected
jitpack.ymlJava selector toopenjdk21and pinned JitPack install to./mvnw -B -ntp -DskipTests installso builds consistently use Java 21 when compiling againstpaper-api 1.21.11. - GitHub Actions version drift - updated workflow actions to current major versions across CI/release publishing (
actions/checkout@v6,actions/setup-java@v5,actions/cache@v5,actions/upload-artifact@v7). - Paper/Folia smoke test resolution for 26.x - CI smoke jobs now resolve builds from
fill.papermc.io/v3and correctly include MC26.1with Java 25 where required.
Changed
- Modrinth release step - replaced the legacy
Kir-Antipov/mc-publishaction invocation in release workflow with a direct Modrinth v2 API upload path for clearer failure diagnostics and up-to-date version resolution.
2.0.0Релиз26.1, 26.1.1, 26.1.2 · 22 мая 2026 г.
Added
- Folia support - the plugin now runs on Folia (marked
folia-supported: trueinplugin.yml). Folia'sGlobalRegionScheduleris used automatically when detected at runtime; Paper/Spigot continue to use the Bukkit scheduler. compat/package hierarchy - clean OOP abstraction layer:compat.platform.PlatformDetector- detects Folia vs. Paper/Spigot at startup viaRegionizedServerclass presence.compat.scheduler.SchedulerAdapter/TaskHandle- platform-agnostic scheduler interface (runTask,runTaskTimer,runTaskLater,runTaskAsync).compat.scheduler.BukkitSchedulerAdapter-SchedulerAdapterbacked byBukkitScheduler(Paper/Spigot).compat.scheduler.FoliaSchedulerAdapter-SchedulerAdapterbacked byGlobalRegionScheduler(Folia); only class-loaded when Folia is detected.compat.scheduler.SchedulerAdapterFactory- chooses the correct adapter with graceful fallback if Folia classes are missing.compat.version.ServerVersionUtil- canonical location for runtime Minecraft version detection (replacesutil.ServerVersionUtil).compat.material.MaterialCompat- canonical location for cross-version material resolution (replacesutil.MaterialCompat).
- Startup platform log -
PluginBootstrapnow logs the active scheduler adapter class on enable (e.g.Scheduler: BukkitSchedulerAdapter).
Changed
util.ServerVersionUtilandutil.MaterialCompatare now@Deprecateddelegation stubs that forward to their canonicalcompat.*counterparts; they will be removed in a future release.All internal scheduler usages (
CountdownManager,FireworkShowManager,PatternScheduler,ChatInputListener, alllistener.actions.*GUI action classes,SpigotIntegration,SpigotUpdateChecker) now go throughSchedulerAdapterinstead ofBukkit.getScheduler()/BukkitRunnabledirectly.Scoreboard API modernised -
ScoreboardDisplaynow delegates tocompat.scoreboard.ScoreboardCompat. On Paper 1.20.3+ (Criteria.DUMMYavailable) the modernregisterNewObjective(String, Criteria, Component)overload is used; older builds fall back to the legacy string overload. The deprecatedScoreboard.resetScores(String)calls are replaced by objective unregister/re-register viaScoreboardCompat.resetObjective.Title API modernised -
TitleDisplaynow delegates tocompat.title.TitleCompat. On Paper 1.18+ the AdventurePlayer.showTitle(Title)/Player.clearTitle()APIs are preferred over the deprecatedsendTitle(String...)/resetTitle().TitleValidatornow also acceptsshowTitleas a valid title capability. A Spigot/legacy string fallback is retained.Per-player notification targeting -
NotificationBuilder.players(Collection<Player>)restricts a notification to specific players.EzCountdownApi.sendNotification(Notification, Collection<Player>)provides an inline alternative without building aNotificationfirst.Countdown.isVisibleTo(Player)- centralises per-player visibility logic (permission gate + target-player set) in one method; all display handlers now use it instead of duplicated inline checks.CountdownBuilder.targetPlayers(Collection<Player>)- restrict a persistent countdown's display to specific players.Developer-friendly exception hierarchy - new
com.skyblockexp.ezcountdown.api.exceptionpackage:EzCountdownException- base unchecked exception; catch this for all EzCountdown API errors.CountdownNotFoundException- thrown when referencing a countdown name that does not exist; carriesgetCountdownName().DuplicateCountdownException- thrown when creating a countdown whose name already exists; carriesgetCountdownName().InvalidConfigurationException- thrown byNotificationBuilder.build()and future builder validators when configuration is invalid; replaces the genericIllegalStateException.
api-versionbumped to1.18inplugin.yml; minimum supported Minecraft version is Paper/Spigot 1.18. Dialog display continues to require Paper 1.21.7+.Broadened Java compatibility - release JARs now target Java 17 bytecode (previously Java 21), so the plugin runs on Paper 1.18 - 1.20.4 (Java 17) as well as Paper 1.20.5+ (Java 21). The
jdk21Maven profile also targets Java 17 bytecode.ServerVersionUtil- new utility class (com.skyblockexp.ezcountdown.util.ServerVersionUtil) for runtime Minecraft version detection; enables future conditional feature gating without hard API dependencies.Startup guard -
onEnablenow logs the detected MC and Java version and disables the plugin with a clear error message if the server is too old (MC < 1.18 or Java < 17).
Changed
- All display handlers (
ActionBarDisplay,TitleDisplay,ChatDisplay,BossBarDisplay,ScoreboardDisplay,DialogDisplay) usecountdown.isVisibleTo(player)instead of duplicated inline permission checks. NotificationBuilder.build()now throwsInvalidConfigurationException(a subclass ofEzCountdownException) instead of a plainIllegalStateException.ScoreboardDisplaycatch blocks now includeNoSuchMethodErrorso the scoreboard falls back to chat if the String-criteriaregisterNewObjectiveoverload is ever removed in a future Paper build.- Project version bumped from
1.4.3to2.0.0.
Fixed
- DURATION countdown resets to full duration on
/countdown reload-resumeRunningCountdowns()previously calledhandler.onStart(), which always setstargetInstanttonow + fullDuration, discarding thetarget_epochsaved in storage. It now callshandler.ensureTarget()instead, which is a no-op when a target is already present. The same guard was added to the legacy fallback path for handler-less countdown types. End-commands that fired once before a reload will no longer fire again unexpectedly due to the countdown silently restarting.
1.4.2Релиз26.1, 26.1.1, 26.1.2 · 15 мая 2026 г.
Added
- Configurable time format: new
display.time-formatsection inconfig.yml.pattern(default"{days}d {hours}h {minutes}m {seconds}s") - customize the token layout used for the{formatted}placeholder and%ezcountdown_<name>_formatted%PAPI expansion.hide-leading-zeros(defaulttrue) - when enabled, leading space-delimited segments whose unit value is zero are suppressed. For example,0d 0h 5m 3sis displayed as5m 3s.- Applies to countdown display messages, discord webhook
{time_left}, PlaceholderAPI, and the GUI preview action. - Hot-reloads with
/countdown reload.
1.4.1Релиз26.1, 26.1.1, 26.1.2 · 15 мая 2026 г.
Fixed
- Bossbar color/style ignored -
display.bossbar.coloranddisplay.bossbar.styleincountdowns.ymlhad no effect; the boss bar always rendered in the default blue/solid style. All four countdown-type handlers (DurationHandler,FixedDateHandler,RecurringHandler,ManualHandler) now read these fields from config and pass them to theCountdownconstructor.
1.4.0Релиз26.1, 26.1.1, 26.1.2 · 11 мая 2026 г.
Added
- Notification API —
EzCountdownApi.sendNotification(Notification)fires a one-shot ephemeral timed display from any plugin without creating a persistent countdown or touchingcountdowns.yml. Notificationmodel — lightweight immutable value object with factory methodsNotification.ofSeconds(long),Notification.of(Duration), and a fluentNotificationBuilder(display types, format message, start/end messages).NotificationBuilder— fluent builder forNotification; all fields have sensible defaults (ACTION_BARdisplay,{formatted}message);build()validates duration > 0.- Ephemeral countdown support —
Countdown.isEphemeral()/CountdownBuilder.ephemeral(boolean); ephemeral countdowns are removed from memory automatically when they end and are never written to storage.
1.3.2Релиз26.1, 26.1.1, 26.1.2 · 9 мая 2026 г.
- Fixed countdown count in bStats
- Fixed small memory leak issue causing lag on bigger servers
1.3.1Релиз26.1, 26.1.1, 26.1.2 · 9 мая 2026 г.
- Bugfix: Duration countdowns were resetting to their full configured duration after a server restart
Комментарии
Загружаем…


