diff --git a/mods/include/mods/bucket/bucket.h b/mods/include/mods/bucket/bucket.h new file mode 100644 index 0000000..de355c4 --- /dev/null +++ b/mods/include/mods/bucket/bucket.h @@ -0,0 +1 @@ +bool buckets_enabled(); diff --git a/mods/src/bucket/bucket.cpp b/mods/src/bucket/bucket.cpp index c91197e..504a525 100644 --- a/mods/src/bucket/bucket.cpp +++ b/mods/src/bucket/bucket.cpp @@ -133,13 +133,14 @@ static int BucketItem_getUseDuration(__attribute__((unused)) FoodItem *item, Ite return 0; } -static void BucketItem_useTimeDepleted(FoodItem *item, uchar *param_1, ItemInstance *item_instance, Level *level, Player *player) { +static ItemInstance BucketItem_useTimeDepleted(FoodItem *item, ItemInstance *item_instance, Level *level, Player *player) { if (item_instance->auxiliary == 1) { - (*FoodItem_useTimeDepleted_vtable_addr)(item, param_1, item_instance, level, player); + *item_instance = FoodItem_useTimeDepleted_non_virtual(item, item_instance, level, player); // Set it to a empty bucket item_instance->auxiliary = 0; item_instance->count = 1; } + return *item_instance; } static int BucketItem_getUseAnimation(__attribute__((unused)) FoodItem *item) { @@ -349,9 +350,14 @@ static void Language_injection(__attribute__((unused)) void *null) { } // Init +bool buckets_enabled() { + static bool ret = feature_has("Add Buckets", server_enabled); + return ret; +} + void init_bucket() { // Add Buckets - if (feature_has("Add Buckets", server_enabled)) { + if (buckets_enabled()) { // Add Items misc_run_on_items_setup(Item_initItems_injection); // Change Max Stack Size Based On Auxiliary diff --git a/mods/src/cake/cake.cpp b/mods/src/cake/cake.cpp index cb38dd4..8461c8a 100644 --- a/mods/src/cake/cake.cpp +++ b/mods/src/cake/cake.cpp @@ -4,8 +4,9 @@ #include #include #include +#include -Tile *cake = NULL; +static Tile *cake = NULL; #define CAKE_LEN 0.0625F @@ -166,7 +167,7 @@ static void Inventory_setupDefault_FillingContainer_addItem_call_injection(Filli cake_instance->count = 255; cake_instance->auxiliary = 0; cake_instance->id = 92; - (*FillingContainer_addItem)(filling_container, cake_instance); + FillingContainer_addItem(filling_container, cake_instance); } // Recipe (only when buckets are enabled) @@ -234,7 +235,7 @@ void init_cake() { if (feature_has("Add Cake", server_enabled)) { misc_run_on_tiles_setup(Tile_initTiles_injection); misc_run_on_creative_inventory_setup(Inventory_setupDefault_FillingContainer_addItem_call_injection); - if (feature_has("Add Buckets", server_enabled)) { + if (buckets_enabled()) { // The recipe needs milk buckets misc_run_on_recipes_setup(Recipes_injection); } diff --git a/symbols/src/gui/screens/PaneCraftingScreen.def b/symbols/src/gui/screens/PaneCraftingScreen.def index b561ce8..6ef4fda 100644 --- a/symbols/src/gui/screens/PaneCraftingScreen.def +++ b/symbols/src/gui/screens/PaneCraftingScreen.def @@ -1,5 +1,6 @@ +extends Screen; + method void craftSelectedItem() = 0x2e0e4; method void recheckRecipes() = 0x2dc98; -property Minecraft *minecraft = 0x14; property CItem *item = 0x74; diff --git a/symbols/src/item/Item.def b/symbols/src/item/Item.def index 656c977..289b010 100644 --- a/symbols/src/item/Item.def +++ b/symbols/src/item/Item.def @@ -11,8 +11,7 @@ virtual-method void setIcon(int texture_x, int texture_y) = 0x18; virtual-method int useOn(ItemInstance *item_instance, Player *player, Level *level, int x, int y, int z, int hit_side, float hit_x, float hit_y, float hit_z) = 0x20; // Normally returns 0 virtual-method int getUseDuration(ItemInstance *item_instance) = 0x24; -// I don't know much about param_1, it might be some partially initialized ItemInstance* -virtual-method void useTimeDepleted(uchar *param_1, ItemInstance *item_instance, Level *level, Player *player) = 0x28; +virtual-method ItemInstance useTimeDepleted(ItemInstance *item_instance, Level *level, Player *player) = 0x28; virtual-method int getDestorySpeed(ItemInstance *item_instance, Tile *tile) = 0x2c; virtual-method ItemInstance *use(ItemInstance *item_instance, Level *level, Player *player) = 0x30; virtual-method bool mineBlock(ItemInstance *instance, int tile_id, int x, int y, int z) = 0x48;