Giter VIP home page Giter VIP logo

atlauncher / atlauncher Goto Github PK

View Code? Open in Web Editor NEW
629.0 28.0 189.0 15.09 MB

ATLauncher is a Launcher for Minecraft which integrates multiple different ModPacks to allow you to download and install ModPacks easily and quickly.

License: GNU General Public License v3.0

Java 99.33% Dockerfile 0.07% Batchfile 0.10% Shell 0.31% Inno Setup 0.19%
atlauncher modpacks minecraft minecraft-launcher

atlauncher's Introduction

ATLauncher

Application Discord

What is it

ATLauncher is a launcher for Minecraft which integrates multiple different modpacks to allow you to download and install modpacks easily and quickly.

Links

Contributing to ATLauncher

Take a look at CONTRIBUTING.md

Testing

Please see the TESTING.md file for information on how we write tests.

Prerequisites

In order to build ATLauncher, you will need any Java version 8 or above. Java 8 is recommended since we compile to Java 8 compatability regardless.

Everything else that's needed for the project is provided by Gradle, and accessed using the Gradle wrapper which can be invoked by using ./gradlew.

Building

To build this project, simply run:

./gradlew build

This will build the application and output the resulting files for Windows, Linux and OSX in the dist directory.

Running in test

If you want to run the launcher while developing with it, you can use your IDE (if you have one) to do that for you.

Alternatively you can run:

./gradlew run --args="--debug --working-dir=testLauncher"

Setting the --working-dir=testLauncher argument is necessary as it will ensure that the launchers files are not spewed in the root directory and are instead contained within a gitignored folder.

Using an IDE

This project is mainly setup and developed to use VSCode for development. You're free to use any other IDE that you're accustomed to (if any), but by using VSCode, you get the benefit of predefined tasks and launch commands as well as a list of extensions recommended for the project. VSCode no longer works well after the upgrade to be part Kotlin. Until fixed, it's recommended to use IntelliJ.

We also provide some base project files for IntelliJ IDEA so that if you use that, you should get access to our base project files which contain correct launch tasks for testing the application as well as tasks for running the UI/Unit tests.

Checking for dependency updates

To check for dependency updates with gradle, simply run:

./gradlew dependencyUpdates

This will print a report to the console about any dependencies which have updates.

Updating new GraphQL queries/mutations

When new GraphQL queries/mutations are added into the src/main/graphql directory, you must run the below 2 commands:

./gradlew downloadApolloSchema --endpoint="https://api.atlauncher.com/v2/graphql" --schema="src/main/graphql/com/atlauncher/schema.json"
./gradlew generateApolloSources

This will fetch the latest schema and then codegen the java files so you can use the query/mutation.

Updating license headers in all files

If you add new files, or update the LICENSEHEADER file, you can add that to all source files by running:

./gradlew updateLicenses

To check that they're all correct, you can run the below command:

./gradlew checkLicenses

This is run during the CI process, and will fail if the license is missing or not up to date, so make sure that you add this to all new files you create.

Create Custom Themes

ATLauncher supports custom themes. The process is fairly straight forward, but may require a lot of trial and error.

First you must create a MyThemeName.java in the src/main/java/com/atlauncher/themes/ directory. Your theme should extend one of the base ATLauncher themes depending on what you need:

  • Dark is the default theme and is a dark theme. It's a good place to start with some defaults for new dark themes.
  • Light is a light theme. It's a good place to start with some defaults for new light themes.
  • ATLauncherLaf is a base class which every theme MUST at some point extend. It provides some defaults including our brand colours and some defaults. This shouldn't be extended from unless you need absolute power.

Once you've created your class (look at other themes in the directory for an idea on what you can do), you'll need to create a properties file in the src/main/resources/com/atlauncher/themes/ directory. This properties file is how you setup and change UI elements. You should use the existing examples in that directory as examples.

Last step is to register the theme in the file src/main/java/com/atlauncher/gui/tabs/settings/GeneralSettingsTab.java.

Now you can open the launcher and then switch to your theme.

We use a library called FlatLaf to provide theme support. There are some good references listed below to see the default values for the themes and see what you can overwrite:

IntelliJ theme.json Support

You can also take IntelliJ theme.json files and convert them to themes for ATLauncher. From within the theme.json file, take the UI object and plug that into this site to convert it from JSON to properties format.

There are also special rules you need to apply as we currently do not support these theme.json files out of the box, so you need to manually apply the transformations in order for the theme to work exactly right.

For an example, see the DraculaContrast theme which uses this method.

Tools To Help Theme Development

To help with theme development, with the launcher running (not in the release version, only in development), you can press Ctrl + Shift + Alt + X to bring up a tool to highlight UI components to see their properties. You can also press Ctrl + Shift + Alt + Y to bring up a list of all the default properties in the UIManager. These values can be modified in your .properties file.

Plugging In Your Data

To get started with the code and plug in your own data, you need to edit the /src/main/java/com/atlauncher/constants/Constants.java file.

By using this source code you don't get permissions to use our CDN/files/assets/modpacks. See the License section at the bottom for more.

Most of of them should be self explanatory, if not please stop by our Discord and ask in the #development channel if you need help understanding any of the values.

A couple values in the constants file are specific for ATLauncher and shouldn't be used in any forks. These are the CurseForge Core api key and the Microsoft Login Client ID.

You can apply for a CurseForge Core key through this link and a Microsoft Login Client ID through this link.

Versioning System

Starting with version 3.2.1.0 a new versioning system was put into place. It works off the following:

Reserved.Major.Minor.Revision.Stream

So for 3.2.1.0 the major number is 2 and minor number is 1 and revision number is 0. Reserved is used as a base, only incremented on complete rewrites. The stream is optional.

Major should be incremented when large changes/features are made.

Minor should be incremented when small changes/features are made.

Revision should be incremented when there are no new features and only contains bug fixes for the previous minor.

Build is used for beta releases allowing you to have higher version numbers but force users to update when the real release comes.

Stream is used to define if it's a "Release" or a "Beta". When not provided, it defaults to "Release".

Updating The Version

The version can be updated in a single place in the /src/main/resources/version file.

The stream value doesn't need to be provided, but should only ever be "Beta". When a release is ready to go out, the stream should be removed from the version so that everything will automatically release.

Translating

ATLauncher is written for English speakers. All our translations are community run by those who take their time and submit updates to the text in a different language.

If you wish to help translate ATLauncher, please visit our page on Crowdin and start translating.

Updating the template file

Every push to master will automatically add any new strings that need translating via GitHub actions.

Manual Steps

If new strings are added to the launcher, the template file will need to be updated in order to take into account the new strings.

In order to do this, run ./gradlew generatePots which will scan the source files and create a build/gettext/translations.pot file.

Note that out of the box, this will not generate in the correct format. You must run the deduplicateTranslations script in the scripts/deduplicateTranslations folder which will use Docker to fix the translations.pot file.

This file can then be uploaded to Crowdin by ATLauncher staff to give access to the translators.

Adding new languages from Crowdin

Running this action will download all approved translations strings and make a commit to master with then changed language files.

Manual Steps

Once a language has been translated enough to add support to the launcher (or update support) there's a few steps we need to take.

First grab the built project from Crowdin, and then grab out the translation to add/update. For this example, let's take German.

Pop this file in the scripts/processTranslations/in directory and then run the scripts/processTranslations.bat or scripts/processTranslations.sh file to fix them up and output them into the scripts/processTranslations/out directory.

Now take the converted files from the scripts/processTranslations/out directory and put them in the src\main\resources\assets\lang directory.

Now open src\main\java\com\atlauncher\data\Language.java and in the static block at the top, add in the language:

// add in the languages we have support for
static {
    locales.add(Locale.ENGLISH);
    locales.add(new Locale("de", "DE"));
}

Now the launcher should have the option to change to the language/s.

License

This work is licensed under the GNU General Public License v3.0. To view a copy of this license, visit http://www.gnu.org/licenses/gpl-3.0.txt.

A simple way to keep in terms of the license is by forking this repository and leaving it open source under the same license. We love free software, seeing people use our code and then not share the code, breaking the license, is saddening. So please take a look at the license and respect what we're doing.

Also, while we cannot enforce this under the license, you cannot use our CDN/files/assets/modpacks on your own launcher. Again we cannot enforce this under the license, but needless to say, we'd be very unhappy if you did that and really would like to leave cease and desist letters as a last resort.

atlauncher's People

Contributors

alisonjenkins avatar asyncronous avatar atlauncher-bot avatar bashton-ajenkins avatar brawaru avatar cherry avatar dgelessus avatar doomsdayrs avatar echoellet avatar flaw600 avatar hossammohsen7 avatar iarspider avatar ipeaches avatar jacobfrodermann avatar jakejmattson avatar jamierocks avatar jbmagination avatar jowsey avatar kihira avatar modmuss50 avatar mysticpasta1 avatar portb avatar ryantheallmighty avatar s0cks avatar shegorath123 avatar teccheck avatar tetha avatar triphora avatar whitebear60 avatar xz-dev 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  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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

atlauncher's Issues

Using ATL as a base for an external project

Hey Ryan,

According to the license this is all cool anyway, but I just wanted to double-check with you:
I'm being paid by a server admin to create him a launcher as well as a custom mod. I told him how much work a launcher is, and I suggested I base off an existing launcher, and he could compensate that launchers developer (because he'd save money as he's paying me hourly)

So, assuming he agrees to that, what would you agree to as a fair price?

Strained Exception

com.atlauncher.exceptions.ChunkyException: java.lang.NullPointerException
com.atlauncher.utils.Resources.makeStyleSheet(Resources.java:48)
com.atlauncher.gui.tabs.NewsTab$1.(NewsTab.java:42)
com.atlauncher.gui.tabs.NewsTab.(NewsTab.java:40)
com.atlauncher.gui.LauncherFrame.setupTabs(LauncherFrame.java:96)
com.atlauncher.gui.LauncherFrame.(LauncherFrame.java:67)
com.atlauncher.App.main(App.java:186)


Here is my log: http://paste.atlauncher.com/view/77e4e5ab

Bad login attempt makes instance unplayable

A failed login attempt disables the Play button making all other clicks to "Play" do effectively nothing afterwards.

I suspect it's because the call to App.settings.getAccount() instantiates the account with isReal false.
The account gets passed around.
The login does not happen (fat fingered pass).
isReal gets stuck as false.
Since isReal is not challenged again, instance.canPlay() returns false (since !account.isReal)

At that point only work around i found was to close/open launcher.

If !account.isReal, enter password screen should re-appear on InstanceDisplay.play.clicked()

Custom user download directory.

Currently the app checks the user's Download folder by appending 'Downloads' to System.getProperty("user.home"). This is not entirely reliable as that does not map to the user's USERPROFILE environment variable ( See Java bug: http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4787931 ). It also doesn't account for anyone who has moved this specific folder out of their user directory.

I don't know of and couldn't find a way to reliably get this for every use case, but a suggestion to improve manual downloads a bit would be to add an option to specify a custom searched download folder.

Cannot disable mods if the pack sets caseAllFiles in a case-sensitive FS

It appears that in com.atlauncher.data.DisableableMod.getFile(), the value of getCaseAllFiles() from the parent pack is not checked, so the file is never upper-cased. However, in com.atlauncher.workers.InstanceInstaller.doCaseConversion() the value is queried and the file name is upper-cased.

As a result, mods cannot be disabled in a file system that has case-sensitive filenames, such as any Linux system.

An example of a mod pack where this happens is Resonant Rise 2.6.8.0.

Here is a possible simple fix: replace the final return new File(dir, file); in that method with:

    String realFile = this.file;
    if (null != instance.getRealPack().getCaseAllFiles(this.version)){
        realFile = realFile.substring(0, realFile.lastIndexOf(".")).toUpperCase()
            + realFile.substring(realFile.lastIndexOf("."), realFile.length());
    }
    return new File(dir, realFile);

A less simple but more durable fix would be to do the case conversion once in InstanceInstaller and store the converted file name in the corresponding DisableableMod instance, but this requires more familiarity with the code-base than I currently possess.

Clone instance

Would be nice to have a easy way to clone a instance, so all config and optional mods are the same as the original instance.
I know this can be done manually, but a automated way would be nice to have, especially when you want to test out something quick.

Windows binary doesn't work with Log4j

When building with maven then windows executable runs but the console won't work. This is some issue which log4j2 spits out an error on launch and won't allow logging to the console.

Running the jar on windows will work as expected. My guess is an incompatibility between log4j and the way launch4j packages it since it works with the jar.

Tested with the latest RC and beta of log4j2 and the issues occurs in both.

Windows binary doesn't work with Log4j

When building with maven then windows executable runs but the console won't work. This is some issue which log4j2 spits out an error on launch and won't allow logging to the console.

Running the jar on windows will work as expected. My guess is an incompatibility between log4j and the way launch4j packages it since it works with the jar.

Tested with the latest RC and beta of log4j2 and the issues occurs in both.

atlauncher.com is down

Probably the totally wrong venue to report this, but I can't find any other way :/
Seems atlauncher.com including forum, upgrades and admin stuff is down at the moment.

Strained Exception

com.atlauncher.exceptions.ChunkyException: java.lang.NullPointerException
com.atlauncher.utils.Resources.makeStyleSheet(Resources.java:48)
com.atlauncher.gui.tabs.NewsTab$1.(NewsTab.java:42)
com.atlauncher.gui.tabs.NewsTab.(NewsTab.java:40)
com.atlauncher.gui.LauncherFrame.setupTabs(LauncherFrame.java:96)
com.atlauncher.gui.LauncherFrame.(LauncherFrame.java:67)
com.atlauncher.App.main(App.java:189)


Here is my log: http://paste.atlauncher.com/view/70315cdb

Strained Exception

com.atlauncher.exceptions.ChunkyException: java.lang.NullPointerException
com.atlauncher.utils.Resources.makeStyleSheet(Resources.java:48)
com.atlauncher.gui.tabs.NewsTab$1.(NewsTab.java:42)
com.atlauncher.gui.tabs.NewsTab.(NewsTab.java:40)
com.atlauncher.gui.LauncherFrame.setupTabs(LauncherFrame.java:96)
com.atlauncher.gui.LauncherFrame.(LauncherFrame.java:67)
com.atlauncher.App.main(App.java:189)


Here is my log: http://paste.atlauncher.com/view/1a828335

Strained Exception

com.atlauncher.exceptions.ChunkyException: java.awt.FontFormatException: bad table, tag=1196445523
com.atlauncher.utils.Resources.makeFont(Resources.java:78)
com.atlauncher.gui.theme.Theme.getTabFont(Theme.java:117)
com.atlauncher.gui.LauncherFrame.setupTabs(LauncherFrame.java:109)
com.atlauncher.gui.LauncherFrame.(LauncherFrame.java:67)
com.atlauncher.App.main(App.java:186)


Here is my log: http://paste.atlauncher.com/view/0029f78f

Strained Exception

com.atlauncher.exceptions.ChunkyException: java.awt.FontFormatException: bad table, tag=1196445523
com.atlauncher.utils.Resources.makeFont(Resources.java:78)
com.atlauncher.gui.theme.Theme.getTabFont(Theme.java:117)
com.atlauncher.gui.LauncherFrame.setupTabs(LauncherFrame.java:109)
com.atlauncher.gui.LauncherFrame.(LauncherFrame.java:67)
com.atlauncher.App.main(App.java:186)


Here is my log: http://paste.atlauncher.com/view/f3ab502c

Test - 3.2.0-dev

Test


[14/6/2014 07:31:06 AM] Console Cleared [14/6/2014 07:31:08 AM] [Background] Checking Minecraft Versions Complete
[14/6/2014 07:31:08 AM] Finished Setting up Tabs
[14/6/2014 07:31:08 AM] Showing Launcher

Strained Exception

com.atlauncher.exceptions.ChunkyException: java.lang.NullPointerException
com.atlauncher.utils.Resources.makeStyleSheet(Resources.java:48)
com.atlauncher.gui.tabs.NewsTab$1.(NewsTab.java:42)
com.atlauncher.gui.tabs.NewsTab.(NewsTab.java:40)
com.atlauncher.gui.LauncherFrame.setupTabs(LauncherFrame.java:96)
com.atlauncher.gui.LauncherFrame.(LauncherFrame.java:67)
com.atlauncher.App.main(App.java:189)


Here is my log: http://paste.atlauncher.com/view/b8cef1f2

Automatically watch the Downloads folder for the file to be added

The launcher knows the name of the file and the folder it should be in, so it should be easy to watch for the file to appear in there and automatically download the next one, rather than make the user click the "I've downloaded the file" button after every mod.

Java 7 has an API for this, but it shouldn't be too hard to just have a seperate thread polling for the file every second or so, either.

This would simplify and speed up the process of setting up a new instance quite a lot.

Strained Exception

com.atlauncher.exceptions.ChunkyException: java.io.IOException: Espace insuffisant sur le disque
com.atlauncher.utils.Resources.makeFont(Resources.java:78)
com.atlauncher.gui.theme.Theme.getTabFont(Theme.java:117)
com.atlauncher.gui.LauncherFrame.setupTabs(LauncherFrame.java:109)
com.atlauncher.gui.LauncherFrame.(LauncherFrame.java:67)
com.atlauncher.App.main(App.java:186)


Here is my log: http://paste.atlauncher.com/view/17eac0d9

Strained Exception

com.atlauncher.exceptions.ChunkyException: java.lang.NullPointerException
com.atlauncher.utils.Resources.makeStyleSheet(Resources.java:48)
com.atlauncher.gui.tabs.NewsTab$1.(NewsTab.java:42)
com.atlauncher.gui.tabs.NewsTab.(NewsTab.java:40)
com.atlauncher.gui.LauncherFrame.setupTabs(LauncherFrame.java:96)
com.atlauncher.gui.LauncherFrame.(LauncherFrame.java:67)
com.atlauncher.App.main(App.java:189)


Here is my log: http://paste.atlauncher.com/view/de4af3a9

Switching theme messes with JEditorPanes

When switching themes in the settings and reapplying the new theme it will not update correctly in JEditorPanes, such as the news panel and console, making the text black rather than what the theme sets it to

Switching theme messes with JEditorPanes

When switching themes in the settings and reapplying the new theme it will not update correctly in JEditorPanes, such as the news panel and console, making the text black rather than what the theme sets it to

HTML in components don't follow <center> anymore

It seems some, maybe all components using HTML in it will not show centered.

Unsure as to if this affects all components or only some, haven't fully looked into it, just notice it here and there

Crashing

I have never had a problem with playing or downloading mod packs. But every time I remove a mod, my world breaks. I get really far and now i have to lose yet another world.

Website

Sorry if this isn't the correct place to put this but I have a suggestion for your website, have a sticky header, that way people don't have to scroll to the top of the page to get to a different page

Not really an issue

Anyways, I would like to speak to you about a few things concerning the launcher when you get some time....I would put some PRs in but this is extremely important before I do that.

Suggestions

I'm just marking down the suggestions I come up with here and @RyanTheAllmighty you can help me decide what should be implemented into the Launcher or not....

My suggestions are:
IRC help tab

Strained Exception

com.atlauncher.exceptions.ChunkyException: java.io.EOFException: Unexpected end of ZLIB input stream
com.atlauncher.utils.Resources.makeFont(Resources.java:78)
com.atlauncher.gui.theme.Theme.getTabFont(Theme.java:117)
com.atlauncher.gui.LauncherFrame.setupTabs(LauncherFrame.java:109)
com.atlauncher.gui.LauncherFrame.(LauncherFrame.java:67)
com.atlauncher.App.main(App.java:186)


Here is my log: http://paste.atlauncher.com/view/3983e8fe

Can't restart instance if Minecraft crashed

It's impossible to restart an instance if Minecraft just crashed (and closed).

Exception in thread "Thread-3" java.lang.IllegalThreadStateException: process hasn't exited
        at java.lang.UNIXProcess.exitValue(UNIXProcess.java:217)
        at com.atlauncher.data.Instance$2.run(Instance.java:575)

Strained Exception

com.atlauncher.exceptions.ChunkyException: java.lang.NullPointerException
com.atlauncher.utils.Resources.makeStyleSheet(Resources.java:48)
com.atlauncher.gui.tabs.NewsTab$1.(NewsTab.java:42)
com.atlauncher.gui.tabs.NewsTab.(NewsTab.java:40)
com.atlauncher.gui.LauncherFrame.setupTabs(LauncherFrame.java:96)
com.atlauncher.gui.LauncherFrame.(LauncherFrame.java:67)
com.atlauncher.App.main(App.java:189)


Here is my log: http://paste.atlauncher.com/view/b95bc1bf

A Question

Can you please tell me why this launcher is not currently available for minecraft no-premium users?
Cordially,
Thanks

Instance "Open Folder" throws exception

Seems ATLauncher has the same bug as https://mojang.atlassian.net/browse/MCL-1701

Trying to use the button on my Linux machine, results in following error:

java.io.IOException: Failed to show URI:file:/home/azatoth/ATLauncher/
    at sun.awt.X11.XDesktopPeer.launch(XDesktopPeer.java:114)
    at sun.awt.X11.XDesktopPeer.open(XDesktopPeer.java:77)
    at java.awt.Desktop.open(Desktop.java:272)
    at com.atlauncher.utils.Utils.openExplorer(Utils.java:111)
    at com.atlauncher.gui.BottomBar$2.actionPerformed(BottomBar.java:114)
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
    at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)
    at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
    at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
    at java.awt.Component.processMouseEvent(Component.java:6505)
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3320)
    at java.awt.Component.processEvent(Component.java:6270)
    at java.awt.Container.processEvent(Container.java:2229)
    at java.awt.Component.dispatchEventImpl(Component.java:4861)
    at java.awt.Container.dispatchEventImpl(Container.java:2287)
    at java.awt.Component.dispatchEvent(Component.java:4687)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
    at java.awt.Container.dispatchEventImpl(Container.java:2273)
    at java.awt.Window.dispatchEventImpl(Window.java:2719)
    at java.awt.Component.dispatchEvent(Component.java:4687)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:735)
    at java.awt.EventQueue.access$200(EventQueue.java:103)
    at java.awt.EventQueue$3.run(EventQueue.java:694)
    at java.awt.EventQueue$3.run(EventQueue.java:692)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
    at java.awt.EventQueue$4.run(EventQueue.java:708)
    at java.awt.EventQueue$4.run(EventQueue.java:706)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:705)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)

Strained Exception

com.atlauncher.exceptions.ChunkyException: java.lang.NullPointerException
com.atlauncher.utils.Resources.makeStyleSheet(Resources.java:48)
com.atlauncher.gui.tabs.NewsTab$1.(NewsTab.java:42)
com.atlauncher.gui.tabs.NewsTab.(NewsTab.java:40)
com.atlauncher.gui.LauncherFrame.setupTabs(LauncherFrame.java:96)
com.atlauncher.gui.LauncherFrame.(LauncherFrame.java:67)
com.atlauncher.App.main(App.java:186)


Here is my log: http://paste.atlauncher.com/view/57340430

Strained Exception

com.atlauncher.exceptions.ChunkyException: java.io.IOException: Espace insuffisant sur le disque
com.atlauncher.utils.Resources.makeFont(Resources.java:78)
com.atlauncher.gui.theme.Theme.getTabFont(Theme.java:117)
com.atlauncher.gui.LauncherFrame.setupTabs(LauncherFrame.java:109)
com.atlauncher.gui.LauncherFrame.(LauncherFrame.java:67)
com.atlauncher.App.main(App.java:186)


Here is my log: http://paste.atlauncher.com/view/d1ac3ba1

Suggestions #2

I was wondering what if we paired the launch args to what theme to load, and also added a theme selection tab in the settings?

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.