From 6c2f860df64824d8b52d0083f91a305c7b7d7d08 Mon Sep 17 00:00:00 2001 From: Hare Date: Fri, 28 Nov 2025 07:36:26 +0900 Subject: [PATCH] 1.1 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - ワイルドカードが利用できない不具合の修正 - 不使用のコードの削除 - groupの修正 --- README.md | 26 +++++++++++ build.gradle.kts | 7 ++- settings.gradle.kts | 10 +---- .../kotlin/net/hareworks/permits_lib/App.kt | 44 ------------------- .../net/hareworks/permits_lib/Plugin.kt | 6 +++ .../permits_lib/domain/PermissionId.kt | 2 +- 6 files changed, 37 insertions(+), 58 deletions(-) delete mode 100644 src/main/kotlin/net/hareworks/permits_lib/App.kt create mode 100644 src/main/kotlin/net/hareworks/permits_lib/Plugin.kt diff --git a/README.md b/README.md index 3566ec6..7e5429c 100644 --- a/README.md +++ b/README.md @@ -75,6 +75,32 @@ class ExamplePlugin : JavaPlugin() { } ``` +### Procedural Edits with `MutablePermissionTree` + +If you prefer an imperative style before handing the structure to Bukkit, you can clone any existing tree, +mutate it procedurally, and then apply the result: + +```kotlin +val baseTree = permissionTree("example") { + node("command") { node("reload") } +} + +val mutable = MutablePermissionTree.from(baseTree) +mutable.node("command") { + node("debug") { + description = "Allows /example debug" + defaultValue = PermissionDefault.OP + } + child("helper", value = false) // unlink helper if present +} +mutable.remove("command.legacy") + +permits.applyTree(mutable.build()) +``` + +The mutable API mirrors the DSL (`node`, `child`, `childAbsolute`, `remove`, `removeChild`, etc.) so you can +stage edits procedurally before ever touching `MutationSession`. + ### Concepts - **Permission tree** – immutable graph of `PermissionNode`s. Nodes specify description, default value, diff --git a/build.gradle.kts b/build.gradle.kts index bf4ad7f..d5e261c 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,7 +1,7 @@ import net.minecrell.pluginyml.bukkit.BukkitPluginDescription -group = "net.hareworks.hcu" -version = "1.0" +group = "net.hareworks" +version = "1.1" plugins { kotlin("jvm") version "2.2.21" @@ -17,7 +17,6 @@ val exposedVersion = "1.0.0-rc-3" dependencies { compileOnly("io.papermc.paper:paper-api:1.21.10-R0.1-SNAPSHOT") - compileOnly("org.jetbrains.kotlin:kotlin-stdlib") } tasks { shadowJar { @@ -27,7 +26,7 @@ tasks { } paper { - main = "net.hareworks.permits_lib.App" + main = "net.hareworks.permits_lib.plugin.Plugin" name = "permits-lib" description = "Permission Library" version = getVersion().toString() diff --git a/settings.gradle.kts b/settings.gradle.kts index 292e9b0..2d0ac8e 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -1,9 +1 @@ -/* - * This file was generated by the Gradle 'init' task. - * - * The settings file is used to specify which projects to include in your build. - * For more detailed information on multi-project builds, please refer to https://docs.gradle.org/8.14.3/userguide/multi_project_builds.html in the Gradle documentation. - * This project uses @Incubating APIs which are subject to change. - */ - -rootProject.name = "kommand-lib" +rootProject.name = "permits-lib" diff --git a/src/main/kotlin/net/hareworks/permits_lib/App.kt b/src/main/kotlin/net/hareworks/permits_lib/App.kt deleted file mode 100644 index 35a5711..0000000 --- a/src/main/kotlin/net/hareworks/permits_lib/App.kt +++ /dev/null @@ -1,44 +0,0 @@ -package net.hareworks.permits_lib - -import net.hareworks.permits_lib.bukkit.MutationSession -import net.hareworks.permits_lib.dsl.permissionTree -import org.bukkit.permissions.PermissionDefault -import org.bukkit.plugin.java.JavaPlugin - -class App : JavaPlugin() { - companion object { - lateinit var instance: App - private set - } - - private lateinit var session: MutationSession - - override fun onEnable() { - instance = this - session = MutationSession.create(this) - - val baseTree = permissionTree("permits-lib") { - node("command") { - description = "Allows execution of all permits-lib commands." - defaultValue = PermissionDefault.OP - - node("reload") { - description = "Allows /permitslib reload." - } - } - } - - session.applyTree(baseTree) - - // Example of mutating the existing tree without rebuilding everything. - session.edit { - node("command") { - node("debug") { - description = "Allows /permitslib debug utilities." - defaultValue = PermissionDefault.OP - wildcard = false - } - } - } - } -} diff --git a/src/main/kotlin/net/hareworks/permits_lib/Plugin.kt b/src/main/kotlin/net/hareworks/permits_lib/Plugin.kt new file mode 100644 index 0000000..413bca3 --- /dev/null +++ b/src/main/kotlin/net/hareworks/permits_lib/Plugin.kt @@ -0,0 +1,6 @@ +package net.hareworks.permits_lib.plugin + +import org.bukkit.plugin.java.JavaPlugin + +@Suppress("unused") +class Plugin : JavaPlugin() {} diff --git a/src/main/kotlin/net/hareworks/permits_lib/domain/PermissionId.kt b/src/main/kotlin/net/hareworks/permits_lib/domain/PermissionId.kt index 40e318d..9cd8c89 100644 --- a/src/main/kotlin/net/hareworks/permits_lib/domain/PermissionId.kt +++ b/src/main/kotlin/net/hareworks/permits_lib/domain/PermissionId.kt @@ -12,7 +12,7 @@ value class PermissionId private constructor(val value: String) { override fun toString(): String = value companion object { - private val VALID_PATTERN = Regex("""^[a-z0-9_.-]+$""") + private val VALID_PATTERN = Regex("""^[a-z0-9_.-]+(\.\*)?$""") fun of(raw: String): PermissionId { val normalized = raw.trim().lowercase()