Skip to content

Commit 15e3094

Browse files
committed
command to leave nation
1 parent 9b1bf8e commit 15e3094

File tree

2 files changed

+29
-0
lines changed

2 files changed

+29
-0
lines changed

src/main/java/pro/cloudnode/smp/smpcore/Permission.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,11 @@ public final class Permission {
117117
*/
118118
public static @NotNull String NATION_INVITE_OTHER = "smpcore.nation.invite.other";
119119

120+
/**
121+
* Leave your nation
122+
*/
123+
public static @NotNull String NATION_LEAVE = "smpcore.nation.leave";
124+
120125
/**
121126
* Appoint nation citizen as vice-leader
122127
*/

src/main/java/pro/cloudnode/smp/smpcore/command/NationCommand.java

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@ public boolean run(
5555
return switch (args[0]) {
5656
case "citizens" -> citizens(member.orElse(null), nation.orElse(null), sender, command, argsSubset);
5757
case "join" -> join(member.orElse(null), sender, command, argsSubset);
58+
case "leave" -> leave(member.orElse(null), nation.orElse(null), sender);
5859
default -> helpSubCommands(member.orElse(null), nation.orElse(null), sender, label);
5960
};
6061
}
@@ -91,6 +92,10 @@ public boolean helpSubCommands(
9192
) || hasAnyPermission(sender, Permission.NATION_CITIZENS_LIST_OTHER, Permission.NATION_CITIZENS_KICK_OTHER))
9293
subCommandBuilder.append(Component.newline())
9394
.append(SMPCore.messages().subCommandEntry(command + " citizens ", "citizens"));
95+
96+
if (sender.hasPermission(Permission.NATION_LEAVE) && member != null && nation.id.equals(member.nationID) && !nation.leaderUUID.equals(member.uuid))
97+
subCommandBuilder.append(Component.newline())
98+
.append(SMPCore.messages().subCommandEntry(command + " leave ", "leave", "Leave the nation."));
9499
}
95100

96101
if (hasAnyPermission(sender, Permission.NATION_JOIN_REQUEST) && (
@@ -327,4 +332,23 @@ public boolean join(
327332
request.get().accept();
328333
return true;
329334
}
335+
336+
public boolean leave(
337+
final @Nullable Member member,
338+
final @Nullable Nation nation,
339+
final @NotNull CommandSender sender
340+
) {
341+
if (!sender.hasPermission(Permission.NATION_LEAVE))
342+
return sendMessage(sender, SMPCore.messages().errorNoPermission());
343+
if (member == null)
344+
return sendMessage(sender, SMPCore.messages().errorNotMember());
345+
if (nation == null)
346+
return sendMessage(sender, SMPCore.messages().errorNotCitizen());
347+
if (!nation.id.equals(member.nationID))
348+
return sendMessage(sender, SMPCore.messages().errorNoPermission());
349+
if (nation.leaderUUID.equals(member.uuid))
350+
return sendMessage(sender, SMPCore.messages().errorLeaderLeave());
351+
nation.remove(member);
352+
return true;
353+
}
330354
}

0 commit comments

Comments
 (0)