diff --git a/basic_machines/chest.lua b/basic_machines/chest.lua index 11840ec..6d5837f 100644 --- a/basic_machines/chest.lua +++ b/basic_machines/chest.lua @@ -178,7 +178,7 @@ techage.register_node({"techage:chest_ta2", "techage:chest_ta3"}, { local function formspec4(pos) return "size[10,9]".. - "tabheader[0,0;tab;"..S("Inventory,Configuration")..";1;;true]".. + "tabheader[0,0;tab;"..S("Inventory,Pre-Assignment,Config")..";1;;true]".. default.gui_bg.. default.gui_bg_img.. default.gui_slots.. @@ -189,9 +189,9 @@ local function formspec4(pos) "listring[current_player;main]" end -local function formspec4_cfg(pos) +local function formspec4_pre(pos) return "size[10,9]".. - "tabheader[0,0;tab;"..S("Inventory,Configuration")..";2;;true]".. + "tabheader[0,0;tab;"..S("Inventory,Pre-Assignment,Config")..";2;;true]".. default.gui_bg.. default.gui_bg_img.. default.gui_slots.. @@ -201,8 +201,23 @@ local function formspec4_cfg(pos) "listring[current_player;main]" end +local function formspec4_cfg(pos) + local meta = minetest.get_meta(pos) + local label = meta:get_string("label") or "" + local public = dump((meta:get_int("public") or 0) == 1) + return "size[10,5]".. + "tabheader[0,0;tab;"..S("Inventory,Pre-Assignment,Config")..";3;;true]".. + default.gui_bg.. + default.gui_bg_img.. + default.gui_slots.. + "field[0.5,1;9,1;label;"..S("Node label:")..";"..label.."]" .. + "checkbox[1,2;public;"..S("Allow public access to the chest")..";"..public.."]".. + "button_exit[3.5,4;3,1;exit;"..S("Save").."]" +end + local function ta4_allow_metadata_inventory_put(pos, listname, index, stack, player) - if minetest.is_protected(pos, player:get_player_name()) then + local public = M(pos):get_int("public") == 1 + if not public and minetest.is_protected(pos, player:get_player_name()) then return 0 end @@ -214,7 +229,8 @@ local function ta4_allow_metadata_inventory_put(pos, listname, index, stack, pla end local function ta4_allow_metadata_inventory_take(pos, listname, index, stack, player) - if minetest.is_protected(pos, player:get_player_name()) then + local public = M(pos):get_int("public") == 1 + if not public and minetest.is_protected(pos, player:get_player_name()) then return 0 end @@ -226,7 +242,8 @@ local function ta4_allow_metadata_inventory_take(pos, listname, index, stack, pl end local function ta4_allow_metadata_inventory_move(pos, from_list, from_index, to_list, to_index, count, player) - if minetest.is_protected(pos, player:get_player_name()) then + local public = M(pos):get_int("public") == 1 + if not public and minetest.is_protected(pos, player:get_player_name()) then return 0 end @@ -276,10 +293,25 @@ minetest.register_node("techage:chest_ta4", { mem.filter = nil meta:set_string("formspec", formspec4(pos)) elseif fields.tab == "2" then + meta:set_string("formspec", formspec4_pre(pos)) + elseif fields.tab == "3" then meta:set_string("formspec", formspec4_cfg(pos)) elseif fields.quit == "true" then mem.filter = nil end + if fields.public then + meta:set_int("public", fields.public == "true" and 1 or 0) + end + if fields.exit then + local number = meta:get_string("node_number") + if fields.label ~= "" then + meta:set_string("infotext", minetest.formspec_escape(fields.label).." #"..number) + else + meta:set_string("infotext", S("TA4 Protected Chest").." "..number) + end + meta:set_string("label", fields.label) + meta:set_string("formspec", formspec4_cfg(pos)) + end end, techage_set_numbers = function(pos, numbers, player_name) diff --git a/basis/liquid_lib.lua b/basis/liquid_lib.lua index a21ffc4..cb9c044 100644 --- a/basis/liquid_lib.lua +++ b/basis/liquid_lib.lua @@ -36,14 +36,28 @@ function techage.liquid.formspec(pos, nvm) if nvm.liquid and nvm.liquid.amount and nvm.liquid.amount > 0 and nvm.liquid.name then itemname = nvm.liquid.name.." "..nvm.liquid.amount end - return "size[4,2]".. - default.gui_bg.. - default.gui_bg_img.. - default.gui_slots.. - "box[0,-0.1;3.8,0.5;#c6e8ff]".. - "label[1,-0.1;"..minetest.colorize("#000000", title).."]".. - help(3.4, -0.1).. - techage.item_image(1.5, 1, itemname) + local name = minetest.get_node(pos).name + if name == "techage:ta4_tank" then + local public = dump((M(pos):get_int("public") or 0) == 1) + return "size[5,3]".. + default.gui_bg.. + default.gui_bg_img.. + default.gui_slots.. + "box[0,-0.1;4.8,0.5;#c6e8ff]".. + "label[1.5,-0.1;"..minetest.colorize("#000000", title).."]".. + help(4.4, -0.1).. + techage.item_image(2, 1, itemname).. + "checkbox[0.1,2.5;public;"..S("Allow public access to the tank")..";"..public.."]" + else + return "size[4,2]".. + default.gui_bg.. + default.gui_bg_img.. + default.gui_slots.. + "box[0,-0.1;3.8,0.5;#c6e8ff]".. + "label[1,-0.1;"..minetest.colorize("#000000", title).."]".. + help(3.4, -0.1).. + techage.item_image(1.5, 1, itemname) + end end function techage.liquid.is_empty(pos) @@ -205,7 +219,8 @@ local function empty_on_punch(pos, nvm, full_container, item_count) end function techage.liquid.on_punch(pos, node, puncher, pointed_thing) - if minetest.is_protected(pos, puncher:get_player_name()) then + local public = M(pos):get_int("public") == 1 + if not public and minetest.is_protected(pos, puncher:get_player_name()) then return end diff --git a/basis/windturbine_lib.lua b/basis/windturbine_lib.lua index 2c2a290..506be5c 100644 --- a/basis/windturbine_lib.lua +++ b/basis/windturbine_lib.lua @@ -41,7 +41,7 @@ function techage.valid_place_for_windturbine(pos, player_name, num_turbines) if data then local name = minetest.get_biome_name(data.biome) if not string.find(name, "ocean") then - chat_message(player_name, S("This is a "..name.." biome and no ocean!")) + chat_message(player_name, S("This is a").." "..name.." "..S("biome and no ocean!")) return false end end diff --git a/liquids/tank.lua b/liquids/tank.lua index 37db737..b2e522e 100644 --- a/liquids/tank.lua +++ b/liquids/tank.lua @@ -217,6 +217,14 @@ minetest.register_node("techage:ta4_tank", { tubelib2_on_update2 = function(pos, outdir, tlib2, node) liquid.update_network(pos, outdir) end, + on_receive_fields = function(pos, formname, fields, player) + if minetest.is_protected(pos, player:get_player_name()) then + return + end + if fields.public then + M(pos):set_int("public", fields.public == "true" and 1 or 0) + end + end, on_timer = node_timer, on_punch = liquid.on_punch, after_dig_node = function(pos, oldnode, oldmetadata, digger) diff --git a/locale/techage.de.tr b/locale/techage.de.tr index fd5419f..89138a5 100644 --- a/locale/techage.de.tr +++ b/locale/techage.de.tr @@ -4,6 +4,8 @@ Accu Box=Akkublock Active:=Aktiv: All nodes:=Alle Blöcke: +Allow public access to the chest=Erlaube öffentlichen Zugriff auf die Kiste +Allow public access to the tank=Erlaube öffentlichen Zugriff auf den Tank Allow public chest access=Erlaube öffentlichen Zugriff Allow to dig/place Techage power lines nearby power poles=Erlaubt TODO Aluminum=Aluminium @@ -85,6 +87,8 @@ Grinder=Mühle Grinding=Mahlen Heat=Hitze Heat Exchanger=Wärmetauscher +Here is not enough water (41x41 m)!=Hier ist nicht genug Wasser (41x41 m)! +Here is not enough wind (A free air space of 41x41x21 m is necessary)!=Hier ist nicht genug Wind (Ein freier Luftraum von 41x41x21 m ist notwendig)! High Performance Distributor=Hochleistungs-Verteiler Hole size=Lochgröße Hydrogen Cylinder Large=Wasserstoffflasche groß @@ -95,7 +99,7 @@ Input=Einspeisung Insert destination node number(s)=Gebe Zielnummer(n) ein Insert door/gate block number(s)=Gebe Tür-/Tornummer(n) ein Intake=Stromaufnahme -Inventory,Configuration=Inventar,Konfiguration +Inventory,Pre-Assignment,Config=Inventar,Vorbelegung,Konfiguration Inverter=Wechselrichter Iron Powder=Eisen Pulver Leave Powder=Laub Pulver @@ -128,6 +132,7 @@ No network or active generator available!=Kein Stromnetz oder aktiver Generator No plan available=Kein Plan verfügar No power grid or running generator!=Kein Stromnetz oder Generator verfügbar! No wind at this altitude!=Kein Wind auf dieser Höhe +Node label:= Blockbeschriftung: Node number to send the events to=Knotennummer zum Senden der Events Node numbers to read the states from=Knotennummern zum Lesen der Zustände Node owner=Blockbesitzer @@ -379,8 +384,12 @@ Techage Forceload Block=Techage Forceload Block Techage Forceload Tile=Techage Forceload Kachel The network is overloaded!=Das Stromnetz ist überlastet! The network load is almost at the limit!=Das Stromnetz ist ziemlich am Limit! +The next wind turbines is too close!= Die nächste Windkraftanlagen iat zu nahe! The wind turbines are too close together!=Die Windkraftanlagen stehen zu eng beisammen! Thermal=Wärme +This is a=Dies ist ein +This is no ocean water!= Dies ist kein Meerwasser! +This is not the surface of the ocean!=Das ist nicht die Meeresoberfläche! Time=Zeit Tiny Generator=Kleingenerator Tiny generator=Kleingenerator @@ -420,6 +429,7 @@ accept=akzeptieren added=hinzugefügt wird added or removed=hinzugefügt oder entfernt wird area is protected=Bereich ist geschützt +biome and no ocean!=Biom und keine Meer (ocean)! blocking mode=Blockiert catalyst missing=Katalysator fehlt commands like: help=Kommandos wie: help @@ -431,6 +441,7 @@ finished=fertig full=voll inlet/pipe error=Einlass/Röhrenfehler inventory full=Inventar ist voll +is a suitable place for a wind turbine!=ist ein geeigneter Ort für eine Windkraftanlage! item output blocked=Ausgang blockiert keep assignment=Zuordnung beibehalten ku is needed=ku wird benötigt diff --git a/locale/template.txt b/locale/template.txt index 024cbf0..9debb14 100644 --- a/locale/template.txt +++ b/locale/template.txt @@ -2,6 +2,8 @@ Accu Box= Active:= All nodes:= +Allow public access to the chest= +Allow public access to the tank= Allow public chest access= Allow to dig/place Techage power lines nearby power poles= Aluminum= @@ -83,6 +85,8 @@ Grinder= Grinding= Heat= Heat Exchanger= +Here is not enough water (41x41 m)!= +Here is not enough wind (A free air space of 41x41x21 m is necessary)!= High Performance Distributor= Hole size= Hydrogen Cylinder Large= @@ -93,7 +97,7 @@ Input= Insert destination node number(s)= Insert door/gate block number(s)= Intake= -Inventory,Configuration= +Inventory,Pre-Assignment,Config= Inverter= Iron Powder= Leave Powder= @@ -126,6 +130,7 @@ No network or active generator available!= No plan available= No power grid or running generator!= No wind at this altitude!= +Node label:= Node number to send the events to= Node numbers to read the states from= Node owner= @@ -377,8 +382,12 @@ Techage Forceload Block= Techage Forceload Tile= The network is overloaded!= The network load is almost at the limit!= +The next wind turbines is too close!= The wind turbines are too close together!= Thermal= +This is a= +This is no ocean water!= +This is not the surface of the ocean!= Time= Tiny Generator= Tiny generator= @@ -418,6 +427,7 @@ accept= added= added or removed= area is protected= +biome and no ocean!= blocking mode= catalyst missing= commands like: help= @@ -429,6 +439,7 @@ finished= full= inlet/pipe error= inventory full= +is a suitable place for a wind turbine!= item output blocked= keep assignment= ku is needed= diff --git a/manuals/manual_ta4_EN.md b/manuals/manual_ta4_EN.md index 595f71c..381e257 100644 --- a/manuals/manual_ta4_EN.md +++ b/manuals/manual_ta4_EN.md @@ -579,7 +579,7 @@ The TA4 8x2000 chest does not have a normal inventory like other chest, but has If the chest is filled with a pusher, all stores fill from left to right. If all 8 stores are full and no further items can be added, further items are rejected. -** Row function ** +**Row function** Several TA4 8x2000 chests can be connected to a large chest with more content. To do this, the chests must be placed in a row one after the other.