From be6a133b7a4c62dedc6d32d1316200316886df23 Mon Sep 17 00:00:00 2001 From: cattyn Date: Sat, 21 Feb 2026 02:06:02 +0300 Subject: [PATCH 1/4] feat: improve BrigadierCommandAdapter using `SharedSuggestionProvider.suggest` for matching suggestions --- .../core/command/BrigadierCommandAdapter.java | 43 ++++++------------- 1 file changed, 14 insertions(+), 29 deletions(-) diff --git a/nami-api/src/main/java/namidevelopment/kiriyaga/api/core/command/BrigadierCommandAdapter.java b/nami-api/src/main/java/namidevelopment/kiriyaga/api/core/command/BrigadierCommandAdapter.java index e3abb110..79d2e940 100644 --- a/nami-api/src/main/java/namidevelopment/kiriyaga/api/core/command/BrigadierCommandAdapter.java +++ b/nami-api/src/main/java/namidevelopment/kiriyaga/api/core/command/BrigadierCommandAdapter.java @@ -13,14 +13,15 @@ import namidevelopment.kiriyaga.api.model.command.CommandRoute; import namidevelopment.kiriyaga.api.model.command.CommandSource; +import namidevelopment.kiriyaga.api.model.feature.Feature; +import namidevelopment.kiriyaga.api.model.setting.Setting; import namidevelopment.kiriyaga.api.util.KeyUtils; import net.minecraft.core.registries.BuiltInRegistries; -import net.minecraft.world.entity.player.Player; - -import java.util.Locale; +import net.minecraft.resources.Identifier; import static com.mojang.brigadier.arguments.StringArgumentType.*; import static namidevelopment.kiriyaga.api.NamiApi.*; +import static net.minecraft.commands.SharedSuggestionProvider.suggest; public class BrigadierCommandAdapter { @@ -214,18 +215,14 @@ private static void applySuggestions(RequiredArgumentBuilder b if (arg instanceof CommandArgument.ActionArg actionArg) { builder.suggests((ctx, sb) -> { - for (String v : actionArg.getAllowedValues()) { - sb.suggest(v); - } - return sb.buildFuture(); + return suggest(actionArg.getAllowedValues(), sb); }); return; } if (arg instanceof CommandArgument.FeatureArg) { builder.suggests((ctx, sb) -> { - FEATURE_SERVICE.getStorage().getAll().forEach(f -> sb.suggest(f.getName())); - return sb.buildFuture(); + return suggest(FEATURE_SERVICE.getStorage().getAll().stream().map(Feature::getName), sb); }); return; } @@ -246,11 +243,11 @@ private static void applySuggestions(RequiredArgumentBuilder b if (featureName != null) { var feature = FEATURE_SERVICE.getStorage().getByName(featureName); if (feature != null) { - feature.getSettings().forEach(s -> sb.suggest(s.getName())); - return sb.buildFuture(); + return suggest(feature.getSettings().stream().map(Setting::getName), sb); } } + // autism below FEATURE_SERVICE.getStorage().getAll().forEach(f -> f.getSettings().forEach(s -> sb.suggest(s.getName())) ); @@ -262,25 +259,13 @@ private static void applySuggestions(RequiredArgumentBuilder b if (arg instanceof CommandArgument.KeyBindArg) { builder.suggests((ctx, sb) -> { - String rem = sb.getRemaining().toLowerCase(); - - for (String key : KeyUtils.getAllKeyNames()) { - if (key.toLowerCase().startsWith(rem)) { - sb.suggest(key); - } - } - return sb.buildFuture(); + return suggest(KeyUtils.getAllKeyNames().stream(), sb); }); } if (arg instanceof CommandArgument.OnlinePlayerArg) { builder.suggests((ctx, sb) -> { - if (MC.getConnection() != null) { - for (var info : MC.getConnection().getOnlinePlayers()) { - sb.suggest(info.getProfile().name()); - } - } - return sb.buildFuture(); + return suggest(MC.getConnection().getOnlinePlayers().stream().map(info -> info.getProfile().name()), sb); }); return; } @@ -297,16 +282,16 @@ private static void applySuggestions(RequiredArgumentBuilder b private static void suggestIdentifiers(SuggestionsBuilder sb, CommandArgument.IdentifierArg.Target target) { if (target == CommandArgument.IdentifierArg.Target.ANY || target == CommandArgument.IdentifierArg.Target.ITEM) { - BuiltInRegistries.ITEM.keySet().forEach(id -> sb.suggest(id.toString())); + suggest(BuiltInRegistries.ITEM.keySet().stream().map(Identifier::toString), sb); } if (target == CommandArgument.IdentifierArg.Target.ANY || target == CommandArgument.IdentifierArg.Target.BLOCK) { - BuiltInRegistries.BLOCK.keySet().forEach(id -> sb.suggest(id.toString())); + suggest(BuiltInRegistries.BLOCK.keySet().stream().map(Identifier::toString), sb); } if (target == CommandArgument.IdentifierArg.Target.ANY || target == CommandArgument.IdentifierArg.Target.SOUND) { - BuiltInRegistries.SOUND_EVENT.keySet().forEach(id -> sb.suggest(id.toString())); + suggest(BuiltInRegistries.SOUND_EVENT.keySet().stream().map(Identifier::toString), sb); } if (target == CommandArgument.IdentifierArg.Target.ANY || target == CommandArgument.IdentifierArg.Target.PARTICLE) { - BuiltInRegistries.PARTICLE_TYPE.keySet().forEach(id -> sb.suggest(id.toString())); + suggest(BuiltInRegistries.PARTICLE_TYPE.keySet().stream().map(Identifier::toString), sb); } } From 7aa0c2638445f4dbde0b874ae24e23dfb0076998 Mon Sep 17 00:00:00 2001 From: cattyn Date: Sat, 21 Feb 2026 02:08:38 +0300 Subject: [PATCH 2/4] refactor: reduce useless checks in `toBrigadierType` --- .../core/command/BrigadierCommandAdapter.java | 40 ------------------- 1 file changed, 40 deletions(-) diff --git a/nami-api/src/main/java/namidevelopment/kiriyaga/api/core/command/BrigadierCommandAdapter.java b/nami-api/src/main/java/namidevelopment/kiriyaga/api/core/command/BrigadierCommandAdapter.java index 79d2e940..7ec86084 100644 --- a/nami-api/src/main/java/namidevelopment/kiriyaga/api/core/command/BrigadierCommandAdapter.java +++ b/nami-api/src/main/java/namidevelopment/kiriyaga/api/core/command/BrigadierCommandAdapter.java @@ -168,46 +168,6 @@ private static ArgumentType toBrigadierType(CommandArgument arg, boolean last return DoubleArgumentType.doubleArg(); } - if (arg instanceof CommandArgument.StringArg) { - return last ? greedyString() : word(); - } - - if (arg instanceof CommandArgument.ActionArg) { - return last ? greedyString() : word(); - } - - if (arg instanceof CommandArgument.FeatureArg) { - return last ? greedyString() : word(); - } - - if (arg instanceof CommandArgument.SettingArg) { - return last ? greedyString() : word(); - } - - if (arg instanceof CommandArgument.KeyBindArg) { - return last ? greedyString() : word(); - } - - if (arg instanceof CommandArgument.ConfigNameArg) { - return last ? greedyString() : word(); - } - - if (arg instanceof CommandArgument.IdentifierArg) { - return last ? greedyString() : word(); - } - - if (arg instanceof CommandArgument.OnlinePlayerArg) { - return last ? greedyString() : word(); - } - - if (arg instanceof CommandArgument.FriendArg) { - return last ? greedyString() : word(); - } - - if (arg instanceof CommandArgument.FriendNameArg) { - return last ? greedyString() : word(); - } - return last ? greedyString() : word(); } From f913b4d74472306e7bf55feea900987ec71db2f2 Mon Sep 17 00:00:00 2001 From: cattyn Date: Sat, 21 Feb 2026 02:08:38 +0300 Subject: [PATCH 3/4] refactor: reduce useless checks in `BrigadierCommandAdapter.toBrigadierType` --- .../core/command/BrigadierCommandAdapter.java | 40 ------------------- 1 file changed, 40 deletions(-) diff --git a/nami-api/src/main/java/namidevelopment/kiriyaga/api/core/command/BrigadierCommandAdapter.java b/nami-api/src/main/java/namidevelopment/kiriyaga/api/core/command/BrigadierCommandAdapter.java index 79d2e940..7ec86084 100644 --- a/nami-api/src/main/java/namidevelopment/kiriyaga/api/core/command/BrigadierCommandAdapter.java +++ b/nami-api/src/main/java/namidevelopment/kiriyaga/api/core/command/BrigadierCommandAdapter.java @@ -168,46 +168,6 @@ private static ArgumentType toBrigadierType(CommandArgument arg, boolean last return DoubleArgumentType.doubleArg(); } - if (arg instanceof CommandArgument.StringArg) { - return last ? greedyString() : word(); - } - - if (arg instanceof CommandArgument.ActionArg) { - return last ? greedyString() : word(); - } - - if (arg instanceof CommandArgument.FeatureArg) { - return last ? greedyString() : word(); - } - - if (arg instanceof CommandArgument.SettingArg) { - return last ? greedyString() : word(); - } - - if (arg instanceof CommandArgument.KeyBindArg) { - return last ? greedyString() : word(); - } - - if (arg instanceof CommandArgument.ConfigNameArg) { - return last ? greedyString() : word(); - } - - if (arg instanceof CommandArgument.IdentifierArg) { - return last ? greedyString() : word(); - } - - if (arg instanceof CommandArgument.OnlinePlayerArg) { - return last ? greedyString() : word(); - } - - if (arg instanceof CommandArgument.FriendArg) { - return last ? greedyString() : word(); - } - - if (arg instanceof CommandArgument.FriendNameArg) { - return last ? greedyString() : word(); - } - return last ? greedyString() : word(); } From ea10d42f015efa01dd171978626beaf9eb40c364 Mon Sep 17 00:00:00 2001 From: cattyn Date: Sat, 21 Feb 2026 02:09:21 +0300 Subject: [PATCH 4/4] refactor: reduce useless checks in `BrigadierCommandAdapter.readArg` --- .../core/command/BrigadierCommandAdapter.java | 40 ------------------- 1 file changed, 40 deletions(-) diff --git a/nami-api/src/main/java/namidevelopment/kiriyaga/api/core/command/BrigadierCommandAdapter.java b/nami-api/src/main/java/namidevelopment/kiriyaga/api/core/command/BrigadierCommandAdapter.java index 7ec86084..a9d206d7 100644 --- a/nami-api/src/main/java/namidevelopment/kiriyaga/api/core/command/BrigadierCommandAdapter.java +++ b/nami-api/src/main/java/namidevelopment/kiriyaga/api/core/command/BrigadierCommandAdapter.java @@ -115,46 +115,6 @@ private static Object readArg(CommandContext ctx, CommandArgument return DoubleArgumentType.getDouble(ctx, name); } - if (arg instanceof CommandArgument.StringArg) { - return StringArgumentType.getString(ctx, name); - } - - if (arg instanceof CommandArgument.ActionArg) { - return StringArgumentType.getString(ctx, name); - } - - if (arg instanceof CommandArgument.FeatureArg) { - return StringArgumentType.getString(ctx, name); - } - - if (arg instanceof CommandArgument.SettingArg) { - return StringArgumentType.getString(ctx, name); - } - - if (arg instanceof CommandArgument.KeyBindArg) { - return StringArgumentType.getString(ctx, name); - } - - if (arg instanceof CommandArgument.ConfigNameArg) { - return StringArgumentType.getString(ctx, name); - } - - if (arg instanceof CommandArgument.IdentifierArg) { - return StringArgumentType.getString(ctx, name); - } - - if (arg instanceof CommandArgument.OnlinePlayerArg) { - return StringArgumentType.getString(ctx, name); - } - - if (arg instanceof CommandArgument.FriendArg) { - return StringArgumentType.getString(ctx, name); - } - - if (arg instanceof CommandArgument.FriendNameArg) { - return StringArgumentType.getString(ctx, name); - } - return StringArgumentType.getString(ctx, name); }