Commit Graph

37 Commits

Author SHA1 Message Date
Daniel Scalzi
e08c3a903a
Add support for mod loading on Forge 1.13. 2019-02-18 18:17:31 -05:00
Daniel Scalzi
81367bc619
1.13 Update Phase 1
Mojang has changed its manifest format for 1.13.
Forge is no longer a universal jar, it requires more hosted files, all of which are generated by the installer.
We can no longer extract the version manifest from forge's jar and have to include it in the distribution.
This commit adds support for launching forge only, mods are currently not supported from the distribution.
Handling of 1.13 launches are subject to change as we move forward.
2019-02-18 06:31:01 -05:00
Daniel Scalzi
c834ca971a
Order the launch arguments better.
Classpath -> JVM -> Main Class -> Liteloader -> Minecraft ->
Client Options -> Mod list
2019-02-14 20:22:12 -05:00
Daniel Scalzi
d2982ca387
v1.4.1 - Forge 1.12.2 (4/10) + requires absolute: prefix. 2018-12-31 11:27:40 -05:00
Daniel Scalzi
001a2cbe81
v1.2.1 - Fixed issue w/ native lib parsing.
In 1.12.2, some natives do not provide a rules
object and instead just omit the classifier
from the natives object. We now check for that.

Updated electron to v3.0.12.
2018-12-17 00:11:23 -05:00
Daniel Scalzi
d779eacf61
Added drag/drop functionality to the add mods button.
You can now drag one or more files onto the add mods button in order to add them to the mods directory. Only jar, litemod, and zip files will be moved.
Changed eslint to use a single configuration file, with overrides for the UI scripts.
Now using fs-extra, replace usages of rimraf and mkdirp with fs-extra functions.
2018-12-01 08:20:42 -05:00
Daniel Scalzi
bcd8082afe
Fix native lib extraction for old MC versions.
#18
2018-11-18 04:33:59 -05:00
Daniel Scalzi
cf7e9adb89
v1.0.0-beta.6 - Revert UUID related change, updated deps. 2018-08-29 13:24:48 -04:00
Daniel Scalzi
70b83a6397
v1.0.0-beta.5 - Fixed Mojang issue resulting in "Failed to verify username" for specific users.
The Mojang API may randomly return extraneous spaces around the displayName and username fields. Launching the game with these values will result in the aforementioned error. The launcher now trims these values as a precautionary measure.
2018-08-24 15:17:32 -04:00
Daniel Scalzi
0346597afe
Wrap calls to console.log through LoggerUtil (prefixes). 2018-08-22 14:21:49 -04:00
Daniel Scalzi
845721a830
Encode game stderr stream in utf-8. Updated deps.
semver@5.5.1
esline@5.4.0
2018-08-19 00:42:52 -04:00
Daniel Scalzi
50317c3fc2
v1.0.0-beta.2
Fixed bug which prevented mods with declared extensions in their identifiers from being loaded.
Synced distribution.json with remote.
Updated electron-builder.
Updated readme to include information on beta testing.
2018-08-15 09:17:59 -04:00
Daniel Scalzi
f1d89c0e6b
Fixed game status monitoring.
Switched to version-safe regex for monitoring game launch progress.
Game output is now encoded in utf-8 to avoid multiple conversions from Uint8Array to String.
Note that game output has line breaks. Trim any content before testing it against regular expressions.
2018-08-13 08:25:25 -04:00
Daniel Scalzi
0c98cc2447
Added support for optional submods of required mods. 2018-07-29 16:32:41 +02:00
Daniel Scalzi
810e81521c
Added eslint. To lint, npm run lint.
Linted the entire project. Using different rules for the script files
as there are a lot of undefined variables just because of the way the
DOM's global scope works.

Mostly just code cleanup, however the linter did catch a minor bug with
a settings regex. That has been corrected.
2018-07-22 13:31:15 -04:00
Daniel Scalzi
7dcce68455
Updated Distribution Index spec and impl.
Added distromanager.js to represent distro elements.
Moved all distro refresh code to distromanager.js.
Overhauled assetexec.js.
Overhauled handling of assetexec.js output in landing.js.
Overhauled events emitted by assetguard.js.
Improved doenload processing in assetguard.
Updated discord-rpc to v3.0.0.
Replaced westeroscraft.json with distribution.json.
Use npm in travis for windows + linux.
Remove file extension from imports.
Added liteloader + macromod + shaders to distribution.json.
2018-07-22 11:40:15 -04:00
Daniel Scalzi
8f172a41e6
Documented new functions in processbuilder. Minor fixes.
Recursive call now uses the proper parameter (.mods).
Submodules are only parsed if the parent mod is enabled for launch.
2018-06-30 03:16:57 -04:00
Daniel Scalzi
aa0e1a20ca
Added initial support of liteloader + optional submodules.
Liteloader is loaded as a library, with special launch conditions being executed when it is enabled. Litemods are constructed into a mod list and passed to liteloader via the --modRepo argument.

The launcher now supports optional submodules. These are parsed recursively, there is no depth limit. Typically the depth will be only 2 as litemods are optional submoduless of liteloader.
2018-06-23 21:03:49 -04:00
Daniel Scalzi
145a2fe77b
Added initial support for optional mods.
Optional mods are stored by ID in the configuration. Their enabled state is stored here. The mod configurations are updated each time the distro index is refreshed. Configurations are stored by server id. If the id no longer exists (changed/removed), the mod configuration is removed. If new optional mods are added, they are added to the configuration. If they are removed, they are removed from the configuration.

Currently only top level optional mods are supported.
2018-06-23 15:17:26 -04:00
Daniel Scalzi
790a3e0e8b
v0.0.1-alpha.8 - Implemented Minecraft Settings Tab.
Implemented minecraft settings tab.
Updated distro index documentation to reflext the file system overhaul.
2018-06-04 16:28:17 -04:00
Daniel Scalzi
0cc861f614
Overhauling file system structure.
Common files such as assets, libraries, and mods have been externalized into a 'common' folder. Each server now has its own instance folder to allow saving per version files. This resolves issues with resourcepacks and mod configurations being overriden, and still preserves our optimizations in storing libraries and mods maven style.
2018-06-04 00:17:20 -04:00
Daniel Scalzi
d33476bcf9
ConfigManager improvements. v0.0.1-alpha.1
Added new configuration option, launchDetached.
Added validation function to ConfigManager to add missing keys (due to updates).
Updated westeroscraft.json
Game process can now be detached from the launcher.
2018-05-10 00:01:38 -04:00
Daniel Scalzi
6e8d4fe9bc
Fixed old bug with argument splicing in processbuilder. 2018-04-15 01:26:40 -04:00
Daniel Scalzi
9448b9b5a3
Add additional arguments for mac. 2018-04-15 00:49:20 -04:00
Daniel Scalzi
2f899822b5
Fixing classpath argument for Unix-like systems (macOS, Linux).
Game should now launch on these two systems.
2018-04-15 00:21:26 -04:00
Daniel Scalzi
be39d60705
Native files are now stored in the OS temp directory.
Temp folder is deleted when minecraft is closed. If the Node.js process ends abruptly, the folder will not delete. As a dirty way to counter this, the directory we extract native files to is cleaned in the preloader. Maybe we'll come up with a more elegant solution in the future.
2018-04-15 00:00:08 -04:00
Daniel Scalzi
5475ac0c69
Added function to remove an authenticated account to authmanager.js. 2018-04-14 22:43:58 -04:00
Daniel Scalzi
13cc555afd
Game now saves to OS-specific data directory. Fixed issue where logs folder did not save to correct location. Fixed issue with authentication code. Continuing work on Java validation code. 2018-03-31 13:05:05 -04:00
Daniel Scalzi
4fd202d180
Cleaning up jsdocs to be more aligned with the standard. 2018-03-28 16:42:10 -04:00
Daniel Scalzi
5afd9815a5 Switches to use internal mojang accessors and removed 'mojang' as a dependency. First attempt at authentication storage, system will be refinded as UI is implemented further. All auth interactions should be made throught authmanager.js 2017-12-03 08:12:55 -05:00
Daniel Scalzi
98684a9c1f Removed enumerator, converting to static Config Manager (fixes so many issues), constants will now be stored by config manager in an internal object. 2017-12-03 00:38:22 -05:00
Daniel Scalzi
0dde4bce42 Changes to prevent cyclic dependencies. 2017-12-02 22:41:47 -05:00
Daniel Scalzi
52ab270ce3 Large update to AssetGuard to make the module purely object based. This fixed several issues which were present with the static implementation and seems to have increased performance. Several other bugs related to the front-end scripts have been fixed. 2017-11-30 03:00:06 -05:00
Daniel Scalzi
4c2c46f535 Beginning work on configuration management, updates to UI to prevent unresponsive behavior, bug fixes.. 2017-11-30 01:40:56 -05:00
Daniel Scalzi
dd9e1418c8 Added progress tracking to landing page. Fixed exclusions when extracting native files, fixed minor issue with config manager, optimizations and improvements to assetguard. 2017-11-27 04:31:54 -05:00
Daniel Scalzi
c74006357e Minor modification to allow for base module library detection. 2017-11-19 04:12:41 -05:00
Daniel Scalzi
dd7ae6bf56 Massive progress on implementing the new forge modlist format. I have been able to rewrite much of the launch process code to use this new method, and was able to successfully log into the game. Several bugs need to be worked on, however everything is in a good state so far. 2017-11-19 03:48:21 -05:00