GH-4699 Add global datapacks support to Modrinth exporter

This commit is contained in:
arthomnix
2023-02-05 12:03:00 +00:00
parent a6dff61ff7
commit a1f256a745
5 changed files with 98 additions and 5 deletions

View File

@@ -32,7 +32,11 @@ void ModrinthExportDialog::updateDialogState()
ui->buttonBox->button(QDialogButtonBox::StandardButton::Ok)->setEnabled(
!ui->name->text().isEmpty()
&& !ui->version->text().isEmpty()
&& !ui->file->text().isEmpty()
&& ui->file->text().endsWith(".mrpack")
&& (
!ui->includeDatapacks->isChecked()
|| (!ui->datapacksPath->text().isEmpty() && QDir(m_instance->gameRoot() + "/" + ui->datapacksPath->text()).exists())
)
);
}
@@ -40,6 +44,7 @@ void ModrinthExportDialog::on_fileBrowseButton_clicked()
{
QFileDialog dialog(this, tr("Select modpack file"), QStandardPaths::writableLocation(QStandardPaths::HomeLocation));
dialog.setDefaultSuffix("mrpack");
dialog.setNameFilter("Modrinth modpacks (*.mrpack)");
dialog.setAcceptMode(QFileDialog::AcceptSave);
dialog.setFileMode(QFileDialog::AnyFile);
dialog.selectFile(ui->name->text() + ".mrpack");
@@ -51,6 +56,19 @@ void ModrinthExportDialog::on_fileBrowseButton_clicked()
updateDialogState();
}
void ModrinthExportDialog::on_datapackPathBrowse_clicked()
{
QFileDialog dialog(this, tr("Select global datapacks folder"), m_instance->gameRoot());
dialog.setAcceptMode(QFileDialog::AcceptOpen);
dialog.setFileMode(QFileDialog::DirectoryOnly);
if (dialog.exec()) {
ui->datapacksPath->setText(QDir(m_instance->gameRoot()).relativeFilePath(dialog.selectedFiles().at(0)));
}
updateDialogState();
}
void ModrinthExportDialog::accept()
{
ModrinthExportSettings settings;
@@ -64,6 +82,10 @@ void ModrinthExportDialog::accept()
settings.includeResourcePacks = ui->includeResourcePacks->isChecked();
settings.includeShaderPacks = ui->includeShaderPacks->isChecked();
if (ui->includeDatapacks->isChecked()) {
settings.datapacksPath = ui->datapacksPath->text();
}
MinecraftInstancePtr minecraftInstance = std::dynamic_pointer_cast<MinecraftInstance>(m_instance);
minecraftInstance->getPackProfile()->reload(Net::Mode::Offline);