diff options
Diffstat (limited to 'clientmods')
-rw-r--r-- | clientmods/dragonfire/inventory/autoeject.lua | 28 | ||||
-rw-r--r-- | clientmods/dragonfire/inventory/init.lua | 9 | ||||
-rw-r--r-- | clientmods/dragonfire/inventory/mod.conf | 1 | ||||
-rw-r--r-- | clientmods/dragonfire/inventory/settingtypes.txt | 2 | ||||
-rw-r--r-- | clientmods/dragonfire/list/init.lua | 47 | ||||
-rw-r--r-- | clientmods/mods.conf | 1 |
6 files changed, 85 insertions, 3 deletions
diff --git a/clientmods/dragonfire/inventory/autoeject.lua b/clientmods/dragonfire/inventory/autoeject.lua new file mode 100644 index 000000000..bd2eb0d47 --- /dev/null +++ b/clientmods/dragonfire/inventory/autoeject.lua @@ -0,0 +1,28 @@ +local old_index + +minetest.register_globalstep(function() + if inventory_mod.nodrop then + inventory_mod.nodrop = false + return + end + local player = minetest.localplayer + if old_index then + player:set_wield_index(old_index) + minetest.set_keypress("drop", false) + old_index = nil + elseif minetest.settings:get_bool("autoeject") then + local list = (minetest.settings:get("eject_items") or ""):split(",") + local inventory = minetest.get_inventory("current_player") + for index, stack in pairs(inventory.main) do + if table.indexof(list, stack:get_name()) ~= -1 then + old_index = player:get_wield_index() + player:set_wield_index(index - 1) + minetest.set_keypress("drop", true) -- causes to drop tools selected using autotool sometimes, just + return + end + end + end +end) + +minetest.register_chatcommand("eject", list.new("Configure AutoEject", "eject_items")) +minetest.register_cheat("AutoEject", "Player", "autoeject") diff --git a/clientmods/dragonfire/inventory/init.lua b/clientmods/dragonfire/inventory/init.lua index 4440992a6..ce5ea401c 100644 --- a/clientmods/dragonfire/inventory/init.lua +++ b/clientmods/dragonfire/inventory/init.lua @@ -1,8 +1,11 @@ +inventory_mod = {} + local modname = minetest.get_current_modname() local modpath = minetest.get_modpath(modname) dofile(modpath .. "/invhack.lua") -dofile(modpath .. "/enderchest.lua") -dofile(modpath .. "/next_item.lua") +dofile(modpath .. "/enderchest.lua") +dofile(modpath .. "/hand.lua") +dofile(modpath .. "/next_item.lua") dofile(modpath .. "/autotool.lua") -dofile(modpath .. "/hand.lua") +dofile(modpath .. "/autoeject.lua") diff --git a/clientmods/dragonfire/inventory/mod.conf b/clientmods/dragonfire/inventory/mod.conf index 18b883fbd..439319a43 100644 --- a/clientmods/dragonfire/inventory/mod.conf +++ b/clientmods/dragonfire/inventory/mod.conf @@ -1,3 +1,4 @@ name = inventory author = Fleckenstein description = The inventory cheats for Dragonfireclient +dependencies = list diff --git a/clientmods/dragonfire/inventory/settingtypes.txt b/clientmods/dragonfire/inventory/settingtypes.txt index fef673b1f..15030466d 100644 --- a/clientmods/dragonfire/inventory/settingtypes.txt +++ b/clientmods/dragonfire/inventory/settingtypes.txt @@ -1,2 +1,4 @@ next_item (NextItem) bool false autotool (AutoTool) bool false +autoeject (AutoEject) bool false +eject_items (AutoEject Items) string diff --git a/clientmods/dragonfire/list/init.lua b/clientmods/dragonfire/list/init.lua new file mode 100644 index 000000000..71b9edaa4 --- /dev/null +++ b/clientmods/dragonfire/list/init.lua @@ -0,0 +1,47 @@ +list = {} + +function list.new(desc, setting) + local def = {} + def.description = desc + def.params = "del <item> | add <item> | list" + function def.func(param) + local list = (minetest.settings:get(setting) or ""):split(",") + if param == "list" then + return true, table.concat(list, ", ") + else + local sparam = param:split(" ") + local cmd = sparam[1] + local item = sparam[2] + if cmd == "del" then + if not item then + return false, "Missing item." + end + local i = table.indexof(list, item) + if i == -1 then + return false, item .. " is not on the list." + else + table.remove(list, i) + minetest.settings:set(setting, table.concat(list, ",")) + return true, "Removed " .. item .. " from the list." + end + elseif cmd == "add" then + if not item then + return false, "Missing item." + end + local i = table.indexof(list, item) + if i ~= -1 then + return false, item .. " is already on the list." + else + table.insert(list, item) + minetest.settings:set(setting, table.concat(list, ",")) + return true, "Added " .. item .. " to the list." + end + end + end + return false, "Invalid usage. (See /help <command>)" + end + return def +end + +minetest.register_chatcommand("xray", list.new("Configure X-Ray", "xray_nodes")) +--minetest.register_chatcommand("Configure Search Nodes", "search_nodes") diff --git a/clientmods/mods.conf b/clientmods/mods.conf index 6c9a0f591..c1a72da1f 100644 --- a/clientmods/mods.conf +++ b/clientmods/mods.conf @@ -9,3 +9,4 @@ load_mod_pathfinding = true load_mod_autoeat = true load_mod_perlin = true load_mod_autosneak = true +load_mod_list = true |