Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -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 {

Expand Down Expand Up @@ -114,46 +115,6 @@ private static Object readArg(CommandContext<CommandSource> 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);
}

Expand All @@ -167,65 +128,21 @@ 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();
}

private static void applySuggestions(RequiredArgumentBuilder<CommandSource, ?> builder, CommandArgument arg) {

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;
}
Expand All @@ -246,11 +163,11 @@ private static void applySuggestions(RequiredArgumentBuilder<CommandSource, ?> 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()))
);
Expand All @@ -262,25 +179,13 @@ private static void applySuggestions(RequiredArgumentBuilder<CommandSource, ?> 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;
}
Expand All @@ -297,16 +202,16 @@ private static void applySuggestions(RequiredArgumentBuilder<CommandSource, ?> 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);
}
}

Expand Down