Fixes
This commit is contained in:
parent
62204aa1bf
commit
0ccc05ad90
@ -1,3 +1,3 @@
|
|||||||
FROM thebrokenrail/minecraft-pi:client
|
FROM thebrokenrail/minecraft-pi-reborn:client
|
||||||
|
|
||||||
ENV MCPI_MODE=server
|
ENV MCPI_MODE=server
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
# Modding
|
# Modding
|
||||||
Modding Minecraft: Pi Edition is possible by patching the binary at runtime. To make this easier ``minecraft-pi-reborn`` includes a library called ``libcore.so`` which provides several functions to help you patch the game.
|
Modding Minecraft: Pi Edition is possible by patching the binary at runtime. To make this easier ``minecraft-pi-reborn`` includes a library called ``libreborn.so`` which provides several functions to help you patch the game.
|
||||||
|
|
||||||
## Hex Addresses
|
## Hex Addresses
|
||||||
Minecraft: Pi Edition has no symbols so you must patch the hex address of an instruction instead of using a function name. Hex addresses can be found using tools like [Ghidra](https://ghidra-sre.org) or [RetDec](https://retdec.com). To find out what a function does, you can find its equivalent in Minecraft: Pocket Edition 0.6.1 and use its name for reference because Minecraft: Pocket Edition 0.6.1 includes symbols.
|
Minecraft: Pi Edition has no symbols so you must patch the hex address of an instruction instead of using a function name. Hex addresses can be found using tools like [Ghidra](https://ghidra-sre.org) or [RetDec](https://retdec.com). To find out what a function does, you can find its equivalent in Minecraft: Pocket Edition 0.6.1 and use its name for reference because Minecraft: Pocket Edition 0.6.1 includes symbols.
|
||||||
@ -10,7 +10,7 @@ Minecraft: Pi Edition has no symbols so you must patch the hex address of an ins
|
|||||||
## C++ Strings
|
## C++ Strings
|
||||||
Minecraft: Pi Edition was compiled with an old version of GCC, so when interacting with C++ strings, make sure you set ``-D_GLIBCXX_USE_CXX11_ABI=0``.
|
Minecraft: Pi Edition was compiled with an old version of GCC, so when interacting with C++ strings, make sure you set ``-D_GLIBCXX_USE_CXX11_ABI=0``.
|
||||||
|
|
||||||
## ``libcore.so`` API
|
## ``libreborn.so`` API
|
||||||
Header files and the shared library can be download from [Jenkins](https://jenkins.thebrokenrail.com/job/minecraft-pi-reborn/job/master/lastSuccessfulBuild/artifact/out/lib).
|
Header files and the shared library can be download from [Jenkins](https://jenkins.thebrokenrail.com/job/minecraft-pi-reborn/job/master/lastSuccessfulBuild/artifact/out/lib).
|
||||||
|
|
||||||
### ``void overwrite(void *start, void *target)``
|
### ``void overwrite(void *start, void *target)``
|
||||||
|
12
README.md
12
README.md
@ -1,10 +1,11 @@
|
|||||||
# Minecraft: Pi Edition: Reborn
|
# Minecraft: Pi Edition: Reborn
|
||||||
Minecraft: Pi Edition Modding Project
|
Minecraft: Pi Edition Modding Project
|
||||||
|
|
||||||
## Setup
|
## Getting Started
|
||||||
1. Remove Old Minecraft: Pi Edition Package If Installed (``sudo apt remove minecraft-pi``)
|
1. Remove Old Minecraft: Pi Edition Package If Installed (``sudo apt remove minecraft-pi``)
|
||||||
2. Download Appropriate Package (See Table Below) From [Here](https://jenkins.thebrokenrail.com/job/minecraft-pi-reborn/job/master/lastSuccessfulBuild/artifact/out/deb/)
|
2. Download Appropriate Package From [Here](https://jenkins.thebrokenrail.com/job/minecraft-pi-reborn/job/master/lastSuccessfulBuild/artifact/out/deb/) (See Table Below)
|
||||||
3. Install With ``sudo apt install ./<Path To File>``
|
3. Install With ``sudo apt install ./<Path To File>``
|
||||||
|
4. Have Fun!
|
||||||
|
|
||||||
### Packages
|
### Packages
|
||||||
| Package | Description |
|
| Package | Description |
|
||||||
@ -18,9 +19,7 @@ Minecraft: Pi Edition Modding Project
|
|||||||
#### Docker Versions
|
#### Docker Versions
|
||||||
While the distribution-provided version of Docker is fine for most systems, in rare cases it can be outdated and cause bugs. Before reporting a bug, try using the official builds of Docker. These can be installed by following your distribution's instructions at https://docs.docker.com/engine/install.
|
While the distribution-provided version of Docker is fine for most systems, in rare cases it can be outdated and cause bugs. Before reporting a bug, try using the official builds of Docker. These can be installed by following your distribution's instructions at https://docs.docker.com/engine/install.
|
||||||
|
|
||||||
### Specific Notes
|
#### Debian/Raspbian Buster And ``libseccomp2``
|
||||||
|
|
||||||
#### Debian/Raspbian Buster
|
|
||||||
By default Raspbian Buster ships an older version of the package ``libseccomp2``. This package is used to block certain dangerous system calls from running inside Docker containers. The included version accidentally blocks the system call ``clock_gettime64``, this causes bugs inside Minecraft: Pi Edition. However, the Debian ``buster-backports`` repo includes an updated version. You can enable the ``buster-backports`` repo and update ``libseccomp2`` by running:
|
By default Raspbian Buster ships an older version of the package ``libseccomp2``. This package is used to block certain dangerous system calls from running inside Docker containers. The included version accidentally blocks the system call ``clock_gettime64``, this causes bugs inside Minecraft: Pi Edition. However, the Debian ``buster-backports`` repo includes an updated version. You can enable the ``buster-backports`` repo and update ``libseccomp2`` by running:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
@ -35,9 +34,6 @@ sudo apt update
|
|||||||
sudo apt install -t buster-backports libseccomp2
|
sudo apt install -t buster-backports libseccomp2
|
||||||
```
|
```
|
||||||
|
|
||||||
### PinePhone (Mobian)
|
|
||||||
This supports running on a PinePhone using Mobian. However, you will need to attach a keyboard and mouse because Minecraft: Pi Edition does not have touch support.
|
|
||||||
|
|
||||||
## Troubleshooting Crashes
|
## Troubleshooting Crashes
|
||||||
Game logs are located in ``/tmp/minecraft-pi``.
|
Game logs are located in ``/tmp/minecraft-pi``.
|
||||||
|
|
||||||
|
@ -2,6 +2,17 @@
|
|||||||
|
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
|
cd launcher
|
||||||
|
|
||||||
|
mkdir build
|
||||||
|
cd build
|
||||||
|
|
||||||
|
cmake ..
|
||||||
|
make -j$(nproc)
|
||||||
|
make install DESTDIR=../../minecraft-pi
|
||||||
|
|
||||||
|
cd ../../
|
||||||
|
|
||||||
cd mods
|
cd mods
|
||||||
|
|
||||||
mkdir build
|
mkdir build
|
||||||
@ -9,11 +20,6 @@ cd build
|
|||||||
|
|
||||||
cmake ..
|
cmake ..
|
||||||
make -j$(nproc)
|
make -j$(nproc)
|
||||||
|
make install DESTDIR=../../minecraft-pi
|
||||||
|
|
||||||
cd ../../
|
cd ../../
|
||||||
|
|
||||||
mkdir minecraft-pi/mods
|
|
||||||
cp mods/build/lib*.so minecraft-pi/mods
|
|
||||||
|
|
||||||
cp mods/build/core/lib*.so minecraft-pi
|
|
||||||
cp mods/build/core/launcher minecraft-pi
|
|
@ -1,15 +0,0 @@
|
|||||||
cmake_minimum_required(VERSION 3.1.0)
|
|
||||||
|
|
||||||
project(core)
|
|
||||||
|
|
||||||
add_compile_options(-Wall -Wextra -Werror)
|
|
||||||
|
|
||||||
add_library(bcm_host SHARED src/stubs/bcm_host.c)
|
|
||||||
add_library(EGL SHARED src/stubs/EGL.c)
|
|
||||||
|
|
||||||
# MCPI Links Against GLESv2 But Requires GLESv1_CM
|
|
||||||
add_library(GLESv2 SHARED src/stubs/GLESv2.c)
|
|
||||||
target_link_libraries(GLESv2 GLESv1_CM)
|
|
||||||
target_link_options(GLESv2 PRIVATE "-Wl,--no-as-needed")
|
|
||||||
|
|
||||||
add_executable(launcher src/launcher.c)
|
|
@ -1,7 +1,7 @@
|
|||||||
version: '3'
|
version: '3'
|
||||||
services:
|
services:
|
||||||
minecraft-pi:
|
minecraft-pi:
|
||||||
image: 'thebrokenrail/minecraft-pi:client'
|
image: 'thebrokenrail/minecraft-pi-reborn:client'
|
||||||
network_mode: 'host'
|
network_mode: 'host'
|
||||||
volumes:
|
volumes:
|
||||||
- /usr/bin/qemu-arm-static:/usr/bin/qemu-arm-static
|
- /usr/bin/qemu-arm-static:/usr/bin/qemu-arm-static
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
version: '3'
|
version: '3'
|
||||||
services:
|
services:
|
||||||
minecraft-pi:
|
minecraft-pi:
|
||||||
image: 'thebrokenrail/minecraft-pi:client'
|
image: 'thebrokenrail/minecraft-pi-reborn:client'
|
||||||
network_mode: 'host'
|
network_mode: 'host'
|
||||||
volumes:
|
volumes:
|
||||||
- /usr/bin/qemu-arm-static:/usr/bin/qemu-arm-static
|
- /usr/bin/qemu-arm-static:/usr/bin/qemu-arm-static
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
version: '3'
|
version: '3'
|
||||||
services:
|
services:
|
||||||
minecraft-pi-server:
|
minecraft-pi-server:
|
||||||
image: 'thebrokenrail/minecraft-pi:server'
|
image: 'thebrokenrail/minecraft-pi-reborn:server'
|
||||||
network_mode: 'host'
|
network_mode: 'host'
|
||||||
volumes:
|
volumes:
|
||||||
- /usr/bin/qemu-arm-static:/usr/bin/qemu-arm-static
|
- /usr/bin/qemu-arm-static:/usr/bin/qemu-arm-static
|
||||||
|
10
launcher/CMakeLists.txt
Normal file
10
launcher/CMakeLists.txt
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
cmake_minimum_required(VERSION 3.1.0)
|
||||||
|
|
||||||
|
project(launcher)
|
||||||
|
|
||||||
|
add_compile_options(-Wall -Wextra -Werror)
|
||||||
|
|
||||||
|
add_executable(launcher src/launcher.c)
|
||||||
|
|
||||||
|
# Install
|
||||||
|
install(TARGETS launcher DESTINATION /)
|
@ -111,9 +111,7 @@ int main(__attribute__((unused)) int argc, char *argv[]) {
|
|||||||
char *ld_path = NULL;
|
char *ld_path = NULL;
|
||||||
|
|
||||||
// Start Configuring LD_LIBRARY_PATH
|
// Start Configuring LD_LIBRARY_PATH
|
||||||
char *cwd = getcwd(NULL, 0);
|
asprintf(&ld_path, "/usr/arm-linux-gnueabihf/lib");
|
||||||
asprintf(&ld_path, "%s:/usr/arm-linux-gnueabihf/lib", cwd);
|
|
||||||
free(cwd);
|
|
||||||
|
|
||||||
// Start Configuring LD_PRELOAD
|
// Start Configuring LD_PRELOAD
|
||||||
char *ld_preload = NULL;
|
char *ld_preload = NULL;
|
||||||
@ -127,7 +125,7 @@ int main(__attribute__((unused)) int argc, char *argv[]) {
|
|||||||
asprintf(&home_mods, "%s/.minecraft/mods/", getenv("HOME"));
|
asprintf(&home_mods, "%s/.minecraft/mods/", getenv("HOME"));
|
||||||
load(&ld_path, &ld_preload, home_mods);
|
load(&ld_path, &ld_preload, home_mods);
|
||||||
free(home_mods);
|
free(home_mods);
|
||||||
|
|
||||||
// Add Existing LD_LIBRARY_PATH
|
// Add Existing LD_LIBRARY_PATH
|
||||||
asprintf(&ld_path, "%s:%s", ld_path, get_env_safe("LD_LIBRARY_PATH"));
|
asprintf(&ld_path, "%s:%s", ld_path, get_env_safe("LD_LIBRARY_PATH"));
|
||||||
|
|
13
libreborn/CMakeLists.txt
Normal file
13
libreborn/CMakeLists.txt
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
cmake_minimum_required(VERSION 3.13.0)
|
||||||
|
|
||||||
|
project(libreborn)
|
||||||
|
|
||||||
|
add_compile_options(-Wall -Wextra -Werror)
|
||||||
|
add_link_options(-Wl,--no-undefined)
|
||||||
|
|
||||||
|
add_library(reborn SHARED src/libreborn.c)
|
||||||
|
target_link_libraries(reborn dl)
|
||||||
|
target_include_directories(reborn PUBLIC include)
|
||||||
|
|
||||||
|
# Install
|
||||||
|
install(TARGETS reborn DESTINATION /mods)
|
@ -1,6 +1,4 @@
|
|||||||
#ifndef LIBLOADER_H
|
#pragma once
|
||||||
|
|
||||||
#define LIBLOADER_H
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
@ -47,5 +45,3 @@ void _patch_address(const char *file, int line, void *start, void *target);
|
|||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#endif
|
|
@ -7,7 +7,7 @@
|
|||||||
#include <elf.h>
|
#include <elf.h>
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
|
|
||||||
#include <libcore/libcore.h>
|
#include <libreborn/libreborn.h>
|
||||||
|
|
||||||
// Find And Iterate Over All .text Sections In Current Binary
|
// Find And Iterate Over All .text Sections In Current Binary
|
||||||
typedef void (*text_section_callback)(void *section, Elf32_Word size, void *data);
|
typedef void (*text_section_callback)(void *section, Elf32_Word size, void *data);
|
@ -2,60 +2,78 @@ cmake_minimum_required(VERSION 3.13.0)
|
|||||||
|
|
||||||
project(mods)
|
project(mods)
|
||||||
|
|
||||||
|
## Setup
|
||||||
|
|
||||||
add_compile_options(-Wall -Wextra -Werror)
|
add_compile_options(-Wall -Wextra -Werror)
|
||||||
add_link_options(-Wl,--no-undefined)
|
add_link_options(-Wl,--no-undefined)
|
||||||
# Disable C++11 String ABI
|
# Disable C++11 String ABI
|
||||||
add_definitions(-D_GLIBCXX_USE_CXX11_ABI=0)
|
add_definitions(-D_GLIBCXX_USE_CXX11_ABI=0)
|
||||||
|
|
||||||
add_subdirectory(../core core)
|
# Add libreborn
|
||||||
|
add_subdirectory(../libreborn libreborn)
|
||||||
|
|
||||||
# Include Libraries Exported To Runtime Environment
|
# Include Libraries Exported To Runtime Environment
|
||||||
include_directories(/app/export/include)
|
include_directories(/app/export/include)
|
||||||
|
|
||||||
# Include Headers
|
|
||||||
include_directories(include)
|
|
||||||
|
|
||||||
# Find GLFW
|
# Find GLFW
|
||||||
find_package(glfw3 3.3 REQUIRED)
|
find_package(glfw3 3.3 REQUIRED)
|
||||||
|
|
||||||
|
## Mods
|
||||||
|
|
||||||
add_library(compat SHARED src/compat/compat.c)
|
add_library(compat SHARED src/compat/compat.c)
|
||||||
target_link_libraries(compat feature input screenshot SDL GLESv1_CM X11 dl glfw Xfixes)
|
target_link_libraries(compat feature input screenshot SDL GLESv1_CM X11 dl glfw Xfixes)
|
||||||
|
|
||||||
add_library(readdir SHARED src/compat/readdir.c)
|
add_library(readdir SHARED src/readdir/readdir.c)
|
||||||
|
|
||||||
add_library(core SHARED src/core/core.c)
|
|
||||||
target_link_libraries(core dl)
|
|
||||||
|
|
||||||
add_library(feature SHARED src/feature/feature.c)
|
add_library(feature SHARED src/feature/feature.c)
|
||||||
|
target_link_libraries(feature reborn)
|
||||||
|
|
||||||
add_library(server SHARED src/server/server.cpp src/server/server_properties.cpp)
|
add_library(server SHARED src/server/server.cpp src/server/server_properties.cpp)
|
||||||
target_link_libraries(server core feature dl SDL pthread)
|
target_link_libraries(server reborn feature dl SDL pthread)
|
||||||
|
|
||||||
add_library(screenshot SHARED src/screenshot/screenshot.c)
|
add_library(screenshot SHARED src/screenshot/screenshot.c)
|
||||||
target_link_libraries(screenshot GLESv1_CM freeimage)
|
target_link_libraries(screenshot reborn GLESv1_CM freeimage)
|
||||||
|
|
||||||
add_library(camera SHARED src/camera/camera.cpp)
|
add_library(camera SHARED src/camera/camera.cpp)
|
||||||
target_link_libraries(camera core screenshot)
|
target_link_libraries(camera reborn screenshot)
|
||||||
|
|
||||||
add_library(game_mode SHARED src/game_mode/game_mode.c src/game_mode/game_mode.cpp)
|
add_library(game_mode SHARED src/game_mode/game_mode.c src/game_mode/game_mode.cpp)
|
||||||
target_link_libraries(game_mode core)
|
target_link_libraries(game_mode reborn)
|
||||||
|
|
||||||
add_library(input SHARED src/input/input.c src/input/input.cpp)
|
add_library(input SHARED src/input/input.c src/input/input.cpp)
|
||||||
target_link_libraries(input core feature SDL)
|
target_link_libraries(input reborn feature SDL)
|
||||||
|
|
||||||
add_library(misc SHARED src/misc/misc.c src/misc/misc.cpp)
|
add_library(misc SHARED src/misc/misc.c src/misc/misc.cpp)
|
||||||
target_link_libraries(misc core feature util)
|
target_link_libraries(misc reborn feature util)
|
||||||
|
|
||||||
add_library(options SHARED src/options/options.c)
|
add_library(options SHARED src/options/options.c)
|
||||||
target_link_libraries(options core feature)
|
target_link_libraries(options reborn feature)
|
||||||
|
|
||||||
add_library(override SHARED src/override/override.c)
|
add_library(override SHARED src/override/override.c)
|
||||||
target_link_libraries(override dl)
|
target_link_libraries(override reborn dl)
|
||||||
|
|
||||||
add_library(textures SHARED src/textures/textures.cpp)
|
add_library(textures SHARED src/textures/textures.cpp)
|
||||||
target_link_libraries(textures core feature GLESv1_CM)
|
target_link_libraries(textures reborn feature GLESv1_CM)
|
||||||
|
|
||||||
add_library(test SHARED src/test/test.c)
|
add_library(test SHARED src/test/test.c)
|
||||||
|
target_link_libraries(test reborn)
|
||||||
|
|
||||||
add_library(init SHARED src/init/init.c)
|
add_library(init SHARED src/init/init.c)
|
||||||
target_link_libraries(init compat server game_mode camera input misc options textures test)
|
target_link_libraries(init compat server game_mode camera input misc options textures test)
|
||||||
|
|
||||||
|
## Stubs
|
||||||
|
|
||||||
|
# Stub RPI-Specific Graphics
|
||||||
|
add_library(bcm_host SHARED src/stubs/bcm_host.c)
|
||||||
|
|
||||||
|
# Stub EGL
|
||||||
|
add_library(EGL SHARED src/stubs/EGL.c)
|
||||||
|
target_link_libraries(EGL compat)
|
||||||
|
|
||||||
|
# MCPI Links Against GLESv2 But Uses GLESv1_CM
|
||||||
|
add_library(GLESv2 SHARED src/stubs/GLESv2.c)
|
||||||
|
target_link_libraries(GLESv2 GLESv1_CM)
|
||||||
|
target_link_options(GLESv2 PRIVATE "-Wl,--no-as-needed")
|
||||||
|
|
||||||
|
## Install
|
||||||
|
install(TARGETS init compat readdir feature screenshot override server game_mode camera input misc options textures test bcm_host EGL GLESv2 DESTINATION /mods)
|
@ -1,4 +1,4 @@
|
|||||||
#include <libcore/libcore.h>
|
#include <libreborn/libreborn.h>
|
||||||
|
|
||||||
#include "../screenshot/screenshot.h"
|
#include "../screenshot/screenshot.h"
|
||||||
#include "../init/init.h"
|
#include "../init/init.h"
|
||||||
|
@ -14,13 +14,15 @@
|
|||||||
#include <GLES/gl.h>
|
#include <GLES/gl.h>
|
||||||
#include <X11/Xlib.h>
|
#include <X11/Xlib.h>
|
||||||
|
|
||||||
#include <libcore/libcore.h>
|
#include <libreborn/libreborn.h>
|
||||||
|
|
||||||
#include "../feature/feature.h"
|
#include "../feature/feature.h"
|
||||||
#include "../input/input.h"
|
#include "../input/input.h"
|
||||||
#include "../screenshot/screenshot.h"
|
#include "../screenshot/screenshot.h"
|
||||||
#include "../init/init.h"
|
#include "../init/init.h"
|
||||||
|
|
||||||
|
#include "compat.h"
|
||||||
|
|
||||||
static GLFWwindow *glfw_window;
|
static GLFWwindow *glfw_window;
|
||||||
|
|
||||||
static int is_server = 0;
|
static int is_server = 0;
|
||||||
@ -202,14 +204,11 @@ HOOK(SDL_WM_SetCaption, void, (const char *title, __attribute__((unused)) const
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#include <EGL/egl.h>
|
void compat_eglSwapBuffers() {
|
||||||
HOOK(eglSwapBuffers, EGLBoolean, (__attribute__((unused)) EGLDisplay display, __attribute__((unused)) EGLSurface surface)) {
|
|
||||||
if (!is_server) {
|
if (!is_server) {
|
||||||
// Don't Swap Buffers In A Context-Less Window
|
// Don't Swap Buffers In A Context-Less Window
|
||||||
glfwSwapBuffers(glfw_window);
|
glfwSwapBuffers(glfw_window);
|
||||||
}
|
}
|
||||||
|
|
||||||
return EGL_TRUE;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static int is_fullscreen = 0;
|
static int is_fullscreen = 0;
|
||||||
|
3
mods/src/compat/compat.h
Normal file
3
mods/src/compat/compat.h
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
void compat_eglSwapBuffers();
|
@ -1,7 +1,7 @@
|
|||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
#include <libcore/libcore.h>
|
#include <libreborn/libreborn.h>
|
||||||
|
|
||||||
#include "feature.h"
|
#include "feature.h"
|
||||||
|
|
||||||
|
@ -1,6 +1,4 @@
|
|||||||
#ifndef FEATURE_H
|
#pragma once
|
||||||
|
|
||||||
#define FEATURE_H
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
@ -12,5 +10,3 @@ int feature_get_mode();
|
|||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#endif
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
#include <libcore/libcore.h>
|
#include <libreborn/libreborn.h>
|
||||||
|
|
||||||
#include "game_mode.h"
|
#include "game_mode.h"
|
||||||
#include "../init/init.h"
|
#include "../init/init.h"
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
#include <libcore/libcore.h>
|
#include <libreborn/libreborn.h>
|
||||||
|
|
||||||
#include "game_mode.h"
|
#include "game_mode.h"
|
||||||
|
|
||||||
|
@ -1,6 +1,4 @@
|
|||||||
#ifndef GAME_MODE_H
|
#pragma once
|
||||||
|
|
||||||
#define GAME_MODE_H
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
@ -10,6 +8,4 @@ void init_game_mode_cpp();
|
|||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif
|
#endif
|
@ -1,6 +1,4 @@
|
|||||||
#ifndef INIT_H
|
#pragma once
|
||||||
|
|
||||||
#define INIT_H
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
@ -18,6 +16,4 @@ void init_textures();
|
|||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif
|
#endif
|
@ -1,4 +1,4 @@
|
|||||||
#include <libcore/libcore.h>
|
#include <libreborn/libreborn.h>
|
||||||
|
|
||||||
#include "../feature/feature.h"
|
#include "../feature/feature.h"
|
||||||
#include "input.h"
|
#include "input.h"
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
#include <libcore/libcore.h>
|
#include <libreborn/libreborn.h>
|
||||||
|
|
||||||
#include "../feature/feature.h"
|
#include "../feature/feature.h"
|
||||||
#include "input.h"
|
#include "input.h"
|
||||||
|
@ -1,6 +1,4 @@
|
|||||||
#ifndef INPUT_H
|
#pragma once
|
||||||
|
|
||||||
#define INPUT_H
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
@ -20,5 +18,3 @@ void init_input_cpp();
|
|||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#endif
|
|
||||||
|
@ -1,6 +1,4 @@
|
|||||||
#ifndef MINECRAFT_H
|
#pragma once
|
||||||
|
|
||||||
#define MINECRAFT_H
|
|
||||||
|
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
|
|
||||||
@ -367,6 +365,4 @@ static SelectWorldScreen_getUniqueLevelName_t Touch_SelectWorldScreen_getUniqueL
|
|||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#pragma GCC diagnostic pop
|
#pragma GCC diagnostic pop
|
||||||
|
|
||||||
#endif
|
|
@ -1,4 +1,4 @@
|
|||||||
#include <libcore/libcore.h>
|
#include <libreborn/libreborn.h>
|
||||||
|
|
||||||
#include "../feature/feature.h"
|
#include "../feature/feature.h"
|
||||||
#include "misc.h"
|
#include "misc.h"
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
|
|
||||||
#include <cstring>
|
#include <cstring>
|
||||||
|
|
||||||
#include <libcore/libcore.h>
|
#include <libreborn/libreborn.h>
|
||||||
|
|
||||||
#include "../feature/feature.h"
|
#include "../feature/feature.h"
|
||||||
#include "misc.h"
|
#include "misc.h"
|
||||||
|
@ -1,6 +1,4 @@
|
|||||||
#ifndef MISC_H
|
#pragma once
|
||||||
|
|
||||||
#define MISC_H
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
@ -10,6 +8,4 @@ void init_misc_cpp();
|
|||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif
|
#endif
|
@ -1,6 +1,6 @@
|
|||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
#include <libcore/libcore.h>
|
#include <libreborn/libreborn.h>
|
||||||
|
|
||||||
#include "../feature/feature.h"
|
#include "../feature/feature.h"
|
||||||
#include "../init/init.h"
|
#include "../init/init.h"
|
||||||
|
@ -8,7 +8,7 @@
|
|||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#include <fcntl.h>
|
#include <fcntl.h>
|
||||||
|
|
||||||
#include <libcore/libcore.h>
|
#include <libreborn/libreborn.h>
|
||||||
|
|
||||||
static int starts_with(const char *s, const char *t) {
|
static int starts_with(const char *s, const char *t) {
|
||||||
return strncmp(s, t, strlen(t)) == 0;
|
return strncmp(s, t, strlen(t)) == 0;
|
||||||
|
@ -9,7 +9,7 @@
|
|||||||
|
|
||||||
#include <GLES/gl.h>
|
#include <GLES/gl.h>
|
||||||
|
|
||||||
#include <libcore/libcore.h>
|
#include <libreborn/libreborn.h>
|
||||||
|
|
||||||
#include "screenshot.h"
|
#include "screenshot.h"
|
||||||
|
|
||||||
|
@ -1,6 +1,4 @@
|
|||||||
#ifndef SCREENSHOT_H
|
#pragma once
|
||||||
|
|
||||||
#define SCREENSHOT_H
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
@ -10,6 +8,4 @@ void take_screenshot();
|
|||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif
|
#endif
|
@ -12,9 +12,8 @@
|
|||||||
|
|
||||||
#include <SDL/SDL_events.h>
|
#include <SDL/SDL_events.h>
|
||||||
|
|
||||||
#include <libcore/libcore.h>
|
#include <libreborn/libreborn.h>
|
||||||
|
|
||||||
#include "server.h"
|
|
||||||
#include "server_internal.h"
|
#include "server_internal.h"
|
||||||
#include "server_properties.h"
|
#include "server_properties.h"
|
||||||
|
|
||||||
|
@ -1,15 +0,0 @@
|
|||||||
#ifndef SERVER_H
|
|
||||||
|
|
||||||
#define SERVER_H
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
extern "C" {
|
|
||||||
#endif\
|
|
||||||
|
|
||||||
const char *server_get_motd();
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif
|
|
@ -1,6 +1,4 @@
|
|||||||
#ifndef SERVER_INTERNAL_H
|
#pragma once
|
||||||
|
|
||||||
#define SERVER_INTERNAL_H
|
|
||||||
|
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
@ -9,6 +7,4 @@ std::string server_internal_get_world_name();
|
|||||||
unsigned char *server_internal_get_level(unsigned char *minecraft);
|
unsigned char *server_internal_get_level(unsigned char *minecraft);
|
||||||
std::vector<unsigned char *> server_internal_get_players(unsigned char *level);
|
std::vector<unsigned char *> server_internal_get_players(unsigned char *level);
|
||||||
std::string server_internal_get_player_username(unsigned char *player);
|
std::string server_internal_get_player_username(unsigned char *player);
|
||||||
unsigned char *server_internal_get_minecraft(unsigned char *player);
|
unsigned char *server_internal_get_minecraft(unsigned char *player);
|
||||||
|
|
||||||
#endif
|
|
@ -1,6 +1,4 @@
|
|||||||
#ifndef SERVER_PROPERTIES_H
|
#pragma once
|
||||||
|
|
||||||
#define SERVER_PROPERTIES_H
|
|
||||||
|
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <istream>
|
#include <istream>
|
||||||
@ -17,6 +15,4 @@ public:
|
|||||||
std::string get_string(std::string const& name, std::string const& def);
|
std::string get_string(std::string const& name, std::string const& def);
|
||||||
int get_int(std::string const& name, std::string const& def);
|
int get_int(std::string const& name, std::string const& def);
|
||||||
bool get_bool(std::string const& name, std::string const& def);
|
bool get_bool(std::string const& name, std::string const& def);
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
|
@ -1,5 +1,7 @@
|
|||||||
#include <EGL/egl.h>
|
#include <EGL/egl.h>
|
||||||
|
|
||||||
|
#include "../compat/compat.h"
|
||||||
|
|
||||||
// EGL/SDL Is Replaced With GLFW
|
// EGL/SDL Is Replaced With GLFW
|
||||||
|
|
||||||
EGLDisplay eglGetDisplay(__attribute__((unused)) NativeDisplayType native_display) {
|
EGLDisplay eglGetDisplay(__attribute__((unused)) NativeDisplayType native_display) {
|
||||||
@ -32,6 +34,9 @@ EGLBoolean eglDestroyContext(__attribute__((unused)) EGLDisplay display, __attri
|
|||||||
EGLBoolean eglTerminate(__attribute__((unused)) EGLDisplay display) {
|
EGLBoolean eglTerminate(__attribute__((unused)) EGLDisplay display) {
|
||||||
return EGL_TRUE;
|
return EGL_TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Send Buffer Swap Request To GLFW
|
||||||
EGLBoolean eglSwapBuffers(__attribute__((unused)) EGLDisplay display, __attribute__((unused)) EGLSurface surface) {
|
EGLBoolean eglSwapBuffers(__attribute__((unused)) EGLDisplay display, __attribute__((unused)) EGLSurface surface) {
|
||||||
|
compat_eglSwapBuffers();
|
||||||
return EGL_TRUE;
|
return EGL_TRUE;
|
||||||
}
|
}
|
@ -5,7 +5,7 @@
|
|||||||
#include <sys/syscall.h>
|
#include <sys/syscall.h>
|
||||||
#include <time.h>
|
#include <time.h>
|
||||||
|
|
||||||
#include <libcore/libcore.h>
|
#include <libreborn/libreborn.h>
|
||||||
|
|
||||||
#include "../init/init.h"
|
#include "../init/init.h"
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
#include <GLES/gl.h>
|
#include <GLES/gl.h>
|
||||||
|
|
||||||
#include <libcore/libcore.h>
|
#include <libreborn/libreborn.h>
|
||||||
|
|
||||||
#include "../feature/feature.h"
|
#include "../feature/feature.h"
|
||||||
#include "../init/init.h"
|
#include "../init/init.h"
|
||||||
|
@ -30,7 +30,7 @@ prepare_control() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
# Package Client DEBs
|
# Package Client DEBs
|
||||||
docker save thebrokenrail/minecraft-pi:client | gzip > debian/tmp/client-image.tar.gz
|
docker save thebrokenrail/minecraft-pi-reborn:client | gzip > debian/tmp/client-image.tar.gz
|
||||||
package_client() {
|
package_client() {
|
||||||
# Clean
|
# Clean
|
||||||
rm -rf "debian/tmp/$1"
|
rm -rf "debian/tmp/$1"
|
||||||
@ -46,7 +46,7 @@ package_client virgl
|
|||||||
package_client native
|
package_client native
|
||||||
|
|
||||||
# Package Server DEB
|
# Package Server DEB
|
||||||
docker save thebrokenrail/minecraft-pi:server | gzip > debian/tmp/server-image.tar.gz
|
docker save thebrokenrail/minecraft-pi-reborn:server | gzip > debian/tmp/server-image.tar.gz
|
||||||
package_server() {
|
package_server() {
|
||||||
# Clean
|
# Clean
|
||||||
rm -rf debian/tmp/server
|
rm -rf debian/tmp/server
|
||||||
@ -69,7 +69,7 @@ mkdir -p out/lib
|
|||||||
cp -r mods/include out/lib/include
|
cp -r mods/include out/lib/include
|
||||||
|
|
||||||
# Copy Shared Library
|
# Copy Shared Library
|
||||||
IMG_ID="$(docker create thebrokenrail/minecraft-pi:client)"
|
IMG_ID="$(docker create thebrokenrail/minecraft-pi-reborn:client)"
|
||||||
docker cp "${IMG_ID}":/app/minecraft-pi/mods/. ./out/lib/. || :
|
docker cp "${IMG_ID}":/app/minecraft-pi/mods/. ./out/lib/. || :
|
||||||
RET="$?"
|
RET="$?"
|
||||||
docker rm -v "${IMG_ID}"
|
docker rm -v "${IMG_ID}"
|
||||||
|
Loading…
Reference in New Issue
Block a user