Add loading/unloading rails (#63)
Pull request by gpcf Will update zip file with next releasemaster
parent
93250ca3a2
commit
92af0b53e5
|
@ -142,6 +142,7 @@ dofile(advtrains.modpath.."/signals.lua")
|
|||
dofile(advtrains.modpath.."/misc_nodes.lua")
|
||||
dofile(advtrains.modpath.."/crafting.lua")
|
||||
dofile(advtrains.modpath.."/craft_items.lua")
|
||||
dofile(advtrains.modpath.."/loading.lua")
|
||||
|
||||
if digtron then
|
||||
dofile(advtrains.modpath.."/digtron.lua")
|
||||
|
|
|
@ -0,0 +1,99 @@
|
|||
-- Tracks for loading and unloading trains
|
||||
-- Copyright (C) 2017 Gabriel Pérez-Cerezo <gabriel@gpcf.eu>
|
||||
|
||||
local function get_far_node(pos)
|
||||
local node = minetest.get_node(pos)
|
||||
if node.name == "ignore" then
|
||||
minetest.get_voxel_manip():read_from_map(pos, pos)
|
||||
node = minetest.get_node(pos)
|
||||
end
|
||||
return node
|
||||
end
|
||||
|
||||
local function train_load(pos, train_id, unload)
|
||||
local train=advtrains.trains[train_id]
|
||||
local below = get_far_node({x=pos.x, y=pos.y-1, z=pos.z})
|
||||
if not string.match(below.name, "chest") then
|
||||
atprint("this is not a chest! at "..minetest.pos_to_string(pos))
|
||||
return
|
||||
end
|
||||
local inv = minetest.get_inventory({type="node", pos={x=pos.x, y=pos.y-1, z=pos.z}})
|
||||
if inv and train.velocity < 2 then
|
||||
for k, v in ipairs(train.trainparts) do
|
||||
|
||||
local i=minetest.get_inventory({type="detached", name="advtrains_wgn_"..v})
|
||||
if i then
|
||||
if not unload then
|
||||
for _, item in ipairs(inv:get_list("main")) do
|
||||
if i:get_list("box") and i:room_for_item("box", item) then
|
||||
i:add_item("box", item)
|
||||
inv:remove_item("main", item)
|
||||
end
|
||||
end
|
||||
else
|
||||
for _, item in ipairs(i:get_list("box")) do
|
||||
if inv:get_list("main") and inv:room_for_item("main", item) then
|
||||
i:remove_item("box", item)
|
||||
inv:add_item("main", item)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
advtrains.register_tracks("default", {
|
||||
nodename_prefix="advtrains:dtrack_unload",
|
||||
texture_prefix="advtrains_dtrack_unload",
|
||||
models_prefix="advtrains_dtrack",
|
||||
models_suffix=".b3d",
|
||||
shared_texture="advtrains_dtrack_shared_unload.png",
|
||||
description=attrans("Unloading Track"),
|
||||
formats={},
|
||||
get_additional_definiton = function(def, preset, suffix, rotation)
|
||||
return {
|
||||
after_dig_node=function(pos)
|
||||
advtrains.invalidate_all_paths()
|
||||
advtrains.ndb.clear(pos)
|
||||
-- local pts=minetest.pos_to_string(pos)
|
||||
-- atc.controllers[pts]=nil
|
||||
end,
|
||||
-- on_receive_fields = function(pos, formname, fields, player)
|
||||
-- if minetest.is_protected(pos, player:get_player_name()) then
|
||||
-- minetest.chat_send_player(player:get_player_name(), attrans("This position is protected!"))
|
||||
-- return
|
||||
-- end
|
||||
-- end,
|
||||
advtrains = {
|
||||
on_train_enter = function(pos, train_id)
|
||||
train_load(pos, train_id, true)
|
||||
end,
|
||||
},
|
||||
}
|
||||
end
|
||||
}, advtrains.trackpresets.t_30deg_straightonly)
|
||||
advtrains.register_tracks("default", {
|
||||
nodename_prefix="advtrains:dtrack_load",
|
||||
texture_prefix="advtrains_dtrack_load",
|
||||
models_prefix="advtrains_dtrack",
|
||||
models_suffix=".b3d",
|
||||
shared_texture="advtrains_dtrack_shared_load.png",
|
||||
description=attrans("Loading Track"),
|
||||
formats={},
|
||||
get_additional_definiton = function(def, preset, suffix, rotation)
|
||||
return {
|
||||
after_dig_node=function(pos)
|
||||
advtrains.invalidate_all_paths()
|
||||
advtrains.ndb.clear(pos)
|
||||
end,
|
||||
|
||||
advtrains = {
|
||||
on_train_enter = function(pos, train_id)
|
||||
train_load(pos, train_id, false)
|
||||
end,
|
||||
},
|
||||
}
|
||||
end
|
||||
}, advtrains.trackpresets.t_30deg_straightonly)
|
Binary file not shown.
After Width: | Height: | Size: 1.2 KiB |
Binary file not shown.
After Width: | Height: | Size: 7.2 KiB |
Binary file not shown.
After Width: | Height: | Size: 7.2 KiB |
Binary file not shown.
After Width: | Height: | Size: 1.2 KiB |
Loading…
Reference in New Issue