These are only basic examples — you can mix and match events to create complex logic such as countdown-based minigames, reward systems, or event triggers.
Broadcast when a timer starts
@EventHandler
public void onVCTEvent(VCTEvent event) {
if (event.getType() == VCTEventType.CREATE) {
String timerId = event.getTimerId();
String timeInitial = event.getInitialTime();
Bukkit.broadcastMessage("A new timer has started: " + timerId + " (" + timeInitial + ")");
}
}
- Useful for announcing timers to all players.
- Gives context when a new timer begins.
Send bossbar updates every second
@EventHandler
public void onVCTEvent(VCTEvent event) {
if (event.getType() == VCTEventType.CHANGE) {
String timeLeft = event.getTimeLeft();
Bukkit.getOnlinePlayers().forEach(player -> {
player.sendActionBar("Time left: " + timeLeft);
});
}
}
- Runs every second.
- Good for syncing custom UI or scoreboards with the timer.
Grant rewards when timer finishes
@EventHandler
public void onVCTEvent(VCTEvent event) {
if (event.getType() == VCTEventType.FINISH && event.getTimerId().equals("xp_challenge")) {
Bukkit.broadcastMessage("The XP Challenge has ended!");
// Reward all players
for (Player player : Bukkit.getOnlinePlayers()) {
player.giveExpLevels(5);
}
}
}
- Perfect for minigames or challenges (
xp_challenge
) that end with rewards.
- Trigger extra logic when the timer reaches 00:00:00.
Pause/resume feedback
@EventHandler
public void onVCTEvent(VCTEvent event) {
switch (event.getType()) {
case PAUSE:
if (event.getTimerId().equals("game_round")) {
Bukkit.broadcastMessage("The round has been paused");
}
break;
case RESUME:
if (event.getTimerId().equals("game_round")) {
Bukkit.broadcastMessage("The round has resumed!");
}
break;
}
}
- Keeps players informed about game-round timers only.
Log when a timer is stopped manually
@EventHandler
public void onVCTEvent(VCTEvent event) {
if (event.getType() == VCTEventType.STOP) {
Bukkit.getLogger().info("[MyPlugin] Timer stopped: " + event.getTimerId());
}
}
- Useful for debugging or auditing timer interruptions.
- Logs any timer being stopped.
Announce time modifications
@EventHandler
public void onVCTEvent(VCTEvent event) {
if (event.getType() == VCTEventType.MODIFY && event.getTimerId().equals("pvp_event")) {
String modifier = event.getModifier();
String modification = event.getModification();
if (modifier.equals("ADD")) {
Bukkit.broadcastMessage("The PVP event has been extended by " + modification + "!");
} else if (modifier.equals("TAKE")) {
Bukkit.broadcastMessage("The PVP event has been reduced by " + modification);
} else if (modifier.equals("BOSSBAR_STYLE")) {
Bukkit.broadcastMessage("The segments of the boss bar in the PVP event have changed to " + modification);
}
}
}
- Lets everyone know when the timer is adjusted or modified.
- Great for competitive scenarios (adding bonus time, penalties, etc.).