From dde45d25aa9d5e35d4e86bfa320b8ae44d5e6db1 Mon Sep 17 00:00:00 2001
From: Octavia Togami
Date: Fri, 19 Jun 2026 00:47:48 -0700
Subject: [PATCH 1/4] Migrate to Kyori Adventure 5.1.1
Co-authored-by: Joo200
---
buildSrc/src/main/kotlin/Libs.kt | 6 +-
buildSrc/src/main/kotlin/common.kt | 2 -
.../piston/gen/util/CodeBlockUtil.java | 7 +-
.../org/enginehub/piston/RegressionTest.kt | 15 ++---
.../org/enginehub/piston/TestSupport.kt | 17 +++--
.../EmptyAcceptingSuggestingConverter.kt | 5 +-
.../suggestion/ManagerSuggestionTest.kt | 9 +--
.../suggestion/SimpleSuggestingConverter.kt | 6 +-
.../piston/util/HelpGeneratorTest.kt | 12 ++--
.../gen/CollectionArgRegistration.java | 11 ++--
.../gen/CommandValueArgRegistration.java | 7 +-
.../test/resources/gen/FlagsRegistration.java | 19 +++---
.../resources/gen/IntArgRegistration.java | 23 ++++---
.../test/resources/gen/NoArgRegistration.java | 12 ++--
.../gen/NonArgParametersRegistration.java | 6 +-
.../gen/Outer_BasicNestedRegistration.java | 4 +-
.../gen/WildcardArgRegistration.java | 7 +-
core/build.gradle.kts | 4 +-
.../java/org/enginehub/piston/Command.java | 2 +-
.../enginehub/piston/config/ColorConfig.java | 30 +++++----
.../org/enginehub/piston/config/Config.java | 6 +-
.../enginehub/piston/config/ConfigHolder.java | 2 +-
.../piston/config/ConfigRenderer.java | 15 +++--
.../enginehub/piston/config/TextConfig.java | 11 ++--
.../piston/converter/ArgumentConverter.java | 2 +-
.../ForwardingArgumentConverter.java | 2 +-
.../converter/MapArgumentConverter.java | 2 +-
.../piston/converter/MultiKeyConverter.java | 2 +-
.../converter/SimpleArgumentConverter.java | 5 +-
.../piston/exception/CommandException.java | 7 +-
.../exception/ConditionFailedException.java | 4 +-
.../exception/ConversionFailedException.java | 12 ++--
.../exception/NoSuchCommandException.java | 4 +-
.../piston/exception/NoSuchFlagException.java | 14 ++--
.../exception/StopExecutionException.java | 2 +-
.../piston/exception/UsageException.java | 2 +-
.../piston/part/ArgAcceptingCommandFlag.java | 19 +++---
.../piston/part/ArgConsumingCommandPart.java | 2 +-
.../piston/part/CommandArgument.java | 13 ++--
.../enginehub/piston/part/CommandPart.java | 2 +-
.../enginehub/piston/part/CommandParts.java | 4 +-
.../piston/part/NoArgCommandFlag.java | 11 ++--
.../enginehub/piston/part/SubCommandPart.java | 11 ++--
.../piston/util/ComponentHelper.java | 12 ++--
.../enginehub/piston/util/HelpGenerator.java | 47 +++++++------
.../org/enginehub/piston/util/PartHelper.java | 22 +++----
.../org/enginehub/piston/util/TextHelper.java | 32 +++++----
.../org/enginehub/piston/ConditionTest.java | 1 -
.../piston/config/ConfigHolderTest.java | 17 +++--
.../piston/exception/ConstructionTest.java | 17 +++--
.../enginehub/piston/impl/CommandImpl.java | 8 +--
.../enginehub/piston/impl/CommandParser.java | 66 ++++++++++---------
.../piston/impl/CommandManagerTest.java | 11 ++--
53 files changed, 287 insertions(+), 304 deletions(-)
diff --git a/buildSrc/src/main/kotlin/Libs.kt b/buildSrc/src/main/kotlin/Libs.kt
index 5432ad0..f846358 100644
--- a/buildSrc/src/main/kotlin/Libs.kt
+++ b/buildSrc/src/main/kotlin/Libs.kt
@@ -4,9 +4,9 @@ object Libs {
const val junitEngine = "org.junit.jupiter:junit-jupiter-engine:$junitVersion"
const val junitPlatformLauncher = "org.junit.platform:junit-platform-launcher:$junitVersion"
const val guava = "com.google.guava:guava:33.6.0-jre"
- private const val kyoriTextVersion = "3.0.4"
- const val kyoriText = "net.kyori:text-api:$kyoriTextVersion"
- const val kyoriTextPlain = "net.kyori:text-serializer-plain:$kyoriTextVersion"
+ private const val kyoriAdventureVersion = "5.1.1"
+ const val kyoriAdventure = "net.kyori:adventure-api:$kyoriAdventureVersion"
+ const val kyoriAdventureTextPlain = "net.kyori:adventure-text-serializer-plain:$kyoriAdventureVersion"
const val autoCommon = "com.google.auto:auto-common:1.2.2"
private const val autoValueVersion = "1.11.1"
const val autoValueAnnotations = "com.google.auto.value:auto-value-annotations:$autoValueVersion"
diff --git a/buildSrc/src/main/kotlin/common.kt b/buildSrc/src/main/kotlin/common.kt
index 96656c3..f0f9b95 100644
--- a/buildSrc/src/main/kotlin/common.kt
+++ b/buildSrc/src/main/kotlin/common.kt
@@ -5,8 +5,6 @@ import org.gradle.api.plugins.JavaPluginExtension
import org.gradle.api.publish.PublishingExtension
import org.gradle.api.publish.maven.MavenPublication
import org.gradle.api.tasks.Copy
-import org.gradle.api.tasks.SourceSetContainer
-import org.gradle.api.tasks.bundling.Jar
import org.gradle.api.tasks.compile.JavaCompile
import org.gradle.api.tasks.javadoc.Javadoc
import org.gradle.api.tasks.testing.Test
diff --git a/core-ap/processor/src/main/java/org/enginehub/piston/gen/util/CodeBlockUtil.java b/core-ap/processor/src/main/java/org/enginehub/piston/gen/util/CodeBlockUtil.java
index 883150c..570414e 100644
--- a/core-ap/processor/src/main/java/org/enginehub/piston/gen/util/CodeBlockUtil.java
+++ b/core-ap/processor/src/main/java/org/enginehub/piston/gen/util/CodeBlockUtil.java
@@ -22,8 +22,7 @@
import com.google.common.collect.ImmutableList;
import com.squareup.javapoet.CodeBlock;
import com.squareup.javapoet.TypeName;
-import net.kyori.text.TextComponent;
-import net.kyori.text.TranslatableComponent;
+import net.kyori.adventure.text.Component;
import org.enginehub.piston.internal.RegistrationUtil;
import javax.annotation.Nullable;
@@ -72,11 +71,11 @@ public static CodeBlock listForGen(Stream rawCode) {
}
public static CodeBlock textCompOf(String text) {
- return CodeBlock.of("$T.of($S)", TextComponent.class, text);
+ return CodeBlock.of("$T.text($S)", Component.class, text);
}
public static CodeBlock transCompOf(String text) {
- return CodeBlock.of("$T.of($S)", TranslatableComponent.class, text);
+ return CodeBlock.of("$T.translatable($S)", Component.class, text);
}
public static Collector joining(String delimiter) {
diff --git a/core-ap/processor/src/test/kotlin/org/enginehub/piston/RegressionTest.kt b/core-ap/processor/src/test/kotlin/org/enginehub/piston/RegressionTest.kt
index 5cdf5b4..7112862 100644
--- a/core-ap/processor/src/test/kotlin/org/enginehub/piston/RegressionTest.kt
+++ b/core-ap/processor/src/test/kotlin/org/enginehub/piston/RegressionTest.kt
@@ -19,7 +19,7 @@
package org.enginehub.piston
-import net.kyori.text.TextComponent
+import net.kyori.adventure.text.Component
import org.enginehub.piston.commands.RegressionCommands
import org.enginehub.piston.commands.RegressionCommandsRegistration
import org.enginehub.piston.converter.SimpleArgumentConverter
@@ -36,7 +36,6 @@ import org.junit.jupiter.api.assertThrows
import org.mockito.Mockito.mock
import org.mockito.Mockito.times
import org.mockito.Mockito.verify
-import org.mockito.Mockito.verifyNoInteractions
@DisplayName("Regression tests")
class RegressionTest {
@@ -94,10 +93,10 @@ class RegressionTest {
action(it.valueOf(arg).asString())
1
}
- .description(TextComponent.of("Sub-command"))
+ .description(Component.text("Sub-command"))
.build()
cmd.run {
- description(TextComponent.of("Issue 9 #2"))
+ description(Component.text("Issue 9 #2"))
// Optional arg prior to sub-command
addPart(arg)
addPart(subs(sub))
@@ -137,11 +136,11 @@ class RegressionTest {
}
val sub = manager.newCommand("vert")
.action { SUB_ACTION }
- .description(TextComponent.of("Sub-command"))
+ .description(Component.text("Sub-command"))
.build()
cmd.run {
action { ROOT_ACTION }
- description(TextComponent.of("Issue 14"))
+ description(Component.text("Issue 14"))
addPart(subs(sub, required = false))
addPart(req)
addPart(optAfter)
@@ -171,10 +170,10 @@ class RegressionTest {
val sub = manager.newCommand("world")
.action { SUB_ACTION }
.aliases(setOf("there"))
- .description(TextComponent.of("Sub-command"))
+ .description(Component.text("Sub-command"))
.build()
cmd.run {
- description(TextComponent.of("hello"))
+ description(Component.text("hello"))
addPart(subs(sub, required = true))
}
}
diff --git a/core-ap/processor/src/test/kotlin/org/enginehub/piston/TestSupport.kt b/core-ap/processor/src/test/kotlin/org/enginehub/piston/TestSupport.kt
index 0ab6074..1a2f8db 100644
--- a/core-ap/processor/src/test/kotlin/org/enginehub/piston/TestSupport.kt
+++ b/core-ap/processor/src/test/kotlin/org/enginehub/piston/TestSupport.kt
@@ -21,8 +21,7 @@ package org.enginehub.piston
import com.google.common.collect.ImmutableList
import com.google.common.collect.ImmutableSet
-import net.kyori.text.TextComponent
-import net.kyori.text.TranslatableComponent
+import net.kyori.adventure.text.Component
import org.enginehub.piston.gen.CommandRegistration
import org.enginehub.piston.part.ArgAcceptingCommandFlag
import org.enginehub.piston.part.CommandArgument
@@ -54,30 +53,30 @@ inline fun withMockedContainer(block: (CI) -> Unit) {
inline fun arg(name: String, desc: String, block: CommandArgument.Builder.() -> Unit = {}): CommandArgument =
CommandParts.arg(
- TranslatableComponent.of(name),
- TextComponent.of(desc)
+ Component.translatable(name),
+ Component.text(desc)
).also(block).build()
inline fun flag(name: Char, desc: String, block: NoArgCommandFlag.Builder.() -> Unit = {}): NoArgCommandFlag =
CommandParts.flag(
name,
- TextComponent.of(desc)
+ Component.text(desc)
).also(block).build()
inline fun argFlag(name: Char, desc: String, argName: String,
block: ArgAcceptingCommandFlag.Builder.() -> Unit = {}): ArgAcceptingCommandFlag =
CommandParts.flag(
name,
- TextComponent.of(desc)
+ Component.text(desc)
)
.withRequiredArg()
.argNamed(argName)
.also(block).build()
fun subs(vararg subCommands: Command, required: Boolean = true): SubCommandPart =
- SubCommandPart.builder(
- TranslatableComponent.of("actions"),
- TextComponent.of("Sub-actions")
+ SubCommandPart.builder(
+ Component.translatable("actions"),
+ Component.text("Sub-actions")
).run {
withCommands(ImmutableList.copyOf(subCommands))
diff --git a/core-ap/processor/src/test/kotlin/org/enginehub/piston/suggestion/EmptyAcceptingSuggestingConverter.kt b/core-ap/processor/src/test/kotlin/org/enginehub/piston/suggestion/EmptyAcceptingSuggestingConverter.kt
index 96d1f3c..364acad 100644
--- a/core-ap/processor/src/test/kotlin/org/enginehub/piston/suggestion/EmptyAcceptingSuggestingConverter.kt
+++ b/core-ap/processor/src/test/kotlin/org/enginehub/piston/suggestion/EmptyAcceptingSuggestingConverter.kt
@@ -19,8 +19,7 @@
package org.enginehub.piston.suggestion
-import net.kyori.text.Component
-import net.kyori.text.TextComponent
+import net.kyori.adventure.text.Component
import org.enginehub.piston.converter.ArgumentConverter
import org.enginehub.piston.converter.ConversionResult
import org.enginehub.piston.converter.FailedConversion
@@ -37,7 +36,7 @@ class EmptyAcceptingSuggestingConverter(private val suggestions: List) :
}
override fun describeAcceptableArguments(): Component {
- return TextComponent.of("Empty, or any of $suggestions")
+ return Component.text("Empty, or any of $suggestions")
}
override fun getSuggestions(input: String, context: InjectedValueAccess): List =
diff --git a/core-ap/processor/src/test/kotlin/org/enginehub/piston/suggestion/ManagerSuggestionTest.kt b/core-ap/processor/src/test/kotlin/org/enginehub/piston/suggestion/ManagerSuggestionTest.kt
index 5dca148..d451eaa 100644
--- a/core-ap/processor/src/test/kotlin/org/enginehub/piston/suggestion/ManagerSuggestionTest.kt
+++ b/core-ap/processor/src/test/kotlin/org/enginehub/piston/suggestion/ManagerSuggestionTest.kt
@@ -19,7 +19,8 @@
package org.enginehub.piston.suggestion
-import net.kyori.text.TextComponent
+import net.kyori.adventure.text.Component
+import net.kyori.adventure.text.TextComponent
import org.enginehub.piston.Command
import org.enginehub.piston.CommandManager
import org.enginehub.piston.assertEqualUnordered
@@ -65,13 +66,13 @@ class ManagerSuggestionTest {
EmptyAcceptingSuggestingConverter(suggestionsFor.getValue("fruits").toList()))
register("notpermitted") { cmd ->
- cmd.description(TextComponent.of("Command with false condition"))
+ cmd.description(Component.text("Command with false condition"))
cmd.condition(Command.Condition.FALSE)
}
// Must stay last: `sub`'s children are every command registered before it.
register("sub") { cmd ->
- cmd.description(TextComponent.of("Sub-commands test command"))
+ cmd.description(Component.text("Sub-commands test command"))
cmd.addPart(subs(*allCommands.toList().toTypedArray()))
}
}
@@ -100,7 +101,7 @@ class ManagerSuggestionTest {
withSuggestionManager { manager ->
manager.registerManager(newManager().apply {
register("permitted") { cmd ->
- cmd.description(TextComponent.of("Command with true condition"))
+ cmd.description(Component.text("Command with true condition"))
cmd.condition(Command.Condition.TRUE)
}
})
diff --git a/core-ap/processor/src/test/kotlin/org/enginehub/piston/suggestion/SimpleSuggestingConverter.kt b/core-ap/processor/src/test/kotlin/org/enginehub/piston/suggestion/SimpleSuggestingConverter.kt
index a0a8dd1..15b3d69 100644
--- a/core-ap/processor/src/test/kotlin/org/enginehub/piston/suggestion/SimpleSuggestingConverter.kt
+++ b/core-ap/processor/src/test/kotlin/org/enginehub/piston/suggestion/SimpleSuggestingConverter.kt
@@ -19,8 +19,8 @@
package org.enginehub.piston.suggestion
-import net.kyori.text.Component
-import net.kyori.text.TextComponent
+import net.kyori.adventure.text.Component
+import net.kyori.adventure.text.TextComponent
import org.enginehub.piston.converter.ArgumentConverter
import org.enginehub.piston.converter.ConversionResult
import org.enginehub.piston.converter.FailedConversion
@@ -37,7 +37,7 @@ class SimpleSuggestingConverter(private val suggestions: List) : Argumen
}
override fun describeAcceptableArguments(): Component {
- return TextComponent.of("Any of $suggestions")
+ return Component.text("Any of $suggestions")
}
override fun getSuggestions(input: String, context: InjectedValueAccess): List =
diff --git a/core-ap/processor/src/test/kotlin/org/enginehub/piston/util/HelpGeneratorTest.kt b/core-ap/processor/src/test/kotlin/org/enginehub/piston/util/HelpGeneratorTest.kt
index 92a1e81..8855a4e 100644
--- a/core-ap/processor/src/test/kotlin/org/enginehub/piston/util/HelpGeneratorTest.kt
+++ b/core-ap/processor/src/test/kotlin/org/enginehub/piston/util/HelpGeneratorTest.kt
@@ -20,7 +20,7 @@
package org.enginehub.piston.util
import com.google.common.collect.ImmutableList
-import net.kyori.text.TextComponent
+import net.kyori.adventure.text.Component
import org.enginehub.piston.TestCommandMetadata
import org.enginehub.piston.TestCommandParameters
import org.enginehub.piston.TestParseResult
@@ -98,7 +98,7 @@ class HelpGeneratorTest {
@Test
fun singleArgOptionalNotNoneHelp() {
val command = listOf(newManager().newCommand("single-arg-opt")
- .description(TextComponent.of("description"))
+ .description(Component.text("description"))
.addParts(
arg("piston.argument.first","First argument") {
defaultsTo(ImmutableList.of("a", "b"))
@@ -116,7 +116,7 @@ class HelpGeneratorTest {
@Test
fun flagsHelp() {
val command = listOf(newManager().newCommand("flags")
- .description(TextComponent.of("description"))
+ .description(Component.text("description"))
.addParts(
flag('f', "Flag"),
argFlag('q', "Quibble", "qux"),
@@ -138,12 +138,12 @@ class HelpGeneratorTest {
@Test
fun subCommandsHelp() {
val subCommand = newManager().newCommand("sub-command")
- .description(TextComponent.of("sub-description"))
+ .description(Component.text("sub-description"))
.build()
val interArg = arg("intermediate", "inter-arg")
val subCommands = subs(subCommand)
val command = newManager().newCommand("main")
- .description(TextComponent.of("description"))
+ .description(Component.text("description"))
.addParts(interArg, subCommands)
.build()
assertEquals("""
@@ -180,4 +180,4 @@ class HelpGeneratorTest {
).fullName))
}
-}
\ No newline at end of file
+}
diff --git a/core-ap/processor/src/test/resources/gen/CollectionArgRegistration.java b/core-ap/processor/src/test/resources/gen/CollectionArgRegistration.java
index 7faa88e..6d967f5 100644
--- a/core-ap/processor/src/test/resources/gen/CollectionArgRegistration.java
+++ b/core-ap/processor/src/test/resources/gen/CollectionArgRegistration.java
@@ -36,8 +36,7 @@
import java.lang.reflect.Method;
import java.util.Collection;
import javax.annotation.processing.Generated;
-import net.kyori.text.TextComponent;
-import net.kyori.text.TranslatableComponent;
+import net.kyori.adventure.text.Component;
import org.enginehub.piston.CommandManager;
import org.enginehub.piston.CommandParameters;
import org.enginehub.piston.gen.CommandCallListener;
@@ -57,12 +56,12 @@ final class CollectionArgRegistration implements CommandRegistration listeners;
- private final CommandArgument argPart = arg(TranslatableComponent.of("piston.argument.arg"), TextComponent.of("ARG DESCRIPTION"))
+ private final CommandArgument argPart = arg(Component.translatable("piston.argument.arg"), Component.text("ARG DESCRIPTION"))
.defaultsTo(ImmutableList.of())
.ofTypes(ImmutableList.of(string_Key))
.build();
- private final CommandArgument argPart2 = arg(TranslatableComponent.of("piston.argument.arg"), TextComponent.of("ARG DESCRIPTION"))
+ private final CommandArgument argPart2 = arg(Component.translatable("piston.argument.arg"), Component.text("ARG DESCRIPTION"))
.defaultsTo(ImmutableList.of())
.ofTypes(ImmutableList.of(object_Key))
.build();
@@ -93,13 +92,13 @@ public CollectionArgRegistration listeners(Collection liste
public void build() {
commandManager.register("collectionArgument", b -> {
b.aliases(ImmutableList.of());
- b.description(TextComponent.of("DESCRIPTION"));
+ b.description(Component.text("DESCRIPTION"));
b.parts(ImmutableList.of(argPart));
b.action(this::cmd$collectionArgument);
});
commandManager.register("objectArgument", b -> {
b.aliases(ImmutableList.of());
- b.description(TextComponent.of("DESCRIPTION"));
+ b.description(Component.text("DESCRIPTION"));
b.parts(ImmutableList.of(argPart2));
b.action(this::cmd$objectArgument);
});
diff --git a/core-ap/processor/src/test/resources/gen/CommandValueArgRegistration.java b/core-ap/processor/src/test/resources/gen/CommandValueArgRegistration.java
index 7ee4fa6..9cc4821 100644
--- a/core-ap/processor/src/test/resources/gen/CommandValueArgRegistration.java
+++ b/core-ap/processor/src/test/resources/gen/CommandValueArgRegistration.java
@@ -34,8 +34,7 @@
import java.lang.reflect.Method;
import java.util.Collection;
import javax.annotation.processing.Generated;
-import net.kyori.text.TextComponent;
-import net.kyori.text.TranslatableComponent;
+import net.kyori.adventure.text.Component;
import org.enginehub.piston.CommandManager;
import org.enginehub.piston.CommandParameters;
import org.enginehub.piston.CommandValue;
@@ -52,7 +51,7 @@ final class CommandValueArgRegistration implements CommandRegistration listeners;
- private final CommandArgument argPart = arg(TranslatableComponent.of("piston.argument.arg"), TextComponent.of("ARG DESCRIPTION"))
+ private final CommandArgument argPart = arg(Component.translatable("piston.argument.arg"), Component.text("ARG DESCRIPTION"))
.defaultsTo(ImmutableList.of())
.build();
@@ -82,7 +81,7 @@ public CommandValueArgRegistration listeners(Collection lis
public void build() {
commandManager.register("valueArgument", b -> {
b.aliases(ImmutableList.of());
- b.description(TextComponent.of("DESCRIPTION"));
+ b.description(Component.text("DESCRIPTION"));
b.parts(ImmutableList.of(argPart));
b.action(this::cmd$valueArgument);
});
diff --git a/core-ap/processor/src/test/resources/gen/FlagsRegistration.java b/core-ap/processor/src/test/resources/gen/FlagsRegistration.java
index 9a8bd63..aff8f99 100644
--- a/core-ap/processor/src/test/resources/gen/FlagsRegistration.java
+++ b/core-ap/processor/src/test/resources/gen/FlagsRegistration.java
@@ -34,8 +34,7 @@
import java.lang.reflect.Method;
import java.util.Collection;
import javax.annotation.processing.Generated;
-import net.kyori.text.TextComponent;
-import net.kyori.text.TranslatableComponent;
+import net.kyori.adventure.text.Component;
import org.enginehub.piston.CommandManager;
import org.enginehub.piston.CommandParameters;
import org.enginehub.piston.gen.CommandCallListener;
@@ -54,18 +53,18 @@ final class FlagsRegistration implements CommandRegistration {
private ImmutableList listeners;
- private final NoArgCommandFlag flagPart = flag('f', TextComponent.of("ARG DESCRIPTION")).build();
+ private final NoArgCommandFlag flagPart = flag('f', Component.text("ARG DESCRIPTION")).build();
- private final ArgAcceptingCommandFlag flagPart2 = flag('f', TextComponent.of("ARG DESCRIPTION"))
+ private final ArgAcceptingCommandFlag flagPart2 = flag('f', Component.text("ARG DESCRIPTION"))
.withRequiredArg()
- .argNamed(TranslatableComponent.of("piston.argument.flag"))
+ .argNamed(Component.translatable("piston.argument.flag"))
.defaultsTo(ImmutableList.of("DEFAULT"))
.ofTypes(ImmutableList.of(string_Key))
.build();
- private final ArgAcceptingCommandFlag flagPart3 = flag('f', TextComponent.of("ARG DESCRIPTION"))
+ private final ArgAcceptingCommandFlag flagPart3 = flag('f', Component.text("ARG DESCRIPTION"))
.withRequiredArg()
- .argNamed(TranslatableComponent.of("piston.argument.ARG NAME"))
+ .argNamed(Component.translatable("piston.argument.ARG NAME"))
.defaultsTo(ImmutableList.of("DEFAULT"))
.ofTypes(ImmutableList.of(string_Key))
.build();
@@ -96,19 +95,19 @@ public FlagsRegistration listeners(Collection listeners) {
public void build() {
commandManager.register("booleanFlag", b -> {
b.aliases(ImmutableList.of());
- b.description(TextComponent.of("DESCRIPTION"));
+ b.description(Component.text("DESCRIPTION"));
b.parts(ImmutableList.of(flagPart));
b.action(this::cmd$booleanFlag);
});
commandManager.register("stringArgFlag", b -> {
b.aliases(ImmutableList.of());
- b.description(TextComponent.of("DESCRIPTION"));
+ b.description(Component.text("DESCRIPTION"));
b.parts(ImmutableList.of(flagPart2));
b.action(this::cmd$stringArgFlag);
});
commandManager.register("stringArgFlagCustom", b -> {
b.aliases(ImmutableList.of());
- b.description(TextComponent.of("DESCRIPTION"));
+ b.description(Component.text("DESCRIPTION"));
b.parts(ImmutableList.of(flagPart3));
b.action(this::cmd$stringArgFlagCustom);
});
diff --git a/core-ap/processor/src/test/resources/gen/IntArgRegistration.java b/core-ap/processor/src/test/resources/gen/IntArgRegistration.java
index 6d0c0b7..81b578b 100644
--- a/core-ap/processor/src/test/resources/gen/IntArgRegistration.java
+++ b/core-ap/processor/src/test/resources/gen/IntArgRegistration.java
@@ -39,8 +39,7 @@
import java.util.Collection;
import java.util.List;
import javax.annotation.processing.Generated;
-import net.kyori.text.TextComponent;
-import net.kyori.text.TranslatableComponent;
+import net.kyori.adventure.text.Component;
import org.enginehub.piston.CommandManager;
import org.enginehub.piston.CommandParameters;
import org.enginehub.piston.gen.CommandCallListener;
@@ -81,27 +80,27 @@ Annotation a(@InjectDelta(qux = 45, baz = 32, thq = { 10, 99 }) Object ah) {
private ImmutableList listeners;
- private final CommandArgument argPart = arg(TranslatableComponent.of("piston.argument.arg"), TextComponent.of("ARG DESCRIPTION"))
+ private final CommandArgument argPart = arg(Component.translatable("piston.argument.arg"), Component.text("ARG DESCRIPTION"))
.defaultsTo(ImmutableList.of())
.ofTypes(ImmutableList.of(integer_Key))
.build();
- private final CommandArgument argPart2 = arg(TranslatableComponent.of("piston.argument.arg"), TextComponent.of("ARG DESCRIPTION"))
+ private final CommandArgument argPart2 = arg(Component.translatable("piston.argument.arg"), Component.text("ARG DESCRIPTION"))
.defaultsTo(ImmutableList.of())
.ofTypes(ImmutableList.of(integer_injectGamma_something_to_match__Key))
.build();
- private final CommandArgument deltaPart = arg(TranslatableComponent.of("piston.argument.delta"), TextComponent.of("ARG DESCRIPTION"))
+ private final CommandArgument deltaPart = arg(Component.translatable("piston.argument.delta"), Component.text("ARG DESCRIPTION"))
.defaultsTo(ImmutableList.of())
.ofTypes(ImmutableList.of(integer_injectDeltaQux45$Baz32$Thq1099_Key))
.build();
- private final CommandArgument alphaPart = arg(TranslatableComponent.of("piston.argument.alpha"), TextComponent.of("ARG DESCRIPTION"))
+ private final CommandArgument alphaPart = arg(Component.translatable("piston.argument.alpha"), Component.text("ARG DESCRIPTION"))
.defaultsTo(ImmutableList.of())
.ofTypes(ImmutableList.of(integer_injectAlpha_Key))
.build();
- private final CommandArgument argPart3 = arg(TranslatableComponent.of("piston.argument.args"), TextComponent.of("ARG DESCRIPTION"))
+ private final CommandArgument argPart3 = arg(Component.translatable("piston.argument.args"), Component.text("ARG DESCRIPTION"))
.defaultsTo(ImmutableList.of())
.ofTypes(ImmutableList.of(integer_Key))
.variable(true)
@@ -133,31 +132,31 @@ public IntArgRegistration listeners(Collection listeners) {
public void build() {
commandManager.register("intArgument", b -> {
b.aliases(ImmutableList.of());
- b.description(TextComponent.of("DESCRIPTION"));
+ b.description(Component.text("DESCRIPTION"));
b.parts(ImmutableList.of(argPart));
b.action(this::cmd$intArgument);
});
commandManager.register("annotatedIntArgument", b -> {
b.aliases(ImmutableList.of());
- b.description(TextComponent.of("DESCRIPTION"));
+ b.description(Component.text("DESCRIPTION"));
b.parts(ImmutableList.of(argPart2));
b.action(this::cmd$annotatedIntArgument);
});
commandManager.register("annotatedIntArgument2", b -> {
b.aliases(ImmutableList.of());
- b.description(TextComponent.of("DESCRIPTION"));
+ b.description(Component.text("DESCRIPTION"));
b.parts(ImmutableList.of(deltaPart));
b.action(this::cmd$annotatedIntArgument2);
});
commandManager.register("annotatedIntArgument3", b -> {
b.aliases(ImmutableList.of());
- b.description(TextComponent.of("DESCRIPTION"));
+ b.description(Component.text("DESCRIPTION"));
b.parts(ImmutableList.of(alphaPart));
b.action(this::cmd$annotatedIntArgument3);
});
commandManager.register("variableIntArgument", b -> {
b.aliases(ImmutableList.of());
- b.description(TextComponent.of("DESCRIPTION"));
+ b.description(Component.text("DESCRIPTION"));
b.parts(ImmutableList.of(argPart3));
b.action(this::cmd$variableIntArgument);
});
diff --git a/core-ap/processor/src/test/resources/gen/NoArgRegistration.java b/core-ap/processor/src/test/resources/gen/NoArgRegistration.java
index 3176511..ae90021 100644
--- a/core-ap/processor/src/test/resources/gen/NoArgRegistration.java
+++ b/core-ap/processor/src/test/resources/gen/NoArgRegistration.java
@@ -34,7 +34,7 @@
import java.lang.reflect.Method;
import java.util.Collection;
import javax.annotation.processing.Generated;
-import net.kyori.text.TextComponent;
+import net.kyori.adventure.text.Component;
import org.enginehub.piston.Command;
import org.enginehub.piston.CommandManager;
import org.enginehub.piston.CommandParameters;
@@ -85,20 +85,20 @@ public NoArgRegistration listeners(Collection listeners) {
public void build() {
commandManager.register("noArgument", b -> {
b.aliases(ImmutableList.of());
- b.description(TextComponent.of("DESCRIPTION"));
+ b.description(Component.text("DESCRIPTION"));
b.parts(ImmutableList.of());
b.action(this::cmd$noArgument);
});
commandManager.register("noArgumentFooter", b -> {
b.aliases(ImmutableList.of());
- b.description(TextComponent.of("DESCRIPTION"));
- b.footer(TextComponent.of("DESC FOOTER"));
+ b.description(Component.text("DESCRIPTION"));
+ b.footer(Component.text("DESC FOOTER"));
b.parts(ImmutableList.of());
b.action(this::cmd$noArgumentFooter);
});
commandManager.register("noArgumentCondition", b -> {
b.aliases(ImmutableList.of());
- b.description(TextComponent.of("DESCRIPTION"));
+ b.description(Component.text("DESCRIPTION"));
b.parts(ImmutableList.of());
b.action(this::cmd$noArgumentCondition);
Method commandMethod = getCommandMethod(NoArg.class, "noArgCondition");
@@ -107,7 +107,7 @@ public void build() {
});
commandManager.register("noArgumentStatic", b -> {
b.aliases(ImmutableList.of());
- b.description(TextComponent.of("DESCRIPTION"));
+ b.description(Component.text("DESCRIPTION"));
b.parts(ImmutableList.of());
b.action(this::cmd$noArgumentStatic);
});
diff --git a/core-ap/processor/src/test/resources/gen/NonArgParametersRegistration.java b/core-ap/processor/src/test/resources/gen/NonArgParametersRegistration.java
index e5d2ff6..10f9aa6 100644
--- a/core-ap/processor/src/test/resources/gen/NonArgParametersRegistration.java
+++ b/core-ap/processor/src/test/resources/gen/NonArgParametersRegistration.java
@@ -36,7 +36,7 @@
import java.util.Collection;
import java.util.concurrent.Callable;
import javax.annotation.processing.Generated;
-import net.kyori.text.TextComponent;
+import net.kyori.adventure.text.Component;
import org.enginehub.piston.CommandManager;
import org.enginehub.piston.CommandParameters;
import org.enginehub.piston.gen.CommandCallListener;
@@ -81,13 +81,13 @@ public NonArgParametersRegistration listeners(Collection li
public void build() {
commandManager.register("nonArgCommandParameters", b -> {
b.aliases(ImmutableList.of());
- b.description(TextComponent.of("DESCRIPTION"));
+ b.description(Component.text("DESCRIPTION"));
b.parts(ImmutableList.of());
b.action(this::cmd$nonArgCommandParameters);
});
commandManager.register("nonArgInjected", b -> {
b.aliases(ImmutableList.of());
- b.description(TextComponent.of("DESCRIPTION"));
+ b.description(Component.text("DESCRIPTION"));
b.parts(ImmutableList.of());
b.action(this::cmd$nonArgInjected);
});
diff --git a/core-ap/processor/src/test/resources/gen/Outer_BasicNestedRegistration.java b/core-ap/processor/src/test/resources/gen/Outer_BasicNestedRegistration.java
index 791f1eb..d471851 100644
--- a/core-ap/processor/src/test/resources/gen/Outer_BasicNestedRegistration.java
+++ b/core-ap/processor/src/test/resources/gen/Outer_BasicNestedRegistration.java
@@ -34,7 +34,7 @@
import java.lang.reflect.Method;
import java.util.Collection;
import javax.annotation.processing.Generated;
-import net.kyori.text.TextComponent;
+import net.kyori.adventure.text.Component;
import org.enginehub.piston.CommandManager;
import org.enginehub.piston.CommandParameters;
import org.enginehub.piston.gen.CommandCallListener;
@@ -75,7 +75,7 @@ public Outer_BasicNestedRegistration listeners(Collection l
public void build() {
commandManager.register("noArgument", b -> {
b.aliases(ImmutableList.of());
- b.description(TextComponent.of("DESCRIPTION"));
+ b.description(Component.text("DESCRIPTION"));
b.parts(ImmutableList.of());
b.action(this::cmd$noArgument);
});
diff --git a/core-ap/processor/src/test/resources/gen/WildcardArgRegistration.java b/core-ap/processor/src/test/resources/gen/WildcardArgRegistration.java
index 13f3c1f..ff1d6c0 100644
--- a/core-ap/processor/src/test/resources/gen/WildcardArgRegistration.java
+++ b/core-ap/processor/src/test/resources/gen/WildcardArgRegistration.java
@@ -35,8 +35,7 @@
import java.util.Collection;
import java.util.function.Consumer;
import javax.annotation.processing.Generated;
-import net.kyori.text.TextComponent;
-import net.kyori.text.TranslatableComponent;
+import net.kyori.adventure.text.Component;
import org.enginehub.piston.CommandManager;
import org.enginehub.piston.CommandParameters;
import org.enginehub.piston.gen.CommandCallListener;
@@ -59,7 +58,7 @@ final class WildcardArgRegistration implements CommandRegistration
private ImmutableList listeners;
- private final CommandArgument argPart = arg(TranslatableComponent.of("piston.argument.arg"), TextComponent.of("ARG DESCRIPTION"))
+ private final CommandArgument argPart = arg(Component.translatable("piston.argument.arg"), Component.text("ARG DESCRIPTION"))
.defaultsTo(ImmutableList.of())
.ofTypes(ImmutableList.of(consumer$__Key))
.build();
@@ -90,7 +89,7 @@ public WildcardArgRegistration listeners(Collection listene
public void build() {
commandManager.register("wildcardArgument", b -> {
b.aliases(ImmutableList.of());
- b.description(TextComponent.of("DESCRIPTION"));
+ b.description(Component.text("DESCRIPTION"));
b.parts(ImmutableList.of(argPart));
b.action(this::cmd$wildcardArgument);
});
diff --git a/core/build.gradle.kts b/core/build.gradle.kts
index 3609940..d688eea 100644
--- a/core/build.gradle.kts
+++ b/core/build.gradle.kts
@@ -2,9 +2,9 @@ applyCommonConfig()
dependencies {
"api"(Libs.guava)
- "api"(Libs.kyoriText)
+ "api"(Libs.kyoriAdventure)
"api"(Libs.javaxAnnotations)
- "implementation"(Libs.kyoriTextPlain)
+ "implementation"(Libs.kyoriAdventureTextPlain)
"compileOnly"(Libs.autoValueAnnotations)
"annotationProcessor"(Libs.autoValueProcessor)
"testImplementation"(Libs.mockito)
diff --git a/core/src/main/java/org/enginehub/piston/Command.java b/core/src/main/java/org/enginehub/piston/Command.java
index 3bbad75..24c4d78 100644
--- a/core/src/main/java/org/enginehub/piston/Command.java
+++ b/core/src/main/java/org/enginehub/piston/Command.java
@@ -20,7 +20,7 @@
package org.enginehub.piston;
import com.google.common.collect.ImmutableList;
-import net.kyori.text.Component;
+import net.kyori.adventure.text.Component;
import org.enginehub.piston.inject.InjectedValueAccess;
import org.enginehub.piston.part.CommandPart;
import org.enginehub.piston.suggestion.SuggestionProvider;
diff --git a/core/src/main/java/org/enginehub/piston/config/ColorConfig.java b/core/src/main/java/org/enginehub/piston/config/ColorConfig.java
index ff0518d..da36916 100644
--- a/core/src/main/java/org/enginehub/piston/config/ColorConfig.java
+++ b/core/src/main/java/org/enginehub/piston/config/ColorConfig.java
@@ -20,11 +20,13 @@
package org.enginehub.piston.config;
import com.google.common.collect.ImmutableList;
-import net.kyori.text.Component;
-import net.kyori.text.TextComponent;
-import net.kyori.text.TranslatableComponent;
-import net.kyori.text.format.Style;
-import net.kyori.text.format.TextColor;
+import net.kyori.adventure.text.Component;
+import net.kyori.adventure.text.ComponentLike;
+import net.kyori.adventure.text.TextComponent;
+import net.kyori.adventure.text.TranslatableComponent;
+import net.kyori.adventure.text.format.NamedTextColor;
+import net.kyori.adventure.text.format.Style;
+import net.kyori.adventure.text.format.TextColor;
import javax.annotation.Nullable;
import java.util.Arrays;
@@ -37,15 +39,15 @@
public class ColorConfig extends Config {
private static final ColorConfig TEXT_MODIFIER =
- new ColorConfig("piston.style.text.modifier", TextColor.YELLOW);
+ new ColorConfig("piston.style.text.modifier", NamedTextColor.YELLOW);
private static final ColorConfig MAIN_TEXT =
- new ColorConfig("piston.style.main.text", TextColor.GOLD);
+ new ColorConfig("piston.style.main.text", NamedTextColor.GOLD);
private static final ColorConfig HELP_TEXT =
- new ColorConfig("piston.style.help.text", TextColor.GRAY);
+ new ColorConfig("piston.style.help.text", NamedTextColor.GRAY);
private static final ColorConfig PART_WRAPPING =
- new ColorConfig("piston.style.part.wrapping", TextColor.YELLOW);
+ new ColorConfig("piston.style.part.wrapping", NamedTextColor.YELLOW);
- private static final Set MERGE_NO_COLOR = Style.Merge.of(
+ private static final Set MERGE_NO_COLOR = Style.Merge.merges(
Style.Merge.DECORATIONS, Style.Merge.INSERTION, Style.Merge.EVENTS
);
@@ -93,7 +95,7 @@ public ColorConfig value(@Nullable TextColor value) {
}
public Component wrap(String text) {
- return wrap(ImmutableList.of(TextComponent.of(text)));
+ return wrap(ImmutableList.of(Component.text(text)));
}
public Component wrap(Component... args) {
@@ -106,7 +108,7 @@ public Component wrap(List args) {
@Override
protected Component apply(TranslatableComponent placeholder) {
- return renderFromArgs(placeholder.args())
+ return renderFromArgs(ComponentLike.asComponents(placeholder.arguments()))
.mergeStyle(placeholder, MERGE_NO_COLOR)
.append(placeholder.children())
.build();
@@ -115,12 +117,12 @@ protected Component apply(TranslatableComponent placeholder) {
private TextComponent.Builder renderFromArgs(List args) {
TextColor color = getValue();
if (args.isEmpty()) {
- return TextComponent.builder("", color);
+ return Component.text().color(color);
}
if (args.size() == 1 && args.get(0) instanceof TextComponent only) {
return only.toBuilder().color(color);
}
- return TextComponent.builder()
+ return Component.text()
.color(color)
.append(args);
}
diff --git a/core/src/main/java/org/enginehub/piston/config/Config.java b/core/src/main/java/org/enginehub/piston/config/Config.java
index 65dd85f..f716ce2 100644
--- a/core/src/main/java/org/enginehub/piston/config/Config.java
+++ b/core/src/main/java/org/enginehub/piston/config/Config.java
@@ -20,8 +20,8 @@
package org.enginehub.piston.config;
import com.google.common.collect.ImmutableList;
-import net.kyori.text.Component;
-import net.kyori.text.TranslatableComponent;
+import net.kyori.adventure.text.Component;
+import net.kyori.adventure.text.TranslatableComponent;
import javax.annotation.Nullable;
import java.util.List;
@@ -76,7 +76,7 @@ public Component value() {
}
protected Component wrapInternal(List args) {
- return TranslatableComponent.of(key, args);
+ return Component.translatable(key, args);
}
protected abstract Component apply(TranslatableComponent placeholder);
diff --git a/core/src/main/java/org/enginehub/piston/config/ConfigHolder.java b/core/src/main/java/org/enginehub/piston/config/ConfigHolder.java
index 85e0d00..68577da 100644
--- a/core/src/main/java/org/enginehub/piston/config/ConfigHolder.java
+++ b/core/src/main/java/org/enginehub/piston/config/ConfigHolder.java
@@ -19,7 +19,7 @@
package org.enginehub.piston.config;
-import net.kyori.text.Component;
+import net.kyori.adventure.text.Component;
import java.util.HashMap;
import java.util.Map;
diff --git a/core/src/main/java/org/enginehub/piston/config/ConfigRenderer.java b/core/src/main/java/org/enginehub/piston/config/ConfigRenderer.java
index 11f4b7f..8a4cd05 100644
--- a/core/src/main/java/org/enginehub/piston/config/ConfigRenderer.java
+++ b/core/src/main/java/org/enginehub/piston/config/ConfigRenderer.java
@@ -20,10 +20,11 @@
package org.enginehub.piston.config;
import com.google.common.collect.ImmutableList;
-import net.kyori.text.Component;
-import net.kyori.text.TranslatableComponent;
-import net.kyori.text.renderer.ComponentRenderer;
-import org.checkerframework.checker.nullness.qual.NonNull;
+import net.kyori.adventure.text.Component;
+import net.kyori.adventure.text.ComponentLike;
+import net.kyori.adventure.text.TranslatableComponent;
+import net.kyori.adventure.text.renderer.ComponentRenderer;
+import org.jetbrains.annotations.NotNull;
import java.util.List;
@@ -45,7 +46,7 @@ private ConfigRenderer() {
}
@Override
- public @NonNull Component render(@NonNull Component component, @NonNull ConfigHolder context) {
+ public @NotNull Component render(@NotNull Component component, @NotNull ConfigHolder context) {
component = replaceSubcomponents(component, context);
if (component instanceof TranslatableComponent) {
// check if replacing
@@ -61,10 +62,10 @@ private ConfigRenderer() {
private Component replaceSubcomponents(Component component, ConfigHolder context) {
if (component instanceof TranslatableComponent) {
TranslatableComponent tc = (TranslatableComponent) component;
- List originalArgs = tc.args();
+ List originalArgs = ComponentLike.asComponents(tc.arguments());
List replacementArgs = renderList(originalArgs, context);
if (originalArgs != replacementArgs) {
- component = tc.args(replacementArgs);
+ component = tc.arguments(replacementArgs);
}
// fall-through to replace children if needed
}
diff --git a/core/src/main/java/org/enginehub/piston/config/TextConfig.java b/core/src/main/java/org/enginehub/piston/config/TextConfig.java
index 3aa77b0..61bc532 100644
--- a/core/src/main/java/org/enginehub/piston/config/TextConfig.java
+++ b/core/src/main/java/org/enginehub/piston/config/TextConfig.java
@@ -19,9 +19,9 @@
package org.enginehub.piston.config;
-import net.kyori.text.Component;
-import net.kyori.text.TextComponent;
-import net.kyori.text.TranslatableComponent;
+import com.google.common.base.Strings;
+import net.kyori.adventure.text.Component;
+import net.kyori.adventure.text.TranslatableComponent;
import javax.annotation.Nullable;
@@ -68,8 +68,9 @@ protected void checkValue(@Nullable String value) {
@Override
protected Component apply(TranslatableComponent placeholder) {
- checkState(placeholder.args().isEmpty(), "TextConfig takes no arguments");
- return TextComponent.builder(getValue())
+ checkState(placeholder.arguments().isEmpty(), "TextConfig takes no arguments");
+ return Component.text()
+ .content(Strings.nullToEmpty(getValue()))
.mergeStyle(placeholder)
.append(placeholder.children())
.build();
diff --git a/core/src/main/java/org/enginehub/piston/converter/ArgumentConverter.java b/core/src/main/java/org/enginehub/piston/converter/ArgumentConverter.java
index cd08618..7d5b734 100644
--- a/core/src/main/java/org/enginehub/piston/converter/ArgumentConverter.java
+++ b/core/src/main/java/org/enginehub/piston/converter/ArgumentConverter.java
@@ -19,7 +19,7 @@
package org.enginehub.piston.converter;
-import net.kyori.text.Component;
+import net.kyori.adventure.text.Component;
import org.enginehub.piston.inject.InjectedValueAccess;
import java.util.Collections;
diff --git a/core/src/main/java/org/enginehub/piston/converter/ForwardingArgumentConverter.java b/core/src/main/java/org/enginehub/piston/converter/ForwardingArgumentConverter.java
index d7dcb58..b03e0d5 100644
--- a/core/src/main/java/org/enginehub/piston/converter/ForwardingArgumentConverter.java
+++ b/core/src/main/java/org/enginehub/piston/converter/ForwardingArgumentConverter.java
@@ -19,7 +19,7 @@
package org.enginehub.piston.converter;
-import net.kyori.text.Component;
+import net.kyori.adventure.text.Component;
import org.enginehub.piston.inject.InjectedValueAccess;
import java.util.List;
diff --git a/core/src/main/java/org/enginehub/piston/converter/MapArgumentConverter.java b/core/src/main/java/org/enginehub/piston/converter/MapArgumentConverter.java
index 9adfec3..2bbde21 100644
--- a/core/src/main/java/org/enginehub/piston/converter/MapArgumentConverter.java
+++ b/core/src/main/java/org/enginehub/piston/converter/MapArgumentConverter.java
@@ -20,7 +20,7 @@
package org.enginehub.piston.converter;
import com.google.common.collect.ImmutableMap;
-import net.kyori.text.Component;
+import net.kyori.adventure.text.Component;
import org.enginehub.piston.config.ColorConfig;
import org.enginehub.piston.inject.InjectedValueAccess;
diff --git a/core/src/main/java/org/enginehub/piston/converter/MultiKeyConverter.java b/core/src/main/java/org/enginehub/piston/converter/MultiKeyConverter.java
index 059ea95..4d93949 100644
--- a/core/src/main/java/org/enginehub/piston/converter/MultiKeyConverter.java
+++ b/core/src/main/java/org/enginehub/piston/converter/MultiKeyConverter.java
@@ -25,7 +25,7 @@
import com.google.common.collect.ImmutableSetMultimap;
import com.google.common.collect.ImmutableSortedMap;
import com.google.common.collect.SetMultimap;
-import net.kyori.text.Component;
+import net.kyori.adventure.text.Component;
import org.enginehub.piston.config.ColorConfig;
import org.enginehub.piston.inject.InjectedValueAccess;
diff --git a/core/src/main/java/org/enginehub/piston/converter/SimpleArgumentConverter.java b/core/src/main/java/org/enginehub/piston/converter/SimpleArgumentConverter.java
index 7ba79f2..0d619b8 100644
--- a/core/src/main/java/org/enginehub/piston/converter/SimpleArgumentConverter.java
+++ b/core/src/main/java/org/enginehub/piston/converter/SimpleArgumentConverter.java
@@ -19,8 +19,7 @@
package org.enginehub.piston.converter;
-import net.kyori.text.Component;
-import net.kyori.text.TextComponent;
+import net.kyori.adventure.text.Component;
import org.enginehub.piston.inject.InjectedValueAccess;
import java.util.List;
@@ -32,7 +31,7 @@
public class SimpleArgumentConverter implements ArgumentConverter {
public static SimpleArgumentConverter from(Converter converter, String description) {
- return from(converter, TextComponent.of(description));
+ return from(converter, Component.text(description));
}
/**
diff --git a/core/src/main/java/org/enginehub/piston/exception/CommandException.java b/core/src/main/java/org/enginehub/piston/exception/CommandException.java
index 289cd50..d96c670 100644
--- a/core/src/main/java/org/enginehub/piston/exception/CommandException.java
+++ b/core/src/main/java/org/enginehub/piston/exception/CommandException.java
@@ -20,8 +20,7 @@
package org.enginehub.piston.exception;
import com.google.common.collect.ImmutableList;
-import net.kyori.text.Component;
-import net.kyori.text.TextComponent;
+import net.kyori.adventure.text.Component;
import org.enginehub.piston.Command;
import org.enginehub.piston.util.TextHelper;
@@ -33,7 +32,7 @@ public class CommandException extends RuntimeException {
protected final ImmutableList commands;
public CommandException(ImmutableList commands) {
- this.message = TextComponent.empty();
+ this.message = Component.empty();
this.commands = commands;
}
@@ -51,7 +50,7 @@ public CommandException(Component message, Throwable cause, ImmutableList commands) {
super(cause);
- this.message = TextComponent.empty();
+ this.message = Component.empty();
this.commands = commands;
}
diff --git a/core/src/main/java/org/enginehub/piston/exception/ConditionFailedException.java b/core/src/main/java/org/enginehub/piston/exception/ConditionFailedException.java
index a0dbac1..26a1b80 100644
--- a/core/src/main/java/org/enginehub/piston/exception/ConditionFailedException.java
+++ b/core/src/main/java/org/enginehub/piston/exception/ConditionFailedException.java
@@ -21,13 +21,13 @@
import com.google.common.collect.ImmutableList;
import com.google.common.collect.Iterables;
-import net.kyori.text.TextComponent;
+import net.kyori.adventure.text.Component;
import org.enginehub.piston.Command;
public class ConditionFailedException extends CommandException {
public ConditionFailedException(ImmutableList commands) {
- super(TextComponent.of("Condition failed: " + Iterables.getLast(commands).getCondition()),
+ super(Component.text("Condition failed: " + Iterables.getLast(commands).getCondition()),
commands);
}
diff --git a/core/src/main/java/org/enginehub/piston/exception/ConversionFailedException.java b/core/src/main/java/org/enginehub/piston/exception/ConversionFailedException.java
index cbf47ff..abc3018 100644
--- a/core/src/main/java/org/enginehub/piston/exception/ConversionFailedException.java
+++ b/core/src/main/java/org/enginehub/piston/exception/ConversionFailedException.java
@@ -19,8 +19,8 @@
package org.enginehub.piston.exception;
-import net.kyori.text.Component;
-import net.kyori.text.TextComponent;
+import net.kyori.adventure.text.Component;
+import net.kyori.adventure.text.TextComponent;
import org.enginehub.piston.CommandParseResult;
import org.enginehub.piston.CommandValue;
import org.enginehub.piston.converter.ArgumentConverter;
@@ -36,14 +36,14 @@ public class ConversionFailedException extends UsageException {
private static Component getMessage(Component conversionTarget, ArgumentConverter> converter,
FailedConversion> conversion) {
- TextComponent.Builder builder = TextComponent.builder("")
- .append(TextComponent.of("Invalid value for "))
+ TextComponent.Builder builder = Component.text()
+ .append(Component.text("Invalid value for "))
.append(conversionTarget);
if (conversion.getError().getMessage() != null) {
- builder.append(TextComponent.of(" (" + conversion.getError().getMessage() + ")"));
+ builder.append(Component.text(" (" + conversion.getError().getMessage() + ")"));
}
return builder
- .append(TextComponent.of(", acceptable values are "))
+ .append(Component.text(", acceptable values are "))
.append(converter.describeAcceptableArguments())
.build();
}
diff --git a/core/src/main/java/org/enginehub/piston/exception/NoSuchCommandException.java b/core/src/main/java/org/enginehub/piston/exception/NoSuchCommandException.java
index 8a00bfe..fd492ba 100644
--- a/core/src/main/java/org/enginehub/piston/exception/NoSuchCommandException.java
+++ b/core/src/main/java/org/enginehub/piston/exception/NoSuchCommandException.java
@@ -20,14 +20,14 @@
package org.enginehub.piston.exception;
import com.google.common.collect.ImmutableList;
-import net.kyori.text.TextComponent;
+import net.kyori.adventure.text.Component;
public class NoSuchCommandException extends CommandException {
private final String requestedCommand;
public NoSuchCommandException(String requestedCommand) {
- super(TextComponent.of("No such command: " + requestedCommand), ImmutableList.of());
+ super(Component.text("No such command: " + requestedCommand), ImmutableList.of());
this.requestedCommand = requestedCommand;
}
diff --git a/core/src/main/java/org/enginehub/piston/exception/NoSuchFlagException.java b/core/src/main/java/org/enginehub/piston/exception/NoSuchFlagException.java
index b5d0fe0..111f667 100644
--- a/core/src/main/java/org/enginehub/piston/exception/NoSuchFlagException.java
+++ b/core/src/main/java/org/enginehub/piston/exception/NoSuchFlagException.java
@@ -21,8 +21,8 @@
import com.google.common.collect.ImmutableList;
import com.google.common.collect.Iterables;
-import net.kyori.text.Component;
-import net.kyori.text.TextComponent;
+import net.kyori.adventure.text.Component;
+import net.kyori.adventure.text.TextComponent;
import org.enginehub.piston.Command;
import org.enginehub.piston.CommandParseResult;
import org.enginehub.piston.config.ColorConfig;
@@ -41,16 +41,16 @@ private static String getAllFlags(ImmutableList commands) {
}
private static Component getMessage(CommandParseResult parseResult, char requestedFlag) {
- TextComponent.Builder message = TextComponent.builder("");
- message.append(TextComponent.of("Flag '"))
+ TextComponent.Builder message = Component.text();
+ message.append(Component.text("Flag '"))
.append(ColorConfig.mainText().wrap(String.valueOf(requestedFlag)))
- .append(TextComponent.of("' is not a valid flag for "));
+ .append(Component.text("' is not a valid flag for "));
message.append(HelpGenerator.create(parseResult).getFullName());
String allFlags = getAllFlags(parseResult.getExecutionPath());
if (allFlags.isEmpty()) {
- message.append(TextComponent.of(", as it does not have any flags"));
+ message.append(Component.text(", as it does not have any flags"));
} else {
- message.append(TextComponent.of(". Options: "))
+ message.append(Component.text(". Options: "))
.append(ColorConfig.mainText().wrap(allFlags));
}
return message.build();
diff --git a/core/src/main/java/org/enginehub/piston/exception/StopExecutionException.java b/core/src/main/java/org/enginehub/piston/exception/StopExecutionException.java
index 6ac59ab..1ee873d 100644
--- a/core/src/main/java/org/enginehub/piston/exception/StopExecutionException.java
+++ b/core/src/main/java/org/enginehub/piston/exception/StopExecutionException.java
@@ -20,7 +20,7 @@
package org.enginehub.piston.exception;
import com.google.common.collect.ImmutableList;
-import net.kyori.text.Component;
+import net.kyori.adventure.text.Component;
import org.enginehub.piston.Command;
/**
diff --git a/core/src/main/java/org/enginehub/piston/exception/UsageException.java b/core/src/main/java/org/enginehub/piston/exception/UsageException.java
index 698c59e..cf7bd65 100644
--- a/core/src/main/java/org/enginehub/piston/exception/UsageException.java
+++ b/core/src/main/java/org/enginehub/piston/exception/UsageException.java
@@ -19,7 +19,7 @@
package org.enginehub.piston.exception;
-import net.kyori.text.Component;
+import net.kyori.adventure.text.Component;
import org.enginehub.piston.CommandParseResult;
/**
diff --git a/core/src/main/java/org/enginehub/piston/part/ArgAcceptingCommandFlag.java b/core/src/main/java/org/enginehub/piston/part/ArgAcceptingCommandFlag.java
index 2e068c4..5495ca5 100644
--- a/core/src/main/java/org/enginehub/piston/part/ArgAcceptingCommandFlag.java
+++ b/core/src/main/java/org/enginehub/piston/part/ArgAcceptingCommandFlag.java
@@ -21,9 +21,8 @@
import com.google.auto.value.AutoValue;
import com.google.common.collect.ImmutableList;
-import net.kyori.text.Component;
-import net.kyori.text.TextComponent;
-import net.kyori.text.TranslatableComponent;
+import net.kyori.adventure.text.Component;
+import net.kyori.adventure.text.TranslatableComponent;
import org.enginehub.piston.config.ColorConfig;
import org.enginehub.piston.inject.Key;
@@ -50,7 +49,7 @@ public final Builder named(char name) {
abstract Builder name(char name);
public final Builder describedBy(String description) {
- return describedBy(TextComponent.of(description));
+ return describedBy(Component.text(description));
}
public final Builder describedBy(Component description) {
@@ -72,7 +71,7 @@ public final Builder ofTypes(Collection> types) {
abstract Builder types(Collection> types);
public final Builder argNamed(String name) {
- return argNamed(TranslatableComponent.of(name));
+ return argNamed(Component.translatable(name));
}
public final Builder argNamed(TranslatableComponent name) {
@@ -90,13 +89,13 @@ public final Builder argNamed(TranslatableComponent name) {
@Override
public Component getTextRepresentation() {
return ColorConfig.partWrapping().wrap(
- TextComponent.of("["),
+ Component.text("["),
ColorConfig.mainText().wrap("-" + getName()),
- TextComponent.space(),
- TextComponent.of("<"),
+ Component.space(),
+ Component.text("<"),
ColorConfig.mainText().wrap(getArgumentName()),
- TextComponent.of(">"),
- TextComponent.of("]")
+ Component.text(">"),
+ Component.text("]")
);
}
}
diff --git a/core/src/main/java/org/enginehub/piston/part/ArgConsumingCommandPart.java b/core/src/main/java/org/enginehub/piston/part/ArgConsumingCommandPart.java
index 72a17c0..36e93c3 100644
--- a/core/src/main/java/org/enginehub/piston/part/ArgConsumingCommandPart.java
+++ b/core/src/main/java/org/enginehub/piston/part/ArgConsumingCommandPart.java
@@ -19,7 +19,7 @@
package org.enginehub.piston.part;
-import net.kyori.text.TranslatableComponent;
+import net.kyori.adventure.text.TranslatableComponent;
/**
* Marker interface for parts that consume arguments directly from the line,
diff --git a/core/src/main/java/org/enginehub/piston/part/CommandArgument.java b/core/src/main/java/org/enginehub/piston/part/CommandArgument.java
index 62d02ab..5c94ecb 100644
--- a/core/src/main/java/org/enginehub/piston/part/CommandArgument.java
+++ b/core/src/main/java/org/enginehub/piston/part/CommandArgument.java
@@ -22,9 +22,8 @@
import com.google.auto.value.AutoValue;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableSet;
-import net.kyori.text.Component;
-import net.kyori.text.TextComponent;
-import net.kyori.text.TranslatableComponent;
+import net.kyori.adventure.text.Component;
+import net.kyori.adventure.text.TranslatableComponent;
import org.enginehub.piston.config.ColorConfig;
import org.enginehub.piston.inject.Key;
@@ -46,7 +45,7 @@ public static Builder builder(TranslatableComponent name, Component description)
public abstract static class Builder {
public final Builder named(String name) {
- return named(TranslatableComponent.of(name));
+ return named(Component.translatable(name));
}
public final Builder named(TranslatableComponent name) {
@@ -56,7 +55,7 @@ public final Builder named(TranslatableComponent name) {
abstract Builder argumentName(TranslatableComponent name);
public final Builder describedBy(String description) {
- return describedBy(TextComponent.of(description));
+ return describedBy(Component.text(description));
}
public final Builder describedBy(Component description) {
@@ -105,12 +104,12 @@ public final boolean isRequired() {
@Override
public Component getTextRepresentation() {
ImmutableList.Builder builder = ImmutableList.builder();
- builder.add(TextComponent.of(isRequired() ? "<" : "["));
+ builder.add(Component.text(isRequired() ? "<" : "["));
builder.add(ColorConfig.mainText().wrap(getArgumentName()));
if (isVariable()) {
builder.add(ColorConfig.textModifier().wrap("..."));
}
- builder.add(TextComponent.of(isRequired() ? ">" : "]"));
+ builder.add(Component.text(isRequired() ? ">" : "]"));
return ColorConfig.partWrapping().wrap(builder.build());
}
diff --git a/core/src/main/java/org/enginehub/piston/part/CommandPart.java b/core/src/main/java/org/enginehub/piston/part/CommandPart.java
index 26685d3..12d2420 100644
--- a/core/src/main/java/org/enginehub/piston/part/CommandPart.java
+++ b/core/src/main/java/org/enginehub/piston/part/CommandPart.java
@@ -19,7 +19,7 @@
package org.enginehub.piston.part;
-import net.kyori.text.Component;
+import net.kyori.adventure.text.Component;
import org.enginehub.piston.CommandParameters;
/**
diff --git a/core/src/main/java/org/enginehub/piston/part/CommandParts.java b/core/src/main/java/org/enginehub/piston/part/CommandParts.java
index 313ccdb..eca7a49 100644
--- a/core/src/main/java/org/enginehub/piston/part/CommandParts.java
+++ b/core/src/main/java/org/enginehub/piston/part/CommandParts.java
@@ -19,8 +19,8 @@
package org.enginehub.piston.part;
-import net.kyori.text.Component;
-import net.kyori.text.TranslatableComponent;
+import net.kyori.adventure.text.Component;
+import net.kyori.adventure.text.TranslatableComponent;
public class CommandParts {
diff --git a/core/src/main/java/org/enginehub/piston/part/NoArgCommandFlag.java b/core/src/main/java/org/enginehub/piston/part/NoArgCommandFlag.java
index c836509..24a1c60 100644
--- a/core/src/main/java/org/enginehub/piston/part/NoArgCommandFlag.java
+++ b/core/src/main/java/org/enginehub/piston/part/NoArgCommandFlag.java
@@ -20,8 +20,7 @@
package org.enginehub.piston.part;
import com.google.auto.value.AutoValue;
-import net.kyori.text.Component;
-import net.kyori.text.TextComponent;
+import net.kyori.adventure.text.Component;
import org.enginehub.piston.config.ColorConfig;
@AutoValue
@@ -29,7 +28,7 @@ public abstract class NoArgCommandFlag implements CommandFlag {
public static NoArgCommandFlag.Builder builder(char name,
String description) {
- return builder(name, TextComponent.of(description));
+ return builder(name, Component.text(description));
}
public static NoArgCommandFlag.Builder builder(char name,
@@ -49,7 +48,7 @@ public final Builder named(char name) {
abstract Builder name(char name);
public final Builder describedBy(String description) {
- return describedBy(TextComponent.of(description));
+ return describedBy(Component.text(description));
}
public final Builder describedBy(Component description) {
@@ -76,9 +75,9 @@ public final ArgAcceptingCommandFlag.Builder withRequiredArg() {
@Override
public Component getTextRepresentation() {
return ColorConfig.partWrapping().wrap(
- TextComponent.of("["),
+ Component.text("["),
ColorConfig.mainText().wrap("-" + getName()),
- TextComponent.of("]")
+ Component.text("]")
);
}
}
diff --git a/core/src/main/java/org/enginehub/piston/part/SubCommandPart.java b/core/src/main/java/org/enginehub/piston/part/SubCommandPart.java
index 3c119c7..478e9ec 100644
--- a/core/src/main/java/org/enginehub/piston/part/SubCommandPart.java
+++ b/core/src/main/java/org/enginehub/piston/part/SubCommandPart.java
@@ -21,9 +21,8 @@
import com.google.auto.value.AutoValue;
import com.google.common.collect.ImmutableList;
-import net.kyori.text.Component;
-import net.kyori.text.TextComponent;
-import net.kyori.text.TranslatableComponent;
+import net.kyori.adventure.text.Component;
+import net.kyori.adventure.text.TranslatableComponent;
import org.enginehub.piston.Command;
import org.enginehub.piston.config.ColorConfig;
@@ -50,7 +49,7 @@ public final Builder named(TranslatableComponent name) {
abstract Builder argumentName(TranslatableComponent name);
public final Builder describedBy(String description) {
- return describedBy(TextComponent.of(description));
+ return describedBy(Component.text(description));
}
public final Builder describedBy(Component description) {
@@ -83,13 +82,13 @@ public final Builder optional() {
@Override
public Component getTextRepresentation() {
ImmutableList.Builder builder = ImmutableList.builder();
- builder.add(TextComponent.of(isRequired() ? "<" : "["));
+ builder.add(Component.text(isRequired() ? "<" : "["));
builder.addAll(getCommands().stream()
.map(Command::getName)
.map(ColorConfig.mainText()::wrap)
.collect(joiningWithBar())
.children());
- builder.add(TextComponent.of(isRequired() ? ">" : "]"));
+ builder.add(Component.text(isRequired() ? ">" : "]"));
return ColorConfig.partWrapping().wrap(builder.build());
}
diff --git a/core/src/main/java/org/enginehub/piston/util/ComponentHelper.java b/core/src/main/java/org/enginehub/piston/util/ComponentHelper.java
index c35c3be..ff3fab1 100644
--- a/core/src/main/java/org/enginehub/piston/util/ComponentHelper.java
+++ b/core/src/main/java/org/enginehub/piston/util/ComponentHelper.java
@@ -19,8 +19,8 @@
package org.enginehub.piston.util;
-import net.kyori.text.Component;
-import net.kyori.text.TextComponent;
+import net.kyori.adventure.text.Component;
+import net.kyori.adventure.text.TextComponent;
import org.enginehub.piston.config.ColorConfig;
import javax.annotation.Nullable;
@@ -34,9 +34,9 @@ public class ComponentHelper {
*/
public static Collector joiningWithBar() {
return joiningTexts(
- TextComponent.empty(),
+ Component.empty(),
ColorConfig.partWrapping().wrap("|"),
- TextComponent.empty()
+ Component.empty()
);
}
@@ -69,7 +69,7 @@ private ComponentJoiner(Component prefix, Component delimiter, Component suffix)
private TextComponent.Builder initBuilder() {
if (value == null) {
- value = TextComponent.builder("");
+ value = Component.text();
} else {
value.append(delimiter);
}
@@ -94,7 +94,7 @@ public Component finish() {
}
return initBuilder().append(prefix).append(suffix).build();
}
- return TextComponent.builder("")
+ return Component.text()
.append(prefix)
.append(value.build().children())
.append(suffix)
diff --git a/core/src/main/java/org/enginehub/piston/util/HelpGenerator.java b/core/src/main/java/org/enginehub/piston/util/HelpGenerator.java
index ab81617..5f3c69f 100644
--- a/core/src/main/java/org/enginehub/piston/util/HelpGenerator.java
+++ b/core/src/main/java/org/enginehub/piston/util/HelpGenerator.java
@@ -20,8 +20,8 @@
package org.enginehub.piston.util;
import com.google.common.collect.ImmutableList;
-import net.kyori.text.Component;
-import net.kyori.text.TextComponent;
+import net.kyori.adventure.text.Component;
+import net.kyori.adventure.text.TextComponent;
import org.enginehub.piston.ArgBinding;
import org.enginehub.piston.Command;
import org.enginehub.piston.CommandMetadata;
@@ -42,9 +42,6 @@
import java.util.List;
import java.util.stream.Collectors;
-import static net.kyori.text.TextComponent.newline;
-import static net.kyori.text.TextComponent.space;
-
public class HelpGenerator {
public static HelpGenerator create(Iterable commands) {
@@ -83,7 +80,7 @@ private HelpGenerator(CommandParseResult parseResult) {
* Generate a name for the set of commands as a whole.
*/
public Component getFullName() {
- TextComponent.Builder usage = TextComponent.builder();
+ TextComponent.Builder usage = Component.text();
String name = parseResult.getExecutionPath().get(0).getName();
CommandMetadata metadata = parseResult.getParameters().getMetadata();
@@ -92,11 +89,11 @@ public Component getFullName() {
}
usage.append(ColorConfig.mainText().wrap(
TextConfig.commandPrefixValue(),
- TextComponent.of(name)
+ Component.text(name)
));
for (String input : parseResult.getOriginalArguments()) {
- usage.append(space());
+ usage.append(Component.space());
usage.append(ColorConfig.mainText().wrap(input));
}
@@ -107,7 +104,7 @@ public Component getFullName() {
* Generate a usage help text.
*/
public Component getUsage() {
- TextComponent.Builder usage = TextComponent.builder()
+ TextComponent.Builder usage = Component.text()
.append(ColorConfig.mainText().wrap(
TextConfig.commandPrefixValue()
));
@@ -138,12 +135,12 @@ public Component getUsage() {
}
// append a space before parts, if needed
if (!reducedParts.isEmpty()) {
- usage.append(space());
+ usage.append(Component.space());
}
PartHelper.appendUsage(reducedParts.stream(), usage);
// append a space after parts/command, if needed
if (iterator.hasNext()) {
- usage.append(space());
+ usage.append(Component.space());
}
}
@@ -156,7 +153,7 @@ public Component getFullHelp() {
builder.add(primary.getDescription());
- builder.add(TextComponent.of("\nUsage: "));
+ builder.add(Component.text("\nUsage: "));
builder.add(getUsage());
@@ -164,7 +161,7 @@ public Component getFullHelp() {
appendFlags(builder);
- primary.getFooter().ifPresent(footer -> builder.add(newline()).add(footer));
+ primary.getFooter().ifPresent(footer -> builder.add(Component.newline()).add(footer));
return ColorConfig.helpText().wrap(builder.build());
}
@@ -176,16 +173,16 @@ private void appendArguments(ImmutableList.Builder builder) {
.map(CommandArgument.class::cast)
.collect(Collectors.toList());
if (args.size() > 0) {
- builder.add(newline());
- builder.add(TextComponent.of("Arguments:\n"));
+ builder.add(Component.newline());
+ builder.add(Component.text("Arguments:\n"));
for (Iterator iterator = args.iterator(); iterator.hasNext(); ) {
CommandArgument arg = iterator.next();
- builder.add(TextComponent.of(" ")).add(arg.getTextRepresentation());
+ builder.add(Component.text(" ")).add(arg.getTextRepresentation());
addDefaultInfo(builder, arg);
- builder.add(TextComponent.of(": "))
+ builder.add(Component.text(": "))
.add(arg.getDescription());
if (iterator.hasNext()) {
- builder.add(newline());
+ builder.add(Component.newline());
}
}
}
@@ -198,8 +195,8 @@ private void appendFlags(ImmutableList.Builder builder) {
.map(CommandFlag.class::cast)
.collect(Collectors.toList());
if (flags.size() > 0) {
- builder.add(newline());
- builder.add(TextComponent.of("Flags:\n"));
+ builder.add(Component.newline());
+ builder.add(Component.text("Flags:\n"));
for (Iterator iterator = flags.iterator(); iterator.hasNext(); ) {
CommandFlag flag = iterator.next();
// produces text like "-f: Some description"
@@ -207,10 +204,10 @@ private void appendFlags(ImmutableList.Builder builder) {
if (flag instanceof ArgAcceptingCommandFlag argFlag) {
addDefaultInfo(builder, argFlag);
}
- builder.add(TextComponent.of(": "))
+ builder.add(Component.text(": "))
.add(flag.getDescription());
if (iterator.hasNext()) {
- builder.add(newline());
+ builder.add(Component.newline());
}
}
}
@@ -220,7 +217,7 @@ private void addDefaultInfo(ImmutableList.Builder builder, ArgAccepti
if (arg.getDefaults().isEmpty()) {
return;
}
- builder.add(TextComponent.of(" (defaults to "));
+ builder.add(Component.text(" (defaults to "));
String value;
if (arg.getDefaults().size() == 1) {
value = arg.getDefaults().get(0);
@@ -232,8 +229,8 @@ private void addDefaultInfo(ImmutableList.Builder builder, ArgAccepti
.filter(s -> s.trim().length() > 0)
.collect(Collectors.joining(", ", "[", "]"));
}
- builder.add(TextComponent.of(value));
- builder.add(TextComponent.of(")"));
+ builder.add(Component.text(value));
+ builder.add(Component.text(")"));
}
}
diff --git a/core/src/main/java/org/enginehub/piston/util/PartHelper.java b/core/src/main/java/org/enginehub/piston/util/PartHelper.java
index d0dc07c..a24a602 100644
--- a/core/src/main/java/org/enginehub/piston/util/PartHelper.java
+++ b/core/src/main/java/org/enginehub/piston/util/PartHelper.java
@@ -19,8 +19,8 @@
package org.enginehub.piston.util;
-import net.kyori.text.Component;
-import net.kyori.text.TextComponent;
+import net.kyori.adventure.text.Component;
+import net.kyori.adventure.text.TextComponent;
import org.enginehub.piston.Command;
import org.enginehub.piston.config.ColorConfig;
import org.enginehub.piston.part.CommandPart;
@@ -74,9 +74,9 @@ public static void appendUsage(Stream parts, TextComponent.Builder
.map(String::valueOf)
.collect(Collectors.joining("")))
.map(text -> ColorConfig.partWrapping().wrap(
- TextComponent.of("["),
+ Component.text("["),
ColorConfig.mainText().wrap("-" + text),
- TextComponent.of("]")
+ Component.text("]")
))
.map(Stream::of).orElse(Stream.empty());
@@ -88,7 +88,7 @@ public static void appendUsage(Stream parts, TextComponent.Builder
while (usages.hasNext()) {
output.append(usages.next());
if (usages.hasNext()) {
- output.append(TextComponent.of(" "));
+ output.append(Component.text(" "));
}
}
}
@@ -96,18 +96,18 @@ public static void appendUsage(Stream parts, TextComponent.Builder
private static Stream buildOptionalMerging(SubCommandPart optionalSubCommand,
Stream postComponents) {
return Stream.of(ColorConfig.partWrapping().wrap(
- TextComponent.of("<"),
+ Component.text("<"),
optionalSubCommand.getCommands().stream()
.map(Command::getName)
.map(ColorConfig.mainText()::wrap)
.collect(ComponentHelper.joiningWithBar()),
- TextComponent.of("|"),
+ Component.text("|"),
postComponents.collect(ComponentHelper.joiningTexts(
- TextComponent.empty(),
- TextComponent.of(" "),
- TextComponent.empty()
+ Component.empty(),
+ Component.text(" "),
+ Component.empty()
)),
- TextComponent.of(">")
+ Component.text(">")
));
}
diff --git a/core/src/main/java/org/enginehub/piston/util/TextHelper.java b/core/src/main/java/org/enginehub/piston/util/TextHelper.java
index fbeacf5..5f3ebc7 100644
--- a/core/src/main/java/org/enginehub/piston/util/TextHelper.java
+++ b/core/src/main/java/org/enginehub/piston/util/TextHelper.java
@@ -20,10 +20,13 @@
package org.enginehub.piston.util;
import com.google.common.base.Joiner;
-import net.kyori.text.Component;
-import net.kyori.text.KeybindComponent;
-import net.kyori.text.TranslatableComponent;
-import net.kyori.text.serializer.plain.PlainComponentSerializer;
+import net.kyori.adventure.text.Component;
+import net.kyori.adventure.text.ComponentLike;
+import net.kyori.adventure.text.KeybindComponent;
+import net.kyori.adventure.text.TextComponent;
+import net.kyori.adventure.text.TranslatableComponent;
+import net.kyori.adventure.text.flattener.ComponentFlattener;
+import net.kyori.adventure.text.serializer.plain.PlainTextComponentSerializer;
import org.enginehub.piston.config.ConfigHolder;
import org.enginehub.piston.config.ConfigRenderer;
@@ -32,14 +35,17 @@
public class TextHelper {
- private static final PlainComponentSerializer PLAIN_COMPONENT_SERIALIZER = new PlainComponentSerializer(
- KeybindComponent::keybind,
- translatableComponent -> {
- StringBuilder builder = new StringBuilder();
- appendTranslatableTo(builder, translatableComponent);
- return builder.toString();
- }
- );
+ private static final PlainTextComponentSerializer PLAIN_COMPONENT_SERIALIZER = PlainTextComponentSerializer.builder()
+ .flattener(ComponentFlattener.builder()
+ .mapper(KeybindComponent.class, KeybindComponent::keybind)
+ .mapper(TextComponent.class, TextComponent::content)
+ .mapper(TranslatableComponent.class, translatableComponent -> {
+ StringBuilder builder = new StringBuilder();
+ appendTranslatableTo(builder, translatableComponent);
+ return builder.toString();
+ })
+ .build())
+ .build();
private static final ConfigHolder CONFIG = ConfigHolder.create();
@@ -55,7 +61,7 @@ private static void appendTextTo(StringBuilder builder, Component component) {
private static void appendTranslatableTo(StringBuilder builder, TranslatableComponent component) {
builder.append(component.key());
- List args = component.args();
+ List args = ComponentLike.asComponents(component.arguments());
if (args.size() > 0) {
builder.append('[');
for (Iterator parts = args.iterator(); parts.hasNext(); ) {
diff --git a/core/src/test/java/org/enginehub/piston/ConditionTest.java b/core/src/test/java/org/enginehub/piston/ConditionTest.java
index 05464d3..855ed29 100644
--- a/core/src/test/java/org/enginehub/piston/ConditionTest.java
+++ b/core/src/test/java/org/enginehub/piston/ConditionTest.java
@@ -19,7 +19,6 @@
package org.enginehub.piston;
-import org.enginehub.piston.inject.InjectedValueAccess;
import org.junit.jupiter.api.Test;
import static org.enginehub.piston.Command.Condition.FALSE;
diff --git a/core/src/test/java/org/enginehub/piston/config/ConfigHolderTest.java b/core/src/test/java/org/enginehub/piston/config/ConfigHolderTest.java
index 9b958c6..e0992f5 100644
--- a/core/src/test/java/org/enginehub/piston/config/ConfigHolderTest.java
+++ b/core/src/test/java/org/enginehub/piston/config/ConfigHolderTest.java
@@ -20,10 +20,9 @@
package org.enginehub.piston.config;
import com.google.common.collect.ImmutableList;
-import net.kyori.text.Component;
-import net.kyori.text.TextComponent;
-import net.kyori.text.TranslatableComponent;
-import net.kyori.text.format.TextColor;
+import net.kyori.adventure.text.Component;
+import net.kyori.adventure.text.TextComponent;
+import net.kyori.adventure.text.format.NamedTextColor;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.DynamicNode;
@@ -54,7 +53,7 @@ private TestCase(String name, Component input, Component expected) {
private final ConfigHolder holder = ConfigHolder.create();
private final Component inputWithStyles = ColorConfig.helpText()
.wrap(TextConfig.commandPrefixValue());
- private final TextComponent outputStyled = TextComponent.of("prefix!", TextColor.DARK_PURPLE);
+ private final TextComponent outputStyled = Component.text("prefix!", NamedTextColor.DARK_PURPLE);
@BeforeEach
void setUp() {
@@ -67,11 +66,11 @@ void setUp() {
Stream test() {
List testCases = ImmutableList.of(
new TestCase("Translatable",
- TranslatableComponent.of("test", inputWithStyles),
- TranslatableComponent.of("test", outputStyled)),
+ Component.translatable("test", inputWithStyles),
+ Component.translatable("test", outputStyled)),
new TestCase("Text",
- TextComponent.of("test").append(inputWithStyles),
- TextComponent.of("test").append(outputStyled))
+ Component.text("test").append(inputWithStyles),
+ Component.text("test").append(outputStyled))
);
return testCases.stream().map(testCase ->
diff --git a/core/src/test/java/org/enginehub/piston/exception/ConstructionTest.java b/core/src/test/java/org/enginehub/piston/exception/ConstructionTest.java
index ab9823a..5f8272a 100644
--- a/core/src/test/java/org/enginehub/piston/exception/ConstructionTest.java
+++ b/core/src/test/java/org/enginehub/piston/exception/ConstructionTest.java
@@ -20,8 +20,7 @@
package org.enginehub.piston.exception;
import com.google.common.collect.ImmutableList;
-import net.kyori.text.Component;
-import net.kyori.text.TextComponent;
+import net.kyori.adventure.text.Component;
import org.enginehub.piston.Command;
import org.enginehub.piston.CommandParseResult;
import org.enginehub.piston.NoInputCommandParameters;
@@ -62,7 +61,7 @@ void commandExecutionException() {
@Test
void stopExecutionException() {
- Component message = TextComponent.of("stop");
+ Component message = Component.text("stop");
ImmutableList commands = ImmutableList.of(mock(Command.class));
StopExecutionException ex = new StopExecutionException(message, commands);
assertSame(message, ex.getRichMessage());
@@ -72,7 +71,7 @@ void stopExecutionException() {
@Test
void stopExecutionExceptionNoCommands() {
- Component message = TextComponent.of("stop");
+ Component message = Component.text("stop");
StopExecutionException ex = new StopExecutionException(message);
assertSame(message, ex.getRichMessage());
assertEquals("stop", ex.getMessage());
@@ -111,7 +110,7 @@ void noSuchFlagExceptionNoFlags() {
void noSuchFlagExceptionWrongFlag() {
CommandParseResult mock = mock(CommandParseResult.class);
ImmutableList executionPath = mockExecutionPath(ImmutableList.of(
- CommandParts.flag('q', TextComponent.of("q flag")).build()
+ CommandParts.flag('q', Component.text("q flag")).build()
));
when(mock.getExecutionPath()).thenReturn(executionPath);
when(mock.getParameters()).thenReturn(NoInputCommandParameters.builder().build());
@@ -131,7 +130,7 @@ void usageExceptionNoMessage() {
UsageException ex = new UsageException(mock);
assertSame(executionPath, ex.getCommands());
assertSame(mock, ex.getCommandParseResult());
- assertEquals(TextComponent.empty(), ex.getRichMessage());
+ assertEquals(Component.empty(), ex.getRichMessage());
assertNull(ex.getMessage());
}
@@ -141,7 +140,7 @@ void usageExceptionMessage() {
ImmutableList executionPath = mockExecutionPath(ImmutableList.of());
when(mock.getExecutionPath()).thenReturn(executionPath);
when(mock.getParameters()).thenReturn(NoInputCommandParameters.builder().build());
- Component message = TextComponent.of("message");
+ Component message = Component.text("message");
UsageException ex = new UsageException(message, mock);
assertSame(executionPath, ex.getCommands());
assertSame(mock, ex.getCommandParseResult());
@@ -155,7 +154,7 @@ void usageExceptionMessageCause() {
ImmutableList executionPath = mockExecutionPath(ImmutableList.of());
when(mock.getExecutionPath()).thenReturn(executionPath);
when(mock.getParameters()).thenReturn(NoInputCommandParameters.builder().build());
- Component message = TextComponent.of("message");
+ Component message = Component.text("message");
Throwable cause = new Throwable();
UsageException ex = new UsageException(message, cause, mock);
assertSame(executionPath, ex.getCommands());
@@ -175,7 +174,7 @@ void usageExceptionCause() {
UsageException ex = new UsageException(cause, mock);
assertSame(executionPath, ex.getCommands());
assertSame(mock, ex.getCommandParseResult());
- assertEquals(TextComponent.empty(), ex.getRichMessage());
+ assertEquals(Component.empty(), ex.getRichMessage());
assertEquals(cause.getClass().getName(), ex.getMessage());
assertSame(cause, ex.getCause());
}
diff --git a/default-impl/src/main/java/org/enginehub/piston/impl/CommandImpl.java b/default-impl/src/main/java/org/enginehub/piston/impl/CommandImpl.java
index 83175c4..2a664c7 100644
--- a/default-impl/src/main/java/org/enginehub/piston/impl/CommandImpl.java
+++ b/default-impl/src/main/java/org/enginehub/piston/impl/CommandImpl.java
@@ -21,22 +21,16 @@
import com.google.auto.value.AutoValue;
import com.google.common.collect.ImmutableList;
-import net.kyori.text.Component;
-import net.kyori.text.TextComponent;
+import net.kyori.adventure.text.Component;
import org.enginehub.piston.Command;
-import org.enginehub.piston.part.CommandArgument;
-import org.enginehub.piston.part.CommandFlag;
import org.enginehub.piston.part.CommandPart;
import org.enginehub.piston.suggestion.DefaultSuggestionProvider;
import org.enginehub.piston.suggestion.SuggestionProvider;
import javax.annotation.Nullable;
import java.util.Collection;
-import java.util.List;
-import java.util.stream.Collectors;
import static com.google.common.base.Preconditions.checkState;
-import static net.kyori.text.TextComponent.newline;
import static org.enginehub.piston.Command.Action.NULL_ACTION;
@AutoValue
diff --git a/default-impl/src/main/java/org/enginehub/piston/impl/CommandParser.java b/default-impl/src/main/java/org/enginehub/piston/impl/CommandParser.java
index c65ad2e..4316084 100644
--- a/default-impl/src/main/java/org/enginehub/piston/impl/CommandParser.java
+++ b/default-impl/src/main/java/org/enginehub/piston/impl/CommandParser.java
@@ -19,29 +19,13 @@
package org.enginehub.piston.impl;
-import static com.google.common.base.Preconditions.checkNotNull;
-import static com.google.common.base.Preconditions.checkState;
-import static java.util.Objects.requireNonNull;
-
-
-import javax.annotation.Nullable;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.ListIterator;
-import java.util.Objects;
-import java.util.Optional;
-import java.util.Set;
-import java.util.concurrent.ThreadLocalRandom;
-import java.util.function.Consumer;
-import java.util.stream.Collectors;
-
import com.google.common.base.Strings;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Iterators;
-import net.kyori.text.Component;
-import net.kyori.text.TextComponent;
+import net.kyori.adventure.text.Component;
+import net.kyori.adventure.text.TextComponent;
import org.apache.logging.log4j.Logger;
import org.enginehub.piston.Command;
import org.enginehub.piston.CommandMetadata;
@@ -69,6 +53,22 @@
import org.enginehub.piston.util.ComponentHelper;
import org.enginehub.piston.util.StreamHelper;
+import javax.annotation.Nullable;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.ListIterator;
+import java.util.Objects;
+import java.util.Optional;
+import java.util.Set;
+import java.util.concurrent.ThreadLocalRandom;
+import java.util.function.Consumer;
+import java.util.stream.Collectors;
+
+import static com.google.common.base.Preconditions.checkNotNull;
+import static com.google.common.base.Preconditions.checkState;
+import static java.util.Objects.requireNonNull;
+import static net.kyori.adventure.text.Component.text;
+
class CommandParser {
private static final Logger LOGGER = LogManagerCompat.getLogger();
@@ -170,11 +170,11 @@ private UsageException usageException(Component message) {
}
private UsageException notEnoughArgumentsException() {
- return usageException(TextComponent.of("Not enough arguments."));
+ return usageException(text("Not enough arguments."));
}
private UsageException tooManyArgumentsException() {
- return usageException(TextComponent.of("Too many arguments."));
+ return usageException(text("Too many arguments."));
}
private UsageException rejectedArgumentException(ArgAcceptingCommandPart nextArg, String token) {
@@ -312,14 +312,15 @@ private void finalizeCommand() {
if (requiredIter.hasNext()) {
ArgConsumingCommandPart missing = requiredIter.next();
if (missing instanceof CommandArgument) {
- throw usageException(TextComponent.builder("Missing argument for ")
+ throw usageException(text()
+ .content("Missing argument for ")
.append(missing.getTextRepresentation())
- .append(TextComponent.of("."))
+ .append(text("."))
.build());
} else {
checkState(missing instanceof SubCommandPart,
"Unknown part interface: %s", missing.getClass());
- throw usageException(TextComponent.of("No sub-command provided. Options: "
+ throw usageException(text("No sub-command provided. Options: "
+ ((SubCommandPart) missing).getCommands().stream()
.distinct()
.map(Command::getName)
@@ -394,17 +395,17 @@ private boolean parseSubCommand(SubCommandPart part, String token) {
}
private TextComponent invalidSubCommandMessage(String token, ImmutableMap subCommands) {
- return TextComponent.builder()
- .append("Invalid sub-command '")
+ return text()
+ .append(text("Invalid sub-command '"))
.append(ColorConfig.mainText().wrap(token))
- .append("'. Options: ")
+ .append(text("'. Options: "))
.append(subCommands.values().stream().distinct()
.map(Command::getName)
.map(ColorConfig.mainText()::wrap)
.collect(ComponentHelper.joiningTexts(
- TextComponent.empty(),
- TextComponent.of(", "),
- TextComponent.empty()
+ Component.empty(),
+ text(", "),
+ Component.empty()
)))
.build();
}
@@ -546,15 +547,16 @@ private void parseFlags(String flags) {
throw new NoSuchFlagException(getResult(), c);
}
if (seenFlags.contains(flag)) {
- throw usageException(TextComponent.builder("Flag ")
+ throw usageException(Component.text()
+ .content("Flag ")
.append(flag.getTextRepresentation())
- .append(" has already been specified.")
+ .append(text(" has already been specified."))
.build());
}
if (flag instanceof ArgAcceptingCommandFlag argPart) {
if (i + 1 < flags.length()) {
// Only allow argument-flags at the end of flag-combos.
- throw usageException(TextComponent.of("Argument-accepting flags must be " +
+ throw usageException(text("Argument-accepting flags must be " +
"at the end of combined flag groups."));
}
bind(flag, true);
diff --git a/default-impl/src/test/java/org/enginehub/piston/impl/CommandManagerTest.java b/default-impl/src/test/java/org/enginehub/piston/impl/CommandManagerTest.java
index e0cf013..1e97b41 100644
--- a/default-impl/src/test/java/org/enginehub/piston/impl/CommandManagerTest.java
+++ b/default-impl/src/test/java/org/enginehub/piston/impl/CommandManagerTest.java
@@ -20,8 +20,7 @@
package org.enginehub.piston.impl;
import com.google.common.collect.ImmutableList;
-import net.kyori.text.TextComponent;
-import net.kyori.text.TranslatableComponent;
+import net.kyori.adventure.text.Component;
import org.enginehub.piston.Command;
import org.enginehub.piston.CommandManager;
import org.enginehub.piston.exception.ConditionFailedException;
@@ -40,7 +39,7 @@ public class CommandManagerTest {
void parseFailsOnRootConditionUnsatisfied() {
CommandManager manager = new CommandManagerImpl();
manager.register("test", cmd -> {
- cmd.description(TextComponent.of("Test"))
+ cmd.description(Component.text("Test"))
.condition(Command.Condition.FALSE);
});
@@ -55,11 +54,11 @@ void parseFailsOnSubConditionUnsatisfied() {
CommandManager manager = new CommandManagerImpl();
manager.register("test", cmd -> {
Command sub = manager.newCommand("sub")
- .description(TextComponent.of("Sub"))
+ .description(Component.text("Sub"))
.condition(Command.Condition.FALSE)
.build();
- cmd.description(TextComponent.of("Test"))
- .addPart(SubCommandPart.builder(TranslatableComponent.of("actions"), TextComponent.of("Sub-actions"))
+ cmd.description(Component.text("Test"))
+ .addPart(SubCommandPart.builder(Component.translatable("actions"), Component.text("Sub-actions"))
.required()
.withCommands(ImmutableList.of(sub))
.build());
From 1cf5add13b9796a15596678e71f3dbeee374769c Mon Sep 17 00:00:00 2001
From: Octavia Togami
Date: Fri, 19 Jun 2026 01:13:50 -0700
Subject: [PATCH 2/4] Bump to 0.7.0-SNAPSHOT
Adventure is very breaking
---
gradle.properties | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/gradle.properties b/gradle.properties
index 15629a1..7131503 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -1,2 +1,2 @@
group=org.enginehub.piston
-version=0.6.1-SNAPSHOT
+version=0.7.0-SNAPSHOT
From 932f153897a52e6b391e42448b940287743a413f Mon Sep 17 00:00:00 2001
From: Octavia Togami
Date: Fri, 19 Jun 2026 01:02:43 -0700
Subject: [PATCH 3/4] Convert everything to jspecify to avoid two annotation
libs
---
buildSrc/src/main/kotlin/Libs.kt | 2 +-
.../piston/annotation/package-info.java | 2 +-
.../piston/annotation/param/package-info.java | 22 ++-----------------
.../piston/gen/CommandProcessor.java | 2 +-
.../piston/gen/GenerationSupport.java | 3 +--
.../piston/gen/GenerationSupportImpl.java | 2 +-
.../piston/gen/optimize/package-info.java | 4 +---
.../enginehub/piston/gen/package-info.java | 2 +-
.../piston/gen/util/AnnoValueExtraction.java | 2 +-
.../piston/gen/util/CodeBlockUtil.java | 5 ++---
.../piston/gen/util/ProcessingException.java | 3 ++-
.../piston/gen/util/package-info.java | 4 +---
.../piston/gen/value/CommandInfo.java | 2 +-
.../piston/gen/value/CommandParamInfo.java | 3 +--
.../piston/gen/value/ExtractSpec.java | 2 +-
.../enginehub/piston/gen/value/KeyInfo.java | 2 +-
.../piston/gen/value/RegistrationInfo.java | 2 +-
.../piston/gen/value/package-info.java | 4 +---
.../enginehub/piston/gen/package-info.java | 21 ++++++++++++++++++
.../piston/internal/package-info.java | 21 ++++++++++++++++++
core/build.gradle.kts | 2 +-
.../java/org/enginehub/piston/Command.java | 2 +-
.../enginehub/piston/CommandParameters.java | 3 +--
.../org/enginehub/piston/CommandValue.java | 3 +--
.../piston/DefaultCommandManagerService.java | 3 ++-
.../piston/NoInputCommandParameters.java | 2 +-
.../enginehub/piston/config/ColorConfig.java | 2 +-
.../org/enginehub/piston/config/Config.java | 2 +-
.../piston/config/ConfigRenderer.java | 3 +--
.../enginehub/piston/config/TextConfig.java | 3 +--
.../enginehub/piston/config/package-info.java | 2 +-
.../piston/converter/MultiKeyConverter.java | 2 +-
.../piston/converter/package-info.java | 2 +-
.../piston/exception/package-info.java | 2 +-
.../piston/inject/AnnotationWrapper.java | 3 ++-
.../enginehub/piston/inject/Annotations.java | 2 +-
.../inject/InstanceAnnotationWrapper.java | 2 --
.../java/org/enginehub/piston/inject/Key.java | 2 +-
.../piston/inject/NullAnnotationWrapper.java | 3 ++-
.../piston/inject/TypeAnnotationWrapper.java | 4 +---
.../enginehub/piston/inject/package-info.java | 2 +-
.../org/enginehub/piston/package-info.java | 2 +-
.../enginehub/piston/part/package-info.java | 2 +-
.../piston/suggestion/package-info.java | 4 +---
.../piston/util/ComponentHelper.java | 5 ++---
.../enginehub/piston/util/ValueProvider.java | 3 ++-
.../enginehub/piston/util/package-info.java | 4 ++--
.../enginehub/piston/impl/CommandImpl.java | 2 +-
.../piston/impl/CommandManagerImpl.java | 2 +-
.../enginehub/piston/impl/CommandParser.java | 2 +-
.../enginehub/piston/impl/package-info.java | 2 +-
51 files changed, 99 insertions(+), 90 deletions(-)
rename core/src/main/java/org/enginehub/piston/util/NonnullByDefault.java => core-ap/annotations/src/main/java/org/enginehub/piston/annotation/param/package-info.java (54%)
create mode 100644 core-ap/runtime/src/main/java/org/enginehub/piston/gen/package-info.java
create mode 100644 core-ap/runtime/src/main/java/org/enginehub/piston/internal/package-info.java
diff --git a/buildSrc/src/main/kotlin/Libs.kt b/buildSrc/src/main/kotlin/Libs.kt
index f846358..5966713 100644
--- a/buildSrc/src/main/kotlin/Libs.kt
+++ b/buildSrc/src/main/kotlin/Libs.kt
@@ -17,7 +17,7 @@ object Libs {
private const val log4jVersion = "2.26.0"
const val log4jApi = "org.apache.logging.log4j:log4j-api:$log4jVersion"
const val log4jCore = "org.apache.logging.log4j:log4j-core:$log4jVersion"
- const val javaxAnnotations = "com.google.code.findbugs:jsr305:3.0.2"
+ const val jspecify = "org.jspecify:jspecify:1.0.0"
const val compileTesting = "com.google.testing.compile:compile-testing:0.23.0"
const val mockito = "org.mockito:mockito-core:5.23.0"
}
diff --git a/core-ap/annotations/src/main/java/org/enginehub/piston/annotation/package-info.java b/core-ap/annotations/src/main/java/org/enginehub/piston/annotation/package-info.java
index f0d685d..40183a0 100644
--- a/core-ap/annotations/src/main/java/org/enginehub/piston/annotation/package-info.java
+++ b/core-ap/annotations/src/main/java/org/enginehub/piston/annotation/package-info.java
@@ -17,5 +17,5 @@
* along with this program. If not, see .
*/
-@org.enginehub.piston.util.NonnullByDefault
+@org.jspecify.annotations.NullMarked
package org.enginehub.piston.annotation;
diff --git a/core/src/main/java/org/enginehub/piston/util/NonnullByDefault.java b/core-ap/annotations/src/main/java/org/enginehub/piston/annotation/param/package-info.java
similarity index 54%
rename from core/src/main/java/org/enginehub/piston/util/NonnullByDefault.java
rename to core-ap/annotations/src/main/java/org/enginehub/piston/annotation/param/package-info.java
index 859cf20..6c40875 100644
--- a/core/src/main/java/org/enginehub/piston/util/NonnullByDefault.java
+++ b/core-ap/annotations/src/main/java/org/enginehub/piston/annotation/param/package-info.java
@@ -17,23 +17,5 @@
* along with this program. If not, see .
*/
-package org.enginehub.piston.util;
-
-import javax.annotation.Nonnull;
-import javax.annotation.meta.TypeQualifierDefault;
-import java.lang.annotation.Documented;
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-/**
- * Marks a package, class, or method as having all elements {@link Nonnull} by default.
- */
-@Documented
-@Nonnull
-@TypeQualifierDefault({ElementType.PARAMETER, ElementType.FIELD, ElementType.METHOD})
-@Retention(RetentionPolicy.RUNTIME)
-@Target({ElementType.PACKAGE, ElementType.TYPE, ElementType.METHOD})
-public @interface NonnullByDefault {
-}
+@org.jspecify.annotations.NullMarked
+package org.enginehub.piston.annotation.param;
diff --git a/core-ap/processor/src/main/java/org/enginehub/piston/gen/CommandProcessor.java b/core-ap/processor/src/main/java/org/enginehub/piston/gen/CommandProcessor.java
index 1f69015..a57430c 100644
--- a/core-ap/processor/src/main/java/org/enginehub/piston/gen/CommandProcessor.java
+++ b/core-ap/processor/src/main/java/org/enginehub/piston/gen/CommandProcessor.java
@@ -41,12 +41,12 @@
import org.enginehub.piston.gen.value.CommandInfo;
import org.enginehub.piston.gen.value.CommandParamInfo;
import org.enginehub.piston.gen.value.RegistrationInfo;
+import org.jspecify.annotations.Nullable;
import java.io.IOException;
import java.util.List;
import java.util.Optional;
import java.util.Set;
-import javax.annotation.Nullable;
import javax.annotation.processing.Processor;
import javax.annotation.processing.SupportedOptions;
import javax.lang.model.SourceVersion;
diff --git a/core-ap/processor/src/main/java/org/enginehub/piston/gen/GenerationSupport.java b/core-ap/processor/src/main/java/org/enginehub/piston/gen/GenerationSupport.java
index f994ea0..3835f89 100644
--- a/core-ap/processor/src/main/java/org/enginehub/piston/gen/GenerationSupport.java
+++ b/core-ap/processor/src/main/java/org/enginehub/piston/gen/GenerationSupport.java
@@ -23,8 +23,7 @@
import com.squareup.javapoet.CodeBlock;
import com.squareup.javapoet.TypeName;
import org.enginehub.piston.inject.Key;
-
-import javax.annotation.Nullable;
+import org.jspecify.annotations.Nullable;
public interface GenerationSupport {
diff --git a/core-ap/processor/src/main/java/org/enginehub/piston/gen/GenerationSupportImpl.java b/core-ap/processor/src/main/java/org/enginehub/piston/gen/GenerationSupportImpl.java
index a23659b..2e13fe1 100644
--- a/core-ap/processor/src/main/java/org/enginehub/piston/gen/GenerationSupportImpl.java
+++ b/core-ap/processor/src/main/java/org/enginehub/piston/gen/GenerationSupportImpl.java
@@ -25,8 +25,8 @@
import org.enginehub.piston.gen.value.KeyInfo;
import org.enginehub.piston.gen.value.RegistrationInfo;
import org.enginehub.piston.gen.value.RequiredVariable;
+import org.jspecify.annotations.Nullable;
-import javax.annotation.Nullable;
import java.util.HashMap;
import java.util.Map;
import java.util.Objects;
diff --git a/core-ap/processor/src/main/java/org/enginehub/piston/gen/optimize/package-info.java b/core-ap/processor/src/main/java/org/enginehub/piston/gen/optimize/package-info.java
index ce12de9..b74c08c 100644
--- a/core-ap/processor/src/main/java/org/enginehub/piston/gen/optimize/package-info.java
+++ b/core-ap/processor/src/main/java/org/enginehub/piston/gen/optimize/package-info.java
@@ -17,7 +17,5 @@
* along with this program. If not, see .
*/
-@NonnullByDefault
+@org.jspecify.annotations.NullMarked
package org.enginehub.piston.gen.optimize;
-
-import org.enginehub.piston.util.NonnullByDefault;
\ No newline at end of file
diff --git a/core-ap/processor/src/main/java/org/enginehub/piston/gen/package-info.java b/core-ap/processor/src/main/java/org/enginehub/piston/gen/package-info.java
index b2b02a5..5d7b559 100644
--- a/core-ap/processor/src/main/java/org/enginehub/piston/gen/package-info.java
+++ b/core-ap/processor/src/main/java/org/enginehub/piston/gen/package-info.java
@@ -17,5 +17,5 @@
* along with this program. If not, see .
*/
-@org.enginehub.piston.util.NonnullByDefault
+@org.jspecify.annotations.NullMarked
package org.enginehub.piston.gen;
diff --git a/core-ap/processor/src/main/java/org/enginehub/piston/gen/util/AnnoValueExtraction.java b/core-ap/processor/src/main/java/org/enginehub/piston/gen/util/AnnoValueExtraction.java
index b6c6370..24e0b8f 100644
--- a/core-ap/processor/src/main/java/org/enginehub/piston/gen/util/AnnoValueExtraction.java
+++ b/core-ap/processor/src/main/java/org/enginehub/piston/gen/util/AnnoValueExtraction.java
@@ -21,8 +21,8 @@
import com.google.common.collect.ImmutableList;
import com.google.common.primitives.Primitives;
+import org.jspecify.annotations.Nullable;
-import javax.annotation.Nullable;
import javax.lang.model.element.AnnotationMirror;
import javax.lang.model.element.AnnotationValue;
import javax.lang.model.element.AnnotationValueVisitor;
diff --git a/core-ap/processor/src/main/java/org/enginehub/piston/gen/util/CodeBlockUtil.java b/core-ap/processor/src/main/java/org/enginehub/piston/gen/util/CodeBlockUtil.java
index 570414e..8d4c5af 100644
--- a/core-ap/processor/src/main/java/org/enginehub/piston/gen/util/CodeBlockUtil.java
+++ b/core-ap/processor/src/main/java/org/enginehub/piston/gen/util/CodeBlockUtil.java
@@ -24,8 +24,8 @@
import com.squareup.javapoet.TypeName;
import net.kyori.adventure.text.Component;
import org.enginehub.piston.internal.RegistrationUtil;
+import org.jspecify.annotations.Nullable;
-import javax.annotation.Nullable;
import javax.lang.model.element.ExecutableElement;
import java.lang.reflect.Method;
import java.util.function.Supplier;
@@ -106,8 +106,7 @@ private static final class CodeBlockJoiner {
private final CodeBlock suffix;
@Nullable
private CodeBlock emptyValue;
- @Nullable
- private CodeBlock.Builder value;
+ private CodeBlock.@Nullable Builder value;
CodeBlockJoiner(CodeBlock prefix, CodeBlock delimiter, CodeBlock suffix) {
this.prefix = requireNonNull(prefix);
diff --git a/core-ap/processor/src/main/java/org/enginehub/piston/gen/util/ProcessingException.java b/core-ap/processor/src/main/java/org/enginehub/piston/gen/util/ProcessingException.java
index 88786bb..1842279 100644
--- a/core-ap/processor/src/main/java/org/enginehub/piston/gen/util/ProcessingException.java
+++ b/core-ap/processor/src/main/java/org/enginehub/piston/gen/util/ProcessingException.java
@@ -19,7 +19,8 @@
package org.enginehub.piston.gen.util;
-import javax.annotation.Nullable;
+import org.jspecify.annotations.Nullable;
+
import javax.lang.model.element.AnnotationMirror;
import javax.lang.model.element.Element;
diff --git a/core-ap/processor/src/main/java/org/enginehub/piston/gen/util/package-info.java b/core-ap/processor/src/main/java/org/enginehub/piston/gen/util/package-info.java
index 20ff183..ab4512d 100644
--- a/core-ap/processor/src/main/java/org/enginehub/piston/gen/util/package-info.java
+++ b/core-ap/processor/src/main/java/org/enginehub/piston/gen/util/package-info.java
@@ -17,7 +17,5 @@
* along with this program. If not, see .
*/
-@NonnullByDefault
+@org.jspecify.annotations.NullMarked
package org.enginehub.piston.gen.util;
-
-import org.enginehub.piston.util.NonnullByDefault;
\ No newline at end of file
diff --git a/core-ap/processor/src/main/java/org/enginehub/piston/gen/value/CommandInfo.java b/core-ap/processor/src/main/java/org/enginehub/piston/gen/value/CommandInfo.java
index c0aed66..aa4f0e9 100644
--- a/core-ap/processor/src/main/java/org/enginehub/piston/gen/value/CommandInfo.java
+++ b/core-ap/processor/src/main/java/org/enginehub/piston/gen/value/CommandInfo.java
@@ -21,8 +21,8 @@
import com.google.auto.value.AutoValue;
import com.google.common.collect.ImmutableList;
+import org.jspecify.annotations.Nullable;
-import javax.annotation.Nullable;
import javax.lang.model.element.ExecutableElement;
import java.util.Collection;
import java.util.Optional;
diff --git a/core-ap/processor/src/main/java/org/enginehub/piston/gen/value/CommandParamInfo.java b/core-ap/processor/src/main/java/org/enginehub/piston/gen/value/CommandParamInfo.java
index b48721a..a5032f4 100644
--- a/core-ap/processor/src/main/java/org/enginehub/piston/gen/value/CommandParamInfo.java
+++ b/core-ap/processor/src/main/java/org/enginehub/piston/gen/value/CommandParamInfo.java
@@ -23,8 +23,7 @@
import com.squareup.javapoet.CodeBlock;
import com.squareup.javapoet.TypeName;
import org.enginehub.piston.CommandParameters;
-
-import javax.annotation.Nullable;
+import org.jspecify.annotations.Nullable;
/**
* Information that can be used to supply a parameter for a
diff --git a/core-ap/processor/src/main/java/org/enginehub/piston/gen/value/ExtractSpec.java b/core-ap/processor/src/main/java/org/enginehub/piston/gen/value/ExtractSpec.java
index 38af778..d2040b8 100644
--- a/core-ap/processor/src/main/java/org/enginehub/piston/gen/value/ExtractSpec.java
+++ b/core-ap/processor/src/main/java/org/enginehub/piston/gen/value/ExtractSpec.java
@@ -23,8 +23,8 @@
import com.google.auto.value.extension.memoized.Memoized;
import com.squareup.javapoet.CodeBlock;
import com.squareup.javapoet.TypeName;
+import org.jspecify.annotations.Nullable;
-import javax.annotation.Nullable;
import java.util.Objects;
/**
diff --git a/core-ap/processor/src/main/java/org/enginehub/piston/gen/value/KeyInfo.java b/core-ap/processor/src/main/java/org/enginehub/piston/gen/value/KeyInfo.java
index 3fe98dd..1c79135 100644
--- a/core-ap/processor/src/main/java/org/enginehub/piston/gen/value/KeyInfo.java
+++ b/core-ap/processor/src/main/java/org/enginehub/piston/gen/value/KeyInfo.java
@@ -33,8 +33,8 @@
import org.enginehub.piston.gen.util.SafeName;
import org.enginehub.piston.inject.Key;
import org.enginehub.piston.util.CaseHelper;
+import org.jspecify.annotations.Nullable;
-import javax.annotation.Nullable;
import java.lang.annotation.Annotation;
import java.util.Iterator;
import java.util.List;
diff --git a/core-ap/processor/src/main/java/org/enginehub/piston/gen/value/RegistrationInfo.java b/core-ap/processor/src/main/java/org/enginehub/piston/gen/value/RegistrationInfo.java
index 3f3b40b..90abf58 100644
--- a/core-ap/processor/src/main/java/org/enginehub/piston/gen/value/RegistrationInfo.java
+++ b/core-ap/processor/src/main/java/org/enginehub/piston/gen/value/RegistrationInfo.java
@@ -23,8 +23,8 @@
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableSet;
import com.squareup.javapoet.ClassName;
+import org.jspecify.annotations.Nullable;
-import javax.annotation.Nullable;
import javax.lang.model.element.Modifier;
import javax.lang.model.element.TypeElement;
import java.util.Collection;
diff --git a/core-ap/processor/src/main/java/org/enginehub/piston/gen/value/package-info.java b/core-ap/processor/src/main/java/org/enginehub/piston/gen/value/package-info.java
index cbc6b9e..d252b70 100644
--- a/core-ap/processor/src/main/java/org/enginehub/piston/gen/value/package-info.java
+++ b/core-ap/processor/src/main/java/org/enginehub/piston/gen/value/package-info.java
@@ -17,7 +17,5 @@
* along with this program. If not, see .
*/
-@NonnullByDefault
+@org.jspecify.annotations.NullMarked
package org.enginehub.piston.gen.value;
-
-import org.enginehub.piston.util.NonnullByDefault;
\ No newline at end of file
diff --git a/core-ap/runtime/src/main/java/org/enginehub/piston/gen/package-info.java b/core-ap/runtime/src/main/java/org/enginehub/piston/gen/package-info.java
new file mode 100644
index 0000000..5d7b559
--- /dev/null
+++ b/core-ap/runtime/src/main/java/org/enginehub/piston/gen/package-info.java
@@ -0,0 +1,21 @@
+/*
+ * Piston, a flexible command management system.
+ * Copyright (C) EngineHub
+ * Copyright (C) Piston contributors
+ *
+ * This program is free software: you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as published by the
+ * Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
+ * for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program. If not, see .
+ */
+
+@org.jspecify.annotations.NullMarked
+package org.enginehub.piston.gen;
diff --git a/core-ap/runtime/src/main/java/org/enginehub/piston/internal/package-info.java b/core-ap/runtime/src/main/java/org/enginehub/piston/internal/package-info.java
new file mode 100644
index 0000000..cc0b74f
--- /dev/null
+++ b/core-ap/runtime/src/main/java/org/enginehub/piston/internal/package-info.java
@@ -0,0 +1,21 @@
+/*
+ * Piston, a flexible command management system.
+ * Copyright (C) EngineHub
+ * Copyright (C) Piston contributors
+ *
+ * This program is free software: you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as published by the
+ * Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
+ * for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program. If not, see .
+ */
+
+@org.jspecify.annotations.NullMarked
+package org.enginehub.piston.internal;
diff --git a/core/build.gradle.kts b/core/build.gradle.kts
index d688eea..9dde589 100644
--- a/core/build.gradle.kts
+++ b/core/build.gradle.kts
@@ -3,7 +3,7 @@ applyCommonConfig()
dependencies {
"api"(Libs.guava)
"api"(Libs.kyoriAdventure)
- "api"(Libs.javaxAnnotations)
+ "api"(Libs.jspecify)
"implementation"(Libs.kyoriAdventureTextPlain)
"compileOnly"(Libs.autoValueAnnotations)
"annotationProcessor"(Libs.autoValueProcessor)
diff --git a/core/src/main/java/org/enginehub/piston/Command.java b/core/src/main/java/org/enginehub/piston/Command.java
index 24c4d78..94e9650 100644
--- a/core/src/main/java/org/enginehub/piston/Command.java
+++ b/core/src/main/java/org/enginehub/piston/Command.java
@@ -25,8 +25,8 @@
import org.enginehub.piston.part.CommandPart;
import org.enginehub.piston.suggestion.SuggestionProvider;
import org.enginehub.piston.util.HelpGenerator;
+import org.jspecify.annotations.Nullable;
-import javax.annotation.Nullable;
import java.util.Collection;
import java.util.Optional;
diff --git a/core/src/main/java/org/enginehub/piston/CommandParameters.java b/core/src/main/java/org/enginehub/piston/CommandParameters.java
index 892eaab..1409ea2 100644
--- a/core/src/main/java/org/enginehub/piston/CommandParameters.java
+++ b/core/src/main/java/org/enginehub/piston/CommandParameters.java
@@ -23,8 +23,7 @@
import org.enginehub.piston.inject.InjectedValueAccess;
import org.enginehub.piston.part.ArgAcceptingCommandPart;
import org.enginehub.piston.part.CommandPart;
-
-import javax.annotation.Nullable;
+import org.jspecify.annotations.Nullable;
/**
* Access to part values derived from user input.
diff --git a/core/src/main/java/org/enginehub/piston/CommandValue.java b/core/src/main/java/org/enginehub/piston/CommandValue.java
index f962e75..0aa1206 100644
--- a/core/src/main/java/org/enginehub/piston/CommandValue.java
+++ b/core/src/main/java/org/enginehub/piston/CommandValue.java
@@ -21,8 +21,7 @@
import com.google.common.collect.ImmutableList;
import org.enginehub.piston.inject.Key;
-
-import javax.annotation.Nullable;
+import org.jspecify.annotations.Nullable;
import static com.google.common.base.Preconditions.checkState;
diff --git a/core/src/main/java/org/enginehub/piston/DefaultCommandManagerService.java b/core/src/main/java/org/enginehub/piston/DefaultCommandManagerService.java
index 0ec9e7e..90104d8 100644
--- a/core/src/main/java/org/enginehub/piston/DefaultCommandManagerService.java
+++ b/core/src/main/java/org/enginehub/piston/DefaultCommandManagerService.java
@@ -19,7 +19,8 @@
package org.enginehub.piston;
-import javax.annotation.Nullable;
+import org.jspecify.annotations.Nullable;
+
import java.util.ServiceLoader;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;
diff --git a/core/src/main/java/org/enginehub/piston/NoInputCommandParameters.java b/core/src/main/java/org/enginehub/piston/NoInputCommandParameters.java
index 4096517..6e046b5 100644
--- a/core/src/main/java/org/enginehub/piston/NoInputCommandParameters.java
+++ b/core/src/main/java/org/enginehub/piston/NoInputCommandParameters.java
@@ -25,8 +25,8 @@
import org.enginehub.piston.inject.Key;
import org.enginehub.piston.part.ArgAcceptingCommandPart;
import org.enginehub.piston.part.CommandPart;
+import org.jspecify.annotations.Nullable;
-import javax.annotation.Nullable;
import java.util.NoSuchElementException;
import java.util.Optional;
diff --git a/core/src/main/java/org/enginehub/piston/config/ColorConfig.java b/core/src/main/java/org/enginehub/piston/config/ColorConfig.java
index da36916..f62ab86 100644
--- a/core/src/main/java/org/enginehub/piston/config/ColorConfig.java
+++ b/core/src/main/java/org/enginehub/piston/config/ColorConfig.java
@@ -27,8 +27,8 @@
import net.kyori.adventure.text.format.NamedTextColor;
import net.kyori.adventure.text.format.Style;
import net.kyori.adventure.text.format.TextColor;
+import org.jspecify.annotations.Nullable;
-import javax.annotation.Nullable;
import java.util.Arrays;
import java.util.List;
import java.util.Set;
diff --git a/core/src/main/java/org/enginehub/piston/config/Config.java b/core/src/main/java/org/enginehub/piston/config/Config.java
index f716ce2..73a942b 100644
--- a/core/src/main/java/org/enginehub/piston/config/Config.java
+++ b/core/src/main/java/org/enginehub/piston/config/Config.java
@@ -22,8 +22,8 @@
import com.google.common.collect.ImmutableList;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.TranslatableComponent;
+import org.jspecify.annotations.Nullable;
-import javax.annotation.Nullable;
import java.util.List;
import java.util.Map;
import java.util.Set;
diff --git a/core/src/main/java/org/enginehub/piston/config/ConfigRenderer.java b/core/src/main/java/org/enginehub/piston/config/ConfigRenderer.java
index 8a4cd05..2b03420 100644
--- a/core/src/main/java/org/enginehub/piston/config/ConfigRenderer.java
+++ b/core/src/main/java/org/enginehub/piston/config/ConfigRenderer.java
@@ -24,7 +24,6 @@
import net.kyori.adventure.text.ComponentLike;
import net.kyori.adventure.text.TranslatableComponent;
import net.kyori.adventure.text.renderer.ComponentRenderer;
-import org.jetbrains.annotations.NotNull;
import java.util.List;
@@ -46,7 +45,7 @@ private ConfigRenderer() {
}
@Override
- public @NotNull Component render(@NotNull Component component, @NotNull ConfigHolder context) {
+ public Component render(Component component, ConfigHolder context) {
component = replaceSubcomponents(component, context);
if (component instanceof TranslatableComponent) {
// check if replacing
diff --git a/core/src/main/java/org/enginehub/piston/config/TextConfig.java b/core/src/main/java/org/enginehub/piston/config/TextConfig.java
index 61bc532..4f0a592 100644
--- a/core/src/main/java/org/enginehub/piston/config/TextConfig.java
+++ b/core/src/main/java/org/enginehub/piston/config/TextConfig.java
@@ -22,8 +22,7 @@
import com.google.common.base.Strings;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.TranslatableComponent;
-
-import javax.annotation.Nullable;
+import org.jspecify.annotations.Nullable;
import static com.google.common.base.Preconditions.checkNotNull;
import static com.google.common.base.Preconditions.checkState;
diff --git a/core/src/main/java/org/enginehub/piston/config/package-info.java b/core/src/main/java/org/enginehub/piston/config/package-info.java
index aa61beb..ad98973 100644
--- a/core/src/main/java/org/enginehub/piston/config/package-info.java
+++ b/core/src/main/java/org/enginehub/piston/config/package-info.java
@@ -17,5 +17,5 @@
* along with this program. If not, see .
*/
-@org.enginehub.piston.util.NonnullByDefault
+@org.jspecify.annotations.NullMarked
package org.enginehub.piston.config;
diff --git a/core/src/main/java/org/enginehub/piston/converter/MultiKeyConverter.java b/core/src/main/java/org/enginehub/piston/converter/MultiKeyConverter.java
index 4d93949..2cfe5d5 100644
--- a/core/src/main/java/org/enginehub/piston/converter/MultiKeyConverter.java
+++ b/core/src/main/java/org/enginehub/piston/converter/MultiKeyConverter.java
@@ -28,8 +28,8 @@
import net.kyori.adventure.text.Component;
import org.enginehub.piston.config.ColorConfig;
import org.enginehub.piston.inject.InjectedValueAccess;
+import org.jspecify.annotations.Nullable;
-import javax.annotation.Nullable;
import java.util.Collection;
import java.util.List;
import java.util.Set;
diff --git a/core/src/main/java/org/enginehub/piston/converter/package-info.java b/core/src/main/java/org/enginehub/piston/converter/package-info.java
index e17edc5..950153f 100644
--- a/core/src/main/java/org/enginehub/piston/converter/package-info.java
+++ b/core/src/main/java/org/enginehub/piston/converter/package-info.java
@@ -17,5 +17,5 @@
* along with this program. If not, see .
*/
-@org.enginehub.piston.util.NonnullByDefault
+@org.jspecify.annotations.NullMarked
package org.enginehub.piston.converter;
diff --git a/core/src/main/java/org/enginehub/piston/exception/package-info.java b/core/src/main/java/org/enginehub/piston/exception/package-info.java
index 0b39d51..86c5a43 100644
--- a/core/src/main/java/org/enginehub/piston/exception/package-info.java
+++ b/core/src/main/java/org/enginehub/piston/exception/package-info.java
@@ -17,5 +17,5 @@
* along with this program. If not, see .
*/
-@org.enginehub.piston.util.NonnullByDefault
+@org.jspecify.annotations.NullMarked
package org.enginehub.piston.exception;
diff --git a/core/src/main/java/org/enginehub/piston/inject/AnnotationWrapper.java b/core/src/main/java/org/enginehub/piston/inject/AnnotationWrapper.java
index 8ae11ca..499081f 100644
--- a/core/src/main/java/org/enginehub/piston/inject/AnnotationWrapper.java
+++ b/core/src/main/java/org/enginehub/piston/inject/AnnotationWrapper.java
@@ -19,7 +19,8 @@
package org.enginehub.piston.inject;
-import javax.annotation.Nullable;
+import org.jspecify.annotations.Nullable;
+
import java.lang.annotation.Annotation;
/**
diff --git a/core/src/main/java/org/enginehub/piston/inject/Annotations.java b/core/src/main/java/org/enginehub/piston/inject/Annotations.java
index af94371..175b765 100644
--- a/core/src/main/java/org/enginehub/piston/inject/Annotations.java
+++ b/core/src/main/java/org/enginehub/piston/inject/Annotations.java
@@ -23,8 +23,8 @@
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.Maps;
+import org.jspecify.annotations.Nullable;
-import javax.annotation.Nullable;
import java.lang.annotation.Annotation;
import java.lang.invoke.MethodHandles;
import java.lang.reflect.Method;
diff --git a/core/src/main/java/org/enginehub/piston/inject/InstanceAnnotationWrapper.java b/core/src/main/java/org/enginehub/piston/inject/InstanceAnnotationWrapper.java
index 5080575..b8a98d7 100644
--- a/core/src/main/java/org/enginehub/piston/inject/InstanceAnnotationWrapper.java
+++ b/core/src/main/java/org/enginehub/piston/inject/InstanceAnnotationWrapper.java
@@ -21,7 +21,6 @@
import com.google.auto.value.AutoValue;
-import javax.annotation.Nonnull;
import java.lang.annotation.Annotation;
@AutoValue
@@ -34,7 +33,6 @@ static InstanceAnnotationWrapper from(Annotation annotationInstance) {
InstanceAnnotationWrapper() {
}
- @Nonnull
@Override
public abstract Annotation getAnnotation();
diff --git a/core/src/main/java/org/enginehub/piston/inject/Key.java b/core/src/main/java/org/enginehub/piston/inject/Key.java
index 3e0856d..7fe3b9a 100644
--- a/core/src/main/java/org/enginehub/piston/inject/Key.java
+++ b/core/src/main/java/org/enginehub/piston/inject/Key.java
@@ -22,8 +22,8 @@
import com.google.auto.value.AutoValue;
import com.google.common.base.MoreObjects;
import com.google.common.reflect.TypeToken;
+import org.jspecify.annotations.Nullable;
-import javax.annotation.Nullable;
import java.lang.annotation.Annotation;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
diff --git a/core/src/main/java/org/enginehub/piston/inject/NullAnnotationWrapper.java b/core/src/main/java/org/enginehub/piston/inject/NullAnnotationWrapper.java
index a0f3444..4f38f1e 100644
--- a/core/src/main/java/org/enginehub/piston/inject/NullAnnotationWrapper.java
+++ b/core/src/main/java/org/enginehub/piston/inject/NullAnnotationWrapper.java
@@ -19,7 +19,8 @@
package org.enginehub.piston.inject;
-import javax.annotation.Nullable;
+import org.jspecify.annotations.Nullable;
+
import java.lang.annotation.Annotation;
final class NullAnnotationWrapper implements AnnotationWrapper {
diff --git a/core/src/main/java/org/enginehub/piston/inject/TypeAnnotationWrapper.java b/core/src/main/java/org/enginehub/piston/inject/TypeAnnotationWrapper.java
index 8f7ccc7..88ce0ce 100644
--- a/core/src/main/java/org/enginehub/piston/inject/TypeAnnotationWrapper.java
+++ b/core/src/main/java/org/enginehub/piston/inject/TypeAnnotationWrapper.java
@@ -20,9 +20,8 @@
package org.enginehub.piston.inject;
import com.google.auto.value.AutoValue;
+import org.jspecify.annotations.Nullable;
-import javax.annotation.Nonnull;
-import javax.annotation.Nullable;
import java.lang.annotation.Annotation;
@AutoValue
@@ -35,7 +34,6 @@ static TypeAnnotationWrapper from(Class extends Annotation> annotationType) {
TypeAnnotationWrapper() {
}
- @Nonnull
@Override
public abstract Class extends Annotation> getAnnotationType();
diff --git a/core/src/main/java/org/enginehub/piston/inject/package-info.java b/core/src/main/java/org/enginehub/piston/inject/package-info.java
index 9703f06..a122113 100644
--- a/core/src/main/java/org/enginehub/piston/inject/package-info.java
+++ b/core/src/main/java/org/enginehub/piston/inject/package-info.java
@@ -17,5 +17,5 @@
* along with this program. If not, see .
*/
-@org.enginehub.piston.util.NonnullByDefault
+@org.jspecify.annotations.NullMarked
package org.enginehub.piston.inject;
diff --git a/core/src/main/java/org/enginehub/piston/package-info.java b/core/src/main/java/org/enginehub/piston/package-info.java
index 8a0046e..149f067 100644
--- a/core/src/main/java/org/enginehub/piston/package-info.java
+++ b/core/src/main/java/org/enginehub/piston/package-info.java
@@ -17,5 +17,5 @@
* along with this program. If not, see .
*/
-@org.enginehub.piston.util.NonnullByDefault
+@org.jspecify.annotations.NullMarked
package org.enginehub.piston;
diff --git a/core/src/main/java/org/enginehub/piston/part/package-info.java b/core/src/main/java/org/enginehub/piston/part/package-info.java
index 3881d80..c7079c4 100644
--- a/core/src/main/java/org/enginehub/piston/part/package-info.java
+++ b/core/src/main/java/org/enginehub/piston/part/package-info.java
@@ -17,5 +17,5 @@
* along with this program. If not, see .
*/
-@org.enginehub.piston.util.NonnullByDefault
+@org.jspecify.annotations.NullMarked
package org.enginehub.piston.part;
diff --git a/core/src/main/java/org/enginehub/piston/suggestion/package-info.java b/core/src/main/java/org/enginehub/piston/suggestion/package-info.java
index 0b0098d..e9aa057 100644
--- a/core/src/main/java/org/enginehub/piston/suggestion/package-info.java
+++ b/core/src/main/java/org/enginehub/piston/suggestion/package-info.java
@@ -17,7 +17,5 @@
* along with this program. If not, see .
*/
-@NonnullByDefault
+@org.jspecify.annotations.NullMarked
package org.enginehub.piston.suggestion;
-
-import org.enginehub.piston.util.NonnullByDefault;
\ No newline at end of file
diff --git a/core/src/main/java/org/enginehub/piston/util/ComponentHelper.java b/core/src/main/java/org/enginehub/piston/util/ComponentHelper.java
index ff3fab1..e313004 100644
--- a/core/src/main/java/org/enginehub/piston/util/ComponentHelper.java
+++ b/core/src/main/java/org/enginehub/piston/util/ComponentHelper.java
@@ -22,8 +22,8 @@
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.TextComponent;
import org.enginehub.piston.config.ColorConfig;
+import org.jspecify.annotations.Nullable;
-import javax.annotation.Nullable;
import java.util.stream.Collector;
public class ComponentHelper {
@@ -55,8 +55,7 @@ private static final class ComponentJoiner {
private final Component suffix;
private final Component delimiter;
- @Nullable
- private TextComponent.Builder value;
+ private TextComponent.@Nullable Builder value;
@Nullable
private Component nullValue;
diff --git a/core/src/main/java/org/enginehub/piston/util/ValueProvider.java b/core/src/main/java/org/enginehub/piston/util/ValueProvider.java
index b7890cb..b5e8321 100644
--- a/core/src/main/java/org/enginehub/piston/util/ValueProvider.java
+++ b/core/src/main/java/org/enginehub/piston/util/ValueProvider.java
@@ -19,7 +19,8 @@
package org.enginehub.piston.util;
-import javax.annotation.Nullable;
+import org.jspecify.annotations.Nullable;
+
import java.util.Optional;
/**
diff --git a/core/src/main/java/org/enginehub/piston/util/package-info.java b/core/src/main/java/org/enginehub/piston/util/package-info.java
index 9afb236..74351a0 100644
--- a/core/src/main/java/org/enginehub/piston/util/package-info.java
+++ b/core/src/main/java/org/enginehub/piston/util/package-info.java
@@ -17,5 +17,5 @@
* along with this program. If not, see .
*/
-@NonnullByDefault
-package org.enginehub.piston.util;
\ No newline at end of file
+@org.jspecify.annotations.NullMarked
+package org.enginehub.piston.util;
diff --git a/default-impl/src/main/java/org/enginehub/piston/impl/CommandImpl.java b/default-impl/src/main/java/org/enginehub/piston/impl/CommandImpl.java
index 2a664c7..195f3a2 100644
--- a/default-impl/src/main/java/org/enginehub/piston/impl/CommandImpl.java
+++ b/default-impl/src/main/java/org/enginehub/piston/impl/CommandImpl.java
@@ -26,8 +26,8 @@
import org.enginehub.piston.part.CommandPart;
import org.enginehub.piston.suggestion.DefaultSuggestionProvider;
import org.enginehub.piston.suggestion.SuggestionProvider;
+import org.jspecify.annotations.Nullable;
-import javax.annotation.Nullable;
import java.util.Collection;
import static com.google.common.base.Preconditions.checkState;
diff --git a/default-impl/src/main/java/org/enginehub/piston/impl/CommandManagerImpl.java b/default-impl/src/main/java/org/enginehub/piston/impl/CommandManagerImpl.java
index 3b55c0b..65445c8 100644
--- a/default-impl/src/main/java/org/enginehub/piston/impl/CommandManagerImpl.java
+++ b/default-impl/src/main/java/org/enginehub/piston/impl/CommandManagerImpl.java
@@ -35,8 +35,8 @@
import org.enginehub.piston.inject.MemoizingValueAccess;
import org.enginehub.piston.part.SubCommandPart;
import org.enginehub.piston.suggestion.Suggestion;
+import org.jspecify.annotations.Nullable;
-import javax.annotation.Nullable;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
diff --git a/default-impl/src/main/java/org/enginehub/piston/impl/CommandParser.java b/default-impl/src/main/java/org/enginehub/piston/impl/CommandParser.java
index 4316084..cfdb105 100644
--- a/default-impl/src/main/java/org/enginehub/piston/impl/CommandParser.java
+++ b/default-impl/src/main/java/org/enginehub/piston/impl/CommandParser.java
@@ -52,8 +52,8 @@
import org.enginehub.piston.part.SubCommandPart;
import org.enginehub.piston.util.ComponentHelper;
import org.enginehub.piston.util.StreamHelper;
+import org.jspecify.annotations.Nullable;
-import javax.annotation.Nullable;
import java.util.HashSet;
import java.util.Iterator;
import java.util.ListIterator;
diff --git a/default-impl/src/main/java/org/enginehub/piston/impl/package-info.java b/default-impl/src/main/java/org/enginehub/piston/impl/package-info.java
index 7b2f040..f3895b6 100644
--- a/default-impl/src/main/java/org/enginehub/piston/impl/package-info.java
+++ b/default-impl/src/main/java/org/enginehub/piston/impl/package-info.java
@@ -25,5 +25,5 @@
* as well as one way to hook them into the Piston core library loader.
*
*/
-@org.enginehub.piston.util.NonnullByDefault
+@org.jspecify.annotations.NullMarked
package org.enginehub.piston.impl;
From 1c2a2abef418d12d9debaa0b80c3b3b63e545f66 Mon Sep 17 00:00:00 2001
From: Octavia Togami
Date: Fri, 19 Jun 2026 01:49:30 -0700
Subject: [PATCH 4/4] Use ComponentMessageThrowable instead of our own
getRichMessage
This probably closes #43, to the extent we can fix that immediately. We
need to use Translator and have a workflow for getting translations into
resource bundles in the future.
---
.../enginehub/piston/exception/CommandException.java | 6 ++++--
.../enginehub/piston/exception/ConstructionTest.java | 12 ++++++------
2 files changed, 10 insertions(+), 8 deletions(-)
diff --git a/core/src/main/java/org/enginehub/piston/exception/CommandException.java b/core/src/main/java/org/enginehub/piston/exception/CommandException.java
index d96c670..92a0b72 100644
--- a/core/src/main/java/org/enginehub/piston/exception/CommandException.java
+++ b/core/src/main/java/org/enginehub/piston/exception/CommandException.java
@@ -21,13 +21,14 @@
import com.google.common.collect.ImmutableList;
import net.kyori.adventure.text.Component;
+import net.kyori.adventure.util.ComponentMessageThrowable;
import org.enginehub.piston.Command;
import org.enginehub.piston.util.TextHelper;
/**
* Parent class for all command-related exceptions.
*/
-public class CommandException extends RuntimeException {
+public class CommandException extends RuntimeException implements ComponentMessageThrowable {
private final Component message;
protected final ImmutableList commands;
@@ -57,7 +58,8 @@ public CommandException(Throwable cause, ImmutableList commands) {
/**
* Get the rich message, with extra formatting.
*/
- public Component getRichMessage() {
+ @Override
+ public Component componentMessage() {
return message;
}
diff --git a/core/src/test/java/org/enginehub/piston/exception/ConstructionTest.java b/core/src/test/java/org/enginehub/piston/exception/ConstructionTest.java
index 5f8272a..a0e66a2 100644
--- a/core/src/test/java/org/enginehub/piston/exception/ConstructionTest.java
+++ b/core/src/test/java/org/enginehub/piston/exception/ConstructionTest.java
@@ -64,7 +64,7 @@ void stopExecutionException() {
Component message = Component.text("stop");
ImmutableList commands = ImmutableList.of(mock(Command.class));
StopExecutionException ex = new StopExecutionException(message, commands);
- assertSame(message, ex.getRichMessage());
+ assertSame(message, ex.componentMessage());
assertEquals("stop", ex.getMessage());
assertSame(commands, ex.getCommands());
}
@@ -73,7 +73,7 @@ void stopExecutionException() {
void stopExecutionExceptionNoCommands() {
Component message = Component.text("stop");
StopExecutionException ex = new StopExecutionException(message);
- assertSame(message, ex.getRichMessage());
+ assertSame(message, ex.componentMessage());
assertEquals("stop", ex.getMessage());
assertEquals(ImmutableList.of(), ex.getCommands());
}
@@ -130,7 +130,7 @@ void usageExceptionNoMessage() {
UsageException ex = new UsageException(mock);
assertSame(executionPath, ex.getCommands());
assertSame(mock, ex.getCommandParseResult());
- assertEquals(Component.empty(), ex.getRichMessage());
+ assertEquals(Component.empty(), ex.componentMessage());
assertNull(ex.getMessage());
}
@@ -144,7 +144,7 @@ void usageExceptionMessage() {
UsageException ex = new UsageException(message, mock);
assertSame(executionPath, ex.getCommands());
assertSame(mock, ex.getCommandParseResult());
- assertSame(message, ex.getRichMessage());
+ assertSame(message, ex.componentMessage());
assertEquals("message", ex.getMessage());
}
@@ -159,7 +159,7 @@ void usageExceptionMessageCause() {
UsageException ex = new UsageException(message, cause, mock);
assertSame(executionPath, ex.getCommands());
assertSame(mock, ex.getCommandParseResult());
- assertSame(message, ex.getRichMessage());
+ assertSame(message, ex.componentMessage());
assertEquals("message", ex.getMessage());
assertSame(cause, ex.getCause());
}
@@ -174,7 +174,7 @@ void usageExceptionCause() {
UsageException ex = new UsageException(cause, mock);
assertSame(executionPath, ex.getCommands());
assertSame(mock, ex.getCommandParseResult());
- assertEquals(Component.empty(), ex.getRichMessage());
+ assertEquals(Component.empty(), ex.componentMessage());
assertEquals(cause.getClass().getName(), ex.getMessage());
assertSame(cause, ex.getCause());
}