diff --git a/src/frontend/hud.cpp b/src/frontend/hud.cpp index 0eaf9db2..a3362181 100644 --- a/src/frontend/hud.cpp +++ b/src/frontend/hud.cpp @@ -485,9 +485,17 @@ void Hud::add(HudElement element) { if (document) { if (invview) { auto inventory = invview->getInventory(); - scripting::on_ui_open(element.getDocument(), inventory.get()); + scripting::on_ui_open( + element.getDocument(), + inventory.get(), + currentblock + ); } else { - scripting::on_ui_open(element.getDocument(), nullptr); + scripting::on_ui_open( + element.getDocument(), + nullptr, + currentblock + ); } } elements.push_back(element); diff --git a/src/logic/scripting/scripting.cpp b/src/logic/scripting/scripting.cpp index c00be4de..26d55047 100644 --- a/src/logic/scripting/scripting.cpp +++ b/src/logic/scripting/scripting.cpp @@ -207,11 +207,12 @@ bool scripting::on_item_break_block(Player* player, const ItemDef* item, int x, return false; } -void scripting::on_ui_open(UiDocument* layout, Inventory* inventory) { +void scripting::on_ui_open(UiDocument* layout, Inventory* inventory, glm::ivec3 blockcoord) { std::string name = layout->getId()+".open"; if (state->getglobal(name)) { state->pushinteger(inventory == nullptr ? 0 : inventory->getId()); - state->callNoThrow(1); + state->pushivec3(blockcoord.x, blockcoord.y, blockcoord.z); + state->callNoThrow(4); } } diff --git a/src/logic/scripting/scripting.h b/src/logic/scripting/scripting.h index 2195080d..36869c23 100644 --- a/src/logic/scripting/scripting.h +++ b/src/logic/scripting/scripting.h @@ -1,5 +1,6 @@ #include #include +#include #include "../../delegates.h" @@ -65,7 +66,7 @@ namespace scripting { bool on_item_break_block(Player* player, const ItemDef* item, int x, int y, int z); /** Called on UI view show */ - void on_ui_open(UiDocument* layout, Inventory* inventory); + void on_ui_open(UiDocument* layout, Inventory* inventory, glm::ivec3 blockcoord); /** Called on UI view close*/ void on_ui_close(UiDocument* layout, Inventory* inventory);