Skip to content

Commit

Permalink
-configuration per plugin, no plans to add further support.
Browse files Browse the repository at this point in the history
  • Loading branch information
Matt-MX committed May 14, 2024
1 parent 4d4f8b0 commit 0a66b6d
Show file tree
Hide file tree
Showing 5 changed files with 21 additions and 46 deletions.
23 changes: 1 addition & 22 deletions api/src/main/kotlin/com/mattmx/ktgui/GuiManager.kt
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@ package com.mattmx.ktgui

import com.mattmx.ktgui.commands.wrapper.CommandWrapper
import com.mattmx.ktgui.components.screen.IGuiScreen
import com.mattmx.ktgui.configuration.Configuration
import com.mattmx.ktgui.cooldown.ActionCoolDown
import com.mattmx.ktgui.dsl.event
import com.mattmx.ktgui.extensions.getOpenGui
Expand All @@ -23,8 +22,7 @@ import org.bukkit.event.player.PlayerMoveEvent
import org.bukkit.event.player.PlayerQuitEvent
import org.bukkit.event.server.PluginDisableEvent
import org.bukkit.plugin.java.JavaPlugin
import org.jetbrains.annotations.ApiStatus
import java.util.Collections
import java.util.*

/**
* Handles all GUI click events, as well
Expand All @@ -33,8 +31,6 @@ import java.util.Collections
object GuiManager : Listener {
private val players = Collections.synchronizedMap(hashMapOf<Player, IGuiScreen>())
private var initialized = false
private val defaultConfiguration = Configuration()
private val configurations = hashMapOf<JavaPlugin, Configuration>()
private val pluginCache = InstancePackageClassCache<JavaPlugin>()
val guiConfigManager = GuiConfigManager()
lateinit var owningPlugin: JavaPlugin
Expand All @@ -59,23 +55,6 @@ object GuiManager : Listener {
Bukkit.getOnlinePlayers().forEach { player -> forceClose(player) }
}

/**
* Each plugin can configure generic things like feedback messages,
* that KTBukkitGui handles under the hud.
*
* @param plugin the plugin for this configuration
* @param block configuration modification
*/
@ApiStatus.Experimental
fun configure(plugin: JavaPlugin, block: Configuration.() -> Unit) {
val configuration = Configuration()
block(configuration)
configurations[plugin] = configuration
}

@ApiStatus.Experimental
fun getConfiguration(plugin: JavaPlugin) = configurations[plugin] ?: defaultConfiguration

fun registerCommand(classOrPlugin: Class<*>, command: CommandWrapper) {
val existingCommand = Bukkit.getPluginCommand(command.name)
if (existingCommand != null) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package com.mattmx.ktgui.commands.alpha

import com.mattmx.ktgui.configuration.Configuration
import kotlin.properties.ReadOnlyProperty
import kotlin.reflect.KProperty

Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,23 @@
package com.mattmx.ktgui.commands.declarative

import com.mattmx.ktgui.commands.declarative.arg.Argument
import com.mattmx.ktgui.utils.JavaCompatibility
import org.bukkit.command.CommandSender

class ChainCommandBuilder(val name: String) {
val arguments = arrayListOf<Argument<*>>()
val subcommands = arrayListOf<DeclarativeCommandBuilder<*>>()

@JavaCompatibility
fun argument(argument: Argument<*>) = apply {
arguments.add(argument)
}

@JavaCompatibility
fun subcommand(vararg command: DeclarativeCommandBuilder<*>) = apply {
subcommands.addAll(command)
}

inline fun <reified T : CommandSender> build() = DeclarativeCommandBuilder(name, T::class.java).apply {
this.expectedArguments += arguments
this.subcommands += this@ChainCommandBuilder.subcommands
Expand Down
Original file line number Diff line number Diff line change
@@ -1,20 +1,21 @@
package com.mattmx.ktgui.commands.declarative

import com.google.common.collect.Lists
import com.mattmx.ktgui.GuiManager
import com.mattmx.ktgui.commands.declarative.arg.Argument
import com.mattmx.ktgui.commands.declarative.arg.ArgumentContext
import com.mattmx.ktgui.commands.declarative.invocation.*
import com.mattmx.ktgui.commands.declarative.invocation.InvalidArgContext
import com.mattmx.ktgui.commands.declarative.invocation.RunnableCommandContext
import com.mattmx.ktgui.commands.declarative.invocation.StorageCommandContext
import com.mattmx.ktgui.commands.declarative.invocation.SuggestionInvocation
import com.mattmx.ktgui.commands.declarative.syntax.*
import com.mattmx.ktgui.commands.usage.CommandUsageOptions
import com.mattmx.ktgui.configuration.Configuration
import com.mattmx.ktgui.utils.JavaCompatibility
import com.mattmx.ktgui.utils.not
import org.bukkit.Bukkit
import org.bukkit.command.CommandSender
import org.bukkit.permissions.Permission
import org.bukkit.permissions.PermissionDefault
import java.util.Optional
import java.util.*
import java.util.function.Consumer
import kotlin.properties.ReadOnlyProperty
import kotlin.reflect.KProperty
Expand Down Expand Up @@ -106,10 +107,10 @@ class DeclarativeCommandBuilder<T : CommandSender>(
}

inline fun <reified T : CommandSender> subcommand(name: String, block: DeclarativeCommandBuilder<T>.() -> Unit) =
command(name, block)
subcommand(DeclarativeCommandBuilder(name, T::class.javaObjectType).apply(block))

inline fun <reified T : CommandSender> command(name: String, block: DeclarativeCommandBuilder<T>.() -> Unit) =
DeclarativeCommandBuilder(name, T::class.java).apply(block).let {
fun <T : CommandSender> subcommand(cmd: DeclarativeCommandBuilder<T>) =
cmd.let {
subcommands += it
it
}
Expand All @@ -134,7 +135,7 @@ class DeclarativeCommandBuilder<T : CommandSender>(
return context to this
}

fun getSuggestions(context: SuggestionInvocation<*>) : List<String> {
fun getSuggestions(context: SuggestionInvocation<*>): List<String> {
val cmds = subcommands
.filter { it.nameStarts(context.last) }
.map { listOf(it.name + it.aliases) }
Expand Down

This file was deleted.

0 comments on commit 0a66b6d

Please sign in to comment.