diff options
Diffstat (limited to 'builtin')
-rw-r--r-- | builtin/client/chatcommands.lua | 2 | ||||
-rw-r--r-- | builtin/client/cheats/combat.lua | 6 | ||||
-rw-r--r-- | builtin/client/cheats/init.lua | 2 | ||||
-rw-r--r-- | builtin/client/cheats/inventory.lua | 48 | ||||
-rw-r--r-- | builtin/client/util.lua | 6 | ||||
-rw-r--r-- | builtin/settingtypes.txt | 8 |
6 files changed, 57 insertions, 15 deletions
diff --git a/builtin/client/chatcommands.lua b/builtin/client/chatcommands.lua index 7c3dd521e..8090b2bef 100644 --- a/builtin/client/chatcommands.lua +++ b/builtin/client/chatcommands.lua @@ -155,7 +155,7 @@ core.register_chatcommand("place", { func = function(param) local success, pos = core.parse_relative_pos(param) if success then - cores.place_node(pos) + core.place_node(pos) return true, "Node placed at " .. core.pos_to_string(pos) end return false, pos diff --git a/builtin/client/cheats/combat.lua b/builtin/client/cheats/combat.lua index b497c6c1b..1f9ba9a91 100644 --- a/builtin/client/cheats/combat.lua +++ b/builtin/client/cheats/combat.lua @@ -2,7 +2,7 @@ local placed_crystal local switched_to_totem = 0 local used_sneak = true local totem_move_action = InventoryAction("move") -totem_move_action:to("current_player", "main", 8) +totem_move_action:to("current_player", "main", 9) core.register_globalstep(function(dtime) local player = core.localplayer @@ -48,9 +48,9 @@ core.register_globalstep(function(dtime) if totem_stack and totem_stack:get_name() ~= "mobs_mc:totem" then local totem_index = core.find_item("mobs_mc:totem") if totem_index then - totem_move_action:from("current_player", "main", totem_index - 1) + totem_move_action:from("current_player", "main", totem_index) totem_move_action:apply() - player:set_wield_index(8) + player:set_wield_index(9) end end end diff --git a/builtin/client/cheats/init.lua b/builtin/client/cheats/init.lua index a7be83cee..c579f2b89 100644 --- a/builtin/client/cheats/init.lua +++ b/builtin/client/cheats/init.lua @@ -62,6 +62,8 @@ core.cheats = { ["Enderchest"] = function() core.open_enderchest() end, ["HandSlot"] = function() core.open_handslot() end, ["NextItem"] = "next_item", + ["Strip"] = "strip", + ["AutoRefill"] = "autorefill", } } diff --git a/builtin/client/cheats/inventory.lua b/builtin/client/cheats/inventory.lua index faa7d1c0e..b9943f507 100644 --- a/builtin/client/cheats/inventory.lua +++ b/builtin/client/cheats/inventory.lua @@ -2,15 +2,48 @@ local elapsed_time = 0 local tick_time = 0.05 local drop_action = InventoryAction("drop") +local strip_move_act = InventoryAction("move") +strip_move_act:to("current_player", "craft", 1) +local strip_craft_act = InventoryAction("craft") +strip_craft_act:craft("current_player") +local strip_move_back_act = InventoryAction("move") +strip_move_back_act:from("current_player", "craftresult", 1) + core.register_globalstep(function(dtime) + local player = core.localplayer + if not player then return end + local item = player:get_wielded_item() + local itemdef = core.get_item_def(item:get_name()) + local wieldindex = player:get_wield_index() + -- AutoRefill + if core.settings:get_bool("autorefill") and itemdef then + local space = item:get_free_space() + local i = core.find_item(item:get_name(), wieldindex + 1) + if i and space > 0 then + local move_act = InventoryAction("move") + move_act:to("current_player", "main", wieldindex) + move_act:from("current_player", "main", i) + move_act:set_count(space) + move_act:apply() + end + end + -- Strip + if core.settings:get_bool("strip") then + if itemdef and itemdef.groups.tree and player:get_control().RMB then + strip_move_act:from("current_player", "main", wieldindex) + strip_move_back_act:to("current_player", "main", wieldindex) + strip_move_act:apply() + strip_craft_act:apply() + strip_move_back_act:apply() + end + end -- AutoEject if core.settings:get_bool("autoeject") then - local player = core.localplayer local list = (core.settings:get("eject_items") or ""):split(",") local inventory = core.get_inventory("current_player") for index, stack in pairs(inventory.main) do if table.indexof(list, stack:get_name()) ~= -1 then - drop_action:from("current_player", "main", index - 1) + drop_action:from("current_player", "main", index) drop_action:apply() end end @@ -19,12 +52,8 @@ core.register_globalstep(function(dtime) if core.settings:get_bool("next_item") then elapsed_time = elapsed_time + dtime if elapsed_time < tick_time then return end - local player = minetest.localplayer - if not player then return end - local item = player:get_wielded_item() if item:get_count() == 0 then - local index = player:get_wield_index() - player:set_wield_index(index + 1) + player:set_wield_index(wieldindex + 1) end elapsed_time = 0 end @@ -62,7 +91,7 @@ core.register_on_punchnode(function(pos, node) for index, stack in pairs(inventory.main) do is_better, best_time = check_tool(stack, node_groups, best_time) if is_better then - new_index = index - 1 + new_index = index end end player:set_wield_index(new_index) @@ -113,3 +142,6 @@ local hand_formspec = "size[9,8.75]".. function core.open_handslot() minetest.show_formspec("__builtin__:hand", hand_formspec) end + + + diff --git a/builtin/client/util.lua b/builtin/client/util.lua index d61b547c6..20e0e1d1b 100644 --- a/builtin/client/util.lua +++ b/builtin/client/util.lua @@ -21,9 +21,9 @@ function core.parse_relative_pos(param) return success, pos end -function core.find_item(item) +function core.find_item(item, mini, maxi) for index, stack in ipairs(core.get_inventory("current_player").main) do - if stack:get_name() == item then + if (not mini or index >= mini) and (not maxi or index <= maxi) and stack:get_name() == item then return index end end @@ -32,7 +32,7 @@ end function core.switch_to_item(item) local i = core.find_item(item) if i then - core.localplayer:set_wield_index(i - 1) + core.localplayer:set_wield_index(i) return true else return false diff --git a/builtin/settingtypes.txt b/builtin/settingtypes.txt index f30a16789..a7a92291d 100644 --- a/builtin/settingtypes.txt +++ b/builtin/settingtypes.txt @@ -2298,3 +2298,11 @@ autotnt (PlaceOnTop) bool false replace (Replace) bool false crystal_pvp (CrystalPvP) bool false + +autototem (AutoTotem) bool false + +dont_point_nodes (ThroughWalls) bool false + +strip (Strip) bool false + +autorefill (AutoRefill) bool false |