From 71fadf1645f98a43845b323dd4c14ec3421bd217 Mon Sep 17 00:00:00 2001 From: TheBrokenRail Date: Thu, 18 Feb 2021 14:04:59 -0500 Subject: [PATCH] Improve Documentation --- README.md | 70 +++++------------------- CREDITS.md => docs/CREDITS.md | 0 docs/INSTALL.md | 66 ++++++++++++++++++++++ MODDING.md => docs/MODDING.md | 0 docs/TROUBLESHOOTING.md | 26 +++++++++ images/start.png | Bin 0 -> 30256 bytes libreborn/include/libreborn/minecraft.h | 2 +- mods/src/input/input.c | 2 +- 8 files changed, 108 insertions(+), 58 deletions(-) rename CREDITS.md => docs/CREDITS.md (100%) create mode 100644 docs/INSTALL.md rename MODDING.md => docs/MODDING.md (100%) create mode 100644 docs/TROUBLESHOOTING.md create mode 100644 images/start.png diff --git a/README.md b/README.md index 3cfa90cc5..e9f77d0d1 100644 --- a/README.md +++ b/README.md @@ -1,64 +1,22 @@ +
+ +![Start Screen](images/start.png) + +
+ # Minecraft: Pi Edition: Reborn Minecraft: Pi Edition Modding Project -## Getting Started +## Installation -### Debian/Raspbian Buster Users -1. Install Newer ``libseccomp2`` - ```sh - # Install Backports Key - sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 04EE7237B7D453EC - sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 648ACFD622F3D138 - # Install Backports Repository - echo 'deb http://deb.debian.org/debian buster-backports main' | sudo tee -a /etc/apt/sources.list - # Update APT Index - sudo apt update - # Install Updated libseccomp2 - sudo apt install -t buster-backports libseccomp2 - ``` -2. Install Official Docker Build - ```sh - curl -fsSL https://get.docker.com -o get-docker.sh - sudo sh get-docker.sh - ``` -3. Remove Vanilla Minecraft: Pi Edition Package If Installed (``sudo apt remove minecraft-pi``) -4. Transfer Vanilla Minecraft: Pi Edition Worlds If Present (``mv ~/.minecraft ~/.minecraft-pi``) +### Option A: Pi-Apps (Raspberry Pi Only) +[![Pi-Apps](https://github.com/Botspot/pi-apps/blob/master/icons/badge.png?raw=true)](https://github.com/Botspot/pi-apps) -### Installation Instructions -1. Download Appropriate Package From [Here](https://jenkins.thebrokenrail.com/job/minecraft-pi-reborn/job/master/lastSuccessfulBuild/artifact/out/deb/) (See Table Below) -2. Install With ``sudo apt install ./`` -3. Have Fun! - -#### Package Table -| Package | Description | -| --- | --- | -| ``minecraft-pi-reborn-server`` | Minecraft Pi Edition Modded Into A Dedicated Server | -| ``minecraft-pi-reborn-virgl`` | Minecraft Pi Edition Using VirGL For Hardware Acceleration (Recommended For Desktop) | -| ``minecraft-pi-reborn-native`` | Minecraft: Pi Edition Using Docker Device Mounting For GPU Acceleration (Recommended For ARM Devices (ie. Raspberry Pi, PinePhone, etc)) | +### Option B: Manual Installation +[View Manual Installation](docs/INSTALL.md) ## Troubleshooting -Game logs are located in ``/tmp/minecraft-pi``. - -### ``Couldn't connect to Docker daemon at http+docker://localhost - is it running?`` -Start Docker if it isn't running: -```sh -sudo service docker start -``` - -### ``Error response from daemon: error gathering device information while adding custom device "/dev/dri": no such file or directory`` -Make sure you are using the correct GPU drivers for your system. - -If you are using a Raspberry Pi, make sure your GPU driver is set to ``Full KMS`` or ``Fake KMS`` in ``raspi-config``. - -### ``Segmentation Fault`` (Exit Code: ``139``) -Report an issue with reproduction instructions and system details. - -### ``[ERR]: Invalid ~/.minecraft-pi Permissions`` -Update ``~/.minecraft-pi`` permissions: -```sh -sudo chown -R "$(id -u):$(id -g)" ~/.minecraft-pi -chmod -R u+rw ~/.minecraft-pi -``` +[View Troubleshooting](docs/TROUBLESHOOTING.md) ## 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. @@ -73,7 +31,7 @@ This server is also compatible with MCPE Alpha v0.6.1. - Survival Mode servers are only compatible with ``minecraft-pi-reborn`` clients ## Modding -[View Modding](MODDING.md) +[View Modding](docs/MODDING.md) ## Credits -[View Credits](CREDITS.md) +[View Credits](docs/CREDITS.md) diff --git a/CREDITS.md b/docs/CREDITS.md similarity index 100% rename from CREDITS.md rename to docs/CREDITS.md diff --git a/docs/INSTALL.md b/docs/INSTALL.md new file mode 100644 index 000000000..5e2701544 --- /dev/null +++ b/docs/INSTALL.md @@ -0,0 +1,66 @@ +# Manual Installation + +## System Requirements +- At Least Debian/Raspbian Buster Or Ubuntu 20.04 + +## Before You Install + +
+Debian/Raspbian Buster + +### ``libseccomp2`` +``minecraft-pi-reborn`` requires a newer version of the package ``libseccomp2`` to be installed when using Debian/Raspbian Buster. + +```sh +# Install Backports Key +sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 04EE7237B7D453EC +sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 648ACFD622F3D138 +# Install Backports Repository +echo 'deb http://deb.debian.org/debian buster-backports main' | sudo tee -a /etc/apt/sources.list +# Update APT Index +sudo apt update +# Install Updated libseccomp2 +sudo apt install -t buster-backports libseccomp2 +``` + +### Official Docker Package +``minecraft-pi-reborn`` requires the official Docker package when running Debian/Raspbian Buster instead of the Debian package (``docker.io``). + +```sh +# Remove Debian Docker Package +sudo apt-get remove -y docker.io +# Install Official Docker Package +curl -fsSL https://get.docker.com -o get-docker.sh +sudo sh get-docker.sh +``` + +### Existing Installation +If you have un-modded ``minecraft-pi`` installed, you must remove it and transfer your existing worlds to ``minecraft-pi-reborn``'s folder. + +```sh +# Transfer Worlds +mv ~/.minecraft ~/.minecraft-pi +# Remove Vanilla Minecraft Pi +sudo apt-get remove -y minecraft-pi +``` + +
+ +
+NVIDIA Users + +The proprietary NVIDIA drivers are not supported, use either the open-source ``noveau`` drivers or use a different GPU (ie. Intel Integrated GPU). + +
+ +## Installing +1. Download Appropriate Package From [Here](https://jenkins.thebrokenrail.com/job/minecraft-pi-reborn/job/master/lastSuccessfulBuild/artifact/out/deb/) (See Table Below To Pick Correct Package) +2. Install With ``sudo apt install ./`` Or Your Preferred Package Installer +3. Have Fun! + +### Package Table +| Package | Description | +| --- | --- | +| ``minecraft-pi-reborn-virgl`` | Minecraft Pi Edition Using VirGL For Hardware Acceleration (Recommended For Desktop/Laptop) | +| ``minecraft-pi-reborn-native`` | Minecraft: Pi Edition Using Docker Device Mounting For GPU Acceleration (Recommended For ARM Devices (ie. Raspberry Pi, PinePhone, etc)) | +| ``minecraft-pi-reborn-server`` | Minecraft Pi Edition Modded Into A Dedicated Server | \ No newline at end of file diff --git a/MODDING.md b/docs/MODDING.md similarity index 100% rename from MODDING.md rename to docs/MODDING.md diff --git a/docs/TROUBLESHOOTING.md b/docs/TROUBLESHOOTING.md new file mode 100644 index 000000000..9627dbe80 --- /dev/null +++ b/docs/TROUBLESHOOTING.md @@ -0,0 +1,26 @@ +# Troubleshooting +Game logs are located in ``/tmp/minecraft-pi``. + +## ``Couldn't connect to Docker daemon at http+docker://localhost - is it running?`` +Start Docker if it isn't running: +```sh +sudo service docker start +``` + +## ``Error response from daemon: error gathering device information while adding custom device "/dev/dri": no such file or directory`` +Make sure you are using the correct GPU drivers for your system. + +If you are using a Raspberry Pi, make sure your GPU driver is set to ``Full KMS`` or ``Fake KMS`` in ``raspi-config``. + +## ``Segmentation Fault`` (Exit Code: ``139``) +Report an issue with reproduction instructions and system details. + +## ``[ERR]: Invalid ~/.minecraft-pi Permissions`` +Update ``~/.minecraft-pi`` permissions: +```sh +sudo chown -R "$(id -u):$(id -g)" ~/.minecraft-pi +chmod -R u+rw ~/.minecraft-pi +``` + +## Other +If you experience a crash/error not listed above, report it on the issue tracker **with your game log attached**. \ No newline at end of file diff --git a/images/start.png b/images/start.png new file mode 100644 index 0000000000000000000000000000000000000000..e6180eed7d53c1847489ebf0d507a5376aa6c6c2 GIT binary patch literal 30256 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 DJ*VUz literal 0 HcmV?d00001 diff --git a/libreborn/include/libreborn/minecraft.h b/libreborn/include/libreborn/minecraft.h index a3cf7a384..ca1bbb4bc 100644 --- a/libreborn/include/libreborn/minecraft.h +++ b/libreborn/include/libreborn/minecraft.h @@ -94,7 +94,7 @@ static Minecraft_getProgressMessage_t Minecraft_getProgressMessage = (Minecraft_ typedef uint32_t (*Minecraft_isLevelGenerated_t)(unsigned char *minecraft); static Minecraft_isLevelGenerated_t Minecraft_isLevelGenerated = (Minecraft_isLevelGenerated_t) 0x16e6c; -typedef int32_t (*Minecraft_isCreativeMode_t)(unsigned char *minecraft); +typedef bool (*Minecraft_isCreativeMode_t)(unsigned char *minecraft); static Minecraft_isCreativeMode_t Minecraft_isCreativeMode = (Minecraft_isCreativeMode_t) 0x17270; typedef void (*Minecraft_releaseMouse_t)(unsigned char *minecraft); diff --git a/mods/src/input/input.c b/mods/src/input/input.c index 6b995a4a6..37e740cd8 100644 --- a/mods/src/input/input.c +++ b/mods/src/input/input.c @@ -82,7 +82,7 @@ static void Minecraft_tickInput_injection(unsigned char *minecraft) { #include // Block UI Interaction When Mouse Is Locked -static int32_t Gui_tickItemDrop_Minecraft_isCreativeMode_call_injection(unsigned char *minecraft) { +static bool Gui_tickItemDrop_Minecraft_isCreativeMode_call_injection(unsigned char *minecraft) { if (SDL_ShowCursor(SDL_QUERY) == SDL_ENABLE) { // Call Original Method return (*Minecraft_isCreativeMode)(minecraft);