package carpet.commands; import carpet.CarpetSettings; import carpet.utils.BlockInfo; import carpet.utils.CommandHelper; import carpet.utils.Messenger; import com.mojang.brigadier.CommandDispatcher; import com.mojang.brigadier.builder.LiteralArgumentBuilder; import java.util.List; import java.util.regex.Matcher; import java.util.regex.Pattern; import net.minecraft.commands.CommandBuildContext; import net.minecraft.commands.CommandSourceStack; import net.minecraft.commands.Commands; import net.minecraft.commands.arguments.coordinates.BlockPosArgument; import net.minecraft.core.BlockPos; import net.minecraft.network.chat.Component; import static com.mojang.brigadier.arguments.StringArgumentType.getString; import static com.mojang.brigadier.arguments.StringArgumentType.greedyString; import static net.minecraft.commands.Commands.argument; import static net.minecraft.commands.Commands.literal; public class InfoCommand { public static void register(CommandDispatcher dispatcher, CommandBuildContext commandBuildContext) { LiteralArgumentBuilder command = literal("info"). requires((player) -> CommandHelper.canUseCommand(player, CarpetSettings.commandInfo)). then(literal("block"). then(argument("block position", BlockPosArgument.blockPos()). executes( (c) -> infoBlock( c.getSource(), BlockPosArgument.getSpawnablePos(c, "block position"), null)). then(literal("grep"). then(argument("regexp",greedyString()). executes( (c) -> infoBlock( c.getSource(), BlockPosArgument.getSpawnablePos(c, "block position"), getString(c, "regexp"))))))); dispatcher.register(command); } public static void printBlock(List messages, CommandSourceStack source, String grep) { Messenger.m(source, ""); if (grep != null) { Pattern p = Pattern.compile(grep); Messenger.m(source, messages.get(0)); for (int i = 1; i