Skip to content

Commit

Permalink
Disable inventory if player's inventory formspec is blank (#11827)
Browse files Browse the repository at this point in the history
  • Loading branch information
rollerozxa committed Dec 13, 2021
1 parent 84efe27 commit fcf86de
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 7 deletions.
1 change: 1 addition & 0 deletions doc/lua_api.txt
Expand Up @@ -6690,6 +6690,7 @@ object you are working with still exists.
* `set_inventory_formspec(formspec)`
* Redefine player's inventory form
* Should usually be called in `on_joinplayer`
* If `formspec` is `""`, the player's inventory is disabled.
* `get_inventory_formspec()`: returns a formspec string
* `set_formspec_prepend(formspec)`:
* the formspec string will be added to every formspec shown to the user,
Expand Down
21 changes: 14 additions & 7 deletions src/client/game.cpp
Expand Up @@ -2060,15 +2060,22 @@ void Game::openInventory()
InventoryLocation inventoryloc;
inventoryloc.setCurrentPlayer();

if (!client->modsLoaded()
|| !client->getScript()->on_inventory_open(fs_src->m_client->getInventory(inventoryloc))) {
TextDest *txt_dst = new TextDestPlayerInventory(client);
auto *&formspec = m_game_ui->updateFormspec("");
GUIFormSpecMenu::create(formspec, client, m_rendering_engine->get_gui_env(),
&input->joystick, fs_src, txt_dst, client->getFormspecPrepend(), sound);
if (client->modsLoaded() && client->getScript()->on_inventory_open(fs_src->m_client->getInventory(inventoryloc))) {
delete fs_src;
return;
}

formspec->setFormSpec(fs_src->getForm(), inventoryloc);
if (fs_src->getForm().empty()) {
delete fs_src;
return;
}

TextDest *txt_dst = new TextDestPlayerInventory(client);
auto *&formspec = m_game_ui->updateFormspec("");
GUIFormSpecMenu::create(formspec, client, m_rendering_engine->get_gui_env(),
&input->joystick, fs_src, txt_dst, client->getFormspecPrepend(), sound);

formspec->setFormSpec(fs_src->getForm(), inventoryloc);
}


Expand Down

0 comments on commit fcf86de

Please sign in to comment.