From 21671daebe661633a80a69852b2598a2714f844a Mon Sep 17 00:00:00 2001 From: Warrior <50800980+Warriorrrr@users.noreply.github.com> Date: Mon, 19 Jan 2026 13:43:06 +0100 Subject: [PATCH] Provide an IDE pattern hint for plugin IDs (#1712) * Provide an IDE pattern hint for plugin IDs * order my imports the right way --- .../api/plugin/ap/SerializedPluginDescription.java | 3 ++- .../main/java/com/velocitypowered/api/plugin/Dependency.java | 3 +++ api/src/main/java/com/velocitypowered/api/plugin/Plugin.java | 3 +++ 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/api/src/ap/java/com/velocitypowered/api/plugin/ap/SerializedPluginDescription.java b/api/src/ap/java/com/velocitypowered/api/plugin/ap/SerializedPluginDescription.java index da0a1ae4b..b712d8967 100644 --- a/api/src/ap/java/com/velocitypowered/api/plugin/ap/SerializedPluginDescription.java +++ b/api/src/ap/java/com/velocitypowered/api/plugin/ap/SerializedPluginDescription.java @@ -24,7 +24,8 @@ import org.checkerframework.checker.nullness.qual.Nullable; */ public final class SerializedPluginDescription { - public static final Pattern ID_PATTERN = Pattern.compile("[a-z][a-z0-9-_]{0,63}"); + public static final String ID_PATTERN_STRING = "[a-z][a-z0-9-_]{0,63}"; + public static final Pattern ID_PATTERN = Pattern.compile(ID_PATTERN_STRING); // @Nullable is used here to make GSON skip these in the serialized file private final String id; diff --git a/api/src/main/java/com/velocitypowered/api/plugin/Dependency.java b/api/src/main/java/com/velocitypowered/api/plugin/Dependency.java index dfe1908f0..413dd9e55 100644 --- a/api/src/main/java/com/velocitypowered/api/plugin/Dependency.java +++ b/api/src/main/java/com/velocitypowered/api/plugin/Dependency.java @@ -7,9 +7,11 @@ package com.velocitypowered.api.plugin; +import com.velocitypowered.api.plugin.ap.SerializedPluginDescription; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; +import org.intellij.lang.annotations.Pattern; /** * Indicates that the {@link Plugin} depends on another plugin in order to enable. @@ -24,6 +26,7 @@ public @interface Dependency { * @return The dependency plugin ID * @see Plugin#id() */ + @Pattern(SerializedPluginDescription.ID_PATTERN_STRING) String id(); /** diff --git a/api/src/main/java/com/velocitypowered/api/plugin/Plugin.java b/api/src/main/java/com/velocitypowered/api/plugin/Plugin.java index 523648e67..d3b458ca4 100644 --- a/api/src/main/java/com/velocitypowered/api/plugin/Plugin.java +++ b/api/src/main/java/com/velocitypowered/api/plugin/Plugin.java @@ -7,10 +7,12 @@ package com.velocitypowered.api.plugin; +import com.velocitypowered.api.plugin.ap.SerializedPluginDescription; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; +import org.intellij.lang.annotations.Pattern; /** * Annotation used to describe a Velocity plugin. @@ -26,6 +28,7 @@ public @interface Plugin { * * @return the ID for this plugin */ + @Pattern(SerializedPluginDescription.ID_PATTERN_STRING) String id(); /**