aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--advtrains/api_doc.txt4
-rw-r--r--advtrains/wagons.lua24
-rw-r--r--advtrains_train_industrial/init.lua14
-rwxr-xr-xadvtrains_train_steam/init.lua7
4 files changed, 29 insertions, 20 deletions
diff --git a/advtrains/api_doc.txt b/advtrains/api_doc.txt
index 34f1beb..0256713 100644
--- a/advtrains/api_doc.txt
+++ b/advtrains/api_doc.txt
@@ -101,7 +101,9 @@ advtrains.register_wagon(name, prototype, description, inventory_image)
get_inventory_formspec = function(self, player_name, inventory_name)
return "<a formspec>"
end,
- ^- Function that should return the formspec to be displayed when <player> requests to open the wagon's inventory
+ ^- Function that should return the formspec to be displayed when <player> requests to open the wagon's inventory.
+ ^- advtrains.standard_inventory_formspec can be used for ordinary wagons with inventories to show
+ ^- both the inventory grid and a 'Wagon properties' button.
^- Use "list["..inventory_name..";<list_name>;<X>,<Y>;<W>,<H>;<Start>]" to display a wagon's inventory list.
custom_on_step = function(self, dtime) end
diff --git a/advtrains/wagons.lua b/advtrains/wagons.lua
index b13b8d8..ddf533b 100644
--- a/advtrains/wagons.lua
+++ b/advtrains/wagons.lua
@@ -777,7 +777,7 @@ function wagon:show_wagon_properties(pname)
]]
local data = advtrains.wagons[self.id]
local form="size[5,5]"
- form = form .. "field[0.5,1;4,1;whitelist;Allow these players to drive your wagon:;"..(data.whitelist or "").."]"
+ form = form .. "field[0.5,1;4,1;whitelist;Allow these players to access your wagon:;"..(data.whitelist or "").."]"
--seat groups access lists were here
form=form.."button_exit[0.5,3;4,1;save;"..attrans("Save wagon properties").."]"
minetest.show_formspec(pname, "advtrains_prop_"..self.id, form)
@@ -1010,6 +1010,20 @@ minetest.register_on_player_receive_fields(function(player, formname, fields)
end
end
end
+ uid=string.match(formname, "^advtrains_inv_(.+)$")
+ if uid then
+ local pname=player:get_player_name()
+ local data = advtrains.wagons[uid]
+ if fields.prop and data.owner==pname then
+ for _,wagon in pairs(minetest.luaentities) do
+ if wagon.is_wagon and wagon.initialized and wagon.id==uid then
+ minetest.chat_send_player(player:get_player_name(), string.format("Opening wagon props from inv... (id=%s)", uid))
+ wagon:show_wagon_properties(pname)
+ --wagon:handle_bordcom_fields(player:get_player_name(), formname, fields)
+ end
+ end
+ end
+ end
end)
end)
function wagon:seating_from_key_helper(pname, fields, no)
@@ -1167,6 +1181,14 @@ function advtrains.get_wagon_prototype(data)
return wt, advtrains.wagon_prototypes[wt]
end
+function advtrains.standard_inventory_formspec(self, pname, invname)
+ return "size[8,11]"..
+ "list["..invname..";box;0,0;8,3;]"..
+ "button_exit[0,9;4,1;prop;"..attrans("Wagon properties").."]"..
+ "list[current_player;main;0,5;8,4;]"..
+ "listring[]"
+end
+
function advtrains.register_wagon(sysname_p, prototype, desc, inv_img, nincreative)
local sysname = sysname_p
if not string.match(sysname, ":") then
diff --git a/advtrains_train_industrial/init.lua b/advtrains_train_industrial/init.lua
index 64a98b8..4d64615 100644
--- a/advtrains_train_industrial/init.lua
+++ b/advtrains_train_industrial/init.lua
@@ -90,12 +90,7 @@ advtrains.register_wagon("wagon_tank", {
collisionbox = {-1.0,-0.5,-1.0, 1.0,2.5,1.0},
drops={"default:steelblock 4"},
has_inventory = true,
- get_inventory_formspec = function(self, pname, invname)
- return "size[8,11]"..
- "list["..invname..";box;0,0;8,3;]"..
- "list[current_player;main;0,5;8,4;]"..
- "listring[]"
- end,
+ get_inventory_formspec = advtrains.standard_inventory_formspec,
inventory_list_sizes = {
box=8*3,
},
@@ -111,12 +106,7 @@ advtrains.register_wagon("wagon_wood", {
collisionbox = {-1.0,-0.5,-1.0, 1.0,2.5,1.0},
drops={"default:steelblock 4"},
has_inventory = true,
- get_inventory_formspec = function(self, pname, invname)
- return "size[8,11]"..
- "list["..invname..";box;0,0;8,3;]"..
- "list[current_player;main;0,5;8,4;]"..
- "listring[]"
- end,
+ get_inventory_formspec = advtrains.standard_inventory_formspec,
inventory_list_sizes = {
box=8*3,
},
diff --git a/advtrains_train_steam/init.lua b/advtrains_train_steam/init.lua
index c337a79..6b5047c 100755
--- a/advtrains_train_steam/init.lua
+++ b/advtrains_train_steam/init.lua
@@ -216,12 +216,7 @@ advtrains.register_wagon("wagon_box", {
collisionbox = {-1.0,-0.5,-1.0, 1.0,2.5,1.0},
drops={"default:steelblock 1"},
has_inventory = true,
- get_inventory_formspec = function(self, pname, invname)
- return "size[8,11]"..
- "list["..invname..";box;0,0;8,3;]"..
- "list[current_player;main;0,5;8,4;]"..
- "listring[]"
- end,
+ get_inventory_formspec = advtrains.standard_inventory_formspec,
inventory_list_sizes = {
box=8*3,
},