Dateien nach "src/main/java/de/nexuslobby/modules/actionbar" hochladen

This commit is contained in:
2026-01-22 14:55:48 +00:00
parent 7bd22bbe0d
commit a3215ae3f3

View File

@@ -0,0 +1,82 @@
package de.nexuslobby.modules.actionbar;
import de.nexuslobby.NexusLobby;
import de.nexuslobby.api.Module;
import net.md_5.bungee.api.ChatMessageType;
import net.md_5.bungee.api.chat.TextComponent;
import org.bukkit.Bukkit;
import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.entity.Player;
import org.bukkit.scheduler.BukkitRunnable;
import java.util.List;
public class ActionBarModule implements Module {
private int messageIndex = 0;
private int charIndex = 0;
private int pauseCounter = 0;
private boolean isWaiting = false;
private BukkitRunnable task;
@Override
public String getName() { return "ActionBar"; }
@Override
public void onEnable() {
FileConfiguration vConfig = NexusLobby.getInstance().getVisualsConfig();
if (!vConfig.getBoolean("actionbar.enabled", true)) return;
List<String> messages = vConfig.getStringList("actionbar.messages");
if (messages.isEmpty()) return;
startTask(messages, vConfig);
}
private void startTask(List<String> messages, FileConfiguration vConfig) {
int speed = vConfig.getInt("actionbar.animation-speed", 2);
int holdDuration = vConfig.getInt("actionbar.hold-duration", 100);
task = new BukkitRunnable() {
@Override
public void run() {
String currentMessage = messages.get(messageIndex);
if (!isWaiting) {
if (charIndex < currentMessage.length()) {
charIndex++;
} else {
isWaiting = true;
}
} else {
pauseCounter++;
if (pauseCounter >= holdDuration) {
pauseCounter = 0;
charIndex = 0;
isWaiting = false;
messageIndex = (messageIndex + 1) % messages.size();
}
}
String textToSend = currentMessage.substring(0, charIndex);
sendToAll(colorize(textToSend));
}
};
task.runTaskTimer(NexusLobby.getInstance(), 0L, (long) speed);
}
private void sendToAll(String message) {
for (Player player : Bukkit.getOnlinePlayers()) {
player.spigot().sendMessage(ChatMessageType.ACTION_BAR, new TextComponent(message));
}
}
private String colorize(String s) {
return s == null ? "" : s.replace("&", "§");
}
@Override
public void onDisable() {
if (task != null) task.cancel();
}
}