package net.saltymc.eaa.commands; import com.mojang.brigadier.arguments.IntegerArgumentType; import com.mojang.brigadier.arguments.StringArgumentType; import com.mojang.brigadier.builder.LiteralArgumentBuilder; import com.mojang.brigadier.context.CommandContext; import com.mojang.brigadier.exceptions.CommandSyntaxException; import net.fabricmc.fabric.api.client.command.v1.FabricClientCommandSource; import net.minecraft.client.toast.SystemToast; import net.minecraft.command.argument.EntityArgumentType; import net.minecraft.text.Text; import net.saltymc.eaa.util.database.DB_Player; import net.saltymc.eaa.util.database.DB_Tag; import net.saltymc.eaa.util.mojangApi.PlayerInfo; import static net.fabricmc.fabric.api.client.command.v1.ClientCommandManager.argument; import static net.fabricmc.fabric.api.client.command.v1.ClientCommandManager.literal; public class TagCommand extends EaaModCommand{ @Override public int run(CommandContext context) { FabricClientCommandSource source = context.getSource(); String player = StringArgumentType.getString(context,"player"); DB_Tag.Type tag = DB_Tag.Type.valueOf(StringArgumentType.getString(context,"tag")); int grade = IntegerArgumentType.getInteger(context, "grade"); try { String playerUUID = PlayerInfo.playerNameToUUID(player); DB_Player db_player = DB_Player.getPlayer(playerUUID); new DB_Tag(db_player, tag, grade).put(); } catch (Exception e) { source.sendFeedback(Text.of(e.toString())); } SystemToast.add(source.getClient().getToastManager(), SystemToast.Type.TUTORIAL_HINT, Text.of("Player Tagged"), Text.of(player + " | " + tag.name() + " | " + grade)); return 1; } @Override public LiteralArgumentBuilder getCommandSpecification() { return literal("/tag") .then( argument("player", StringArgumentType.word()) .suggests((ctx, builder) -> EntityArgumentType.player().listSuggestions(ctx, builder)) .then(argument("tag", StringArgumentType.word()) .suggests(((context, builder) -> { for (DB_Tag.Type tag : DB_Tag.Type.values()) builder.suggest(tag.name()); return builder.buildFuture(); })) .then( argument("grade", IntegerArgumentType.integer(0,10)) .executes(this) ))); } }