package de.fanta.challengeutils;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.TranslatableComponent;
import net.kyori.adventure.title.Title;
import net.kyori.adventure.util.Ticks;
import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.Sound;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import javax.annotation.Nullable;
public interface ComponentUtilImpl {
public Component getPrefix();
default void sendMessage(CommandSender sender, Component component) {
Component message = getPrefix().append(component);
sender.sendMessage(message);
}
default void sendNormalMessage(CommandSender sender, String string) {
sendMessage(sender, Component.text(string).color(Color.GREEN));
}
default void sendWarningMessage(CommandSender sender, String string) {
sendMessage(sender, Component.text(string).color(Color.ORANGE));
}
default void sendErrorMessage(CommandSender sender, String string) {
sendMessage(sender, Component.text(string).color(Color.RED));
}
default void sendDebugMessage(CommandSender sender, String string) {
if (sender != null) {
if (sender.hasPermission("fanta.debug")) {
sendMessage(sender, Component.text(string).color(Color.PINK));
}
}
}
default void sendBrodCastMessage(Component component) {
for (Player player : Bukkit.getOnlinePlayers()) {
sendMessage(player, component);
}
}
default void sendTitleToAll(Component headline, Component text, int in, int time, int out, boolean pling) {
for (Player p : Bukkit.getOnlinePlayers()) {
sendTitleToPlayer(p, headline, text, in, time, out, pling);
}
}
default void sendTitleToAll(Component headline, Component text, boolean pling) {
sendTitleToAll(headline, text, 10, 60, 10, pling);
}
default void sendTitleToAll(Component headline, Component text) {
sendTitleToAll(headline, text, 10, 60, 10, true);
}
default void sendTitleToPlayer(Player player, @Nullable Component headline, @Nullable Component text, int in, int time, int out, boolean pling) {
Component headLine = headline != null ? headline.color(Color.BLUE) : Component.empty();
Component textComponent = text != null ? text : Component.empty();
Title title = Title.title(headLine, textComponent, Title.Times.times(Ticks.duration(in), Ticks.duration(time), Ticks.duration(out)));
player.showTitle(title);
if (pling) {
player.playSound(player.getLocation(), Sound.BLOCK_NOTE_BLOCK_PLING, 1.0F, 2.0F);
}
}
default Component getTrasnlateItemComponent(Material material) {
TranslatableComponent component = Component.translatable(material.translationKey());
if (material.name().toLowerCase().contains("music_disc") || material.name().toLowerCase().contains("banner_pattern")) {
component = component.append(Component.text(" ").append(Component.translatable(material.translationKey() + ".desc")));
}
if (material == Material.NETHERITE_UPGRADE_SMITHING_TEMPLATE) {
component = component.append(Component.text(" ").append(Component.translatable("upgrade.minecraft.netherite_upgrade")));
} else if (material.name().endsWith("_SMITHING_TEMPLATE")) {
String key = material.getItemTranslationKey();
key = key.replace("item.minecraft.", "").replace("_armor_trim_smithing_template", "");
component = component.append(Component.text(" ").append(Component.translatable("trim_pattern.minecraft." + key)));
}
return component;
}
}