Skip to content

Commit

Permalink
Merge branch 'main' into installer-mode
Browse files Browse the repository at this point in the history
  • Loading branch information
CoolCat467 authored May 5, 2024
2 parents 4b4efbc + f189406 commit 9ee513b
Show file tree
Hide file tree
Showing 3 changed files with 41 additions and 17 deletions.
4 changes: 2 additions & 2 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -28,11 +28,11 @@ repos:
types: [file]
types_or: [python, pyi]
- repo: https://github.com/psf/black-pre-commit-mirror
rev: 24.4.0
rev: 24.4.2
hooks:
- id: black
- repo: https://github.com/astral-sh/ruff-pre-commit
rev: v0.4.1
rev: v0.4.2
hooks:
- id: ruff
types: [file]
Expand Down
48 changes: 33 additions & 15 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# fix-lwjgl
Fix LWJGL (Light Weight Java Game Library) version used in Minecraft for ARM devices
Fix which LWJGL (Light Weight Java Game Library) version is used in Minecraft for ARM devices

<!-- BADGIE TIME -->

Expand All @@ -12,7 +12,8 @@ Fix LWJGL (Light Weight Java Game Library) version used in Minecraft for ARM dev

## Description
This script is a wrapper for launching Minecraft on devices that aren't properly
supported by Mojang, such as computers with ARM processors like the Raspberry Pi 3 and 4.
supported by Mojang, such as computers with ARM processors like the Raspberry Pi 3 and 4,
as well as Apple's new M series chips.
On these devices, the wrong version of LWJGL is downloaded, preventing minecraft
from launching properly. This program takes the arguments that would have been
used to run Minecraft and rewrites a few details about LWJGL, pointing minecraft
Expand All @@ -27,59 +28,76 @@ This program has been tested successfully with [ATLauncher](https://github.com/A
on a Raspberry Pi 4 running 64 bit Raspberry Pi OS bullseye. It should work
for 32 bit Raspberry Pi OS bullseye, but I have not tested that yet.

This *might* work on the new Apple M1 chips, as they are arm64 processors,
but this is unlikely without changes. I have not tested this either.
Eagle3820 has successfully gotten this script working on an M3 Mac!

This script might also work other platforms with arm processors, but may require minor changes.

If possible, if this script works on anything not listed as tested, please
tell me using [discussions](https://github.com/CoolCat467/fix-lwjgl/discussions).
tell me using [the discussions page](https://github.com/CoolCat467/fix-lwjgl/discussions/1)!

## Installation
Ensure Python 3 is installed on your computer, and use pip to
install this project with the command listed below:

```bash
```
pip install git+https://github.com/CoolCat467/fix-lwjgl.git
```

#### Installation on MacOS
If you are using MacOS, you will probably have to install [homebrew](https://brew.sh/) to install [pipx](https://pipx.pypa.io/latest/installation/)
(use the links given, not copying their install instructions here because they will get out of date).

After pipx is installed, you can use the following command to install:

```
pipx install git+https://github.com/CoolCat467/fix-lwjgl.git
```

## About Installation
On default, all LWJGL files are expected to be in
`$HOME/.local/share/fix_lwjgl/lwjgl_{lwjgl_version}{system_arch}`, so
if the script was run on Raspberry Pi OS 32 bit, it would be `lwjgl_3arm32`. If this
folder does not exist or files are missing (only checks in lwjgl 3 mode), the folder
folder does not exist or files are missing (only checks in LWJGL 3 mode), the folder
is created and all required files are downloaded from https://build.lwjgl.org/
(browse at https://www.lwjgl.org/browse)
(browse at https://www.lwjgl.org/browse) (see also `can_download` in configuration)

If this script needs the LWJGL 2 folder, it will download the folders in this repository.
If this script needs any LWJGL 3 modules, it will download them from LWJGL's build repository
available to browse at https://www.lwjgl.org/browse

## Configuration
All configuration files should be located in `~/.config/fix_lwjgl/`. The current options
include:
- `lwjgl_base_path` - Changing where the lwjgl folders are expected to live at (defaults to `$HOME/.local/share/fix_lwjgl`)
All configuration files should be located in `~/.config/fix_lwjgl/fix_lwjgl_config.ini`. The current options
as of writing include:
- `lwjgl_base_path` - Controls where the lwjgl folders are expected to live at (defaults to `$HOME/.local/share/fix_lwjgl`)
- `can_download` - If the wrapper is allowed to download files from the internet (defaults to True)
- `download_timeout` - Timeout in seconds for downloading files from the internet
- `download_timeout` - Timeout in seconds for downloading files from the internet (defaults to 15 seconds)

## Usage
Go to your Minecraft launcher, and somewhere in settings is likely the ability to
set a "wrapper command". Set it to `fix_lwjgl_wrapper` after you install the script
and everything *should* be good.

On Raspberry Pi OS bullseye in particular, it might be useful to have this "pre-launch"
command if you are experiencing crashes:
On Raspberry Pi OS bullseye and some other platforms, it might be useful to have this
"pre-launch" command if you are experiencing crashes:

```bash
export MESA_GL_VERSION_OVERRIDE=4.2COMPAT
```

This tells mesa gl to pretend it's OpenGL 4.2, which stops Minecraft from trying to do
some things that might cause crashes.

You might also want to try changing it from `4.2COMPAT` to `4.3` or `4.5`, this is known to fix the
["Could not initialize class com.mojang.blaze3d.systems.RenderSystem" issue](https://github.com/CoolCat467/fix-lwjgl/issues/30)

## Problems
If you encounter any issues regarding this program, please check and see if anyone else is
having the same issue before making a new issue.
When posting your issue, be sure to include any relevant logs and what operating system
you're using and what architecture your computer's processor uses.

Additionally, re-running Minecraft with the additional arguments
```bash
```
-Dorg.lwjgl.util.DebugLoader=true -Dorg.lwjgl.util.Debug=true
```
might help diagnose your issue. Just be sure to remove them after everything is
Expand Down
6 changes: 6 additions & 0 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -51,10 +51,16 @@ fix_lwjgl = ["py.typed"]
[tool.mypy]
mypy_path = "src"
check_untyped_defs = true
disallow_any_decorated = true
disallow_any_generics = true
disallow_any_unimported = true
disallow_incomplete_defs = true
disallow_subclassing_any = true
disallow_untyped_calls = true
disallow_untyped_decorators = true
disallow_untyped_defs = true
ignore_missing_imports = true
local_partial_types = true
no_implicit_optional = true
no_implicit_reexport = true
show_column_numbers = true
Expand Down

0 comments on commit 9ee513b

Please sign in to comment.