diff --git a/src/frontend/InventoryView.cpp b/src/frontend/InventoryView.cpp index 2cf41869..dab7325f 100644 --- a/src/frontend/InventoryView.cpp +++ b/src/frontend/InventoryView.cpp @@ -117,7 +117,8 @@ SlotView::SlotView( void SlotView::draw(const GfxContext* pctx, Assets* assets) { if (bound == nullptr) - throw std::runtime_error("unbound slot"); + return; + ItemStack& stack = *bound; glm::vec2 coord = calcCoord(); @@ -206,7 +207,7 @@ bool SlotView::isHighlighted() const { void SlotView::clicked(gui::GUI* gui, int button) { if (bound == nullptr) - throw std::runtime_error("unbound slot"); + return; ItemStack& grabbed = interaction->getGrabbedItem(); ItemStack& stack = *bound; diff --git a/src/logic/scripting/lua/libhud.cpp b/src/logic/scripting/lua/libhud.cpp index c058f73f..773a96f6 100644 --- a/src/logic/scripting/lua/libhud.cpp +++ b/src/logic/scripting/lua/libhud.cpp @@ -16,6 +16,7 @@ #include "../../../items/Inventories.h" #include "../../../engine.h" #include "../../../frontend/UiDocument.h" +#include "../../../frontend/InventoryView.h" namespace scripting { extern Hud* hud; @@ -76,6 +77,10 @@ UiDocument* require_layout(lua_State* L, const char* name) { int l_hud_open_permanent(lua_State* L) { auto layout = require_layout(L, lua_tostring(L, 1)); + auto invview = std::dynamic_pointer_cast(layout->getRoot()); + if (invview) { + luaL_error(L, "layout must not contain 'inventory' element"); + } scripting::hud->openPermanent(layout); return 0; }