Giter Club home page Giter Club logo

mod-director's Introduction

ModDirector

Automatically download mods with ease!

About

ModDirector is a small program and mod at the same time, which can be used to download files from the internet in a managed and controlled way. Sometimes it is not possible to ship files with a binary distribution due to copyright issues, but it is often possible to download these files and add them at runtime or first start. This is exactly what ModDirector does!

Overview

Installing and configuring ModDirector is simple, just drag the jar into the mods folder and start minecraft. Currently, we only support Forge officially, but more are set to follow. Technically, every mod which just relies on launchwrapper is currently supported, since ModDirector itself is independent of the target platform.

Configuration

This is just meant to give you a quick overview, a more detailed guide can be found in the wiki.

ModDirector reads configurations from a config directory, which folder exactly depends on the platform. For Forge, it is config/mod-director. Configuration files should go into that directory, each of them ending with one of the supported suffixes.

Using ModDirector in mod packs

You don't have to ask for permission, but it would be nice to credit us, but also the authors of the mods you are downloading.

In case you are creating a pack for curse forge, the mod can be found here

mod-director's People

Contributors

janrupf avatar tclproject avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

mod-director's Issues

Improve download validation

Currently it is only possible to specify one hash which should be checked against, and if the JVM does not support that algorithm, ModDirector crashes. Since this is not good, the new format should look like this:

"hash": {
    "<algorithm>": "<value>",
    "<algorithm>": "<value>"
}

The first supported one is used, and if it doesn't match, the others are checked too. In case of a partial match we should notify the user and ask what to do.

After the change is done, this wiki entry needs to be updated.

StopModReposts API is outdated, and broken

Just realized this mod uses the older https://api.varden.info/smr/sitelist.php?format=json API to get the site list.
This URL still exists for now, but probably not for long, it already returns an empty list instead of the old list.

I would recommend you to use the new https://api.stopmodreposts.org/sites.json API instead.
Note that you also use the old rating system, which doesn't exist anymore. It has been replaced with a Notes/Reason system.

I could possibly make a PR to fix it if you want, i'm just a bit lazy since i just released my mod on 3 different platforms xD

WARN: Failed to find deobf tweaker

I have this line in debug.log:

[main/WARN] [ModDirector/ForgeLateLoader[Launchwrapper]]: Failed to find deobf tweaker, injecting after deobf tweaker at first place

What is this means?
Is all Mod Director components still working fine?

Crash when not setting injection options

When not setting the injection options, the mod crashes

java.lang.NullPointerException
	at net.jan.moddirector.core.manage.InstalledMod.getOptionBoolean(InstalledMod.java:24) ~[mod-director-launchwrapper-1.0-SNAPSHOT-all.jar:1.0-SNAPSHOT]
	at net.jan.moddirector.launchwrapper.forge.ForgeLateLoader.handle(ForgeLateLoader.java:236) ~[mod-director-launchwrapper-1.0-SNAPSHOT-all.jar:1.0-SNAPSHOT]
	at java.lang.Iterable.forEach(Unknown Source) ~[?:1.8.0_241]
	at java.util.Collections$UnmodifiableCollection.forEach(Unknown Source) ~[?:1.8.0_241]
	at net.jan.moddirector.launchwrapper.forge.ForgeLateLoader.execute(ForgeLateLoader.java:67) ~[mod-director-launchwrapper-1.0-SNAPSHOT-all.jar:1.0-SNAPSHOT]
	at net.jan.moddirector.launchwrapper.ModDirectorTweaker.injectIntoClassLoader(ModDirectorTweaker.java:49) ~[mod-director-launchwrapper-1.0-SNAPSHOT-all.jar:1.0-SNAPSHOT]
	at net.minecraft.launchwrapper.Launch.launch(Launch.java:115) [launchwrapper-1.12.jar:?]
	at net.minecraft.launchwrapper.Launch.main(Launch.java:28) [launchwrapper-1.12.jar:?]
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_241]
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_241]
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_241]
	at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_241]
	at org.multimc.onesix.OneSixLauncher.launchWithMainClass(OneSixLauncher.java:196) [NewLaunch.jar:?]
	at org.multimc.onesix.OneSixLauncher.launch(OneSixLauncher.java:231) [NewLaunch.jar:?]
	at org.multimc.EntryPoint.listen(EntryPoint.java:143) [NewLaunch.jar:?]
	at org.multimc.EntryPoint.main(EntryPoint.java:34) [NewLaunch.jar:?]
[23:50:04] [main/INFO] [STDERR]: [org.multimc.onesix.OneSixLauncher:launchWithMainClass:199]: Failed to start Minecraft:
[23:50:04] [main/INFO] [STDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]: java.lang.reflect.InvocationTargetException
[23:50:04] [main/INFO] [STDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]: 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[23:50:04] [main/INFO] [STDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]: 	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
[23:50:04] [main/INFO] [STDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]: 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
[23:50:04] [main/INFO] [STDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]: 	at java.lang.reflect.Method.invoke(Unknown Source)
[23:50:04] [main/INFO] [STDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]: 	at org.multimc.onesix.OneSixLauncher.launchWithMainClass(OneSixLauncher.java:196)
[23:50:04] [main/INFO] [STDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]: 	at org.multimc.onesix.OneSixLauncher.launch(OneSixLauncher.java:231)
[23:50:04] [main/INFO] [STDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]: 	at org.multimc.EntryPoint.listen(EntryPoint.java:143)
[23:50:04] [main/INFO] [STDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]: 	at org.multimc.EntryPoint.main(EntryPoint.java:34)
[23:50:04] [main/INFO] [STDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]: Caused by: cpw.mods.fml.relauncher.FMLSecurityManager$ExitTrappedException
[23:50:04] [main/INFO] [STDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]: 	at cpw.mods.fml.relauncher.FMLSecurityManager.checkPermission(FMLSecurityManager.java:25)
[23:50:04] [main/INFO] [STDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]: 	at java.lang.SecurityManager.checkExit(Unknown Source)
[23:50:04] [main/INFO] [STDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]: 	at java.lang.Runtime.exit(Unknown Source)
[23:50:04] [main/INFO] [STDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]: 	at java.lang.System.exit(Unknown Source)
[23:50:04] [main/INFO] [STDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]: 	at net.minecraft.launchwrapper.Launch.launch(Launch.java:138)
[23:50:04] [main/INFO] [STDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]: 	at net.minecraft.launchwrapper.Launch.main(Launch.java:28)
[23:50:04] [main/INFO] [STDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]: 	... 8 more
[23:50:04] [main/INFO] [STDOUT]: [org.multimc.EntryPoint:main:37]: Exiting with -1
[23:50:04] [main/INFO] [STDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]: java.lang.ArrayIndexOutOfBoundsException: 5
[23:50:04] [main/INFO] [STDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]: 	at cpw.mods.fml.relauncher.FMLSecurityManager.checkPermission(FMLSecurityManager.java:21)
[23:50:04] [main/INFO] [STDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]: 	at java.lang.SecurityManager.checkExit(Unknown Source)
[23:50:04] [main/INFO] [STDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]: 	at java.lang.Runtime.exit(Unknown Source)
[23:50:04] [main/INFO] [STDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]: 	at java.lang.System.exit(Unknown Source)
[23:50:04] [main/INFO] [STDERR]: [java.lang.Throwable$WrappedPrintStream:println:-1]: 	at org.multimc.EntryPoint.main(EntryPoint.java:38)
Exception in thread "main" 
Process exited with code 1.

Add forge 1.13+ support

Well, if fabric support isn't possible at the moment it'd be great to at least have support for forge in the new minecraft versions.

server crashes when running the mod

I just tried out if the mod would also work on a server, as with the upcomming feature of live modpack updating it'd be a pain for any server admin if the clients update themselves without the server doing so too. Turns out it doesn't work...
Here's the log file
latest.log

grouping with more than one mod selectable

In case a modpack has a high number of optional mods it would be great if they could be grouped into categories for better overview. Like the optional group feature but with more than one item selectable.

Injected core mods not added to classpath

Coremods which are being injected via mod-director are not added to the launch classpath, causing forge to not find the loading plugin class.

Coremod Plugin: Unable to class load the plugin futurecommands.asm.Plugin
java.lang.ClassNotFoundException: futurecommands.asm.Plugin
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
    at net.minecraft.launchwrapper.LaunchClassLoader.findClass(LaunchClassLoader.java:117)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:348)
    at cpw.mods.fml.relauncher.CoreModManager.loadCoreMod(CoreModManager.java:460)
    at net.jan.moddirector.launchwrapper.forge.ForgeLateLoader.injectCorePlugin(ForgeLateLoader.java:351)
    at net.jan.moddirector.launchwrapper.forge.ForgeLateLoader.handle(ForgeLateLoader.java:241)
    at net.jan.moddirector.launchwrapper.forge.ForgeLateLoader$$Lambda$34/707161353.accept(Unknown Source)
    at java.lang.Iterable.forEach(Iterable.java:75)
    at java.util.Collections$UnmodifiableCollection.forEach(Collections.java:1080)
    at net.jan.moddirector.launchwrapper.forge.ForgeLateLoader.execute(ForgeLateLoader.java:67)
    at net.jan.moddirector.launchwrapper.ModDirectorTweaker.injectIntoClassLoader(ModDirectorTweaker.java:49)
    at net.minecraft.launchwrapper.Launch.launch(Launch.java:115)
    at net.minecraft.launchwrapper.Launch.main(Launch.java:28)

combining several optional mods into a single entry

In some cases several mods might need to be installed together, for example if a mod requires a compatibility addon to work with a modpack. To avoid confusion and make it easier for users I think it would be a good idea to be able to group several mod files into a single entry.
This would also help if a config file for an optional mod is required.

custom image in progress window

It'd be great for modpack developers to be able to let their modpack's logo be displayed in the download progress window. Especially when considering that the download of more files could lead to longer download times and many users might not know what that strange window is about.

Continue loading if downloading fails

One should be able to mark mods as optional, so that users can load the modpack even when the download of the respective mod fails.

Example: OptiFine's website is down temporarily, the user should be able to start the modpack just fine and the mod will be downloaded when the site is online again (when the pack is started next time of course).

Add 1.16.4/1.16.5 support?

I'm currently trying to implement it myself, but unfortunately I don't have any experience with forge yet.
So maybe someone can implement it or give me some tips how to do it?

Mod Director dont works for Internet Archive

It would be helpfull if Mod director worked on the Internet Archive page for old downloads that still work despite the page being gone
http://web.archive.org/web/20181020031322/http://10paksmods.net/pmp.html
tried it with the 1.12.2 Versions but it didn´t work
also not with the follow keys

Otherwise all works fine Exscept for curesfore due to the recent change but that is already mentioned in another issue
thank your for the Awesome mod would have no idea what to do without it

MultiMC version 0.6.16-3431


Launched instance in online mode

authserver.mojang.com resolves to
    [18.66.119.38, 18.66.119.42, 18.66.119.35, 18.66.119.37]

session.minecraft.net resolves to
    [35.153.153.200, 100.24.172.95, 34.199.236.154]

textures.minecraft.net resolves to
    [18.66.112.103, 18.66.112.79, 18.66.112.77, 18.66.112.60]

api.mojang.com resolves to
    [108.138.17.3, 108.138.17.41, 108.138.17.109, 108.138.17.100]


Minecraft folder is
DMultiMCinstances1.12.22.minecraft


Java path is
CProgram FilesJavajre1.8.0_281binjavaw.exe


Checking Java version...
Java is version 1.8.0_281, using 64-bit architecture, from Oracle Corporation.


Main Class
  net.minecraft.launchwrapper.Launch

Native path
  DMultiMCinstances1.12.22natives

Libraries
  DMultiMClibrariesnetjavajinputjinput2.0.5jinput-2.0.5.jar
  DMultiMClibrariesnetjavajutilsjutils1.0.0jutils-1.0.0.jar
  DMultiMClibrariesorglwjgllwjgllwjgl2.9.4-nightly-20150209lwjgl-2.9.4-nightly-20150209.jar
  DMultiMClibrariesorglwjgllwjgllwjgl_util2.9.4-nightly-20150209lwjgl_util-2.9.4-nightly-20150209.jar
  DMultiMClibrariescommojangpatchy1.3.9patchy-1.3.9.jar
  DMultiMClibrariesoshi-projectoshi-core1.1oshi-core-1.1.jar
  DMultiMClibrariesnetjavadevjnajna4.4.0jna-4.4.0.jar
  DMultiMClibrariesnetjavadevjnaplatform3.4.0platform-3.4.0.jar
  DMultiMClibrariescomibmicuicu4j-core-mojang51.2icu4j-core-mojang-51.2.jar
  DMultiMClibrariesnetsfjopt-simplejopt-simple5.0.3jopt-simple-5.0.3.jar
  DMultiMClibrariescompaulscodecodecjorbis20101023codecjorbis-20101023.jar
  DMultiMClibrariescompaulscodecodecwav20101023codecwav-20101023.jar
  DMultiMClibrariescompaulscodelibraryjavasound20101123libraryjavasound-20101123.jar
  DMultiMClibrariescompaulscodelibrarylwjglopenal20100824librarylwjglopenal-20100824.jar
  DMultiMClibrariescompaulscodesoundsystem20120107soundsystem-20120107.jar
  DMultiMClibrariesionettynetty-all4.1.9.Finalnetty-all-4.1.9.Final.jar
  DMultiMClibrariescomgoogleguavaguava21.0guava-21.0.jar
  DMultiMClibrariesorgapachecommonscommons-lang33.5commons-lang3-3.5.jar
  DMultiMClibrariescommons-iocommons-io2.5commons-io-2.5.jar
  DMultiMClibrariescommons-codeccommons-codec1.10commons-codec-1.10.jar
  DMultiMClibrariescomgooglecodegsongson2.8.0gson-2.8.0.jar
  DMultiMClibrariescommojangauthlib1.5.25authlib-1.5.25.jar
  DMultiMClibrariescommojangrealms1.10.22realms-1.10.22.jar
  DMultiMClibrariesorgapachecommonscommons-compress1.8.1commons-compress-1.8.1.jar
  DMultiMClibrariesorgapachehttpcomponentshttpclient4.3.3httpclient-4.3.3.jar
  DMultiMClibrariescommons-loggingcommons-logging1.1.3commons-logging-1.1.3.jar
  DMultiMClibrariesorgapachehttpcomponentshttpcore4.3.2httpcore-4.3.2.jar
  DMultiMClibrariesitunimidsifastutil7.1.0fastutil-7.1.0.jar
  DMultiMClibrariesorgapachelogginglog4jlog4j-api2.16.0log4j-api-2.16.0.jar
  DMultiMClibrariesorgapachelogginglog4jlog4j-core2.16.0log4j-core-2.16.0.jar
  DMultiMClibrariescommojangtext2speech1.10.3text2speech-1.10.3.jar
  DMultiMClibrariesnetminecraftforgeforge1.12.2-14.23.5.2860forge-1.12.2-14.23.5.2860-universal.jar
  DMultiMClibrariesorgow2asmasm-debug-all5.2asm-debug-all-5.2.jar
  DMultiMClibrariesnetminecraftlaunchwrapper1.12launchwrapper-1.12.jar
  DMultiMClibrariesorgjlinejline3.5.1jline-3.5.1.jar
  DMultiMClibrariescomtypesafeakkaakka-actor_2.112.3.3akka-actor_2.11-2.3.3.jar
  DMultiMClibrariescomtypesafeconfig1.2.1config-1.2.1.jar
  DMultiMClibrariesorgscala-langscala-actors-migration_2.111.1.0scala-actors-migration_2.11-1.1.0.jar
  DMultiMClibrariesorgscala-langscala-compiler2.11.1scala-compiler-2.11.1.jar
  DMultiMClibrariesorgscala-langpluginsscala-continuations-library_2.111.0.2_mcscala-continuations-library_2.11-1.0.2_mc.jar
  DMultiMClibrariesorgscala-langpluginsscala-continuations-plugin_2.11.11.0.2_mcscala-continuations-plugin_2.11.1-1.0.2_mc.jar
  DMultiMClibrariesorgscala-langscala-library2.11.1scala-library-2.11.1.jar
  DMultiMClibrariesorgscala-langscala-parser-combinators_2.111.0.1scala-parser-combinators_2.11-1.0.1.jar
  DMultiMClibrariesorgscala-langscala-reflect2.11.1scala-reflect-2.11.1.jar
  DMultiMClibrariesorgscala-langscala-swing_2.111.0.1scala-swing_2.11-1.0.1.jar
  DMultiMClibrariesorgscala-langscala-xml_2.111.0.2scala-xml_2.11-1.0.2.jar
  DMultiMClibrarieslzmalzma0.0.1lzma-0.0.1.jar
  DMultiMClibrariesjava3dvecmath1.5.2vecmath-1.5.2.jar
  DMultiMClibrariesnetsftrove4jtrove4j3.0.3trove4j-3.0.3.jar
  DMultiMClibrariesorgapachemavenmaven-artifact3.5.3maven-artifact-3.5.3.jar
  DMultiMClibrariescommojangminecraft1.12.2minecraft-1.12.2-client.jar

Native libraries
  DMultiMClibrariesnetjavajinputjinput-platform2.0.5jinput-platform-2.0.5-natives-windows.jar
  DMultiMClibrariesorglwjgllwjgllwjgl-platform2.9.4-nightly-20150209lwjgl-platform-2.9.4-nightly-20150209-natives-windows.jar
  DMultiMClibrariescommojangtext2speech1.10.3text2speech-1.10.3-natives-windows.jar

Mods
  [❌] athenaeum-1.12.2-1.19.5.jar (disabled)
  [❌] BlockDropsTweaker-1.12.2-2.4.jar (disabled)
  [❌] CraftTweaker2-1.12-4.1.20.678.jar (disabled)
  [❌] DynamicLights-1.12.2.jar (disabled)
  [✔️] EnchantingTable-1.12-1.1.3
  [❌] Fish's+Undead+Rising-1.3.1.jar (disabled)
  [❌] lycanitesmobs-1.12.2-2.0.8.5.jar (disabled)
  [📁] memory_repo (folder)
  [✔️] mod-director-launchwrapper-1.5.1-SNAPSHOT-all
  [❌] onslaught-1.12.2-1.3.2.jar (disabled)
  [✔️] OptiFine_1.12.2_HD_U_G5
  [❌] PrimalCore-1.12.2-0.6.105.jar (disabled)
  [❌] RealisticTorches-1.12.2-2.1.2.jar (disabled)
  [❌] TheBetweenlands-3.8.1-universal.jar (disabled)

Params
  --username  --version 1.12.2 --gameDir DMultiMCinstances1.12.22.minecraft --assetsDir DMultiMCassets --assetIndex 1.12 --uuid  --accessToken  --userType  --versionType release --tweakClass net.minecraftforge.fml.common.launcher.FMLTweaker

Window size max (if available)

Java Arguments
[-d64, -XX+AggressiveOpts, -XXHeapDumpPath=MojangTricksIntelDriversForPerformance_javaw.exe_minecraft.exe.heapdump, -Xms512m, -Xmx3814m, -Duser.language=en]


Minecraft process ID 13936


Using onesix launcher.

[220209] [mainINFO] [LaunchWrapper] Loading tweak class name net.minecraftforge.fml.common.launcher.FMLTweaker
[220209] [mainINFO] [LaunchWrapper] Using primary tweak class name net.minecraftforge.fml.common.launcher.FMLTweaker
[220209] [mainINFO] [LaunchWrapper] Calling tweak class net.minecraftforge.fml.common.launcher.FMLTweaker
[220209] [mainINFO] [FML] Forge Mod Loader version 14.23.5.2860 for Minecraft 1.12.2 loading
[220209] [mainINFO] [FML] Java is Java HotSpot(TM) 64-Bit Server VM, version 1.8.0_281, running on Windows 10amd6410.0, installed at CProgram FilesJavajre1.8.0_281
[220209] [mainINFO] [FML] Searching DMultiMCinstances1.12.22.minecraftmods for mods
[220209] [mainINFO] [FML] Loading tweaker net.jan.moddirector.launchwrapper.ModDirectorTweaker from mod-director-launchwrapper-1.5.1-SNAPSHOT-all.jar
[220209] [mainINFO] [FML] Loading tweaker optifine.OptiFineForgeTweaker from OptiFine_1.12.2_HD_U_G5.jar
[220209] [mainINFO] [LaunchWrapper] Loading tweak class name net.minecraftforge.fml.common.launcher.FMLInjectionAndSortingTweaker
[220209] [mainINFO] [LaunchWrapper] Loading tweak class name net.jan.moddirector.launchwrapper.ModDirectorTweaker
[220209] [mainINFO] [ModDirector[CORE]] Mod director loaded!
[220209] [mainINFO] [ModDirectorTweaker[Launchwrapper]] ModDirector bootstrapped from Launchwrapper!
[220209] [mainINFO] [LaunchWrapper] Loading tweak class name optifine.OptiFineForgeTweaker
[220209] [mainINFO] [LaunchWrapper] Loading tweak class name net.minecraftforge.fml.common.launcher.FMLDeobfTweaker
[220209] [mainINFO] [LaunchWrapper] Calling tweak class net.minecraftforge.fml.common.launcher.FMLInjectionAndSortingTweaker
[220209] [mainINFO] [LaunchWrapper] Calling tweak class net.minecraftforge.fml.common.launcher.FMLInjectionAndSortingTweaker
[220209] [mainINFO] [LaunchWrapper] Calling tweak class net.jan.moddirector.launchwrapper.ModDirectorTweaker
[220209] [mainINFO] [ModDirectorConfigurationController[CORE]] Loading config configmod-directorLapis.url.json
[220209] [mainINFO] [ModDirectorConfigurationController[CORE]] Loading config configmod-directorOptifine.url.json
[220209] [mainINFO] [ModDirectorConfigurationController[CORE]] Loading config configmod-directorpmp.url.json
[220210] [mainERROR] [ModDirector[CORE]] An exception occurred while performing asynchronous work
java.util.concurrent.ExecutionException java.nio.file.InvalidPathException Illegal char  at index 24 web20181020031322http10paksmods.netpmp.html
	at java.util.concurrent.FutureTask.report(Unknown Source) ~[1.8.0_281]
	at java.util.concurrent.FutureTask.get(Unknown Source) ~[1.8.0_281]
	at net.jan.moddirector.core.ModDirector.awaitAll(ModDirector.java212) [mod-director-launchwrapper-1.5.1-SNAPSHOT-all.jar1.5.1-SNAPSHOT]
	at net.jan.moddirector.core.ModDirector.activate(ModDirector.java120) [mod-director-launchwrapper-1.5.1-SNAPSHOT-all.jar1.5.1-SNAPSHOT]
	at net.jan.moddirector.launchwrapper.ModDirectorTweaker.injectIntoClassLoader(ModDirectorTweaker.java47) [mod-director-launchwrapper-1.5.1-SNAPSHOT-all.jar1.5.1-SNAPSHOT]
	at net.minecraft.launchwrapper.Launch.launch(Launch.java115) [launchwrapper-1.12.jar]
	at net.minecraft.launchwrapper.Launch.main(Launch.java28) [launchwrapper-1.12.jar]
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[1.8.0_281]
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[1.8.0_281]
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[1.8.0_281]
	at java.lang.reflect.Method.invoke(Unknown Source) ~[1.8.0_281]
	at org.multimc.onesix.OneSixLauncher.launchWithMainClass(OneSixLauncher.java210) [NewLaunch.jar]
	at org.multimc.onesix.OneSixLauncher.launch(OneSixLauncher.java245) [NewLaunch.jar]
	at org.multimc.EntryPoint.listen(EntryPoint.java143) [NewLaunch.jar]
	at org.multimc.EntryPoint.main(EntryPoint.java34) [NewLaunch.jar]
Caused by java.nio.file.InvalidPathException Illegal char  at index 24 web20181020031322http10paksmods.netpmp.html
	at sun.nio.fs.WindowsPathParser.normalize(Unknown Source) ~[1.8.0_281]
	at sun.nio.fs.WindowsPathParser.parse(Unknown Source) ~[1.8.0_281]
	at sun.nio.fs.WindowsPathParser.parse(Unknown Source) ~[1.8.0_281]
	at sun.nio.fs.WindowsPath.parse(Unknown Source) ~[1.8.0_281]
	at sun.nio.fs.WindowsFileSystem.getPath(Unknown Source) ~[1.8.0_281]
	at java.nio.file.Paths.get(Unknown Source) ~[1.8.0_281]
	at net.jan.moddirector.core.configuration.type.UrlRemoteMod.queryInformation(UrlRemoteMod.java133) ~[UrlRemoteMod.class1.5.1-SNAPSHOT]
	at net.jan.moddirector.core.manage.InstallController.lambda$createPreInstallTasks$0(InstallController.java68) ~[InstallController.class1.5.1-SNAPSHOT]
	at java.util.concurrent.FutureTask.run(Unknown Source) ~[1.8.0_281]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) ~[1.8.0_281]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) ~[1.8.0_281]
	at java.lang.Thread.run(Unknown Source) ~[1.8.0_281]
[220210] [mainERROR] [ModDirector[CORE]] ============================================================
[220210] [mainERROR] [ModDirector[CORE]] Summary of 1 encountered errors
[220210] [mainERROR] [ModDirector[CORE]] An exception occurred while performing asynchronous work
java.util.concurrent.ExecutionException java.nio.file.InvalidPathException Illegal char  at index 24 web20181020031322http10paksmods.netpmp.html
	at java.util.concurrent.FutureTask.report(Unknown Source) ~[1.8.0_281]
	at java.util.concurrent.FutureTask.get(Unknown Source) ~[1.8.0_281]
	at net.jan.moddirector.core.ModDirector.awaitAll(ModDirector.java212) [mod-director-launchwrapper-1.5.1-SNAPSHOT-all.jar1.5.1-SNAPSHOT]
	at net.jan.moddirector.core.ModDirector.activate(ModDirector.java120) [mod-director-launchwrapper-1.5.1-SNAPSHOT-all.jar1.5.1-SNAPSHOT]
	at net.jan.moddirector.launchwrapper.ModDirectorTweaker.injectIntoClassLoader(ModDirectorTweaker.java47) [mod-director-launchwrapper-1.5.1-SNAPSHOT-all.jar1.5.1-SNAPSHOT]
	at net.minecraft.launchwrapper.Launch.launch(Launch.java115) [launchwrapper-1.12.jar]
	at net.minecraft.launchwrapper.Launch.main(Launch.java28) [launchwrapper-1.12.jar]
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[1.8.0_281]
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[1.8.0_281]
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[1.8.0_281]
	at java.lang.reflect.Method.invoke(Unknown Source) ~[1.8.0_281]
	at org.multimc.onesix.OneSixLauncher.launchWithMainClass(OneSixLauncher.java210) [NewLaunch.jar]
	at org.multimc.onesix.OneSixLauncher.launch(OneSixLauncher.java245) [NewLaunch.jar]
	at org.multimc.EntryPoint.listen(EntryPoint.java143) [NewLaunch.jar]
	at org.multimc.EntryPoint.main(EntryPoint.java34) [NewLaunch.jar]
Caused by java.nio.file.InvalidPathException Illegal char  at index 24 web20181020031322http10paksmods.netpmp.html
	at sun.nio.fs.WindowsPathParser.normalize(Unknown Source) ~[1.8.0_281]
	at sun.nio.fs.WindowsPathParser.parse(Unknown Source) ~[1.8.0_281]
	at sun.nio.fs.WindowsPathParser.parse(Unknown Source) ~[1.8.0_281]
	at sun.nio.fs.WindowsPath.parse(Unknown Source) ~[1.8.0_281]
	at sun.nio.fs.WindowsFileSystem.getPath(Unknown Source) ~[1.8.0_281]
	at java.nio.file.Paths.get(Unknown Source) ~[1.8.0_281]
	at net.jan.moddirector.core.configuration.type.UrlRemoteMod.queryInformation(UrlRemoteMod.java133) ~[UrlRemoteMod.class1.5.1-SNAPSHOT]
	at net.jan.moddirector.core.manage.InstallController.lambda$createPreInstallTasks$0(InstallController.java68) ~[InstallController.class1.5.1-SNAPSHOT]
	at java.util.concurrent.FutureTask.run(Unknown Source) ~[1.8.0_281]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) ~[1.8.0_281]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) ~[1.8.0_281]
	at java.lang.Thread.run(Unknown Source) ~[1.8.0_281]
[220210] [mainERROR] [ModDirector[CORE]] ============================================================
[220210] [mainERROR] [LaunchWrapper] Unable to launch
net.minecraftforge.fml.relauncher.FMLSecurityManager$ExitTrappedException null
	at net.minecraftforge.fml.relauncher.FMLSecurityManager.checkPermission(FMLSecurityManager.java49) ~[forge-1.12.2-14.23.5.2860-universal.jar]
	at java.lang.SecurityManager.checkExit(Unknown Source) ~[1.8.0_281]
	at java.lang.Runtime.exit(Unknown Source) ~[1.8.0_281]
	at java.lang.System.exit(Unknown Source) ~[1.8.0_281]
	at net.jan.moddirector.core.ModDirector.errorExit(ModDirector.java206) ~[mod-director-launchwrapper-1.5.1-SNAPSHOT-all.jar1.5.1-SNAPSHOT]
	at net.jan.moddirector.core.ModDirector.activate(ModDirector.java124) ~[mod-director-launchwrapper-1.5.1-SNAPSHOT-all.jar1.5.1-SNAPSHOT]
	at net.jan.moddirector.launchwrapper.ModDirectorTweaker.injectIntoClassLoader(ModDirectorTweaker.java47) ~[mod-director-launchwrapper-1.5.1-SNAPSHOT-all.jar1.5.1-SNAPSHOT]
	at net.minecraft.launchwrapper.Launch.launch(Launch.java115) [launchwrapper-1.12.jar]
	at net.minecraft.launchwrapper.Launch.main(Launch.java28) [launchwrapper-1.12.jar]
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[1.8.0_281]
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[1.8.0_281]
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[1.8.0_281]
	at java.lang.reflect.Method.invoke(Unknown Source) ~[1.8.0_281]
	at org.multimc.onesix.OneSixLauncher.launchWithMainClass(OneSixLauncher.java210) [NewLaunch.jar]
	at org.multimc.onesix.OneSixLauncher.launch(OneSixLauncher.java245) [NewLaunch.jar]
	at org.multimc.EntryPoint.listen(EntryPoint.java143) [NewLaunch.jar]
	at org.multimc.EntryPoint.main(EntryPoint.java34) [NewLaunch.jar]
[220210] [mainINFO] [STDERR] [org.multimc.onesix.OneSixLauncherlaunchWithMainClass213] Failed to start Minecraft
[220210] [mainINFO] [STDERR] [org.multimc.onesix.OneSixLauncherlaunch245] java.lang.reflect.InvocationTargetException
[220210] [mainINFO] [STDERR] [org.multimc.onesix.OneSixLauncherlaunch245] 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[220210] [mainINFO] [STDERR] [org.multimc.onesix.OneSixLauncherlaunch245] 	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
[220210] [mainINFO] [STDERR] [org.multimc.onesix.OneSixLauncherlaunch245] 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
[220210] [mainINFO] [STDERR] [org.multimc.onesix.OneSixLauncherlaunch245] 	at java.lang.reflect.Method.invoke(Unknown Source)
[220210] [mainINFO] [STDERR] [org.multimc.onesix.OneSixLauncherlaunch245] 	at org.multimc.onesix.OneSixLauncher.launchWithMainClass(OneSixLauncher.java210)
[220210] [mainINFO] [STDERR] [org.multimc.onesix.OneSixLauncherlaunch245] 	at org.multimc.onesix.OneSixLauncher.launch(OneSixLauncher.java245)
[220210] [mainINFO] [STDERR] [org.multimc.onesix.OneSixLauncherlaunch245] 	at org.multimc.EntryPoint.listen(EntryPoint.java143)
[220210] [mainINFO] [STDERR] [org.multimc.onesix.OneSixLauncherlaunch245] 	at org.multimc.EntryPoint.main(EntryPoint.java34)
[220210] [mainINFO] [STDERR] [org.multimc.onesix.OneSixLauncherlaunchWithMainClass214] Caused by net.minecraftforge.fml.relauncher.FMLSecurityManager$ExitTrappedException
[220210] [mainINFO] [STDERR] [org.multimc.onesix.OneSixLauncherlaunchWithMainClass214] 	at net.minecraftforge.fml.relauncher.FMLSecurityManager.checkPermission(FMLSecurityManager.java49)
[220210] [mainINFO] [STDERR] [org.multimc.onesix.OneSixLauncherlaunchWithMainClass214] 	at java.lang.SecurityManager.checkExit(Unknown Source)
[220210] [mainINFO] [STDERR] [org.multimc.onesix.OneSixLauncherlaunchWithMainClass214] 	at java.lang.Runtime.exit(Unknown Source)
[220210] [mainINFO] [STDERR] [org.multimc.onesix.OneSixLauncherlaunchWithMainClass214] 	at java.lang.System.exit(Unknown Source)
[220210] [mainINFO] [STDERR] [org.multimc.onesix.OneSixLauncherlaunchWithMainClass214] 	at net.minecraft.launchwrapper.Launch.launch(Launch.java138)
[220210] [mainINFO] [STDERR] [org.multimc.onesix.OneSixLauncherlaunchWithMainClass214] 	at net.minecraft.launchwrapper.Launch.main(Launch.java28)
[220210] [mainINFO] [STDERR] [org.multimc.onesix.OneSixLauncherlaunchWithMainClass214] 	... 8 more
[220210] [mainINFO] [STDOUT] [org.multimc.EntryPointmain37] Exiting with -1
[220210] [mainINFO] [STDERR] [java.lang.ThreadGroupuncaughtException-1] net.minecraftforge.fml.relauncher.FMLSecurityManager$ExitTrappedException
[220210] [mainINFO] [STDERR] [java.lang.ThreadGroupuncaughtException-1] 	at net.minecraftforge.fml.relauncher.FMLSecurityManager.checkPermission(FMLSecurityManager.java49)
[220210] [mainINFO] [STDERR] [java.lang.ThreadGroupuncaughtException-1] 	at java.lang.SecurityManager.checkExit(Unknown Source)
[220210] [mainINFO] [STDERR] [java.lang.ThreadGroupuncaughtException-1] 	at java.lang.Runtime.exit(Unknown Source)
[220210] [mainINFO] [STDERR] [java.lang.ThreadGroupuncaughtException-1] 	at java.lang.System.exit(Unknown Source)
[220210] [mainINFO] [STDERR] [java.lang.ThreadGroupuncaughtException-1] 	at org.multimc.EntryPoint.main(EntryPoint.java38)



Add location for download

I have a Flan's mod and the content packs need to be downloaded into the "Flan" folder that is in other location (not in "mods") would this be possible???

Best Regards
Kubi

Suggestion: `fileName` for CurseForge files

In my pack, /Dank/Null mod should load after other mods, so i need to rename it.

I though i could load it with mod director and option fileName:

{
    "addonId": 272514,
    "fileId": 2920596,
    "fileName": "zz_DankNull.jar"
}

But got an error:

[20:16:45] [main/ERROR] [ModDirector[CORE]]: ============================================================
[20:16:45] [main/ERROR] [ModDirector[CORE]]: Summary of 1 encountered errors:
[20:16:45] [main/ERROR] [ModDirector[CORE]]: Failed to open a configuration for reading
com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field "fileName" (class net.jan.moddirector.core.configuration.type.CurseRemoteMod), not marked as ignorable (7 known properties: "inject", "fileId", "addonId", "installationPolicy", "options", "metadata", "folder"])
 at [Source: (sun.nio.ch.ChannelInputStream); line: 5, column: 2] (through reference chain: net.jan.moddirector.core.configuration.type.CurseRemoteMod["fileName"])
	at com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException.from(UnrecognizedPropertyException.java:61) ~[mod-director-launchwrapper-1.5.1-SNAPSHOT-all.jar:1.5.1-SNAPSHOT]

Could you add support for "fileName" for .curse.json, or i should use .url.json somehow?

crash on linux

[03:52:31] [main/INFO] [STDERR]: [net.minecraftforge.fml.relauncher.ServerLaunchWrapper:run:67]: Caused by: java.awt.AWTError: Can't connect to X11 window server using 'localhost:11.0' as the value of the DISPLAY variable.
[03:52:31] [main/INFO] [STDERR]: [net.minecraftforge.fml.relauncher.ServerLaunchWrapper:run:67]: 	at sun.awt.X11GraphicsEnvironment.initDisplay(Native Method)
[03:52:31] [main/INFO] [STDERR]: [net.minecraftforge.fml.relauncher.ServerLaunchWrapper:run:67]: 	at sun.awt.X11GraphicsEnvironment.access$200(X11GraphicsEnvironment.java:65)
[03:52:31] [main/INFO] [STDERR]: [net.minecraftforge.fml.relauncher.ServerLaunchWrapper:run:67]: 	at sun.awt.X11GraphicsEnvironment$1.run(X11GraphicsEnvironment.java:115)
[03:52:31] [main/INFO] [STDERR]: [net.minecraftforge.fml.relauncher.ServerLaunchWrapper:run:67]: 	at java.security.AccessController.doPrivileged(Native Method)
[03:52:31] [main/INFO] [STDERR]: [net.minecraftforge.fml.relauncher.ServerLaunchWrapper:run:67]: 	at sun.awt.X11GraphicsEnvironment.<clinit>(X11GraphicsEnvironment.java:74)
[03:52:31] [main/INFO] [STDERR]: [net.minecraftforge.fml.relauncher.ServerLaunchWrapper:run:67]: 	at java.lang.Class.forName0(Native Method)
[03:52:31] [main/INFO] [STDERR]: [net.minecraftforge.fml.relauncher.ServerLaunchWrapper:run:67]: 	at java.lang.Class.forName(Class.java:264)
[03:52:31] [main/INFO] [STDERR]: [net.minecraftforge.fml.relauncher.ServerLaunchWrapper:run:67]: 	at java.awt.GraphicsEnvironment.createGE(GraphicsEnvironment.java:103)
[03:52:31] [main/INFO] [STDERR]: [net.minecraftforge.fml.relauncher.ServerLaunchWrapper:run:67]: 	at java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment(GraphicsEnvironment.java:82)
[03:52:31] [main/INFO] [STDERR]: [net.minecraftforge.fml.relauncher.ServerLaunchWrapper:run:67]: 	at java.awt.Window.initGC(Window.java:475)
[03:52:31] [main/INFO] [STDERR]: [net.minecraftforge.fml.relauncher.ServerLaunchWrapper:run:67]: 	at java.awt.Window.init(Window.java:495)
[03:52:31] [main/INFO] [STDERR]: [net.minecraftforge.fml.relauncher.ServerLaunchWrapper:run:67]: 	at java.awt.Window.<init>(Window.java:537)
[03:52:31] [main/INFO] [STDERR]: [net.minecraftforge.fml.relauncher.ServerLaunchWrapper:run:67]: 	at java.awt.Frame.<init>(Frame.java:420)
[03:52:31] [main/INFO] [STDERR]: [net.minecraftforge.fml.relauncher.ServerLaunchWrapper:run:67]: 	at java.awt.Frame.<init>(Frame.java:385)
[03:52:31] [main/INFO] [STDERR]: [net.minecraftforge.fml.relauncher.ServerLaunchWrapper:run:67]: 	at javax.swing.SwingUtilities$SharedOwnerFrame.<init>(SwingUtilities.java:1763)
[03:52:31] [main/INFO] [STDERR]: [net.minecraftforge.fml.relauncher.ServerLaunchWrapper:run:67]: 	at javax.swing.SwingUtilities.getSharedOwnerFrame(SwingUtilities.java:1838)
[03:52:31] [main/INFO] [STDERR]: [net.minecraftforge.fml.relauncher.ServerLaunchWrapper:run:67]: 	at javax.swing.JDialog.<init>(JDialog.java:272)
[03:52:31] [main/INFO] [STDERR]: [net.minecraftforge.fml.relauncher.ServerLaunchWrapper:run:67]: 	at javax.swing.JDialog.<init>(JDialog.java:206)
[03:52:31] [main/INFO] [STDERR]: [net.minecraftforge.fml.relauncher.ServerLaunchWrapper:run:67]: 	at javax.swing.JDialog.<init>(JDialog.java:154)
[03:52:31] [main/INFO] [STDERR]: [net.minecraftforge.fml.relauncher.ServerLaunchWrapper:run:67]: 	at net.jan.moddirector.core.ui.SetupDialog.<init>(SetupDialog.java:24)
[03:52:31] [main/INFO] [STDERR]: [net.minecraftforge.fml.relauncher.ServerLaunchWrapper:run:67]: 	at net.jan.moddirector.core.ModDirector.activate(ModDirector.java:99)
[03:52:31] [main/INFO] [STDERR]: [net.minecraftforge.fml.relauncher.ServerLaunchWrapper:run:67]: 	at net.jan.moddirector.launchwrapper.ModDirectorTweaker.injectIntoClassLoader(ModDirectorTweaker.java:47)
[03:52:31] [main/INFO] [STDERR]: [net.minecraftforge.fml.relauncher.ServerLaunchWrapper:run:67]: 	at net.minecraft.launchwrapper.Launch.launch(Launch.java:115)
[03:52:31] [main/INFO] [STDERR]: [net.minecraftforge.fml.relauncher.ServerLaunchWrapper:run:67]: 	at net.minecraft.launchwrapper.Launch.main(Launch.java:28)
[03:52:31] [main/INFO] [STDERR]: [net.minecraftforge.fml.relauncher.ServerLaunchWrapper:run:67]: 	... 11 more

Option to bypass installation checks after first successful startup

ModDirector provides the perfect solution when needing to download only a handful of mods, however in my case where over 50 entries are necessary, the process of checking the installation can add quite a long time to the game startup every session.

Could there be an option for ModDirector to output a file on the first successful startup (possibly a log indicating the status of all entries) and, if it exists at the next restart, completely forego the checking process for the sake of faster loading times?

Successful startup as in:
If all entries have been downloaded successfully then disable installation checks

support other files than mods

It would be nice to be able to download any file that might be necessary and have it saved wherever in the minecraft installation it's needed. It would also be grade if files could be marked as optional and the user get's asked about them before download. That would allow optional mods in modpacks and preconfigured game options with profiles.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.