diff --git a/beds/README.txt b/beds/README.txt index b4cf0c4..7b35e14 100644 --- a/beds/README.txt +++ b/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/beds/api.lua b/beds/api.lua index c545a20..cab2def 100644 --- a/beds/api.lua +++ b/beds/api.lua @@ -17,6 +17,8 @@ local function destruct_bed(pos, n) reverse = not reverse minetest.remove_node(other) minetest.check_for_falling(other) + beds.remove_spawns_at(pos) + beds.remove_spawns_at(other) else reverse = not reverse end diff --git a/beds/beds.lua b/beds/beds.lua index 0bdde9c..dc044a3 100644 --- a/beds/beds.lua +++ b/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 = { @@ -74,10 +79,10 @@ beds.register_bed("beds:bed", { } }, nodebox = { - bottom = {-0.5, -0.5, -0.5, 0.5, 0.06, 0.5}, - top = {-0.5, -0.5, -0.5, 0.5, 0.06, 0.5}, + bottom = {-0.5, -0.5, -0.5, 0.5, 0.0625, 0.5}, + top = {-0.5, -0.5, -0.5, 0.5, 0.0625, 0.5}, }, - selectionbox = {-0.5, -0.5, -0.5, 0.5, 0.06, 1.5}, + selectionbox = {-0.5, -0.5, -0.5, 0.5, 0.0625, 1.5}, recipe = { {"wool:white", "wool:white", "wool:white"}, {"group:wood", "group:wood", "group:wood"} diff --git a/beds/depends.txt b/beds/depends.txt deleted file mode 100644 index 470ec30..0000000 --- a/beds/depends.txt +++ /dev/null @@ -1,2 +0,0 @@ -default -wool diff --git a/beds/functions.lua b/beds/functions.lua index bf7bf90..019c123 100644 --- a/beds/functions.lua +++ b/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 @@ -75,46 +74,62 @@ local function lay_down(player, pos, bed_pos, state, skip) -- physics, eye_offset, etc player:set_eye_offset({x = 0, y = 0, z = 0}, {x = 0, y = 0, z = 0}) player:set_look_horizontal(math.random(1, 180) / 100) - default.player_attached[name] = false + player_api.player_attached[name] = false player:set_physics_override(1, 1, 1) hud_flags.wielditem = true - default.player_set_animation(player, "stand" , 30) + player_api.set_animation(player, "stand" , 30) -- 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}) local yaw, param2 = get_look_yaw(bed_pos) player:set_look_horizontal(yaw) local dir = minetest.facedir_to_dir(param2) - local p = {x = bed_pos.x + dir.x / 2, y = bed_pos.y, z = bed_pos.z + dir.z / 2} + -- p.y is just above the nodebox height of the 'Simple Bed' (the highest bed), + -- to avoid sinking down through the bed. + local p = { + x = bed_pos.x + dir.x / 2, + y = bed_pos.y + 0.07, + z = bed_pos.z + dir.z / 2 + } player:set_physics_override(0, 0, 0) player:set_pos(p) - default.player_attached[name] = true + player_api.player_attached[name] = true hud_flags.wielditem = false - default.player_set_animation(player, "lay" , 0) + player_api.set_animation(player, "lay" , 0) end 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 +161,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 +238,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/beds/init.lua b/beds/init.lua index 5a3959c..a1a46ce 100644 --- a/beds/init.lua +++ b/beds/init.lua @@ -1,13 +1,20 @@ +-- beds/init.lua + +-- Load support for MT game translation. +local S = minetest.get_translator("beds") +local esc = minetest.formspec_escape + 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;" .. esc(S("Leave Bed")) .. "]" local modpath = minetest.get_modpath("beds") diff --git a/beds/locale/beds.de.tr b/beds/locale/beds.de.tr new file mode 100644 index 0000000..e77f654 --- /dev/null +++ b/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/beds/locale/beds.es.tr b/beds/locale/beds.es.tr new file mode 100644 index 0000000..0543e7f --- /dev/null +++ b/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/beds/locale/beds.fr.tr b/beds/locale/beds.fr.tr new file mode 100644 index 0000000..bddf9b5 --- /dev/null +++ b/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/beds/locale/beds.it.tr b/beds/locale/beds.it.tr new file mode 100644 index 0000000..3dbc70c --- /dev/null +++ b/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/beds/locale/beds.ms.tr b/beds/locale/beds.ms.tr new file mode 100644 index 0000000..797e3a6 --- /dev/null +++ b/beds/locale/beds.ms.tr @@ -0,0 +1,8 @@ +# textdomain: beds +Fancy Bed=Katil Beragam +Simple Bed=Katil Biasa +Leave Bed=Bangun +Good morning.=Selamat pagi. +@1 of @2 players are in bed=@1 daripada @2 pemain sedang tidur +Force night skip=Paksa langkau malam +You can only sleep at night.=Anda hanya boleh tidur pada waktu malam. diff --git a/beds/locale/beds.ru.tr b/beds/locale/beds.ru.tr new file mode 100644 index 0000000..1974b3d --- /dev/null +++ b/beds/locale/beds.ru.tr @@ -0,0 +1,8 @@ +# textdomain: beds +Fancy Bed=Детализированная Кровать +Simple Bed=Обычная Кровать +Leave Bed=Встать с кровати +Good morning.=Доброе утро. +@1 of @2 players are in bed=@1 из @2 игроков в кровати +Force night skip=Пропустить ночь +You can only sleep at night.=Вы можете спать только ночью. diff --git a/beds/locale/beds.se.tr b/beds/locale/beds.se.tr new file mode 100644 index 0000000..53f4f2d --- /dev/null +++ b/beds/locale/beds.se.tr @@ -0,0 +1,8 @@ +# textdomain: beds +Fancy Bed=Fin säng +Simple Bed=Enkel Säng +Leave Bed=Lämna Säng +Good morning.= God morgon. +@1 of @2 players are in bed=@1 av @2 spelar försöker sover. +Force night skip=Tvinga över natten +You can only sleep at night.=Du kan bara sova på natten. diff --git a/beds/locale/beds.zh_CN.tr b/beds/locale/beds.zh_CN.tr new file mode 100644 index 0000000..609524d --- /dev/null +++ b/beds/locale/beds.zh_CN.tr @@ -0,0 +1,8 @@ +# textdomain: beds +Fancy Bed=花式床 +Simple Bed=简易床 +Leave Bed=离开床 +Good morning.=早安! +@1 of @2 players are in bed=@2位玩家中的@1位在床上 +Force night skip=强制跳过夜晚 +You can only sleep at night.=你只能在晚上睡觉。 diff --git a/beds/locale/beds.zh_TW.tr b/beds/locale/beds.zh_TW.tr new file mode 100644 index 0000000..4e7d687 --- /dev/null +++ b/beds/locale/beds.zh_TW.tr @@ -0,0 +1,9 @@ +# textdomain: beds +Fancy Bed=花式床 +Simple Bed=簡易床 +Leave Bed=離開床 +Good morning.=早安! +@1 of @2 players are in bed=@2位玩家中的@1位在床上 +Force night skip=強制跳過夜晚 +You can only sleep at night.=你只能在晚上睡覺。 + diff --git a/beds/locale/template.txt b/beds/locale/template.txt new file mode 100644 index 0000000..518fdbf --- /dev/null +++ b/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/beds/mod.conf b/beds/mod.conf new file mode 100644 index 0000000..450ec13 --- /dev/null +++ b/beds/mod.conf @@ -0,0 +1,3 @@ +name = beds +description = Minetest Game mod: beds +depends = default, wool diff --git a/beds/spawns.lua b/beds/spawns.lua index baee364..1a2ce81 100644 --- a/beds/spawns.lua +++ b/beds/spawns.lua @@ -61,3 +61,12 @@ function beds.set_spawns() end beds.save_spawns() end + +function beds.remove_spawns_at(pos) + for name, p in pairs(beds.spawn) do + if vector.equals(vector.round(p), pos) then + beds.spawn[name] = nil + end + end + beds.save_spawns() +end diff --git a/beds/textures/beds_bed.png b/beds/textures/beds_bed.png index a42f9dd..5c0054c 100644 Binary files a/beds/textures/beds_bed.png and b/beds/textures/beds_bed.png differ diff --git a/beds/textures/beds_bed_fancy.png b/beds/textures/beds_bed_fancy.png index 5d11f6c..4f9e8a7 100644 Binary files a/beds/textures/beds_bed_fancy.png and b/beds/textures/beds_bed_fancy.png differ diff --git a/beds/textures/beds_bed_foot.png b/beds/textures/beds_bed_foot.png index 642ff8f..74d84c8 100644 Binary files a/beds/textures/beds_bed_foot.png and b/beds/textures/beds_bed_foot.png differ diff --git a/beds/textures/beds_bed_head.png b/beds/textures/beds_bed_head.png index b78b7dc..763f5e1 100644 Binary files a/beds/textures/beds_bed_head.png and b/beds/textures/beds_bed_head.png differ diff --git a/beds/textures/beds_bed_side1.png b/beds/textures/beds_bed_side1.png index 4798f29..1ed8158 100644 Binary files a/beds/textures/beds_bed_side1.png and b/beds/textures/beds_bed_side1.png differ diff --git a/beds/textures/beds_bed_side2.png b/beds/textures/beds_bed_side2.png index 5e63e53..9d1384d 100644 Binary files a/beds/textures/beds_bed_side2.png and b/beds/textures/beds_bed_side2.png differ diff --git a/beds/textures/beds_bed_side_bottom.png b/beds/textures/beds_bed_side_bottom.png index 126cbca..99ff309 100644 Binary files a/beds/textures/beds_bed_side_bottom.png and b/beds/textures/beds_bed_side_bottom.png differ diff --git a/beds/textures/beds_bed_side_bottom_r.png b/beds/textures/beds_bed_side_bottom_r.png index 092457b..6f870e8 100644 Binary files a/beds/textures/beds_bed_side_bottom_r.png and b/beds/textures/beds_bed_side_bottom_r.png differ diff --git a/beds/textures/beds_bed_side_top.png b/beds/textures/beds_bed_side_top.png index 28996c7..b2807c5 100644 Binary files a/beds/textures/beds_bed_side_top.png and b/beds/textures/beds_bed_side_top.png differ diff --git a/beds/textures/beds_bed_side_top_r.png b/beds/textures/beds_bed_side_top_r.png index cc9b7a4..429ad7d 100644 Binary files a/beds/textures/beds_bed_side_top_r.png and b/beds/textures/beds_bed_side_top_r.png differ diff --git a/beds/textures/beds_bed_top1.png b/beds/textures/beds_bed_top1.png index ccbad51..b6fcc2c 100644 Binary files a/beds/textures/beds_bed_top1.png and b/beds/textures/beds_bed_top1.png differ diff --git a/beds/textures/beds_bed_top2.png b/beds/textures/beds_bed_top2.png index 18d394a..2fe5bf2 100644 Binary files a/beds/textures/beds_bed_top2.png and b/beds/textures/beds_bed_top2.png differ diff --git a/beds/textures/beds_bed_top_bottom.png b/beds/textures/beds_bed_top_bottom.png index b1e24bb..9b78be6 100644 Binary files a/beds/textures/beds_bed_top_bottom.png and b/beds/textures/beds_bed_top_bottom.png differ diff --git a/beds/textures/beds_bed_top_top.png b/beds/textures/beds_bed_top_top.png index ac53bbc..e877c80 100644 Binary files a/beds/textures/beds_bed_top_top.png and b/beds/textures/beds_bed_top_top.png differ diff --git a/beds/textures/beds_bed_under.png b/beds/textures/beds_bed_under.png index e909e25..a930115 100644 Binary files a/beds/textures/beds_bed_under.png and b/beds/textures/beds_bed_under.png differ diff --git a/beds/textures/beds_transparent.png b/beds/textures/beds_transparent.png index 7064b94..2dc0e3d 100644 Binary files a/beds/textures/beds_transparent.png and b/beds/textures/beds_transparent.png differ diff --git a/binoculars/depends.txt b/binoculars/depends.txt deleted file mode 100644 index 1f737c1..0000000 --- a/binoculars/depends.txt +++ /dev/null @@ -1,2 +0,0 @@ -default -creative? diff --git a/binoculars/init.lua b/binoculars/init.lua index 0b43a06..7685897 100644 --- a/binoculars/init.lua +++ b/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/binoculars/locale/binoculars.de.tr b/binoculars/locale/binoculars.de.tr new file mode 100644 index 0000000..7bd9b9d --- /dev/null +++ b/binoculars/locale/binoculars.de.tr @@ -0,0 +1,3 @@ +# textdomain: binoculars +Binoculars=Fernglas +Use with 'Zoom' key=Mit „Zoom“-Taste benutzen diff --git a/binoculars/locale/binoculars.es.tr b/binoculars/locale/binoculars.es.tr new file mode 100644 index 0000000..7b7e77d --- /dev/null +++ b/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/binoculars/locale/binoculars.fr.tr b/binoculars/locale/binoculars.fr.tr new file mode 100644 index 0000000..3f8b0bc --- /dev/null +++ b/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/binoculars/locale/binoculars.it.tr b/binoculars/locale/binoculars.it.tr new file mode 100644 index 0000000..f8e98d6 --- /dev/null +++ b/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/binoculars/locale/binoculars.ms.tr b/binoculars/locale/binoculars.ms.tr new file mode 100644 index 0000000..d38e64f --- /dev/null +++ b/binoculars/locale/binoculars.ms.tr @@ -0,0 +1,3 @@ +# textdomain: binoculars +Binoculars=Binokular +Use with 'Zoom' key=Guna dengan kekunci 'Zum' diff --git a/binoculars/locale/binoculars.ru.tr b/binoculars/locale/binoculars.ru.tr new file mode 100644 index 0000000..6b3aa9e --- /dev/null +++ b/binoculars/locale/binoculars.ru.tr @@ -0,0 +1,3 @@ +# textdomain: binoculars +Binoculars=Бинокль +Use with 'Zoom' key=Используется с привилегией 'Zoom' diff --git a/binoculars/locale/binoculars.se.tr b/binoculars/locale/binoculars.se.tr new file mode 100644 index 0000000..291afd5 --- /dev/null +++ b/binoculars/locale/binoculars.se.tr @@ -0,0 +1,3 @@ +# textdomain: binoculars +Binoculars=Kikare +Use with 'Zoom' key=Används med 'Zoom' knappen \ No newline at end of file diff --git a/binoculars/locale/binoculars.zh_CN.tr b/binoculars/locale/binoculars.zh_CN.tr new file mode 100644 index 0000000..ec46cf8 --- /dev/null +++ b/binoculars/locale/binoculars.zh_CN.tr @@ -0,0 +1,3 @@ +# textdomain: binoculars +Binoculars=望远镜 +Use with 'Zoom' key=与“缩放”键一起使用 diff --git a/binoculars/locale/binoculars.zh_TW.tr b/binoculars/locale/binoculars.zh_TW.tr new file mode 100644 index 0000000..bbe3b39 --- /dev/null +++ b/binoculars/locale/binoculars.zh_TW.tr @@ -0,0 +1,3 @@ +# textdomain: binoculars +Binoculars=望遠鏡 +Use with 'Zoom' key=與“縮放”鍵一起使用 diff --git a/binoculars/locale/template.txt b/binoculars/locale/template.txt new file mode 100644 index 0000000..a526462 --- /dev/null +++ b/binoculars/locale/template.txt @@ -0,0 +1,3 @@ +# textdomain: binoculars +Binoculars= +Use with 'Zoom' key= diff --git a/binoculars/mod.conf b/binoculars/mod.conf new file mode 100644 index 0000000..7d73741 --- /dev/null +++ b/binoculars/mod.conf @@ -0,0 +1,4 @@ +name = binoculars +description = Minetest Game mod: binoculars +depends = default +optional_depends = creative diff --git a/binoculars/textures/binoculars_binoculars.png b/binoculars/textures/binoculars_binoculars.png index e8b5c51..5803d48 100644 Binary files a/binoculars/textures/binoculars_binoculars.png and b/binoculars/textures/binoculars_binoculars.png differ diff --git a/boats/depends.txt b/boats/depends.txt deleted file mode 100644 index 8e482ce..0000000 --- a/boats/depends.txt +++ /dev/null @@ -1,2 +0,0 @@ -default -player_api diff --git a/boats/init.lua b/boats/init.lua index 00cf791..f9ae8e0 100644 --- a/boats/init.lua +++ b/boats/init.lua @@ -1,3 +1,8 @@ +-- boats/init.lua + +-- Load support for MT game translation. +local S = minetest.get_translator("boats") + -- -- Helper functions -- @@ -8,15 +13,6 @@ local function is_water(pos) end -local function get_sign(i) - if i == 0 then - return 0 - else - return i / math.abs(i) - end -end - - local function get_velocity(v, yaw, y) local x = -math.sin(yaw) * v local z = math.cos(yaw) * v @@ -141,7 +137,7 @@ end function boat.on_step(self, dtime) - self.v = get_v(self.object:get_velocity()) * get_sign(self.v) + self.v = get_v(self.object:get_velocity()) * math.sign(self.v) if self.driver then local driver_objref = minetest.get_player_by_name(self.driver) if driver_objref then @@ -149,16 +145,16 @@ 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 + self.v = self.v - dtime * 2.0 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 + self.v = self.v + dtime * 2.0 end if ctrl.left then if self.v < -0.001 then @@ -180,15 +176,14 @@ function boat.on_step(self, dtime) self.object:set_pos(self.object:get_pos()) return end - local s = get_sign(self.v) - self.v = self.v - dtime * 0.6 * s - if s ~= get_sign(self.v) then - self.object:set_velocity({x = 0, y = 0, z = 0}) + -- We need to preserve velocity sign to properly apply drag force + -- while moving backward + local drag = dtime * math.sign(self.v) * (0.01 + 0.0796 * self.v * self.v) + -- If drag is larger than velocity, then stop horizontal movement + if math.abs(self.v) <= math.abs(drag) then self.v = 0 - return - end - if math.abs(self.v) > 5 then - self.v = 5 * get_sign(self.v) + else + self.v = self.v - drag end local p = self.object:get_pos() @@ -242,7 +237,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/boats/locale/boats.de.tr b/boats/locale/boats.de.tr new file mode 100644 index 0000000..d8eb8d7 --- /dev/null +++ b/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/boats/locale/boats.es.tr b/boats/locale/boats.es.tr new file mode 100644 index 0000000..b9adb72 --- /dev/null +++ b/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/boats/locale/boats.fr.tr b/boats/locale/boats.fr.tr new file mode 100644 index 0000000..f469a0b --- /dev/null +++ b/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/boats/locale/boats.it.tr b/boats/locale/boats.it.tr new file mode 100644 index 0000000..5bd7125 --- /dev/null +++ b/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/boats/locale/boats.ms.tr b/boats/locale/boats.ms.tr new file mode 100644 index 0000000..d11a68b --- /dev/null +++ b/boats/locale/boats.ms.tr @@ -0,0 +1,4 @@ +# textdomain: boats +Boat cruise mode on=Mod bot layar makan angin dibolehkan +Boat cruise mode off=Mod bot layar makan angin dilumpuhkan +Boat=Bot diff --git a/boats/locale/boats.ru.tr b/boats/locale/boats.ru.tr new file mode 100644 index 0000000..4327098 --- /dev/null +++ b/boats/locale/boats.ru.tr @@ -0,0 +1,4 @@ +# textdomain: boats +Boat cruise mode on=Режим путешествия на лодке включен +Boat cruise mode off=Режим путешествия на лодке выключен +Boat=Лодка diff --git a/boats/locale/boats.se.tr b/boats/locale/boats.se.tr new file mode 100644 index 0000000..4ca7c80 --- /dev/null +++ b/boats/locale/boats.se.tr @@ -0,0 +1,4 @@ +# textdomain: boats +Boat cruise mode on=Båtkryssningsläge på +Boat cruise mode off=Båtkryssningsläge av +Boat=Båt \ No newline at end of file diff --git a/boats/locale/boats.zh_CN.tr b/boats/locale/boats.zh_CN.tr new file mode 100644 index 0000000..254f2df --- /dev/null +++ b/boats/locale/boats.zh_CN.tr @@ -0,0 +1,4 @@ +# textdomain: boats +Boat cruise mode on=巡航模式开启 +Boat cruise mode off=巡航模式关闭 +Boat=船 diff --git a/boats/locale/boats.zh_TW.tr b/boats/locale/boats.zh_TW.tr new file mode 100644 index 0000000..97b3471 --- /dev/null +++ b/boats/locale/boats.zh_TW.tr @@ -0,0 +1,4 @@ +# textdomain: boats +Boat cruise mode on=巡航模式開啟 +Boat cruise mode off=巡航模式關閉 +Boat=船 diff --git a/boats/locale/template.txt b/boats/locale/template.txt new file mode 100644 index 0000000..17aedc8 --- /dev/null +++ b/boats/locale/template.txt @@ -0,0 +1,4 @@ +# textdomain: boats +Boat cruise mode on= +Boat cruise mode off= +Boat= diff --git a/boats/mod.conf b/boats/mod.conf new file mode 100644 index 0000000..a727f8f --- /dev/null +++ b/boats/mod.conf @@ -0,0 +1,3 @@ +name = boats +description = Minetest Game mod: boats +depends = default, player_api diff --git a/boats/textures/boats_inventory.png b/boats/textures/boats_inventory.png index 824eaa8..f9d082e 100644 Binary files a/boats/textures/boats_inventory.png and b/boats/textures/boats_inventory.png differ diff --git a/boats/textures/boats_wield.png b/boats/textures/boats_wield.png index 643a064..f998b5b 100644 Binary files a/boats/textures/boats_wield.png and b/boats/textures/boats_wield.png differ diff --git a/bones/depends.txt b/bones/depends.txt deleted file mode 100644 index 4ad96d5..0000000 --- a/bones/depends.txt +++ /dev/null @@ -1 +0,0 @@ -default diff --git a/bones/init.lua b/bones/init.lua index 5fcae41..5e54259 100644 --- a/bones/init.lua +++ b/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/bones/locale/bones.de.tr b/bones/locale/bones.de.tr new file mode 100644 index 0000000..83f5c28 --- /dev/null +++ b/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/bones/locale/bones.es.tr b/bones/locale/bones.es.tr new file mode 100644 index 0000000..9c45513 --- /dev/null +++ b/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/bones/locale/bones.fr.tr b/bones/locale/bones.fr.tr new file mode 100644 index 0000000..cfe01ee --- /dev/null +++ b/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/bones/locale/bones.it.tr b/bones/locale/bones.it.tr new file mode 100644 index 0000000..486b6d3 --- /dev/null +++ b/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/bones/locale/bones.ms.tr b/bones/locale/bones.ms.tr new file mode 100644 index 0000000..e4b8712 --- /dev/null +++ b/bones/locale/bones.ms.tr @@ -0,0 +1,8 @@ +# textdomain: bones +Bones=Tulang +@1's old bones=Tulang lama @1 +@1 died at @2.=@1 mati di @2. +@1 died at @2, and dropped their inventory.=@1 mati di @2, dan menjatuhkan inventorinya. +@1 died at @2, and bones were placed.=@1 mati di @2, dan tulang diletakkan. +@1's fresh bones=Tulang segar @1 +@1's bones=Tulang @1 diff --git a/bones/locale/bones.ru.tr b/bones/locale/bones.ru.tr new file mode 100644 index 0000000..98691c5 --- /dev/null +++ b/bones/locale/bones.ru.tr @@ -0,0 +1,8 @@ +# textdomain: bones +Bones=Кости +@1's old bones=Старые кости @1 +@1 died at @2.=@1 умер в @2. +@1 died at @2, and dropped their inventory.=@1 умер в @2 и потерял содержимое своего инвентаря. +@1 died at @2, and bones were placed.=@1 умер в @2, помещены кости. +@1's fresh bones=новые кости @1 +@1's bones=кости @1 diff --git a/bones/locale/bones.se.tr b/bones/locale/bones.se.tr new file mode 100644 index 0000000..1323c59 --- /dev/null +++ b/bones/locale/bones.se.tr @@ -0,0 +1,8 @@ +# textdomain: bones +Bones=Ben +@1's old bones=@1s Gamla ben +@1 died at @2.=@1 dog på @a. +@1 died at @2, and dropped their inventory.=@1 dog på @a, och tappade deras saker. +@1 died at @2, and bones were placed.=@1 dog på @2, och deras ben var placerade. +@1's fresh bones=@1s färska ben +@1's bones=@1s ben diff --git a/bones/locale/bones.zh_CN.tr b/bones/locale/bones.zh_CN.tr new file mode 100644 index 0000000..dadf55e --- /dev/null +++ b/bones/locale/bones.zh_CN.tr @@ -0,0 +1,8 @@ +# textdomain: bones +Bones=骨骸 +@1's old bones=@1的旧骨骸 +@1 died at @2.=@1在@2死亡。 +@1 died at @2, and dropped their inventory.=@1在@2死亡,丢掉了物品栏。 +@1 died at @2, and bones were placed.=@1在@2死亡,骨骸被放置。 +@1's fresh bones=@1的新鲜骨骸 +@1's bones=@1的骨骸 diff --git a/bones/locale/bones.zh_TW.tr b/bones/locale/bones.zh_TW.tr new file mode 100644 index 0000000..1a94d2f --- /dev/null +++ b/bones/locale/bones.zh_TW.tr @@ -0,0 +1,8 @@ +# textdomain: bones +Bones=骨骸 +@1's old bones=@1的舊骨骸 +@1 died at @2.=@1在@2死亡。 +@1 died at @2, and dropped their inventory.=@1在@2死亡,丟掉了物品欄。 +@1 died at @2, and bones were placed.=@1在@2死亡,骨骸被放置。 +@1's fresh bones=@1的新鮮骨骸 +@1's bones=@1的骨骸 diff --git a/bones/locale/template.txt b/bones/locale/template.txt new file mode 100644 index 0000000..4ac8d45 --- /dev/null +++ b/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/bones/mod.conf b/bones/mod.conf new file mode 100644 index 0000000..371997b --- /dev/null +++ b/bones/mod.conf @@ -0,0 +1,3 @@ +name = bones +description = Minetest Game mod: bones +depends = default diff --git a/bones/textures/bones_bottom.png b/bones/textures/bones_bottom.png index 9e59c23..859c6bb 100644 Binary files a/bones/textures/bones_bottom.png and b/bones/textures/bones_bottom.png differ diff --git a/bones/textures/bones_front.png b/bones/textures/bones_front.png index 8f188e3..1e52437 100644 Binary files a/bones/textures/bones_front.png and b/bones/textures/bones_front.png differ diff --git a/bones/textures/bones_rear.png b/bones/textures/bones_rear.png index de179df..4cfe236 100644 Binary files a/bones/textures/bones_rear.png and b/bones/textures/bones_rear.png differ diff --git a/bones/textures/bones_side.png b/bones/textures/bones_side.png index a1f1ba3..a07595f 100644 Binary files a/bones/textures/bones_side.png and b/bones/textures/bones_side.png differ diff --git a/bones/textures/bones_top.png b/bones/textures/bones_top.png index 7e1505f..198a8a2 100644 Binary files a/bones/textures/bones_top.png and b/bones/textures/bones_top.png differ diff --git a/bucket/depends.txt b/bucket/depends.txt deleted file mode 100644 index 3a7daa1..0000000 --- a/bucket/depends.txt +++ /dev/null @@ -1,2 +0,0 @@ -default - diff --git a/bucket/init.lua b/bucket/init.lua index 1d37cb4..ebdf2e7 100644 --- a/bucket/init.lua +++ b/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({ @@ -220,3 +225,16 @@ minetest.register_craft({ replacements = {{"bucket:bucket_lava", "bucket:bucket_empty"}}, }) +-- Register buckets as dungeon loot +if minetest.global_exists("dungeon_loot") then + dungeon_loot.register({ + {name = "bucket:bucket_empty", chance = 0.55}, + -- 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"}}, + }) +end diff --git a/bucket/locale/bucket.de.tr b/bucket/locale/bucket.de.tr new file mode 100644 index 0000000..570dff1 --- /dev/null +++ b/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/bucket/locale/bucket.es.tr b/bucket/locale/bucket.es.tr new file mode 100644 index 0000000..91a0623 --- /dev/null +++ b/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/bucket/locale/bucket.fr.tr b/bucket/locale/bucket.fr.tr new file mode 100644 index 0000000..5065150 --- /dev/null +++ b/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/bucket/locale/bucket.it.tr b/bucket/locale/bucket.it.tr new file mode 100644 index 0000000..a9a1335 --- /dev/null +++ b/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/bucket/locale/bucket.ms.tr b/bucket/locale/bucket.ms.tr new file mode 100644 index 0000000..02ba38a --- /dev/null +++ b/bucket/locale/bucket.ms.tr @@ -0,0 +1,5 @@ +# textdomain: bucket +Empty Bucket=Baldi Kosong +Water Bucket=Baldi Air +River Water Bucket=Baldi Air Sungai +Lava Bucket=Baldi Lava diff --git a/bucket/locale/bucket.ru.tr b/bucket/locale/bucket.ru.tr new file mode 100644 index 0000000..8ede280 --- /dev/null +++ b/bucket/locale/bucket.ru.tr @@ -0,0 +1,5 @@ +# textdomain: bucket +Empty Bucket=Пустое Ведро +Water Bucket=Ведро с Водой +River Water Bucket=Ведро с Речной Водой +Lava Bucket=Ведро с Лавой diff --git a/bucket/locale/bucket.se.tr b/bucket/locale/bucket.se.tr new file mode 100644 index 0000000..06e9ea3 --- /dev/null +++ b/bucket/locale/bucket.se.tr @@ -0,0 +1,5 @@ +# textdomain: bucket +Empty Bucket=Tom hink +Water Bucket=Vatten hink +River Water Bucket=Flodvatten hink +Lava Bucket=Lava hink \ No newline at end of file diff --git a/bucket/locale/bucket.zh_CN.tr b/bucket/locale/bucket.zh_CN.tr new file mode 100644 index 0000000..fda5bfc --- /dev/null +++ b/bucket/locale/bucket.zh_CN.tr @@ -0,0 +1,5 @@ +# textdomain: bucket +Empty Bucket=空桶 +Water Bucket=水桶 +River Water Bucket=河水桶 +Lava Bucket=岩浆桶 diff --git a/bucket/locale/bucket.zh_TW.tr b/bucket/locale/bucket.zh_TW.tr new file mode 100644 index 0000000..965d657 --- /dev/null +++ b/bucket/locale/bucket.zh_TW.tr @@ -0,0 +1,5 @@ +# textdomain: bucket +Empty Bucket=空桶 +Water Bucket=水桶 +River Water Bucket=河水桶 +Lava Bucket=岩漿桶 diff --git a/bucket/locale/template.txt b/bucket/locale/template.txt new file mode 100644 index 0000000..a37c103 --- /dev/null +++ b/bucket/locale/template.txt @@ -0,0 +1,5 @@ +# textdomain: bucket +Empty Bucket= +Water Bucket= +River Water Bucket= +Lava Bucket= diff --git a/bucket/mod.conf b/bucket/mod.conf new file mode 100644 index 0000000..fef4687 --- /dev/null +++ b/bucket/mod.conf @@ -0,0 +1,4 @@ +name = bucket +description = Minetest Game mod: bucket +depends = default +optional_depends = dungeon_loot diff --git a/bucket/textures/bucket.png b/bucket/textures/bucket.png index e444b53..17b0c49 100644 Binary files a/bucket/textures/bucket.png and b/bucket/textures/bucket.png differ diff --git a/bucket/textures/bucket_lava.png b/bucket/textures/bucket_lava.png index 0ea5dd8..ac6108d 100644 Binary files a/bucket/textures/bucket_lava.png and b/bucket/textures/bucket_lava.png differ diff --git a/bucket/textures/bucket_river_water.png b/bucket/textures/bucket_river_water.png index 1247d6d..d4648bb 100644 Binary files a/bucket/textures/bucket_river_water.png and b/bucket/textures/bucket_river_water.png differ diff --git a/bucket/textures/bucket_water.png b/bucket/textures/bucket_water.png index 55b4858..5af836b 100644 Binary files a/bucket/textures/bucket_water.png and b/bucket/textures/bucket_water.png differ diff --git a/butterflies/depends.txt b/butterflies/depends.txt deleted file mode 100644 index df07aca..0000000 --- a/butterflies/depends.txt +++ /dev/null @@ -1,2 +0,0 @@ -default -flowers \ No newline at end of file diff --git a/butterflies/init.lua b/butterflies/init.lua index 008211e..650e7da 100644 --- a/butterflies/init.lua +++ b/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, @@ -98,7 +102,7 @@ minetest.register_decoration({ place_offset_y = 2, sidelen = 80, fill_ratio = 0.005, - biomes = {"grassland", "deciduous_forest", "floatland_grassland"}, + biomes = {"grassland", "deciduous_forest"}, y_max = 31000, y_min = 1, decoration = { diff --git a/butterflies/locale/butterflies.de.tr b/butterflies/locale/butterflies.de.tr new file mode 100644 index 0000000..2f1b982 --- /dev/null +++ b/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/butterflies/locale/butterflies.es.tr b/butterflies/locale/butterflies.es.tr new file mode 100644 index 0000000..59a28eb --- /dev/null +++ b/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/butterflies/locale/butterflies.fr.tr b/butterflies/locale/butterflies.fr.tr new file mode 100644 index 0000000..8f5c094 --- /dev/null +++ b/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/butterflies/locale/butterflies.it.tr b/butterflies/locale/butterflies.it.tr new file mode 100644 index 0000000..104ec88 --- /dev/null +++ b/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/butterflies/locale/butterflies.ms.tr b/butterflies/locale/butterflies.ms.tr new file mode 100644 index 0000000..b8bde85 --- /dev/null +++ b/butterflies/locale/butterflies.ms.tr @@ -0,0 +1,4 @@ +# textdomain: butterflies +White Butterfly=Rama-Rama Putih +Red Butterfly=Rama-Rama Merah +Violet Butterfly=Rama-Rama Ungu diff --git a/butterflies/locale/butterflies.ru.tr b/butterflies/locale/butterflies.ru.tr new file mode 100644 index 0000000..7a79ed8 --- /dev/null +++ b/butterflies/locale/butterflies.ru.tr @@ -0,0 +1,4 @@ +# textdomain: butterflies +White Butterfly=Белая Бабочка +Red Butterfly=Красная Бабочка +Violet Butterfly=Фиолетовая Бабочка diff --git a/butterflies/locale/butterflies.se.tr b/butterflies/locale/butterflies.se.tr new file mode 100644 index 0000000..08cb94c --- /dev/null +++ b/butterflies/locale/butterflies.se.tr @@ -0,0 +1,4 @@ +# textdomain: butterflies +White Butterfly=Vit fjäril +Red Butterfly=Röd fjäril +Violet Butterfly=Violett fjäril \ No newline at end of file diff --git a/butterflies/locale/butterflies.zh_CN.tr b/butterflies/locale/butterflies.zh_CN.tr new file mode 100644 index 0000000..24e0bd1 --- /dev/null +++ b/butterflies/locale/butterflies.zh_CN.tr @@ -0,0 +1,4 @@ +# textdomain: butterflies +White Butterfly=白蝴蝶 +Red Butterfly=红蝴蝶 +Violet Butterfly=紫蝴蝶 diff --git a/butterflies/locale/butterflies.zh_TW.tr b/butterflies/locale/butterflies.zh_TW.tr new file mode 100644 index 0000000..8d927c1 --- /dev/null +++ b/butterflies/locale/butterflies.zh_TW.tr @@ -0,0 +1,4 @@ +# textdomain: butterflies +White Butterfly=白蝴蝶 +Red Butterfly=紅蝴蝶 +Violet Butterfly=紫蝴蝶 diff --git a/butterflies/locale/template.txt b/butterflies/locale/template.txt new file mode 100644 index 0000000..d89503a --- /dev/null +++ b/butterflies/locale/template.txt @@ -0,0 +1,4 @@ +# textdomain: butterflies +White Butterfly= +Red Butterfly= +Violet Butterfly= diff --git a/butterflies/mod.conf b/butterflies/mod.conf new file mode 100644 index 0000000..1c66497 --- /dev/null +++ b/butterflies/mod.conf @@ -0,0 +1,3 @@ +name = butterflies +description = Minetest Game mod: Butterflies +depends = default, flowers diff --git a/butterflies/textures/butterflies_butterfly_red.png b/butterflies/textures/butterflies_butterfly_red.png index dd01cb3..8edfc36 100644 Binary files a/butterflies/textures/butterflies_butterfly_red.png and b/butterflies/textures/butterflies_butterfly_red.png differ diff --git a/butterflies/textures/butterflies_butterfly_red_animated.png b/butterflies/textures/butterflies_butterfly_red_animated.png index 925445c..4a2097b 100644 Binary files a/butterflies/textures/butterflies_butterfly_red_animated.png and b/butterflies/textures/butterflies_butterfly_red_animated.png differ diff --git a/butterflies/textures/butterflies_butterfly_violet.png b/butterflies/textures/butterflies_butterfly_violet.png index eaf1496..8b8c29d 100644 Binary files a/butterflies/textures/butterflies_butterfly_violet.png and b/butterflies/textures/butterflies_butterfly_violet.png differ diff --git a/butterflies/textures/butterflies_butterfly_violet_animated.png b/butterflies/textures/butterflies_butterfly_violet_animated.png index d3b5613..3f9d72e 100644 Binary files a/butterflies/textures/butterflies_butterfly_violet_animated.png and b/butterflies/textures/butterflies_butterfly_violet_animated.png differ diff --git a/butterflies/textures/butterflies_butterfly_white.png b/butterflies/textures/butterflies_butterfly_white.png index 9806c93..db4eaec 100644 Binary files a/butterflies/textures/butterflies_butterfly_white.png and b/butterflies/textures/butterflies_butterfly_white.png differ diff --git a/butterflies/textures/butterflies_butterfly_white_animated.png b/butterflies/textures/butterflies_butterfly_white_animated.png index 1652f17..e7cada3 100644 Binary files a/butterflies/textures/butterflies_butterfly_white_animated.png and b/butterflies/textures/butterflies_butterfly_white_animated.png differ diff --git a/creative/depends.txt b/creative/depends.txt deleted file mode 100644 index 975e652..0000000 --- a/creative/depends.txt +++ /dev/null @@ -1,2 +0,0 @@ -default -sfinv diff --git a/creative/init.lua b/creative/init.lua index 0f8d4db..a1d57c8 100644 --- a/creative/init.lua +++ b/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/creative/inventory.lua b/creative/inventory.lua index 6f485d5..455da1a 100644 --- a/creative/inventory.lua +++ b/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 = {} @@ -20,7 +25,9 @@ function creative.init_creative_inventory(player) player_inventory[player_name] = { size = 0, filter = "", - start_i = 0 + start_i = 0, + old_filter = nil, -- use only for caching in update_creative_inventory + old_content = nil } minetest.create_detached_inventory("creative_" .. player_name, { @@ -54,22 +61,42 @@ function creative.init_creative_inventory(player) return player_inventory[player_name] end +local function match(s, filter) + if filter == "" then + return 0 + end + if s:lower():find(filter, 1, true) then + return #s - #filter + end + return nil +end + function creative.update_creative_inventory(player_name, tab_content) - local creative_list = {} local inv = player_inventory[player_name] or creative.init_creative_inventory(minetest.get_player_by_name(player_name)) local player_inv = minetest.get_inventory({type = "detached", name = "creative_" .. player_name}) + if inv.filter == inv.old_filter and tab_content == inv.old_content then + return + end + inv.old_filter = inv.filter + inv.old_content = tab_content + local items = inventory_cache[tab_content] or init_creative_cache(tab_content) + local creative_list = {} + local order = {} for name, def in pairs(items) do - if def.name:find(inv.filter, 1, true) or - def.description:lower():find(inv.filter, 1, true) then + local m = match(def.description, inv.filter) or match(def.name, inv.filter) + if m then creative_list[#creative_list+1] = name + -- Sort by description length first so closer matches appear earlier + order[name] = string.format("%02d", m) .. name end end - table.sort(creative_list) + table.sort(creative_list, function(a, b) return order[a] < order[b] end) + player_inv:set_size("main", #creative_list) player_inv:set_list("main", creative_list) inv.size = #creative_list @@ -100,33 +127,31 @@ function creative.register_tab(name, title, items) local player_name = player:get_player_name() creative.update_creative_inventory(player_name, items) local inv = player_inventory[player_name] - 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 pagenum = math.floor(inv.start_i / (4*8) + 1) + local pagemax = math.ceil(inv.size / (4*8)) + local esc = minetest.formspec_escape return sfinv.make_formspec(player, context, - "label[6.2,3.35;" .. minetest.colorize("#FFFF00", tostring(pagenum)) .. " / " .. tostring(pagemax) .. "]" .. + "label[5.8,4.15;" .. minetest.colorize("#FFFF00", tostring(pagenum)) .. " / " .. tostring(pagemax) .. "]" .. [[ - image[4.06,3.4;0.8,0.8;creative_trash_icon.png] + image[4.08,4.2;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;] + list[detached:creative_trash;main;4.02,4.1;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] + image_button[5,4.05;0.8,0.8;creative_prev_icon.png;creative_prev;] + image_button[7.2,4.05;0.8,0.8;creative_next_icon.png;creative_next;] + image_button[2.63,4.05;0.8,0.8;creative_search_icon.png;creative_search;] + image_button[3.25,4.05;0.8,0.8;creative_clear_icon.png;creative_clear;] ]] .. - "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,4.2;2.8,1.2;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) + "list[detached:creative_" .. player_name .. ";main;0,0;8,4;" .. tostring(inv.start_i) .. "]" .. + creative.formspec_add, true) end, on_enter = function(self, player, context) local player_name = player:get_player_name() @@ -143,27 +168,25 @@ function creative.register_tab(name, title, items) if fields.creative_clear then inv.start_i = 0 inv.filter = "" - creative.update_creative_inventory(player_name, items) sfinv.set_player_inventory_formspec(player, context) elseif fields.creative_search or fields.key_enter_field == "creative_filter" then inv.start_i = 0 inv.filter = fields.creative_filter:lower() - creative.update_creative_inventory(player_name, items) sfinv.set_player_inventory_formspec(player, context) elseif not fields.quit then local start_i = inv.start_i or 0 if fields.creative_prev then - start_i = start_i - 3*8 + start_i = start_i - 4*8 if start_i < 0 then - start_i = inv.size - (inv.size % (3*8)) + start_i = inv.size - (inv.size % (4*8)) if inv.size == start_i then - start_i = math.max(0, inv.size - (3*8)) + start_i = math.max(0, inv.size - (4*8)) end end elseif fields.creative_next then - start_i = start_i + 3*8 + start_i = start_i + 4*8 if start_i >= inv.size then start_i = 0 end @@ -176,10 +199,30 @@ 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) +-- Sort registered items +local registered_nodes = {} +local registered_tools = {} +local registered_craftitems = {} + +minetest.register_on_mods_loaded(function() + for name, def in pairs(minetest.registered_items) do + local group = def.groups or {} + + local nogroup = not (group.node or group.tool or group.craftitem) + if group.node or (nogroup and minetest.registered_nodes[name]) then + registered_nodes[name] = def + elseif group.tool or (nogroup and minetest.registered_tools[name]) then + registered_tools[name] = def + elseif group.craftitem or (nogroup and minetest.registered_craftitems[name]) then + registered_craftitems[name] = def + end + end +end) + +creative.register_tab("all", S("All"), minetest.registered_items) +creative.register_tab("nodes", S("Nodes"), registered_nodes) +creative.register_tab("tools", S("Tools"), registered_tools) +creative.register_tab("craftitems", S("Items"), registered_craftitems) local old_homepage_name = sfinv.get_homepage_name function sfinv.get_homepage_name(player) diff --git a/creative/locale/creative.de.tr b/creative/locale/creative.de.tr new file mode 100644 index 0000000..02b0277 --- /dev/null +++ b/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/creative/locale/creative.es.tr b/creative/locale/creative.es.tr new file mode 100644 index 0000000..f4e39a7 --- /dev/null +++ b/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/creative/locale/creative.fr.tr b/creative/locale/creative.fr.tr new file mode 100644 index 0000000..695c0a1 --- /dev/null +++ b/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/creative/locale/creative.it.tr b/creative/locale/creative.it.tr new file mode 100644 index 0000000..1c82189 --- /dev/null +++ b/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/creative/locale/creative.ms.tr b/creative/locale/creative.ms.tr new file mode 100644 index 0000000..a2aef80 --- /dev/null +++ b/creative/locale/creative.ms.tr @@ -0,0 +1,10 @@ +# textdomain: creative +Allow player to use creative inventory=Benarkan pemain menggunakan inventori kreatif +Search=Cari +Reset=Set semula +Previous page=Halaman sebelumnya +Next page=Halaman seterusnya +All=Semua +Nodes=Nod +Tools=Alatan +Items=Item diff --git a/creative/locale/creative.ru.tr b/creative/locale/creative.ru.tr new file mode 100644 index 0000000..f649dbc --- /dev/null +++ b/creative/locale/creative.ru.tr @@ -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/creative/locale/creative.se.tr b/creative/locale/creative.se.tr new file mode 100644 index 0000000..e78bc2c --- /dev/null +++ b/creative/locale/creative.se.tr @@ -0,0 +1,10 @@ +# textdomain: creative +Allow player to use creative inventory=Tilllåt spelare att används kreativa saker +Search=Sök +Reset=Återställ +Previous page=Förra sidan +Next page=Nästa sidan +All=Alla +Nodes=Noder +Tools=Verktyg +Items=Saker \ No newline at end of file diff --git a/creative/locale/creative.zh_CN.tr b/creative/locale/creative.zh_CN.tr new file mode 100644 index 0000000..1ca424e --- /dev/null +++ b/creative/locale/creative.zh_CN.tr @@ -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/creative/locale/creative.zh_TW.tr b/creative/locale/creative.zh_TW.tr new file mode 100644 index 0000000..c5746d4 --- /dev/null +++ b/creative/locale/creative.zh_TW.tr @@ -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/creative/locale/template.txt b/creative/locale/template.txt new file mode 100644 index 0000000..3e79730 --- /dev/null +++ b/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/creative/mod.conf b/creative/mod.conf new file mode 100644 index 0000000..0b3f745 --- /dev/null +++ b/creative/mod.conf @@ -0,0 +1,3 @@ +name = creative +description = Minetest Game mod: creative +depends = default, sfinv diff --git a/creative/textures/creative_clear_icon.png b/creative/textures/creative_clear_icon.png index e32f6a3..9244264 100644 Binary files a/creative/textures/creative_clear_icon.png and b/creative/textures/creative_clear_icon.png differ diff --git a/creative/textures/creative_next_icon.png b/creative/textures/creative_next_icon.png index 4209ea8..82cf3d3 100644 Binary files a/creative/textures/creative_next_icon.png and b/creative/textures/creative_next_icon.png differ diff --git a/creative/textures/creative_prev_icon.png b/creative/textures/creative_prev_icon.png index d8294fd..b26cd15 100644 Binary files a/creative/textures/creative_prev_icon.png and b/creative/textures/creative_prev_icon.png differ diff --git a/creative/textures/creative_search_icon.png b/creative/textures/creative_search_icon.png index cbe9dc1..aace804 100644 Binary files a/creative/textures/creative_search_icon.png and b/creative/textures/creative_search_icon.png differ diff --git a/creative/textures/creative_trash_icon.png b/creative/textures/creative_trash_icon.png index a01228b..7d7a0a6 100644 Binary files a/creative/textures/creative_trash_icon.png and b/creative/textures/creative_trash_icon.png differ diff --git a/default/README.txt b/default/README.txt index 8642b39..79ce6d2 100644 --- a/default/README.txt +++ b/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 @@ -124,11 +123,15 @@ paramat (CC BY-SA 3.0): default_fence_rail_junglewood default_fence_rail_pine_wood default_fence_rail_wood -- Derived from a texture by BlockMen (CC BY-SA 3.0) + gui_hotbar.png + gui_hotbar_selected.png 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 @@ -149,7 +152,10 @@ BlockMen (CC BY-SA 3.0): default_mineral_mese.png default_meselamp.png bubble.png - gui_*.png + gui_formbg.png + gui_furnace_arrow_bg.png + gui_furnace_arrow_fg.png + gui_hb_bg.png sofar (CC BY-SA 3.0): default_aspen_sapling @@ -247,6 +253,7 @@ Topywo (CC BY-SA 3.0) Extex101 (CC BY-SA 3.0) default_large_cactus_seedling.png + default_dry_shrub.png -- Derived from the original texture by celeron55 Sounds @@ -329,6 +336,10 @@ http://freesound.org/people/Ryding/sounds/94337/ Ferk (CC0 1.0): default_item_smoke.ogg, based on a sound by http://opengameart.org/users/bart +sonictechtonic (CC BY 3.0): +https://www.freesound.org/people/sonictechtonic/sounds/241872/ + player_damage.ogg + Models ------ diff --git a/default/chests.lua b/default/chests.lua index b70e5ad..f4462ae 100644 --- a/default/chests.lua +++ b/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 = @@ -41,9 +44,10 @@ function default.chest.chest_lid_close(pn) end local node = minetest.get_node(pos) - minetest.after(0.2, minetest.swap_node, pos, { name = "default:" .. swap, + minetest.after(0.2, minetest.swap_node, pos, { name = swap, param2 = node.param2 }) - minetest.sound_play(sound, {gain = 0.3, pos = pos, max_hear_distance = 10}) + minetest.sound_play(sound, {gain = 0.3, pos = pos, + max_hear_distance = 10}, true) end default.chest.open_chests = {} @@ -72,7 +76,8 @@ minetest.register_on_leaveplayer(function(player) end end) -function default.chest.register_chest(name, d) +function default.chest.register_chest(prefixed_name, d) + local name = prefixed_name:sub(1,1) == ':' and prefixed_name:sub(2,-1) or prefixed_name local def = table.copy(d) def.drawtype = "mesh" def.visual = "mesh" @@ -84,7 +89,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 +97,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); @@ -126,10 +130,10 @@ function default.chest.register_chest(name, d) end minetest.sound_play(def.sound_open, {gain = 0.3, - pos = pos, max_hear_distance = 10}) + pos = pos, max_hear_distance = 10}, true) if not default.chest.chest_lid_obstructed(pos) then minetest.swap_node(pos, - { name = "default:" .. name .. "_open", + { name = name .. "_open", param2 = node.param2 }) end minetest.after(0.2, minetest.show_formspec, @@ -171,7 +175,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 +185,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 @@ -197,10 +201,10 @@ function default.chest.register_chest(name, d) end def.on_rightclick = function(pos, node, clicker) minetest.sound_play(def.sound_open, {gain = 0.3, pos = pos, - max_hear_distance = 10}) + max_hear_distance = 10}, true) if not default.chest.chest_lid_obstructed(pos) then minetest.swap_node(pos, { - name = "default:" .. name .. "_open", + name = name .. "_open", param2 = node.param2 }) end minetest.after(0.2, minetest.show_formspec, @@ -212,7 +216,7 @@ function default.chest.register_chest(name, d) def.on_blast = function(pos) local drops = {} default.get_inventory_drops(pos, "main", drops) - drops[#drops+1] = "default:" .. name + drops[#drops+1] = name minetest.remove_node(pos) return drops end @@ -245,7 +249,7 @@ function default.chest.register_chest(name, d) def_opened.tiles[i].backface_culling = true end end - def_opened.drop = "default:" .. name + def_opened.drop = name def_opened.groups.not_in_creative_inventory = 1 def_opened.selection_box = { type = "fixed", @@ -262,30 +266,32 @@ function default.chest.register_chest(name, d) def_closed.tiles[5] = def.tiles[3] -- drawtype to make them match the mesh def_closed.tiles[3] = def.tiles[3].."^[transformFX" - minetest.register_node("default:" .. name, def_closed) - minetest.register_node("default:" .. name .. "_open", def_opened) + minetest.register_node(prefixed_name, def_closed) + minetest.register_node(prefixed_name .. "_open", def_opened) -- convert old chests to this new variant - minetest.register_lbm({ - label = "update chests to opening chests", - name = "default:upgrade_" .. name .. "_v2", - nodenames = {"default:" .. name}, - action = function(pos, node) - local meta = minetest.get_meta(pos) - meta:set_string("formspec", nil) - local inv = meta:get_inventory() - local list = inv:get_list("default:chest") - if list then - inv:set_size("main", 8*4) - inv:set_list("main", list) - inv:set_list("default:chest", nil) + if name == "default:chest" or name == "default:chest_locked" then + minetest.register_lbm({ + label = "update chests to opening chests", + name = "default:upgrade_" .. name:sub(9,-1) .. "_v2", + nodenames = {name}, + action = function(pos, node) + local meta = minetest.get_meta(pos) + meta:set_string("formspec", nil) + local inv = meta:get_inventory() + local list = inv:get_list("default:chest") + if list then + inv:set_size("main", 8*4) + inv:set_list("main", list) + inv:set_list("default:chest", nil) + end end - end - }) + }) + end end -default.chest.register_chest("chest", { - description = "Chest", +default.chest.register_chest("default:chest", { + description = S("Chest"), tiles = { "default_chest_top.png", "default_chest_top.png", @@ -300,8 +306,8 @@ default.chest.register_chest("chest", { groups = {choppy = 2, oddly_breakable_by_hand = 2}, }) -default.chest.register_chest("chest_locked", { - description = "Locked Chest", +default.chest.register_chest("default:chest_locked", { + description = S("Locked Chest"), tiles = { "default_chest_top.png", "default_chest_top.png", @@ -316,3 +322,39 @@ default.chest.register_chest("chest_locked", { groups = {choppy = 2, oddly_breakable_by_hand = 2}, protected = true, }) + +minetest.register_craft({ + output = "default:chest", + recipe = { + {"group:wood", "group:wood", "group:wood"}, + {"group:wood", "", "group:wood"}, + {"group:wood", "group:wood", "group:wood"}, + } +}) + +minetest.register_craft({ + output = "default:chest_locked", + recipe = { + {"group:wood", "group:wood", "group:wood"}, + {"group:wood", "default:steel_ingot", "group:wood"}, + {"group:wood", "group:wood", "group:wood"}, + } +}) + +minetest.register_craft( { + type = "shapeless", + output = "default:chest_locked", + recipe = {"default:chest", "default:steel_ingot"}, +}) + +minetest.register_craft({ + type = "fuel", + recipe = "default:chest", + burntime = 30, +}) + +minetest.register_craft({ + type = "fuel", + recipe = "default:chest_locked", + burntime = 30, +}) diff --git a/default/crafting.lua b/default/crafting.lua index b49dc48..bc436fc 100644 --- a/default/crafting.lua +++ b/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,342 +57,47 @@ minetest.register_craft({ }) minetest.register_craft({ - output = 'default:stick 4', + output = "default:sign_wall_steel 3", recipe = { - {'group:wood'}, + {"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_steel 3', + output = "default:sign_wall_wood 3", recipe = { - {'default:steel_ingot', 'default:steel_ingot', 'default:steel_ingot'}, - {'default:steel_ingot', 'default:steel_ingot', 'default:steel_ingot'}, - {'', 'group:stick', ''}, + {"group:wood", "group:wood", "group:wood"}, + {"group:wood", "group:wood", "group:wood"}, + {"", "group:stick", ""}, } }) minetest.register_craft({ - output = 'default:sign_wall_wood 3', + output = "default:coalblock", recipe = { - {'group:wood', 'group:wood', 'group:wood'}, - {'group:wood', 'group:wood', 'group:wood'}, - {'', 'group:stick', ''}, + {"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:torch 4', + output = "default:steelblock", recipe = { - {'default:coal_lump'}, - {'group:stick'}, + {"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:pick_wood', + output = "default:copperblock", recipe = { - {'group:wood', 'group:wood', 'group:wood'}, - {'', 'group:stick', ''}, - {'', 'group:stick', ''}, - } -}) - -minetest.register_craft({ - output = 'default:pick_stone', - recipe = { - {'group:stone', 'group:stone', 'group:stone'}, - {'', 'group:stick', ''}, - {'', 'group:stick', ''}, - } -}) - -minetest.register_craft({ - output = 'default:pick_steel', - recipe = { - {'default:steel_ingot', 'default:steel_ingot', 'default:steel_ingot'}, - {'', 'group:stick', ''}, - {'', 'group:stick', ''}, - } -}) - -minetest.register_craft({ - output = 'default:pick_bronze', - recipe = { - {'default:bronze_ingot', 'default:bronze_ingot', 'default:bronze_ingot'}, - {'', 'group:stick', ''}, - {'', 'group:stick', ''}, - } -}) - -minetest.register_craft({ - output = 'default:pick_mese', - recipe = { - {'default:mese_crystal', 'default:mese_crystal', 'default:mese_crystal'}, - {'', 'group:stick', ''}, - {'', 'group:stick', ''}, - } -}) - -minetest.register_craft({ - output = 'default:pick_diamond', - recipe = { - {'default:diamond', 'default:diamond', 'default:diamond'}, - {'', 'group:stick', ''}, - {'', 'group:stick', ''}, - } -}) - -minetest.register_craft({ - output = 'default:shovel_wood', - recipe = { - {'group:wood'}, - {'group:stick'}, - {'group:stick'}, - } -}) - -minetest.register_craft({ - output = 'default:shovel_stone', - recipe = { - {'group:stone'}, - {'group:stick'}, - {'group:stick'}, - } -}) - -minetest.register_craft({ - output = 'default:shovel_steel', - recipe = { - {'default:steel_ingot'}, - {'group:stick'}, - {'group:stick'}, - } -}) - -minetest.register_craft({ - output = 'default:shovel_bronze', - recipe = { - {'default:bronze_ingot'}, - {'group:stick'}, - {'group:stick'}, - } -}) - -minetest.register_craft({ - output = 'default:shovel_mese', - recipe = { - {'default:mese_crystal'}, - {'group:stick'}, - {'group:stick'}, - } -}) - -minetest.register_craft({ - output = 'default:shovel_diamond', - recipe = { - {'default:diamond'}, - {'group:stick'}, - {'group:stick'}, - } -}) - --- Axes --- Recipes face left to match appearence in textures and inventory - -minetest.register_craft({ - output = 'default:axe_wood', - recipe = { - {'group:wood', 'group:wood'}, - {'group:wood', 'group:stick'}, - {'', 'group:stick'}, - } -}) - -minetest.register_craft({ - output = 'default:axe_stone', - recipe = { - {'group:stone', 'group:stone'}, - {'group:stone', 'group:stick'}, - {'', 'group:stick'}, - } -}) - -minetest.register_craft({ - output = 'default:axe_steel', - recipe = { - {'default:steel_ingot', 'default:steel_ingot'}, - {'default:steel_ingot', 'group:stick'}, - {'', 'group:stick'}, - } -}) - -minetest.register_craft({ - output = 'default:axe_bronze', - recipe = { - {'default:bronze_ingot', 'default:bronze_ingot'}, - {'default:bronze_ingot', 'group:stick'}, - {'', 'group:stick'}, - } -}) - -minetest.register_craft({ - output = 'default:axe_mese', - recipe = { - {'default:mese_crystal', 'default:mese_crystal'}, - {'default:mese_crystal', 'group:stick'}, - {'', 'group:stick'}, - } -}) - -minetest.register_craft({ - output = 'default:axe_diamond', - recipe = { - {'default:diamond', 'default:diamond'}, - {'default:diamond', 'group:stick'}, - {'', 'group:stick'}, - } -}) - -minetest.register_craft({ - output = 'default:sword_wood', - recipe = { - {'group:wood'}, - {'group:wood'}, - {'group:stick'}, - } -}) - -minetest.register_craft({ - output = 'default:sword_stone', - recipe = { - {'group:stone'}, - {'group:stone'}, - {'group:stick'}, - } -}) - -minetest.register_craft({ - output = 'default:sword_steel', - recipe = { - {'default:steel_ingot'}, - {'default:steel_ingot'}, - {'group:stick'}, - } -}) - -minetest.register_craft({ - output = 'default:sword_bronze', - recipe = { - {'default:bronze_ingot'}, - {'default:bronze_ingot'}, - {'group:stick'}, - } -}) - -minetest.register_craft({ - output = 'default:sword_mese', - recipe = { - {'default:mese_crystal'}, - {'default:mese_crystal'}, - {'group:stick'}, - } -}) - -minetest.register_craft({ - output = 'default:sword_diamond', - recipe = { - {'default:diamond'}, - {'default:diamond'}, - {'group:stick'}, - } -}) - -minetest.register_craft({ - output = 'default:skeleton_key', - recipe = { - {'default:gold_ingot'}, - } -}) - -minetest.register_craft({ - output = 'default:chest', - recipe = { - {'group:wood', 'group:wood', 'group:wood'}, - {'group:wood', '', 'group:wood'}, - {'group:wood', 'group:wood', 'group:wood'}, - } -}) - -minetest.register_craft({ - output = 'default:chest_locked', - recipe = { - {'group:wood', 'group:wood', 'group:wood'}, - {'group:wood', 'default:steel_ingot', 'group:wood'}, - {'group:wood', 'group:wood', 'group:wood'}, - } -}) - -minetest.register_craft( { - type = "shapeless", - output = "default:chest_locked", - recipe = {"default:chest", "default:steel_ingot"}, -}) - -minetest.register_craft({ - output = 'default:furnace', - recipe = { - {'group:stone', 'group:stone', 'group:stone'}, - {'group:stone', '', 'group:stone'}, - {'group:stone', 'group:stone', 'group:stone'}, - } -}) - -minetest.register_craft({ - 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'}, - } -}) - -minetest.register_craft({ - output = 'default:coal_lump 9', - recipe = { - {'default:coalblock'}, - } -}) - -minetest.register_craft({ - 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'}, - } -}) - -minetest.register_craft({ - output = 'default:steel_ingot 9', - recipe = { - {'default:steelblock'}, - } -}) - -minetest.register_craft({ - 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'}, - } -}) - -minetest.register_craft({ - output = 'default:copper_ingot 9', - recipe = { - {'default:copperblock'}, + {"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"}, } }) @@ -406,66 +111,36 @@ minetest.register_craft({ }) minetest.register_craft({ - output = "default:tin_ingot 9", + output = "default:bronzeblock", recipe = { - {"default:tinblock"}, + {"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", recipe = { - {"default:copper_ingot", "default:copper_ingot", "default:copper_ingot"}, - {"default:copper_ingot", "default:tin_ingot", "default:copper_ingot"}, - {"default:copper_ingot", "default:copper_ingot", "default:copper_ingot"}, + {"default:bronzeblock"}, } }) minetest.register_craft({ - output = 'default:bronzeblock', + output = "default:goldblock", 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: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:bronze_ingot 9', + output = "default:diamondblock", recipe = { - {'default:bronzeblock'}, - } -}) - -minetest.register_craft({ - 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'}, - } -}) - -minetest.register_craft({ - output = 'default:gold_ingot 9', - recipe = { - {'default:goldblock'}, - } -}) - -minetest.register_craft({ - output = 'default:diamondblock', - recipe = { - {'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', - recipe = { - {'default:diamondblock'}, + {"default:diamond", "default:diamond", "default:diamond"}, + {"default:diamond", "default:diamond", "default:diamond"}, + {"default:diamond", "default:diamond", "default:diamond"}, } }) @@ -566,57 +241,27 @@ 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:brick", recipe = { - {'default:clay'}, + {"default:clay_brick", "default:clay_brick"}, + {"default:clay_brick", "default:clay_brick"}, } }) minetest.register_craft({ - output = 'default:brick', + output = "default:bookshelf", recipe = { - {'default:clay_brick', 'default:clay_brick'}, - {'default:clay_brick', 'default:clay_brick'}, - } -}) - -minetest.register_craft({ - output = 'default:clay_brick 4', - recipe = { - {'default:brick'}, - } -}) - -minetest.register_craft({ - output = 'default:paper', - recipe = { - {'default:papyrus', 'default:papyrus', 'default:papyrus'}, - } -}) - -minetest.register_craft({ - output = 'default:book', - recipe = { - {'default:paper'}, - {'default:paper'}, - {'default:paper'}, - } -}) - -minetest.register_craft({ - 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,51 +275,28 @@ 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:meselamp", recipe = { - {'default:mese'}, - } -}) - -minetest.register_craft({ - output = 'default:mese_crystal_fragment 9', - recipe = { - {'default:mese_crystal'}, - } -}) - -minetest.register_craft({ - output = "default:mese_crystal", - recipe = { - {"default:mese_crystal_fragment", "default:mese_crystal_fragment", "default:mese_crystal_fragment"}, - {"default:mese_crystal_fragment", "default:mese_crystal_fragment", "default:mese_crystal_fragment"}, - {"default:mese_crystal_fragment", "default:mese_crystal_fragment", "default:mese_crystal_fragment"}, - } -}) - -minetest.register_craft({ - output = 'default:meselamp', - recipe = { - {'default:glass'}, - {'default:mese_crystal'}, + {"default:glass"}, + {"default:mese_crystal"}, } }) @@ -688,85 +310,78 @@ minetest.register_craft({ }) minetest.register_craft({ - output = 'default:obsidian_shard 9', + output = "default:obsidian", recipe = { - {'default:obsidian'} + {"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:obsidian', + output = "default:obsidianbrick 4", 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", "default:obsidian"}, + {"default:obsidian", "default:obsidian"} } }) minetest.register_craft({ - output = 'default:obsidianbrick 4', + 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"}, } }) minetest.register_craft({ - output = 'default:obsidian_block 9', + output = "default:stonebrick 4", recipe = { - {'default:obsidian', 'default:obsidian', 'default:obsidian'}, - {'default:obsidian', 'default:obsidian', 'default:obsidian'}, - {'default:obsidian', 'default:obsidian', 'default:obsidian'}, + {"default:stone", "default:stone"}, + {"default:stone", "default:stone"}, } }) minetest.register_craft({ - output = 'default:stonebrick 4', + 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"}, } }) minetest.register_craft({ - output = 'default:stone_block 9', + output = "default:desert_stonebrick 4", recipe = { - {'default:stone', 'default:stone', 'default:stone'}, - {'default:stone', 'default:stone', 'default:stone'}, - {'default:stone', 'default:stone', 'default:stone'}, + {"default:desert_stone", "default:desert_stone"}, + {"default:desert_stone", "default:desert_stone"}, } }) minetest.register_craft({ - output = 'default:desert_stonebrick 4', + 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"}, } }) minetest.register_craft({ - output = 'default:desert_stone_block 9', + output = "default:snowblock", 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:snow", "default:snow", "default:snow"}, + {"default:snow", "default:snow", "default:snow"}, + {"default:snow", "default:snow", "default:snow"}, } }) minetest.register_craft({ - output = 'default:snowblock', + output = "default:snow 9", recipe = { - {'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', - recipe = { - {'default:snowblock'}, + {"default:snowblock"}, } }) @@ -833,50 +448,6 @@ minetest.register_craft({ recipe = "default:desert_cobble", }) -minetest.register_craft({ - type = "cooking", - output = "default:steel_ingot", - recipe = "default:iron_lump", -}) - -minetest.register_craft({ - type = "cooking", - output = "default:copper_ingot", - recipe = "default:copper_lump", -}) - -minetest.register_craft({ - type = "cooking", - output = "default:tin_ingot", - recipe = "default:tin_lump", -}) - -minetest.register_craft({ - type = "cooking", - output = "default:gold_ingot", - recipe = "default:gold_lump", -}) - -minetest.register_craft({ - type = "cooking", - output = "default:clay_brick", - recipe = "default:clay_lump", -}) - -minetest.register_craft({ - type = 'cooking', - output = 'default:gold_ingot', - recipe = 'default:skeleton_key', - cooktime = 5, -}) - -minetest.register_craft({ - type = 'cooking', - output = 'default:gold_ingot', - recipe = 'default:key', - cooktime = 5, -}) - -- -- Fuels @@ -1005,7 +576,6 @@ minetest.register_craft({ burntime = 7, }) - minetest.register_craft({ type = "fuel", recipe = "default:fence_aspen_wood", @@ -1067,7 +637,6 @@ minetest.register_craft({ burntime = 7, }) - minetest.register_craft({ type = "fuel", recipe = "default:bush_stem", @@ -1134,36 +703,12 @@ minetest.register_craft({ burntime = 60, }) -minetest.register_craft({ - type = "fuel", - recipe = "default:torch", - burntime = 4, -}) - minetest.register_craft({ type = "fuel", recipe = "default:sign_wall_wood", burntime = 10, }) -minetest.register_craft({ - type = "fuel", - recipe = "default:chest", - burntime = 30, -}) - -minetest.register_craft({ - type = "fuel", - recipe = "default:chest_locked", - burntime = 30, -}) - -minetest.register_craft({ - type = "fuel", - recipe = "default:coal_lump", - burntime = 40, -}) - minetest.register_craft({ type = "fuel", recipe = "default:coalblock", @@ -1194,57 +739,8 @@ minetest.register_craft({ burntime = 2, }) -minetest.register_craft({ - type = "fuel", - recipe = "default:paper", - burntime = 1, -}) - -minetest.register_craft({ - type = "fuel", - recipe = "default:book", - burntime = 3, -}) - -minetest.register_craft({ - type = "fuel", - recipe = "default:book_written", - burntime = 3, -}) - minetest.register_craft({ type = "fuel", recipe = "default:dry_shrub", burntime = 2, }) - -minetest.register_craft({ - type = "fuel", - recipe = "group:stick", - burntime = 1, -}) - - -minetest.register_craft({ - type = "fuel", - recipe = "default:pick_wood", - burntime = 6, -}) - -minetest.register_craft({ - type = "fuel", - recipe = "default:shovel_wood", - burntime = 4, -}) - -minetest.register_craft({ - type = "fuel", - recipe = "default:axe_wood", - burntime = 6, -}) - -minetest.register_craft({ - type = "fuel", - recipe = "default:sword_wood", - burntime = 5, -}) diff --git a/default/craftitems.lua b/default/craftitems.lua index 6a1b570..923d754 100644 --- a/default/craftitems.lua +++ b/default/craftitems.lua @@ -1,17 +1,7 @@ -- mods/default/craftitems.lua -minetest.register_craftitem("default:stick", { - description = "Stick", - inventory_image = "default_stick.png", - groups = {stick = 1, flammable = 2}, -}) - -minetest.register_craftitem("default:paper", { - description = "Paper", - inventory_image = "default_paper.png", - groups = {flammable = 3}, -}) - +-- support for MT game translation. +local S = default.get_translator local lpp = 14 -- Lines per book's page local function book_on_use(itemstack, user) @@ -49,23 +39,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 +99,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 @@ -154,54 +145,9 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) player:set_wielded_item(stack) end) -minetest.register_craftitem("default:book", { - description = "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", - inventory_image = "default_book_written.png", - groups = {book = 1, not_in_creative_inventory = 1, flammable = 3}, - stack_max = 1, - on_use = book_on_use, -}) - -minetest.register_craft({ - type = "shapeless", - output = "default:book_written", - recipe = {"default:book", "default:book_written"} -}) - -minetest.register_on_craft(function(itemstack, player, old_craft_grid, craft_inv) - if itemstack:get_name() ~= "default:book_written" then - return - end - - local original - local index - for i = 1, player:get_inventory():get_size("craft") do - if old_craft_grid[i]:get_name() == "default:book_written" then - original = old_craft_grid[i] - index = i - end - end - if not original then - return - end - local copymeta = original:get_meta():to_table() - -- copy of the book held by player's mouse cursor - itemstack:get_meta():from_table(copymeta) - -- put the book with metadata back in the craft grid - craft_inv:set_stack("craft", index, original) -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) if pointed_thing.type ~= "node" then return itemstack @@ -238,8 +184,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 @@ -254,94 +200,339 @@ minetest.register_craftitem("default:skeleton_key", { end }) +-- +-- Craftitem registry +-- + +minetest.register_craftitem("default:blueberries", { + description = S("Blueberries"), + inventory_image = "default_blueberries.png", + groups = {food_blueberries = 1, food_berry = 1}, + on_use = minetest.item_eat(2), +}) + +minetest.register_craftitem("default: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 = S("Book with Text"), + inventory_image = "default_book_written.png", + groups = {book = 1, not_in_creative_inventory = 1, flammable = 3}, + stack_max = 1, + on_use = book_on_use, +}) + +minetest.register_craftitem("default:bronze_ingot", { + description = S("Bronze Ingot"), + inventory_image = "default_bronze_ingot.png" +}) + +minetest.register_craftitem("default:clay_brick", { + description = S("Clay Brick"), + inventory_image = "default_clay_brick.png", +}) + +minetest.register_craftitem("default:clay_lump", { + description = S("Clay Lump"), + inventory_image = "default_clay_lump.png", +}) + 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", +minetest.register_craftitem("default:copper_ingot", { + description = S("Copper Ingot"), + inventory_image = "default_copper_ingot.png" }) minetest.register_craftitem("default:copper_lump", { - description = "Copper Lump", - inventory_image = "default_copper_lump.png", -}) - -minetest.register_craftitem("default:tin_lump", { - description = "Tin Lump", - inventory_image = "default_tin_lump.png", -}) - -minetest.register_craftitem("default:mese_crystal", { - description = "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("Copper Lump"), + inventory_image = "default_copper_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", - inventory_image = "default_clay_lump.png", -}) - -minetest.register_craftitem("default:steel_ingot", { - description = "Steel Ingot", - inventory_image = "default_steel_ingot.png", -}) - -minetest.register_craftitem("default:copper_ingot", { - description = "Copper Ingot", - inventory_image = "default_copper_ingot.png", -}) - -minetest.register_craftitem("default:tin_ingot", { - description = "Tin Ingot", - inventory_image = "default_tin_ingot.png", -}) - -minetest.register_craftitem("default:bronze_ingot", { - description = "Bronze Ingot", - inventory_image = "default_bronze_ingot.png", -}) - -minetest.register_craftitem("default:gold_ingot", { - description = "Gold Ingot", - inventory_image = "default_gold_ingot.png" -}) - -minetest.register_craftitem("default:mese_crystal_fragment", { - description = "Mese Crystal Fragment", - inventory_image = "default_mese_crystal_fragment.png", -}) - -minetest.register_craftitem("default:clay_brick", { - description = "Clay Brick", - inventory_image = "default_clay_brick.png", -}) - -minetest.register_craftitem("default:obsidian_shard", { - description = "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", - inventory_image = "default_blueberries.png", - on_use = minetest.item_eat(2), +minetest.register_craftitem("default:gold_ingot", { + description = S("Gold Ingot"), + inventory_image = "default_gold_ingot.png" +}) + +minetest.register_craftitem("default:gold_lump", { + description = S("Gold Lump"), + inventory_image = "default_gold_lump.png" +}) + +minetest.register_craftitem("default:iron_lump", { + description = S("Iron Lump"), + inventory_image = "default_iron_lump.png" +}) + +minetest.register_craftitem("default:mese_crystal", { + description = S("Mese Crystal"), + inventory_image = "default_mese_crystal.png", +}) + +minetest.register_craftitem("default:mese_crystal_fragment", { + description = S("Mese Crystal Fragment"), + inventory_image = "default_mese_crystal_fragment.png", +}) + +minetest.register_craftitem("default:obsidian_shard", { + description = S("Obsidian Shard"), + inventory_image = "default_obsidian_shard.png", +}) + +minetest.register_craftitem("default:paper", { + description = S("Paper"), + inventory_image = "default_paper.png", + groups = {flammable = 3}, +}) + +minetest.register_craftitem("default:steel_ingot", { + description = S("Steel Ingot"), + inventory_image = "default_steel_ingot.png" +}) + +minetest.register_craftitem("default:stick", { + description = S("Stick"), + inventory_image = "default_stick.png", + groups = {stick = 1, flammable = 2}, +}) + +minetest.register_craftitem("default:tin_ingot", { + description = S("Tin Ingot"), + inventory_image = "default_tin_ingot.png" +}) + +minetest.register_craftitem("default:tin_lump", { + description = S("Tin Lump"), + inventory_image = "default_tin_lump.png" +}) + +-- +-- Crafting recipes +-- + +minetest.register_craft({ + output = "default:book", + recipe = { + {"default:paper"}, + {"default:paper"}, + {"default:paper"}, + } +}) + +default.register_craft_metadata_copy("default:book", "default:book_written") + +minetest.register_craft({ + output = "default:bronze_ingot 9", + recipe = { + {"default:copper_ingot", "default:copper_ingot", "default:copper_ingot"}, + {"default:copper_ingot", "default:tin_ingot", "default:copper_ingot"}, + {"default:copper_ingot", "default:copper_ingot", "default:copper_ingot"}, + } +}) + +minetest.register_craft({ + output = "default:clay_brick 4", + recipe = { + {"default:brick"}, + } +}) + +minetest.register_craft({ + output = "default:clay_lump 4", + recipe = { + {"default:clay"}, + } +}) + +minetest.register_craft({ + output = "default:coal_lump 9", + recipe = { + {"default:coalblock"}, + } +}) + +minetest.register_craft({ + output = "default:copper_ingot 9", + recipe = { + {"default:copperblock"}, + } +}) + +minetest.register_craft({ + output = "default:diamond 9", + recipe = { + {"default:diamondblock"}, + } +}) + +minetest.register_craft({ + output = "default:gold_ingot 9", + recipe = { + {"default:goldblock"}, + } +}) + +minetest.register_craft({ + output = "default:mese_crystal", + recipe = { + {"default:mese_crystal_fragment", "default:mese_crystal_fragment", "default:mese_crystal_fragment"}, + {"default:mese_crystal_fragment", "default:mese_crystal_fragment", "default:mese_crystal_fragment"}, + {"default:mese_crystal_fragment", "default:mese_crystal_fragment", "default:mese_crystal_fragment"}, + } +}) + +minetest.register_craft({ + output = "default:mese_crystal 9", + recipe = { + {"default:mese"}, + } +}) + +minetest.register_craft({ + output = "default:mese_crystal_fragment 9", + recipe = { + {"default:mese_crystal"}, + } +}) + +minetest.register_craft({ + output = "default:obsidian_shard 9", + recipe = { + {"default:obsidian"} + } +}) + +minetest.register_craft({ + output = "default:paper", + recipe = { + {"default:papyrus", "default:papyrus", "default:papyrus"}, + } +}) + +minetest.register_craft({ + output = "default:skeleton_key", + recipe = { + {"default:gold_ingot"}, + } +}) + +minetest.register_craft({ + output = "default:steel_ingot 9", + recipe = { + {"default:steelblock"}, + } +}) + +minetest.register_craft({ + output = "default:stick 4", + recipe = { + {"group:wood"}, + } +}) + +minetest.register_craft({ + output = "default:tin_ingot 9", + recipe = { + {"default:tinblock"}, + } +}) + +-- +-- Cooking recipes +-- + +minetest.register_craft({ + type = "cooking", + output = "default:clay_brick", + recipe = "default:clay_lump", +}) + +minetest.register_craft({ + type = "cooking", + output = "default:copper_ingot", + recipe = "default:copper_lump", +}) + +minetest.register_craft({ + type = "cooking", + output = "default:gold_ingot", + recipe = "default:gold_lump", +}) + +minetest.register_craft({ + type = "cooking", + output = "default:gold_ingot", + recipe = "default:key", + cooktime = 5, +}) + +minetest.register_craft({ + type = "cooking", + output = "default:gold_ingot", + recipe = "default:skeleton_key", + cooktime = 5, +}) + +minetest.register_craft({ + type = "cooking", + output = "default:steel_ingot", + recipe = "default:iron_lump", +}) + +minetest.register_craft({ + type = "cooking", + output = "default:tin_ingot", + recipe = "default:tin_lump", +}) + +-- +-- Fuels +-- + +minetest.register_craft({ + type = "fuel", + recipe = "default:book", + burntime = 3, +}) + +minetest.register_craft({ + type = "fuel", + recipe = "default:book_written", + burntime = 3, +}) + +minetest.register_craft({ + type = "fuel", + recipe = "default:coal_lump", + burntime = 40, +}) + +minetest.register_craft({ + type = "fuel", + recipe = "default:paper", + burntime = 1, +}) + +minetest.register_craft({ + type = "fuel", + recipe = "group:stick", + burntime = 1, }) diff --git a/default/depends.txt b/default/depends.txt deleted file mode 100644 index e1c3818..0000000 --- a/default/depends.txt +++ /dev/null @@ -1 +0,0 @@ -player_api? diff --git a/default/functions.lua b/default/functions.lua index 1165c89..f67eadf 100644 --- a/default/functions.lua +++ b/default/functions.lua @@ -141,7 +141,7 @@ default.cool_lava = function(pos, node) minetest.set_node(pos, {name = "default:stone"}) end minetest.sound_play("default_cool_lava", - {pos = pos, max_hear_distance = 16, gain = 0.25}) + {pos = pos, max_hear_distance = 16, gain = 0.25}, true) end if minetest.settings:get_bool("enable_lavacooling") ~= false then @@ -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,26 +556,65 @@ 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 }) +-- +-- Register a craft to copy the metadata of items +-- + +function default.register_craft_metadata_copy(ingredient, result) + minetest.register_craft({ + type = "shapeless", + output = result, + recipe = {ingredient, result} + }) + + minetest.register_on_craft(function(itemstack, player, old_craft_grid, craft_inv) + if itemstack:get_name() ~= result then + return + end + + local original + local index + for i = 1, #old_craft_grid do + if old_craft_grid[i]:get_name() == result then + original = old_craft_grid[i] + index = i + end + end + if not original then + return + end + local copymeta = original:get_meta():to_table() + itemstack:get_meta():from_table(copymeta) + -- put the book with metadata back in the craft grid + craft_inv:set_stack("craft", index, original) + end) +end + -- -- NOTICE: This method is not an official part of the API yet. @@ -568,7 +622,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 @@ -585,7 +639,7 @@ function default.can_interact_with_node(player, pos) -- Is player wielding the right key? local item = player:get_wielded_item() - if item:get_name() == "default:key" then + if minetest.get_item_group(item:get_name(), "key") == 1 then local key_meta = item:get_meta() if key_meta:get_string("secret") == "" then diff --git a/default/furnace.lua b/default/furnace.lua index a06f3b2..3c4ac9c 100644 --- a/default/furnace.lua +++ b/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", @@ -329,3 +352,12 @@ minetest.register_node("default:furnace_active", { allow_metadata_inventory_move = allow_metadata_inventory_move, allow_metadata_inventory_take = allow_metadata_inventory_take, }) + +minetest.register_craft({ + output = "default:furnace", + recipe = { + {"group:stone", "group:stone", "group:stone"}, + {"group:stone", "", "group:stone"}, + {"group:stone", "group:stone", "group:stone"}, + } +}) diff --git a/default/init.lua b/default/init.lua index b89fd0e..d4388e5 100644 --- a/default/init.lua +++ b/default/init.lua @@ -3,17 +3,33 @@ -- 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([[ + -- Set formspec prepend + local formspec = [[ bgcolor[#080808BB;true] - background[5,5;1,1;gui_formbg.png;true] - listcolors[#00000069;#5A5A5A;#141318;#30434C;#FFF] ]]) + listcolors[#00000069;#5A5A5A;#141318;#30434C;#FFF] ]] + local name = player:get_player_name() + local info = minetest.get_player_information(name) + if info.formspec_version > 1 then + formspec = formspec .. "background9[5,5;1,1;gui_formbg.png;true;10]" + else + formspec = formspec .. "background[5,5;1,1;gui_formbg.png;true]" + end + player:set_formspec_prepend(formspec) + + -- Set hotbar textures + player:hud_set_hotbar_image("gui_hotbar.png") + player:hud_set_hotbar_selected_image("gui_hotbar_selected.png") end) function default.get_hotbar_bg(x,y) diff --git a/default/item_entity.lua b/default/item_entity.lua index 2a61f08..d9bf7b1 100644 --- a/default/item_entity.lua +++ b/default/item_entity.lua @@ -15,12 +15,12 @@ local item = { burn_up = function(self) -- disappear in a smoke puff - self.object:remove() local p = self.object:get_pos() + self.object:remove() minetest.sound_play("default_item_smoke", { pos = p, max_hear_distance = 8, - }) + }, true) minetest.add_particlespawner({ amount = 3, time = 0.1, @@ -39,16 +39,20 @@ local item = { }) end, - on_step = function(self, dtime) - builtin_item.on_step(self, dtime) + on_step = function(self, dtime, ...) + builtin_item.on_step(self, dtime, ...) if self.flammable then - -- flammable, check for igniters + -- flammable, check for igniters every 10 s self.ignite_timer = (self.ignite_timer or 0) + dtime if self.ignite_timer > 10 then self.ignite_timer = 0 - local node = minetest.get_node_or_nil(self.object:get_pos()) + local pos = self.object:get_pos() + if pos == nil then + return -- object already deleted + end + local node = minetest.get_node_or_nil(pos) if not node then return end diff --git a/default/legacy.lua b/default/legacy.lua index 935d857..a2d812d 100644 --- a/default/legacy.lua +++ b/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/default/locale/default.de.tr b/default/locale/default.de.tr new file mode 100644 index 0000000..c842b85 --- /dev/null +++ b/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/default/locale/default.es.tr b/default/locale/default.es.tr new file mode 100644 index 0000000..e55c133 --- /dev/null +++ b/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/default/locale/default.fr.tr b/default/locale/default.fr.tr new file mode 100644 index 0000000..2214e37 --- /dev/null +++ b/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/default/locale/default.it.tr b/default/locale/default.it.tr new file mode 100644 index 0000000..ea3ee20 --- /dev/null +++ b/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/default/locale/default.ms.tr b/default/locale/default.ms.tr new file mode 100644 index 0000000..b82c201 --- /dev/null +++ b/default/locale/default.ms.tr @@ -0,0 +1,211 @@ +# textdomain: default +Locked Chest=Peti Berkunci +Locked Chest (owned by @1)=Peti Berkunci (milik @1) +You do not own this chest.=Ini bukan peti milik anda. +a locked chest=peti berkunci +Chest=Peti +Stick=Serpihan Kayu +Paper=Kertas +"@1" by @2="@1" oleh @2 +Book=Buku +Book with Text=Buku Bertulisan +Skeleton Key=Kunci Induk +Key to @1's @2=Kunci @2 milik @1 +Coal Lump=Longgokan Batu Arang +Iron Lump=Longgokan Besi +Copper Lump=Longgokan Tembaga +Tin Lump=Longgokan Timah +Mese Crystal=Kristal Mese +Gold Lump=Longgokan Emas +Diamond=Berlian +Clay Lump=Longgokan Tanah Liat +Steel Ingot=Jongkong Keluli +Copper Ingot=Jongkong Tembaga +Tin Ingot=Jongkong Timah +Bronze Ingot=Jongkong Gangsa +Gold Ingot=Jongkong Emas +Mese Crystal Fragment=Serpihan Mese +Clay Brick=Bata Tanah Liat +Obsidian Shard=Serpihan Obsidia +Flint=Batu Api +Blueberries=Beri Biru +Furnace is empty=Relau masih kosong +100% (output full)=100% (keluaran penuh) +@1%=@1% +Empty=Kosong +Not cookable=Tidak boleh dimasak +Furnace active=Relau aktif +Furnace inactive=Relau tidak aktif +(Item: @1; Fuel: @2)=(Item: @1; Bahan api: @2) +Furnace=Relau +Stone=Batu +Cobblestone=Batu Buntar +Stone Brick=Bata Batu +Stone Block=Bongkah Batu +Mossy Cobblestone=Batu Buntar Berlumut +Desert Stone=Batu Gurun +Desert Cobblestone=Batu Buntar Gurun +Desert Stone Brick=Bata Batu Gurun +Desert Stone Block=Bongkah Batu Gurun +Sandstone=Batu Pasir +Sandstone Brick=Bata Batu Pasir +Sandstone Block=Bongkah Batu Pasir +Desert Sandstone=Batu Pasir Gurun +Desert Sandstone Brick=Bata Batu Pasir Gurun +Desert Sandstone Block=Bongkah Batu Pasir Gurun +Silver Sandstone=Batu Pasir Perak +Silver Sandstone Brick=Bata Batu Pasir Perak +Silver Sandstone Block=Bongkah Batu Pasir Perak +Obsidian=Obsidia +Obsidian Brick=Bata Obsidia +Obsidian Block=Bongkah Obsidia +Dirt=Tanah +Dirt with Grass=Tanah Berumput +Dirt with Grass and Footsteps=Tanah Berumput dan Tapak Kaki +Dirt with Dry Grass=Tanah Berumput Kering +Dirt with Snow=Tanah Bersalji +Dirt with Rainforest Litter=Tanah Bersarap Hutan Hujan +Dirt with Coniferous Litter=Tanah Bersarap Hutan Konifer +Dry Dirt=Tanah Kering +Dry Dirt with Dry Grass=Tanah Kering Berumput Kering +Permafrost=Ibun Abadi +Permafrost with Stones=Ibun Abadi Berbatu +Permafrost with Moss=Ibun Abadi Berlumut +Sand=Pasir +Desert Sand=Pasir Gurun +Silver Sand=Pasir Perak +Gravel=Kelikir +Clay=Tanah Liat +Snow=Salji +Snow Block=Bongkah Salji +Ice=Ais +Cave Ice=Ais Gua +Apple Tree=Kayu Pokok Epal +Apple Wood Planks=Papan Kayu Epal +Apple Tree Sapling=Anak Pokok Epal +Apple Tree Leaves=Daun Pokok Epal +Apple=Epal +Apple Marker=Penanda Epal +Jungle Tree=Kayu Pokok Hutan +Jungle Wood Planks=Papan Kayu Hutan +Jungle Tree Leaves=Daun Pokok Hutan +Jungle Tree Sapling=Anak Pokok Hutan +Emergent Jungle Tree Sapling=Anak Pokok Hutan Kembang +Pine Tree=Kayu Pokok Pain +Pine Wood Planks=Papan Kayu Pain +Pine Needles=Daun Pokok Pain +Pine Tree Sapling=Anak Pokok Pain +Acacia Tree=Kayu Pokok Akasia +Acacia Wood Planks=Papan Kayu Akasia +Acacia Tree Leaves=Daun Pokok Akasia +Acacia Tree Sapling=Anak Pokok Akasia +Aspen Tree=Kayu Pokok Aspen +Aspen Wood Planks=Papan Kayu Aspen +Aspen Tree Leaves=Daun Pokok Aspen +Aspen Tree Sapling=Anak Pokok Aspen +Coal Ore=Bijih Batu Arang +Coal Block=Bongkah Batu Arang +Iron Ore=Bijih Besi +Steel Block=Bongkah Keluli +Copper Ore=Bijih Tembaga +Copper Block=Bongkah Tembaga +Tin Ore=Bijih Timah +Tin Block=Bongkah Timah +Bronze Block=Bongkah Gangsa +Mese Ore=Bijih Mese +Mese Block=Bongkah Mese +Gold Ore=Bijih Emas +Gold Block=Bongkah Emas +Diamond Ore=Bijih Intan +Diamond Block=Bongkah Intan +Cactus=Kaktus +Large Cactus Seedling=Benih Kaktus Besar +Papyrus=Papirus +Dry Shrub=Pokok Renek Kering +Jungle Grass=Rumput Hutan +Grass=Rumput +Dry Grass=Rumput Kering +Fern=Paku Pakis +Marram Grass=Rumput Maram +Bush Stem=Batang Belukar +Bush Leaves=Daun Belukar +Bush Sapling=Anak Belukar +Blueberry Bush Leaves with Berries=Daun Belukar Beri Biru Berberi +Blueberry Bush Leaves=Daun Belukar Beri Biru +Blueberry Bush Sapling=Anak Belukar Beri Biru +Acacia Bush Stem=Batang Belukar Akasia +Acacia Bush Leaves=Daun Belukar Akasia +Acacia Bush Sapling=Anak Belukar Akasia +Pine Bush Stem=Batang Belukar Pain +Pine Bush Needles=Daun Belukar Pain +Pine Bush Sapling=Anak Belukar Pain +Kelp=Kelpa +Green Coral=Batu Karang Hijau +Pink Coral=Batu Karang Merah Jambu +Cyan Coral=Batu Karang Biru Kehijauan +Brown Coral=Batu Karang Perang +Orange Coral=Batu Karang Jingga +Coral Skeleton= Rangka Karang +Water Source=Sumber Air +Flowing Water=Air Mengalir +River Water Source=Sumber Air Sungai +Flowing River Water=Air Sungai Mengalir +Lava Source=Sumber Lava +Flowing Lava=Lava Mengalir +Empty Bookshelf=Rak Buku Kosong +Bookshelf (@1 written, @2 empty books)=Rak Buku (@1 buku bertulis, @2 buku kosong) +Bookshelf=Rak Buku +Text too long=Tulisan terlalu panjang +Wooden Sign=Papan Tanda Kayu +Steel Sign=Papan Tanda Keluli +Wooden Ladder=Tangga Panjat Kayu +Steel Ladder=Tangga Panjat Keluli +Apple Wood Fence=Pagar Kayu Epal +Acacia Wood Fence=Pagar Kayu Akasia +Jungle Wood Fence=Pagar Kayu Hutan +Pine Wood Fence=Pagar Kayu Pain +Aspen Wood Fence=Pagar Kayu Aspen +Apple Wood Fence Rail=Pagar Rel Kayu Epal +Acacia Wood Fence Rail=Pagar Rel Kayu Akasia +Jungle Wood Fence Rail=Pagar Rel Kayu Hutan +Pine Wood Fence Rail=Pagar Rel Kayu Pain +Aspen Wood Fence Rail=Pagar Rel Kayu Aspen +Glass=Kaca +Obsidian Glass=Kaca Obsidia +Brick Block=Bongkah Bata +Mese Lamp=Lampu Mese +Mese Post Light=Lampu Tiang Mese +Cloud=Awan +Wooden Pickaxe=Beliung Kayu +Stone Pickaxe=Beliung Batu +Bronze Pickaxe=Beliung Gangsa +Steel Pickaxe=Beliung Keluli +Mese Pickaxe=Beliung Mese +Diamond Pickaxe=Beliung Intan +Wooden Shovel=Penyodok Kayu +Stone Shovel=Penyodok Batu +Bronze Shovel=Penyodok Gangsa +Steel Shovel=Penyodok Keluli +Mese Shovel=Penyodok Mese +Diamond Shovel=Penyodok Intan +Wooden Axe=Kapak Kayu +Stone Axe=Kapak Batu +Bronze Axe=Kapak Gangsa +Steel Axe=Kapak Keluli +Mese Axe=Kapak Mese +Diamond Axe=Kapak Intan +Wooden Sword=Pedang Kayu +Stone Sword=Pedang Batu +Bronze Sword=Pedang Gangsa +Steel Sword=Pedang Keluli +Mese Sword=Pedang Mese +Diamond Sword=Pedang Intan +Key=Kunci +Torch=Obor +@1 will intersect protection on growth.=@1 akan masuk kawasan perlindungan lain apabila ia tumbuh. +Title:=Tajuk: +Contents:=Kandungan: +Save=Simpan +by @1=oleh @1 +Page @1 of @2=Ms. @1 / @2 +"@1"="@1" diff --git a/default/locale/default.ru.tr b/default/locale/default.ru.tr new file mode 100644 index 0000000..214f669 --- /dev/null +++ b/default/locale/default.ru.tr @@ -0,0 +1,211 @@ +# textdomain: default +Locked Chest=Заблокированный Сундук +Locked Chest (owned by @1)=Заблокированный Сундук (владелец: @1) +You do not own this chest.=Вы не владелец этого сундука. +a locked chest=заблокированный сундук +Chest=Сундук +Stick=Палка +Paper=Бумага +"@1" by @2="@1" @2 +Book=Книга +Book with Text=Книга с Текстом +Skeleton Key=Ключ Скелета +Key to @1's @2=Ключ к @2 от @1 +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)=100% (полное приготовление) +@1%=@1% +Empty=Пустое +Not cookable=Не может быть приготовлено +Furnace active=Печь зажжена +Furnace inactive=Печь не зажжена +(Item: @1; Fuel: @2)=(Предмет: @1; Топливо: @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)=Книжная Полка (@1 написано, @2 чистые книги) +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.=@1 пересечёт защиту по росту. +Title:=Заголовок: +Contents:=Содержимое: +Save=Сохранить +by @1=@1 +Page @1 of @2=Страница @1 из @2 +"@1"="@1" diff --git a/default/locale/default.se.tr b/default/locale/default.se.tr new file mode 100644 index 0000000..d123530 --- /dev/null +++ b/default/locale/default.se.tr @@ -0,0 +1,211 @@ +## textdomain: default +Locked Chest=Låst kista +Locked Chest (owned by @1)=Låst kista (Ägd av @1) +You do not own this chest.=Du äger inte denna kistan. +a locked chest=en låst kista +Chest=Kista +Stick=Pinne +Paper=Papper +"@1" by @2="@1" av @2 +Book=Bok +Book with Text=Bok med text +Skeleton Key=Skelett Nyckel +Key to @1's @2=Nyckel till @1s @2 +Coal Lump=Kol Klumo +Iron Lump=Järn Klump +Copper Lump=Koppar Klump +Tin Lump=Tenn Klump +Mese Crystal=Mese Kristall +Gold Lump=Guld Klump +Diamond=Diamant +Clay Lump=Lerklump +Steel Ingot=Stål tacka +Copper Ingot=Koppar tacka +Tin Ingot=Tenn tacka +Bronze Ingot=Brons tacka +Gold Ingot=Guld tacka +Mese Crystal Fragment=Mese Kristall Fragment +Clay Brick=Tegelsten +Obsidian Shard=Obsidian Skärva +Flint=Flinta +Blueberries=Blåbär +Furnace is empty=Ugnen är tom +100% (output full)=100% (utgången full) +@1%=@1% +Empty=Tom +Not cookable=Inte kokbar +Furnace active=Ugn aktiv +Furnace inactive=Ugn inaktiv +(Item: @1; Fuel: @2)=(Sak: @1; Bränsle: @2) +Furnace=Ugn +Stone=Sten +Cobblestone=Kullersten +Stone Brick=Stentegel +Stone Block=Sten block +Mossy Cobblestone=Mossig kullersten +Desert Stone=Öken sten +Desert Cobblestone=Öken kullersten +Desert Stone Brick=Öken stentegel +Desert Stone Block=Öken sten block +Sandstone=Sandsten +Sandstone Brick=Sandstenstegel +Sandstone Block=Sandsten block +Desert Sandstone=Öken sandsten +Desert Sandstone Brick=Öken Sandstenstegel +Desert Sandstone Block=Öken sandsten block +Silver Sandstone=Silver sandsten +Silver Sandstone Brick=Silver Sandstenstegel +Silver Sandstone Block=Silver sandsten block +Obsidian=Obsidian +Obsidian Brick=Obsidiantegel +Obsidian Block=Obsidian block +Dirt=Jord +Dirt with Grass=Jord med gräs +Dirt with Grass and Footsteps=Jord med gräs och fotsteg +Dirt with Dry Grass=Jord med torrt gräs +Dirt with Snow=Jord med snö +Dirt with Rainforest Litter=Jord med regnskogströ +Dirt with Coniferous Litter=Jord med Barrträd +Dry Dirt=Torr jord +Dry Dirt with Dry Grass=Torr jord med torrt gräs +Permafrost=Permafrost +Permafrost with Stones=Permafrost med sten +Permafrost with Moss=Permafrost med mossa +Sand=Sand +Desert Sand=Öken sand +Silver Sand=Silver sand +Gravel=Grus +Clay=Lera +Snow=Snö +Snow Block=Snö block +Ice=Is +Cave Ice=Grott Is +Apple Tree=Äpple Träd +Apple Wood Planks=Äpple Plankor +Apple Tree Sapling=Äpple Planta +Apple Tree Leaves=Äpple Löv +Apple=Äpple +Apple Marker=Äpple Markör +Jungle Tree=Djungel Träd +Jungle Wood Planks=Djungel Plankor +Jungle Tree Leaves=Djungel Löv +Jungle Tree Sapling=Djungel Planta +Emergent Jungle Tree Sapling=Nybliven Djungel Planta +Pine Tree=Tall +Pine Wood Planks= Tall Plankor +Pine Needles=Granbarr +Pine Tree Sapling=Tall Planta +Acacia Tree=Akacia Träd +Acacia Wood Planks=Akacia Plankor +Acacia Tree Leaves=Akacia Löv +Acacia Tree Sapling=Akacia Planta +Aspen Tree=Asp +Aspen Wood Planks=Asp Plankor +Aspen Tree Leaves=Asp Löv +Aspen Tree Sapling=Asp Planta +Coal Ore=Kol Malm +Coal Block=Kol Block +Iron Ore=Järn Malm +Steel Block=Stål Block +Copper Ore=Koppar Malm +Copper Block=Koppar Block +Tin Ore=Tenn Malm +Tin Block=Tenn Block +Bronze Block=Brons Block +Mese Ore=Mese Malm +Mese Block=Mese Block +Gold Ore=Guld Malm +Gold Block=Guld Block +Diamond Ore=Diamant Malm +Diamond Block=Diamant Block +Cactus=Kaktus +Large Cactus Seedling=Stor kaktusplanta +Papyrus=Papyrus +Dry Shrub=Torr Buske +Jungle Grass=Djungel Gräs +Grass=Gräs +Dry Grass=Torrt Gräs +Fern=Ormbunke +Marram Grass=Marram Gräs +Bush Stem=Busk Stam +Bush Leaves=Busk Löv +Bush Sapling=Busk Planta +Blueberry Bush Leaves with Berries=Blåbärsbusks Löv med Bär +Blueberry Bush Leaves=Blåbärsbusks Löv +Blueberry Bush Sapling=Blåbärsbusks Plantga +Acacia Bush Stem=Akacia Busks Stam +Acacia Bush Leaves=Akacia Busks Löv +Acacia Bush Sapling=Akacia Busks Planta +Pine Bush Stem=Tall Busks Stam +Pine Bush Needles=Tall Busks Granbarr +Pine Bush Sapling=Tall Busks Planta +Kelp=Brunalg +Green Coral=Grön Korall +Pink Coral=Rosa Korall +Cyan Coral=Cyan Korall +Brown Coral=Brun Korall +Orange Coral=Orange Korall +Coral Skeleton=Korall Skelett +Water Source=Vattenkälla +Flowing Water=Flödande Vatten +River Water Source=Flodvattenkälla +Flowing River Water=Flödande Flodvatten +Lava Source=Lavakälla +Flowing Lava=Flödande Lava +Empty Bookshelf=Tom Bokhylla +Bookshelf (@1 written, @2 empty books)=Bokhylla (@1 skriva, @2 tomma böcker) +Bookshelf=Bokhylla +Text too long=Text för lång +Wooden Sign=Trä Skylt +Steel Sign=Stål Skylt +Wooden Ladder=Trä Stege +Steel Ladder=Stål Stege +Apple Wood Fence=Äpple Trä Staket +Acacia Wood Fence=Akacia Trä Staket +Jungle Wood Fence=Djungel Trä Staket +Pine Wood Fence=Tall Trä Staket +Aspen Wood Fence=Asp Trä Staket +Apple Wood Fence Rail=Äpple Trä Staket Pinne +Acacia Wood Fence Rail=Akacia Trä Staket Pinne +Jungle Wood Fence Rail=Djungel Trä Staket Pinne +Pine Wood Fence Rail=Tall Trä Staket Pinne +Aspen Wood Fence Rail=Asp Trä Staket Pinne +Glass=Glas +Obsidian Glass=Obsidian Glas +Brick Block=Tegelstens Block +Mese Lamp=Mese Lampa +Mese Post Light=Mese Postljus +Cloud=Moln +Wooden Pickaxe=Trä Hacka +Stone Pickaxe=Sten Hacka +Bronze Pickaxe=Brons Hacka +Steel Pickaxe=Stål Hacka +Mese Pickaxe=Mese Hacka +Diamond Pickaxe=Diamant Hacka +Wooden Shovel=Trä Spade +Stone Shovel=Sten Spade +Bronze Shovel=Brons Spade +Steel Shovel=Stål Spade +Mese Shovel=Mese Spade +Diamond Shovel=Diamant Spade +Wooden Axe=Trä Yxa +Stone Axe=Sten Yxa +Bronze Axe=Brons Yxa +Steel Axe=Stål Yxa +Mese Axe=Mese Yxa +Diamond Axe=Diamant Yxa +Wooden Sword=Trä Svärd +Stone Sword=Sten Svärd +Bronze Sword=Brons Svärd +Steel Sword=Stål Svärd +Mese Sword=Mese Svärd +Diamond Sword=Diamant Svärd +Key=Nyckel +Torch=Fakla +@1 will intersect protection on growth.=@1 kommer korsa skyddet mot tillväxt. +Title:=Titel: +Contents:=Innehåll: +Save=Spara +by @1=av @1 +Page @1 of @2=Sida @1 av @2 +"@1"="@1" \ No newline at end of file diff --git a/default/locale/default.zh_CN.tr b/default/locale/default.zh_CN.tr new file mode 100644 index 0000000..ddd9471 --- /dev/null +++ b/default/locale/default.zh_CN.tr @@ -0,0 +1,211 @@ +# textdomain: default +Locked Chest=已上锁的箱子 +Locked Chest (owned by @1)=已上锁的箱子(属于@1所有) +You do not own this chest.=这个箱子不属于你所有。 +a locked chest=一个已上锁的箱子 +Chest=箱子 +Stick=棒 +Paper=纸 +"@1" by @2="@1" by @2 +Book=书 +Book with Text=带文字的书 +Skeleton Key=万能钥匙 +Key to @1's @2=@1的@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)=100%(输出已满) +@1%=@1% +Empty=空 +Not cookable=不可烹饪 +Furnace active=熔炉正在运转 +Furnace inactive=熔炉未使用 +(Item: @1; Fuel: @2)=(项目:@1;燃料:@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)=书架(@1本有字的书,@2本空书) +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.=@1将与增长的保护相交。 +Title:=标题: +Contents:=内容: +Save=保存 +by @1=由@1 +Page @1 of @2=第@1页,共@2页。 +"@1"="@1" diff --git a/default/locale/default.zh_TW.tr b/default/locale/default.zh_TW.tr new file mode 100644 index 0000000..6b06b8a --- /dev/null +++ b/default/locale/default.zh_TW.tr @@ -0,0 +1,211 @@ +# textdomain: default +Locked Chest=已上鎖的箱子 +Locked Chest (owned by @1)=已上鎖的箱子(屬於@1所有) +You do not own this chest.=這個箱子不屬於你所有。 +a locked chest=一個已上鎖的箱子 +Chest=箱子 +Stick=棒 +Paper=紙 +"@1" by @2="@1" by @2 +Book=書 +Book with Text=帶文字的書 +Skeleton Key=萬能鑰匙 +Key to @1's @2=@1的@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)=100%(輸出已滿) +@1%=@1% +Empty=空 +Not cookable=不可烹飪 +Furnace active=熔爐正在運轉 +Furnace inactive=熔爐未使用 +(Item: @1; Fuel: @2)=(項目:@1;燃料:@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)=書架(@1本有字的書,@2本空書) +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.=@1將與增長的保護相交。 +Title:=標題: +Contents:=內容: +Save=保存 +by @1=由@1 +Page @1 of @2=第@1頁,共@2頁。 +"@1"="@1" diff --git a/default/locale/template.txt b/default/locale/template.txt new file mode 100644 index 0000000..c8e616c --- /dev/null +++ b/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/default/mapgen.lua b/default/mapgen.lua index 9c63d1e..8c161d1 100644 --- a/default/mapgen.lua +++ b/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"} }) -- 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 @@ -907,7 +890,7 @@ end -- All mapgens except mgv6 -function default.register_biomes(upper_limit) +function default.register_biomes() -- Icesheet @@ -924,7 +907,9 @@ function default.register_biomes(upper_limit) node_river_water = "default:ice", node_riverbed = "default:gravel", depth_riverbed = 2, - y_max = upper_limit, + node_dungeon = "default:ice", + node_dungeon_stair = "stairs:stair_ice", + y_max = 31000, y_min = -8, heat_point = 0, humidity_point = 73, @@ -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,7 +953,10 @@ function default.register_biomes(upper_limit) node_dust = "default:snow", node_riverbed = "default:gravel", depth_riverbed = 2, - y_max = upper_limit, + node_dungeon = "default:cobble", + node_dungeon_alt = "default:mossycobble", + node_dungeon_stair = "stairs:stair_cobble", + y_max = 31000, y_min = 47, heat_point = 0, humidity_point = 40, @@ -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,7 +1040,10 @@ function default.register_biomes(upper_limit) depth_filler = 3, node_riverbed = "default:sand", depth_riverbed = 2, - y_max = upper_limit, + node_dungeon = "default:cobble", + node_dungeon_alt = "default:mossycobble", + node_dungeon_stair = "stairs:stair_cobble", + y_max = 31000, y_min = 4, heat_point = 25, humidity_point = 70, @@ -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,7 +1092,10 @@ function default.register_biomes(upper_limit) depth_filler = 1, node_riverbed = "default:sand", depth_riverbed = 2, - y_max = upper_limit, + node_dungeon = "default:cobble", + node_dungeon_alt = "default:mossycobble", + node_dungeon_stair = "stairs:stair_cobble", + y_max = 31000, y_min = 4, heat_point = 20, humidity_point = 35, @@ -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,7 +1143,10 @@ function default.register_biomes(upper_limit) depth_filler = 1, node_riverbed = "default:sand", depth_riverbed = 2, - y_max = upper_limit, + node_dungeon = "default:cobble", + node_dungeon_alt = "default:mossycobble", + node_dungeon_stair = "stairs:stair_cobble", + y_max = 31000, y_min = 6, heat_point = 50, humidity_point = 35, @@ -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,7 +1210,10 @@ function default.register_biomes(upper_limit) depth_filler = 3, node_riverbed = "default:sand", depth_riverbed = 2, - y_max = upper_limit, + node_dungeon = "default:cobble", + node_dungeon_alt = "default:mossycobble", + node_dungeon_stair = "stairs:stair_cobble", + y_max = 31000, y_min = 6, heat_point = 45, humidity_point = 70, @@ -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,7 +1277,10 @@ function default.register_biomes(upper_limit) depth_filler = 3, node_riverbed = "default:sand", depth_riverbed = 2, - y_max = upper_limit, + node_dungeon = "default:cobble", + node_dungeon_alt = "default:mossycobble", + node_dungeon_stair = "stairs:stair_cobble", + y_max = 31000, y_min = 1, heat_point = 60, humidity_point = 68, @@ -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,7 +1345,9 @@ function default.register_biomes(upper_limit) node_stone = "default:desert_stone", node_riverbed = "default:sand", depth_riverbed = 2, - y_max = upper_limit, + node_dungeon = "default:desert_stone", + node_dungeon_stair = "stairs:stair_desert_stone", + y_max = 31000, y_min = 4, heat_point = 92, humidity_point = 16, @@ -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,7 +1395,9 @@ function default.register_biomes(upper_limit) node_stone = "default:sandstone", node_riverbed = "default:sand", depth_riverbed = 2, - y_max = upper_limit, + node_dungeon = "default:sandstonebrick", + node_dungeon_stair = "stairs:stair_sandstone_block", + y_max = 31000, y_min = 4, heat_point = 60, humidity_point = 0, @@ -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,7 +1443,10 @@ function default.register_biomes(upper_limit) depth_filler = 1, node_riverbed = "default:sand", depth_riverbed = 2, - y_max = upper_limit, + node_dungeon = "default:cobble", + node_dungeon_alt = "default:mossycobble", + node_dungeon_stair = "stairs:stair_cobble", + y_max = 31000, y_min = 4, heat_point = 40, humidity_point = 0, @@ -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,13 +1487,16 @@ 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, - y_max = upper_limit, + node_dungeon = "default:cobble", + node_dungeon_alt = "default:mossycobble", + node_dungeon_stair = "stairs:stair_cobble", + y_max = 31000, y_min = 1, heat_point = 89, humidity_point = 42, @@ -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,7 +1560,10 @@ function default.register_biomes(upper_limit) depth_filler = 3, node_riverbed = "default:sand", depth_riverbed = 2, - y_max = upper_limit, + node_dungeon = "default:cobble", + node_dungeon_alt = "default:mossycobble", + node_dungeon_stair = "stairs:stair_cobble", + y_max = 31000, y_min = 1, heat_point = 86, humidity_point = 65, @@ -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,65 +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, - }) -end - - --- Biomes for floatlands - --- TODO Temporary simple biomes to be replaced by special floatland biomes later. - -function default.register_floatland_biomes(floatland_level, shadow_limit) - - minetest.register_biome({ - name = "floatland_grassland", - node_top = "default:dirt_with_grass", - depth_top = 1, - node_filler = "default:dirt", - depth_filler = 1, - y_max = 31000, - y_min = floatland_level + 2, - heat_point = 50, - humidity_point = 25, - }) - - minetest.register_biome({ - name = "floatland_coniferous_forest", - node_top = "default:dirt_with_coniferous_litter", - depth_top = 1, - node_filler = "default:dirt", - depth_filler = 3, - y_max = 31000, - y_min = floatland_level + 2, - heat_point = 50, - humidity_point = 75, - }) - - minetest.register_biome({ - name = "floatland_ocean", - node_top = "default:sand", - depth_top = 1, - node_filler = "default:sand", - depth_filler = 3, - y_max = floatland_level + 1, - y_min = shadow_limit, - heat_point = 50, - humidity_point = 50, + heat_point = 86, + humidity_point = 65, }) end @@ -1561,7 +1734,7 @@ local function register_grass_decoration(offset, scale, length) octaves = 3, persist = 0.6 }, - biomes = {"grassland", "deciduous_forest", "floatland_grassland"}, + biomes = {"grassland", "deciduous_forest"}, y_max = 31000, y_min = 1, decoration = "default:grass_" .. length, @@ -1572,7 +1745,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, @@ -1603,7 +1776,7 @@ local function register_fern_decoration(seed, length) octaves = 3, persist = 0.7 }, - biomes = {"coniferous_forest", "floatland_coniferous_forest"}, + biomes = {"coniferous_forest"}, y_max = 31000, y_min = 6, decoration = "default:fern_" .. length, @@ -1612,6 +1785,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 @@ -1694,11 +1891,35 @@ function default.register_decorations() minetest.register_decoration({ name = "default:jungle_tree", deco_type = "schematic", - place_on = {"default:dirt_with_rainforest_litter", "default:dirt"}, + place_on = {"default:dirt_with_rainforest_litter"}, sidelen = 80, fill_ratio = 0.1, - biomes = {"rainforest", "rainforest_swamp"}, + biomes = {"rainforest"}, y_max = 31000, + y_min = 1, + schematic = minetest.get_modpath("default") .. "/schematics/jungle_tree.mts", + flags = "place_center_x, place_center_z", + rotation = "random", + }) + + -- Swamp jungle trees + + minetest.register_decoration({ + name = "default:jungle_tree(swamp)", + deco_type = "schematic", + place_on = {"default:dirt"}, + sidelen = 16, + -- Noise tuned to place swamp trees where papyrus is absent + noise_params = { + offset = 0.0, + scale = -0.1, + spread = {x = 200, y = 200, z = 200}, + seed = 354, + octaves = 1, + persist = 0.5 + }, + biomes = {"rainforest_swamp"}, + y_max = 0, y_min = -1, schematic = minetest.get_modpath("default") .. "/schematics/jungle_tree.mts", flags = "place_center_x, place_center_z", @@ -1712,7 +1933,7 @@ function default.register_decorations() place_offset_y = 1, sidelen = 80, fill_ratio = 0.005, - biomes = {"rainforest", "rainforest_swamp"}, + biomes = {"rainforest"}, y_max = 31000, y_min = 1, schematic = minetest.get_modpath("default") .. "/schematics/jungle_log.mts", @@ -1737,7 +1958,7 @@ function default.register_decorations() octaves = 3, persist = 0.66 }, - biomes = {"taiga", "coniferous_forest", "floatland_coniferous_forest"}, + biomes = {"taiga", "coniferous_forest"}, y_max = 31000, y_min = 4, schematic = minetest.get_modpath("default") .. "/schematics/pine_tree.mts", @@ -1757,7 +1978,7 @@ function default.register_decorations() octaves = 3, persist = 0.66 }, - biomes = {"taiga", "coniferous_forest", "floatland_coniferous_forest"}, + biomes = {"taiga", "coniferous_forest"}, y_max = 31000, y_min = 4, schematic = minetest.get_modpath("default") .. "/schematics/small_pine_tree.mts", @@ -1771,7 +1992,7 @@ function default.register_decorations() place_offset_y = 1, sidelen = 80, fill_ratio = 0.0018, - biomes = {"taiga", "coniferous_forest", "floatland_coniferous_forest"}, + biomes = {"taiga", "coniferous_forest"}, y_max = 31000, y_min = 4, schematic = minetest.get_modpath("default") .. "/schematics/pine_log.mts", @@ -1786,7 +2007,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 +2028,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 +2045,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, }) @@ -1922,8 +2143,10 @@ function default.register_decorations() -- Papyrus + -- Dirt version for rainforest swamp + minetest.register_decoration({ - name = "default:papyrus", + name = "default:papyrus_on_dirt", deco_type = "schematic", place_on = {"default:dirt"}, sidelen = 16, @@ -1935,10 +2158,32 @@ function default.register_decorations() octaves = 3, persist = 0.7 }, + biomes = {"rainforest_swamp"}, + y_max = 0, + y_min = 0, + schematic = minetest.get_modpath("default") .. "/schematics/papyrus_on_dirt.mts", + }) + + -- Dry dirt version for savanna shore + + minetest.register_decoration({ + name = "default:papyrus_on_dry_dirt", + deco_type = "schematic", + place_on = {"default:dry_dirt"}, + sidelen = 16, + noise_params = { + offset = -0.3, + scale = 0.7, + spread = {x = 200, y = 200, z = 200}, + seed = 354, + octaves = 3, + persist = 0.7 + }, biomes = {"savanna_shore"}, y_max = 0, y_min = 0, - schematic = minetest.get_modpath("default") .. "/schematics/papyrus.mts", + schematic = minetest.get_modpath("default") .. + "/schematics/papyrus_on_dry_dirt.mts", }) -- Bush @@ -1956,8 +2201,7 @@ function default.register_decorations() octaves = 3, persist = 0.7, }, - biomes = {"grassland", "deciduous_forest", - "floatland_grassland"}, + biomes = {"grassland", "deciduous_forest"}, y_max = 31000, y_min = 1, schematic = minetest.get_modpath("default") .. "/schematics/bush.mts", @@ -1992,7 +2236,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 +2342,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, @@ -2229,22 +2473,9 @@ end -- --- Detect mapgen, flags and parameters to select functions +-- Detect mapgen to select functions -- --- Get setting or default -local mgv7_spflags = minetest.get_mapgen_setting("mgv7_spflags") or - "mountains, ridges, nofloatlands, caverns" -local captures_float = string.match(mgv7_spflags, "floatlands") -local captures_nofloat = string.match(mgv7_spflags, "nofloatlands") - --- Get setting or default --- Make global for mods to use to register floatland biomes -default.mgv7_floatland_level = - minetest.get_mapgen_setting("mgv7_floatland_level") or 1280 -default.mgv7_shadow_limit = - minetest.get_mapgen_setting("mgv7_shadow_limit") or 1024 - minetest.clear_registered_biomes() minetest.clear_registered_ores() minetest.clear_registered_decorations() @@ -2254,19 +2485,8 @@ local mg_name = minetest.get_mapgen_setting("mg_name") if mg_name == "v6" then default.register_mgv6_ores() default.register_mgv6_decorations() --- Need to check for 'nofloatlands' because that contains --- 'floatlands' which makes the second condition true. -elseif mg_name == "v7" and - captures_float == "floatlands" and - captures_nofloat ~= "nofloatlands" then - -- Mgv7 with floatlands and floatland biomes - default.register_biomes(default.mgv7_shadow_limit - 1) - default.register_floatland_biomes( - default.mgv7_floatland_level, default.mgv7_shadow_limit) - default.register_ores() - default.register_decorations() else - default.register_biomes(31000) + default.register_biomes() default.register_ores() default.register_decorations() end diff --git a/default/mod.conf b/default/mod.conf new file mode 100644 index 0000000..c9e7468 --- /dev/null +++ b/default/mod.conf @@ -0,0 +1,3 @@ +name = default +description = Minetest Game mod: default +optional_depends = player_api diff --git a/default/nodes.lua b/default/nodes.lua index aa8f361..aa7d482 100644 --- a/default/nodes.lua +++ b/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 Savanna 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("Savanna 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("Savanna Dirt with Savanna 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", @@ -588,7 +621,7 @@ minetest.register_node("default:snow", { collision_box = { type = "fixed", fixed = { - {-0.5, -0.5, -0.5, 0.5, -7 / 16, 0.5}, + {-0.5, -0.5, -0.5, 0.5, -6 / 16, 0.5}, }, }, groups = {crumbly = 3, falling_node = 1, snowy = 1}, @@ -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("Savanna 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("Savanna 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, + 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", @@ -2210,7 +2203,7 @@ minetest.register_node("default:water_source", { }, }, }, - alpha = 160, + alpha = 191, paramtype = "light", walkable = false, pointable = false, @@ -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 = { { @@ -2240,7 +2234,7 @@ minetest.register_node("default:water_flowing", { type = "vertical_frames", aspect_w = 16, aspect_h = 16, - length = 0.8, + length = 0.5, }, }, { @@ -2250,11 +2244,11 @@ minetest.register_node("default:water_flowing", { type = "vertical_frames", aspect_w = 16, aspect_h = 16, - length = 0.8, + length = 0.5, }, }, }, - alpha = 160, + alpha = 191, paramtype = "light", paramtype2 = "flowingliquid", walkable = false, @@ -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 = { @@ -2336,7 +2330,7 @@ minetest.register_node("default:river_water_flowing", { type = "vertical_frames", aspect_w = 16, aspect_h = 16, - length = 0.8, + length = 0.5, }, }, { @@ -2346,7 +2340,7 @@ minetest.register_node("default:river_water_flowing", { type = "vertical_frames", aspect_w = 16, aspect_h = 16, - length = 0.8, + length = 0.5, }, }, }, @@ -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", @@ -2586,12 +2579,10 @@ local function register_sign(material, desc, def) sounds = def.sounds, on_construct = function(pos) - --local n = minetest.get_node(pos) local meta = minetest.get_meta(pos) meta:set_string("formspec", "field[text;;${text}]") end, on_receive_fields = function(pos, formname, fields, sender) - --print("Sign at "..minetest.pos_to_string(pos).." got "..dump(fields)) local player_name = sender:get_player_name() if minetest.is_protected(pos, player_name) then minetest.record_protection_violation(pos, player_name) @@ -2602,30 +2593,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)) + minetest.log("action", player_name .. " wrote \"" .. text .. + "\" to the 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 +2644,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 +2666,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 +2678,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 +2690,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 +2702,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 +2714,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 +2726,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 +2738,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 +2750,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 +2762,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 +2774,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 +2786,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 +2798,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,10 +2811,13 @@ 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"}, + tiles = { + "default_brick.png^[transformFX", + "default_brick.png", + }, is_ground_content = false, groups = {cracky = 3}, sounds = default.node_sound_stone_defaults(), @@ -2826,7 +2825,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 +2837,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 +2862,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/default/schematics/large_cactus.mts b/default/schematics/large_cactus.mts index e453573..cadcdcc 100644 Binary files a/default/schematics/large_cactus.mts and b/default/schematics/large_cactus.mts differ diff --git a/default/schematics/papyrus.mts b/default/schematics/papyrus_on_dirt.mts similarity index 100% rename from default/schematics/papyrus.mts rename to default/schematics/papyrus_on_dirt.mts diff --git a/default/schematics/papyrus_on_dry_dirt.mts b/default/schematics/papyrus_on_dry_dirt.mts new file mode 100644 index 0000000..3626580 Binary files /dev/null and b/default/schematics/papyrus_on_dry_dirt.mts differ diff --git a/default/sounds/default_grass_footstep.1.ogg b/default/sounds/default_grass_footstep.1.ogg index a68650e..a04cdb4 100644 Binary files a/default/sounds/default_grass_footstep.1.ogg and b/default/sounds/default_grass_footstep.1.ogg differ diff --git a/default/sounds/default_grass_footstep.2.ogg b/default/sounds/default_grass_footstep.2.ogg index bbdf712..d193068 100644 Binary files a/default/sounds/default_grass_footstep.2.ogg and b/default/sounds/default_grass_footstep.2.ogg differ diff --git a/default/sounds/default_grass_footstep.3.ogg b/default/sounds/default_grass_footstep.3.ogg index 20db84e..e1897ea 100644 Binary files a/default/sounds/default_grass_footstep.3.ogg and b/default/sounds/default_grass_footstep.3.ogg differ diff --git a/player_api/sounds/player_damage.ogg b/default/sounds/player_damage.ogg similarity index 100% rename from player_api/sounds/player_damage.ogg rename to default/sounds/player_damage.ogg diff --git a/default/textures/bubble.png b/default/textures/bubble.png index cf11cd3..100fe15 100644 Binary files a/default/textures/bubble.png and b/default/textures/bubble.png differ diff --git a/default/textures/crack_anylength.png b/default/textures/crack_anylength.png index 3579875..297eced 100644 Binary files a/default/textures/crack_anylength.png and b/default/textures/crack_anylength.png differ diff --git a/default/textures/default_acacia_bush_sapling.png b/default/textures/default_acacia_bush_sapling.png index 0d02d6e..940b3aa 100644 Binary files a/default/textures/default_acacia_bush_sapling.png and b/default/textures/default_acacia_bush_sapling.png differ diff --git a/default/textures/default_acacia_bush_stem.png b/default/textures/default_acacia_bush_stem.png index a017035..2903915 100644 Binary files a/default/textures/default_acacia_bush_stem.png and b/default/textures/default_acacia_bush_stem.png differ diff --git a/default/textures/default_acacia_leaves.png b/default/textures/default_acacia_leaves.png index 39ba5bb..626e1b3 100644 Binary files a/default/textures/default_acacia_leaves.png and b/default/textures/default_acacia_leaves.png differ diff --git a/default/textures/default_acacia_leaves_simple.png b/default/textures/default_acacia_leaves_simple.png index 714654c..3c7015b 100644 Binary files a/default/textures/default_acacia_leaves_simple.png and b/default/textures/default_acacia_leaves_simple.png differ diff --git a/default/textures/default_acacia_sapling.png b/default/textures/default_acacia_sapling.png index 224677a..07170a0 100644 Binary files a/default/textures/default_acacia_sapling.png and b/default/textures/default_acacia_sapling.png differ diff --git a/default/textures/default_acacia_tree.png b/default/textures/default_acacia_tree.png index 8c7ef09..58bb3c4 100644 Binary files a/default/textures/default_acacia_tree.png and b/default/textures/default_acacia_tree.png differ diff --git a/default/textures/default_acacia_tree_top.png b/default/textures/default_acacia_tree_top.png index 5758303..a8a0ce0 100644 Binary files a/default/textures/default_acacia_tree_top.png and b/default/textures/default_acacia_tree_top.png differ diff --git a/default/textures/default_acacia_wood.png b/default/textures/default_acacia_wood.png index 045fed6..b5abf1e 100644 Binary files a/default/textures/default_acacia_wood.png and b/default/textures/default_acacia_wood.png differ diff --git a/default/textures/default_apple.png b/default/textures/default_apple.png index bbfb38b..7549bfd 100644 Binary files a/default/textures/default_apple.png and b/default/textures/default_apple.png differ diff --git a/default/textures/default_aspen_leaves.png b/default/textures/default_aspen_leaves.png index 62ae69c..7306423 100644 Binary files a/default/textures/default_aspen_leaves.png and b/default/textures/default_aspen_leaves.png differ diff --git a/default/textures/default_aspen_sapling.png b/default/textures/default_aspen_sapling.png index 1b8a0cf..f8d9136 100644 Binary files a/default/textures/default_aspen_sapling.png and b/default/textures/default_aspen_sapling.png differ diff --git a/default/textures/default_aspen_tree.png b/default/textures/default_aspen_tree.png index dd06b11..cfb05fc 100644 Binary files a/default/textures/default_aspen_tree.png and b/default/textures/default_aspen_tree.png differ diff --git a/default/textures/default_aspen_tree_top.png b/default/textures/default_aspen_tree_top.png index e12cab8..fcca038 100644 Binary files a/default/textures/default_aspen_tree_top.png and b/default/textures/default_aspen_tree_top.png differ diff --git a/default/textures/default_aspen_wood.png b/default/textures/default_aspen_wood.png index 18a07a9..2b584b3 100644 Binary files a/default/textures/default_aspen_wood.png and b/default/textures/default_aspen_wood.png differ diff --git a/default/textures/default_blueberries.png b/default/textures/default_blueberries.png index 3c5efab..1dbb0d6 100644 Binary files a/default/textures/default_blueberries.png and b/default/textures/default_blueberries.png differ diff --git a/default/textures/default_blueberry_bush_leaves.png b/default/textures/default_blueberry_bush_leaves.png index 79ca1f6..2cd112c 100644 Binary files a/default/textures/default_blueberry_bush_leaves.png and b/default/textures/default_blueberry_bush_leaves.png differ diff --git a/default/textures/default_blueberry_bush_sapling.png b/default/textures/default_blueberry_bush_sapling.png index 63f9f59..5d7393f 100644 Binary files a/default/textures/default_blueberry_bush_sapling.png and b/default/textures/default_blueberry_bush_sapling.png differ diff --git a/default/textures/default_blueberry_overlay.png b/default/textures/default_blueberry_overlay.png index a6d2bcd..de9de62 100644 Binary files a/default/textures/default_blueberry_overlay.png and b/default/textures/default_blueberry_overlay.png differ diff --git a/default/textures/default_book.png b/default/textures/default_book.png index 81ec42d..bcf1e6a 100644 Binary files a/default/textures/default_book.png and b/default/textures/default_book.png differ diff --git a/default/textures/default_book_written.png b/default/textures/default_book_written.png index 3a9851e..f23d122 100644 Binary files a/default/textures/default_book_written.png and b/default/textures/default_book_written.png differ diff --git a/default/textures/default_bookshelf.png b/default/textures/default_bookshelf.png index 2d2019f..10d6483 100644 Binary files a/default/textures/default_bookshelf.png and b/default/textures/default_bookshelf.png differ diff --git a/default/textures/default_bookshelf_slot.png b/default/textures/default_bookshelf_slot.png index 059438c..cd2c8bc 100644 Binary files a/default/textures/default_bookshelf_slot.png and b/default/textures/default_bookshelf_slot.png differ diff --git a/default/textures/default_bronze_block.png b/default/textures/default_bronze_block.png index feec121..1d0c9d5 100644 Binary files a/default/textures/default_bronze_block.png and b/default/textures/default_bronze_block.png differ diff --git a/default/textures/default_bronze_ingot.png b/default/textures/default_bronze_ingot.png index 3af9178..6cccdf6 100644 Binary files a/default/textures/default_bronze_ingot.png and b/default/textures/default_bronze_ingot.png differ diff --git a/default/textures/default_bush_sapling.png b/default/textures/default_bush_sapling.png index a9a3b09..905ba4b 100644 Binary files a/default/textures/default_bush_sapling.png and b/default/textures/default_bush_sapling.png differ diff --git a/default/textures/default_bush_stem.png b/default/textures/default_bush_stem.png index 4a0b6b4..18b615f 100644 Binary files a/default/textures/default_bush_stem.png and b/default/textures/default_bush_stem.png differ diff --git a/default/textures/default_cactus_side.png b/default/textures/default_cactus_side.png index 359a606..8d6c40c 100644 Binary files a/default/textures/default_cactus_side.png and b/default/textures/default_cactus_side.png differ diff --git a/default/textures/default_cactus_top.png b/default/textures/default_cactus_top.png index e45611e..cf46aa2 100644 Binary files a/default/textures/default_cactus_top.png and b/default/textures/default_cactus_top.png differ diff --git a/default/textures/default_chest_front.png b/default/textures/default_chest_front.png index fb6588c..85227d8 100644 Binary files a/default/textures/default_chest_front.png and b/default/textures/default_chest_front.png differ diff --git a/default/textures/default_chest_inside.png b/default/textures/default_chest_inside.png index e83d68f..5f7b6b1 100644 Binary files a/default/textures/default_chest_inside.png and b/default/textures/default_chest_inside.png differ diff --git a/default/textures/default_chest_lock.png b/default/textures/default_chest_lock.png index bbcffbf..73f46c7 100644 Binary files a/default/textures/default_chest_lock.png and b/default/textures/default_chest_lock.png differ diff --git a/default/textures/default_chest_side.png b/default/textures/default_chest_side.png index de7cd48..44a65a4 100644 Binary files a/default/textures/default_chest_side.png and b/default/textures/default_chest_side.png differ diff --git a/default/textures/default_chest_top.png b/default/textures/default_chest_top.png index 1b04a1f..f4a92ee 100644 Binary files a/default/textures/default_chest_top.png and b/default/textures/default_chest_top.png differ diff --git a/default/textures/default_clay.png b/default/textures/default_clay.png index f03d488..76e5a40 100644 Binary files a/default/textures/default_clay.png and b/default/textures/default_clay.png differ diff --git a/default/textures/default_clay_brick.png b/default/textures/default_clay_brick.png index ddd15f1..b288ef0 100644 Binary files a/default/textures/default_clay_brick.png and b/default/textures/default_clay_brick.png differ diff --git a/default/textures/default_clay_lump.png b/default/textures/default_clay_lump.png index 1c2f357..c1d0220 100644 Binary files a/default/textures/default_clay_lump.png and b/default/textures/default_clay_lump.png differ diff --git a/default/textures/default_cloud.png b/default/textures/default_cloud.png index b47ac6d..faf0ec1 100644 Binary files a/default/textures/default_cloud.png and b/default/textures/default_cloud.png differ diff --git a/default/textures/default_coal_block.png b/default/textures/default_coal_block.png index cb20922..6fe9ed9 100644 Binary files a/default/textures/default_coal_block.png and b/default/textures/default_coal_block.png differ diff --git a/default/textures/default_coal_lump.png b/default/textures/default_coal_lump.png index 1e3e3c7..792961d 100644 Binary files a/default/textures/default_coal_lump.png and b/default/textures/default_coal_lump.png differ diff --git a/default/textures/default_cobble.png b/default/textures/default_cobble.png index df85530..d379840 100644 Binary files a/default/textures/default_cobble.png and b/default/textures/default_cobble.png differ diff --git a/default/textures/default_coniferous_litter.png b/default/textures/default_coniferous_litter.png index 3383e88..da340e0 100644 Binary files a/default/textures/default_coniferous_litter.png and b/default/textures/default_coniferous_litter.png differ diff --git a/default/textures/default_coniferous_litter_side.png b/default/textures/default_coniferous_litter_side.png index 7374f99..0701461 100644 Binary files a/default/textures/default_coniferous_litter_side.png and b/default/textures/default_coniferous_litter_side.png differ diff --git a/default/textures/default_copper_block.png b/default/textures/default_copper_block.png index e374c82..8533754 100644 Binary files a/default/textures/default_copper_block.png and b/default/textures/default_copper_block.png differ diff --git a/default/textures/default_copper_ingot.png b/default/textures/default_copper_ingot.png index 3db2ee8..bcad9c0 100644 Binary files a/default/textures/default_copper_ingot.png and b/default/textures/default_copper_ingot.png differ diff --git a/default/textures/default_copper_lump.png b/default/textures/default_copper_lump.png index 02e71a7..998c592 100644 Binary files a/default/textures/default_copper_lump.png and b/default/textures/default_copper_lump.png differ diff --git a/default/textures/default_coral_brown.png b/default/textures/default_coral_brown.png index 384d735..8a775fe 100644 Binary files a/default/textures/default_coral_brown.png and b/default/textures/default_coral_brown.png differ diff --git a/default/textures/default_coral_cyan.png b/default/textures/default_coral_cyan.png index b3aafde..11cc7bf 100644 Binary files a/default/textures/default_coral_cyan.png and b/default/textures/default_coral_cyan.png differ diff --git a/default/textures/default_coral_green.png b/default/textures/default_coral_green.png index 602bdd1..847c572 100644 Binary files a/default/textures/default_coral_green.png and b/default/textures/default_coral_green.png differ diff --git a/default/textures/default_coral_orange.png b/default/textures/default_coral_orange.png index 0c28d3d..cefac62 100644 Binary files a/default/textures/default_coral_orange.png and b/default/textures/default_coral_orange.png differ diff --git a/default/textures/default_coral_pink.png b/default/textures/default_coral_pink.png index 5954c14..62d70c6 100644 Binary files a/default/textures/default_coral_pink.png and b/default/textures/default_coral_pink.png differ diff --git a/default/textures/default_coral_skeleton.png b/default/textures/default_coral_skeleton.png index e019977..fa48f15 100644 Binary files a/default/textures/default_coral_skeleton.png and b/default/textures/default_coral_skeleton.png differ diff --git a/default/textures/default_desert_cobble.png b/default/textures/default_desert_cobble.png index cb158d8..fa1af5d 100644 Binary files a/default/textures/default_desert_cobble.png and b/default/textures/default_desert_cobble.png differ diff --git a/default/textures/default_desert_sand.png b/default/textures/default_desert_sand.png index 95c78a5..371b8c7 100644 Binary files a/default/textures/default_desert_sand.png and b/default/textures/default_desert_sand.png differ diff --git a/default/textures/default_desert_sandstone.png b/default/textures/default_desert_sandstone.png index ea0dc2a..52e445f 100644 Binary files a/default/textures/default_desert_sandstone.png and b/default/textures/default_desert_sandstone.png differ diff --git a/default/textures/default_desert_sandstone_block.png b/default/textures/default_desert_sandstone_block.png index a35e990..8fc54e7 100644 Binary files a/default/textures/default_desert_sandstone_block.png and b/default/textures/default_desert_sandstone_block.png differ diff --git a/default/textures/default_desert_sandstone_brick.png b/default/textures/default_desert_sandstone_brick.png index 97ab36f..ab58db5 100644 Binary files a/default/textures/default_desert_sandstone_brick.png and b/default/textures/default_desert_sandstone_brick.png differ diff --git a/default/textures/default_desert_stone.png b/default/textures/default_desert_stone.png index 3792dbb..5d3aded 100644 Binary files a/default/textures/default_desert_stone.png and b/default/textures/default_desert_stone.png differ diff --git a/default/textures/default_desert_stone_block.png b/default/textures/default_desert_stone_block.png index 1765ad6..9eb8e92 100644 Binary files a/default/textures/default_desert_stone_block.png and b/default/textures/default_desert_stone_block.png differ diff --git a/default/textures/default_desert_stone_brick.png b/default/textures/default_desert_stone_brick.png index 29321ba..a603d18 100644 Binary files a/default/textures/default_desert_stone_brick.png and b/default/textures/default_desert_stone_brick.png differ diff --git a/default/textures/default_diamond.png b/default/textures/default_diamond.png index d0a8828..a8dac74 100644 Binary files a/default/textures/default_diamond.png and b/default/textures/default_diamond.png differ diff --git a/default/textures/default_diamond_block.png b/default/textures/default_diamond_block.png index 2063b2e..20c33ed 100644 Binary files a/default/textures/default_diamond_block.png and b/default/textures/default_diamond_block.png differ diff --git a/default/textures/default_dirt.png b/default/textures/default_dirt.png index 12d66cb..afe4a2e 100644 Binary files a/default/textures/default_dirt.png and b/default/textures/default_dirt.png differ diff --git a/default/textures/default_dry_dirt.png b/default/textures/default_dry_dirt.png new file mode 100644 index 0000000..8ee5398 Binary files /dev/null and b/default/textures/default_dry_dirt.png differ diff --git a/default/textures/default_dry_grass.png b/default/textures/default_dry_grass.png index f4b0013..03455c3 100644 Binary files a/default/textures/default_dry_grass.png and b/default/textures/default_dry_grass.png differ diff --git a/default/textures/default_dry_grass_1.png b/default/textures/default_dry_grass_1.png index 0bf56df..5cf68a3 100644 Binary files a/default/textures/default_dry_grass_1.png and b/default/textures/default_dry_grass_1.png differ diff --git a/default/textures/default_dry_grass_2.png b/default/textures/default_dry_grass_2.png index 832805b..c925ace 100644 Binary files a/default/textures/default_dry_grass_2.png and b/default/textures/default_dry_grass_2.png differ diff --git a/default/textures/default_dry_grass_3.png b/default/textures/default_dry_grass_3.png index 4cde5aa..4e4d84e 100644 Binary files a/default/textures/default_dry_grass_3.png and b/default/textures/default_dry_grass_3.png differ diff --git a/default/textures/default_dry_grass_4.png b/default/textures/default_dry_grass_4.png index d7f5818..d315849 100644 Binary files a/default/textures/default_dry_grass_4.png and b/default/textures/default_dry_grass_4.png differ diff --git a/default/textures/default_dry_grass_5.png b/default/textures/default_dry_grass_5.png index a8b1d01..871d04c 100644 Binary files a/default/textures/default_dry_grass_5.png and b/default/textures/default_dry_grass_5.png differ diff --git a/default/textures/default_dry_grass_side.png b/default/textures/default_dry_grass_side.png index 0ea20c5..ef375b7 100644 Binary files a/default/textures/default_dry_grass_side.png and b/default/textures/default_dry_grass_side.png differ diff --git a/default/textures/default_dry_shrub.png b/default/textures/default_dry_shrub.png index 696b69a..82c9cc5 100644 Binary files a/default/textures/default_dry_shrub.png and b/default/textures/default_dry_shrub.png differ diff --git a/default/textures/default_emergent_jungle_sapling.png b/default/textures/default_emergent_jungle_sapling.png index 4bf9dfe..b363b3c 100644 Binary files a/default/textures/default_emergent_jungle_sapling.png and b/default/textures/default_emergent_jungle_sapling.png differ diff --git a/default/textures/default_fence_acacia_wood.png b/default/textures/default_fence_acacia_wood.png index eca29dd..3b973f3 100644 Binary files a/default/textures/default_fence_acacia_wood.png and b/default/textures/default_fence_acacia_wood.png differ diff --git a/default/textures/default_fence_aspen_wood.png b/default/textures/default_fence_aspen_wood.png index cd583cb..0a6558e 100644 Binary files a/default/textures/default_fence_aspen_wood.png and b/default/textures/default_fence_aspen_wood.png differ diff --git a/default/textures/default_fence_junglewood.png b/default/textures/default_fence_junglewood.png index ccef1b6..c390941 100644 Binary files a/default/textures/default_fence_junglewood.png and b/default/textures/default_fence_junglewood.png differ diff --git a/default/textures/default_fence_overlay.png b/default/textures/default_fence_overlay.png index d192eab..718184c 100644 Binary files a/default/textures/default_fence_overlay.png and b/default/textures/default_fence_overlay.png differ diff --git a/default/textures/default_fence_pine_wood.png b/default/textures/default_fence_pine_wood.png index 8313790..74609d9 100644 Binary files a/default/textures/default_fence_pine_wood.png and b/default/textures/default_fence_pine_wood.png differ diff --git a/default/textures/default_fence_rail_acacia_wood.png b/default/textures/default_fence_rail_acacia_wood.png index 5a5d878..64dc90f 100644 Binary files a/default/textures/default_fence_rail_acacia_wood.png and b/default/textures/default_fence_rail_acacia_wood.png differ diff --git a/default/textures/default_fence_rail_aspen_wood.png b/default/textures/default_fence_rail_aspen_wood.png index 43aedf1..ab16a60 100644 Binary files a/default/textures/default_fence_rail_aspen_wood.png and b/default/textures/default_fence_rail_aspen_wood.png differ diff --git a/default/textures/default_fence_rail_junglewood.png b/default/textures/default_fence_rail_junglewood.png index d36b465..ebc1ef0 100644 Binary files a/default/textures/default_fence_rail_junglewood.png and b/default/textures/default_fence_rail_junglewood.png differ diff --git a/default/textures/default_fence_rail_overlay.png b/default/textures/default_fence_rail_overlay.png index 68d7941..4da47ae 100644 Binary files a/default/textures/default_fence_rail_overlay.png and b/default/textures/default_fence_rail_overlay.png differ diff --git a/default/textures/default_fence_rail_pine_wood.png b/default/textures/default_fence_rail_pine_wood.png index b5c3478..fd8d99d 100644 Binary files a/default/textures/default_fence_rail_pine_wood.png and b/default/textures/default_fence_rail_pine_wood.png differ diff --git a/default/textures/default_fence_rail_wood.png b/default/textures/default_fence_rail_wood.png index 3c55c06..f84b755 100644 Binary files a/default/textures/default_fence_rail_wood.png and b/default/textures/default_fence_rail_wood.png differ diff --git a/default/textures/default_fence_wood.png b/default/textures/default_fence_wood.png index a59bcb2..1e76430 100644 Binary files a/default/textures/default_fence_wood.png and b/default/textures/default_fence_wood.png differ diff --git a/default/textures/default_fern_1.png b/default/textures/default_fern_1.png index 47b7763..b307986 100644 Binary files a/default/textures/default_fern_1.png and b/default/textures/default_fern_1.png differ diff --git a/default/textures/default_fern_2.png b/default/textures/default_fern_2.png index 5e56e88..6c5f7d5 100644 Binary files a/default/textures/default_fern_2.png and b/default/textures/default_fern_2.png differ diff --git a/default/textures/default_fern_3.png b/default/textures/default_fern_3.png index ae7e4b7..2c1f605 100644 Binary files a/default/textures/default_fern_3.png and b/default/textures/default_fern_3.png differ diff --git a/default/textures/default_flint.png b/default/textures/default_flint.png index f9f3e1c..226c740 100644 Binary files a/default/textures/default_flint.png and b/default/textures/default_flint.png differ diff --git a/default/textures/default_footprint.png b/default/textures/default_footprint.png index 2121a03..41d9546 100644 Binary files a/default/textures/default_footprint.png and b/default/textures/default_footprint.png differ diff --git a/default/textures/default_furnace_bottom.png b/default/textures/default_furnace_bottom.png index 289ef14..b79ed06 100644 Binary files a/default/textures/default_furnace_bottom.png and b/default/textures/default_furnace_bottom.png differ diff --git a/default/textures/default_furnace_fire_bg.png b/default/textures/default_furnace_fire_bg.png index 612c6ab..126204a 100644 Binary files a/default/textures/default_furnace_fire_bg.png and b/default/textures/default_furnace_fire_bg.png differ diff --git a/default/textures/default_furnace_fire_fg.png b/default/textures/default_furnace_fire_fg.png index 853395c..63888f3 100644 Binary files a/default/textures/default_furnace_fire_fg.png and b/default/textures/default_furnace_fire_fg.png differ diff --git a/default/textures/default_furnace_front.png b/default/textures/default_furnace_front.png index 7e72b5d..8c1798e 100644 Binary files a/default/textures/default_furnace_front.png and b/default/textures/default_furnace_front.png differ diff --git a/default/textures/default_furnace_front_active.png b/default/textures/default_furnace_front_active.png index d18ac99..ea43ed9 100644 Binary files a/default/textures/default_furnace_front_active.png and b/default/textures/default_furnace_front_active.png differ diff --git a/default/textures/default_furnace_side.png b/default/textures/default_furnace_side.png index ec2157a..33408cf 100644 Binary files a/default/textures/default_furnace_side.png and b/default/textures/default_furnace_side.png differ diff --git a/default/textures/default_furnace_top.png b/default/textures/default_furnace_top.png index 289ef14..b79ed06 100644 Binary files a/default/textures/default_furnace_top.png and b/default/textures/default_furnace_top.png differ diff --git a/default/textures/default_glass.png b/default/textures/default_glass.png index 217268b..74d6a02 100644 Binary files a/default/textures/default_glass.png and b/default/textures/default_glass.png differ diff --git a/default/textures/default_glass_detail.png b/default/textures/default_glass_detail.png index 93162c1..811a4db 100644 Binary files a/default/textures/default_glass_detail.png and b/default/textures/default_glass_detail.png differ diff --git a/default/textures/default_gold_block.png b/default/textures/default_gold_block.png index d444485..170d50b 100644 Binary files a/default/textures/default_gold_block.png and b/default/textures/default_gold_block.png differ diff --git a/default/textures/default_gold_ingot.png b/default/textures/default_gold_ingot.png index f8e5529..ba66471 100644 Binary files a/default/textures/default_gold_ingot.png and b/default/textures/default_gold_ingot.png differ diff --git a/default/textures/default_gold_lump.png b/default/textures/default_gold_lump.png index 4990bf9..d5a1be7 100644 Binary files a/default/textures/default_gold_lump.png and b/default/textures/default_gold_lump.png differ diff --git a/default/textures/default_grass.png b/default/textures/default_grass.png index 4c72069..5778caa 100644 Binary files a/default/textures/default_grass.png and b/default/textures/default_grass.png differ diff --git a/default/textures/default_grass_1.png b/default/textures/default_grass_1.png index d927a27..e9faa2c 100644 Binary files a/default/textures/default_grass_1.png and b/default/textures/default_grass_1.png differ diff --git a/default/textures/default_grass_2.png b/default/textures/default_grass_2.png index 6fc1d95..03729a0 100644 Binary files a/default/textures/default_grass_2.png and b/default/textures/default_grass_2.png differ diff --git a/default/textures/default_grass_3.png b/default/textures/default_grass_3.png index d54a12a..92ca1b5 100644 Binary files a/default/textures/default_grass_3.png and b/default/textures/default_grass_3.png differ diff --git a/default/textures/default_grass_4.png b/default/textures/default_grass_4.png index 2b3b9f9..c782a33 100644 Binary files a/default/textures/default_grass_4.png and b/default/textures/default_grass_4.png differ diff --git a/default/textures/default_grass_5.png b/default/textures/default_grass_5.png index e40020e..b727e9c 100644 Binary files a/default/textures/default_grass_5.png and b/default/textures/default_grass_5.png differ diff --git a/default/textures/default_grass_side.png b/default/textures/default_grass_side.png index 2fbed9a..079d96a 100644 Binary files a/default/textures/default_grass_side.png and b/default/textures/default_grass_side.png differ diff --git a/default/textures/default_gravel.png b/default/textures/default_gravel.png index 383ba5d..8852d38 100644 Binary files a/default/textures/default_gravel.png and b/default/textures/default_gravel.png differ diff --git a/default/textures/default_ice.png b/default/textures/default_ice.png index 07cec06..2874e1e 100644 Binary files a/default/textures/default_ice.png and b/default/textures/default_ice.png differ diff --git a/default/textures/default_iron_lump.png b/default/textures/default_iron_lump.png index cfb4b5b..db61a94 100644 Binary files a/default/textures/default_iron_lump.png and b/default/textures/default_iron_lump.png differ diff --git a/default/textures/default_item_smoke.png b/default/textures/default_item_smoke.png index 0fdfd20..d62fb3b 100644 Binary files a/default/textures/default_item_smoke.png and b/default/textures/default_item_smoke.png differ diff --git a/default/textures/default_junglegrass.png b/default/textures/default_junglegrass.png index a2945bf..25abb71 100644 Binary files a/default/textures/default_junglegrass.png and b/default/textures/default_junglegrass.png differ diff --git a/default/textures/default_jungleleaves.png b/default/textures/default_jungleleaves.png index 1c5cef3..5afcc36 100644 Binary files a/default/textures/default_jungleleaves.png and b/default/textures/default_jungleleaves.png differ diff --git a/default/textures/default_jungleleaves_simple.png b/default/textures/default_jungleleaves_simple.png index 528def6..7165100 100644 Binary files a/default/textures/default_jungleleaves_simple.png and b/default/textures/default_jungleleaves_simple.png differ diff --git a/default/textures/default_junglesapling.png b/default/textures/default_junglesapling.png index d2f3dbd..05e1e50 100644 Binary files a/default/textures/default_junglesapling.png and b/default/textures/default_junglesapling.png differ diff --git a/default/textures/default_jungletree.png b/default/textures/default_jungletree.png index 39dd4ab..2cf77a6 100644 Binary files a/default/textures/default_jungletree.png and b/default/textures/default_jungletree.png differ diff --git a/default/textures/default_jungletree_top.png b/default/textures/default_jungletree_top.png index 16928e6..439f078 100644 Binary files a/default/textures/default_jungletree_top.png and b/default/textures/default_jungletree_top.png differ diff --git a/default/textures/default_junglewood.png b/default/textures/default_junglewood.png index d456a31..8d17917 100644 Binary files a/default/textures/default_junglewood.png and b/default/textures/default_junglewood.png differ diff --git a/default/textures/default_kelp.png b/default/textures/default_kelp.png index cee6e29..70b743d 100644 Binary files a/default/textures/default_kelp.png and b/default/textures/default_kelp.png differ diff --git a/default/textures/default_key.png b/default/textures/default_key.png index df3d5fb..783d313 100644 Binary files a/default/textures/default_key.png and b/default/textures/default_key.png differ diff --git a/default/textures/default_key_skeleton.png b/default/textures/default_key_skeleton.png index 21b3e0f..2b3497d 100644 Binary files a/default/textures/default_key_skeleton.png and b/default/textures/default_key_skeleton.png differ diff --git a/default/textures/default_ladder_steel.png b/default/textures/default_ladder_steel.png index d9e6d8f..a312f3e 100644 Binary files a/default/textures/default_ladder_steel.png and b/default/textures/default_ladder_steel.png differ diff --git a/default/textures/default_ladder_wood.png b/default/textures/default_ladder_wood.png index 13dbae4..c167fff 100644 Binary files a/default/textures/default_ladder_wood.png and b/default/textures/default_ladder_wood.png differ diff --git a/default/textures/default_large_cactus_seedling.png b/default/textures/default_large_cactus_seedling.png index 90f1820..378351a 100644 Binary files a/default/textures/default_large_cactus_seedling.png and b/default/textures/default_large_cactus_seedling.png differ diff --git a/default/textures/default_lava.png b/default/textures/default_lava.png index f564fea..e8958de 100644 Binary files a/default/textures/default_lava.png and b/default/textures/default_lava.png differ diff --git a/default/textures/default_lava_flowing_animated.png b/default/textures/default_lava_flowing_animated.png index c9a89cc..2ec0746 100644 Binary files a/default/textures/default_lava_flowing_animated.png and b/default/textures/default_lava_flowing_animated.png differ diff --git a/default/textures/default_lava_source_animated.png b/default/textures/default_lava_source_animated.png index 2329cfc..32267a6 100644 Binary files a/default/textures/default_lava_source_animated.png and b/default/textures/default_lava_source_animated.png differ diff --git a/default/textures/default_leaves.png b/default/textures/default_leaves.png index c68df9e..ba09fe1 100644 Binary files a/default/textures/default_leaves.png and b/default/textures/default_leaves.png differ diff --git a/default/textures/default_leaves_simple.png b/default/textures/default_leaves_simple.png index ec6196f..eb60f9f 100644 Binary files a/default/textures/default_leaves_simple.png and b/default/textures/default_leaves_simple.png differ diff --git a/default/textures/default_marram_grass_1.png b/default/textures/default_marram_grass_1.png index f789e2c..73ec9e9 100644 Binary files a/default/textures/default_marram_grass_1.png and b/default/textures/default_marram_grass_1.png differ diff --git a/default/textures/default_marram_grass_2.png b/default/textures/default_marram_grass_2.png index 791723f..2db75c7 100644 Binary files a/default/textures/default_marram_grass_2.png and b/default/textures/default_marram_grass_2.png differ diff --git a/default/textures/default_marram_grass_3.png b/default/textures/default_marram_grass_3.png index 56cf46c..f6c155f 100644 Binary files a/default/textures/default_marram_grass_3.png and b/default/textures/default_marram_grass_3.png differ diff --git a/default/textures/default_mese_block.png b/default/textures/default_mese_block.png index b7f630f..e30994e 100644 Binary files a/default/textures/default_mese_block.png and b/default/textures/default_mese_block.png differ diff --git a/default/textures/default_mese_crystal.png b/default/textures/default_mese_crystal.png index f4c35e7..f1d71f1 100644 Binary files a/default/textures/default_mese_crystal.png and b/default/textures/default_mese_crystal.png differ diff --git a/default/textures/default_mese_crystal_fragment.png b/default/textures/default_mese_crystal_fragment.png index f261c22..d5416ab 100644 Binary files a/default/textures/default_mese_crystal_fragment.png and b/default/textures/default_mese_crystal_fragment.png differ diff --git a/default/textures/default_mese_post_light_side.png b/default/textures/default_mese_post_light_side.png index 5ba3a81..c23b551 100644 Binary files a/default/textures/default_mese_post_light_side.png and b/default/textures/default_mese_post_light_side.png differ diff --git a/default/textures/default_mese_post_light_side_dark.png b/default/textures/default_mese_post_light_side_dark.png index 012652d..c4fc7ce 100644 Binary files a/default/textures/default_mese_post_light_side_dark.png and b/default/textures/default_mese_post_light_side_dark.png differ diff --git a/default/textures/default_mese_post_light_top.png b/default/textures/default_mese_post_light_top.png index b11d7d1..365c1a7 100644 Binary files a/default/textures/default_mese_post_light_top.png and b/default/textures/default_mese_post_light_top.png differ diff --git a/default/textures/default_meselamp.png b/default/textures/default_meselamp.png index 6e658f8..0c3a1a1 100644 Binary files a/default/textures/default_meselamp.png and b/default/textures/default_meselamp.png differ diff --git a/default/textures/default_mineral_coal.png b/default/textures/default_mineral_coal.png index b2fa597..6d1386b 100644 Binary files a/default/textures/default_mineral_coal.png and b/default/textures/default_mineral_coal.png differ diff --git a/default/textures/default_mineral_copper.png b/default/textures/default_mineral_copper.png index 30a29eb..c4c518e 100644 Binary files a/default/textures/default_mineral_copper.png and b/default/textures/default_mineral_copper.png differ diff --git a/default/textures/default_mineral_diamond.png b/default/textures/default_mineral_diamond.png index 7ab299b..39c0f83 100644 Binary files a/default/textures/default_mineral_diamond.png and b/default/textures/default_mineral_diamond.png differ diff --git a/default/textures/default_mineral_gold.png b/default/textures/default_mineral_gold.png index 93ee434..2220add 100644 Binary files a/default/textures/default_mineral_gold.png and b/default/textures/default_mineral_gold.png differ diff --git a/default/textures/default_mineral_iron.png b/default/textures/default_mineral_iron.png index a49bf5d..bfec8b1 100644 Binary files a/default/textures/default_mineral_iron.png and b/default/textures/default_mineral_iron.png differ diff --git a/default/textures/default_mineral_mese.png b/default/textures/default_mineral_mese.png index 5720bbb..6952670 100644 Binary files a/default/textures/default_mineral_mese.png and b/default/textures/default_mineral_mese.png differ diff --git a/default/textures/default_mineral_tin.png b/default/textures/default_mineral_tin.png index 4b44906..232d4b5 100644 Binary files a/default/textures/default_mineral_tin.png and b/default/textures/default_mineral_tin.png differ diff --git a/default/textures/default_moss.png b/default/textures/default_moss.png index aadde38..479038e 100644 Binary files a/default/textures/default_moss.png and b/default/textures/default_moss.png differ diff --git a/default/textures/default_moss_side.png b/default/textures/default_moss_side.png index d61cf5f..4a20345 100644 Binary files a/default/textures/default_moss_side.png and b/default/textures/default_moss_side.png differ diff --git a/default/textures/default_mossycobble.png b/default/textures/default_mossycobble.png index 7afb42b..1ae7c91 100644 Binary files a/default/textures/default_mossycobble.png and b/default/textures/default_mossycobble.png differ diff --git a/default/textures/default_obsidian.png b/default/textures/default_obsidian.png index 1fa1dc1..8f4a49c 100644 Binary files a/default/textures/default_obsidian.png and b/default/textures/default_obsidian.png differ diff --git a/default/textures/default_obsidian_block.png b/default/textures/default_obsidian_block.png index 237e294..7e1d4d3 100644 Binary files a/default/textures/default_obsidian_block.png and b/default/textures/default_obsidian_block.png differ diff --git a/default/textures/default_obsidian_brick.png b/default/textures/default_obsidian_brick.png index 90b0571..30c67ca 100644 Binary files a/default/textures/default_obsidian_brick.png and b/default/textures/default_obsidian_brick.png differ diff --git a/default/textures/default_obsidian_glass.png b/default/textures/default_obsidian_glass.png index 1e20203..d5ac83d 100644 Binary files a/default/textures/default_obsidian_glass.png and b/default/textures/default_obsidian_glass.png differ diff --git a/default/textures/default_obsidian_glass_detail.png b/default/textures/default_obsidian_glass_detail.png index 8a8f4f1..a8bbec9 100644 Binary files a/default/textures/default_obsidian_glass_detail.png and b/default/textures/default_obsidian_glass_detail.png differ diff --git a/default/textures/default_obsidian_shard.png b/default/textures/default_obsidian_shard.png index 22f576b..a988d8c 100644 Binary files a/default/textures/default_obsidian_shard.png and b/default/textures/default_obsidian_shard.png differ diff --git a/default/textures/default_paper.png b/default/textures/default_paper.png index 44b7dcb..8f23924 100644 Binary files a/default/textures/default_paper.png and b/default/textures/default_paper.png differ diff --git a/default/textures/default_papyrus.png b/default/textures/default_papyrus.png index a5a5404..a85e809 100644 Binary files a/default/textures/default_papyrus.png and b/default/textures/default_papyrus.png differ diff --git a/default/textures/default_permafrost.png b/default/textures/default_permafrost.png index 86aa8db..6f2567e 100644 Binary files a/default/textures/default_permafrost.png and b/default/textures/default_permafrost.png differ diff --git a/default/textures/default_pine_bush_sapling.png b/default/textures/default_pine_bush_sapling.png index 91ebd35..fadeff8 100644 Binary files a/default/textures/default_pine_bush_sapling.png and b/default/textures/default_pine_bush_sapling.png differ diff --git a/default/textures/default_pine_bush_stem.png b/default/textures/default_pine_bush_stem.png index 490631a..e239f81 100644 Binary files a/default/textures/default_pine_bush_stem.png and b/default/textures/default_pine_bush_stem.png differ diff --git a/default/textures/default_pine_needles.png b/default/textures/default_pine_needles.png index 6f69525..f699727 100644 Binary files a/default/textures/default_pine_needles.png and b/default/textures/default_pine_needles.png differ diff --git a/default/textures/default_pine_sapling.png b/default/textures/default_pine_sapling.png index 22468a1..c30131d 100644 Binary files a/default/textures/default_pine_sapling.png and b/default/textures/default_pine_sapling.png differ diff --git a/default/textures/default_pine_tree.png b/default/textures/default_pine_tree.png index 6d6dccc..4a5328f 100644 Binary files a/default/textures/default_pine_tree.png and b/default/textures/default_pine_tree.png differ diff --git a/default/textures/default_pine_tree_top.png b/default/textures/default_pine_tree_top.png index fc4dad4..8705710 100644 Binary files a/default/textures/default_pine_tree_top.png and b/default/textures/default_pine_tree_top.png differ diff --git a/default/textures/default_pine_wood.png b/default/textures/default_pine_wood.png index 9ca7294..6844ceb 100644 Binary files a/default/textures/default_pine_wood.png and b/default/textures/default_pine_wood.png differ diff --git a/default/textures/default_rainforest_litter.png b/default/textures/default_rainforest_litter.png index b3d0055..d762deb 100644 Binary files a/default/textures/default_rainforest_litter.png and b/default/textures/default_rainforest_litter.png differ diff --git a/default/textures/default_rainforest_litter_side.png b/default/textures/default_rainforest_litter_side.png index f48c4b0..7ccb11d 100644 Binary files a/default/textures/default_rainforest_litter_side.png and b/default/textures/default_rainforest_litter_side.png differ diff --git a/default/textures/default_river_water.png b/default/textures/default_river_water.png index 6ad2746..3b55c5f 100644 Binary files a/default/textures/default_river_water.png and b/default/textures/default_river_water.png differ diff --git a/default/textures/default_river_water_flowing_animated.png b/default/textures/default_river_water_flowing_animated.png index f6c4eb5..536acc5 100644 Binary files a/default/textures/default_river_water_flowing_animated.png and b/default/textures/default_river_water_flowing_animated.png differ diff --git a/default/textures/default_river_water_source_animated.png b/default/textures/default_river_water_source_animated.png index 2902e0c..daa5653 100644 Binary files a/default/textures/default_river_water_source_animated.png and b/default/textures/default_river_water_source_animated.png differ diff --git a/default/textures/default_sand.png b/default/textures/default_sand.png index a2f738d..645a300 100644 Binary files a/default/textures/default_sand.png and b/default/textures/default_sand.png differ diff --git a/default/textures/default_sandstone.png b/default/textures/default_sandstone.png index ac6da13..16e3d13 100644 Binary files a/default/textures/default_sandstone.png and b/default/textures/default_sandstone.png differ diff --git a/default/textures/default_sandstone_block.png b/default/textures/default_sandstone_block.png index 6dbb316..2e06491 100644 Binary files a/default/textures/default_sandstone_block.png and b/default/textures/default_sandstone_block.png differ diff --git a/default/textures/default_sandstone_brick.png b/default/textures/default_sandstone_brick.png index f0b1579..e7150e5 100644 Binary files a/default/textures/default_sandstone_brick.png and b/default/textures/default_sandstone_brick.png differ diff --git a/default/textures/default_sapling.png b/default/textures/default_sapling.png index cb4b3e0..3fd64f0 100644 Binary files a/default/textures/default_sapling.png and b/default/textures/default_sapling.png differ diff --git a/default/textures/default_sign_steel.png b/default/textures/default_sign_steel.png index 993c53c..3ca0c59 100644 Binary files a/default/textures/default_sign_steel.png and b/default/textures/default_sign_steel.png differ diff --git a/default/textures/default_sign_wall_steel.png b/default/textures/default_sign_wall_steel.png index 113b3dc..2227477 100644 Binary files a/default/textures/default_sign_wall_steel.png and b/default/textures/default_sign_wall_steel.png differ diff --git a/default/textures/default_sign_wall_wood.png b/default/textures/default_sign_wall_wood.png index 7413b53..40552c7 100644 Binary files a/default/textures/default_sign_wall_wood.png and b/default/textures/default_sign_wall_wood.png differ diff --git a/default/textures/default_sign_wood.png b/default/textures/default_sign_wood.png index 8d6c04f..d0559da 100644 Binary files a/default/textures/default_sign_wood.png and b/default/textures/default_sign_wood.png differ diff --git a/default/textures/default_silver_sand.png b/default/textures/default_silver_sand.png index 8a47646..c4a8f73 100644 Binary files a/default/textures/default_silver_sand.png and b/default/textures/default_silver_sand.png differ diff --git a/default/textures/default_silver_sandstone.png b/default/textures/default_silver_sandstone.png index 75d2a81..eac62cb 100644 Binary files a/default/textures/default_silver_sandstone.png and b/default/textures/default_silver_sandstone.png differ diff --git a/default/textures/default_silver_sandstone_block.png b/default/textures/default_silver_sandstone_block.png index c3e67df..9997461 100644 Binary files a/default/textures/default_silver_sandstone_block.png and b/default/textures/default_silver_sandstone_block.png differ diff --git a/default/textures/default_silver_sandstone_brick.png b/default/textures/default_silver_sandstone_brick.png index 00c828b..93d87a5 100644 Binary files a/default/textures/default_silver_sandstone_brick.png and b/default/textures/default_silver_sandstone_brick.png differ diff --git a/default/textures/default_snow.png b/default/textures/default_snow.png index e880eda..fcbef0e 100644 Binary files a/default/textures/default_snow.png and b/default/textures/default_snow.png differ diff --git a/default/textures/default_snow_side.png b/default/textures/default_snow_side.png index cf932d7..03456c8 100644 Binary files a/default/textures/default_snow_side.png and b/default/textures/default_snow_side.png differ diff --git a/default/textures/default_snowball.png b/default/textures/default_snowball.png index e9a7d7c..3a4dc1f 100644 Binary files a/default/textures/default_snowball.png and b/default/textures/default_snowball.png differ diff --git a/default/textures/default_steel_block.png b/default/textures/default_steel_block.png index e9b0143..7f49f61 100644 Binary files a/default/textures/default_steel_block.png and b/default/textures/default_steel_block.png differ diff --git a/default/textures/default_steel_ingot.png b/default/textures/default_steel_ingot.png index c01e70e..8100b01 100644 Binary files a/default/textures/default_steel_ingot.png and b/default/textures/default_steel_ingot.png differ diff --git a/default/textures/default_stick.png b/default/textures/default_stick.png index 1f4e448..0378d07 100644 Binary files a/default/textures/default_stick.png and b/default/textures/default_stick.png differ diff --git a/default/textures/default_stone.png b/default/textures/default_stone.png index 88a3d22..63cb7c4 100644 Binary files a/default/textures/default_stone.png and b/default/textures/default_stone.png differ diff --git a/default/textures/default_stone_block.png b/default/textures/default_stone_block.png index 57437ec..3b771e7 100644 Binary files a/default/textures/default_stone_block.png and b/default/textures/default_stone_block.png differ diff --git a/default/textures/default_stone_brick.png b/default/textures/default_stone_brick.png index 0e3908e..4dbb49d 100644 Binary files a/default/textures/default_stone_brick.png and b/default/textures/default_stone_brick.png differ diff --git a/default/textures/default_stones.png b/default/textures/default_stones.png index 523c0cf..4d3b6cf 100644 Binary files a/default/textures/default_stones.png and b/default/textures/default_stones.png differ diff --git a/default/textures/default_stones_side.png b/default/textures/default_stones_side.png index efa5534..7ae823a 100644 Binary files a/default/textures/default_stones_side.png and b/default/textures/default_stones_side.png differ diff --git a/default/textures/default_tin_block.png b/default/textures/default_tin_block.png index 7328bdc..72759b0 100644 Binary files a/default/textures/default_tin_block.png and b/default/textures/default_tin_block.png differ diff --git a/default/textures/default_tin_ingot.png b/default/textures/default_tin_ingot.png index f596825..eed5361 100644 Binary files a/default/textures/default_tin_ingot.png and b/default/textures/default_tin_ingot.png differ diff --git a/default/textures/default_tin_lump.png b/default/textures/default_tin_lump.png index 3d3c822..72bd339 100644 Binary files a/default/textures/default_tin_lump.png and b/default/textures/default_tin_lump.png differ diff --git a/default/textures/default_tool_bronzeaxe.png b/default/textures/default_tool_bronzeaxe.png index f865d2d..8ae43b5 100644 Binary files a/default/textures/default_tool_bronzeaxe.png and b/default/textures/default_tool_bronzeaxe.png differ diff --git a/default/textures/default_tool_bronzepick.png b/default/textures/default_tool_bronzepick.png index 5641e47..c88a5f0 100644 Binary files a/default/textures/default_tool_bronzepick.png and b/default/textures/default_tool_bronzepick.png differ diff --git a/default/textures/default_tool_bronzeshovel.png b/default/textures/default_tool_bronzeshovel.png index 0ca75e0..d7d800e 100644 Binary files a/default/textures/default_tool_bronzeshovel.png and b/default/textures/default_tool_bronzeshovel.png differ diff --git a/default/textures/default_tool_bronzesword.png b/default/textures/default_tool_bronzesword.png index 6ea5018..cdab898 100644 Binary files a/default/textures/default_tool_bronzesword.png and b/default/textures/default_tool_bronzesword.png differ diff --git a/default/textures/default_tool_diamondaxe.png b/default/textures/default_tool_diamondaxe.png index ff35280..e32a0bf 100644 Binary files a/default/textures/default_tool_diamondaxe.png and b/default/textures/default_tool_diamondaxe.png differ diff --git a/default/textures/default_tool_diamondpick.png b/default/textures/default_tool_diamondpick.png index d51b644..f9883c6 100644 Binary files a/default/textures/default_tool_diamondpick.png and b/default/textures/default_tool_diamondpick.png differ diff --git a/default/textures/default_tool_diamondshovel.png b/default/textures/default_tool_diamondshovel.png index 87ecf14..d0fe24d 100644 Binary files a/default/textures/default_tool_diamondshovel.png and b/default/textures/default_tool_diamondshovel.png differ diff --git a/default/textures/default_tool_diamondsword.png b/default/textures/default_tool_diamondsword.png index 4448b95..dbccd0e 100644 Binary files a/default/textures/default_tool_diamondsword.png and b/default/textures/default_tool_diamondsword.png differ diff --git a/default/textures/default_tool_meseaxe.png b/default/textures/default_tool_meseaxe.png index 37e9913..c01fb4f 100644 Binary files a/default/textures/default_tool_meseaxe.png and b/default/textures/default_tool_meseaxe.png differ diff --git a/default/textures/default_tool_mesepick.png b/default/textures/default_tool_mesepick.png index a92c5d7..1b2e25b 100644 Binary files a/default/textures/default_tool_mesepick.png and b/default/textures/default_tool_mesepick.png differ diff --git a/default/textures/default_tool_meseshovel.png b/default/textures/default_tool_meseshovel.png index 0f34dff..00813a2 100644 Binary files a/default/textures/default_tool_meseshovel.png and b/default/textures/default_tool_meseshovel.png differ diff --git a/default/textures/default_tool_mesesword.png b/default/textures/default_tool_mesesword.png index 0ac7d71..d395d3a 100644 Binary files a/default/textures/default_tool_mesesword.png and b/default/textures/default_tool_mesesword.png differ diff --git a/default/textures/default_tool_steelaxe.png b/default/textures/default_tool_steelaxe.png index b8a5345..1528cad 100644 Binary files a/default/textures/default_tool_steelaxe.png and b/default/textures/default_tool_steelaxe.png differ diff --git a/default/textures/default_tool_steelpick.png b/default/textures/default_tool_steelpick.png index 83b76d7..a7543a1 100644 Binary files a/default/textures/default_tool_steelpick.png and b/default/textures/default_tool_steelpick.png differ diff --git a/default/textures/default_tool_steelshovel.png b/default/textures/default_tool_steelshovel.png index 6168512..65e4045 100644 Binary files a/default/textures/default_tool_steelshovel.png and b/default/textures/default_tool_steelshovel.png differ diff --git a/default/textures/default_tool_steelsword.png b/default/textures/default_tool_steelsword.png index 1b3ddb6..630a339 100644 Binary files a/default/textures/default_tool_steelsword.png and b/default/textures/default_tool_steelsword.png differ diff --git a/default/textures/default_tool_stoneaxe.png b/default/textures/default_tool_stoneaxe.png index 97900b2..cc36054 100644 Binary files a/default/textures/default_tool_stoneaxe.png and b/default/textures/default_tool_stoneaxe.png differ diff --git a/default/textures/default_tool_stonepick.png b/default/textures/default_tool_stonepick.png index 39201e3..237d739 100644 Binary files a/default/textures/default_tool_stonepick.png and b/default/textures/default_tool_stonepick.png differ diff --git a/default/textures/default_tool_stoneshovel.png b/default/textures/default_tool_stoneshovel.png index 1d30ac2..11711bd 100644 Binary files a/default/textures/default_tool_stoneshovel.png and b/default/textures/default_tool_stoneshovel.png differ diff --git a/default/textures/default_tool_stonesword.png b/default/textures/default_tool_stonesword.png index be19f15..1a493ac 100644 Binary files a/default/textures/default_tool_stonesword.png and b/default/textures/default_tool_stonesword.png differ diff --git a/default/textures/default_tool_woodaxe.png b/default/textures/default_tool_woodaxe.png index 982fd0e..68f1fd8 100644 Binary files a/default/textures/default_tool_woodaxe.png and b/default/textures/default_tool_woodaxe.png differ diff --git a/default/textures/default_tool_woodpick.png b/default/textures/default_tool_woodpick.png index 4847236..0aed583 100644 Binary files a/default/textures/default_tool_woodpick.png and b/default/textures/default_tool_woodpick.png differ diff --git a/default/textures/default_tool_woodshovel.png b/default/textures/default_tool_woodshovel.png index de05143..dcef2b5 100644 Binary files a/default/textures/default_tool_woodshovel.png and b/default/textures/default_tool_woodshovel.png differ diff --git a/default/textures/default_tool_woodsword.png b/default/textures/default_tool_woodsword.png index 8b11a93..c78ba50 100644 Binary files a/default/textures/default_tool_woodsword.png and b/default/textures/default_tool_woodsword.png differ diff --git a/default/textures/default_torch_animated.png b/default/textures/default_torch_animated.png index a69ae04..cdf33ef 100644 Binary files a/default/textures/default_torch_animated.png and b/default/textures/default_torch_animated.png differ diff --git a/default/textures/default_torch_on_ceiling_animated.png b/default/textures/default_torch_on_ceiling_animated.png index c2b0a19..3a8b5ad 100644 Binary files a/default/textures/default_torch_on_ceiling_animated.png and b/default/textures/default_torch_on_ceiling_animated.png differ diff --git a/default/textures/default_torch_on_floor.png b/default/textures/default_torch_on_floor.png index 7338813..bc4bdd6 100644 Binary files a/default/textures/default_torch_on_floor.png and b/default/textures/default_torch_on_floor.png differ diff --git a/default/textures/default_torch_on_floor_animated.png b/default/textures/default_torch_on_floor_animated.png index ddbc219..ad51c03 100644 Binary files a/default/textures/default_torch_on_floor_animated.png and b/default/textures/default_torch_on_floor_animated.png differ diff --git a/default/textures/default_tree.png b/default/textures/default_tree.png index aa97b59..10e297b 100644 Binary files a/default/textures/default_tree.png and b/default/textures/default_tree.png differ diff --git a/default/textures/default_tree_top.png b/default/textures/default_tree_top.png index 42fe344..da99bce 100644 Binary files a/default/textures/default_tree_top.png and b/default/textures/default_tree_top.png differ diff --git a/default/textures/default_water.png b/default/textures/default_water.png index 20854e9..00500e9 100644 Binary files a/default/textures/default_water.png and b/default/textures/default_water.png differ diff --git a/default/textures/default_water_flowing_animated.png b/default/textures/default_water_flowing_animated.png index 3214d60..070d797 100644 Binary files a/default/textures/default_water_flowing_animated.png and b/default/textures/default_water_flowing_animated.png differ diff --git a/default/textures/default_water_source_animated.png b/default/textures/default_water_source_animated.png index 7ab35e4..7e7f9ff 100644 Binary files a/default/textures/default_water_source_animated.png and b/default/textures/default_water_source_animated.png differ diff --git a/default/textures/default_wood.png b/default/textures/default_wood.png index dfd3a34..af56d6c 100644 Binary files a/default/textures/default_wood.png and b/default/textures/default_wood.png differ diff --git a/default/textures/gui_formbg.png b/default/textures/gui_formbg.png index 12f909f..c543466 100644 Binary files a/default/textures/gui_formbg.png and b/default/textures/gui_formbg.png differ diff --git a/default/textures/gui_furnace_arrow_bg.png b/default/textures/gui_furnace_arrow_bg.png index b47657d..046d8cd 100644 Binary files a/default/textures/gui_furnace_arrow_bg.png and b/default/textures/gui_furnace_arrow_bg.png differ diff --git a/default/textures/gui_furnace_arrow_fg.png b/default/textures/gui_furnace_arrow_fg.png index ffdf073..8d3c396 100644 Binary files a/default/textures/gui_furnace_arrow_fg.png and b/default/textures/gui_furnace_arrow_fg.png differ diff --git a/default/textures/gui_hb_bg.png b/default/textures/gui_hb_bg.png index 44d6f2e..99248e1 100644 Binary files a/default/textures/gui_hb_bg.png and b/default/textures/gui_hb_bg.png differ diff --git a/default/textures/gui_hotbar.png b/default/textures/gui_hotbar.png new file mode 100644 index 0000000..7bc7887 Binary files /dev/null and b/default/textures/gui_hotbar.png differ diff --git a/default/textures/gui_hotbar_selected.png b/default/textures/gui_hotbar_selected.png new file mode 100644 index 0000000..7203e9a Binary files /dev/null and b/default/textures/gui_hotbar_selected.png differ diff --git a/default/textures/heart.png b/default/textures/heart.png index cc21594..6d4e228 100644 Binary files a/default/textures/heart.png and b/default/textures/heart.png differ diff --git a/default/textures/wieldhand.png b/default/textures/wieldhand.png index 98ce1be..69f4b7b 100644 Binary files a/default/textures/wieldhand.png and b/default/textures/wieldhand.png differ diff --git a/default/tools.lua b/default/tools.lua index 9f503ed..e3c974c 100644 --- a/default/tools.lua +++ b/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,62 @@ minetest.register_tool("default:sword_diamond", { damage_groups = {fleshy=8}, }, sound = {breaks = "default_tool_breaks"}, + groups = {sword = 1} }) +-- +-- Register Craft Recipies +-- + +local craft_ingreds = { + wood = "group:wood", + stone = "group:stone", + steel = "default:steel_ingot", + bronze = "default:bronze_ingot", + mese = "default:mese_crystal", + diamond = "default:diamond" +} + +for name, mat in pairs(craft_ingreds) do + minetest.register_craft({ + output = "default:pick_".. name, + recipe = { + {mat, mat, mat}, + {"", "group:stick", ""}, + {"", "group:stick", ""} + } + }) + + minetest.register_craft({ + output = "default:shovel_".. name, + recipe = { + {mat}, + {"group:stick"}, + {"group:stick"} + } + }) + + minetest.register_craft({ + output = "default:axe_".. name, + recipe = { + {mat, mat}, + {mat, "group:stick"}, + {"", "group:stick"} + } + }) + + minetest.register_craft({ + output = "default:sword_".. name, + recipe = { + {mat}, + {mat}, + {"group:stick"} + } + }) +end + 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, @@ -418,3 +492,27 @@ minetest.register_tool("default:key", { return nil end }) + +minetest.register_craft({ + type = "fuel", + recipe = "default:pick_wood", + burntime = 6, +}) + +minetest.register_craft({ + type = "fuel", + recipe = "default:shovel_wood", + burntime = 4, +}) + +minetest.register_craft({ + type = "fuel", + recipe = "default:axe_wood", + burntime = 6, +}) + +minetest.register_craft({ + type = "fuel", + recipe = "default:sword_wood", + burntime = 5, +}) diff --git a/default/torch.lua b/default/torch.lua index 5de5f89..c06dee8 100644 --- a/default/torch.lua +++ b/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' @@ -6,7 +11,8 @@ local function on_flood(pos, oldnode, newnode) nodedef.groups.igniter and nodedef.groups.igniter > 0) then minetest.sound_play( "default_cool_lava", - {pos = pos, max_hear_distance = 16, gain = 0.1} + {pos = pos, max_hear_distance = 16, gain = 0.1}, + true ) end -- Remove the torch node @@ -14,7 +20,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", @@ -65,6 +71,7 @@ minetest.register_node("default:torch", { end, floodable = true, on_flood = on_flood, + on_rotate = false }) minetest.register_node("default:torch_wall", { @@ -88,6 +95,7 @@ minetest.register_node("default:torch_wall", { sounds = default.node_sound_wood_defaults(), floodable = true, on_flood = on_flood, + on_rotate = false }) minetest.register_node("default:torch_ceiling", { @@ -111,6 +119,7 @@ minetest.register_node("default:torch_ceiling", { sounds = default.node_sound_wood_defaults(), floodable = true, on_flood = on_flood, + on_rotate = false }) minetest.register_lbm({ @@ -129,3 +138,17 @@ minetest.register_lbm({ end end }) + +minetest.register_craft({ + output = "default:torch 4", + recipe = { + {"default:coal_lump"}, + {"group:stick"}, + } +}) + +minetest.register_craft({ + type = "fuel", + recipe = "default:torch", + burntime = 4, +}) diff --git a/default/trees.lua b/default/trees.lua index 564b714..a850644 100644 --- a/default/trees.lua +++ b/default/trees.lua @@ -1,3 +1,8 @@ +-- default/trees.lua + +-- support for MT game translation. +local S = default.get_translator + local random = math.random -- @@ -11,9 +16,7 @@ function default.can_grow(pos) if not node_under then return false end - local name_under = node_under.name - local is_soil = minetest.get_item_group(name_under, "soil") - if is_soil == 0 then + if minetest.get_item_group(node_under.name, "soil") == 0 then return false end local light_level = minetest.get_node_light(pos) @@ -560,9 +563,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/doors/README.txt b/doors/README.txt index 9c114b0..f9caaff 100644 --- a/doors/README.txt +++ b/doors/README.txt @@ -40,8 +40,10 @@ Following textures created by PenguinDad (CC BY-SA 4.0): Following textures created by sofar (CC-BY-SA-3.0): doors_trapdoor_steel.png - doors_trapdoor_steel_side.png + +Following textures created by paramat (CC-BY-SA-3.0): door_trapdoor_side.png + doors_trapdoor_steel_side.png Obsidian door textures by red-001 based on textures by Pilzadam and BlockMen (CC BY-SA 3.0): door_obsidian_glass.png diff --git a/doors/depends.txt b/doors/depends.txt deleted file mode 100644 index 5e28bee..0000000 --- a/doors/depends.txt +++ /dev/null @@ -1,2 +0,0 @@ -default -screwdriver? diff --git a/doors/init.lua b/doors/init.lua index 0205ec7..2048a64 100644 --- a/doors/init.lua +++ b/doors/init.lua @@ -1,9 +1,15 @@ +-- doors/init.lua + -- our API object doors = {} doors.registered_doors = {} doors.registered_trapdoors = {} +-- Load support for MT game translation. +local S = minetest.get_translator("doors") + + local function replace_old_owner_information(pos) local meta = minetest.get_meta(pos) local owner = meta:get_string("doors_owner") @@ -71,10 +77,8 @@ 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", + description = S("Hidden Door Segment"), + drawtype = "airlike", paramtype = "light", paramtype2 = "facedir", sunlight_propagates = true, @@ -87,13 +91,7 @@ minetest.register_node("doors:hidden", { 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 + -- 1px block inside door hinge near node top collision_box = { type = "fixed", fixed = {-15/32, 13/32, -15/32, -13/32, 1/2, -13/32}, @@ -109,10 +107,10 @@ local transform = { {v = "_a", param2 = 2}, }, { - {v = "_b", param2 = 1}, - {v = "_b", param2 = 2}, - {v = "_b", param2 = 3}, - {v = "_b", param2 = 0}, + {v = "_c", param2 = 1}, + {v = "_c", param2 = 2}, + {v = "_c", param2 = 3}, + {v = "_c", param2 = 0}, }, { {v = "_b", param2 = 1}, @@ -121,10 +119,10 @@ local transform = { {v = "_b", param2 = 0}, }, { - {v = "_a", param2 = 3}, - {v = "_a", param2 = 0}, - {v = "_a", param2 = 1}, - {v = "_a", param2 = 2}, + {v = "_d", param2 = 3}, + {v = "_d", param2 = 0}, + {v = "_d", param2 = 1}, + {v = "_d", param2 = 2}, }, } @@ -170,10 +168,10 @@ function doors.door_toggle(pos, node, clicker) if state % 2 == 0 then minetest.sound_play(def.door.sounds[1], - {pos = pos, gain = 0.3, max_hear_distance = 10}) + {pos = pos, gain = 0.3, max_hear_distance = 10}, true) else minetest.sound_play(def.door.sounds[2], - {pos = pos, gain = 0.3, max_hear_distance = 10}) + {pos = pos, gain = 0.3, max_hear_distance = 10}, true) end minetest.swap_node(pos, { @@ -327,14 +325,14 @@ function doors.register(name, def) if def.protected then meta:set_string("owner", pn) - meta:set_string("infotext", "Owned by " .. pn) + meta:set_string("infotext", def.description .. "\n" .. S("Owned by @1", 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}) + minetest.sound_play(def.sounds.place, {pos = pos}, true) on_place_node(pos, minetest.get_node(pos), placer, node, itemstack, pointed_thing) @@ -401,7 +399,7 @@ function doors.register(name, def) -- 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.") + minetest.chat_send_player(pname, S("You do not own this locked door.")) return nil end @@ -411,7 +409,7 @@ function doors.register(name, def) meta:set_string("key_lock_secret", secret) end - return secret, "a locked door", owner + return secret, S("a locked door"), owner end def.node_dig_prediction = "" else @@ -443,15 +441,23 @@ function doors.register(name, def) def.mesh = "door_b.obj" minetest.register_node(":" .. name .. "_b", def) + def.mesh = "door_a2.obj" + minetest.register_node(":" .. name .. "_c", def) + + def.mesh = "door_b2.obj" + minetest.register_node(":" .. name .. "_d", def) + doors.registered_doors[name .. "_a"] = true doors.registered_doors[name .. "_b"] = true + doors.registered_doors[name .. "_c"] = true + doors.registered_doors[name .. "_d"] = true end doors.register("door_wood", { tiles = {{ name = "doors_door_wood.png", backface_culling = true }}, - description = "Wooden Door", + description = S("Wooden Door"), inventory_image = "doors_item_wood.png", - groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2}, + groups = {node = 1, choppy = 2, oddly_breakable_by_hand = 2, flammable = 2}, recipe = { {"group:wood", "group:wood"}, {"group:wood", "group:wood"}, @@ -461,10 +467,10 @@ doors.register("door_wood", { doors.register("door_steel", { tiles = {{name = "doors_door_steel.png", backface_culling = true}}, - description = "Steel Door", + description = S("Steel Door"), inventory_image = "doors_item_steel.png", protected = true, - groups = {cracky = 1, level = 2}, + groups = {node = 1, cracky = 1, level = 2}, sounds = default.node_sound_metal_defaults(), sound_open = "doors_steel_door_open", sound_close = "doors_steel_door_close", @@ -477,9 +483,9 @@ doors.register("door_steel", { doors.register("door_glass", { tiles = {"doors_door_glass.png"}, - description = "Glass Door", + description = S("Glass Door"), inventory_image = "doors_item_glass.png", - groups = {cracky=3, oddly_breakable_by_hand=3}, + groups = {node = 1, 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", @@ -492,9 +498,9 @@ doors.register("door_glass", { doors.register("door_obsidian_glass", { tiles = {"doors_door_obsidian_glass.png"}, - description = "Obsidian Glass Door", + description = S("Obsidian Glass Door"), inventory_image = "doors_item_obsidian_glass.png", - groups = {cracky=3}, + groups = {node = 1, cracky=3}, sounds = default.node_sound_glass_defaults(), sound_open = "doors_glass_door_open", sound_close = "doors_glass_door_close", @@ -544,12 +550,12 @@ function doors.trapdoor_toggle(pos, node, clicker) if string.sub(node.name, -5) == "_open" then minetest.sound_play(def.sound_close, - {pos = pos, gain = 0.3, max_hear_distance = 10}) + {pos = pos, gain = 0.3, max_hear_distance = 10}, true) 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}) + {pos = pos, gain = 0.3, max_hear_distance = 10}, true) minetest.swap_node(pos, {name = node.name .. "_open", param1 = node.param1, param2 = node.param2}) end @@ -580,7 +586,7 @@ function doors.register_trapdoor(name, def) local pn = placer:get_player_name() local meta = minetest.get_meta(pos) meta:set_string("owner", pn) - meta:set_string("infotext", "Owned by "..pn) + meta:set_string("infotext", def.description .. "\n" .. S("Owned by @1", pn)) return (creative and creative.is_enabled_for and creative.is_enabled_for(pn)) end @@ -599,7 +605,7 @@ function doors.register_trapdoor(name, def) -- 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.") + minetest.chat_send_player(pname, S("You do not own this trapdoor.")) return nil end @@ -609,7 +615,7 @@ function doors.register_trapdoor(name, def) meta:set_string("key_lock_secret", secret) end - return secret, "a locked trapdoor", owner + return secret, S("a locked trapdoor"), owner end def.node_dig_prediction = "" else @@ -642,10 +648,14 @@ function doors.register_trapdoor(name, def) 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_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", @@ -655,11 +665,14 @@ function doors.register_trapdoor(name, def) 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.tiles = { + def.tile_side, + def.tile_side .. '^[transform2', + 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 @@ -672,7 +685,7 @@ function doors.register_trapdoor(name, def) end doors.register_trapdoor("doors:trapdoor", { - description = "Wooden Trapdoor", + description = S("Wooden Trapdoor"), inventory_image = "doors_trapdoor.png", wield_image = "doors_trapdoor.png", tile_front = "doors_trapdoor.png", @@ -681,7 +694,7 @@ doors.register_trapdoor("doors:trapdoor", { }) doors.register_trapdoor("doors:trapdoor_steel", { - description = "Steel Trapdoor", + description = S("Steel Trapdoor"), inventory_image = "doors_trapdoor_steel.png", wield_image = "doors_trapdoor_steel.png", tile_front = "doors_trapdoor_steel.png", @@ -694,24 +707,25 @@ doors.register_trapdoor("doors:trapdoor_steel", { }) minetest.register_craft({ - output = 'doors:trapdoor 2', + output = "doors:trapdoor 2", 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"}, + {"", "", ""}, } }) minetest.register_craft({ - output = 'doors:trapdoor_steel', + output = "doors:trapdoor_steel", 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"}, } }) ----fence gate---- +local fence_collision_extra = minetest.settings:get_bool("enable_fence_tall") and 3/8 or 0 function doors.register_fencegate(name, def) local fence = { @@ -730,12 +744,12 @@ function doors.register_fencegate(name, def) 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}) + max_hear_distance = 8}, true) return itemstack end, selection_box = { type = "fixed", - fixed = {-1/2, -1/2, -1/4, 1/2, 1/2, 1/4}, + fixed = {-1/2, -1/2, -1/4, 1/2, 1/2, 1/4} }, } @@ -761,7 +775,7 @@ function doors.register_fencegate(name, def) 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}, + fixed = {-1/2, -1/2, -1/8, 1/2, 1/2 + fence_collision_extra, 1/8} } local fence_open = table.copy(fence) @@ -771,8 +785,8 @@ function doors.register_fencegate(name, def) 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}}, + fixed = {{-1/2, -1/2, -1/8, -3/8, 1/2 + fence_collision_extra, 1/8}, + {-1/2, -3/8, -1/2, -3/8, 3/8, 0 }} } minetest.register_node(":" .. name .. "_closed", fence_closed) @@ -781,42 +795,42 @@ function doors.register_fencegate(name, def) minetest.register_craft({ output = name .. "_closed", recipe = { - {"default:stick", def.material, "default:stick"}, - {"default:stick", def.material, "default:stick"} + {"group:stick", def.material, "group:stick"}, + {"group:stick", def.material, "group:stick"} } }) end doors.register_fencegate("doors:gate_wood", { - description = "Apple Wood Fence Gate", + description = S("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", + description = S("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", + description = S("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", + description = S("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", + description = S("Aspen Wood Fence Gate"), texture = "default_aspen_wood.png", material = "default:aspen_wood", groups = {choppy = 3, oddly_breakable_by_hand = 2, flammable = 3} diff --git a/doors/locale/doors.de.tr b/doors/locale/doors.de.tr new file mode 100644 index 0000000..79707ce --- /dev/null +++ b/doors/locale/doors.de.tr @@ -0,0 +1,18 @@ +# textdomain: doors +Hidden Door Segment=Verborgenes Türsegment +Owned by @1=Eigentum von @1 +You do not own this locked door.=Diese abgeschlossene Tür gehört Ihnen nicht. +a locked door=eine abgeschlossene Tür +Wooden Door=Holztür +Steel Door=Stahltür +Glass Door=Glastür +Obsidian Glass Door=Obsidianglastür +You do not own this trapdoor.=Diese Falltür gehört Ihnen nicht. +a locked trapdoor=eine abgeschlossene Falltür +Wooden Trapdoor=Holzfalltür +Steel Trapdoor=Stahlfalltür +Apple Wood Fence Gate=Apfelholzzauntor +Acacia Wood Fence Gate=Akazienholzzauntor +Jungle Wood Fence Gate=Dschungelholzzauntor +Pine Wood Fence Gate=Kiefernholzzauntor +Aspen Wood Fence Gate=Espenholzzauntor diff --git a/doors/locale/doors.es.tr b/doors/locale/doors.es.tr new file mode 100644 index 0000000..677f2df --- /dev/null +++ b/doors/locale/doors.es.tr @@ -0,0 +1,18 @@ +# textdomain: doors +Hidden Door Segment=Segmento de puerta oculta +Owned by @1=Propiedad de @1 +You do not own this locked door.=Esta puerta cerrada no te pertenece. +a locked door=una puerta cerrada +Wooden Door=Puerta de madera +Steel Door=Puerta de acero +Glass Door=Puerta de vidrio +Obsidian Glass Door=Puerta de vidrio de obsidiana +You do not own this trapdoor.=Esta trampilla no te pertenece. +a locked trapdoor=una trampilla cerrada +Wooden Trapdoor=Trampilla de madera +Steel Trapdoor=Trampilla de acero +Apple Wood Fence Gate=Puerta de cerca de manzano +Acacia Wood Fence Gate=Puerta de cerca de acacia +Jungle Wood Fence Gate=Puerta de cerca de madera tropical +Pine Wood Fence Gate=Puerta de cerca de pino +Aspen Wood Fence Gate=Puerta de cerca de álamo diff --git a/doors/locale/doors.fr.tr b/doors/locale/doors.fr.tr new file mode 100644 index 0000000..930f75c --- /dev/null +++ b/doors/locale/doors.fr.tr @@ -0,0 +1,18 @@ +# textdomain: doors +Hidden Door Segment=Segment de porte cachée +Owned by @1=Possédée par @1 +You do not own this locked door.=Cette porte vérouillée ne vous appartient pas. +a locked door=une porte verouillée +Wooden Door=Porte en bois +Steel Door=Porte en acier +Glass Door=Porte en verre +Obsidian Glass Door=Porte en verre d'obsidienne +You do not own this trapdoor.=Vous ne possédez pas cette trappe. +a locked trapdoor=une trappe verouillée +Wooden Trapdoor=Trappe en bois +Steel Trapdoor=Trappe en acier +Apple Wood Fence Gate=Porte de clôture en bois de pommier +Acacia Wood Fence Gate=Porte de clôture en bois d'acacia +Jungle Wood Fence Gate=Porte de clôture en bois de la jungle +Pine Wood Fence Gate=Porte de clôture en bois de pin +Aspen Wood Fence Gate=Porte de clôture en bois de tremble diff --git a/doors/locale/doors.it.tr b/doors/locale/doors.it.tr new file mode 100644 index 0000000..4a9599d --- /dev/null +++ b/doors/locale/doors.it.tr @@ -0,0 +1,19 @@ +# textdomain: doors +Hidden Door Segment=Segmento di porta nascosto +Owned by @1=Di proprietà di @1 +You do not own this locked door.=Non sei il proprietario di questa porta chiusa a chiave. +a locked door=una porta chiusa a chiave +Wooden Door=Porta di legno +Steel Door=Porta d'acciaio +Glass Door=Porta di vetro +Obsidian Glass Door=Porta di vetro d'ossidiana +Owned by @1=Di proprietà di @1 +You do not own this trapdoor.=Non sei il proprietario di questa botola. +a locked trapdoor=una botola chiusa a chiave +Wooden Trapdoor=Botola di legno +Steel Trapdoor=Botola d'acciaio +Apple Wood Fence Gate=Cancello della recinzione di legno di melo +Acacia Wood Fence Gate=Cancello della recinzione di legno d'acacia +Jungle Wood Fence Gate=Cancello della recinzione di legno della giungla +Pine Wood Fence Gate=Cancello della recinzione di legno di pino +Aspen Wood Fence Gate=Cancello della recinzione di legno di pioppo diff --git a/doors/locale/doors.ms.tr b/doors/locale/doors.ms.tr new file mode 100644 index 0000000..93d6df2 --- /dev/null +++ b/doors/locale/doors.ms.tr @@ -0,0 +1,18 @@ +# textdomain: doors +Hidden Door Segment=Segmen Pintu Tersembunyi +Owned by @1=Milik @1 +You do not own this locked door.=Anda bukan pemilik pintu berkunci ini. +a locked door=pintu berkunci +Wooden Door=Pintu Kayu +Steel Door=Pintu Keluli +Glass Door=Pintu Kaca +Obsidian Glass Door=Pintu Kaca Obsidia +You do not own this trapdoor.=Anda bukan pemilik pintu kolong ini. +a locked trapdoor=pintu kolong berkunci +Wooden Trapdoor=Pintu Kolong Kayu +Steel Trapdoor=Pintu Kolong Keluli +Apple Wood Fence Gate=Pintu Pagar Kayu Epal +Acacia Wood Fence Gate=Pintu Pagar Kayu Akasia +Jungle Wood Fence Gate=Pintu Pagar Kayu Hutan +Pine Wood Fence Gate=Pintu Pagar Kayu Pain +Aspen Wood Fence Gate=Pintu Pagar Kayu Aspen diff --git a/doors/locale/doors.ru.tr b/doors/locale/doors.ru.tr new file mode 100644 index 0000000..dc5c3c0 --- /dev/null +++ b/doors/locale/doors.ru.tr @@ -0,0 +1,18 @@ +# textdomain: doors +Hidden Door Segment=Спрятанная Часть Двери +Owned by @1=Владелец: @1 +You do not own this locked door.=Вы не владелец этой заблокированной двери. +a locked door=заблокированная дверь +Wooden Door=Деревянная Дверь +Steel Door=Стальная Дверь +Glass Door=Стеклянная Дверь +Obsidian Glass Door=Дверь Из Обсидианового Стекла +You do not own this trapdoor.=Вы не владелец этого люка. +a locked trapdoor=заблокированный люк +Wooden Trapdoor=Деревянный Люк +Steel Trapdoor=Стальной Люк +Apple Wood Fence Gate=Яблоневая Деревянная Калитка +Acacia Wood Fence Gate=Деревянная Калитка Из Акации +Jungle Wood Fence Gate=Деревянная Калитка Из Тропического Дерева +Pine Wood Fence Gate=Сосновая Деревянная Калитка +Aspen Wood Fence Gate=Осиновая Деревянная Калитка diff --git a/doors/locale/doors.se.tr b/doors/locale/doors.se.tr new file mode 100644 index 0000000..1ecbead --- /dev/null +++ b/doors/locale/doors.se.tr @@ -0,0 +1,19 @@ +# textdomain: doors +Hidden Door Segment=Dold dörrsegment +Owned by @1=Ägd av @1 +You do not own this locked door.=Du äger inte denna låsta dörr. +a locked door=en låst dörr +Wooden Door=Trä Dörr +Steel Door=Stål Dörr +Glass Door=Glas Dörr +Obsidian Glass Door=Obsidian Glas Dörr +Owned by @1=Ägd av @1 +You do not own this trapdoor.=Du äger inte denna fallucka +a locked trapdoor=en låst fallucka +Wooden Trapdoor=Trä Fallucka +Steel Trapdoor=Stål Fallucka +Apple Wood Fence Gate=Äpple Trä Fallucka +Acacia Wood Fence Gate=Akacia Trä Fallucka +Jungle Wood Fence Gate=Djungel Trä Fallucka +Pine Wood Fence Gate=Tall Trä Fallucka +Aspen Wood Fence Gate=Asp Trä Fallucka \ No newline at end of file diff --git a/doors/locale/doors.zh_CN.tr b/doors/locale/doors.zh_CN.tr new file mode 100644 index 0000000..5294558 --- /dev/null +++ b/doors/locale/doors.zh_CN.tr @@ -0,0 +1,18 @@ +# textdomain: doors +Hidden Door Segment=隐藏门段 +Owned by @1=由@1拥有 +You do not own this locked door.=这个门不属于你所有。 +a locked door=一扇已上锁的门 +Wooden Door=木门 +Steel Door=铁门 +Glass Door=玻璃门 +Obsidian Glass Door=黑曜石玻璃门 +You do not own this trapdoor.=这个活板门不属于你所有。 +a locked trapdoor=一扇已上锁的活板门 +Wooden Trapdoor=木活板门 +Steel Trapdoor=铁活板门 +Apple Wood Fence Gate=用苹果树做的木栅栏门 +Acacia Wood Fence Gate=相思木栅栏门 +Jungle Wood Fence Gate=丛林木栅栏门 +Pine Wood Fence Gate=松木栅栏门 +Aspen Wood Fence Gate=白杨木栅栏门 diff --git a/doors/locale/doors.zh_TW.tr b/doors/locale/doors.zh_TW.tr new file mode 100644 index 0000000..47959ee --- /dev/null +++ b/doors/locale/doors.zh_TW.tr @@ -0,0 +1,18 @@ +# textdomain: doors +Hidden Door Segment=隱藏門段 +Owned by @1=由@1擁有 +You do not own this locked door.=這個門不屬於你所有。 +a locked door=一扇已上鎖的門 +Wooden Door=木門 +Steel Door=鐵門 +Glass Door=玻璃門 +Obsidian Glass Door=黑曜石玻璃門 +You do not own this trapdoor.=這個活板門不屬於你所有。 +a locked trapdoor=一扇已上鎖的活板門 +Wooden Trapdoor=木活板門 +Steel Trapdoor=鐵活板門 +Apple Wood Fence Gate=用蘋果樹做的木柵欄門 +Acacia Wood Fence Gate=相思木柵欄門 +Jungle Wood Fence Gate=叢林木柵欄門 +Pine Wood Fence Gate=松木柵欄門 +Aspen Wood Fence Gate=白楊木柵欄門 diff --git a/doors/locale/template.txt b/doors/locale/template.txt new file mode 100644 index 0000000..8b5c349 --- /dev/null +++ b/doors/locale/template.txt @@ -0,0 +1,18 @@ +# textdomain: doors +Hidden Door Segment= +Owned by @1= +You do not own this locked door.= +a locked door= +Wooden Door= +Steel Door= +Glass Door= +Obsidian Glass Door= +You do not own this trapdoor.= +a locked trapdoor= +Wooden Trapdoor= +Steel Trapdoor= +Apple Wood Fence Gate= +Acacia Wood Fence Gate= +Jungle Wood Fence Gate= +Pine Wood Fence Gate= +Aspen Wood Fence Gate= diff --git a/doors/mod.conf b/doors/mod.conf new file mode 100644 index 0000000..de053c2 --- /dev/null +++ b/doors/mod.conf @@ -0,0 +1,4 @@ +name = doors +description = Minetest Game mod: doors +depends = default +optional_depends = screwdriver diff --git a/doors/models/door_a.obj b/doors/models/door_a.obj index bd5127b..7948f2f 100644 --- a/doors/models/door_a.obj +++ b/doors/models/door_a.obj @@ -1,7 +1,7 @@ # Blender v2.76 (sub 0) OBJ File: 'door_a.blend' # www.blender.org mtllib door_a.mtl -o Cube_Cube.001 +o door_a v 0.499000 -0.499000 -0.499000 v 0.499000 1.499000 -0.499000 v 0.499000 -0.499000 -0.375000 diff --git a/doors/models/door_a2.obj b/doors/models/door_a2.obj new file mode 100644 index 0000000..3bedc20 --- /dev/null +++ b/doors/models/door_a2.obj @@ -0,0 +1,50 @@ +# Blender v2.79 (sub 0) OBJ File: '' +# www.blender.org +mtllib door_a2.mtl +o door_a2 +v -0.499000 1.499000 -0.499000 +v -0.499000 -0.499000 -0.499000 +v -0.499000 -0.499000 -0.375000 +v -0.499000 1.499000 -0.375000 +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 +vt 0.894737 1.000000 +vt 0.894737 0.000000 +vt 0.842105 0.000000 +vt 0.842105 1.000000 +vt 0.421052 1.000000 +vt 0.421052 0.000000 +vt 0.000001 0.000000 +vt 0.000001 1.000000 +vt 0.894737 1.000000 +vt 0.894737 0.000000 +vt 0.947368 0.000000 +vt 0.947368 1.000000 +vt 0.842105 1.000000 +vt 0.842105 0.000000 +vt 0.421052 0.000000 +vt 0.421052 1.000000 +vt 0.947368 0.000000 +vt 0.947368 0.500000 +vt 1.000000 0.500000 +vt 1.000000 0.000000 +vt 1.000000 1.000000 +vt 1.000000 0.500000 +vt 0.947368 0.500000 +vt 0.947368 1.000000 +vn -1.0000 -0.0000 0.0000 +vn 0.0000 -0.0000 1.0000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 1.0000 0.0000 +usemtl None.009 +s 1 +f 1/1/1 2/2/1 3/3/1 4/4/1 +f 4/5/2 3/6/2 5/7/2 6/8/2 +f 6/9/3 5/10/3 7/11/3 8/12/3 +f 8/13/4 7/14/4 2/15/4 1/16/4 +f 2/17/5 7/18/5 5/19/5 3/20/5 +f 8/21/6 1/22/6 4/23/6 6/24/6 diff --git a/doors/models/door_b.obj b/doors/models/door_b.obj index c5607b8..87f1729 100644 --- a/doors/models/door_b.obj +++ b/doors/models/door_b.obj @@ -1,40 +1,50 @@ -# Blender v2.76 (sub 0) OBJ File: 'door_b.blend' +# Blender v2.79 (sub 0) OBJ File: '' # 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 +o door_b 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.375000 +v 0.499000 -0.499000 -0.499000 +v -0.499000 1.499000 -0.375000 +v -0.499000 -0.499000 -0.375000 +v -0.499000 1.499000 -0.499000 +v -0.499000 -0.499000 -0.499000 +vt 0.894736 1.000000 +vt 0.947368 1.000000 +vt 0.947368 0.000000 +vt 0.894736 0.000000 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.842105 0.000000 +vt 0.842105 1.000000 +vt 0.894736 1.000000 +vt 0.894736 0.000000 +vt 0.842105 0.000000 +vt 0.421053 1.000000 vt 0.000000 1.000000 vt 0.000000 0.000000 -vt 1.000000 0.000000 +vt 0.421053 0.000000 vt 1.000000 0.500000 vt 0.947368 0.500000 +vt 0.947368 1.000000 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 +vt 1.000000 0.000000 +vt 0.947368 0.000000 +vt 0.947368 0.500000 +vt 1.000000 0.500000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 -0.0000 1.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 1.0000 0.0000 +usemtl None.007 +s 1 +f 1/1/1 2/2/1 3/3/1 4/4/1 +f 2/5/2 5/6/2 6/7/2 3/8/2 +f 5/9/3 7/10/3 8/11/3 6/12/3 +f 7/13/4 1/14/4 4/15/4 8/16/4 +f 4/17/5 3/18/5 6/19/5 8/20/5 +f 7/21/6 5/22/6 2/23/6 1/24/6 diff --git a/doors/models/door_b2.obj b/doors/models/door_b2.obj new file mode 100644 index 0000000..35632a5 --- /dev/null +++ b/doors/models/door_b2.obj @@ -0,0 +1,50 @@ +# Blender v2.79 (sub 0) OBJ File: '' +# www.blender.org +mtllib door_b2.mtl +o door_b2 +v 0.499000 1.499000 -0.499000 +v 0.499000 1.499000 -0.375000 +v 0.499000 -0.499000 -0.375000 +v 0.499000 -0.499000 -0.499000 +v -0.499000 1.499000 -0.375000 +v -0.499000 -0.499000 -0.375000 +v -0.499000 1.499000 -0.499000 +v -0.499000 -0.499000 -0.499000 +vt 0.842105 1.000000 +vt 0.894737 1.000000 +vt 0.894737 0.000000 +vt 0.842105 0.000000 +vt 0.421052 1.000000 +vt 0.000001 1.000000 +vt 0.000001 0.000000 +vt 0.421052 0.000000 +vt 0.894737 1.000000 +vt 0.947368 1.000000 +vt 0.947368 0.000000 +vt 0.894737 0.000000 +vt 0.842105 1.000000 +vt 0.421052 1.000000 +vt 0.421052 0.000000 +vt 0.842105 0.000000 +vt 1.000000 0.500000 +vt 0.947368 0.500000 +vt 0.947368 1.000000 +vt 1.000000 1.000000 +vt 1.000000 0.000000 +vt 0.947368 0.000000 +vt 0.947368 0.500000 +vt 1.000000 0.500000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 -0.0000 1.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 1.0000 0.0000 +usemtl None.010 +s 1 +f 1/1/1 2/2/1 3/3/1 4/4/1 +f 2/5/2 5/6/2 6/7/2 3/8/2 +f 5/9/3 7/10/3 8/11/3 6/12/3 +f 7/13/4 1/14/4 4/15/4 8/16/4 +f 4/17/5 3/18/5 6/19/5 8/20/5 +f 7/21/6 5/22/6 2/23/6 1/24/6 diff --git a/doors/textures/doors_blank.png b/doors/textures/doors_blank.png deleted file mode 100644 index 26b59e7..0000000 Binary files a/doors/textures/doors_blank.png and /dev/null differ diff --git a/doors/textures/doors_door_glass.png b/doors/textures/doors_door_glass.png index 4a006f8..c296a0f 100644 Binary files a/doors/textures/doors_door_glass.png and b/doors/textures/doors_door_glass.png differ diff --git a/doors/textures/doors_door_obsidian_glass.png b/doors/textures/doors_door_obsidian_glass.png index 3960dba..07ac5b2 100644 Binary files a/doors/textures/doors_door_obsidian_glass.png and b/doors/textures/doors_door_obsidian_glass.png differ diff --git a/doors/textures/doors_door_steel.png b/doors/textures/doors_door_steel.png index 83cbee6..f42f335 100644 Binary files a/doors/textures/doors_door_steel.png and b/doors/textures/doors_door_steel.png differ diff --git a/doors/textures/doors_door_wood.png b/doors/textures/doors_door_wood.png index 0793c7a..7b18203 100644 Binary files a/doors/textures/doors_door_wood.png and b/doors/textures/doors_door_wood.png differ diff --git a/doors/textures/doors_item_glass.png b/doors/textures/doors_item_glass.png index 5577e15..86406fb 100644 Binary files a/doors/textures/doors_item_glass.png and b/doors/textures/doors_item_glass.png differ diff --git a/doors/textures/doors_item_obsidian_glass.png b/doors/textures/doors_item_obsidian_glass.png index 5780ad8..1026d43 100644 Binary files a/doors/textures/doors_item_obsidian_glass.png and b/doors/textures/doors_item_obsidian_glass.png differ diff --git a/doors/textures/doors_item_steel.png b/doors/textures/doors_item_steel.png index 63ab912..dd99e13 100644 Binary files a/doors/textures/doors_item_steel.png and b/doors/textures/doors_item_steel.png differ diff --git a/doors/textures/doors_item_wood.png b/doors/textures/doors_item_wood.png index bc926c8..d3a62ab 100644 Binary files a/doors/textures/doors_item_wood.png and b/doors/textures/doors_item_wood.png differ diff --git a/doors/textures/doors_trapdoor.png b/doors/textures/doors_trapdoor.png index 8fa39dd..e92c8b2 100644 Binary files a/doors/textures/doors_trapdoor.png and b/doors/textures/doors_trapdoor.png differ diff --git a/doors/textures/doors_trapdoor_side.png b/doors/textures/doors_trapdoor_side.png index 8dabf09..55981ea 100644 Binary files a/doors/textures/doors_trapdoor_side.png and b/doors/textures/doors_trapdoor_side.png differ diff --git a/doors/textures/doors_trapdoor_steel.png b/doors/textures/doors_trapdoor_steel.png index d20967c..4ba507d 100644 Binary files a/doors/textures/doors_trapdoor_steel.png and b/doors/textures/doors_trapdoor_steel.png differ diff --git a/doors/textures/doors_trapdoor_steel_side.png b/doors/textures/doors_trapdoor_steel_side.png index 8ae25d5..e29c59e 100644 Binary files a/doors/textures/doors_trapdoor_steel_side.png and b/doors/textures/doors_trapdoor_steel_side.png differ diff --git a/dungeon_loot/depends.txt b/dungeon_loot/depends.txt deleted file mode 100644 index 4ad96d5..0000000 --- a/dungeon_loot/depends.txt +++ /dev/null @@ -1 +0,0 @@ -default diff --git a/dungeon_loot/loot.lua b/dungeon_loot/loot.lua index 3fe0bff..a5a4097 100644 --- a/dungeon_loot/loot.lua +++ b/dungeon_loot/loot.lua @@ -1,23 +1,15 @@ -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"}}, +-- Loot from the `default` mod is registered here, +-- with the rest being registered in the respective mods +dungeon_loot.registered_loot = { -- various items {name = "default:stick", chance = 0.6, count = {3, 6}}, {name = "default:flint", chance = 0.4, count = {1, 3}}, - {name = "vessels:glass_fragments", chance = 0.35, count = {1, 4}}, - {name = "carts:rail", chance = 0.35, count = {1, 6}}, -- farming / consumable - {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 = "default:cactus", chance = 0.4, count = {1, 4}, + types = {"sandstone", "desert"}}, -- minerals {name = "default:coal_lump", chance = 0.9, count = {1, 12}}, @@ -31,10 +23,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/dungeon_loot/mapgen.lua b/dungeon_loot/mapgen.lua index 366d4ce..b2c80fa 100644 --- a/dungeon_loot/mapgen.lua +++ b/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 = {} @@ -88,20 +89,20 @@ local function populate_chest(pos, rand, dungeontype) amount = rand:next(loot.count[1], loot.count[2]) end - if itemdef then - if itemdef.tool_capabilities then - for n = 1, amount do - local wear = rand:next(0.20 * 65535, 0.75 * 65535) -- 20% to 75% wear - table.insert(items, ItemStack({name = loot.name, wear = wear})) - end - elseif itemdef.stack_max == 1 then - -- not stackable, add separately - for n = 1, amount do - table.insert(items, loot.name) - end - else - table.insert(items, ItemStack({name = loot.name, count = amount})) + if not itemdef then + minetest.log("warning", "Registered loot item " .. loot.name .. " does not exist") + elseif itemdef.tool_capabilities then + for n = 1, amount do + local wear = rand:next(0.20 * 65535, 0.75 * 65535) -- 20% to 75% wear + table.insert(items, ItemStack({name = loot.name, wear = wear})) end + elseif itemdef.stack_max == 1 then + -- not stackable, add separately + for n = 1, amount do + table.insert(items, loot.name) + end + else + table.insert(items, ItemStack({name = loot.name, count = amount})) end end end diff --git a/dungeon_loot/mod.conf b/dungeon_loot/mod.conf new file mode 100644 index 0000000..79d8089 --- /dev/null +++ b/dungeon_loot/mod.conf @@ -0,0 +1,3 @@ +name = dungeon_loot +description = Minetest Game mod: dungeon_loot +depends = default diff --git a/dye/depends.txt b/dye/depends.txt deleted file mode 100644 index e69de29..0000000 diff --git a/dye/init.lua b/dye/init.lua index 42f59cf..f0affe8 100644 --- a/dye/init.lua +++ b/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/dye/locale/dye.de.tr b/dye/locale/dye.de.tr new file mode 100644 index 0000000..f73fb57 --- /dev/null +++ b/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/dye/locale/dye.es.tr b/dye/locale/dye.es.tr new file mode 100644 index 0000000..bd04ef4 --- /dev/null +++ b/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/dye/locale/dye.fr.tr b/dye/locale/dye.fr.tr new file mode 100644 index 0000000..390fa07 --- /dev/null +++ b/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/dye/locale/dye.it.tr b/dye/locale/dye.it.tr new file mode 100644 index 0000000..e15e2b5 --- /dev/null +++ b/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/dye/locale/dye.ms.tr b/dye/locale/dye.ms.tr new file mode 100644 index 0000000..50c0473 --- /dev/null +++ b/dye/locale/dye.ms.tr @@ -0,0 +1,16 @@ +# textdomain: dye +White Dye=Pewarna Putih +Grey Dye=Pewarna Kelabu +Dark Grey Dye=Pewarna Kelabu Gelap +Black Dye=Pewarna Hitam +Violet Dye=Pewarna Ungu +Blue Dye=Pewarna Biru +Cyan Dye=Pewarna Biru Kehijauan +Dark Green Dye=Pewarna Hijau Gelap +Green Dye=Pewarna Hijau +Yellow Dye=Pewarna Kuning +Brown Dye=Pewarna Perang +Orange Dye=Pewarna Jingga +Red Dye=Pewarna Merah +Magenta Dye=Pewarna Merah Lembayung +Pink Dye=Pewarna Merah Jambu diff --git a/dye/locale/dye.ru.tr b/dye/locale/dye.ru.tr new file mode 100644 index 0000000..fa3c5c4 --- /dev/null +++ b/dye/locale/dye.ru.tr @@ -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/dye/locale/dye.se.tr b/dye/locale/dye.se.tr new file mode 100644 index 0000000..27adb10 --- /dev/null +++ b/dye/locale/dye.se.tr @@ -0,0 +1,16 @@ +# textdomain: dye +White Dye=Vit Färg +Grey Dye=Grå Färg +Dark Grey Dye=Mörk Grå Färg +Black Dye=Svart Färg +Violet Dye=Violett Färg +Blue Dye=Blå Färg +Cyan Dye=Cyan Färg +Dark Green Dye=Mörk Grön Färg +Green Dye=Grön Färg +Yellow Dye=Gul Färg +Brown Dye=Brun Färg +Orange Dye=Orange Färg +Red Dye=Röd Färg +Magenta Dye=Magenta Färg +Pink Dye=Rosa Färg \ No newline at end of file diff --git a/dye/locale/dye.zh_CN.tr b/dye/locale/dye.zh_CN.tr new file mode 100644 index 0000000..8dcf311 --- /dev/null +++ b/dye/locale/dye.zh_CN.tr @@ -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/dye/locale/dye.zh_TW.tr b/dye/locale/dye.zh_TW.tr new file mode 100644 index 0000000..cc60a21 --- /dev/null +++ b/dye/locale/dye.zh_TW.tr @@ -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/dye/locale/template.txt b/dye/locale/template.txt new file mode 100644 index 0000000..c20bab5 --- /dev/null +++ b/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/dye/mod.conf b/dye/mod.conf new file mode 100644 index 0000000..32bb816 --- /dev/null +++ b/dye/mod.conf @@ -0,0 +1,2 @@ +name = dye +description = Minetest Game mod: dye diff --git a/dye/textures/dye_black.png b/dye/textures/dye_black.png index 7e6a218..1055b6c 100644 Binary files a/dye/textures/dye_black.png and b/dye/textures/dye_black.png differ diff --git a/dye/textures/dye_blue.png b/dye/textures/dye_blue.png index 4557df8..d1377c6 100644 Binary files a/dye/textures/dye_blue.png and b/dye/textures/dye_blue.png differ diff --git a/dye/textures/dye_brown.png b/dye/textures/dye_brown.png index 8427ea2..77d475c 100644 Binary files a/dye/textures/dye_brown.png and b/dye/textures/dye_brown.png differ diff --git a/dye/textures/dye_cyan.png b/dye/textures/dye_cyan.png index 7c06466..239d66c 100644 Binary files a/dye/textures/dye_cyan.png and b/dye/textures/dye_cyan.png differ diff --git a/dye/textures/dye_dark_green.png b/dye/textures/dye_dark_green.png index 5cafe67..9606ccf 100644 Binary files a/dye/textures/dye_dark_green.png and b/dye/textures/dye_dark_green.png differ diff --git a/dye/textures/dye_dark_grey.png b/dye/textures/dye_dark_grey.png index c0e3c47..060737b 100644 Binary files a/dye/textures/dye_dark_grey.png and b/dye/textures/dye_dark_grey.png differ diff --git a/dye/textures/dye_green.png b/dye/textures/dye_green.png index b4dcc46..0d99ee1 100644 Binary files a/dye/textures/dye_green.png and b/dye/textures/dye_green.png differ diff --git a/dye/textures/dye_grey.png b/dye/textures/dye_grey.png index 0dcb31d..5efb028 100644 Binary files a/dye/textures/dye_grey.png and b/dye/textures/dye_grey.png differ diff --git a/dye/textures/dye_magenta.png b/dye/textures/dye_magenta.png index bf8af95..c84df62 100644 Binary files a/dye/textures/dye_magenta.png and b/dye/textures/dye_magenta.png differ diff --git a/dye/textures/dye_orange.png b/dye/textures/dye_orange.png index a692550..0844907 100644 Binary files a/dye/textures/dye_orange.png and b/dye/textures/dye_orange.png differ diff --git a/dye/textures/dye_pink.png b/dye/textures/dye_pink.png index de2798e..c3dec22 100644 Binary files a/dye/textures/dye_pink.png and b/dye/textures/dye_pink.png differ diff --git a/dye/textures/dye_red.png b/dye/textures/dye_red.png index 0824488..14eafbf 100644 Binary files a/dye/textures/dye_red.png and b/dye/textures/dye_red.png differ diff --git a/dye/textures/dye_violet.png b/dye/textures/dye_violet.png index 6b048c4..600cbb4 100644 Binary files a/dye/textures/dye_violet.png and b/dye/textures/dye_violet.png differ diff --git a/dye/textures/dye_white.png b/dye/textures/dye_white.png index 0daf097..2a840a4 100644 Binary files a/dye/textures/dye_white.png and b/dye/textures/dye_white.png differ diff --git a/dye/textures/dye_yellow.png b/dye/textures/dye_yellow.png index c3afaaf..fe75775 100644 Binary files a/dye/textures/dye_yellow.png and b/dye/textures/dye_yellow.png differ diff --git a/fire/depends.txt b/fire/depends.txt deleted file mode 100644 index 4ad96d5..0000000 --- a/fire/depends.txt +++ /dev/null @@ -1 +0,0 @@ -default diff --git a/fire/init.lua b/fire/init.lua index 612e052..b69a731 100644 --- a/fire/init.lua +++ b/fire/init.lua @@ -1,9 +1,12 @@ --- Global namespace for functions +-- fire/init.lua +-- Global namespace for functions fire = {} --- 'Enable fire' setting +-- Load support for MT game translation. +local S = minetest.get_translator("fire") +-- 'Enable fire' setting local fire_enabled = minetest.settings:get_bool("enable_fire") if fire_enabled == nil then -- enable_fire setting not specified, check for disable_fire @@ -21,33 +24,27 @@ end -- -- Flood flame function - -local function flood_flame(pos, oldnode, newnode) +local function flood_flame(pos, _, newnode) -- Play flame extinguish sound if liquid is not an 'igniter' - local nodedef = minetest.registered_items[newnode.name] - if not (nodedef and nodedef.groups and - nodedef.groups.igniter and nodedef.groups.igniter > 0) then + if minetest.get_item_group(newnode.name, "igniter") == 0 then minetest.sound_play("fire_extinguish_flame", - {pos = pos, max_hear_distance = 16, gain = 0.15}) + {pos = pos, max_hear_distance = 16, gain = 0.15}, true) end -- Remove the flame return false end -- Flame nodes - -minetest.register_node("fire:basic_flame", { +local fire_node = { drawtype = "firelike", - tiles = { - { - name = "fire_basic_flame_animated.png", - animation = { - type = "vertical_frames", - aspect_w = 16, - aspect_h = 16, - length = 1 - }, - }, + tiles = {{ + name = "fire_basic_flame_animated.png", + animation = { + type = "vertical_frames", + aspect_w = 16, + aspect_h = 16, + length = 1 + }} }, inventory_image = "fire_basic_flame.png", paramtype = "light", @@ -57,72 +54,45 @@ minetest.register_node("fire:basic_flame", { sunlight_propagates = true, floodable = true, damage_per_second = 4, - groups = {igniter = 2, dig_immediate = 3, not_in_creative_inventory = 1}, + groups = {igniter = 2, dig_immediate = 3, fire = 1}, drop = "", + on_flood = flood_flame +} - on_timer = function(pos) - local f = minetest.find_node_near(pos, 1, {"group:flammable"}) - if not fire_enabled or not f then - minetest.remove_node(pos) - return - end - -- Restart timer - return true - end, +-- Basic flame node +local flame_fire_node = table.copy(fire_node) +flame_fire_node.description = S("Fire") +flame_fire_node.groups.not_in_creative_inventory = 1 +flame_fire_node.on_timer = function(pos) + if not minetest.find_node_near(pos, 1, {"group:flammable"}) then + minetest.remove_node(pos) + return + end + -- Restart timer + return true +end +flame_fire_node.on_construct = function(pos) + minetest.get_node_timer(pos):start(math.random(30, 60)) +end - on_construct = function(pos) - if not fire_enabled then - minetest.remove_node(pos) - else - minetest.get_node_timer(pos):start(math.random(30, 60)) - end - end, +minetest.register_node("fire:basic_flame", flame_fire_node) - on_flood = flood_flame, -}) +-- Permanent flame node +local permanent_fire_node = table.copy(fire_node) +permanent_fire_node.description = S("Permanent Fire") -minetest.register_node("fire:permanent_flame", { - description = "Permanent Flame", - drawtype = "firelike", - tiles = { - { - name = "fire_basic_flame_animated.png", - animation = { - type = "vertical_frames", - aspect_w = 16, - aspect_h = 16, - length = 1 - }, - }, - }, - inventory_image = "fire_basic_flame.png", - paramtype = "light", - light_source = 13, - walkable = false, - buildable_to = true, - sunlight_propagates = true, - floodable = true, - damage_per_second = 4, - groups = {igniter = 2, dig_immediate = 3}, - drop = "", - - on_flood = flood_flame, -}) - - --- Flint and steel +minetest.register_node("fire:permanent_flame", permanent_fire_node) +-- 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"}, on_use = function(itemstack, user, pointed_thing) local sound_pos = pointed_thing.above or user:get_pos() - minetest.sound_play( - "fire_flint_and_steel", - {pos = sound_pos, gain = 0.5, max_hear_distance = 8} - ) + minetest.sound_play("fire_flint_and_steel", + {pos = sound_pos, gain = 0.5, max_hear_distance = 8}, true) local player_name = user:get_player_name() if pointed_thing.type == "node" then local node_under = minetest.get_node(pointed_thing.under).name @@ -146,9 +116,11 @@ minetest.register_tool("fire:flint_and_steel", { -- Wear tool local wdef = itemstack:get_definition() itemstack:add_wear(1000) + -- Tool break sound if itemstack:get_count() == 0 and wdef.sound and wdef.sound.breaks then - minetest.sound_play(wdef.sound.breaks, {pos = sound_pos, gain = 0.5}) + minetest.sound_play(wdef.sound.breaks, + {pos = sound_pos, gain = 0.5}, true) end return itemstack end @@ -162,23 +134,21 @@ minetest.register_craft({ } }) - -- Override coalblock to enable permanent flame above -- Coalblock is non-flammable to avoid unwanted basic_flame nodes - minetest.override_item("default:coalblock", { - after_destruct = function(pos, oldnode) + after_destruct = function(pos) pos.y = pos.y + 1 if minetest.get_node(pos).name == "fire:permanent_flame" then minetest.remove_node(pos) end end, - on_ignite = function(pos, igniter) + on_ignite = function(pos) local flame_pos = {x = pos.x, y = pos.y + 1, z = pos.z} if minetest.get_node(flame_pos).name == "air" then minetest.set_node(flame_pos, {name = "fire:permanent_flame"}) end - end, + end }) @@ -186,24 +156,18 @@ minetest.override_item("default:coalblock", { -- Sound -- -local flame_sound = minetest.settings:get_bool("flame_sound") -if flame_sound == nil then - -- Enable if no setting present - flame_sound = true -end +-- Enable if no setting present +local flame_sound = minetest.settings:get_bool("flame_sound", true) if flame_sound then - local handles = {} local timer = 0 -- Parameters - local radius = 8 -- Flame node search radius around player local cycle = 3 -- Cycle time for sound updates -- Update sound for player - function fire.update_player_sound(player) local player_name = player:get_player_name() -- Search for flame nodes in radius around player @@ -255,16 +219,13 @@ if flame_sound then fposmid = vector.divide(vector.add(fposmin, fposmax), 2) end -- Play sound - local handle = minetest.sound_play( - "fire_fire", - { - pos = fposmid, - to_player = player_name, - gain = math.min(0.06 * (1 + flames * 0.125), 0.18), - max_hear_distance = 32, - loop = true, -- In case of lag - } - ) + local handle = minetest.sound_play("fire_fire", { + pos = fposmid, + to_player = player_name, + gain = math.min(0.06 * (1 + flames * 0.125), 0.18), + max_hear_distance = 32, + loop = true -- In case of lag + }) -- Store sound handle for this player if handle then handles[player_name] = handle @@ -273,7 +234,6 @@ if flame_sound then end -- Cycle for updating players sounds - minetest.register_globalstep(function(dtime) timer = timer + dtime if timer < cycle then @@ -288,7 +248,6 @@ if flame_sound then end) -- Stop sound and clear handle on player leave - minetest.register_on_leaveplayer(function(player) local player_name = player:get_player_name() if handles[player_name] then @@ -300,19 +259,14 @@ end -- Deprecated function kept temporarily to avoid crashes if mod fire nodes call it - -function fire.update_sounds_around(pos) -end - +function fire.update_sounds_around() end -- -- ABMs -- if fire_enabled then - -- Ignite neighboring nodes, add basic flames - minetest.register_abm({ label = "Ignite flame", nodenames = {"group:flammable"}, @@ -320,16 +274,15 @@ 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"}) end - end, + end }) -- Remove flammable nodes around basic flame - minetest.register_abm({ label = "Remove flammable nodes", nodenames = {"fire:basic_flame"}, @@ -337,19 +290,19 @@ 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 - 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 }) - end diff --git a/fire/locale/fire.de.tr b/fire/locale/fire.de.tr new file mode 100644 index 0000000..d6f8dde --- /dev/null +++ b/fire/locale/fire.de.tr @@ -0,0 +1,3 @@ +# textdomain: fire +Permanent Flame=Permanente Flamme +Flint and Steel=Feuerstein und Stahl diff --git a/fire/locale/fire.es.tr b/fire/locale/fire.es.tr new file mode 100644 index 0000000..8c1b604 --- /dev/null +++ b/fire/locale/fire.es.tr @@ -0,0 +1,3 @@ +# textdomain: fire +Permanent Flame=Llama permanente +Flint and Steel=Yesca y pedernal diff --git a/fire/locale/fire.fr.tr b/fire/locale/fire.fr.tr new file mode 100644 index 0000000..268e823 --- /dev/null +++ b/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/fire/locale/fire.it.tr b/fire/locale/fire.it.tr new file mode 100644 index 0000000..03e8c87 --- /dev/null +++ b/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/fire/locale/fire.ms.tr b/fire/locale/fire.ms.tr new file mode 100644 index 0000000..67b5bbe --- /dev/null +++ b/fire/locale/fire.ms.tr @@ -0,0 +1,3 @@ +# textdomain: fire +Permanent Flame=Api Abadi +Flint and Steel=Pemetik Api diff --git a/fire/locale/fire.ru.tr b/fire/locale/fire.ru.tr new file mode 100644 index 0000000..e10813b --- /dev/null +++ b/fire/locale/fire.ru.tr @@ -0,0 +1,3 @@ +# textdomain: fire +Permanent Flame=Вечный Огонь +Flint and Steel=Огниво и Сталь diff --git a/fire/locale/fire.se.tr b/fire/locale/fire.se.tr new file mode 100644 index 0000000..622925d --- /dev/null +++ b/fire/locale/fire.se.tr @@ -0,0 +1,3 @@ +# textdomain: fire +Permanent Flame=Permanent Eld +Flint and Steel=Flinta och Stål \ No newline at end of file diff --git a/fire/locale/fire.zh_CN.tr b/fire/locale/fire.zh_CN.tr new file mode 100644 index 0000000..b28157e --- /dev/null +++ b/fire/locale/fire.zh_CN.tr @@ -0,0 +1,4 @@ +# textdomain: fire +Permanent Fire=永久火焰 +Flint and Steel=火石和钢 +Fire=火焰 diff --git a/fire/locale/fire.zh_TW.tr b/fire/locale/fire.zh_TW.tr new file mode 100644 index 0000000..2e7e9dd --- /dev/null +++ b/fire/locale/fire.zh_TW.tr @@ -0,0 +1,4 @@ +# textdomain: fire +Permanent Fire=永久火焰 +Flint and Steel=火石和鋼 +Fire=火焰 diff --git a/fire/locale/template.txt b/fire/locale/template.txt new file mode 100644 index 0000000..79ea7a2 --- /dev/null +++ b/fire/locale/template.txt @@ -0,0 +1,3 @@ +# textdomain: fire +Permanent Flame= +Flint and Steel= diff --git a/fire/mod.conf b/fire/mod.conf new file mode 100644 index 0000000..c70f23b --- /dev/null +++ b/fire/mod.conf @@ -0,0 +1,3 @@ +name = fire +description = Minetest Game mod: fire +depends = default diff --git a/fire/textures/fire_basic_flame.png b/fire/textures/fire_basic_flame.png index 6065de6..484bcb1 100644 Binary files a/fire/textures/fire_basic_flame.png and b/fire/textures/fire_basic_flame.png differ diff --git a/fire/textures/fire_basic_flame_animated.png b/fire/textures/fire_basic_flame_animated.png index 5a067b0..b01f703 100644 Binary files a/fire/textures/fire_basic_flame_animated.png and b/fire/textures/fire_basic_flame_animated.png differ diff --git a/fire/textures/fire_flint_steel.png b/fire/textures/fire_flint_steel.png index e0c5848..9d32d85 100644 Binary files a/fire/textures/fire_flint_steel.png and b/fire/textures/fire_flint_steel.png differ diff --git a/fireflies/README.md b/fireflies/README.md deleted file mode 100644 index 0c7a5ab..0000000 --- a/fireflies/README.md +++ /dev/null @@ -1,23 +0,0 @@ -Fireflies -=== - -Intro ----- - -This is a simple Minetest mod by Shara RedCat that adds fireflies to the world on mapgen, which can then be caught in a net and placed in bottles to provide light. Note that they only appear on newly generated map. - -This mod was originally adapted from the Hidden Worlds subgame to work with Minetest Game, and has since been added to Minetest Game itself. This version (at https://github.com/Ezhh/fireflies) is now maintained independently from the main Minetest Game version for the purpose of possible expansions to the mod which may or may not also be added to Minetest Game at a later time. - -Thanks to shivajiva for helping work through the original idea and for assisting with the code, and to all those who helped test this mod so far. - -Compatibility ----- - -Please note that the current stable version of Minetest (0.4.16) is unable to position the fireflies above groundlevel. The mod is otherwise fully functional and can be used; but requires the current dev version of Minetest for optimal firefly placement. - -License ----- - -Code for this mod is released under MIT (https://opensource.org/licenses/MIT). - -Please see license.txt for texture licenses. \ No newline at end of file diff --git a/fireflies/depends.txt b/fireflies/depends.txt deleted file mode 100644 index e0585b4..0000000 --- a/fireflies/depends.txt +++ /dev/null @@ -1,2 +0,0 @@ -default -vessels \ No newline at end of file diff --git a/fireflies/description.txt b/fireflies/description.txt deleted file mode 100644 index a6e083e..0000000 --- a/fireflies/description.txt +++ /dev/null @@ -1 +0,0 @@ -Adds fireflies which can be caught in a net and placed in bottles for lighting. \ No newline at end of file diff --git a/fireflies/init.lua b/fireflies/init.lua index df4f570..1c533a1 100644 --- a/fireflies/init.lua +++ b/fireflies/init.lua @@ -1,7 +1,11 @@ +-- firefly/init.lua + +-- Load support for MT game translation. +local S = minetest.get_translator("fireflies") + --- firefly minetest.register_node("fireflies:firefly", { - description = "Firefly", + description = S("Firefly"), drawtype = "plantlike", tiles = {{ name = "fireflies_firefly_animated.png", @@ -26,18 +30,69 @@ minetest.register_node("fireflies:firefly", { }, light_source = 6, floodable = true, - on_flood = function(pos, oldnode, newnode) - minetest.add_item(pos, "fireflies:firefly 1") + on_place = function(itemstack, placer, pointed_thing) + local player_name = placer:get_player_name() + local pos = pointed_thing.above + + if not minetest.is_protected(pos, player_name) and + not minetest.is_protected(pointed_thing.under, player_name) and + minetest.get_node(pos).name == "air" then + minetest.set_node(pos, {name = "fireflies:firefly"}) + minetest.get_node_timer(pos):start(1) + itemstack:take_item() + end + return itemstack + end, + on_timer = function(pos, elapsed) + if minetest.get_node_light(pos) > 11 then + minetest.set_node(pos, {name = "fireflies:hidden_firefly"}) + end + minetest.get_node_timer(pos):start(30) + end +}) + +minetest.register_node("fireflies:hidden_firefly", { + description = S("Hidden Firefly"), + drawtype = "airlike", + inventory_image = "fireflies_firefly.png", + wield_image = "fireflies_firefly.png", + paramtype = "light", + sunlight_propagates = true, + walkable = false, + pointable = false, + diggable = false, + buildable_to = true, + drop = "", + groups = {not_in_creative_inventory = 1}, + floodable = true, + on_place = function(itemstack, placer, pointed_thing) + local player_name = placer:get_player_name() + local pos = pointed_thing.above + + if not minetest.is_protected(pos, player_name) and + not minetest.is_protected(pointed_thing.under, player_name) and + minetest.get_node(pos).name == "air" then + minetest.set_node(pos, {name = "fireflies:hidden_firefly"}) + minetest.get_node_timer(pos):start(1) + itemstack:take_item() + end + return itemstack + end, + on_timer = function(pos, elapsed) + if minetest.get_node_light(pos) <= 11 then + minetest.set_node(pos, {name = "fireflies:firefly"}) + end + minetest.get_node_timer(pos):start(30) end }) -- 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 + if not pointed_thing or pointed_thing.type ~= "node" or minetest.is_protected(pointed_thing.under, player:get_player_name()) then return end @@ -49,9 +104,9 @@ minetest.register_tool("fireflies:bug_net", { local leftover = inv:add_item("main", stack) if leftover:get_count() > 0 then minetest.add_item(pointed_thing.under, node_name.." 1") - end + end end - if not minetest.setting_getbool("creative_mode") then + if not (creative and creative.is_enabled_for(player:get_player_name())) then itemstack:add_wear(256) return itemstack end @@ -61,16 +116,16 @@ minetest.register_tool("fireflies:bug_net", { minetest.register_craft( { output = "fireflies:bug_net", recipe = { - {"farming:string", "farming:string", ""}, - {"farming:string", "farming:string", ""}, - {"default:stick", "", ""} + {"farming:string", "farming:string"}, + {"farming:string", "farming:string"}, + {"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 = {{ @@ -87,7 +142,7 @@ minetest.register_node("fireflies:firefly_bottle", { sunlight_propagates = true, light_source = 9, walkable = false, - groups = {snappy = 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} @@ -113,6 +168,7 @@ minetest.register_node("fireflies:firefly_bottle", { if firefly_pos then minetest.set_node(pos, {name = "vessels:glass_bottle"}) minetest.set_node(firefly_pos, {name = "fireflies:firefly"}) + minetest.get_node_timer(firefly_pos):start(1) end end }) @@ -120,54 +176,115 @@ minetest.register_node("fireflies:firefly_bottle", { minetest.register_craft( { output = "fireflies:firefly_bottle", recipe = { - {"", "", ""}, - {"", "fireflies:firefly", ""}, - {"", "vessels:glass_bottle", ""} + {"fireflies:firefly"}, + {"vessels:glass_bottle"} } }) -- register fireflies as decorations -minetest.register_decoration({ - deco_type = "simple", - place_on = { - "default:dirt_with_grass", - "default:dirt_with_coniferous_litter", - "default:dirt_with_rainforest_litter", - "default:dirt" - }, - place_offset_y = 2, - sidelen = 80, - fill_ratio = 0.002, - biomes = { - "deciduous_forest", - "coniferous_forest", - "rainforest", - "rainforest_swamp" - }, - y_min = -1, - y_max = 31000, - decoration = "fireflies:firefly", -}) -minetest.register_decoration({ - deco_type = "simple", - place_on = { - "default:dirt_with_grass", - "default:dirt_with_coniferous_litter", - "default:dirt_with_rainforest_litter", - "default:dirt" - }, - place_offset_y = 3, - sidelen = 80, - fill_ratio = 0.002, - biomes = { - "deciduous_forest", - "coniferous_forest", - "rainforest", - "rainforest_swamp" - }, - y_min = -1, - y_max = 31000, - decoration = "fireflies:firefly", -}) +if minetest.get_mapgen_setting("mg_name") == "v6" then + + minetest.register_decoration({ + name = "fireflies:firefly_low", + deco_type = "simple", + place_on = "default:dirt_with_grass", + place_offset_y = 2, + sidelen = 80, + fill_ratio = 0.0002, + y_max = 31000, + y_min = 1, + decoration = "fireflies:hidden_firefly", + }) + + minetest.register_decoration({ + name = "fireflies:firefly_high", + deco_type = "simple", + place_on = "default:dirt_with_grass", + place_offset_y = 3, + sidelen = 80, + fill_ratio = 0.0002, + y_max = 31000, + y_min = 1, + decoration = "fireflies:hidden_firefly", + }) + +else + + minetest.register_decoration({ + name = "fireflies:firefly_low", + deco_type = "simple", + place_on = { + "default:dirt_with_grass", + "default:dirt_with_coniferous_litter", + "default:dirt_with_rainforest_litter", + "default:dirt" + }, + place_offset_y = 2, + sidelen = 80, + fill_ratio = 0.0005, + biomes = { + "deciduous_forest", + "coniferous_forest", + "rainforest", + "rainforest_swamp" + }, + y_max = 31000, + y_min = -1, + decoration = "fireflies:hidden_firefly", + }) + + minetest.register_decoration({ + name = "fireflies:firefly_high", + deco_type = "simple", + place_on = { + "default:dirt_with_grass", + "default:dirt_with_coniferous_litter", + "default:dirt_with_rainforest_litter", + "default:dirt" + }, + place_offset_y = 3, + sidelen = 80, + fill_ratio = 0.0005, + biomes = { + "deciduous_forest", + "coniferous_forest", + "rainforest", + "rainforest_swamp" + }, + y_max = 31000, + y_min = -1, + decoration = "fireflies:hidden_firefly", + }) + +end + + +-- get decoration IDs +local firefly_low = minetest.get_decoration_id("fireflies:firefly_low") +local firefly_high = minetest.get_decoration_id("fireflies:firefly_high") + +minetest.set_gen_notify({decoration = true}, {firefly_low, firefly_high}) + +-- start nodetimers +minetest.register_on_generated(function(minp, maxp, blockseed) + local gennotify = minetest.get_mapgen_object("gennotify") + local poslist = {} + + for _, pos in ipairs(gennotify["decoration#"..firefly_low] or {}) do + local firefly_low_pos = {x = pos.x, y = pos.y + 3, z = pos.z} + table.insert(poslist, firefly_low_pos) + end + for _, pos in ipairs(gennotify["decoration#"..firefly_high] or {}) do + local firefly_high_pos = {x = pos.x, y = pos.y + 4, z = pos.z} + table.insert(poslist, firefly_high_pos) + end + + if #poslist ~= 0 then + for i = 1, #poslist do + local pos = poslist[i] + minetest.get_node_timer(pos):start(1) + end + end +end) diff --git a/fireflies/license.txt b/fireflies/license.txt index ea64aad..eebdad6 100644 --- a/fireflies/license.txt +++ b/fireflies/license.txt @@ -1,45 +1,58 @@ - -Code License: MIT (https://opensource.org/licenses/MIT) -By Shara RedCat - ---- +License of source code +---------------------- The MIT License (MIT) - Copyright (c) 2018 Shara RedCat -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: +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 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. +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) +---------------------------- -Textures --------- +Attribution-ShareAlike 3.0 Unported (CC BY-SA 3.0) +Copyright (C) 2018 Shara RedCat -Shara RedCat (CC BY-SA 3.0): - fireflies_firefly.png - fireflies_firefly_animated.png - fireflies_bugnet.png - fireflies_bottle.png - fireflies_bottle_animated.png +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. -fireflies_bugnet.png is modified from a texture by tenplus1 (CC0) +Under the following terms: -fireflies_bottle.png and fireflies_bottle_animated.png are -modified from a texture by Vanessa Ezekowitz (CC BY-SA 3.0) \ No newline at end of file +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/ \ No newline at end of file diff --git a/fireflies/locale/fireflies.de.tr b/fireflies/locale/fireflies.de.tr new file mode 100644 index 0000000..c5d116a --- /dev/null +++ b/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/fireflies/locale/fireflies.es.tr b/fireflies/locale/fireflies.es.tr new file mode 100644 index 0000000..95d053e --- /dev/null +++ b/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/fireflies/locale/fireflies.fr.tr b/fireflies/locale/fireflies.fr.tr new file mode 100644 index 0000000..3deda66 --- /dev/null +++ b/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/fireflies/locale/fireflies.it.tr b/fireflies/locale/fireflies.it.tr new file mode 100644 index 0000000..130b248 --- /dev/null +++ b/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/fireflies/locale/fireflies.ms.tr b/fireflies/locale/fireflies.ms.tr new file mode 100644 index 0000000..509d03d --- /dev/null +++ b/fireflies/locale/fireflies.ms.tr @@ -0,0 +1,5 @@ +# textdomain: fireflies +Firefly=Kelip-Kelip +Hidden Firefly=Kelip-Kelip Tersembunyi +Bug Net=Jaring Pepijat +Firefly in a Bottle=Kelip-Kelip dalam Botol diff --git a/fireflies/locale/fireflies.ru.tr b/fireflies/locale/fireflies.ru.tr new file mode 100644 index 0000000..c05f288 --- /dev/null +++ b/fireflies/locale/fireflies.ru.tr @@ -0,0 +1,5 @@ +# textdomain: fireflies +Firefly=Светлячок +Hidden Firefly=Притаившийся Светлячок +Bug Net=Сачок Для Ловли Насекомых +Firefly in a Bottle=Светлячок в Бутылке diff --git a/fireflies/locale/fireflies.se.tr b/fireflies/locale/fireflies.se.tr new file mode 100644 index 0000000..1bff782 --- /dev/null +++ b/fireflies/locale/fireflies.se.tr @@ -0,0 +1,5 @@ +# textdomain: fireflies +Firefly=Eldfluga +Hidden Firefly=Gömd Eldfluga +Bug Net=Buggernät +Firefly in a Bottle=Eldfluga i en flaska \ No newline at end of file diff --git a/fireflies/locale/fireflies.zh_CN.tr b/fireflies/locale/fireflies.zh_CN.tr new file mode 100644 index 0000000..5971785 --- /dev/null +++ b/fireflies/locale/fireflies.zh_CN.tr @@ -0,0 +1,5 @@ +# textdomain: fireflies +Firefly=萤火虫 +Hidden Firefly=隐藏的萤火虫 +Bug Net=虫网 +Firefly in a Bottle=放在瓶子里的萤火虫 diff --git a/fireflies/locale/fireflies.zh_TW.tr b/fireflies/locale/fireflies.zh_TW.tr new file mode 100644 index 0000000..af754a9 --- /dev/null +++ b/fireflies/locale/fireflies.zh_TW.tr @@ -0,0 +1,5 @@ +# textdomain: fireflies +Firefly=螢火蟲 +Hidden Firefly=隱藏的螢火蟲 +Bug Net=蟲網 +Firefly in a Bottle=放在瓶子裡的螢火蟲 diff --git a/fireflies/locale/template.txt b/fireflies/locale/template.txt new file mode 100644 index 0000000..91aa8ff --- /dev/null +++ b/fireflies/locale/template.txt @@ -0,0 +1,5 @@ +# textdomain: fireflies +Firefly= +Hidden Firefly= +Bug Net= +Firefly in a Bottle= diff --git a/fireflies/mod.conf b/fireflies/mod.conf index 169282e..a533588 100644 --- a/fireflies/mod.conf +++ b/fireflies/mod.conf @@ -1,5 +1,3 @@ name = fireflies -description = Adds fireflies which can be caught in a net and placed in bottles for lighting. -release = 56 -author = Shara -title = Fireflies +description = Minetest Game mod: fireflies +depends = default, vessels diff --git a/fireflies/screenshot.png b/fireflies/screenshot.png deleted file mode 100644 index 8a4c213..0000000 Binary files a/fireflies/screenshot.png and /dev/null differ diff --git a/fireflies/textures/fireflies_bottle.png b/fireflies/textures/fireflies_bottle.png index 43ee476..ecca036 100644 Binary files a/fireflies/textures/fireflies_bottle.png and b/fireflies/textures/fireflies_bottle.png differ diff --git a/fireflies/textures/fireflies_bottle_animated.png b/fireflies/textures/fireflies_bottle_animated.png index c743308..96062b3 100644 Binary files a/fireflies/textures/fireflies_bottle_animated.png and b/fireflies/textures/fireflies_bottle_animated.png differ diff --git a/fireflies/textures/fireflies_bugnet.png b/fireflies/textures/fireflies_bugnet.png index bf232fe..8ec3d33 100644 Binary files a/fireflies/textures/fireflies_bugnet.png and b/fireflies/textures/fireflies_bugnet.png differ diff --git a/fireflies/textures/fireflies_firefly.png b/fireflies/textures/fireflies_firefly.png index 37fcd1e..c086689 100644 Binary files a/fireflies/textures/fireflies_firefly.png and b/fireflies/textures/fireflies_firefly.png differ diff --git a/fireflies/textures/fireflies_firefly_animated.png b/fireflies/textures/fireflies_firefly_animated.png index 6ad578f..e6932e3 100644 Binary files a/fireflies/textures/fireflies_firefly_animated.png and b/fireflies/textures/fireflies_firefly_animated.png differ diff --git a/flowers/depends.txt b/flowers/depends.txt deleted file mode 100644 index 4ad96d5..0000000 --- a/flowers/depends.txt +++ /dev/null @@ -1 +0,0 @@ -default diff --git a/flowers/init.lua b/flowers/init.lua index 3ad4bf6..9731750 100644 --- a/flowers/init.lua +++ b/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/flowers/locale/flowers.de.tr b/flowers/locale/flowers.de.tr new file mode 100644 index 0000000..18afb2a --- /dev/null +++ b/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/flowers/locale/flowers.es.tr b/flowers/locale/flowers.es.tr new file mode 100644 index 0000000..e9c345d --- /dev/null +++ b/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/flowers/locale/flowers.fr.tr b/flowers/locale/flowers.fr.tr new file mode 100644 index 0000000..41e0d00 --- /dev/null +++ b/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/flowers/locale/flowers.it.tr b/flowers/locale/flowers.it.tr new file mode 100644 index 0000000..e273941 --- /dev/null +++ b/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/flowers/locale/flowers.ms.tr b/flowers/locale/flowers.ms.tr new file mode 100644 index 0000000..4e846eb --- /dev/null +++ b/flowers/locale/flowers.ms.tr @@ -0,0 +1,12 @@ +# textdomain: flowers +Red Rose=Ros Merah +Orange Tulip=Tulip Jingga +Yellow Dandelion=Dandelion Kuning +Green Chrysanthemum=Kekwa Hijau +Blue Geranium=Geranium Biru +Viola=Violet +White Dandelion=Dandelion Putih +Black Tulip=Tulip Hitam +Red Mushroom=Cendawan Merah +Brown Mushroom=Cendawan Perang +Waterlily=Teratai diff --git a/flowers/locale/flowers.ru.tr b/flowers/locale/flowers.ru.tr new file mode 100644 index 0000000..d861e2a --- /dev/null +++ b/flowers/locale/flowers.ru.tr @@ -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/flowers/locale/flowers.se.tr b/flowers/locale/flowers.se.tr new file mode 100644 index 0000000..1bee645 --- /dev/null +++ b/flowers/locale/flowers.se.tr @@ -0,0 +1,12 @@ +# textdomain: flowers +Red Rose=Röd ros +Orange Tulip=Orange Tulpan +Yellow Dandelion=Gul Maskros +Green Chrysanthemum=Grön Krysantemum +Blue Geranium=Blå Geranium +Viola=Violett Viola +White Dandelion=Vit Maskros +Black Tulip=Svart Tulpan +Red Mushroom=Röd Svamp +Brown Mushroom=Brun Svamp +Waterlily=Näckros \ No newline at end of file diff --git a/flowers/locale/flowers.zh_CN.tr b/flowers/locale/flowers.zh_CN.tr new file mode 100644 index 0000000..3139dfb --- /dev/null +++ b/flowers/locale/flowers.zh_CN.tr @@ -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/flowers/locale/flowers.zh_TW.tr b/flowers/locale/flowers.zh_TW.tr new file mode 100644 index 0000000..a3a3ec5 --- /dev/null +++ b/flowers/locale/flowers.zh_TW.tr @@ -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/flowers/locale/template.txt b/flowers/locale/template.txt new file mode 100644 index 0000000..a3a687f --- /dev/null +++ b/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/flowers/mapgen.lua b/flowers/mapgen.lua index ad759c2..f282f50 100644 --- a/flowers/mapgen.lua +++ b/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, @@ -100,7 +100,7 @@ local function register_flower(seed, flower_name) octaves = 3, persist = 0.6 }, - biomes = {"grassland", "deciduous_forest", "floatland_grassland"}, + biomes = {"grassland", "deciduous_forest"}, y_max = 31000, y_min = 1, decoration = "flowers:"..flower_name, @@ -121,8 +121,7 @@ local function register_mushroom(mushroom_name) octaves = 3, persist = 0.66 }, - biomes = {"deciduous_forest", "coniferous_forest", - "floatland_coniferous_forest"}, + biomes = {"deciduous_forest", "coniferous_forest"}, y_max = 31000, y_min = 1, decoration = "flowers:"..mushroom_name, @@ -146,7 +145,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/flowers/mod.conf b/flowers/mod.conf new file mode 100644 index 0000000..cdafe64 --- /dev/null +++ b/flowers/mod.conf @@ -0,0 +1,3 @@ +name = flowers +description = Minetest Game mod: flowers +depends = default diff --git a/flowers/textures/flowers_chrysanthemum_green.png b/flowers/textures/flowers_chrysanthemum_green.png index 89c667f..1198046 100644 Binary files a/flowers/textures/flowers_chrysanthemum_green.png and b/flowers/textures/flowers_chrysanthemum_green.png differ diff --git a/flowers/textures/flowers_dandelion_white.png b/flowers/textures/flowers_dandelion_white.png index 82ddc60..1bc02fb 100644 Binary files a/flowers/textures/flowers_dandelion_white.png and b/flowers/textures/flowers_dandelion_white.png differ diff --git a/flowers/textures/flowers_dandelion_yellow.png b/flowers/textures/flowers_dandelion_yellow.png index 9876c5f..544f60c 100644 Binary files a/flowers/textures/flowers_dandelion_yellow.png and b/flowers/textures/flowers_dandelion_yellow.png differ diff --git a/flowers/textures/flowers_geranium.png b/flowers/textures/flowers_geranium.png index 35c9e60..88de1d7 100644 Binary files a/flowers/textures/flowers_geranium.png and b/flowers/textures/flowers_geranium.png differ diff --git a/flowers/textures/flowers_mushroom_brown.png b/flowers/textures/flowers_mushroom_brown.png index fdb4bb9..33ffcd4 100644 Binary files a/flowers/textures/flowers_mushroom_brown.png and b/flowers/textures/flowers_mushroom_brown.png differ diff --git a/flowers/textures/flowers_mushroom_red.png b/flowers/textures/flowers_mushroom_red.png index 00c0df3..a68f5d5 100644 Binary files a/flowers/textures/flowers_mushroom_red.png and b/flowers/textures/flowers_mushroom_red.png differ diff --git a/flowers/textures/flowers_rose.png b/flowers/textures/flowers_rose.png index 9086857..e3b841d 100644 Binary files a/flowers/textures/flowers_rose.png and b/flowers/textures/flowers_rose.png differ diff --git a/flowers/textures/flowers_tulip.png b/flowers/textures/flowers_tulip.png index 62f1db1..471fcd3 100644 Binary files a/flowers/textures/flowers_tulip.png and b/flowers/textures/flowers_tulip.png differ diff --git a/flowers/textures/flowers_tulip_black.png b/flowers/textures/flowers_tulip_black.png index 0a414d7..1dd09f7 100644 Binary files a/flowers/textures/flowers_tulip_black.png and b/flowers/textures/flowers_tulip_black.png differ diff --git a/flowers/textures/flowers_viola.png b/flowers/textures/flowers_viola.png index 1a35c50..ca2d750 100644 Binary files a/flowers/textures/flowers_viola.png and b/flowers/textures/flowers_viola.png differ diff --git a/flowers/textures/flowers_waterlily.png b/flowers/textures/flowers_waterlily.png index 5481e04..305c445 100644 Binary files a/flowers/textures/flowers_waterlily.png and b/flowers/textures/flowers_waterlily.png differ diff --git a/flowers/textures/flowers_waterlily_bottom.png b/flowers/textures/flowers_waterlily_bottom.png index f3c927b..3dbeaf4 100644 Binary files a/flowers/textures/flowers_waterlily_bottom.png and b/flowers/textures/flowers_waterlily_bottom.png differ diff --git a/game_commands/init.lua b/game_commands/init.lua index 609c4a7..e038be1 100644 --- a/game_commands/init.lua +++ b/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 @@ -7,7 +13,7 @@ minetest.register_chatcommand("killme", { player:set_hp(0) return true else - for _, callback in pairs(core.registered_on_respawnplayers) do + for _, callback in pairs(minetest.registered_on_respawnplayers) do if callback(player) then return true end @@ -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/game_commands/locale/game_commands.de.tr b/game_commands/locale/game_commands.de.tr new file mode 100644 index 0000000..24b0e25 --- /dev/null +++ b/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/game_commands/locale/game_commands.es.tr b/game_commands/locale/game_commands.es.tr new file mode 100644 index 0000000..702a2ef --- /dev/null +++ b/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/game_commands/locale/game_commands.fr.tr b/game_commands/locale/game_commands.fr.tr new file mode 100644 index 0000000..0e295d6 --- /dev/null +++ b/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/game_commands/locale/game_commands.it.tr b/game_commands/locale/game_commands.it.tr new file mode 100644 index 0000000..b2431fa --- /dev/null +++ b/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/game_commands/locale/game_commands.ms.tr b/game_commands/locale/game_commands.ms.tr new file mode 100644 index 0000000..ed4a0bd --- /dev/null +++ b/game_commands/locale/game_commands.ms.tr @@ -0,0 +1,4 @@ +# textdomain: game_commands +Kill yourself to respawn=Bunuh diri anda untuk lahir semula +No static_spawnpoint defined=Tiada titik permulaan statik (tetapan static_spawnpoint) ditakrifkan +You need to be online to be killed!=Anda mesti berada dalam talian untuk dibunuh! diff --git a/game_commands/locale/game_commands.ru.tr b/game_commands/locale/game_commands.ru.tr new file mode 100644 index 0000000..26d9e08 --- /dev/null +++ b/game_commands/locale/game_commands.ru.tr @@ -0,0 +1,4 @@ +# textdomain: game_commands +Kill yourself to respawn=Убейте себя, чтобы возродиться +No static_spawnpoint defined=static_spawnpoint не определён +You need to be online to be killed!=Вы должны быть онлайн, чтобы убить себя! diff --git a/game_commands/locale/game_commands.se.tr b/game_commands/locale/game_commands.se.tr new file mode 100644 index 0000000..259e1db --- /dev/null +++ b/game_commands/locale/game_commands.se.tr @@ -0,0 +1,4 @@ +# textdomain: game_commands +Kill yourself to respawn=Döda dig själv för att respawna +No static_spawnpoint defined=Ingen static_spawnpoint definierat +You need to be online to be killed!=Du måsta vara online för att bli dödad! \ No newline at end of file diff --git a/game_commands/locale/game_commands.zh_CN.tr b/game_commands/locale/game_commands.zh_CN.tr new file mode 100644 index 0000000..3c69dfb --- /dev/null +++ b/game_commands/locale/game_commands.zh_CN.tr @@ -0,0 +1,4 @@ +# textdomain: game_commands +Kill yourself to respawn=杀死自己并重生 +No static_spawnpoint defined=static_spawnpoint 未定义 +You need to be online to be killed!=您需要在线才能被杀死! diff --git a/game_commands/locale/game_commands.zh_TW.tr b/game_commands/locale/game_commands.zh_TW.tr new file mode 100644 index 0000000..34e148d --- /dev/null +++ b/game_commands/locale/game_commands.zh_TW.tr @@ -0,0 +1,4 @@ +# textdomain: game_commands +Kill yourself to respawn=殺死自己並重生 +No static_spawnpoint defined=static_spawnpoint 未定義 +You need to be online to be killed!=您需要在線才能被殺死! diff --git a/game_commands/locale/template.txt b/game_commands/locale/template.txt new file mode 100644 index 0000000..903f160 --- /dev/null +++ b/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/game_commands/mod.conf b/game_commands/mod.conf new file mode 100644 index 0000000..5571ff5 --- /dev/null +++ b/game_commands/mod.conf @@ -0,0 +1,2 @@ +name = game_commands +description = Minetest Game mod: game_commands diff --git a/give_initial_stuff/depends.txt b/give_initial_stuff/depends.txt deleted file mode 100644 index 3a7daa1..0000000 --- a/give_initial_stuff/depends.txt +++ /dev/null @@ -1,2 +0,0 @@ -default - diff --git a/give_initial_stuff/init.lua b/give_initial_stuff/init.lua index 4815bd8..74421dc 100644 --- a/give_initial_stuff/init.lua +++ b/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/give_initial_stuff/mod.conf b/give_initial_stuff/mod.conf new file mode 100644 index 0000000..51d31ae --- /dev/null +++ b/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/map/README.txt b/map/README.txt index c91e0d9..068439a 100644 --- a/map/README.txt +++ b/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/map/depends.txt b/map/depends.txt deleted file mode 100644 index 4b15f6a..0000000 --- a/map/depends.txt +++ /dev/null @@ -1,3 +0,0 @@ -default -dye -creative? diff --git a/map/init.lua b/map/init.lua index 72b04c7..7c1e36f 100644 --- a/map/init.lua +++ b/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/map/locale/map.de.tr b/map/locale/map.de.tr new file mode 100644 index 0000000..1a784ab --- /dev/null +++ b/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/map/locale/map.es.tr b/map/locale/map.es.tr new file mode 100644 index 0000000..0faed52 --- /dev/null +++ b/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/map/locale/map.fr.tr b/map/locale/map.fr.tr new file mode 100644 index 0000000..29f8e20 --- /dev/null +++ b/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/map/locale/map.it.tr b/map/locale/map.it.tr new file mode 100644 index 0000000..237f4df --- /dev/null +++ b/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/map/locale/map.ms.tr b/map/locale/map.ms.tr new file mode 100644 index 0000000..8564f91 --- /dev/null +++ b/map/locale/map.ms.tr @@ -0,0 +1,3 @@ +# textdomain: map +Mapping Kit=Alat Pemetaan +Use with 'Minimap' key=Guna dengan kekunci 'Peta Mini' diff --git a/map/locale/map.ru.tr b/map/locale/map.ru.tr new file mode 100644 index 0000000..73120b6 --- /dev/null +++ b/map/locale/map.ru.tr @@ -0,0 +1,3 @@ +# textdomain: map +Mapping Kit=Картографический комплект +Use with 'Minimap' key=Используйте с ключом 'Minimap' diff --git a/map/locale/map.se.tr b/map/locale/map.se.tr new file mode 100644 index 0000000..c1bb01a --- /dev/null +++ b/map/locale/map.se.tr @@ -0,0 +1,3 @@ +# textdomain: map +Mapping Kit=Kartläggningssats +Use with 'Minimap' key=Använd med 'Minimap' tangent \ No newline at end of file diff --git a/map/locale/map.zh_CN.tr b/map/locale/map.zh_CN.tr new file mode 100644 index 0000000..cec95bb --- /dev/null +++ b/map/locale/map.zh_CN.tr @@ -0,0 +1,3 @@ +# textdomain: map +Mapping Kit=地图绘制工具包 +Use with 'Minimap' key=与“迷你地图”键一起使用 diff --git a/map/locale/map.zh_TW.tr b/map/locale/map.zh_TW.tr new file mode 100644 index 0000000..a098124 --- /dev/null +++ b/map/locale/map.zh_TW.tr @@ -0,0 +1,3 @@ +# textdomain: map +Mapping Kit=地圖繪製工具包 +Use with 'Minimap' key=與“迷你地圖”鍵一起使用 diff --git a/map/locale/template.txt b/map/locale/template.txt new file mode 100644 index 0000000..2dbe2ee --- /dev/null +++ b/map/locale/template.txt @@ -0,0 +1,3 @@ +# textdomain: map +Mapping Kit= +Use with 'Minimap' key= diff --git a/map/mod.conf b/map/mod.conf new file mode 100644 index 0000000..2099c19 --- /dev/null +++ b/map/mod.conf @@ -0,0 +1,4 @@ +name = map +description = Minetest Game mod: map +depends = default, dye +optional_depends = creative diff --git a/map/textures/map_mapping_kit.png b/map/textures/map_mapping_kit.png index 18fed26..015b878 100644 Binary files a/map/textures/map_mapping_kit.png and b/map/textures/map_mapping_kit.png differ diff --git a/player_api/README.txt b/player_api/README.txt index 22d040c..0f6a0b8 100644 --- a/player_api/README.txt +++ b/player_api/README.txt @@ -4,6 +4,7 @@ See license.txt for license information. Provides an API to allow multiple mods to set player models and textures. Also sets the default model, texture, and player flags. +This mod is only for content related to the Player API and the player object. Authors of source code ---------------------- @@ -16,17 +17,13 @@ stujones11 (CC BY-SA 3.0): character.b3d character.blend -- Both derived from a model by MirceaKitsune (CC BY-SA 3.0) +An0n3m0us (CC BY-SA 3.0): + character.b3d + character.blend -- Player animation improvement + Jordach (CC BY-SA 3.0): character.png -paramat (CC BY-SA 3.0): - gui_hotbar.png - gui_hotbar_selected.png - celeron55, Perttu Ahola (CC BY-SA 3.0): player.png player_back.png - -sonictechtonic (CC BY 3.0): -https://www.freesound.org/people/sonictechtonic/sounds/241872/ - player_damage.ogg diff --git a/player_api/api.lua b/player_api/api.lua index e309b08..5803e95 100644 --- a/player_api/api.lua +++ b/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, @@ -95,22 +96,25 @@ end) local player_set_animation = player_api.set_animation local player_attached = player_api.player_attached +-- Prevent knockback for attached players +local old_calculate_knockback = minetest.calculate_knockback +function minetest.calculate_knockback(player, ...) + if player_attached[player:get_player_name()] then + return 0 + end + return old_calculate_knockback(player, ...) +end + -- Check each player and apply animations -minetest.register_globalstep(function(dtime) +minetest.register_globalstep(function() for _, player in pairs(minetest.get_connected_players()) do local name = player:get_player_name() local model_name = player_model[name] local model = model_name and models[model_name] if model and not player_attached[name] then local controls = player:get_player_control() - local walking = false local animation_speed_mod = model.animation_speed or 30 - -- Determine if the player is walking - if controls.up or controls.down or controls.left or controls.right then - walking = true - end - -- Determine if the player is sneaking, and reduce animation speed if so if controls.sneak then animation_speed_mod = animation_speed_mod / 2 @@ -119,18 +123,19 @@ minetest.register_globalstep(function(dtime) -- Apply animations based on what the player is doing if player:get_hp() == 0 then player_set_animation(player, "lay") - elseif walking then + -- Determine if the player is walking + elseif controls.up or controls.down or controls.left or controls.right then if player_sneak[name] ~= controls.sneak then player_anim[name] = nil player_sneak[name] = controls.sneak end - if controls.LMB then + if controls.LMB or controls.RMB then player_set_animation(player, "walk_mine", animation_speed_mod) else player_set_animation(player, "walk", animation_speed_mod) end - elseif controls.LMB then - player_set_animation(player, "mine") + elseif controls.LMB or controls.RMB then + player_set_animation(player, "mine", animation_speed_mod) else player_set_animation(player, "stand", animation_speed_mod) end diff --git a/player_api/init.lua b/player_api/init.lua index 7a1f353..19028de 100644 --- a/player_api/init.lua +++ b/player_api/init.lua @@ -1,3 +1,5 @@ +-- player/init.lua + dofile(minetest.get_modpath("player_api") .. "/api.lua") -- Default player appearance @@ -29,6 +31,4 @@ minetest.register_on_joinplayer(function(player) {x = 200, y = 219}, 30 ) - player:hud_set_hotbar_image("gui_hotbar.png") - player:hud_set_hotbar_selected_image("gui_hotbar_selected.png") end) diff --git a/player_api/license.txt b/player_api/license.txt index 69bb2f8..dac0408 100644 --- a/player_api/license.txt +++ b/player_api/license.txt @@ -22,7 +22,7 @@ Attribution-ShareAlike 3.0 Unported (CC BY-SA 3.0) Copyright (C) 2011-2018 celeron55, Perttu Ahola Copyright (C) 2012-2018 Jordach Copyright (C) 2018 stujones11 -Copyright (C) 2018 paramat +Copyright (C) 2019 An0n3m0us You are free to: Share — copy and redistribute the material in any medium or format. @@ -51,34 +51,3 @@ rights may limit how you use the material. For more details: http://creativecommons.org/licenses/by-sa/3.0/ - ------------------------------------- - -Attribution 3.0 Unported (CC BY 3.0) -Copyright (C) 2014-2018 sonictechtonic - -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/ - diff --git a/player_api/mod.conf b/player_api/mod.conf new file mode 100644 index 0000000..198b86d --- /dev/null +++ b/player_api/mod.conf @@ -0,0 +1,2 @@ +name = player_api +description = Minetest Game mod: player_api diff --git a/player_api/models/character.b3d b/player_api/models/character.b3d index b3b772a..8edbaf6 100644 Binary files a/player_api/models/character.b3d and b/player_api/models/character.b3d differ diff --git a/player_api/models/character.blend b/player_api/models/character.blend index 652579c..f0ce411 100644 Binary files a/player_api/models/character.blend and b/player_api/models/character.blend differ diff --git a/player_api/models/character.png b/player_api/models/character.png index 6c82d4c..0502178 100644 Binary files a/player_api/models/character.png and b/player_api/models/character.png differ diff --git a/player_api/textures/gui_hotbar.png b/player_api/textures/gui_hotbar.png deleted file mode 100644 index 10c3448..0000000 Binary files a/player_api/textures/gui_hotbar.png and /dev/null differ diff --git a/player_api/textures/gui_hotbar_selected.png b/player_api/textures/gui_hotbar_selected.png deleted file mode 100644 index 26b8ed5..0000000 Binary files a/player_api/textures/gui_hotbar_selected.png and /dev/null differ diff --git a/player_api/textures/player.png b/player_api/textures/player.png index c2ea4e3..6d61c43 100644 Binary files a/player_api/textures/player.png and b/player_api/textures/player.png differ diff --git a/player_api/textures/player_back.png b/player_api/textures/player_back.png index 920eab2..5e9ef05 100644 Binary files a/player_api/textures/player_back.png and b/player_api/textures/player_back.png differ diff --git a/screwdriver/init.lua b/screwdriver/init.lua index 634edf8..82fbaab 100644 --- a/screwdriver/init.lua +++ b/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/screwdriver/locale/screwdriver.de.tr b/screwdriver/locale/screwdriver.de.tr new file mode 100644 index 0000000..3c48ab4 --- /dev/null +++ b/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/screwdriver/locale/screwdriver.es.tr b/screwdriver/locale/screwdriver.es.tr new file mode 100644 index 0000000..868ffc3 --- /dev/null +++ b/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/screwdriver/locale/screwdriver.fr.tr b/screwdriver/locale/screwdriver.fr.tr new file mode 100644 index 0000000..fe34a9b --- /dev/null +++ b/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/screwdriver/locale/screwdriver.it.tr b/screwdriver/locale/screwdriver.it.tr new file mode 100644 index 0000000..d9fc0a0 --- /dev/null +++ b/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/screwdriver/locale/screwdriver.ms.tr b/screwdriver/locale/screwdriver.ms.tr new file mode 100644 index 0000000..f296fc5 --- /dev/null +++ b/screwdriver/locale/screwdriver.ms.tr @@ -0,0 +1,3 @@ +# textdomain: screwdriver +Screwdriver=Pemutar Skru +(left-click rotates face, right-click rotates axis)=(klik-kiri putar muka, klik-kanan putar paksi) diff --git a/screwdriver/locale/screwdriver.ru.tr b/screwdriver/locale/screwdriver.ru.tr new file mode 100644 index 0000000..bbab330 --- /dev/null +++ b/screwdriver/locale/screwdriver.ru.tr @@ -0,0 +1,3 @@ +# textdomain: screwdriver +Screwdriver=Отвёртка +(left-click rotates face, right-click rotates axis)=(клик левой кнопкой мыши вращает грань, клик правой кнопкой мыши вращает ось) diff --git a/screwdriver/locale/screwdriver.se.tr b/screwdriver/locale/screwdriver.se.tr new file mode 100644 index 0000000..9197357 --- /dev/null +++ b/screwdriver/locale/screwdriver.se.tr @@ -0,0 +1,3 @@ +# textdomain: screwdriver +Screwdriver=Skruvmejsel +(left-click rotates face, right-click rotates axis)=(vänster-klick roterar ansikte, höger-klick roterar axeln) \ No newline at end of file diff --git a/screwdriver/locale/screwdriver.zh_CN.tr b/screwdriver/locale/screwdriver.zh_CN.tr new file mode 100644 index 0000000..caddf79 --- /dev/null +++ b/screwdriver/locale/screwdriver.zh_CN.tr @@ -0,0 +1,3 @@ +# textdomain: screwdriver +Screwdriver=螺丝刀 +(left-click rotates face, right-click rotates axis)=(左键单击旋转面,右键单击旋转轴) diff --git a/screwdriver/locale/screwdriver.zh_TW.tr b/screwdriver/locale/screwdriver.zh_TW.tr new file mode 100644 index 0000000..e638bfa --- /dev/null +++ b/screwdriver/locale/screwdriver.zh_TW.tr @@ -0,0 +1,3 @@ +# textdomain: screwdriver +Screwdriver=螺絲刀 +(left-click rotates face, right-click rotates axis)=(左鍵單擊旋轉面,右鍵單擊旋轉軸) diff --git a/screwdriver/locale/template.txt b/screwdriver/locale/template.txt new file mode 100644 index 0000000..4cc8e2a --- /dev/null +++ b/screwdriver/locale/template.txt @@ -0,0 +1,3 @@ +# textdomain: screwdriver +Screwdriver= +(left-click rotates face, right-click rotates axis)= diff --git a/screwdriver/mod.conf b/screwdriver/mod.conf new file mode 100644 index 0000000..306c52b --- /dev/null +++ b/screwdriver/mod.conf @@ -0,0 +1,2 @@ +name = screwdriver +description = Minetest Game mod: screwdriver diff --git a/screwdriver/textures/screwdriver.png b/screwdriver/textures/screwdriver.png index 67361ca..b2a56d5 100644 Binary files a/screwdriver/textures/screwdriver.png and b/screwdriver/textures/screwdriver.png differ diff --git a/sethome/init.lua b/sethome/init.lua index 4563381..bad7806 100644 --- a/sethome/init.lua +++ b/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/sethome/locale/sethome.de.tr b/sethome/locale/sethome.de.tr new file mode 100644 index 0000000..46279dd --- /dev/null +++ b/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/sethome/locale/sethome.es.tr b/sethome/locale/sethome.es.tr new file mode 100644 index 0000000..7c04ee3 --- /dev/null +++ b/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/sethome/locale/sethome.fr.tr b/sethome/locale/sethome.fr.tr new file mode 100644 index 0000000..852621d --- /dev/null +++ b/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/sethome/locale/sethome.it.tr b/sethome/locale/sethome.it.tr new file mode 100644 index 0000000..bbf86b8 --- /dev/null +++ b/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/sethome/locale/sethome.ms.tr b/sethome/locale/sethome.ms.tr new file mode 100644 index 0000000..7e9ec76 --- /dev/null +++ b/sethome/locale/sethome.ms.tr @@ -0,0 +1,8 @@ +# textdomain: sethome +Can use /sethome and /home=Boleh guna /sethome dan /home +Teleport you to your home point=Teleportasikan anda ke titik rumah anda +Teleported to home!=Diteleportasikan ke rumah! +Set a home using /sethome=Tetapkan rumah menggunakan /sethome +Set your home point=Tetapkan titik rumah anda +Home set!=Rumah ditetapkan! +Player not found!=Pemain tidak dijumpai! diff --git a/sethome/locale/sethome.ru.tr b/sethome/locale/sethome.ru.tr new file mode 100644 index 0000000..6738824 --- /dev/null +++ b/sethome/locale/sethome.ru.tr @@ -0,0 +1,8 @@ +# textdomain: sethome +Can use /sethome and /home=Возможность использовать /sethome и /home +Teleport you to your home point=Вы телепортируетесь в свою домашнюю точку +Teleported to home!=Вы телепортировались домой! +Set a home using /sethome=Установите домашнюю точку, используя /sethome +Set your home point=Установите вашу домашнюю точку +Home set!=Домашняя точка установлена! +Player not found!=Игрок не обнаружен! diff --git a/sethome/locale/sethome.se.tr b/sethome/locale/sethome.se.tr new file mode 100644 index 0000000..6077e4a --- /dev/null +++ b/sethome/locale/sethome.se.tr @@ -0,0 +1,8 @@ +# textdomain: sethome +Can use /sethome and /home=Kan används /sethome och /home +Teleport you to your home point=Teleportera dig till din hempunkt +Teleported to home!=Teleporterad hem! +Set a home using /sethome=Ställ in ett hem med /sethome +Set your home point=Ställ in din hempunkt +Home set!=Hem inställt! +Player not found!=Spelare inte hittad! \ No newline at end of file diff --git a/sethome/locale/sethome.zh_CN.tr b/sethome/locale/sethome.zh_CN.tr new file mode 100644 index 0000000..9e3780a --- /dev/null +++ b/sethome/locale/sethome.zh_CN.tr @@ -0,0 +1,8 @@ +# textdomain: sethome +Can use /sethome and /home=可以使用/sethome和/home +Teleport you to your home point=传送您到您家的地点 +Teleported to home!=已传送到家! +Set a home using /sethome=使用/sethome设定家 +Set your home point=设定您家的地点 +Home set!=已设定家! +Player not found!=未找到玩家! diff --git a/sethome/locale/sethome.zh_TW.tr b/sethome/locale/sethome.zh_TW.tr new file mode 100644 index 0000000..43e14aa --- /dev/null +++ b/sethome/locale/sethome.zh_TW.tr @@ -0,0 +1,8 @@ +# textdomain: sethome +Can use /sethome and /home=可以使用/sethome和/home +Teleport you to your home point=傳送您到您家的地點 +Teleported to home!=已傳送到家! +Set a home using /sethome=使用/sethome設定家 +Set your home point=設定您家的地點 +Home set!=已設定家! +Player not found!=未找到玩家! diff --git a/sethome/locale/template.txt b/sethome/locale/template.txt new file mode 100644 index 0000000..d04bd50 --- /dev/null +++ b/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/sethome/mod.conf b/sethome/mod.conf new file mode 100644 index 0000000..0079925 --- /dev/null +++ b/sethome/mod.conf @@ -0,0 +1,2 @@ +name = sethome +description = Minetest Game mod: sethome diff --git a/sfinv/.gitignore b/sfinv/.gitignore deleted file mode 100644 index 8349552..0000000 --- a/sfinv/.gitignore +++ /dev/null @@ -1,111 +0,0 @@ - -# Created by https://www.gitignore.io/api/lua,linux,macos,windows - -### Linux ### -*~ - -# temporary files which can be created if a process still has a handle open of a deleted file -.fuse_hidden* - -# KDE directory preferences -.directory - -# Linux trash folder which might appear on any partition or disk -.Trash-* - -# .nfs files are created when an open file is removed but is still being accessed -.nfs* - -### Lua ### -# Compiled Lua sources -luac.out - -# luarocks build files -*.src.rock -*.zip -*.tar.gz - -# Object files -*.o -*.os -*.ko -*.obj -*.elf - -# Precompiled Headers -*.gch -*.pch - -# Libraries -*.lib -*.a -*.la -*.lo -*.def -*.exp - -# Shared objects (inc. Windows DLLs) -*.dll -*.so -*.so.* -*.dylib - -# Executables -*.exe -*.out -*.app -*.i*86 -*.x86_64 -*.hex - - -### macOS ### -*.DS_Store -.AppleDouble -.LSOverride - -# Icon must end with two \r -Icon - -# Thumbnails -._* - -# Files that might appear in the root of a volume -.DocumentRevisions-V100 -.fseventsd -.Spotlight-V100 -.TemporaryItems -.Trashes -.VolumeIcon.icns -.com.apple.timemachine.donotpresent - -# Directories potentially created on remote AFP share -.AppleDB -.AppleDesktop -Network Trash Folder -Temporary Items -.apdisk - -### Windows ### -# Windows thumbnail cache files -Thumbs.db -ehthumbs.db -ehthumbs_vista.db - -# Folder config file -Desktop.ini - -# Recycle Bin used on file shares -$RECYCLE.BIN/ - -# Windows Installer files -*.cab -*.msi -*.msm -*.msp - -# Windows shortcuts -*.lnk - - -# End of https://www.gitignore.io/api/lua,linux,macos,windows diff --git a/sfinv/LICENSE.txt b/sfinv/LICENSE.txt deleted file mode 100644 index 8aa7831..0000000 --- a/sfinv/LICENSE.txt +++ /dev/null @@ -1,7 +0,0 @@ -Copyright (C) 2016 rubenwardy - -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. diff --git a/sfinv/README.md b/sfinv/README.md deleted file mode 100644 index 2c3e85f..0000000 --- a/sfinv/README.md +++ /dev/null @@ -1,114 +0,0 @@ -# Simple Fast Inventory - -![SFINV Screeny](screenshot.png) - -A cleaner, simpler solution to having an advanced inventory in Minetest. - -Written by rubenwardy. -License: MIT - -## API - -It is recommended that you read this link for a good introduction to the sfinv API -by its author: https://rubenwardy.com/minetest_modding_book/en/chapters/sfinv.html - -### sfinv Methods - -**Pages** - -* sfinv.set_page(player, pagename) - changes the page -* sfinv.get_homepage_name(player) - get the page name of the first page to show to a player -* sfinv.register_page(name, def) - register a page, see section below -* sfinv.override_page(name, def) - overrides fields of an page registered with register_page. - * Note: Page must already be defined, (opt)depend on the mod defining it. -* sfinv.set_player_inventory_formspec(player) - (re)builds page formspec - and calls set_inventory_formspec(). -* sfinv.get_formspec(player, context) - builds current page's formspec - -**Contexts** - -* sfinv.get_or_create_context(player) - gets the player's context -* sfinv.set_context(player, context) - -**Theming** - -* sfinv.make_formspec(player, context, content, show_inv, size) - adds a theme to a formspec - * show_inv, defaults to false. Whether to show the player's main inventory - * size, defaults to `size[8,8.6]` if not specified -* sfinv.get_nav_fs(player, context, nav, current_idx) - creates tabheader or "" - -### sfinv Members - -* pages - table of pages[pagename] = def -* pages_unordered - array table of pages in order of addition (used to build navigation tabs). -* contexts - contexts[playername] = player_context -* enabled - set to false to disable. Good for inventory rehaul mods like unified inventory - -### Context - -A table with these keys: - -* page - current page name -* nav - a list of page names -* nav_titles - a list of page titles -* nav_idx - current nav index (in nav and nav_titles) -* any thing you want to store - * sfinv will clear the stored data on log out / log in - -### sfinv.register_page - -sfinv.register_page(name, def) - -def is a table containing: - -* `title` - human readable page name (required) -* `get(self, player, context)` - returns a formspec string. See formspec variables. (required) -* `is_in_nav(self, player, context)` - return true to show in the navigation (the tab header, by default) -* `on_player_receive_fields(self, player, context, fields)` - on formspec submit. -* `on_enter(self, player, context)` - called when the player changes pages, usually using the tabs. -* `on_leave(self, player, context)` - when leaving this page to go to another, called before other's on_enter - -### get formspec - -Use sfinv.make_formspec to apply a layout: - - 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] - listring[current_player;main] - listring[current_player;craft] - image[0,4.25;1,1;gui_hb_bg.png] - image[1,4.25;1,1;gui_hb_bg.png] - image[2,4.25;1,1;gui_hb_bg.png] - image[3,4.25;1,1;gui_hb_bg.png] - image[4,4.25;1,1;gui_hb_bg.png] - image[5,4.25;1,1;gui_hb_bg.png] - image[6,4.25;1,1;gui_hb_bg.png] - image[7,4.25;1,1;gui_hb_bg.png] - ]], true) - -See above (methods section) for more options. - -### Customising themes - -Simply override this function to change the navigation: - - function sfinv.get_nav_fs(player, context, nav, current_idx) - return "navformspec" - end - -And override this function to change the layout: - - function sfinv.make_formspec(player, context, content, show_inv, size) - local tmp = { - size or "size[8,8.6]", - theme_main, - sfinv.get_nav_fs(player, context, context.nav_titles, context.nav_idx), - content - } - if show_inv then - tmp[4] = theme_inv - end - return table.concat(tmp, "") - end diff --git a/sfinv/README.txt b/sfinv/README.txt index a7ac794..a69e3c3 100644 --- a/sfinv/README.txt +++ b/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/sfinv/api.lua b/sfinv/api.lua index cc1bde5..1dbc44a 100644 --- a/sfinv/api.lua +++ b/sfinv/api.lua @@ -5,16 +5,6 @@ sfinv = { enabled = true } -if minetest.features.formspec_prepends then - sfinv.gui_bg = "" - sfinv.gui_bg_img = "" - sfinv.gui_slots = "" -else - sfinv.gui_bg = "bgcolor[#080808BB;true]" - sfinv.gui_bg_img = "background[5,5;1,1;gui_formbg.png;true]" - sfinv.gui_slots = "listcolors[#00000069;#5A5A5A;#141318;#30434C;#FFF]" -end - function sfinv.register_page(name, def) assert(name, "Invalid sfinv page. Requires a name") assert(def, "Invalid sfinv page. Requires a def[inition] table") @@ -46,24 +36,26 @@ function sfinv.get_nav_fs(player, context, nav, current_idx) end end -local theme_main = "bgcolor[#080808BB;true]" .. sfinv.gui_bg .. - sfinv.gui_bg_img - -local theme_inv = sfinv.gui_slots .. [[ - list[current_player;main;0,4.7;8,1;] - list[current_player;main;0,5.85;8,3;8] +local theme_inv = [[ + image[0,5.2;1,1;gui_hb_bg.png] + image[1,5.2;1,1;gui_hb_bg.png] + image[2,5.2;1,1;gui_hb_bg.png] + image[3,5.2;1,1;gui_hb_bg.png] + image[4,5.2;1,1;gui_hb_bg.png] + image[5,5.2;1,1;gui_hb_bg.png] + image[6,5.2;1,1;gui_hb_bg.png] + image[7,5.2;1,1;gui_hb_bg.png] + list[current_player;main;0,5.2;8,1;] + list[current_player;main;0,6.35;8,3;8] ]] function sfinv.make_formspec(player, context, content, show_inv, size) local tmp = { - size or "size[8,8.6]", - theme_main, + size or "size[8,9.1]", 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 @@ -149,6 +141,11 @@ function sfinv.set_page(player, pagename) sfinv.set_player_inventory_formspec(player, context) end +function sfinv.get_page(player) + local context = sfinv.contexts[player:get_player_name()] + return context and context.page or sfinv.get_homepage_name(player) +end + minetest.register_on_joinplayer(function(player) if sfinv.enabled then sfinv.set_player_inventory_formspec(player) diff --git a/sfinv/description.txt b/sfinv/description.txt deleted file mode 100644 index c62b967..0000000 --- a/sfinv/description.txt +++ /dev/null @@ -1 +0,0 @@ -A cleaner, simpler solution to having an advanced inventory in Minetest. diff --git a/sfinv/init.lua b/sfinv/init.lua index f030222..71e9ee7 100644 --- a/sfinv/init.lua +++ b/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.75;1,1;gui_hb_bg.png] - image[1,4.75;1,1;gui_hb_bg.png] - image[2,4.75;1,1;gui_hb_bg.png] - image[3,4.75;1,1;gui_hb_bg.png] - image[4,4.75;1,1;gui_hb_bg.png] - image[5,4.75;1,1;gui_hb_bg.png] - image[6,4.75;1,1;gui_hb_bg.png] - image[7,4.75;1,1;gui_hb_bg.png] ]], true) end }) diff --git a/sfinv/license.txt b/sfinv/license.txt index e27dc85..6676d74 100644 --- a/sfinv/license.txt +++ b/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/sfinv/locale/sfinv.de.tr b/sfinv/locale/sfinv.de.tr new file mode 100644 index 0000000..1ba6acb --- /dev/null +++ b/sfinv/locale/sfinv.de.tr @@ -0,0 +1,2 @@ +# textdomain:sfinv +Crafting=Fertigung diff --git a/sfinv/locale/sfinv.es.tr b/sfinv/locale/sfinv.es.tr new file mode 100644 index 0000000..b941f4e --- /dev/null +++ b/sfinv/locale/sfinv.es.tr @@ -0,0 +1,2 @@ +# textdomain:sfinv +Crafting=Creación diff --git a/sfinv/locale/sfinv.fr.tr b/sfinv/locale/sfinv.fr.tr new file mode 100644 index 0000000..6d59735 --- /dev/null +++ b/sfinv/locale/sfinv.fr.tr @@ -0,0 +1,2 @@ +# textdomain:sfinv +Crafting=Artisanat diff --git a/sfinv/locale/sfinv.it.tr b/sfinv/locale/sfinv.it.tr new file mode 100644 index 0000000..85761bc --- /dev/null +++ b/sfinv/locale/sfinv.it.tr @@ -0,0 +1,2 @@ +# textdomain:sfinv +Crafting=Assemblaggio \ No newline at end of file diff --git a/sfinv/locale/sfinv.ms.tr b/sfinv/locale/sfinv.ms.tr new file mode 100644 index 0000000..cc416ca --- /dev/null +++ b/sfinv/locale/sfinv.ms.tr @@ -0,0 +1,2 @@ +# textdomain:sfinv +Crafting=Pertukangan diff --git a/sfinv/locale/sfinv.ru.tr b/sfinv/locale/sfinv.ru.tr new file mode 100644 index 0000000..a98c708 --- /dev/null +++ b/sfinv/locale/sfinv.ru.tr @@ -0,0 +1,2 @@ +# textdomain:sfinv +Crafting=Крафтинг diff --git a/sfinv/locale/sfinv.se.tr b/sfinv/locale/sfinv.se.tr new file mode 100644 index 0000000..cf2924a --- /dev/null +++ b/sfinv/locale/sfinv.se.tr @@ -0,0 +1,2 @@ +# textdomain:sfinv +Crafting=Tillverkning \ No newline at end of file diff --git a/sfinv/locale/sfinv.zh_CN.tr b/sfinv/locale/sfinv.zh_CN.tr new file mode 100644 index 0000000..251362f --- /dev/null +++ b/sfinv/locale/sfinv.zh_CN.tr @@ -0,0 +1,2 @@ +# textdomain:sfinv +Crafting=合成 diff --git a/sfinv/locale/sfinv.zh_TW.tr b/sfinv/locale/sfinv.zh_TW.tr new file mode 100644 index 0000000..251362f --- /dev/null +++ b/sfinv/locale/sfinv.zh_TW.tr @@ -0,0 +1,2 @@ +# textdomain:sfinv +Crafting=合成 diff --git a/sfinv/locale/template.txt b/sfinv/locale/template.txt new file mode 100644 index 0000000..913ba9f --- /dev/null +++ b/sfinv/locale/template.txt @@ -0,0 +1,2 @@ +# textdomain:sfinv +Crafting= diff --git a/sfinv/mod.conf b/sfinv/mod.conf index e91330f..2934435 100644 --- a/sfinv/mod.conf +++ b/sfinv/mod.conf @@ -1,5 +1,2 @@ name = sfinv -description = A cleaner, simpler solution to having an advanced inventory -release = 52 -author = rubenwardy -title = sfinv +description = Minetest Game mod: sfinv diff --git a/sfinv/screenshot.png b/sfinv/screenshot.png deleted file mode 100644 index 6abc715..0000000 Binary files a/sfinv/screenshot.png and /dev/null differ diff --git a/sfinv/textures/sfinv_crafting_arrow.png b/sfinv/textures/sfinv_crafting_arrow.png new file mode 100644 index 0000000..df1bbdb Binary files /dev/null and b/sfinv/textures/sfinv_crafting_arrow.png differ diff --git a/spawn/depends.txt b/spawn/depends.txt deleted file mode 100644 index 548489e..0000000 --- a/spawn/depends.txt +++ /dev/null @@ -1,2 +0,0 @@ -default -beds? diff --git a/spawn/init.lua b/spawn/init.lua index 6707932..12c957f 100644 --- a/spawn/init.lua +++ b/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 @@ -120,6 +135,7 @@ local function on_spawn(player) if success then player:set_pos(spawn_pos) end + return success end minetest.register_on_newplayer(function(player) @@ -138,7 +154,5 @@ minetest.register_on_respawnplayer(function(player) return end - on_spawn(player) - - return true + return on_spawn(player) end) diff --git a/spawn/mod.conf b/spawn/mod.conf new file mode 100644 index 0000000..ec3d564 --- /dev/null +++ b/spawn/mod.conf @@ -0,0 +1,4 @@ +name = spawn +description = Minetest Game mod: spawn +depends = default +optional_depends = beds diff --git a/tnt/README.txt b/tnt/README.txt index 1970804..df244fe 100644 --- a/tnt/README.txt +++ b/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/tnt/depends.txt b/tnt/depends.txt deleted file mode 100644 index 5ff216f..0000000 --- a/tnt/depends.txt +++ /dev/null @@ -1,3 +0,0 @@ -default -fire - diff --git a/tnt/init.lua b/tnt/init.lua index 3efc6ec..21970c6 100644 --- a/tnt/init.lua +++ b/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 @@ -16,7 +22,7 @@ local tnt_radius = tonumber(minetest.settings:get("tnt_radius") or 3) -- Fill a list with data for content IDs, after all nodes are registered local cid_data = {} -minetest.after(0, function() +minetest.register_on_mods_loaded(function() for name, def in pairs(minetest.registered_nodes) do cid_data[minetest.get_content_id(name)] = { name = name, @@ -157,42 +163,41 @@ local function entity_physics(pos, radius, drops) local damage = (4 / dist) * radius if obj:is_player() then - -- currently the engine has no method to set - -- player velocity. See #2960 - -- instead, we knock the player back 1.0 node, and slightly upwards local dir = vector.normalize(vector.subtract(obj_pos, pos)) - local moveoff = vector.multiply(dir, dist + 1.0) - local newpos = vector.add(pos, moveoff) - newpos = vector.add(newpos, {x = 0, y = 0.2, z = 0}) - obj:set_pos(newpos) + local moveoff = vector.multiply(dir, 2 / dist * radius) + obj:add_player_velocity(moveoff) obj:set_hp(obj:get_hp() - damage) else - local do_damage = true - local do_knockback = true - local entity_drops = {} local luaobj = obj:get_luaentity() - local objdef = minetest.registered_entities[luaobj.name] - if objdef and objdef.on_blast then - do_damage, do_knockback, entity_drops = objdef.on_blast(luaobj, damage) - end + -- object might have disappeared somehow + if luaobj then + local do_damage = true + local do_knockback = true + local entity_drops = {} + local objdef = minetest.registered_entities[luaobj.name] - if do_knockback then - local obj_vel = obj:get_velocity() - obj:set_velocity(calc_velocity(pos, obj_pos, - obj_vel, radius * 10)) - end - if do_damage then - if not obj:get_armor_groups().immortal then - obj:punch(obj, 1.0, { - full_punch_interval = 1.0, - damage_groups = {fleshy = damage}, - }, nil) + if objdef and objdef.on_blast then + do_damage, do_knockback, entity_drops = objdef.on_blast(luaobj, damage) + end + + if do_knockback then + local obj_vel = obj:get_velocity() + obj:set_velocity(calc_velocity(pos, obj_pos, + obj_vel, radius * 10)) + end + if do_damage then + if not obj:get_armor_groups().immortal then + obj:punch(obj, 1.0, { + full_punch_interval = 1.0, + damage_groups = {fleshy = damage}, + }, nil) + end + end + for _, item in pairs(entity_drops) do + add_drop(drops, item) end - end - for _, item in pairs(entity_drops) do - add_drop(drops, item) end end end @@ -268,7 +273,7 @@ function tnt.burn(pos, nodename) def.on_ignite(pos) elseif minetest.get_item_group(name, "tnt") > 0 then minetest.swap_node(pos, {name = name .. "_burning"}) - minetest.sound_play("tnt_ignite", {pos = pos}) + minetest.sound_play("tnt_ignite", {pos = pos}, true) minetest.get_node_timer(pos):start(1) end end @@ -283,10 +288,15 @@ local function tnt_explode(pos, radius, ignore_protection, ignore_on_blast, owne local a = VoxelArea:new({MinEdge = minp, MaxEdge = maxp}) local data = vm1:get_data() local count = 0 - local c_tnt = minetest.get_content_id("tnt:tnt") + local c_tnt local c_tnt_burning = minetest.get_content_id("tnt:tnt_burning") local c_tnt_boom = minetest.get_content_id("tnt:boom") local c_air = minetest.get_content_id("air") + if enable_tnt then + c_tnt = minetest.get_content_id("tnt:tnt") + else + c_tnt = c_tnt_burning -- tnt is not registered if disabled + end -- make sure we still have explosion even when centre node isnt tnt related if explode_center then count = 1 @@ -396,8 +406,8 @@ 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, - max_hear_distance = math.min(def.radius * 20, 128)}) + minetest.sound_play(sound, {pos = pos, gain = 2.5, + max_hear_distance = math.min(def.radius * 20, 128)}, true) local drops, radius = tnt_explode(pos, def.radius, def.ignore_protection, def.ignore_on_blast, owner, def.explode_center) -- append entity drops @@ -422,7 +432,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, @@ -535,7 +545,8 @@ minetest.register_node("tnt:gunpowder_burning", { -- unaffected by explosions on_blast = function() end, on_construct = function(pos) - minetest.sound_play("tnt_gunpowder_burning", {pos = pos, gain = 2}) + minetest.sound_play("tnt_gunpowder_burning", {pos = pos, + gain = 2}, true) minetest.get_node_timer(pos):start(1) end, }) @@ -547,7 +558,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}, }) @@ -666,7 +677,7 @@ function tnt.register_tnt(def) -- unaffected by explosions on_blast = function() end, on_construct = function(pos) - minetest.sound_play("tnt_ignite", {pos = pos}) + minetest.sound_play("tnt_ignite", {pos = pos}, true) minetest.get_node_timer(pos):start(4) minetest.check_for_falling(pos) end, @@ -675,6 +686,6 @@ end tnt.register_tnt({ name = "tnt:tnt", - description = "TNT", + description = S("TNT"), radius = tnt_radius, }) diff --git a/tnt/license.txt b/tnt/license.txt index 2c57df3..e59ec6e 100644 --- a/tnt/license.txt +++ b/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/tnt/locale/template.txt b/tnt/locale/template.txt new file mode 100644 index 0000000..62bcb15 --- /dev/null +++ b/tnt/locale/template.txt @@ -0,0 +1,4 @@ +# textdomain: tnt +Gun Powder= +TNT Stick= +TNT= diff --git a/tnt/locale/tnt.de.tr b/tnt/locale/tnt.de.tr new file mode 100644 index 0000000..09d2ac2 --- /dev/null +++ b/tnt/locale/tnt.de.tr @@ -0,0 +1,4 @@ +# textdomain: tnt +Gun Powder=Schießpulver +TNT Stick=TNT-Stange +TNT=TNT diff --git a/tnt/locale/tnt.es.tr b/tnt/locale/tnt.es.tr new file mode 100644 index 0000000..d9f3f20 --- /dev/null +++ b/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/tnt/locale/tnt.fr.tr b/tnt/locale/tnt.fr.tr new file mode 100644 index 0000000..3fe48fb --- /dev/null +++ b/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/tnt/locale/tnt.it.tr b/tnt/locale/tnt.it.tr new file mode 100644 index 0000000..bc4ef14 --- /dev/null +++ b/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/tnt/locale/tnt.ms.tr b/tnt/locale/tnt.ms.tr new file mode 100644 index 0000000..c4c5fdd --- /dev/null +++ b/tnt/locale/tnt.ms.tr @@ -0,0 +1,4 @@ +# textdomain: tnt +Gun Powder=Serbuk Senjata Api +TNT Stick=Batang TNT +TNT=TNT diff --git a/tnt/locale/tnt.ru.tr b/tnt/locale/tnt.ru.tr new file mode 100644 index 0000000..a8cee43 --- /dev/null +++ b/tnt/locale/tnt.ru.tr @@ -0,0 +1,4 @@ +# textdomain: tnt +Gun Powder=Порох +TNT Stick=Тротиловая Палка +TNT=Тротил diff --git a/tnt/locale/tnt.se.tr b/tnt/locale/tnt.se.tr new file mode 100644 index 0000000..21fbbd0 --- /dev/null +++ b/tnt/locale/tnt.se.tr @@ -0,0 +1,4 @@ +# textdomain: tnt +Gun Powder=Krut +TNT Stick=Dynamitpinne +TNT=Dynamit \ No newline at end of file diff --git a/tnt/locale/tnt.zh_CN.tr b/tnt/locale/tnt.zh_CN.tr new file mode 100644 index 0000000..0a3294e --- /dev/null +++ b/tnt/locale/tnt.zh_CN.tr @@ -0,0 +1,4 @@ +# textdomain: tnt +Gun Powder=火药粉 +TNT Stick=炸药棒 +TNT=炸药包 diff --git a/tnt/locale/tnt.zh_TW.tr b/tnt/locale/tnt.zh_TW.tr new file mode 100644 index 0000000..c1b3caf --- /dev/null +++ b/tnt/locale/tnt.zh_TW.tr @@ -0,0 +1,4 @@ +# textdomain: tnt +Gun Powder=火藥粉 +TNT Stick=炸藥棒 +TNT=炸藥包 diff --git a/tnt/mod.conf b/tnt/mod.conf new file mode 100644 index 0000000..9385e82 --- /dev/null +++ b/tnt/mod.conf @@ -0,0 +1,3 @@ +name = tnt +description = Minetest Game mod: tnt +depends = default, fire diff --git a/tnt/sounds/tnt_explode.ogg b/tnt/sounds/tnt_explode.ogg index a414ea0..e00a16c 100644 Binary files a/tnt/sounds/tnt_explode.ogg and b/tnt/sounds/tnt_explode.ogg differ diff --git a/tnt/sounds/tnt_gunpowder_burning.ogg b/tnt/sounds/tnt_gunpowder_burning.ogg index 5c5bfaf..8581c2d 100644 Binary files a/tnt/sounds/tnt_gunpowder_burning.ogg and b/tnt/sounds/tnt_gunpowder_burning.ogg differ diff --git a/tnt/sounds/tnt_ignite.ogg b/tnt/sounds/tnt_ignite.ogg index 199f206..1a7062e 100644 Binary files a/tnt/sounds/tnt_ignite.ogg and b/tnt/sounds/tnt_ignite.ogg differ diff --git a/tnt/textures/tnt_blast.png b/tnt/textures/tnt_blast.png index 346c587..bbb1096 100644 Binary files a/tnt/textures/tnt_blast.png and b/tnt/textures/tnt_blast.png differ diff --git a/tnt/textures/tnt_boom.png b/tnt/textures/tnt_boom.png index a2e9d1d..c848bfc 100644 Binary files a/tnt/textures/tnt_boom.png and b/tnt/textures/tnt_boom.png differ diff --git a/tnt/textures/tnt_bottom.png b/tnt/textures/tnt_bottom.png index 4dade5f..95f66cb 100644 Binary files a/tnt/textures/tnt_bottom.png and b/tnt/textures/tnt_bottom.png differ diff --git a/tnt/textures/tnt_gunpowder_burning_crossing_animated.png b/tnt/textures/tnt_gunpowder_burning_crossing_animated.png index 15e5b1a..a901f7b 100644 Binary files a/tnt/textures/tnt_gunpowder_burning_crossing_animated.png and b/tnt/textures/tnt_gunpowder_burning_crossing_animated.png differ diff --git a/tnt/textures/tnt_gunpowder_burning_curved_animated.png b/tnt/textures/tnt_gunpowder_burning_curved_animated.png index b1f9566..bc01806 100644 Binary files a/tnt/textures/tnt_gunpowder_burning_curved_animated.png and b/tnt/textures/tnt_gunpowder_burning_curved_animated.png differ diff --git a/tnt/textures/tnt_gunpowder_burning_straight_animated.png b/tnt/textures/tnt_gunpowder_burning_straight_animated.png index c49e288..c860ace 100644 Binary files a/tnt/textures/tnt_gunpowder_burning_straight_animated.png and b/tnt/textures/tnt_gunpowder_burning_straight_animated.png differ diff --git a/tnt/textures/tnt_gunpowder_burning_t_junction_animated.png b/tnt/textures/tnt_gunpowder_burning_t_junction_animated.png index 0b26d4d..a556072 100644 Binary files a/tnt/textures/tnt_gunpowder_burning_t_junction_animated.png and b/tnt/textures/tnt_gunpowder_burning_t_junction_animated.png differ diff --git a/tnt/textures/tnt_gunpowder_crossing.png b/tnt/textures/tnt_gunpowder_crossing.png index b9566e0..916c84e 100644 Binary files a/tnt/textures/tnt_gunpowder_crossing.png and b/tnt/textures/tnt_gunpowder_crossing.png differ diff --git a/tnt/textures/tnt_gunpowder_curved.png b/tnt/textures/tnt_gunpowder_curved.png index c154813..cb8b4ea 100644 Binary files a/tnt/textures/tnt_gunpowder_curved.png and b/tnt/textures/tnt_gunpowder_curved.png differ diff --git a/tnt/textures/tnt_gunpowder_inventory.png b/tnt/textures/tnt_gunpowder_inventory.png index cdcdf8f..105a2d2 100644 Binary files a/tnt/textures/tnt_gunpowder_inventory.png and b/tnt/textures/tnt_gunpowder_inventory.png differ diff --git a/tnt/textures/tnt_gunpowder_straight.png b/tnt/textures/tnt_gunpowder_straight.png index ec4bf8a..8ab0e3c 100644 Binary files a/tnt/textures/tnt_gunpowder_straight.png and b/tnt/textures/tnt_gunpowder_straight.png differ diff --git a/tnt/textures/tnt_gunpowder_t_junction.png b/tnt/textures/tnt_gunpowder_t_junction.png index d1351ca..ac997a7 100644 Binary files a/tnt/textures/tnt_gunpowder_t_junction.png and b/tnt/textures/tnt_gunpowder_t_junction.png differ diff --git a/tnt/textures/tnt_side.png b/tnt/textures/tnt_side.png index 277b002..d303473 100644 Binary files a/tnt/textures/tnt_side.png and b/tnt/textures/tnt_side.png differ diff --git a/tnt/textures/tnt_smoke.png b/tnt/textures/tnt_smoke.png index 7cfaf08..488b50f 100644 Binary files a/tnt/textures/tnt_smoke.png and b/tnt/textures/tnt_smoke.png differ diff --git a/tnt/textures/tnt_tnt_stick.png b/tnt/textures/tnt_tnt_stick.png index d349782..bc47a29 100644 Binary files a/tnt/textures/tnt_tnt_stick.png and b/tnt/textures/tnt_tnt_stick.png differ diff --git a/tnt/textures/tnt_top.png b/tnt/textures/tnt_top.png index 4118986..31b807c 100644 Binary files a/tnt/textures/tnt_top.png and b/tnt/textures/tnt_top.png differ diff --git a/tnt/textures/tnt_top_burning.png b/tnt/textures/tnt_top_burning.png index 62340a6..fc0d490 100644 Binary files a/tnt/textures/tnt_top_burning.png and b/tnt/textures/tnt_top_burning.png differ diff --git a/tnt/textures/tnt_top_burning_animated.png b/tnt/textures/tnt_top_burning_animated.png index d765365..18a270f 100644 Binary files a/tnt/textures/tnt_top_burning_animated.png and b/tnt/textures/tnt_top_burning_animated.png differ diff --git a/vessels/depends.txt b/vessels/depends.txt deleted file mode 100644 index 4ad96d5..0000000 --- a/vessels/depends.txt +++ /dev/null @@ -1 +0,0 @@ -default diff --git a/vessels/init.lua b/vessels/init.lua index e5c68a7..71a0689 100644 --- a/vessels/init.lua +++ b/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", }) @@ -211,3 +228,10 @@ minetest.register_craft({ recipe = "vessels:shelf", burntime = 30, }) + +-- Register glass fragments as dungeon loot +if minetest.global_exists("dungeon_loot") then + dungeon_loot.register({ + name = "vessels:glass_fragments", chance = 0.35, count = {1, 4} + }) +end diff --git a/vessels/locale/template.txt b/vessels/locale/template.txt new file mode 100644 index 0000000..f4aae91 --- /dev/null +++ b/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/vessels/locale/vessels.de.tr b/vessels/locale/vessels.de.tr new file mode 100644 index 0000000..66ca5ef --- /dev/null +++ b/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/vessels/locale/vessels.es.tr b/vessels/locale/vessels.es.tr new file mode 100644 index 0000000..859ea40 --- /dev/null +++ b/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/vessels/locale/vessels.fr.tr b/vessels/locale/vessels.fr.tr new file mode 100644 index 0000000..4e073dc --- /dev/null +++ b/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/vessels/locale/vessels.it.tr b/vessels/locale/vessels.it.tr new file mode 100644 index 0000000..09a6667 --- /dev/null +++ b/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/vessels/locale/vessels.ms.tr b/vessels/locale/vessels.ms.tr new file mode 100644 index 0000000..6d8348a --- /dev/null +++ b/vessels/locale/vessels.ms.tr @@ -0,0 +1,8 @@ +# textdomain: vessels +Vessels Shelf=Rak Bekas Kaca +Empty Glass Bottle=Botol Kaca Kosong +Empty Drinking Glass=Gelas Minuman Kosong +Empty Heavy Steel Bottle=Botol Keluli Berat Kosong +Glass Fragments=Serpihan Kaca +Empty Vessels Shelf=Rak Bekas Kaca Kosong +Vessels Shelf (@1 items)=Rak Bekas Kaca (@1 barang) diff --git a/vessels/locale/vessels.ru.tr b/vessels/locale/vessels.ru.tr new file mode 100644 index 0000000..76dde6a --- /dev/null +++ b/vessels/locale/vessels.ru.tr @@ -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)=Полка с Сосудами (@1 предметы) diff --git a/vessels/locale/vessels.se.tr b/vessels/locale/vessels.se.tr new file mode 100644 index 0000000..8277b33 --- /dev/null +++ b/vessels/locale/vessels.se.tr @@ -0,0 +1,8 @@ +# textdomain: vessels +Vessels Shelf=Fartygshylla +Empty Glass Bottle=Tom Glasflska +Empty Drinking Glass=Tom Drycksflaska +Empty Heavy Steel Bottle=Tom Tung Stål Flaska +Glass Fragments=Glasbitar +Empty Vessels Shelf=Tom Fartygshylla +Vessels Shelf (@1 items)=Fartygshylla (@1 saker) diff --git a/vessels/locale/vessels.zh_CN.tr b/vessels/locale/vessels.zh_CN.tr new file mode 100644 index 0000000..f91ccd8 --- /dev/null +++ b/vessels/locale/vessels.zh_CN.tr @@ -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)=容器架(@1项) diff --git a/vessels/locale/vessels.zh_TW.tr b/vessels/locale/vessels.zh_TW.tr new file mode 100644 index 0000000..7936c88 --- /dev/null +++ b/vessels/locale/vessels.zh_TW.tr @@ -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)=容器架(@1項) diff --git a/vessels/mod.conf b/vessels/mod.conf new file mode 100644 index 0000000..eba9076 --- /dev/null +++ b/vessels/mod.conf @@ -0,0 +1,4 @@ +name = vessels +description = Minetest Game mod: vessels +depends = default +optional_depends = dungeon_loot diff --git a/vessels/textures/vessels_drinking_glass.png b/vessels/textures/vessels_drinking_glass.png index f73c7ab..d5037b8 100644 Binary files a/vessels/textures/vessels_drinking_glass.png and b/vessels/textures/vessels_drinking_glass.png differ diff --git a/vessels/textures/vessels_drinking_glass_inv.png b/vessels/textures/vessels_drinking_glass_inv.png index a14639d..9992bd9 100644 Binary files a/vessels/textures/vessels_drinking_glass_inv.png and b/vessels/textures/vessels_drinking_glass_inv.png differ diff --git a/vessels/textures/vessels_glass_bottle.png b/vessels/textures/vessels_glass_bottle.png index ed4dca0..6ea37db 100644 Binary files a/vessels/textures/vessels_glass_bottle.png and b/vessels/textures/vessels_glass_bottle.png differ diff --git a/vessels/textures/vessels_glass_fragments.png b/vessels/textures/vessels_glass_fragments.png index a96a68a..7c6c488 100644 Binary files a/vessels/textures/vessels_glass_fragments.png and b/vessels/textures/vessels_glass_fragments.png differ diff --git a/vessels/textures/vessels_shelf.png b/vessels/textures/vessels_shelf.png index d4b1980..87c69b2 100644 Binary files a/vessels/textures/vessels_shelf.png and b/vessels/textures/vessels_shelf.png differ diff --git a/vessels/textures/vessels_shelf_slot.png b/vessels/textures/vessels_shelf_slot.png index 494b3ae..ff29082 100644 Binary files a/vessels/textures/vessels_shelf_slot.png and b/vessels/textures/vessels_shelf_slot.png differ diff --git a/vessels/textures/vessels_steel_bottle.png b/vessels/textures/vessels_steel_bottle.png index 89a965f..61d3071 100644 Binary files a/vessels/textures/vessels_steel_bottle.png and b/vessels/textures/vessels_steel_bottle.png differ diff --git a/walls/depends.txt b/walls/depends.txt deleted file mode 100644 index 4ad96d5..0000000 --- a/walls/depends.txt +++ /dev/null @@ -1 +0,0 @@ -default diff --git a/walls/init.lua b/walls/init.lua index 91a89cf..b2a163f 100644 --- a/walls/init.lua +++ b/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/walls/locale/template.txt b/walls/locale/template.txt new file mode 100644 index 0000000..6721dc6 --- /dev/null +++ b/walls/locale/template.txt @@ -0,0 +1,4 @@ +# textdomain: walls +Cobblestone Wall= +Mossy Cobblestone Wall= +Desert Cobblestone Wall= diff --git a/walls/locale/walls.de.tr b/walls/locale/walls.de.tr new file mode 100644 index 0000000..76449f6 --- /dev/null +++ b/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/walls/locale/walls.es.tr b/walls/locale/walls.es.tr new file mode 100644 index 0000000..796710f --- /dev/null +++ b/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/walls/locale/walls.fr.tr b/walls/locale/walls.fr.tr new file mode 100644 index 0000000..8dcb625 --- /dev/null +++ b/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/walls/locale/walls.it.tr b/walls/locale/walls.it.tr new file mode 100644 index 0000000..1ca3f88 --- /dev/null +++ b/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/walls/locale/walls.ms.tr b/walls/locale/walls.ms.tr new file mode 100644 index 0000000..9375342 --- /dev/null +++ b/walls/locale/walls.ms.tr @@ -0,0 +1,4 @@ +# textdomain: walls +Cobblestone Wall=Pagar Batu Buntar +Mossy Cobblestone Wall=Pagar Batu Buntar Berlumut +Desert Cobblestone Wall=Pagar Batu Buntar Gurun diff --git a/walls/locale/walls.ru.tr b/walls/locale/walls.ru.tr new file mode 100644 index 0000000..1ed653f --- /dev/null +++ b/walls/locale/walls.ru.tr @@ -0,0 +1,4 @@ +# textdomain: walls +Cobblestone Wall=Булыжниковая Ограда +Mossy Cobblestone Wall=Мшистая Булыжниковая Ограда +Desert Cobblestone Wall=Ограда Из Пустынного Булыжника diff --git a/walls/locale/walls.se.tr b/walls/locale/walls.se.tr new file mode 100644 index 0000000..8cca00e --- /dev/null +++ b/walls/locale/walls.se.tr @@ -0,0 +1,4 @@ +# textdomain: walls +Cobblestone Wall=Kullerstens Vägg +Mossy Cobblestone Wall=Mossig Kullerstens Vägg +Desert Cobblestone Wall=Öken Kullerstens Vägg \ No newline at end of file diff --git a/walls/locale/walls.zh_CN.tr b/walls/locale/walls.zh_CN.tr new file mode 100644 index 0000000..f590e82 --- /dev/null +++ b/walls/locale/walls.zh_CN.tr @@ -0,0 +1,4 @@ +# textdomain: walls +Cobblestone Wall=鹅卵石墙 +Mossy Cobblestone Wall=苔藓覆盖的鹅卵石墙 +Desert Cobblestone Wall=沙漠鹅卵石墙 diff --git a/walls/locale/walls.zh_TW.tr b/walls/locale/walls.zh_TW.tr new file mode 100644 index 0000000..ba1285f --- /dev/null +++ b/walls/locale/walls.zh_TW.tr @@ -0,0 +1,4 @@ +# textdomain: walls +Cobblestone Wall=鵝卵石牆 +Mossy Cobblestone Wall=苔蘚覆蓋的鵝卵石牆 +Desert Cobblestone Wall=沙漠鵝卵石牆 diff --git a/walls/mod.conf b/walls/mod.conf new file mode 100644 index 0000000..9b8bbe8 --- /dev/null +++ b/walls/mod.conf @@ -0,0 +1,3 @@ +name = walls +description = Minetest Game mod: walls +depends = default diff --git a/wool/depends.txt b/wool/depends.txt deleted file mode 100644 index 4ad96d5..0000000 --- a/wool/depends.txt +++ /dev/null @@ -1 +0,0 @@ -default diff --git a/wool/init.lua b/wool/init.lua index 3e565a4..4cf7dc3 100644 --- a/wool/init.lua +++ b/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/wool/locale/template.txt b/wool/locale/template.txt new file mode 100644 index 0000000..316cd2c --- /dev/null +++ b/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/wool/locale/wool.de.tr b/wool/locale/wool.de.tr new file mode 100644 index 0000000..9b6b8ab --- /dev/null +++ b/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/wool/locale/wool.es.tr b/wool/locale/wool.es.tr new file mode 100644 index 0000000..ac15592 --- /dev/null +++ b/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/wool/locale/wool.fr.tr b/wool/locale/wool.fr.tr new file mode 100644 index 0000000..48a60a7 --- /dev/null +++ b/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/wool/locale/wool.it.tr b/wool/locale/wool.it.tr new file mode 100644 index 0000000..628faf7 --- /dev/null +++ b/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/wool/locale/wool.ms.tr b/wool/locale/wool.ms.tr new file mode 100644 index 0000000..18b5480 --- /dev/null +++ b/wool/locale/wool.ms.tr @@ -0,0 +1,16 @@ +# textdomain: wool +White Wool=Bulu Biri-Biri Putih +Grey Wool=Bulu Biri-Biri Kelabu +Dark Grey Wool=Bulu Biri-Biri Kelabu Gelap +Black Wool=Bulu Biri-Biri Hitam +Violet Wool=Bulu Biri-Biri Ungu +Blue Wool=Bulu Biri-Biri Biru +Cyan Wool=Bulu Biri-Biri Biru Kehijauan +Dark Green Wool=Bulu Biri-Biri Hijau Gelap +Green Wool=Bulu Biri-Biri Hijau +Yellow Wool=Bulu Biri-Biri Kuning +Brown Wool=Bulu Biri-Biri Perang +Orange Wool=Bulu Biri-Biri Jingga +Red Wool=Bulu Biri-Biri Merah +Magenta Wool=Bulu Biri-Biri Merah Lembayung +Pink Wool=Bulu Biri-Biri Merah Jambu diff --git a/wool/locale/wool.ru.tr b/wool/locale/wool.ru.tr new file mode 100644 index 0000000..cd8c60b --- /dev/null +++ b/wool/locale/wool.ru.tr @@ -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/wool/locale/wool.se.tr b/wool/locale/wool.se.tr new file mode 100644 index 0000000..1d82e69 --- /dev/null +++ b/wool/locale/wool.se.tr @@ -0,0 +1,16 @@ +# textdomain: wool +White Wool=Vit Ull +Grey Wool=Grå Ull +Dark Grey Wool=Mörk Grå Ull +Black Wool=Svart Ull +Violet Wool=Violett Ull +Blue Wool=Blå Ull +Cyan Wool=Cyan Ull +Dark Green Wool=Mörk Grön Ull +Green Wool=Grön Ull +Yellow Wool=Gul Ull +Brown Wool=Brun Ull +Orange Wool=Orange Ull +Red Wool=Röd Ull +Magenta Wool=Magenta Ull +Pink Wool=Rosa Ull \ No newline at end of file diff --git a/wool/locale/wool.zh_CN.tr b/wool/locale/wool.zh_CN.tr new file mode 100644 index 0000000..caac9ee --- /dev/null +++ b/wool/locale/wool.zh_CN.tr @@ -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/wool/locale/wool.zh_TW.tr b/wool/locale/wool.zh_TW.tr new file mode 100644 index 0000000..290a1fe --- /dev/null +++ b/wool/locale/wool.zh_TW.tr @@ -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/wool/mod.conf b/wool/mod.conf new file mode 100644 index 0000000..a0ca3f0 --- /dev/null +++ b/wool/mod.conf @@ -0,0 +1,3 @@ +name = wool +description = Minetest Game mod: wool +depends = default, dye diff --git a/wool/textures/wool_black.png b/wool/textures/wool_black.png index 4212fa8..700d439 100644 Binary files a/wool/textures/wool_black.png and b/wool/textures/wool_black.png differ diff --git a/wool/textures/wool_blue.png b/wool/textures/wool_blue.png index 5e318c9..a074986 100644 Binary files a/wool/textures/wool_blue.png and b/wool/textures/wool_blue.png differ diff --git a/wool/textures/wool_brown.png b/wool/textures/wool_brown.png index af69149..2620dfd 100644 Binary files a/wool/textures/wool_brown.png and b/wool/textures/wool_brown.png differ diff --git a/wool/textures/wool_cyan.png b/wool/textures/wool_cyan.png index bbd1158..395b6ac 100644 Binary files a/wool/textures/wool_cyan.png and b/wool/textures/wool_cyan.png differ diff --git a/wool/textures/wool_dark_green.png b/wool/textures/wool_dark_green.png index 6ba0df6..0e73999 100644 Binary files a/wool/textures/wool_dark_green.png and b/wool/textures/wool_dark_green.png differ diff --git a/wool/textures/wool_dark_grey.png b/wool/textures/wool_dark_grey.png index 0797a2b..7253696 100644 Binary files a/wool/textures/wool_dark_grey.png and b/wool/textures/wool_dark_grey.png differ diff --git a/wool/textures/wool_green.png b/wool/textures/wool_green.png index 44429c5..dcb663b 100644 Binary files a/wool/textures/wool_green.png and b/wool/textures/wool_green.png differ diff --git a/wool/textures/wool_grey.png b/wool/textures/wool_grey.png index 99c3a56..2f4c338 100644 Binary files a/wool/textures/wool_grey.png and b/wool/textures/wool_grey.png differ diff --git a/wool/textures/wool_magenta.png b/wool/textures/wool_magenta.png index 6e89df9..5c2c4a7 100644 Binary files a/wool/textures/wool_magenta.png and b/wool/textures/wool_magenta.png differ diff --git a/wool/textures/wool_orange.png b/wool/textures/wool_orange.png index 8c6c707..a059f36 100644 Binary files a/wool/textures/wool_orange.png and b/wool/textures/wool_orange.png differ diff --git a/wool/textures/wool_pink.png b/wool/textures/wool_pink.png index 448d476..8e90140 100644 Binary files a/wool/textures/wool_pink.png and b/wool/textures/wool_pink.png differ diff --git a/wool/textures/wool_red.png b/wool/textures/wool_red.png index b7afd56..da12ecf 100644 Binary files a/wool/textures/wool_red.png and b/wool/textures/wool_red.png differ diff --git a/wool/textures/wool_violet.png b/wool/textures/wool_violet.png index 18de25f..d7d6783 100644 Binary files a/wool/textures/wool_violet.png and b/wool/textures/wool_violet.png differ diff --git a/wool/textures/wool_white.png b/wool/textures/wool_white.png index 4bdcb09..88f1e2f 100644 Binary files a/wool/textures/wool_white.png and b/wool/textures/wool_white.png differ diff --git a/wool/textures/wool_yellow.png b/wool/textures/wool_yellow.png index 1fd837e..2b0f048 100644 Binary files a/wool/textures/wool_yellow.png and b/wool/textures/wool_yellow.png differ diff --git a/xpanes/README.txt b/xpanes/README.txt index 47161da..0e34d23 100644 --- a/xpanes/README.txt +++ b/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/xpanes/depends.txt b/xpanes/depends.txt deleted file mode 100644 index 331d858..0000000 --- a/xpanes/depends.txt +++ /dev/null @@ -1 +0,0 @@ -default \ No newline at end of file diff --git a/xpanes/init.lua b/xpanes/init.lua index 653c8cd..e195dbb 100644 --- a/xpanes/init.lua +++ b/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, @@ -125,7 +137,11 @@ function xpanes.register_pane(name, def) is_ground_content = false, sunlight_propagates = true, description = def.description, - tiles = {def.textures[3], def.textures[3], def.textures[1]}, + tiles = { + def.textures[3], + def.textures[3], + def.textures[1] + }, groups = groups, drop = "xpanes:" .. name .. "_flat", sounds = def.sounds, @@ -148,8 +164,8 @@ function xpanes.register_pane(name, def) end xpanes.register_pane("pane", { - description = "Glass Pane", - textures = {"default_glass.png","xpanes_pane_half.png","xpanes_edge.png"}, + description = S("Glass Pane"), + textures = {"default_glass.png", "", "xpanes_edge.png"}, inventory_image = "default_glass.png", wield_image = "default_glass.png", sounds = default.node_sound_glass_defaults(), @@ -161,8 +177,8 @@ xpanes.register_pane("pane", { }) xpanes.register_pane("obsidian_pane", { - description = "Obsidian Glass Pane", - textures = {"default_obsidian_glass.png","xpanes_pane_half.png","xpanes_edge_obsidian.png"}, + description = S("Obsidian Glass Pane"), + textures = {"default_obsidian_glass.png", "", "xpanes_edge_obsidian.png"}, inventory_image = "default_obsidian_glass.png", wield_image = "default_obsidian_glass.png", sounds = default.node_sound_glass_defaults(), @@ -174,8 +190,8 @@ xpanes.register_pane("obsidian_pane", { }) xpanes.register_pane("bar", { - description = "Steel Bars", - textures = {"xpanes_bar.png","xpanes_bar.png","xpanes_bar_top.png"}, + description = S("Steel Bars"), + textures = {"xpanes_bar.png", "", "xpanes_bar_top.png"}, inventory_image = "xpanes_bar.png", wield_image = "xpanes_bar.png", groups = {cracky=2}, @@ -197,3 +213,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 = {node = 1, 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 = {node = 1, 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/xpanes/license.txt b/xpanes/license.txt index dff7227..7e922b9 100644 --- a/xpanes/license.txt +++ b/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/xpanes/locale/template.txt b/xpanes/locale/template.txt new file mode 100644 index 0000000..08dfbba --- /dev/null +++ b/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/xpanes/locale/xpanes.de.tr b/xpanes/locale/xpanes.de.tr new file mode 100644 index 0000000..9852753 --- /dev/null +++ b/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/xpanes/locale/xpanes.es.tr b/xpanes/locale/xpanes.es.tr new file mode 100644 index 0000000..9902be7 --- /dev/null +++ b/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/xpanes/locale/xpanes.fr.tr b/xpanes/locale/xpanes.fr.tr new file mode 100644 index 0000000..c751799 --- /dev/null +++ b/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/xpanes/locale/xpanes.it.tr b/xpanes/locale/xpanes.it.tr new file mode 100644 index 0000000..7b73968 --- /dev/null +++ b/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/xpanes/locale/xpanes.ms.tr b/xpanes/locale/xpanes.ms.tr new file mode 100644 index 0000000..dedfefa --- /dev/null +++ b/xpanes/locale/xpanes.ms.tr @@ -0,0 +1,6 @@ +# textdomain: xpanes +Glass Pane=Kaca Tingkap +Obsidian Glass Pane=Kaca Tingkap Obsidia +Steel Bars=Jeriji Keluli +Steel Bar Door=Pintu Jeriji Keluli +Steel Bar Trapdoor=Pintu Kolong Jeriji Keluli diff --git a/xpanes/locale/xpanes.ru.tr b/xpanes/locale/xpanes.ru.tr new file mode 100644 index 0000000..166c62d --- /dev/null +++ b/xpanes/locale/xpanes.ru.tr @@ -0,0 +1,6 @@ +# textdomain: xpanes +Glass Pane=Стеклянная Панель +Obsidian Glass Pane=Стеклянная Панель Из Обсидиана +Steel Bars=Стальная Решётка +Steel Bar Door=Стальная Решётчатая Дверь +Steel Bar Trapdoor=Стальной Решётчатый Люк diff --git a/xpanes/locale/xpanes.se.tr b/xpanes/locale/xpanes.se.tr new file mode 100644 index 0000000..fc3bbfe --- /dev/null +++ b/xpanes/locale/xpanes.se.tr @@ -0,0 +1,6 @@ +# textdomain: xpanes +Glass Pane=Glasruta +Obsidian Glass Pane=Obsidian Glasruta +Steel Bars=Stålgaller +Steel Bar Door=Stålgallers Dörr +Steel Bar Trapdoor=Stålgallers Fallucka \ No newline at end of file diff --git a/xpanes/locale/xpanes.zh_CN.tr b/xpanes/locale/xpanes.zh_CN.tr new file mode 100644 index 0000000..7b1871c --- /dev/null +++ b/xpanes/locale/xpanes.zh_CN.tr @@ -0,0 +1,6 @@ +# textdomain: xpanes +Glass Pane=玻璃窗 +Obsidian Glass Pane=黑曜石玻璃窗 +Steel Bars=钢筋 +Steel Bar Door=钢筋门 +Steel Bar Trapdoor=钢筋活板门 diff --git a/xpanes/locale/xpanes.zh_TW.tr b/xpanes/locale/xpanes.zh_TW.tr new file mode 100644 index 0000000..97ee7a2 --- /dev/null +++ b/xpanes/locale/xpanes.zh_TW.tr @@ -0,0 +1,6 @@ +# textdomain: xpanes +Glass Pane=玻璃窗 +Obsidian Glass Pane=黑曜石玻璃窗 +Steel Bars=鋼筋 +Steel Bar Door=鋼筋門 +Steel Bar Trapdoor=鋼筋活板門 diff --git a/xpanes/mod.conf b/xpanes/mod.conf new file mode 100644 index 0000000..dcb0716 --- /dev/null +++ b/xpanes/mod.conf @@ -0,0 +1,4 @@ +name = xpanes +description = Minetest Game mod: xpanes +depends = default +optional_depends = doors diff --git a/xpanes/sounds/xpanes_steel_bar_door_close.ogg b/xpanes/sounds/xpanes_steel_bar_door_close.ogg new file mode 100644 index 0000000..0620bfb Binary files /dev/null and b/xpanes/sounds/xpanes_steel_bar_door_close.ogg differ diff --git a/xpanes/sounds/xpanes_steel_bar_door_open.ogg b/xpanes/sounds/xpanes_steel_bar_door_open.ogg new file mode 100644 index 0000000..d159be9 Binary files /dev/null and b/xpanes/sounds/xpanes_steel_bar_door_open.ogg differ diff --git a/xpanes/textures/xpanes_bar.png b/xpanes/textures/xpanes_bar.png index 89519a7..3ea62a9 100644 Binary files a/xpanes/textures/xpanes_bar.png and b/xpanes/textures/xpanes_bar.png differ diff --git a/xpanes/textures/xpanes_bar_top.png b/xpanes/textures/xpanes_bar_top.png index a01c5fd..2955d72 100644 Binary files a/xpanes/textures/xpanes_bar_top.png and b/xpanes/textures/xpanes_bar_top.png differ diff --git a/xpanes/textures/xpanes_door_steel_bar.png b/xpanes/textures/xpanes_door_steel_bar.png new file mode 100644 index 0000000..435af14 Binary files /dev/null and b/xpanes/textures/xpanes_door_steel_bar.png differ diff --git a/xpanes/textures/xpanes_edge.png b/xpanes/textures/xpanes_edge.png index 342df93..5768d66 100644 Binary files a/xpanes/textures/xpanes_edge.png and b/xpanes/textures/xpanes_edge.png differ diff --git a/xpanes/textures/xpanes_item_steel_bar.png b/xpanes/textures/xpanes_item_steel_bar.png new file mode 100644 index 0000000..d1ddadd Binary files /dev/null and b/xpanes/textures/xpanes_item_steel_bar.png differ diff --git a/xpanes/textures/xpanes_pane_half.png b/xpanes/textures/xpanes_pane_half.png deleted file mode 100644 index 419d188..0000000 Binary files a/xpanes/textures/xpanes_pane_half.png and /dev/null differ diff --git a/xpanes/textures/xpanes_trapdoor_steel_bar.png b/xpanes/textures/xpanes_trapdoor_steel_bar.png new file mode 100644 index 0000000..de4b494 Binary files /dev/null and b/xpanes/textures/xpanes_trapdoor_steel_bar.png differ diff --git a/xpanes/textures/xpanes_trapdoor_steel_bar_side.png b/xpanes/textures/xpanes_trapdoor_steel_bar_side.png new file mode 100644 index 0000000..a71231e Binary files /dev/null and b/xpanes/textures/xpanes_trapdoor_steel_bar_side.png differ