ModPack Manager (Not Functional/Discontinued)

Actually these patterns are pretty easy. :slight_smile:

Like if you use atom as an IDE it has a plugin specifically for finding broken plugins, it just work be disabling half the plugins and restarting, you tell whether it still happens or not, if so it re-enables those and disables half of the prior enabled half, if not then it re-enables half, then it just ā€˜remembersā€™ the half itā€™s working on as itā€™s next full test set to touch and repeats until only one remains. An automated way to do this would be very useful for modpack authors.

Oh?

3 Likes

ā€œOvermind just read versioning system and missed the entire other partā€.
Overmind just to tell you: I donā€™t have the knowledge to self implement exactly that kind of system. Neither do I have the time left to do it. (And no its not a simple thing for me)
Idea is i keep track of changes so people can export a ā€œchangelogā€ a versining system is not in the thinking process because I would have to go into that system with knowing exactly how to pull it off without issues.

Loving to tease

3 Likes

With pull-requests, right? Seems awesome, that would be a great help for new users.

As long as it is gzipped and not encrypted Iā€™m good.

4 Likes

Yep this, someone else could implement the mod debugging binary testing then. ^.^

4 Likes

Hmm, I almost said challenge excepted, but then remembered why I hate programming :slight_smile: After starting to adding one module, testing it, checking out a few key things and using version control to commit after each seemingly successful addition, Iā€™ve had the chance to find out what mods break things, suggest bug fixes to the authors and getting working stuff back.

So @OvermindDL1 binary testing after the fact is possible, Iā€™ve done it many times, but it doesnā€™t beat doing it right the first time. If you do want automatic integration testing, which is what weā€™re talking about, then youā€™d better look into some of the available pipelines, perhaps add some testing scripts that can simulate user interaction etc. Iā€™m a very lazy person so Iā€™ve always preferred to use whatā€™s already around rather than reinventing the wheel. Some people suffer from the ā€œnot invented hereā€ syndrome, but I prefer everything that saves me programming.

Anyway, I have a couple of UI suggestions, now I know youā€™re working on a revamp, so this might be something you already know, but here goes:

  1. When I find a mod in the local repository (shift+A, local repository) Iā€™d like that double-clicking it would open the window for selecting version. This opens if you press enter, but I have to say I often forget that extra step and have to go back because the selection windows closes as I havenā€™t added anything.

  2. When I have added the mod Iā€™d like it to be downloaded immediately as it is now I frequently forget to download, and I actually did three or four tests of modules which I found faulty because I forgot to the update. That was an edge case as I also had forgotten to remove the faulty mod first, so every mod I ā€œinstalledā€ seemed faulty.

  3. Iā€™m using a mod called Online UUIDs. It had a bug in the 1.0.0 version which made SpongeForge bail out of modloading. Anyway, it was fixed yesterday, version 1.0.2 is out. However, when I do ā€œSearch for modupdatesā€ itā€™s not added. The new version which I then downloaded manually doesnā€™t register with the mod in the local repository, so I constantly get the old version of it if I do ā€œInstall missing modsā€. One or two other mods have been updated since the Online UUID one. Any thing I should ask the mod owner to do for better registration? Anything that MPM might do?

  4. As for duplicates, if I change a mod to ā€œdisabledā€ when MPM believes it is not, it will download it again. I donā€™t know if itā€™s a good idea to check if a mod exists as disabled when it should be enabled, and vice versa when adding ā€œInstall missing modsā€. In my own script I decided to assume nothing about the state on the disk, and therefore do (non intelligent, brute force only) renaming based on the state I wish it to become, so if a mod I need enabled already is enabled, my script will rename it to .jar anyway, because thatā€™s quick enough for a human, and I know what the goal of the human is (have it enabled). Of course if it was in a larger server with 10s of thousands of files Iā€™d do it intelligently, but with files reaching perhaps a few thousand, the time saved in logic handling is worth it.

  5. Iā€™d like the sorting to be clicking on the column headings, as thatā€™s a pretty common way of doing it.

  6. I think you outlined something like this, but being able to add more permanent info for Non curse mods will be great. Especially download links, tbh I havenā€™t checked the output from the manager, so I donā€™t know if you output automatic download, instead of just packing all the binaries in one big file, but I think the former would be best for most distributions.

  7. The buttons for doing things are a bit haphazard, in my not so humble opinion, and Iā€™d like some of them to just do stuff on one selected mod instead of all of them (ref 3 and 4 above). In general operations like ā€œenable, disable, delete, update, track, untrackā€ would fit better in a context menu which took the selected mods as context. I also donā€™t understand a couple of the buttons, but thatā€™s probably because I have been lazy and not read the whole thread here :slight_smile:

In general, all operations that takes a selection as an argument could do with context menus, and not fail if one in the selection fails. I hope this makes sense?

Just what irks me, which of course is not a representative sample :slight_smile: as you probably can tell, Iā€™m not very fond of programming myself (though I am a professional), but I am very opinionated about UIs and functionality.

EDIT:

And praise, the ā€œCurseForge Linksā€ functionality is sweet, that I just have to copy the links for MPM to add it really makes it fast to do some operations. Iā€™ve never had a more pleasurable experience with copying to clipboard (and not having to paste manually) :slight_smile:

I donā€™t think Iā€™ve had any other program do this before, is this an innovation from you? Because now it feels like a lot of software should do it just as painlessly as youā€™ve made it here.

Ah, no download managers have had it, but still, it is nice to rediscover it.

4 Likes

And furthermore, I do some profiling, just a stopwatch, some FPS and TPS monitoring, so I can decide if the functionality/content is worth the extra drain on processes. Iā€™ve got four kids, they have laptops that arenā€™t that powerful, so I have to carefully choose what adds to the fun without draining too much load time, while at the same time growing with them as they mature. I also like to play with my brother-in-law and one of my kidsā€™ friends sometimes joins.

So, nothing wrong with doing a stepwise exclusion of where the fault is, it is very tedious, and in the end it takes more time than making informed decisions one by one.

4 Likes

Now Iā€™ll ask, what is ā€œMod sidesā€, I searched this page and googled it and Iā€™m none the wiser. In Norwegian (and Danish/Swedish) ā€œsideā€ means page. I had to use a translator and found it is the same in German (meine Deutsch sind schlecht, vor allem mein Wortschatz, aber ich verstehe ein bisschen). Aside: Wortschatz is such a wonderful word, I think a similar word construction is used in the Sami language for vocabulary, I was delighted to learn it when I looked it up just now.

4 Likes

ok this is like exploding right now. I kinda want to hold back on what exactly I have done because this is supposed a to be a surprise release. Like BAM here are a bunch of improvements.
So I hope that you donā€™t mind that my answers are vague.

Thats the thought as of right now but no plans made there yet.

Well you can compare it to MCs NBT, but with better base compression and close compression to json in a zip file. (Around a couple hundred bytes worse then json)
(Link to info. But this info wonā€™t help you with MPM because I donā€™t follow that standard, because I have way more tag types then it has NBT - wiki.vg)

Good luck downloading 0.3TB and scaning for ā€œModFilesā€ to find 1 single character that defines if a mod is clientOnly or server only or both. You litterly need to scan the ā€œClass Filesā€

Its still a button but a lot more intuitive and no longer requires as many steps. (If you see the UI you see what i mean) technically its a double click, but its selection & hit install.

Oh you are not the first or the last one who requests this feature. Its on the todolist.

Thats because of the webpage that I am using that does the scanning of curse for me. In the new version thats completly dropped and as soon its visible on CF my tool can be able to find it.
Guess why I am rewriting this because the page is so unrelyable.

Yep I know, already have plans to fix it.

When the UI was designed a friend suggested that too but when we tried it the sorting had issues/worked not as I wanted it or something like that (honestly canā€™t remember the reason) so I decided to go with a control panel on top.
(Remembering oh yeah it was that you could only have 1 sorter type and I needed 2. The main Sorter & the condition sorter. So that stuff wouldnā€™t look so badly. That wasnā€™t possible with the system you suggest). If you have a better idea how I can sort 2 things at once while keeping the user in control like my system does I am happy to look into it.

Well permanent is not possible because if you delete the data its gone. Outside of that, yep can agree. I already made improvements to that system where the user (if the mod had provided the data) does not have to type in info at all. Unless my tool can not find the info because its not present. (that will be only a requirement for old mods and not new because ā€œinfoFilesā€ are now required for mod loading)

Every button I did has multiselection support o.O, My idea was adding keybindings for these actions. Not implemented or tested out at all. Just a idea. To hold movement. (And before you ask there will be a keybinding config yes)

Yes I get it but I donā€™t want to spam menus for everything. It reduces flow and makes stuff more annoying. (Adding mods via repo as your example) I will most likely will do keybindings for a lot of things by default and havnā€™t thought of the other side yet.

Everyone has his own tastes. I love what I am doing and hope I can make a living of it ^^"

Well when I designed this tool I took inspiration from JDownloader2 (Its somewhat of torrent but download only) which has this exact feature and I remembered how I loved this feature because I just could interact with my browser and it would do shit for me. So yes and no it was not and was my idea.

In ForgeModding there is a @Interface called ā€œSideOnlyā€ that allows you to define if a function/class/field is either requiring clientOnly information or serverOnly information that isnā€™t on the other respective part. With: Side.CLIENT & Side.SERVER
So I thought when naming the ModSides take a inspiration from there. Naming things isnā€™t my Strong suit so yeah its a shitty name.

I hope that answers some of your questions
And I hope my vagueness wasnā€™t to bad.

3 Likes

Edit: If you have discord we can move this discussion to private then I can provide a bit more info.

2 Likes

Different thing, the testing Iā€™m referencing is functionality testing inside the game, not crashing or so.

3 Likes

Going to take a break from this project. (I only worked on this for a long time)
Other projects need some attention too and I kinda get exhausted of this project.

So I am gonna take a 2-3 week break from this project and then finish it up.
That way I donā€™t come into this rushing ā€œThis needs to be finishedā€ state.

4 Likes

Hi, I have a question about usage of this program. I have been developing a modpack via Twitch launcher for a while, but Iā€™d like to start managing it through Modpack Manager instead. Is there a way for me to add the working modpack files that are already on my hdd in the Curse launcher folder? Or do I have to create a new Modpack Instance via your program and copy the files over manually?

My apologies if this has been answered before, I didnā€™t see anything in the linked video and a google search didnā€™t help much, although itā€™s possible my search terms were bad. Thank you for your time!

4 Likes

If the curse launcher folder is like a minecraft instance you can link it up by using ā€œimport custom launcher Packā€.
If that does not work then you have to manually drag it over. But it should work.

4 Likes

Thanks for the response! I want to be sure Iā€™m doing this correctly so please bear with me.

I selected File > Add Modpack > Add Custom Launcher Pack. I navigated to my Curse instance folder, and chose ā€œForgeā€ as my ā€œMinecraft Versionā€ before hitting ā€œImport.ā€

During the following process, I received this window: https://i.imgur.com/GmYxwEl.png

It refuses to import the full modlist when I hit ā€œOkay,ā€ it tells me that the following URLs (all of them, which are ā€œnullā€) are invalid. Must I manually add in all of the mod URLs? I donā€™t mind doing a bit of setup if that is the case, but before I dig up links to all 200 mods, I figured Iā€™d make sure I was doing it right, first. xD

Thanks again for your help!

3 Likes

Ok the issue with ModpackManager is that it needs to grab the info of curseforge.
Thats why the software asks you to ā€œPreCacheā€ on the intial startup. If you dont do that then it does not know any mods. So what you can do is.

Options > Repository > Open ModRepository > PreCache and load curseforge data.
Then wait until its done. (Make yourself a tea or something) And then it should able to find mods mods.
It wont find everything because not every mod is on curseforge and also not every version still exists on curseforge.

If you dont want to do this look up the links of the mods and type them in. (You can also click ignore mod so it wont ask you for links but modnames)

This problem will be solved in the next larger patch (still on its way) where precaching is mandetory and will be done on the instaltion of the software. But thats at least a month or two away before I am finishing it.

I hope it helps.

3 Likes

Thanks for the response! Thatā€™s weird, I precached the recommended 300 pages upon initial setup, I apparently have 3452 mods in the repository. I guess it just didnā€™t grab the ones Iā€™m using? Iā€™ll go precache 600 just to be certain.

Is there a way to limit it to only grab mods from the version I intend to use? Or would that not be possible/worth doing?

And no worries! I can do it by hand if need be, itā€™s no biggie. :slight_smile: Take your time, thereā€™s no rush whatsoever.

Edit: After having precached 600, itā€™s still prompting me to link to most of the mods. Iā€™ll do it manually, but I figured Iā€™d mention. :slight_smile:

Edit 2: Not sure if this means anything, but I decided to check the repository (now at 3769 mods) for some of the ones itā€™s prompting me for, and at least one of them IS there, and is a version currently on Curseforge (actually additions r150, if that matters). So perhaps Iā€™m importing things incorrectly or something.

4 Likes

Helpā€¦I canā€™t precache modsā€¦i keep getting this error:

org.jsoup.HttpStatusException: HTTP error fetching URL. Status=403, URL=https://www.curseforge.com/minecraft/mc-mods/world-gen?filter-sort=3
	at org.jsoup.helper.HttpConnection$Response.execute(HttpConnection.java:760)
	at org.jsoup.helper.HttpConnection$Response.execute(HttpConnection.java:706)
	at org.jsoup.helper.HttpConnection.execute(HttpConnection.java:299)
	at org.jsoup.helper.HttpConnection.get(HttpConnection.java:288)
	at org.jsoup.Jsoup.parse(Jsoup.java:183)
	at speiger.modupdater.tasks.repository.GatherMCVersionsTask.run(GatherMCVersionsTask.java:23)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
	at java.lang.Thread.run(Unknown Source)
org.jsoup.HttpStatusException: HTTP error fetching URL. Status=403, URL=https://www.curseforge.com/minecraft/mc-mods?filter-sort=3
	at org.jsoup.helper.HttpConnection$Response.execute(HttpConnection.java:760)
	at org.jsoup.helper.HttpConnection$Response.execute(HttpConnection.java:706)
	at org.jsoup.helper.HttpConnection.execute(HttpConnection.java:299)
	at org.jsoup.helper.HttpConnection.get(HttpConnection.java:288)
	at org.jsoup.Jsoup.parse(Jsoup.java:183)
	at speiger.modupdater.tasks.repository.PreCacheTask.getLimit(PreCacheTask.java:194)
	at speiger.modupdater.tasks.repository.PreCacheTask.run(PreCacheTask.java:44)
	at speiger.modupdater.tasks.TaskManager$1.run(TaskManager.java:95)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
	at java.lang.Thread.run(Unknown Source)
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
	at speiger.modupdater.ui.mainUI.UpdaterUI$62.run(UpdaterUI.java:1697)
	at java.awt.event.InvocationEvent.dispatch(Unknown Source)
	at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
	at java.awt.EventQueue.access$500(Unknown Source)
	at java.awt.EventQueue$3.run(Unknown Source)
	at java.awt.EventQueue$3.run(Unknown Source)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
	at java.awt.EventQueue.dispatchEvent(Unknown Source)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.run(Unknown Source)

i already tried disabling firewall just incase that affects it but still same errorā€¦

3 Likes

Error code 403 is ā€˜forbiddenā€™, usually happens if tried accessing curse too much and/or too fast in a too short of time period.

3 Likes

Curse uses cloudflare now so guess what, People like @Speiger get blocked for DDoSing XD

3 Likes

Yep Curseforge reduced the amount of Accesses that you can have per webpage drastically.
So you have to wait a day or two and CF will release the lock that it had.

Worst case if that comes more and more I have to remove MPM from this page because it will just not work anymore.

I do not know if MPM fixes that issues by reducing the check amount drastically because of how much I may have to reduce it so yeah.

TL:DR wait a couple days it fixes itself over time. If not then there is right now nothing I can do.
(Like litterly I canā€™t do anything about it)

4 Likes