DREAMFIRE Docs ← Back to site
Loading...
Searching...
No Matches
DreamBossBarData.java
Go to the documentation of this file.
1/*
2 * MIT License
3 *
4 * Copyright (c) 2025 Dreamfire Studio
5 *
6 * Permission is hereby granted, free of charge, to any person obtaining a copy
7 * of this software and associated documentation files (the "Software"), to deal
8 * in the Software without restriction, including without limitation the rights
9 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10 * copies of the Software, and to permit persons to whom the Software is
11 * furnished to do so, subject to the following conditions:
12 *
13 * The above copyright notice and this permission notice shall be included in all
14 * copies or substantial portions of the Software.
15 *
16 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
22 * SOFTWARE.
23 */
24package com.dreamfirestudios.dreamcore.DreamBossBar;
25
26import com.dreamfirestudios.dreamcore.DreamChat.DreamMessageFormatter;
27import com.dreamfirestudios.dreamcore.DreamChat.DreamMessageSettings;
28import net.kyori.adventure.text.serializer.plain.PlainTextComponentSerializer;
29import org.bukkit.boss.BarColor;
30import org.bukkit.boss.BarStyle;
31import org.bukkit.boss.BossBar;
32import org.bukkit.entity.Player;
33
34import java.util.function.Function;
35
39public record DreamBossBarData(BarColor barColor,
40 BarStyle barStyle,
41 double barProgress,
42 Function<Player, String> messageProvider) {
43
50 public void DisplayBarData(BossBar bossBar, Player player){
51 if (bossBar == null) throw new IllegalArgumentException("BossBar cannot be null.");
52 if (player == null) throw new IllegalArgumentException("Player cannot be null.");
53
54 bossBar.setTitle(safeTitle(player));
55 bossBar.setColor(barColor);
56 bossBar.setStyle(barStyle);
57 bossBar.setProgress(clampedProgress());
58 }
59
65 String safeTitle(Player player) {
66 String raw = (messageProvider == null ? "" : messageProvider.apply(player));
67 if (raw == null) raw = "";
68 return PlainTextComponentSerializer.plainText()
69 .serialize(DreamMessageFormatter.format(raw, player, DreamMessageSettings.all()));
70 }
71
76 double clampedProgress() {
77 return Math.max(0.0, Math.min(1.0, barProgress));
78 }
79}
record DreamBossBarData(BarColor barColor, BarStyle barStyle, double barProgress, Function< Player, String > messageProvider)
Immutable data for a single boss bar frame.