Giter Site home page Giter Site logo

installer's People

Contributors

arisa-snowbell avatar leafhacker avatar leijurv avatar mariusdkm avatar zeromemes avatar

Stargazers

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

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

installer's Issues

Support translations and using system language

Instead of hard-coding UI strings, we should use a translation map that gets the value for the system language. The language could also be overridden by CLI arguments.

Users could then contribute translations via PRs or some other method.

Optimized build fails

Describe the bug
Optimize Task fails

To Reproduce
Steps to reproduce the behavior:
run ./gradlew build

Expected behavior
Build doesn't fail

Actual behavior

> Task :optimize FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':optimize'.
> java.lang.NullPointerException (no error message)

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

* Get more help at https://help.gradle.org

BUILD FAILED in 11s

Desktop (please complete the following information):

  • OS: macOS
  • Gradle 4.10

Tear out all old code to select baritone versions

The installer no longer needs ANY of the code to fetch baritone versions, verify baritone signatures, grab hashes from checksums.txt, display a baritone drop down menu, etc etc

Impact versions now specify an exact baritone version with sha1 and size, just like any other dependency, so all of this selection code can be removed.

GPL it and make public lmao

i guess add the .idea/copyright and gitignore stuff like baritone, throw on a gpl header, and rename it from Impact-Installer to ImpactInstaller

Move install stuff to a Mojang/vanilla launcher class

Installer.install() and Installer.isMinecraftLauncherOpen() are specific to the vanilla/mojang launcher and shouldn't be part of the main class

Maybe a wrapper method could exist somewhere generic like Installer that calls the relevant specific method for whatever launcher is configured in settings?

Twitch launcher

Is your feature request related to a problem? Please describe.
Some users want to install impact into twitch launcher

Describe the solution you'd like
Figure out how twitch launcher works and do the thing

Allow impact json to specify url and/or repo, defaulting to impact's repo

Is your feature request related to a problem? Please describe.
Currently we map group to maven repo in maven.refmap.json, which made sense when we used upstream maven repos, however now we almost exclusively use our own.

Describe the solution you'd like
In this scenario it probably makes more sense to have the installer hard-coded to default to our maven repo* and allow the impact version json to specify an optional override maven repo or absolute jar url for rare cases where we don't want to host the jar (e.g. temp deps for nightlies).

* either hard coded in the jar or set by a file on impactclient.net or an api end point or whatever.

Add tests

Unit tests and integration tests are probably a good idea

forge i guess

this would be kinda rarted and the only reason that i can think of is so that the forge jar for impact can get updated with latest baritone ๐Ÿ˜‚ and thats reason enough for me

anyway the installer should just download all those libraries from those urls that it already has (verify their shasums) and shadow them all together.

i think it also needs to change the meta-inf a little bit, and the refmap to move around the searge and notch memes?

Modlauncher support

Is your feature request related to a problem? Please describe.
Currently launchwrapper is hardcoded

Describe the solution you'd like
allow an impact json to specify both launchwrapper tweakers and modlauncher classes.

An optional array for tweakers and each modlauncher interface should be fine.

If both tweakers and modlauncher class arrays are present the user could choose, or a default could be hinted at by a field in the json.

#10 could also add a property specifying if compatible optifines should use launchwrapper or modlauncher.

Add a contributor copyright agreement to GitHub

Is your feature request related to a problem? Please describe.
The installer is licensed GPL, which means it cannot be included in propietary works such as impact without a separate license from the copyright owner (or both works being by the same entity).

This isn't a problem since we own both impact and the Installer, however if we accept third party contributions then we are no longer the sole copyright holder and would need to seek permission to use the installer in impact from all installer contributers.

Describe the solution you'd like
A Canonical-style copyright waiver that ensures ImpactDevelopment or Brady remains the sole copyright holder. A GitHub bot would enforce signing the waiver on any pr from a new contributer.

Describe alternatives you've considered
Alternatively, as the copyright holder we could change the license to LGPL, before allowing others to contribute and hold copyright over their changes.

Additional context
Add any other context or screenshots about the feature request here.

resiliency

if any network request fails, pop up an error message

if the most recent release isnt signed, just go and check the second most recent one

etc

MultiMC launcher

Is your feature request related to a problem? Please describe.
Users want to install impact for multimc, right now they have to do it manually.

Describe the solution you'd like
A launcher drop down to select between Mojang mode and multimc meme

Release proguard mappings

Is your feature request related to a problem? Please describe.
Our proguard optimisations aren't too intrusive at the moment, but I guess including the mappings in the release could come in handy.

Describe the solution you'd like
Include proguard mappings in future releases

Don't show versions that are marked as pre release

The installer by default shouldn't show releases that marked on github as prereleases. This is how we could implement betas. With a command line option they would be shown. This is already implemented for if there is no .asc file, we just need to look at the pre release field.

Forge should install into mods/version/ not mods/

Installing into mods/ means impact can only be used on one version of forge (this is the case anyway since we only support 1.12.2 but...)

More importantly it means other forge versions can't be run at all, since they will try and fail to load impact (i assume, unless forge is smart enough to check for version compatibility somehow).

An error that comes up when I double click the installer

When I double click the file this error shows up
20190524_014650

To Reproduce
Steps to reproduce the behavior:

  1. I go to my files
  2. Double click the file
  3. I am asked what do I want to open the file with so I choose java
  4. And the screenshot is what I get

After all that I get the error that pops up (in the photo) I've tried to close out other browsers (including Minecraft) and this makes no difference
20190524_014650

Desktop (please complete the following information):

  • OS: windows 7
  • Browser Google chrome
  • Version (have no clue)

It also comes up as a virus but I can choose to keep it, which it is impact, and I choose keep it.

Special error when Mc dir is /versions

Have seen a couple times people instinctively picking minecraft/versions as the folder since that's where they're used to installing to, should detect this and change the standard "no vanilla detected" error to "plz select minecraft not version"

In Forge mode, change the message on success

It should say Impact was successfully installed to .minecraft/mods/Impact-4.6-1.12.2.jar because rn people dont know what it did, and get confus when theres no launcher profile made for it (like vanilla does).

Differentiate Optifine Versions

Is your feature request related to a problem? Please describe.
When creating a version with and without OptiFine to make it easier to test the versions, they'll overwrite each other b/c they use the same folder name i.e. 1.12.2-Impact_4.6.

Describe the solution you'd like
A additional "suffix" on the end that shows the version e.g. -OptiFine_HD_U_E3 i.e. 1.12.2-Impact_4.6-OptiFine_HD_U_E3.

Describe alternatives you've considered
The suffixes would be in the opposite order i.e. 1.12.2-OptiFine_HD_U_E3-Impact_4.6.

Additional context
How I have it set up right now:
picture of my list of Minecraft installations.

Dropdown menu not working

i have the latest version of java and the installer, and when i go to click the dropdown and change it to the version i need it, it dosent work. i right click, left click, i use tab and enter, and nothing works.

Save As button for Forge installs

Is your feature request related to a problem? Please describe.
Currently the forge target installs into the chosen minecraft directory /mods/1.12.2/. This is fine for 99% of the time, however there may be times when they just want to build an impact forge mod or save the mod in some arbitrary location or they might be using run directories in their forge profile(s).

Describe the solution you'd like
A "Save As" button (in addition to the main "Install" button) which allows the user full control over where the jar ends up.

Describe alternatives you've considered
Better handling of profile run directories being different to minecraft/launcher directories.

Forge mode overwrites META-INF/MANIFEST.MF

It shadows together many jars, and instead of dealing with merging all of their manifests it just has a hardcoded one that works. This is sort of necessary since changes to both lines of the manifest need to be made, so it wouldn't make sense as a replacement or anything. However, it's kinda yikes with the thought of removing client.json and putting that information in the MANIFEST, since the installer would discard it in forge mode.

tweakers should be added dynamically actually

right now baritone tweaker is hardcoded in every version that requires baritone, and optifine tweaker is nowhere

it should instead add baritone tweaker if its listed in the libraries, and optifine if its selected

this would allow you to add baritone to older versions than 4.4 (a really cursed idea) and would make optifine less cursed

Differentiate OptiFine Versions

Is your feature request related to a problem? Please describe.
I went to install an OptiFine version alongside a Vanilla version, and it overwrote the Vanilla version.
While I fixed it manually, it'd be nice for it work automatically.

Describe the solution you'd like
It should add suffix on top of the impact suffix like 1.12.2-Impact_4.6-OptiFine_HD_U_E3.

Describe alternatives you've considered
Suffix could appear the other way around: 1.12.2-OptiFine_HD_U_E3-Impact_4.6.
EDIT: Actually, I prefer this method.

Additional context
I was downloading a variety of versions to be able to test more stuff and be able to be on the same versions as those I am helping, this includes OptiFine.

0.7.0 launcher does not open

When opening the installer exe and jar file both do not give any output and stop immediately.
they show in command prompt and instantly disappear.

Optifine related properties in impact json

We should support parsing a few optifine related stuff from impact jsons to allow an impact version to specify details about optifine compatibility.

We could possibly go about baritone in a similar way, depending on if we decide it makes more sense.

I envision an optionsl optifine object in the root of the json, which can either be a boolean or an object.

If a boolean it simply indicates whether optifine is supported at all. We should default to true if it is not present in the json.

If an object it can set verious properties sucn as boolean:supported, string:maxVersion, string:minVersion, string:tweakClass for overriding/setting the various settings.

Impact's gradle script would not need to set any of this, it would simply be supported by the installer in case we need to manually set any of this.

(This is also the kinda thing where it makes sense to be able to patch the json without re-releasing impact, but simply editing the existing release works, i guess)

Handle invalid paths better

Currently the user can enter any string as a minecraft directory

This is fine, but we should ensure we are better able to handle this

Consider moving version jsons from Releases to VCS

Currently we store a jar, json and signature in github releases on the ImpactReleases repo.

While it's a bit hacky creating releases from a commit that contains literally nothing, it makes sense that releases are in releases.

One major downside (other than the hackiness) is the inability to track any changes we make to a version or view the history of when releases happened. While this could be solved by instead committing the jsons and signatures to VCS, we probably wouldn't want to commit the jar there.

Maybe jsons and sigs could go in VCS and jars could go on maven if/when github releases their new meme.

In terms of github API, they offer a directory listing api (which I used in the failed icon downloading meme) which is very similar to the release listing api.

I suppose there's no reason we couldn't also tag commits where we add/edit json files and create a release from that... idk, that feels kinda redundant but also a bit best-of-both-worldsy.

Remove Intellij GUI Forms

Without including a few libs and setting intellij to generate source code instead of bytecode, and using intellij instead of gradle to build intellij forms won't work. This also means CI will never be able to build an intellij forms project.

Let's not use intellij forms.

This gives us the benefit of actually being able to use classical inheritance too, so we may actually end up with cleaner code - who knows?

Add an About page

To show version, copyright and licence info. Perhaps also lib licences?

Release src jar

Is your feature request related to a problem? Please describe.
A source jar would make debugging stuff easier when the installer is used as a library, e.g. in impact.

Describe the solution you'd like
A sourceJar task that includes the project sources. This should be included in releases and published to maven. See the gradle docs for an example.

Use launch4j to build platform binaries

Is your feature request related to a problem? Please describe.
Users have to manually install the full JRE to run Impact Installer

Describe the solution you'd like
Instead, wrap a minified JRE and the Installer jar in an executable that Just Works. [launch4j] seems ideal.

Describe alternatives you've considered
[packer], [JSmooth], [WinRun4J] (looks like it needs a multi-file run environment?), the official JDK [javapackager] (can't cross compile!)

Additional context
Add any other context or screenshots about the feature request here.

mfw i cba to complete any of those links

simple install

ok so there should be a button on the first page SIMPLE INSTALL that takes you to the final confirm page and just picks sane defaults (default minecraft directory, latest impcat, latest minecraft, latest baritone, optifine if you have it, whatever)

it should just WHIZ through the pages and each one should just have a meme to fill in defaults you know

it should still do the same error checking (e.g. if you dont hae that version of minecraft installed, still pause on that page and ask them to)

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.