Dateien nach "src/main/java/com/mviper/zenithjoin/listeners" hochladen
This commit is contained in:
@@ -0,0 +1,52 @@
|
||||
package com.mviper.zenithjoin.listeners;
|
||||
|
||||
import com.mviper.zenithjoin.Main;
|
||||
import com.mviper.zenithjoin.config.ConfigManager;
|
||||
import com.mviper.zenithjoin.config.MessagesManager;
|
||||
import me.clip.placeholderapi.PlaceholderAPI;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.configuration.file.FileConfiguration;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.player.PlayerJoinEvent;
|
||||
|
||||
public class ActionBarListener implements Listener {
|
||||
|
||||
private final Main plugin;
|
||||
|
||||
public ActionBarListener(Main plugin) {
|
||||
this.plugin = plugin;
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onJoin(PlayerJoinEvent event) {
|
||||
Player player = event.getPlayer();
|
||||
ConfigManager configManager = plugin.getConfigManager();
|
||||
MessagesManager messagesManager = plugin.getMessagesManager();
|
||||
|
||||
FileConfiguration config = configManager.getConfig();
|
||||
FileConfiguration messages = messagesManager.getMessages();
|
||||
|
||||
if (config.getBoolean("ActionBar.EnabledActionBar") && player.hasPermission("zenithjoin.actionbar")) {
|
||||
String actionBarMessage = PlaceholderAPI.setPlaceholders(player,
|
||||
ChatColor.translateAlternateColorCodes('&',
|
||||
messages.getString("ActionBar.Message")
|
||||
.replace("{player}", player.getName())));
|
||||
|
||||
int duration = config.getInt("ActionBar.Duration");
|
||||
|
||||
// Erstelle den /title Befehl für die Action-Bar
|
||||
// JSON-Format wird benötigt, um Farben korrekt darzustellen
|
||||
String jsonMessage = "{\"text\":\"" + actionBarMessage.replace("\"", "\\\"") + "\"}";
|
||||
String command = "title " + player.getName() + " actionbar " + jsonMessage;
|
||||
|
||||
// Sende den Befehl über die Konsole
|
||||
Bukkit.dispatchCommand(Bukkit.getConsoleSender(), command);
|
||||
|
||||
// Da der /title Befehl eine eingebaute Dauer hat,
|
||||
// ist kein separater Scheduler mehr nötig.
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,71 @@
|
||||
package com.mviper.zenithjoin.listeners;
|
||||
|
||||
import com.mviper.zenithjoin.Main;
|
||||
import com.mviper.zenithjoin.config.ConfigManager;
|
||||
import com.mviper.zenithjoin.config.MessagesManager;
|
||||
import me.clip.placeholderapi.PlaceholderAPI;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.configuration.file.FileConfiguration;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.player.PlayerJoinEvent;
|
||||
|
||||
public class FirstJoinListener implements Listener {
|
||||
|
||||
private final Main plugin;
|
||||
|
||||
public FirstJoinListener(Main plugin) {
|
||||
this.plugin = plugin;
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onFirstJoin(PlayerJoinEvent event) {
|
||||
Player player = event.getPlayer();
|
||||
ConfigManager configManager = plugin.getConfigManager();
|
||||
MessagesManager messagesManager = plugin.getMessagesManager();
|
||||
|
||||
// Prüfen, ob der Spieler neu ist
|
||||
if (!player.hasPlayedBefore()) {
|
||||
FileConfiguration config = configManager.getConfig();
|
||||
FileConfiguration messages = messagesManager.getMessages();
|
||||
|
||||
// Erste Beitrittsnachricht in der Konsole
|
||||
if (config.getBoolean("FirstJoin.EnabledFirstJoinMessage")) {
|
||||
// KORREKTUR: Die Reihenfolge ist entscheidend!
|
||||
// 1. Hole die rohe Nachricht.
|
||||
String rawMessage = messages.getString("FirstJoin.JoinMessage");
|
||||
// 2. Ersetze die Platzhalter (z.B. %luckperms_prefix%).
|
||||
String messageWithPlaceholders = PlaceholderAPI.setPlaceholders(player, rawMessage);
|
||||
// 3. Übersetze ALLE Farbcodes (&a, &4, etc.) in das finale Format.
|
||||
String finalMessage = ChatColor.translateAlternateColorCodes('&', messageWithPlaceholders);
|
||||
|
||||
finalMessage = finalMessage
|
||||
.replace("{displayname}", player.getDisplayName())
|
||||
.replace("{player}", player.getName())
|
||||
.replace("{>}", "»")
|
||||
.replace("{<}", "«");
|
||||
event.setJoinMessage(finalMessage);
|
||||
return; // Verhindert, dass die normale Join-Nachricht auch gesendet wird
|
||||
}
|
||||
|
||||
// Titel beim ersten Beitritt
|
||||
if (config.getBoolean("FirstJoin.SendTitleOnFirstJoin") && player.hasPermission("zenithjoin.title")) {
|
||||
String title = ChatColor.translateAlternateColorCodes('&',
|
||||
messages.getString("FirstJoin.Title")
|
||||
.replace("{player}", player.getName()));
|
||||
String subtitle = ChatColor.translateAlternateColorCodes('&',
|
||||
messages.getString("FirstJoin.SubTitle")
|
||||
.replace("{player}", player.getName()));
|
||||
player.sendTitle(title, subtitle);
|
||||
}
|
||||
|
||||
// Feuerwerk beim ersten Beitritt
|
||||
if (config.getBoolean("FirstJoin.SendFireworkOnFirstJoin") && player.hasPermission("zenithjoin.firework")) {
|
||||
// Hier könntest du ein spezielles Feuerwerk entfachen lassen
|
||||
// oder einfach das normale Feuerwerk auslösen, indem du das Event neu feuerts.
|
||||
// Für den Moment lassen wir es so, wie es ist.
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,97 @@
|
||||
package com.mviper.zenithjoin.listeners;
|
||||
|
||||
import com.mviper.zenithjoin.Main;
|
||||
import com.mviper.zenithjoin.config.ConfigManager;
|
||||
import org.bukkit.Color;
|
||||
import org.bukkit.FireworkEffect;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.configuration.file.FileConfiguration;
|
||||
import org.bukkit.entity.EntityType;
|
||||
import org.bukkit.entity.Firework;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.player.PlayerJoinEvent;
|
||||
import org.bukkit.inventory.meta.FireworkMeta;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class JoinFireworkListener implements Listener {
|
||||
|
||||
private final Main plugin;
|
||||
|
||||
public JoinFireworkListener(Main plugin) {
|
||||
this.plugin = plugin;
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onJoin(PlayerJoinEvent event) {
|
||||
ConfigManager configManager = plugin.getConfigManager();
|
||||
FileConfiguration config = configManager.getConfig();
|
||||
|
||||
Player player = event.getPlayer();
|
||||
|
||||
if (config.getBoolean("JoinFirework.EnabledFirework") &&
|
||||
player.hasPermission("zenithjoin.firework")) {
|
||||
|
||||
int amount = config.getInt("JoinFirework.AmountFirework");
|
||||
|
||||
for (int i = 0; i < amount; i++) {
|
||||
Location location = player.getLocation();
|
||||
// ÄNDERUNG: FIREWORK wurde zu FIREWORK_ROCKET
|
||||
Firework firework = (Firework) player.getWorld().spawnEntity(location, EntityType.FIREWORK_ROCKET);
|
||||
FireworkMeta meta = firework.getFireworkMeta();
|
||||
|
||||
meta.setPower(config.getInt("JoinFirework.Firework.Power"));
|
||||
|
||||
ArrayList<Color> colors = new ArrayList<>();
|
||||
ArrayList<Color> fadeColors = new ArrayList<>();
|
||||
|
||||
List<String> colorList = config.getStringList("JoinFirework.Firework.Colors");
|
||||
List<String> fadeColorList = config.getStringList("JoinFirework.Firework.FadeColor");
|
||||
|
||||
for (String colorName : colorList) {
|
||||
colors.add(getColor(colorName));
|
||||
}
|
||||
|
||||
for (String colorName : fadeColorList) {
|
||||
fadeColors.add(getColor(colorName));
|
||||
}
|
||||
|
||||
meta.addEffect(FireworkEffect.builder()
|
||||
.flicker(config.getBoolean("JoinFirework.Flicker"))
|
||||
.trail(config.getBoolean("JoinFirework.Trail"))
|
||||
.with(FireworkEffect.Type.valueOf(config.getString("JoinFirework.Type")))
|
||||
.withColor(colors)
|
||||
.withFade(fadeColors)
|
||||
.build());
|
||||
|
||||
firework.setFireworkMeta(meta);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private Color getColor(String name) {
|
||||
switch (name.toUpperCase()) {
|
||||
case "AQUA": return Color.AQUA;
|
||||
case "BLACK": return Color.BLACK;
|
||||
case "BLUE": return Color.BLUE;
|
||||
case "FUCHSIA": return Color.FUCHSIA;
|
||||
case "GRAY": return Color.GRAY;
|
||||
case "GREEN": return Color.GREEN;
|
||||
case "LIME": return Color.LIME;
|
||||
case "MAROON": return Color.MAROON;
|
||||
case "NAVY": return Color.NAVY;
|
||||
case "OLIVE": return Color.OLIVE;
|
||||
case "ORANGE": return Color.ORANGE;
|
||||
case "PURPLE": return Color.PURPLE;
|
||||
case "RED": return Color.RED;
|
||||
case "SILVER": return Color.SILVER;
|
||||
case "TEAL": return Color.TEAL;
|
||||
case "WHITE": return Color.WHITE;
|
||||
case "YELLOW": return Color.YELLOW;
|
||||
default: return Color.WHITE;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,118 @@
|
||||
package com.mviper.zenithjoin.listeners;
|
||||
|
||||
import com.mviper.zenithjoin.Main;
|
||||
import com.mviper.zenithjoin.config.ConfigManager;
|
||||
import com.mviper.zenithjoin.config.MessagesManager;
|
||||
import com.mviper.zenithjoin.utils.ChatUtils; // WICHTIG: Import der neuen Hilfsklasse
|
||||
import me.clip.placeholderapi.PlaceholderAPI;
|
||||
import net.md_5.bungee.api.chat.ClickEvent;
|
||||
import net.md_5.bungee.api.chat.ComponentBuilder;
|
||||
import net.md_5.bungee.api.chat.HoverEvent;
|
||||
import net.md_5.bungee.api.chat.TextComponent;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.configuration.file.FileConfiguration;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.player.PlayerJoinEvent;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class JoinLinksListener implements Listener {
|
||||
|
||||
private final Main plugin;
|
||||
|
||||
public JoinLinksListener(Main plugin) {
|
||||
this.plugin = plugin;
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onJoin(PlayerJoinEvent event) {
|
||||
Player player = event.getPlayer();
|
||||
ConfigManager configManager = plugin.getConfigManager();
|
||||
MessagesManager messagesManager = plugin.getMessagesManager();
|
||||
|
||||
FileConfiguration config = configManager.getConfig();
|
||||
FileConfiguration messages = messagesManager.getMessages();
|
||||
|
||||
if (config.getBoolean("PlayerJoin.MessageJoin") && player.hasPermission("zenithjoin.welcomemessage")) {
|
||||
// Erste Willkommensnachricht senden
|
||||
List<String> welcomeMessages = messages.getStringList("ZenithJoin.FirstWelcomeMessage");
|
||||
for (String message : welcomeMessages) {
|
||||
String formattedMessage = formatString(player, message);
|
||||
// Nachricht zentrieren und senden
|
||||
player.sendMessage(ChatUtils.centerText(formattedMessage));
|
||||
}
|
||||
|
||||
// Klickbare Links als eine zentrierte Zeile senden
|
||||
TextComponent website = createLinkComponent(messages, "ZenithJoin.ServerLinks.website", player);
|
||||
TextComponent store = createLinkComponent(messages, "ZenithJoin.ServerLinks.store", player);
|
||||
TextComponent twitter = createLinkComponent(messages, "ZenithJoin.ServerLinks.twitter", player);
|
||||
TextComponent discord = createLinkComponent(messages, "ZenithJoin.ServerLinks.discord", player);
|
||||
|
||||
// Erstellen einer Komponente, die alle Links enthält
|
||||
TextComponent line = new TextComponent();
|
||||
|
||||
// Den gesamten Text der Links für die Zentrierung zusammenfügen
|
||||
String fullLinkText = website.getText() + store.getText() + twitter.getText() + discord.getText();
|
||||
|
||||
// Den zusammengesetzten Text zentrieren
|
||||
String centeredFullLinkText = ChatUtils.centerText(fullLinkText);
|
||||
|
||||
// Die Anzahl der führenden Leerzeichen ermitteln
|
||||
String strippedCenteredText = ChatColor.stripColor(centeredFullLinkText);
|
||||
String strippedFullText = ChatColor.stripColor(fullLinkText);
|
||||
int leadingSpaces = strippedCenteredText.length() - strippedCenteredText.trim().length() - (strippedFullText.length() - strippedFullText.trim().length());
|
||||
|
||||
// Füge die Leerzeichen als "unformatierten" Text hinzu
|
||||
line.addExtra(new TextComponent(" ".repeat(Math.max(0, leadingSpaces))));
|
||||
|
||||
// Füge die eigentlichen Link-Komponenten hinzu
|
||||
line.addExtra(website);
|
||||
line.addExtra(store);
|
||||
line.addExtra(twitter);
|
||||
line.addExtra(discord);
|
||||
|
||||
player.spigot().sendMessage(line);
|
||||
|
||||
// Zweite Willkommensnachricht senden
|
||||
List<String> secondWelcomeMessages = messages.getStringList("ZenithJoin.SecondWelcomeMessage");
|
||||
for (String message : secondWelcomeMessages) {
|
||||
String formattedMessage = formatString(player, message);
|
||||
// Nachricht zentrieren und senden
|
||||
player.sendMessage(ChatUtils.centerText(formattedMessage));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Hilfsmethode zum Formatieren eines Strings mit Platzhaltern und Farbcodes.
|
||||
*/
|
||||
private String formatString(Player player, String message) {
|
||||
return PlaceholderAPI.setPlaceholders(player,
|
||||
ChatColor.translateAlternateColorCodes('&', message)
|
||||
.replace("{player}", player.getName())
|
||||
.replace("<1>", "»")
|
||||
.replace("<3>", "«")
|
||||
.replace("<2>", "◀ ▶")
|
||||
.replace("<4>", "◉")
|
||||
.replace("<5>", "❤")
|
||||
.replace("<6>", "▋"));
|
||||
}
|
||||
|
||||
/**
|
||||
* Erstellt eine klickbare TextComponent für einen Link.
|
||||
*/
|
||||
private TextComponent createLinkComponent(FileConfiguration messages, String path, Player player) {
|
||||
String name = formatString(player, messages.getString(path + ".name"));
|
||||
String url = messages.getString(path + ".pagelink");
|
||||
String hoverText = formatString(player, messages.getString(path + ".description"));
|
||||
|
||||
TextComponent component = new TextComponent(name);
|
||||
component.setClickEvent(new ClickEvent(ClickEvent.Action.OPEN_URL, url));
|
||||
component.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT,
|
||||
new ComponentBuilder(hoverText).create()));
|
||||
|
||||
return component;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,55 @@
|
||||
package com.mviper.zenithjoin.listeners;
|
||||
|
||||
import com.mviper.zenithjoin.Main;
|
||||
import com.mviper.zenithjoin.config.ConfigManager;
|
||||
import com.mviper.zenithjoin.config.MessagesManager;
|
||||
import com.mviper.zenithjoin.utils.ChatUtils; // WICHTIG: Import der neuen Hilfsklasse
|
||||
import me.clip.placeholderapi.PlaceholderAPI;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.configuration.file.FileConfiguration;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.player.PlayerJoinEvent;
|
||||
|
||||
public class JoinMessageListener implements Listener {
|
||||
|
||||
private final Main plugin;
|
||||
|
||||
public JoinMessageListener(Main plugin) {
|
||||
this.plugin = plugin;
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onJoin(PlayerJoinEvent event) {
|
||||
ConfigManager configManager = plugin.getConfigManager();
|
||||
MessagesManager messagesManager = plugin.getMessagesManager();
|
||||
|
||||
FileConfiguration config = configManager.getConfig();
|
||||
FileConfiguration messages = messagesManager.getMessages();
|
||||
|
||||
Player player = event.getPlayer();
|
||||
|
||||
// Standard-Join-Nachricht leeren
|
||||
event.setJoinMessage("");
|
||||
|
||||
// Benutzerdefinierte Join-Nachricht senden, wenn aktiviert
|
||||
if (config.getBoolean("PlayerJoinMessage.PlayerJoin") &&
|
||||
player.hasPermission("zenithjoin.joinmessage")) {
|
||||
|
||||
String rawMessage = messages.getString("PlayerJoinMessage.Join");
|
||||
String messageWithPlaceholders = PlaceholderAPI.setPlaceholders(player, rawMessage);
|
||||
String finalMessage = ChatColor.translateAlternateColorCodes('&', messageWithPlaceholders);
|
||||
|
||||
finalMessage = finalMessage
|
||||
.replace("{displayname}", player.getDisplayName())
|
||||
.replace("{player}", player.getName())
|
||||
.replace("{>}", "»")
|
||||
.replace("{<}", "«");
|
||||
|
||||
// Nachricht zentrieren und setzen
|
||||
String centeredMessage = ChatUtils.centerText(finalMessage);
|
||||
event.setJoinMessage(centeredMessage);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,53 @@
|
||||
package com.mviper.zenithjoin.listeners;
|
||||
|
||||
import com.mviper.zenithjoin.Main;
|
||||
import com.mviper.zenithjoin.config.ConfigManager;
|
||||
import com.mviper.zenithjoin.config.MessagesManager;
|
||||
import me.clip.placeholderapi.PlaceholderAPI;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.configuration.file.FileConfiguration;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.player.PlayerQuitEvent;
|
||||
|
||||
public class LeaveMessageListener implements Listener {
|
||||
|
||||
private final Main plugin;
|
||||
|
||||
public LeaveMessageListener(Main plugin) {
|
||||
this.plugin = plugin;
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onLeave(PlayerQuitEvent event) {
|
||||
ConfigManager configManager = plugin.getConfigManager();
|
||||
MessagesManager messagesManager = plugin.getMessagesManager();
|
||||
|
||||
FileConfiguration config = configManager.getConfig();
|
||||
FileConfiguration messages = messagesManager.getMessages();
|
||||
|
||||
Player player = event.getPlayer();
|
||||
|
||||
// Clear default leave message
|
||||
event.setQuitMessage("");
|
||||
|
||||
// Send custom leave message if enabled
|
||||
if (config.getBoolean("PlayerLeaveMessage.PlayerLeave") &&
|
||||
player.hasPermission("zenithjoin.leavemessage")) {
|
||||
|
||||
// KORREKTUR: Die Reihenfolge ist entscheidend!
|
||||
String rawMessage = messages.getString("PlayerLeaveMessage.Leave");
|
||||
String messageWithPlaceholders = PlaceholderAPI.setPlaceholders(player, rawMessage);
|
||||
String finalMessage = ChatColor.translateAlternateColorCodes('&', messageWithPlaceholders);
|
||||
|
||||
finalMessage = finalMessage
|
||||
.replace("{displayname}", player.getDisplayName())
|
||||
.replace("{player}", player.getName())
|
||||
.replace("{>}", "»")
|
||||
.replace("{<}", "«");
|
||||
|
||||
event.setQuitMessage(finalMessage);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,43 @@
|
||||
package com.mviper.zenithjoin.listeners;
|
||||
|
||||
import com.mviper.zenithjoin.Main;
|
||||
import com.mviper.zenithjoin.config.ConfigManager;
|
||||
import com.mviper.zenithjoin.config.MessagesManager;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.configuration.file.FileConfiguration;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.player.PlayerJoinEvent;
|
||||
|
||||
public class TitleListener implements Listener {
|
||||
|
||||
private final Main plugin;
|
||||
|
||||
public TitleListener(Main plugin) {
|
||||
this.plugin = plugin;
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onJoin(PlayerJoinEvent event) {
|
||||
ConfigManager configManager = plugin.getConfigManager();
|
||||
MessagesManager messagesManager = plugin.getMessagesManager();
|
||||
|
||||
FileConfiguration config = configManager.getConfig();
|
||||
FileConfiguration messages = messagesManager.getMessages();
|
||||
|
||||
if (config.getBoolean("TitlesEnabled.PlayerJoinTitle") && event.getPlayer().hasPermission("zenithjoin.title")) {
|
||||
Player player = event.getPlayer();
|
||||
|
||||
String title = ChatColor.translateAlternateColorCodes('&',
|
||||
messages.getString("JoinTitle.Title")
|
||||
.replace("{player}", player.getName()));
|
||||
|
||||
String subtitle = ChatColor.translateAlternateColorCodes('&',
|
||||
messages.getString("JoinTitle.SubTitle")
|
||||
.replace("{player}", player.getName()));
|
||||
|
||||
player.sendTitle(title, subtitle);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user