More fixes
This commit is contained in:
parent
82ba813b72
commit
5e1d718f5a
|
@ -1 +1 @@
|
||||||
Subproject commit 2390ef024752785e7e6e492feca5fec08014fa06
|
Subproject commit 8bca4b7ec6aa28ef6fbc894d1f358468bcc4b321
|
|
@ -1,13 +1,16 @@
|
||||||
# Changelog
|
# Changelog
|
||||||
|
|
||||||
|
**3.0.0**
|
||||||
|
* Add ``Add Cake`` Feature Flag (Enabled By Default)
|
||||||
|
* Add Milk Buckets
|
||||||
|
* Implement Crafting Remainders
|
||||||
|
* Add Death Messages
|
||||||
|
|
||||||
**2.5.3**
|
**2.5.3**
|
||||||
* Add `Replace Block Highlight With Outline` Feature Flag (Enabled By Default)
|
* Add `Replace Block Highlight With Outline` Feature Flag (Enabled By Default)
|
||||||
* By Default, The Outline Width Is Set Using The GUI Scale
|
* By Default, The Outline Width Is Set Using The GUI Scale
|
||||||
* This Can Be Overridden Using The ``MCPI_BLOCK_OUTLINE_WIDTH`` Environmental Variable
|
* This Can Be Overridden Using The ``MCPI_BLOCK_OUTLINE_WIDTH`` Environmental Variable
|
||||||
* Added ``overwrite_calls_within`` Function
|
* Added ``overwrite_calls_within`` Function
|
||||||
* Add ``Add Cake`` Feature Flag (Enabled By Default)
|
|
||||||
* Add Milk Buckets
|
|
||||||
* Implement Crafting Remainders
|
|
||||||
|
|
||||||
**2.5.2**
|
**2.5.2**
|
||||||
* Add `3D Chest Model` Feature Flag (Enabled By Default)
|
* Add `3D Chest Model` Feature Flag (Enabled By Default)
|
||||||
|
|
|
@ -1 +1,3 @@
|
||||||
bool buckets_enabled();
|
#pragma once
|
||||||
|
|
||||||
|
extern bool buckets_enabled;
|
||||||
|
|
|
@ -200,6 +200,8 @@ static FoodItem *create_bucket(int32_t id, int32_t texture_x, int32_t texture_y,
|
||||||
item->max_damage = 0;
|
item->max_damage = 0;
|
||||||
item->max_stack_size = 1;
|
item->max_stack_size = 1;
|
||||||
item->nutrition = 0;
|
item->nutrition = 0;
|
||||||
|
item->unknown_param_1 = 0.6;
|
||||||
|
item->meat = false;
|
||||||
|
|
||||||
// Return
|
// Return
|
||||||
return item;
|
return item;
|
||||||
|
@ -336,19 +338,17 @@ static void FurnaceTileEntity_tick_ItemInstance_setNull_injection(ItemInstance *
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Add the bucket name to the language file
|
||||||
static void Language_injection(__attribute__((unused)) void *null) {
|
static void Language_injection(__attribute__((unused)) void *null) {
|
||||||
I18n__strings.insert(std::make_pair("item.bucketMilk.name", "Milk Bucket"));
|
I18n__strings.insert(std::make_pair("item.bucketMilk.name", "Milk Bucket"));
|
||||||
}
|
}
|
||||||
|
|
||||||
// Init
|
// Init
|
||||||
bool buckets_enabled() {
|
bool buckets_enabled = false;
|
||||||
static bool ret = feature_has("Add Buckets", server_enabled);
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
void init_bucket() {
|
void init_bucket() {
|
||||||
// Add Buckets
|
// Add Buckets
|
||||||
if (buckets_enabled()) {
|
buckets_enabled = feature_has("Add Buckets", server_enabled);
|
||||||
|
if (buckets_enabled) {
|
||||||
// Add Items
|
// Add Items
|
||||||
misc_run_on_items_setup(Item_initItems_injection);
|
misc_run_on_items_setup(Item_initItems_injection);
|
||||||
// Change Max Stack Size Based On Auxiliary
|
// Change Max Stack Size Based On Auxiliary
|
||||||
|
|
|
@ -16,7 +16,7 @@ static std::string Cake_getDescriptionId(__attribute__((unused)) Tile *tile) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Textures
|
// Textures
|
||||||
static int Cake_getTexture2(__attribute__((unused)) Tile *tile, int face) {
|
static int Cake_getTexture2(__attribute__((unused)) Tile *tile, int face, __attribute__((unused)) int data) {
|
||||||
if (face == 1) {
|
if (face == 1) {
|
||||||
// Top texture
|
// Top texture
|
||||||
return 121;
|
return 121;
|
||||||
|
@ -38,7 +38,7 @@ static int Cake_getTexture3(__attribute__((unused)) Tile *tile, LevelSource *lev
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Normal
|
// Normal
|
||||||
return Cake_getTexture2(tile, face);
|
return Cake_getTexture2(tile, face, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Rendering
|
// Rendering
|
||||||
|
@ -235,7 +235,7 @@ void init_cake() {
|
||||||
if (feature_has("Add Cake", server_enabled)) {
|
if (feature_has("Add Cake", server_enabled)) {
|
||||||
misc_run_on_tiles_setup(Tile_initTiles_injection);
|
misc_run_on_tiles_setup(Tile_initTiles_injection);
|
||||||
misc_run_on_creative_inventory_setup(Inventory_setupDefault_FillingContainer_addItem_call_injection);
|
misc_run_on_creative_inventory_setup(Inventory_setupDefault_FillingContainer_addItem_call_injection);
|
||||||
if (buckets_enabled()) {
|
if (buckets_enabled) {
|
||||||
// The recipe needs milk buckets
|
// The recipe needs milk buckets
|
||||||
misc_run_on_recipes_setup(Recipes_injection);
|
misc_run_on_recipes_setup(Recipes_injection);
|
||||||
}
|
}
|
||||||
|
|
|
@ -134,6 +134,7 @@ void init_death() {
|
||||||
overwrite_calls((void *) Mob_hurt_non_virtual, (void *) Mob_hurt_injection);
|
overwrite_calls((void *) Mob_hurt_non_virtual, (void *) Mob_hurt_injection);
|
||||||
}
|
}
|
||||||
// Fix TNT
|
// Fix TNT
|
||||||
|
// This changes PrimedTnt_explode from Level_explode(NULL, x, y, z, 3.1f) to Level_explode(this, x, y, z, 3.1f)
|
||||||
unsigned char cpy_r1_r0_patch[4] = {0x00, 0x10, 0xa0, 0xe1}; // "cpy r1,r0"
|
unsigned char cpy_r1_r0_patch[4] = {0x00, 0x10, 0xa0, 0xe1}; // "cpy r1,r0"
|
||||||
patch((void *) 0x87998, cpy_r1_r0_patch);
|
patch((void *) 0x87998, cpy_r1_r0_patch);
|
||||||
unsigned char ldr_r0_24_patch[4] = {0x24, 0x00, 0x90, 0xe5}; // "ldr r0,[r0,#0x24]"
|
unsigned char ldr_r0_24_patch[4] = {0x24, 0x00, 0x90, 0xe5}; // "ldr r0,[r0,#0x24]"
|
||||||
|
|
|
@ -12,6 +12,7 @@ method void addMessage(std::string *text) = 0x27820;
|
||||||
method void getSlotPos(int slot, int *x, int *y) = 0x25548;
|
method void getSlotPos(int slot, int *x, int *y) = 0x25548;
|
||||||
method void renderSlot(int slot, int x, int y, float alpha) = 0x25cc0;
|
method void renderSlot(int slot, int x, int y, float alpha) = 0x25cc0;
|
||||||
method void renderSlotText(ItemInstance *item, float x, float y, bool finite, bool shadow) = 0x25df8;
|
method void renderSlotText(ItemInstance *item, float x, float y, bool finite, bool shadow) = 0x25df8;
|
||||||
|
method void renderHearts() = 0x2641c;
|
||||||
|
|
||||||
property Minecraft *minecraft = 0x9f4;
|
property Minecraft *minecraft = 0x9f4;
|
||||||
property float selected_item_text_timer = 0x9fc;
|
property float selected_item_text_timer = 0x9fc;
|
||||||
|
|
|
@ -7,3 +7,4 @@ method void blit(int x_dest, int y_dest, int x_src, int y_src, int width_dest, i
|
||||||
method void drawCenteredString(Font *font, std::string *text, int x, int y, int color) = 0x2821c;
|
method void drawCenteredString(Font *font, std::string *text, int x, int y, int color) = 0x2821c;
|
||||||
method void drawString(Font *font, std::string *text, int x, int y, int color) = 0x28284;
|
method void drawString(Font *font, std::string *text, int x, int y, int color) = 0x28284;
|
||||||
method void fill(int x1, int y1, int x2, int y2, uint color) = 0x285f0;
|
method void fill(int x1, int y1, int x2, int y2, uint color) = 0x285f0;
|
||||||
|
method void fillGradient(int x1, int y1, int x2, int y2, int color1, int color2) = 0x287c0;
|
|
@ -6,23 +6,23 @@ constructor () = 0x29028;
|
||||||
vtable-size 0x74;
|
vtable-size 0x74;
|
||||||
vtable 0x1039d8;
|
vtable 0x1039d8;
|
||||||
|
|
||||||
virtual-method void updateEvents() = 0x14;
|
virtual-method void init() = 0xc;
|
||||||
virtual-method void keyboardNewChar(char key) = 0x70;
|
|
||||||
virtual-method void keyPressed(int key) = 0x6c;
|
|
||||||
virtual-method void render(int x, int y, float param_1) = 0x8;
|
virtual-method void render(int x, int y, float param_1) = 0x8;
|
||||||
|
virtual-method void setupPositions() = 0x10;
|
||||||
|
virtual-method void updateEvents() = 0x14;
|
||||||
virtual-method bool handleBackEvent(bool param_1) = 0x24;
|
virtual-method bool handleBackEvent(bool param_1) = 0x24;
|
||||||
virtual-method void tick() = 0x28;
|
virtual-method void tick() = 0x28;
|
||||||
virtual-method void buttonClicked(Button *button) = 0x60;
|
|
||||||
virtual-method void init() = 0xc;
|
|
||||||
virtual-method void mouseClicked(int x, int y, int param_1) = 0x64;
|
|
||||||
virtual-method void removed() = 0x2c;
|
virtual-method void removed() = 0x2c;
|
||||||
virtual-method void renderBackground() = 0x30;
|
virtual-method void renderBackground() = 0x30;
|
||||||
virtual-method void setupPositions() = 0x10;
|
virtual-method void buttonClicked(Button *button) = 0x60;
|
||||||
|
virtual-method void mouseClicked(int x, int y, int param_1) = 0x64;
|
||||||
|
virtual-method void keyPressed(int key) = 0x6c;
|
||||||
|
virtual-method void keyboardNewChar(char key) = 0x70;
|
||||||
|
|
||||||
property Minecraft *minecraft = 0x14;
|
|
||||||
property std::vector<Button *> rendered_buttons = 0x18;
|
|
||||||
property std::vector<Button *> selectable_buttons = 0x30;
|
|
||||||
property int width = 0x8;
|
property int width = 0x8;
|
||||||
property int height = 0xc;
|
property int height = 0xc;
|
||||||
property bool passthrough_input = 0x10;
|
property bool passthrough_input = 0x10;
|
||||||
|
property Minecraft *minecraft = 0x14;
|
||||||
|
property std::vector<Button *> rendered_buttons = 0x18;
|
||||||
|
property std::vector<Button *> selectable_buttons = 0x30;
|
||||||
property Font *font = 0x40;
|
property Font *font = 0x40;
|
||||||
|
|
|
@ -5,3 +5,6 @@ vtable 0x10e7b0;
|
||||||
vtable-size 0x98;
|
vtable-size 0x98;
|
||||||
|
|
||||||
property int nutrition = 0x24;
|
property int nutrition = 0x24;
|
||||||
|
// Always 0.6
|
||||||
|
property float unknown_param_1 = 0x28;
|
||||||
|
property bool meat = 0x2c;
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
static-method void renderGuiItem_one(Font *font, Textures *textures, ItemInstance *item_instance, float param_1, float param_2, bool param_3) = 0x63e58;
|
static-method void renderGuiItem_one(Font *font, Textures *textures, ItemInstance *item_instance, float x, float y, bool param_3) = 0x63e58;
|
||||||
static-method void renderGuiItem_two(Font *font, Textures *textures, ItemInstance *item_instance, float param_1, float param_2, float param_3, float param_4, bool param_5) = 0x63be0;
|
static-method void renderGuiItem_two(Font *font, Textures *textures, ItemInstance *item_instance, float x, float y, float w, float h, bool param_5) = 0x63be0;
|
||||||
static-method void renderGuiItemCorrect(Font *font, Textures *textures, ItemInstance *item_instance, int param_1, int param_2) = 0x639a0;
|
static-method void renderGuiItemCorrect(Font *font, Textures *textures, ItemInstance *item_instance, int x, int y) = 0x639a0;
|
||||||
static-method void renderGuiItemDecorations(ItemInstance *item, float x, float y) = 0x63748;
|
static-method void renderGuiItemDecorations(ItemInstance *item, float x, float y) = 0x63748;
|
||||||
|
static-method void blit(float x, float y, float texture_x, float texture_y, float w, float h) = 0x638c0;
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
method void begin(int mode) = 0x529d4;
|
method void begin(int mode) = 0x529d4;
|
||||||
|
method void draw() = 0x52e08;
|
||||||
method void colorABGR(int color) = 0x52b54;
|
method void colorABGR(int color) = 0x52b54;
|
||||||
method void color(int r, int g, int b, int a) = 0x52a48;
|
method void color(int r, int g, int b, int a) = 0x52a48;
|
||||||
|
method void vertex(float x, float y, float z) = 052bc0;
|
||||||
method void vertexUV(float x, float y, float z, float u, float v) = 0x52d40;
|
method void vertexUV(float x, float y, float z, float u, float v) = 0x52d40;
|
||||||
|
|
||||||
static-property Tesselator instance = 0x137538;
|
static-property Tesselator instance = 0x137538;
|
||||||
|
|
|
@ -8,6 +8,7 @@ size 0x5c;
|
||||||
|
|
||||||
method Tile *init() = 0xc34dc;
|
method Tile *init() = 0xc34dc;
|
||||||
|
|
||||||
|
|
||||||
virtual-method bool isCubeShaped() = 0x8;
|
virtual-method bool isCubeShaped() = 0x8;
|
||||||
virtual-method int getRenderShape() = 0xc;
|
virtual-method int getRenderShape() = 0xc;
|
||||||
virtual-method void setShape(float x1, float y1, float z1, float x2, float y2, float z2) = 0x10;
|
virtual-method void setShape(float x1, float y1, float z1, float x2, float y2, float z2) = 0x10;
|
||||||
|
@ -15,7 +16,7 @@ virtual-method void updateShape(LevelSource *level, int x, int y, int z) = 0x14;
|
||||||
virtual-method void updateDefaultShape() = 0x18;
|
virtual-method void updateDefaultShape() = 0x18;
|
||||||
virtual-method float getBrightness(LevelSource *level, int x, int y, int z) = 0x20;
|
virtual-method float getBrightness(LevelSource *level, int x, int y, int z) = 0x20;
|
||||||
virtual-method int getTexture1() = 0x28;
|
virtual-method int getTexture1() = 0x28;
|
||||||
virtual-method int getTexture2(int face) = 0x2c;
|
virtual-method int getTexture2(int face, int data) = 0x2c;
|
||||||
virtual-method int getTexture3(LevelSource *level, int x, int y, int z, int face) = 0x30;
|
virtual-method int getTexture3(LevelSource *level, int x, int y, int z, int face) = 0x30;
|
||||||
virtual-method AABB *getAABB(Level *level, int x, int y, int z) = 0x34;
|
virtual-method AABB *getAABB(Level *level, int x, int y, int z) = 0x34;
|
||||||
virtual-method bool isSolidRender() = 0x40;
|
virtual-method bool isSolidRender() = 0x40;
|
||||||
|
@ -27,9 +28,11 @@ virtual-method int getRenderLayer() = 0x94;
|
||||||
virtual-method int use(Level *level, int x, int y, int z, Player *player) = 0x98;
|
virtual-method int use(Level *level, int x, int y, int z, Player *player) = 0x98;
|
||||||
virtual-method void setPlacedBy(Level *level, int x, int y, int z, Mob *placer) = 0xa8;
|
virtual-method void setPlacedBy(Level *level, int x, int y, int z, Mob *placer) = 0xa8;
|
||||||
virtual-method int getColor(LevelSource *level_source, int x, int y, int z) = 0xb8;
|
virtual-method int getColor(LevelSource *level_source, int x, int y, int z) = 0xb8;
|
||||||
|
virtual-method void entityInside(Level *level, int x, int y, int z, Entity *entity) = 0xcc;
|
||||||
virtual-method std::string getDescriptionId() = 0xdc;
|
virtual-method std::string getDescriptionId() = 0xdc;
|
||||||
virtual-method Tile *setDescriptionId(std::string *description_id) = 0xe0;
|
virtual-method Tile *setDescriptionId(std::string *description_id) = 0xe0;
|
||||||
virtual-method Tile *setSoundType(Tile_SoundType *sound_type) = 0xe8;
|
virtual-method Tile *setSoundType(Tile_SoundType *sound_type) = 0xe8;
|
||||||
|
virtual-method Tile *setLightEmission(float light) = 0xf0;
|
||||||
virtual-method Tile *setExplodeable(float explodeable) = 0xf4;
|
virtual-method Tile *setExplodeable(float explodeable) = 0xf4;
|
||||||
virtual-method Tile *setDestroyTime(float destroy_time) = 0xf8;
|
virtual-method Tile *setDestroyTime(float destroy_time) = 0xf8;
|
||||||
|
|
||||||
|
@ -68,3 +71,6 @@ static-property Tile *grass_carried = 0x181dd4;
|
||||||
|
|
||||||
// Sounds
|
// Sounds
|
||||||
static-property Tile_SoundType SOUND_STONE = 0x181c80;
|
static-property Tile_SoundType SOUND_STONE = 0x181c80;
|
||||||
|
|
||||||
|
// Light
|
||||||
|
static-property float *lightEmission = 0x181214;
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
method void tesselateBlockInWorld(Tile *tile, int x, int y, int z) = 0x59e30;
|
method bool tesselateBlockInWorld(Tile *tile, int x, int y, int z) = 0x59e30;
|
||||||
|
method bool tesselateInWorld(Tile *tile, int x, int y, int z) = 0x5e80c;
|
||||||
|
|
||||||
property Level *level = 0x0;
|
property Level *level = 0x0;
|
||||||
|
|
Loading…
Reference in New Issue