From be73eb3322b6bb5ab1144f9942ef9bd188c704a1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20Mr=C3=A1zek?= Date: Sun, 8 Jun 2014 21:26:48 +0200 Subject: [PATCH] Version revert logic improvements, colorful icons for mod lists and resource pack list. Icons are from Oxygen. --- gui/pages/LegacyJarModPage.cpp | 2 +- gui/pages/LegacyUpgradePage.cpp | 2 +- gui/pages/ResourcePackPage.h | 23 +++++++++ gui/pages/TexturePackPage.h | 20 ++++++++ gui/pages/VersionPage.cpp | 28 ++++++----- logic/LegacyInstance.cpp | 4 +- logic/OneSixInstance.cpp | 4 +- logic/minecraft/InstanceVersion.cpp | 58 +++++++++++++++++++++- logic/minecraft/InstanceVersion.h | 8 +-- resources/multimc/16x16/plugin-blue.png | Bin 0 -> 731 bytes resources/multimc/16x16/plugin-green.png | Bin 0 -> 702 bytes resources/multimc/16x16/plugin-red.png | Bin 0 -> 693 bytes resources/multimc/16x16/resourcepacks.png | Bin 0 -> 1207 bytes resources/multimc/24x24/plugin-blue.png | Bin 0 -> 1240 bytes resources/multimc/24x24/plugin-green.png | Bin 0 -> 1281 bytes resources/multimc/24x24/plugin-red.png | Bin 0 -> 1170 bytes resources/multimc/24x24/resourcepacks.png | Bin 0 -> 2000 bytes resources/multimc/32x32/plugin-blue.png | Bin 0 -> 1708 bytes resources/multimc/32x32/plugin-green.png | Bin 0 -> 1758 bytes resources/multimc/32x32/plugin-red.png | Bin 0 -> 1566 bytes resources/multimc/32x32/resourcepacks.png | Bin 0 -> 2818 bytes resources/multimc/64x64/plugin-blue.png | Bin 0 -> 4406 bytes resources/multimc/64x64/plugin-green.png | Bin 0 -> 5036 bytes resources/multimc/64x64/plugin-red.png | Bin 0 -> 4003 bytes resources/multimc/64x64/resourcepacks.png | Bin 0 -> 6805 bytes resources/multimc/multimc.qrc | 24 +++++++++ 26 files changed, 150 insertions(+), 23 deletions(-) create mode 100644 gui/pages/ResourcePackPage.h create mode 100644 gui/pages/TexturePackPage.h create mode 100644 resources/multimc/16x16/plugin-blue.png create mode 100644 resources/multimc/16x16/plugin-green.png create mode 100644 resources/multimc/16x16/plugin-red.png create mode 100644 resources/multimc/16x16/resourcepacks.png create mode 100644 resources/multimc/24x24/plugin-blue.png create mode 100644 resources/multimc/24x24/plugin-green.png create mode 100644 resources/multimc/24x24/plugin-red.png create mode 100644 resources/multimc/24x24/resourcepacks.png create mode 100644 resources/multimc/32x32/plugin-blue.png create mode 100644 resources/multimc/32x32/plugin-green.png create mode 100644 resources/multimc/32x32/plugin-red.png create mode 100644 resources/multimc/32x32/resourcepacks.png create mode 100644 resources/multimc/64x64/plugin-blue.png create mode 100644 resources/multimc/64x64/plugin-green.png create mode 100644 resources/multimc/64x64/plugin-red.png create mode 100644 resources/multimc/64x64/resourcepacks.png diff --git a/gui/pages/LegacyJarModPage.cpp b/gui/pages/LegacyJarModPage.cpp index 7ec53d803..f0f3d7534 100644 --- a/gui/pages/LegacyJarModPage.cpp +++ b/gui/pages/LegacyJarModPage.cpp @@ -56,7 +56,7 @@ QString LegacyJarModPage::displayName() QIcon LegacyJarModPage::icon() { - return QIcon::fromTheme("settings"); + return QIcon::fromTheme("plugin-red"); } QString LegacyJarModPage::id() diff --git a/gui/pages/LegacyUpgradePage.cpp b/gui/pages/LegacyUpgradePage.cpp index 9aa97543d..02729c79b 100644 --- a/gui/pages/LegacyUpgradePage.cpp +++ b/gui/pages/LegacyUpgradePage.cpp @@ -8,7 +8,7 @@ QString LegacyUpgradePage::displayName() QIcon LegacyUpgradePage::icon() { - return QIcon::fromTheme("bug"); + return QIcon::fromTheme("checkupdate"); } QString LegacyUpgradePage::id() diff --git a/gui/pages/ResourcePackPage.h b/gui/pages/ResourcePackPage.h new file mode 100644 index 000000000..14321b9b0 --- /dev/null +++ b/gui/pages/ResourcePackPage.h @@ -0,0 +1,23 @@ +#pragma once +#include "ModFolderPage.h" + +class ResourcePackPage : public ModFolderPage +{ +public: + explicit ResourcePackPage(BaseInstance *instance, QWidget *parent = 0) + : ModFolderPage(instance->texturePackList(), "resourcepacks", "resourcepacks", + tr("Resource packs"), parent) + { + m_inst = instance; + } + + virtual ~ResourcePackPage() {}; + virtual bool shouldDisplay() override + { + return !m_inst->traits().contains("no-texturepacks") && + !m_inst->traits().contains("texturepacks"); + } + +private: + BaseInstance *m_inst; +}; diff --git a/gui/pages/TexturePackPage.h b/gui/pages/TexturePackPage.h new file mode 100644 index 000000000..ddb1fa499 --- /dev/null +++ b/gui/pages/TexturePackPage.h @@ -0,0 +1,20 @@ +#pragma once +#include "ModFolderPage.h" + +class TexturePackPage : public ModFolderPage +{ +public: + explicit TexturePackPage(BaseInstance *instance, QWidget *parent = 0) + : ModFolderPage(instance->texturePackList(), "texturepacks", "resourcepacks", + tr("Texture packs"), parent) + { + m_inst = instance; + } + virtual ~TexturePackPage() {}; + virtual bool shouldDisplay() override + { + return m_inst->traits().contains("texturepacks"); + } +private: + BaseInstance *m_inst; +}; diff --git a/gui/pages/VersionPage.cpp b/gui/pages/VersionPage.cpp index 74c3c2af6..7cee06102 100644 --- a/gui/pages/VersionPage.cpp +++ b/gui/pages/VersionPage.cpp @@ -44,6 +44,7 @@ #include #include +#include #include #include @@ -57,7 +58,7 @@ QString VersionPage::displayName() QIcon VersionPage::icon() { - return QIcon::fromTheme("settings"); + return MMC->icons()->getIcon(m_inst->iconKey()); } QString VersionPage::id() @@ -157,7 +158,7 @@ void VersionPage::on_jarmodBtn_clicked() auto f = [&](QStandardPaths::StandardLocation l) { QString location = QStandardPaths::writableLocation(l); - if(!QFileInfo::exists(location)) + if (!QFileInfo::exists(location)) return; locations.insert(location); }; @@ -166,7 +167,7 @@ void VersionPage::on_jarmodBtn_clicked() f(QStandardPaths::DownloadLocation); f(QStandardPaths::HomeLocation); QList urls; - for(auto location: locations) + for (auto location : locations) { urls.append(QUrl::fromLocalFile(location)); } @@ -178,8 +179,9 @@ void VersionPage::on_jarmodBtn_clicked() w.setDirectory(modsFolder); w.setSidebarUrls(urls); - if(w.exec()); - m_version->installJarMods(w.selectedFiles()); + if (w.exec()) + ; + m_version->installJarMods(w.selectedFiles()); } void VersionPage::on_resetLibraryOrderBtn_clicked() @@ -292,15 +294,16 @@ void VersionPage::on_forgeBtn_clicked() m_version->removeFtbPack(); reloadInstanceVersion(); } - if (m_version->usesLegacyCustomJson()) + if (m_version->hasDeprecatedVersionFiles()) { if (QMessageBox::question(this, tr("Revert?"), - tr("This action will remove your custom.json. Continue?")) != + tr("This action will remove deprecated version files " + "(custom.json and version.json). Continue?")) != QMessageBox::Yes) { return; } - m_version->revertToVanilla(); + m_version->removeDeprecatedVersionFiles(); reloadInstanceVersion(); } VersionSelectDialog vselect(MMC->forgelist().get(), tr("Select Forge version"), this); @@ -329,15 +332,16 @@ void VersionPage::on_liteloaderBtn_clicked() m_version->removeFtbPack(); reloadInstanceVersion(); } - if (m_version->usesLegacyCustomJson()) + if (m_version->hasDeprecatedVersionFiles()) { if (QMessageBox::question(this, tr("Revert?"), - tr("This action will remove your custom.json. Continue?")) != + tr("This action will remove deprecated version files " + "(custom.json and version.json). Continue?")) != QMessageBox::Yes) { return; } - m_version->revertToVanilla(); + m_version->removeDeprecatedVersionFiles(); reloadInstanceVersion(); } VersionSelectDialog vselect(MMC->liteloaderlist().get(), tr("Select LiteLoader version"), @@ -369,7 +373,7 @@ void VersionPage::versionCurrent(const QModelIndex ¤t, const QModelIndex & ui->moveLibraryUpBtn->setEnabled(enabled); } QString selectedId = m_version->versionFileId(current.row()); - if(selectedId == "net.minecraft" || selectedId == "org.multimc.custom.json") + if (selectedId == "net.minecraft" || selectedId == "org.multimc.custom.json") { ui->changeMCVersionBtn->setEnabled(true); } diff --git a/logic/LegacyInstance.cpp b/logic/LegacyInstance.cpp index 15332c41f..378c058b2 100644 --- a/logic/LegacyInstance.cpp +++ b/logic/LegacyInstance.cpp @@ -49,8 +49,8 @@ QList LegacyInstance::getPages() QList values; values.append(new LegacyUpgradePage(this)); values.append(new LegacyJarModPage(this)); - values.append(new ModFolderPage(loaderModList(), "mods", "centralmods", tr("Loader Mods"))); - values.append(new ModFolderPage(coreModList(), "coremods", "viewfolder", tr("Core Mods"))); + values.append(new ModFolderPage(loaderModList(), "mods", "plugin-blue", tr("Loader Mods"))); + values.append(new ModFolderPage(coreModList(), "coremods", "plugin-green", tr("Core Mods"))); values.append(new TexturePackPage(this)); return values; } diff --git a/logic/OneSixInstance.cpp b/logic/OneSixInstance.cpp index d306470c1..6de789df6 100644 --- a/logic/OneSixInstance.cpp +++ b/logic/OneSixInstance.cpp @@ -60,8 +60,8 @@ QList OneSixInstance::getPages() { QList values; values.append(new VersionPage(this)); - values.append(new ModFolderPage(loaderModList(), "mods", "centralmods", tr("Loader Mods"))); - values.append(new ModFolderPage(coreModList(), "coremods", "viewfolder", tr("Core Mods"))); + values.append(new ModFolderPage(loaderModList(), "mods", "plugin-blue", tr("Loader Mods"))); + values.append(new ModFolderPage(coreModList(), "coremods", "plugin-green", tr("Core Mods"))); values.append(new ResourcePackPage(this)); values.append(new TexturePackPage(this)); return values; diff --git a/logic/minecraft/InstanceVersion.cpp b/logic/minecraft/InstanceVersion.cpp index 73beceb31..baf344041 100644 --- a/logic/minecraft/InstanceVersion.cpp +++ b/logic/minecraft/InstanceVersion.cpp @@ -161,12 +161,35 @@ bool InstanceVersion::isVanilla() return false; if(QFile::exists(PathCombine(m_instance->instanceRoot(), "custom.json"))) return false; + if(QFile::exists(PathCombine(m_instance->instanceRoot(), "version.json"))) + return false; return true; } bool InstanceVersion::revertToVanilla() { beginResetModel(); + // remove custom.json, if present + QString customPath = PathCombine(m_instance->instanceRoot(), "custom.json"); + if(QFile::exists(customPath)) + { + if(!QFile::remove(customPath)) + { + endResetModel(); + return false; + } + } + // remove version.json, if present + QString versionPath = PathCombine(m_instance->instanceRoot(), "version.json"); + if(QFile::exists(versionPath)) + { + if(!QFile::remove(versionPath)) + { + endResetModel(); + return false; + } + } + // remove patches, if present auto it = VersionPatches.begin(); while (it != VersionPatches.end()) { @@ -195,9 +218,40 @@ bool InstanceVersion::revertToVanilla() return true; } -bool InstanceVersion::usesLegacyCustomJson() +bool InstanceVersion::hasDeprecatedVersionFiles() { - return QFile::exists(PathCombine(m_instance->instanceRoot(), "custom.json")); + if(QFile::exists(PathCombine(m_instance->instanceRoot(), "custom.json"))) + return true; + if(QFile::exists(PathCombine(m_instance->instanceRoot(), "version.json"))) + return true; + return false; +} + +bool InstanceVersion::removeDeprecatedVersionFiles() +{ + beginResetModel(); + // remove custom.json, if present + QString customPath = PathCombine(m_instance->instanceRoot(), "custom.json"); + if(QFile::exists(customPath)) + { + if(!QFile::remove(customPath)) + { + endResetModel(); + return false; + } + } + // remove version.json, if present + QString versionPath = PathCombine(m_instance->instanceRoot(), "version.json"); + if(QFile::exists(versionPath)) + { + if(!QFile::remove(versionPath)) + { + endResetModel(); + return false; + } + } + endResetModel(); + return true; } QList > InstanceVersion::getActiveNormalLibs() diff --git a/logic/minecraft/InstanceVersion.h b/logic/minecraft/InstanceVersion.h index 60df59dfa..6b69ab477 100644 --- a/logic/minecraft/InstanceVersion.h +++ b/logic/minecraft/InstanceVersion.h @@ -51,6 +51,11 @@ public: // remove any customizations on top of vanilla bool revertToVanilla(); + // does this version consist of obsolete files? + bool hasDeprecatedVersionFiles(); + // remove obsolete files + bool removeDeprecatedVersionFiles(); + // does this version have an FTB pack patch file? bool hasFtbPack(); // remove FTB pack @@ -61,9 +66,6 @@ public: void installJarMods(QStringList selectedFiles); void installJarModByFilename(QString filepath); - // does this version still use a legacy custom.json file? - bool usesLegacyCustomJson(); - enum MoveDirection { MoveUp, MoveDown }; void move(const int index, const MoveDirection direction); void resetOrder(); diff --git a/resources/multimc/16x16/plugin-blue.png b/resources/multimc/16x16/plugin-blue.png new file mode 100644 index 0000000000000000000000000000000000000000..b5ab3fcedc3af1193fb03fb4a168b24439ae4659 GIT binary patch literal 731 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7*pj^6T^Rm@;DWu&Co?cG za29w(7Bet#3xhBt!>lgmiTlyLc~RU|`Ddba4!^INclU>k$$t z^6%Y`v}cy}D?cmq26D`5`r8rIEf(}ZspW*L?y6Mn%;eQ!j*b`9G9oYdWd#fB#;`ah zdbqNA*>|~_CAX&iJ9nn~``!Oy?^FFuFE*au`@HDg_qp%q6mw?X_$R!5a_!!`=DTkP zALmfK_(*B)tQmJDc2zG;FUg)0%B`?@@7FgI=Y4s3Zkmc#NRs=xceDNk>|%T1;M=fn za(R@8#vJx75wWwjtEF8!k)9K>;>hovMs~GvKkpSkOPnt>MOwAv!?k;p)-vpE)}I$A zn`7@YlSz?w{uy=7)&s=3gyj4eAgySiT6N3H)+ zeROKU%(mB_6)}e&OF2ni__}B-r$FB_f$pP|q(wKLJh7wcb!NfC`7;e39QwZW%7sI! zVLEr+zRB$`jr>@&uev;I`eV(CnC7ZgTqhn&9g{Ff{KK=PaZ*o2r_b?=pO@d#d$!rE z#bf~^!}PjYUeX*djd%MzzW7%_wS{+;cN`qIZv7aY?xPdYumEIr{;|D|IgXPfUm(#j1G?>jEE^IVnn%=PjA zepGa-%>MqBe~z@A=kh}>My(-xp5-tyEaUc@Y2?~!GI9E0X5G>|Kg0e+&54~qx61f= z#9Hgky&qd9?8{U14fq+aExLWt%{C7kk*3%gaorzcbe}Ds27oBg*qna1&S8p;osOn=Xeo&3!uaQj(3h!>`)^mz$~=FI=jA m^8I{)17?5bOEP%dGt}8Pn${lke$2qYz~JfX=d#Wzp$Py#-c9!a literal 0 HcmV?d00001 diff --git a/resources/multimc/16x16/plugin-green.png b/resources/multimc/16x16/plugin-green.png new file mode 100644 index 0000000000000000000000000000000000000000..af0f116675630adcdc4618fc718860b316126f70 GIT binary patch literal 702 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!toT0LDHLn?0dPLB5o4wN}w zf85%9?%B*V?S)B^78gpCl$19t)%W9acgYvE{d(zeoR)Kj-&r}M)+HMpI^!l)X(&xv zBA{BlvPFZ1wKK?K%ENzmc2}2|zu&pMc>V2Ls~p+u{`~v!yYAfkImP--GOLefn_jid zRpy;`?J|d9+t(M@^|cxIKVMm$X|ow3|112z5D4keC|2iQ#SX zx0UO*F{%#k z=s2NbM%9iQZc$k+2j96@?T#3VZvA@od5r1XWm7tiTPvNt93xtE%S3R(6qXu^e;508 z&fQ(t=x&?;P4qqM%z1$g9cluT8Z4eQ9!|7koXd6j^q2PQX47x57B9WH%}VaWBIb16 zdk?E^@A5cn%$z6NzJfnfsWe=)h4Wfpr(xst?bq4Ok1=1*T(wwj(O+4y`>yeq&suQ4 zk6}AmqA@p{f%U=Bzwea~_AkudRaBdpW45KWXWOE(>l6N#b_TY)cs4#dRCB^bfGILN z*Ewx!MdJZM$M^fK@Iwq`1B0il KpUXO@geCwQ7ds^Y literal 0 HcmV?d00001 diff --git a/resources/multimc/16x16/plugin-red.png b/resources/multimc/16x16/plugin-red.png new file mode 100644 index 0000000000000000000000000000000000000000..1a97c9c00143fdb9771880cc7034c501dc9699cb GIT binary patch literal 693 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7*pj^6T^Rm@;DWu&Co?cG za29w(7Bet#3xhBt!>lgtWz7L|GXa7?_+qT^vI!PWJ{o`Ug7- z{QI_dX@3xxO6Y>669qULuQV%OY!>JJm|*gY`N<3U4=w7#duLaO_8*(g$^O{!abt#! z0BhEi85~JDhgfX_ZoS>NeRr*~T-3af#viJa-=ysOnU+=__CUhs?DNgjmo1ksKY!*< z!*kYkK|iI|uDv_+#+{n#8S4GQ8mtH3&bxUt+HoaI5Z9&%oAgsp+ZoQuYk$z0FaNn! zgP}nB+Np(CLr*v{E)jY2%W7Zt-|WJaCtfZox(eSO{phyP*Qaw<~&NH*kEsC+CqJu(mDy^y%-D`F`2@YbZLn(Y$G)ouBmb6_?+%f-ca1IRblPNwK4yG z`n~R7sxaf1h^zJ{g{Q3c)0ty--)8KWK0fulSE&7)H-9vus@10ZeLrL=BN2T&F?R1>M}M=~FU^+yF5UYtj%kB; zls(ggUGq-Hs4Q*kTXm-JPyhVSe>#Nu@Bq}Yt;Qih}F|L*h5 zE8D!}W|B{Kde*G62(gz(*2WfQP2G|7_?g5C=a_bjnh&WjnuTRQCst2*>uH{`^@m|$ z&$2{1@Y)Xt8b25OD3s%C{eL<6ayx@e z!Htsz^7ga+{4c*>Azf9)yMNx^_Vs7~hpjwY@PUs$446Gqzq;@+oUs-h#NEqzzmQZ`2m7eyzfB)B3`0=gR!>XPOM(NIwEEZ z6N61|s{Vc@SxuiexA+zE4_Op4&wu?ztwG>t?tc4%s`BTj`EKfE&tmhvoFKs_(dMWj zvgpw9Z~OcmG8p*SbpF3@(yn>1VB!wZeWBcE&YuaGmFOVMa^-E=i%BgB1|0z!EWxLD z$XRWfxT-hG{;gS=#ry-SQ^o2R@NfC&c6sUPg`XY>ZDmQ|b&zuioOGf38PB(t!wM}8 z>e3b;e!VUD<)-lPto8gH=kO`4yn+nxEUt5(H|km6_&6aq(@{gn@%RCTJH5RMEe`re z5+}~Sc&54USxuw+YEsc{DwB=Aulg zl*j5BoAnpY`pug)^FUU4li;0%32Cjb=IkzhwOZoyBTJcO4Ym``xM#_SE#_Pw&d*InJ!VS^?n;v?>keh?=Cgb8>5aDpEGxn0M)?$T3a<^Z#37K7ZVkTaoeNZiv>> z>#s`#-iTf3RacC9yP;b&CD?GvwY0#?-T}IIzf89-KQ{9PtH`?fZdZ&Sd)P%i`Zj-e z%T5sNdLPrLT4i^)r+6^U@P@^pf*)^^3P}mStdIPz4#Cl30>z zm0XmXSdz+MWMF8hYha;kWEf&-Vr61rWn`#pU}j}t@MLxVHWUrH`6-!cmAExb{dOHx PL@{`}`njxgN@xNAbJ`R& literal 0 HcmV?d00001 diff --git a/resources/multimc/24x24/plugin-blue.png b/resources/multimc/24x24/plugin-blue.png new file mode 100644 index 0000000000000000000000000000000000000000..250a62609d96fe0f6b5a1d835d79c0004c45a54a GIT binary patch literal 1240 zcmeAS@N?(olHy`uVBq!ia0y~yV2}V|4mJh`h6m-gKNuJo*pj^6T^Rm@;DWu&Co?cG za29w(7Bet#3xhBt!>l3fW@&(?@DXL z)*E3PvRtzbTBmI6-RL=a=9$O!cdF&|(u{nKJI^-GuYUj2@_zZd@^gFt=Wp<=e)nW) z?!NRm*>~q{?(J8VDP42%&e<>Pt9;}`UVS_X58C_Yo@V;-?#Jb$ALmAY zmRg>(W^&%^luzB<+>^zZYwcx-i`Kt(n}_k{iw2Ej+>!E6XE|?mTycf-=`3dv<5j#? zn*!e~<2ZF)FGla|QRDc(I~D{wWvHzAIwN46<=@n*$n<}I9zL#hzi8tO&!xLm4VPN4$P3iis529ozPlNx^*5 zq$Up&ucH;q`n>Pg+un0bkp7(bpn8RwNAPX75HZ&z*1}T-OJ+r}b+0PjUUQ98Mq5am ziy<@jT8ThMz(Q@44JvA0tk*i1P2=ShSkCj>MRw&zzbhMOJ@dQpNmHiVXtf|~OOAS@ z{F7h1J~O@&JZRNe+B9X0ZF=CACC#Nw*Q?xh3UoMX`Oow`-PK&sz2L`%&VrIhD<4k@ zV;5gv_qy%3vBw&XKw+D$YmOY~Vo|vuwnNC=v-W((i|Q3_d`bZf0$x57%EO@7^%&)nxe7x^Yx%jEjp2RNplW4C`XD zFSPo{+f9_0ng2p=mW4pL*X6C!`{Q{I{W;)LXfi$j$eJTb(_Z&X36Wi$7$#ueJtv}Z zX_|YaI$Hyi!Ob4_v=?75eYq0!@=d$<(#?Dh91RRh7#r?|v3ck&zIwXgN{;umv}^y< z`&jk#!fp4T=2|Z1aBJV28)mP}wZ*PKOTMDCPxpi0fn27bC%?LOH|6->h_5NpxE?OE z^6&54>${E9O**ufzFhs^B+I&O^WA;vCL5a!3=EE~al3AMWY@L*t9R69|GnV7oV`rW z&gjbhsXt$yzA4VI=lSYQrG=JH?y>WQD}P&-CZ@?_9B1}eQp{AR>)MUD?gJeOsU}Je ziqB{7t$r_SZE^4M<`pw{N4{VCr}p1shK9X{UvElp{du~+M6|7pfn%Hf=Wi>gzPoYa z+T` yn*z(SVl@BenEmK^7F92k*8C{%n1sV0d2Rlf)!wrn^D{6oFnGH9xvX7pE_He{837yzM{t*Sf-2>h`R>Q5K%%U;I+j!$d{M z@0lj!a^bn(=d^0i`)ptH{mOjn{Fw=-xo3ujckZo^uB$DZTWwyz#XjfE!KN3@lS6)- zX`RWo_-etj<*7Y?^c`Owv^GzfcFS6Jjkc%iDvi~f<}|FiJ9o}&y|b&5g?iGQI44Z6 zbSiJ0{LgU4mueMxdu#O-NgjcstqcceURbi>gZ~D-K85t@#@k;^-LueNd;irOhCtEM z1r1Ny8)O*HO1-k@niv=D+#2wd``d%WuGg-5J8V&{JkJ1)3n`pwU)W_7XiO`qG4 zAYmY*#oshf|NEX(7w24m&%OHCK3Dmeiuae!Su|}Cst$}jeQn-#`K*HtZ?21S&$@Kt z@U9}$JjJp$q!czc5Xidq72Amo3Mf z6$BeEh(+@RCREMaBIh_I?Q4nmkH7amf4<$)g(@oHmi$j` zpXY6v*?Xo`U;XK_+r2A2k8vqmYnSF>mU=N(`m{9nec!FCIkXwWg<5`2aB)2{X=TIR`m_2K_jXJYecjy1 zmRz*?wzl1!YZG%GPrDnj??BXk-A!$&f3G(ie0z4_ZlRmB(HZ{mnk|b@=gd1EI?bgr zEMiMm_^n*q|JAeFKR!En$%5(F%z%)}obdi5K5HBu6pqaj-R7c|z4Fz+x#ACQ{XV?4 zkYz^FtxX?266I%W9Jkt>A`ofVw_Rh_Irh{U`MZC))aWW%^hD=pvrO}he*bXAnbK8e zcT_fU+$~<4{de+K%V}+bkLp)uC#}6KB6X*Jft6m$zopr0IyVK AZU6uP literal 0 HcmV?d00001 diff --git a/resources/multimc/24x24/plugin-red.png b/resources/multimc/24x24/plugin-red.png new file mode 100644 index 0000000000000000000000000000000000000000..68cb8e9db795e79c296ddec5ed001986f776167f GIT binary patch literal 1170 zcmeAS@N?(olHy`uVBq!ia0y~yV2}V|4mJh`h6m-gKNuJo*pj^6T^Rm@;DWu&Co?cG za29w(7Bet#3xhBt!>l4u81$~Ki;O|e@#Ip(a{;z}z-j!dm@+BJ(;731#Z|BvQB&4<;e#B+%`S0($yUGmvX4iZ^ z`}g7@rkgJ{qO9GL`;I(6FaL0=wlKpzc`@lXEDC~_JQM#q?&Mi{{o(E0A8Eq-E;3ll zW+cz6jCj+>pqE|y_b`=;Nh%4;oja3HJX8C+HG7Z1@%TC;^W|+v^NQ`wr@*IE#B;xEgbclamAWA zbMxNH#AyDy3svuS?%cV2ng9H-D^g$PU5N_J_L$Ug?1^{wg(#M%MvL}Vb2DU_uod)8 zQsLU3_i*;pr+;rV{QG1Vl*o~})nlz=vO=a;M?;kJC6N9xTeBjF)5OhlR@1Qw$22V3@5!ChlyXj)`HHc$w({sb?T!NzZZo<~oyBwP zm_p$k?}^5*;;S8Ox7A*|)^yLgRq=&w&E}sB58kd^`QquujoYJ?E{jh-(zZ3~+@9$+ z>397(p5O5Gs=Dv()1p|jo3}&2fp3F^YnEb{UCpN_C(F4vZ+>-QXR(f~6^qp81u5C0 zbDYIh<}1DDoLIx<`ohd?%HC@6hd(TuvqBwNrllO5G+94PYyGr-`SyI19j~uw{wR}v zQ^GNEZ4aZMgUbDEUnypWjP>hwUB7<){>^Y5IhzO_xqp{;Mql6j#w#&gLQZDpe0}dp z0_QaE=REsVvA(KD)i<=>rrMXC!(n9*XF;F+(wF(uxBUAv>6(}W%K=6MRt8~)gz3|( zgD*{HitQ}A)^AYN-}Zg&qM%5(GzOpl8@yeT_HSgYe$Kb#>Y@LJQQfwITLO5SUc9_` zai;pB72moI?dxZ&@Z4TfxiY41ZIqU%B9ofuxm~xfB(Aof##}qoZ_>xY2QRd*zM3ig z^pmvxvX^_~H^0ex(YWSeZHb9*KYOp+hu?pH=NX-DN+=0&bSa&^icPHThhT_SR%Tt@ z`{du>T2DoN^_TIFx%R7@so~9Q3%laOGhQ1fTJSIU5GhitkohYkw(U#nu_s2>?aYB& zo-|CnH~Y?>+_&M|*Yb)je$m3P;F^rbwy)Vob+6}sf2yz|Y|1QI8!a1#{1e;M1=TvG zI6|U@R_gxy6UU4$)aZ}Z{IQwY6rdtjl`m`liEZCa$HuUR+^Di>K%ePl~6qhH- cHT)A7(RH(sjg&gVz`(%Z>FVdQ&MBb@0Gmu4MF0Q* literal 0 HcmV?d00001 diff --git a/resources/multimc/24x24/resourcepacks.png b/resources/multimc/24x24/resourcepacks.png new file mode 100644 index 0000000000000000000000000000000000000000..68359d395952942ef7c90937eb56521bc74748e1 GIT binary patch literal 2000 zcmeAS@N?(olHy`uVBq!ia0y~yV2}V|4mJh`h6m-gKNuJo*pj^6T^Rm@;DWu&Co?cG za29w(7Bes~c!06n$!t52U|E4osvAMfn^|0U+v`Ukw}s~K__8o3TR zy$lbZaj|`W@r|9AX2zLYCVuYCdw6+vxGZze_J8$F*RB;AoEOXe?{u*+ntQe7LtX#V zqT1PlA7ks!-k5RjsHx#4Ax^$2zEfMR7TtaRpDV{HTd|>r{o2;}hpzQ(eeW3W?=0qR zc+RM>XjS<4Gw~8xt90&8n!Nb10nd@gg-4PMdHDF0#JUw{`Y6?ZoAda3bR|1~+dg&& zh6~AxpAY}7=rpV?T;3taDCo-EIH&pa^!&;d8=vj`^T&px$zk5}iSK_u`E3^xs>(1y zrE^|Q*4tN+m5t#XDncC$S6*@4wP&u>XZ-xNV^!Av%$$h0$>!B!3^SH-9yUmb6wA5Y z_IlTcTKOi0gqxdEIa-|#-I_i-?AM3103Uw8Kli^SEG#N~-`yHt=jpNROUv7WQ>71$ z4~L7Cu`o_cJySKRWhFTZ1Z<5s-)ndF=Iq>WFE{AQ*9zxxPO>p!mrTUAjOu$$->LS)}XyKSW{r*p&o$) zCc2yV?6T6ky+g26+DyURUVf9#=G@x_YecdiS-9+#i+ada_oZ`Vu5U&*fM=H35`4?JFNb!Wfs`E6;g z3^z_zBn3)H&%2{`=H$=0QB|&*T~qZVjqF9ZCTesoczNhY^_0DTaw9gHC8@Xige{!o zFu}!=LCBPeMQOA9h0>K}59fdDdtY!j`;p%+Cr+;14Rx^El z{S}!~9UTk}m&F}c+BenCKVW9m=DKN-a}ZO*0s-fi*C~qG;Yv5VqfFk*8wN8NJkL8l zq3EhZsFiK$hX)7e_x1N5HaTnE9JfPGB!VOIs)Dvu+Dgx!<93ZxUp3E_Y)SWL3X<5Q zbK!yctJS#+LN*w^NI9m!u)#UmB&;Ga&un(_uEojz;o;%=N)sDi?>cjahr{P$xZ+7E z?Nw}{6D4jY`rX;ZmtEA5n>?lVe!KG2;yop$5B@eaO@8#-zWwrrrn2Kl*sobWo%`aW zzD?R!-Y@@+#CE^h^)8^e__Oh>WfRxE-u`=mOT!yqrPs+j*15m&yBMLw9Xhc?apGf6 ziEYy^wb#G5zhCwC79S%+T^RTKtLz3}nvds7b82h*M|@>I871JkU4(i1%uJa#5bpFD!K4 z&(?5W@Q>NdH#U!cD;qywxNzac0t*>kJ-s|3mPVJrmd6$;-cubu=|4%CJmqS*$JCQ*Yvtqpma4TgRxso+1T*y9*6ZhCXr9Na^quki8Lrl>rIUm_ zHTAX$t(w(${PE0rjg7PS3Jc30t^I$jZ1{S(Th9QO~Rwf2kMuxfuW>y9UPgduH+=9@Mo1c=IR*74~)Nj{8 PbvJ{jtDnm{r-UW|sWXab literal 0 HcmV?d00001 diff --git a/resources/multimc/32x32/plugin-blue.png b/resources/multimc/32x32/plugin-blue.png new file mode 100644 index 0000000000000000000000000000000000000000..c4ca12e26886c1463c6390e54c899411f8de6f6c GIT binary patch literal 1708 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 literal 0 HcmV?d00001 diff --git a/resources/multimc/32x32/plugin-red.png b/resources/multimc/32x32/plugin-red.png new file mode 100644 index 0000000000000000000000000000000000000000..5cda173a96e9301a2f7a56d9868e8e81ec1aed8a GIT binary patch literal 1566 zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I4mJh`hT^KKFANL}Y)RhkE)4%caKYZ?lNlHo zI14-?iy0WWg+Z8+Vb&Z81_lQ95>H=O_Iqp`LfTB4Cmz0LU|?PC>Eaj?ad>TbY=%sz z$iH`Ut#{8n`)@bhr*q;CWG2S2M`S%_g)cm}8d%OJFbnm>thVFA07w`P?!y?6sH+b!# zDP9YnrYcNycy+@t;^&__f!Zw-6}Lt{SzrEc%9)x2`%Af(MX@$9$h0LSANXoz!Lv|Y z?81zhj=dWDC+_vt{?KpuV`t1hk#lDk+F5dDnK<;a-6&lgf4{x_t(1=9m-5r6<8vY# zcegst4|&Dxk=b}6{h2^R;bDVvb&j$V^W-9C^4$2oSh6kQK6^*P*RKcX&(7X6&#U%F zo!Rd+r&Fs~Oc<0L3^p%qjCX&3e}059XZ_8+zaQ`2yLbN5EL z=658WPyTew!Gn|OfpNL|1qC6Y6I{nTjd$PuAsi=EI^nTF52NE1N3RGm2Nos=hjONE z0!sOjmNU<;J8?%ZarXDsj7h39te>(gY>o_A%NDHDG^_6ziyj}(iis(o*0KfOU*6p< z{MUlaNG3K4m{hON?c(I-r<*GDeyVfUburz4-mA6LQD{lp{doixv_U5;Nw|9kwwY0(J z6VcP=dMtHtY)D+?LO*Zd6{dY5F z$%eYG=Dhkk_iXIZYMbA7a?;J&^SAyyj}2KJjIOLz&-NKZ*8~TzH1xPc09`TIi8}l$9a8jgh|>pCWp^a=co2Aw2hK4(-!?2z1Hma35on0g_oRGp7TnG zt1eSM%9D6IP+D)g<5exGty2F!{M|2~RU6Bgz~F6vCF{9*%=aL-j+)Mlhm&jm$+SOI zU_H2O^7`A`-!6T{(OBDgWW~2VKWq{hblA>J723=)K|^vghth&xht=EjH5J2UUABAf zyl$}i+uaF_TTVG#nYsE5&$m7Q<9K7;qE6K@z1hmQRK}>?iDO2dVucjn>o07)3fie{ z4B2Oc3!6_cG<+AicR}rXZCZrWlEugN9=pI`zangVO=%YU^U&B0D>ElC?i6GErOmVa z9jjvk=foG!c*`@_ZaMe=YWDZ01g-|b*D+DsnQyQkIQZY5r$MPfa^u0XH}AdT{iWH) dmhg}Dz|u2oKljg3Vqjok@O1TaS?83{1OOwB$?pIF literal 0 HcmV?d00001 diff --git a/resources/multimc/32x32/resourcepacks.png b/resources/multimc/32x32/resourcepacks.png new file mode 100644 index 0000000000000000000000000000000000000000..c14759ef7e92827de9587c21bdc16d467ed4aa88 GIT binary patch literal 2818 zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I4mJh`hT^KKFANL}Y)RhkE)4%caKYZ?lNlHo zI14-?iy0UgJiyrPWVRhhu&lr_9i$hG+kefO%fP^S!PCVtB;xSg>9qy1r8AG)@4sKU z`}?!E_amv`QH`xpoNOjSpP4->P?Bz3={S^(t}K z{OwbJeb{;K(A3y>|91F&-qfFRWKpPUi-1;t$ioStF`}A&g#^|SKY2pnzq5w{ME+Xxpz`rY{ZVQw3y&C25V(-5@M zMQ?g?QPHFltFt$5NE}U?7_`#GXl97IyO;c_zcw#l{JgcBK{()m{nlm&8L5Vr}^)w36<=R(;4#jTQhsTb<)gx`zEF;_VgaT!v-!AZ9CR^ zFAZ84wDN%k-@NA!f7=C$2(~3&ojK*pw{Met)H;tQCEYa-FKK7leALgI(`5eRN`XO$l8crnuDQdg-*d89v+o z&lPoFwZ(~d#)|4~8xC4;<&1Yyh~U+EClmYW+4rk||A$uArT3S85V-fFLi9%IN1o;t z>-cWo=&;O}>%110Wo^abJ2^zlH9udUVb(H1SHY}5=`zyA_o^P;X0MX_dDj2)-<&P8 zRwXTE{2g{FeCE5x=tgaZ6~QNuy#4-dMI&R*0meI;s~NuOtY+w&QuD5neaDZ*@^hK> zSdVwHIDpnF-C?LQ&u{mVWJ^>XOVU$!J|$_{%2gXN|7 zbGObdmkY0Z9X)4jmFcWyi~=l-42GxO{c9Umn4D3+eyaY?H{s-Fz4x77dDbwTSkCqB!qVR4?6OSm!$F*}UQ)Mjb!^{u zsp_Pv&c7q-9%Ur~@$vo3GL0X2t6&i> zJ7>PiUk>Zt>vo@OFXa@7b0*-FeJ!Z1|zn@0qUHmbDK3rpmo4PTh)Iq_+G} zI@6XXrh9+ihtBiY{(ie{fA>fC%kQNPy;G<>R&o5r$>%;xFG(E;{r*9p=^9stxRiJp&wAH-oqJ!;TwEOgE_U~~&&x8qB6QlO zY%bMSu`01XWZTlE6tZN3g@`uS;SC07EP^%*1i346IL|+@d8Kf(=KHlrPoJxK-23@` z+x<*w(X~wbES6vP-Kwz7@}f(9%Ob~eA@+LUcZ4t*(ryP_iUn;Bc%h-%v8Y3%faA3Lj297?1m4&GP0``7;cQthV%C&WTYGj|^6^9I^D3Xs zH=gOUG(h9Qu6JiNITT*&H(jYJx$9u=Q*u}(&xPZE?x&l=JC;7K_$IM$va73I24_l+ zU0TwSUw?mn^>#8you3e5SYE`*7q$D**RO>QHG1U_F1pL#opb)VrdYQz`*|OMwdIXr z!MqOZ*#gtWPNW@MA>#L7>hTZSnM~_DoP;uYMb`8i-n$lNJ;Cek482$7qJIJoUS4>- z_LuNyx$TcW-Z)lqM@mL2Xm|Phf9EbPc0d04r_Ix%NQJrO~ zxpc+MS-f#|Kc7yH-k$gO+>s+JKWpTU7d~UV_{nvH*y7o0LB@i!Jl8%AIx+Xix&BAf zjuo8BJk@t@Mz!71q=U7eKRlE_{8C+M!{J5q&xdc#%Hrkc|DRD%@WH`sw(9iLXEW>? zCa5iXJO9FxwkteK(iUX0nO4pF_;LG2?!`CO9jw^Gw)@fN)#>x^zWI6YUpcSBmbWpM zlMA&1pZL7z<>8qkU;pQ0{<6!NQ~j3DoH1j@#k!>;iyk(wcyeFKR9JJh&k@}X-jb)1 zG^ai(ouaL{yX@_)x*s1N=I`0@-Ieuf@y{t=OBO!(_T%5P+cD<$)%Q28ao)Oh>vS_y z(^3w_2|-Fr=SX@Sx^Z*Gng2p8jCBH!Sgk&)ZdVk)EGYo{rz(8`S)`^ zR^MV^*v5KL(_ZvtiB(bT_ui+cr^m0KGRaGG$rKjHhUb+#8eK&y0_2Vuo>$HItrxdu zdXCxa+`GHJ9z581kk`8GjmDXabAmVR|9lw^~{MGx2~Sn+y7_Rx6;>kGjcLKI#-n}ch73 zTCKn5!;Rp{lmFklckyH4`OmLpjxUVS6Yf45;1wvF5Pj(2!ny0efB$Y@@#MqA|B{lD zn){?LKeB(YQ13_6l%ONGZyU~@eew0H3Da1e7SzmN5O6?J_NZkU59=Run=diNpZiK* zuiLS9_3JgND?@@N2NfT`{CMWWg%7WPdt06PyHj}adY8ZuCZ+@Ido*Y7<7ZeZ{$L6J zL{ZmS^G`3letq%T`TjW}%5HuC z{4;3fr!*_uvL!Kc8x`%ZnqO8(n&zu-ntE|cYw%6B&F>bkO#e}@K4~HA@tg^785kJ+ zOI#yLlJj$OQ}ap~9Ft2j^Ye-o(lT>$6q56E@{1Ibit@{gQ;QVJGxJjN%N5d!@^ckD zlk@Ww+!J$hQj01TGD=Dctn~FWlk@Y^6La*E^K)M8J&_?l4_M)l$uzQ z%3x$*XsByop=)FqVrXJzVqj%tsB2(mWnl1Rb^bOK4Y~O#nQ4`{HB9|>9n{)o@O1Ta JS?83{1OSu1VN(DA literal 0 HcmV?d00001 diff --git a/resources/multimc/64x64/plugin-blue.png b/resources/multimc/64x64/plugin-blue.png new file mode 100644 index 0000000000000000000000000000000000000000..24618fd0b4d7128c97ba8d9bab538a60976327aa GIT binary patch literal 4406 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�I!nz{Q-jK8_Ex9lZek7vPFS9Sy`%Y9zs+p>WF;7S+Q8_DxlGnRg{ znUS_x=8dnygS0GB!K1s6GL+r=)>v-y{)*Ys6^bl!>q0VS2Zg9A&7UdW^HBc$d41*u z7K#s21Y%^?gdDs1JyA?-n!5JuEjMRZ#lBmiKJjt()mQTSU+&VsH+RdQXIt;7H`wor zUb%bru`_<|7ybXIBs} z`K>DpW?cMgW3uGV-`xs7<`)NEsm#iF;qHIs_5W`Tx$=_R*D&AKeSLv>+u!u{yWjnH zJMhy{u|i9Csj#uckG)<`Kg##@{(ZhdKw{tPb!#4Jwe4NQHht5YlNH{!^(#Gp+AUfg zUU=}k;nJ^3*JoUF)7*Zw^}q%J2`MQihB-54AKqzD^S?Sc*nQs%i@D{s@yplRF-(}g zIOF5%t+yVBD!OIg&5H?ICf(=hetb(*!TOlSxR{m_nF&F!Cnp5X$}VP6(7Y%i(^7J` zOGQd%vQV@%FORGhOZ9mg(rd z`THEu(OGc&<$_cmvEG?h_ul^7r08-Z=~>PEj&&KeYqNWHuMe`klDKT$>qWQo7T?WF zR^zzPWxW0bLsEp-gvV31&bqej-)ctPl4)JdQ<^fjZc@>;Dd+ojX{nB3@LaxilFZ#6 zd!OxcXK&$%I^*_ilPX(-f7632ClxFz_vgOf+Rh!oPzuKsF!Em^7c_08|eN;Uhh-*gicJ1oF=@x=LCZ^cCduP0yAa(CcZz{+rZ z_ucT=or3q#1ZsB7z9 zYRuZsW$mn{DLR`|^6lkBi@6r3wsZyMCNJY*kZqgb_0{g;UrkjP^Qs8XOD5~CJlAu- zSS@yO)7p(wSa=uAZa5zvd{uMp`k71SKNC2(hV4n%((|=qv1fR?IoKSWJKi#GE@{!Y zEA1oAzAM0wi$N=8UV2)~nL?2aGyCA6eG`*IR-R>868DsmQ%_U9_xK(ORo-J?I453e zc_HRe7uzB=*;e$HKvMClyMN16EKZQ@iedb;>eIdZ{_RH(Qm#>KwDc zl9wN*b}%@;Cd!Eb;oyf7*F-A~tif6keWaYCJJjF`~J5)@+rtb6 z>7#cyly|0}pWnR+Y<1#hFRr<|j`Q)OJSoqWSNwIoJ0BP5xnI1~+*ceR znCtOhLO_Mpr7-2$q@EQiEIZ$a&z>!BLxQfHPVSOb wPFp>)3zy9o;#~RkQ&o(`!*jMqjDPIkcBh9vw8?(Oz`(%Z>FVdQ&MBb@0L8>(yZ`_I literal 0 HcmV?d00001 diff --git a/resources/multimc/64x64/resourcepacks.png b/resources/multimc/64x64/resourcepacks.png new file mode 100644 index 0000000000000000000000000000000000000000..fb874e7d39497f099f77950aeb115aa2fc642d9c GIT binary patch literal 6805 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 BE^Yt- literal 0 HcmV?d00001 diff --git a/resources/multimc/multimc.qrc b/resources/multimc/multimc.qrc index 1df22c29c..887e94ac5 100644 --- a/resources/multimc/multimc.qrc +++ b/resources/multimc/multimc.qrc @@ -102,6 +102,30 @@ 32x32/status-good.png 48x48/status-good.png 64x64/status-good.png + + + 16x16/plugin-blue.png + 24x24/plugin-blue.png + 32x32/plugin-blue.png + 64x64/plugin-blue.png + + + 16x16/plugin-red.png + 24x24/plugin-red.png + 32x32/plugin-red.png + 64x64/plugin-red.png + + + 16x16/plugin-green.png + 24x24/plugin-green.png + 32x32/plugin-green.png + 64x64/plugin-green.png + + + 16x16/resourcepacks.png + 24x24/resourcepacks.png + 32x32/resourcepacks.png + 64x64/resourcepacks.png 16x16/refresh.png