distri 1:1 mode changed, drill pipe wrench added, ta4_chest modes enhanced, further improvements
This commit is contained in:
parent
f3d8002832
commit
ea4765ce46
@ -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)
|
||||
|
@ -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)
|
||||
|
@ -42,6 +42,7 @@ local function filter_settings(pos)
|
||||
local ItemFilter = {} -- {<item:name> = {dir,...}]
|
||||
local OpenPorts = {} -- {dir, ...}
|
||||
local FilterItems = {} -- {<item:name>, <item:name>, ...} for sequencing only
|
||||
local FilterItemIdx = {} -- {<item:name> = <slot-idx>, <item:name> = <slot-idx>, ...} 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
|
||||
|
@ -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)
|
||||
|
@ -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)
|
||||
|
@ -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)
|
||||
|
@ -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)
|
||||
|
@ -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)
|
||||
|
@ -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)
|
||||
|
@ -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
|
||||
|
||||
|
@ -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)
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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",
|
||||
"",
|
||||
"",
|
||||
|
@ -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)
|
||||
|
2
init.lua
2
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")
|
||||
|
@ -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()
|
||||
|
@ -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)
|
||||
|
@ -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
|
||||
|
@ -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=
|
||||
|
@ -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)
|
||||
|
@ -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]
|
||||
|
@ -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.
|
||||
|
@ -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.
|
||||
|
||||
|
@ -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)
|
||||
|
@ -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)
|
||||
|
@ -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",
|
||||
|
Binary file not shown.
Before Width: | Height: | Size: 272 B After Width: | Height: | Size: 366 B |
@ -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"},
|
||||
},
|
||||
|
Loading…
Reference in New Issue
Block a user