diff --git a/VERSION b/VERSION index 3a660ff..197c4d5 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -2.3.13 +2.4.0 diff --git a/docs/ARCHITECTURE.md b/docs/ARCHITECTURE.md index 609d24e..ed33c93 100644 --- a/docs/ARCHITECTURE.md +++ b/docs/ARCHITECTURE.md @@ -2,6 +2,11 @@ ## Launch Sequence +### Common +1. The launcher forks itself + 1. The child process continues the launch sequence. + 2. The original process monitors the child process for crashes. + ### Client 1. The launcher is started by the user 1. The launcher starts several Zenity dialogs to configure MCPI-Reborn @@ -34,12 +39,11 @@ The Media Layer handles MCPI's graphics calls and user input. It replaces MCPI's This sub-component re-implements a subset of SDL 1.2 calls with GLFW. It also provides a few utility functions that are used internally by MCPI-Reborn. The utility functions include: -* Taking Screenshots * Fullscreen * Audio * Etc -This is always compiled for the host system's architecture. +This is always compiled for the host system's architecture unless the Media Layer Proxy is disabled. This was created because SDL 1.2 has numerous bugs and is in-general unsupported. @@ -60,21 +64,13 @@ It is made of two parts: While proxying all Media Layer Core API calls across UNIX pipes does hurt performance, it is better than emulating the entire graphics stack. -Using this in server-mode is redundant (and disallowed). +Using this in server-mode is redundant. #### Extras This sub-component contains code that must always be linked directly to MCPI. This is always compiled for ARM. -#### Stubs -This sub-component implements stubs for various redundant libraries used by MCPI to silence linker errors. - -This is always compiled for ARM. - -##### What To Stub And What To Patch? -Most libraries (like ``bcm_host``) can just be replaced with stubs, because they don't need to do anything and aren't used by anything else. However, some libraries (like EGL and X11) might be used by some of MCPI-Reborn's dependencies (like GLFW) so instead of being replaced by a stub, each call is manually patched out from MCPI. A stub is still generated just in case that library isn't present on the system to silence linker errors, but it is only loaded if no other version is available. - #### Headers This sub-component includes headers for SDL, GLES, and EGL allowing easy (cross-)compilation. diff --git a/docs/BUILDING.md b/docs/BUILDING.md index 95651db..0dba96e 100644 --- a/docs/BUILDING.md +++ b/docs/BUILDING.md @@ -1,21 +1,11 @@ # Building -## Build Dependencies -* Common - * ARM Compiler - * Host Compiler - * CMake -* Host Architecture Dependencies - * Client Mode Only - * OpenAL +## Dependencies -## Runtime Dependencies -* Non-ARM Host Architectures - * QEMU User-Mode -* Host Architecture Dependencies - * Client Mode Only - * OpenGL ES 2.0 - * OpenAL +### Debian/Ubuntu +```sh +./scripts/install-dependencies.sh +``` ## Instructions ```sh @@ -29,4 +19,4 @@ ``` ### Environment Variables -- ``MCPI_TOOLCHAIN_USE_DEFAULT_SEARCH_PATHS``: Use Default CMake Search Paths Rather Than Guessing +* ``MCPI_TOOLCHAIN_USE_DEFAULT_SEARCH_PATHS``: Use Default CMake Search Paths Rather Than Guessing diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md index 491135f..0e39e93 100644 --- a/docs/CHANGELOG.md +++ b/docs/CHANGELOG.md @@ -1,5 +1,20 @@ # Changelog +**2.4.0** +* [Modding SDK](../example-mods/README.md) +* Cache Blacklist/Whitelist +* More Reliable AppImages +* CMake Refactors +* Disable Broken Touchscreen-Specific Block Outline Behavior +* Add ``Remove Forced GUI Lag (Can Break Joining Servers)`` Feature Flag (Disabled By Default) +* Add ``Add Buckets`` Feature Flag (Enabled By Default) +* Add ``Classic HUD`` Feature Flag (Enabled By Default) +* Add ``Translucent Toolbar`` Feature Flag (Enabled By Default) +* Fix Sound Pitch/Volume/Attenuation +* Fix Holding Left-Click When Attacking +* Don't Force EGL (Should Fix Some NVIDIA Systems) +* Performance Fixes + **2.3.13** * Fix Texture Bug diff --git a/docs/DEDICATED_SERVER.md b/docs/DEDICATED_SERVER.md index 0720e6d..a9242fa 100644 --- a/docs/DEDICATED_SERVER.md +++ b/docs/DEDICATED_SERVER.md @@ -1,7 +1,7 @@ # Dedicated Server The dedicated server is a version of Minecraft: Pi Edition modified to run in a headless environment. It loads settings from a ``server.properties`` file. -This server is also compatible with MCPE Alpha v0.6.1. +This server is also compatible with MCPE Alpha v0.6.1[^1]. ## Setup @@ -15,3 +15,5 @@ An official Docker image is also provided: [thebrokenrail/minecraft-pi-reborn-se * Player data is not saved because of limitations with MCPE LAN worlds * An easy workaround is to place your inventory in a chest before logging off * Survival Mode servers are incompatible with unmodded MCPI + +[^1]: The exception to this is buckets, those will crash MCPE players. diff --git a/docs/INSTALL.md b/docs/INSTALL.md index 65f22d0..d409934 100644 --- a/docs/INSTALL.md +++ b/docs/INSTALL.md @@ -3,25 +3,23 @@ ## AppImage Download packages [here](https://jenkins.thebrokenrail.com/job/minecraft-pi-reborn/job/master/lastSuccessfulBuild/artifact/out/). +### System Requirements +* Debian Buster/Ubuntu 18.04 Or Higher +* QEMU User-Mode + * Debian/Ubuntu: ``sudo apt install qemu-user`` + * Arch: ``sudo pacman -Sy qemu-user`` +* Client-Only Dependencies + * Graphics Drivers + * GTK+ 3 + * Debian/Ubuntu: ``sudo apt install libgtk-3-0`` + * Arch: ``sudo pacman -Sy gtk3`` + * OpenAL + * Debian/Ubuntu: ``sudo apt install libopenal1`` + * Arch: ``sudo pacman -Sy openal`` + ### Running Follow [these](https://docs.appimage.org/introduction/quickstart.html#how-to-run-an-appimage) instructions. -### Picking A Package - -#### Name Format -``` -minecraft-pi-reborn-_X.Y.Z_ -``` - -#### Picking A Variant -* ``client``: Client mode, use this if you want to play MCPI. -* ``server``: Server mode, use this if you want to host a dedicated MCPI server. - -#### Picking An Architecture -* ``amd64``: x86_64, use this if you are using a device with an AMD or Intel processor. -* ``armhf``: ARM 32-Bit, use this if you are using an ARM device (like a Raspberry Pi). -* ``arm64``: ARM 64-Bit, ``armhf`` but for 64-bit devices. - ## Flatpak Download On Flathub diff --git a/images/start.png b/images/start.png index 49d1484..8384db4 100644 Binary files a/images/start.png and b/images/start.png differ diff --git a/media-layer/core/dependencies/glfw/src b/media-layer/core/dependencies/glfw/src index 6dd526f..c50d531 160000 --- a/media-layer/core/dependencies/glfw/src +++ b/media-layer/core/dependencies/glfw/src @@ -1 +1 @@ -Subproject commit 6dd526fb1a9c16c3170a0ebd2b5c73e4a2719245 +Subproject commit c50d53160fa9b579dda0d0a4f9a7c2512940df8e diff --git a/mods/src/touch/touch.cpp b/mods/src/touch/touch.cpp index 5b86f5b..75bff32 100644 --- a/mods/src/touch/touch.cpp +++ b/mods/src/touch/touch.cpp @@ -88,7 +88,7 @@ void init_touch() { unsigned char outline_patch[4] = {(unsigned char) (block_outlines ? !touch_gui : touch_gui), 0x00, 0x50, 0xe3}; // "cmp r0, #0x1" or "cmp r0, #0x0" patch((void *) 0x4a210, outline_patch); if (block_outlines) { - // Diable Broken Touchscreen-Specific Block Outline Behavior + // Disable Broken Touchscreen-Specific Block Outline Behavior unsigned char block_highlight_patch[4] = {0x03, 0x00, 0x53, 0xe1}; // "cmp r3, r3" patch((void *) 0x494b4, block_highlight_patch); } diff --git a/scripts/tools/get-apt-sources.sh b/scripts/tools/get-apt-sources.sh deleted file mode 100755 index a26dec4..0000000 --- a/scripts/tools/get-apt-sources.sh +++ /dev/null @@ -1,43 +0,0 @@ -#!/bin/sh - -set -e - -if [ ! -z "${MCPI_CUSTOM_APT_REPO}" ]; then - echo "${MCPI_CUSTOM_APT_REPO}" - exit 0 -fi - -ID="$(sed -n -e 's/^ID=//p' /etc/os-release)" -ID_LIKE="$(sed -n -e 's/^ID_LIKE=//p' /etc/os-release)" -VERSION_CODENAME="$(sed -n -e 's/^VERSION_CODENAME=//p' /etc/os-release)" - -OUT="" -get_apt_sources() { - if [ "${1}" = "ubuntu" ]; then - OUT="deb [arch=i386,amd64] http://archive.ubuntu.com/ubuntu/ ${VERSION_CODENAME} main restricted -deb [arch=i386,amd64] http://archive.ubuntu.com/ubuntu/ ${VERSION_CODENAME}-updates main restricted -deb [arch=i386,amd64] http://archive.ubuntu.com/ubuntu/ ${VERSION_CODENAME} universe -deb [arch=i386,amd64] http://archive.ubuntu.com/ubuntu/ ${VERSION_CODENAME}-updates universe -deb [arch=armhf,arm64] http://ports.ubuntu.com/ubuntu-ports/ ${VERSION_CODENAME} main restricted -deb [arch=armhf,arm64] http://ports.ubuntu.com/ubuntu-ports/ ${VERSION_CODENAME}-updates main restricted -deb [arch=armhf,arm64] http://ports.ubuntu.com/ubuntu-ports/ ${VERSION_CODENAME} universe -deb [arch=armhf,arm64] http://ports.ubuntu.com/ubuntu-ports/ ${VERSION_CODENAME}-updates universe" - elif [ "${1}" = "debian" ]; then - OUT="deb https://deb.debian.org/debian/ ${VERSION_CODENAME} main" - if [ "${VERSION_CODENAME}" != "sid" ] && [ "${VERSION_CODENAME}" != "unstable" ] && [ "${VERSION_CODENAME}" != "experimental" ]; then - OUT="${OUT} -deb https://deb.debian.org/debian/ ${VERSION_CODENAME}-updates main" - fi - fi -} -get_apt_sources "${ID}" -if [ -z "${OUT}" ]; then - get_apt_sources "${ID_LIKE}" -fi - -if [ ! -z "${OUT}" ]; then - echo "${OUT}" -else - echo "Unsupported Distribution: ${ID}" 1>&2 - exit 1 -fi