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..fa3d2ca --- /dev/null +++ b/src/main/java/guild/GuildContainer.kt @@ -0,0 +1,34 @@ +package guild + +import org.bukkit.Bukkit +import java.util.* + +class GuildContainer() { + + 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!!") + } + } + + 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 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 new file mode 100644 index 0000000..9e7cd53 --- /dev/null +++ b/src/main/java/life/grass/sarcandra/GuildCommandExecutor.kt @@ -0,0 +1,36 @@ +package life.grass.sarcandra + +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(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 as? Player ?: return false + when (args[0].toUpperCase()) { + "INIT" -> { + if (args[1].isNullOrBlank()) { + guildContainer.createGuild(senderPlayer.uniqueId, args[1]) + } + } + "DISBAND" -> { + guildContainer.destroyGuild(senderPlayer.uniqueId) + } + "INVITE" -> { + println("invite") + } + "CONFIRM" -> { + println("confirm") + } + "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 895efb2..4c76635 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("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 ee660cb..0fdd528 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: + 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: + sarcandra.*: + default: op + sarcandra.guild: + default: true