diff --git a/paper-api/src/main/java/io/papermc/paper/plugin/configuration/PluginMeta.java b/paper-api/src/main/java/io/papermc/paper/plugin/configuration/PluginMeta.java index 2114651bd6..a399f87e92 100644 --- a/paper-api/src/main/java/io/papermc/paper/plugin/configuration/PluginMeta.java +++ b/paper-api/src/main/java/io/papermc/paper/plugin/configuration/PluginMeta.java @@ -1,6 +1,9 @@ package io.papermc.paper.plugin.configuration; import java.util.List; +import java.util.Locale; +import net.kyori.adventure.key.KeyPattern; +import net.kyori.adventure.key.Namespaced; import org.bukkit.permissions.Permission; import org.bukkit.permissions.PermissionDefault; import org.bukkit.plugin.PluginLoadOrder; @@ -14,7 +17,7 @@ import org.jspecify.annotations.Nullable; */ @NullMarked @ApiStatus.NonExtendable -public interface PluginMeta { +public interface PluginMeta extends Namespaced { /** * Provides the name of the plugin. This name uniquely identifies the plugin amongst all loaded plugins on the @@ -180,4 +183,10 @@ public interface PluginMeta { */ @Nullable String getAPIVersion(); + @KeyPattern.Namespace + @SuppressWarnings("PatternValidation") + @Override + default String namespace() { + return this.getName().toLowerCase(Locale.ROOT); + } } diff --git a/paper-api/src/main/java/org/bukkit/NamespacedKey.java b/paper-api/src/main/java/org/bukkit/NamespacedKey.java index 09cbe299a7..57d95e22db 100644 --- a/paper-api/src/main/java/org/bukkit/NamespacedKey.java +++ b/paper-api/src/main/java/org/bukkit/NamespacedKey.java @@ -72,7 +72,7 @@ public final class NamespacedKey implements Key, com.destroystokyo.paper.Namespa public NamespacedKey(@NotNull Plugin plugin, @NotNull String key) { Preconditions.checkArgument(plugin != null, "Plugin cannot be null"); Preconditions.checkArgument(key != null, "Key cannot be null"); - this.namespace = plugin.getName().toLowerCase(Locale.ROOT); + this.namespace = plugin.namespace(); this.key = key.toLowerCase(Locale.ROOT); // Check validity after normalization diff --git a/paper-api/src/main/java/org/bukkit/plugin/Plugin.java b/paper-api/src/main/java/org/bukkit/plugin/Plugin.java index 29ce61fce7..95d2ada67d 100644 --- a/paper-api/src/main/java/org/bukkit/plugin/Plugin.java +++ b/paper-api/src/main/java/org/bukkit/plugin/Plugin.java @@ -3,6 +3,7 @@ package org.bukkit.plugin; import java.io.File; import java.io.InputStream; import java.util.logging.Logger; +import net.kyori.adventure.key.Namespaced; import org.bukkit.Server; import org.bukkit.command.TabExecutor; import org.bukkit.configuration.file.FileConfiguration; @@ -16,7 +17,7 @@ import org.jetbrains.annotations.Nullable; *
* The use of {@link PluginBase} is recommended for actual Implementation
*/
-public interface Plugin extends TabExecutor, io.papermc.paper.plugin.lifecycle.event.LifecycleEventOwner { // Paper
+public interface Plugin extends TabExecutor, io.papermc.paper.plugin.lifecycle.event.LifecycleEventOwner, Namespaced { // Paper
/**
* Returns the folder that the plugin data files are located in. The
* folder may not yet exist.
diff --git a/paper-api/src/main/java/org/bukkit/plugin/PluginBase.java b/paper-api/src/main/java/org/bukkit/plugin/PluginBase.java
index e773db6da3..a3e4484d34 100644
--- a/paper-api/src/main/java/org/bukkit/plugin/PluginBase.java
+++ b/paper-api/src/main/java/org/bukkit/plugin/PluginBase.java
@@ -1,6 +1,7 @@
package org.bukkit.plugin;
import org.jetbrains.annotations.NotNull;
+import java.util.Locale;
/**
* Represents a base {@link Plugin}
@@ -33,4 +34,10 @@ public abstract class PluginBase implements Plugin {
public final String getName() {
return getPluginMeta().getName(); // Paper
}
+
+ @Override
+ @NotNull
+ public String namespace() {
+ return this.getPluginMeta().namespace();
+ }
}
diff --git a/paper-server/src/main/java/io/papermc/paper/command/brigadier/PaperCommands.java b/paper-server/src/main/java/io/papermc/paper/command/brigadier/PaperCommands.java
index af480008ad..f37adc5dca 100644
--- a/paper-server/src/main/java/io/papermc/paper/command/brigadier/PaperCommands.java
+++ b/paper-server/src/main/java/io/papermc/paper/command/brigadier/PaperCommands.java
@@ -91,7 +91,7 @@ public class PaperCommands implements Commands, PaperRegistrar