diff --git a/menu/Thumbs.db b/menu/Thumbs.db deleted file mode 100644 index ca38abc..0000000 Binary files a/menu/Thumbs.db and /dev/null differ diff --git a/mods/beds/README.txt b/mods/beds/README.txt index b4cf0c4..7b35e14 100644 --- a/mods/beds/README.txt +++ b/mods/beds/README.txt @@ -15,11 +15,11 @@ BlockMen (CC BY-SA 3.0) TumeniNodes (CC BY-SA 3.0) beds_bed_under.png -This mod adds a bed to Minetest which allows to skip the night. -To sleep, rightclick the bed. If playing in singleplayer mode the night gets skipped +This mod adds a bed to Minetest which allows players to skip the night. +To sleep, right click on the bed. If playing in singleplayer mode the night gets skipped immediately. If playing multiplayer you get shown how many other players are in bed too, if all players are sleeping the night gets skipped. The night skip can be forced if more -than 50% of the players are lying in bed and use this option. +than half of the players are lying in bed and use this option. Another feature is a controlled respawning. If you have slept in bed (not just lying in it) your respawn point is set to the beds location and you will respawn there after diff --git a/mods/beds/beds.lua b/mods/beds/beds.lua index 0bdde9c..276c05e 100644 --- a/mods/beds/beds.lua +++ b/mods/beds/beds.lua @@ -1,7 +1,12 @@ +-- beds/beds.lua + +-- support for MT game translation. +local S = beds.get_translator + -- Fancy shaped bed beds.register_bed("beds:fancy_bed", { - description = "Fancy Bed", + description = S("Fancy Bed"), inventory_image = "beds_bed_fancy.png", wield_image = "beds_bed_fancy.png", tiles = { @@ -52,7 +57,7 @@ beds.register_bed("beds:fancy_bed", { -- Simple shaped bed beds.register_bed("beds:bed", { - description = "Simple Bed", + description = S("Simple Bed"), inventory_image = "beds_bed.png", wield_image = "beds_bed.png", tiles = { diff --git a/mods/beds/depends.txt b/mods/beds/depends.txt deleted file mode 100644 index 470ec30..0000000 --- a/mods/beds/depends.txt +++ /dev/null @@ -1,2 +0,0 @@ -default -wool diff --git a/mods/beds/functions.lua b/mods/beds/functions.lua index bf7bf90..0b79bfb 100644 --- a/mods/beds/functions.lua +++ b/mods/beds/functions.lua @@ -1,11 +1,13 @@ local pi = math.pi -local player_in_bed = 0 local is_sp = minetest.is_singleplayer() local enable_respawn = minetest.settings:get_bool("enable_bed_respawn") if enable_respawn == nil then enable_respawn = true end +-- support for MT game translation. +local S = beds.get_translator + -- Helper functions local function get_look_yaw(pos) @@ -59,11 +61,8 @@ local function lay_down(player, pos, bed_pos, state, skip) -- stand up if state ~= nil and not state then local p = beds.pos[name] or nil - if beds.player[name] ~= nil then - beds.player[name] = nil - beds.bed_position[name] = nil - player_in_bed = player_in_bed - 1 - end + beds.player[name] = nil + beds.bed_position[name] = nil -- skip here to prevent sending player specific changes (used for leaving players) if skip then return @@ -82,10 +81,9 @@ local function lay_down(player, pos, bed_pos, state, skip) -- lay down else - beds.player[name] = 1 beds.pos[name] = pos beds.bed_position[name] = bed_pos - player_in_bed = player_in_bed + 1 + beds.player[name] = 1 -- physics, eye_offset, etc player:set_eye_offset({x = 0, y = -13, z = 0}, {x = 0, y = 0, z = 0}) @@ -103,18 +101,29 @@ local function lay_down(player, pos, bed_pos, state, skip) player:hud_set_flags(hud_flags) end +local function get_player_in_bed_count() + local c = 0 + for _, _ in pairs(beds.player) do + c = c + 1 + end + return c +end + local function update_formspecs(finished) local ges = #minetest.get_connected_players() - local form_n + local player_in_bed = get_player_in_bed_count() local is_majority = (ges / 2) < player_in_bed + local form_n + local esc = minetest.formspec_escape if finished then - form_n = beds.formspec .. "label[2.7,9; Good morning.]" + form_n = beds.formspec .. "label[2.7,9;" .. esc(S("Good morning.")) .. "]" else - form_n = beds.formspec .. "label[2.2,9;" .. tostring(player_in_bed) .. - " of " .. tostring(ges) .. " players are in bed]" + form_n = beds.formspec .. "label[2.2,9;" .. + esc(S("@1 of @2 players are in bed", player_in_bed, ges)) .. "]" if is_majority and is_night_skip_enabled() then - form_n = form_n .. "button_exit[2,6;4,0.75;force;Force night skip]" + form_n = form_n .. "button_exit[2,6;4,0.75;force;" .. + esc(S("Force night skip")) .. "]" end end @@ -146,7 +155,7 @@ function beds.on_rightclick(pos, player) if beds.player[name] then lay_down(player, nil, nil, false) end - minetest.chat_send_player(name, "You can only sleep at night.") + minetest.chat_send_player(name, S("You can only sleep at night.")) return end @@ -223,7 +232,7 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) -- Because "Force night skip" button is a button_exit, it will set fields.quit -- and lay_down call will change value of player_in_bed, so it must be taken -- earlier. - local last_player_in_bed = player_in_bed + local last_player_in_bed = get_player_in_bed_count() if fields.quit or fields.leave then lay_down(player, nil, nil, false) diff --git a/mods/beds/init.lua b/mods/beds/init.lua index 5a3959c..869ff0f 100644 --- a/mods/beds/init.lua +++ b/mods/beds/init.lua @@ -1,13 +1,20 @@ +-- beds/init.lua + +-- Load support for MT game translation. +local S = minetest.get_translator("beds") + + beds = {} beds.player = {} beds.bed_position = {} beds.pos = {} beds.spawn = {} +beds.get_translator = S beds.formspec = "size[8,11;true]" .. "no_prepend[]" .. "bgcolor[#080808BB;true]" .. - "button_exit[2,10;4,0.75;leave;Leave Bed]" + "button_exit[2,10;4,0.75;leave;" .. S("Leave Bed") .. "]" local modpath = minetest.get_modpath("beds") diff --git a/mods/beds/locale/beds.de.tr b/mods/beds/locale/beds.de.tr new file mode 100644 index 0000000..e77f654 --- /dev/null +++ b/mods/beds/locale/beds.de.tr @@ -0,0 +1,8 @@ +# textdomain: beds +Fancy Bed=Schickes Bett +Simple Bed=Schlichtes Bett +Leave Bed=Bett verlassen +Good morning.=Guten Morgen. +@1 of @2 players are in bed=@1 von @2 Spielern sind im Bett +Force night skip=Überspringen der Nacht erzwingen +You can only sleep at night.=Sie können nur nachts schlafen. diff --git a/mods/beds/locale/beds.es.tr b/mods/beds/locale/beds.es.tr new file mode 100644 index 0000000..0543e7f --- /dev/null +++ b/mods/beds/locale/beds.es.tr @@ -0,0 +1,8 @@ +# textdomain: beds +Fancy Bed=Cama de lujo +Simple Bed=Cama sencilla +Leave Bed=Abandonar cama +Good morning.=Buenos días. +@1 of @2 players are in bed=@1 de @2 jugadores están en cama +Force night skip=Forzar evitar noche +You can only sleep at night.=Sólo puedes dormir por la noche. diff --git a/mods/beds/locale/beds.fr.tr b/mods/beds/locale/beds.fr.tr new file mode 100644 index 0000000..bddf9b5 --- /dev/null +++ b/mods/beds/locale/beds.fr.tr @@ -0,0 +1,8 @@ +# textdomain: beds +Fancy Bed=Lit chic +Simple Bed=Lit simple +Leave Bed=Se lever du lit +Good morning.=Bonjour. +@1 of @2 players are in bed=@1 joueur(s) sur @2 sont au lit +Force night skip=Forcer le passage de la nuit +You can only sleep at night.=Vous ne pouvez dormir que la nuit. diff --git a/mods/beds/locale/beds.it.tr b/mods/beds/locale/beds.it.tr new file mode 100644 index 0000000..e636112 --- /dev/null +++ b/mods/beds/locale/beds.it.tr @@ -0,0 +1,4 @@ +# textdomain: beds +Fancy Bed=Letto decorato +Simple Bed=Letto semplice +Leave Bed=Alzati dal letto \ No newline at end of file diff --git a/mods/beds/locale/template.txt b/mods/beds/locale/template.txt new file mode 100644 index 0000000..518fdbf --- /dev/null +++ b/mods/beds/locale/template.txt @@ -0,0 +1,8 @@ +# textdomain: beds +Fancy Bed= +Simple Bed= +Leave Bed= +Good morning.= +@1 of @2 players are in bed= +Force night skip= +You can only sleep at night.= diff --git a/mods/beds/mod.conf b/mods/beds/mod.conf new file mode 100644 index 0000000..450ec13 --- /dev/null +++ b/mods/beds/mod.conf @@ -0,0 +1,3 @@ +name = beds +description = Minetest Game mod: beds +depends = default, wool diff --git a/mods/binoculars/depends.txt b/mods/binoculars/depends.txt deleted file mode 100644 index 1f737c1..0000000 --- a/mods/binoculars/depends.txt +++ /dev/null @@ -1,2 +0,0 @@ -default -creative? diff --git a/mods/binoculars/init.lua b/mods/binoculars/init.lua index 0b43a06..7685897 100644 --- a/mods/binoculars/init.lua +++ b/mods/binoculars/init.lua @@ -1,7 +1,12 @@ +-- binoculars/init.lua + -- Mod global namespace binoculars = {} +-- Load support for MT game translation. +local S = minetest.get_translator("binoculars") + -- Detect creative mod local creative_mod = minetest.get_modpath("creative") @@ -54,7 +59,7 @@ minetest.after(4.7, cyclic_update) -- Binoculars item minetest.register_craftitem("binoculars:binoculars", { - description = "Binoculars\nUse with 'Zoom' key", + description = S("Binoculars") .. "\n" .. S("Use with 'Zoom' key"), inventory_image = "binoculars_binoculars.png", stack_max = 1, diff --git a/mods/binoculars/locale/binoculars.de.tr b/mods/binoculars/locale/binoculars.de.tr new file mode 100644 index 0000000..7bd9b9d --- /dev/null +++ b/mods/binoculars/locale/binoculars.de.tr @@ -0,0 +1,3 @@ +# textdomain: binoculars +Binoculars=Fernglas +Use with 'Zoom' key=Mit „Zoom“-Taste benutzen diff --git a/mods/binoculars/locale/binoculars.es.tr b/mods/binoculars/locale/binoculars.es.tr new file mode 100644 index 0000000..7b7e77d --- /dev/null +++ b/mods/binoculars/locale/binoculars.es.tr @@ -0,0 +1,3 @@ +# textdomain: binoculars +Binoculars=Prismáticos +Use with 'Zoom' key=Usar con la tecla 'Zoom' diff --git a/mods/binoculars/locale/binoculars.fr.tr b/mods/binoculars/locale/binoculars.fr.tr new file mode 100644 index 0000000..3f8b0bc --- /dev/null +++ b/mods/binoculars/locale/binoculars.fr.tr @@ -0,0 +1,3 @@ +# textdomain: binoculars +Binoculars=Jumelles +Use with 'Zoom' key=Utiliser avec le bouton « Zoom » diff --git a/mods/binoculars/locale/binoculars.it.tr b/mods/binoculars/locale/binoculars.it.tr new file mode 100644 index 0000000..d815be6 --- /dev/null +++ b/mods/binoculars/locale/binoculars.it.tr @@ -0,0 +1,3 @@ +# textdomain: binoculars +Binoculars=Binocolo +Use with 'Zoom' key=Usalo col tasto 'Ingrandimento' \ No newline at end of file diff --git a/mods/binoculars/locale/template.txt b/mods/binoculars/locale/template.txt new file mode 100644 index 0000000..a526462 --- /dev/null +++ b/mods/binoculars/locale/template.txt @@ -0,0 +1,3 @@ +# textdomain: binoculars +Binoculars= +Use with 'Zoom' key= diff --git a/mods/binoculars/mod.conf b/mods/binoculars/mod.conf new file mode 100644 index 0000000..7d73741 --- /dev/null +++ b/mods/binoculars/mod.conf @@ -0,0 +1,4 @@ +name = binoculars +description = Minetest Game mod: binoculars +depends = default +optional_depends = creative diff --git a/mods/boats/depends.txt b/mods/boats/depends.txt deleted file mode 100644 index 8e482ce..0000000 --- a/mods/boats/depends.txt +++ /dev/null @@ -1,2 +0,0 @@ -default -player_api diff --git a/mods/boats/init.lua b/mods/boats/init.lua index 00cf791..a785bdc 100644 --- a/mods/boats/init.lua +++ b/mods/boats/init.lua @@ -1,3 +1,8 @@ +-- boats/init.lua + +-- Load support for MT game translation. +local S = minetest.get_translator("boats") + -- -- Helper functions -- @@ -149,13 +154,13 @@ function boat.on_step(self, dtime) if ctrl.up and ctrl.down then if not self.auto then self.auto = true - minetest.chat_send_player(self.driver, "[boats] Cruise on") + minetest.chat_send_player(self.driver, S("Boat cruise mode on")) end elseif ctrl.down then self.v = self.v - dtime * 1.8 if self.auto then self.auto = false - minetest.chat_send_player(self.driver, "[boats] Cruise off") + minetest.chat_send_player(self.driver, S("Boat cruise mode off")) end elseif ctrl.up or self.auto then self.v = self.v + dtime * 1.8 @@ -242,7 +247,7 @@ minetest.register_entity("boats:boat", boat) minetest.register_craftitem("boats:boat", { - description = "Boat", + description = S("Boat"), inventory_image = "boats_inventory.png", wield_image = "boats_wield.png", wield_scale = {x = 2, y = 2, z = 1}, diff --git a/mods/boats/locale/boats.de.tr b/mods/boats/locale/boats.de.tr new file mode 100644 index 0000000..d8eb8d7 --- /dev/null +++ b/mods/boats/locale/boats.de.tr @@ -0,0 +1,4 @@ +# textdomain: boats +Boat cruise mode on=Schneller Bootsmodus an +Boat cruise mode off=Schneller Bootsmodus aus +Boat=Boot diff --git a/mods/boats/locale/boats.es.tr b/mods/boats/locale/boats.es.tr new file mode 100644 index 0000000..b9adb72 --- /dev/null +++ b/mods/boats/locale/boats.es.tr @@ -0,0 +1,4 @@ +# textdomain: boats +Boat cruise mode on=Modo crucero en bote activado +Boat cruise mode off=Modo crucero en bote desactivado +Boat=Bote diff --git a/mods/boats/locale/boats.fr.tr b/mods/boats/locale/boats.fr.tr new file mode 100644 index 0000000..f469a0b --- /dev/null +++ b/mods/boats/locale/boats.fr.tr @@ -0,0 +1,4 @@ +# textdomain: boats +Boat cruise mode on=Bateau mode rapide activé +Boat cruise mode off=Bateau mode rapide désactivé +Boat=Bateau diff --git a/mods/boats/locale/boats.it.tr b/mods/boats/locale/boats.it.tr new file mode 100644 index 0000000..ca28888 --- /dev/null +++ b/mods/boats/locale/boats.it.tr @@ -0,0 +1,4 @@ +# textdomain: boats +Boat cruise mode on=Modalità movimento automatico barca attivata +Boat cruise mode off=Modalità movimento automatico barca disattivata +Boat=Barca \ No newline at end of file diff --git a/mods/boats/locale/template.txt b/mods/boats/locale/template.txt new file mode 100644 index 0000000..17aedc8 --- /dev/null +++ b/mods/boats/locale/template.txt @@ -0,0 +1,4 @@ +# textdomain: boats +Boat cruise mode on= +Boat cruise mode off= +Boat= diff --git a/mods/boats/mod.conf b/mods/boats/mod.conf new file mode 100644 index 0000000..a727f8f --- /dev/null +++ b/mods/boats/mod.conf @@ -0,0 +1,3 @@ +name = boats +description = Minetest Game mod: boats +depends = default, player_api diff --git a/mods/bones/init.lua b/mods/bones/init.lua index 5fcae41..5e54259 100644 --- a/mods/bones/init.lua +++ b/mods/bones/init.lua @@ -1,6 +1,11 @@ +-- bones/init.lua + -- Minetest 0.4 mod: bones -- See README.txt for licensing and other information. +-- Load support for MT game translation. +local S = minetest.get_translator("bones") + bones = {} local function is_owner(pos, name) @@ -24,7 +29,7 @@ local share_bones_time = tonumber(minetest.settings:get("share_bones_time")) or local share_bones_time_early = tonumber(minetest.settings:get("share_bones_time_early")) or share_bones_time / 4 minetest.register_node("bones:bones", { - description = "Bones", + description = S("Bones"), tiles = { "bones_top.png^[transform2", "bones_bottom.png", @@ -116,7 +121,7 @@ minetest.register_node("bones:bones", { local meta = minetest.get_meta(pos) local time = meta:get_int("time") + elapsed if time >= share_bones_time then - meta:set_string("infotext", meta:get_string("owner") .. "'s old bones") + meta:set_string("infotext", S("@1's old bones", meta:get_string("owner"))) meta:set_string("owner", "") else meta:set_int("time", time) @@ -194,7 +199,7 @@ minetest.register_on_dieplayer(function(player) minetest.log("action", player_name .. " dies at " .. pos_string .. ". No bones placed") if bones_position_message then - minetest.chat_send_player(player_name, player_name .. " died at " .. pos_string .. ".") + minetest.chat_send_player(player_name, S("@1 died at @2.", player_name, pos_string)) end return end @@ -204,7 +209,7 @@ minetest.register_on_dieplayer(function(player) minetest.log("action", player_name .. " dies at " .. pos_string .. ". No bones placed") if bones_position_message then - minetest.chat_send_player(player_name, player_name .. " died at " .. pos_string .. ".") + minetest.chat_send_player(player_name, S("@1 died at @2.", player_name, pos_string)) end return end @@ -230,8 +235,7 @@ minetest.register_on_dieplayer(function(player) minetest.log("action", player_name .. " dies at " .. pos_string .. ". Inventory dropped") if bones_position_message then - minetest.chat_send_player(player_name, player_name .. " died at " .. pos_string .. - ", and dropped their inventory.") + minetest.chat_send_player(player_name, S("@1 died at @2, and dropped their inventory.", player_name, pos_string)) end return end @@ -242,8 +246,7 @@ minetest.register_on_dieplayer(function(player) minetest.log("action", player_name .. " dies at " .. pos_string .. ". Bones placed") if bones_position_message then - minetest.chat_send_player(player_name, player_name .. " died at " .. pos_string .. - ", and bones were placed.") + minetest.chat_send_player(player_name, S("@1 died at @2, and bones were placed.", player_name, pos_string)) end local meta = minetest.get_meta(pos) @@ -266,7 +269,7 @@ minetest.register_on_dieplayer(function(player) meta:set_string("owner", player_name) if share_bones_time ~= 0 then - meta:set_string("infotext", player_name .. "'s fresh bones") + meta:set_string("infotext", S("@1's fresh bones", player_name)) if share_bones_time_early == 0 or not minetest.is_protected(pos, player_name) then meta:set_int("time", 0) @@ -276,6 +279,6 @@ minetest.register_on_dieplayer(function(player) minetest.get_node_timer(pos):start(10) else - meta:set_string("infotext", player_name.."'s bones") + meta:set_string("infotext", S("@1's bones", player_name)) end end) diff --git a/mods/bones/locale/bones.de.tr b/mods/bones/locale/bones.de.tr new file mode 100644 index 0000000..83f5c28 --- /dev/null +++ b/mods/bones/locale/bones.de.tr @@ -0,0 +1,8 @@ +# textdomain: bones +Bones=Knochen +@1's old bones=Alte Knochen von @1 +@1 died at @2.=@1 starb bei @2. +@1 died at @2, and dropped their inventory.=@1 starb bei @2 und ließ das Inventar fallen. +@1 died at @2, and bones were placed.=@1 starb bei @2 und Knochen wurden platziert. +@1's fresh bones=Frische Knochen von @1 +@1's bones=Knochen von @1 diff --git a/mods/bones/locale/bones.es.tr b/mods/bones/locale/bones.es.tr new file mode 100644 index 0000000..9c45513 --- /dev/null +++ b/mods/bones/locale/bones.es.tr @@ -0,0 +1,8 @@ +# textdomain: bones +Bones=Huesos +@1's old bones=Huesos antiguos de @1 +@1 died at @2.=@1 murió en @2. +@1 died at @2, and dropped their inventory.=@1 murió en @2, y su inventario se desprendió. +@1 died at @2, and bones were placed.=@1 murió en @2, y sus huesos fueron depositados. +@1's fresh bones=Huesos recientes de @1 +@1's bones=Huesos de @1 diff --git a/mods/bones/locale/bones.fr.tr b/mods/bones/locale/bones.fr.tr new file mode 100644 index 0000000..cfe01ee --- /dev/null +++ b/mods/bones/locale/bones.fr.tr @@ -0,0 +1,8 @@ +# textdomain: bones +Bones=Os +@1's old bones=Vieux os de @1 +@1 died at @2.=@1 est mort à @2. +@1 died at @2, and dropped their inventory.=@1 est mort à @2 et a laissé tomber son inventaire. +@1 died at @2, and bones were placed.=@1 est mort à @2 et ses os ont été placés. +@1's fresh bones=Os frais de @1 +@1's bones=Os de @1 diff --git a/mods/bones/locale/bones.it.tr b/mods/bones/locale/bones.it.tr new file mode 100644 index 0000000..9eed2cc --- /dev/null +++ b/mods/bones/locale/bones.it.tr @@ -0,0 +1,8 @@ +# textdomain: bones +Bones=Ossa +@1's old bones=Ossa vecchie di @1 +@1 died at @2.=@1 è morto alla posizione @2. +@1 died at @2, and dropped their inventory.=@1 è morto alla posizione @2, e ha lasciato a terra il contenuto del suo inventario. +@1 died at @2, and bones were placed.=@1 è morto alla posizione @2, e vi sono state posizionate delle ossa. +@1's fresh bones=Ossa fresche di @1 +@1's bones=Ossa di @1 \ No newline at end of file diff --git a/mods/bones/locale/template.txt b/mods/bones/locale/template.txt new file mode 100644 index 0000000..4ac8d45 --- /dev/null +++ b/mods/bones/locale/template.txt @@ -0,0 +1,8 @@ +# textdomain: bones +Bones= +@1's old bones= +@1 died at @2.= +@1 died at @2, and dropped their inventory.= +@1 died at @2, and bones were placed.= +@1's fresh bones= +@1's bones= diff --git a/mods/bones/mod.conf b/mods/bones/mod.conf new file mode 100644 index 0000000..371997b --- /dev/null +++ b/mods/bones/mod.conf @@ -0,0 +1,3 @@ +name = bones +description = Minetest Game mod: bones +depends = default diff --git a/mods/bucket/depends.txt b/mods/bucket/depends.txt deleted file mode 100644 index 3a7daa1..0000000 --- a/mods/bucket/depends.txt +++ /dev/null @@ -1,2 +0,0 @@ -default - diff --git a/mods/bucket/init.lua b/mods/bucket/init.lua index 1d37cb4..2cf431c 100644 --- a/mods/bucket/init.lua +++ b/mods/bucket/init.lua @@ -1,15 +1,19 @@ -- Minetest 0.4 mod: bucket -- See README.txt for licensing and other information. +-- Load support for MT game translation. +local S = minetest.get_translator("bucket") + + minetest.register_alias("bucket", "bucket:bucket_empty") minetest.register_alias("bucket_water", "bucket:bucket_water") minetest.register_alias("bucket_lava", "bucket:bucket_lava") minetest.register_craft({ - output = 'bucket:bucket_empty 1', + output = "bucket:bucket_empty 1", recipe = { - {'default:steel_ingot', '', 'default:steel_ingot'}, - {'', 'default:steel_ingot', ''}, + {"default:steel_ingot", "", "default:steel_ingot"}, + {"", "default:steel_ingot", ""}, } }) @@ -111,9 +115,9 @@ function bucket.register_liquid(source, flowing, itemname, inventory_image, name end minetest.register_craftitem("bucket:bucket_empty", { - description = "Empty Bucket", + description = S("Empty Bucket"), inventory_image = "bucket.png", - stack_max = 99, + groups = {tool = 1}, liquids_pointable = true, on_use = function(itemstack, user, pointed_thing) if pointed_thing.type == "object" then @@ -185,8 +189,8 @@ bucket.register_liquid( "default:water_flowing", "bucket:bucket_water", "bucket_water.png", - "Water Bucket", - {water_bucket = 1} + S("Water Bucket"), + {tool = 1, water_bucket = 1} ) -- River water source is 'liquid_renewable = false' to avoid horizontal spread @@ -200,8 +204,8 @@ bucket.register_liquid( "default:river_water_flowing", "bucket:bucket_river_water", "bucket_river_water.png", - "River Water Bucket", - {water_bucket = 1}, + S("River Water Bucket"), + {tool = 1, water_bucket = 1}, true ) @@ -210,7 +214,8 @@ bucket.register_liquid( "default:lava_flowing", "bucket:bucket_lava", "bucket_lava.png", - "Lava Bucket" + S("Lava Bucket"), + {tool = 1} ) minetest.register_craft({ diff --git a/mods/bucket/locale/bucket.de.tr b/mods/bucket/locale/bucket.de.tr new file mode 100644 index 0000000..570dff1 --- /dev/null +++ b/mods/bucket/locale/bucket.de.tr @@ -0,0 +1,5 @@ +# textdomain: bucket +Empty Bucket=Leerer Eimer +Water Bucket=Wassereimer +River Water Bucket=Flusswassereimer +Lava Bucket=Lavaeimer diff --git a/mods/bucket/locale/bucket.es.tr b/mods/bucket/locale/bucket.es.tr new file mode 100644 index 0000000..91a0623 --- /dev/null +++ b/mods/bucket/locale/bucket.es.tr @@ -0,0 +1,5 @@ +# textdomain: bucket +Empty Bucket=Cubo vacío +Water Bucket=Cubo con agua +River Water Bucket=Cubo con agua de río +Lava Bucket=Cubo con lava diff --git a/mods/bucket/locale/bucket.fr.tr b/mods/bucket/locale/bucket.fr.tr new file mode 100644 index 0000000..5065150 --- /dev/null +++ b/mods/bucket/locale/bucket.fr.tr @@ -0,0 +1,5 @@ +# textdomain: bucket +Empty Bucket=Seau vide +Water Bucket=Seau d'eau +River Water Bucket=Seau d'eau de rivière +Lava Bucket=Seau de lave diff --git a/mods/bucket/locale/bucket.it.tr b/mods/bucket/locale/bucket.it.tr new file mode 100644 index 0000000..1c8de2e --- /dev/null +++ b/mods/bucket/locale/bucket.it.tr @@ -0,0 +1,5 @@ +# textdomain: bucket +Empty Bucket=Secchio vuoto +Water Bucket=Secchio d'acqua +River Water Bucket=Secchio d'acqua di fiume +Lava Bucket=Secchio di lava \ No newline at end of file diff --git a/mods/bucket/locale/template.txt b/mods/bucket/locale/template.txt new file mode 100644 index 0000000..a37c103 --- /dev/null +++ b/mods/bucket/locale/template.txt @@ -0,0 +1,5 @@ +# textdomain: bucket +Empty Bucket= +Water Bucket= +River Water Bucket= +Lava Bucket= diff --git a/mods/bucket/mod.conf b/mods/bucket/mod.conf new file mode 100644 index 0000000..1c60a09 --- /dev/null +++ b/mods/bucket/mod.conf @@ -0,0 +1,3 @@ +name = bucket +description = Minetest Game mod: bucket +depends = default diff --git a/mods/butterflies/depends.txt b/mods/butterflies/depends.txt deleted file mode 100644 index df07aca..0000000 --- a/mods/butterflies/depends.txt +++ /dev/null @@ -1,2 +0,0 @@ -default -flowers \ No newline at end of file diff --git a/mods/butterflies/init.lua b/mods/butterflies/init.lua index 008211e..6fd839f 100644 --- a/mods/butterflies/init.lua +++ b/mods/butterflies/init.lua @@ -1,8 +1,13 @@ +-- butterflies/init.lua + +-- Load support for MT game translation. +local S = minetest.get_translator("butterflies") + -- register butterflies local butter_list = { - {"white", "White"}, - {"red", "Red"}, - {"violet", "Violet"} + {"white", S("White Butterfly")}, + {"red", S("Red Butterfly")}, + {"violet", S("Violet Butterfly")} } for i in ipairs (butter_list) do @@ -10,7 +15,7 @@ for i in ipairs (butter_list) do local desc = butter_list[i][2] minetest.register_node("butterflies:butterfly_"..name, { - description = desc.." Butterfly", + description = desc, drawtype = "plantlike", tiles = {{ name = "butterflies_butterfly_"..name.."_animated.png", @@ -56,10 +61,9 @@ for i in ipairs (butter_list) do }) minetest.register_node("butterflies:hidden_butterfly_"..name, { - description = "Hidden "..desc.." Butterfly", drawtype = "airlike", - inventory_image = "insects_butterfly_"..name..".png", - wield_image = "insects_butterfly_"..name..".png", + inventory_image = "butterflies_butterfly_"..name..".png", + wield_image = "butterflies_butterfly_"..name..".png", paramtype = "light", sunlight_propagates = true, walkable = false, diff --git a/mods/butterflies/locale/butterflies.de.tr b/mods/butterflies/locale/butterflies.de.tr new file mode 100644 index 0000000..2f1b982 --- /dev/null +++ b/mods/butterflies/locale/butterflies.de.tr @@ -0,0 +1,4 @@ +# textdomain: butterflies +White Butterfly=Weißer Schmetterling +Red Butterfly=Roter Schmetterling +Violet Butterfly=Violetter Schmetterling diff --git a/mods/butterflies/locale/butterflies.es.tr b/mods/butterflies/locale/butterflies.es.tr new file mode 100644 index 0000000..59a28eb --- /dev/null +++ b/mods/butterflies/locale/butterflies.es.tr @@ -0,0 +1,4 @@ +# textdomain: butterflies +White Butterfly=Mariposa blanca +Red Butterfly=Mariposa roja +Violet Butterfly=Mariposa violeta diff --git a/mods/butterflies/locale/butterflies.fr.tr b/mods/butterflies/locale/butterflies.fr.tr new file mode 100644 index 0000000..8f5c094 --- /dev/null +++ b/mods/butterflies/locale/butterflies.fr.tr @@ -0,0 +1,4 @@ +# textdomain: butterflies +White Butterfly=Papillon blanc +Red Butterfly=Papillon rouge +Violet Butterfly=Papillon violet diff --git a/mods/butterflies/locale/butterflies.it.tr b/mods/butterflies/locale/butterflies.it.tr new file mode 100644 index 0000000..83c9ccf --- /dev/null +++ b/mods/butterflies/locale/butterflies.it.tr @@ -0,0 +1,4 @@ +# textdomain: butterflies +White Butterfly=Farfalla bianca +Red Butterfly=Farfalla rossa +Violet Butterfly=Farfalla viola \ No newline at end of file diff --git a/mods/butterflies/locale/template.txt b/mods/butterflies/locale/template.txt new file mode 100644 index 0000000..d89503a --- /dev/null +++ b/mods/butterflies/locale/template.txt @@ -0,0 +1,4 @@ +# textdomain: butterflies +White Butterfly= +Red Butterfly= +Violet Butterfly= diff --git a/mods/butterflies/mod.conf b/mods/butterflies/mod.conf new file mode 100644 index 0000000..1c66497 --- /dev/null +++ b/mods/butterflies/mod.conf @@ -0,0 +1,3 @@ +name = butterflies +description = Minetest Game mod: Butterflies +depends = default, flowers diff --git a/mods/carts/cart_entity.lua b/mods/carts/cart_entity.lua index 855450d..3c131a6 100644 --- a/mods/carts/cart_entity.lua +++ b/mods/carts/cart_entity.lua @@ -1,3 +1,8 @@ +-- carts/cart_entity.lua + +-- support for MT game translation. +local S = carts.get_translator + local cart_entity = { initial_properties = { physical = false, -- otherwise going uphill breaks @@ -383,7 +388,7 @@ end minetest.register_entity("carts:cart", cart_entity) minetest.register_craftitem("carts:cart", { - description = "Cart (Sneak+Click to pick up)", + description = S("Cart") .. "\n" .. S("(Sneak+Click to pick up)"), inventory_image = minetest.inventorycube("carts_cart_top.png", "carts_cart_side.png", "carts_cart_side.png"), wield_image = "carts_cart_side.png", on_place = function(itemstack, placer, pointed_thing) diff --git a/mods/carts/depends.txt b/mods/carts/depends.txt deleted file mode 100644 index 8e482ce..0000000 --- a/mods/carts/depends.txt +++ /dev/null @@ -1,2 +0,0 @@ -default -player_api diff --git a/mods/carts/init.lua b/mods/carts/init.lua index fe45303..a5aa9cb 100644 --- a/mods/carts/init.lua +++ b/mods/carts/init.lua @@ -1,7 +1,12 @@ +-- carts/init.lua + +-- Load support for MT game translation. +local S = minetest.get_translator("carts") carts = {} carts.modpath = minetest.get_modpath("carts") carts.railparams = {} +carts.get_translator = S -- Maximal speed of the cart in m/s (min = -1) carts.speed_max = 7 diff --git a/mods/carts/locale/carts.de.tr b/mods/carts/locale/carts.de.tr new file mode 100644 index 0000000..89a33ac --- /dev/null +++ b/mods/carts/locale/carts.de.tr @@ -0,0 +1,6 @@ +# textdomain: carts +Cart=Lore +(Sneak+Click to pick up)=(Schleichen u. Klicken zum Aufheben) +Rail=Schiene +Powered Rail=Antriebsschiene +Brake Rail=Bremsschiene diff --git a/mods/carts/locale/carts.es.tr b/mods/carts/locale/carts.es.tr new file mode 100644 index 0000000..c0857a1 --- /dev/null +++ b/mods/carts/locale/carts.es.tr @@ -0,0 +1,6 @@ +# textdomain: carts +Cart=Vagoneta +(Sneak+Click to pick up)=(Agacharse+Clic para recoger) +Rail=Raíl +Powered Rail=Raíl energizado +Brake Rail=Raíl de frenado diff --git a/mods/carts/locale/carts.fr.tr b/mods/carts/locale/carts.fr.tr new file mode 100644 index 0000000..b092f14 --- /dev/null +++ b/mods/carts/locale/carts.fr.tr @@ -0,0 +1,6 @@ +# textdomain: carts +Cart=Chariot +(Sneak+Click to pick up)=(Se baisser + clic pour ramasser) +Rail=Rail +Powered Rail=Rail de traction +Brake Rail=Rail de freinage diff --git a/mods/carts/locale/carts.it.tr b/mods/carts/locale/carts.it.tr new file mode 100644 index 0000000..7392d26 --- /dev/null +++ b/mods/carts/locale/carts.it.tr @@ -0,0 +1,6 @@ +# textdomain: carts +Cart=Vagone +(Sneak+Click to pick up)=(Strisciare+Click per raccoglierlo) +Rail=Binario +Powered Rail=Binario alimentato +Brake Rail=Binario freno \ No newline at end of file diff --git a/mods/carts/locale/template.txt b/mods/carts/locale/template.txt new file mode 100644 index 0000000..a67d95f --- /dev/null +++ b/mods/carts/locale/template.txt @@ -0,0 +1,6 @@ +# textdomain: carts +Cart= +(Sneak+Click to pick up)= +Rail= +Powered Rail= +Brake Rail= diff --git a/mods/carts/mod.conf b/mods/carts/mod.conf new file mode 100644 index 0000000..20357e3 --- /dev/null +++ b/mods/carts/mod.conf @@ -0,0 +1,3 @@ +name = carts +description = Carts (formerly boost_cart) +depends = default, player_api diff --git a/mods/carts/rails.lua b/mods/carts/rails.lua index a5fff8a..8bd2ba1 100644 --- a/mods/carts/rails.lua +++ b/mods/carts/rails.lua @@ -1,5 +1,10 @@ +-- carts/rails.lua + +-- support for MT game translation. +local S = carts.get_translator + carts:register_rail("carts:rail", { - description = "Rail", + description = S("Rail"), tiles = { "carts_rail_straight.png", "carts_rail_curved.png", "carts_rail_t_junction.png", "carts_rail_crossing.png" @@ -22,7 +27,7 @@ minetest.register_alias("default:rail", "carts:rail") carts:register_rail("carts:powerrail", { - description = "Powered Rail", + description = S("Powered Rail"), tiles = { "carts_rail_straight_pwr.png", "carts_rail_curved_pwr.png", "carts_rail_t_junction_pwr.png", "carts_rail_crossing_pwr.png" @@ -41,7 +46,7 @@ minetest.register_craft({ carts:register_rail("carts:brakerail", { - description = "Brake Rail", + description = S("Brake Rail"), tiles = { "carts_rail_straight_brk.png", "carts_rail_curved_brk.png", "carts_rail_t_junction_brk.png", "carts_rail_crossing_brk.png" diff --git a/mods/creative/depends.txt b/mods/creative/depends.txt deleted file mode 100644 index 975e652..0000000 --- a/mods/creative/depends.txt +++ /dev/null @@ -1,2 +0,0 @@ -default -sfinv diff --git a/mods/creative/init.lua b/mods/creative/init.lua index 0f8d4db..a1d57c8 100644 --- a/mods/creative/init.lua +++ b/mods/creative/init.lua @@ -1,4 +1,10 @@ +-- creative/init.lua + +-- Load support for MT game translation. +local S = minetest.get_translator("creative") + creative = {} +creative.get_translator = S local function update_sfinv(name) minetest.after(0, function() @@ -14,7 +20,7 @@ local function update_sfinv(name) end minetest.register_privilege("creative", { - description = "Allow player to use creative inventory", + description = S("Allow player to use creative inventory"), give_to_singleplayer = false, give_to_admin = false, on_grant = update_sfinv, @@ -40,10 +46,8 @@ if creative_mode_cache then local digtime = 42 local caps = {times = {digtime, digtime, digtime}, uses = 0, maxlevel = 256} - minetest.register_item(":", { - type = "none", - wield_image = "wieldhand.png", - wield_scale = {x = 1, y = 1, z = 2.5}, + -- Override the hand tool + minetest.override_item("", { range = 10, tool_capabilities = { full_punch_interval = 0.5, @@ -54,6 +58,9 @@ if creative_mode_cache then snappy = caps, choppy = caps, oddly_breakable_by_hand = caps, + -- dig_immediate group doesn't use value 1. Value 3 is instant dig + dig_immediate = + {times = {[2] = digtime, [3] = 0}, uses = 0, maxlevel = 256}, }, damage_groups = {fleshy = 10}, } diff --git a/mods/creative/inventory.lua b/mods/creative/inventory.lua index 6f485d5..27dee78 100644 --- a/mods/creative/inventory.lua +++ b/mods/creative/inventory.lua @@ -1,3 +1,8 @@ +-- creative/inventory.lua + +-- support for MT game translation. +local S = creative.get_translator + local player_inventory = {} local inventory_cache = {} @@ -103,30 +108,29 @@ function creative.register_tab(name, title, items) local start_i = inv.start_i or 0 local pagenum = math.floor(start_i / (3*8) + 1) local pagemax = math.ceil(inv.size / (3*8)) + local esc = minetest.formspec_escape return sfinv.make_formspec(player, context, "label[6.2,3.35;" .. minetest.colorize("#FFFF00", tostring(pagenum)) .. " / " .. tostring(pagemax) .. "]" .. [[ image[4.06,3.4;0.8,0.8;creative_trash_icon.png] listcolors[#00000069;#5A5A5A;#141318;#30434C;#FFF] - list[current_player;main;0,4.7;8,1;] - list[current_player;main;0,5.85;8,3;8] list[detached:creative_trash;main;4,3.3;1,1;] listring[] image_button[5.4,3.25;0.8,0.8;creative_prev_icon.png;creative_prev;] image_button[7.2,3.25;0.8,0.8;creative_next_icon.png;creative_next;] image_button[2.1,3.25;0.8,0.8;creative_search_icon.png;creative_search;] image_button[2.75,3.25;0.8,0.8;creative_clear_icon.png;creative_clear;] - tooltip[creative_search;Search] - tooltip[creative_clear;Reset] - tooltip[creative_prev;Previous page] - tooltip[creative_next;Next page] - listring[current_player;main] - field_close_on_enter[creative_filter;false] ]] .. - "field[0.3,3.5;2.2,1;creative_filter;;" .. minetest.formspec_escape(inv.filter) .. "]" .. + "tooltip[creative_search;" .. esc(S("Search")) .. "]" .. + "tooltip[creative_clear;" .. esc(S("Reset")) .. "]" .. + "tooltip[creative_prev;" .. esc(S("Previous page")) .. "]" .. + "tooltip[creative_next;" .. esc(S("Next page")) .. "]" .. + "listring[current_player;main]" .. + "field_close_on_enter[creative_filter;false]" .. + "field[0.3,3.5;2.2,1;creative_filter;;" .. esc(inv.filter) .. "]" .. "listring[detached:creative_" .. player_name .. ";main]" .. "list[detached:creative_" .. player_name .. ";main;0,0;8,3;" .. tostring(start_i) .. "]" .. - default.get_hotbar_bg(0,4.7) .. creative.formspec_add, false) + creative.formspec_add, true) end, on_enter = function(self, player, context) local player_name = player:get_player_name() @@ -176,10 +180,10 @@ function creative.register_tab(name, title, items) }) end -creative.register_tab("all", "All", minetest.registered_items) -creative.register_tab("nodes", "Nodes", minetest.registered_nodes) -creative.register_tab("tools", "Tools", minetest.registered_tools) -creative.register_tab("craftitems", "Items", minetest.registered_craftitems) +creative.register_tab("all", S("All"), minetest.registered_items) +creative.register_tab("nodes", S("Nodes"), minetest.registered_nodes) +creative.register_tab("tools", S("Tools"), minetest.registered_tools) +creative.register_tab("craftitems", S("Items"), minetest.registered_craftitems) local old_homepage_name = sfinv.get_homepage_name function sfinv.get_homepage_name(player) diff --git a/mods/creative/locale/creative.de.tr b/mods/creative/locale/creative.de.tr new file mode 100644 index 0000000..02b0277 --- /dev/null +++ b/mods/creative/locale/creative.de.tr @@ -0,0 +1,10 @@ +# textdomain: creative +Allow player to use creative inventory=Spieler erlauben, das Kreativinventar zu benutzen +Search=Suchen +Reset=Zurücksetzen +Previous page=Vorherige Seite +Next page=Nächste Seite +All=Alles +Nodes=Blöcke +Tools=Werkzeuge +Items=Gegenstände diff --git a/mods/creative/locale/creative.es.tr b/mods/creative/locale/creative.es.tr new file mode 100644 index 0000000..f4e39a7 --- /dev/null +++ b/mods/creative/locale/creative.es.tr @@ -0,0 +1,10 @@ +# textdomain: creative +Allow player to use creative inventory=Permitir al jugador usar el inventario creativo +Search=Buscar +Reset=Resetear +Previous page=Pág. siguiente +Next page=Pág. anterior +All=Todos +Nodes=Nodos +Tools=Herramientas +Items=Objetos diff --git a/mods/creative/locale/creative.fr.tr b/mods/creative/locale/creative.fr.tr new file mode 100644 index 0000000..695c0a1 --- /dev/null +++ b/mods/creative/locale/creative.fr.tr @@ -0,0 +1,10 @@ +# textdomain: creative +Allow player to use creative inventory=Permettre aux joueurs d'utiliser l'inventaire du mode créatif +Search=Rechercher +Reset=Réinitialiser +Previous page=Page précédente +Next page=Page suivante +All=Tout +Nodes=Nœuds +Tools=Outils +Items=Article diff --git a/mods/creative/locale/creative.it.tr b/mods/creative/locale/creative.it.tr new file mode 100644 index 0000000..f972a2b --- /dev/null +++ b/mods/creative/locale/creative.it.tr @@ -0,0 +1,10 @@ +# textdomain: creative +Allow player to use creative inventory=Permette al giocatore di usare l'inventario creativo +Search=Cerca +Reset=Azzera +Previous page=Pagina precedente +Next page=Pagina successiva +All=Tutto +Nodes=Nodi +Tools=Strumenti +Items=Oggetti \ No newline at end of file diff --git a/mods/creative/locale/template.txt b/mods/creative/locale/template.txt new file mode 100644 index 0000000..3e79730 --- /dev/null +++ b/mods/creative/locale/template.txt @@ -0,0 +1,10 @@ +# textdomain: creative +Allow player to use creative inventory= +Search= +Reset= +Previous page= +Next page= +All= +Nodes= +Tools= +Items= diff --git a/mods/creative/mod.conf b/mods/creative/mod.conf new file mode 100644 index 0000000..0b3f745 --- /dev/null +++ b/mods/creative/mod.conf @@ -0,0 +1,3 @@ +name = creative +description = Minetest Game mod: creative +depends = default, sfinv diff --git a/mods/default/README.txt b/mods/default/README.txt index 8642b39..1bc899b 100644 --- a/mods/default/README.txt +++ b/mods/default/README.txt @@ -101,8 +101,7 @@ paramat (CC BY-SA 3.0): default_dry_grass.png default_dry_grass_side.png default_dry_grass_*.png - default_grass.png - default_grass_side.png + default_grass_side.png -- Derived from a texture by TumeniNodes (CC-BY-SA 3.0) default_mese_block.png default_silver_sand.png default_mese_post_light_side.png @@ -129,6 +128,8 @@ TumeniNodes (CC BY-SA 3.0): default_desert_cobble.png -- Derived from a texture by brunob.santos (CC BY-SA 3.0) default_coniferous_litter.png default_coniferous_litter_side.png + default_grass.png + default_dry_dirt.png BlockMen (CC BY-SA 3.0): default_aspen_leaves.png -- Derived from Sofar's texture diff --git a/mods/default/chests.lua b/mods/default/chests.lua index b70e5ad..8dbf9d8 100644 --- a/mods/default/chests.lua +++ b/mods/default/chests.lua @@ -1,5 +1,8 @@ default.chest = {} +-- support for MT game translation. +local S = default.get_translator + function default.chest.get_chest_formspec(pos) local spos = pos.x .. "," .. pos.y .. "," .. pos.z local formspec = @@ -84,7 +87,7 @@ function default.chest.register_chest(name, d) if def.protected then def.on_construct = function(pos) local meta = minetest.get_meta(pos) - meta:set_string("infotext", "Locked Chest") + meta:set_string("infotext", S("Locked Chest")) meta:set_string("owner", "") local inv = meta:get_inventory() inv:set_size("main", 8*4) @@ -92,8 +95,7 @@ function default.chest.register_chest(name, d) def.after_place_node = function(pos, placer) local meta = minetest.get_meta(pos) meta:set_string("owner", placer:get_player_name() or "") - meta:set_string("infotext", "Locked Chest (owned by " .. - meta:get_string("owner") .. ")") + meta:set_string("infotext", S("Locked Chest (owned by @1)", meta:get_string("owner"))) end def.can_dig = function(pos,player) local meta = minetest.get_meta(pos); @@ -171,7 +173,7 @@ function default.chest.register_chest(name, d) -- verify placer is owner of lockable chest if owner ~= pn then minetest.record_protection_violation(pos, pn) - minetest.chat_send_player(pn, "You do not own this chest.") + minetest.chat_send_player(pn, S("You do not own this chest.")) return nil end @@ -181,12 +183,12 @@ function default.chest.register_chest(name, d) meta:set_string("key_lock_secret", secret) end - return secret, "a locked chest", owner + return secret, S("a locked chest"), owner end else def.on_construct = function(pos) local meta = minetest.get_meta(pos) - meta:set_string("infotext", "Chest") + meta:set_string("infotext", S("Chest")) local inv = meta:get_inventory() inv:set_size("main", 8*4) end @@ -285,7 +287,7 @@ function default.chest.register_chest(name, d) end default.chest.register_chest("chest", { - description = "Chest", + description = S("Chest"), tiles = { "default_chest_top.png", "default_chest_top.png", @@ -301,7 +303,7 @@ default.chest.register_chest("chest", { }) default.chest.register_chest("chest_locked", { - description = "Locked Chest", + description = S("Locked Chest"), tiles = { "default_chest_top.png", "default_chest_top.png", diff --git a/mods/default/crafting.lua b/mods/default/crafting.lua index b49dc48..9481133 100644 --- a/mods/default/crafting.lua +++ b/mods/default/crafting.lua @@ -1,51 +1,51 @@ -- mods/default/crafting.lua minetest.register_craft({ - output = 'default:wood 4', + output = "default:wood 4", recipe = { - {'default:tree'}, + {"default:tree"}, } }) minetest.register_craft({ - output = 'default:junglewood 4', + output = "default:junglewood 4", recipe = { - {'default:jungletree'}, + {"default:jungletree"}, } }) minetest.register_craft({ - output = 'default:pine_wood 4', + output = "default:pine_wood 4", recipe = { - {'default:pine_tree'}, + {"default:pine_tree"}, } }) minetest.register_craft({ - output = 'default:acacia_wood 4', + output = "default:acacia_wood 4", recipe = { - {'default:acacia_tree'}, + {"default:acacia_tree"}, } }) minetest.register_craft({ - output = 'default:aspen_wood 4', + output = "default:aspen_wood 4", recipe = { - {'default:aspen_tree'}, + {"default:aspen_tree"}, } }) minetest.register_craft({ - output = 'default:wood', + output = "default:wood", recipe = { - {'default:bush_stem'}, + {"default:bush_stem"}, } }) minetest.register_craft({ - output = 'default:acacia_wood', + output = "default:acacia_wood", recipe = { - {'default:acacia_bush_stem'}, + {"default:acacia_bush_stem"}, } }) @@ -57,143 +57,143 @@ minetest.register_craft({ }) minetest.register_craft({ - output = 'default:stick 4', + output = "default:stick 4", recipe = { - {'group:wood'}, + {"group:wood"}, } }) minetest.register_craft({ - output = 'default:sign_wall_steel 3', + output = "default:sign_wall_steel 3", recipe = { - {'default:steel_ingot', 'default:steel_ingot', 'default:steel_ingot'}, - {'default:steel_ingot', 'default:steel_ingot', 'default:steel_ingot'}, - {'', 'group:stick', ''}, + {"default:steel_ingot", "default:steel_ingot", "default:steel_ingot"}, + {"default:steel_ingot", "default:steel_ingot", "default:steel_ingot"}, + {"", "group:stick", ""}, } }) minetest.register_craft({ - output = 'default:sign_wall_wood 3', + output = "default:sign_wall_wood 3", recipe = { - {'group:wood', 'group:wood', 'group:wood'}, - {'group:wood', 'group:wood', 'group:wood'}, - {'', 'group:stick', ''}, + {"group:wood", "group:wood", "group:wood"}, + {"group:wood", "group:wood", "group:wood"}, + {"", "group:stick", ""}, } }) minetest.register_craft({ - output = 'default:torch 4', + output = "default:torch 4", recipe = { - {'default:coal_lump'}, - {'group:stick'}, + {"default:coal_lump"}, + {"group:stick"}, } }) minetest.register_craft({ - output = 'default:pick_wood', + output = "default:pick_wood", recipe = { - {'group:wood', 'group:wood', 'group:wood'}, - {'', 'group:stick', ''}, - {'', 'group:stick', ''}, + {"group:wood", "group:wood", "group:wood"}, + {"", "group:stick", ""}, + {"", "group:stick", ""}, } }) minetest.register_craft({ - output = 'default:pick_stone', + output = "default:pick_stone", recipe = { - {'group:stone', 'group:stone', 'group:stone'}, - {'', 'group:stick', ''}, - {'', 'group:stick', ''}, + {"group:stone", "group:stone", "group:stone"}, + {"", "group:stick", ""}, + {"", "group:stick", ""}, } }) minetest.register_craft({ - output = 'default:pick_steel', + output = "default:pick_steel", recipe = { - {'default:steel_ingot', 'default:steel_ingot', 'default:steel_ingot'}, - {'', 'group:stick', ''}, - {'', 'group:stick', ''}, + {"default:steel_ingot", "default:steel_ingot", "default:steel_ingot"}, + {"", "group:stick", ""}, + {"", "group:stick", ""}, } }) minetest.register_craft({ - output = 'default:pick_bronze', + output = "default:pick_bronze", recipe = { - {'default:bronze_ingot', 'default:bronze_ingot', 'default:bronze_ingot'}, - {'', 'group:stick', ''}, - {'', 'group:stick', ''}, + {"default:bronze_ingot", "default:bronze_ingot", "default:bronze_ingot"}, + {"", "group:stick", ""}, + {"", "group:stick", ""}, } }) minetest.register_craft({ - output = 'default:pick_mese', + output = "default:pick_mese", recipe = { - {'default:mese_crystal', 'default:mese_crystal', 'default:mese_crystal'}, - {'', 'group:stick', ''}, - {'', 'group:stick', ''}, + {"default:mese_crystal", "default:mese_crystal", "default:mese_crystal"}, + {"", "group:stick", ""}, + {"", "group:stick", ""}, } }) minetest.register_craft({ - output = 'default:pick_diamond', + output = "default:pick_diamond", recipe = { - {'default:diamond', 'default:diamond', 'default:diamond'}, - {'', 'group:stick', ''}, - {'', 'group:stick', ''}, + {"default:diamond", "default:diamond", "default:diamond"}, + {"", "group:stick", ""}, + {"", "group:stick", ""}, } }) minetest.register_craft({ - output = 'default:shovel_wood', + output = "default:shovel_wood", recipe = { - {'group:wood'}, - {'group:stick'}, - {'group:stick'}, + {"group:wood"}, + {"group:stick"}, + {"group:stick"}, } }) minetest.register_craft({ - output = 'default:shovel_stone', + output = "default:shovel_stone", recipe = { - {'group:stone'}, - {'group:stick'}, - {'group:stick'}, + {"group:stone"}, + {"group:stick"}, + {"group:stick"}, } }) minetest.register_craft({ - output = 'default:shovel_steel', + output = "default:shovel_steel", recipe = { - {'default:steel_ingot'}, - {'group:stick'}, - {'group:stick'}, + {"default:steel_ingot"}, + {"group:stick"}, + {"group:stick"}, } }) minetest.register_craft({ - output = 'default:shovel_bronze', + output = "default:shovel_bronze", recipe = { - {'default:bronze_ingot'}, - {'group:stick'}, - {'group:stick'}, + {"default:bronze_ingot"}, + {"group:stick"}, + {"group:stick"}, } }) minetest.register_craft({ - output = 'default:shovel_mese', + output = "default:shovel_mese", recipe = { - {'default:mese_crystal'}, - {'group:stick'}, - {'group:stick'}, + {"default:mese_crystal"}, + {"group:stick"}, + {"group:stick"}, } }) minetest.register_craft({ - output = 'default:shovel_diamond', + output = "default:shovel_diamond", recipe = { - {'default:diamond'}, - {'group:stick'}, - {'group:stick'}, + {"default:diamond"}, + {"group:stick"}, + {"group:stick"}, } }) @@ -201,135 +201,135 @@ minetest.register_craft({ -- Recipes face left to match appearence in textures and inventory minetest.register_craft({ - output = 'default:axe_wood', + output = "default:axe_wood", recipe = { - {'group:wood', 'group:wood'}, - {'group:wood', 'group:stick'}, - {'', 'group:stick'}, + {"group:wood", "group:wood"}, + {"group:wood", "group:stick"}, + {"", "group:stick"}, } }) minetest.register_craft({ - output = 'default:axe_stone', + output = "default:axe_stone", recipe = { - {'group:stone', 'group:stone'}, - {'group:stone', 'group:stick'}, - {'', 'group:stick'}, + {"group:stone", "group:stone"}, + {"group:stone", "group:stick"}, + {"", "group:stick"}, } }) minetest.register_craft({ - output = 'default:axe_steel', + output = "default:axe_steel", recipe = { - {'default:steel_ingot', 'default:steel_ingot'}, - {'default:steel_ingot', 'group:stick'}, - {'', 'group:stick'}, + {"default:steel_ingot", "default:steel_ingot"}, + {"default:steel_ingot", "group:stick"}, + {"", "group:stick"}, } }) minetest.register_craft({ - output = 'default:axe_bronze', + output = "default:axe_bronze", recipe = { - {'default:bronze_ingot', 'default:bronze_ingot'}, - {'default:bronze_ingot', 'group:stick'}, - {'', 'group:stick'}, + {"default:bronze_ingot", "default:bronze_ingot"}, + {"default:bronze_ingot", "group:stick"}, + {"", "group:stick"}, } }) minetest.register_craft({ - output = 'default:axe_mese', + output = "default:axe_mese", recipe = { - {'default:mese_crystal', 'default:mese_crystal'}, - {'default:mese_crystal', 'group:stick'}, - {'', 'group:stick'}, + {"default:mese_crystal", "default:mese_crystal"}, + {"default:mese_crystal", "group:stick"}, + {"", "group:stick"}, } }) minetest.register_craft({ - output = 'default:axe_diamond', + output = "default:axe_diamond", recipe = { - {'default:diamond', 'default:diamond'}, - {'default:diamond', 'group:stick'}, - {'', 'group:stick'}, + {"default:diamond", "default:diamond"}, + {"default:diamond", "group:stick"}, + {"", "group:stick"}, } }) minetest.register_craft({ - output = 'default:sword_wood', + output = "default:sword_wood", recipe = { - {'group:wood'}, - {'group:wood'}, - {'group:stick'}, + {"group:wood"}, + {"group:wood"}, + {"group:stick"}, } }) minetest.register_craft({ - output = 'default:sword_stone', + output = "default:sword_stone", recipe = { - {'group:stone'}, - {'group:stone'}, - {'group:stick'}, + {"group:stone"}, + {"group:stone"}, + {"group:stick"}, } }) minetest.register_craft({ - output = 'default:sword_steel', + output = "default:sword_steel", recipe = { - {'default:steel_ingot'}, - {'default:steel_ingot'}, - {'group:stick'}, + {"default:steel_ingot"}, + {"default:steel_ingot"}, + {"group:stick"}, } }) minetest.register_craft({ - output = 'default:sword_bronze', + output = "default:sword_bronze", recipe = { - {'default:bronze_ingot'}, - {'default:bronze_ingot'}, - {'group:stick'}, + {"default:bronze_ingot"}, + {"default:bronze_ingot"}, + {"group:stick"}, } }) minetest.register_craft({ - output = 'default:sword_mese', + output = "default:sword_mese", recipe = { - {'default:mese_crystal'}, - {'default:mese_crystal'}, - {'group:stick'}, + {"default:mese_crystal"}, + {"default:mese_crystal"}, + {"group:stick"}, } }) minetest.register_craft({ - output = 'default:sword_diamond', + output = "default:sword_diamond", recipe = { - {'default:diamond'}, - {'default:diamond'}, - {'group:stick'}, + {"default:diamond"}, + {"default:diamond"}, + {"group:stick"}, } }) minetest.register_craft({ - output = 'default:skeleton_key', + output = "default:skeleton_key", recipe = { - {'default:gold_ingot'}, + {"default:gold_ingot"}, } }) minetest.register_craft({ - output = 'default:chest', + output = "default:chest", recipe = { - {'group:wood', 'group:wood', 'group:wood'}, - {'group:wood', '', 'group:wood'}, - {'group:wood', 'group:wood', 'group:wood'}, + {"group:wood", "group:wood", "group:wood"}, + {"group:wood", "", "group:wood"}, + {"group:wood", "group:wood", "group:wood"}, } }) minetest.register_craft({ - output = 'default:chest_locked', + output = "default:chest_locked", recipe = { - {'group:wood', 'group:wood', 'group:wood'}, - {'group:wood', 'default:steel_ingot', 'group:wood'}, - {'group:wood', 'group:wood', 'group:wood'}, + {"group:wood", "group:wood", "group:wood"}, + {"group:wood", "default:steel_ingot", "group:wood"}, + {"group:wood", "group:wood", "group:wood"}, } }) @@ -340,59 +340,59 @@ minetest.register_craft( { }) minetest.register_craft({ - output = 'default:furnace', + output = "default:furnace", recipe = { - {'group:stone', 'group:stone', 'group:stone'}, - {'group:stone', '', 'group:stone'}, - {'group:stone', 'group:stone', 'group:stone'}, + {"group:stone", "group:stone", "group:stone"}, + {"group:stone", "", "group:stone"}, + {"group:stone", "group:stone", "group:stone"}, } }) minetest.register_craft({ - output = 'default:coalblock', + output = "default:coalblock", recipe = { - {'default:coal_lump', 'default:coal_lump', 'default:coal_lump'}, - {'default:coal_lump', 'default:coal_lump', 'default:coal_lump'}, - {'default:coal_lump', 'default:coal_lump', 'default:coal_lump'}, + {"default:coal_lump", "default:coal_lump", "default:coal_lump"}, + {"default:coal_lump", "default:coal_lump", "default:coal_lump"}, + {"default:coal_lump", "default:coal_lump", "default:coal_lump"}, } }) minetest.register_craft({ - output = 'default:coal_lump 9', + output = "default:coal_lump 9", recipe = { - {'default:coalblock'}, + {"default:coalblock"}, } }) minetest.register_craft({ - output = 'default:steelblock', + output = "default:steelblock", recipe = { - {'default:steel_ingot', 'default:steel_ingot', 'default:steel_ingot'}, - {'default:steel_ingot', 'default:steel_ingot', 'default:steel_ingot'}, - {'default:steel_ingot', 'default:steel_ingot', 'default:steel_ingot'}, + {"default:steel_ingot", "default:steel_ingot", "default:steel_ingot"}, + {"default:steel_ingot", "default:steel_ingot", "default:steel_ingot"}, + {"default:steel_ingot", "default:steel_ingot", "default:steel_ingot"}, } }) minetest.register_craft({ - output = 'default:steel_ingot 9', + output = "default:steel_ingot 9", recipe = { - {'default:steelblock'}, + {"default:steelblock"}, } }) minetest.register_craft({ - output = 'default:copperblock', + output = "default:copperblock", recipe = { - {'default:copper_ingot', 'default:copper_ingot', 'default:copper_ingot'}, - {'default:copper_ingot', 'default:copper_ingot', 'default:copper_ingot'}, - {'default:copper_ingot', 'default:copper_ingot', 'default:copper_ingot'}, + {"default:copper_ingot", "default:copper_ingot", "default:copper_ingot"}, + {"default:copper_ingot", "default:copper_ingot", "default:copper_ingot"}, + {"default:copper_ingot", "default:copper_ingot", "default:copper_ingot"}, } }) minetest.register_craft({ - output = 'default:copper_ingot 9', + output = "default:copper_ingot 9", recipe = { - {'default:copperblock'}, + {"default:copperblock"}, } }) @@ -422,50 +422,50 @@ minetest.register_craft({ }) minetest.register_craft({ - output = 'default:bronzeblock', + output = "default:bronzeblock", recipe = { - {'default:bronze_ingot', 'default:bronze_ingot', 'default:bronze_ingot'}, - {'default:bronze_ingot', 'default:bronze_ingot', 'default:bronze_ingot'}, - {'default:bronze_ingot', 'default:bronze_ingot', 'default:bronze_ingot'}, + {"default:bronze_ingot", "default:bronze_ingot", "default:bronze_ingot"}, + {"default:bronze_ingot", "default:bronze_ingot", "default:bronze_ingot"}, + {"default:bronze_ingot", "default:bronze_ingot", "default:bronze_ingot"}, } }) minetest.register_craft({ - output = 'default:bronze_ingot 9', + output = "default:bronze_ingot 9", recipe = { - {'default:bronzeblock'}, + {"default:bronzeblock"}, } }) minetest.register_craft({ - output = 'default:goldblock', + output = "default:goldblock", recipe = { - {'default:gold_ingot', 'default:gold_ingot', 'default:gold_ingot'}, - {'default:gold_ingot', 'default:gold_ingot', 'default:gold_ingot'}, - {'default:gold_ingot', 'default:gold_ingot', 'default:gold_ingot'}, + {"default:gold_ingot", "default:gold_ingot", "default:gold_ingot"}, + {"default:gold_ingot", "default:gold_ingot", "default:gold_ingot"}, + {"default:gold_ingot", "default:gold_ingot", "default:gold_ingot"}, } }) minetest.register_craft({ - output = 'default:gold_ingot 9', + output = "default:gold_ingot 9", recipe = { - {'default:goldblock'}, + {"default:goldblock"}, } }) minetest.register_craft({ - output = 'default:diamondblock', + output = "default:diamondblock", recipe = { - {'default:diamond', 'default:diamond', 'default:diamond'}, - {'default:diamond', 'default:diamond', 'default:diamond'}, - {'default:diamond', 'default:diamond', 'default:diamond'}, + {"default:diamond", "default:diamond", "default:diamond"}, + {"default:diamond", "default:diamond", "default:diamond"}, + {"default:diamond", "default:diamond", "default:diamond"}, } }) minetest.register_craft({ - output = 'default:diamond 9', + output = "default:diamond 9", recipe = { - {'default:diamondblock'}, + {"default:diamondblock"}, } }) @@ -566,57 +566,57 @@ minetest.register_craft({ }) minetest.register_craft({ - output = 'default:clay', + output = "default:clay", recipe = { - {'default:clay_lump', 'default:clay_lump'}, - {'default:clay_lump', 'default:clay_lump'}, + {"default:clay_lump", "default:clay_lump"}, + {"default:clay_lump", "default:clay_lump"}, } }) minetest.register_craft({ - output = 'default:clay_lump 4', + output = "default:clay_lump 4", recipe = { - {'default:clay'}, + {"default:clay"}, } }) minetest.register_craft({ - output = 'default:brick', + output = "default:brick", recipe = { - {'default:clay_brick', 'default:clay_brick'}, - {'default:clay_brick', 'default:clay_brick'}, + {"default:clay_brick", "default:clay_brick"}, + {"default:clay_brick", "default:clay_brick"}, } }) minetest.register_craft({ - output = 'default:clay_brick 4', + output = "default:clay_brick 4", recipe = { - {'default:brick'}, + {"default:brick"}, } }) minetest.register_craft({ - output = 'default:paper', + output = "default:paper", recipe = { - {'default:papyrus', 'default:papyrus', 'default:papyrus'}, + {"default:papyrus", "default:papyrus", "default:papyrus"}, } }) minetest.register_craft({ - output = 'default:book', + output = "default:book", recipe = { - {'default:paper'}, - {'default:paper'}, - {'default:paper'}, + {"default:paper"}, + {"default:paper"}, + {"default:paper"}, } }) minetest.register_craft({ - output = 'default:bookshelf', + output = "default:bookshelf", recipe = { - {'group:wood', 'group:wood', 'group:wood'}, - {'default:book', 'default:book', 'default:book'}, - {'group:wood', 'group:wood', 'group:wood'}, + {"group:wood", "group:wood", "group:wood"}, + {"default:book", "default:book", "default:book"}, + {"group:wood", "group:wood", "group:wood"}, } }) @@ -630,34 +630,34 @@ minetest.register_craft({ }) minetest.register_craft({ - output = 'default:ladder_steel 15', + output = "default:ladder_steel 15", recipe = { - {'default:steel_ingot', '', 'default:steel_ingot'}, - {'default:steel_ingot', 'default:steel_ingot', 'default:steel_ingot'}, - {'default:steel_ingot', '', 'default:steel_ingot'}, + {"default:steel_ingot", "", "default:steel_ingot"}, + {"default:steel_ingot", "default:steel_ingot", "default:steel_ingot"}, + {"default:steel_ingot", "", "default:steel_ingot"}, } }) minetest.register_craft({ - output = 'default:mese', + output = "default:mese", recipe = { - {'default:mese_crystal', 'default:mese_crystal', 'default:mese_crystal'}, - {'default:mese_crystal', 'default:mese_crystal', 'default:mese_crystal'}, - {'default:mese_crystal', 'default:mese_crystal', 'default:mese_crystal'}, + {"default:mese_crystal", "default:mese_crystal", "default:mese_crystal"}, + {"default:mese_crystal", "default:mese_crystal", "default:mese_crystal"}, + {"default:mese_crystal", "default:mese_crystal", "default:mese_crystal"}, } }) minetest.register_craft({ - output = 'default:mese_crystal 9', + output = "default:mese_crystal 9", recipe = { - {'default:mese'}, + {"default:mese"}, } }) minetest.register_craft({ - output = 'default:mese_crystal_fragment 9', + output = "default:mese_crystal_fragment 9", recipe = { - {'default:mese_crystal'}, + {"default:mese_crystal"}, } }) @@ -671,10 +671,10 @@ minetest.register_craft({ }) minetest.register_craft({ - output = 'default:meselamp', + output = "default:meselamp", recipe = { - {'default:glass'}, - {'default:mese_crystal'}, + {"default:glass"}, + {"default:mese_crystal"}, } }) @@ -688,85 +688,85 @@ minetest.register_craft({ }) minetest.register_craft({ - output = 'default:obsidian_shard 9', + output = "default:obsidian_shard 9", recipe = { - {'default:obsidian'} + {"default:obsidian"} } }) minetest.register_craft({ - output = 'default:obsidian', + output = "default:obsidian", recipe = { - {'default:obsidian_shard', 'default:obsidian_shard', 'default:obsidian_shard'}, - {'default:obsidian_shard', 'default:obsidian_shard', 'default:obsidian_shard'}, - {'default:obsidian_shard', 'default:obsidian_shard', 'default:obsidian_shard'}, + {"default:obsidian_shard", "default:obsidian_shard", "default:obsidian_shard"}, + {"default:obsidian_shard", "default:obsidian_shard", "default:obsidian_shard"}, + {"default:obsidian_shard", "default:obsidian_shard", "default:obsidian_shard"}, } }) minetest.register_craft({ - output = 'default:obsidianbrick 4', + output = "default:obsidianbrick 4", recipe = { - {'default:obsidian', 'default:obsidian'}, - {'default:obsidian', 'default:obsidian'} + {"default:obsidian", "default:obsidian"}, + {"default:obsidian", "default:obsidian"} } }) minetest.register_craft({ - output = 'default:obsidian_block 9', + output = "default:obsidian_block 9", recipe = { - {'default:obsidian', 'default:obsidian', 'default:obsidian'}, - {'default:obsidian', 'default:obsidian', 'default:obsidian'}, - {'default:obsidian', 'default:obsidian', 'default:obsidian'}, + {"default:obsidian", "default:obsidian", "default:obsidian"}, + {"default:obsidian", "default:obsidian", "default:obsidian"}, + {"default:obsidian", "default:obsidian", "default:obsidian"}, } }) minetest.register_craft({ - output = 'default:stonebrick 4', + output = "default:stonebrick 4", recipe = { - {'default:stone', 'default:stone'}, - {'default:stone', 'default:stone'}, + {"default:stone", "default:stone"}, + {"default:stone", "default:stone"}, } }) minetest.register_craft({ - output = 'default:stone_block 9', + output = "default:stone_block 9", recipe = { - {'default:stone', 'default:stone', 'default:stone'}, - {'default:stone', 'default:stone', 'default:stone'}, - {'default:stone', 'default:stone', 'default:stone'}, + {"default:stone", "default:stone", "default:stone"}, + {"default:stone", "default:stone", "default:stone"}, + {"default:stone", "default:stone", "default:stone"}, } }) minetest.register_craft({ - output = 'default:desert_stonebrick 4', + output = "default:desert_stonebrick 4", recipe = { - {'default:desert_stone', 'default:desert_stone'}, - {'default:desert_stone', 'default:desert_stone'}, + {"default:desert_stone", "default:desert_stone"}, + {"default:desert_stone", "default:desert_stone"}, } }) minetest.register_craft({ - output = 'default:desert_stone_block 9', + output = "default:desert_stone_block 9", recipe = { - {'default:desert_stone', 'default:desert_stone', 'default:desert_stone'}, - {'default:desert_stone', 'default:desert_stone', 'default:desert_stone'}, - {'default:desert_stone', 'default:desert_stone', 'default:desert_stone'}, + {"default:desert_stone", "default:desert_stone", "default:desert_stone"}, + {"default:desert_stone", "default:desert_stone", "default:desert_stone"}, + {"default:desert_stone", "default:desert_stone", "default:desert_stone"}, } }) minetest.register_craft({ - output = 'default:snowblock', + output = "default:snowblock", recipe = { - {'default:snow', 'default:snow', 'default:snow'}, - {'default:snow', 'default:snow', 'default:snow'}, - {'default:snow', 'default:snow', 'default:snow'}, + {"default:snow", "default:snow", "default:snow"}, + {"default:snow", "default:snow", "default:snow"}, + {"default:snow", "default:snow", "default:snow"}, } }) minetest.register_craft({ - output = 'default:snow 9', + output = "default:snow 9", recipe = { - {'default:snowblock'}, + {"default:snowblock"}, } }) @@ -864,16 +864,16 @@ minetest.register_craft({ }) minetest.register_craft({ - type = 'cooking', - output = 'default:gold_ingot', - recipe = 'default:skeleton_key', + type = "cooking", + output = "default:gold_ingot", + recipe = "default:skeleton_key", cooktime = 5, }) minetest.register_craft({ - type = 'cooking', - output = 'default:gold_ingot', - recipe = 'default:key', + type = "cooking", + output = "default:gold_ingot", + recipe = "default:key", cooktime = 5, }) diff --git a/mods/default/craftitems.lua b/mods/default/craftitems.lua index 6a1b570..e2e92bf 100644 --- a/mods/default/craftitems.lua +++ b/mods/default/craftitems.lua @@ -1,13 +1,16 @@ -- mods/default/craftitems.lua +-- support for MT game translation. +local S = default.get_translator + minetest.register_craftitem("default:stick", { - description = "Stick", + description = S("Stick"), inventory_image = "default_stick.png", groups = {stick = 1, flammable = 2}, }) minetest.register_craftitem("default:paper", { - description = "Paper", + description = S("Paper"), inventory_image = "default_paper.png", groups = {flammable = 3}, }) @@ -49,23 +52,24 @@ local function book_on_use(itemstack, user) end local formspec + local esc = minetest.formspec_escape if owner == player_name then formspec = "size[8,8]" .. - "field[0.5,1;7.5,0;title;Title:;" .. - minetest.formspec_escape(title) .. "]" .. - "textarea[0.5,1.5;7.5,7;text;Contents:;" .. - minetest.formspec_escape(text) .. "]" .. - "button_exit[2.5,7.5;3,1;save;Save]" + "field[0.5,1;7.5,0;title;" .. esc(S("Title:")) .. ";" .. + esc(title) .. "]" .. + "textarea[0.5,1.5;7.5,7;text;" .. esc(S("Contents:")) .. ";" .. + esc(text) .. "]" .. + "button_exit[2.5,7.5;3,1;save;" .. esc(S("Save")) .. "]" else formspec = "size[8,8]" .. - "label[0.5,0.5;by " .. owner .. "]" .. + "label[0.5,0.5;" .. esc(S("by @1", owner)) .. "]" .. "tablecolumns[color;text]" .. "tableoptions[background=#00000000;highlight=#00000000;border=false]" .. - "table[0.4,0;7,0.5;title;#FFFF00," .. minetest.formspec_escape(title) .. "]" .. + "table[0.4,0;7,0.5;title;#FFFF00," .. esc(title) .. "]" .. "textarea[0.5,1.5;7.5,7;;" .. minetest.formspec_escape(string ~= "" and string or text) .. ";]" .. "button[2.4,7.6;0.8,0.8;book_prev;<]" .. - "label[3.2,7.7;Page " .. page .. " of " .. page_max .. "]" .. + "label[3.2,7.7;" .. esc(S("Page @1 of @2", page, page_max)) .. "]" .. "button[4.9,7.6;0.8,0.8;book_next;>]" end @@ -108,7 +112,7 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) if #short_title > short_title_size + 3 then short_title = short_title:sub(1, short_title_size) .. "..." end - data.description = "\""..short_title.."\" by "..data.owner + data.description = S("\"@1\" by @2", short_title, data.owner) data.text = fields.text:sub(1, max_text_size) data.text = data.text:gsub("\r\n", "\n"):gsub("\r", "\n") data.page = 1 @@ -155,14 +159,14 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) end) minetest.register_craftitem("default:book", { - description = "Book", + description = S("Book"), inventory_image = "default_book.png", groups = {book = 1, flammable = 3}, on_use = book_on_use, }) minetest.register_craftitem("default:book_written", { - description = "Book With Text", + description = S("Book with Text"), inventory_image = "default_book_written.png", groups = {book = 1, not_in_creative_inventory = 1, flammable = 3}, stack_max = 1, @@ -199,7 +203,7 @@ minetest.register_on_craft(function(itemstack, player, old_craft_grid, craft_inv end) minetest.register_craftitem("default:skeleton_key", { - description = "Skeleton Key", + description = S("Skeleton Key"), inventory_image = "default_key_skeleton.png", groups = {key = 1}, on_use = function(itemstack, user, pointed_thing) @@ -238,8 +242,8 @@ minetest.register_craftitem("default:skeleton_key", { local new_stack = ItemStack("default:key") local meta = new_stack:get_meta() meta:set_string("secret", secret) - meta:set_string("description", "Key to "..user:get_player_name().."'s " - ..minetest.registered_nodes[node.name].description) + meta:set_string("description", S("Key to @1's @2", user:get_player_name(), + minetest.registered_nodes[node.name].description)) if itemstack:get_count() == 0 then itemstack = new_stack @@ -255,93 +259,94 @@ minetest.register_craftitem("default:skeleton_key", { }) minetest.register_craftitem("default:coal_lump", { - description = "Coal Lump", + description = S("Coal Lump"), inventory_image = "default_coal_lump.png", groups = {coal = 1, flammable = 1} }) minetest.register_craftitem("default:iron_lump", { - description = "Iron Lump", - inventory_image = "default_iron_lump.png", + description = S("Iron Lump"), + inventory_image = "default_iron_lump.png" }) minetest.register_craftitem("default:copper_lump", { - description = "Copper Lump", - inventory_image = "default_copper_lump.png", + description = S("Copper Lump"), + inventory_image = "default_copper_lump.png" }) minetest.register_craftitem("default:tin_lump", { - description = "Tin Lump", - inventory_image = "default_tin_lump.png", + description = S("Tin Lump"), + inventory_image = "default_tin_lump.png" }) minetest.register_craftitem("default:mese_crystal", { - description = "Mese Crystal", + description = S("Mese Crystal"), inventory_image = "default_mese_crystal.png", }) minetest.register_craftitem("default:gold_lump", { - description = "Gold Lump", - inventory_image = "default_gold_lump.png", + description = S("Gold Lump"), + inventory_image = "default_gold_lump.png" }) minetest.register_craftitem("default:diamond", { - description = "Diamond", + description = S("Diamond"), inventory_image = "default_diamond.png", }) minetest.register_craftitem("default:clay_lump", { - description = "Clay Lump", + description = S("Clay Lump"), inventory_image = "default_clay_lump.png", }) minetest.register_craftitem("default:steel_ingot", { - description = "Steel Ingot", - inventory_image = "default_steel_ingot.png", + description = S("Steel Ingot"), + inventory_image = "default_steel_ingot.png" }) minetest.register_craftitem("default:copper_ingot", { - description = "Copper Ingot", - inventory_image = "default_copper_ingot.png", + description = S("Copper Ingot"), + inventory_image = "default_copper_ingot.png" }) minetest.register_craftitem("default:tin_ingot", { - description = "Tin Ingot", - inventory_image = "default_tin_ingot.png", + description = S("Tin Ingot"), + inventory_image = "default_tin_ingot.png" }) minetest.register_craftitem("default:bronze_ingot", { - description = "Bronze Ingot", - inventory_image = "default_bronze_ingot.png", + description = S("Bronze Ingot"), + inventory_image = "default_bronze_ingot.png" }) minetest.register_craftitem("default:gold_ingot", { - description = "Gold Ingot", + description = S("Gold Ingot"), inventory_image = "default_gold_ingot.png" }) minetest.register_craftitem("default:mese_crystal_fragment", { - description = "Mese Crystal Fragment", + description = S("Mese Crystal Fragment"), inventory_image = "default_mese_crystal_fragment.png", }) minetest.register_craftitem("default:clay_brick", { - description = "Clay Brick", + description = S("Clay Brick"), inventory_image = "default_clay_brick.png", }) minetest.register_craftitem("default:obsidian_shard", { - description = "Obsidian Shard", + description = S("Obsidian Shard"), inventory_image = "default_obsidian_shard.png", }) minetest.register_craftitem("default:flint", { - description = "Flint", + description = S("Flint"), inventory_image = "default_flint.png" }) minetest.register_craftitem("default:blueberries", { - description = "Blueberries", + description = S("Blueberries"), inventory_image = "default_blueberries.png", + groups = {food_blueberries = 1, food_berry = 1}, on_use = minetest.item_eat(2), }) diff --git a/mods/default/depends.txt b/mods/default/depends.txt deleted file mode 100644 index e1c3818..0000000 --- a/mods/default/depends.txt +++ /dev/null @@ -1 +0,0 @@ -player_api? diff --git a/mods/default/functions.lua b/mods/default/functions.lua index 1165c89..91f8bb3 100644 --- a/mods/default/functions.lua +++ b/mods/default/functions.lua @@ -273,6 +273,7 @@ end -- -- Fence registration helper -- +local fence_collision_extra = minetest.settings:get_bool("enable_fence_tall") and 3/8 or 0 function default.register_fence(name, def) minetest.register_craft({ @@ -291,17 +292,27 @@ function default.register_fence(name, def) drawtype = "nodebox", node_box = { type = "connected", - fixed = {{-1/8, -1/2, -1/8, 1/8, 1/2, 1/8}}, + fixed = {-1/8, -1/2, -1/8, 1/8, 1/2, 1/8}, -- connect_top = -- connect_bottom = - connect_front = {{-1/16,3/16,-1/2,1/16,5/16,-1/8}, - {-1/16,-5/16,-1/2,1/16,-3/16,-1/8}}, - connect_left = {{-1/2,3/16,-1/16,-1/8,5/16,1/16}, - {-1/2,-5/16,-1/16,-1/8,-3/16,1/16}}, - connect_back = {{-1/16,3/16,1/8,1/16,5/16,1/2}, - {-1/16,-5/16,1/8,1/16,-3/16,1/2}}, - connect_right = {{1/8,3/16,-1/16,1/2,5/16,1/16}, - {1/8,-5/16,-1/16,1/2,-3/16,1/16}}, + connect_front = {{-1/16, 3/16, -1/2, 1/16, 5/16, -1/8 }, + {-1/16, -5/16, -1/2, 1/16, -3/16, -1/8 }}, + connect_left = {{-1/2, 3/16, -1/16, -1/8, 5/16, 1/16}, + {-1/2, -5/16, -1/16, -1/8, -3/16, 1/16}}, + connect_back = {{-1/16, 3/16, 1/8, 1/16, 5/16, 1/2 }, + {-1/16, -5/16, 1/8, 1/16, -3/16, 1/2 }}, + connect_right = {{ 1/8, 3/16, -1/16, 1/2, 5/16, 1/16}, + { 1/8, -5/16, -1/16, 1/2, -3/16, 1/16}} + }, + collision_box = { + type = "connected", + fixed = {-1/8, -1/2, -1/8, 1/8, 1/2 + fence_collision_extra, 1/8}, + -- connect_top = + -- connect_bottom = + connect_front = {-1/8, -1/2, -1/2, 1/8, 1/2 + fence_collision_extra, -1/8}, + connect_left = {-1/2, -1/2, -1/8, -1/8, 1/2 + fence_collision_extra, 1/8}, + connect_back = {-1/8, -1/2, 1/8, 1/8, 1/2 + fence_collision_extra, 1/2}, + connect_right = { 1/8, -1/2, -1/8, 1/2, 1/2 + fence_collision_extra, 1/8} }, connects_to = {"group:fence", "group:wood", "group:tree", "group:wall"}, inventory_image = fence_texture, @@ -349,24 +360,28 @@ function default.register_fence_rail(name, def) drawtype = "nodebox", node_box = { type = "connected", - fixed = { - {-1/16, 3/16, -1/16, 1/16, 5/16, 1/16}, - {-1/16, -3/16, -1/16, 1/16, -5/16, 1/16} - }, + fixed = {{-1/16, 3/16, -1/16, 1/16, 5/16, 1/16}, + {-1/16, -3/16, -1/16, 1/16, -5/16, 1/16}}, -- connect_top = -- connect_bottom = - connect_front = { - {-1/16, 3/16, -1/2, 1/16, 5/16, -1/16}, - {-1/16, -5/16, -1/2, 1/16, -3/16, -1/16}}, - connect_left = { - {-1/2, 3/16, -1/16, -1/16, 5/16, 1/16}, - {-1/2, -5/16, -1/16, -1/16, -3/16, 1/16}}, - connect_back = { - {-1/16, 3/16, 1/16, 1/16, 5/16, 1/2}, - {-1/16, -5/16, 1/16, 1/16, -3/16, 1/2}}, - connect_right = { - {1/16, 3/16, -1/16, 1/2, 5/16, 1/16}, - {1/16, -5/16, -1/16, 1/2, -3/16, 1/16}}, + connect_front = {{-1/16, 3/16, -1/2, 1/16, 5/16, -1/16}, + {-1/16, -5/16, -1/2, 1/16, -3/16, -1/16}}, + connect_left = {{-1/2, 3/16, -1/16, -1/16, 5/16, 1/16}, + {-1/2, -5/16, -1/16, -1/16, -3/16, 1/16}}, + connect_back = {{-1/16, 3/16, 1/16, 1/16, 5/16, 1/2 }, + {-1/16, -5/16, 1/16, 1/16, -3/16, 1/2 }}, + connect_right = {{ 1/16, 3/16, -1/16, 1/2, 5/16, 1/16}, + { 1/16, -5/16, -1/16, 1/2, -3/16, 1/16}} + }, + collision_box = { + type = "connected", + fixed = {-1/8, -1/2, -1/8, 1/8, 1/2 + fence_collision_extra, 1/8}, + -- connect_top = + -- connect_bottom = + connect_front = {-1/8, -1/2, -1/2, 1/8, 1/2 + fence_collision_extra, -1/8}, + connect_left = {-1/2, -1/2, -1/8, -1/8, 1/2 + fence_collision_extra, 1/8}, + connect_back = {-1/8, -1/2, 1/8, 1/8, 1/2 + fence_collision_extra, 1/2}, + connect_right = { 1/8, -1/2, -1/8, 1/2, 1/2 + fence_collision_extra, 1/8} }, connects_to = {"group:fence", "group:wall"}, inventory_image = fence_rail_texture, @@ -399,7 +414,7 @@ end -- Prevent decay of placed leaves default.after_place_leaves = function(pos, placer, itemstack, pointed_thing) - if placer and placer:is_player() and not placer:get_player_control().sneak then + if placer and placer:is_player() then local node = minetest.get_node(pos) node.param2 = 1 minetest.set_node(pos, node) @@ -412,7 +427,7 @@ local function leafdecay_after_destruct(pos, oldnode, def) vector.add(pos, def.radius), def.leaves)) do local node = minetest.get_node(v) local timer = minetest.get_node_timer(v) - if node.param2 == 0 and not timer:is_started() then + if node.param2 ~= 1 and not timer:is_started() then timer:start(math.random(20, 120) / 10) end end @@ -477,7 +492,6 @@ minetest.register_abm({ neighbors = { "air", "group:grass", - "group:dry_grass", "default:snow", }, interval = 6, @@ -504,11 +518,8 @@ minetest.register_abm({ -- Snow check is cheapest, so comes first if name == "default:snow" then minetest.set_node(pos, {name = "default:dirt_with_snow"}) - -- Most likely case first elseif minetest.get_item_group(name, "grass") ~= 0 then minetest.set_node(pos, {name = "default:dirt_with_grass"}) - elseif minetest.get_item_group(name, "dry_grass") ~= 0 then - minetest.set_node(pos, {name = "default:dirt_with_dry_grass"}) end end }) @@ -520,7 +531,7 @@ minetest.register_abm({ minetest.register_abm({ label = "Grass covered", - nodenames = {"group:spreading_dirt_type"}, + nodenames = {"group:spreading_dirt_type", "default:dry_dirt_with_dry_grass"}, interval = 8, chance = 50, catch_up = false, @@ -531,7 +542,11 @@ minetest.register_abm({ if name ~= "ignore" and nodedef and not ((nodedef.sunlight_propagates or nodedef.paramtype == "light") and nodedef.liquidtype == "none") then - minetest.set_node(pos, {name = "default:dirt"}) + if node.name == "default:dry_dirt_with_dry_grass" then + minetest.set_node(pos, {name = "default:dry_dirt"}) + else + minetest.set_node(pos, {name = "default:dirt"}) + end end end }) @@ -541,22 +556,27 @@ minetest.register_abm({ -- Moss growth on cobble near water -- +local moss_correspondences = { + ["default:cobble"] = "default:mossycobble", + ["stairs:slab_cobble"] = "stairs:slab_mossycobble", + ["stairs:stair_cobble"] = "stairs:stair_mossycobble", + ["stairs:stair_inner_cobble"] = "stairs:stair_inner_mossycobble", + ["stairs:stair_outer_cobble"] = "stairs:stair_outer_mossycobble", + ["walls:cobble"] = "walls:mossycobble", +} minetest.register_abm({ label = "Moss growth", - nodenames = {"default:cobble", "stairs:slab_cobble", "stairs:stair_cobble", "walls:cobble"}, + nodenames = {"default:cobble", "stairs:slab_cobble", "stairs:stair_cobble", + "stairs:stair_inner_cobble", "stairs:stair_outer_cobble", + "walls:cobble"}, neighbors = {"group:water"}, interval = 16, chance = 200, catch_up = false, action = function(pos, node) - if node.name == "default:cobble" then - minetest.set_node(pos, {name = "default:mossycobble"}) - elseif node.name == "stairs:slab_cobble" then - minetest.set_node(pos, {name = "stairs:slab_mossycobble", param2 = node.param2}) - elseif node.name == "stairs:stair_cobble" then - minetest.set_node(pos, {name = "stairs:stair_mossycobble", param2 = node.param2}) - elseif node.name == "walls:cobble" then - minetest.set_node(pos, {name = "walls:mossycobble", param2 = node.param2}) + node.name = moss_correspondences[node.name] + if node.name then + minetest.set_node(pos, node) end end }) @@ -568,7 +588,7 @@ minetest.register_abm({ -- function default.can_interact_with_node(player, pos) - if player then + if player and player:is_player() then if minetest.check_player_privs(player, "protection_bypass") then return true end diff --git a/mods/default/furnace.lua b/mods/default/furnace.lua index a06f3b2..d133a3a 100644 --- a/mods/default/furnace.lua +++ b/mods/default/furnace.lua @@ -1,3 +1,7 @@ +-- default/furnace.lua + +-- support for MT game translation. +local S = default.get_translator -- -- Formspecs @@ -8,7 +12,7 @@ function default.get_furnace_active_formspec(fuel_percent, item_percent) "list[context;src;2.75,0.5;1,1;]".. "list[context;fuel;2.75,2.5;1,1;]".. "image[2.75,1.5;1,1;default_furnace_fire_bg.png^[lowpart:".. - (100-fuel_percent)..":default_furnace_fire_fg.png]".. + (fuel_percent)..":default_furnace_fire_fg.png]".. "image[3.75,1.5;1,1;gui_furnace_arrow_bg.png^[lowpart:".. (item_percent)..":gui_furnace_arrow_fg.png^[transformR270]".. "list[context;dst;4.75,0.96;2,2;]".. @@ -60,7 +64,7 @@ local function allow_metadata_inventory_put(pos, listname, index, stack, player) if listname == "fuel" then if minetest.get_craft_result({method="fuel", width=1, items={stack}}).time ~= 0 then if inv:is_empty("src") then - meta:set_string("infotext", "Furnace is empty") + meta:set_string("infotext", S("Furnace is empty")) end return stack:get_count() else @@ -98,7 +102,7 @@ end local function furnace_node_timer(pos, elapsed) -- - -- Inizialize metadata + -- Initialize metadata -- local meta = minetest.get_meta(pos) local fuel_time = meta:get_float("fuel_time") or 0 @@ -107,6 +111,7 @@ local function furnace_node_timer(pos, elapsed) local inv = meta:get_inventory() local srclist, fuellist + local dst_full = false local cookable, cooked local fuel @@ -146,6 +151,8 @@ local function furnace_node_timer(pos, elapsed) inv:set_stack("src", 1, aftercooked.items[1]) src_time = src_time - cooked.time update = true + else + dst_full = true end else -- Item could not be cooked: probably missing fuel @@ -166,6 +173,16 @@ local function furnace_node_timer(pos, elapsed) else -- Take fuel from fuel list inv:set_stack("fuel", 1, afterfuel.items[1]) + -- Put replacements in dst list or drop them on the furnace. + local replacements = fuel.replacements + if replacements[1] then + local leftover = inv:add_item("dst", replacements[1]) + if not leftover:is_empty() then + local above = vector.new(pos.x, pos.y + 1, pos.z) + local drop_pos = minetest.find_node_near(above, 1, {"air"}) or above + minetest.item_drop(replacements[1], nil, drop_pos) + end + end update = true fuel_totaltime = fuel.time + (fuel_totaltime - fuel_time) end @@ -183,7 +200,7 @@ local function furnace_node_timer(pos, elapsed) if fuel and fuel_totaltime > fuel.time then fuel_totaltime = fuel.time end - if srclist[1]:is_empty() then + if srclist and srclist[1]:is_empty() then src_time = 0 end @@ -195,34 +212,34 @@ local function furnace_node_timer(pos, elapsed) local item_percent = 0 if cookable then item_percent = math.floor(src_time / cooked.time * 100) - if item_percent > 100 then - item_state = "100% (output full)" + if dst_full then + item_state = S("100% (output full)") else - item_state = item_percent .. "%" + item_state = S("@1%", item_percent) end else - if srclist[1]:is_empty() then - item_state = "Empty" + if srclist and not srclist[1]:is_empty() then + item_state = S("Not cookable") else - item_state = "Not cookable" + item_state = S("Empty") end end - local fuel_state = "Empty" - local active = "inactive" + local fuel_state = S("Empty") + local active = false local result = false if fuel_totaltime ~= 0 then - active = "active" - local fuel_percent = math.floor(fuel_time / fuel_totaltime * 100) - fuel_state = fuel_percent .. "%" + active = true + local fuel_percent = 100 - math.floor(fuel_time / fuel_totaltime * 100) + fuel_state = S("@1%", fuel_percent) formspec = default.get_furnace_active_formspec(fuel_percent, item_percent) swap_node(pos, "default:furnace_active") -- make sure timer restarts automatically result = true else - if not fuellist[1]:is_empty() then - fuel_state = "0%" + if fuellist and not fuellist[1]:is_empty() then + fuel_state = S("@1%", 0) end formspec = default.get_furnace_inactive_formspec() swap_node(pos, "default:furnace") @@ -230,8 +247,14 @@ local function furnace_node_timer(pos, elapsed) minetest.get_node_timer(pos):stop() end - local infotext = "Furnace " .. active .. "\n(Item: " .. item_state .. - "; Fuel: " .. fuel_state .. ")" + + local infotext + if active then + infotext = S("Furnace active") + else + infotext = S("Furnace inactive") + end + infotext = infotext .. "\n" .. S("(Item: @1; Fuel: @2)", item_state, fuel_state) -- -- Set meta values @@ -250,7 +273,7 @@ end -- minetest.register_node("default:furnace", { - description = "Furnace", + description = S("Furnace"), tiles = { "default_furnace_top.png", "default_furnace_bottom.png", "default_furnace_side.png", "default_furnace_side.png", @@ -268,11 +291,11 @@ minetest.register_node("default:furnace", { on_construct = function(pos) local meta = minetest.get_meta(pos) - meta:set_string("formspec", default.get_furnace_inactive_formspec()) local inv = meta:get_inventory() inv:set_size('src', 1) inv:set_size('fuel', 1) inv:set_size('dst', 4) + furnace_node_timer(pos, 0) end, on_metadata_inventory_move = function(pos) @@ -298,7 +321,7 @@ minetest.register_node("default:furnace", { }) minetest.register_node("default:furnace_active", { - description = "Furnace", + description = S("Furnace"), tiles = { "default_furnace_top.png", "default_furnace_bottom.png", "default_furnace_side.png", "default_furnace_side.png", diff --git a/mods/default/init.lua b/mods/default/init.lua index b89fd0e..a487383 100644 --- a/mods/default/init.lua +++ b/mods/default/init.lua @@ -3,16 +3,21 @@ -- The API documentation in here was moved into game_api.txt +-- Load support for MT game translation. +local S = minetest.get_translator("default") + -- Definitions made by this mod that other mods can use too default = {} default.LIGHT_MAX = 14 +default.get_translator = S -- GUI related stuff minetest.register_on_joinplayer(function(player) player:set_formspec_prepend([[ bgcolor[#080808BB;true] background[5,5;1,1;gui_formbg.png;true] + background9[5,5;1,1;gui_formbg.png;true;10] listcolors[#00000069;#5A5A5A;#141318;#30434C;#FFF] ]]) end) diff --git a/mods/default/legacy.lua b/mods/default/legacy.lua index 935d857..a2d812d 100644 --- a/mods/default/legacy.lua +++ b/mods/default/legacy.lua @@ -45,5 +45,5 @@ default.register_chest = default.chest.register_chest function default.intersects_protection(minp, maxp, player_name, interval) minetest.log("warning", "default.intersects_protection() is " .. "deprecated, use minetest.is_area_protected() instead.") - minetest.is_area_protected(minp, maxp, player_name, interval) + return minetest.is_area_protected(minp, maxp, player_name, interval) end diff --git a/mods/default/locale/default.de.tr b/mods/default/locale/default.de.tr new file mode 100644 index 0000000..c842b85 --- /dev/null +++ b/mods/default/locale/default.de.tr @@ -0,0 +1,211 @@ +# textdomain: default +Locked Chest=Abgeschlossene Truhe +Locked Chest (owned by @1)=Abgeschlossene Truhe (Eigentum von @1) +You do not own this chest.=Ihnen gehört diese Truhe nicht. +a locked chest=eine abgeschlossene Truhe +Chest=Truhe +Stick=Stock +Paper=Papier +"@1" by @2=„@1“ von @2 +Book=Buch +Book with Text=Buch mit Text +Skeleton Key=Skelettschlüssel +Key to @1's @2=Schlüssel für @2 von @1 +Coal Lump=Kohleklumpen +Iron Lump=Eisenklumpen +Copper Lump=Kupferklumpen +Tin Lump=Zinnklumpen +Mese Crystal=Mesekristall +Gold Lump=Goldklumpen +Diamond=Diamant +Clay Lump=Tonklumpen +Steel Ingot=Stahlbarren +Copper Ingot=Kupferbarren +Tin Ingot=Zinnbarren +Bronze Ingot=Bronzebarren +Gold Ingot=Goldbarren +Mese Crystal Fragment=Mesekristallfragment +Clay Brick=Tonziegel +Obsidian Shard=Obsidianscherbe +Flint=Feuerstein +Blueberries=Blaubeeren +Furnace is empty=Ofen ist leer +100% (output full)=100% (Ausgabe voll) +@1%=@1% +Empty=Leer +Not cookable=Nicht kochbar +Furnace active=Ofen aktiv +Furnace inactive=Ofen inaktiv +(Item: @1; Fuel: @2)=(Gegenstand: @1; Brennstoff: @2) +Furnace=Ofen +Stone=Stein +Cobblestone=Kopfsteinpflaster +Stone Brick=Steinziegel +Stone Block=Steinblock +Mossy Cobblestone=Mosiges Kopfsteinpflaster +Desert Stone=Wüstenstein +Desert Cobblestone=Wüstenkopfsteinpflaster +Desert Stone Brick=Wüstensteinziegel +Desert Stone Block=Wüstensteinblock +Sandstone=Sandstein +Sandstone Brick=Sandsteinziegel +Sandstone Block=Sandsteinblock +Desert Sandstone=Wüstensandstein +Desert Sandstone Brick=Wüstensandsteinziegel +Desert Sandstone Block=Wüstensandsteinblock +Silver Sandstone=Silbersandstein +Silver Sandstone Brick=Silbersandsteinziegel +Silver Sandstone Block=Silbersandsteinblock +Obsidian=Obsidian +Obsidian Brick=Obsidianziegel +Obsidian Block=Obsidianblock +Dirt=Erde +Dirt with Grass=Erde mit Gras +Dirt with Grass and Footsteps=Erde mit Gras und Fußstapfen +Dirt with Dry Grass=Erde mit trockenem Gras +Dirt with Snow=Erde mit Schnee +Dirt with Rainforest Litter=Erde mit Regenwaldboden +Dirt with Coniferous Litter=Erde mit Nadelwaldboden +Dry Dirt=Trockene Erde +Dry Dirt with Dry Grass=Trockene Erde mit trockenem Gras +Permafrost=Permafrost +Permafrost with Stones=Permafrost mit Steinen +Permafrost with Moss=Permafrost mit Moos +Sand=Sand +Desert Sand=Wüstensand +Silver Sand=Silbersand +Gravel=Kies +Clay=Ton +Snow=Schnee +Snow Block=Schneeblock +Ice=Eis +Cave Ice=Höhleneis +Apple Tree=Apfelbaum +Apple Wood Planks=Apfelbaumplanken +Apple Tree Sapling=Apfelbaumsetzling +Apple Tree Leaves=Apfelbaumblätter +Apple=Apfel +Apple Marker=Apfelmarkierung +Jungle Tree=Dschungelbaum +Jungle Wood Planks=Dschungelholzplanken +Jungle Tree Leaves=Dschungelbaumblätter +Jungle Tree Sapling=Dschungelbaumsetzling +Emergent Jungle Tree Sapling=Hervorstehender Dschungelbaumsetzling +Pine Tree=Kiefernbaum +Pine Wood Planks=Kiefernholzplanken +Pine Needles=Kiefernnadeln +Pine Tree Sapling=Kiefernbaumsetzling +Acacia Tree=Akazienbaum +Acacia Wood Planks=Akazienholzplanken +Acacia Tree Leaves=Akazienbaumblätter +Acacia Tree Sapling=Akazienbaumsetzling +Aspen Tree=Espenbaum +Aspen Wood Planks=Espenholzplanken +Aspen Tree Leaves=Espenbaumblätter +Aspen Tree Sapling=Esepenbaumsetzling +Coal Ore=Kohleerz +Coal Block=Kohleblock +Iron Ore=Eisenerz +Steel Block=Stahlblock +Copper Ore=Kupfererz +Copper Block=Kupferblock +Tin Ore=Zinnerz +Tin Block=Zinnblock +Bronze Block=Bronzeblock +Mese Ore=Meseerz +Mese Block=Meseblock +Gold Ore=Golderz +Gold Block=Goldblock +Diamond Ore=Diamanterz +Diamond Block=Diamantblock +Cactus=Kaktus +Large Cactus Seedling=Großer Kaktussämling +Papyrus=Papyrus +Dry Shrub=Trockener Busch +Jungle Grass=Dschungelgras +Grass=Gras +Dry Grass=Trockenes Gras +Fern=Farn +Marram Grass=Dünengras +Bush Stem=Buschstamm +Bush Leaves=Buschblätter +Bush Sapling=Buschsetzling +Blueberry Bush Leaves with Berries=Blaubeerbuschblätter mit Beeren +Blueberry Bush Leaves=Blaubeerbuschblätter +Blueberry Bush Sapling=Blaubeerbuschsetzling +Acacia Bush Stem=Akazienbuschstamm +Acacia Bush Leaves=Akazienbuschblätter +Acacia Bush Sapling=Akazienbuschsetzling +Pine Bush Stem=Kiefernbuschstamm +Pine Bush Needles=Kiefernbuschnadeln +Pine Bush Sapling=Kiefernbuschsetzling +Kelp=Seetang +Green Coral=Grüne Koralle +Pink Coral=Rosa Koralle +Cyan Coral=Türkise Koralle +Brown Coral=Braune Koralle +Orange Coral=Orange Koralle +Coral Skeleton=Korallenskelett +Water Source=Wasserquelle +Flowing Water=Fließendes Wasser +River Water Source=Flusswasserquelle +Flowing River Water=Fließendes Flusswasser +Lava Source=Lavaquelle +Flowing Lava=Fließende Lava +Empty Bookshelf=Leeres Bücherregal +Bookshelf (@1 written, @2 empty books)=Bücherregal (@1 beschriebene, @2 leere Bücher) +Bookshelf=Bücherregal +Text too long=Text zu lang +Wooden Sign=Holzschild +Steel Sign=Stahlschild +Wooden Ladder=Holzleiter +Steel Ladder=Stahlleiter +Apple Wood Fence=Apfelholzzaun +Acacia Wood Fence=Akazienholzzaun +Jungle Wood Fence=Dschungelholzzaun +Pine Wood Fence=Kiefernholzzaun +Aspen Wood Fence=Espenholzzaun +Apple Wood Fence Rail=Apfelholzzaungeländer +Acacia Wood Fence Rail=Akazienholzzaungeländer +Jungle Wood Fence Rail=Dschungelholzzaungeländer +Pine Wood Fence Rail=Kiefernholzzaungeländer +Aspen Wood Fence Rail=Espenholzzaungeländer +Glass=Glas +Obsidian Glass=Obsidianglas +Brick Block=Ziegelblock +Mese Lamp=Meselampe +Mese Post Light=Mesestandlampe +Cloud=Wolke +Wooden Pickaxe=Holzspitzhacke +Stone Pickaxe=Steinspitzhacke +Bronze Pickaxe=Bronzespitzhacke +Steel Pickaxe=Stahlspitzhacke +Mese Pickaxe=Mesespitzhacke +Diamond Pickaxe=Diamantspitzhacke +Wooden Shovel=Holzschaufel +Stone Shovel=Steinschaufel +Bronze Shovel=Bronzeschaufel +Steel Shovel=Stahlschaufel +Mese Shovel=Meseschaufel +Diamond Shovel=Diamantschaufel +Wooden Axe=Holzaxt +Stone Axe=Steinaxt +Bronze Axe=Bronzeaxt +Steel Axe=Stahlaxt +Mese Axe=Meseaxt +Diamond Axe=Diamantaxt +Wooden Sword=Holzschwert +Stone Sword=Steinschwert +Bronze Sword=Bronzeschwert +Steel Sword=Stahlschwert +Mese Sword=Meseschwert +Diamond Sword=Diamantschwert +Key=Schlüssel +Torch=Fackel +@1 will intersect protection on growth.=@1 wird bei Wachstum mit geschützter Zone überlappen. +Title:=Titel: +Contents:=Inhalt: +Save=Speichern +by @1=von @1 +Page @1 of @2=Seite @1 von @2 +"@1"=„@1“ diff --git a/mods/default/locale/default.es.tr b/mods/default/locale/default.es.tr new file mode 100644 index 0000000..e55c133 --- /dev/null +++ b/mods/default/locale/default.es.tr @@ -0,0 +1,211 @@ +# textdomain: default +Locked Chest=Cofre cerrado +Locked Chest (owned by @1)=Cofre cerrado (propiedad de @1) +You do not own this chest.=Este cofre no te pertenece. +a locked chest=un cofre cerrado +Chest=Cofre +Stick=Palo +Paper=Papel +"@1" by @2="@1" por @2 +Book=Libro +Book with Text=Libro escrito +Skeleton Key=Llave esqueleto +Key to @1's @2=Llave para @2 de @1 +Coal Lump=Fragmento de carbón +Iron Lump=Pepita de hierro +Copper Lump=Pepita de cobre +Tin Lump=Pepita de estaño +Mese Crystal=Cristal de mese +Gold Lump=Pepita de oro +Diamond=Diamante +Clay Lump=Fragmento de arcilla +Steel Ingot=Lingote de acero +Copper Ingot=Lingote de cobre +Tin Ingot=Lingote de estaño +Bronze Ingot=Lingote de bronce +Gold Ingot=Lingote de oro +Mese Crystal Fragment=Fragmento de cristal de mese +Clay Brick=Ladrillo de arcilla +Obsidian Shard=Esquirla de obsidiana +Flint=Pedernal +Blueberries=Arándanos +Furnace is empty=El horno está vacío +100% (output full)=100% (salida completa) +@1%=@1% +Empty=Vacío +Not cookable=No se puede cocinar +Furnace active=Horno activado +Furnace inactive=Horno desactivado +(Item: @1; Fuel: @2)=(Objeto: @1; Combustible: @2) +Furnace=Horno +Stone=Piedra +Cobblestone=Adoquín +Stone Brick=Ladrillo de piedra +Stone Block=Bloque de piedra +Mossy Cobblestone=Adoquín musgoso +Desert Stone=Piedra desértica +Desert Cobblestone=Adoquín desértico +Desert Stone Brick=Ladrillo de piedra desértica +Desert Stone Block=Bloque de piedra desértica +Sandstone=Piedra arenisca +Sandstone Brick=Ladrillo de arenisca +Sandstone Block=Bloque de arenisca +Desert Sandstone=Piedra arenisca desértica +Desert Sandstone Brick=Ladrillo de arenisca desértica +Desert Sandstone Block=Bloque de arenisca deśertica +Silver Sandstone=Piedra arenisca plateada +Silver Sandstone Brick=Ladrillo de arenisca plateada +Silver Sandstone Block=Bloque de arenisca plateada +Obsidian=Obsidiana +Obsidian Brick=Ladrillo de obsidiana +Obsidian Block=Bloque de obsidiana +Dirt=Tierra +Dirt with Grass=Tierra con pasto +Dirt with Grass and Footsteps=Tierra con pasto y pisadas +Dirt with Dry Grass=Tierra con pasto seco +Dirt with Snow=Tierra con nieve +Dirt with Rainforest Litter=Tierra con hojarasca de selva tropical +Dirt with Coniferous Litter=Tierra con hojarasca de coníferas +Dry Dirt=Tierra Seca +Dry Dirt with Dry Grass=Tierra seca con pasto seco +Permafrost=Permafrost +Permafrost with Stones=Permafrost pedregoso +Permafrost with Moss=Permafrost musgoso +Sand=Arena +Desert Sand=Arena desértica +Silver Sand=Arena plateada +Gravel=Gravilla +Clay=Arcilla +Snow=Nieve +Snow Block=Bloque de nieve +Ice=Hielo +Cave Ice=Hielo de cueva +Apple Tree=Madera de manzano +Apple Wood Planks=Tablas de manzano +Apple Tree Sapling=Retoño de manzano +Apple Tree Leaves=Hojas de manzano +Apple=Manzana +Apple Marker=Marcador de manzano +Jungle Tree=Madera de árbol tropical +Jungle Wood Planks=Tablas de madera tropical +Jungle Tree Leaves=Hojas de árbol tropical +Jungle Tree Sapling=Retoño de árbol tropical +Emergent Jungle Tree Sapling=Retoño de árbol tropical +Pine Tree=Madera de pino +Pine Wood Planks=Tablas de pino +Pine Needles=Agujas de pino +Pine Tree Sapling=Retoño de pino +Acacia Tree=Madera de acacia +Acacia Wood Planks=Tablas de acacia +Acacia Tree Leaves=Hojas de acacia +Acacia Tree Sapling=Retoño de acacia +Aspen Tree=Madera de álamo +Aspen Wood Planks=Tablas de álamo +Aspen Tree Leaves=Hojas de álamo +Aspen Tree Sapling=Retoño de álamo +Coal Ore=Mineral de carbón +Coal Block=Bloque de carbón +Iron Ore=Mineral de hierro +Steel Block=Bloque de acero +Copper Ore=Mineral de cobre +Copper Block=Bloque de cobre +Tin Ore=Mineral de estaño +Tin Block=Bloque de estaño +Bronze Block=Bloque de bronce +Mese Ore=Mineral de mese +Mese Block=Bloque de mese +Gold Ore=Mineral de oro +Gold Block=Bloque de oro +Diamond Ore=Mineral de diamante +Diamond Block=Bloque de diamante +Cactus=Cáctus +Large Cactus Seedling=Vástago grande de cactus +Papyrus=Papiro +Dry Shrub=Arbusto seco +Jungle Grass=Pasto de jungla +Grass=Pasto +Dry Grass=Pasto seco +Fern=Helecho +Marram Grass=Carrizo +Bush Stem=Tallo de arbusto +Bush Leaves=Hojas de arbusto +Bush Sapling=Retoño de arbusto +Blueberry Bush Leaves with Berries=Hojas de arbusto de arándano con bayas +Blueberry Bush Leaves=Hojas de arbusto de arándano +Blueberry Bush Sapling=Retoño de arbusto de arándano +Acacia Bush Stem=Tallo de arbusto de acacia +Acacia Bush Leaves=Hojas de arbusto de acacia +Acacia Bush Sapling=Retoño de arbusto de acacia +Pine Bush Stem=Tallo de arbusto de pino +Pine Bush Needles=Agujas de arbusto de pino +Pine Bush Sapling=Retoño de arbusto de pino +Kelp=Alga marina +Green Coral=Coral verde +Pink Coral=Coral rosa +Cyan Coral=Coral cián +Brown Coral=Coral café +Orange Coral=Coral naranja +Coral Skeleton=Esqueleto de coral +Water Source=Fuente de agua +Flowing Water=Fluído de agua +River Water Source=Fuente de agua de río +Flowing River Water=Fluído de agua de río +Lava Source=Fuente de lava +Flowing Lava=Fluído de lava +Empty Bookshelf=Librería vacía +Bookshelf (@1 written, @2 empty books)=Librería(@1 escritos, @2 libros en blanco) +Bookshelf=Librería +Text too long=Texto demasiado largo +Wooden Sign=Cartel de madera +Steel Sign=Cartel de acero +Wooden Ladder=Escalera de madera +Steel Ladder=Escalera de acero +Apple Wood Fence=Cerca de manzano +Acacia Wood Fence=Cerca de acacia +Jungle Wood Fence=Cerca de madera tropical +Pine Wood Fence=Cerca de pino +Aspen Wood Fence=Cerca de álamo +Apple Wood Fence Rail=Listones de manzano para cerca +Acacia Wood Fence Rail=Listones de acacia para cerca +Jungle Wood Fence Rail=Listones de madera tropical para cerca +Pine Wood Fence Rail=Listones de pino para cerca +Aspen Wood Fence Rail=Listones de álamo para cerca +Glass=Vidrio +Obsidian Glass=Vidrio de obsidiana +Brick Block=Bloque de ladrillo +Mese Lamp=Lámpara de mese +Mese Post Light=Poste de luz de mese +Cloud=Nube +Wooden Pickaxe=Pico de madera +Stone Pickaxe=Pico de piedra +Bronze Pickaxe=Pico de bronce +Steel Pickaxe=Pico de acero +Mese Pickaxe=Pico de mese +Diamond Pickaxe=Pico de diamante +Wooden Shovel=Pala de madera +Stone Shovel=Pala de piedra +Bronze Shovel=Pala de bronce +Steel Shovel=Pala de acero +Mese Shovel=Pala de mese +Diamond Shovel=Pala de diamante +Wooden Axe=Hacha de madera +Stone Axe=Hacha de piedra +Bronze Axe=Hacha de bronce +Steel Axe=Hacha de acero +Mese Axe=Hacha de mese +Diamond Axe=Hacha de diamante +Wooden Sword=Espada de madera +Stone Sword=Espada de piedra +Bronze Sword=Espada de bronce +Steel Sword=Espada de acero +Mese Sword=Espada de mese +Diamond Sword=Espada de diamante +Key=Llave +Torch=Antorcha +@1 will intersect protection on growth.=@1 intersectará con protección cuando crezca. +Title:=Título: +Contents:=Contenidos: +Save=Guardar +by @1=por @1 +Page @1 of @2=Página @1 de @2 +"@1"="@1" diff --git a/mods/default/locale/default.fr.tr b/mods/default/locale/default.fr.tr new file mode 100644 index 0000000..2214e37 --- /dev/null +++ b/mods/default/locale/default.fr.tr @@ -0,0 +1,211 @@ +# textdomain: default +Locked Chest=Coffre verrouillé +Locked Chest (owned by @1)=Coffre verrouillé (possédé par @1) +You do not own this chest.=Ce coffre ne vous appartient pas. +a locked chest=un coffre verrouillé +Chest=Coffre +Stick=Baton +Paper=Papier +"@1" by @2=« @1 » de @2 +Book=Livre +Book with Text=Livre avec du texte +Skeleton Key=Squelette +Key to @1's @2=Clé pour @2 de @1 +Coal Lump=Morceau de charbon +Iron Lump=Morceau de fer +Copper Lump=Morceau de cuivre +Tin Lump=Morceau d'étain +Mese Crystal=Cristal de Mese +Gold Lump=Morceau d'or +Diamond=Diamant +Clay Lump=Morceau d'argile +Steel Ingot=Lingot d'acier +Copper Ingot=Lingot de cuivre +Tin Ingot=Lingot d'étain +Bronze Ingot=Lingot de bronze +Gold Ingot=Lingot d'or +Mese Crystal Fragment=Fragment de cristal de Mese +Clay Brick=Brique d'argile +Obsidian Shard=Tesson d'obsidienne +Flint=Silex +Blueberries=Myrtille +Furnace is empty=Le four est vide +100% (output full)=100% (Sortie pleine) +@1%=@1% +Empty=Vide +Not cookable=Ne se cuit pas +Furnace active=Four actif +Furnace inactive=Four inactif +(Item: @1; Fuel: @2)=(Article: @1; Carburant: @2) +Furnace=Four +Stone=Pierre +Cobblestone=Pavé +Stone Brick=Brique de pierre +Stone Block=Bloc de pierre +Mossy Cobblestone=Pavé moussu +Desert Stone=Pierre du désert +Desert Cobblestone=Pavé de pierre du désert +Desert Stone Brick=Brique de pierre du désert +Desert Stone Block=Bloc de pierre du désert +Sandstone=Grès +Sandstone Brick=Brique de grès +Sandstone Block=Bloc de grès +Desert Sandstone=Grès du désert +Desert Sandstone Brick=Brique de grès du désert +Desert Sandstone Block=Bloc de grès du désert +Silver Sandstone=Grès argenté +Silver Sandstone Brick=Brique de grès argenté +Silver Sandstone Block=Bloc de grès argenté +Obsidian=Obsidienne +Obsidian Brick=Brique d'obsidienne +Obsidian Block=Block d'obsidienne +Dirt=Terre +Dirt with Grass=Terre avec de l'herbe +Dirt with Grass and Footsteps=Terre avec de l'herbe et des traces de pas +Dirt with Dry Grass=Terre avec de l'herbe sèche +Dirt with Snow=Terre avec de la neige +Dirt with Rainforest Litter=Terre avec sol de forêt humide +Dirt with Coniferous Litter=Terre avec sol de forêt de conifère +Dry Dirt=Terre sèche +Dry Dirt with Dry Grass=Terre sèche avec de l'herbe sèche +Permafrost=Pergélisol +Permafrost with Stones=Pergélisol avec de la pierre +Permafrost with Moss=Pergélisol avec de la mousse +Sand=Sable +Desert Sand=Sable du désert +Silver Sand=Sable argenté +Gravel=Gravier +Clay=Argile +Snow=Neige +Snow Block=Bloc de neige +Ice=Glace +Cave Ice=Glace de grotte +Apple Tree=Pommier +Apple Wood Planks=Planche de pommier +Apple Tree Sapling=Pousse de pommier +Apple Tree Leaves=Feuilles de pommier +Apple=Pomme +Apple Marker=Marqueur de pomme +Jungle Tree=Arbre de la jungle +Jungle Wood Planks=Planche d'arbre de la jungle +Jungle Tree Leaves=Feuilles d'arbre de la jungle +Jungle Tree Sapling=Pousse d'arbre de la jungle +Emergent Jungle Tree Sapling=Pousse d'arbre de la jungle émergent +Pine Tree=Pin +Pine Wood Planks=Planche de pin +Pine Needles=Aiguilles de pin +Pine Tree Sapling=Pousse de pin +Acacia Tree=Acacia +Acacia Wood Planks=Planche d'acacia +Acacia Tree Leaves=Feuilles d'acacia +Acacia Tree Sapling=Pousse d'acacia +Aspen Tree=Tremble +Aspen Wood Planks=Planche de tremble +Aspen Tree Leaves=Feuilles de tremble +Aspen Tree Sapling=Pousse de tremble +Coal Ore=Minerai de charbon +Coal Block=Bloc de charbon +Iron Ore=Bloc de fer +Steel Block=Bloc d'acier +Copper Ore=Minerai de cuivre +Copper Block=Bloc de cuivre +Tin Ore=Minerai d'étain +Tin Block=Bloc d'étain +Bronze Block=Bloc de bronze +Mese Ore=Minerai de Mese +Mese Block=Bloc de Mese +Gold Ore=Minerai d'or +Gold Block=Bloc d'or +Diamond Ore=Minerai de diamant +Diamond Block=Bloc de diamant +Cactus=Cactus +Large Cactus Seedling=Grand plan de cactus +Papyrus=Papyrus +Dry Shrub=Arbuste sec +Jungle Grass=Herbe de la jungle +Grass=Herbe +Dry Grass=Herbe sèche +Fern=Fougère +Marram Grass=Ammophile +Bush Stem=Tige de buisson +Bush Leaves=Feuilles de buisson +Bush Sapling=Pousse de buisson +Blueberry Bush Leaves with Berries=Buisson de myrtille avec des myrtilles +Blueberry Bush Leaves=Feuilles de buisson à myrtilles +Blueberry Bush Sapling=Pousse de buisson à myrtilles +Acacia Bush Stem=Tige de buisson d'acacia +Acacia Bush Leaves=Feuilles de buisson d'acacia +Acacia Bush Sapling=Pousses de buisson d'acacia +Pine Bush Stem=Tige de buisson de pin +Pine Bush Needles=Aiguilles de buisson de pin +Pine Bush Sapling=Pousse de buisson de pin +Kelp=Varech +Green Coral=Corail vert +Pink Coral=Corail rose +Cyan Coral=Corail cyan +Brown Coral=Corail marron +Orange Coral=Corail orange +Coral Skeleton=Squelette de corail +Water Source=Source d'eau +Flowing Water=Ecoulement d'eau +River Water Source=Source d'eau de rivière +Flowing River Water=Ecoulement d'eau de rivière +Lava Source=Source de lave +Flowing Lava=Ecoulement de lave +Empty Bookshelf=Bibliothèque vide +Bookshelf (@1 written, @2 empty books)=Bibliothèque (@1 écrits, @2 livres vides) +Bookshelf=Bibliothèque +Text too long=Texte trop longue +Wooden Sign=Panneau en bois +Steel Sign=Panneau en acier +Wooden Ladder=Echelle en bois +Steel Ladder=Echelle en acier +Apple Wood Fence=Barrière de bois de pommier +Acacia Wood Fence=Barrière de bois d'acacia +Jungle Wood Fence=Barrière de bois de la jungle +Pine Wood Fence=Barrière de bois de pin +Aspen Wood Fence=Barrière de bois de tremble +Apple Wood Fence Rail=Clôture de bois de pommier +Acacia Wood Fence Rail=Clôture de bois d'acacia +Jungle Wood Fence Rail=Clôture de bois de la jungle +Pine Wood Fence Rail=Clôture de bois de pin +Aspen Wood Fence Rail=Clôture de bois de tremble +Glass=Verre +Obsidian Glass=Verre d'obsidienne +Brick Block=Bloc de brique +Mese Lamp=Lampe de Mese +Mese Post Light=Réverbère de Mese +Cloud=Nuage +Wooden Pickaxe=Pioche en bois +Stone Pickaxe=Pioche en pierre +Bronze Pickaxe=Pioche en bronze +Steel Pickaxe=Pioche en acier +Mese Pickaxe=Pioche de Mese +Diamond Pickaxe=Pioche en diamant +Wooden Shovel=Pelle en bois +Stone Shovel=Pelle en pierre +Bronze Shovel=Pelle en bronze +Steel Shovel=Pelle en acier +Mese Shovel=Pelle en Mese +Diamond Shovel=Pelle en diamant +Wooden Axe=Hache en bois +Stone Axe=Hache en pierre +Bronze Axe=Hache en bronze +Steel Axe=Hache en acier +Mese Axe=Hache en Mese +Diamond Axe=Hache en diamant +Wooden Sword=Epée en bois +Stone Sword=Epée en pierre +Bronze Sword=Epée en bronze +Steel Sword=Epée en acier +Mese Sword=Epée en Mese +Diamond Sword=Epée en diamant +Key=Clé +Torch=Torche +@1 will intersect protection on growth.=@1 chevauchera la zone protégée avec la croissance. +Title:=Titre : +Contents:=Contenu : +Save=Sauvegarder +by @1=de @1 +Page @1 of @2=Page @1 sur @2 +"@1"=« @1 » diff --git a/mods/default/locale/default.it.tr b/mods/default/locale/default.it.tr new file mode 100644 index 0000000..66f154b --- /dev/null +++ b/mods/default/locale/default.it.tr @@ -0,0 +1,205 @@ +# textdomain: default +Locked Chest=Baule chiuso a chiave +Locked Chest (owned by @1)=Baule chiuso a chiave (di proprietà di @1) +You do not own this chest.=Questo baule non ti appartiene. +a locked chest=un baule chiuso a chiave +Chest=Baule +Stick=Bastone +Paper=Carta +"@1" by @2="@1" di @2 +Book=Libro +Book with Text=Libro con testo +Skeleton Key=Chiave dello Scheletro +Key to @1's @2=Chiave per @2 di @1 +Coal Lump=Grumo di carbone +Iron Lump=Grumo di ferro +Copper Lump=Grumo di rame +Tin Lump=Grumo di stagno +Mese Crystal=Cristallo di mese +Gold Lump=Grumo d'oro +Diamond=Diamante +Clay Lump=Grumo d'argilla +Steel Ingot=Lingotto d'acciaio +Copper Ingot=Lingotto di rame +Tin Ingot=Lingotto di stagno +Bronze Ingot=Lingotto di bronzo +Gold Ingot=Lingotto d'oro +Mese Crystal Fragment=Frammento di cristallo di mese +Clay Brick=Mattone d'argilla +Obsidian Shard=Scheggia d'ossidiana +Flint=Selce +Blueberries=Mirtilli +Furnace is empty=La fornace è vuota +100% (output full)=100% (uscita piena) +@1%=@1% +Empty=Vuota +Not cookable=Non cucinabile +Furnace active=Fornace attiva +Furnace inactive=Fornace inattiva +(Item: @1; Fuel: @2)=(Oggetto: @1; Combustibile: @2) +Furnace=Fornace +Stone=Pietra +Cobblestone=Ciottoli +Stone Brick=Mattone di pietra +Stone Block=Blocco di pietra +Mossy Cobblestone=Ciottoli muschiosi +Desert Stone=Pietra del deserto +Desert Cobblestone=Ciottoli del deserto +Desert Stone Brick=Mattone di pietra del deserto +Desert Stone Block=Blocco di pietra del deserto +Sandstone=Arenaria +Sandstone Brick=Mattone d'arenaria +Sandstone Block=Blocco d'arenaria +Desert Sandstone=Arenaria del deserto +Desert Sandstone Brick=Mattone d'arenaria del deserto +Desert Sandstone Block=Blocco d'arenaria del deserto +Silver Sandstone=Arenaria argentata +Silver Sandstone Brick=Mattone d'arenaria argentata +Silver Sandstone Block=Blocco d'arenaria argentata +Obsidian=Ossidiana +Obsidian Brick=Mattone d'ossidiana +Obsidian Block=Blocco d'ossidiana +Dirt=Terra +Dirt with Grass=Terra con erba +Dirt with Grass and Footsteps=Terra con erba e impronte +Dirt with Dry Grass=Terra con erba secca +Dirt with Snow=Terra con neve +Dirt with Rainforest Litter=Terra con detriti della foresta pluviale +Dirt with Coniferous Litter=Terra con detriti di conifera +Dry Dirt=Terra asciutta +Dry Dirt with Dry Grass=Terra asciutta con erba secca +Permafrost=Permafrost +Permafrost with Stones=Permafrost con pietra +Permafrost with Moss=Permafrost con muschio +Sand=Sabbia +Desert Sand=Sabbia del deserto +Silver Sand=Sabbia argentata +Gravel=Ghiaia +Clay=Argilla +Snow=Neve +Snow Block=Blocco di neve +Ice=Ghiaccio +Cave Ice=Ghiaccio di caverna +Apple Tree=Melo +Apple Wood Planks=Assi di melo +Apple Tree Sapling=Alberello di melo +Apple Tree Leaves=Foglie di melo +Apple=Mela +Apple Marker=Marcatore mela +Jungle Tree=Albero della giungla +Jungle Wood Planks=Assi di legno della giungla +Jungle Tree Leaves=Foglie di albero della giungla +Jungle Tree Sapling=Alberello della giungla +Emergent Jungle Tree Sapling=Alberello della giungla emergente +Pine Tree=Pino +Pine Wood Planks=Assi di legno di pino +Pine Needles=Aghi di pino +Pine Tree Sapling=Alberello di pino +Acacia Tree=Acacia +Acacia Wood Planks=Assi di legno d'acacia +Acacia Tree Leaves=Foglie d'acacia +Acacia Tree Sapling=Alberello d'acacia +Aspen Tree=Pioppo +Aspen Wood Planks=Assi di legno di pioppo +Aspen Tree Leaves=Foglie di pioppo +Aspen Tree Sapling=Alberello di pioppo +Coal Ore=Minerale di carbone +Coal Block=Blocco di carbone +Iron Ore=Minerale di ferro +Steel Block=Blocco d'acciaio +Copper Ore=Minerale di rame +Copper Block=Blocco di rame +Tin Ore=Minerale di stagno +Tin Block=Blocco di stagno +Bronze Block=Blocco di bronzo +Mese Ore=Minerale di mese +Mese Block=Blocco di mese +Gold Ore=Minerale d'oro +Gold Block=Blocco d'oro +Diamond Ore=Minerale di diamante +Diamond Block=Blocco di diamante +Cactus=Cactus +Large Cactus Seedling=Piantina di cactus grande +Papyrus=Papiro +Dry Shrub=Arbusto secco +Jungle Grass=Erba della giungla +Grass=Erba +Dry Grass=Erba secca +Fern=Felce +Marram Grass=Ammofila arenaria +Bush Stem=Fusto di cespuglio +Bush Leaves=Foglie di cespuglio +Bush Sapling=Alberello di cespuglio +Blueberry Bush Leaves with Berries=Foglie di cespuglio di mirtilli con bacche +Blueberry Bush Leaves=Foglie di cespuglio di mirtilli +Blueberry Bush Sapling=Alberello di cespuglio di mirtilli +Acacia Bush Stem=Fusto di cespuglio d'acacia +Acacia Bush Leaves=Foglie di cespuglio d'acacia +Acacia Bush Sapling=Alberello di cespuglio d'acacia +Pine Bush Stem=Fusto di cespuglio di pino +Pine Bush Needles=Aghi di cespuglio di pino +Pine Bush Sapling=Alberello di cespuglio di pino +Kelp=Alga +Green Coral=Corallo verde +Pink Coral=Corallo rosa +Cyan Coral=Corallo ciano +Brown Coral=Corallo marrone +Orange Coral=Corallo arancione +Coral Skeleton=Scheletro di corallo +Water Source=Fonte d'acqua +Flowing Water=Acqua corrente +River Water Source=Fonte d'acqua di fiume +Flowing River Water=Acqua corrente di fiume +Lava Source=Fonte di lava +Flowing Lava=Lava corrente +Empty Bookshelf=Libreria vuota +Bookshelf (@1 written, @2 empty books)=Libreria (@1 scritti, @2 vuoti) +Bookshelf=Libreria +Text too long=Testo troppo lungo +Wooden Sign=Cartello di legno +Steel Sign=Cartello d'acciaio +Wooden Ladder=Scala a pioli di legno +Steel Ladder=Scala a pioli d'acciaio +Apple Wood Fence=Recinzione di legno di melo +Acacia Wood Fence=Recinzione di legno d'acacia +Jungle Wood Fence=Recinzione di legno della giungla +Pine Wood Fence=Recinzione di legno di pino +Aspen Wood Fence=Recinzione di legno di pioppo +Apple Wood Fence Rail=Ringhiera della recinzione di legno di melo +Acacia Wood Fence Rail=Ringhiera della recinzione di legno d'acacia +Jungle Wood Fence Rail=Ringhiera della recinzione di legno della giungla +Pine Wood Fence Rail=Ringhiera della recinzione di legno di pino +Aspen Wood Fence Rail=Ringhiera della recinzione di legno di pioppo +Glass=Vetro +Obsidian Glass=Vetro d'ossidiana +Brick Block=Blocco di mattone +Mese Lamp=Lampada di mese +Mese Post Light=Lampioncino di mese +Cloud=Nuvola +Wooden Pickaxe=Piccone di legno +Stone Pickaxe=Piccone di pietra +Bronze Pickaxe=Piccone di bronzo +Steel Pickaxe=Piccone d'acciaio +Mese Pickaxe=Piccone di mese +Diamond Pickaxe=Piccone di diamante +Wooden Shovel=Pala di legno +Stone Shovel=Pala di pietra +Bronze Shovel=Pala di bronzo +Steel Shovel=Pala d'acciaio +Mese Shovel=Pala di mese +Diamond Shovel=Pala di diamante +Wooden Axe=Ascia di legno +Stone Axe=Ascia di pietra +Bronze Axe=Ascia di bronzo +Steel Axe=Ascia d'acciaio +Mese Axe=Ascia di mese +Diamond Axe=Ascia di diamante +Wooden Sword=Spada di legno +Stone Sword=Spada di pietra +Bronze Sword=Spada di bronzo +Steel Sword=Spada d'acciaio +Mese Sword=Spada di mese +Diamond Sword=Spada di diamante +Key=Chiave +Torch=Torcia +@1 will intersect protection on growth.=@1 crescendo attraverserà la protezione. diff --git a/mods/default/locale/template.txt b/mods/default/locale/template.txt new file mode 100644 index 0000000..c8e616c --- /dev/null +++ b/mods/default/locale/template.txt @@ -0,0 +1,211 @@ +# textdomain: default +Locked Chest= +Locked Chest (owned by @1)= +You do not own this chest.= +a locked chest= +Chest= +Stick= +Paper= +"@1" by @2= +Book= +Book with Text= +Skeleton Key= +Key to @1's @2= +Coal Lump= +Iron Lump= +Copper Lump= +Tin Lump= +Mese Crystal= +Gold Lump= +Diamond= +Clay Lump= +Steel Ingot= +Copper Ingot= +Tin Ingot= +Bronze Ingot= +Gold Ingot= +Mese Crystal Fragment= +Clay Brick= +Obsidian Shard= +Flint= +Blueberries= +Furnace is empty= +100% (output full)= +@1%= +Empty= +Not cookable= +Furnace active= +Furnace inactive= +(Item: @1; Fuel: @2)= +Furnace= +Stone= +Cobblestone= +Stone Brick= +Stone Block= +Mossy Cobblestone= +Desert Stone= +Desert Cobblestone= +Desert Stone Brick= +Desert Stone Block= +Sandstone= +Sandstone Brick= +Sandstone Block= +Desert Sandstone= +Desert Sandstone Brick= +Desert Sandstone Block= +Silver Sandstone= +Silver Sandstone Brick= +Silver Sandstone Block= +Obsidian= +Obsidian Brick= +Obsidian Block= +Dirt= +Dirt with Grass= +Dirt with Grass and Footsteps= +Dirt with Dry Grass= +Dirt with Snow= +Dirt with Rainforest Litter= +Dirt with Coniferous Litter= +Dry Dirt= +Dry Dirt with Dry Grass= +Permafrost= +Permafrost with Stones= +Permafrost with Moss= +Sand= +Desert Sand= +Silver Sand= +Gravel= +Clay= +Snow= +Snow Block= +Ice= +Cave Ice= +Apple Tree= +Apple Wood Planks= +Apple Tree Sapling= +Apple Tree Leaves= +Apple= +Apple Marker= +Jungle Tree= +Jungle Wood Planks= +Jungle Tree Leaves= +Jungle Tree Sapling= +Emergent Jungle Tree Sapling= +Pine Tree= +Pine Wood Planks= +Pine Needles= +Pine Tree Sapling= +Acacia Tree= +Acacia Wood Planks= +Acacia Tree Leaves= +Acacia Tree Sapling= +Aspen Tree= +Aspen Wood Planks= +Aspen Tree Leaves= +Aspen Tree Sapling= +Coal Ore= +Coal Block= +Iron Ore= +Steel Block= +Copper Ore= +Copper Block= +Tin Ore= +Tin Block= +Bronze Block= +Mese Ore= +Mese Block= +Gold Ore= +Gold Block= +Diamond Ore= +Diamond Block= +Cactus= +Large Cactus Seedling= +Papyrus= +Dry Shrub= +Jungle Grass= +Grass= +Dry Grass= +Fern= +Marram Grass= +Bush Stem= +Bush Leaves= +Bush Sapling= +Blueberry Bush Leaves with Berries= +Blueberry Bush Leaves= +Blueberry Bush Sapling= +Acacia Bush Stem= +Acacia Bush Leaves= +Acacia Bush Sapling= +Pine Bush Stem= +Pine Bush Needles= +Pine Bush Sapling= +Kelp= +Green Coral= +Pink Coral= +Cyan Coral= +Brown Coral= +Orange Coral= +Coral Skeleton= +Water Source= +Flowing Water= +River Water Source= +Flowing River Water= +Lava Source= +Flowing Lava= +Empty Bookshelf= +Bookshelf (@1 written, @2 empty books)= +Bookshelf= +Text too long= +Wooden Sign= +Steel Sign= +Wooden Ladder= +Steel Ladder= +Apple Wood Fence= +Acacia Wood Fence= +Jungle Wood Fence= +Pine Wood Fence= +Aspen Wood Fence= +Apple Wood Fence Rail= +Acacia Wood Fence Rail= +Jungle Wood Fence Rail= +Pine Wood Fence Rail= +Aspen Wood Fence Rail= +Glass= +Obsidian Glass= +Brick Block= +Mese Lamp= +Mese Post Light= +Cloud= +Wooden Pickaxe= +Stone Pickaxe= +Bronze Pickaxe= +Steel Pickaxe= +Mese Pickaxe= +Diamond Pickaxe= +Wooden Shovel= +Stone Shovel= +Bronze Shovel= +Steel Shovel= +Mese Shovel= +Diamond Shovel= +Wooden Axe= +Stone Axe= +Bronze Axe= +Steel Axe= +Mese Axe= +Diamond Axe= +Wooden Sword= +Stone Sword= +Bronze Sword= +Steel Sword= +Mese Sword= +Diamond Sword= +Key= +Torch= +@1 will intersect protection on growth.= +Title:= +Contents:= +Save= +by @1= +Page @1 of @2= +"@1"= diff --git a/mods/default/mapgen.lua b/mods/default/mapgen.lua index 9c63d1e..a361f89 100644 --- a/mods/default/mapgen.lua +++ b/mods/default/mapgen.lua @@ -2,13 +2,18 @@ -- Aliases for map generators -- +-- All mapgens + minetest.register_alias("mapgen_stone", "default:stone") +minetest.register_alias("mapgen_water_source", "default:water_source") +minetest.register_alias("mapgen_river_water_source", "default:river_water_source") + +-- Additional aliases needed for mapgen v6 + +minetest.register_alias("mapgen_lava_source", "default:lava_source") minetest.register_alias("mapgen_dirt", "default:dirt") minetest.register_alias("mapgen_dirt_with_grass", "default:dirt_with_grass") minetest.register_alias("mapgen_sand", "default:sand") -minetest.register_alias("mapgen_water_source", "default:water_source") -minetest.register_alias("mapgen_river_water_source", "default:river_water_source") -minetest.register_alias("mapgen_lava_source", "default:lava_source") minetest.register_alias("mapgen_gravel", "default:gravel") minetest.register_alias("mapgen_desert_stone", "default:desert_stone") minetest.register_alias("mapgen_desert_sand", "default:desert_sand") @@ -16,9 +21,6 @@ minetest.register_alias("mapgen_dirt_with_snow", "default:dirt_with_snow") minetest.register_alias("mapgen_snowblock", "default:snowblock") minetest.register_alias("mapgen_snow", "default:snow") minetest.register_alias("mapgen_ice", "default:ice") -minetest.register_alias("mapgen_sandstone", "default:sandstone") - --- Flora minetest.register_alias("mapgen_tree", "default:tree") minetest.register_alias("mapgen_leaves", "default:leaves") @@ -29,14 +31,10 @@ minetest.register_alias("mapgen_junglegrass", "default:junglegrass") minetest.register_alias("mapgen_pine_tree", "default:pine_tree") minetest.register_alias("mapgen_pine_needles", "default:pine_needles") --- Dungeons - minetest.register_alias("mapgen_cobble", "default:cobble") minetest.register_alias("mapgen_stair_cobble", "stairs:stair_cobble") minetest.register_alias("mapgen_mossycobble", "default:mossycobble") minetest.register_alias("mapgen_stair_desert_stone", "stairs:stair_desert_stone") -minetest.register_alias("mapgen_sandstonebrick", "default:sandstonebrick") -minetest.register_alias("mapgen_stair_sandstone_block", "stairs:stair_sandstone_block") -- @@ -554,14 +552,6 @@ function default.register_ores() octaves = 1, persist = 0.0 }, - biomes = {"icesheet_ocean", "tundra", "tundra_beach", "tundra_ocean", - "taiga", "taiga_ocean", "snowy_grassland", "snowy_grassland_ocean", - "grassland", "grassland_dunes", "grassland_ocean", "coniferous_forest", - "coniferous_forest_dunes", "coniferous_forest_ocean", "deciduous_forest", - "deciduous_forest_shore", "deciduous_forest_ocean", "cold_desert", - "cold_desert_ocean", "savanna", "savanna_shore", "savanna_ocean", - "rainforest", "rainforest_swamp", "rainforest_ocean", "underground", - "floatland_coniferous_forest", "floatland_coniferous_forest_ocean"} }) -- Dirt @@ -583,9 +573,10 @@ function default.register_ores() octaves = 1, persist = 0.0 }, + -- Only where default:dirt is present as surface material biomes = {"taiga", "snowy_grassland", "grassland", "coniferous_forest", - "deciduous_forest", "deciduous_forest_shore", "savanna", "savanna_shore", - "rainforest", "rainforest_swamp", "floatland_coniferous_forest"} + "deciduous_forest", "deciduous_forest_shore", "rainforest", + "rainforest_swamp", "floatland_coniferous_forest"} }) -- Gravel @@ -607,14 +598,6 @@ function default.register_ores() octaves = 1, persist = 0.0 }, - biomes = {"icesheet_ocean", "tundra", "tundra_beach", "tundra_ocean", - "taiga", "taiga_ocean", "snowy_grassland", "snowy_grassland_ocean", - "grassland", "grassland_dunes", "grassland_ocean", "coniferous_forest", - "coniferous_forest_dunes", "coniferous_forest_ocean", "deciduous_forest", - "deciduous_forest_shore", "deciduous_forest_ocean", "cold_desert", - "cold_desert_ocean", "savanna", "savanna_shore", "savanna_ocean", - "rainforest", "rainforest_swamp", "rainforest_ocean", "underground", - "floatland_coniferous_forest", "floatland_coniferous_forest_ocean"} }) -- Scatter ores @@ -924,6 +907,8 @@ function default.register_biomes(upper_limit) node_river_water = "default:ice", node_riverbed = "default:gravel", depth_riverbed = 2, + node_dungeon = "default:ice", + node_dungeon_stair = "stairs:stair_ice", y_max = upper_limit, y_min = -8, heat_point = 0, @@ -939,8 +924,24 @@ function default.register_biomes(upper_limit) depth_filler = 3, node_water_top = "default:ice", depth_water_top = 10, + node_cave_liquid = "default:water_source", + node_dungeon = "default:cobble", + node_dungeon_alt = "default:mossycobble", + node_dungeon_stair = "stairs:stair_cobble", y_max = -9, - y_min = -112, + y_min = -255, + heat_point = 0, + humidity_point = 73, + }) + + minetest.register_biome({ + name = "icesheet_under", + node_cave_liquid = {"default:water_source", "default:lava_source"}, + node_dungeon = "default:cobble", + node_dungeon_alt = "default:mossycobble", + node_dungeon_stair = "stairs:stair_cobble", + y_max = -256, + y_min = -31000, heat_point = 0, humidity_point = 73, }) @@ -952,6 +953,9 @@ function default.register_biomes(upper_limit) node_dust = "default:snow", node_riverbed = "default:gravel", depth_riverbed = 2, + node_dungeon = "default:cobble", + node_dungeon_alt = "default:mossycobble", + node_dungeon_stair = "stairs:stair_cobble", y_max = upper_limit, y_min = 47, heat_point = 0, @@ -966,6 +970,9 @@ function default.register_biomes(upper_limit) depth_filler = 1, node_riverbed = "default:gravel", depth_riverbed = 2, + node_dungeon = "default:cobble", + node_dungeon_alt = "default:mossycobble", + node_dungeon_stair = "stairs:stair_cobble", vertical_blend = 4, y_max = 46, y_min = 2, @@ -981,6 +988,9 @@ function default.register_biomes(upper_limit) depth_filler = 2, node_riverbed = "default:gravel", depth_riverbed = 2, + node_dungeon = "default:cobble", + node_dungeon_alt = "default:mossycobble", + node_dungeon_stair = "stairs:stair_cobble", vertical_blend = 1, y_max = 1, y_min = -3, @@ -996,9 +1006,25 @@ function default.register_biomes(upper_limit) depth_filler = 3, node_riverbed = "default:gravel", depth_riverbed = 2, + node_cave_liquid = "default:water_source", + node_dungeon = "default:cobble", + node_dungeon_alt = "default:mossycobble", + node_dungeon_stair = "stairs:stair_cobble", vertical_blend = 1, y_max = -4, - y_min = -112, + y_min = -255, + heat_point = 0, + humidity_point = 40, + }) + + minetest.register_biome({ + name = "tundra_under", + node_cave_liquid = {"default:water_source", "default:lava_source"}, + node_dungeon = "default:cobble", + node_dungeon_alt = "default:mossycobble", + node_dungeon_stair = "stairs:stair_cobble", + y_max = -256, + y_min = -31000, heat_point = 0, humidity_point = 40, }) @@ -1014,6 +1040,9 @@ function default.register_biomes(upper_limit) depth_filler = 3, node_riverbed = "default:sand", depth_riverbed = 2, + node_dungeon = "default:cobble", + node_dungeon_alt = "default:mossycobble", + node_dungeon_stair = "stairs:stair_cobble", y_max = upper_limit, y_min = 4, heat_point = 25, @@ -1029,9 +1058,25 @@ function default.register_biomes(upper_limit) depth_filler = 3, node_riverbed = "default:sand", depth_riverbed = 2, + node_cave_liquid = "default:water_source", + node_dungeon = "default:cobble", + node_dungeon_alt = "default:mossycobble", + node_dungeon_stair = "stairs:stair_cobble", vertical_blend = 1, y_max = 3, - y_min = -112, + y_min = -255, + heat_point = 25, + humidity_point = 70, + }) + + minetest.register_biome({ + name = "taiga_under", + node_cave_liquid = {"default:water_source", "default:lava_source"}, + node_dungeon = "default:cobble", + node_dungeon_alt = "default:mossycobble", + node_dungeon_stair = "stairs:stair_cobble", + y_max = -256, + y_min = -31000, heat_point = 25, humidity_point = 70, }) @@ -1047,6 +1092,9 @@ function default.register_biomes(upper_limit) depth_filler = 1, node_riverbed = "default:sand", depth_riverbed = 2, + node_dungeon = "default:cobble", + node_dungeon_alt = "default:mossycobble", + node_dungeon_stair = "stairs:stair_cobble", y_max = upper_limit, y_min = 4, heat_point = 20, @@ -1062,9 +1110,25 @@ function default.register_biomes(upper_limit) depth_filler = 3, node_riverbed = "default:sand", depth_riverbed = 2, + node_cave_liquid = "default:water_source", + node_dungeon = "default:cobble", + node_dungeon_alt = "default:mossycobble", + node_dungeon_stair = "stairs:stair_cobble", vertical_blend = 1, y_max = 3, - y_min = -112, + y_min = -255, + heat_point = 20, + humidity_point = 35, + }) + + minetest.register_biome({ + name = "snowy_grassland_under", + node_cave_liquid = {"default:water_source", "default:lava_source"}, + node_dungeon = "default:cobble", + node_dungeon_alt = "default:mossycobble", + node_dungeon_stair = "stairs:stair_cobble", + y_max = -256, + y_min = -31000, heat_point = 20, humidity_point = 35, }) @@ -1079,6 +1143,9 @@ function default.register_biomes(upper_limit) depth_filler = 1, node_riverbed = "default:sand", depth_riverbed = 2, + node_dungeon = "default:cobble", + node_dungeon_alt = "default:mossycobble", + node_dungeon_stair = "stairs:stair_cobble", y_max = upper_limit, y_min = 6, heat_point = 50, @@ -1093,6 +1160,9 @@ function default.register_biomes(upper_limit) depth_filler = 2, node_riverbed = "default:sand", depth_riverbed = 2, + node_dungeon = "default:cobble", + node_dungeon_alt = "default:mossycobble", + node_dungeon_stair = "stairs:stair_cobble", vertical_blend = 1, y_max = 5, y_min = 4, @@ -1108,8 +1178,24 @@ function default.register_biomes(upper_limit) depth_filler = 3, node_riverbed = "default:sand", depth_riverbed = 2, + node_cave_liquid = "default:water_source", + node_dungeon = "default:cobble", + node_dungeon_alt = "default:mossycobble", + node_dungeon_stair = "stairs:stair_cobble", y_max = 3, - y_min = -112, + y_min = -255, + heat_point = 50, + humidity_point = 35, + }) + + minetest.register_biome({ + name = "grassland_under", + node_cave_liquid = {"default:water_source", "default:lava_source"}, + node_dungeon = "default:cobble", + node_dungeon_alt = "default:mossycobble", + node_dungeon_stair = "stairs:stair_cobble", + y_max = -256, + y_min = -31000, heat_point = 50, humidity_point = 35, }) @@ -1124,6 +1210,9 @@ function default.register_biomes(upper_limit) depth_filler = 3, node_riverbed = "default:sand", depth_riverbed = 2, + node_dungeon = "default:cobble", + node_dungeon_alt = "default:mossycobble", + node_dungeon_stair = "stairs:stair_cobble", y_max = upper_limit, y_min = 6, heat_point = 45, @@ -1138,6 +1227,9 @@ function default.register_biomes(upper_limit) depth_filler = 3, node_riverbed = "default:sand", depth_riverbed = 2, + node_dungeon = "default:cobble", + node_dungeon_alt = "default:mossycobble", + node_dungeon_stair = "stairs:stair_cobble", vertical_blend = 1, y_max = 5, y_min = 4, @@ -1153,8 +1245,24 @@ function default.register_biomes(upper_limit) depth_filler = 3, node_riverbed = "default:sand", depth_riverbed = 2, + node_cave_liquid = "default:water_source", + node_dungeon = "default:cobble", + node_dungeon_alt = "default:mossycobble", + node_dungeon_stair = "stairs:stair_cobble", y_max = 3, - y_min = -112, + y_min = -255, + heat_point = 45, + humidity_point = 70, + }) + + minetest.register_biome({ + name = "coniferous_forest_under", + node_cave_liquid = {"default:water_source", "default:lava_source"}, + node_dungeon = "default:cobble", + node_dungeon_alt = "default:mossycobble", + node_dungeon_stair = "stairs:stair_cobble", + y_max = -256, + y_min = -31000, heat_point = 45, humidity_point = 70, }) @@ -1169,6 +1277,9 @@ function default.register_biomes(upper_limit) depth_filler = 3, node_riverbed = "default:sand", depth_riverbed = 2, + node_dungeon = "default:cobble", + node_dungeon_alt = "default:mossycobble", + node_dungeon_stair = "stairs:stair_cobble", y_max = upper_limit, y_min = 1, heat_point = 60, @@ -1183,6 +1294,9 @@ function default.register_biomes(upper_limit) depth_filler = 3, node_riverbed = "default:sand", depth_riverbed = 2, + node_dungeon = "default:cobble", + node_dungeon_alt = "default:mossycobble", + node_dungeon_stair = "stairs:stair_cobble", y_max = 0, y_min = -1, heat_point = 60, @@ -1197,9 +1311,25 @@ function default.register_biomes(upper_limit) depth_filler = 3, node_riverbed = "default:sand", depth_riverbed = 2, + node_cave_liquid = "default:water_source", + node_dungeon = "default:cobble", + node_dungeon_alt = "default:mossycobble", + node_dungeon_stair = "stairs:stair_cobble", vertical_blend = 1, y_max = -2, - y_min = -112, + y_min = -255, + heat_point = 60, + humidity_point = 68, + }) + + minetest.register_biome({ + name = "deciduous_forest_under", + node_cave_liquid = {"default:water_source", "default:lava_source"}, + node_dungeon = "default:cobble", + node_dungeon_alt = "default:mossycobble", + node_dungeon_stair = "stairs:stair_cobble", + y_max = -256, + y_min = -31000, heat_point = 60, humidity_point = 68, }) @@ -1215,6 +1345,8 @@ function default.register_biomes(upper_limit) node_stone = "default:desert_stone", node_riverbed = "default:sand", depth_riverbed = 2, + node_dungeon = "default:desert_stone", + node_dungeon_stair = "stairs:stair_desert_stone", y_max = upper_limit, y_min = 4, heat_point = 92, @@ -1230,9 +1362,24 @@ function default.register_biomes(upper_limit) node_stone = "default:desert_stone", node_riverbed = "default:sand", depth_riverbed = 2, + node_cave_liquid = "default:water_source", + node_dungeon = "default:desert_stone", + node_dungeon_stair = "stairs:stair_desert_stone", vertical_blend = 1, y_max = 3, - y_min = -112, + y_min = -255, + heat_point = 92, + humidity_point = 16, + }) + + minetest.register_biome({ + name = "desert_under", + node_cave_liquid = {"default:water_source", "default:lava_source"}, + node_dungeon = "default:cobble", + node_dungeon_alt = "default:mossycobble", + node_dungeon_stair = "stairs:stair_cobble", + y_max = -256, + y_min = -31000, heat_point = 92, humidity_point = 16, }) @@ -1248,6 +1395,8 @@ function default.register_biomes(upper_limit) node_stone = "default:sandstone", node_riverbed = "default:sand", depth_riverbed = 2, + node_dungeon = "default:sandstonebrick", + node_dungeon_stair = "stairs:stair_sandstone_block", y_max = upper_limit, y_min = 4, heat_point = 60, @@ -1263,8 +1412,23 @@ function default.register_biomes(upper_limit) node_stone = "default:sandstone", node_riverbed = "default:sand", depth_riverbed = 2, + node_cave_liquid = "default:water_source", + node_dungeon = "default:sandstonebrick", + node_dungeon_stair = "stairs:stair_sandstone_block", y_max = 3, - y_min = -112, + y_min = -255, + heat_point = 60, + humidity_point = 0, + }) + + minetest.register_biome({ + name = "sandstone_desert_under", + node_cave_liquid = {"default:water_source", "default:lava_source"}, + node_dungeon = "default:cobble", + node_dungeon_alt = "default:mossycobble", + node_dungeon_stair = "stairs:stair_cobble", + y_max = -256, + y_min = -31000, heat_point = 60, humidity_point = 0, }) @@ -1279,6 +1443,9 @@ function default.register_biomes(upper_limit) depth_filler = 1, node_riverbed = "default:sand", depth_riverbed = 2, + node_dungeon = "default:cobble", + node_dungeon_alt = "default:mossycobble", + node_dungeon_stair = "stairs:stair_cobble", y_max = upper_limit, y_min = 4, heat_point = 40, @@ -1293,9 +1460,25 @@ function default.register_biomes(upper_limit) depth_filler = 3, node_riverbed = "default:sand", depth_riverbed = 2, + node_cave_liquid = "default:water_source", + node_dungeon = "default:cobble", + node_dungeon_alt = "default:mossycobble", + node_dungeon_stair = "stairs:stair_cobble", vertical_blend = 1, y_max = 3, - y_min = -112, + y_min = -255, + heat_point = 40, + humidity_point = 0, + }) + + minetest.register_biome({ + name = "cold_desert_under", + node_cave_liquid = {"default:water_source", "default:lava_source"}, + node_dungeon = "default:cobble", + node_dungeon_alt = "default:mossycobble", + node_dungeon_stair = "stairs:stair_cobble", + y_max = -256, + y_min = -31000, heat_point = 40, humidity_point = 0, }) @@ -1304,12 +1487,15 @@ function default.register_biomes(upper_limit) minetest.register_biome({ name = "savanna", - node_top = "default:dirt_with_dry_grass", + node_top = "default:dry_dirt_with_dry_grass", depth_top = 1, - node_filler = "default:dirt", + node_filler = "default:dry_dirt", depth_filler = 1, node_riverbed = "default:sand", depth_riverbed = 2, + node_dungeon = "default:cobble", + node_dungeon_alt = "default:mossycobble", + node_dungeon_stair = "stairs:stair_cobble", y_max = upper_limit, y_min = 1, heat_point = 89, @@ -1318,12 +1504,15 @@ function default.register_biomes(upper_limit) minetest.register_biome({ name = "savanna_shore", - node_top = "default:dirt", + node_top = "default:dry_dirt", depth_top = 1, - node_filler = "default:dirt", + node_filler = "default:dry_dirt", depth_filler = 3, node_riverbed = "default:sand", depth_riverbed = 2, + node_dungeon = "default:cobble", + node_dungeon_alt = "default:mossycobble", + node_dungeon_stair = "stairs:stair_cobble", y_max = 0, y_min = -1, heat_point = 89, @@ -1338,9 +1527,25 @@ function default.register_biomes(upper_limit) depth_filler = 3, node_riverbed = "default:sand", depth_riverbed = 2, + node_cave_liquid = "default:water_source", + node_dungeon = "default:cobble", + node_dungeon_alt = "default:mossycobble", + node_dungeon_stair = "stairs:stair_cobble", vertical_blend = 1, y_max = -2, - y_min = -112, + y_min = -255, + heat_point = 89, + humidity_point = 42, + }) + + minetest.register_biome({ + name = "savanna_under", + node_cave_liquid = {"default:water_source", "default:lava_source"}, + node_dungeon = "default:cobble", + node_dungeon_alt = "default:mossycobble", + node_dungeon_stair = "stairs:stair_cobble", + y_max = -256, + y_min = -31000, heat_point = 89, humidity_point = 42, }) @@ -1355,6 +1560,9 @@ function default.register_biomes(upper_limit) depth_filler = 3, node_riverbed = "default:sand", depth_riverbed = 2, + node_dungeon = "default:cobble", + node_dungeon_alt = "default:mossycobble", + node_dungeon_stair = "stairs:stair_cobble", y_max = upper_limit, y_min = 1, heat_point = 86, @@ -1369,6 +1577,9 @@ function default.register_biomes(upper_limit) depth_filler = 3, node_riverbed = "default:sand", depth_riverbed = 2, + node_dungeon = "default:cobble", + node_dungeon_alt = "default:mossycobble", + node_dungeon_stair = "stairs:stair_cobble", y_max = 0, y_min = -1, heat_point = 86, @@ -1383,21 +1594,27 @@ function default.register_biomes(upper_limit) depth_filler = 3, node_riverbed = "default:sand", depth_riverbed = 2, + node_cave_liquid = "default:water_source", + node_dungeon = "default:cobble", + node_dungeon_alt = "default:mossycobble", + node_dungeon_stair = "stairs:stair_cobble", vertical_blend = 1, y_max = -2, - y_min = -112, + y_min = -255, heat_point = 86, humidity_point = 65, }) - -- Underground - minetest.register_biome({ - name = "underground", - y_max = -113, + name = "rainforest_under", + node_cave_liquid = {"default:water_source", "default:lava_source"}, + node_dungeon = "default:cobble", + node_dungeon_alt = "default:mossycobble", + node_dungeon_stair = "stairs:stair_cobble", + y_max = -256, y_min = -31000, - heat_point = 50, - humidity_point = 50, + heat_point = 86, + humidity_point = 65, }) end @@ -1414,6 +1631,9 @@ function default.register_floatland_biomes(floatland_level, shadow_limit) depth_top = 1, node_filler = "default:dirt", depth_filler = 1, + node_dungeon = "default:cobble", + node_dungeon_alt = "default:mossycobble", + node_dungeon_stair = "stairs:stair_cobble", y_max = 31000, y_min = floatland_level + 2, heat_point = 50, @@ -1426,6 +1646,9 @@ function default.register_floatland_biomes(floatland_level, shadow_limit) depth_top = 1, node_filler = "default:dirt", depth_filler = 3, + node_dungeon = "default:cobble", + node_dungeon_alt = "default:mossycobble", + node_dungeon_stair = "stairs:stair_cobble", y_max = 31000, y_min = floatland_level + 2, heat_point = 50, @@ -1438,6 +1661,9 @@ function default.register_floatland_biomes(floatland_level, shadow_limit) depth_top = 1, node_filler = "default:sand", depth_filler = 3, + node_dungeon = "default:cobble", + node_dungeon_alt = "default:mossycobble", + node_dungeon_stair = "stairs:stair_cobble", y_max = floatland_level + 1, y_min = shadow_limit, heat_point = 50, @@ -1572,7 +1798,7 @@ local function register_dry_grass_decoration(offset, scale, length) minetest.register_decoration({ name = "default:dry_grass_" .. length, deco_type = "simple", - place_on = {"default:dirt_with_dry_grass"}, + place_on = {"default:dry_dirt_with_dry_grass"}, sidelen = 16, noise_params = { offset = offset, @@ -1612,6 +1838,30 @@ end function default.register_decorations() + -- Savanna bare dirt patches. + -- Must come before all savanna decorations that are placed on dry grass. + -- Noise is similar to long dry grass noise, but scale inverted, to appear + -- where long dry grass is least dense and shortest. + + minetest.register_decoration({ + deco_type = "simple", + place_on = {"default:dry_dirt_with_dry_grass"}, + sidelen = 4, + noise_params = { + offset = -1.5, + scale = -1.5, + spread = {x = 200, y = 200, z = 200}, + seed = 329, + octaves = 4, + persist = 1.0 + }, + biomes = {"savanna"}, + y_max = 31000, + y_min = 1, + decoration = "default:dry_dirt", + place_offset_y = -1, + flags = "force_placement", + }) -- Apple tree and log @@ -1786,7 +2036,7 @@ function default.register_decorations() minetest.register_decoration({ name = "default:acacia_tree", deco_type = "schematic", - place_on = {"default:dirt_with_dry_grass"}, + place_on = {"default:dry_dirt_with_dry_grass"}, sidelen = 16, noise_params = { offset = 0, @@ -1807,7 +2057,7 @@ function default.register_decorations() minetest.register_decoration({ name = "default:acacia_log", deco_type = "schematic", - place_on = {"default:dirt_with_dry_grass"}, + place_on = {"default:dry_dirt_with_dry_grass"}, place_offset_y = 1, sidelen = 16, noise_params = { @@ -1824,7 +2074,7 @@ function default.register_decorations() schematic = minetest.get_modpath("default") .. "/schematics/acacia_log.mts", flags = "place_center_x", rotation = "random", - spawn_by = "default:dirt_with_dry_grass", + spawn_by = "default:dry_dirt_with_dry_grass", num_spawn_by = 8, }) @@ -1992,7 +2242,7 @@ function default.register_decorations() minetest.register_decoration({ name = "default:acacia_bush", deco_type = "schematic", - place_on = {"default:dirt_with_dry_grass"}, + place_on = {"default:dry_dirt_with_dry_grass"}, sidelen = 16, noise_params = { offset = -0.004, @@ -2098,13 +2348,13 @@ function default.register_decorations() place_on = {"default:sand"}, sidelen = 4, noise_params = { - offset = -0.4, - scale = 3.0, + offset = -0.7, + scale = 4.0, spread = {x = 16, y = 16, z = 16}, seed = 513337, octaves = 1, - persist = 0.5, - flags = "absvalue" + persist = 0.0, + flags = "absvalue, eased" }, biomes = {"coniferous_forest_dunes", "grassland_dunes"}, y_max = 6, diff --git a/mods/default/mod.conf b/mods/default/mod.conf new file mode 100644 index 0000000..c9e7468 --- /dev/null +++ b/mods/default/mod.conf @@ -0,0 +1,3 @@ +name = default +description = Minetest Game mod: default +optional_depends = player_api diff --git a/mods/default/nodes.lua b/mods/default/nodes.lua index aa8f361..cee1242 100644 --- a/mods/default/nodes.lua +++ b/mods/default/nodes.lua @@ -1,5 +1,7 @@ -- mods/default/nodes.lua +-- support for MT game translation. +local S = default.get_translator --[[ Node name convention: @@ -52,6 +54,8 @@ default:dirt_with_dry_grass default:dirt_with_snow default:dirt_with_rainforest_litter default:dirt_with_coniferous_litter +default:dry_dirt +default:dry_dirt_with_dry_grass default:permafrost default:permafrost_with_stones @@ -225,21 +229,31 @@ default:cloud --]] +-- Required wrapper to allow customization of default.after_place_leaves +local function after_place_leaves(...) + return default.after_place_leaves(...) +end + +-- Required wrapper to allow customization of default.grow_sapling +local function grow_sapling(...) + return default.grow_sapling(...) +end + -- -- Stone -- minetest.register_node("default:stone", { - description = "Stone", + description = S("Stone"), tiles = {"default_stone.png"}, groups = {cracky = 3, stone = 1}, - drop = 'default:cobble', + drop = "default:cobble", legacy_mineral = true, sounds = default.node_sound_stone_defaults(), }) minetest.register_node("default:cobble", { - description = "Cobblestone", + description = S("Cobblestone"), tiles = {"default_cobble.png"}, is_ground_content = false, groups = {cracky = 3, stone = 2}, @@ -247,7 +261,7 @@ minetest.register_node("default:cobble", { }) minetest.register_node("default:stonebrick", { - description = "Stone Brick", + description = S("Stone Brick"), paramtype2 = "facedir", place_param2 = 0, tiles = {"default_stone_brick.png"}, @@ -257,7 +271,7 @@ minetest.register_node("default:stonebrick", { }) minetest.register_node("default:stone_block", { - description = "Stone Block", + description = S("Stone Block"), tiles = {"default_stone_block.png"}, is_ground_content = false, groups = {cracky = 2, stone = 1}, @@ -265,7 +279,7 @@ minetest.register_node("default:stone_block", { }) minetest.register_node("default:mossycobble", { - description = "Mossy Cobblestone", + description = S("Mossy Cobblestone"), tiles = {"default_mossycobble.png"}, is_ground_content = false, groups = {cracky = 3, stone = 1}, @@ -274,16 +288,16 @@ minetest.register_node("default:mossycobble", { minetest.register_node("default:desert_stone", { - description = "Desert Stone", + description = S("Desert Stone"), tiles = {"default_desert_stone.png"}, groups = {cracky = 3, stone = 1}, - drop = 'default:desert_cobble', + drop = "default:desert_cobble", legacy_mineral = true, sounds = default.node_sound_stone_defaults(), }) minetest.register_node("default:desert_cobble", { - description = "Desert Cobblestone", + description = S("Desert Cobblestone"), tiles = {"default_desert_cobble.png"}, is_ground_content = false, groups = {cracky = 3, stone = 2}, @@ -291,7 +305,7 @@ minetest.register_node("default:desert_cobble", { }) minetest.register_node("default:desert_stonebrick", { - description = "Desert Stone Brick", + description = S("Desert Stone Brick"), paramtype2 = "facedir", place_param2 = 0, tiles = {"default_desert_stone_brick.png"}, @@ -301,7 +315,7 @@ minetest.register_node("default:desert_stonebrick", { }) minetest.register_node("default:desert_stone_block", { - description = "Desert Stone Block", + description = S("Desert Stone Block"), tiles = {"default_desert_stone_block.png"}, is_ground_content = false, groups = {cracky = 2, stone = 1}, @@ -309,14 +323,14 @@ minetest.register_node("default:desert_stone_block", { }) minetest.register_node("default:sandstone", { - description = "Sandstone", + description = S("Sandstone"), tiles = {"default_sandstone.png"}, groups = {crumbly = 1, cracky = 3}, sounds = default.node_sound_stone_defaults(), }) minetest.register_node("default:sandstonebrick", { - description = "Sandstone Brick", + description = S("Sandstone Brick"), paramtype2 = "facedir", place_param2 = 0, tiles = {"default_sandstone_brick.png"}, @@ -326,7 +340,7 @@ minetest.register_node("default:sandstonebrick", { }) minetest.register_node("default:sandstone_block", { - description = "Sandstone Block", + description = S("Sandstone Block"), tiles = {"default_sandstone_block.png"}, is_ground_content = false, groups = {cracky = 2}, @@ -334,14 +348,14 @@ minetest.register_node("default:sandstone_block", { }) minetest.register_node("default:desert_sandstone", { - description = "Desert Sandstone", + description = S("Desert Sandstone"), tiles = {"default_desert_sandstone.png"}, groups = {crumbly = 1, cracky = 3}, sounds = default.node_sound_stone_defaults(), }) minetest.register_node("default:desert_sandstone_brick", { - description = "Desert Sandstone Brick", + description = S("Desert Sandstone Brick"), paramtype2 = "facedir", place_param2 = 0, tiles = {"default_desert_sandstone_brick.png"}, @@ -351,7 +365,7 @@ minetest.register_node("default:desert_sandstone_brick", { }) minetest.register_node("default:desert_sandstone_block", { - description = "Desert Sandstone Block", + description = S("Desert Sandstone Block"), tiles = {"default_desert_sandstone_block.png"}, is_ground_content = false, groups = {cracky = 2}, @@ -359,14 +373,14 @@ minetest.register_node("default:desert_sandstone_block", { }) minetest.register_node("default:silver_sandstone", { - description = "Silver Sandstone", + description = S("Silver Sandstone"), tiles = {"default_silver_sandstone.png"}, groups = {crumbly = 1, cracky = 3}, sounds = default.node_sound_stone_defaults(), }) minetest.register_node("default:silver_sandstone_brick", { - description = "Silver Sandstone Brick", + description = S("Silver Sandstone Brick"), paramtype2 = "facedir", place_param2 = 0, tiles = {"default_silver_sandstone_brick.png"}, @@ -376,7 +390,7 @@ minetest.register_node("default:silver_sandstone_brick", { }) minetest.register_node("default:silver_sandstone_block", { - description = "Silver Sandstone Block", + description = S("Silver Sandstone Block"), tiles = {"default_silver_sandstone_block.png"}, is_ground_content = false, groups = {cracky = 2}, @@ -384,14 +398,14 @@ minetest.register_node("default:silver_sandstone_block", { }) minetest.register_node("default:obsidian", { - description = "Obsidian", + description = S("Obsidian"), tiles = {"default_obsidian.png"}, sounds = default.node_sound_stone_defaults(), groups = {cracky = 1, level = 2}, }) minetest.register_node("default:obsidianbrick", { - description = "Obsidian Brick", + description = S("Obsidian Brick"), paramtype2 = "facedir", place_param2 = 0, tiles = {"default_obsidian_brick.png"}, @@ -401,7 +415,7 @@ minetest.register_node("default:obsidianbrick", { }) minetest.register_node("default:obsidian_block", { - description = "Obsidian Block", + description = S("Obsidian Block"), tiles = {"default_obsidian_block.png"}, is_ground_content = false, sounds = default.node_sound_stone_defaults(), @@ -413,63 +427,63 @@ minetest.register_node("default:obsidian_block", { -- minetest.register_node("default:dirt", { - description = "Dirt", + description = S("Dirt"), tiles = {"default_dirt.png"}, groups = {crumbly = 3, soil = 1}, sounds = default.node_sound_dirt_defaults(), }) minetest.register_node("default:dirt_with_grass", { - description = "Dirt with Grass", + description = S("Dirt with Grass"), tiles = {"default_grass.png", "default_dirt.png", {name = "default_dirt.png^default_grass_side.png", tileable_vertical = false}}, groups = {crumbly = 3, soil = 1, spreading_dirt_type = 1}, - drop = 'default:dirt', + drop = "default:dirt", sounds = default.node_sound_dirt_defaults({ footstep = {name = "default_grass_footstep", gain = 0.25}, }), }) minetest.register_node("default:dirt_with_grass_footsteps", { - description = "Dirt with Grass and Footsteps", + description = S("Dirt with Grass and Footsteps"), tiles = {"default_grass.png^default_footprint.png", "default_dirt.png", {name = "default_dirt.png^default_grass_side.png", tileable_vertical = false}}, groups = {crumbly = 3, soil = 1, not_in_creative_inventory = 1}, - drop = 'default:dirt', + drop = "default:dirt", sounds = default.node_sound_dirt_defaults({ footstep = {name = "default_grass_footstep", gain = 0.25}, }), }) minetest.register_node("default:dirt_with_dry_grass", { - description = "Dirt with Dry Grass", + description = S("Dirt with Dry Grass"), tiles = {"default_dry_grass.png", "default_dirt.png", {name = "default_dirt.png^default_dry_grass_side.png", tileable_vertical = false}}, - groups = {crumbly = 3, soil = 1, spreading_dirt_type = 1}, - drop = 'default:dirt', + groups = {crumbly = 3, soil = 1}, + drop = "default:dirt", sounds = default.node_sound_dirt_defaults({ footstep = {name = "default_grass_footstep", gain = 0.4}, }), }) minetest.register_node("default:dirt_with_snow", { - description = "Dirt with Snow", + description = S("Dirt with Snow"), tiles = {"default_snow.png", "default_dirt.png", {name = "default_dirt.png^default_snow_side.png", tileable_vertical = false}}, groups = {crumbly = 3, soil = 1, spreading_dirt_type = 1, snowy = 1}, - drop = 'default:dirt', + drop = "default:dirt", sounds = default.node_sound_dirt_defaults({ footstep = {name = "default_snow_footstep", gain = 0.2}, }), }) minetest.register_node("default:dirt_with_rainforest_litter", { - description = "Dirt with Rainforest Litter", + description = S("Dirt with Rainforest Litter"), tiles = { "default_rainforest_litter.png", "default_dirt.png", @@ -484,7 +498,7 @@ minetest.register_node("default:dirt_with_rainforest_litter", { }) minetest.register_node("default:dirt_with_coniferous_litter", { - description = "Dirt with Coniferous Litter", + description = S("Dirt with Coniferous Litter"), tiles = { "default_coniferous_litter.png", "default_dirt.png", @@ -498,15 +512,34 @@ minetest.register_node("default:dirt_with_coniferous_litter", { }), }) +minetest.register_node("default:dry_dirt", { + description = S("Dry Dirt"), + tiles = {"default_dry_dirt.png"}, + groups = {crumbly = 3, soil = 1}, + sounds = default.node_sound_dirt_defaults(), +}) + +minetest.register_node("default:dry_dirt_with_dry_grass", { + description = S("Dry Dirt with Dry Grass"), + tiles = {"default_dry_grass.png", "default_dry_dirt.png", + {name = "default_dry_dirt.png^default_dry_grass_side.png", + tileable_vertical = false}}, + groups = {crumbly = 3, soil = 1}, + drop = "default:dry_dirt", + sounds = default.node_sound_dirt_defaults({ + footstep = {name = "default_grass_footstep", gain = 0.4}, + }), +}) + minetest.register_node("default:permafrost", { - description = "Permafrost", + description = S("Permafrost"), tiles = {"default_permafrost.png"}, groups = {cracky = 3}, sounds = default.node_sound_dirt_defaults(), }) minetest.register_node("default:permafrost_with_stones", { - description = "Permafrost with Stones", + description = S("Permafrost with Stones"), tiles = {"default_permafrost.png^default_stones.png", "default_permafrost.png", "default_permafrost.png^default_stones_side.png"}, @@ -515,7 +548,7 @@ minetest.register_node("default:permafrost_with_stones", { }) minetest.register_node("default:permafrost_with_moss", { - description = "Permafrost with Moss", + description = S("Permafrost with Moss"), tiles = {"default_moss.png", "default_permafrost.png", {name = "default_permafrost.png^default_moss_side.png", tileable_vertical = false}}, @@ -526,21 +559,21 @@ minetest.register_node("default:permafrost_with_moss", { }) minetest.register_node("default:sand", { - description = "Sand", + description = S("Sand"), tiles = {"default_sand.png"}, groups = {crumbly = 3, falling_node = 1, sand = 1}, sounds = default.node_sound_sand_defaults(), }) minetest.register_node("default:desert_sand", { - description = "Desert Sand", + description = S("Desert Sand"), tiles = {"default_desert_sand.png"}, groups = {crumbly = 3, falling_node = 1, sand = 1}, sounds = default.node_sound_sand_defaults(), }) minetest.register_node("default:silver_sand", { - description = "Silver Sand", + description = S("Silver Sand"), tiles = {"default_silver_sand.png"}, groups = {crumbly = 3, falling_node = 1, sand = 1}, sounds = default.node_sound_sand_defaults(), @@ -548,30 +581,30 @@ minetest.register_node("default:silver_sand", { minetest.register_node("default:gravel", { - description = "Gravel", + description = S("Gravel"), tiles = {"default_gravel.png"}, groups = {crumbly = 2, falling_node = 1}, sounds = default.node_sound_gravel_defaults(), drop = { max_items = 1, items = { - {items = {'default:flint'}, rarity = 16}, - {items = {'default:gravel'}} + {items = {"default:flint"}, rarity = 16}, + {items = {"default:gravel"}} } } }) minetest.register_node("default:clay", { - description = "Clay", + description = S("Clay"), tiles = {"default_clay.png"}, groups = {crumbly = 3}, - drop = 'default:clay_lump 4', + drop = "default:clay_lump 4", sounds = default.node_sound_dirt_defaults(), }) minetest.register_node("default:snow", { - description = "Snow", + description = S("Snow"), tiles = {"default_snow.png"}, inventory_image = "default_snowball.png", wield_image = "default_snowball.png", @@ -603,7 +636,7 @@ minetest.register_node("default:snow", { }) minetest.register_node("default:snowblock", { - description = "Snow Block", + description = S("Snow Block"), tiles = {"default_snow.png"}, groups = {crumbly = 3, cools_lava = 1, snowy = 1}, sounds = default.node_sound_snow_defaults(), @@ -618,7 +651,7 @@ minetest.register_node("default:snowblock", { -- 'is ground content = false' to avoid tunnels in sea ice or ice rivers minetest.register_node("default:ice", { - description = "Ice", + description = S("Ice"), tiles = {"default_ice.png"}, is_ground_content = false, paramtype = "light", @@ -628,7 +661,7 @@ minetest.register_node("default:ice", { -- Mapgen-placed ice with 'is ground content = true' to contain tunnels minetest.register_node("default:cave_ice", { - description = "Cave Ice", + description = S("Cave Ice"), tiles = {"default_ice.png"}, paramtype = "light", groups = {cracky = 3, cools_lava = 1, slippery = 3, @@ -642,7 +675,7 @@ minetest.register_node("default:cave_ice", { -- minetest.register_node("default:tree", { - description = "Apple Tree", + description = S("Apple Tree"), tiles = {"default_tree_top.png", "default_tree_top.png", "default_tree.png"}, paramtype2 = "facedir", is_ground_content = false, @@ -653,7 +686,7 @@ minetest.register_node("default:tree", { }) minetest.register_node("default:wood", { - description = "Apple Wood Planks", + description = S("Apple Wood Planks"), paramtype2 = "facedir", place_param2 = 0, tiles = {"default_wood.png"}, @@ -663,7 +696,7 @@ minetest.register_node("default:wood", { }) minetest.register_node("default:sapling", { - description = "Apple Tree Sapling", + description = S("Apple Tree Sapling"), drawtype = "plantlike", tiles = {"default_sapling.png"}, inventory_image = "default_sapling.png", @@ -671,7 +704,7 @@ minetest.register_node("default:sapling", { paramtype = "light", sunlight_propagates = true, walkable = false, - on_timer = default.grow_sapling, + on_timer = grow_sapling, selection_box = { type = "fixed", fixed = {-4 / 16, -0.5, -4 / 16, 4 / 16, 7 / 16, 4 / 16} @@ -699,7 +732,7 @@ minetest.register_node("default:sapling", { }) minetest.register_node("default:leaves", { - description = "Apple Tree Leaves", + description = S("Apple Tree Leaves"), drawtype = "allfaces_optional", waving = 1, tiles = {"default_leaves.png"}, @@ -712,23 +745,23 @@ minetest.register_node("default:leaves", { items = { { -- player will get sapling with 1/20 chance - items = {'default:sapling'}, + items = {"default:sapling"}, rarity = 20, }, { -- player will get leaves only if he get no saplings, -- this is because max_items is 1 - items = {'default:leaves'}, + items = {"default:leaves"}, } } }, sounds = default.node_sound_leaves_defaults(), - after_place_node = default.after_place_leaves, + after_place_node = after_place_leaves, }) minetest.register_node("default:apple", { - description = "Apple", + description = S("Apple"), drawtype = "plantlike", tiles = {"default_apple.png"}, inventory_image = "default_apple.png", @@ -758,7 +791,7 @@ minetest.register_node("default:apple", { }) minetest.register_node("default:apple_mark", { - description = "Apple Marker", + description = S("Apple Marker"), drawtype = "airlike", paramtype = "light", sunlight_propagates = true, @@ -781,7 +814,7 @@ minetest.register_node("default:apple_mark", { minetest.register_node("default:jungletree", { - description = "Jungle Tree", + description = S("Jungle Tree"), tiles = {"default_jungletree_top.png", "default_jungletree_top.png", "default_jungletree.png"}, paramtype2 = "facedir", @@ -793,7 +826,7 @@ minetest.register_node("default:jungletree", { }) minetest.register_node("default:junglewood", { - description = "Jungle Wood Planks", + description = S("Jungle Wood Planks"), paramtype2 = "facedir", place_param2 = 0, tiles = {"default_junglewood.png"}, @@ -803,7 +836,7 @@ minetest.register_node("default:junglewood", { }) minetest.register_node("default:jungleleaves", { - description = "Jungle Tree Leaves", + description = S("Jungle Tree Leaves"), drawtype = "allfaces_optional", waving = 1, tiles = {"default_jungleleaves.png"}, @@ -814,17 +847,17 @@ minetest.register_node("default:jungleleaves", { drop = { max_items = 1, items = { - {items = {'default:junglesapling'}, rarity = 20}, - {items = {'default:jungleleaves'}} + {items = {"default:junglesapling"}, rarity = 20}, + {items = {"default:jungleleaves"}} } }, sounds = default.node_sound_leaves_defaults(), - after_place_node = default.after_place_leaves, + after_place_node = after_place_leaves, }) minetest.register_node("default:junglesapling", { - description = "Jungle Tree Sapling", + description = S("Jungle Tree Sapling"), drawtype = "plantlike", tiles = {"default_junglesapling.png"}, inventory_image = "default_junglesapling.png", @@ -832,7 +865,7 @@ minetest.register_node("default:junglesapling", { paramtype = "light", sunlight_propagates = true, walkable = false, - on_timer = default.grow_sapling, + on_timer = grow_sapling, selection_box = { type = "fixed", fixed = {-4 / 16, -0.5, -4 / 16, 4 / 16, 7 / 16, 4 / 16} @@ -860,7 +893,7 @@ minetest.register_node("default:junglesapling", { }) minetest.register_node("default:emergent_jungle_sapling", { - description = "Emergent Jungle Tree Sapling", + description = S("Emergent Jungle Tree Sapling"), drawtype = "plantlike", tiles = {"default_emergent_jungle_sapling.png"}, inventory_image = "default_emergent_jungle_sapling.png", @@ -868,7 +901,7 @@ minetest.register_node("default:emergent_jungle_sapling", { paramtype = "light", sunlight_propagates = true, walkable = false, - on_timer = default.grow_sapling, + on_timer = grow_sapling, selection_box = { type = "fixed", fixed = {-4 / 16, -0.5, -4 / 16, 4 / 16, 7 / 16, 4 / 16} @@ -896,7 +929,7 @@ minetest.register_node("default:emergent_jungle_sapling", { minetest.register_node("default:pine_tree", { - description = "Pine Tree", + description = S("Pine Tree"), tiles = {"default_pine_tree_top.png", "default_pine_tree_top.png", "default_pine_tree.png"}, paramtype2 = "facedir", @@ -908,7 +941,7 @@ minetest.register_node("default:pine_tree", { }) minetest.register_node("default:pine_wood", { - description = "Pine Wood Planks", + description = S("Pine Wood Planks"), paramtype2 = "facedir", place_param2 = 0, tiles = {"default_pine_wood.png"}, @@ -918,7 +951,7 @@ minetest.register_node("default:pine_wood", { }) minetest.register_node("default:pine_needles",{ - description = "Pine Needles", + description = S("Pine Needles"), drawtype = "allfaces_optional", tiles = {"default_pine_needles.png"}, waving = 1, @@ -934,11 +967,11 @@ minetest.register_node("default:pine_needles",{ }, sounds = default.node_sound_leaves_defaults(), - after_place_node = default.after_place_leaves, + after_place_node = after_place_leaves, }) minetest.register_node("default:pine_sapling", { - description = "Pine Tree Sapling", + description = S("Pine Tree Sapling"), drawtype = "plantlike", tiles = {"default_pine_sapling.png"}, inventory_image = "default_pine_sapling.png", @@ -946,7 +979,7 @@ minetest.register_node("default:pine_sapling", { paramtype = "light", sunlight_propagates = true, walkable = false, - on_timer = default.grow_sapling, + on_timer = grow_sapling, selection_box = { type = "fixed", fixed = {-4 / 16, -0.5, -4 / 16, 4 / 16, 7 / 16, 4 / 16} @@ -975,7 +1008,7 @@ minetest.register_node("default:pine_sapling", { minetest.register_node("default:acacia_tree", { - description = "Acacia Tree", + description = S("Acacia Tree"), tiles = {"default_acacia_tree_top.png", "default_acacia_tree_top.png", "default_acacia_tree.png"}, paramtype2 = "facedir", @@ -987,7 +1020,7 @@ minetest.register_node("default:acacia_tree", { }) minetest.register_node("default:acacia_wood", { - description = "Acacia Wood Planks", + description = S("Acacia Wood Planks"), paramtype2 = "facedir", place_param2 = 0, tiles = {"default_acacia_wood.png"}, @@ -997,7 +1030,7 @@ minetest.register_node("default:acacia_wood", { }) minetest.register_node("default:acacia_leaves", { - description = "Acacia Tree Leaves", + description = S("Acacia Tree Leaves"), drawtype = "allfaces_optional", tiles = {"default_acacia_leaves.png"}, special_tiles = {"default_acacia_leaves_simple.png"}, @@ -1014,11 +1047,11 @@ minetest.register_node("default:acacia_leaves", { }, sounds = default.node_sound_leaves_defaults(), - after_place_node = default.after_place_leaves, + after_place_node = after_place_leaves, }) minetest.register_node("default:acacia_sapling", { - description = "Acacia Tree Sapling", + description = S("Acacia Tree Sapling"), drawtype = "plantlike", tiles = {"default_acacia_sapling.png"}, inventory_image = "default_acacia_sapling.png", @@ -1026,7 +1059,7 @@ minetest.register_node("default:acacia_sapling", { paramtype = "light", sunlight_propagates = true, walkable = false, - on_timer = default.grow_sapling, + on_timer = grow_sapling, selection_box = { type = "fixed", fixed = {-4 / 16, -0.5, -4 / 16, 4 / 16, 7 / 16, 4 / 16} @@ -1054,7 +1087,7 @@ minetest.register_node("default:acacia_sapling", { }) minetest.register_node("default:aspen_tree", { - description = "Aspen Tree", + description = S("Aspen Tree"), tiles = {"default_aspen_tree_top.png", "default_aspen_tree_top.png", "default_aspen_tree.png"}, paramtype2 = "facedir", @@ -1066,7 +1099,7 @@ minetest.register_node("default:aspen_tree", { }) minetest.register_node("default:aspen_wood", { - description = "Aspen Wood Planks", + description = S("Aspen Wood Planks"), paramtype2 = "facedir", place_param2 = 0, tiles = {"default_aspen_wood.png"}, @@ -1076,7 +1109,7 @@ minetest.register_node("default:aspen_wood", { }) minetest.register_node("default:aspen_leaves", { - description = "Aspen Tree Leaves", + description = S("Aspen Tree Leaves"), drawtype = "allfaces_optional", tiles = {"default_aspen_leaves.png"}, waving = 1, @@ -1092,11 +1125,11 @@ minetest.register_node("default:aspen_leaves", { }, sounds = default.node_sound_leaves_defaults(), - after_place_node = default.after_place_leaves, + after_place_node = after_place_leaves, }) minetest.register_node("default:aspen_sapling", { - description = "Aspen Tree Sapling", + description = S("Aspen Tree Sapling"), drawtype = "plantlike", tiles = {"default_aspen_sapling.png"}, inventory_image = "default_aspen_sapling.png", @@ -1104,7 +1137,7 @@ minetest.register_node("default:aspen_sapling", { paramtype = "light", sunlight_propagates = true, walkable = false, - on_timer = default.grow_sapling, + on_timer = grow_sapling, selection_box = { type = "fixed", fixed = {-3 / 16, -0.5, -3 / 16, 3 / 16, 0.5, 3 / 16} @@ -1136,15 +1169,15 @@ minetest.register_node("default:aspen_sapling", { -- minetest.register_node("default:stone_with_coal", { - description = "Coal Ore", + description = S("Coal Ore"), tiles = {"default_stone.png^default_mineral_coal.png"}, groups = {cracky = 3}, - drop = 'default:coal_lump', + drop = "default:coal_lump", sounds = default.node_sound_stone_defaults(), }) minetest.register_node("default:coalblock", { - description = "Coal Block", + description = S("Coal Block"), tiles = {"default_coal_block.png"}, is_ground_content = false, groups = {cracky = 3}, @@ -1153,15 +1186,15 @@ minetest.register_node("default:coalblock", { minetest.register_node("default:stone_with_iron", { - description = "Iron Ore", + description = S("Iron Ore"), tiles = {"default_stone.png^default_mineral_iron.png"}, groups = {cracky = 2}, - drop = 'default:iron_lump', + drop = "default:iron_lump", sounds = default.node_sound_stone_defaults(), }) minetest.register_node("default:steelblock", { - description = "Steel Block", + description = S("Steel Block"), tiles = {"default_steel_block.png"}, is_ground_content = false, groups = {cracky = 1, level = 2}, @@ -1170,15 +1203,15 @@ minetest.register_node("default:steelblock", { minetest.register_node("default:stone_with_copper", { - description = "Copper Ore", + description = S("Copper Ore"), tiles = {"default_stone.png^default_mineral_copper.png"}, groups = {cracky = 2}, - drop = 'default:copper_lump', + drop = "default:copper_lump", sounds = default.node_sound_stone_defaults(), }) minetest.register_node("default:copperblock", { - description = "Copper Block", + description = S("Copper Block"), tiles = {"default_copper_block.png"}, is_ground_content = false, groups = {cracky = 1, level = 2}, @@ -1187,7 +1220,7 @@ minetest.register_node("default:copperblock", { minetest.register_node("default:stone_with_tin", { - description = "Tin Ore", + description = S("Tin Ore"), tiles = {"default_stone.png^default_mineral_tin.png"}, groups = {cracky = 2}, drop = "default:tin_lump", @@ -1195,7 +1228,7 @@ minetest.register_node("default:stone_with_tin", { }) minetest.register_node("default:tinblock", { - description = "Tin Block", + description = S("Tin Block"), tiles = {"default_tin_block.png"}, is_ground_content = false, groups = {cracky = 1, level = 2}, @@ -1204,7 +1237,7 @@ minetest.register_node("default:tinblock", { minetest.register_node("default:bronzeblock", { - description = "Bronze Block", + description = S("Bronze Block"), tiles = {"default_bronze_block.png"}, is_ground_content = false, groups = {cracky = 1, level = 2}, @@ -1213,7 +1246,7 @@ minetest.register_node("default:bronzeblock", { minetest.register_node("default:stone_with_mese", { - description = "Mese Ore", + description = S("Mese Ore"), tiles = {"default_stone.png^default_mineral_mese.png"}, groups = {cracky = 1}, drop = "default:mese_crystal", @@ -1221,7 +1254,7 @@ minetest.register_node("default:stone_with_mese", { }) minetest.register_node("default:mese", { - description = "Mese Block", + description = S("Mese Block"), tiles = {"default_mese_block.png"}, paramtype = "light", groups = {cracky = 1, level = 2}, @@ -1231,7 +1264,7 @@ minetest.register_node("default:mese", { minetest.register_node("default:stone_with_gold", { - description = "Gold Ore", + description = S("Gold Ore"), tiles = {"default_stone.png^default_mineral_gold.png"}, groups = {cracky = 2}, drop = "default:gold_lump", @@ -1239,7 +1272,7 @@ minetest.register_node("default:stone_with_gold", { }) minetest.register_node("default:goldblock", { - description = "Gold Block", + description = S("Gold Block"), tiles = {"default_gold_block.png"}, is_ground_content = false, groups = {cracky = 1}, @@ -1248,7 +1281,7 @@ minetest.register_node("default:goldblock", { minetest.register_node("default:stone_with_diamond", { - description = "Diamond Ore", + description = S("Diamond Ore"), tiles = {"default_stone.png^default_mineral_diamond.png"}, groups = {cracky = 1}, drop = "default:diamond", @@ -1256,7 +1289,7 @@ minetest.register_node("default:stone_with_diamond", { }) minetest.register_node("default:diamondblock", { - description = "Diamond Block", + description = S("Diamond Block"), tiles = {"default_diamond_block.png"}, is_ground_content = false, groups = {cracky = 1, level = 3}, @@ -1268,7 +1301,7 @@ minetest.register_node("default:diamondblock", { -- minetest.register_node("default:cactus", { - description = "Cactus", + description = S("Cactus"), tiles = {"default_cactus_top.png", "default_cactus_top.png", "default_cactus_side.png"}, paramtype2 = "facedir", @@ -1278,7 +1311,7 @@ minetest.register_node("default:cactus", { }) minetest.register_node("default:large_cactus_seedling", { - description = "Large Cactus Seedling", + description = S("Large Cactus Seedling"), drawtype = "plantlike", tiles = {"default_large_cactus_seedling.png"}, inventory_image = "default_large_cactus_seedling.png", @@ -1349,7 +1382,7 @@ minetest.register_node("default:large_cactus_seedling", { }) minetest.register_node("default:papyrus", { - description = "Papyrus", + description = S("Papyrus"), drawtype = "plantlike", tiles = {"default_papyrus.png"}, inventory_image = "default_papyrus.png", @@ -1370,7 +1403,7 @@ minetest.register_node("default:papyrus", { }) minetest.register_node("default:dry_shrub", { - description = "Dry Shrub", + description = S("Dry Shrub"), drawtype = "plantlike", waving = 1, tiles = {"default_dry_shrub.png"}, @@ -1391,7 +1424,7 @@ minetest.register_node("default:dry_shrub", { }) minetest.register_node("default:junglegrass", { - description = "Jungle Grass", + description = S("Jungle Grass"), drawtype = "plantlike", waving = 1, visual_scale = 1.69, @@ -1412,7 +1445,7 @@ minetest.register_node("default:junglegrass", { minetest.register_node("default:grass_1", { - description = "Grass", + description = S("Grass"), drawtype = "plantlike", waving = 1, tiles = {"default_grass_1.png"}, @@ -1441,7 +1474,7 @@ minetest.register_node("default:grass_1", { for i = 2, 5 do minetest.register_node("default:grass_" .. i, { - description = "Grass", + description = S("Grass"), drawtype = "plantlike", waving = 1, tiles = {"default_grass_" .. i .. ".png"}, @@ -1464,7 +1497,7 @@ end minetest.register_node("default:dry_grass_1", { - description = "Dry Grass", + description = S("Dry Grass"), drawtype = "plantlike", waving = 1, tiles = {"default_dry_grass_1.png"}, @@ -1493,7 +1526,7 @@ minetest.register_node("default:dry_grass_1", { for i = 2, 5 do minetest.register_node("default:dry_grass_" .. i, { - description = "Dry Grass", + description = S("Dry Grass"), drawtype = "plantlike", waving = 1, tiles = {"default_dry_grass_" .. i .. ".png"}, @@ -1516,7 +1549,7 @@ end minetest.register_node("default:fern_1", { - description = "Fern", + description = S("Fern"), drawtype = "plantlike", waving = 1, tiles = {"default_fern_1.png"}, @@ -1544,7 +1577,7 @@ minetest.register_node("default:fern_1", { for i = 2, 3 do minetest.register_node("default:fern_" .. i, { - description = "Fern", + description = S("Fern"), drawtype = "plantlike", waving = 1, visual_scale = 2, @@ -1568,7 +1601,7 @@ end minetest.register_node("default:marram_grass_1", { - description = "Marram Grass", + description = S("Marram Grass"), drawtype = "plantlike", waving = 1, tiles = {"default_marram_grass_1.png"}, @@ -1596,7 +1629,7 @@ minetest.register_node("default:marram_grass_1", { for i = 2, 3 do minetest.register_node("default:marram_grass_" .. i, { - description = "Marram Grass", + description = S("Marram Grass"), drawtype = "plantlike", waving = 1, tiles = {"default_marram_grass_" .. i .. ".png"}, @@ -1619,7 +1652,7 @@ end minetest.register_node("default:bush_stem", { - description = "Bush Stem", + description = S("Bush Stem"), drawtype = "plantlike", visual_scale = 1.41, tiles = {"default_bush_stem.png"}, @@ -1636,7 +1669,7 @@ minetest.register_node("default:bush_stem", { }) minetest.register_node("default:bush_leaves", { - description = "Bush Leaves", + description = S("Bush Leaves"), drawtype = "allfaces_optional", waving = 1, tiles = {"default_leaves_simple.png"}, @@ -1651,11 +1684,11 @@ minetest.register_node("default:bush_leaves", { }, sounds = default.node_sound_leaves_defaults(), - after_place_node = default.after_place_leaves, + after_place_node = after_place_leaves, }) minetest.register_node("default:bush_sapling", { - description = "Bush Sapling", + description = S("Bush Sapling"), drawtype = "plantlike", tiles = {"default_bush_sapling.png"}, inventory_image = "default_bush_sapling.png", @@ -1663,7 +1696,7 @@ minetest.register_node("default:bush_sapling", { paramtype = "light", sunlight_propagates = true, walkable = false, - on_timer = default.grow_sapling, + on_timer = grow_sapling, selection_box = { type = "fixed", fixed = {-4 / 16, -0.5, -4 / 16, 4 / 16, 2 / 16, 4 / 16} @@ -1690,7 +1723,7 @@ minetest.register_node("default:bush_sapling", { }) minetest.register_node("default:blueberry_bush_leaves_with_berries", { - description = "Blueberry Bush Leaves with Berries", + description = S("Blueberry Bush Leaves with Berries"), drawtype = "allfaces_optional", waving = 1, tiles = {"default_blueberry_bush_leaves.png^default_blueberry_overlay.png"}, @@ -1707,7 +1740,7 @@ minetest.register_node("default:blueberry_bush_leaves_with_berries", { }) minetest.register_node("default:blueberry_bush_leaves", { - description = "Blueberry Bush Leaves", + description = S("Blueberry Bush Leaves"), drawtype = "allfaces_optional", waving = 1, tiles = {"default_blueberry_bush_leaves.png"}, @@ -1730,11 +1763,11 @@ minetest.register_node("default:blueberry_bush_leaves", { end end, - after_place_node = default.after_place_leaves, + after_place_node = after_place_leaves, }) minetest.register_node("default:blueberry_bush_sapling", { - description = "Blueberry Bush Sapling", + description = S("Blueberry Bush Sapling"), drawtype = "plantlike", tiles = {"default_blueberry_bush_sapling.png"}, inventory_image = "default_blueberry_bush_sapling.png", @@ -1742,7 +1775,7 @@ minetest.register_node("default:blueberry_bush_sapling", { paramtype = "light", sunlight_propagates = true, walkable = false, - on_timer = default.grow_sapling, + on_timer = grow_sapling, selection_box = { type = "fixed", fixed = {-4 / 16, -0.5, -4 / 16, 4 / 16, 2 / 16, 4 / 16} @@ -1769,7 +1802,7 @@ minetest.register_node("default:blueberry_bush_sapling", { }) minetest.register_node("default:acacia_bush_stem", { - description = "Acacia Bush Stem", + description = S("Acacia Bush Stem"), drawtype = "plantlike", visual_scale = 1.41, tiles = {"default_acacia_bush_stem.png"}, @@ -1786,7 +1819,7 @@ minetest.register_node("default:acacia_bush_stem", { }) minetest.register_node("default:acacia_bush_leaves", { - description = "Acacia Bush Leaves", + description = S("Acacia Bush Leaves"), drawtype = "allfaces_optional", waving = 1, tiles = {"default_acacia_leaves_simple.png"}, @@ -1801,11 +1834,11 @@ minetest.register_node("default:acacia_bush_leaves", { }, sounds = default.node_sound_leaves_defaults(), - after_place_node = default.after_place_leaves, + after_place_node = after_place_leaves, }) minetest.register_node("default:acacia_bush_sapling", { - description = "Acacia Bush Sapling", + description = S("Acacia Bush Sapling"), drawtype = "plantlike", tiles = {"default_acacia_bush_sapling.png"}, inventory_image = "default_acacia_bush_sapling.png", @@ -1813,7 +1846,7 @@ minetest.register_node("default:acacia_bush_sapling", { paramtype = "light", sunlight_propagates = true, walkable = false, - on_timer = default.grow_sapling, + on_timer = grow_sapling, selection_box = { type = "fixed", fixed = {-3 / 16, -0.5, -3 / 16, 3 / 16, 2 / 16, 3 / 16} @@ -1840,7 +1873,7 @@ minetest.register_node("default:acacia_bush_sapling", { }) minetest.register_node("default:pine_bush_stem", { - description = "Pine Bush Stem", + description = S("Pine Bush Stem"), drawtype = "plantlike", visual_scale = 1.41, tiles = {"default_pine_bush_stem.png"}, @@ -1857,7 +1890,7 @@ minetest.register_node("default:pine_bush_stem", { }) minetest.register_node("default:pine_bush_needles", { - description = "Pine Bush Needles", + description = S("Pine Bush Needles"), drawtype = "allfaces_optional", waving = 1, tiles = {"default_pine_needles.png"}, @@ -1872,11 +1905,11 @@ minetest.register_node("default:pine_bush_needles", { }, sounds = default.node_sound_leaves_defaults(), - after_place_node = default.after_place_leaves, + after_place_node = after_place_leaves, }) minetest.register_node("default:pine_bush_sapling", { - description = "Pine Bush Sapling", + description = S("Pine Bush Sapling"), drawtype = "plantlike", tiles = {"default_pine_bush_sapling.png"}, inventory_image = "default_pine_bush_sapling.png", @@ -1884,7 +1917,7 @@ minetest.register_node("default:pine_bush_sapling", { paramtype = "light", sunlight_propagates = true, walkable = false, - on_timer = default.grow_sapling, + on_timer = grow_sapling, selection_box = { type = "fixed", fixed = {-4 / 16, -0.5, -4 / 16, 4 / 16, 2 / 16, 4 / 16} @@ -1911,7 +1944,7 @@ minetest.register_node("default:pine_bush_sapling", { }) minetest.register_node("default:sand_with_kelp", { - description = "Kelp", + description = S("Kelp"), drawtype = "plantlike_rooted", waving = 1, tiles = {"default_sand.png"}, @@ -1986,8 +2019,48 @@ minetest.register_node("default:sand_with_kelp", { -- Corals -- +local function coral_on_place(itemstack, placer, pointed_thing) + if pointed_thing.type ~= "node" or not placer then + return itemstack + end + + local player_name = placer:get_player_name() + local pos_under = pointed_thing.under + local pos_above = pointed_thing.above + local node_under = minetest.get_node(pos_under) + local def_under = minetest.registered_nodes[node_under.name] + + if def_under and def_under.on_rightclick and not placer:get_player_control().sneak then + return def_under.on_rightclick(pos_under, node_under.name, + placer, itemstack, pointed_thing) or itemstack + end + + if node_under.name ~= "default:coral_skeleton" or + minetest.get_node(pos_above).name ~= "default:water_source" then + return itemstack + end + + if minetest.is_protected(pos_under, player_name) or + minetest.is_protected(pos_above, player_name) then + minetest.log("action", player_name + .. " tried to place " .. itemstack:get_name() + .. " at protected position " + .. minetest.pos_to_string(pos_under)) + minetest.record_protection_violation(pos_under, player_name) + return itemstack + end + + node_under.name = itemstack:get_name() + minetest.set_node(pos_under, node_under) + if not (creative and creative.is_enabled_for(player_name)) then + itemstack:take_item() + end + + return itemstack +end + minetest.register_node("default:coral_green", { - description = "Green Coral", + description = S("Green Coral"), drawtype = "plantlike_rooted", waving = 1, paramtype = "light", @@ -2009,34 +2082,7 @@ minetest.register_node("default:coral_green", { dug = {name = "default_grass_footstep", gain = 0.25}, }), - on_place = function(itemstack, placer, pointed_thing) - if pointed_thing.type ~= "node" or not placer then - return itemstack - end - - local player_name = placer:get_player_name() - local pos_under = pointed_thing.under - local pos_above = pointed_thing.above - - if minetest.get_node(pos_under).name ~= "default:coral_skeleton" or - minetest.get_node(pos_above).name ~= "default:water_source" then - return itemstack - end - - if minetest.is_protected(pos_under, player_name) or - minetest.is_protected(pos_above, player_name) then - minetest.chat_send_player(player_name, "Node is protected") - minetest.record_protection_violation(pos_under, player_name) - return itemstack - end - - minetest.set_node(pos_under, {name = "default:coral_green"}) - if not (creative and creative.is_enabled_for(player_name)) then - itemstack:take_item() - end - - return itemstack - end, + on_place = coral_on_place, after_destruct = function(pos, oldnode) minetest.set_node(pos, {name = "default:coral_skeleton"}) @@ -2044,7 +2090,7 @@ minetest.register_node("default:coral_green", { }) minetest.register_node("default:coral_pink", { - description = "Pink Coral", + description = S("Pink Coral"), drawtype = "plantlike_rooted", waving = 1, paramtype = "light", @@ -2066,34 +2112,7 @@ minetest.register_node("default:coral_pink", { dug = {name = "default_grass_footstep", gain = 0.25}, }), - on_place = function(itemstack, placer, pointed_thing) - if pointed_thing.type ~= "node" or not placer then - return itemstack - end - - local player_name = placer:get_player_name() - local pos_under = pointed_thing.under - local pos_above = pointed_thing.above - - if minetest.get_node(pos_under).name ~= "default:coral_skeleton" or - minetest.get_node(pos_above).name ~= "default:water_source" then - return itemstack - end - - if minetest.is_protected(pos_under, player_name) or - minetest.is_protected(pos_above, player_name) then - minetest.chat_send_player(player_name, "Node is protected") - minetest.record_protection_violation(pos_under, player_name) - return itemstack - end - - minetest.set_node(pos_under, {name = "default:coral_pink"}) - if not (creative and creative.is_enabled_for(player_name)) then - itemstack:take_item() - end - - return itemstack - end, + on_place = coral_on_place, after_destruct = function(pos, oldnode) minetest.set_node(pos, {name = "default:coral_skeleton"}) @@ -2101,7 +2120,7 @@ minetest.register_node("default:coral_pink", { }) minetest.register_node("default:coral_cyan", { - description = "Cyan Coral", + description = S("Cyan Coral"), drawtype = "plantlike_rooted", waving = 1, paramtype = "light", @@ -2123,34 +2142,7 @@ minetest.register_node("default:coral_cyan", { dug = {name = "default_grass_footstep", gain = 0.25}, }), - on_place = function(itemstack, placer, pointed_thing) - if pointed_thing.type ~= "node" or not placer then - return itemstack - end - - local player_name = placer:get_player_name() - local pos_under = pointed_thing.under - local pos_above = pointed_thing.above - - if minetest.get_node(pos_under).name ~= "default:coral_skeleton" or - minetest.get_node(pos_above).name ~= "default:water_source" then - return itemstack - end - - if minetest.is_protected(pos_under, player_name) or - minetest.is_protected(pos_above, player_name) then - minetest.chat_send_player(player_name, "Node is protected") - minetest.record_protection_violation(pos_under, player_name) - return itemstack - end - - minetest.set_node(pos_under, {name = "default:coral_cyan"}) - if not (creative and creative.is_enabled_for(player_name)) then - itemstack:take_item() - end - - return itemstack - end, + on_place = coral_on_place, after_destruct = function(pos, oldnode) minetest.set_node(pos, {name = "default:coral_skeleton"}) @@ -2158,7 +2150,7 @@ minetest.register_node("default:coral_cyan", { }) minetest.register_node("default:coral_brown", { - description = "Brown Coral", + description = S("Brown Coral"), tiles = {"default_coral_brown.png"}, groups = {cracky = 3}, drop = "default:coral_skeleton", @@ -2166,7 +2158,7 @@ minetest.register_node("default:coral_brown", { }) minetest.register_node("default:coral_orange", { - description = "Orange Coral", + description = S("Orange Coral"), tiles = {"default_coral_orange.png"}, groups = {cracky = 3}, drop = "default:coral_skeleton", @@ -2174,7 +2166,7 @@ minetest.register_node("default:coral_orange", { }) minetest.register_node("default:coral_skeleton", { - description = "Coral Skeleton", + description = S("Coral Skeleton"), tiles = {"default_coral_skeleton.png"}, groups = {cracky = 3}, sounds = default.node_sound_stone_defaults(), @@ -2186,8 +2178,9 @@ minetest.register_node("default:coral_skeleton", { -- minetest.register_node("default:water_source", { - description = "Water Source", + description = S("Water Source"), drawtype = "liquid", + waving = 3, tiles = { { name = "default_water_source_animated.png", @@ -2229,8 +2222,9 @@ minetest.register_node("default:water_source", { }) minetest.register_node("default:water_flowing", { - description = "Flowing Water", + description = S("Flowing Water"), drawtype = "flowingliquid", + waving = 3, tiles = {"default_water.png"}, special_tiles = { { @@ -2276,7 +2270,7 @@ minetest.register_node("default:water_flowing", { minetest.register_node("default:river_water_source", { - description = "River Water Source", + description = S("River Water Source"), drawtype = "liquid", tiles = { { @@ -2325,7 +2319,7 @@ minetest.register_node("default:river_water_source", { }) minetest.register_node("default:river_water_flowing", { - description = "Flowing River Water", + description = S("Flowing River Water"), drawtype = "flowingliquid", tiles = {"default_river_water.png"}, special_tiles = { @@ -2374,7 +2368,7 @@ minetest.register_node("default:river_water_flowing", { minetest.register_node("default:lava_source", { - description = "Lava Source", + description = S("Lava Source"), drawtype = "liquid", tiles = { { @@ -2418,7 +2412,7 @@ minetest.register_node("default:lava_source", { }) minetest.register_node("default:lava_flowing", { - description = "Flowing Lava", + description = S("Flowing Lava"), drawtype = "flowingliquid", tiles = {"default_lava.png"}, special_tiles = { @@ -2507,15 +2501,14 @@ local function update_bookshelf(pos) end meta:set_string("formspec", formspec) if n_written + n_empty == 0 then - meta:set_string("infotext", "Empty Bookshelf") + meta:set_string("infotext", S("Empty Bookshelf")) else - meta:set_string("infotext", "Bookshelf (" .. n_written .. - " written, " .. n_empty .. " empty books)") + meta:set_string("infotext", S("Bookshelf (@1 written, @2 empty books)", n_written, n_empty)) end end minetest.register_node("default:bookshelf", { - description = "Bookshelf", + description = S("Bookshelf"), tiles = {"default_wood.png", "default_wood.png", "default_wood.png", "default_wood.png", "default_bookshelf.png", "default_bookshelf.png"}, paramtype2 = "facedir", @@ -2565,7 +2558,7 @@ minetest.register_node("default:bookshelf", { local function register_sign(material, desc, def) minetest.register_node("default:sign_wall_" .. material, { - description = desc .. " Sign", + description = desc, drawtype = "nodebox", tiles = {"default_sign_wall_" .. material .. ".png"}, inventory_image = "default_sign_" .. material .. ".png", @@ -2602,30 +2595,35 @@ local function register_sign(material, desc, def) return end if string.len(text) > 512 then - minetest.chat_send_player(player_name, "Text too long") + minetest.chat_send_player(player_name, S("Text too long")) return end minetest.log("action", (player_name or "") .. " wrote \"" .. text .. "\" to sign at " .. minetest.pos_to_string(pos)) local meta = minetest.get_meta(pos) meta:set_string("text", text) - meta:set_string("infotext", '"' .. text .. '"') + + if #text > 0 then + meta:set_string("infotext", S('"@1"', text)) + else + meta:set_string("infotext", '') + end end, }) end -register_sign("wood", "Wooden", { +register_sign("wood", S("Wooden Sign"), { sounds = default.node_sound_wood_defaults(), groups = {choppy = 2, attached_node = 1, flammable = 2, oddly_breakable_by_hand = 3} }) -register_sign("steel", "Steel", { +register_sign("steel", S("Steel Sign"), { sounds = default.node_sound_metal_defaults(), groups = {cracky = 2, attached_node = 1} }) minetest.register_node("default:ladder_wood", { - description = "Wooden Ladder", + description = S("Wooden Ladder"), drawtype = "signlike", tiles = {"default_ladder_wood.png"}, inventory_image = "default_ladder_wood.png", @@ -2648,7 +2646,7 @@ minetest.register_node("default:ladder_wood", { }) minetest.register_node("default:ladder_steel", { - description = "Steel Ladder", + description = S("Steel Ladder"), drawtype = "signlike", tiles = {"default_ladder_steel.png"}, inventory_image = "default_ladder_steel.png", @@ -2670,7 +2668,7 @@ minetest.register_node("default:ladder_steel", { }) default.register_fence("default:fence_wood", { - description = "Apple Wood Fence", + description = S("Apple Wood Fence"), texture = "default_fence_wood.png", inventory_image = "default_fence_overlay.png^default_wood.png^" .. "default_fence_overlay.png^[makealpha:255,126,126", @@ -2682,7 +2680,7 @@ default.register_fence("default:fence_wood", { }) default.register_fence("default:fence_acacia_wood", { - description = "Acacia Wood Fence", + description = S("Acacia Wood Fence"), texture = "default_fence_acacia_wood.png", inventory_image = "default_fence_overlay.png^default_acacia_wood.png^" .. "default_fence_overlay.png^[makealpha:255,126,126", @@ -2694,7 +2692,7 @@ default.register_fence("default:fence_acacia_wood", { }) default.register_fence("default:fence_junglewood", { - description = "Jungle Wood Fence", + description = S("Jungle Wood Fence"), texture = "default_fence_junglewood.png", inventory_image = "default_fence_overlay.png^default_junglewood.png^" .. "default_fence_overlay.png^[makealpha:255,126,126", @@ -2706,7 +2704,7 @@ default.register_fence("default:fence_junglewood", { }) default.register_fence("default:fence_pine_wood", { - description = "Pine Wood Fence", + description = S("Pine Wood Fence"), texture = "default_fence_pine_wood.png", inventory_image = "default_fence_overlay.png^default_pine_wood.png^" .. "default_fence_overlay.png^[makealpha:255,126,126", @@ -2718,7 +2716,7 @@ default.register_fence("default:fence_pine_wood", { }) default.register_fence("default:fence_aspen_wood", { - description = "Aspen Wood Fence", + description = S("Aspen Wood Fence"), texture = "default_fence_aspen_wood.png", inventory_image = "default_fence_overlay.png^default_aspen_wood.png^" .. "default_fence_overlay.png^[makealpha:255,126,126", @@ -2730,7 +2728,7 @@ default.register_fence("default:fence_aspen_wood", { }) default.register_fence_rail("default:fence_rail_wood", { - description = "Apple Wood Fence Rail", + description = S("Apple Wood Fence Rail"), texture = "default_fence_rail_wood.png", inventory_image = "default_fence_rail_overlay.png^default_wood.png^" .. "default_fence_rail_overlay.png^[makealpha:255,126,126", @@ -2742,7 +2740,7 @@ default.register_fence_rail("default:fence_rail_wood", { }) default.register_fence_rail("default:fence_rail_acacia_wood", { - description = "Acacia Wood Fence Rail", + description = S("Acacia Wood Fence Rail"), texture = "default_fence_rail_acacia_wood.png", inventory_image = "default_fence_rail_overlay.png^default_acacia_wood.png^" .. "default_fence_rail_overlay.png^[makealpha:255,126,126", @@ -2754,7 +2752,7 @@ default.register_fence_rail("default:fence_rail_acacia_wood", { }) default.register_fence_rail("default:fence_rail_junglewood", { - description = "Jungle Wood Fence Rail", + description = S("Jungle Wood Fence Rail"), texture = "default_fence_rail_junglewood.png", inventory_image = "default_fence_rail_overlay.png^default_junglewood.png^" .. "default_fence_rail_overlay.png^[makealpha:255,126,126", @@ -2766,7 +2764,7 @@ default.register_fence_rail("default:fence_rail_junglewood", { }) default.register_fence_rail("default:fence_rail_pine_wood", { - description = "Pine Wood Fence Rail", + description = S("Pine Wood Fence Rail"), texture = "default_fence_rail_pine_wood.png", inventory_image = "default_fence_rail_overlay.png^default_pine_wood.png^" .. "default_fence_rail_overlay.png^[makealpha:255,126,126", @@ -2778,7 +2776,7 @@ default.register_fence_rail("default:fence_rail_pine_wood", { }) default.register_fence_rail("default:fence_rail_aspen_wood", { - description = "Aspen Wood Fence Rail", + description = S("Aspen Wood Fence Rail"), texture = "default_fence_rail_aspen_wood.png", inventory_image = "default_fence_rail_overlay.png^default_aspen_wood.png^" .. "default_fence_rail_overlay.png^[makealpha:255,126,126", @@ -2790,7 +2788,7 @@ default.register_fence_rail("default:fence_rail_aspen_wood", { }) minetest.register_node("default:glass", { - description = "Glass", + description = S("Glass"), drawtype = "glasslike_framed_optional", tiles = {"default_glass.png", "default_glass_detail.png"}, paramtype = "light", @@ -2802,7 +2800,7 @@ minetest.register_node("default:glass", { }) minetest.register_node("default:obsidian_glass", { - description = "Obsidian Glass", + description = S("Obsidian Glass"), drawtype = "glasslike_framed_optional", tiles = {"default_obsidian_glass.png", "default_obsidian_glass_detail.png"}, paramtype = "light", @@ -2815,7 +2813,7 @@ minetest.register_node("default:obsidian_glass", { minetest.register_node("default:brick", { - description = "Brick Block", + description = S("Brick Block"), paramtype2 = "facedir", place_param2 = 0, tiles = {"default_brick.png"}, @@ -2826,7 +2824,7 @@ minetest.register_node("default:brick", { minetest.register_node("default:meselamp", { - description = "Mese Lamp", + description = S("Mese Lamp"), drawtype = "glasslike", tiles = {"default_meselamp.png"}, paramtype = "light", @@ -2838,7 +2836,7 @@ minetest.register_node("default:meselamp", { }) minetest.register_node("default:mese_post_light", { - description = "Mese Post Light", + description = S("Mese Post Light"), tiles = {"default_mese_post_light_top.png", "default_mese_post_light_top.png", "default_mese_post_light_side_dark.png", "default_mese_post_light_side_dark.png", "default_mese_post_light_side.png", "default_mese_post_light_side.png"}, @@ -2863,7 +2861,7 @@ minetest.register_node("default:mese_post_light", { -- minetest.register_node("default:cloud", { - description = "Cloud", + description = S("Cloud"), tiles = {"default_cloud.png"}, is_ground_content = false, sounds = default.node_sound_defaults(), diff --git a/mods/default/schematics/large_cactus.mts b/mods/default/schematics/large_cactus.mts index e453573..cadcdcc 100644 Binary files a/mods/default/schematics/large_cactus.mts and b/mods/default/schematics/large_cactus.mts differ diff --git a/mods/default/textures/default_dry_dirt.png b/mods/default/textures/default_dry_dirt.png new file mode 100644 index 0000000..8ee5398 Binary files /dev/null and b/mods/default/textures/default_dry_dirt.png differ diff --git a/mods/default/textures/default_grass.png b/mods/default/textures/default_grass.png index 0181fab..5778caa 100644 Binary files a/mods/default/textures/default_grass.png and b/mods/default/textures/default_grass.png differ diff --git a/mods/default/textures/default_grass_side.png b/mods/default/textures/default_grass_side.png index bfd538d..079d96a 100644 Binary files a/mods/default/textures/default_grass_side.png and b/mods/default/textures/default_grass_side.png differ diff --git a/mods/default/textures/default_permafrost.png b/mods/default/textures/default_permafrost.png index d7a19a2..6f2567e 100644 Binary files a/mods/default/textures/default_permafrost.png and b/mods/default/textures/default_permafrost.png differ diff --git a/mods/default/tools.lua b/mods/default/tools.lua index 9f503ed..d792d14 100644 --- a/mods/default/tools.lua +++ b/mods/default/tools.lua @@ -1,5 +1,8 @@ -- mods/default/tools.lua +-- support for MT game translation. +local S = default.get_translator + -- The hand minetest.register_item(":", { type = "none", @@ -22,7 +25,7 @@ minetest.register_item(":", { -- minetest.register_tool("default:pick_wood", { - description = "Wooden Pickaxe", + description = S("Wooden Pickaxe"), inventory_image = "default_tool_woodpick.png", tool_capabilities = { full_punch_interval = 1.2, @@ -32,12 +35,12 @@ minetest.register_tool("default:pick_wood", { }, damage_groups = {fleshy=2}, }, - groups = {flammable = 2}, sound = {breaks = "default_tool_breaks"}, + groups = {pickaxe = 1, flammable = 2} }) minetest.register_tool("default:pick_stone", { - description = "Stone Pickaxe", + description = S("Stone Pickaxe"), inventory_image = "default_tool_stonepick.png", tool_capabilities = { full_punch_interval = 1.3, @@ -48,10 +51,11 @@ minetest.register_tool("default:pick_stone", { damage_groups = {fleshy=3}, }, sound = {breaks = "default_tool_breaks"}, + groups = {pickaxe = 1} }) minetest.register_tool("default:pick_bronze", { - description = "Bronze Pickaxe", + description = S("Bronze Pickaxe"), inventory_image = "default_tool_bronzepick.png", tool_capabilities = { full_punch_interval = 1.0, @@ -62,10 +66,11 @@ minetest.register_tool("default:pick_bronze", { damage_groups = {fleshy=4}, }, sound = {breaks = "default_tool_breaks"}, + groups = {pickaxe = 1} }) minetest.register_tool("default:pick_steel", { - description = "Steel Pickaxe", + description = S("Steel Pickaxe"), inventory_image = "default_tool_steelpick.png", tool_capabilities = { full_punch_interval = 1.0, @@ -76,10 +81,11 @@ minetest.register_tool("default:pick_steel", { damage_groups = {fleshy=4}, }, sound = {breaks = "default_tool_breaks"}, + groups = {pickaxe = 1} }) minetest.register_tool("default:pick_mese", { - description = "Mese Pickaxe", + description = S("Mese Pickaxe"), inventory_image = "default_tool_mesepick.png", tool_capabilities = { full_punch_interval = 0.9, @@ -90,10 +96,11 @@ minetest.register_tool("default:pick_mese", { damage_groups = {fleshy=5}, }, sound = {breaks = "default_tool_breaks"}, + groups = {pickaxe = 1} }) minetest.register_tool("default:pick_diamond", { - description = "Diamond Pickaxe", + description = S("Diamond Pickaxe"), inventory_image = "default_tool_diamondpick.png", tool_capabilities = { full_punch_interval = 0.9, @@ -104,6 +111,7 @@ minetest.register_tool("default:pick_diamond", { damage_groups = {fleshy=5}, }, sound = {breaks = "default_tool_breaks"}, + groups = {pickaxe = 1} }) -- @@ -111,7 +119,7 @@ minetest.register_tool("default:pick_diamond", { -- minetest.register_tool("default:shovel_wood", { - description = "Wooden Shovel", + description = S("Wooden Shovel"), inventory_image = "default_tool_woodshovel.png", wield_image = "default_tool_woodshovel.png^[transformR90", tool_capabilities = { @@ -122,12 +130,12 @@ minetest.register_tool("default:shovel_wood", { }, damage_groups = {fleshy=2}, }, - groups = {flammable = 2}, sound = {breaks = "default_tool_breaks"}, + groups = {shovel = 1, flammable = 2} }) minetest.register_tool("default:shovel_stone", { - description = "Stone Shovel", + description = S("Stone Shovel"), inventory_image = "default_tool_stoneshovel.png", wield_image = "default_tool_stoneshovel.png^[transformR90", tool_capabilities = { @@ -139,10 +147,11 @@ minetest.register_tool("default:shovel_stone", { damage_groups = {fleshy=2}, }, sound = {breaks = "default_tool_breaks"}, + groups = {shovel = 1} }) minetest.register_tool("default:shovel_bronze", { - description = "Bronze Shovel", + description = S("Bronze Shovel"), inventory_image = "default_tool_bronzeshovel.png", wield_image = "default_tool_bronzeshovel.png^[transformR90", tool_capabilities = { @@ -154,10 +163,11 @@ minetest.register_tool("default:shovel_bronze", { damage_groups = {fleshy=3}, }, sound = {breaks = "default_tool_breaks"}, + groups = {shovel = 1} }) minetest.register_tool("default:shovel_steel", { - description = "Steel Shovel", + description = S("Steel Shovel"), inventory_image = "default_tool_steelshovel.png", wield_image = "default_tool_steelshovel.png^[transformR90", tool_capabilities = { @@ -169,10 +179,11 @@ minetest.register_tool("default:shovel_steel", { damage_groups = {fleshy=3}, }, sound = {breaks = "default_tool_breaks"}, + groups = {shovel = 1} }) minetest.register_tool("default:shovel_mese", { - description = "Mese Shovel", + description = S("Mese Shovel"), inventory_image = "default_tool_meseshovel.png", wield_image = "default_tool_meseshovel.png^[transformR90", tool_capabilities = { @@ -184,10 +195,11 @@ minetest.register_tool("default:shovel_mese", { damage_groups = {fleshy=4}, }, sound = {breaks = "default_tool_breaks"}, + groups = {shovel = 1} }) minetest.register_tool("default:shovel_diamond", { - description = "Diamond Shovel", + description = S("Diamond Shovel"), inventory_image = "default_tool_diamondshovel.png", wield_image = "default_tool_diamondshovel.png^[transformR90", tool_capabilities = { @@ -199,6 +211,7 @@ minetest.register_tool("default:shovel_diamond", { damage_groups = {fleshy=4}, }, sound = {breaks = "default_tool_breaks"}, + groups = {shovel = 1} }) -- @@ -206,7 +219,7 @@ minetest.register_tool("default:shovel_diamond", { -- minetest.register_tool("default:axe_wood", { - description = "Wooden Axe", + description = S("Wooden Axe"), inventory_image = "default_tool_woodaxe.png", tool_capabilities = { full_punch_interval = 1.0, @@ -216,12 +229,12 @@ minetest.register_tool("default:axe_wood", { }, damage_groups = {fleshy=2}, }, - groups = {flammable = 2}, sound = {breaks = "default_tool_breaks"}, + groups = {axe = 1, flammable = 2} }) minetest.register_tool("default:axe_stone", { - description = "Stone Axe", + description = S("Stone Axe"), inventory_image = "default_tool_stoneaxe.png", tool_capabilities = { full_punch_interval = 1.2, @@ -232,10 +245,11 @@ minetest.register_tool("default:axe_stone", { damage_groups = {fleshy=3}, }, sound = {breaks = "default_tool_breaks"}, + groups = {axe = 1} }) minetest.register_tool("default:axe_bronze", { - description = "Bronze Axe", + description = S("Bronze Axe"), inventory_image = "default_tool_bronzeaxe.png", tool_capabilities = { full_punch_interval = 1.0, @@ -246,10 +260,11 @@ minetest.register_tool("default:axe_bronze", { damage_groups = {fleshy=4}, }, sound = {breaks = "default_tool_breaks"}, + groups = {axe = 1} }) minetest.register_tool("default:axe_steel", { - description = "Steel Axe", + description = S("Steel Axe"), inventory_image = "default_tool_steelaxe.png", tool_capabilities = { full_punch_interval = 1.0, @@ -260,10 +275,11 @@ minetest.register_tool("default:axe_steel", { damage_groups = {fleshy=4}, }, sound = {breaks = "default_tool_breaks"}, + groups = {axe = 1} }) minetest.register_tool("default:axe_mese", { - description = "Mese Axe", + description = S("Mese Axe"), inventory_image = "default_tool_meseaxe.png", tool_capabilities = { full_punch_interval = 0.9, @@ -274,10 +290,11 @@ minetest.register_tool("default:axe_mese", { damage_groups = {fleshy=6}, }, sound = {breaks = "default_tool_breaks"}, + groups = {axe = 1} }) minetest.register_tool("default:axe_diamond", { - description = "Diamond Axe", + description = S("Diamond Axe"), inventory_image = "default_tool_diamondaxe.png", tool_capabilities = { full_punch_interval = 0.9, @@ -288,6 +305,7 @@ minetest.register_tool("default:axe_diamond", { damage_groups = {fleshy=7}, }, sound = {breaks = "default_tool_breaks"}, + groups = {axe = 1} }) -- @@ -295,7 +313,7 @@ minetest.register_tool("default:axe_diamond", { -- minetest.register_tool("default:sword_wood", { - description = "Wooden Sword", + description = S("Wooden Sword"), inventory_image = "default_tool_woodsword.png", tool_capabilities = { full_punch_interval = 1, @@ -305,12 +323,12 @@ minetest.register_tool("default:sword_wood", { }, damage_groups = {fleshy=2}, }, - groups = {flammable = 2}, sound = {breaks = "default_tool_breaks"}, + groups = {sword = 1, flammable = 2} }) minetest.register_tool("default:sword_stone", { - description = "Stone Sword", + description = S("Stone Sword"), inventory_image = "default_tool_stonesword.png", tool_capabilities = { full_punch_interval = 1.2, @@ -321,10 +339,11 @@ minetest.register_tool("default:sword_stone", { damage_groups = {fleshy=4}, }, sound = {breaks = "default_tool_breaks"}, + groups = {sword = 1} }) minetest.register_tool("default:sword_bronze", { - description = "Bronze Sword", + description = S("Bronze Sword"), inventory_image = "default_tool_bronzesword.png", tool_capabilities = { full_punch_interval = 0.8, @@ -335,10 +354,11 @@ minetest.register_tool("default:sword_bronze", { damage_groups = {fleshy=6}, }, sound = {breaks = "default_tool_breaks"}, + groups = {sword = 1} }) minetest.register_tool("default:sword_steel", { - description = "Steel Sword", + description = S("Steel Sword"), inventory_image = "default_tool_steelsword.png", tool_capabilities = { full_punch_interval = 0.8, @@ -349,10 +369,11 @@ minetest.register_tool("default:sword_steel", { damage_groups = {fleshy=6}, }, sound = {breaks = "default_tool_breaks"}, + groups = {sword = 1} }) minetest.register_tool("default:sword_mese", { - description = "Mese Sword", + description = S("Mese Sword"), inventory_image = "default_tool_mesesword.png", tool_capabilities = { full_punch_interval = 0.7, @@ -363,10 +384,11 @@ minetest.register_tool("default:sword_mese", { damage_groups = {fleshy=7}, }, sound = {breaks = "default_tool_breaks"}, + groups = {sword = 1} }) minetest.register_tool("default:sword_diamond", { - description = "Diamond Sword", + description = S("Diamond Sword"), inventory_image = "default_tool_diamondsword.png", tool_capabilities = { full_punch_interval = 0.7, @@ -377,10 +399,11 @@ minetest.register_tool("default:sword_diamond", { damage_groups = {fleshy=8}, }, sound = {breaks = "default_tool_breaks"}, + groups = {sword = 1} }) minetest.register_tool("default:key", { - description = "Key", + description = S("Key"), inventory_image = "default_key.png", groups = {key = 1, not_in_creative_inventory = 1}, stack_max = 1, diff --git a/mods/default/torch.lua b/mods/default/torch.lua index 5de5f89..fcdc1fe 100644 --- a/mods/default/torch.lua +++ b/mods/default/torch.lua @@ -1,3 +1,8 @@ +-- default/torch.lua + +-- support for MT game translation. +local S = default.get_translator + local function on_flood(pos, oldnode, newnode) minetest.add_item(pos, ItemStack("default:torch 1")) -- Play flame-extinguish sound if liquid is not an 'igniter' @@ -14,7 +19,7 @@ local function on_flood(pos, oldnode, newnode) end minetest.register_node("default:torch", { - description = "Torch", + description = S("Torch"), drawtype = "mesh", mesh = "torch_floor.obj", inventory_image = "default_torch_on_floor.png", diff --git a/mods/default/trees.lua b/mods/default/trees.lua index 564b714..ad3e3f4 100644 --- a/mods/default/trees.lua +++ b/mods/default/trees.lua @@ -1,3 +1,8 @@ +-- default/trees.lua + +-- support for MT game translation. +local S = default.get_translator + local random = math.random -- @@ -560,9 +565,12 @@ function default.sapling_on_place(itemstack, placer, pointed_thing, interval) then minetest.record_protection_violation(pos, player_name) -- Print extra information to explain +-- minetest.chat_send_player(player_name, +-- itemstack:get_definition().description .. " will intersect protection " .. +-- "on growth") minetest.chat_send_player(player_name, - itemstack:get_definition().description .. " will intersect protection " .. - "on growth") + S("@1 will intersect protection on growth.", + itemstack:get_definition().description)) return itemstack end diff --git a/mods/doors/README.txt b/mods/doors/README.txt deleted file mode 100644 index 9c114b0..0000000 --- a/mods/doors/README.txt +++ /dev/null @@ -1,85 +0,0 @@ -Minetest Game mod: doors -======================== -See license.txt for license information. - -Authors of source code ----------------------- -Originally by PilzAdam (MIT) - -Modified by BlockMen (MIT): Added sounds, glass doors (glass, obsidian glass) and trapdoor. - -Modified by sofar (sofar@foo-projects.org) (MIT): -Added Steel trapdoor. -Re-implemented most of the door algorithms, added meshes, UV wrapped texture. -Added doors API to facilitate coding mods accessing and operating doors. -Added Fence Gate model, code, and sounds. - -Various Minetest developers and contributors (MIT) - - -Authors of media (textures) ---------------------------- -Following textures created by Fernando Zapata (CC BY-SA 3.0): - door_wood.png - door_wood_a.png - door_wood_a_r.png - door_wood_b.png - door_wood_b_r.png - -Following textures created by BlockMen (CC BY-SA 3.0): - door_trapdoor.png - door_obsidian_glass_side.png - -Following textures created by celeron55 (CC BY-SA 3.0): - door_glass_a.png - door_glass_b.png - -Following textures created by PenguinDad (CC BY-SA 4.0): - door_glass.png - door_obsidian_glass.png - -Following textures created by sofar (CC-BY-SA-3.0): - doors_trapdoor_steel.png - doors_trapdoor_steel_side.png - door_trapdoor_side.png - -Obsidian door textures by red-001 based on textures by Pilzadam and BlockMen (CC BY-SA 3.0): - door_obsidian_glass.png - -Glass door textures by Krock and paramat based on textures by VanessaE (CC BY-SA 3.0): - doors_door_glass.png - doors_item_glass.png - -All other textures (created by PilzAdam) (CC BY-SA 3.0): - -Door textures were converted to the new texture map by sofar, paramat and -red-001, under the same license as the originals. - - -Authors of media (models) -------------------------- -Door 3d models by sofar (CC-BY-SA-3.0) - - door_a.obj - - door_b.obj -Fence gate models by sofar (CC-BY-SA-3.0) - - fencegate_open.obj - - fencegate_closed.obj - - -Authors of media (sounds) -------------------------- -Opening-Sound created by CGEffex (CC BY 3.0), modified by BlockMen - door_open.ogg -Closing-Sound created by bennstir (CC BY 3.0) - door_close.ogg -fencegate_open.ogg: - http://www.freesound.org/people/mhtaylor67/sounds/126041/ - (CC0 1.0) -fencegate_close.ogg: - http://www.freesound.org/people/BarkersPinhead/sounds/274807/ - (CC-BY-3.0) - http://www.freesound.org/people/rivernile7/sounds/249573/ - (CC-BY-3.0) -Steel door sounds open & close (CC-BY-3.0) by HazMatt - - http://www.freesound.org/people/HazMattt/sounds/187283/ - doors_steel_door_open.ogg - doors_steel_door_close.ogg -doors_glass_door_open.ogg, doors_glass_door_close.ogg: - https://www.freesound.org/people/SkeetMasterFunk69/sounds/235546/ (CC0 1.0) diff --git a/mods/doors/depends.txt b/mods/doors/depends.txt deleted file mode 100644 index 5e28bee..0000000 --- a/mods/doors/depends.txt +++ /dev/null @@ -1,2 +0,0 @@ -default -screwdriver? diff --git a/mods/doors/init.lua b/mods/doors/init.lua deleted file mode 100644 index 0205ec7..0000000 --- a/mods/doors/init.lua +++ /dev/null @@ -1,868 +0,0 @@ --- our API object -doors = {} - -doors.registered_doors = {} -doors.registered_trapdoors = {} - -local function replace_old_owner_information(pos) - local meta = minetest.get_meta(pos) - local owner = meta:get_string("doors_owner") - if owner and owner ~= "" then - meta:set_string("owner", owner) - meta:set_string("doors_owner", "") - end -end - --- returns an object to a door object or nil -function doors.get(pos) - local node_name = minetest.get_node(pos).name - if doors.registered_doors[node_name] then - -- A normal upright door - return { - pos = pos, - open = function(self, player) - if self:state() then - return false - end - return doors.door_toggle(self.pos, nil, player) - end, - close = function(self, player) - if not self:state() then - return false - end - return doors.door_toggle(self.pos, nil, player) - end, - toggle = function(self, player) - return doors.door_toggle(self.pos, nil, player) - end, - state = function(self) - local state = minetest.get_meta(self.pos):get_int("state") - return state %2 == 1 - end - } - elseif doors.registered_trapdoors[node_name] then - -- A trapdoor - return { - pos = pos, - open = function(self, player) - if self:state() then - return false - end - return doors.trapdoor_toggle(self.pos, nil, player) - end, - close = function(self, player) - if not self:state() then - return false - end - return doors.trapdoor_toggle(self.pos, nil, player) - end, - toggle = function(self, player) - return doors.trapdoor_toggle(self.pos, nil, player) - end, - state = function(self) - return minetest.get_node(self.pos).name:sub(-5) == "_open" - end - } - else - return nil - end -end - --- this hidden node is placed on top of the bottom, and prevents --- nodes from being placed in the top half of the door. -minetest.register_node("doors:hidden", { - description = "Hidden Door Segment", - -- can't use airlike otherwise falling nodes will turn to entities - -- and will be forever stuck until door is removed. - drawtype = "nodebox", - paramtype = "light", - paramtype2 = "facedir", - sunlight_propagates = true, - -- has to be walkable for falling nodes to stop falling. - walkable = true, - pointable = false, - diggable = false, - buildable_to = false, - floodable = false, - drop = "", - groups = {not_in_creative_inventory = 1}, - on_blast = function() end, - tiles = {"doors_blank.png"}, - -- 1px transparent block inside door hinge near node top. - node_box = { - type = "fixed", - fixed = {-15/32, 13/32, -15/32, -13/32, 1/2, -13/32}, - }, - -- collision_box needed otherise selection box would be full node size - collision_box = { - type = "fixed", - fixed = {-15/32, 13/32, -15/32, -13/32, 1/2, -13/32}, - }, -}) - --- table used to aid door opening/closing -local transform = { - { - {v = "_a", param2 = 3}, - {v = "_a", param2 = 0}, - {v = "_a", param2 = 1}, - {v = "_a", param2 = 2}, - }, - { - {v = "_b", param2 = 1}, - {v = "_b", param2 = 2}, - {v = "_b", param2 = 3}, - {v = "_b", param2 = 0}, - }, - { - {v = "_b", param2 = 1}, - {v = "_b", param2 = 2}, - {v = "_b", param2 = 3}, - {v = "_b", param2 = 0}, - }, - { - {v = "_a", param2 = 3}, - {v = "_a", param2 = 0}, - {v = "_a", param2 = 1}, - {v = "_a", param2 = 2}, - }, -} - -function doors.door_toggle(pos, node, clicker) - local meta = minetest.get_meta(pos) - node = node or minetest.get_node(pos) - local def = minetest.registered_nodes[node.name] - local name = def.door.name - - local state = meta:get_string("state") - if state == "" then - -- fix up lvm-placed right-hinged doors, default closed - if node.name:sub(-2) == "_b" then - state = 2 - else - state = 0 - end - else - state = tonumber(state) - end - - replace_old_owner_information(pos) - - if clicker and not default.can_interact_with_node(clicker, pos) then - return false - end - - -- until Lua-5.2 we have no bitwise operators :( - if state % 2 == 1 then - state = state - 1 - else - state = state + 1 - end - - local dir = node.param2 - - -- It's possible param2 is messed up, so, validate before using - -- the input data. This indicates something may have rotated - -- the door, even though that is not supported. - if not transform[state + 1] or not transform[state + 1][dir + 1] then - return false - end - - if state % 2 == 0 then - minetest.sound_play(def.door.sounds[1], - {pos = pos, gain = 0.3, max_hear_distance = 10}) - else - minetest.sound_play(def.door.sounds[2], - {pos = pos, gain = 0.3, max_hear_distance = 10}) - end - - minetest.swap_node(pos, { - name = name .. transform[state + 1][dir+1].v, - param2 = transform[state + 1][dir+1].param2 - }) - meta:set_int("state", state) - - return true -end - - -local function on_place_node(place_to, newnode, - placer, oldnode, itemstack, pointed_thing) - -- Run script hook - for _, callback in ipairs(minetest.registered_on_placenodes) do - -- Deepcopy pos, node and pointed_thing because callback can modify them - local place_to_copy = {x = place_to.x, y = place_to.y, z = place_to.z} - local newnode_copy = - {name = newnode.name, param1 = newnode.param1, param2 = newnode.param2} - local oldnode_copy = - {name = oldnode.name, param1 = oldnode.param1, param2 = oldnode.param2} - local pointed_thing_copy = { - type = pointed_thing.type, - above = vector.new(pointed_thing.above), - under = vector.new(pointed_thing.under), - ref = pointed_thing.ref, - } - callback(place_to_copy, newnode_copy, placer, - oldnode_copy, itemstack, pointed_thing_copy) - end -end - -local function can_dig_door(pos, digger) - replace_old_owner_information(pos) - return default.can_interact_with_node(digger, pos) -end - -function doors.register(name, def) - if not name:find(":") then - name = "doors:" .. name - end - - -- replace old doors of this type automatically - minetest.register_lbm({ - name = ":doors:replace_" .. name:gsub(":", "_"), - nodenames = {name.."_b_1", name.."_b_2"}, - action = function(pos, node) - local l = tonumber(node.name:sub(-1)) - local meta = minetest.get_meta(pos) - local h = meta:get_int("right") + 1 - local p2 = node.param2 - local replace = { - {{type = "a", state = 0}, {type = "a", state = 3}}, - {{type = "b", state = 1}, {type = "b", state = 2}} - } - local new = replace[l][h] - -- retain infotext and doors_owner fields - minetest.swap_node(pos, {name = name .. "_" .. new.type, param2 = p2}) - meta:set_int("state", new.state) - -- properly place doors:hidden at the right spot - local p3 = p2 - if new.state >= 2 then - p3 = (p3 + 3) % 4 - end - if new.state % 2 == 1 then - if new.state >= 2 then - p3 = (p3 + 1) % 4 - else - p3 = (p3 + 3) % 4 - end - end - -- wipe meta on top node as it's unused - minetest.set_node({x = pos.x, y = pos.y + 1, z = pos.z}, - {name = "doors:hidden", param2 = p3}) - end - }) - - minetest.register_craftitem(":" .. name, { - description = def.description, - inventory_image = def.inventory_image, - groups = table.copy(def.groups), - - on_place = function(itemstack, placer, pointed_thing) - local pos - - if not pointed_thing.type == "node" then - return itemstack - end - - local node = minetest.get_node(pointed_thing.under) - local pdef = minetest.registered_nodes[node.name] - if pdef and pdef.on_rightclick and - not (placer and placer:is_player() and - placer:get_player_control().sneak) then - return pdef.on_rightclick(pointed_thing.under, - node, placer, itemstack, pointed_thing) - end - - if pdef and pdef.buildable_to then - pos = pointed_thing.under - else - pos = pointed_thing.above - node = minetest.get_node(pos) - pdef = minetest.registered_nodes[node.name] - if not pdef or not pdef.buildable_to then - return itemstack - end - end - - local above = {x = pos.x, y = pos.y + 1, z = pos.z} - local top_node = minetest.get_node_or_nil(above) - local topdef = top_node and minetest.registered_nodes[top_node.name] - - if not topdef or not topdef.buildable_to then - return itemstack - end - - local pn = placer and placer:get_player_name() or "" - if minetest.is_protected(pos, pn) or minetest.is_protected(above, pn) then - return itemstack - end - - local dir = placer and minetest.dir_to_facedir(placer:get_look_dir()) or 0 - - local ref = { - {x = -1, y = 0, z = 0}, - {x = 0, y = 0, z = 1}, - {x = 1, y = 0, z = 0}, - {x = 0, y = 0, z = -1}, - } - - local aside = { - x = pos.x + ref[dir + 1].x, - y = pos.y + ref[dir + 1].y, - z = pos.z + ref[dir + 1].z, - } - - local state = 0 - if minetest.get_item_group(minetest.get_node(aside).name, "door") == 1 then - state = state + 2 - minetest.set_node(pos, {name = name .. "_b", param2 = dir}) - minetest.set_node(above, {name = "doors:hidden", param2 = (dir + 3) % 4}) - else - minetest.set_node(pos, {name = name .. "_a", param2 = dir}) - minetest.set_node(above, {name = "doors:hidden", param2 = dir}) - end - - local meta = minetest.get_meta(pos) - meta:set_int("state", state) - - if def.protected then - meta:set_string("owner", pn) - meta:set_string("infotext", "Owned by " .. pn) - end - - if not (creative and creative.is_enabled_for and creative.is_enabled_for(pn)) then - itemstack:take_item() - end - - minetest.sound_play(def.sounds.place, {pos = pos}) - - on_place_node(pos, minetest.get_node(pos), - placer, node, itemstack, pointed_thing) - - return itemstack - end - }) - def.inventory_image = nil - - if def.recipe then - minetest.register_craft({ - output = name, - recipe = def.recipe, - }) - end - def.recipe = nil - - if not def.sounds then - def.sounds = default.node_sound_wood_defaults() - end - - if not def.sound_open then - def.sound_open = "doors_door_open" - end - - if not def.sound_close then - def.sound_close = "doors_door_close" - end - - def.groups.not_in_creative_inventory = 1 - def.groups.door = 1 - def.drop = name - def.door = { - name = name, - sounds = { def.sound_close, def.sound_open }, - } - if not def.on_rightclick then - def.on_rightclick = function(pos, node, clicker, itemstack, pointed_thing) - doors.door_toggle(pos, node, clicker) - return itemstack - end - end - def.after_dig_node = function(pos, node, meta, digger) - minetest.remove_node({x = pos.x, y = pos.y + 1, z = pos.z}) - minetest.check_for_falling({x = pos.x, y = pos.y + 1, z = pos.z}) - end - def.on_rotate = function(pos, node, user, mode, new_param2) - return false - end - - if def.protected then - def.can_dig = can_dig_door - def.on_blast = function() end - def.on_key_use = function(pos, player) - local door = doors.get(pos) - door:toggle(player) - end - def.on_skeleton_key_use = function(pos, player, newsecret) - replace_old_owner_information(pos) - local meta = minetest.get_meta(pos) - local owner = meta:get_string("owner") - local pname = player:get_player_name() - - -- verify placer is owner of lockable door - if owner ~= pname then - minetest.record_protection_violation(pos, pname) - minetest.chat_send_player(pname, "You do not own this locked door.") - return nil - end - - local secret = meta:get_string("key_lock_secret") - if secret == "" then - secret = newsecret - meta:set_string("key_lock_secret", secret) - end - - return secret, "a locked door", owner - end - def.node_dig_prediction = "" - else - def.on_blast = function(pos, intensity) - minetest.remove_node(pos) - -- hidden node doesn't get blasted away. - minetest.remove_node({x = pos.x, y = pos.y + 1, z = pos.z}) - return {name} - end - end - - def.on_destruct = function(pos) - minetest.remove_node({x = pos.x, y = pos.y + 1, z = pos.z}) - end - - def.drawtype = "mesh" - def.paramtype = "light" - def.paramtype2 = "facedir" - def.sunlight_propagates = true - def.walkable = true - def.is_ground_content = false - def.buildable_to = false - def.selection_box = {type = "fixed", fixed = {-1/2,-1/2,-1/2,1/2,3/2,-6/16}} - def.collision_box = {type = "fixed", fixed = {-1/2,-1/2,-1/2,1/2,3/2,-6/16}} - - def.mesh = "door_a.obj" - minetest.register_node(":" .. name .. "_a", def) - - def.mesh = "door_b.obj" - minetest.register_node(":" .. name .. "_b", def) - - doors.registered_doors[name .. "_a"] = true - doors.registered_doors[name .. "_b"] = true -end - -doors.register("door_wood", { - tiles = {{ name = "doors_door_wood.png", backface_culling = true }}, - description = "Wooden Door", - inventory_image = "doors_item_wood.png", - groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2}, - recipe = { - {"group:wood", "group:wood"}, - {"group:wood", "group:wood"}, - {"group:wood", "group:wood"}, - } -}) - -doors.register("door_steel", { - tiles = {{name = "doors_door_steel.png", backface_culling = true}}, - description = "Steel Door", - inventory_image = "doors_item_steel.png", - protected = true, - groups = {cracky = 1, level = 2}, - sounds = default.node_sound_metal_defaults(), - sound_open = "doors_steel_door_open", - sound_close = "doors_steel_door_close", - recipe = { - {"default:steel_ingot", "default:steel_ingot"}, - {"default:steel_ingot", "default:steel_ingot"}, - {"default:steel_ingot", "default:steel_ingot"}, - } -}) - -doors.register("door_glass", { - tiles = {"doors_door_glass.png"}, - description = "Glass Door", - inventory_image = "doors_item_glass.png", - groups = {cracky=3, oddly_breakable_by_hand=3}, - sounds = default.node_sound_glass_defaults(), - sound_open = "doors_glass_door_open", - sound_close = "doors_glass_door_close", - recipe = { - {"default:glass", "default:glass"}, - {"default:glass", "default:glass"}, - {"default:glass", "default:glass"}, - } -}) - -doors.register("door_obsidian_glass", { - tiles = {"doors_door_obsidian_glass.png"}, - description = "Obsidian Glass Door", - inventory_image = "doors_item_obsidian_glass.png", - groups = {cracky=3}, - sounds = default.node_sound_glass_defaults(), - sound_open = "doors_glass_door_open", - sound_close = "doors_glass_door_close", - recipe = { - {"default:obsidian_glass", "default:obsidian_glass"}, - {"default:obsidian_glass", "default:obsidian_glass"}, - {"default:obsidian_glass", "default:obsidian_glass"}, - }, -}) - --- Capture mods using the old API as best as possible. -function doors.register_door(name, def) - if def.only_placer_can_open then - def.protected = true - end - def.only_placer_can_open = nil - - local i = name:find(":") - local modname = name:sub(1, i - 1) - if not def.tiles then - if def.protected then - def.tiles = {{name = "doors_door_steel.png", backface_culling = true}} - else - def.tiles = {{name = "doors_door_wood.png", backface_culling = true}} - end - minetest.log("warning", modname .. " registered door \"" .. name .. "\" " .. - "using deprecated API method \"doors.register_door()\" but " .. - "did not provide the \"tiles\" parameter. A fallback tiledef " .. - "will be used instead.") - end - - doors.register(name, def) -end - -----trapdoor---- - -function doors.trapdoor_toggle(pos, node, clicker) - node = node or minetest.get_node(pos) - - replace_old_owner_information(pos) - - if clicker and not default.can_interact_with_node(clicker, pos) then - return false - end - - local def = minetest.registered_nodes[node.name] - - if string.sub(node.name, -5) == "_open" then - minetest.sound_play(def.sound_close, - {pos = pos, gain = 0.3, max_hear_distance = 10}) - minetest.swap_node(pos, {name = string.sub(node.name, 1, - string.len(node.name) - 5), param1 = node.param1, param2 = node.param2}) - else - minetest.sound_play(def.sound_open, - {pos = pos, gain = 0.3, max_hear_distance = 10}) - minetest.swap_node(pos, {name = node.name .. "_open", - param1 = node.param1, param2 = node.param2}) - end -end - -function doors.register_trapdoor(name, def) - if not name:find(":") then - name = "doors:" .. name - end - - local name_closed = name - local name_opened = name.."_open" - - def.on_rightclick = function(pos, node, clicker, itemstack, pointed_thing) - doors.trapdoor_toggle(pos, node, clicker) - return itemstack - end - - -- Common trapdoor configuration - def.drawtype = "nodebox" - def.paramtype = "light" - def.paramtype2 = "facedir" - def.is_ground_content = false - - if def.protected then - def.can_dig = can_dig_door - def.after_place_node = function(pos, placer, itemstack, pointed_thing) - local pn = placer:get_player_name() - local meta = minetest.get_meta(pos) - meta:set_string("owner", pn) - meta:set_string("infotext", "Owned by "..pn) - - return (creative and creative.is_enabled_for and creative.is_enabled_for(pn)) - end - - def.on_blast = function() end - def.on_key_use = function(pos, player) - local door = doors.get(pos) - door:toggle(player) - end - def.on_skeleton_key_use = function(pos, player, newsecret) - replace_old_owner_information(pos) - local meta = minetest.get_meta(pos) - local owner = meta:get_string("owner") - local pname = player:get_player_name() - - -- verify placer is owner of lockable door - if owner ~= pname then - minetest.record_protection_violation(pos, pname) - minetest.chat_send_player(pname, "You do not own this trapdoor.") - return nil - end - - local secret = meta:get_string("key_lock_secret") - if secret == "" then - secret = newsecret - meta:set_string("key_lock_secret", secret) - end - - return secret, "a locked trapdoor", owner - end - def.node_dig_prediction = "" - else - def.on_blast = function(pos, intensity) - minetest.remove_node(pos) - return {name} - end - end - - if not def.sounds then - def.sounds = default.node_sound_wood_defaults() - end - - if not def.sound_open then - def.sound_open = "doors_door_open" - end - - if not def.sound_close then - def.sound_close = "doors_door_close" - end - - local def_opened = table.copy(def) - local def_closed = table.copy(def) - - def_closed.node_box = { - type = "fixed", - fixed = {-0.5, -0.5, -0.5, 0.5, -6/16, 0.5} - } - def_closed.selection_box = { - type = "fixed", - fixed = {-0.5, -0.5, -0.5, 0.5, -6/16, 0.5} - } - def_closed.tiles = {def.tile_front, - def.tile_front .. '^[transformFY', - def.tile_side, def.tile_side, - def.tile_side, def.tile_side} - - def_opened.node_box = { - type = "fixed", - fixed = {-0.5, -0.5, 6/16, 0.5, 0.5, 0.5} - } - def_opened.selection_box = { - type = "fixed", - fixed = {-0.5, -0.5, 6/16, 0.5, 0.5, 0.5} - } - def_opened.tiles = {def.tile_side, def.tile_side, - def.tile_side .. '^[transform3', - def.tile_side .. '^[transform1', - def.tile_front .. '^[transform46', - def.tile_front .. '^[transform6'} - - def_opened.drop = name_closed - def_opened.groups.not_in_creative_inventory = 1 - - minetest.register_node(name_opened, def_opened) - minetest.register_node(name_closed, def_closed) - - doors.registered_trapdoors[name_opened] = true - doors.registered_trapdoors[name_closed] = true -end - -doors.register_trapdoor("doors:trapdoor", { - description = "Wooden Trapdoor", - inventory_image = "doors_trapdoor.png", - wield_image = "doors_trapdoor.png", - tile_front = "doors_trapdoor.png", - tile_side = "doors_trapdoor_side.png", - groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2, door = 1}, -}) - -doors.register_trapdoor("doors:trapdoor_steel", { - description = "Steel Trapdoor", - inventory_image = "doors_trapdoor_steel.png", - wield_image = "doors_trapdoor_steel.png", - tile_front = "doors_trapdoor_steel.png", - tile_side = "doors_trapdoor_steel_side.png", - protected = true, - sounds = default.node_sound_metal_defaults(), - sound_open = "doors_steel_door_open", - sound_close = "doors_steel_door_close", - groups = {cracky = 1, level = 2, door = 1}, -}) - -minetest.register_craft({ - output = 'doors:trapdoor 2', - recipe = { - {'group:wood', 'group:wood', 'group:wood'}, - {'group:wood', 'group:wood', 'group:wood'}, - {'', '', ''}, - } -}) - -minetest.register_craft({ - output = 'doors:trapdoor_steel', - recipe = { - {'default:steel_ingot', 'default:steel_ingot'}, - {'default:steel_ingot', 'default:steel_ingot'}, - } -}) - - -----fence gate---- - -function doors.register_fencegate(name, def) - local fence = { - description = def.description, - drawtype = "mesh", - tiles = {}, - paramtype = "light", - paramtype2 = "facedir", - sunlight_propagates = true, - is_ground_content = false, - drop = name .. "_closed", - connect_sides = {"left", "right"}, - groups = def.groups, - sounds = def.sounds, - on_rightclick = function(pos, node, clicker, itemstack, pointed_thing) - local node_def = minetest.registered_nodes[node.name] - minetest.swap_node(pos, {name = node_def.gate, param2 = node.param2}) - minetest.sound_play(node_def.sound, {pos = pos, gain = 0.3, - max_hear_distance = 8}) - return itemstack - end, - selection_box = { - type = "fixed", - fixed = {-1/2, -1/2, -1/4, 1/2, 1/2, 1/4}, - }, - } - - - if type(def.texture) == "string" then - fence.tiles[1] = {name = def.texture, backface_culling = true} - elseif def.texture.backface_culling == nil then - fence.tiles[1] = table.copy(def.texture) - fence.tiles[1].backface_culling = true - else - fence.tiles[1] = def.texture - end - - if not fence.sounds then - fence.sounds = default.node_sound_wood_defaults() - end - - fence.groups.fence = 1 - - local fence_closed = table.copy(fence) - fence_closed.mesh = "doors_fencegate_closed.obj" - fence_closed.gate = name .. "_open" - fence_closed.sound = "doors_fencegate_open" - fence_closed.collision_box = { - type = "fixed", - fixed = {-1/2, -1/2, -1/4, 1/2, 1/2, 1/4}, - } - - local fence_open = table.copy(fence) - fence_open.mesh = "doors_fencegate_open.obj" - fence_open.gate = name .. "_closed" - fence_open.sound = "doors_fencegate_close" - fence_open.groups.not_in_creative_inventory = 1 - fence_open.collision_box = { - type = "fixed", - fixed = {{-1/2, -1/2, -1/4, -3/8, 1/2, 1/4}, - {-1/2, -3/8, -1/2, -3/8, 3/8, 0}}, - } - - minetest.register_node(":" .. name .. "_closed", fence_closed) - minetest.register_node(":" .. name .. "_open", fence_open) - - minetest.register_craft({ - output = name .. "_closed", - recipe = { - {"default:stick", def.material, "default:stick"}, - {"default:stick", def.material, "default:stick"} - } - }) -end - -doors.register_fencegate("doors:gate_wood", { - description = "Apple Wood Fence Gate", - texture = "default_wood.png", - material = "default:wood", - groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2} -}) - -doors.register_fencegate("doors:gate_acacia_wood", { - description = "Acacia Wood Fence Gate", - texture = "default_acacia_wood.png", - material = "default:acacia_wood", - groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2} -}) - -doors.register_fencegate("doors:gate_junglewood", { - description = "Jungle Wood Fence Gate", - texture = "default_junglewood.png", - material = "default:junglewood", - groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2} -}) - -doors.register_fencegate("doors:gate_pine_wood", { - description = "Pine Wood Fence Gate", - texture = "default_pine_wood.png", - material = "default:pine_wood", - groups = {choppy = 3, oddly_breakable_by_hand = 2, flammable = 3} -}) - -doors.register_fencegate("doors:gate_aspen_wood", { - description = "Aspen Wood Fence Gate", - texture = "default_aspen_wood.png", - material = "default:aspen_wood", - groups = {choppy = 3, oddly_breakable_by_hand = 2, flammable = 3} -}) - - -----fuels---- - -minetest.register_craft({ - type = "fuel", - recipe = "doors:trapdoor", - burntime = 7, -}) - -minetest.register_craft({ - type = "fuel", - recipe = "doors:door_wood", - burntime = 14, -}) - -minetest.register_craft({ - type = "fuel", - recipe = "doors:gate_wood_closed", - burntime = 7, -}) - -minetest.register_craft({ - type = "fuel", - recipe = "doors:gate_acacia_wood_closed", - burntime = 8, -}) - -minetest.register_craft({ - type = "fuel", - recipe = "doors:gate_junglewood_closed", - burntime = 9, -}) - -minetest.register_craft({ - type = "fuel", - recipe = "doors:gate_pine_wood_closed", - burntime = 6, -}) - -minetest.register_craft({ - type = "fuel", - recipe = "doors:gate_aspen_wood_closed", - burntime = 5, -}) diff --git a/mods/doors/license.txt b/mods/doors/license.txt deleted file mode 100644 index 8ce73c4..0000000 --- a/mods/doors/license.txt +++ /dev/null @@ -1,164 +0,0 @@ -License of source code ----------------------- - -The MIT License (MIT) -Copyright (C) 2012-2016 PilzAdam -Copyright (C) 2014-2016 BlockMen -Copyright (C) 2015-2016 sofar (sofar@foo-projects.org) -Copyright (C) 2012-2016 Various Minetest developers and contributors - -Permission is hereby granted, free of charge, to any person obtaining a copy of this -software and associated documentation files (the "Software"), to deal in the Software -without restriction, including without limitation the rights to use, copy, modify, merge, -publish, distribute, sublicense, and/or sell copies of the Software, and to permit -persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or -substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, -INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR -PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE -FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -DEALINGS IN THE SOFTWARE. - -For more details: -https://opensource.org/licenses/MIT - - -Licenses of media (textures, models and sounds) ------------------------------------------------ - -Attribution-ShareAlike 3.0 Unported (CC BY-SA 3.0) -Copyright (C) 2011-2016 Fernando Zapata -Copyright (C) 2014-2016 celeron55 -Copyright (C) 2012-2016 PilzAdam -Copyright (C) 2014-2016 BlockMen -Copyright (C) 2015-2016 sofar -Copyright (C) 2016 red-001 -Copyright (C) 2016 paramat - -You are free to: -Share — copy and redistribute the material in any medium or format. -Adapt — remix, transform, and build upon the material for any purpose, even commercially. -The licensor cannot revoke these freedoms as long as you follow the license terms. - -Under the following terms: - -Attribution — You must give appropriate credit, provide a link to the license, and -indicate if changes were made. You may do so in any reasonable manner, but not in any way -that suggests the licensor endorses you or your use. - -ShareAlike — If you remix, transform, or build upon the material, you must distribute -your contributions under the same license as the original. - -No additional restrictions — You may not apply legal terms or technological measures that -legally restrict others from doing anything the license permits. - -Notices: - -You do not have to comply with the license for elements of the material in the public -domain or where your use is permitted by an applicable exception or limitation. -No warranties are given. The license may not give you all of the permissions necessary -for your intended use. For example, other rights such as publicity, privacy, or moral -rights may limit how you use the material. - -For more details: -http://creativecommons.org/licenses/by-sa/3.0/ - ------------------------ - -Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) -Copyright (C) 2014-2016 PenguinDad - -You are free to: -Share — copy and redistribute the material in any medium or format. -Adapt — remix, transform, and build upon the material for any purpose, even commercially. -The licensor cannot revoke these freedoms as long as you follow the license terms. - -Under the following terms: - -Attribution — You must give appropriate credit, provide a link to the license, and -indicate if changes were made. You may do so in any reasonable manner, but not in any way -that suggests the licensor endorses you or your use. - -ShareAlike — If you remix, transform, or build upon the material, you must distribute -your contributions under the same license as the original. - -No additional restrictions — You may not apply legal terms or technological measures that -legally restrict others from doing anything the license permits. - -Notices: - -You do not have to comply with the license for elements of the material in the public -domain or where your use is permitted by an applicable exception or limitation. -No warranties are given. The license may not give you all of the permissions necessary -for your intended use. For example, other rights such as publicity, privacy, or moral -rights may limit how you use the material. - -For more details: -http://creativecommons.org/licenses/by-sa/4.0/ - ------------------------ - -Attribution 3.0 Unported (CC BY 3.0) -Copyright (C) 2014 CGEffex -Copyright (C) 2014 bennstir -Copyright (C) 2016 BarkersPinhead -Copyright (C) 2016 rivernile7 -Copyright (C) 2016 HazMatt - -You are free to: -Share — copy and redistribute the material in any medium or format. -Adapt — remix, transform, and build upon the material for any purpose, even commercially. -The licensor cannot revoke these freedoms as long as you follow the license terms. - -Under the following terms: - -Attribution — You must give appropriate credit, provide a link to the license, and -indicate if changes were made. You may do so in any reasonable manner, but not in any way -that suggests the licensor endorses you or your use. - -No additional restrictions — You may not apply legal terms or technological measures that -legally restrict others from doing anything the license permits. - -Notices: - -You do not have to comply with the license for elements of the material in the public -domain or where your use is permitted by an applicable exception or limitation. -No warranties are given. The license may not give you all of the permissions necessary -for your intended use. For example, other rights such as publicity, privacy, or moral -rights may limit how you use the material. - -For more details: -http://creativecommons.org/licenses/by/3.0/ - ------------------------ - -CC0 1.0 Universal (CC0 1.0) Public Domain Dedication -mhtaylor67 -SkeetMasterFunk69 - -No Copyright - -The person who associated a work with this deed has dedicated the work to the public -domain by waiving all of his or her rights to the work worldwide under copyright law, -including all related and neighboring rights, to the extent allowed by law. - -You can copy, modify, distribute and perform the work, even for commercial purposes, all -without asking permission. See Other Information below. - -Other Information - -In no way are the patent or trademark rights of any person affected by CC0, nor are the -rights that other persons may have in the work or in how the work is used, such as -publicity or privacy rights. -Unless expressly stated otherwise, the person who associated a work with this deed makes -no warranties about the work, and disclaims liability for all uses of the work, to the -fullest extent permitted by applicable law. -When using or citing the work, you should not imply endorsement by the author or the -affirmer. - -For more details: -https://creativecommons.org/publicdomain/zero/1.0/ diff --git a/mods/doors/models/door_a.obj b/mods/doors/models/door_a.obj deleted file mode 100644 index bd5127b..0000000 --- a/mods/doors/models/door_a.obj +++ /dev/null @@ -1,40 +0,0 @@ -# Blender v2.76 (sub 0) OBJ File: 'door_a.blend' -# www.blender.org -mtllib door_a.mtl -o Cube_Cube.001 -v 0.499000 -0.499000 -0.499000 -v 0.499000 1.499000 -0.499000 -v 0.499000 -0.499000 -0.375000 -v 0.499000 1.499000 -0.375000 -v -0.499000 -0.499000 -0.499000 -v -0.499000 1.499000 -0.499000 -v -0.499000 -0.499000 -0.375000 -v -0.499000 1.499000 -0.375000 -vt 0.842105 1.000000 -vt 0.894737 1.000000 -vt 0.894737 0.000000 -vt 0.842105 0.000000 -vt 0.421053 1.000000 -vt 0.421053 0.000000 -vt 0.947368 1.000000 -vt 0.947368 0.000000 -vt 0.000000 1.000000 -vt 0.000000 0.000000 -vt 1.000000 0.500000 -vt 0.947368 0.500000 -vt 1.000000 1.000000 -vt 1.000000 0.000000 -vn 1.000000 0.000000 0.000000 -vn 0.000000 0.000000 1.000000 -vn -1.000000 0.000000 0.000000 -vn 0.000000 0.000000 -1.000000 -vn 0.000000 -1.000000 0.000000 -vn 0.000000 1.000000 0.000000 -usemtl None -s off -f 2/1/1 4/2/1 3/3/1 1/4/1 -f 4/5/2 8/1/2 7/4/2 3/6/2 -f 8/2/3 6/7/3 5/8/3 7/3/3 -f 6/9/4 2/5/4 1/6/4 5/10/4 -f 1/11/5 3/12/5 7/7/5 5/13/5 -f 6/14/6 8/8/6 4/12/6 2/11/6 diff --git a/mods/doors/models/door_b.obj b/mods/doors/models/door_b.obj deleted file mode 100644 index c5607b8..0000000 --- a/mods/doors/models/door_b.obj +++ /dev/null @@ -1,40 +0,0 @@ -# Blender v2.76 (sub 0) OBJ File: 'door_b.blend' -# www.blender.org -mtllib door_b.mtl -o Cube_Cube.001 -v -0.499000 -0.499000 -0.499000 -v -0.499000 1.499000 -0.499000 -v -0.499000 -0.499000 -0.375000 -v -0.499000 1.499000 -0.375000 -v 0.499000 -0.499000 -0.499000 -v 0.499000 1.499000 -0.499000 -v 0.499000 -0.499000 -0.375000 -v 0.499000 1.499000 -0.375000 -vt 0.842105 1.000000 -vt 0.842105 0.000000 -vt 0.894737 0.000000 -vt 0.894737 1.000000 -vt 0.421053 1.000000 -vt 0.421053 0.000000 -vt 0.947368 0.000000 -vt 0.947368 1.000000 -vt 0.000000 1.000000 -vt 0.000000 0.000000 -vt 1.000000 0.000000 -vt 1.000000 0.500000 -vt 0.947368 0.500000 -vt 1.000000 1.000000 -vn -1.000000 0.000000 0.000000 -vn 0.000000 0.000000 1.000000 -vn 1.000000 0.000000 0.000000 -vn 0.000000 0.000000 -1.000000 -vn 0.000000 -1.000000 0.000000 -vn 0.000000 1.000000 0.000000 -usemtl None -s off -f 2/1/1 1/2/1 3/3/1 4/4/1 -f 4/5/2 3/6/2 7/2/2 8/1/2 -f 8/4/3 7/3/3 5/7/3 6/8/3 -f 6/9/4 5/10/4 1/6/4 2/5/4 -f 1/11/5 5/12/5 7/13/5 3/7/5 -f 6/8/6 2/13/6 4/12/6 8/14/6 diff --git a/mods/doors/models/doors_fencegate_closed.obj b/mods/doors/models/doors_fencegate_closed.obj deleted file mode 100644 index 0050f70..0000000 --- a/mods/doors/models/doors_fencegate_closed.obj +++ /dev/null @@ -1,106 +0,0 @@ -# Blender v2.76 (sub 0) OBJ File: 'gate_closed.blend' -# www.blender.org -mtllib gate_closed.mtl -o Cube_Cube.001 -v -0.625000 -0.500000 0.125000 -v -0.625000 0.500100 0.125000 -v -0.625000 -0.500000 -0.125000 -v -0.625000 0.500100 -0.125000 -v -0.375000 -0.500000 0.125000 -v -0.375000 0.500100 0.125000 -v -0.375000 -0.500000 -0.125000 -v -0.375000 0.500100 -0.125000 -v 0.375000 -0.500000 0.125000 -v 0.375000 0.500100 0.125000 -v 0.375000 -0.500000 -0.125000 -v 0.375000 0.500100 -0.125000 -v 0.625000 -0.500000 0.125000 -v 0.625000 0.500100 0.125000 -v 0.625000 -0.500000 -0.125000 -v 0.625000 0.500100 -0.125000 -v -0.375000 0.187500 0.062500 -v -0.375000 0.312500 0.062500 -v -0.375000 0.187500 -0.062500 -v -0.375000 0.312500 -0.062500 -v 0.375000 0.187500 0.062500 -v 0.375000 0.312500 0.062500 -v 0.375000 0.187500 -0.062500 -v 0.375000 0.312500 -0.062500 -v -0.374831 0.187348 0.062500 -v -0.156342 0.187363 0.062500 -v -0.374831 0.187348 -0.062500 -v -0.156342 0.187363 -0.062500 -v 0.374981 -0.343683 0.062500 -v 0.375065 -0.187304 0.062500 -v 0.374981 -0.343683 -0.062500 -v 0.375065 -0.187304 -0.062500 -vt 0.000000 0.750000 -vt 0.000000 0.500000 -vt 1.000000 0.500000 -vt 1.000000 0.750000 -vt 1.000000 1.000000 -vt -0.000000 1.000000 -vt 1.000000 -0.000000 -vt 1.000000 0.250000 -vt 0.000000 0.250000 -vt -0.000000 0.000000 -vt 0.250000 0.000000 -vt 0.250000 0.250000 -vt 0.250000 0.750000 -vt 0.250000 1.000000 -vt 0.500000 -0.000000 -vt 0.500000 0.250000 -vt 0.500000 0.750000 -vt 0.500000 1.000000 -vt 1.000000 0.625000 -vt 0.000000 0.625000 -vt 1.000000 0.875000 -vt 0.000000 0.875000 -vt -0.000000 0.687500 -vt 0.000000 0.562500 -vt 1.000000 0.562500 -vt 1.000000 0.687500 -vt 0.813740 0.249033 -vt 0.201557 0.249293 -vt 0.120995 0.125498 -vt 0.987404 0.125469 -vt 0.125000 0.375000 -vt 0.812500 0.375000 -vt 0.937500 0.500000 -vt 0.062500 0.500000 -vt 0.000000 0.125000 -vt 1.000000 0.125000 -vt 0.312500 0.437500 -vt 0.312500 0.312500 -vt 1.000000 0.312500 -vt 1.000000 0.437500 -vn -1.000000 0.000000 0.000000 -vn 0.000000 0.000000 -1.000000 -vn 1.000000 0.000000 0.000000 -vn 0.000000 0.000000 1.000000 -vn 0.000000 -1.000000 0.000000 -vn 0.000000 1.000000 0.000000 -vn -0.578000 -0.816100 0.000000 -vn 0.576200 0.817300 0.000000 -usemtl None -s off -f 2/1/1 4/2/1 3/3/1 1/4/1 -f 4/4/2 8/5/2 7/6/2 3/1/2 -f 8/7/3 6/8/3 5/9/3 7/10/3 -f 6/2/4 2/9/4 1/8/4 5/3/4 -f 1/9/5 3/10/5 7/11/5 5/12/5 -f 6/6/6 8/1/6 4/13/6 2/14/6 -f 10/1/1 12/2/1 11/3/1 9/4/1 -f 12/2/2 16/9/2 15/8/2 11/3/2 -f 16/7/3 14/8/3 13/9/3 15/10/3 -f 14/4/4 10/5/4 9/6/4 13/1/4 -f 9/12/5 11/11/5 15/15/5 13/16/5 -f 14/14/6 16/13/6 12/17/6 10/18/6 -f 20/2/2 24/3/2 23/19/2 19/20/2 -f 22/1/4 18/4/4 17/21/4 21/22/4 -f 17/23/5 19/24/5 23/25/5 21/26/5 -f 22/21/6 24/5/6 20/6/6 18/22/6 -f 28/27/2 32/28/2 31/29/2 27/30/2 -f 30/31/4 26/32/4 25/33/4 29/34/4 -f 25/35/7 27/10/7 31/7/7 29/36/7 -f 30/37/8 32/38/8 28/39/8 26/40/8 diff --git a/mods/doors/models/doors_fencegate_open.obj b/mods/doors/models/doors_fencegate_open.obj deleted file mode 100644 index 3fb727f..0000000 --- a/mods/doors/models/doors_fencegate_open.obj +++ /dev/null @@ -1,112 +0,0 @@ -# Blender v2.76 (sub 0) OBJ File: 'gate_open.blend' -# www.blender.org -mtllib gate_open.mtl -o Cube_Cube.001 -v -0.625000 -0.500000 0.125000 -v -0.625000 0.500100 0.125000 -v -0.625000 -0.500000 -0.125000 -v -0.625000 0.500100 -0.125000 -v -0.375000 -0.500000 0.125000 -v -0.375000 0.500100 0.125000 -v -0.375000 -0.500000 -0.125000 -v -0.375000 0.500100 -0.125000 -v 0.375000 -0.500000 0.125000 -v 0.375000 0.500100 0.125000 -v 0.375000 -0.500000 -0.125000 -v 0.375000 0.500100 -0.125000 -v 0.625000 -0.500000 0.125000 -v 0.625000 0.500100 0.125000 -v 0.625000 -0.500000 -0.125000 -v 0.625000 0.500100 -0.125000 -v 0.434859 0.187500 -0.872359 -v 0.434859 0.312500 -0.872359 -v 0.559859 0.187500 -0.872359 -v 0.559859 0.312500 -0.872359 -v 0.434859 0.187500 -0.122359 -v 0.434859 0.312500 -0.122359 -v 0.559859 0.187500 -0.122359 -v 0.559859 0.312500 -0.122359 -v 0.434859 0.187348 -0.872190 -v 0.434859 0.187363 -0.653701 -v 0.559859 0.187348 -0.872190 -v 0.559859 0.187363 -0.653701 -v 0.434859 -0.343683 -0.122379 -v 0.434859 -0.187304 -0.122294 -v 0.559859 -0.343683 -0.122379 -v 0.559859 -0.187304 -0.122294 -v 0.499560 -0.442900 0.005495 -vt 0.000000 0.750000 -vt 0.000000 0.500000 -vt 1.000000 0.500000 -vt 1.000000 0.750000 -vt 1.000000 1.000000 -vt -0.000000 1.000000 -vt 1.000000 -0.000000 -vt 1.000000 0.250000 -vt 0.000000 0.250000 -vt -0.000000 0.000000 -vt 0.250000 0.000000 -vt 0.250000 0.250000 -vt 0.250000 0.750000 -vt 0.250000 1.000000 -vt 0.500000 -0.000000 -vt 0.500000 0.250000 -vt 0.500000 0.750000 -vt 0.500000 1.000000 -vt 1.000000 0.625000 -vt 0.000000 0.625000 -vt 1.000000 0.875000 -vt 0.000000 0.875000 -vt -0.000000 0.687500 -vt 0.000000 0.562500 -vt 1.000000 0.562500 -vt 1.000000 0.687500 -vt 0.813740 0.249033 -vt 0.201557 0.249293 -vt 0.120995 0.125498 -vt 0.987404 0.125469 -vt 0.125000 0.375000 -vt 0.812500 0.375000 -vt 0.937500 0.500000 -vt 0.062500 0.500000 -vt 0.000000 0.125000 -vt 1.000000 0.125000 -vt 0.312500 0.437500 -vt 0.312500 0.312500 -vt 1.000000 0.312500 -vt 1.000000 0.437500 -vt 0.312500 0.625000 -vt 0.312500 0.500000 -vt 0.187500 0.500000 -vt 0.187500 0.625000 -vn -1.000000 0.000000 0.000000 -vn 0.000000 0.000000 -1.000000 -vn 1.000000 0.000000 0.000000 -vn 0.000000 0.000000 1.000000 -vn 0.000000 -1.000000 0.000000 -vn 0.000000 1.000000 0.000000 -vn 0.000000 -0.816100 -0.578000 -vn 0.000000 0.817300 0.576200 -usemtl None -s off -f 2/1/1 4/2/1 3/3/1 1/4/1 -f 4/4/2 8/5/2 7/6/2 3/1/2 -f 8/7/3 6/8/3 5/9/3 7/10/3 -f 6/2/4 2/9/4 1/8/4 5/3/4 -f 1/9/5 3/10/5 7/11/5 5/12/5 -f 6/6/6 8/1/6 4/13/6 2/14/6 -f 10/1/1 12/2/1 11/3/1 9/4/1 -f 12/2/2 16/9/2 15/8/2 11/3/2 -f 16/7/3 14/8/3 13/9/3 15/10/3 -f 14/4/4 10/5/4 9/6/4 13/1/4 -f 9/12/5 11/11/5 15/15/5 13/16/5 -f 14/14/6 16/13/6 12/17/6 10/18/6 -f 20/2/3 24/3/3 23/19/3 19/20/3 -f 22/1/1 18/4/1 17/21/1 21/22/1 -f 17/23/5 19/24/5 23/25/5 21/26/5 -f 22/21/6 24/5/6 20/6/6 18/22/6 -f 28/27/3 32/28/3 31/29/3 27/30/3 -f 30/31/1 26/32/1 25/33/1 29/34/1 -f 25/35/7 27/10/7 31/7/7 29/36/7 -f 30/37/8 32/38/8 28/39/8 26/40/8 -f 17/41/2 18/42/2 20/43/2 19/44/2 diff --git a/mods/doors/sounds/doors_door_close.ogg b/mods/doors/sounds/doors_door_close.ogg deleted file mode 100644 index fede4af..0000000 Binary files a/mods/doors/sounds/doors_door_close.ogg and /dev/null differ diff --git a/mods/doors/sounds/doors_door_open.ogg b/mods/doors/sounds/doors_door_open.ogg deleted file mode 100644 index 9a4c4f1..0000000 Binary files a/mods/doors/sounds/doors_door_open.ogg and /dev/null differ diff --git a/mods/doors/sounds/doors_fencegate_close.ogg b/mods/doors/sounds/doors_fencegate_close.ogg deleted file mode 100644 index d42590f..0000000 Binary files a/mods/doors/sounds/doors_fencegate_close.ogg and /dev/null differ diff --git a/mods/doors/sounds/doors_fencegate_open.ogg b/mods/doors/sounds/doors_fencegate_open.ogg deleted file mode 100644 index f6dfd1d..0000000 Binary files a/mods/doors/sounds/doors_fencegate_open.ogg and /dev/null differ diff --git a/mods/doors/sounds/doors_glass_door_close.ogg b/mods/doors/sounds/doors_glass_door_close.ogg deleted file mode 100644 index b3c1355..0000000 Binary files a/mods/doors/sounds/doors_glass_door_close.ogg and /dev/null differ diff --git a/mods/doors/sounds/doors_glass_door_open.ogg b/mods/doors/sounds/doors_glass_door_open.ogg deleted file mode 100644 index 66e6812..0000000 Binary files a/mods/doors/sounds/doors_glass_door_open.ogg and /dev/null differ diff --git a/mods/doors/sounds/doors_steel_door_close.ogg b/mods/doors/sounds/doors_steel_door_close.ogg deleted file mode 100644 index aea7be6..0000000 Binary files a/mods/doors/sounds/doors_steel_door_close.ogg and /dev/null differ diff --git a/mods/doors/sounds/doors_steel_door_open.ogg b/mods/doors/sounds/doors_steel_door_open.ogg deleted file mode 100644 index de87477..0000000 Binary files a/mods/doors/sounds/doors_steel_door_open.ogg and /dev/null differ diff --git a/mods/doors/textures/doors_blank.png b/mods/doors/textures/doors_blank.png deleted file mode 100644 index 1914264..0000000 Binary files a/mods/doors/textures/doors_blank.png and /dev/null differ diff --git a/mods/doors/textures/doors_door_glass.png b/mods/doors/textures/doors_door_glass.png deleted file mode 100644 index c296a0f..0000000 Binary files a/mods/doors/textures/doors_door_glass.png and /dev/null differ diff --git a/mods/doors/textures/doors_door_obsidian_glass.png b/mods/doors/textures/doors_door_obsidian_glass.png deleted file mode 100644 index 07ac5b2..0000000 Binary files a/mods/doors/textures/doors_door_obsidian_glass.png and /dev/null differ diff --git a/mods/doors/textures/doors_door_steel.png b/mods/doors/textures/doors_door_steel.png deleted file mode 100644 index f42f335..0000000 Binary files a/mods/doors/textures/doors_door_steel.png and /dev/null differ diff --git a/mods/doors/textures/doors_door_wood.png b/mods/doors/textures/doors_door_wood.png deleted file mode 100644 index 7b18203..0000000 Binary files a/mods/doors/textures/doors_door_wood.png and /dev/null differ diff --git a/mods/doors/textures/doors_item_glass.png b/mods/doors/textures/doors_item_glass.png deleted file mode 100644 index 86406fb..0000000 Binary files a/mods/doors/textures/doors_item_glass.png and /dev/null differ diff --git a/mods/doors/textures/doors_item_obsidian_glass.png b/mods/doors/textures/doors_item_obsidian_glass.png deleted file mode 100644 index 1026d43..0000000 Binary files a/mods/doors/textures/doors_item_obsidian_glass.png and /dev/null differ diff --git a/mods/doors/textures/doors_item_steel.png b/mods/doors/textures/doors_item_steel.png deleted file mode 100644 index dd99e13..0000000 Binary files a/mods/doors/textures/doors_item_steel.png and /dev/null differ diff --git a/mods/doors/textures/doors_item_wood.png b/mods/doors/textures/doors_item_wood.png deleted file mode 100644 index d3a62ab..0000000 Binary files a/mods/doors/textures/doors_item_wood.png and /dev/null differ diff --git a/mods/doors/textures/doors_trapdoor.png b/mods/doors/textures/doors_trapdoor.png deleted file mode 100644 index e92c8b2..0000000 Binary files a/mods/doors/textures/doors_trapdoor.png and /dev/null differ diff --git a/mods/doors/textures/doors_trapdoor_side.png b/mods/doors/textures/doors_trapdoor_side.png deleted file mode 100644 index 4a8b99f..0000000 Binary files a/mods/doors/textures/doors_trapdoor_side.png and /dev/null differ diff --git a/mods/doors/textures/doors_trapdoor_steel.png b/mods/doors/textures/doors_trapdoor_steel.png deleted file mode 100644 index 4ba507d..0000000 Binary files a/mods/doors/textures/doors_trapdoor_steel.png and /dev/null differ diff --git a/mods/doors/textures/doors_trapdoor_steel_side.png b/mods/doors/textures/doors_trapdoor_steel_side.png deleted file mode 100644 index 44c4344..0000000 Binary files a/mods/doors/textures/doors_trapdoor_steel_side.png and /dev/null differ diff --git a/mods/dungeon_loot/depends.txt b/mods/dungeon_loot/depends.txt deleted file mode 100644 index 4ad96d5..0000000 --- a/mods/dungeon_loot/depends.txt +++ /dev/null @@ -1 +0,0 @@ -default diff --git a/mods/dungeon_loot/loot.lua b/mods/dungeon_loot/loot.lua index 3fe0bff..7eb08cd 100644 --- a/mods/dungeon_loot/loot.lua +++ b/mods/dungeon_loot/loot.lua @@ -1,10 +1,13 @@ dungeon_loot.registered_loot = { -- buckets {name = "bucket:bucket_empty", chance = 0.55}, - -- water in deserts or above ground, lava otherwise - {name = "bucket:bucket_water", chance = 0.45, types = {"sandstone", "desert"}}, - {name = "bucket:bucket_water", chance = 0.45, y = {0, 32768}, types = {"normal"}}, - {name = "bucket:bucket_lava", chance = 0.45, y = {-32768, -1}, types = {"normal"}}, + -- water in deserts/ice or above ground, lava otherwise + {name = "bucket:bucket_water", chance = 0.45, + types = {"sandstone", "desert", "ice"}}, + {name = "bucket:bucket_water", chance = 0.45, y = {0, 32768}, + types = {"normal"}}, + {name = "bucket:bucket_lava", chance = 0.45, y = {-32768, -1}, + types = {"normal"}}, -- various items {name = "default:stick", chance = 0.6, count = {3, 6}}, @@ -16,8 +19,10 @@ dungeon_loot.registered_loot = { {name = "farming:string", chance = 0.5, count = {1, 8}}, {name = "farming:wheat", chance = 0.5, count = {2, 5}}, {name = "default:apple", chance = 0.4, count = {1, 4}}, - {name = "farming:seed_cotton", chance = 0.4, count = {1, 4}, types = {"normal"}}, - {name = "default:cactus", chance = 0.4, count = {1, 4}, types = {"sandstone", "desert"}}, + {name = "farming:seed_cotton", chance = 0.4, count = {1, 4}, + types = {"normal"}}, + {name = "default:cactus", chance = 0.4, count = {1, 4}, + types = {"sandstone", "desert"}}, -- minerals {name = "default:coal_lump", chance = 0.9, count = {1, 12}}, @@ -31,10 +36,16 @@ dungeon_loot.registered_loot = { {name = "default:axe_diamond", chance = 0.05}, -- natural materials - {name = "default:sand", chance = 0.8, count = {4, 32}, y = {-64, 32768}, types = {"normal"}}, - {name = "default:desert_sand", chance = 0.8, count = {4, 32}, y = {-64, 32768}, types = {"sandstone"}}, - {name = "default:desert_cobble", chance = 0.8, count = {4, 32}, types = {"desert"}}, - {name = "default:dirt", chance = 0.6, count = {2, 16}, y = {-64, 32768}}, + {name = "default:sand", chance = 0.8, count = {4, 32}, y = {-64, 32768}, + types = {"normal"}}, + {name = "default:desert_sand", chance = 0.8, count = {4, 32}, y = {-64, 32768}, + types = {"sandstone"}}, + {name = "default:desert_cobble", chance = 0.8, count = {4, 32}, + types = {"desert"}}, + {name = "default:snow", chance = 0.8, count = {8, 64}, y = {-64, 32768}, + types = {"ice"}}, + {name = "default:dirt", chance = 0.6, count = {2, 16}, y = {-64, 32768}, + types = {"normal", "sandstone", "desert"}}, {name = "default:obsidian", chance = 0.25, count = {1, 3}, y = {-32768, -512}}, {name = "default:mese", chance = 0.15, y = {-32768, -512}}, } diff --git a/mods/dungeon_loot/mapgen.lua b/mods/dungeon_loot/mapgen.lua index 366d4ce..624e9a8 100644 --- a/mods/dungeon_loot/mapgen.lua +++ b/mods/dungeon_loot/mapgen.lua @@ -15,12 +15,8 @@ local function random_sample(rand, list, count) end local function find_walls(cpos) - local wall = minetest.registered_aliases["mapgen_cobble"] - local wall_alt = minetest.registered_aliases["mapgen_mossycobble"] - local wall_ss = minetest.registered_aliases["mapgen_sandstonebrick"] - local wall_ds = minetest.registered_aliases["mapgen_desert_stone"] local is_wall = function(node) - return table.indexof({wall, wall_alt, wall_ss, wall_ds}, node.name) ~= -1 + return node.name ~= "air" and node.name ~= "ignore" end local dirs = {{x=1, z=0}, {x=-1, z=0}, {x=0, z=1}, {x=0, z=-1}} @@ -29,7 +25,6 @@ local function find_walls(cpos) local ret = {} local mindist = {x=0, z=0} local min = function(a, b) return a ~= 0 and math.min(a, b) or b end - local wallnode for _, dir in ipairs(dirs) do for i = 1, 9 do -- 9 = max room size / 2 local pos = vector.add(cpos, {x=dir.x*i, y=0, z=dir.z*i}) @@ -50,7 +45,6 @@ local function find_walls(cpos) else mindist.z = min(mindist.z, i-1) end - wallnode = node.name end -- abort even if it wasn't a wall cause something is in the way break @@ -58,14 +52,21 @@ local function find_walls(cpos) end end - local mapping = { - [wall_ss] = "sandstone", - [wall_ds] = "desert" - } + local biome = minetest.get_biome_data(cpos) + biome = biome and minetest.get_biome_name(biome.biome) or "" + local type = "normal" + if biome:find("desert") == 1 then + type = "desert" + elseif biome:find("sandstone_desert") == 1 then + type = "sandstone" + elseif biome:find("icesheet") == 1 then + type = "ice" + end + return { walls = ret, size = {x=mindist.x*2, z=mindist.z*2}, - type = mapping[wallnode] or "normal" + type = type, } end @@ -75,8 +76,8 @@ local function populate_chest(pos, rand, dungeontype) local item_list = dungeon_loot._internal_get_loot(pos.y, dungeontype) -- take random (partial) sample of all possible items - assert(#item_list >= dungeon_loot.STACKS_PER_CHEST_MAX) - item_list = random_sample(rand, item_list, dungeon_loot.STACKS_PER_CHEST_MAX) + local sample_n = math.min(#item_list, dungeon_loot.STACKS_PER_CHEST_MAX) + item_list = random_sample(rand, item_list, sample_n) -- apply chances / randomized amounts and collect resulting items local items = {} diff --git a/mods/dungeon_loot/mod.conf b/mods/dungeon_loot/mod.conf new file mode 100644 index 0000000..79d8089 --- /dev/null +++ b/mods/dungeon_loot/mod.conf @@ -0,0 +1,3 @@ +name = dungeon_loot +description = Minetest Game mod: dungeon_loot +depends = default diff --git a/mods/dye/depends.txt b/mods/dye/depends.txt deleted file mode 100644 index e69de29..0000000 diff --git a/mods/dye/init.lua b/mods/dye/init.lua index 42f59cf..f0affe8 100644 --- a/mods/dye/init.lua +++ b/mods/dye/init.lua @@ -1,16 +1,21 @@ +-- dye/init.lua + dye = {} +-- Load support for MT game translation. +local S = minetest.get_translator("dye") + -- Make dye names and descriptions available globally dye.dyes = { {"white", "White"}, {"grey", "Grey"}, - {"dark_grey", "Dark grey"}, + {"dark_grey", "Dark Grey"}, {"black", "Black"}, {"violet", "Violet"}, {"blue", "Blue"}, {"cyan", "Cyan"}, - {"dark_green", "Dark green"}, + {"dark_green", "Dark Green"}, {"green", "Green"}, {"yellow", "Yellow"}, {"brown", "Brown"}, @@ -30,7 +35,7 @@ for _, row in ipairs(dye.dyes) do minetest.register_craftitem("dye:" .. name, { inventory_image = "dye_" .. name .. ".png", - description = description .. " Dye", + description = S(description .. " Dye"), groups = groups }) @@ -94,7 +99,29 @@ local dye_recipes = { for _, mix in pairs(dye_recipes) do minetest.register_craft({ type = "shapeless", - output = 'dye:' .. mix[3] .. ' 2', - recipe = {'dye:' .. mix[1], 'dye:' .. mix[2]}, + output = "dye:" .. mix[3] .. " 2", + recipe = {"dye:" .. mix[1], "dye:" .. mix[2]}, }) end + +-- Dummy calls to S() to allow translation scripts to detect the strings. +-- To update this run: +-- for _,e in ipairs(dye.dyes) do print(("S(%q)"):format(e[2].." Dye")) end + +--[[ +S("White Dye") +S("Grey Dye") +S("Dark Grey Dye") +S("Black Dye") +S("Violet Dye") +S("Blue Dye") +S("Cyan Dye") +S("Dark Green Dye") +S("Green Dye") +S("Yellow Dye") +S("Brown Dye") +S("Orange Dye") +S("Red Dye") +S("Magenta Dye") +S("Pink Dye") +--]] diff --git a/mods/dye/locale/dye.de.tr b/mods/dye/locale/dye.de.tr new file mode 100644 index 0000000..f73fb57 --- /dev/null +++ b/mods/dye/locale/dye.de.tr @@ -0,0 +1,16 @@ +# textdomain: dye +White Dye=Weißer Farbstoff +Grey Dye=Grauer Farbstoff +Dark Grey Dye=Dunkelgrauer Farbstoff +Black Dye=Schwarzer Farbstoff +Violet Dye=Violetter Farbstoff +Blue Dye=Blauer Farbstoff +Cyan Dye=Türkiser Farbstoff +Dark Green Dye=Dunkelgrüner Farbstoff +Green Dye=Grüner Farbstoff +Yellow Dye=Gelber Farbstoff +Brown Dye=Brauner Farbstoff +Orange Dye=Orange Farbstoff +Red Dye=Roter Farbstoff +Magenta Dye=Magenta Farbstoff +Pink Dye=Rosa Farbstoff diff --git a/mods/dye/locale/dye.es.tr b/mods/dye/locale/dye.es.tr new file mode 100644 index 0000000..bd04ef4 --- /dev/null +++ b/mods/dye/locale/dye.es.tr @@ -0,0 +1,16 @@ +# textdomain: dye +White Dye=Tinte blanco +Grey Dye=Tinte gris +Dark Grey Dye=Tinte gris oscuro +Black Dye=Tinte negro +Violet Dye=Tinte violeta +Blue Dye=Tinte azul +Cyan Dye=Tinte cián +Dark Green Dye=Tinte verde oscuro +Green Dye=Tinte verde +Yellow Dye=Tinte amarillo +Brown Dye=Tinte marrón +Orange Dye=Tinte naranja +Red Dye=Tinte rojo +Magenta Dye=Tinte magenta +Pink Dye=Tinte rosa diff --git a/mods/dye/locale/dye.fr.tr b/mods/dye/locale/dye.fr.tr new file mode 100644 index 0000000..390fa07 --- /dev/null +++ b/mods/dye/locale/dye.fr.tr @@ -0,0 +1,16 @@ +# textdomain: dye +White Dye=Colorant blanc +Grey Dye=Colorant gris +Dark Grey Dye=Colorant gris foncé +Black Dye=Colorant noir +Violet Dye=Colorant violet +Blue Dye=Colorant bleu +Cyan Dye=Colorant cyan +Dark Green Dye=Colorant vert foncé +Green Dye=Colorant vert +Yellow Dye=Colorant jaune +Brown Dye=Colorant marron +Orange Dye=Colorant orange +Red Dye=Colorant rouge +Magenta Dye=Colorant magenta +Pink Dye=Colorant rose diff --git a/mods/dye/locale/dye.it.tr b/mods/dye/locale/dye.it.tr new file mode 100644 index 0000000..bd856ee --- /dev/null +++ b/mods/dye/locale/dye.it.tr @@ -0,0 +1,16 @@ +# textdomain: dye +White Dye=Tintura bianca +Grey Dye=Tintura grigia +Dark Grey Dye=Tintura grigia scura +Black Dye=Tintura nera +Violet Dye=Tintura viola +Blue Dye=Tintura blu +Cyan Dye=Tintura ciano +Dark Green Dye=Tintura verde scura +Green Dye=Tintura verde +Yellow Dye=Tintura gialla +Brown Dye=Tintura marrone +Orange Dye=Tintura arancione +Red Dye=Tintura rossa +Magenta Dye=Tintura magenta +Pink Dye=Tintura rosa \ No newline at end of file diff --git a/mods/dye/locale/template.txt b/mods/dye/locale/template.txt new file mode 100644 index 0000000..c20bab5 --- /dev/null +++ b/mods/dye/locale/template.txt @@ -0,0 +1,16 @@ +# textdomain: dye +White Dye= +Grey Dye= +Dark Grey Dye= +Black Dye= +Violet Dye= +Blue Dye= +Cyan Dye= +Dark Green Dye= +Green Dye= +Yellow Dye= +Brown Dye= +Orange Dye= +Red Dye= +Magenta Dye= +Pink Dye= diff --git a/mods/dye/mod.conf b/mods/dye/mod.conf new file mode 100644 index 0000000..32bb816 --- /dev/null +++ b/mods/dye/mod.conf @@ -0,0 +1,2 @@ +name = dye +description = Minetest Game mod: dye diff --git a/mods/env_sounds/README.txt b/mods/env_sounds/README.txt new file mode 100644 index 0000000..42835d2 --- /dev/null +++ b/mods/env_sounds/README.txt @@ -0,0 +1,13 @@ +Minetest Game mod: env_sounds +============================= +See license.txt for license information. + +Authors of source code +---------------------- +paramat (MIT) + +Authors of media (sounds) +------------------------- +Yuval (CC0 1.0) +https://freesound.org/people/Yuval/sounds/197023/ + env_sounds_water.*.ogg diff --git a/mods/env_sounds/init.lua b/mods/env_sounds/init.lua new file mode 100644 index 0000000..546e990 --- /dev/null +++ b/mods/env_sounds/init.lua @@ -0,0 +1,64 @@ +-- Parameters + +local radius = 8 -- Water node search radius around player + +-- End of parameters + + +local river_source_sounds = minetest.settings:get_bool("river_source_sounds") + + +-- Update sound for player + +local function update_sound(player) + local player_name = player:get_player_name() + local ppos = player:get_pos() + local areamin = vector.subtract(ppos, radius) + local areamax = vector.add(ppos, radius) + local water_nodes = {"default:water_flowing", "default:river_water_flowing"} + if river_source_sounds then + table.insert(water_nodes, "default:river_water_source") + end + local wpos, _ = minetest.find_nodes_in_area(areamin, areamax, water_nodes) + local waters = #wpos + if waters == 0 then + return + end + + -- Find average position of water positions + local wposav = vector.new() + for _, pos in ipairs(wpos) do + wposav.x = wposav.x + pos.x + wposav.y = wposav.y + pos.y + wposav.z = wposav.z + pos.z + end + wposav = vector.divide(wposav, waters) + + minetest.sound_play( + "env_sounds_water", + { + pos = wposav, + to_player = player_name, + gain = math.min(0.04 + waters * 0.004, 0.4), + } + ) +end + + +-- Update sound 'on joinplayer' + +minetest.register_on_joinplayer(function(player) + update_sound(player) +end) + + +-- Cyclic sound update + +local function cyclic_update() + for _, player in pairs(minetest.get_connected_players()) do + update_sound(player) + end + minetest.after(3.5, cyclic_update) +end + +minetest.after(0, cyclic_update) diff --git a/mods/env_sounds/license.txt b/mods/env_sounds/license.txt new file mode 100644 index 0000000..ff8867d --- /dev/null +++ b/mods/env_sounds/license.txt @@ -0,0 +1,57 @@ +License of source code +---------------------- + +The MIT License (MIT) +Copyright (C) 2019 paramat + +Permission is hereby granted, free of charge, to any person obtaining a copy of this +software and associated documentation files (the "Software"), to deal in the Software +without restriction, including without limitation the rights to use, copy, modify, merge, +publish, distribute, sublicense, and/or sell copies of the Software, and to permit +persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or +substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR +PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE +FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +DEALINGS IN THE SOFTWARE. + +For more details: +https://opensource.org/licenses/MIT + + +Licenses of media (sounds) +-------------------------- + +CC0 1.0 Universal (CC0 1.0) Public Domain Dedication +Yuval + +No Copyright + +The person who associated a work with this deed has dedicated the work to the +public domain by waiving all of his or her rights to the work worldwide under +copyright law, including all related and neighboring rights, to the extent +allowed by law. + +You can copy, modify, distribute and perform the work, even for commercial +purposes, all without asking permission. See Other Information below. + +Other Information: + +In no way are the patent or trademark rights of any person affected by CC0, nor +are the rights that other persons may have in the work or in how the work is +used, such as publicity or privacy rights. + +Unless expressly stated otherwise, the person who associated a work with this +deed makes no warranties about the work, and disclaims liability for all uses +of the work, to the fullest extent permitted by applicable law. + +When using or citing the work, you should not imply endorsement by the author +or the affirmer. + +For more details: +https://creativecommons.org/publicdomain/zero/1.0/ diff --git a/mods/env_sounds/mod.conf b/mods/env_sounds/mod.conf new file mode 100644 index 0000000..ad6feb3 --- /dev/null +++ b/mods/env_sounds/mod.conf @@ -0,0 +1,3 @@ +name = env_sounds +description = Minetest Game mod: env_sounds +depends = default diff --git a/mods/env_sounds/sounds/env_sounds_water.1.ogg b/mods/env_sounds/sounds/env_sounds_water.1.ogg new file mode 100644 index 0000000..aa80882 Binary files /dev/null and b/mods/env_sounds/sounds/env_sounds_water.1.ogg differ diff --git a/mods/env_sounds/sounds/env_sounds_water.2.ogg b/mods/env_sounds/sounds/env_sounds_water.2.ogg new file mode 100644 index 0000000..b3ff114 Binary files /dev/null and b/mods/env_sounds/sounds/env_sounds_water.2.ogg differ diff --git a/mods/env_sounds/sounds/env_sounds_water.3.ogg b/mods/env_sounds/sounds/env_sounds_water.3.ogg new file mode 100644 index 0000000..431a6ed Binary files /dev/null and b/mods/env_sounds/sounds/env_sounds_water.3.ogg differ diff --git a/mods/env_sounds/sounds/env_sounds_water.4.ogg b/mods/env_sounds/sounds/env_sounds_water.4.ogg new file mode 100644 index 0000000..56c2ee2 Binary files /dev/null and b/mods/env_sounds/sounds/env_sounds_water.4.ogg differ diff --git a/mods/farming/api.lua b/mods/farming/api.lua index 4a7b93d..c2c549e 100644 --- a/mods/farming/api.lua +++ b/mods/farming/api.lua @@ -1,3 +1,7 @@ +-- farming/api.lua + +-- support for MT game translation. +local S = farming.get_translator -- Wear out hoes, place soil -- TODO Ignore group:flower @@ -78,7 +82,7 @@ farming.register_hoe = function(name, def) end -- Check def table if def.description == nil then - def.description = "Hoe" + def.description = S("Hoe") end if def.inventory_image == nil then def.inventory_image = "unknown_item.png" @@ -251,7 +255,10 @@ farming.register_plant = function(name, def) -- Check def table if not def.description then - def.description = "Seed" + def.description = S("Seed") + end + if not def.harvest_description then + def.harvest_description = pname:gsub("^%l", string.upper) end if not def.inventory_image then def.inventory_image = "unknown_item.png" @@ -321,7 +328,7 @@ farming.register_plant = function(name, def) -- Register harvest minetest.register_craftitem(":" .. mname .. ":" .. pname, { - description = pname:gsub("^%l", string.upper), + description = def.harvest_description, inventory_image = mname .. "_" .. pname .. ".png", groups = def.groups or {flammable = 2}, }) diff --git a/mods/farming/depends.txt b/mods/farming/depends.txt deleted file mode 100644 index 301d971..0000000 --- a/mods/farming/depends.txt +++ /dev/null @@ -1,3 +0,0 @@ -default -wool -stairs diff --git a/mods/farming/hoes.lua b/mods/farming/hoes.lua index d6a6565..d005f6d 100644 --- a/mods/farming/hoes.lua +++ b/mods/farming/hoes.lua @@ -1,23 +1,30 @@ +-- farming/hoes.lua + +-- support for MT game translation. +local S = farming.get_translator + farming.register_hoe(":farming:hoe_wood", { - description = "Wooden Hoe", + description = S("Wooden Hoe"), inventory_image = "farming_tool_woodhoe.png", max_uses = 30, material = "group:wood", - groups = {flammable = 2}, + groups = {hoe = 1, flammable = 2}, }) farming.register_hoe(":farming:hoe_stone", { - description = "Stone Hoe", + description = S("Stone Hoe"), inventory_image = "farming_tool_stonehoe.png", max_uses = 90, - material = "group:stone" + material = "group:stone", + groups = {hoe = 1} }) farming.register_hoe(":farming:hoe_steel", { - description = "Steel Hoe", + description = S("Steel Hoe"), inventory_image = "farming_tool_steelhoe.png", max_uses = 500, - material = "default:steel_ingot" + material = "default:steel_ingot", + groups = {hoe = 1} }) -- The following are deprecated by removing the 'material' field to prevent @@ -26,22 +33,22 @@ farming.register_hoe(":farming:hoe_steel", { -- release. farming.register_hoe(":farming:hoe_bronze", { - description = "Bronze Hoe", + description = S("Bronze Hoe"), inventory_image = "farming_tool_bronzehoe.png", max_uses = 220, - groups = {not_in_creative_inventory = 1}, + groups = {hoe = 1, not_in_creative_inventory = 1}, }) farming.register_hoe(":farming:hoe_mese", { - description = "Mese Hoe", + description = S("Mese Hoe"), inventory_image = "farming_tool_mesehoe.png", max_uses = 350, - groups = {not_in_creative_inventory = 1}, + groups = {hoe = 1, not_in_creative_inventory = 1}, }) farming.register_hoe(":farming:hoe_diamond", { - description = "Diamond Hoe", + description = S("Diamond Hoe"), inventory_image = "farming_tool_diamondhoe.png", max_uses = 500, - groups = {not_in_creative_inventory = 1}, + groups = {hoe = 1, not_in_creative_inventory = 1}, }) diff --git a/mods/farming/init.lua b/mods/farming/init.lua index 723201d..e6dfd57 100644 --- a/mods/farming/init.lua +++ b/mods/farming/init.lua @@ -1,8 +1,13 @@ +-- farming/init.lua + +-- Load support for MT game translation. +local S = minetest.get_translator("farming") + -- Global farming namespace farming = {} farming.path = minetest.get_modpath("farming") - +farming.get_translator = S -- Load files @@ -14,7 +19,8 @@ dofile(farming.path .. "/hoes.lua") -- WHEAT farming.register_plant("farming:wheat", { - description = "Wheat Seed", + description = S("Wheat Seed"), + harvest_description = S("Wheat"), paramtype2 = "meshoptions", inventory_image = "farming_wheat_seed.png", steps = 8, @@ -26,13 +32,13 @@ farming.register_plant("farming:wheat", { }) minetest.register_craftitem("farming:flour", { - description = "Flour", + description = S("Flour"), inventory_image = "farming_flour.png", groups = {food_flour = 1, flammable = 1}, }) minetest.register_craftitem("farming:bread", { - description = "Bread", + description = S("Bread"), inventory_image = "farming_bread.png", on_use = minetest.item_eat(5), groups = {food_bread = 1, flammable = 2}, @@ -55,7 +61,8 @@ minetest.register_craft({ -- Cotton farming.register_plant("farming:cotton", { - description = "Cotton Seed", + description = S("Cotton Seed"), + harvest_description = S("Cotton"), inventory_image = "farming_cotton_seed.png", steps = 8, minlight = 13, @@ -65,7 +72,7 @@ farming.register_plant("farming:cotton", { }) minetest.register_craftitem("farming:string", { - description = "String", + description = S("String"), inventory_image = "farming_string.png", groups = {flammable = 2}, }) diff --git a/mods/farming/locale/farming.de.tr b/mods/farming/locale/farming.de.tr new file mode 100644 index 0000000..13a363b --- /dev/null +++ b/mods/farming/locale/farming.de.tr @@ -0,0 +1,25 @@ +# textdomain: farming +Wooden Hoe=Holzhacke +Stone Hoe=Steinhacke +Steel Hoe=Stahlhacke +Bronze Hoe=Bronzehacke +Mese Hoe=Mesehacke +Diamond Hoe=Diamanthacke +Wheat Seed=Weizensamen +Flour=Mehl +Bread=Brot +Cotton Seed=Baumwollsamen +String=Faden +Soil=Ackerboden +Wet Soil=Nasser Ackerboden +Dry Soil=Trockener Ackerboden +Wet Dry Soil=Nasser trockener Ackerboden +Desert Sand Soil=Wüsensandackerboden +Wet Desert Sand Soil=Nasser Wüstensandackerboden +Straw=Stroh +Straw Stair=Strohtreppe +Straw Slab=Strohplatte +Inner Straw Stair=Innere Strohtreppe +Outer Straw Stair=Äußere Strohtreppe +Wheat=Weizen +Cotton=Baumwolle diff --git a/mods/farming/locale/farming.es.tr b/mods/farming/locale/farming.es.tr new file mode 100644 index 0000000..f935a7b --- /dev/null +++ b/mods/farming/locale/farming.es.tr @@ -0,0 +1,25 @@ +# textdomain: farming +Wooden Hoe=Azada de madera +Stone Hoe=Azada de piedra +Steel Hoe=Azada de acero +Bronze Hoe=Azada de bronce +Mese Hoe=Azada de mese +Diamond Hoe=Azada de diamante +Wheat Seed=Semilla de trigo +Flour=Harina +Bread=Pan +Cotton Seed=Semilla de algodón +String=Hilo +Soil=Tierra de cultivo +Wet Soil=Tierra de cultivo humeda +Dry Soil=Tierra de cultivo seca +Wet Dry Soil=Tierra de cultivo seca-humeda +Desert Sand Soil=Tierra de cultivo de arena de desierto +Wet Desert Sand Soil=Tierra de cultivo de arena de desierto humeda +Straw=Paja +Straw Stair=Escalera de paja +Straw Slab=Losa de paja +Inner Straw Stair=Escalera de paja interior +Outer Straw Stair=Escalera de paja exterior +Wheat=Trigo +Cotton=Algodón diff --git a/mods/farming/locale/farming.fr.tr b/mods/farming/locale/farming.fr.tr new file mode 100644 index 0000000..cd05997 --- /dev/null +++ b/mods/farming/locale/farming.fr.tr @@ -0,0 +1,25 @@ +# textdomain: farming +Wooden Hoe=Houe en bois +Stone Hoe=Houe en pierre +Steel Hoe=Houe en acier +Bronze Hoe=Houe en bronze +Mese Hoe=Houe en Mese +Diamond Hoe=Houe en diamant +Wheat Seed=Grain de blé +Flour=Farine +Bread=Pain +Cotton Seed=Graine de coton +String=Ficelle +Soil=Sol +Wet Soil=Sol humide +Dry Soil=Sol sec +Wet Dry Soil=Sol sec et humide +Desert Sand Soil=Sol de sable du désert +Wet Desert Sand Soil=Sol de sable du désert humide +Straw=Paille +Straw Stair=Escalier de paille +Straw Slab=Dalle de paille +Inner Straw Stair=Escalier intérieur en paille +Outer Straw Stair=Escalier extérieur en paille +Wheat=Blé +Cotton=Coton diff --git a/mods/farming/locale/farming.it.tr b/mods/farming/locale/farming.it.tr new file mode 100644 index 0000000..3e3f247 --- /dev/null +++ b/mods/farming/locale/farming.it.tr @@ -0,0 +1,25 @@ +# textdomain: farming +Wooden Hoe=Zappa di legno +Stone Hoe=Zappa di pietra +Steel Hoe=Zappa d'acciaio +Bronze Hoe=Zappa di bronzo +Mese Hoe=Zappa di mese +Diamond Hoe=Zappa di diamante +Wheat Seed=Seme di grano +Flour=Farina +Bread=Pane +Cotton Seed=Seme di cotone +String=Filo +Soil=Terreno +Wet Soil=Terreno bagnato +Dry Soil=Terreno asciutto +Wet Dry Soil=Terreno asciutto bagnato +Desert Sand Soil=Terreno di sabbia del deserto +Wet Desert Sand Soil=Terreno bagnato di sabbia del deserto +Straw=Paglia +Straw Stair=Scala di paglia +Inner Straw Stair=Scala di paglia interna +Outer Straw Stair=Scala di paglia esterna +Straw Slab=Lastra di paglia +Wheat=Grano +Cotton=Cotone \ No newline at end of file diff --git a/mods/farming/locale/template.txt b/mods/farming/locale/template.txt new file mode 100644 index 0000000..92d113e --- /dev/null +++ b/mods/farming/locale/template.txt @@ -0,0 +1,25 @@ +# textdomain: farming +Wooden Hoe= +Stone Hoe= +Steel Hoe= +Bronze Hoe= +Mese Hoe= +Diamond Hoe= +Wheat Seed= +Flour= +Bread= +Cotton Seed= +String= +Soil= +Wet Soil= +Dry Soil= +Wet Dry Soil= +Desert Sand Soil= +Wet Desert Sand Soil= +Straw= +Straw Stair= +Inner Straw Stair= +Outer Straw Stair= +Straw Slab= +Wheat= +Cotton= diff --git a/mods/farming/mod.conf b/mods/farming/mod.conf new file mode 100644 index 0000000..c26c28f --- /dev/null +++ b/mods/farming/mod.conf @@ -0,0 +1,3 @@ +name = farming +description = Minetest Game mod: farming +depends = default, wool, stairs diff --git a/mods/farming/nodes.lua b/mods/farming/nodes.lua index cc9d1f6..22dd51c 100644 --- a/mods/farming/nodes.lua +++ b/mods/farming/nodes.lua @@ -1,3 +1,8 @@ +-- farming/nodes.lua + +-- support for MT game translation. +local S = farming.get_translator + minetest.override_item("default:dirt", { soil = { base = "default:dirt", @@ -38,8 +43,24 @@ minetest.override_item("default:dirt_with_coniferous_litter", { } }) +minetest.override_item("default:dry_dirt", { + soil = { + base = "default:dry_dirt", + dry = "farming:dry_soil", + wet = "farming:dry_soil_wet" + } +}) + +minetest.override_item("default:dry_dirt_with_dry_grass", { + soil = { + base = "default:dry_dirt_with_dry_grass", + dry = "farming:dry_soil", + wet = "farming:dry_soil_wet" + } +}) + minetest.register_node("farming:soil", { - description = "Soil", + description = S("Soil"), tiles = {"default_dirt.png^farming_soil.png", "default_dirt.png"}, drop = "default:dirt", groups = {crumbly=3, not_in_creative_inventory=1, soil=2, grassland = 1, field = 1}, @@ -52,7 +73,7 @@ minetest.register_node("farming:soil", { }) minetest.register_node("farming:soil_wet", { - description = "Wet Soil", + description = S("Wet Soil"), tiles = {"default_dirt.png^farming_soil_wet.png", "default_dirt.png^farming_soil_wet_side.png"}, drop = "default:dirt", groups = {crumbly=3, not_in_creative_inventory=1, soil=3, wet = 1, grassland = 1, field = 1}, @@ -64,6 +85,32 @@ minetest.register_node("farming:soil_wet", { } }) +minetest.register_node("farming:dry_soil", { + description = S("Dry Soil"), + tiles = {"default_dry_dirt.png^farming_soil.png", "default_dry_dirt.png"}, + drop = "default:dry_dirt", + groups = {crumbly=3, not_in_creative_inventory=1, soil=2, grassland = 1, field = 1}, + sounds = default.node_sound_dirt_defaults(), + soil = { + base = "default:dry_dirt", + dry = "farming:dry_soil", + wet = "farming:dry_soil_wet" + } +}) + +minetest.register_node("farming:dry_soil_wet", { + description = S("Wet Dry Soil"), + tiles = {"default_dry_dirt.png^farming_soil_wet.png", "default_dry_dirt.png^farming_soil_wet_side.png"}, + drop = "default:dry_dirt", + groups = {crumbly=3, not_in_creative_inventory=1, soil=3, wet = 1, grassland = 1, field = 1}, + sounds = default.node_sound_dirt_defaults(), + soil = { + base = "default:dry_dirt", + dry = "farming:dry_soil", + wet = "farming:dry_soil_wet" + } +}) + minetest.override_item("default:desert_sand", { groups = {crumbly=3, falling_node=1, sand=1, soil = 1}, soil = { @@ -73,7 +120,7 @@ minetest.override_item("default:desert_sand", { } }) minetest.register_node("farming:desert_sand_soil", { - description = "Desert Sand Soil", + description = S("Desert Sand Soil"), drop = "default:desert_sand", tiles = {"farming_desert_sand_soil.png", "default_desert_sand.png"}, groups = {crumbly=3, not_in_creative_inventory = 1, falling_node=1, sand=1, soil = 2, desert = 1, field = 1}, @@ -86,7 +133,7 @@ minetest.register_node("farming:desert_sand_soil", { }) minetest.register_node("farming:desert_sand_soil_wet", { - description = "Wet Desert Sand Soil", + description = S("Wet Desert Sand Soil"), drop = "default:desert_sand", tiles = {"farming_desert_sand_soil_wet.png", "farming_desert_sand_soil_wet_side.png"}, groups = {crumbly=3, falling_node=1, sand=1, not_in_creative_inventory=1, soil=3, wet = 1, desert = 1, field = 1}, @@ -99,23 +146,28 @@ minetest.register_node("farming:desert_sand_soil_wet", { }) minetest.register_node("farming:straw", { - description = "Straw", + description = S("Straw"), tiles = {"farming_straw.png"}, is_ground_content = false, groups = {snappy=3, flammable=4, fall_damage_add_percent=-30}, sounds = default.node_sound_leaves_defaults(), }) -stairs.register_stair_and_slab( - "straw", - "farming:straw", - {snappy = 3, flammable = 4}, - {"farming_straw.png"}, - "Straw Stair", - "Straw Slab", - default.node_sound_leaves_defaults(), - true -) +do + local recipe = "farming:straw" + local groups = {snappy = 3, flammable = 4} + local images = {"farming_straw.png"} + local sounds = default.node_sound_leaves_defaults() + + stairs.register_stair("straw", recipe, groups, images, S("Straw Stair"), + sounds, true) + stairs.register_stair_inner("straw", recipe, groups, images, "", + sounds, true, S("Inner Straw Stair")) + stairs.register_stair_outer("straw", recipe, groups, images, "", + sounds, true, S("Outer Straw Stair")) + stairs.register_slab("straw", recipe, groups, images, S("Straw Slab"), + sounds, true) +end minetest.register_abm({ label = "Farming soil", @@ -175,8 +227,8 @@ for i = 1, 5 do minetest.override_item("default:grass_"..i, {drop = { max_items = 1, items = { - {items = {'farming:seed_wheat'},rarity = 5}, - {items = {'default:grass_1'}}, + {items = {"farming:seed_wheat"},rarity = 5}, + {items = {"default:grass_1"}}, } }}) end @@ -184,7 +236,7 @@ end minetest.override_item("default:junglegrass", {drop = { max_items = 1, items = { - {items = {'farming:seed_cotton'},rarity = 8}, - {items = {'default:junglegrass'}}, + {items = {"farming:seed_cotton"},rarity = 8}, + {items = {"default:junglegrass"}}, } }}) diff --git a/mods/fire/depends.txt b/mods/fire/depends.txt deleted file mode 100644 index 4ad96d5..0000000 --- a/mods/fire/depends.txt +++ /dev/null @@ -1 +0,0 @@ -default diff --git a/mods/fire/init.lua b/mods/fire/init.lua index 612e052..3c8a8fc 100644 --- a/mods/fire/init.lua +++ b/mods/fire/init.lua @@ -1,7 +1,13 @@ +-- fire/init.lua + -- Global namespace for functions fire = {} +-- Load support for MT game translation. +local S = minetest.get_translator("fire") + + -- 'Enable fire' setting local fire_enabled = minetest.settings:get_bool("enable_fire") @@ -82,7 +88,7 @@ minetest.register_node("fire:basic_flame", { }) minetest.register_node("fire:permanent_flame", { - description = "Permanent Flame", + description = S("Permanent Flame"), drawtype = "firelike", tiles = { { @@ -113,7 +119,7 @@ minetest.register_node("fire:permanent_flame", { -- Flint and steel minetest.register_tool("fire:flint_and_steel", { - description = "Flint and Steel", + description = S("Flint and Steel"), inventory_image = "fire_flint_steel.png", sound = {breaks = "default_tool_breaks"}, @@ -320,7 +326,7 @@ if fire_enabled then interval = 7, chance = 12, catch_up = false, - action = function(pos, node, active_object_count, active_object_count_wider) + action = function(pos) local p = minetest.find_node_near(pos, 1, {"air"}) if p then minetest.set_node(p, {name = "fire:basic_flame"}) @@ -337,17 +343,18 @@ if fire_enabled then interval = 5, chance = 18, catch_up = false, - action = function(pos, node, active_object_count, active_object_count_wider) + action = function(pos) local p = minetest.find_node_near(pos, 1, {"group:flammable"}) - if p then - local flammable_node = minetest.get_node(p) - local def = minetest.registered_nodes[flammable_node.name] - if def.on_burn then - def.on_burn(p) - else - minetest.remove_node(p) - minetest.check_for_falling(p) - end + if not p then + return + end + local flammable_node = minetest.get_node(p) + local def = minetest.registered_nodes[flammable_node.name] + if def.on_burn then + def.on_burn(p) + else + minetest.remove_node(p) + minetest.check_for_falling(p) end end, }) diff --git a/mods/fire/locale/fire.de.tr b/mods/fire/locale/fire.de.tr new file mode 100644 index 0000000..d6f8dde --- /dev/null +++ b/mods/fire/locale/fire.de.tr @@ -0,0 +1,3 @@ +# textdomain: fire +Permanent Flame=Permanente Flamme +Flint and Steel=Feuerstein und Stahl diff --git a/mods/fire/locale/fire.es.tr b/mods/fire/locale/fire.es.tr new file mode 100644 index 0000000..8c1b604 --- /dev/null +++ b/mods/fire/locale/fire.es.tr @@ -0,0 +1,3 @@ +# textdomain: fire +Permanent Flame=Llama permanente +Flint and Steel=Yesca y pedernal diff --git a/mods/fire/locale/fire.fr.tr b/mods/fire/locale/fire.fr.tr new file mode 100644 index 0000000..268e823 --- /dev/null +++ b/mods/fire/locale/fire.fr.tr @@ -0,0 +1,3 @@ +# textdomain: fire +Permanent Flame=Flamme permanente +Flint and Steel=Briquet à silex en acier diff --git a/mods/fire/locale/fire.it.tr b/mods/fire/locale/fire.it.tr new file mode 100644 index 0000000..a5e35c6 --- /dev/null +++ b/mods/fire/locale/fire.it.tr @@ -0,0 +1,3 @@ +# textdomain: fire +Permanent Flame=Fiamma permanente +Flint and Steel=Acciarino \ No newline at end of file diff --git a/mods/fire/locale/template.txt b/mods/fire/locale/template.txt new file mode 100644 index 0000000..79ea7a2 --- /dev/null +++ b/mods/fire/locale/template.txt @@ -0,0 +1,3 @@ +# textdomain: fire +Permanent Flame= +Flint and Steel= diff --git a/mods/fire/mod.conf b/mods/fire/mod.conf new file mode 100644 index 0000000..c70f23b --- /dev/null +++ b/mods/fire/mod.conf @@ -0,0 +1,3 @@ +name = fire +description = Minetest Game mod: fire +depends = default diff --git a/mods/fireflies/depends.txt b/mods/fireflies/depends.txt deleted file mode 100644 index e0585b4..0000000 --- a/mods/fireflies/depends.txt +++ /dev/null @@ -1,2 +0,0 @@ -default -vessels \ No newline at end of file diff --git a/mods/fireflies/init.lua b/mods/fireflies/init.lua index 44d4a31..1c533a1 100644 --- a/mods/fireflies/init.lua +++ b/mods/fireflies/init.lua @@ -1,6 +1,11 @@ --- firefly +-- firefly/init.lua + +-- Load support for MT game translation. +local S = minetest.get_translator("fireflies") + + minetest.register_node("fireflies:firefly", { - description = "Firefly", + description = S("Firefly"), drawtype = "plantlike", tiles = {{ name = "fireflies_firefly_animated.png", @@ -47,7 +52,7 @@ minetest.register_node("fireflies:firefly", { }) minetest.register_node("fireflies:hidden_firefly", { - description = "Hidden Firefly", + description = S("Hidden Firefly"), drawtype = "airlike", inventory_image = "fireflies_firefly.png", wield_image = "fireflies_firefly.png", @@ -84,7 +89,7 @@ minetest.register_node("fireflies:hidden_firefly", { -- bug net minetest.register_tool("fireflies:bug_net", { - description = "Bug Net", + description = S("Bug Net"), inventory_image = "fireflies_bugnet.png", on_use = function(itemstack, player, pointed_thing) if not pointed_thing or pointed_thing.type ~= "node" or @@ -113,14 +118,14 @@ minetest.register_craft( { recipe = { {"farming:string", "farming:string"}, {"farming:string", "farming:string"}, - {"default:stick", ""} + {"group:stick", ""} } }) -- firefly in a bottle minetest.register_node("fireflies:firefly_bottle", { - description = "Firefly in a Bottle", + description = S("Firefly in a Bottle"), inventory_image = "fireflies_bottle.png", wield_image = "fireflies_bottle.png", tiles = {{ @@ -137,7 +142,7 @@ minetest.register_node("fireflies:firefly_bottle", { sunlight_propagates = true, light_source = 9, walkable = false, - groups = {dig_immediate = 3, attached_node = 1}, + groups = {vessel = 1, dig_immediate = 3, attached_node = 1}, selection_box = { type = "fixed", fixed = {-0.25, -0.5, -0.25, 0.25, 0.3, 0.25} diff --git a/mods/fireflies/locale/fireflies.de.tr b/mods/fireflies/locale/fireflies.de.tr new file mode 100644 index 0000000..c5d116a --- /dev/null +++ b/mods/fireflies/locale/fireflies.de.tr @@ -0,0 +1,5 @@ +# textdomain: fireflies +Firefly=Glühwürmchen +Hidden Firefly=Verborgenes Glühwürmchen +Bug Net=Insektennetz +Firefly in a Bottle=Glühwürmchen in einer Flasche diff --git a/mods/fireflies/locale/fireflies.es.tr b/mods/fireflies/locale/fireflies.es.tr new file mode 100644 index 0000000..95d053e --- /dev/null +++ b/mods/fireflies/locale/fireflies.es.tr @@ -0,0 +1,5 @@ +# textdomain: fireflies +Firefly=Luciérnaga +Hidden Firefly=Luciérnaga oculta +Bug Net=Red de insectos +Firefly in a Bottle=Luciérnaga en botella diff --git a/mods/fireflies/locale/fireflies.fr.tr b/mods/fireflies/locale/fireflies.fr.tr new file mode 100644 index 0000000..3deda66 --- /dev/null +++ b/mods/fireflies/locale/fireflies.fr.tr @@ -0,0 +1,5 @@ +# textdomain: fireflies +Firefly=Luciole +Hidden Firefly=Luciole cachée +Bug Net=Filet à papillon +Firefly in a Bottle=Luciole en bouteille diff --git a/mods/fireflies/locale/fireflies.it.tr b/mods/fireflies/locale/fireflies.it.tr new file mode 100644 index 0000000..af33943 --- /dev/null +++ b/mods/fireflies/locale/fireflies.it.tr @@ -0,0 +1,5 @@ +# textdomain: fireflies +Firefly=Lucciola +Hidden Firefly=Lucciola nascosta +Bug Net=Retino +Firefly in a Bottle=Lucciola imbottigliata \ No newline at end of file diff --git a/mods/fireflies/locale/template.txt b/mods/fireflies/locale/template.txt new file mode 100644 index 0000000..91aa8ff --- /dev/null +++ b/mods/fireflies/locale/template.txt @@ -0,0 +1,5 @@ +# textdomain: fireflies +Firefly= +Hidden Firefly= +Bug Net= +Firefly in a Bottle= diff --git a/mods/fireflies/mod.conf b/mods/fireflies/mod.conf new file mode 100644 index 0000000..a533588 --- /dev/null +++ b/mods/fireflies/mod.conf @@ -0,0 +1,3 @@ +name = fireflies +description = Minetest Game mod: fireflies +depends = default, vessels diff --git a/mods/bones/depends.txt b/mods/flatgen/depends.txt similarity index 100% rename from mods/bones/depends.txt rename to mods/flatgen/depends.txt diff --git a/mods/flatgen/init.lua b/mods/flatgen/init.lua new file mode 100644 index 0000000..ed29aa6 --- /dev/null +++ b/mods/flatgen/init.lua @@ -0,0 +1,60 @@ +-- flatgen mod for 100% flat maps - created by Krock +-- License: CC0 +local terrain_file = minetest.get_worldpath() .."/flatgen_terrain.txt" + +-- Y position where the terrain starts to generate +local generator_start_y = 1 + +-- Backwards compatiblity +local file = io.open(terrain_file, "r") +if file then + minetest.log("warning", "[flatgen] Found an existing terrain file. " + .. "Falling back to legacy code") + local legacy_file = minetest.get_modpath("flatgen") .. "/init_legacy.lua" + assert(loadfile(legacy_file))(terrain_file, generator_start_y) + return +end + +if not minetest.set_mapgen_setting then + error("[flatgen] Your Minetest version is no longer supported." + .. " (Version < 0.4.16)") +end + +minetest.set_mapgen_setting("mg_name", "flat", true) +minetest.set_mapgen_setting("water_level", "-31000", true) +minetest.set_mapgen_setting("mg_flags", + "light,nocaves,nodungeons,nolight,nodecorations", true) +minetest.set_mapgen_setting("mgflat_spflags", "nolakes,nohills", true) +minetest.set_mapgen_setting("mgflat_ground_level", tostring(generator_start_y), true) + +-- Biomes still occur without this stuff +local set_mgparam = minetest.set_mapgen_setting_noiseparams +local function get_noiseparams(_offset) + return { + flags = "defaults", + lacunarity = 0, + offset = _offset, + scale = 0, + spread = {x=1,y=1,z=1}, + seed = 0, + octaves = 0, + persistence = 0 + } +end +set_mgparam("mg_biome_np_heat", get_noiseparams(60), true) +set_mgparam("mg_biome_np_heat_blend", get_noiseparams(0), true) +set_mgparam("mg_biome_np_humidity", get_noiseparams(67), true) +set_mgparam("mg_biome_np_humidity_blend", get_noiseparams(0), true) + +-- Extend the depth of the grassland biome (y_min) +minetest.register_biome({ + name = "deep_grassy_deciduous_forest", + node_top = "default:dirt_with_grass", + depth_top = 1, + node_filler = "default:dirt", + depth_filler = 3, + y_max = 31000, + y_min = -1000, + heat_point = 60, + humidity_point = 67, +}) diff --git a/mods/flatgen/init_legacy.lua b/mods/flatgen/init_legacy.lua new file mode 100644 index 0000000..9897784 --- /dev/null +++ b/mods/flatgen/init_legacy.lua @@ -0,0 +1,143 @@ +-- Fallback code in case there's already a terrain configuration file existing +-- License: CC0 +local params = { ... } +local terrain_file = params[1] + +-- Y position where the terrain starts to generate +local generator_start_y = params[2] +-- Default settings: grass, dirt, dirt, dirt with stone ground +local layers = { + { "default:dirt_with_grass", 1 }, + { "default:dirt", 3 }, + { "default:stone", nil } -- nil = no limit + -- Fake ignore to generate whenever you want: { "ignore_me", 1 } +} + + +minetest.set_mapgen_params({ + mgname = "singlenode", + water_level = -31000, + flags = "light" +}) + +local function readOrCreateTerrainSettings() + local file = io.open(terrain_file, "r") + if file then + -- Load existing world file + local data = minetest.deserialize(file:read("*all")) + file:close() + assert(data, "[flatgen] Can not deserialize the terrain file") + layers = data + return + end + -- Copy default params to the world file + file = io.open(terrain_file, "w") + file:write(minetest.serialize(layers)) + file:close() +end + +readOrCreateTerrainSettings() + +minetest.after(0, function() + -- Transform node strings to content ID + for i, v in ipairs(layers) do + assert(minetest.registered_nodes[v[1]], "[flatgen] Unknown node: "..v[1]) + v[1] = minetest.get_content_id(v[1]) + end +end) + + +minetest.register_chatcommand("regenerate", { + description = "Regenerates a ^3 nodes around you", + params = "", + privs = {server=true}, + func = function(name, param) + local size = tonumber(param) or 0 + + if size < 10 then + return false, "Please submit a size number >= 10" + end + + size = math.floor(size / 2) + local player = minetest.get_player_by_name(name) + local pos = vector.round(player:getpos()) + + flatgen_generate( + vector.subtract(pos, size), + vector.add(pos, size), + 0, true + ) + return true, "Done!" + end +}) + +local c_air = minetest.get_content_id("air") +function flatgen_getNode(y, regenerate) + if y > generator_start_y then + return c_air + end + + local depth = generator_start_y + for i, v in ipairs(layers) do + if not v[2] or depth - v[2] < y then + return v[1] + end + depth = depth - v[2] + end + return regenerate and c_air --or nil +end + +function flatgen_generate(minp, maxp, seed, regenerate) + if minp.y > generator_start_y then + return -- Area outside of the generation area + end + + if not flatgen_getNode(maxp.y) then + return -- No node defined for that position or below + end + + local vm, emin, emax + if regenerate then -- Load regular VManip to regenerate area + vm = minetest.get_voxel_manip() + emin, emax = vm:read_from_map(minp, maxp) + else -- Load VManip from map generator + vm, emin, emax = minetest.get_mapgen_object("voxelmanip") + end + + local area = VoxelArea:new{MinEdge=emin, MaxEdge=emax} + local data = vm:get_data() + + for z = minp.z, maxp.z do + for y = minp.y, maxp.y do + local vi = area:index(minp.x, y, z) + local node = flatgen_getNode(y, regenerate) + for x = minp.x, maxp.x do + if node then + data[vi] = node + end + vi = vi + 1 + end + end + end + + vm:set_data(data) + if not regenerate then + vm:set_lighting({day=0, night=0}) + end + vm:calc_lighting() + vm:write_to_map(data) + if regenerate then + vm:update_map() + end +end + +table.insert(minetest.registered_on_generateds, 1, flatgen_generate) + +minetest.register_node(":ignore_me", { + description = "You hacker you!", + tiles = {"default_cloud.png"}, + paramtype = "light", + sunlight_propagates = true, + pointable = false, + drop = "", +}) \ No newline at end of file diff --git a/mods/flatgen/mod.conf b/mods/flatgen/mod.conf new file mode 100644 index 0000000..8c9a3d3 --- /dev/null +++ b/mods/flatgen/mod.conf @@ -0,0 +1,3 @@ +name = flatgen +description = Generates true flat worlds without any decoration +depends = default \ No newline at end of file diff --git a/mods/flowers/depends.txt b/mods/flowers/depends.txt deleted file mode 100644 index 4ad96d5..0000000 --- a/mods/flowers/depends.txt +++ /dev/null @@ -1 +0,0 @@ -default diff --git a/mods/flowers/init.lua b/mods/flowers/init.lua index 3ad4bf6..9731750 100644 --- a/mods/flowers/init.lua +++ b/mods/flowers/init.lua @@ -1,3 +1,5 @@ +-- flowers/init.lua + -- Minetest 0.4 mod: default -- See README.txt for licensing and other information. @@ -6,6 +8,9 @@ flowers = {} +-- Load support for MT game translation. +local S = minetest.get_translator("flowers") + -- Map Generation @@ -46,7 +51,6 @@ local function add_simple_flower(name, desc, box, f_groups) paramtype = "light", walkable = false, buildable_to = true, - stack_max = 99, groups = f_groups, sounds = default.node_sound_leaves_defaults(), selection_box = { @@ -59,49 +63,49 @@ end flowers.datas = { { "rose", - "Red Rose", + S("Red Rose"), {-2 / 16, -0.5, -2 / 16, 2 / 16, 5 / 16, 2 / 16}, {color_red = 1, flammable = 1} }, { "tulip", - "Orange Tulip", + S("Orange Tulip"), {-2 / 16, -0.5, -2 / 16, 2 / 16, 3 / 16, 2 / 16}, {color_orange = 1, flammable = 1} }, { "dandelion_yellow", - "Yellow Dandelion", + S("Yellow Dandelion"), {-4 / 16, -0.5, -4 / 16, 4 / 16, -2 / 16, 4 / 16}, {color_yellow = 1, flammable = 1} }, { "chrysanthemum_green", - "Green Chrysanthemum", + S("Green Chrysanthemum"), {-4 / 16, -0.5, -4 / 16, 4 / 16, -1 / 16, 4 / 16}, {color_green = 1, flammable = 1} }, { "geranium", - "Blue Geranium", + S("Blue Geranium"), {-2 / 16, -0.5, -2 / 16, 2 / 16, 2 / 16, 2 / 16}, {color_blue = 1, flammable = 1} }, { "viola", - "Viola", + S("Viola"), {-5 / 16, -0.5, -5 / 16, 5 / 16, -1 / 16, 5 / 16}, {color_violet = 1, flammable = 1} }, { "dandelion_white", - "White Dandelion", + S("White Dandelion"), {-5 / 16, -0.5, -5 / 16, 5 / 16, -2 / 16, 5 / 16}, {color_white = 1, flammable = 1} }, { "tulip_black", - "Black Tulip", + S("Black Tulip"), {-2 / 16, -0.5, -2 / 16, 2 / 16, 3 / 16, 2 / 16}, {color_black = 1, flammable = 1} }, @@ -181,7 +185,7 @@ minetest.register_abm({ -- minetest.register_node("flowers:mushroom_red", { - description = "Red Mushroom", + description = S("Red Mushroom"), tiles = {"flowers_mushroom_red.png"}, inventory_image = "flowers_mushroom_red.png", wield_image = "flowers_mushroom_red.png", @@ -190,7 +194,7 @@ minetest.register_node("flowers:mushroom_red", { sunlight_propagates = true, walkable = false, buildable_to = true, - groups = {snappy = 3, attached_node = 1, flammable = 1}, + groups = {mushroom = 1, snappy = 3, attached_node = 1, flammable = 1}, sounds = default.node_sound_leaves_defaults(), on_use = minetest.item_eat(-5), selection_box = { @@ -200,7 +204,7 @@ minetest.register_node("flowers:mushroom_red", { }) minetest.register_node("flowers:mushroom_brown", { - description = "Brown Mushroom", + description = S("Brown Mushroom"), tiles = {"flowers_mushroom_brown.png"}, inventory_image = "flowers_mushroom_brown.png", wield_image = "flowers_mushroom_brown.png", @@ -209,7 +213,7 @@ minetest.register_node("flowers:mushroom_brown", { sunlight_propagates = true, walkable = false, buildable_to = true, - groups = {food_mushroom = 1, snappy = 3, attached_node = 1, flammable = 1}, + groups = {mushroom = 1, food_mushroom = 1, snappy = 3, attached_node = 1, flammable = 1}, sounds = default.node_sound_leaves_defaults(), on_use = minetest.item_eat(1), selection_box = { @@ -222,8 +226,10 @@ minetest.register_node("flowers:mushroom_brown", { -- Mushroom spread and death function flowers.mushroom_spread(pos, node) - if minetest.get_node_light(pos, nil) == 15 then - minetest.remove_node(pos) + if minetest.get_node_light(pos, 0.5) > 3 then + if minetest.get_node_light(pos, nil) == 15 then + minetest.remove_node(pos) + end return end local positions = minetest.find_nodes_in_area_under_air( @@ -235,8 +241,7 @@ function flowers.mushroom_spread(pos, node) end local pos2 = positions[math.random(#positions)] pos2.y = pos2.y + 1 - if minetest.get_node_light(pos, 0.5) <= 3 and - minetest.get_node_light(pos2, 0.5) <= 3 then + if minetest.get_node_light(pos2, 0.5) <= 3 then minetest.set_node(pos2, {name = node.name}) end end @@ -266,8 +271,8 @@ minetest.register_alias("mushroom:red_natural", "flowers:mushroom_red") -- Waterlily -- -minetest.register_node("flowers:waterlily", { - description = "Waterlily", +local waterlily_def = { + description = S("Waterlily"), drawtype = "nodebox", paramtype = "light", paramtype2 = "facedir", @@ -294,7 +299,6 @@ minetest.register_node("flowers:waterlily", { local pos = pointed_thing.above local node = minetest.get_node(pointed_thing.under) local def = minetest.registered_nodes[node.name] - local player_name = placer and placer:get_player_name() or "" if def and def.on_rightclick then return def.on_rightclick(pointed_thing.under, node, placer, itemstack, @@ -303,8 +307,10 @@ minetest.register_node("flowers:waterlily", { if def and def.liquidtype == "source" and minetest.get_item_group(node.name, "water") > 0 then + local player_name = placer and placer:get_player_name() or "" if not minetest.is_protected(pos, player_name) then - minetest.set_node(pos, {name = "flowers:waterlily", + minetest.set_node(pos, {name = "flowers:waterlily" .. + (def.waving == 3 and "_waving" or ""), param2 = math.random(0, 3)}) if not (creative and creative.is_enabled_for and creative.is_enabled_for(player_name)) then @@ -318,4 +324,13 @@ minetest.register_node("flowers:waterlily", { return itemstack end -}) +} + +local waterlily_waving_def = table.copy(waterlily_def) +waterlily_waving_def.waving = 3 +waterlily_waving_def.drop = "flowers:waterlily" +waterlily_waving_def.groups.not_in_creative_inventory = 1 + +minetest.register_node("flowers:waterlily", waterlily_def) +minetest.register_node("flowers:waterlily_waving", waterlily_waving_def) + diff --git a/mods/flowers/locale/flowers.de.tr b/mods/flowers/locale/flowers.de.tr new file mode 100644 index 0000000..18afb2a --- /dev/null +++ b/mods/flowers/locale/flowers.de.tr @@ -0,0 +1,12 @@ +# textdomain: flowers +Red Rose=Rote Rose +Orange Tulip=Orange Tulpe +Yellow Dandelion=Gelber Löwenzahn +Green Chrysanthemum=Grüne Chrysantheme +Blue Geranium=Blaue Geranie +Viola=Veilchen +White Dandelion=Weißer Löwenzahn +Black Tulip=Schwarze Tulpe +Red Mushroom=Roter Pilz +Brown Mushroom=Brauner Pilz +Waterlily=Wasserlilie diff --git a/mods/flowers/locale/flowers.es.tr b/mods/flowers/locale/flowers.es.tr new file mode 100644 index 0000000..e9c345d --- /dev/null +++ b/mods/flowers/locale/flowers.es.tr @@ -0,0 +1,12 @@ +# textdomain: flowers +Red Rose=Rosa roja +Orange Tulip=Tulipán naranja +Yellow Dandelion=Diente de León amarillo +Green Chrysanthemum=Crisantemo verde +Blue Geranium=Geranio azul +Viola=Violeta +White Dandelion=Diente de León blanco +Black Tulip=Tulipán negro +Red Mushroom=Champiñón rojo +Brown Mushroom=Champiñón café +Waterlily=Nenúfar diff --git a/mods/flowers/locale/flowers.fr.tr b/mods/flowers/locale/flowers.fr.tr new file mode 100644 index 0000000..41e0d00 --- /dev/null +++ b/mods/flowers/locale/flowers.fr.tr @@ -0,0 +1,12 @@ +# textdomain: flowers +Red Rose=Rose rouge +Orange Tulip=Tulipe orange +Yellow Dandelion=Pissenlit jaune +Green Chrysanthemum=Chrysanthème vert +Blue Geranium=Géranium bleu +Viola=Violette +White Dandelion=Pissenlit blanc +Black Tulip=Tulipe noire +Red Mushroom=Champignon rouge +Brown Mushroom=Champignon brun +Waterlily=Nénuphar diff --git a/mods/flowers/locale/flowers.it.tr b/mods/flowers/locale/flowers.it.tr new file mode 100644 index 0000000..07aa381 --- /dev/null +++ b/mods/flowers/locale/flowers.it.tr @@ -0,0 +1,12 @@ +# textdomain: flowers +Red Rose=Rosa rossa +Orange Tulip=Tulipano arancione +Yellow Dandelion=Dente di leone giallo +Green Chrysanthemum=Crisantemo verde +Blue Geranium=Geranio blu +Viola=Viola +White Dandelion=Dente di leone bianco +Black Tulip=Tulipano nero +Red Mushroom=Fungo rosso +Brown Mushroom=Fungo marrone +Waterlily=Ninfea \ No newline at end of file diff --git a/mods/flowers/locale/template.txt b/mods/flowers/locale/template.txt new file mode 100644 index 0000000..a3a687f --- /dev/null +++ b/mods/flowers/locale/template.txt @@ -0,0 +1,12 @@ +# textdomain: flowers +Red Rose= +Orange Tulip= +Yellow Dandelion= +Green Chrysanthemum= +Blue Geranium= +Viola= +White Dandelion= +Black Tulip= +Red Mushroom= +Brown Mushroom= +Waterlily= diff --git a/mods/flowers/mapgen.lua b/mods/flowers/mapgen.lua index ad759c2..85e19b7 100644 --- a/mods/flowers/mapgen.lua +++ b/mods/flowers/mapgen.lua @@ -60,7 +60,7 @@ local function register_mgv6_waterlily() }, y_max = 0, y_min = 0, - decoration = "flowers:waterlily", + decoration = "flowers:waterlily_waving", param2 = 0, param2_max = 3, place_offset_y = 1, @@ -146,7 +146,7 @@ local function register_waterlily() biomes = {"rainforest_swamp", "savanna_shore", "deciduous_forest_shore"}, y_max = 0, y_min = 0, - decoration = "flowers:waterlily", + decoration = "flowers:waterlily_waving", param2 = 0, param2_max = 3, place_offset_y = 1, diff --git a/mods/flowers/mod.conf b/mods/flowers/mod.conf new file mode 100644 index 0000000..cdafe64 --- /dev/null +++ b/mods/flowers/mod.conf @@ -0,0 +1,3 @@ +name = flowers +description = Minetest Game mod: flowers +depends = default diff --git a/mods/game_commands/init.lua b/mods/game_commands/init.lua index 609c4a7..139a879 100644 --- a/mods/game_commands/init.lua +++ b/mods/game_commands/init.lua @@ -1,5 +1,11 @@ +-- game_commands/init.lua + +-- Load support for MT game translation. +local S = minetest.get_translator("game_commands") + + minetest.register_chatcommand("killme", { - description = "Kill yourself to respawn", + description = S("Kill yourself to respawn"), func = function(name) local player = minetest.get_player_by_name(name) if player then @@ -15,11 +21,11 @@ minetest.register_chatcommand("killme", { -- There doesn't seem to be a way to get a default spawn pos -- from the lua API - return false, "No static_spawnpoint defined" + return false, S("No static_spawnpoint defined") end else -- Show error message if used when not logged in, eg: from IRC mod - return false, "You need to be online to be killed!" + return false, S("You need to be online to be killed!") end end }) diff --git a/mods/game_commands/locale/game_commands.de.tr b/mods/game_commands/locale/game_commands.de.tr new file mode 100644 index 0000000..24b0e25 --- /dev/null +++ b/mods/game_commands/locale/game_commands.de.tr @@ -0,0 +1,4 @@ +# textdomain: game_commands +Kill yourself to respawn=Selbstmord begehen, um zu Respawnen +No static_spawnpoint defined=Kein static_spawnpoint definiert +You need to be online to be killed!=Sie müssen online sein, um getötet zu werden! diff --git a/mods/game_commands/locale/game_commands.es.tr b/mods/game_commands/locale/game_commands.es.tr new file mode 100644 index 0000000..702a2ef --- /dev/null +++ b/mods/game_commands/locale/game_commands.es.tr @@ -0,0 +1,4 @@ +# textdomain: game_commands +Kill yourself to respawn=Suicídate para reaparecer +No static_spawnpoint defined=No se ha definido un punto de aparición +You need to be online to be killed!=¡Necesitas estar en línea para que te maten! diff --git a/mods/game_commands/locale/game_commands.fr.tr b/mods/game_commands/locale/game_commands.fr.tr new file mode 100644 index 0000000..0e295d6 --- /dev/null +++ b/mods/game_commands/locale/game_commands.fr.tr @@ -0,0 +1,4 @@ +# textdomain: game_commands +Kill yourself to respawn=Se suicider pour réapparaître +No static_spawnpoint defined=Pas de point d'apparition défini +You need to be online to be killed!=Vous devez être en ligne pour être tué ! diff --git a/mods/game_commands/locale/game_commands.it.tr b/mods/game_commands/locale/game_commands.it.tr new file mode 100644 index 0000000..fd009b1 --- /dev/null +++ b/mods/game_commands/locale/game_commands.it.tr @@ -0,0 +1,4 @@ +# textdomain: game_commands +Kill yourself to respawn=Ucciditi per ricomparire +No static_spawnpoint defined=Nessuno static_spawnpoint definito +You need to be online to be killed!=Devi essere in linea per essere ucciso! \ No newline at end of file diff --git a/mods/game_commands/locale/template.txt b/mods/game_commands/locale/template.txt new file mode 100644 index 0000000..903f160 --- /dev/null +++ b/mods/game_commands/locale/template.txt @@ -0,0 +1,4 @@ +# textdomain: game_commands +Kill yourself to respawn= +No static_spawnpoint defined= +You need to be online to be killed!= diff --git a/mods/game_commands/mod.conf b/mods/game_commands/mod.conf new file mode 100644 index 0000000..5571ff5 --- /dev/null +++ b/mods/game_commands/mod.conf @@ -0,0 +1,2 @@ +name = game_commands +description = Minetest Game mod: game_commands diff --git a/mods/give_initial_stuff/depends.txt b/mods/give_initial_stuff/depends.txt deleted file mode 100644 index 3a7daa1..0000000 --- a/mods/give_initial_stuff/depends.txt +++ /dev/null @@ -1,2 +0,0 @@ -default - diff --git a/mods/give_initial_stuff/init.lua b/mods/give_initial_stuff/init.lua index 4815bd8..74421dc 100644 --- a/mods/give_initial_stuff/init.lua +++ b/mods/give_initial_stuff/init.lua @@ -1,3 +1,5 @@ +-- gave_initial_stuff/init.lua + local stuff_string = minetest.settings:get("initial_stuff") or "default:pick_steel,default:axe_steel,default:shovel_steel," .. "default:torch 99,default:cobble 99" diff --git a/mods/give_initial_stuff/mod.conf b/mods/give_initial_stuff/mod.conf new file mode 100644 index 0000000..51d31ae --- /dev/null +++ b/mods/give_initial_stuff/mod.conf @@ -0,0 +1,3 @@ +name = give_initial_stuff +description = Minetest Game mod: give_initial_stuff +depends = default diff --git a/mods/map/README.txt b/mods/map/README.txt index c91e0d9..068439a 100644 --- a/mods/map/README.txt +++ b/mods/map/README.txt @@ -20,7 +20,7 @@ map:mapping_kit default:glass G default:paper P -default:stick S +group:stick S default:steel_ingot I group:wood W dye:black D diff --git a/mods/map/depends.txt b/mods/map/depends.txt deleted file mode 100644 index 4b15f6a..0000000 --- a/mods/map/depends.txt +++ /dev/null @@ -1,3 +0,0 @@ -default -dye -creative? diff --git a/mods/map/init.lua b/mods/map/init.lua index 72b04c7..7c1e36f 100644 --- a/mods/map/init.lua +++ b/mods/map/init.lua @@ -1,8 +1,14 @@ +-- map/init.lua + -- Mod global namespace map = {} +-- Load support for MT game translation. +local S = minetest.get_translator("map") + + -- Cache creative mode setting local creative_mode_cache = minetest.settings:get_bool("creative_mode") @@ -49,7 +55,7 @@ minetest.after(5.3, cyclic_update) -- Mapping kit item minetest.register_craftitem("map:mapping_kit", { - description = "Mapping Kit\nUse with 'Minimap' key", + description = S("Mapping Kit") .. "\n" .. S("Use with 'Minimap' key"), inventory_image = "map_mapping_kit.png", stack_max = 1, groups = {flammable = 3}, @@ -65,7 +71,7 @@ minetest.register_craftitem("map:mapping_kit", { minetest.register_craft({ output = "map:mapping_kit", recipe = { - {"default:glass", "default:paper", "default:stick"}, + {"default:glass", "default:paper", "group:stick"}, {"default:steel_ingot", "default:paper", "default:steel_ingot"}, {"group:wood", "default:paper", "dye:black"}, } diff --git a/mods/map/locale/map.de.tr b/mods/map/locale/map.de.tr new file mode 100644 index 0000000..1a784ab --- /dev/null +++ b/mods/map/locale/map.de.tr @@ -0,0 +1,3 @@ +# textdomain: map +Mapping Kit=Kartenset +Use with 'Minimap' key=Mit „Karte an/aus“-Taste benutzen diff --git a/mods/map/locale/map.es.tr b/mods/map/locale/map.es.tr new file mode 100644 index 0000000..0faed52 --- /dev/null +++ b/mods/map/locale/map.es.tr @@ -0,0 +1,3 @@ +# textdomain: map +Mapping Kit=Kit de cartografía +Use with 'Minimap' key=Usar con la tecla 'Minimapa' diff --git a/mods/map/locale/map.fr.tr b/mods/map/locale/map.fr.tr new file mode 100644 index 0000000..29f8e20 --- /dev/null +++ b/mods/map/locale/map.fr.tr @@ -0,0 +1,3 @@ +# textdomain: map +Mapping Kit=Kit de carthographie +Use with 'Minimap' key=Utiliser avec le bouton « Minimap » diff --git a/mods/map/locale/map.it.tr b/mods/map/locale/map.it.tr new file mode 100644 index 0000000..f16c665 --- /dev/null +++ b/mods/map/locale/map.it.tr @@ -0,0 +1,3 @@ +# textdomain: map +Mapping Kit=Kit di mappatura +Use with 'Minimap' key=Usalo col tasto 'Minimappa' \ No newline at end of file diff --git a/mods/map/locale/template.txt b/mods/map/locale/template.txt new file mode 100644 index 0000000..2dbe2ee --- /dev/null +++ b/mods/map/locale/template.txt @@ -0,0 +1,3 @@ +# textdomain: map +Mapping Kit= +Use with 'Minimap' key= diff --git a/mods/map/mod.conf b/mods/map/mod.conf new file mode 100644 index 0000000..2099c19 --- /dev/null +++ b/mods/map/mod.conf @@ -0,0 +1,4 @@ +name = map +description = Minetest Game mod: map +depends = default, dye +optional_depends = creative diff --git a/mods/player_api/api.lua b/mods/player_api/api.lua index e309b08..0afd679 100644 --- a/mods/player_api/api.lua +++ b/mods/player_api/api.lua @@ -54,6 +54,7 @@ function player_api.set_model(player, model_name) player:set_properties({ textures = {"player.png", "player_back.png"}, visual = "upright_sprite", + visual_size = {x = 1, y = 2}, collisionbox = {-0.3, 0.0, -0.3, 0.3, 1.75, 0.3}, stepheight = 0.6, eye_height = 1.625, diff --git a/mods/player_api/init.lua b/mods/player_api/init.lua index 7a1f353..783ff7e 100644 --- a/mods/player_api/init.lua +++ b/mods/player_api/init.lua @@ -1,3 +1,5 @@ +-- player/init.lua + dofile(minetest.get_modpath("player_api") .. "/api.lua") -- Default player appearance diff --git a/mods/player_api/mod.conf b/mods/player_api/mod.conf new file mode 100644 index 0000000..198b86d --- /dev/null +++ b/mods/player_api/mod.conf @@ -0,0 +1,2 @@ +name = player_api +description = Minetest Game mod: player_api diff --git a/mods/screwdriver/init.lua b/mods/screwdriver/init.lua index 634edf8..82fbaab 100644 --- a/mods/screwdriver/init.lua +++ b/mods/screwdriver/init.lua @@ -1,5 +1,11 @@ +-- screwdriver/init.lua + screwdriver = {} +-- Load support for MT game translation. +local S = minetest.get_translator("screwdriver") + + screwdriver.ROTATE_FACE = 1 screwdriver.ROTATE_AXIS = 2 screwdriver.disallow = function(pos, node, user, mode, new_param2) @@ -144,8 +150,9 @@ end -- Screwdriver minetest.register_tool("screwdriver:screwdriver", { - description = "Screwdriver (left-click rotates face, right-click rotates axis)", + description = S("Screwdriver") .. "\n" .. S("(left-click rotates face, right-click rotates axis)"), inventory_image = "screwdriver.png", + groups = {tool = 1}, on_use = function(itemstack, user, pointed_thing) screwdriver.handler(itemstack, user, pointed_thing, screwdriver.ROTATE_FACE, 200) return itemstack diff --git a/mods/screwdriver/locale/screwdriver.de.tr b/mods/screwdriver/locale/screwdriver.de.tr new file mode 100644 index 0000000..3c48ab4 --- /dev/null +++ b/mods/screwdriver/locale/screwdriver.de.tr @@ -0,0 +1,3 @@ +# textdomain: screwdriver +Screwdriver=Schraubendreher +(left-click rotates face, right-click rotates axis)=(Linksklick dreht Seite, Rechtsklick dreht Achse) diff --git a/mods/screwdriver/locale/screwdriver.es.tr b/mods/screwdriver/locale/screwdriver.es.tr new file mode 100644 index 0000000..868ffc3 --- /dev/null +++ b/mods/screwdriver/locale/screwdriver.es.tr @@ -0,0 +1,3 @@ +# textdomain: screwdriver +Screwdriver=Destornillador +(left-click rotates face, right-click rotates axis)=(clic-izquierdo gira la cara, clic-derecho rota el eje) diff --git a/mods/screwdriver/locale/screwdriver.fr.tr b/mods/screwdriver/locale/screwdriver.fr.tr new file mode 100644 index 0000000..fe34a9b --- /dev/null +++ b/mods/screwdriver/locale/screwdriver.fr.tr @@ -0,0 +1,3 @@ +# textdomain: screwdriver +Screwdriver=Tournevis +(left-click rotates face, right-click rotates axis)=(clic gauche pour changer de face, clic droit pour changer d'axe) diff --git a/mods/screwdriver/locale/screwdriver.it.tr b/mods/screwdriver/locale/screwdriver.it.tr new file mode 100644 index 0000000..077ea11 --- /dev/null +++ b/mods/screwdriver/locale/screwdriver.it.tr @@ -0,0 +1,3 @@ +# textdomain: screwdriver +Screwdriver=Cacciavite +(left-click rotates face, right-click rotates axis)=(click sinistro ruota la faccia, click destro ruota l'asse) \ No newline at end of file diff --git a/mods/screwdriver/locale/template.txt b/mods/screwdriver/locale/template.txt new file mode 100644 index 0000000..4cc8e2a --- /dev/null +++ b/mods/screwdriver/locale/template.txt @@ -0,0 +1,3 @@ +# textdomain: screwdriver +Screwdriver= +(left-click rotates face, right-click rotates axis)= diff --git a/mods/screwdriver/mod.conf b/mods/screwdriver/mod.conf new file mode 100644 index 0000000..306c52b --- /dev/null +++ b/mods/screwdriver/mod.conf @@ -0,0 +1,2 @@ +name = screwdriver +description = Minetest Game mod: screwdriver diff --git a/mods/sethome/init.lua b/mods/sethome/init.lua index 4563381..bad7806 100644 --- a/mods/sethome/init.lua +++ b/mods/sethome/init.lua @@ -1,6 +1,11 @@ +-- sethome/init.lua sethome = {} +-- Load support for MT game translation. +local S = minetest.get_translator("sethome") + + local homes_file = minetest.get_worldpath() .. "/homes" local homepos = {} @@ -68,30 +73,30 @@ sethome.go = function(name) end minetest.register_privilege("home", { - description = "Can use /sethome and /home", + description = S("Can use /sethome and /home"), give_to_singleplayer = false }) minetest.register_chatcommand("home", { - description = "Teleport you to your home point", + description = S("Teleport you to your home point"), privs = {home = true}, func = function(name) if sethome.go(name) then - return true, "Teleported to home!" + return true, S("Teleported to home!") end - return false, "Set a home using /sethome" + return false, S("Set a home using /sethome") end, }) minetest.register_chatcommand("sethome", { - description = "Set your home point", + description = S("Set your home point"), privs = {home = true}, func = function(name) name = name or "" -- fallback to blank name if nil local player = minetest.get_player_by_name(name) if player and sethome.set(name, player:get_pos()) then - return true, "Home set!" + return true, S("Home set!") end - return false, "Player not found!" + return false, S("Player not found!") end, }) diff --git a/mods/sethome/locale/sethome.de.tr b/mods/sethome/locale/sethome.de.tr new file mode 100644 index 0000000..46279dd --- /dev/null +++ b/mods/sethome/locale/sethome.de.tr @@ -0,0 +1,8 @@ +# textdomain: sethome +Can use /sethome and /home=Kann /sethome und /home benutzen +Teleport you to your home point=Teleportieren Sie sich zu Ihrem Zuhause-Punkt +Teleported to home!=Nach Hause teleportiert! +Set a home using /sethome=Ein Zuhause mit /sethome setzen +Set your home point=Ihren Zuhause-Punkt setzen +Home set!=Zuhause gesetzt! +Player not found!=Spieler nicht gefunden! diff --git a/mods/sethome/locale/sethome.es.tr b/mods/sethome/locale/sethome.es.tr new file mode 100644 index 0000000..7c04ee3 --- /dev/null +++ b/mods/sethome/locale/sethome.es.tr @@ -0,0 +1,8 @@ +# textdomain: sethome +Can use /sethome and /home=Puedes usar /sethome y /home +Teleport you to your home point=Teletranspórtate a tu hogar +Teleported to home!=¡Teletransportado a tu hogar! +Set a home using /sethome=Establece tu hogar usando /sethome +Set your home point=Establece el sitio de tu hogar +Home set!=¡Hogar establecido! +Player not found!=¡Jugador no encontrado! diff --git a/mods/sethome/locale/sethome.fr.tr b/mods/sethome/locale/sethome.fr.tr new file mode 100644 index 0000000..852621d --- /dev/null +++ b/mods/sethome/locale/sethome.fr.tr @@ -0,0 +1,8 @@ +# textdomain: sethome +Can use /sethome and /home=Peut utiliser /sethome et /home +Teleport you to your home point=Vous téléporter à votre domicile +Teleported to home!=Téléporté à votre domicile ! +Set a home using /sethome=Définir un domicile en utilisant /sethome +Set your home point=Définir votre domicile +Home set!=Domicile défini ! +Player not found!=Joueur non trouvé ! diff --git a/mods/sethome/locale/sethome.it.tr b/mods/sethome/locale/sethome.it.tr new file mode 100644 index 0000000..9db1df8 --- /dev/null +++ b/mods/sethome/locale/sethome.it.tr @@ -0,0 +1,8 @@ +# textdomain: sethome +Can use /sethome and /home=Può usare /sethome e /home +Teleport you to your home point=Ti teletrasporta al tuo punto di domicilio +Teleported to home!=Teletrasportato a casa! +Set a home using /sethome=Imposta un domicilio usando /sethome +Set your home point=Imposta il tuo punto di domicilio +Home set!=Domicilio impostato! +Player not found!=Giocatore non trovato! \ No newline at end of file diff --git a/mods/sethome/locale/template.txt b/mods/sethome/locale/template.txt new file mode 100644 index 0000000..d04bd50 --- /dev/null +++ b/mods/sethome/locale/template.txt @@ -0,0 +1,8 @@ +# textdomain: sethome +Can use /sethome and /home= +Teleport you to your home point= +Teleported to home!= +Set a home using /sethome= +Set your home point= +Home set!= +Player not found!= diff --git a/mods/sethome/mod.conf b/mods/sethome/mod.conf new file mode 100644 index 0000000..0079925 --- /dev/null +++ b/mods/sethome/mod.conf @@ -0,0 +1,2 @@ +name = sethome +description = Minetest Game mod: sethome diff --git a/mods/sfinv/README.txt b/mods/sfinv/README.txt index a7ac794..a69e3c3 100644 --- a/mods/sfinv/README.txt +++ b/mods/sfinv/README.txt @@ -11,3 +11,8 @@ https://forum.minetest.net/viewtopic.php?t=19765 Authors of source code ---------------------- rubenwardy (MIT) + +Authors of media +---------------- +paramat (CC BY-SA 3.0): + sfinv_crafting_arrow.png - derived from a texture by BlockMen (CC BY-SA 3.0) diff --git a/mods/sfinv/api.lua b/mods/sfinv/api.lua index cd5b5e8..509cb90 100644 --- a/mods/sfinv/api.lua +++ b/mods/sfinv/api.lua @@ -37,6 +37,14 @@ function sfinv.get_nav_fs(player, context, nav, current_idx) end local theme_inv = [[ + image[0,4.7;1,1;gui_hb_bg.png] + image[1,4.7;1,1;gui_hb_bg.png] + image[2,4.7;1,1;gui_hb_bg.png] + image[3,4.7;1,1;gui_hb_bg.png] + image[4,4.7;1,1;gui_hb_bg.png] + image[5,4.7;1,1;gui_hb_bg.png] + image[6,4.7;1,1;gui_hb_bg.png] + image[7,4.7;1,1;gui_hb_bg.png] list[current_player;main;0,4.7;8,1;] list[current_player;main;0,5.85;8,3;8] ]] @@ -45,11 +53,9 @@ function sfinv.make_formspec(player, context, content, show_inv, size) local tmp = { size or "size[8,8.6]", sfinv.get_nav_fs(player, context, context.nav_titles, context.nav_idx), + show_inv and theme_inv or "", content } - if show_inv then - tmp[#tmp + 1] = theme_inv - end return table.concat(tmp, "") end diff --git a/mods/sfinv/init.lua b/mods/sfinv/init.lua index a2294a4..71e9ee7 100644 --- a/mods/sfinv/init.lua +++ b/mods/sfinv/init.lua @@ -1,22 +1,19 @@ +-- sfinv/init.lua + dofile(minetest.get_modpath("sfinv") .. "/api.lua") +-- Load support for MT game translation. +local S = minetest.get_translator("sfinv") + sfinv.register_page("sfinv:crafting", { - title = "Crafting", + title = S("Crafting"), get = function(self, player, context) return sfinv.make_formspec(player, context, [[ list[current_player;craft;1.75,0.5;3,3;] list[current_player;craftpreview;5.75,1.5;1,1;] - image[4.75,1.5;1,1;gui_furnace_arrow_bg.png^[transformR270] + image[4.75,1.5;1,1;sfinv_crafting_arrow.png] listring[current_player;main] listring[current_player;craft] - image[0,4.7;1,1;gui_hb_bg.png] - image[1,4.7;1,1;gui_hb_bg.png] - image[2,4.7;1,1;gui_hb_bg.png] - image[3,4.7;1,1;gui_hb_bg.png] - image[4,4.7;1,1;gui_hb_bg.png] - image[5,4.7;1,1;gui_hb_bg.png] - image[6,4.7;1,1;gui_hb_bg.png] - image[7,4.7;1,1;gui_hb_bg.png] ]], true) end }) diff --git a/mods/sfinv/license.txt b/mods/sfinv/license.txt index e27dc85..6676d74 100644 --- a/mods/sfinv/license.txt +++ b/mods/sfinv/license.txt @@ -22,3 +22,38 @@ DEALINGS IN THE SOFTWARE. For more details: https://opensource.org/licenses/MIT + + +License of media +---------------- + +Attribution-ShareAlike 3.0 Unported (CC BY-SA 3.0) +Copyright (C) 2019 paramat + +You are free to: +Share — copy and redistribute the material in any medium or format. +Adapt — remix, transform, and build upon the material for any purpose, even commercially. +The licensor cannot revoke these freedoms as long as you follow the license terms. + +Under the following terms: + +Attribution — You must give appropriate credit, provide a link to the license, and +indicate if changes were made. You may do so in any reasonable manner, but not in any way +that suggests the licensor endorses you or your use. + +ShareAlike — If you remix, transform, or build upon the material, you must distribute +your contributions under the same license as the original. + +No additional restrictions — You may not apply legal terms or technological measures that +legally restrict others from doing anything the license permits. + +Notices: + +You do not have to comply with the license for elements of the material in the public +domain or where your use is permitted by an applicable exception or limitation. +No warranties are given. The license may not give you all of the permissions necessary +for your intended use. For example, other rights such as publicity, privacy, or moral +rights may limit how you use the material. + +For more details: +http://creativecommons.org/licenses/by-sa/3.0/ diff --git a/mods/sfinv/locale/sfinv.de.tr b/mods/sfinv/locale/sfinv.de.tr new file mode 100644 index 0000000..1ba6acb --- /dev/null +++ b/mods/sfinv/locale/sfinv.de.tr @@ -0,0 +1,2 @@ +# textdomain:sfinv +Crafting=Fertigung diff --git a/mods/sfinv/locale/sfinv.es.tr b/mods/sfinv/locale/sfinv.es.tr new file mode 100644 index 0000000..b941f4e --- /dev/null +++ b/mods/sfinv/locale/sfinv.es.tr @@ -0,0 +1,2 @@ +# textdomain:sfinv +Crafting=Creación diff --git a/mods/sfinv/locale/sfinv.fr.tr b/mods/sfinv/locale/sfinv.fr.tr new file mode 100644 index 0000000..6d59735 --- /dev/null +++ b/mods/sfinv/locale/sfinv.fr.tr @@ -0,0 +1,2 @@ +# textdomain:sfinv +Crafting=Artisanat diff --git a/mods/sfinv/locale/sfinv.it.tr b/mods/sfinv/locale/sfinv.it.tr new file mode 100644 index 0000000..2a00e91 --- /dev/null +++ b/mods/sfinv/locale/sfinv.it.tr @@ -0,0 +1,2 @@ +# textdomain:sfinv +Crafting=Assemblaggio \ No newline at end of file diff --git a/mods/sfinv/locale/template.txt b/mods/sfinv/locale/template.txt new file mode 100644 index 0000000..913ba9f --- /dev/null +++ b/mods/sfinv/locale/template.txt @@ -0,0 +1,2 @@ +# textdomain:sfinv +Crafting= diff --git a/mods/sfinv/mod.conf b/mods/sfinv/mod.conf new file mode 100644 index 0000000..2934435 --- /dev/null +++ b/mods/sfinv/mod.conf @@ -0,0 +1,2 @@ +name = sfinv +description = Minetest Game mod: sfinv diff --git a/mods/sfinv/textures/sfinv_crafting_arrow.png b/mods/sfinv/textures/sfinv_crafting_arrow.png new file mode 100644 index 0000000..df1bbdb Binary files /dev/null and b/mods/sfinv/textures/sfinv_crafting_arrow.png differ diff --git a/mods/spawn/depends.txt b/mods/spawn/depends.txt deleted file mode 100644 index 548489e..0000000 --- a/mods/spawn/depends.txt +++ /dev/null @@ -1,2 +0,0 @@ -default -beds? diff --git a/mods/spawn/init.lua b/mods/spawn/init.lua index 6707932..0e1261e 100644 --- a/mods/spawn/init.lua +++ b/mods/spawn/init.lua @@ -1,3 +1,5 @@ +-- spawn/init.lua + -- Disable by mapgen, setting or if 'static_spawnpoint' is set -------------------------------------------------------------- @@ -56,6 +58,15 @@ local success = false local spawn_pos = {} +-- Get world 'mapgen_limit' and 'chunksize' to calculate 'spawn_limit'. +-- This accounts for how mapchunks are not generated if they or their shell exceed +-- 'mapgen_limit'. + +local mapgen_limit = tonumber(minetest.get_mapgen_setting("mapgen_limit")) +local chunksize = tonumber(minetest.get_mapgen_setting("chunksize")) +local spawn_limit = math.max(mapgen_limit - (chunksize + 1) * 16, 0) + + --Functions ----------- @@ -100,6 +111,10 @@ local function search() end pos = next_pos() + -- Check for position being outside world edge + if math.abs(pos.x) > spawn_limit or math.abs(pos.z) > spawn_limit then + return false + end end return false diff --git a/mods/spawn/mod.conf b/mods/spawn/mod.conf new file mode 100644 index 0000000..ec3d564 --- /dev/null +++ b/mods/spawn/mod.conf @@ -0,0 +1,4 @@ +name = spawn +description = Minetest Game mod: spawn +depends = default +optional_depends = beds diff --git a/mods/stairs/depends.txt b/mods/stairs/depends.txt deleted file mode 100644 index 4ad96d5..0000000 --- a/mods/stairs/depends.txt +++ /dev/null @@ -1 +0,0 @@ -default diff --git a/mods/stairs/init.lua b/mods/stairs/init.lua index e9f6dc1..e2984f6 100644 --- a/mods/stairs/init.lua +++ b/mods/stairs/init.lua @@ -1,3 +1,5 @@ +-- stairs/init.lua + -- Minetest 0.4 mod: stairs -- See README.txt for licensing and other information. @@ -6,6 +8,9 @@ stairs = {} +-- Load support for MT game translation. +local S = minetest.get_translator("stairs") + -- Register aliases for new pine node names @@ -44,6 +49,12 @@ local function rotate_and_place(itemstack, placer, pointed_thing) return minetest.item_place(itemstack, placer, pointed_thing, param2) end +local function warn_if_exists(nodename) + if minetest.registered_nodes[nodename] then + minetest.log("warning", "Overwriting stairs node: " .. nodename) + end +end + -- Register stair -- Node will be called stairs:stair_ @@ -73,6 +84,7 @@ function stairs.register_stair(subname, recipeitem, groups, images, description, end local new_groups = table.copy(groups) new_groups.stair = 1 + warn_if_exists("stairs:stair_" .. subname) minetest.register_node(":stairs:stair_" .. subname, { description = description, drawtype = "nodebox", @@ -109,7 +121,7 @@ function stairs.register_stair(subname, recipeitem, groups, images, description, if recipeitem then -- Recipe matches appearence in inventory minetest.register_craft({ - output = 'stairs:stair_' .. subname .. ' 8', + output = "stairs:stair_" .. subname .. " 8", recipe = { {"", "", recipeitem}, {"", recipeitem, recipeitem}, @@ -119,10 +131,10 @@ function stairs.register_stair(subname, recipeitem, groups, images, description, -- Use stairs to craft full blocks again (1:1) minetest.register_craft({ - output = recipeitem .. ' 3', + output = recipeitem .. " 3", recipe = { - {'stairs:stair_' .. subname, 'stairs:stair_' .. subname}, - {'stairs:stair_' .. subname, 'stairs:stair_' .. subname}, + {"stairs:stair_" .. subname, "stairs:stair_" .. subname}, + {"stairs:stair_" .. subname, "stairs:stair_" .. subname}, }, }) @@ -135,7 +147,7 @@ function stairs.register_stair(subname, recipeitem, groups, images, description, if baseburntime > 0 then minetest.register_craft({ type = "fuel", - recipe = 'stairs:stair_' .. subname, + recipe = "stairs:stair_" .. subname, burntime = math.floor(baseburntime * 0.75), }) end @@ -167,6 +179,7 @@ function stairs.register_slab(subname, recipeitem, groups, images, description, end local new_groups = table.copy(groups) new_groups.slab = 1 + warn_if_exists("stairs:slab_" .. subname) minetest.register_node(":stairs:slab_" .. subname, { description = description, drawtype = "nodebox", @@ -224,7 +237,7 @@ function stairs.register_slab(subname, recipeitem, groups, images, description, if recipeitem then minetest.register_craft({ - output = 'stairs:slab_' .. subname .. ' 6', + output = "stairs:slab_" .. subname .. " 6", recipe = { {recipeitem, recipeitem, recipeitem}, }, @@ -234,8 +247,8 @@ function stairs.register_slab(subname, recipeitem, groups, images, description, minetest.register_craft({ output = recipeitem, recipe = { - {'stairs:slab_' .. subname}, - {'stairs:slab_' .. subname}, + {"stairs:slab_" .. subname}, + {"stairs:slab_" .. subname}, }, }) @@ -248,7 +261,7 @@ function stairs.register_slab(subname, recipeitem, groups, images, description, if baseburntime > 0 then minetest.register_craft({ type = "fuel", - recipe = 'stairs:slab_' .. subname, + recipe = "stairs:slab_" .. subname, burntime = math.floor(baseburntime * 0.5), }) end @@ -283,7 +296,7 @@ end -- Node will be called stairs:stair_inner_ function stairs.register_stair_inner(subname, recipeitem, groups, images, - description, sounds, worldaligntex) + description, sounds, worldaligntex, full_description) -- Set backface culling and world-aligned textures local stair_images = {} for i, image in ipairs(images) do @@ -307,8 +320,14 @@ function stairs.register_stair_inner(subname, recipeitem, groups, images, end local new_groups = table.copy(groups) new_groups.stair = 1 + if full_description then + description = full_description + else + description = "Inner " .. description + end + warn_if_exists("stairs:stair_inner_" .. subname) minetest.register_node(":stairs:stair_inner_" .. subname, { - description = "Inner " .. description, + description = description, drawtype = "nodebox", tiles = stair_images, paramtype = "light", @@ -335,7 +354,7 @@ function stairs.register_stair_inner(subname, recipeitem, groups, images, if recipeitem then minetest.register_craft({ - output = 'stairs:stair_inner_' .. subname .. ' 7', + output = "stairs:stair_inner_" .. subname .. " 7", recipe = { {"", recipeitem, ""}, {recipeitem, "", recipeitem}, @@ -352,7 +371,7 @@ function stairs.register_stair_inner(subname, recipeitem, groups, images, if baseburntime > 0 then minetest.register_craft({ type = "fuel", - recipe = 'stairs:stair_inner_' .. subname, + recipe = "stairs:stair_inner_" .. subname, burntime = math.floor(baseburntime * 0.875), }) end @@ -364,7 +383,7 @@ end -- Node will be called stairs:stair_outer_ function stairs.register_stair_outer(subname, recipeitem, groups, images, - description, sounds, worldaligntex) + description, sounds, worldaligntex, full_description) -- Set backface culling and world-aligned textures local stair_images = {} for i, image in ipairs(images) do @@ -388,8 +407,14 @@ function stairs.register_stair_outer(subname, recipeitem, groups, images, end local new_groups = table.copy(groups) new_groups.stair = 1 + if full_description then + description = full_description + else + description = "Outer " .. description + end + warn_if_exists("stairs:stair_outer_" .. subname) minetest.register_node(":stairs:stair_outer_" .. subname, { - description = "Outer " .. description, + description = description, drawtype = "nodebox", tiles = stair_images, paramtype = "light", @@ -415,7 +440,7 @@ function stairs.register_stair_outer(subname, recipeitem, groups, images, if recipeitem then minetest.register_craft({ - output = 'stairs:stair_outer_' .. subname .. ' 6', + output = "stairs:stair_outer_" .. subname .. " 6", recipe = { {"", recipeitem, ""}, {recipeitem, recipeitem, recipeitem}, @@ -431,7 +456,7 @@ function stairs.register_stair_outer(subname, recipeitem, groups, images, if baseburntime > 0 then minetest.register_craft({ type = "fuel", - recipe = 'stairs:stair_outer_' .. subname, + recipe = "stairs:stair_outer_" .. subname, burntime = math.floor(baseburntime * 0.625), }) end @@ -454,10 +479,23 @@ function stairs.register_stair_and_slab(subname, recipeitem, groups, images, sounds, worldaligntex) end +-- Local function so we can apply translations +local function my_register_stair_and_slab(subname, recipeitem, groups, images, + desc_stair, desc_slab, sounds, worldaligntex) + stairs.register_stair(subname, recipeitem, groups, images, S(desc_stair), + sounds, worldaligntex) + stairs.register_stair_inner(subname, recipeitem, groups, images, "", + sounds, worldaligntex, S("Inner " .. desc_stair)) + stairs.register_stair_outer(subname, recipeitem, groups, images, "", + sounds, worldaligntex, S("Outer " .. desc_stair)) + stairs.register_slab(subname, recipeitem, groups, images, S(desc_slab), + sounds, worldaligntex) +end + -- Register default stairs and slabs -stairs.register_stair_and_slab( +my_register_stair_and_slab( "wood", "default:wood", {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2}, @@ -468,7 +506,7 @@ stairs.register_stair_and_slab( false ) -stairs.register_stair_and_slab( +my_register_stair_and_slab( "junglewood", "default:junglewood", {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2}, @@ -479,7 +517,7 @@ stairs.register_stair_and_slab( false ) -stairs.register_stair_and_slab( +my_register_stair_and_slab( "pine_wood", "default:pine_wood", {choppy = 3, oddly_breakable_by_hand = 2, flammable = 3}, @@ -490,7 +528,7 @@ stairs.register_stair_and_slab( false ) -stairs.register_stair_and_slab( +my_register_stair_and_slab( "acacia_wood", "default:acacia_wood", {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2}, @@ -501,7 +539,7 @@ stairs.register_stair_and_slab( false ) -stairs.register_stair_and_slab( +my_register_stair_and_slab( "aspen_wood", "default:aspen_wood", {choppy = 3, oddly_breakable_by_hand = 2, flammable = 3}, @@ -512,7 +550,7 @@ stairs.register_stair_and_slab( false ) -stairs.register_stair_and_slab( +my_register_stair_and_slab( "stone", "default:stone", {cracky = 3}, @@ -523,7 +561,7 @@ stairs.register_stair_and_slab( true ) -stairs.register_stair_and_slab( +my_register_stair_and_slab( "cobble", "default:cobble", {cracky = 3}, @@ -534,7 +572,7 @@ stairs.register_stair_and_slab( true ) -stairs.register_stair_and_slab( +my_register_stair_and_slab( "mossycobble", "default:mossycobble", {cracky = 3}, @@ -545,7 +583,7 @@ stairs.register_stair_and_slab( true ) -stairs.register_stair_and_slab( +my_register_stair_and_slab( "stonebrick", "default:stonebrick", {cracky = 2}, @@ -556,7 +594,7 @@ stairs.register_stair_and_slab( false ) -stairs.register_stair_and_slab( +my_register_stair_and_slab( "stone_block", "default:stone_block", {cracky = 2}, @@ -567,7 +605,7 @@ stairs.register_stair_and_slab( true ) -stairs.register_stair_and_slab( +my_register_stair_and_slab( "desert_stone", "default:desert_stone", {cracky = 3}, @@ -578,7 +616,7 @@ stairs.register_stair_and_slab( true ) -stairs.register_stair_and_slab( +my_register_stair_and_slab( "desert_cobble", "default:desert_cobble", {cracky = 3}, @@ -589,7 +627,7 @@ stairs.register_stair_and_slab( true ) -stairs.register_stair_and_slab( +my_register_stair_and_slab( "desert_stonebrick", "default:desert_stonebrick", {cracky = 2}, @@ -600,7 +638,7 @@ stairs.register_stair_and_slab( false ) -stairs.register_stair_and_slab( +my_register_stair_and_slab( "desert_stone_block", "default:desert_stone_block", {cracky = 2}, @@ -611,7 +649,7 @@ stairs.register_stair_and_slab( true ) -stairs.register_stair_and_slab( +my_register_stair_and_slab( "sandstone", "default:sandstone", {crumbly = 1, cracky = 3}, @@ -622,7 +660,7 @@ stairs.register_stair_and_slab( true ) -stairs.register_stair_and_slab( +my_register_stair_and_slab( "sandstonebrick", "default:sandstonebrick", {cracky = 2}, @@ -633,7 +671,7 @@ stairs.register_stair_and_slab( false ) -stairs.register_stair_and_slab( +my_register_stair_and_slab( "sandstone_block", "default:sandstone_block", {cracky = 2}, @@ -644,7 +682,7 @@ stairs.register_stair_and_slab( true ) -stairs.register_stair_and_slab( +my_register_stair_and_slab( "desert_sandstone", "default:desert_sandstone", {crumbly = 1, cracky = 3}, @@ -655,7 +693,7 @@ stairs.register_stair_and_slab( true ) -stairs.register_stair_and_slab( +my_register_stair_and_slab( "desert_sandstone_brick", "default:desert_sandstone_brick", {cracky = 2}, @@ -666,7 +704,7 @@ stairs.register_stair_and_slab( false ) -stairs.register_stair_and_slab( +my_register_stair_and_slab( "desert_sandstone_block", "default:desert_sandstone_block", {cracky = 2}, @@ -677,7 +715,7 @@ stairs.register_stair_and_slab( true ) -stairs.register_stair_and_slab( +my_register_stair_and_slab( "silver_sandstone", "default:silver_sandstone", {crumbly = 1, cracky = 3}, @@ -688,7 +726,7 @@ stairs.register_stair_and_slab( true ) -stairs.register_stair_and_slab( +my_register_stair_and_slab( "silver_sandstone_brick", "default:silver_sandstone_brick", {cracky = 2}, @@ -699,7 +737,7 @@ stairs.register_stair_and_slab( false ) -stairs.register_stair_and_slab( +my_register_stair_and_slab( "silver_sandstone_block", "default:silver_sandstone_block", {cracky = 2}, @@ -710,7 +748,7 @@ stairs.register_stair_and_slab( true ) -stairs.register_stair_and_slab( +my_register_stair_and_slab( "obsidian", "default:obsidian", {cracky = 1, level = 2}, @@ -721,7 +759,7 @@ stairs.register_stair_and_slab( true ) -stairs.register_stair_and_slab( +my_register_stair_and_slab( "obsidianbrick", "default:obsidianbrick", {cracky = 1, level = 2}, @@ -732,7 +770,7 @@ stairs.register_stair_and_slab( false ) -stairs.register_stair_and_slab( +my_register_stair_and_slab( "obsidian_block", "default:obsidian_block", {cracky = 1, level = 2}, @@ -743,7 +781,7 @@ stairs.register_stair_and_slab( true ) -stairs.register_stair_and_slab( +my_register_stair_and_slab( "brick", "default:brick", {cracky = 3}, @@ -754,7 +792,7 @@ stairs.register_stair_and_slab( false ) -stairs.register_stair_and_slab( +my_register_stair_and_slab( "steelblock", "default:steelblock", {cracky = 1, level = 2}, @@ -765,7 +803,7 @@ stairs.register_stair_and_slab( true ) -stairs.register_stair_and_slab( +my_register_stair_and_slab( "tinblock", "default:tinblock", {cracky = 1, level = 2}, @@ -776,7 +814,7 @@ stairs.register_stair_and_slab( true ) -stairs.register_stair_and_slab( +my_register_stair_and_slab( "copperblock", "default:copperblock", {cracky = 1, level = 2}, @@ -787,7 +825,7 @@ stairs.register_stair_and_slab( true ) -stairs.register_stair_and_slab( +my_register_stair_and_slab( "bronzeblock", "default:bronzeblock", {cracky = 1, level = 2}, @@ -798,7 +836,7 @@ stairs.register_stair_and_slab( true ) -stairs.register_stair_and_slab( +my_register_stair_and_slab( "goldblock", "default:goldblock", {cracky = 1}, @@ -809,7 +847,7 @@ stairs.register_stair_and_slab( true ) -stairs.register_stair_and_slab( +my_register_stair_and_slab( "ice", "default:ice", {cracky = 3, cools_lava = 1, slippery = 3}, @@ -820,7 +858,7 @@ stairs.register_stair_and_slab( true ) -stairs.register_stair_and_slab( +my_register_stair_and_slab( "snowblock", "default:snowblock", {crumbly = 3, cools_lava = 1, snowy = 1}, @@ -840,7 +878,7 @@ stairs.register_stair( {"stairs_glass_split.png", "default_glass.png", "stairs_glass_stairside.png^[transformFX", "stairs_glass_stairside.png", "default_glass.png", "stairs_glass_split.png"}, - "Glass Stair", + S("Glass Stair"), default.node_sound_glass_defaults(), false ) @@ -850,7 +888,7 @@ stairs.register_slab( "default:glass", {cracky = 3}, {"default_glass.png", "default_glass.png", "stairs_glass_split.png"}, - "Glass Slab", + S("Glass Slab"), default.node_sound_glass_defaults(), false ) @@ -862,9 +900,10 @@ stairs.register_stair_inner( {"stairs_glass_stairside.png^[transformR270", "default_glass.png", "stairs_glass_stairside.png^[transformFX", "default_glass.png", "default_glass.png", "stairs_glass_stairside.png"}, - "Glass Stair", + "", default.node_sound_glass_defaults(), - false + false, + S("Inner Glass Stair") ) stairs.register_stair_outer( @@ -874,9 +913,10 @@ stairs.register_stair_outer( {"stairs_glass_stairside.png^[transformR90", "default_glass.png", "stairs_glass_outer_stairside.png", "stairs_glass_stairside.png", "stairs_glass_stairside.png^[transformR90","stairs_glass_outer_stairside.png"}, - "Glass Stair", + "", default.node_sound_glass_defaults(), - false + false, + S("Outer Glass Stair") ) stairs.register_stair( @@ -886,7 +926,7 @@ stairs.register_stair( {"stairs_obsidian_glass_split.png", "default_obsidian_glass.png", "stairs_obsidian_glass_stairside.png^[transformFX", "stairs_obsidian_glass_stairside.png", "default_obsidian_glass.png", "stairs_obsidian_glass_split.png"}, - "Obsidian Glass Stair", + S("Obsidian Glass Stair"), default.node_sound_glass_defaults(), false ) @@ -896,7 +936,7 @@ stairs.register_slab( "default:obsidian_glass", {cracky = 3}, {"default_obsidian_glass.png", "default_obsidian_glass.png", "stairs_obsidian_glass_split.png"}, - "Obsidian Glass Slab", + S("Obsidian Glass Slab"), default.node_sound_glass_defaults(), false ) @@ -908,9 +948,10 @@ stairs.register_stair_inner( {"stairs_obsidian_glass_stairside.png^[transformR270", "default_obsidian_glass.png", "stairs_obsidian_glass_stairside.png^[transformFX", "default_obsidian_glass.png", "default_obsidian_glass.png", "stairs_obsidian_glass_stairside.png"}, - "Obsidian Glass Stair", + "", default.node_sound_glass_defaults(), - false + false, + S("Inner Obsidian Glass Stair") ) stairs.register_stair_outer( @@ -920,7 +961,152 @@ stairs.register_stair_outer( {"stairs_obsidian_glass_stairside.png^[transformR90", "default_obsidian_glass.png", "stairs_obsidian_glass_outer_stairside.png", "stairs_obsidian_glass_stairside.png", "stairs_obsidian_glass_stairside.png^[transformR90","stairs_obsidian_glass_outer_stairside.png"}, - "Obsidian Glass Stair", + "", default.node_sound_glass_defaults(), - false + false, + S("Outer Obsidian Glass Stair") ) + +-- Dummy calls to S() to allow translation scripts to detect the strings. +-- To update this add this code to my_register_stair_and_slab: +-- for _,x in ipairs({"","Inner ","Outer "}) do print(("S(%q)"):format(x..desc_stair)) end +-- print(("S(%q)"):format(desc_slab)) + +--[[ +S("Wooden Stair") +S("Inner Wooden Stair") +S("Outer Wooden Stair") +S("Wooden Slab") +S("Jungle Wood Stair") +S("Inner Jungle Wood Stair") +S("Outer Jungle Wood Stair") +S("Jungle Wood Slab") +S("Pine Wood Stair") +S("Inner Pine Wood Stair") +S("Outer Pine Wood Stair") +S("Pine Wood Slab") +S("Acacia Wood Stair") +S("Inner Acacia Wood Stair") +S("Outer Acacia Wood Stair") +S("Acacia Wood Slab") +S("Aspen Wood Stair") +S("Inner Aspen Wood Stair") +S("Outer Aspen Wood Stair") +S("Aspen Wood Slab") +S("Stone Stair") +S("Inner Stone Stair") +S("Outer Stone Stair") +S("Stone Slab") +S("Cobblestone Stair") +S("Inner Cobblestone Stair") +S("Outer Cobblestone Stair") +S("Cobblestone Slab") +S("Mossy Cobblestone Stair") +S("Inner Mossy Cobblestone Stair") +S("Outer Mossy Cobblestone Stair") +S("Mossy Cobblestone Slab") +S("Stone Brick Stair") +S("Inner Stone Brick Stair") +S("Outer Stone Brick Stair") +S("Stone Brick Slab") +S("Stone Block Stair") +S("Inner Stone Block Stair") +S("Outer Stone Block Stair") +S("Stone Block Slab") +S("Desert Stone Stair") +S("Inner Desert Stone Stair") +S("Outer Desert Stone Stair") +S("Desert Stone Slab") +S("Desert Cobblestone Stair") +S("Inner Desert Cobblestone Stair") +S("Outer Desert Cobblestone Stair") +S("Desert Cobblestone Slab") +S("Desert Stone Brick Stair") +S("Inner Desert Stone Brick Stair") +S("Outer Desert Stone Brick Stair") +S("Desert Stone Brick Slab") +S("Desert Stone Block Stair") +S("Inner Desert Stone Block Stair") +S("Outer Desert Stone Block Stair") +S("Desert Stone Block Slab") +S("Sandstone Stair") +S("Inner Sandstone Stair") +S("Outer Sandstone Stair") +S("Sandstone Slab") +S("Sandstone Brick Stair") +S("Inner Sandstone Brick Stair") +S("Outer Sandstone Brick Stair") +S("Sandstone Brick Slab") +S("Sandstone Block Stair") +S("Inner Sandstone Block Stair") +S("Outer Sandstone Block Stair") +S("Sandstone Block Slab") +S("Desert Sandstone Stair") +S("Inner Desert Sandstone Stair") +S("Outer Desert Sandstone Stair") +S("Desert Sandstone Slab") +S("Desert Sandstone Brick Stair") +S("Inner Desert Sandstone Brick Stair") +S("Outer Desert Sandstone Brick Stair") +S("Desert Sandstone Brick Slab") +S("Desert Sandstone Block Stair") +S("Inner Desert Sandstone Block Stair") +S("Outer Desert Sandstone Block Stair") +S("Desert Sandstone Block Slab") +S("Silver Sandstone Stair") +S("Inner Silver Sandstone Stair") +S("Outer Silver Sandstone Stair") +S("Silver Sandstone Slab") +S("Silver Sandstone Brick Stair") +S("Inner Silver Sandstone Brick Stair") +S("Outer Silver Sandstone Brick Stair") +S("Silver Sandstone Brick Slab") +S("Silver Sandstone Block Stair") +S("Inner Silver Sandstone Block Stair") +S("Outer Silver Sandstone Block Stair") +S("Silver Sandstone Block Slab") +S("Obsidian Stair") +S("Inner Obsidian Stair") +S("Outer Obsidian Stair") +S("Obsidian Slab") +S("Obsidian Brick Stair") +S("Inner Obsidian Brick Stair") +S("Outer Obsidian Brick Stair") +S("Obsidian Brick Slab") +S("Obsidian Block Stair") +S("Inner Obsidian Block Stair") +S("Outer Obsidian Block Stair") +S("Obsidian Block Slab") +S("Brick Stair") +S("Inner Brick Stair") +S("Outer Brick Stair") +S("Brick Slab") +S("Steel Block Stair") +S("Inner Steel Block Stair") +S("Outer Steel Block Stair") +S("Steel Block Slab") +S("Tin Block Stair") +S("Inner Tin Block Stair") +S("Outer Tin Block Stair") +S("Tin Block Slab") +S("Copper Block Stair") +S("Inner Copper Block Stair") +S("Outer Copper Block Stair") +S("Copper Block Slab") +S("Bronze Block Stair") +S("Inner Bronze Block Stair") +S("Outer Bronze Block Stair") +S("Bronze Block Slab") +S("Gold Block Stair") +S("Inner Gold Block Stair") +S("Outer Gold Block Stair") +S("Gold Block Slab") +S("Ice Stair") +S("Inner Ice Stair") +S("Outer Ice Stair") +S("Ice Slab") +S("Snow Block Stair") +S("Inner Snow Block Stair") +S("Outer Snow Block Stair") +S("Snow Block Slab") +--]] diff --git a/mods/stairs/locale/stairs.de.tr b/mods/stairs/locale/stairs.de.tr new file mode 100644 index 0000000..41c055b --- /dev/null +++ b/mods/stairs/locale/stairs.de.tr @@ -0,0 +1,145 @@ +# textdomain: stairs +Glass Stair=Glastreppe +Glass Slab=Glasplatte +Inner Glass Stair=Innere Glastreppe +Outer Glass Stair=Äußere Glastreppe +Obsidian Glass Stair=Obsidianglastreppe +Obsidian Glass Slab=Obsidianglasplatte +Inner Obsidian Glass Stair=Innere Obsidianglastreppe +Outer Obsidian Glass Stair=Äußere Obsidianglastreppe +Wooden Stair=Holztreppe +Inner Wooden Stair=Innere Holztreppe +Outer Wooden Stair=Äußere Holztreppe +Wooden Slab=Holzplatte +Jungle Wood Stair=Dschungelholztreppe +Inner Jungle Wood Stair=Innere Dschungelholztreppe +Outer Jungle Wood Stair=Äußere Dschungelholztreppe +Jungle Wood Slab=Dschungelholzplatte +Pine Wood Stair=Kiefernholztreppe +Inner Pine Wood Stair=Innere Kiefernholztreppe +Outer Pine Wood Stair=Äußere Kiefernholztreppe +Pine Wood Slab=Kiefernholzplatte +Acacia Wood Stair=Akazienholztreppe +Inner Acacia Wood Stair=Innere Akazienholztreppe +Outer Acacia Wood Stair=Äußere Akazienholztreppe +Acacia Wood Slab=Akazienholzplatte +Aspen Wood Stair=Espenholztreppe +Inner Aspen Wood Stair=Innere Espenholztreppe +Outer Aspen Wood Stair=Äußere Espenholztreppe +Aspen Wood Slab=Espenholzplatte +Stone Stair=Steintreppe +Inner Stone Stair=Innere Steintreppe +Outer Stone Stair=Äußere Steintreppe +Stone Slab=Steinplatte +Cobblestone Stair=Kopfsteinpflastertreppe +Inner Cobblestone Stair=Innere Kopfsteinpflastertreppe +Outer Cobblestone Stair=Äußere Kopfsteinpflastertreppe +Cobblestone Slab=Kopfsteinpflasterplatte +Mossy Cobblestone Stair=Mosige Kopfsteinpflastertreppe +Inner Mossy Cobblestone Stair=Innere mosige Kopfsteinpflastertreppe +Outer Mossy Cobblestone Stair=Äußere mosige Kopfsteinpflastertreppe +Mossy Cobblestone Slab=Mosige Kopfsteinpflasterplatte +Stone Brick Stair=Steinziegeltreppe +Inner Stone Brick Stair=Innere Steinziegeltreppe +Outer Stone Brick Stair=Äußere Steinziegeltreppe +Stone Brick Slab=Steinziegelplatte +Stone Block Stair=Steinblocktreppe +Inner Stone Block Stair=Innere Steinblocktreppe +Outer Stone Block Stair=Äußere Steinblocktreppe +Stone Block Slab=Steinblockplatte +Desert Stone Stair=Wüstensteintreppe +Inner Desert Stone Stair=Innere Wüstensteintreppe +Outer Desert Stone Stair=Äußere Wüstensteintreppe +Desert Stone Slab=Wüstensteinplatte +Desert Cobblestone Stair=Wüstenkopfsteinpflastertreppe +Inner Desert Cobblestone Stair=Innere Wüstenkopfsteinpflastertreppe +Outer Desert Cobblestone Stair=Äußere Wüstenkopfsteinpflastertreppe +Desert Cobblestone Slab=Wüstenkopfsteinpflasterplatte +Desert Stone Brick Stair=Wüstensteinziegeltreppe +Inner Desert Stone Brick Stair=Innere Wüstensteinziegeltreppe +Outer Desert Stone Brick Stair=Äußere Wüstensteinziegeltreppe +Desert Stone Brick Slab=Wüstensteinziegelplatte +Desert Stone Block Stair=Wüstensteinblocktreppe +Inner Desert Stone Block Stair=Innere Wüstensteinblocktreppe +Outer Desert Stone Block Stair=Äußere Wüstensteinblocktreppe +Desert Stone Block Slab=Wüstensteinblockplatte +Sandstone Stair=Sandsteintreppe +Inner Sandstone Stair=Innere Sandsteintreppe +Outer Sandstone Stair=Äußere Sandsteintreppe +Sandstone Slab=Sandsteinplatte +Sandstone Brick Stair=Sandsteinziegeltreppe +Inner Sandstone Brick Stair=Innere Sandsteinziegeltreppe +Outer Sandstone Brick Stair=Äußere Sandsteinziegeltreppe +Sandstone Brick Slab=Sandsteinziegelplatte +Sandstone Block Stair=Sandsteinblocktreppe +Inner Sandstone Block Stair=Innere Sandsteinblocktreppe +Outer Sandstone Block Stair=Äußere Sandsteinblocktreppe +Sandstone Block Slab=Sandsteinblockplatte +Desert Sandstone Stair=Wüstensandsteintreppe +Inner Desert Sandstone Stair=Innere Wüstensandsteintreppe +Outer Desert Sandstone Stair=Äußere Wüstensandsteintreppe +Desert Sandstone Slab=Wüstensandsteinplatte +Desert Sandstone Brick Stair=Wüstensandsteinziegeltreppe +Inner Desert Sandstone Brick Stair=Innere Wüstensandsteinziegeltreppe +Outer Desert Sandstone Brick Stair=Äußere Wüstensandsteinziegeltreppe +Desert Sandstone Brick Slab=Wüstensandsteinziegelplatte +Desert Sandstone Block Stair=Wüstensandsteinblocktreppe +Inner Desert Sandstone Block Stair=Innere Wüstensandsteinblocktreppe +Outer Desert Sandstone Block Stair=Äußere Wüstensandsteinblocktreppe +Desert Sandstone Block Slab=Wüstensandsteinblockplatte +Silver Sandstone Stair=Silbersandsteintreppe +Inner Silver Sandstone Stair=Innere Silbersandsteintreppe +Outer Silver Sandstone Stair=Äußere Silbersandsteintreppe +Silver Sandstone Slab=Silbersandsteinplatte +Silver Sandstone Brick Stair=Silbersandsteinziegeltreppe +Inner Silver Sandstone Brick Stair=Innere Silbersandsteinziegeltreppe +Outer Silver Sandstone Brick Stair=Äußere Silbersandsteinziegeltreppe +Silver Sandstone Brick Slab=Silbersandsteinziegelplatte +Silver Sandstone Block Stair=Silbersandsteinblocktreppe +Inner Silver Sandstone Block Stair=Innere Silbersandsteinblocktreppe +Outer Silver Sandstone Block Stair=Äußere Silbersandsteinblocktreppe +Silver Sandstone Block Slab=Silbersandsteinblockplatte +Obsidian Stair=Obsidiantreppe +Inner Obsidian Stair=Innere Obsidiantreppe +Outer Obsidian Stair=Äußere Obsidiantreppe +Obsidian Slab=Obsidianplatte +Obsidian Brick Stair=Obsidianziegeltreppe +Inner Obsidian Brick Stair=Innere Obsidianziegeltreppe +Outer Obsidian Brick Stair=Äußere Obsidianziegeltreppe +Obsidian Brick Slab=Obsidianziegelplatte +Obsidian Block Stair=Obsidianblocktreppe +Inner Obsidian Block Stair=Innere Obsidianblocktreppe +Outer Obsidian Block Stair=Äußere Obsidianblocktreppe +Obsidian Block Slab=Obsidianblockplatte +Brick Stair=Ziegeltreppe +Inner Brick Stair=Innere Ziegeltreppe +Outer Brick Stair=Äußere Ziegeltreppe +Brick Slab=Ziegelplatte +Steel Block Stair=Stahlblocktreppe +Inner Steel Block Stair=Innere Stahlblocktreppe +Outer Steel Block Stair=Äußere Stahlblocktreppe +Steel Block Slab=Stahlblockplatte +Tin Block Stair=Zinnblocktreppe +Inner Tin Block Stair=Innere Zinnblocktreppe +Outer Tin Block Stair=Äußere Zinnblocktreppe +Tin Block Slab=Zinnblockplatte +Copper Block Stair=Kupferblocktreppe +Inner Copper Block Stair=Innere Kupferblocktreppe +Outer Copper Block Stair=Äußere Kupferblocktreppe +Copper Block Slab=Kupferblockplatte +Bronze Block Stair=Bronzeblocktreppe +Inner Bronze Block Stair=Innere Bronzeblocktreppe +Outer Bronze Block Stair=Äußere Bronzeblocktreppe +Bronze Block Slab=Bronzeblockplatte +Gold Block Stair=Goldblocktreppe +Inner Gold Block Stair=Innere Goldblocktreppe +Outer Gold Block Stair=Äußere Goldblocktreppe +Gold Block Slab=Goldblockplatte +Ice Stair=Eistreppe +Inner Ice Stair=Innere Eistreppe +Outer Ice Stair=Äußere Eistreppe +Ice Slab=Eisplatte +Snow Block Stair=Schneeblocktreppe +Inner Snow Block Stair=Innere Schneeblocktreppe +Outer Snow Block Stair=Äußere Schneeblocktreppe +Snow Block Slab=Schneeblockplatte diff --git a/mods/stairs/locale/stairs.es.tr b/mods/stairs/locale/stairs.es.tr new file mode 100644 index 0000000..374540c --- /dev/null +++ b/mods/stairs/locale/stairs.es.tr @@ -0,0 +1,145 @@ +# textdomain: stairs +Glass Stair=Escalera de vidrio +Glass Slab=Losa de vidrio +Inner Glass Stair=Escalera interior de vidrio +Outer Glass Stair=Escalera exterior de vidrio +Obsidian Glass Stair=Escalera de vidrio de obsidiana +Obsidian Glass Slab=Losa de vidrio de obsidiana +Inner Obsidian Glass Stair=Escalera interior de vidrio de obsidiana +Outer Obsidian Glass Stair=Escalera exterior de vidrio de obsidiana +Wooden Stair=Escalera de madera +Inner Wooden Stair=Escalera interior de madera +Outer Wooden Stair=Escalera exterior de madera +Wooden Slab=Losa de madera +Jungle Wood Stair=Escalera de madera tropical +Inner Jungle Wood Stair=Escalera interior de madera tropical +Outer Jungle Wood Stair=Escalera exterior de madera tropical +Jungle Wood Slab=Losa de madera tropical +Pine Wood Stair=Escalera de pino +Inner Pine Wood Stair=Escalera interior de pino +Outer Pine Wood Stair=Escalera exterior de pino +Pine Wood Slab=Losa de pino +Acacia Wood Stair=Escalera de acacia +Inner Acacia Wood Stair=Escalera interior de acacia +Outer Acacia Wood Stair=Escalera exterior de acacia +Acacia Wood Slab=Losa de acacia +Aspen Wood Stair=Escalera de álamo +Inner Aspen Wood Stair=Escalera interior de álamo +Outer Aspen Wood Stair=Escalera exterior de álamo +Aspen Wood Slab=Losa de álamo +Stone Stair=Escalera de piedra +Inner Stone Stair=Escalera interior de piedra +Outer Stone Stair=Escalera exterior de piedra +Stone Slab=Losa de piedra +Cobblestone Stair=Escalera de adoquines +Inner Cobblestone Stair=Escalera interior de adoquines +Outer Cobblestone Stair=Escalera exterior de adoquines +Cobblestone Slab=Losa de adoquines +Mossy Cobblestone Stair=Escalera de adoquines musgosos +Inner Mossy Cobblestone Stair=Escalera interior de adoquines musgosos +Outer Mossy Cobblestone Stair=Escalera exterior de adoquines musgosos +Mossy Cobblestone Slab=Losa de adoquines musgosos +Stone Brick Stair=Escalera de ladrillos de piedra +Inner Stone Brick Stair=Escalera interior de ladrillos de piedra +Outer Stone Brick Stair=Escalera exterior de ladrillos de piedra +Stone Brick Slab=Losa de ladrillos de piedra +Stone Block Stair=Escalera de bloques de piedra +Inner Stone Block Stair=Escalera interior de bloques de piedra +Outer Stone Block Stair=Escalera exterior de bloques de piedra +Stone Block Slab=Losa de bloques de piedra +Desert Stone Stair=Escalera de piedra desértica +Inner Desert Stone Stair=Escalera interior de piedra desértica +Outer Desert Stone Stair=Escalera exterior de piedra desértica +Desert Stone Slab=Losa de piedra desértica +Desert Cobblestone Stair=Escalera de adoquines desérticos +Inner Desert Cobblestone Stair=Escalera interior de adoquines desérticos +Outer Desert Cobblestone Stair=Escalera exterior de adoquines desérticos +Desert Cobblestone Slab=Losa de adoquines desérticos +Desert Stone Brick Stair=Escalera de ladrillos desérticos +Inner Desert Stone Brick Stair=Escalera interior de ladrillos desérticos +Outer Desert Stone Brick Stair=Escalera exterior de ladrillos desérticos +Desert Stone Brick Slab=Losa de ladrillos desérticos +Desert Stone Block Stair=Escalera de bloques de piedra desértica +Inner Desert Stone Block Stair=Escalera interior de bloques de piedra desértica +Outer Desert Stone Block Stair=Escalera exterior de bloques de piedra desértica +Desert Stone Block Slab=Losa de bloques de piedra desértica +Sandstone Stair=Escalera de arenisca +Inner Sandstone Stair=Escalera interior de arenisca +Outer Sandstone Stair=Escalera exterior de arenisca +Sandstone Slab=Losa de arenisca +Sandstone Brick Stair=Escalera de ladrillos de arenisca +Inner Sandstone Brick Stair=Escalera interior de ladrillos de arenisca +Outer Sandstone Brick Stair=Escalera exterior de ladrillos de arenisca +Sandstone Brick Slab=Losa de ladrillos de arenisca +Sandstone Block Stair=Escalera de bloques de arenisca +Inner Sandstone Block Stair=Escalera interior de bloques de arenisca +Outer Sandstone Block Stair=Escalera exterior de bloques de arenisca +Sandstone Block Slab=Losa de bloques de arenisca +Desert Sandstone Stair=Escalera de arenisca desértica +Inner Desert Sandstone Stair=Escalera interior de arenisca desértica +Outer Desert Sandstone Stair=Escalera exterior de arenisca desértica +Desert Sandstone Slab=Losa de arenisca desértica +Desert Sandstone Brick Stair=Escalera de ladrillos de arenisca desértica +Inner Desert Sandstone Brick Stair=Escalera interior de ladrillos de arenisca desértica +Outer Desert Sandstone Brick Stair=Escalera exterior de ladrillos de arenisca desértica +Desert Sandstone Brick Slab=Losa de ladrillos de arenisca desértica +Desert Sandstone Block Stair=Escalera de bloques de arenisca desértica +Inner Desert Sandstone Block Stair=Escalera interior de bloques de arenisca desértica +Outer Desert Sandstone Block Stair=Escalera exterior de bloques de arenisca desértica +Desert Sandstone Block Slab=Losa de bloques de arenisca desértica +Silver Sandstone Stair=Escalera de arenisca plateada +Inner Silver Sandstone Stair=Escalera interior de arenisca plateada +Outer Silver Sandstone Stair=Escalera exterior de arenisca plateada +Silver Sandstone Slab=Losa de arenisca plateada +Silver Sandstone Brick Stair=Escalera de ladrillos de arenisca plateada +Inner Silver Sandstone Brick Stair=Escalera interior de ladrillos de arenisca plateada +Outer Silver Sandstone Brick Stair=Escalera exterior de ladrillos de arenisca plateada +Silver Sandstone Brick Slab=Losa de ladrillos de arenisca plateada +Silver Sandstone Block Stair=Escalera de bloques de arenisca plateada +Inner Silver Sandstone Block Stair=Escalera interior de bloques de arenisca plateada +Outer Silver Sandstone Block Stair=Escalera exterior de bloques de arenisca plateada +Silver Sandstone Block Slab=Losa de bloques de arenisca plateada +Obsidian Stair=Escalera de obsidiana +Inner Obsidian Stair=Escalera interior de obsidiana +Outer Obsidian Stair=Escalera exterior de obsidiana +Obsidian Slab=Losa de obsidiana +Obsidian Brick Stair=Escalera de ladrillos de obsidiana +Inner Obsidian Brick Stair=Escalera interior de ladrillos de obsidiana +Outer Obsidian Brick Stair=Escalera exterior de ladrillos de obsidiana +Obsidian Brick Slab=Losa de ladrillos de obsidiana +Obsidian Block Stair=Escalera de bloques de obsidiana +Inner Obsidian Block Stair=Escalera interior de bloques de obsidiana +Outer Obsidian Block Stair=Escalera exterior de bloques de obsidiana +Obsidian Block Slab=Losa de bloques de obsidiana +Brick Stair=Escalera de ladrillos +Inner Brick Stair=Escalera interior de ladrillos +Outer Brick Stair=Escalera exterior de ladrillos +Brick Slab=Losa de ladrillos +Steel Block Stair=Escalera de acero +Inner Steel Block Stair=Escalera interior de acero +Outer Steel Block Stair=Escalera exterior de acero +Steel Block Slab=Losa de acero +Tin Block Stair=Escalera de estaño +Inner Tin Block Stair=Escalera interior de estaño +Outer Tin Block Stair=Escalera exterior de estaño +Tin Block Slab=Losa de estaño +Copper Block Stair=Escalera de cobre +Inner Copper Block Stair=Escalera interior de cobre +Outer Copper Block Stair=Escalera exterior de cobre +Copper Block Slab=Losa de cobre +Bronze Block Stair=Escalera de bronce +Inner Bronze Block Stair=Escalera interior de bronce +Outer Bronze Block Stair=Escalera exterior de bronce +Bronze Block Slab=Losa de bronce +Gold Block Stair=Escalera de oro +Inner Gold Block Stair=Escalera interior de oro +Outer Gold Block Stair=Escalera exterior de oro +Gold Block Slab=Losa de oro +Ice Stair=Escalera de hielo +Inner Ice Stair=Escalera interior de hielo +Outer Ice Stair=Escalera exterior de hielo +Ice Slab=Losa de hielo +Snow Block Stair=Escalera de nieve +Inner Snow Block Stair=Escalera interior de nieve +Outer Snow Block Stair=Escalera exterior de nieve +Snow Block Slab=Losa de nieve diff --git a/mods/stairs/locale/stairs.fr.tr b/mods/stairs/locale/stairs.fr.tr new file mode 100644 index 0000000..2dd6594 --- /dev/null +++ b/mods/stairs/locale/stairs.fr.tr @@ -0,0 +1,145 @@ +# textdomain: stairs +Glass Stair=Escalier de verre +Glass Slab=Dalle de verre +Inner Glass Stair=Escalier intérieur de verre +Outer Glass Stair=Escalier extérieur de verre +Obsidian Glass Stair=Escalier de verre d'obsidienne +Obsidian Glass Slab=Dalle de verre d'obsidienne +Inner Obsidian Glass Stair=Escalier intérieur de verre d'obsidienne +Outer Obsidian Glass Stair=Escalier extérieur de verre d'obsidienne +Wooden Stair=Escalier en bois +Inner Wooden Stair=Escalier intérieur en bois +Outer Wooden Stair=Escalier extérieur en bois +Wooden Slab=Dalle de bois +Jungle Wood Stair=Escalier en bois de la jungle +Inner Jungle Wood Stair=Escalier intérieur en bois de la jungle +Outer Jungle Wood Stair=Escalier extérieur en bois de la jungle +Jungle Wood Slab=Dalle en bois de la jungle +Pine Wood Stair=Escalier en pin +Inner Pine Wood Stair=Escalier intérieur en pin +Outer Pine Wood Stair=Escalier extérieur en pin +Pine Wood Slab=Dalle en pin +Acacia Wood Stair=Escalier en acacia +Inner Acacia Wood Stair=Escalier intérieur en acacia +Outer Acacia Wood Stair=Escalier extérieur en acacia +Acacia Wood Slab=Dalle en acacia +Aspen Wood Stair=Escalier en tremble +Inner Aspen Wood Stair=Escalier intérieur en tremble +Outer Aspen Wood Stair=Escalier extérieur en tremble +Aspen Wood Slab=Dalle en tremble +Stone Stair=Escalier de pierre +Inner Stone Stair=Escalier intérieur de pierre +Outer Stone Stair=Escalier extérieur de pierre +Stone Slab=Dalle de pierre +Cobblestone Stair=Escalier en pavé +Inner Cobblestone Stair=Escalier intérieur en pavé +Outer Cobblestone Stair=Escalier extérieur en pavé +Cobblestone Slab=Dalle en pavé +Mossy Cobblestone Stair=Escalier en pavé moussu +Inner Mossy Cobblestone Stair=Escalier intérieur en pavé moussu +Outer Mossy Cobblestone Stair=Escalier extérieur en pavé moussu +Mossy Cobblestone Slab=Dalle en pavé moussu +Stone Brick Stair=Escalier en brique de pierre +Inner Stone Brick Stair=Escalier intérieur en brique de pierre +Outer Stone Brick Stair=Escalier extérieur en brique de pierre +Stone Brick Slab=Dalle en brique de pierre +Stone Block Stair=Escalier en bloc de pierre +Inner Stone Block Stair=Escalier intérieur en bloc de pierre +Outer Stone Block Stair=Escalier extérieur en bloc de pierre +Stone Block Slab=Dalle en bloc de pierre +Desert Stone Stair=Escalier en pierre du désert +Inner Desert Stone Stair=Escalier intérieur en pierre du désert +Outer Desert Stone Stair=Escalier extérieur en pierre du désert +Desert Stone Slab=Dalle en pierre du désert +Desert Cobblestone Stair=Escalier en pavé du désert +Inner Desert Cobblestone Stair=Escalier intérieur en pavé du désert +Outer Desert Cobblestone Stair=Escalier extérieur en pavé du désert +Desert Cobblestone Slab=Dalle en pavé du désert +Desert Stone Brick Stair=Escalier en brique de pierre du désert +Inner Desert Stone Brick Stair=Escalier intérieur en brique de pierre du désert +Outer Desert Stone Brick Stair=Escalier extérieur en brique de pierre du désert +Desert Stone Brick Slab=Dalle en brique de pierre du désert +Desert Stone Block Stair=Escalier en bloc de pierre du désert +Inner Desert Stone Block Stair=Escalier intérieur en bloc de pierre du désert +Outer Desert Stone Block Stair=Escalier extérieur en bloc de pierre du désert +Desert Stone Block Slab=Dalle en bloc de pierre du désert +Sandstone Stair=Escalier en grès +Inner Sandstone Stair=Escalier intérieur en grès +Outer Sandstone Stair=Escalier extérieur en grès +Sandstone Slab=Dalle en grès +Sandstone Brick Stair=Escalier en brique de grès +Inner Sandstone Brick Stair=Escalier intérieur en brique de grès +Outer Sandstone Brick Stair=Escalier extérieur en brique de grès +Sandstone Brick Slab=Dalle en brique de grès +Sandstone Block Stair=Escalier en bloc de grès +Inner Sandstone Block Stair=Escalier intérieur en bloc de grès +Outer Sandstone Block Stair=Escalier extérieur en bloc de grès +Sandstone Block Slab=Dalle en bloc de grès +Desert Sandstone Stair=Escalier en grès du désert +Inner Desert Sandstone Stair=Escalier intérieur en grès du désert +Outer Desert Sandstone Stair=Escalier extérieur en grès du désert +Desert Sandstone Slab=Dalle en grès du désert +Desert Sandstone Brick Stair=Escalier en brique de grès du désert +Inner Desert Sandstone Brick Stair=Escalier intérieur en brique de grès du désert +Outer Desert Sandstone Brick Stair=Escalier extérieur en brique de grès du désert +Desert Sandstone Brick Slab=Dalle en brique de grès du désert +Desert Sandstone Block Stair=Escalier en bloc de grès du désert +Inner Desert Sandstone Block Stair=Escalier intérieur en bloc de grès du désert +Outer Desert Sandstone Block Stair=Escalier extérieur en bloc de grès du désert +Desert Sandstone Block Slab=Dalle en bloc de grès du désert +Silver Sandstone Stair=Escalier en grès argenté +Inner Silver Sandstone Stair=Escalier intérieur en grès argenté +Outer Silver Sandstone Stair=Escalier extérieur en grès argenté +Silver Sandstone Slab=Dalle en grès argenté +Silver Sandstone Brick Stair=Escalier en brique de grès argenté +Inner Silver Sandstone Brick Stair=Escalier intérieur en brique de grès argenté +Outer Silver Sandstone Brick Stair=Escalier extérieur en brique de grès argenté +Silver Sandstone Brick Slab=Dalle en brique de grès argenté +Silver Sandstone Block Stair=Escalier en bloc de grès argenté +Inner Silver Sandstone Block Stair=Escalier intérieur en bloc de grès argenté +Outer Silver Sandstone Block Stair=Escalier extérieur en bloc de grès argenté +Silver Sandstone Block Slab=Dalle en bloc de grès argenté +Obsidian Stair=Escalier en obsidienne +Inner Obsidian Stair=Escalier intérieur en obsidienne +Outer Obsidian Stair=Escalier extérieur en obsidienne +Obsidian Slab=Dalle en obsidienne +Obsidian Brick Stair=Escalier en brique d'obsidienne +Inner Obsidian Brick Stair=Escalier intérieur en brique d'obsidienne +Outer Obsidian Brick Stair=Escalier extérieur en brique d'obsidienne +Obsidian Brick Slab=Dalle en brique d'obsidienne +Obsidian Block Stair=Escalier en bloc d'obsidienne +Inner Obsidian Block Stair=Escalier intérieur en bloc d'obsidienne +Outer Obsidian Block Stair=Escalier extérieur en bloc d'obsidienne +Obsidian Block Slab=Dalle en bloc d'obsidienne +Brick Stair=Escalier en brique +Inner Brick Stair=Escalier intérieur en brique +Outer Brick Stair=Escalier extérieur en brique +Brick Slab=Dalle en brique +Steel Block Stair=Escalier en acier +Inner Steel Block Stair=Escalier intérieur en acier +Outer Steel Block Stair=Escalier extérieur en acier +Steel Block Slab=Dalle en acier +Tin Block Stair=Escalier en bloc d'étain +Inner Tin Block Stair=Escalier intérieur en bloc d'étain +Outer Tin Block Stair=Escalier extérieur en bloc d'étain +Tin Block Slab=Dalle en bloc d'étain +Copper Block Stair=Escalier en bloc de cuivre +Inner Copper Block Stair=Escalier intérieur en bloc de cuivre +Outer Copper Block Stair=Escalier extérieur en bloc de cuivre +Copper Block Slab=Dalle en bloc de cuivre +Bronze Block Stair=Escalier en bronze +Inner Bronze Block Stair=Escalier intérieur en bronze +Outer Bronze Block Stair=Escalier extérieur en bronze +Bronze Block Slab=Dalle en bronze +Gold Block Stair=Escalier en bloc d'or +Inner Gold Block Stair=Escalier intérieur en bloc d'or +Outer Gold Block Stair=Escalier extérieur en bloc d'or +Gold Block Slab=Dalle en bloc d'or +Ice Stair=Escalier de glace +Inner Ice Stair=Escalier intérieur de glace +Outer Ice Stair=Escalier extérieur de glace +Ice Slab=Dalle de glace +Snow Block Stair=Escalier en bloc de neige +Inner Snow Block Stair=Escalier intérieur en bloc de neige +Outer Snow Block Stair=Escalier extérieur en bloc de neige +Snow Block Slab=Escalier en bloc de neige diff --git a/mods/stairs/locale/stairs.it.tr b/mods/stairs/locale/stairs.it.tr new file mode 100644 index 0000000..16945ec --- /dev/null +++ b/mods/stairs/locale/stairs.it.tr @@ -0,0 +1,145 @@ +# textdomain: stairs +Glass Stair=Scala di vetro +Glass Slab=Lastra di vetro +Inner Glass Stair=Scala di vetro interna +Outer Glass Stair=Scala di vetro esterna +Obsidian Glass Stair=Scala di vetro d'ossidiana +Obsidian Glass Slab=Lastra di vetro d'ossidiana +Inner Obsidian Glass Stair=Scala di vetro d'ossidiana interna +Outer Obsidian Glass Stair=Scala di vetro d'ossidiana esterna +Wooden Stair=Scala di legno +Inner Wooden Stair=Scala di legno interna +Outer Wooden Stair=Scala di legno esterna +Wooden Slab=Lastra di legno +Jungle Wood Stair=Scala di legno della giungla +Inner Jungle Wood Stair=Scala di legno della giungla interna +Outer Jungle Wood Stair=Scala di legno della giungla esterna +Jungle Wood Slab=Lastra di legno della giungla +Pine Wood Stair=Scala di legno di pino +Inner Pine Wood Stair=Scala di legno di pino interna +Outer Pine Wood Stair=Scala di legno di pino esterna +Pine Wood Slab=Lastra di legno di pino +Acacia Wood Stair=Scala di legno d'acacia +Inner Acacia Wood Stair=Scala di legno d'acacia interna +Outer Acacia Wood Stair=Scala di legno d'acacia esterna +Acacia Wood Slab=Lastra di legno d'acacia +Aspen Wood Stair=Scala di legno di pioppo +Inner Aspen Wood Stair=Scala di legno di pioppo interna +Outer Aspen Wood Stair=Scala di legno di pioppo esterna +Aspen Wood Slab=Lastra di legno di pioppo +Stone Stair=Scala di pietra +Inner Stone Stair=Scala di pietra interna +Outer Stone Stair=Scala di pietra esterna +Stone Slab=Lastra di pietra +Cobblestone Stair=Scala di ciottoli +Inner Cobblestone Stair=Scala di ciottoli interna +Outer Cobblestone Stair=Scala di ciottoli esterna +Cobblestone Slab=Lastra di ciottoli +Mossy Cobblestone Stair=Scala di ciottoli muschiosi +Inner Mossy Cobblestone Stair=Scala di ciottoli muschiosi interna +Outer Mossy Cobblestone Stair=Scala di ciottoli muschiosi esterna +Mossy Cobblestone Slab=Lastra di ciottoli muschiosi +Stone Brick Stair=Scala di mattone di pietra +Inner Stone Brick Stair=Scala di mattone di pietra interna +Outer Stone Brick Stair=Scala di mattone di pietra esterna +Stone Brick Slab=Lastra di mattone di pietra +Stone Block Stair=Scala di blocco di pietra +Inner Stone Block Stair=Scala di blocco di pietra interna +Outer Stone Block Stair=Scala di blocco di pietra esterna +Stone Block Slab=Lastra di blocco di pietra +Desert Stone Stair=Scala di pietra del deserto +Inner Desert Stone Stair=Scala di pietra del deserto interna +Outer Desert Stone Stair=Scala di pietra del deserto esterna +Desert Stone Slab=Lastra di pietra del deserto +Desert Cobblestone Stair=Scala di ciottoli del deserto +Inner Desert Cobblestone Stair=Scala di ciottoli del deserto interna +Outer Desert Cobblestone Stair=Scala di ciottoli del deserto esterna +Desert Cobblestone Slab=Lastra di ciottoli del deserto +Desert Stone Brick Stair=Scala di mattone di pietra del deserto +Inner Desert Stone Brick Stair=Scala di mattone di pietra del deserto interna +Outer Desert Stone Brick Stair=Scala di mattone di pietra del deserto esterna +Desert Stone Brick Slab=Lastra di mattone di pietra del deserto +Desert Stone Block Stair=Scala di blocco di pietra del deserto +Inner Desert Stone Block Stair=Scala di blocco di pietra del deserto interna +Outer Desert Stone Block Stair=Scala di blocco di pietra del deserto esterna +Desert Stone Block Slab=Lastra di blocco di pietra del deserto +Sandstone Stair=Scala d'arenaria +Inner Sandstone Stair=Scala d'arenaria interna +Outer Sandstone Stair=Scala d'arenaria esterna +Sandstone Slab=Lastra d'arenaria +Sandstone Brick Stair=Scala di mattone d'arenaria +Inner Sandstone Brick Stair=Scala di mattone d'arenaria interna +Outer Sandstone Brick Stair=Scala di mattone d'arenaria esterna +Sandstone Brick Slab=Lastra di mattone d'arenaria +Sandstone Block Stair=Scala di blocco d'arenaria +Inner Sandstone Block Stair=Scala di blocco d'arenaria interna +Outer Sandstone Block Stair=Scala di blocco d'arenaria esterna +Sandstone Block Slab=Lastra di blocco d'arenaria +Desert Sandstone Stair=Scala d'arenaria del deserto +Inner Desert Sandstone Stair=Scala d'arenaria del deserto interna +Outer Desert Sandstone Stair=Scala d'arenaria del deserto esterna +Desert Sandstone Slab=Lastra d'arenaria del deserto +Desert Sandstone Brick Stair=Scala di mattone d'arenaria del deserto +Inner Desert Sandstone Brick Stair=Scala di mattone d'arenaria del deserto interna +Outer Desert Sandstone Brick Stair=Scala di mattone d'arenaria del deserto esterna +Desert Sandstone Brick Slab=Lastra di mattone d'arenaria del deserto +Desert Sandstone Block Stair=Scala di blocco d'arenaria del deserto +Inner Desert Sandstone Block Stair=Scala di blocco d'arenaria del deserto interna +Outer Desert Sandstone Block Stair=Scala di blocco d'arenaria del deserto esterna +Desert Sandstone Block Slab=Lastra di blocco d'arenaria del deserto +Silver Sandstone Stair=Scala d'arenaria argentata +Inner Silver Sandstone Stair=Scala d'arenaria argentata interna +Outer Silver Sandstone Stair=Scala d'arenaria argentata esterna +Silver Sandstone Slab=Lastra d'arenaria argentata +Silver Sandstone Brick Stair=Scala di mattone d'arenaria argentata +Inner Silver Sandstone Brick Stair=Scala di mattone d'arenaria argentata interna +Outer Silver Sandstone Brick Stair=Scala di mattone d'arenaria argentata esterna +Silver Sandstone Brick Slab=Lastra di mattone d'arenaria argentata +Silver Sandstone Block Stair=Scala di blocco d'arenaria argentata +Inner Silver Sandstone Block Stair=Scala di blocco d'arenaria argentata interna +Outer Silver Sandstone Block Stair=Scala di blocco d'arenaria argentata esterna +Silver Sandstone Block Slab=Lastra di blocco d'arenaria argentata +Obsidian Stair=Scala d'ossidiana +Inner Obsidian Stair=Scala d'ossidiana interna +Outer Obsidian Stair=Scala d'ossidiana esterna +Obsidian Slab=Lastra d'ossidiana +Obsidian Brick Stair=Scala di mattone d'ossidiana +Inner Obsidian Brick Stair=Scala di mattone d'ossidiana interna +Outer Obsidian Brick Stair=Scala di mattone d'ossidiana esterna +Obsidian Brick Slab=Lastra di mattone d'ossidiana +Obsidian Block Stair=Scala di blocco d'ossidiana +Inner Obsidian Block Stair=Scala di blocco d'ossidiana interna +Outer Obsidian Block Stair=Scala di blocco d'ossidiana esterna +Obsidian Block Slab=Lastra di blocco d'ossidiana +Brick Stair=Scala di mattone +Inner Brick Stair=Scala di mattone interna +Outer Brick Stair=Scala di mattone esterna +Brick Slab=Lastra di mattone +Steel Block Stair=Scala di blocco d'acciaio +Inner Steel Block Stair=Scala di blocco d'acciaio interna +Outer Steel Block Stair=Scala di blocco d'acciaio esterna +Steel Block Slab=Lastra di blocco d'acciaio +Tin Block Stair=Scala di blocco di stagno +Inner Tin Block Stair=Scala di blocco di stagno interna +Outer Tin Block Stair=Scala di blocco di stagno esterna +Tin Block Slab=Lastra di blocco di stagno +Copper Block Stair=Scala di blocco di rame +Inner Copper Block Stair=Scala di blocco di rame interna +Outer Copper Block Stair=Scala di blocco di rame esterna +Copper Block Slab=Lastra di blocco di rame +Bronze Block Stair=Scala di blocco di bronzo +Inner Bronze Block Stair=Scala di blocco di bronzo interna +Outer Bronze Block Stair=Scala di blocco di bronzo esterna +Bronze Block Slab=Lastra di blocco di bronzo +Gold Block Stair=Scala di blocco d'oro +Inner Gold Block Stair=Scala di blocco d'oro interna +Outer Gold Block Stair=Scala di blocco d'oro esterna +Gold Block Slab=Lastra di blocco d'oro +Ice Stair=Scala di ghiaccio +Inner Ice Stair=Scala di ghiaccio interna +Outer Ice Stair=Scala di ghiaccio esterna +Ice Slab=Lastra di ghiaccio +Snow Block Stair=Scala di blocco di neve +Inner Snow Block Stair=Scala di blocco di neve interna +Outer Snow Block Stair=Scala di blocco di neve esterna +Snow Block Slab=Lastra di blocco di neve diff --git a/mods/stairs/locale/template.txt b/mods/stairs/locale/template.txt new file mode 100644 index 0000000..ca2c865 --- /dev/null +++ b/mods/stairs/locale/template.txt @@ -0,0 +1,145 @@ +# textdomain: stairs +Glass Stair= +Glass Slab= +Inner Glass Stair= +Outer Glass Stair= +Obsidian Glass Stair= +Obsidian Glass Slab= +Inner Obsidian Glass Stair= +Outer Obsidian Glass Stair= +Wooden Stair= +Inner Wooden Stair= +Outer Wooden Stair= +Wooden Slab= +Jungle Wood Stair= +Inner Jungle Wood Stair= +Outer Jungle Wood Stair= +Jungle Wood Slab= +Pine Wood Stair= +Inner Pine Wood Stair= +Outer Pine Wood Stair= +Pine Wood Slab= +Acacia Wood Stair= +Inner Acacia Wood Stair= +Outer Acacia Wood Stair= +Acacia Wood Slab= +Aspen Wood Stair= +Inner Aspen Wood Stair= +Outer Aspen Wood Stair= +Aspen Wood Slab= +Stone Stair= +Inner Stone Stair= +Outer Stone Stair= +Stone Slab= +Cobblestone Stair= +Inner Cobblestone Stair= +Outer Cobblestone Stair= +Cobblestone Slab= +Mossy Cobblestone Stair= +Inner Mossy Cobblestone Stair= +Outer Mossy Cobblestone Stair= +Mossy Cobblestone Slab= +Stone Brick Stair= +Inner Stone Brick Stair= +Outer Stone Brick Stair= +Stone Brick Slab= +Stone Block Stair= +Inner Stone Block Stair= +Outer Stone Block Stair= +Stone Block Slab= +Desert Stone Stair= +Inner Desert Stone Stair= +Outer Desert Stone Stair= +Desert Stone Slab= +Desert Cobblestone Stair= +Inner Desert Cobblestone Stair= +Outer Desert Cobblestone Stair= +Desert Cobblestone Slab= +Desert Stone Brick Stair= +Inner Desert Stone Brick Stair= +Outer Desert Stone Brick Stair= +Desert Stone Brick Slab= +Desert Stone Block Stair= +Inner Desert Stone Block Stair= +Outer Desert Stone Block Stair= +Desert Stone Block Slab= +Sandstone Stair= +Inner Sandstone Stair= +Outer Sandstone Stair= +Sandstone Slab= +Sandstone Brick Stair= +Inner Sandstone Brick Stair= +Outer Sandstone Brick Stair= +Sandstone Brick Slab= +Sandstone Block Stair= +Inner Sandstone Block Stair= +Outer Sandstone Block Stair= +Sandstone Block Slab= +Desert Sandstone Stair= +Inner Desert Sandstone Stair= +Outer Desert Sandstone Stair= +Desert Sandstone Slab= +Desert Sandstone Brick Stair= +Inner Desert Sandstone Brick Stair= +Outer Desert Sandstone Brick Stair= +Desert Sandstone Brick Slab= +Desert Sandstone Block Stair= +Inner Desert Sandstone Block Stair= +Outer Desert Sandstone Block Stair= +Desert Sandstone Block Slab= +Silver Sandstone Stair= +Inner Silver Sandstone Stair= +Outer Silver Sandstone Stair= +Silver Sandstone Slab= +Silver Sandstone Brick Stair= +Inner Silver Sandstone Brick Stair= +Outer Silver Sandstone Brick Stair= +Silver Sandstone Brick Slab= +Silver Sandstone Block Stair= +Inner Silver Sandstone Block Stair= +Outer Silver Sandstone Block Stair= +Silver Sandstone Block Slab= +Obsidian Stair= +Inner Obsidian Stair= +Outer Obsidian Stair= +Obsidian Slab= +Obsidian Brick Stair= +Inner Obsidian Brick Stair= +Outer Obsidian Brick Stair= +Obsidian Brick Slab= +Obsidian Block Stair= +Inner Obsidian Block Stair= +Outer Obsidian Block Stair= +Obsidian Block Slab= +Brick Stair= +Inner Brick Stair= +Outer Brick Stair= +Brick Slab= +Steel Block Stair= +Inner Steel Block Stair= +Outer Steel Block Stair= +Steel Block Slab= +Tin Block Stair= +Inner Tin Block Stair= +Outer Tin Block Stair= +Tin Block Slab= +Copper Block Stair= +Inner Copper Block Stair= +Outer Copper Block Stair= +Copper Block Slab= +Bronze Block Stair= +Inner Bronze Block Stair= +Outer Bronze Block Stair= +Bronze Block Slab= +Gold Block Stair= +Inner Gold Block Stair= +Outer Gold Block Stair= +Gold Block Slab= +Ice Stair= +Inner Ice Stair= +Outer Ice Stair= +Ice Slab= +Snow Block Stair= +Inner Snow Block Stair= +Outer Snow Block Stair= +Snow Block Slab= diff --git a/mods/stairs/mod.conf b/mods/stairs/mod.conf new file mode 100644 index 0000000..7548fa7 --- /dev/null +++ b/mods/stairs/mod.conf @@ -0,0 +1,3 @@ +name = stairs +description = Minetest Game mod: stairs +depends = default diff --git a/mods/sudoku/init.lua b/mods/sudoku/init.lua index 7e88312..b852981 100644 --- a/mods/sudoku/init.lua +++ b/mods/sudoku/init.lua @@ -8,7 +8,7 @@ minetest.register_on_joinplayer(function(player) offset = {x=0, y=10}, alignment = {x=1, y=0}, number = 0xFFFFFF , - text = "For Minetest : 5.0.x", + text = "For Minetest : 5.1.x", }) player:hud_add({ hud_elem_type = "text", @@ -16,7 +16,7 @@ minetest.register_on_joinplayer(function(player) offset = {x=0, y=30}, alignment = {x=1, y=0}, number = 0xFFFFFF , - text = "Game Version : 1.9.0", + text = "Game Version : 1.9.1", }) hud_levels[name] = player:hud_add({ hud_elem_type = "text", @@ -28,6 +28,8 @@ minetest.register_on_joinplayer(function(player) }) end) +local map_version = 1 + minetest.register_on_joinplayer(function(player) player:set_inventory_formspec("") if player:get_player_name() == "singleplayer" then @@ -72,7 +74,6 @@ minetest.register_on_joinplayer(function(player) minetest.set_timeofday(0.5) minetest.setting_set("node_highlighting", "box") player:hud_set_hotbar_itemcount(9) - player:setpos({x=19, y=10, z=-87}) if file_check(minetest.get_worldpath().."/level1.txt") == true then else file = io.open(minetest.get_worldpath().."/level1.txt", "w") @@ -103,6 +104,23 @@ minetest.register_on_joinplayer(function(player) file:write("1") file:close() end + if file_check(minetest.get_worldpath().."/Map_Version.txt") ~= true then + minetest.place_schematic({ x = 9, y = 7, z = -93 }, minetest.get_modpath("sudoku").."/schematics/sector1.mts","0") + player:setpos({x=19, y=8, z=-88}) + file = io.open(minetest.get_worldpath().."/Map_Version.txt", "w") + file:write(map_version) + file:close() + end + file = io.open(minetest.get_worldpath().."/Map_Version.txt", "r") + local map_ver = file:read("*l") + file:close() + if tonumber(map_ver) < map_version then + minetest.place_schematic({ x = 9, y = 7, z = -93 }, minetest.get_modpath("sudoku").."/schematics/sector1.mts","0") + player:setpos({x=19, y=8, z=-88}) + file = io.open(minetest.get_worldpath().."/Map_Version.txt", "w") + file:write(map_version) + file:close() + end end) minetest.register_on_newplayer(function(player) local player = minetest.get_player_by_name(player:get_player_name()) @@ -110,130 +128,8 @@ minetest.register_on_newplayer(function(player) pri["fly"] = true pri["fast"] = true minetest.set_player_privs(player:get_player_name(), pri) - player:setpos({x=19, y=10, z=-88}) end) -local timer = 0 -local set = 0 -minetest.register_globalstep(function(dtime) - timer = timer + dtime - local players = minetest.get_connected_players() - for _,player in ipairs(players) do - local player_inv = player:get_inventory() - player_inv:set_size("load", 1) - if minetest.get_node({x=10, y=9, z=-75}).name == "sudoku:gray" and player_inv:get_stack("load", 1):get_count() < 1 and set == 0 then - minetest.chat_send_all("The world is loading... This can take a few seconds") - player:setpos({x=19, y=10, z=-88}) - for i = 10, 28 do - for m = 8,28 do - for j = 75, 93 do - minetest.set_node({x=i, y=m, z=(-1)*j}, {name="air"}) - end - end - end - set = 1 - end - if minetest.get_node({x=10, y=9, z=-75}).name == "sudoku:gray" and player_inv:get_stack("load", 1):get_count() < 1 and set == 1 then - player:setpos({x=19, y=10, z=-88}) - for i = 10, 28 do - for j = 79, 93 do - minetest.set_node({x=i, y=28, z=(-1)*j}, {name="sudoku:meselamp"}) - end - end - for i = 10, 28 do - for j = 79, 93 do - for m = 29,150 do - minetest.set_node({x=i, y=m, z=(-1)*j}, {name="air"}) - end - end - end - minetest.chat_send_all("The world should be loaded, if not start a new world!") - player:setpos({x=19, y=10, z=-88}) - player_inv:set_stack("load", 1, "default:dirt") - end - if timer >= 1 then - timer = 0 - for i = 10, 28 do - for m = 9,27 do - minetest.set_node({x=i, y=m, z=-75}, {name="sudoku:gray"}) - end - end - for i = 75, 85 do - for m = 9,28 do - minetest.set_node({x=9, y=m, z=(-1)*i}, {name="sudoku:wall"}) - minetest.set_node({x=29, y=m, z=(-1)*i}, {name="sudoku:wall"}) - end - end - for i = 86, 87 do - for m = 9,28 do - minetest.set_node({x=10, y=m, z=(-1)*i}, {name="sudoku:wall"}) - minetest.set_node({x=28, y=m, z=(-1)*i}, {name="sudoku:wall"}) - end - end - for i = 88, 89 do - for m = 9,28 do - minetest.set_node({x=11, y=m, z=(-1)*i}, {name="sudoku:wall"}) - minetest.set_node({x=27, y=m, z=(-1)*i}, {name="sudoku:wall"}) - end - end - for m = 9,28 do - minetest.set_node({x=12, y=m, z=-90}, {name="sudoku:wall"}) - minetest.set_node({x=26, y=m, z=-90}, {name="sudoku:wall"}) - minetest.set_node({x=13, y=m, z=-91}, {name="sudoku:wall"}) - minetest.set_node({x=25, y=m, z=-91}, {name="sudoku:wall"}) - minetest.set_node({x=14, y=m, z=-92}, {name="sudoku:wall"}) - minetest.set_node({x=24, y=m, z=-92}, {name="sudoku:wall"}) - end - for i = 15, 23 do - for m = 9,28 do - minetest.set_node({x=i, y=m, z=-93}, {name="sudoku:wall"}) - end - end - - for i = 10, 28 do - for j = 75, 78 do - minetest.set_node({x=i, y=28, z=(-1)*j}, {name="sudoku:wall"}) - end - end - for i = 10, 28 do - for j = 75, 93 do - minetest.set_node({x=i, y=7, z=(-1)*j}, {name="sudoku:desert"}) - minetest.set_node({x=i, y=8, z=(-1)*j}, {name="sudoku:desert"}) - end - end - for i = 11, 27 do - for j = 80, 84 do - minetest.set_node({x=i, y=8, z=(-1)*j}, {name="air"}) - end - end - for i = 12, 26 do - for j = 85, 86 do - minetest.set_node({x=i, y=8, z=(-1)*j}, {name="air"}) - end - end - for i = 13, 25 do - for j = 87, 88 do - minetest.set_node({x=i, y=8, z=(-1)*j}, {name="air"}) - end - end - for i = 14, 24 do - minetest.set_node({x=i, y=8, z=-89}, {name="air"}) - end - for i = 15, 23 do - minetest.set_node({x=i, y=8, z=-90}, {name="air"}) - end - for i = 16, 22 do - minetest.set_node({x=i, y=8, z=-91}, {name="air"}) - end - minetest.set_node({x=17, y=8, z=-80}, {name="sudoku:new_w1"}) - minetest.set_node({x=18, y=8, z=-80}, {name="sudoku:new_w2"}) - minetest.set_node({x=19, y=8, z=-80}, {name="sudoku:new_w3"}) - minetest.set_node({x=20, y=8, z=-80}, {name="sudoku:new_w4"}) - minetest.set_node({x=21, y=8, z=-80}, {name="sudoku:new_w5"}) - minetest.set_node({x=19, y=7, z=-85}, {name="sudoku:finisch"}) - end - end -end) minetest.register_node("sudoku:desert",{ description = "Desert", diff --git a/mods/sudoku/schematics/sector1.mts b/mods/sudoku/schematics/sector1.mts new file mode 100644 index 0000000..079da1f Binary files /dev/null and b/mods/sudoku/schematics/sector1.mts differ diff --git a/mods/tnt/README.txt b/mods/tnt/README.txt index 1970804..df244fe 100644 --- a/mods/tnt/README.txt +++ b/mods/tnt/README.txt @@ -9,8 +9,8 @@ ShadowNinja (MIT) sofar (sofar@foo-projects.org) (MIT) Various Minetest developers and contributors (MIT) -Authors of media (textures) ---------------------------- +Authors of media +---------------- BlockMen (CC BY-SA 3.0): All textures not mentioned below. @@ -26,6 +26,23 @@ tnt_blast.png paramat (CC BY-SA 3.0) tnt_tnt_stick.png - Derived from a texture by benrob0329. +TumeniNodes (CC0 1.0) +tnt_explode.ogg +renamed, edited, and converted to .ogg from Explosion2.wav +by steveygos93 (CC0 1.0) + + +tnt_ignite.ogg +renamed, edited, and converted to .ogg from sparkler_fuse_nm.wav +by theneedle.tv (CC0 1.0) + + +tnt_gunpowder_burning.ogg +renamed, edited, and converted to .ogg from road flare ignite burns.wav +by frankelmedico (CC0 1.0) + + + Introduction ------------ This mod adds TNT to Minetest. TNT is a tool to help the player diff --git a/mods/tnt/depends.txt b/mods/tnt/depends.txt deleted file mode 100644 index 5ff216f..0000000 --- a/mods/tnt/depends.txt +++ /dev/null @@ -1,3 +0,0 @@ -default -fire - diff --git a/mods/tnt/init.lua b/mods/tnt/init.lua index 3efc6ec..0e061fa 100644 --- a/mods/tnt/init.lua +++ b/mods/tnt/init.lua @@ -1,5 +1,11 @@ +-- tnt/init.lua + tnt = {} +-- Load support for MT game translation. +local S = minetest.get_translator("tnt") + + -- Default to enabled when in singleplayer local enable_tnt = minetest.settings:get_bool("enable_tnt") if enable_tnt == nil then @@ -396,7 +402,7 @@ function tnt.boom(pos, def) minetest.set_node(pos, {name = "tnt:boom"}) end local sound = def.sound or "tnt_explode" - minetest.sound_play(sound, {pos = pos, gain = 1.5, + minetest.sound_play(sound, {pos = pos, gain = 2.5, max_hear_distance = math.min(def.radius * 20, 128)}) local drops, radius = tnt_explode(pos, def.radius, def.ignore_protection, def.ignore_on_blast, owner, def.explode_center) @@ -422,7 +428,7 @@ minetest.register_node("tnt:boom", { }) minetest.register_node("tnt:gunpowder", { - description = "Gun Powder", + description = S("Gun Powder"), drawtype = "raillike", paramtype = "light", is_ground_content = false, @@ -547,7 +553,7 @@ minetest.register_craft({ }) minetest.register_craftitem("tnt:tnt_stick", { - description = "TNT Stick", + description = S("TNT Stick"), inventory_image = "tnt_tnt_stick.png", groups = {flammable = 5}, }) @@ -675,6 +681,6 @@ end tnt.register_tnt({ name = "tnt:tnt", - description = "TNT", + description = S("TNT"), radius = tnt_radius, }) diff --git a/mods/tnt/license.txt b/mods/tnt/license.txt index 2c57df3..e59ec6e 100644 --- a/mods/tnt/license.txt +++ b/mods/tnt/license.txt @@ -26,9 +26,10 @@ DEALINGS IN THE SOFTWARE. For more details: https://opensource.org/licenses/MIT +=================================== -Licenses of media (textures) ----------------------------- +Licenses of media +----------------- Attribution-ShareAlike 3.0 Unported (CC BY-SA 3.0) Copyright (C) 2014-2016 BlockMen @@ -64,3 +65,36 @@ rights may limit how you use the material. For more details: http://creativecommons.org/licenses/by-sa/3.0/ + +==================================================== + +CC0 1.0 Universal (CC0 1.0) Public Domain Dedication +for audio files (found in sounds folder) +TumeniNodes +steveygos93 +theneedle.tv +frankelmedico + +No Copyright + +The person who associated a work with this deed has dedicated the work to the public domain +by waiving all of his or her rights to the work worldwide under copyright law, including all +related and neighboring rights, to the extent allowed by law. + +You can copy, modify, distribute and perform the work, even for commercial purposes, all +without asking permission. See Other Information below. + +In no way are the patent or trademark rights of any person affected by CC0, nor are the +rights that other persons may have in the work or in how the work is used, such as publicity +or privacy rights. + +Unless expressly stated otherwise, the person who associated a work with this deed makes no +warranties about the work, and disclaims liability for all uses of the work, to the fullest +extent permitted by applicable law. + +When using or citing the work, you should not imply endorsement by the author or the affirmer. + +This license is acceptable for Free Cultural Works. +For more Information: +https://creativecommons.org/publicdomain/zero/1.0/ + diff --git a/mods/tnt/locale/template.txt b/mods/tnt/locale/template.txt new file mode 100644 index 0000000..62bcb15 --- /dev/null +++ b/mods/tnt/locale/template.txt @@ -0,0 +1,4 @@ +# textdomain: tnt +Gun Powder= +TNT Stick= +TNT= diff --git a/mods/tnt/locale/tnt.de.tr b/mods/tnt/locale/tnt.de.tr new file mode 100644 index 0000000..09d2ac2 --- /dev/null +++ b/mods/tnt/locale/tnt.de.tr @@ -0,0 +1,4 @@ +# textdomain: tnt +Gun Powder=Schießpulver +TNT Stick=TNT-Stange +TNT=TNT diff --git a/mods/tnt/locale/tnt.es.tr b/mods/tnt/locale/tnt.es.tr new file mode 100644 index 0000000..d9f3f20 --- /dev/null +++ b/mods/tnt/locale/tnt.es.tr @@ -0,0 +1,4 @@ +# textdomain: tnt +Gun Powder=Pólvora +TNT Stick=Cartucho de TNT +TNT=TNT diff --git a/mods/tnt/locale/tnt.fr.tr b/mods/tnt/locale/tnt.fr.tr new file mode 100644 index 0000000..3fe48fb --- /dev/null +++ b/mods/tnt/locale/tnt.fr.tr @@ -0,0 +1,4 @@ +# textdomain: tnt +Gun Powder=Poudre à canon +TNT Stick=Bâton de TNT +TNT=TNT diff --git a/mods/tnt/locale/tnt.it.tr b/mods/tnt/locale/tnt.it.tr new file mode 100644 index 0000000..086f4d3 --- /dev/null +++ b/mods/tnt/locale/tnt.it.tr @@ -0,0 +1,4 @@ +# textdomain: tnt +Gun Powder=Polvere da sparo +TNT Stick=Candelotto di TNT +TNT=TNT \ No newline at end of file diff --git a/mods/tnt/mod.conf b/mods/tnt/mod.conf new file mode 100644 index 0000000..9385e82 --- /dev/null +++ b/mods/tnt/mod.conf @@ -0,0 +1,3 @@ +name = tnt +description = Minetest Game mod: tnt +depends = default, fire diff --git a/mods/tnt/sounds/tnt_explode.ogg b/mods/tnt/sounds/tnt_explode.ogg index a414ea0..e00a16c 100644 Binary files a/mods/tnt/sounds/tnt_explode.ogg and b/mods/tnt/sounds/tnt_explode.ogg differ diff --git a/mods/tnt/sounds/tnt_gunpowder_burning.ogg b/mods/tnt/sounds/tnt_gunpowder_burning.ogg index 5c5bfaf..8581c2d 100644 Binary files a/mods/tnt/sounds/tnt_gunpowder_burning.ogg and b/mods/tnt/sounds/tnt_gunpowder_burning.ogg differ diff --git a/mods/tnt/sounds/tnt_ignite.ogg b/mods/tnt/sounds/tnt_ignite.ogg index 199f206..1a7062e 100644 Binary files a/mods/tnt/sounds/tnt_ignite.ogg and b/mods/tnt/sounds/tnt_ignite.ogg differ diff --git a/mods/vessels/depends.txt b/mods/vessels/depends.txt deleted file mode 100644 index 4ad96d5..0000000 --- a/mods/vessels/depends.txt +++ /dev/null @@ -1 +0,0 @@ -default diff --git a/mods/vessels/init.lua b/mods/vessels/init.lua index e5c68a7..b330efc 100644 --- a/mods/vessels/init.lua +++ b/mods/vessels/init.lua @@ -1,6 +1,12 @@ +-- vessels/init.lua + -- Minetest 0.4 mod: vessels -- See README.txt for licensing and other information. +-- Load support for MT game translation. +local S = minetest.get_translator("vessels") + + local vessels_shelf_formspec = "size[8,7;]" .. "list[context;vessels;0,0.3;8,2;]" .. @@ -10,11 +16,15 @@ local vessels_shelf_formspec = "listring[current_player;main]" .. default.get_hotbar_bg(0, 2.85) -local function get_vessels_shelf_formspec(inv) +local function update_vessels_shelf(pos) + local meta = minetest.get_meta(pos) + local inv = meta:get_inventory() + local invlist = inv:get_list("vessels") + local formspec = vessels_shelf_formspec - local invlist = inv and inv:get_list("vessels") -- Inventory slots overlay local vx, vy = 0, 0.3 + local n_items = 0 for i = 1, 16 do if i == 9 then vx = 0 @@ -23,14 +33,24 @@ local function get_vessels_shelf_formspec(inv) if not invlist or invlist[i]:is_empty() then formspec = formspec .. "image[" .. vx .. "," .. vy .. ";1,1;vessels_shelf_slot.png]" + else + local stack = invlist[i] + if not stack:is_empty() then + n_items = n_items + stack:get_count() + end end vx = vx + 1 end - return formspec + meta:set_string("formspec", formspec) + if n_items == 0 then + meta:set_string("infotext", S("Empty Vessels Shelf")) + else + meta:set_string("infotext", S("Vessels Shelf (@1 items)", n_items)) + end end minetest.register_node("vessels:shelf", { - description = "Vessels Shelf", + description = S("Vessels Shelf"), tiles = {"default_wood.png", "default_wood.png", "default_wood.png", "default_wood.png", "vessels_shelf.png", "vessels_shelf.png"}, paramtype2 = "facedir", @@ -40,7 +60,7 @@ minetest.register_node("vessels:shelf", { on_construct = function(pos) local meta = minetest.get_meta(pos) - meta:set_string("formspec", get_vessels_shelf_formspec(nil)) + update_vessels_shelf(pos) local inv = meta:get_inventory() inv:set_size("vessels", 8 * 2) end, @@ -57,20 +77,17 @@ minetest.register_node("vessels:shelf", { on_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player) minetest.log("action", player:get_player_name() .. " moves stuff in vessels shelf at ".. minetest.pos_to_string(pos)) - local meta = minetest.get_meta(pos) - meta:set_string("formspec", get_vessels_shelf_formspec(meta:get_inventory())) + update_vessels_shelf(pos) end, on_metadata_inventory_put = function(pos, listname, index, stack, player) minetest.log("action", player:get_player_name() .. " moves stuff to vessels shelf at ".. minetest.pos_to_string(pos)) - local meta = minetest.get_meta(pos) - meta:set_string("formspec", get_vessels_shelf_formspec(meta:get_inventory())) + update_vessels_shelf(pos) end, on_metadata_inventory_take = function(pos, listname, index, stack, player) minetest.log("action", player:get_player_name() .. " takes stuff from vessels shelf at ".. minetest.pos_to_string(pos)) - local meta = minetest.get_meta(pos) - meta:set_string("formspec", get_vessels_shelf_formspec(meta:get_inventory())) + update_vessels_shelf(pos) end, on_blast = function(pos) local drops = {} @@ -91,7 +108,7 @@ minetest.register_craft({ }) minetest.register_node("vessels:glass_bottle", { - description = "Empty Glass Bottle", + description = S("Empty Glass Bottle"), drawtype = "plantlike", tiles = {"vessels_glass_bottle.png"}, inventory_image = "vessels_glass_bottle.png", @@ -117,7 +134,7 @@ minetest.register_craft( { }) minetest.register_node("vessels:drinking_glass", { - description = "Empty Drinking Glass", + description = S("Empty Drinking Glass"), drawtype = "plantlike", tiles = {"vessels_drinking_glass.png"}, inventory_image = "vessels_drinking_glass_inv.png", @@ -143,7 +160,7 @@ minetest.register_craft( { }) minetest.register_node("vessels:steel_bottle", { - description = "Empty Heavy Steel Bottle", + description = S("Empty Heavy Steel Bottle"), drawtype = "plantlike", tiles = {"vessels_steel_bottle.png"}, inventory_image = "vessels_steel_bottle.png", @@ -172,7 +189,7 @@ minetest.register_craft( { -- Glass and steel recycling minetest.register_craftitem("vessels:glass_fragments", { - description = "Glass Fragments", + description = S("Glass Fragments"), inventory_image = "vessels_glass_fragments.png", }) diff --git a/mods/vessels/locale/template.txt b/mods/vessels/locale/template.txt new file mode 100644 index 0000000..f4aae91 --- /dev/null +++ b/mods/vessels/locale/template.txt @@ -0,0 +1,8 @@ +# textdomain: vessels +Vessels Shelf= +Empty Glass Bottle= +Empty Drinking Glass= +Empty Heavy Steel Bottle= +Glass Fragments= +Empty Vessels Shelf= +Vessels Shelf (@1 items)= diff --git a/mods/vessels/locale/vessels.de.tr b/mods/vessels/locale/vessels.de.tr new file mode 100644 index 0000000..66ca5ef --- /dev/null +++ b/mods/vessels/locale/vessels.de.tr @@ -0,0 +1,8 @@ +# textdomain: vessels +Vessels Shelf=Gefäßregal +Empty Glass Bottle=Leere Glasflasche +Empty Drinking Glass=Leeres Trinkglas +Empty Heavy Steel Bottle=Leere schwere Stahlflasche +Glass Fragments=Glasfragmente +Empty Vessels Shelf=Leeres Gefäßregal +Vessels Shelf (@1 items)=Gefäßregal (@1 Gegenstände) diff --git a/mods/vessels/locale/vessels.es.tr b/mods/vessels/locale/vessels.es.tr new file mode 100644 index 0000000..859ea40 --- /dev/null +++ b/mods/vessels/locale/vessels.es.tr @@ -0,0 +1,8 @@ +# textdomain: vessels +Vessels Shelf=Estante de vasijas +Empty Glass Bottle=Botella de vidrio vacía +Empty Drinking Glass=Vaso para beber vacío +Empty Heavy Steel Bottle=Botella de acero vacía +Glass Fragments=Fragmentos de vidrio +Empty Vessels Shelf=Estante de vasijas vacío +Vessels Shelf (@1 items)=Estante de vasijas (@1 objetos) diff --git a/mods/vessels/locale/vessels.fr.tr b/mods/vessels/locale/vessels.fr.tr new file mode 100644 index 0000000..4e073dc --- /dev/null +++ b/mods/vessels/locale/vessels.fr.tr @@ -0,0 +1,8 @@ +# textdomain: vessels +Vessels Shelf=Etagère à récipient +Empty Glass Bottle=Bouteille de verre vide +Empty Drinking Glass=Verre vide +Empty Heavy Steel Bottle=Bouteille d'acier lourde vide +Glass Fragments=Fragments de verre +Empty Vessels Shelf=Etagère à récipient vide +Vessels Shelf (@1 items)=Etagère à récipient (@1 articles) diff --git a/mods/vessels/locale/vessels.it.tr b/mods/vessels/locale/vessels.it.tr new file mode 100644 index 0000000..a021b1a --- /dev/null +++ b/mods/vessels/locale/vessels.it.tr @@ -0,0 +1,8 @@ +# textdomain: vessels +Vessels Shelf=Scaffale per contenitori +Empty Glass Bottle=Bottiglia di vetro vuota +Empty Drinking Glass=Bicchiere di vetro vuoto +Empty Heavy Steel Bottle=Bottigia di metallo pesante vuota +Glass Fragments=Frammenti di vetro +Empty Vessels Shelf=Scaffale per contenitori vuoto +Vessels Shelf (@1 items)=Scaffale per contenitori (@1 oggetti) diff --git a/mods/vessels/mod.conf b/mods/vessels/mod.conf new file mode 100644 index 0000000..7551b54 --- /dev/null +++ b/mods/vessels/mod.conf @@ -0,0 +1,3 @@ +name = vessels +description = Minetest Game mod: vessels +depends = default diff --git a/mods/walls/depends.txt b/mods/walls/depends.txt deleted file mode 100644 index 4ad96d5..0000000 --- a/mods/walls/depends.txt +++ /dev/null @@ -1 +0,0 @@ -default diff --git a/mods/walls/init.lua b/mods/walls/init.lua index 91a89cf..b2a163f 100644 --- a/mods/walls/init.lua +++ b/mods/walls/init.lua @@ -1,5 +1,12 @@ +-- walls/init.lua + walls = {} +local fence_collision_extra = minetest.settings:get_bool("enable_fence_tall") and 3/8 or 0 + +-- Load support for MT game translation. +local S = minetest.get_translator("walls") + walls.register = function(wall_name, wall_desc, wall_texture_table, wall_mat, wall_sounds) --make wall_texture_table paramenter backwards compatible for mods passing single texture if type(wall_texture_table) ~= "table" then @@ -11,12 +18,22 @@ walls.register = function(wall_name, wall_desc, wall_texture_table, wall_mat, wa drawtype = "nodebox", node_box = { type = "connected", - fixed = {{-1/4, -1/2, -1/4, 1/4, 1/2, 1/4}}, + fixed = {-1/4, -1/2, -1/4, 1/4, 1/2, 1/4}, -- connect_bottom = - connect_front = {{-3/16, -1/2, -1/2, 3/16, 3/8, -1/4}}, - connect_left = {{-1/2, -1/2, -3/16, -1/4, 3/8, 3/16}}, - connect_back = {{-3/16, -1/2, 1/4, 3/16, 3/8, 1/2}}, - connect_right = {{ 1/4, -1/2, -3/16, 1/2, 3/8, 3/16}}, + connect_front = {-3/16, -1/2, -1/2, 3/16, 3/8, -1/4}, + connect_left = {-1/2, -1/2, -3/16, -1/4, 3/8, 3/16}, + connect_back = {-3/16, -1/2, 1/4, 3/16, 3/8, 1/2}, + connect_right = { 1/4, -1/2, -3/16, 1/2, 3/8, 3/16}, + }, + collision_box = { + type = "connected", + fixed = {-1/4, -1/2, -1/4, 1/4, 1/2 + fence_collision_extra, 1/4}, + -- connect_top = + -- connect_bottom = + connect_front = {-1/4,-1/2,-1/2,1/4,1/2 + fence_collision_extra,-1/4}, + connect_left = {-1/2,-1/2,-1/4,-1/4,1/2 + fence_collision_extra,1/4}, + connect_back = {-1/4,-1/2,1/4,1/4,1/2 + fence_collision_extra,1/2}, + connect_right = {1/4,-1/2,-1/4,1/2,1/2 + fence_collision_extra,1/4}, }, connects_to = { "group:wall", "group:stone", "group:fence" }, paramtype = "light", @@ -31,7 +48,7 @@ walls.register = function(wall_name, wall_desc, wall_texture_table, wall_mat, wa minetest.register_craft({ output = wall_name .. " 6", recipe = { - { '', '', '' }, + { "", "", "" }, { wall_mat, wall_mat, wall_mat}, { wall_mat, wall_mat, wall_mat}, } @@ -39,12 +56,12 @@ walls.register = function(wall_name, wall_desc, wall_texture_table, wall_mat, wa end -walls.register("walls:cobble", "Cobblestone Wall", {"default_cobble.png"}, +walls.register("walls:cobble", S("Cobblestone Wall"), {"default_cobble.png"}, "default:cobble", default.node_sound_stone_defaults()) -walls.register("walls:mossycobble", "Mossy Cobblestone Wall", {"default_mossycobble.png"}, +walls.register("walls:mossycobble", S("Mossy Cobblestone Wall"), {"default_mossycobble.png"}, "default:mossycobble", default.node_sound_stone_defaults()) -walls.register("walls:desertcobble", "Desert Cobblestone Wall", {"default_desert_cobble.png"}, +walls.register("walls:desertcobble", S("Desert Cobblestone Wall"), {"default_desert_cobble.png"}, "default:desert_cobble", default.node_sound_stone_defaults()) diff --git a/mods/walls/locale/template.txt b/mods/walls/locale/template.txt new file mode 100644 index 0000000..6721dc6 --- /dev/null +++ b/mods/walls/locale/template.txt @@ -0,0 +1,4 @@ +# textdomain: walls +Cobblestone Wall= +Mossy Cobblestone Wall= +Desert Cobblestone Wall= diff --git a/mods/walls/locale/walls.de.tr b/mods/walls/locale/walls.de.tr new file mode 100644 index 0000000..76449f6 --- /dev/null +++ b/mods/walls/locale/walls.de.tr @@ -0,0 +1,4 @@ +# textdomain: walls +Cobblestone Wall=Kopfsteinpflastermauer +Mossy Cobblestone Wall=Mosige Kopfsteinpflastermauer +Desert Cobblestone Wall=Wüstenkopfsteinpflastermauer diff --git a/mods/walls/locale/walls.es.tr b/mods/walls/locale/walls.es.tr new file mode 100644 index 0000000..796710f --- /dev/null +++ b/mods/walls/locale/walls.es.tr @@ -0,0 +1,4 @@ +# textdomain: walls +Cobblestone Wall=Pared de adoquines +Mossy Cobblestone Wall=Pared de adoquines musgosos +Desert Cobblestone Wall=Pared de adoquines desérticos diff --git a/mods/walls/locale/walls.fr.tr b/mods/walls/locale/walls.fr.tr new file mode 100644 index 0000000..8dcb625 --- /dev/null +++ b/mods/walls/locale/walls.fr.tr @@ -0,0 +1,4 @@ +# textdomain: walls +Cobblestone Wall=Mur en pavé +Mossy Cobblestone Wall=Mur en pavé moussu +Desert Cobblestone Wall=Mur en pavé du désert diff --git a/mods/walls/locale/walls.it.tr b/mods/walls/locale/walls.it.tr new file mode 100644 index 0000000..f0b28b7 --- /dev/null +++ b/mods/walls/locale/walls.it.tr @@ -0,0 +1,4 @@ +# textdomain: walls +Cobblestone Wall=Muro di ciottoli +Mossy Cobblestone Wall=Muro di ciottoli muschiosi +Desert Cobblestone Wall=Muro di ciottoli del deserto \ No newline at end of file diff --git a/mods/walls/mod.conf b/mods/walls/mod.conf new file mode 100644 index 0000000..9b8bbe8 --- /dev/null +++ b/mods/walls/mod.conf @@ -0,0 +1,3 @@ +name = walls +description = Minetest Game mod: walls +depends = default diff --git a/mods/wool/depends.txt b/mods/wool/depends.txt deleted file mode 100644 index 4ad96d5..0000000 --- a/mods/wool/depends.txt +++ /dev/null @@ -1 +0,0 @@ -default diff --git a/mods/wool/init.lua b/mods/wool/init.lua index 3e565a4..4cf7dc3 100644 --- a/mods/wool/init.lua +++ b/mods/wool/init.lua @@ -1,26 +1,15 @@ -local dyes = { - {"white", "White"}, - {"grey", "Grey"}, - {"black", "Black"}, - {"red", "Red"}, - {"yellow", "Yellow"}, - {"green", "Green"}, - {"cyan", "Cyan"}, - {"blue", "Blue"}, - {"magenta", "Magenta"}, - {"orange", "Orange"}, - {"violet", "Violet"}, - {"brown", "Brown"}, - {"pink", "Pink"}, - {"dark_grey", "Dark Grey"}, - {"dark_green", "Dark Green"}, -} +-- wool/init.lua + +-- Load support for MT game translation. +local S = minetest.get_translator("wool") + +local dyes = dye.dyes for i = 1, #dyes do local name, desc = unpack(dyes[i]) minetest.register_node("wool:" .. name, { - description = desc .. " Wool", + description = S(desc .. " Wool"), tiles = {"wool_" .. name .. ".png"}, is_ground_content = false, groups = {snappy = 2, choppy = 2, oddly_breakable_by_hand = 3, @@ -39,3 +28,25 @@ end -- Backwards compatibility with jordach's 16-color wool mod minetest.register_alias("wool:dark_blue", "wool:blue") minetest.register_alias("wool:gold", "wool:yellow") + +-- Dummy calls to S() to allow translation scripts to detect the strings. +-- To update this run: +-- for _,e in ipairs(dye.dyes) do print(("S(%q)"):format(e[2].." Wool")) end + +--[[ +S("White Wool") +S("Grey Wool") +S("Dark Grey Wool") +S("Black Wool") +S("Violet Wool") +S("Blue Wool") +S("Cyan Wool") +S("Dark Green Wool") +S("Green Wool") +S("Yellow Wool") +S("Brown Wool") +S("Orange Wool") +S("Red Wool") +S("Magenta Wool") +S("Pink Wool") +--]] diff --git a/mods/wool/locale/template.txt b/mods/wool/locale/template.txt new file mode 100644 index 0000000..316cd2c --- /dev/null +++ b/mods/wool/locale/template.txt @@ -0,0 +1,16 @@ +# textdomain: wool +White Wool= +Grey Wool= +Dark Grey Wool= +Black Wool= +Violet Wool= +Blue Wool= +Cyan Wool= +Dark Green Wool= +Green Wool= +Yellow Wool= +Brown Wool= +Orange Wool= +Red Wool= +Magenta Wool= +Pink Wool= diff --git a/mods/wool/locale/wool.de.tr b/mods/wool/locale/wool.de.tr new file mode 100644 index 0000000..9b6b8ab --- /dev/null +++ b/mods/wool/locale/wool.de.tr @@ -0,0 +1,16 @@ +# textdomain: wool +White Wool=Weiße Wolle +Grey Wool=Graue Wolle +Dark Grey Wool=Dunkelgraue Wolle +Black Wool=Schwarze Wolle +Violet Wool=Violette Wolle +Blue Wool=Blaue Wolle +Cyan Wool=Türkise Wolle +Dark Green Wool=Dunkelgrüne Wolle +Green Wool=Grüne Wolle +Yellow Wool=Gelbe Wolle +Brown Wool=Braune Wolle +Orange Wool=Orange Wolle +Red Wool=Rote Wolle +Magenta Wool=Magenta Wolle +Pink Wool=Rosa Wolle diff --git a/mods/wool/locale/wool.es.tr b/mods/wool/locale/wool.es.tr new file mode 100644 index 0000000..ac15592 --- /dev/null +++ b/mods/wool/locale/wool.es.tr @@ -0,0 +1,16 @@ +# textdomain: wool +White Wool=Lana blanca +Grey Wool=Lana gris +Dark Grey Wool=Lana gris oscuro +Black Wool=Lana negra +Violet Wool=Lana violeta +Blue Wool=Lana azul +Cyan Wool=Lana cián +Dark Green Wool=Lana verde oscuro +Green Wool=Lana verde +Yellow Wool=Lana amarilla +Brown Wool=Lana marrón +Orange Wool=Lana naranja +Red Wool=Lana roja +Magenta Wool=Lana magenta +Pink Wool=Lana rosa diff --git a/mods/wool/locale/wool.fr.tr b/mods/wool/locale/wool.fr.tr new file mode 100644 index 0000000..48a60a7 --- /dev/null +++ b/mods/wool/locale/wool.fr.tr @@ -0,0 +1,16 @@ +# textdomain: wool +White Wool=Laine blanche +Grey Wool=Laine grise +Dark Grey Wool=Laine grise foncée +Black Wool=Laine noire +Violet Wool=Laine violette +Blue Wool=Laine bleue +Cyan Wool=Laine cyan +Dark Green Wool=Laine verte foncée +Green Wool=Laine verte +Yellow Wool=Laine jaune +Brown Wool=Laine marron +Orange Wool=Laine orange +Red Wool=Laine rouge +Magenta Wool=Laine magenta +Pink Wool=Laine rose diff --git a/mods/wool/locale/wool.it.tr b/mods/wool/locale/wool.it.tr new file mode 100644 index 0000000..9507e0d --- /dev/null +++ b/mods/wool/locale/wool.it.tr @@ -0,0 +1,16 @@ +# textdomain: wool +White Wool=Lana bianca +Grey Wool=Lana grigia +Dark Grey Wool=Lana grigia scura +Black Wool=Lana nera +Violet Wool=Lana viola +Blue Wool=Lana blu +Cyan Wool=Lana ciano +Dark Green Wool=Lana verde scura +Green Wool=Lana verde +Yellow Wool=Lana gialla +Brown Wool=Lana marrone +Orange Wool=Lana arancione +Red Wool=Lana rossa +Magenta Wool=Lana magenta +Pink Wool=Lana rosa \ No newline at end of file diff --git a/mods/wool/mod.conf b/mods/wool/mod.conf new file mode 100644 index 0000000..a0ca3f0 --- /dev/null +++ b/mods/wool/mod.conf @@ -0,0 +1,3 @@ +name = wool +description = Minetest Game mod: wool +depends = default, dye diff --git a/mods/xpanes/README.txt b/mods/xpanes/README.txt index 47161da..0e34d23 100644 --- a/mods/xpanes/README.txt +++ b/mods/xpanes/README.txt @@ -22,3 +22,11 @@ paramat (CC BY-SA 3.0): Krock (CC0 1.0): xpanes_edge.png + +TumeniNodes (CC BY-SA 3.0): + xpanes_door_steel_bar.png + xpanes_item_steel_bar.png + xpanes_trapdoor_steel_bar.png + xpanes_trapdoor_steel_bar_side.png + xpanes_steel_bar_door_close.ogg + xpanes_steel_bar_door_open.ogg diff --git a/mods/xpanes/depends.txt b/mods/xpanes/depends.txt deleted file mode 100644 index 331d858..0000000 --- a/mods/xpanes/depends.txt +++ /dev/null @@ -1 +0,0 @@ -default \ No newline at end of file diff --git a/mods/xpanes/init.lua b/mods/xpanes/init.lua index 653c8cd..758fbbb 100644 --- a/mods/xpanes/init.lua +++ b/mods/xpanes/init.lua @@ -1,3 +1,8 @@ +-- xpanes/init.lua + +-- Load support for MT game translation. +local S = minetest.get_translator("xpanes") + local function is_pane(pos) return minetest.get_item_group(minetest.get_node(pos).name, "pane") > 0 @@ -27,7 +32,7 @@ local function swap(pos, node, name, param2) return end - minetest.set_node(pos, {name = name, param2 = param2}) + minetest.swap_node(pos, {name = name, param2 = param2}) end local function update_pane(pos) @@ -100,7 +105,14 @@ function xpanes.register_pane(name, def) inventory_image = def.inventory_image, wield_image = def.wield_image, paramtype2 = "facedir", - tiles = {def.textures[3], def.textures[3], def.textures[1]}, + tiles = { + def.textures[3], + def.textures[3], + def.textures[3], + def.textures[3], + def.textures[1], + def.textures[1] + }, groups = flatgroups, drop = "xpanes:" .. name .. "_flat", sounds = def.sounds, @@ -148,7 +160,7 @@ function xpanes.register_pane(name, def) end xpanes.register_pane("pane", { - description = "Glass Pane", + description = S("Glass Pane"), textures = {"default_glass.png","xpanes_pane_half.png","xpanes_edge.png"}, inventory_image = "default_glass.png", wield_image = "default_glass.png", @@ -161,7 +173,7 @@ xpanes.register_pane("pane", { }) xpanes.register_pane("obsidian_pane", { - description = "Obsidian Glass Pane", + description = S("Obsidian Glass Pane"), textures = {"default_obsidian_glass.png","xpanes_pane_half.png","xpanes_edge_obsidian.png"}, inventory_image = "default_obsidian_glass.png", wield_image = "default_obsidian_glass.png", @@ -174,7 +186,7 @@ xpanes.register_pane("obsidian_pane", { }) xpanes.register_pane("bar", { - description = "Steel Bars", + description = S("Steel Bars"), textures = {"xpanes_bar.png","xpanes_bar.png","xpanes_bar_top.png"}, inventory_image = "xpanes_bar.png", wield_image = "xpanes_bar.png", @@ -197,3 +209,45 @@ minetest.register_lbm({ end end }) + +-- Register steel bar doors and trapdoors + +if minetest.get_modpath("doors") then + + doors.register("xpanes:door_steel_bar", { + tiles = {{name = "xpanes_door_steel_bar.png", backface_culling = true}}, + description = S("Steel Bar Door"), + inventory_image = "xpanes_item_steel_bar.png", + protected = true, + groups = {cracky = 1, level = 2}, + sounds = default.node_sound_metal_defaults(), + sound_open = "xpanes_steel_bar_door_open", + sound_close = "xpanes_steel_bar_door_close", + recipe = { + {"xpanes:bar_flat", "xpanes:bar_flat"}, + {"xpanes:bar_flat", "xpanes:bar_flat"}, + {"xpanes:bar_flat", "xpanes:bar_flat"}, + }, + }) + + doors.register_trapdoor("xpanes:trapdoor_steel_bar", { + description = S("Steel Bar Trapdoor"), + inventory_image = "xpanes_trapdoor_steel_bar.png", + wield_image = "xpanes_trapdoor_steel_bar.png", + tile_front = "xpanes_trapdoor_steel_bar.png", + tile_side = "xpanes_trapdoor_steel_bar_side.png", + protected = true, + groups = {cracky = 1, level = 2, door = 1}, + sounds = default.node_sound_metal_defaults(), + sound_open = "xpanes_steel_bar_door_open", + sound_close = "xpanes_steel_bar_door_close", + }) + + minetest.register_craft({ + output = "xpanes:trapdoor_steel_bar", + recipe = { + {"xpanes:bar_flat", "xpanes:bar_flat"}, + {"xpanes:bar_flat", "xpanes:bar_flat"}, + } + }) +end diff --git a/mods/xpanes/license.txt b/mods/xpanes/license.txt index dff7227..7e922b9 100644 --- a/mods/xpanes/license.txt +++ b/mods/xpanes/license.txt @@ -34,6 +34,7 @@ Attribution-ShareAlike 3.0 Unported (CC BY-SA 3.0) Copyright (C) 2014-2016 xyz Copyright (C) 2013-2016 Gambit Copyright (C) 2016 paramat +Copyright (C) 2019 TumeniNodes You are free to: Share — copy and redistribute the material in any medium or format. diff --git a/mods/xpanes/locale/template.txt b/mods/xpanes/locale/template.txt new file mode 100644 index 0000000..08dfbba --- /dev/null +++ b/mods/xpanes/locale/template.txt @@ -0,0 +1,6 @@ +# textdomain: xpanes +Glass Pane= +Obsidian Glass Pane= +Steel Bars= +Steel Bar Door= +Steel Bar Trapdoor= diff --git a/mods/xpanes/locale/xpanes.de.tr b/mods/xpanes/locale/xpanes.de.tr new file mode 100644 index 0000000..9852753 --- /dev/null +++ b/mods/xpanes/locale/xpanes.de.tr @@ -0,0 +1,6 @@ +# textdomain: xpanes +Glass Pane=Glasscheibe +Obsidian Glass Pane=Obsidianglasscheibe +Steel Bars=Stahlgitter +Steel Bar Door=Stahlgittertür +Steel Bar Trapdoor=Stahlgitterfalltür diff --git a/mods/xpanes/locale/xpanes.es.tr b/mods/xpanes/locale/xpanes.es.tr new file mode 100644 index 0000000..9902be7 --- /dev/null +++ b/mods/xpanes/locale/xpanes.es.tr @@ -0,0 +1,6 @@ +# textdomain: xpanes +Glass Pane=Panel de vidrio +Obsidian Glass Pane=Panel de vidrio de obsidiana +Steel Bars=Barras de acero +Steel Bar Door=Puerta de barras de acero +Steel Bar Trapdoor=Trampilla de barras de acero diff --git a/mods/xpanes/locale/xpanes.fr.tr b/mods/xpanes/locale/xpanes.fr.tr new file mode 100644 index 0000000..c751799 --- /dev/null +++ b/mods/xpanes/locale/xpanes.fr.tr @@ -0,0 +1,6 @@ +# textdomain: xpanes +Glass Pane=Panneau de verre +Obsidian Glass Pane=Panneau de verre d'obsidienne +Steel Bars=Barreaux d'acier +Steel Bar Door=Porte en barreaux d'acier +Steel Bar Trapdoor=Trappe en barreaux d'acier diff --git a/mods/xpanes/locale/xpanes.it.tr b/mods/xpanes/locale/xpanes.it.tr new file mode 100644 index 0000000..df6ecde --- /dev/null +++ b/mods/xpanes/locale/xpanes.it.tr @@ -0,0 +1,6 @@ +# textdomain: xpanes +Glass Pane=Pannello di vetro +Obsidian Glass Pane=Pannello di vetro d'ossidiana +Steel Bars=Sbarre d'acciaio +Steel Bar Door=Porta con sbarre d'acciaio +Steel Bar Trapdoor=Botola con sbarre d'acciaio \ No newline at end of file diff --git a/mods/xpanes/mod.conf b/mods/xpanes/mod.conf new file mode 100644 index 0000000..dcb0716 --- /dev/null +++ b/mods/xpanes/mod.conf @@ -0,0 +1,4 @@ +name = xpanes +description = Minetest Game mod: xpanes +depends = default +optional_depends = doors diff --git a/mods/xpanes/sounds/xpanes_steel_bar_door_close.ogg b/mods/xpanes/sounds/xpanes_steel_bar_door_close.ogg new file mode 100644 index 0000000..0620bfb Binary files /dev/null and b/mods/xpanes/sounds/xpanes_steel_bar_door_close.ogg differ diff --git a/mods/xpanes/sounds/xpanes_steel_bar_door_open.ogg b/mods/xpanes/sounds/xpanes_steel_bar_door_open.ogg new file mode 100644 index 0000000..d159be9 Binary files /dev/null and b/mods/xpanes/sounds/xpanes_steel_bar_door_open.ogg differ diff --git a/mods/xpanes/textures/xpanes_door_steel_bar.png b/mods/xpanes/textures/xpanes_door_steel_bar.png new file mode 100644 index 0000000..435af14 Binary files /dev/null and b/mods/xpanes/textures/xpanes_door_steel_bar.png differ diff --git a/mods/xpanes/textures/xpanes_item_steel_bar.png b/mods/xpanes/textures/xpanes_item_steel_bar.png new file mode 100644 index 0000000..d1ddadd Binary files /dev/null and b/mods/xpanes/textures/xpanes_item_steel_bar.png differ diff --git a/mods/xpanes/textures/xpanes_trapdoor_steel_bar.png b/mods/xpanes/textures/xpanes_trapdoor_steel_bar.png new file mode 100644 index 0000000..de4b494 Binary files /dev/null and b/mods/xpanes/textures/xpanes_trapdoor_steel_bar.png differ diff --git a/mods/xpanes/textures/xpanes_trapdoor_steel_bar_side.png b/mods/xpanes/textures/xpanes_trapdoor_steel_bar_side.png new file mode 100644 index 0000000..a71231e Binary files /dev/null and b/mods/xpanes/textures/xpanes_trapdoor_steel_bar_side.png differ