diff --git a/.gradle/8.8/fileHashes/resourceHashesCache.bin b/.gradle/8.8/fileHashes/resourceHashesCache.bin
index a0c134a..97ed5bd 100644
Binary files a/.gradle/8.8/fileHashes/resourceHashesCache.bin and b/.gradle/8.8/fileHashes/resourceHashesCache.bin differ
diff --git a/.idea/discord.xml b/.idea/discord.xml
index 30bab2a..d8e9561 100644
--- a/.idea/discord.xml
+++ b/.idea/discord.xml
@@ -1,7 +1,7 @@
-
+
\ No newline at end of file
diff --git a/src/main/java/me/freezy/plugins/papermc/blazesmp/BlazeSMP.java b/src/main/java/me/freezy/plugins/papermc/blazesmp/BlazeSMP.java
index 464b798..f8d189b 100644
--- a/src/main/java/me/freezy/plugins/papermc/blazesmp/BlazeSMP.java
+++ b/src/main/java/me/freezy/plugins/papermc/blazesmp/BlazeSMP.java
@@ -3,10 +3,12 @@ package me.freezy.plugins.papermc.blazesmp;
import lombok.Getter;
import me.freezy.plugins.papermc.blazesmp.command.ClaimCommand;
import me.freezy.plugins.papermc.blazesmp.command.ClanCommand;
+import me.freezy.plugins.papermc.blazesmp.command.HomeCommand;
import me.freezy.plugins.papermc.blazesmp.command.ReportCommand;
import me.freezy.plugins.papermc.blazesmp.listener.*;
import me.freezy.plugins.papermc.blazesmp.module.manager.Clans;
import me.freezy.plugins.papermc.blazesmp.module.manager.Homes;
+import me.freezy.plugins.papermc.blazesmp.module.manager.L4M4;
import me.freezy.plugins.papermc.blazesmp.module.manager.ProtectedBlocks;
import me.freezy.plugins.papermc.blazesmp.tasks.PlayerNameUpdate;
import org.bukkit.configuration.file.FileConfiguration;
@@ -30,11 +32,6 @@ public final class BlazeSMP extends JavaPlugin {
this.log.info("Loading BlazeSMP...");
- this.log.info("Loading Homes...");
- this.homes=new Homes();
- this.homes.load();
- this.log.info("Loaded Homes!");
-
this.log.info("Loading ProtectedBlocks...");
this.protectedBlocks=new ProtectedBlocks();
this.protectedBlocks.load();
@@ -51,6 +48,10 @@ public final class BlazeSMP extends JavaPlugin {
saveConfig();
this.log.info("Loaded config!");
+ this.log.info("Loading L4M4...");
+ L4M4.init();
+ this.log.info("Loaded L4M4!");
+
this.log.info("Loaded BlazeSMP!");
}
@@ -60,10 +61,16 @@ public final class BlazeSMP extends JavaPlugin {
this.log.info("Enabling BlazeSMP...");
+ this.log.info("Loading Homes...");
+ this.homes=new Homes();
+ this.homes.load();
+ this.log.info("Loaded Homes!");
+
this.log.info("Registering Commands...");
new ClanCommand().register();
new ReportCommand().register();
new ClaimCommand().register();
+ new HomeCommand().register();
this.log.info("Registered Commands!");
this.log.info("Registering EventListeners...");
diff --git a/src/main/java/me/freezy/plugins/papermc/blazesmp/command/ClaimCommand.java b/src/main/java/me/freezy/plugins/papermc/blazesmp/command/ClaimCommand.java
index 70cd449..7efdf05 100644
--- a/src/main/java/me/freezy/plugins/papermc/blazesmp/command/ClaimCommand.java
+++ b/src/main/java/me/freezy/plugins/papermc/blazesmp/command/ClaimCommand.java
@@ -5,6 +5,7 @@ import me.freezy.plugins.papermc.blazesmp.command.util.SimpleCommand;
import me.freezy.plugins.papermc.blazesmp.listener.ChunkInventoryManager;
import me.freezy.plugins.papermc.blazesmp.module.Clan;
import me.freezy.plugins.papermc.blazesmp.module.manager.Clans;
+import me.freezy.plugins.papermc.blazesmp.module.manager.L4M4;
import net.kyori.adventure.text.minimessage.MiniMessage;
import org.bukkit.Chunk;
import org.bukkit.command.Command;
@@ -27,12 +28,12 @@ public class ClaimCommand extends SimpleCommand {
@Override
public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, @NotNull String[] args) {
if (!(sender instanceof Player player)) {
- sender.sendMessage(MiniMessage.miniMessage().deserialize("You must be a player to use this command!"));
+ sender.sendMessage(MiniMessage.miniMessage().deserialize(L4M4.get("error.not_a_player")));
return true;
}
UUID playerUUID = player.getUniqueId();
if (!clans.isInClan(playerUUID)) {
- player.sendMessage(MiniMessage.miniMessage().deserialize("You must be in a clan to claim/unclaim chunks!"));
+ player.sendMessage(MiniMessage.miniMessage().deserialize(L4M4.get("error.not_in_clan")));
return true;
} else {
if (label.equalsIgnoreCase("claim")) {
@@ -41,21 +42,21 @@ public class ClaimCommand extends SimpleCommand {
return true;
}
Clan playerClan = clans.getClanByMember(playerUUID);
- LinkedHashMap> existingClaims=clans.getClanChunks(playerClan);
+ LinkedHashMap> existingClaims = clans.getClanChunks(playerClan);
if (!existingClaims.containsKey(playerUUID)) {
existingClaims.put(playerUUID, new LinkedList<>());
}
LinkedList playerClaims = existingClaims.get(playerUUID);
int MAX_CLAIMS = 50;
if (playerClaims.size() >= MAX_CLAIMS) {
- player.sendMessage(MiniMessage.miniMessage().deserialize("You have reached the maximum amount of claims!"));
+ player.sendMessage(MiniMessage.miniMessage().deserialize(L4M4.get("error.max_claims_reached")));
} else {
Chunk playerChunk = player.getLocation().getChunk();
if (clans.isChunkClaimed(playerChunk)) {
- player.sendMessage(MiniMessage.miniMessage().deserialize("This chunk is already claimed!"));
+ player.sendMessage(MiniMessage.miniMessage().deserialize(L4M4.get("error.chunk_already_claimed")));
} else {
playerClaims.add(playerChunk);
- player.sendMessage(MiniMessage.miniMessage().deserialize("Claimed chunk!"));
+ player.sendMessage(MiniMessage.miniMessage().deserialize(L4M4.get("success.chunk_claimed")));
existingClaims.put(playerUUID, playerClaims);
clans.setClanChunks(playerClan, existingClaims);
playerClan.save();
@@ -65,19 +66,19 @@ public class ClaimCommand extends SimpleCommand {
return true;
} else if (label.equalsIgnoreCase("unclaim")) {
Clan playerClan = clans.getClanByMember(playerUUID);
- LinkedHashMap> existingClaims=clans.getClanChunks(playerClan);
+ LinkedHashMap> existingClaims = clans.getClanChunks(playerClan);
if (existingClaims.containsKey(playerUUID)) {
LinkedList playerClaims = existingClaims.get(playerUUID);
Chunk playerChunk = player.getLocation().getChunk();
if (playerClaims.contains(playerChunk)) {
playerClaims.remove(playerChunk);
- player.sendMessage(MiniMessage.miniMessage().deserialize("Unclaimed chunk!"));
+ player.sendMessage(MiniMessage.miniMessage().deserialize(L4M4.get("success.chunk_unclaimed")));
existingClaims.put(playerUUID, playerClaims);
clans.setClanChunks(playerClan, existingClaims);
playerClan.save();
clans.saveAllClans();
} else {
- player.sendMessage(MiniMessage.miniMessage().deserialize("You do not own this chunk!"));
+ player.sendMessage(MiniMessage.miniMessage().deserialize(L4M4.get("error.chunk_not_owned")));
}
return true;
}
diff --git a/src/main/java/me/freezy/plugins/papermc/blazesmp/command/ClanCommand.java b/src/main/java/me/freezy/plugins/papermc/blazesmp/command/ClanCommand.java
index de3627f..b11a1a9 100644
--- a/src/main/java/me/freezy/plugins/papermc/blazesmp/command/ClanCommand.java
+++ b/src/main/java/me/freezy/plugins/papermc/blazesmp/command/ClanCommand.java
@@ -4,7 +4,10 @@ import me.freezy.plugins.papermc.blazesmp.BlazeSMP;
import me.freezy.plugins.papermc.blazesmp.command.util.SimpleCommand;
import me.freezy.plugins.papermc.blazesmp.module.Clan;
import me.freezy.plugins.papermc.blazesmp.module.manager.Clans;
+import me.freezy.plugins.papermc.blazesmp.module.manager.L4M4;
import net.kyori.adventure.text.Component;
+import net.kyori.adventure.text.format.TextDecoration;
+import static net.kyori.adventure.text.minimessage.MiniMessage.miniMessage;
import org.bukkit.Bukkit;
import org.bukkit.OfflinePlayer;
import org.bukkit.command.Command;
@@ -17,12 +20,11 @@ import java.util.*;
import java.util.stream.Collectors;
import java.util.stream.Stream;
-import static net.kyori.adventure.text.minimessage.MiniMessage.miniMessage;
-
public class ClanCommand extends SimpleCommand {
+
private final Clans clans;
- // Mapping: Clan -> Liste der Join-Anfragen (Spieler, die einer bestehenden Clan beitreten möchten)
+ // Mapping: Clan -> Liste der Join-Anfragen (Spieler, die einem Clan beitreten möchten)
private final LinkedHashMap> clanJoins = new LinkedHashMap<>();
// Mapping: Clan -> Liste der Einladungen (Spieler, die vom Clan eingeladen wurden)
private final LinkedHashMap> clanInvites = new LinkedHashMap<>();
@@ -39,29 +41,27 @@ public class ClanCommand extends SimpleCommand {
@NotNull String label,
@NotNull String[] args) {
if (!(sender instanceof Player player)) {
- sender.sendMessage(miniMessage().deserialize("You must be a player to execute this command!"));
+ sender.sendMessage(miniMessage().deserialize(L4M4.get("error.not_a_player")));
return true;
}
UUID playerUUID = player.getUniqueId();
- // Keine Subcommands -> zeige Hilfe
+ // Keine Subcommands → Hilfe anzeigen
if (args.length == 0) {
sendHelpMessage(player, playerUUID);
return true;
}
- // Verarbeitung der Unterbefehle
String subCommand = args[0].toLowerCase();
switch (subCommand) {
-
// ========== CREATE ==========
case "create" -> {
if (clans.isInClan(playerUUID)) {
- player.sendMessage(miniMessage().deserialize("You are already in a clan!"));
+ player.sendMessage(miniMessage().deserialize(L4M4.get("error.already_in_clan")));
return true;
}
if (args.length < 3) {
- player.sendMessage(miniMessage().deserialize("Usage: /clan create "));
+ player.sendMessage(miniMessage().deserialize(L4M4.get("usage.clan_create")));
return true;
}
String clanName = args[1];
@@ -69,73 +69,92 @@ public class ClanCommand extends SimpleCommand {
Component tagComponent = miniMessage().deserialize(clanTag);
Clan newClan = new Clan(clanName, tagComponent, playerUUID);
- // Clan hinzufügen und speichern
clans.addClan(newClan);
newClan.save();
-
- player.sendMessage(miniMessage().deserialize("Clan created successfully!"));
+ player.sendMessage(miniMessage().deserialize(L4M4.get("success.clan_created")));
return true;
}
+
+ // ========== CHAT ==========
case "chat" -> {
if (!clans.isInClan(playerUUID)) {
- player.sendMessage(miniMessage().deserialize("You are not in a clan!"));
+ player.sendMessage(miniMessage().deserialize(L4M4.get("error.not_in_clan_chat")));
return true;
}
Clan clan = clans.getClanByMember(playerUUID);
if (args.length < 2) {
- player.sendMessage(miniMessage().deserialize("Usage: /clan chat "));
+ player.sendMessage(miniMessage().deserialize(L4M4.get("usage.clan_chat")));
return true;
}
String message = String.join(" ", Arrays.copyOfRange(args, 1, args.length));
+ // Verwende den externen Chat-Format-String
Component chatMessage = miniMessage().deserialize(
- String.format("[Clan] %s: %s", player.getName(), message));
+ String.format(L4M4.get("chat.format"), player.getName(), message)
+ ).decoration(TextDecoration.ITALIC, true);
+ player.sendMessage(chatMessage);
+ // Sende Nachricht an alle Clanmitglieder (außer Sender)
for (UUID mem : clan.getMembers()) {
+ if (mem.equals(playerUUID)) continue;
Player member = Bukkit.getPlayer(mem);
if (member != null && member.isOnline()) {
member.sendMessage(chatMessage);
}
}
+ // Zusätzlich Leader und Vice benachrichtigen
+ Player leader = Bukkit.getPlayer(clan.getLeaderUUID());
+ if (leader != null && leader.isOnline() && !leader.getUniqueId().equals(playerUUID)) {
+ leader.sendMessage(chatMessage);
+ }
+ if (clan.getViceUUID() != null) {
+ Player vice = Bukkit.getPlayer(clan.getViceUUID());
+ if (vice != null && vice.isOnline() && !vice.getUniqueId().equals(playerUUID)) {
+ vice.sendMessage(chatMessage);
+ }
+ }
return true;
}
// ========== JOIN ==========
case "join" -> {
if (clans.isInClan(playerUUID)) {
- player.sendMessage(miniMessage().deserialize("You are already in a clan!"));
+ player.sendMessage(miniMessage().deserialize(L4M4.get("error.already_in_clan")));
return true;
}
if (args.length < 2) {
- player.sendMessage(miniMessage().deserialize("Usage: /clan join "));
+ player.sendMessage(miniMessage().deserialize(L4M4.get("usage.clan_join")));
return true;
}
String targetClanName = args[1];
Clan targetClan = clans.getClanByName(targetClanName);
if (targetClan == null) {
- player.sendMessage(miniMessage().deserialize("Clan not found!"));
+ player.sendMessage(miniMessage().deserialize(L4M4.get("error.clan_not_found")));
return true;
}
-
clanJoins.computeIfAbsent(targetClan, k -> new LinkedList<>());
LinkedList joinRequests = clanJoins.get(targetClan);
-
if (joinRequests.contains(playerUUID)) {
- player.sendMessage(miniMessage().deserialize("You have already requested to join this clan."));
+ player.sendMessage(miniMessage().deserialize(L4M4.get("error.already_requested")));
return true;
}
joinRequests.add(playerUUID);
player.sendMessage(miniMessage().deserialize(
- String.format("Join request sent to clan %s!", targetClan.getName())));
-
- // Benachrichtige den Clan-Leader (sofern online)
+ String.format(L4M4.get("success.join_request_sent"), targetClan.getName())
+ ));
+ // Benachrichtige den Clan-Leader, sofern online
Player leader = Bukkit.getPlayer(targetClan.getLeaderUUID());
if (leader != null && leader.isOnline()) {
String acceptCommand = "/clan accept " + player.getName();
String denyCommand = "/clan deny " + player.getName();
- Component notifyMsg = miniMessage().deserialize(
- String.format("New join request from %s.\n", player.getName())
- + String.format("[Accept] ", acceptCommand)
- + String.format("[Deny]", denyCommand)
- );
+ String notifyText = String.format(L4M4.get("notification.invite"), targetClan.getName());
+ Component notifyMsg = miniMessage().deserialize(notifyText)
+ .append(Component.text(" "))
+ .append(miniMessage().deserialize(
+ "" + L4M4.get("button.accept") + ""
+ ))
+ .append(Component.text(" "))
+ .append(miniMessage().deserialize(
+ "" + L4M4.get("button.deny") + ""
+ ));
leader.sendMessage(notifyMsg);
}
return true;
@@ -144,56 +163,66 @@ public class ClanCommand extends SimpleCommand {
// ========== INVITE ==========
case "invite" -> {
if (!clans.isLeader(playerUUID) && !clans.isVice(playerUUID)) {
- player.sendMessage(miniMessage().deserialize("You are not authorized to invite players to a clan!"));
+ player.sendMessage(miniMessage().deserialize(L4M4.get("error.not_authorized_invite")));
return true;
}
if (args.length < 2) {
- player.sendMessage(miniMessage().deserialize("Usage: /clan invite "));
+ player.sendMessage(miniMessage().deserialize(L4M4.get("usage.clan_invite")));
return true;
}
String inviteeName = args[1];
Player invitee = Bukkit.getPlayer(inviteeName);
if (invitee == null || !invitee.isOnline()) {
- player.sendMessage(miniMessage().deserialize(String.format("Player %s is not online!", inviteeName)));
+ player.sendMessage(miniMessage().deserialize(
+ String.format(L4M4.get("error.player_not_online"), inviteeName)
+ ));
return true;
}
if (clans.isInClan(invitee.getUniqueId())) {
- player.sendMessage(miniMessage().deserialize(String.format("%s is already in a clan!", inviteeName)));
+ player.sendMessage(miniMessage().deserialize(
+ String.format(L4M4.get("error.player_already_in_clan"), inviteeName)
+ ));
return true;
}
Clan inviterClan = clans.getClanByMember(playerUUID);
if (inviterClan == null) {
- player.sendMessage(miniMessage().deserialize("Error: Your clan could not be found."));
+ player.sendMessage(miniMessage().deserialize(L4M4.get("error.clan_not_found")));
return true;
}
clanInvites.computeIfAbsent(inviterClan, k -> new LinkedList<>());
LinkedList inviteList = clanInvites.get(inviterClan);
-
if (inviteList.contains(invitee.getUniqueId())) {
- player.sendMessage(miniMessage().deserialize(String.format("Player %s has already been invited!", inviteeName)));
+ player.sendMessage(miniMessage().deserialize(
+ String.format(L4M4.get("error.already_requested"), inviteeName)
+ ));
return true;
}
inviteList.add(invitee.getUniqueId());
- player.sendMessage(miniMessage().deserialize(String.format("Invite sent to %s.", inviteeName)));
-
+ player.sendMessage(miniMessage().deserialize(
+ String.format(L4M4.get("success.invite_sent"), inviteeName)
+ ));
// Benachrichtige den Eingeladenen
String acceptCmd = "/clan accept " + inviterClan.getName();
String denyCmd = "/clan deny " + inviterClan.getName();
- Component inviteNotify = miniMessage().deserialize(
- String.format("Invite from clan %s.\n", inviterClan.getName())
- + String.format("[Accept] ", acceptCmd)
- + String.format("[Deny]", denyCmd)
- );
+ String inviteNotifyText = String.format(L4M4.get("notification.invite"), inviterClan.getName());
+ Component inviteNotify = miniMessage().deserialize(inviteNotifyText)
+ .append(Component.text("\n"))
+ .append(miniMessage().deserialize(
+ "" + L4M4.get("button.accept") + ""
+ ))
+ .append(Component.text(" "))
+ .append(miniMessage().deserialize(
+ "" + L4M4.get("button.deny") + ""
+ ));
invitee.sendMessage(inviteNotify);
return true;
}
// ========== ACCEPT ==========
case "accept" -> {
- // 1) Spieler ist noch in keinem Clan -> Einladung annehmen
if (!clans.isInClan(playerUUID)) {
if (args.length < 2) {
- player.sendMessage(miniMessage().deserialize("Usage: /clan accept "));
+ player.sendMessage(miniMessage().deserialize(L4M4.get("usage.clan_accept")));
return true;
}
String clanNameForInvite = args[1];
@@ -206,57 +235,60 @@ public class ClanCommand extends SimpleCommand {
}
}
if (invitedClan == null) {
- player.sendMessage(miniMessage().deserialize(String.format("No invite found from clan %s.", clanNameForInvite)));
+ player.sendMessage(miniMessage().deserialize(
+ String.format(L4M4.get("error.invite_not_found"), clanNameForInvite)
+ ));
return true;
}
invitedClan.getMembers().add(playerUUID);
clanInvites.get(invitedClan).remove(playerUUID);
-
player.sendMessage(miniMessage().deserialize(
- String.format("You have joined the clan %s!", invitedClan.getName())));
-
+ String.format(L4M4.get("success.join_clan"), invitedClan.getName())
+ ));
Player leader = Bukkit.getPlayer(invitedClan.getLeaderUUID());
if (leader != null && leader.isOnline()) {
leader.sendMessage(miniMessage().deserialize(
- String.format("%s has accepted the clan invite.", player.getName())));
+ String.format(L4M4.get("success.invite_accepted_notify"), player.getName())
+ ));
}
invitedClan.save();
} else {
- // 2) Spieler ist bereits in einem Clan -> Beitrittsanfrage annehmen (Leader/Vice)
if (!clans.isLeader(playerUUID) && !clans.isVice(playerUUID)) {
- player.sendMessage(miniMessage().deserialize("You are not authorized to accept join requests."));
+ player.sendMessage(miniMessage().deserialize(L4M4.get("error.not_authorized_accept")));
return true;
}
if (args.length < 2) {
- player.sendMessage(miniMessage().deserialize("Usage: /clan accept "));
+ player.sendMessage(miniMessage().deserialize(L4M4.get("usage.clan_accept_request")));
return true;
}
String joinRequesterName = args[1];
Clan currentClan = clans.getClanByMember(playerUUID);
if (currentClan == null) {
- player.sendMessage(miniMessage().deserialize("Error: Your clan could not be found."));
+ player.sendMessage(miniMessage().deserialize(L4M4.get("error.clan_not_found")));
return true;
}
LinkedList joinReqs = clanJoins.get(currentClan);
if (joinReqs == null || joinReqs.isEmpty()) {
- player.sendMessage(miniMessage().deserialize("No join requests available."));
+ player.sendMessage(miniMessage().deserialize(L4M4.get("error.no_join_requests")));
return true;
}
UUID requesterUUID = getUuidByName(joinReqs, joinRequesterName);
if (requesterUUID == null) {
- player.sendMessage(miniMessage().deserialize(String.format("No join request found from %s.", joinRequesterName)));
+ player.sendMessage(miniMessage().deserialize(
+ String.format(L4M4.get("error.join_request_not_found"), joinRequesterName)
+ ));
return true;
}
currentClan.getMembers().add(requesterUUID);
joinReqs.remove(requesterUUID);
-
player.sendMessage(miniMessage().deserialize(
- String.format("You have accepted %s's join request.", joinRequesterName)));
-
+ String.format(L4M4.get("success.join_request_accepted"), joinRequesterName)
+ ));
Player requester = Bukkit.getPlayer(requesterUUID);
if (requester != null && requester.isOnline()) {
requester.sendMessage(miniMessage().deserialize(
- String.format("Your join request for clan %s has been accepted.", currentClan.getName())));
+ String.format(L4M4.get("success.join_request_accepted_notify"), currentClan.getName())
+ ));
}
currentClan.save();
}
@@ -265,10 +297,9 @@ public class ClanCommand extends SimpleCommand {
// ========== DENY ==========
case "deny" -> {
- // 1) Spieler ist noch in keinem Clan -> Einladung ablehnen
if (!clans.isInClan(playerUUID)) {
if (args.length < 2) {
- player.sendMessage(miniMessage().deserialize("Usage: /clan deny "));
+ player.sendMessage(miniMessage().deserialize(L4M4.get("usage.clan_deny_invite")));
return true;
}
String clanNameForInvite = args[1];
@@ -281,53 +312,57 @@ public class ClanCommand extends SimpleCommand {
}
}
if (invitedClan == null) {
- player.sendMessage(miniMessage().deserialize(String.format("No invite found from clan %s.", clanNameForInvite)));
+ player.sendMessage(miniMessage().deserialize(
+ String.format(L4M4.get("error.invite_not_found"), clanNameForInvite)
+ ));
return true;
}
clanInvites.get(invitedClan).remove(playerUUID);
player.sendMessage(miniMessage().deserialize(
- String.format("You have declined the clan invite from %s.", invitedClan.getName())));
-
+ String.format(L4M4.get("error.invite_declined"), invitedClan.getName())
+ ));
Player leader = Bukkit.getPlayer(invitedClan.getLeaderUUID());
if (leader != null && leader.isOnline()) {
leader.sendMessage(miniMessage().deserialize(
- String.format("%s has declined the clan invite.", player.getName())));
+ String.format(L4M4.get("error.invite_declined_notify"), player.getName())
+ ));
}
} else {
- // 2) Spieler ist in einem Clan -> Beitrittsanfrage ablehnen (Leader/Vice)
if (!clans.isLeader(playerUUID) && !clans.isVice(playerUUID)) {
- player.sendMessage(miniMessage().deserialize("You are not authorized to deny join requests."));
+ player.sendMessage(miniMessage().deserialize(L4M4.get("error.not_authorized_deny")));
return true;
}
if (args.length < 2) {
- player.sendMessage(miniMessage().deserialize("Usage: /clan deny "));
+ player.sendMessage(miniMessage().deserialize(L4M4.get("usage.clan_deny_request")));
return true;
}
String joinRequesterName = args[1];
Clan currentClan = clans.getClanByMember(playerUUID);
if (currentClan == null) {
- player.sendMessage(miniMessage().deserialize("Error: Your clan could not be found."));
+ player.sendMessage(miniMessage().deserialize(L4M4.get("error.clan_not_found")));
return true;
}
LinkedList joinReqs = clanJoins.get(currentClan);
if (joinReqs == null || joinReqs.isEmpty()) {
- player.sendMessage(miniMessage().deserialize("No join requests available."));
+ player.sendMessage(miniMessage().deserialize(L4M4.get("error.no_join_requests")));
return true;
}
UUID requesterUUID = getUuidByName(joinReqs, joinRequesterName);
if (requesterUUID == null) {
- player.sendMessage(miniMessage().deserialize(String.format("No join request found from %s.", joinRequesterName)));
+ player.sendMessage(miniMessage().deserialize(
+ String.format(L4M4.get("error.join_request_not_found"), joinRequesterName)
+ ));
return true;
}
joinReqs.remove(requesterUUID);
-
player.sendMessage(miniMessage().deserialize(
- String.format("You have denied %s's join request.", joinRequesterName)));
-
+ String.format(L4M4.get("error.join_request_denied"), joinRequesterName)
+ ));
Player requester = Bukkit.getPlayer(requesterUUID);
if (requester != null && requester.isOnline()) {
requester.sendMessage(miniMessage().deserialize(
- String.format("Your join request for clan %s has been denied.", currentClan.getName())));
+ String.format(L4M4.get("error.join_request_denied_notify"), currentClan.getName())
+ ));
}
}
return true;
@@ -335,24 +370,34 @@ public class ClanCommand extends SimpleCommand {
// ========== LIST ==========
case "list" -> {
- // Zeige eine Liste aller existierenden Clans an
- sendClanList(player);
+ Collection allClans = clans.getClans();
+ if (allClans.isEmpty()) {
+ player.sendMessage(miniMessage().deserialize(L4M4.get("error.no_clans")));
+ return true;
+ }
+ Component clanListComponent = miniMessage().deserialize("=== List of clans ===\n");
+ for (Clan clan : allClans) {
+ clanListComponent = clanListComponent.append(
+ miniMessage().deserialize(String.format(" - %s\n", clan.getName()))
+ );
+ }
+ clanListComponent = clanListComponent.append(miniMessage().deserialize("====================="));
+ player.sendMessage(clanListComponent);
return true;
}
// ========== INFO ==========
case "info" -> {
if (!clans.isInClan(playerUUID)) {
- player.sendMessage(miniMessage().deserialize("You are not in a clan!"));
+ player.sendMessage(miniMessage().deserialize(L4M4.get("error.not_in_clan_info")));
return true;
}
Clan clan = clans.getClanByMember(playerUUID);
if (clan == null) {
- player.sendMessage(miniMessage().deserialize("Could not find your clan."));
+ player.sendMessage(miniMessage().deserialize(L4M4.get("error.clan_not_found_info")));
return true;
}
- // Sammle die Daten
UUID leaderUUID = clan.getLeaderUUID();
UUID viceUUID = clan.getViceUUID();
List members = clan.getMembers();
@@ -366,64 +411,24 @@ public class ClanCommand extends SimpleCommand {
viceName = (viceOffline.getName() != null) ? viceOffline.getName() : viceUUID.toString();
}
- // Wir bauen den Info-Text in mehreren Component-Teilen auf
- Component infoComponent = Component.empty();
+ // Baue den Info-Text mithilfe der externen Message-Templates
+ Component infoComponent = Component.empty()
+ .append(miniMessage().deserialize(L4M4.get("info.header")))
+ .append(miniMessage().deserialize(String.format(L4M4.get("info.uuid"), clan.getUuid())))
+ .append(miniMessage().deserialize(String.format(L4M4.get("info.name"), clan.getName())))
+ .append(miniMessage().deserialize(String.format(L4M4.get("info.leader"), leaderName)))
+ .append(miniMessage().deserialize(String.format(L4M4.get("info.vice"), viceName)))
+ .append(miniMessage().deserialize(String.format(L4M4.get("info.members_count"), members.size())))
+ .append(miniMessage().deserialize(String.format(L4M4.get("info.tag"), miniMessage().serialize(clan.getTag()))))
+ .append(miniMessage().deserialize(L4M4.get("info.members_list_header")));
- // Header
- Component l1 = miniMessage().deserialize("=== Clan info ===\n");
- // ID
- Component l2 = miniMessage().deserialize(String.format(
- " - ID: %s\n",
- clan.getUuid()
- ));
- // Name
- Component l3 = miniMessage().deserialize(String.format(
- " - Name: %s\n",
- clan.getName()
- ));
- // Leader
- Component l4 = miniMessage().deserialize(String.format(
- " - Leader: %s\n",
- leaderName
- ));
- // Vice
- Component l5 = miniMessage().deserialize(String.format(
- " - Vice Leader: %s\n",
- viceName
- ));
- // Member Count
- Component l6 = miniMessage().deserialize(String.format(
- " - Members: %d\n",
- members.size()
- ));
- // Tag
- Component l8 = miniMessage().deserialize(String.format(
- " - Tag: %s\n",
- miniMessage().serialize(clan.getTag())
- ));
- // Member-Liste
- Component l7 = miniMessage().deserialize("Members List:\n");
-
- infoComponent = infoComponent
- .append(l1).append(l2).append(l3)
- .append(l4).append(l5).append(l6)
- .append(l8).append(l7);
-
- // Detaillierte Auflistung der Mitglieder
for (UUID mem : members) {
OfflinePlayer off = Bukkit.getOfflinePlayer(mem);
String name = off.getName() != null ? off.getName() : mem.toString();
- Component memberLine = miniMessage().deserialize(String.format(
- " - Member: %s\n",
- name
- ));
+ Component memberLine = miniMessage().deserialize(String.format(L4M4.get("info.member_line"), name));
infoComponent = infoComponent.append(memberLine);
}
-
- // Abschlusslinie
- Component endLine = miniMessage().deserialize("=====================");
- infoComponent = infoComponent.append(endLine);
-
+ infoComponent = infoComponent.append(miniMessage().deserialize(L4M4.get("info.footer")));
player.sendMessage(infoComponent);
return true;
}
@@ -431,49 +436,44 @@ public class ClanCommand extends SimpleCommand {
// ========== KICK ==========
case "kick" -> {
if (!clans.isLeader(playerUUID) && !clans.isVice(playerUUID)) {
- player.sendMessage(miniMessage().deserialize("You are not authorized to kick players."));
+ player.sendMessage(miniMessage().deserialize(L4M4.get("error.not_authorized_kick")));
return true;
}
if (args.length < 2) {
- player.sendMessage(miniMessage().deserialize("Usage: /clan kick "));
+ player.sendMessage(miniMessage().deserialize(L4M4.get("usage.clan_kick")));
return true;
}
Clan currentClan = clans.getClanByMember(playerUUID);
if (currentClan == null) {
- player.sendMessage(miniMessage().deserialize("Could not find your clan."));
+ player.sendMessage(miniMessage().deserialize(L4M4.get("error.clan_not_found")));
return true;
}
String targetName = args[1];
OfflinePlayer targetOffline = Bukkit.getOfflinePlayer(targetName);
-
if (targetOffline.getName() == null) {
- player.sendMessage(miniMessage().deserialize("No such player found."));
+ player.sendMessage(miniMessage().deserialize(L4M4.get("error.player_not_found")));
return true;
}
UUID targetUUID = targetOffline.getUniqueId();
-
- // Check: Ist der Spieler im Clan?
if (!currentClan.isMember(targetUUID)) {
- player.sendMessage(miniMessage().deserialize(String.format("%s is not in your clan!", targetName)));
+ player.sendMessage(miniMessage().deserialize(String.format(L4M4.get("error.player_not_in_clan"), targetName)));
return true;
}
- // Vice kann keinen Leader kicken
if (clans.isVice(playerUUID) && currentClan.isLeader(targetUUID)) {
- player.sendMessage(miniMessage().deserialize("You cannot kick the clan leader!"));
+ player.sendMessage(miniMessage().deserialize(L4M4.get("error.cannot_kick_leader")));
return true;
}
-
- // Vice entfernen, falls der Gekickte Vice war
if (currentClan.isVice(targetUUID)) {
currentClan.setViceUUID(null);
}
currentClan.getMembers().remove(targetUUID);
currentClan.save();
-
- player.sendMessage(miniMessage().deserialize(String.format("You kicked %s from the clan.", targetName)));
+ player.sendMessage(miniMessage().deserialize(String.format(L4M4.get("success.player_kicked"), targetName)));
if (targetOffline.isOnline()) {
Player targetOnline = (Player) targetOffline;
- targetOnline.sendMessage(miniMessage().deserialize(String.format("You have been kicked from the clan %s.", currentClan.getName())));
+ targetOnline.sendMessage(miniMessage().deserialize(
+ String.format(L4M4.get("error.player_kicked_notify"), currentClan.getName())
+ ));
}
return true;
}
@@ -481,47 +481,42 @@ public class ClanCommand extends SimpleCommand {
// ========== TRANSFER ==========
case "transfer" -> {
if (!clans.isLeader(playerUUID)) {
- player.sendMessage(miniMessage().deserialize("Only the clan leader can transfer leadership."));
+ player.sendMessage(miniMessage().deserialize(L4M4.get("error.only_leader_transfer")));
return true;
}
if (args.length < 2) {
- player.sendMessage(miniMessage().deserialize("Usage: /clan transfer "));
+ player.sendMessage(miniMessage().deserialize(L4M4.get("usage.clan_transfer")));
return true;
}
Clan currentClan = clans.getClanByMember(playerUUID);
if (currentClan == null) {
- player.sendMessage(miniMessage().deserialize("Could not find your clan."));
+ player.sendMessage(miniMessage().deserialize(L4M4.get("error.clan_not_found")));
return true;
}
String newLeaderName = args[1];
OfflinePlayer newLeaderOffline = Bukkit.getOfflinePlayer(newLeaderName);
if (newLeaderOffline.getName() == null) {
- player.sendMessage(miniMessage().deserialize("No such player found."));
+ player.sendMessage(miniMessage().deserialize(L4M4.get("error.player_not_found")));
return true;
}
UUID newLeaderUUID = newLeaderOffline.getUniqueId();
-
if (!currentClan.isMember(newLeaderUUID)) {
- player.sendMessage(miniMessage().deserialize(String.format("%s is not in your clan!", newLeaderName)));
+ player.sendMessage(miniMessage().deserialize(String.format(L4M4.get("error.player_not_in_clan"), newLeaderName)));
return true;
}
-
- // Füge den alten Leader zur Members-Liste hinzu (falls nicht enthalten)
if (!currentClan.getMembers().contains(playerUUID)) {
currentClan.getMembers().add(playerUUID);
}
- // Setze neuen Leader
currentClan.setLeaderUUID(newLeaderUUID);
- // Falls Vice, entfernen
if (currentClan.isVice(newLeaderUUID)) {
currentClan.setViceUUID(null);
}
currentClan.save();
-
- player.sendMessage(miniMessage().deserialize(String.format("You transferred leadership to %s.", newLeaderName)));
+ player.sendMessage(miniMessage().deserialize(String.format(L4M4.get("success.leadership_transferred"), newLeaderName)));
if (newLeaderOffline.isOnline()) {
((Player) newLeaderOffline).sendMessage(miniMessage().deserialize(
- String.format("You are now the leader of the clan %s.", currentClan.getName())));
+ String.format(L4M4.get("success.new_leader_notify"), currentClan.getName())
+ ));
}
return true;
}
@@ -529,39 +524,41 @@ public class ClanCommand extends SimpleCommand {
// ========== PROMOTE ==========
case "promote" -> {
if (!clans.isLeader(playerUUID)) {
- player.sendMessage(miniMessage().deserialize("Only the clan leader can promote a member."));
+ player.sendMessage(miniMessage().deserialize(L4M4.get("error.only_leader_promote")));
return true;
}
if (args.length < 2) {
- player.sendMessage(miniMessage().deserialize("Usage: /clan promote "));
+ player.sendMessage(miniMessage().deserialize(L4M4.get("usage.clan_promote")));
return true;
}
Clan currentClan = clans.getClanByMember(playerUUID);
if (currentClan == null) {
- player.sendMessage(miniMessage().deserialize("Could not find your clan."));
+ player.sendMessage(miniMessage().deserialize(L4M4.get("error.clan_not_found")));
return true;
}
String promoteName = args[1];
OfflinePlayer promoteOffline = Bukkit.getOfflinePlayer(promoteName);
-
if (promoteOffline.getName() == null) {
- player.sendMessage(miniMessage().deserialize("No such player found."));
+ player.sendMessage(miniMessage().deserialize(L4M4.get("error.player_not_found")));
return true;
}
UUID promoteUUID = promoteOffline.getUniqueId();
-
if (!currentClan.isMember(promoteUUID)) {
- player.sendMessage(miniMessage().deserialize(String.format("%s is not in your clan!", promoteName)));
+ player.sendMessage(miniMessage().deserialize(String.format(L4M4.get("error.player_not_in_clan"), promoteName)));
return true;
}
- // Vice setzen
+ if (currentClan.isVice(promoteUUID)) {
+ player.sendMessage(miniMessage().deserialize(String.format(L4M4.get("error.already_vice"), promoteName)));
+ return true;
+ }
+ currentClan.getMembers().remove(promoteUUID);
currentClan.setViceUUID(promoteUUID);
currentClan.save();
-
- player.sendMessage(miniMessage().deserialize(String.format("You promoted %s to vice leader.", promoteName)));
+ player.sendMessage(miniMessage().deserialize(String.format(L4M4.get("success.promoted_to_vice"), promoteName)));
if (promoteOffline.isOnline()) {
((Player) promoteOffline).sendMessage(miniMessage().deserialize(
- String.format("You have been promoted to vice leader of clan %s.", currentClan.getName())));
+ String.format(L4M4.get("success.promoted_notify"), currentClan.getName())
+ ));
}
return true;
}
@@ -569,48 +566,43 @@ public class ClanCommand extends SimpleCommand {
// ========== DEMOTE ==========
case "demote" -> {
if (!clans.isLeader(playerUUID) && !clans.isVice(playerUUID)) {
- player.sendMessage(miniMessage().deserialize("You are not authorized to demote anyone."));
+ player.sendMessage(miniMessage().deserialize(L4M4.get("error.not_authorized_demote")));
return true;
}
if (args.length < 2) {
- player.sendMessage(miniMessage().deserialize("Usage: /clan demote "));
+ player.sendMessage(miniMessage().deserialize(L4M4.get("usage.clan_demote")));
return true;
}
Clan currentClan = clans.getClanByMember(playerUUID);
if (currentClan == null) {
- player.sendMessage(miniMessage().deserialize("Could not find your clan."));
+ player.sendMessage(miniMessage().deserialize(L4M4.get("error.clan_not_found")));
return true;
}
String demoteName = args[1];
OfflinePlayer demoteOffline = Bukkit.getOfflinePlayer(demoteName);
-
if (demoteOffline.getName() == null) {
- player.sendMessage(miniMessage().deserialize("No such player found."));
+ player.sendMessage(miniMessage().deserialize(L4M4.get("error.player_not_found")));
return true;
}
UUID demoteUUID = demoteOffline.getUniqueId();
-
- // Check, ob der Spieler Vice ist
if (!currentClan.isVice(demoteUUID)) {
- player.sendMessage(miniMessage().deserialize(String.format("%s is not the vice leader!", demoteName)));
+ player.sendMessage(miniMessage().deserialize(String.format(L4M4.get("error.not_vice"), demoteName)));
return true;
}
- // Vice kann nur sich selbst demoten (oder Leader kann Vice demoten)
if (!clans.isLeader(playerUUID) && !playerUUID.equals(demoteUUID)) {
- player.sendMessage(miniMessage().deserialize("You can only demote yourself!"));
+ player.sendMessage(miniMessage().deserialize(L4M4.get("error.only_self_demote")));
return true;
}
currentClan.setViceUUID(null);
- // Sicherstellen, dass der Spieler in der Memberliste bleibt
if (!currentClan.getMembers().contains(demoteUUID)) {
currentClan.getMembers().add(demoteUUID);
}
currentClan.save();
-
- player.sendMessage(miniMessage().deserialize(String.format("You demoted %s to a normal member.", demoteName)));
+ player.sendMessage(miniMessage().deserialize(String.format(L4M4.get("success.demoted"), demoteName)));
if (demoteOffline.isOnline()) {
((Player) demoteOffline).sendMessage(miniMessage().deserialize(
- String.format("You have been demoted to a normal member of clan %s.", currentClan.getName())));
+ String.format(L4M4.get("error.demoted_notify"), currentClan.getName())
+ ));
}
return true;
}
@@ -618,195 +610,104 @@ public class ClanCommand extends SimpleCommand {
// ========== DISBAND ==========
case "disband" -> {
if (!clans.isLeader(playerUUID)) {
- player.sendMessage(miniMessage().deserialize("Only the clan leader can disband the clan."));
+ player.sendMessage(miniMessage().deserialize(L4M4.get("error.only_leader_disband")));
return true;
}
Clan currentClan = clans.getClanByMember(playerUUID);
if (currentClan == null) {
- player.sendMessage(miniMessage().deserialize("Could not find your clan."));
+ player.sendMessage(miniMessage().deserialize(L4M4.get("error.clan_not_found")));
return true;
}
-
- // Benachrichtige alle Mitglieder
for (UUID memberUUID : currentClan.getMembers()) {
Player memberOnline = Bukkit.getPlayer(memberUUID);
if (memberOnline != null && memberOnline.isOnline()) {
memberOnline.sendMessage(miniMessage().deserialize(
- String.format("Your clan %s has been disbanded by the leader.", currentClan.getName())));
+ String.format(L4M4.get("error.clan_disbanded_notify"), currentClan.getName())
+ ));
}
}
- // Clan entfernen
clans.removeClan(currentClan);
- player.sendMessage(miniMessage().deserialize("You have disbanded your clan."));
+ player.sendMessage(miniMessage().deserialize(L4M4.get("success.clan_disbanded_leave")));
return true;
}
// ========== LEAVE ==========
case "leave" -> {
if (!clans.isInClan(playerUUID)) {
- player.sendMessage(miniMessage().deserialize("You are not in a clan!"));
+ player.sendMessage(miniMessage().deserialize(L4M4.get("error.not_in_clan_info")));
return true;
}
Clan currentClan = clans.getClanByMember(playerUUID);
if (currentClan == null) {
- player.sendMessage(miniMessage().deserialize("Could not find your clan."));
+ player.sendMessage(miniMessage().deserialize(L4M4.get("error.clan_not_found")));
return true;
}
-
- // Leader kann nicht einfach gehen, ohne disband oder transfer
if (currentClan.isLeader(playerUUID)) {
if (!currentClan.getMembers().isEmpty()) {
- player.sendMessage(miniMessage().deserialize("You must transfer leadership or disband the clan before leaving."));
+ player.sendMessage(miniMessage().deserialize(L4M4.get("error.leader_cannot_leave")));
} else {
- // Keine weiteren Mitglieder -> disband
clans.removeClan(currentClan);
- player.sendMessage(miniMessage().deserialize(
- "You have disbanded your clan (no other members) and left."));
+ player.sendMessage(miniMessage().deserialize(L4M4.get("success.clan_disbanded_leave")));
}
return true;
}
- // Vice -> Vice-Position freigeben
if (currentClan.isVice(playerUUID)) {
currentClan.setViceUUID(null);
}
currentClan.getMembers().remove(playerUUID);
currentClan.save();
-
player.sendMessage(miniMessage().deserialize(
- String.format("You have left the clan %s.", currentClan.getName())));
+ String.format(L4M4.get("success.left_clan"), currentClan.getName())
+ ));
return true;
}
- // ========== MODIFY (Name/Tag) ==========
+ // ========== MODIFY ==========
case "modify" -> {
if (!clans.isLeader(playerUUID)) {
- player.sendMessage(miniMessage().deserialize("Only the clan leader can modify clan settings."));
+ player.sendMessage(miniMessage().deserialize(L4M4.get("error.only_leader_modify")));
return true;
}
if (args.length < 3) {
- player.sendMessage(miniMessage().deserialize("Usage: /clan modify "));
+ player.sendMessage(miniMessage().deserialize(L4M4.get("usage.clan_modify")));
return true;
}
String whatToModify = args[1].toLowerCase();
String newValue = String.join(" ", Arrays.copyOfRange(args, 2, args.length));
-
Clan currentClan = clans.getClanByMember(playerUUID);
if (currentClan == null) {
- player.sendMessage(miniMessage().deserialize("Could not find your clan."));
+ player.sendMessage(miniMessage().deserialize(L4M4.get("error.clan_not_found")));
return true;
}
-
switch (whatToModify) {
case "name" -> {
currentClan.setName(newValue);
currentClan.save();
- player.sendMessage(miniMessage().deserialize(String.format("Clan name changed to %s.", newValue)));
+ player.sendMessage(miniMessage().deserialize(
+ String.format("Clan name changed to %s.", newValue)
+ ));
}
case "tag" -> {
Component newTag = miniMessage().deserialize(newValue);
currentClan.setTag(newTag);
currentClan.save();
- player.sendMessage(miniMessage().deserialize(String.format("Clan tag changed to %s.", newValue)));
- }
- default -> {
- player.sendMessage(miniMessage().deserialize("You can only modify 'name' or 'tag'."));
+ player.sendMessage(miniMessage().deserialize(
+ String.format("Clan tag changed to %s.", newValue)
+ ));
}
+ default -> player.sendMessage(miniMessage().deserialize(L4M4.get("error.modify_invalid")));
}
return true;
}
- // ========== Fallback für Unbekanntes ==========
+ // ========== Fallback ==========
default -> {
- player.sendMessage(miniMessage().deserialize("Unknown subcommand. Use /clan for help."));
+ player.sendMessage(miniMessage().deserialize(L4M4.get("error.unknown_subcommand")));
return true;
}
}
}
- /**
- * Zeigt eine Liste aller Clans auf dem Server an.
- */
- private void sendClanList(Player player) {
- // Hier nehmen wir an, dass 'clans.getClans()' alle existierenden Clans liefert.
- Collection allClans = clans.getClans();
- if (allClans.isEmpty()) {
- player.sendMessage(miniMessage().deserialize("No clans found!"));
- return;
- }
-
- Component clanListComponent = Component.empty();
- clanListComponent = clanListComponent.append(
- miniMessage().deserialize("=== List of clans ===\n"));
-
- for (Clan clan : allClans) {
- Component clanComponent = miniMessage().deserialize(
- String.format(" - %s\n", clan.getName()));
- clanListComponent = clanListComponent.append(clanComponent);
- }
- clanListComponent = clanListComponent.append(
- miniMessage().deserialize("====================="));
-
- player.sendMessage(clanListComponent);
- }
-
- /**
- * Hilfsfunktion: Zeigt eine übersichtliche Hilfe basierend auf der Rolle (Leader, Vice, Member, Kein-Mitglied).
- */
- private void sendHelpMessage(Player player, UUID playerUUID) {
- if (clans.isLeader(playerUUID)) {
- Component l1 = miniMessage().deserialize("=== Clan Commands ===\n");
- Component l2 = miniMessage().deserialize(" - /clan info\n");
- Component l3 = miniMessage().deserialize(" - /clan invite\n");
- Component l4 = miniMessage().deserialize(" - /clan kick\n");
- Component l5 = miniMessage().deserialize(" - /clan transfer\n");
- Component l6 = miniMessage().deserialize(" - /clan promote\n");
- Component l7 = miniMessage().deserialize(" - /clan demote\n");
- Component l8 = miniMessage().deserialize(" - /clan disband\n");
- Component l9 = miniMessage().deserialize(" - /clan leave\n");
- Component l10 = miniMessage().deserialize(" - /clan accept\n");
- Component l11 = miniMessage().deserialize(" - /clan deny\n");
- Component l12 = miniMessage().deserialize(" - /clan modify\n");
- Component l13 = miniMessage().deserialize(" - /clan list\n");
- Component l14 = miniMessage().deserialize("=====================");
-
- player.sendMessage(l1.append(l2).append(l3).append(l4).append(l5)
- .append(l6).append(l7).append(l8).append(l9).append(l10).append(l11).append(l12).append(l13).append(l14));
- } else if (clans.isVice(playerUUID)) {
- Component l1 = miniMessage().deserialize("=== Clan Commands ===\n");
- Component l2 = miniMessage().deserialize(" - /clan info\n");
- Component l3 = miniMessage().deserialize(" - /clan invite\n");
- Component l4 = miniMessage().deserialize(" - /clan kick\n");
- Component l5 = miniMessage().deserialize(" - /clan demote\n");
- Component l6 = miniMessage().deserialize(" - /clan leave\n");
- Component l7 = miniMessage().deserialize(" -