From ea4765ce46f9abd86dc684be1e86d6dec4e94508 Mon Sep 17 00:00:00 2001 From: Joachim Stolberg Date: Mon, 13 Apr 2020 13:20:38 +0200 Subject: [PATCH] distri 1:1 mode changed, drill pipe wrench added, ta4_chest modes enhanced, further improvements --- basic_machines/autocrafter.lua | 8 +-- basic_machines/chest.lua | 2 +- basic_machines/distributor.lua | 48 ++++++++++--- basic_machines/electronic_fab.lua | 6 +- basic_machines/gravelrinser.lua | 2 +- basic_machines/gravelsieve.lua | 2 +- basic_machines/grinder.lua | 2 +- basic_machines/legacy_nodes.lua | 6 +- basic_machines/liquidsampler.lua | 2 +- basic_machines/pusher.lua | 2 +- basic_machines/quarry.lua | 2 +- basic_machines/ta4_chest.lua | 109 ++++++++++++++++++++++++------ basis/command.lua | 31 ++++++--- coal_power_station/firebox.lua | 2 +- doc/manual_DE.lua | 32 ++++++--- furnace/furnace_top.lua | 6 +- init.lua | 2 +- liquids/filler.lua | 4 +- liquids/silo.lua | 2 +- locale/techage.de.tr | 7 +- locale/template.txt | 7 +- lua_controller/sensorchest.lua | 2 +- manuals/manual_ta2_DE.md | 4 +- manuals/manual_ta3_DE.md | 18 ++++- manuals/manual_ta4_DE.md | 9 ++- manuals/toc_DE.md | 3 +- oil/drillbox.lua | 2 +- oil/tower.lua | 4 +- textures/techage_pipe_wrench.png | Bin 272 -> 366 bytes tools/pipe_wrench.lua | 8 +-- 30 files changed, 243 insertions(+), 91 deletions(-) diff --git a/basic_machines/autocrafter.lua b/basic_machines/autocrafter.lua index 3295015..3cef8b8 100644 --- a/basic_machines/autocrafter.lua +++ b/basic_machines/autocrafter.lua @@ -338,15 +338,15 @@ local tubing = { local meta = minetest.get_meta(pos) if meta:get_int("pull_dir") == in_dir then local inv = M(pos):get_inventory() - return techage.get_items(inv, "dst", num) + return techage.get_items(pos, inv, "dst", num) end end, - on_push_item = function(pos, in_dir, stack) + on_push_item = function(pos, in_dir, stack, idx) local meta = minetest.get_meta(pos) - if meta:get_int("push_dir") == in_dir or in_dir == 5 then + if meta:get_int("push_dir") == in_dir or in_dir == 5 then local inv = M(pos):get_inventory() CRD(pos).State:start_if_standby(pos) - return techage.put_items(inv, "src", stack) + return techage.put_items(inv, "src", stack, idx) end end, on_unpull_item = function(pos, in_dir, stack) diff --git a/basic_machines/chest.lua b/basic_machines/chest.lua index d0c03fd..8d72405 100644 --- a/basic_machines/chest.lua +++ b/basic_machines/chest.lua @@ -208,7 +208,7 @@ techage.register_node({"techage:chest_ta2", "techage:chest_ta3", "techage:chest_ return taken end else - return techage.get_items(inv, "main", num) + return techage.get_items(pos, inv, "main", num) end end, on_push_item = function(pos, in_dir, stack) diff --git a/basic_machines/distributor.lua b/basic_machines/distributor.lua index ad2cdbc..0d1419f 100644 --- a/basic_machines/distributor.lua +++ b/basic_machines/distributor.lua @@ -42,6 +42,7 @@ local function filter_settings(pos) local ItemFilter = {} -- { = {dir,...}] local OpenPorts = {} -- {dir, ...} local FilterItems = {} -- {, , ...} for sequencing only + local FilterItemIdx = {} -- { = , = , ...} for sequencing only -- collect all filter settings for idx,slot in ipairs(SlotColors) do if filter[idx] == true then @@ -50,7 +51,7 @@ local function filter_settings(pos) if inv:is_empty(slot) then table.insert(OpenPorts, out_dir) else - for _,stack in ipairs(inv:get_list(slot)) do + for idx2,stack in ipairs(inv:get_list(slot)) do local name = stack:get_name() if name ~= "" then if not ItemFilter[name] then @@ -58,6 +59,7 @@ local function filter_settings(pos) end table.insert(ItemFilter[name], out_dir) table.insert(FilterItems, name) + FilterItemIdx[name] = idx2 end end end @@ -68,6 +70,7 @@ local function filter_settings(pos) ItemFilter = ItemFilter, OpenPorts = OpenPorts, FilterItems = FilterItems, + FilterItemIdx = FilterItemIdx, } end @@ -89,8 +92,19 @@ local function get_filter_settings(pos) return FilterCache[hash].ItemFilter, FilterCache[hash].OpenPorts, FilterCache[hash].FilterItems end +local function get_slot_index(pos, name) + local hash = minetest.hash_node_position(pos) + if FilterCache[hash] == nil then + filter_settings(pos) + end + return FilterCache[hash].FilterItemIdx[name] +end + local function order_checkbox(pos, filter) local cnt = 0 + + if CRD(pos).stage == 2 then return "" end + for _,val in ipairs(filter) do if val then cnt = cnt + 1 end end @@ -288,7 +302,7 @@ local function sequencing(pos, inv, crd, nvm) if not inv:contains_item("src", stack) then break end - if not techage.push_items(pos, push_dir, stack) then + if not techage.push_items(pos, push_dir, stack, offs) then blocked = true break end @@ -342,7 +356,7 @@ local function on_receive_fields(pos, formname, fields, player) filter[3] = fields.filter3 == "true" elseif fields.filter4 ~= nil then filter[4] = fields.filter4 == "true" - elseif fields.order ~= nil then + elseif fields.order ~= nil and CRD(pos).stage > 2 then meta:set_int("order", fields.order == "true" and 1 or 0) local nvm = techage.get_nvm(pos) nvm.last_index = 1 -- start from the beginning @@ -418,19 +432,37 @@ tiles.act = { "techage_filling_ta#.png^techage_frame_ta#.png^techage_appl_distri_blue.png", } +local function put_items(pos, item) + local order = M(pos):get_int("order") == 1 + local inv = M(pos):get_inventory() + if order then + local name = item:get_name() + local idx = get_slot_index(pos, name) + if idx then + local stack = inv:get_stack("src", idx) + if stack:item_fits(item) then + stack:add_item(item) + inv:set_stack("src", idx, stack) + return true + end + end + return false + else + return techage.put_items(inv, "src", item) + end +end + local tubing = { on_pull_item = function(pos, in_dir, num) local inv = M(pos):get_inventory() - return techage.get_items(inv, "src", num) + return techage.get_items(pos, inv, "src", num) end, on_push_item = function(pos, in_dir, stack) - local inv = M(pos):get_inventory() CRD(pos).State:start_if_standby(pos) - return techage.put_items(inv, "src", stack) + return put_items(pos, stack) end, on_unpull_item = function(pos, in_dir, stack) - local inv = M(pos):get_inventory() - return techage.put_items(inv, "src", stack) + return put_items(pos, stack) end, on_recv_message = function(pos, src, topic, payload) if topic == "info" then diff --git a/basic_machines/electronic_fab.lua b/basic_machines/electronic_fab.lua index 27e6b4b..bb62280 100644 --- a/basic_machines/electronic_fab.lua +++ b/basic_machines/electronic_fab.lua @@ -175,15 +175,15 @@ local tubing = { local meta = minetest.get_meta(pos) if meta:get_int("pull_dir") == in_dir then local inv = M(pos):get_inventory() - return techage.get_items(inv, "dst", num) + return techage.get_items(pos, inv, "dst", num) end end, - on_push_item = function(pos, in_dir, stack) + on_push_item = function(pos, in_dir, stack, idx) local meta = minetest.get_meta(pos) if meta:get_int("push_dir") == in_dir or in_dir == 5 then local inv = M(pos):get_inventory() CRD(pos).State:start_if_standby(pos) - return techage.put_items(inv, "src", stack) + return techage.put_items(inv, "src", stack, idx) end end, on_unpull_item = function(pos, in_dir, stack) diff --git a/basic_machines/gravelrinser.lua b/basic_machines/gravelrinser.lua index 33165e7..2e6bdb8 100644 --- a/basic_machines/gravelrinser.lua +++ b/basic_machines/gravelrinser.lua @@ -219,7 +219,7 @@ local tubing = { local meta = minetest.get_meta(pos) if meta:get_int("pull_dir") == in_dir then local inv = M(pos):get_inventory() - return techage.get_items(inv, "dst", num) + return techage.get_items(pos, inv, "dst", num) end end, on_push_item = function(pos, in_dir, stack) diff --git a/basic_machines/gravelsieve.lua b/basic_machines/gravelsieve.lua index f55f18c..d19003d 100644 --- a/basic_machines/gravelsieve.lua +++ b/basic_machines/gravelsieve.lua @@ -152,7 +152,7 @@ local tubing = { local meta = minetest.get_meta(pos) if meta:get_int("pull_dir") == in_dir then local inv = M(pos):get_inventory() - return techage.get_items(inv, "dst", num) + return techage.get_items(pos, inv, "dst", num) end end, on_push_item = function(pos, in_dir, stack) diff --git a/basic_machines/grinder.lua b/basic_machines/grinder.lua index 494613e..b9d3992 100644 --- a/basic_machines/grinder.lua +++ b/basic_machines/grinder.lua @@ -165,7 +165,7 @@ local tubing = { local meta = minetest.get_meta(pos) if meta:get_int("pull_dir") == in_dir then local inv = M(pos):get_inventory() - return techage.get_items(inv, "dst", num) + return techage.get_items(pos, inv, "dst", num) end end, on_push_item = function(pos, in_dir, stack) diff --git a/basic_machines/legacy_nodes.lua b/basic_machines/legacy_nodes.lua index 738be08..5d1c46d 100644 --- a/basic_machines/legacy_nodes.lua +++ b/basic_machines/legacy_nodes.lua @@ -35,7 +35,7 @@ techage.register_node({"default:chest", "default:chest_open"}, { on_pull_item = function(pos, in_dir, num) local meta = minetest.get_meta(pos) local inv = meta:get_inventory() - return techage.get_items(inv, "main", num) + return techage.get_items(pos, inv, "main", num) end, on_push_item = function(pos, in_dir, stack) local meta = minetest.get_meta(pos) @@ -54,7 +54,7 @@ techage.register_node({"default:chest_locked", "default:chest_locked_open"}, { local meta = minetest.get_meta(pos) if is_owner(pos, meta) then local inv = meta:get_inventory() - return techage.get_items(inv, "main", num) + return techage.get_items(pos, inv, "main", num) end end, on_push_item = function(pos, in_dir, stack) @@ -73,7 +73,7 @@ techage.register_node({"default:furnace", "default:furnace_active"}, { on_pull_item = function(pos, in_dir, num) local meta = minetest.get_meta(pos) local inv = meta:get_inventory() - return techage.get_items(inv, "dst", num) + return techage.get_items(pos, inv, "dst", num) end, on_push_item = function(pos, side, stack) local meta = minetest.get_meta(pos) diff --git a/basic_machines/liquidsampler.lua b/basic_machines/liquidsampler.lua index 9f39250..e25fb43 100644 --- a/basic_machines/liquidsampler.lua +++ b/basic_machines/liquidsampler.lua @@ -153,7 +153,7 @@ local tubing = { local meta = minetest.get_meta(pos) if meta:get_int("pull_dir") == in_dir then local inv = M(pos):get_inventory() - return techage.get_items(inv, "dst", num) + return techage.get_items(pos, inv, "dst", num) end end, on_push_item = function(pos, in_dir, stack) diff --git a/basic_machines/pusher.lua b/basic_machines/pusher.lua index 912096e..492866f 100644 --- a/basic_machines/pusher.lua +++ b/basic_machines/pusher.lua @@ -29,7 +29,7 @@ local S = techage.S -- Consumer Related Data local CRD = function(pos) return (minetest.registered_nodes[techage.get_node_lvm(pos).name] or {}).consumer end -local STANDBY_TICKS = 3 +local STANDBY_TICKS = 2 local COUNTDOWN_TICKS = 4 local CYCLE_TIME = 2 diff --git a/basic_machines/quarry.lua b/basic_machines/quarry.lua index 17e7c62..097cb9a 100644 --- a/basic_machines/quarry.lua +++ b/basic_machines/quarry.lua @@ -329,7 +329,7 @@ local tubing = { local meta = minetest.get_meta(pos) if meta:get_int("pull_dir") == in_dir then local inv = M(pos):get_inventory() - return techage.get_items(inv, "main", num) + return techage.get_items(pos, inv, "main", num) end end, on_push_item = function(pos, in_dir, stack) diff --git a/basic_machines/ta4_chest.lua b/basic_machines/ta4_chest.lua index 8bceacb..2ad9680 100644 --- a/basic_machines/ta4_chest.lua +++ b/basic_machines/ta4_chest.lua @@ -112,8 +112,22 @@ local function sort_in(pos, inv, nvm, stack) return false end -local function get_item(inv, nvm, item_name, count) +local function move_items_to_stack(item, stack, num) + item.count = item.count - num + stack.count = stack.count + num + if stack.count > 0 then + stack.name = item.name + end + if item.count == 0 then + item.name = "" -- empty + end + return stack +end + +local function get_item(pos, inv, nvm, item_name, count) local stack = {count = 0} + nvm.inventory = nvm.inventory or {} + if not inv:is_empty("main") then if item_name then local taken = inv:remove_item("main", {name = item_name, count = count}) @@ -121,23 +135,46 @@ local function get_item(inv, nvm, item_name, count) return taken end else - return techage.get_items(inv, "main", count) + return techage.get_items(pos, inv, "main", count) end end - for _,item in ipairs(nvm.inventory or {}) do - if (item_name == nil and stack.name == nil) or item.name == item_name then - local num = math.min(item.count, count - stack.count, max_stacksize(item.name)) - item.count = item.count - num - stack.count = stack.count + num - if item.name ~= "" then - stack.name = item.name + + if item_name then + -- Take specified items from the chest + for _,item in ipairs(nvm.inventory) do + if item.name == item_name then + local num = math.min(item.count, count - stack.count, max_stacksize(item.name)) + if M(pos):get_int("assignment") == 1 and num == item.count then + -- never take the last item + num = num - 1 + end + stack = move_items_to_stack(item, stack, num) + if stack.count == count then + return ItemStack(stack) + end end - if item.count == 0 then - item.name = "" -- empty - end - if stack.count == count then - return ItemStack(stack) + end + else + -- Take any items. The position within the inventory + -- is incremented each time so that different item stacks will be considered. + local mem = techage.get_mem(pos) + mem.startpos = mem.startpos or 1 + for idx = mem.startpos, mem.startpos + 8 do + idx = (idx % 8) + 1 + local item = nvm.inventory[idx] + if item.name ~= "" and (stack.name == nil or stack.name == item.name) then + local num = math.min(item.count, count - stack.count, max_stacksize(item.name)) + if M(pos):get_int("assignment") == 1 and num == item.count then + -- never take the last item + num = num - 1 + end + stack = move_items_to_stack(item, stack, num) + if stack.count == count then + mem.startpos = idx + return ItemStack(stack) + end end + mem.startpos = idx end end if stack.count > 0 then @@ -171,13 +208,18 @@ local function formspec(pos) local nvm = techage.get_nvm(pos) local inv = M(pos):get_inventory() local size = get_stacksize(pos) - return "size[8,7.6]".. + local assignment = M(pos):get_int("assignment") == 1 and "true" or "false" + return "size[8,8]".. default.gui_bg.. default.gui_bg_img.. default.gui_slots.. - "label[0,-0.2;"..S("Size")..": 8x"..size.."]".. - formspec_container(0, 0.4, nvm, inv).. - "list[current_player;main;0,3.9;8,4;]".. + formspec_container(0, 0, nvm, inv).. + "button[1,3;2,1;unlock;"..S("Unlock").."]".. + "tooltip[1,3;2,1;"..S("Unlock connected chest\nif all slots are below 2000")..";#0C3D32;#FFFFFF]".. + "label[4,3;"..S("Size")..": 8x"..size.."]".. + "checkbox[4,3.3;assignment;"..S("keep assignment")..";"..assignment.."]".. + "tooltip[4,3.5;2,0.6;"..S("Never completely empty the slots\nwith the pusher to keep the items assignment")..";#0C3D32;#FFFFFF]".. + "list[current_player;main;0,4.3;8,4;]".. "listring[context;main]".. "listring[current_player;main]" end @@ -221,13 +263,32 @@ local function convert_to_chest_again(pos, node, player) local dir = techage.side_to_outdir("B", node.param2) local pos1 = tubelib2.get_pos(pos, dir) local node1 = techage.get_node_lvm(pos1) + if minetest.is_protected(pos1, player:get_player_name()) then + return + end if node1.name == "techage:ta4_chest_dummy" then node1.name = "techage:ta4_chest" minetest.swap_node(pos1, node1) - M(pos1):set_int("disabled", 1) + --M(pos1):set_int("disabled", 1) + local nvm = techage.get_nvm(pos1) + gen_inv(nvm) + local number = techage.add_node(pos1, "techage:ta4_chest") + M(pos1):set_string("owner", player:get_player_name()) + M(pos1):set_string("formspec", formspec(pos1)) + M(pos1):set_string("infotext", DESCRIPTION.." "..number) end end +local function unlock_chests(pos, player) + local nvm = techage.get_nvm(pos) + for idx = 1,8 do + if get_count(nvm, idx) > STACK_SIZE then return end + end + local node = techage.get_node_lvm(pos) + convert_to_chest_again(pos, node, player) + M(pos):set_int("stacksize", STACK_SIZE) +end + local function allow_metadata_inventory_put(pos, listname, index, stack, player) if minetest.is_protected(pos, player:get_player_name()) then return 0 @@ -320,6 +381,12 @@ local function on_receive_fields(pos, formname, fields, player) break end end + if fields.unlock then + unlock_chests(pos, player) + end + if fields.assignment then + M(pos):set_int("assignment", fields.assignment == "true" and 1 or 0) + end M(pos):set_string("formspec", formspec(pos)) end @@ -385,7 +452,7 @@ minetest.register_node("techage:ta4_chest", { on_metadata_inventory_take = on_metadata_inventory_take, paramtype2 = "facedir", - groups = {choppy=2, cracky=2, crumbly=2, not_in_creative_inventory = 1}, + groups = {choppy=2, cracky=2, crumbly=2}, is_ground_content = false, sounds = default.node_sound_wood_defaults(), }) @@ -416,7 +483,7 @@ techage.register_node({"techage:ta4_chest"}, { on_pull_item = function(pos, in_dir, num, item_name) local nvm = techage.get_nvm(pos) local inv = M(pos):get_inventory() - local res = get_item(inv, nvm, item_name, num) + local res = get_item(pos, inv, nvm, item_name, num) if techage.is_activeformspec(pos) then M(pos):set_string("formspec", formspec(pos)) end diff --git a/basis/command.lua b/basis/command.lua index 7102708..ebc9a4e 100644 --- a/basis/command.lua +++ b/basis/command.lua @@ -406,10 +406,10 @@ function techage.pull_items(pos, out_dir, num, item_name) end end -function techage.push_items(pos, out_dir, stack) +function techage.push_items(pos, out_dir, stack, idx) local npos, in_dir, name = get_dest_node(pos, out_dir) if npos and NodeDef[name] and NodeDef[name].on_push_item then - return NodeDef[name].on_push_item(npos, in_dir, stack) + return NodeDef[name].on_push_item(npos, in_dir, stack, idx) elseif is_air_like(name) or check_cart(npos) then minetest.add_item(npos, stack) return true @@ -461,20 +461,22 @@ end ------------------------------------------------------------------- -- Get the given number of items from the inv. The position within the list --- is random so that different item stacks will be considered. +-- is incremented each time so that different item stacks will be considered. -- Returns nil if ItemList is empty. -function techage.get_items(inv, listname, num) +function techage.get_items(pos, inv, listname, num) if inv:is_empty(listname) then return nil end local size = inv:get_size(listname) - local startpos = math.random(1, size) - for idx = startpos, startpos+size do + local mem = techage.get_mem(pos) + mem.ta_startpos = mem.ta_startpos or 1 + for idx = mem.ta_startpos, mem.ta_startpos+size do idx = (idx % size) + 1 local items = inv:get_stack(listname, idx) if items:get_count() > 0 then local taken = items:take_item(num) inv:set_stack(listname, idx, items) + mem.ta_startpos = idx return taken end end @@ -483,10 +485,19 @@ end -- Put the given stack into the given ItemList. -- Function returns false if ItemList is full. -function techage.put_items(inv, listname, stack) - if inv and inv.room_for_item and inv:room_for_item(listname, stack) then - inv:add_item(listname, stack) - return true +function techage.put_items(inv, listname, item, idx) + if idx and inv and idx <= inv:get_size(listname) then + local stack = inv:get_stack(listname, idx) + if stack:item_fits(item) then + stack:add_item(item) + inv:set_stack(listname, idx, stack) + return true + end + else + if inv and inv:room_for_item(listname, item) then + inv:add_item(listname, item) + return true + end end return false end diff --git a/coal_power_station/firebox.lua b/coal_power_station/firebox.lua index 37dbb5d..70547ac 100644 --- a/coal_power_station/firebox.lua +++ b/coal_power_station/firebox.lua @@ -187,7 +187,7 @@ techage.register_node({"techage:coalfirebox"}, { on_pull_item = function(pos, in_dir, num) local meta = minetest.get_meta(pos) local inv = meta:get_inventory() - return techage.get_items(inv, "fuel", num) + return techage.get_items(pos, inv, "fuel", num) end, on_push_item = function(pos, in_dir, stack) if firebox.Burntime[stack:get_name()] then diff --git a/doc/manual_DE.lua b/doc/manual_DE.lua index 7e13199..7b3c9b3 100644 --- a/doc/manual_DE.lua +++ b/doc/manual_DE.lua @@ -76,7 +76,7 @@ techage.manual_DE.aTitel = { "3,TA3 Ölexplorer / Oil Explorer", "3,TA3 Ölbohrkiste / Oil Drill Box", "3,TA3 Ölpumpe / Oil Pumpjack", - "3,TA3 Bohrgestänge / Drill Bit", + "3,TA3 Bohrgestänge / Drill Pipe", "3,Öltank / Oil Tank", "2,Öl-Transport", "2,Öl-Verarbeitung", @@ -111,6 +111,7 @@ techage.manual_DE.aTitel = { "3,Techage Info Tool", "3,TechAge Programmer", "3,TechAge Kelle / Trowel", + "3,TA3 Bohrgestängezange / TA3 Drill Pipe Wrench", "1,TA4: Zukunft", "2,Windkraftanlage", "3,TA4 Windkraftanlage / Wind Turbine", @@ -387,7 +388,7 @@ techage.manual_DE.aText = { "\n".. "\n".. "\n", - "Der Verteiler ist in der Lage\\, die Items aus seinem Inventar sortieren in bis zu vier Richtungen weiter zu transportieren. Dazu muss der Verteiler entsprechend konfiguriert werden. \n".. + "Der Verteiler ist in der Lage\\, die Items aus seinem Inventar sortiert in bis zu vier Richtungen weiter zu transportieren. Dazu muss der Verteiler entsprechend konfiguriert werden. \n".. "\n".. "Der Verteiler besitzt dazu ein Menü mit 4 Filter mit unterschiedlichen Farben\\, entsprechend den 4 Ausgängen. Soll ein Ausgang genutzt werden\\, so muss der entsprechende Filter über die \"on\" Checkbox aktiviert werden. Alle Items\\, die für diesen Filter konfiguriert sind\\, werden über den zugeordneten Ausgang ausgegeben. Wird ein Filter aktiviert\\, ohne das Items konfiguriert werden\\, so sprechen wir hier von einem \"nicht-konfigurierten\"\\, offenen Ausgang.\n".. "\n".. @@ -401,8 +402,6 @@ techage.manual_DE.aText = { "\n".. "Einstellbar ist die Betriebsart über die \">>|\" Checkbox (an => Betriebsart 2)\n".. "\n".. - "Wird nur ein Ausgang aktiviert und mit mehreren Items konfiguriert\\, so kann die 1:1 Checkbox angeklickt werden. In diesem Falle werden Items streng gemäß der Filtereinstellung weitergegeben. Fehlt ein Item in der Reihenfolge\\, blockiert der Verteiler. Damit lassen sich andere Maschinen wie bspw. der Autocrafter exakt gemäß dem eingestellten Rezept bestücken.\n".. - "\n".. "Der Verarbeitungsleistung eines TA2 Verteilers beträgt 4 Items alle 2 s\\, wobei der Verteiler dabei versucht\\, die 4 Items auf die offenen Ausgänge zu verteilen.\n".. "\n".. "\n".. @@ -717,7 +716,7 @@ techage.manual_DE.aText = { "\n".. "\n".. "\n", - "Das Bohrgestänge wird für die Bohrung benötigt. Es werden so viele Bohrgestänge Items benötigt wie als Tiefe für das Ölfeld angegeben wurde. Das Bohrgestänge ist nach der Bohrung nutzlos\\, kann aber auch nicht abgebaut werden und verbleibt im Boden.\n".. + "Das Bohrgestänge wird für die Bohrung benötigt. Es werden so viele Bohrgestänge Items benötigt wie als Tiefe für das Ölfeld angegeben wurde. Das Bohrgestänge ist nach der Bohrung nutzlos\\, kann aber auch nicht abgebaut werden und verbleibt im Boden. Es gibt aber ein Werkzeug\\, um die Bohrgestänge Blöcke wieder entfernen zu können (-> Werkzeuge -> TA3 Bohrgestängezange).\n".. "\n".. "\n".. "\n", @@ -917,7 +916,15 @@ techage.manual_DE.aText = { "\n".. "\n".. "\n", - "Die Funktion entspricht der von TA2.\n".. + "Die Funktion des TA3 Verteilers entspricht der von TA2 mit einer weiteren Betriebart.\n".. + "\n".. + "*1:1 Bestückungsfunktion*\n".. + "\n".. + "Wird nur ein Ausgang aktiviert und mit mehreren Items konfiguriert\\, so kann die 1:1 Checkbox angeklickt werden. In diesem Falle werden nur Items gemäß der Filtereinstellung angenommen und in der Reihenfolge\\, wie die Items im Filter eingetragen sind\\, in definierte Positionen im Ziel-Inventar abgelegt. Damit kann weder das Inventar des Verteilers noch des Zielblocks volllaufen. Dies funktioniert für Autocrafter\\, Industrieofen und Elektronikfabrik.\n".. + "Mit dieser Betriebsart lassen sich andere Maschinen wie bspw. der Autocrafter exakt gemäß dem eingestellten Rezept bestücken. \n".. + "\n".. + "Dies funktioniert nur nur\\, wenn die Inventare des Verteilers und des Zielblocks zuvor frei sind.\n".. + "\n".. "Die Verarbeitungsleistung beträgt 12 Items alle 4 s.\n".. "\n".. "\n".. @@ -974,6 +981,8 @@ techage.manual_DE.aText = { "\n".. "\n".. "\n", + "Mit diesem Werkzeug lassen sich die Bohrgestängezange Blöcke wieder entfernen\\, wenn dort bspw. ein Tunnel durch soll.\n".. + "\n", "Regenerative Energiequellen wie Wind\\, Sonne und Biokraft helfen dir\\, das Ölzeitalter zu verlassen. Mit modernen Technologien und intelligenten Maschinen machst du dich auf in die Zukunft.\n".. "\n".. "\n".. @@ -1342,7 +1351,7 @@ techage.manual_DE.aText = { "\n".. "Wird die Kiste mit einem Schieber gefüllt\\, so füllen sich alle Speicherplätze von links nach rechts. Sind alle 8 Speicher voll und können keine weiteren Items hinzugefügt werden\\, so werden diese Items im Ein-/Ausgabe-Inventar gespeichert. Die Kiste ist damit für den Schieberbetrieb vollständig gefüllt und weitere Items werden abgewiesen.\n".. "\n".. - "Wird die Kiste über einen Schieber geleert\\, leeren sich auch die Speicher wieder von links nach rechts.\n".. + "Wird die Kiste über einen Schieber geleert\\, werden von Speicherplätzen Items entnommen.\n".. "\n".. "*Reihenfunktion*\n".. "\n".. @@ -1350,7 +1359,12 @@ techage.manual_DE.aText = { "\n".. "Zuerst muss die Front-Kiste gesetzt werden\\, dann werden die Stapel-Kisten mit gleicher Blickrichtung dahinter gesetzt (alle Kisten haben die Front in Richtung Spieler). Bei 2 Kisten in Reihe erhöht sich die Größe auf 8x4000\\, usw.\n".. "\n".. - "Die angereihten Kisten können nun nicht mehr entfernt werden. Um die Kisten wieder abbauen zu können\\, muss zuerst die Frontkiste entfernt werden. Danach können die Kisten der Reihe nach wieder entfernt werden. \n".. + "Die angereihten Kisten können nun nicht mehr entfernt werden. Um die Kisten wieder abbauen zu können\\, gibt es zwei Möglichkeiten:\n".. + "\n".. + " - Die Frontkiste leeren und entfernen. Damit wird die nächste Kiste entsperrt und kann entfernt werden.\n".. + " - Die Frontkiste soweit leeren dass alle Speicherplätzen maximal 2000 Items beinhalten. Damit wird die nächste Kiste entsperrt und kann entfernt werden.\n".. + "\n".. + "Die Kisten haben eine \"Reihenfolge\" Checkbox. Wird diese Checkbox aktiviert\\, werden die Speicherplätze durch einen Schieber nicht mehr vollständig entleert. Das letzte Item verbleibt als Vorbelegung in dem Speicherplatz. Damit ergibt sich eine feste Zuordnung von Items zu Speicherplätzen.\n".. "\n".. "Die Kiste kann nur von den Spielern genutzt werden\\, die an diesem Ort auch bauen können\\, also Protection Rechte besitzen. Es spielt dabei keine Rolle\\, wer die Kiste setzt. \n".. "\n".. @@ -1495,6 +1509,7 @@ techage.manual_DE.aItemName = { "ta3_end_wrench", "ta3_programmer", "ta3_trowel", + "", "techage_ta4", "", "ta4_windturbine", @@ -1670,6 +1685,7 @@ techage.manual_DE.aPlanTable = { "", "", "", + "", "ta4_windturbine", "", "", diff --git a/furnace/furnace_top.lua b/furnace/furnace_top.lua index d0f8d07..1f6d235 100644 --- a/furnace/furnace_top.lua +++ b/furnace/furnace_top.lua @@ -216,14 +216,14 @@ local tubing = { local meta = minetest.get_meta(pos) if meta:get_int("pull_dir") == in_dir then local inv = M(pos):get_inventory() - return techage.get_items(inv, "dst", num) + return techage.get_items(pos, inv, "dst", num) end end, - on_push_item = function(pos, in_dir, stack) + on_push_item = function(pos, in_dir, stack, idx) local meta = minetest.get_meta(pos) if meta:get_int("push_dir") == in_dir or in_dir == 5 then local inv = M(pos):get_inventory() - return techage.put_items(inv, "src", stack) + return techage.put_items(inv, "src", stack, idx) end end, on_unpull_item = function(pos, in_dir, stack) diff --git a/init.lua b/init.lua index 4665237..0422b19 100644 --- a/init.lua +++ b/init.lua @@ -23,6 +23,7 @@ else -- Basis features local MP = minetest.get_modpath("techage") dofile(MP.."/basis/lib.lua") -- helper functions + dofile(MP.."/basis/storage.lua") dofile(MP.."/basis/gravel_lib.lua") -- ore probability dofile(MP.."/basis/node_states.lua") -- state model dofile(MP.."/basis/tubes.lua") -- tubes for item transport @@ -38,7 +39,6 @@ else dofile(MP.."/basis/networks.lua") dofile(MP.."/basis/recipe_lib.lua") dofile(MP.."/basis/formspec_update.lua") - dofile(MP.."/basis/storage.lua") -- Main doc dofile(MP.."/doc/manual_DE.lua") diff --git a/liquids/filler.lua b/liquids/filler.lua index e25f9f9..2b30928 100644 --- a/liquids/filler.lua +++ b/liquids/filler.lua @@ -72,7 +72,7 @@ end local function node_timer(pos, elapsed) local inv = M(pos):get_inventory() if not inv:is_empty("src") then - local taken = techage.get_items(inv, "src", 1) + local taken = techage.get_items(pos, inv, "src", 1) if liquid.is_container_empty(taken:get_name()) then return liquid.fill_container({x = pos.x, y = pos.y+1, z = pos.z}, inv, taken:get_name()) else @@ -132,7 +132,7 @@ minetest.register_node("techage:filler", { techage.register_node({"techage:filler"}, { on_pull_item = function(pos, in_dir, num) local inv = M(pos):get_inventory() - return techage.get_items(inv, "dst", num) + return techage.get_items(pos, inv, "dst", num) end, on_push_item = function(pos, in_dir, stack) local inv = M(pos):get_inventory() diff --git a/liquids/silo.lua b/liquids/silo.lua index f8db9b5..a097fb8 100644 --- a/liquids/silo.lua +++ b/liquids/silo.lua @@ -221,7 +221,7 @@ techage.register_node({"techage:ta3_silo", "techage:ta4_silo"}, { on_pull_item = function(pos, in_dir, num) local inv = M(pos):get_inventory() if not inv:is_empty("main") then - return techage.get_items(inv, "main", num) + return techage.get_items(pos, inv, "main", num) end end, on_push_item = function(pos, in_dir, stack) diff --git a/locale/techage.de.tr b/locale/techage.de.tr index bed4440..a5d4d8c 100644 --- a/locale/techage.de.tr +++ b/locale/techage.de.tr @@ -109,6 +109,7 @@ More water expected (2 m deep)!=Mehr Wasser erwartet (2 m tief) Nacelle is missing=Die Gondel fehlt Needle Powder=Nadel Pulver Network Data=Netzwerkdaten +Never completely empty the slots@nwith the pusher to keep the items assignment=Slots mit dem Schieber nie ganz@nleeren, um die Item-Zuordnung beizubehalten No network or active generator available!=Kein Stromnetz oder aktiver Generator verfügbar No plan available=Kein Plan verfügar No power grid or running generator!=Kein Stromnetz oder Generator verfügbar! @@ -241,7 +242,8 @@ TA3 Distillation Tower 3=TA3 Destillationsturm 3 TA3 Distillation Tower 4=TA3 Destillationsturm 4 TA3 Distillation Tower Base=TA3 Destillationsturm Basis TA3 Door Controller=TA3 Tür Controller -TA3 Drill Bit=TA3 Bohrgestänge +TA3 Drill Pipe=TA3 Bohrgestänge +TA3 Drill Pipe Wrench=TA3 Bohrgestängezange TA3 Ele Fab=TA3 E-Fabrik TA3 Fuel Oil=TA3 Schweröl TA3 Fuel Oil Barrel=TA3 Schwerölfass @@ -363,6 +365,8 @@ To add water punch@nthe boiler@nwith a water bucket=Um Wasser nachzufüllen,@nsc To many blocks in the power grid!=Zu viele Blöcke im Stromnetz! Turned on:=Eingeschaltet: Type=Typ +Unlock=Entsperren +Unlock connected chest@nif all slots are below 2000=Nachfolgende Kiste entsperren,@nsofern alle Slots <= 2000 Update=Update Usmium Nuggets=Usmium Nuggets Usmium Powder=Usmium Pulver @@ -399,6 +403,7 @@ full=voll inlet/pipe error=Einlass/Röhrenfehler inventory full=Inventar ist voll item output blocked=Ausgang blockiert +keep assignment=Zuordnung beibehalten light=Licht loaded=geladen needs power=benötigt Strom diff --git a/locale/template.txt b/locale/template.txt index 72b04ca..359cb45 100644 --- a/locale/template.txt +++ b/locale/template.txt @@ -107,6 +107,7 @@ More water expected (2 m deep)!= Nacelle is missing= Needle Powder= Network Data= +Never completely empty the slots@nwith the pusher to keep the items assignment= No network or active generator available!= No plan available= No power grid or running generator!= @@ -239,7 +240,8 @@ TA3 Distillation Tower 3= TA3 Distillation Tower 4= TA3 Distillation Tower Base= TA3 Door Controller= -TA3 Drill Bit= +TA3 Drill Pipe= +TA3 Drill Pipe Wrench= TA3 Ele Fab= TA3 Fuel Oil= TA3 Fuel Oil Barrel= @@ -361,6 +363,8 @@ To add water punch@nthe boiler@nwith a water bucket= To many blocks in the power grid!= Turned on:= Type= +Unlock= +Unlock connected chest@nif all slots are below 2000= Update= Usmium Nuggets= Usmium Powder= @@ -397,6 +401,7 @@ full= inlet/pipe error= inventory full= item output blocked= +keep assignment= light= loaded= needs power= diff --git a/lua_controller/sensorchest.lua b/lua_controller/sensorchest.lua index 8c6aa53..b174b95 100644 --- a/lua_controller/sensorchest.lua +++ b/lua_controller/sensorchest.lua @@ -185,7 +185,7 @@ techage.register_node({"techage:ta4_sensor_chest"}, { on_pull_item = function(pos, in_dir, num) local meta = minetest.get_meta(pos) local inv = meta:get_inventory() - return techage.get_items(inv, "main", num) + return techage.get_items(pos, inv, "main", num) end, on_push_item = function(pos, in_dir, stack) local meta = minetest.get_meta(pos) diff --git a/manuals/manual_ta2_DE.md b/manuals/manual_ta2_DE.md index 20232af..8c417a9 100644 --- a/manuals/manual_ta2_DE.md +++ b/manuals/manual_ta2_DE.md @@ -97,7 +97,7 @@ Der Verarbeitungsleistung eines TA2 Schiebers beträgt 2 Items alle 2 s. ### TA2 Verteiler / Distributor -Der Verteiler ist in der Lage, die Items aus seinem Inventar sortieren in bis zu vier Richtungen weiter zu transportieren. Dazu muss der Verteiler entsprechend konfiguriert werden. +Der Verteiler ist in der Lage, die Items aus seinem Inventar sortiert in bis zu vier Richtungen weiter zu transportieren. Dazu muss der Verteiler entsprechend konfiguriert werden. Der Verteiler besitzt dazu ein Menü mit 4 Filter mit unterschiedlichen Farben, entsprechend den 4 Ausgängen. Soll ein Ausgang genutzt werden, so muss der entsprechende Filter über die "on" Checkbox aktiviert werden. Alle Items, die für diesen Filter konfiguriert sind, werden über den zugeordneten Ausgang ausgegeben. Wird ein Filter aktiviert, ohne das Items konfiguriert werden, so sprechen wir hier von einem "nicht-konfigurierten", offenen Ausgang. @@ -111,8 +111,6 @@ Im ersten Fall werden immer alle Items weitergeleitet und der Verteiler läuft n Einstellbar ist die Betriebsart über die ">>|" Checkbox (an => Betriebsart 2) -Wird nur ein Ausgang aktiviert und mit mehreren Items konfiguriert, so kann die 1:1 Checkbox angeklickt werden. In diesem Falle werden Items streng gemäß der Filtereinstellung weitergegeben. Fehlt ein Item in der Reihenfolge, blockiert der Verteiler. Damit lassen sich andere Maschinen wie bspw. der Autocrafter exakt gemäß dem eingestellten Rezept bestücken. - Der Verarbeitungsleistung eines TA2 Verteilers beträgt 4 Items alle 2 s, wobei der Verteiler dabei versucht, die 4 Items auf die offenen Ausgänge zu verteilen. [ta2_distributor|image] diff --git a/manuals/manual_ta3_DE.md b/manuals/manual_ta3_DE.md index 81deeda..3e0f595 100644 --- a/manuals/manual_ta3_DE.md +++ b/manuals/manual_ta3_DE.md @@ -333,9 +333,9 @@ Ist alles Öl abgepumpt, kann auch die Ölpumpe wieder entfernt werden. [ta3_pumpjack|image] -### TA3 Bohrgestänge / Drill Bit +### TA3 Bohrgestänge / Drill Pipe -Das Bohrgestänge wird für die Bohrung benötigt. Es werden so viele Bohrgestänge Items benötigt wie als Tiefe für das Ölfeld angegeben wurde. Das Bohrgestänge ist nach der Bohrung nutzlos, kann aber auch nicht abgebaut werden und verbleibt im Boden. +Das Bohrgestänge wird für die Bohrung benötigt. Es werden so viele Bohrgestänge Items benötigt wie als Tiefe für das Ölfeld angegeben wurde. Das Bohrgestänge ist nach der Bohrung nutzlos, kann aber auch nicht abgebaut werden und verbleibt im Boden. Es gibt aber ein Werkzeug, um die Bohrgestänge Blöcke wieder entfernen zu können (-> Werkzeuge -> TA3 Bohrgestängezange). [ta3_drillbit|image] @@ -607,7 +607,15 @@ Die Verarbeitungsleistung beträgt 6 Items alle 2 s. ### TA3 Verteiler / Distributor -Die Funktion entspricht der von TA2. +Die Funktion des TA3 Verteilers entspricht der von TA2 mit einer weiteren Betriebart. + +**1:1 Bestückungsfunktion** + +Wird nur ein Ausgang aktiviert und mit mehreren Items konfiguriert, so kann die 1:1 Checkbox angeklickt werden. In diesem Falle werden nur Items gemäß der Filtereinstellung angenommen und in der Reihenfolge, wie die Items im Filter eingetragen sind, in definierte Positionen im Ziel-Inventar abgelegt. Damit kann weder das Inventar des Verteilers noch des Zielblocks volllaufen. Dies funktioniert für Autocrafter, Industrieofen und Elektronikfabrik. +Mit dieser Betriebsart lassen sich andere Maschinen wie bspw. der Autocrafter exakt gemäß dem eingestellten Rezept bestücken. + +Dies funktioniert nur nur, wenn die Inventare des Verteilers und des Zielblocks zuvor frei sind. + Die Verarbeitungsleistung beträgt 12 Items alle 4 s. [ta3_distributor|image] @@ -696,3 +704,7 @@ Die Kelle dient zum Verputzen von Stromkabel. Siehe dazu "TA Stromkabel". [ta3_trowel|image] + +### TA3 Bohrgestängezange / TA3 Drill Pipe Wrench + +Mit diesem Werkzeug lassen sich die Bohrgestängezange Blöcke wieder entfernen, wenn dort bspw. ein Tunnel durch soll. diff --git a/manuals/manual_ta4_DE.md b/manuals/manual_ta4_DE.md index 5c1d944..c27f16e 100644 --- a/manuals/manual_ta4_DE.md +++ b/manuals/manual_ta4_DE.md @@ -522,7 +522,7 @@ Die TA4 8x2000 Kiste hat kein normales Inventar wir andere Kisten, sondern verf Wird die Kiste mit einem Schieber gefüllt, so füllen sich alle Speicherplätze von links nach rechts. Sind alle 8 Speicher voll und können keine weiteren Items hinzugefügt werden, so werden diese Items im Ein-/Ausgabe-Inventar gespeichert. Die Kiste ist damit für den Schieberbetrieb vollständig gefüllt und weitere Items werden abgewiesen. -Wird die Kiste über einen Schieber geleert, leeren sich auch die Speicher wieder von links nach rechts. +Wird die Kiste über einen Schieber geleert, werden von Speicherplätzen Items entnommen. **Reihenfunktion** @@ -530,7 +530,12 @@ Mehrere TA4 8x2000 Kisten können zu einer großen Kiste mit mehr Inhalt verbund Zuerst muss die Front-Kiste gesetzt werden, dann werden die Stapel-Kisten mit gleicher Blickrichtung dahinter gesetzt (alle Kisten haben die Front in Richtung Spieler). Bei 2 Kisten in Reihe erhöht sich die Größe auf 8x4000, usw. -Die angereihten Kisten können nun nicht mehr entfernt werden. Um die Kisten wieder abbauen zu können, muss zuerst die Frontkiste entfernt werden. Danach können die Kisten der Reihe nach wieder entfernt werden. +Die angereihten Kisten können nun nicht mehr entfernt werden. Um die Kisten wieder abbauen zu können, gibt es zwei Möglichkeiten: + +- Die Frontkiste leeren und entfernen. Damit wird die nächste Kiste entsperrt und kann entfernt werden. +- Die Frontkiste soweit leeren dass alle Speicherplätzen maximal 2000 Items beinhalten. Damit wird die nächste Kiste entsperrt und kann entfernt werden. + +Die Kisten haben eine "Reihenfolge" Checkbox. Wird diese Checkbox aktiviert, werden die Speicherplätze durch einen Schieber nicht mehr vollständig entleert. Das letzte Item verbleibt als Vorbelegung in dem Speicherplatz. Damit ergibt sich eine feste Zuordnung von Items zu Speicherplätzen. Die Kiste kann nur von den Spielern genutzt werden, die an diesem Ort auch bauen können, also Protection Rechte besitzen. Es spielt dabei keine Rolle, wer die Kiste setzt. diff --git a/manuals/toc_DE.md b/manuals/toc_DE.md index f1eab16..d75864b 100644 --- a/manuals/toc_DE.md +++ b/manuals/toc_DE.md @@ -75,7 +75,7 @@ - [TA3 Ölexplorer / Oil Explorer](./manual_ta3_DE.md#ta3-Ölexplorer--oil-explorer) - [TA3 Ölbohrkiste / Oil Drill Box](./manual_ta3_DE.md#ta3-Ölbohrkiste--oil-drill-box) - [TA3 Ölpumpe / Oil Pumpjack](./manual_ta3_DE.md#ta3-Ölpumpe--oil-pumpjack) - - [TA3 Bohrgestänge / Drill Bit](./manual_ta3_DE.md#ta3-bohrgestänge--drill-bit) + - [TA3 Bohrgestänge / Drill Pipe](./manual_ta3_DE.md#ta3-bohrgestänge--drill-pipe) - [Öltank / Oil Tank](./manual_ta3_DE.md#Öltank--oil-tank) - [Öl-Transport](./manual_ta3_DE.md#Öl-transport) - [Öl-Verarbeitung](./manual_ta3_DE.md#Öl-verarbeitung) @@ -110,6 +110,7 @@ - [Techage Info Tool](./manual_ta3_DE.md#techage-info-tool) - [TechAge Programmer](./manual_ta3_DE.md#techage-programmer) - [TechAge Kelle / Trowel](./manual_ta3_DE.md#techage-kelle--trowel) + - [TA3 Bohrgestängezange / TA3 Drill Pipe Wrench](./manual_ta3_DE.md#ta3-bohrgestängezange--ta3-drill-pipe-wrench) - [TA4: Zukunft](./manual_ta4_DE.md#ta4:-zukunft) - [Windkraftanlage](./manual_ta4_DE.md#windkraftanlage) - [TA4 Windkraftanlage / Wind Turbine](./manual_ta4_DE.md#ta4-windkraftanlage--wind-turbine) diff --git a/oil/drillbox.lua b/oil/drillbox.lua index 2262b0b..7b21239 100644 --- a/oil/drillbox.lua +++ b/oil/drillbox.lua @@ -231,7 +231,7 @@ local tubing = { local meta = minetest.get_meta(pos) if meta:get_int("pull_dir") == in_dir then local inv = M(pos):get_inventory() - return techage.get_items(inv, "dst", num) + return techage.get_items(pos, inv, "dst", num) end end, on_push_item = function(pos, in_dir, stack) diff --git a/oil/tower.lua b/oil/tower.lua index 42d1c44..e0f4c89 100644 --- a/oil/tower.lua +++ b/oil/tower.lua @@ -162,7 +162,7 @@ minetest.register_node("techage:oiltower5", { }) minetest.register_node("techage:oil_drillbit", { - description = S("TA3 Drill Bit"), + description = S("TA3 Drill Pipe"), drawtype = "plantlike", tiles = {"techage_oil_drillbit.png"}, inventory_image = "techage_oil_drillbit_inv.png", @@ -175,7 +175,7 @@ minetest.register_node("techage:oil_drillbit", { }) minetest.register_node("techage:oil_drillbit2", { - description = S("TA3 Drill Bit"), + description = S("TA3 Drill Pipe"), drawtype = "plantlike", tiles = {"techage_oil_drillbit.png"}, inventory_image = "techage_oil_drillbit_inv.png", diff --git a/textures/techage_pipe_wrench.png b/textures/techage_pipe_wrench.png index 903b892d2ebefdabc3cc863ff52fc12395aef499..bb9ef9590003a427826cc54ee9322198fbb78c06 100644 GIT binary patch delta 339 zcmV-Z0j&Oz0`3BkB!5d#OjJc70093S9RD;lXLfb}QBib|kN<6LfSjCurKFUjqmQeq zin6ewv9OxAwUoTNy1KfrzP_fy!Jfs$vd+!E&CJ2w+|S+60v?=}Dc00DGT zPE!Ct=GbNc0004EOGiWihy@);00009a7bBm000XU000XU0e=9RoEQKA00(qQO+^Rf z1Purf8D>#t00000oJmAMR5;7+l1mQ)Aq<4O$YW(esqNza|6gh`K4V!uc<|s{Xy}(= zCIR46)moW3iS+$aE1lIvjzsOqM4Yy(Z(%74vCK1F#=Jv?kc5PH55@wP&HpkkY6yve`FBubz1}|)9&fw7-Dhy?Idr$1_d4$?Y|2T{9UhY zs+OVi;!rDhI&)&2)n%53+mriKIVEgsbML~$X&n|Vs&B&6`Zus$O0!U2 zrGGZvyy|`brO3s%TvRMrRe0v|o_KVYf9du`z3x1!%lG9MHBO4Q<=6N+F_GoTmIJ&D o_8)i^<~Kh5C4WiKmdKI;Vst0H0iRW&i*H diff --git a/tools/pipe_wrench.lua b/tools/pipe_wrench.lua index bd82e0e..78f67e8 100644 --- a/tools/pipe_wrench.lua +++ b/tools/pipe_wrench.lua @@ -22,8 +22,8 @@ local function remove_pipe(itemstack, user, pointed_thing) end -- remove_pipe -minetest.register_tool("techage:ta3_pipe_wrench", { - description = S("TA3 Pipe Wrench"), +minetest.register_tool("techage:ta3_drill_pipe_wrench", { + description = S("TA3 Drill Pipe Wrench"), inventory_image = "techage_pipe_wrench.png", wield_image = "techage_pipe_wrench.png", groups = {cracky=1}, @@ -32,9 +32,9 @@ minetest.register_tool("techage:ta3_pipe_wrench", { }) minetest.register_craft({ - output = "techage:ta3_pipe_wrench", + output = "techage:ta3_drill_pipe_wrench", recipe = { - {"hyperloop:hypersteel_ingot", "hyperloop:hypersteel_ingot", ""}, + {"default:diamond", "default:diamond", ""}, {"dye:red", "default:steel_ingot", "dye:red"}, {"default:steel_ingot", "", "default:steel_ingot"}, },