From 46ac79503e8e7db3e3e827dbb0058d01dc876351 Mon Sep 17 00:00:00 2001 From: Len <40720638+destro174@users.noreply.github.com> Date: Sat, 10 Feb 2024 22:34:06 +0100 Subject: [PATCH] Add IslandLeave.java --- .../commands/island/IslandCommand.java | 3 +- .../commands/island/IslandConfirm.java | 18 -------- .../commands/island/IslandInvite.java | 2 +- .../commands/island/IslandLeave.java | 14 ++++++ .../configuration/MessageConfiguration.java | 13 +++++- .../cometskyblock/island/IslandPlayer.java | 6 ++- .../cometskyblock/request/LeaveRequest.java | 44 +++++++++++++++++++ 7 files changed, 76 insertions(+), 24 deletions(-) delete mode 100644 plugin/src/main/java/com/alttd/cometskyblock/commands/island/IslandConfirm.java create mode 100644 plugin/src/main/java/com/alttd/cometskyblock/request/LeaveRequest.java diff --git a/plugin/src/main/java/com/alttd/cometskyblock/commands/island/IslandCommand.java b/plugin/src/main/java/com/alttd/cometskyblock/commands/island/IslandCommand.java index 54a022f..314a628 100644 --- a/plugin/src/main/java/com/alttd/cometskyblock/commands/island/IslandCommand.java +++ b/plugin/src/main/java/com/alttd/cometskyblock/commands/island/IslandCommand.java @@ -20,12 +20,11 @@ public class IslandCommand extends PlayerSubCommand { registerSubCommand(new IslandRestart(plugin)); // TODO -- Add IslandRestartCommand registerSubCommand(new IslandAccept(plugin)); registerSubCommand(new IslandDeny(plugin)); - registerSubCommand(new IslandLeave(plugin)); // TODO -- Add IslandLeaveCommand + registerSubCommand(new IslandLeave(plugin)); registerSubCommand(new IslandMembers(plugin)); // TODO -- Add IslandMembersCommand registerSubCommand(new IslandLevel(plugin)); // TODO -- Add IslandLevelCommand // registerSubCommand(new IslandTop(plugin)); // TODO -- Add IslandTopCommand registerSubCommand(new IslandOptions(plugin)); // TODO -- Add IslandOptionsCommand - registerSubCommand(new IslandConfirm(plugin)); // TODO -- Add IslandConfirmCommand registerSubCommand(new IslandInvite(plugin)); // TODO -- Add IslandInviteCommand registerSubCommand(new IslandKick(plugin)); // TODO -- Add IslandKickCommand registerSubCommand(new IslandSetOwner(plugin)); // TODO -- Add some more output diff --git a/plugin/src/main/java/com/alttd/cometskyblock/commands/island/IslandConfirm.java b/plugin/src/main/java/com/alttd/cometskyblock/commands/island/IslandConfirm.java deleted file mode 100644 index 0904bbe..0000000 --- a/plugin/src/main/java/com/alttd/cometskyblock/commands/island/IslandConfirm.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.alttd.cometskyblock.commands.island; - -import com.alttd.cometskyblock.CometSkyBlockPlugin; -import com.alttd.cometskyblock.commands.PlayerSubCommand; -import com.alttd.cometskyblock.island.IslandPlayer; -import org.bukkit.entity.Player; - -public class IslandConfirm extends PlayerSubCommand { - - public IslandConfirm(CometSkyBlockPlugin plugin) { - super(plugin, "confirm"); - } - - @Override - public boolean execute(Player player, IslandPlayer islandPlayer, String[] args) { - return true; - } -} diff --git a/plugin/src/main/java/com/alttd/cometskyblock/commands/island/IslandInvite.java b/plugin/src/main/java/com/alttd/cometskyblock/commands/island/IslandInvite.java index e616bf8..e1319b6 100644 --- a/plugin/src/main/java/com/alttd/cometskyblock/commands/island/IslandInvite.java +++ b/plugin/src/main/java/com/alttd/cometskyblock/commands/island/IslandInvite.java @@ -18,7 +18,7 @@ public class IslandInvite extends PlayerSubCommand { public boolean execute(Player player, IslandPlayer islandPlayer, String[] args) { MessageConfiguration.Commands.Island.Invite invite = plugin.messagesConfiguration().get().commands().island().invite(); if (islandPlayer.islandId() == 0) { - player.sendRichMessage(invite.noIsland()); + player.sendRichMessage(plugin.messagesConfiguration().get().commands().island().noIsland()); return true; } if (args.length < 1) { diff --git a/plugin/src/main/java/com/alttd/cometskyblock/commands/island/IslandLeave.java b/plugin/src/main/java/com/alttd/cometskyblock/commands/island/IslandLeave.java index a51f78f..f5d6ee4 100644 --- a/plugin/src/main/java/com/alttd/cometskyblock/commands/island/IslandLeave.java +++ b/plugin/src/main/java/com/alttd/cometskyblock/commands/island/IslandLeave.java @@ -2,7 +2,10 @@ package com.alttd.cometskyblock.commands.island; import com.alttd.cometskyblock.CometSkyBlockPlugin; import com.alttd.cometskyblock.commands.PlayerSubCommand; +import com.alttd.cometskyblock.configuration.MessageConfiguration; +import com.alttd.cometskyblock.island.Island; import com.alttd.cometskyblock.island.IslandPlayer; +import com.alttd.cometskyblock.request.LeaveRequest; import org.bukkit.entity.Player; public class IslandLeave extends PlayerSubCommand { @@ -13,6 +16,17 @@ public class IslandLeave extends PlayerSubCommand { @Override public boolean execute(Player player, IslandPlayer islandPlayer, String[] args) { + MessageConfiguration.Commands.Island.Leave leave = plugin.messagesConfiguration().get().commands().island().leave(); + if (islandPlayer.islandId() == 0) { + player.sendRichMessage(plugin.messagesConfiguration().get().commands().island().noIsland()); + return true; + } + Island island = Island.getIsland(islandPlayer.islandUUID()); + if (islandPlayer.islandOwner() && !island.members().isEmpty()) { + player.sendRichMessage(leave.islandHasMembers()); + return true; + } + islandPlayer.request(new LeaveRequest(plugin, player, player)); return true; } } diff --git a/plugin/src/main/java/com/alttd/cometskyblock/configuration/MessageConfiguration.java b/plugin/src/main/java/com/alttd/cometskyblock/configuration/MessageConfiguration.java index a46213c..04c98b0 100644 --- a/plugin/src/main/java/com/alttd/cometskyblock/configuration/MessageConfiguration.java +++ b/plugin/src/main/java/com/alttd/cometskyblock/configuration/MessageConfiguration.java @@ -18,6 +18,7 @@ public class MessageConfiguration implements Configuration { @ConfigSerializable @Getter public static class Island { String commandUsage = "Wrong usage: try /island help"; + String noIsland = "You need an island to run this command."; private Help help = new Help(); @ConfigSerializable @Getter @@ -61,7 +62,7 @@ public class MessageConfiguration implements Configuration { Leave leave = new Leave(); @ConfigSerializable @Getter public static class Leave { - + String islandHasMembers = "You can not leave your island if it has members!"; } Members members = new Members(); @@ -98,7 +99,6 @@ public class MessageConfiguration implements Configuration { @ConfigSerializable @Getter public static class Invite { String inviteSelf = "You can not invite yourself to this island."; - String noIsland = "You need an island to run this command."; String targetOffline = " not found, is the player online?"; String targetHasIsland = " already has an island and can not be invited."; } @@ -168,6 +168,15 @@ public class MessageConfiguration implements Configuration { String created = "Island restart request created type /island restart confirm or /island restart deny.This action can not be reversed!"; String cancelled = "You have cancelled your island restart request!"; } + + private Leave leave = new Leave(); + + @ConfigSerializable @Getter + public static class Leave { + String created = "Type /island accept or /island deny to confirm.This action can not be reversed if you are the island owner!"; + String accept = "You have left your island."; + String denied = "You have cancelled your request."; + } } } diff --git a/plugin/src/main/java/com/alttd/cometskyblock/island/IslandPlayer.java b/plugin/src/main/java/com/alttd/cometskyblock/island/IslandPlayer.java index 4e604fd..9069fb9 100644 --- a/plugin/src/main/java/com/alttd/cometskyblock/island/IslandPlayer.java +++ b/plugin/src/main/java/com/alttd/cometskyblock/island/IslandPlayer.java @@ -70,7 +70,11 @@ public class IslandPlayer extends YamlConfiguration { } public void islandUUID(UUID uuid) { - set("island.uuid", uuid.toString()); + if (uuid == null) { + set("island.uuid", null); + } else { + set("island.uuid", uuid.toString()); + } save(); } diff --git a/plugin/src/main/java/com/alttd/cometskyblock/request/LeaveRequest.java b/plugin/src/main/java/com/alttd/cometskyblock/request/LeaveRequest.java new file mode 100644 index 0000000..b34cc0b --- /dev/null +++ b/plugin/src/main/java/com/alttd/cometskyblock/request/LeaveRequest.java @@ -0,0 +1,44 @@ +package com.alttd.cometskyblock.request; + +import com.alttd.cometskyblock.CometSkyBlockPlugin; +import com.alttd.cometskyblock.island.IslandPlayer; +import org.bukkit.Bukkit; +import org.bukkit.Location; +import org.bukkit.World; +import org.bukkit.entity.Player; + +public class LeaveRequest extends Request { + + public LeaveRequest(CometSkyBlockPlugin plugin, Player requester, Player target) { + super(plugin, requester, target); + + requester.sendRichMessage(requests().leave().created(), placeholders()); + } + + @Override + public void accept() { + if (!target().isOnline() || !requester().isOnline()) { + cancel(); + return; + } + requester().sendRichMessage(requests().leave().accept(), placeholders()); + IslandPlayer islandPlayer = IslandPlayer.getIslandPlayer(requester().getUniqueId()); + islandPlayer.islandId(0); + islandPlayer.islandUUID(null); + World world = Bukkit.getWorlds().get(0); + Location spawnLocation = world.getSpawnLocation(); + requester().teleport(spawnLocation); + super.accept(); + } + + @Override + public void deny() { + if (!target().isOnline() || !requester().isOnline()) { + cancel(); + return; + } + requester().sendRichMessage(requests().leave().denied(), placeholders()); + super.deny(); + } + +}