summaryrefslogtreecommitdiffstats
path: root/api/logic/minecraft/Library.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'api/logic/minecraft/Library.cpp')
-rw-r--r--api/logic/minecraft/Library.cpp49
1 files changed, 43 insertions, 6 deletions
diff --git a/api/logic/minecraft/Library.cpp b/api/logic/minecraft/Library.cpp
index a3b5f01c..22e1bd33 100644
--- a/api/logic/minecraft/Library.cpp
+++ b/api/logic/minecraft/Library.cpp
@@ -11,11 +11,11 @@
void Library::getApplicableFiles(OpSys system, QStringList& jar, QStringList& native, QStringList& native32,
QStringList& native64, const QString &overridePath) const
{
- bool isLocal = (hint() == "local");
+ bool local = isLocal();
auto actualPath = [&](QString relPath)
{
QFileInfo out(FS::PathCombine(storagePrefix(), relPath));
- if(isLocal && !overridePath.isEmpty())
+ if(local && !overridePath.isEmpty())
{
QString fileName = out.fileName();
auto fullPath = FS::PathCombine(overridePath, fileName);
@@ -56,7 +56,7 @@ QList< std::shared_ptr< NetAction > > Library::getDownloads(OpSys system, class
{
QList<NetActionPtr> out;
bool isAlwaysStale = (hint() == "always-stale");
- bool isLocal = (hint() == "local");
+ bool local = isLocal();
bool isForge = (hint() == "forge-pack-xz");
auto add_download = [&](QString storage, QString url, QString sha1 = QString())
@@ -68,7 +68,7 @@ QList< std::shared_ptr< NetAction > > Library::getDownloads(OpSys system, class
}
if (!entry->isStale())
return true;
- if(isLocal)
+ if(local)
{
if(!overridePath.isEmpty())
{
@@ -228,6 +228,11 @@ bool Library::isActive() const
return result;
}
+bool Library::isLocal() const
+{
+ return m_hint == "local";
+}
+
void Library::setStoragePrefix(QString prefix)
{
m_storagePrefix = prefix;
@@ -247,12 +252,44 @@ QString Library::storagePrefix() const
return m_storagePrefix;
}
+QString Library::filename(OpSys system) const
+{
+ if(!m_filename.isEmpty())
+ {
+ return m_filename;
+ }
+ // non-native? use only the gradle specifier
+ if (!isNative())
+ {
+ return m_name.getFileName();
+ }
+
+ // otherwise native, override classifiers. Mojang HACK!
+ GradleSpecifier nativeSpec = m_name;
+ if (m_nativeClassifiers.contains(system))
+ {
+ nativeSpec.setClassifier(m_nativeClassifiers[system]);
+ }
+ else
+ {
+ nativeSpec.setClassifier("INVALID");
+ }
+ return nativeSpec.getFileName();
+}
+
+QString Library::displayName(OpSys system) const
+{
+ if(!m_displayname.isEmpty())
+ return m_displayname;
+ return filename(system);
+}
+
QString Library::storageSuffix(OpSys system) const
{
// non-native? use only the gradle specifier
if (!isNative())
{
- return m_name.toPath();
+ return m_name.toPath(m_filename);
}
// otherwise native, override classifiers. Mojang HACK!
@@ -265,5 +302,5 @@ QString Library::storageSuffix(OpSys system) const
{
nativeSpec.setClassifier("INVALID");
}
- return nativeSpec.toPath();
+ return nativeSpec.toPath(m_filename);
}