From 53fd1f360099b31e9a4ffd2743b52758681b45b8 Mon Sep 17 00:00:00 2001 From: taktakahashi Date: Sun, 14 Apr 2019 23:26:26 +0900 Subject: [PATCH 1/2] [add] guild create and destroy --- .gitignore | 2 ++ src/main/java/guild/Guild.kt | 5 +++ src/main/java/guild/GuildContainer.kt | 29 ++++++++++++++++ .../grass/sarcandra/GuildCommandExecutor.kt | 33 +++++++++++++++++++ .../java/life/grass/sarcandra/Sarcandra.kt | 2 ++ src/main/resources/plugin.yml | 11 +++++++ 6 files changed, 82 insertions(+) create mode 100644 src/main/java/guild/Guild.kt create mode 100644 src/main/java/guild/GuildContainer.kt create mode 100644 src/main/java/life/grass/sarcandra/GuildCommandExecutor.kt diff --git a/.gitignore b/.gitignore index 4b841b2..98ec178 100644 --- a/.gitignore +++ b/.gitignore @@ -25,3 +25,5 @@ hs_err_pid* .idea/ *.iml .gradle/ +build/ +out/ diff --git a/src/main/java/guild/Guild.kt b/src/main/java/guild/Guild.kt new file mode 100644 index 0000000..8cb98f8 --- /dev/null +++ b/src/main/java/guild/Guild.kt @@ -0,0 +1,5 @@ +package guild + +import java.util.* + +class Guild(val masterUUID: UUID, val memberUUIDList: List, val name: String) diff --git a/src/main/java/guild/GuildContainer.kt b/src/main/java/guild/GuildContainer.kt new file mode 100644 index 0000000..4f1085d --- /dev/null +++ b/src/main/java/guild/GuildContainer.kt @@ -0,0 +1,29 @@ +package guild + +import org.bukkit.Bukkit +import java.util.* + +class GuildContainer(var guildSet: MutableSet) { + + fun createGuild(masterUUID: UUID?, name: String?) { + if (masterUUID == null || name == null) return + if (isBuildable(masterUUID)) { + guildSet.add(Guild(masterUUID, listOf(), name)) + Bukkit.getServer().getPlayer(masterUUID)?.sendMessage("Your guild \'$name\' has been initialized!!") + } + } + + fun destroyGuild(masterUUID: UUID?) { + if (masterUUID == null) return + val guildToRemove = guildSet.find { it.masterUUID == masterUUID } + val sendPlayer = Bukkit.getServer().getPlayer(masterUUID) + when (guildSet.remove(guildToRemove)) { + true -> sendPlayer?.sendMessage("Your guild \'${guildToRemove?.name}\' has been dissolved!!") + false -> sendPlayer?.sendMessage("Your do not have guild.") + } + } + + fun isBuildable(builderUUID: UUID): Boolean { + return guildSet.filter { it.masterUUID == builderUUID }.isEmpty() + } +} diff --git a/src/main/java/life/grass/sarcandra/GuildCommandExecutor.kt b/src/main/java/life/grass/sarcandra/GuildCommandExecutor.kt new file mode 100644 index 0000000..065f276 --- /dev/null +++ b/src/main/java/life/grass/sarcandra/GuildCommandExecutor.kt @@ -0,0 +1,33 @@ +package life.grass.sarcandra + +import guild.GuildContainer +import org.bukkit.command.Command +import org.bukkit.command.CommandExecutor +import org.bukkit.command.CommandSender + +class GuildCommandExecutor(val guildContainer: GuildContainer) : CommandExecutor { + + public override fun onCommand(sender: CommandSender, command: Command, label: String, args: Array): Boolean { + if (args.isEmpty()) return false + val senderPlayer = sender.server.getPlayer(sender.name) + return when (args[0].toUpperCase()) { + "INIT" -> { + guildContainer.createGuild(senderPlayer?.uniqueId, args[1]) + true + } + "DISSOLVE" -> { + guildContainer.destroyGuild(senderPlayer?.uniqueId) + true + } + "INVITE" -> { + println("invite") + true + } + "CONFIRM" -> { + println("confirm") + true + } + else -> false + } + } +} diff --git a/src/main/java/life/grass/sarcandra/Sarcandra.kt b/src/main/java/life/grass/sarcandra/Sarcandra.kt index 895efb2..bb35b5f 100644 --- a/src/main/java/life/grass/sarcandra/Sarcandra.kt +++ b/src/main/java/life/grass/sarcandra/Sarcandra.kt @@ -1,11 +1,13 @@ package life.grass.sarcandra +import guild.GuildContainer import org.bukkit.plugin.java.JavaPlugin class Sarcandra : JavaPlugin() { override fun onEnable() { super.onEnable() + getCommand("sarcandra-guild")?.setExecutor(GuildCommandExecutor(GuildContainer(mutableSetOf()))) } } \ No newline at end of file diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index ee660cb..663d23e 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -2,3 +2,14 @@ name: Sarcandra version: @version@ depend: [Arabidopsis] main: life.grass.sarcandra.Sarcandra +commands: + sarcandra-guild: + description: Sarcandra commands. + usage: /sarcandra-guild + permission: sarcandra.guild + permission-message: sorry, you do not have permission to do. +permissions: + sarcandra.*: + default: op + sarcandra.guild: + default: true From 8478e4976782280809ec0ab2d6635fe02a27d392 Mon Sep 17 00:00:00 2001 From: taktakahashi Date: Mon, 15 Apr 2019 18:28:03 +0900 Subject: [PATCH 2/2] [fix] refactor --- src/main/java/guild/GuildContainer.kt | 33 +++++++++++-------- .../grass/sarcandra/GuildCommandExecutor.kt | 25 +++++++------- .../java/life/grass/sarcandra/Sarcandra.kt | 2 +- src/main/resources/plugin.yml | 6 ++-- 4 files changed, 37 insertions(+), 29 deletions(-) diff --git a/src/main/java/guild/GuildContainer.kt b/src/main/java/guild/GuildContainer.kt index 4f1085d..fa3d2ca 100644 --- a/src/main/java/guild/GuildContainer.kt +++ b/src/main/java/guild/GuildContainer.kt @@ -3,27 +3,32 @@ package guild import org.bukkit.Bukkit import java.util.* -class GuildContainer(var guildSet: MutableSet) { +class GuildContainer() { - fun createGuild(masterUUID: UUID?, name: String?) { - if (masterUUID == null || name == null) return - if (isBuildable(masterUUID)) { + private val guildSet: MutableSet = mutableSetOf() + + fun createGuild(masterUUID: UUID, name: String) { + if (permitsToCreateBy(masterUUID)) { guildSet.add(Guild(masterUUID, listOf(), name)) - Bukkit.getServer().getPlayer(masterUUID)?.sendMessage("Your guild \'$name\' has been initialized!!") + Bukkit.getServer().getPlayer(masterUUID)?.sendMessage("Your guild '$name' has been initialized!!") } } - fun destroyGuild(masterUUID: UUID?) { - if (masterUUID == null) return - val guildToRemove = guildSet.find { it.masterUUID == masterUUID } - val sendPlayer = Bukkit.getServer().getPlayer(masterUUID) - when (guildSet.remove(guildToRemove)) { - true -> sendPlayer?.sendMessage("Your guild \'${guildToRemove?.name}\' has been dissolved!!") - false -> sendPlayer?.sendMessage("Your do not have guild.") + fun destroyGuild(masterUUID: UUID) { + val masterPlayer = Bukkit.getServer().getPlayer(masterUUID) ?: return + val removedGuild = guildSet.find { it.masterUUID == masterUUID } + if (removedGuild == null) { + masterPlayer.sendMessage("You do not have guild.") + return + } + if (guildSet.remove(removedGuild)) { + masterPlayer.sendMessage("Your guild '${removedGuild.name}' has been dissolved!!") + } else { + masterPlayer.sendMessage("Failed to dissolve your guild.") } } - fun isBuildable(builderUUID: UUID): Boolean { - return guildSet.filter { it.masterUUID == builderUUID }.isEmpty() + fun permitsToCreateBy(builderUUID: UUID): Boolean { + return guildSet.none { guild -> guild.masterUUID == builderUUID } } } diff --git a/src/main/java/life/grass/sarcandra/GuildCommandExecutor.kt b/src/main/java/life/grass/sarcandra/GuildCommandExecutor.kt index 065f276..9e7cd53 100644 --- a/src/main/java/life/grass/sarcandra/GuildCommandExecutor.kt +++ b/src/main/java/life/grass/sarcandra/GuildCommandExecutor.kt @@ -4,30 +4,33 @@ import guild.GuildContainer import org.bukkit.command.Command import org.bukkit.command.CommandExecutor import org.bukkit.command.CommandSender +import org.bukkit.entity.Player -class GuildCommandExecutor(val guildContainer: GuildContainer) : CommandExecutor { +class GuildCommandExecutor(private val guildContainer: GuildContainer) : CommandExecutor { public override fun onCommand(sender: CommandSender, command: Command, label: String, args: Array): Boolean { if (args.isEmpty()) return false - val senderPlayer = sender.server.getPlayer(sender.name) - return when (args[0].toUpperCase()) { + val senderPlayer = sender as? Player ?: return false + when (args[0].toUpperCase()) { "INIT" -> { - guildContainer.createGuild(senderPlayer?.uniqueId, args[1]) - true + if (args[1].isNullOrBlank()) { + guildContainer.createGuild(senderPlayer.uniqueId, args[1]) + } } - "DISSOLVE" -> { - guildContainer.destroyGuild(senderPlayer?.uniqueId) - true + "DISBAND" -> { + guildContainer.destroyGuild(senderPlayer.uniqueId) } "INVITE" -> { println("invite") - true } "CONFIRM" -> { println("confirm") - true } - else -> false + "LEAVE" -> { + println("leave") + } + else -> return@onCommand false } + return true } } diff --git a/src/main/java/life/grass/sarcandra/Sarcandra.kt b/src/main/java/life/grass/sarcandra/Sarcandra.kt index bb35b5f..4c76635 100644 --- a/src/main/java/life/grass/sarcandra/Sarcandra.kt +++ b/src/main/java/life/grass/sarcandra/Sarcandra.kt @@ -7,7 +7,7 @@ class Sarcandra : JavaPlugin() { override fun onEnable() { super.onEnable() - getCommand("sarcandra-guild")?.setExecutor(GuildCommandExecutor(GuildContainer(mutableSetOf()))) + getCommand("guild")?.setExecutor(GuildCommandExecutor(GuildContainer())) } } \ No newline at end of file diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index 663d23e..0fdd528 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -3,9 +3,9 @@ version: @version@ depend: [Arabidopsis] main: life.grass.sarcandra.Sarcandra commands: - sarcandra-guild: - description: Sarcandra commands. - usage: /sarcandra-guild + guild: + description: Sarcandra commands of guild. + usage: /guild [init/disband/invite/confirm/leave] permission: sarcandra.guild permission-message: sorry, you do not have permission to do. permissions: