2.5.3
This commit is contained in:
parent
ef29e4fc0e
commit
ac55d7d6b3
2
dependencies/gles-compatibility-layer/src
vendored
2
dependencies/gles-compatibility-layer/src
vendored
@ -1 +1 @@
|
|||||||
Subproject commit 5bf535a68fe1ca0381b4628859e642b40a166017
|
Subproject commit 67a8d026aa5aef062dae654d418c3cd09417c0c1
|
2
dependencies/glfw/src
vendored
2
dependencies/glfw/src
vendored
@ -1 +1 @@
|
|||||||
Subproject commit 3eaf1255b29fdf5c2895856c7be7d7185ef2b241
|
Subproject commit b4c3ef9d0fdf46845f3e81e5d989dab06e71e6c1
|
@ -1,5 +1,11 @@
|
|||||||
# Changelog
|
# Changelog
|
||||||
|
|
||||||
|
**2.5.3**
|
||||||
|
* Add ``Replace Block Highlight With Outline`` Feature Flag (Enabled By Default)
|
||||||
|
* By Default, The Outline Width Is Set Using The GUI Scale
|
||||||
|
* This Can Be Overridden Using The ``MCPI_BLOCK_OUTLINE_WIDTH`` Environmental Variable
|
||||||
|
* Added ``overwrite_calls_within`` Function
|
||||||
|
|
||||||
**2.5.2**
|
**2.5.2**
|
||||||
* Add ``3D Chest Model`` Feature Flag (Enabled By Default)
|
* Add ``3D Chest Model`` Feature Flag (Enabled By Default)
|
||||||
* Stop Using Jenkins
|
* Stop Using Jenkins
|
||||||
@ -7,7 +13,7 @@
|
|||||||
* Replace LibPNG
|
* Replace LibPNG
|
||||||
|
|
||||||
**2.5.1**
|
**2.5.1**
|
||||||
* Allow Overriidng Custom Skin Server Using ``MCPI_SKIN_SERVER`` Environmental Variable
|
* Allow Overriding Custom Skin Server Using ``MCPI_SKIN_SERVER`` Environmental Variable
|
||||||
* Fix Bug With SDK Generation
|
* Fix Bug With SDK Generation
|
||||||
|
|
||||||
**2.5.0**
|
**2.5.0**
|
||||||
|
BIN
images/start.png
BIN
images/start.png
Binary file not shown.
Before Width: | Height: | Size: 164 KiB After Width: | Height: | Size: 164 KiB |
@ -50,3 +50,4 @@ FALSE Disable Block Tinting
|
|||||||
TRUE Disable Hostile AI In Creative Mode
|
TRUE Disable Hostile AI In Creative Mode
|
||||||
TRUE Load Custom Skins
|
TRUE Load Custom Skins
|
||||||
TRUE 3D Chest Model
|
TRUE 3D Chest Model
|
||||||
|
TRUE Replace Block Highlight With Outline
|
||||||
|
@ -122,6 +122,7 @@ void _overwrite_call(const char *file, int line, void *start, void *target) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Overwrite All B(L) Intrusctions That Target The Specified Address
|
// Overwrite All B(L) Intrusctions That Target The Specified Address
|
||||||
|
#define NO_CALLSITE_ERROR "(%s:%i) Unable To Find Callsites For 0x%08x"
|
||||||
void _overwrite_calls(const char *file, int line, void *start, void *target) {
|
void _overwrite_calls(const char *file, int line, void *start, void *target) {
|
||||||
// Add New Target To Code Block
|
// Add New Target To Code Block
|
||||||
update_code_block(target);
|
update_code_block(target);
|
||||||
@ -140,10 +141,10 @@ void _overwrite_calls(const char *file, int line, void *start, void *target) {
|
|||||||
|
|
||||||
// Check
|
// Check
|
||||||
if (data.found < 1) {
|
if (data.found < 1) {
|
||||||
ERR("(%s:%i) Unable To Find Callsites For 0x%08x", file, line, (uint32_t) start);
|
ERR(NO_CALLSITE_ERROR, file, line, (uint32_t) start);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
void _overwrite_calls_within(const char *file, int line, void *from, void *to, void *target, void *replacement) {
|
void _overwrite_calls_within(const char *file, int line, void *from /* inclusive */, void *to /* exclusive */, void *target, void *replacement) {
|
||||||
// Add New Target To Code Block
|
// Add New Target To Code Block
|
||||||
update_code_block(replacement);
|
update_code_block(replacement);
|
||||||
|
|
||||||
@ -151,7 +152,7 @@ void _overwrite_calls_within(const char *file, int line, void *from, void *to, v
|
|||||||
int found = _overwrite_calls_within_internal(file, line, from, to, target, code_block);
|
int found = _overwrite_calls_within_internal(file, line, from, to, target, code_block);
|
||||||
// Check
|
// Check
|
||||||
if (found < 1) {
|
if (found < 1) {
|
||||||
ERR("(%s:%i) Unable To Find Callsites For 0x%08x", file, line, (uint32_t) target);
|
ERR(NO_CALLSITE_ERROR, file, line, (uint32_t) target);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Increment Code Block Position
|
// Increment Code Block Position
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
#include <GLES/gl.h>
|
#include <GLES/gl.h>
|
||||||
|
|
||||||
#include "../dependencies/gles-compatibility-layer/src/passthrough.h"
|
#include "../../../../dependencies/gles-compatibility-layer/src/src/passthrough.h"
|
||||||
|
|
||||||
GL_FUNC(glFogfv, void, (GLenum pname, const GLfloat *params));
|
GL_FUNC(glFogfv, void, (GLenum pname, const GLfloat *params));
|
||||||
void glFogfv(GLenum pname, const GLfloat *params) {
|
void glFogfv(GLenum pname, const GLfloat *params) {
|
||||||
|
@ -926,6 +926,10 @@ static int get_glGetFloatv_params_size(GLenum pname) {
|
|||||||
case GL_PROJECTION_MATRIX: {
|
case GL_PROJECTION_MATRIX: {
|
||||||
return 16;
|
return 16;
|
||||||
}
|
}
|
||||||
|
case GL_ALIASED_LINE_WIDTH_RANGE:
|
||||||
|
case GL_SMOOTH_LINE_WIDTH_RANGE: {
|
||||||
|
return 2;
|
||||||
|
}
|
||||||
default: {
|
default: {
|
||||||
PROXY_ERR("Unsupported glGetFloatv Property: %u", pname);
|
PROXY_ERR("Unsupported glGetFloatv Property: %u", pname);
|
||||||
}
|
}
|
||||||
|
@ -4,7 +4,9 @@
|
|||||||
#include <sys/socket.h>
|
#include <sys/socket.h>
|
||||||
#include <netinet/in.h>
|
#include <netinet/in.h>
|
||||||
|
|
||||||
|
#ifndef MCPI_HEADLESS_MODE
|
||||||
#include <GLES/gl.h>
|
#include <GLES/gl.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
#include <libreborn/libreborn.h>
|
#include <libreborn/libreborn.h>
|
||||||
#include <symbols/minecraft.h>
|
#include <symbols/minecraft.h>
|
||||||
@ -495,6 +497,35 @@ static unsigned char *ContainerMenu_destructor_injection(unsigned char *containe
|
|||||||
return (*ContainerMenu_destructor)(container_menu);
|
return (*ContainerMenu_destructor)(container_menu);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifndef MCPI_HEADLESS_MODE
|
||||||
|
// Custom Outline Color
|
||||||
|
static void glColor4f_injection(__attribute__((unused)) GLfloat red, __attribute__((unused)) GLfloat green, __attribute__((unused)) GLfloat blue, __attribute__((unused)) GLfloat alpha) {
|
||||||
|
// Set Color
|
||||||
|
glColor4f(0, 0, 0, 1);
|
||||||
|
|
||||||
|
// Find Line Width
|
||||||
|
char *custom_line_width = getenv("MCPI_BLOCK_OUTLINE_WIDTH");
|
||||||
|
float line_width;
|
||||||
|
if (custom_line_width != NULL) {
|
||||||
|
// Custom
|
||||||
|
line_width = strtof(custom_line_width, NULL);
|
||||||
|
} else {
|
||||||
|
// Guess
|
||||||
|
line_width = 1.75 / (*InvGuiScale);
|
||||||
|
}
|
||||||
|
// Clamp Line Width
|
||||||
|
float range[2];
|
||||||
|
glGetFloatv(GL_ALIASED_LINE_WIDTH_RANGE, range);
|
||||||
|
if (range[1] < line_width) {
|
||||||
|
line_width = range[1];
|
||||||
|
} else if (range[0] > line_width) {
|
||||||
|
line_width = range[0];
|
||||||
|
}
|
||||||
|
// Set Line Width
|
||||||
|
glLineWidth(line_width);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
// Init
|
// Init
|
||||||
static void nop() {
|
static void nop() {
|
||||||
}
|
}
|
||||||
@ -662,6 +693,16 @@ void init_misc() {
|
|||||||
}
|
}
|
||||||
patch_address((void *) 0x115b48, (void *) ChestTileEntity_shouldSave_injection);
|
patch_address((void *) 0x115b48, (void *) ChestTileEntity_shouldSave_injection);
|
||||||
|
|
||||||
|
#ifndef MCPI_HEADLESS_MODE
|
||||||
|
// Replace Block Highlight With Outline
|
||||||
|
if (feature_has("Replace Block Highlight With Outline", server_disabled)) {
|
||||||
|
overwrite((void *) LevelRenderer_renderHitSelect, (void *) LevelRenderer_renderHitOutline);
|
||||||
|
unsigned char fix_outline_patch[4] = {0x00, 0xf0, 0x20, 0xe3}; // "nop"
|
||||||
|
patch((void *) 0x4d830, fix_outline_patch);
|
||||||
|
overwrite_call((void *) 0x4d764, (void *) glColor4f_injection);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
// Init C++ And Logging
|
// Init C++ And Logging
|
||||||
_init_misc_cpp();
|
_init_misc_cpp();
|
||||||
_init_misc_logging();
|
_init_misc_logging();
|
||||||
|
@ -6,6 +6,7 @@ set -e
|
|||||||
build() {
|
build() {
|
||||||
# Use Build Dir
|
# Use Build Dir
|
||||||
if [ ! -f "build/${MODE}-${ARCH}/arm/build.ninja" ] || [ ! -f "build/${MODE}-${ARCH}/native/build.ninja" ]; then
|
if [ ! -f "build/${MODE}-${ARCH}/arm/build.ninja" ] || [ ! -f "build/${MODE}-${ARCH}/native/build.ninja" ]; then
|
||||||
|
# Run CMake
|
||||||
./scripts/setup.sh "${MODE}" "${ARCH}"
|
./scripts/setup.sh "${MODE}" "${ARCH}"
|
||||||
fi
|
fi
|
||||||
cd "build/${MODE}-${ARCH}"
|
cd "build/${MODE}-${ARCH}"
|
||||||
|
@ -2,6 +2,8 @@
|
|||||||
|
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
|
## Server Test
|
||||||
|
|
||||||
# Build Test
|
# Build Test
|
||||||
ARCH="$(dpkg-architecture -qDEB_BUILD_ARCH)"
|
ARCH="$(dpkg-architecture -qDEB_BUILD_ARCH)"
|
||||||
./scripts/setup.sh server "${ARCH}"
|
./scripts/setup.sh server "${ARCH}"
|
||||||
@ -19,6 +21,8 @@ cd build/test
|
|||||||
minecraft-pi-reborn-server --only-generate
|
minecraft-pi-reborn-server --only-generate
|
||||||
cd ../../
|
cd ../../
|
||||||
|
|
||||||
|
## Client Test
|
||||||
|
|
||||||
# Build Benchmark
|
# Build Benchmark
|
||||||
./scripts/setup.sh client "${ARCH}" -DMCPI_HEADLESS_MODE=ON
|
./scripts/setup.sh client "${ARCH}" -DMCPI_HEADLESS_MODE=ON
|
||||||
./scripts/build.sh client "${ARCH}"
|
./scripts/build.sh client "${ARCH}"
|
||||||
@ -32,3 +36,16 @@ export _MCPI_SKIP_ROOT_CHECK=1
|
|||||||
# Run Benchmark
|
# Run Benchmark
|
||||||
export HOME="$(pwd)/build/test"
|
export HOME="$(pwd)/build/test"
|
||||||
minecraft-pi-reborn-client --default --no-cache --benchmark
|
minecraft-pi-reborn-client --default --no-cache --benchmark
|
||||||
|
|
||||||
|
## Example Mods Test
|
||||||
|
|
||||||
|
# Build
|
||||||
|
for project in example-mods/*/; do
|
||||||
|
cd "${project}"
|
||||||
|
rm -rf build
|
||||||
|
mkdir build
|
||||||
|
cd build
|
||||||
|
cmake -GNinja ..
|
||||||
|
cmake --build .
|
||||||
|
cd ../../../
|
||||||
|
done
|
||||||
|
@ -574,6 +574,10 @@ static LevelRenderer_renderDebug_t LevelRenderer_renderDebug = (LevelRenderer_re
|
|||||||
typedef void (*LevelRenderer_generateSky_t)(unsigned char *level_renderer);
|
typedef void (*LevelRenderer_generateSky_t)(unsigned char *level_renderer);
|
||||||
static LevelRenderer_generateSky_t LevelRenderer_generateSky = (LevelRenderer_generateSky_t) 0x4d0d4;
|
static LevelRenderer_generateSky_t LevelRenderer_generateSky = (LevelRenderer_generateSky_t) 0x4d0d4;
|
||||||
|
|
||||||
|
typedef void (*LevelRenderer_renderHitSelect_t)(unsigned char *level_renderer, unsigned char* player, unsigned char *hit_result, int32_t i, void *vp, float f);
|
||||||
|
static LevelRenderer_renderHitSelect_t LevelRenderer_renderHitSelect = (LevelRenderer_renderHitSelect_t) 0x4e318;
|
||||||
|
static LevelRenderer_renderHitSelect_t LevelRenderer_renderHitOutline = (LevelRenderer_renderHitSelect_t) 0x4dc14;
|
||||||
|
|
||||||
static uint32_t LevelRenderer_minecraft_property_offset = 0x4; // Minecraft *
|
static uint32_t LevelRenderer_minecraft_property_offset = 0x4; // Minecraft *
|
||||||
|
|
||||||
// PerfRenderer
|
// PerfRenderer
|
||||||
|
Loading…
Reference in New Issue
Block a user