unified inventoryのエラーでログイン時にサーバが落ちる問題を修正(Minetest)

なんか最近 Unified Inventory がらみのエラーで、ログイン時にMinetestサーバが落ちるようになってしまった。

modを i3 に変えても同じような症状が出る。

インベントリ内のバッグに関係しているようだが、ちょっとよくわからない。

とりあえず代替手段として導入した sfinvと SF Inventory Bags の組み合わせではこの不具合は起こらないようだが、このインベントリは、 unified inventory に慣れてしまうと、あまり使い勝手がよくない。

ググってみて、解決策らしきものをみつけた。

https://github.com/minetest-mods/unified_inventory/issues/201

~/.minetest/mods/unified_inventory/callbacks.lua を指示通りに修正したら、なんとなくなおった(仕組みはよくわからん)。

-がついてる2行をコメントアウトして、+のところを追記するだけですね。

diff --git a/callbacks.lua b/callbacks.lua
index e92175d..a8db7cf 100644
--- a/callbacks.lua
+++ b/callbacks.lua
@@ -19,14 +19,12 @@ minetest.register_on_joinplayer(function(player)
                unified_inventory.items_list
        unified_inventory.activefilter[player_name] = ""
        unified_inventory.active_search_direction[player_name] = "nochange"
-       unified_inventory.apply_filter(player, "", "nochange")
        unified_inventory.current_searchbox[player_name] = ""
        unified_inventory.current_category[player_name] = "all"
        unified_inventory.current_category_scroll[player_name] = 0
        unified_inventory.alternate[player_name] = 1
        unified_inventory.current_item[player_name] = nil
        unified_inventory.current_craft_direction[player_name] = "recipe"
-       unified_inventory.set_inventory_formspec(player, unified_inventory.default)
 
        -- Refill slot
        local refill = minetest.create_detached_inventory(player_name.."refill", {
@@ -48,6 +46,14 @@ minetest.register_on_joinplayer(function(player)
        refill:set_size("main", 1)
 end)
 
+minetest.register_on_mods_loaded(function()
+       minetest.register_on_joinplayer(function(player)
+               -- After everything is initialized, set up the inventory.
+               ui.apply_filter(player, "", "nochange")
+               ui.set_inventory_formspec(player, unified_inventory.default)
+       end)
+end)
+
 local function apply_new_filter(player, search_text, new_dir)
        local player_name = player:get_player_name()
 

これで子どもたちがログインするたんびにサーバリスタートしにいかなあかんイライラから開放される。

ありがとう。

この記事が気に入ったらサポートをしてみませんか?