ответвлено от mtcontrib/homedecor_modpack
Сравнить коммиты
32 Коммитов
0.4.16
...
stable-201
Автор | SHA1 | Дата | |
---|---|---|---|
48be7ddef1 | |||
2c5be0735a | |||
36e5e319e3 | |||
57b988c185 | |||
d6f660b72a | |||
7b4db2fc5a | |||
b45ace825d | |||
9d2704c0c2 | |||
d7a4054dda | |||
f03e71397a | |||
6349c53824 | |||
c60607aa0d | |||
78ec2119f6 | |||
c247318dd8 | |||
9693d9dd46 | |||
23d1365939 | |||
f391bc59b0 | |||
790557f6ce | |||
c9c4214bff | |||
914aee41fe | |||
ec83040d10 | |||
9bb4222aa5 | |||
67ddc87d2c | |||
970636571e | |||
4ee5b6b87f | |||
1f2676b8f6 | |||
ad4790f74c | |||
7925897748 | |||
459c02548e | |||
1eb1e87f08 | |||
27eae09d93 | |||
761b18c17e |
@ -234,16 +234,22 @@ minetest.register_node("building_blocks:Tarmac_spread", {
|
||||
sounds = default.node_sound_dirt_defaults(),
|
||||
})
|
||||
minetest.register_node("building_blocks:BWtile", {
|
||||
drawtype = "raillike",
|
||||
drawtype = "nodebox",
|
||||
description = S("Chess board tiling"),
|
||||
tiles = {"building_blocks_BWtile.png"},
|
||||
tiles = {
|
||||
"building_blocks_BWtile.png",
|
||||
"building_blocks_BWtile.png^[transformR90",
|
||||
"building_blocks_BWtile.png^[transformR90",
|
||||
"building_blocks_BWtile.png^[transformR90",
|
||||
"building_blocks_BWtile.png",
|
||||
"building_blocks_BWtile.png"
|
||||
},
|
||||
inventory_image = "building_blocks_bwtile_inv.png",
|
||||
paramtype = "light",
|
||||
walkable = false,
|
||||
selection_box = {
|
||||
node_box = {
|
||||
type = "fixed",
|
||||
-- but how to specify the dimensions for curved and sideways rails?
|
||||
fixed = {-1/2, -1/2, -1/2, 1/2, -1/2+1/16, 1/2},
|
||||
fixed = {-1/2, -1/2, -1/2, 1/2, -1/2+1/16, 1/2},
|
||||
},
|
||||
sunlight_propagates = true,
|
||||
is_ground_content = true,
|
||||
@ -302,7 +308,7 @@ if minetest.get_modpath("moreblocks") then
|
||||
"marble",
|
||||
"building_blocks:Marble",
|
||||
{
|
||||
description = "Marble",
|
||||
description = S("Marble"),
|
||||
tiles = {"building_blocks_marble.png"},
|
||||
groups = {cracky=3},
|
||||
sounds = default.node_sound_stone_defaults(),
|
||||
@ -313,7 +319,7 @@ if minetest.get_modpath("moreblocks") then
|
||||
"hardwood",
|
||||
"building_blocks:hardwood",
|
||||
{
|
||||
description = "Hardwood",
|
||||
description = S("Hardwood"),
|
||||
tiles = {"building_blocks_hardwood.png"},
|
||||
groups = {choppy=1,flammable=1},
|
||||
sounds = default.node_sound_wood_defaults(),
|
||||
@ -324,7 +330,7 @@ if minetest.get_modpath("moreblocks") then
|
||||
"fakegrass",
|
||||
"building_blocks:fakegrass",
|
||||
{
|
||||
description = "Grass",
|
||||
description = S("Grass"),
|
||||
tiles = {"default_grass.png"},
|
||||
groups = {crumbly=3},
|
||||
sounds = default.node_sound_dirt_defaults({
|
||||
@ -348,7 +354,7 @@ if minetest.get_modpath("moreblocks") then
|
||||
"tar",
|
||||
"building_blocks:Tar",
|
||||
{
|
||||
description = "Tar",
|
||||
description = S("Tar"),
|
||||
tiles = {"building_blocks_tar.png"},
|
||||
groups = {crumbly=1},
|
||||
sounds = default.node_sound_stone_defaults(),
|
||||
@ -360,7 +366,7 @@ if minetest.get_modpath("moreblocks") then
|
||||
"grate",
|
||||
"building_blocks:grate",
|
||||
{
|
||||
description = "Grate",
|
||||
description = S("Grate"),
|
||||
tiles = {"building_blocks_grate.png"},
|
||||
groups = {cracky=1},
|
||||
sounds = default.node_sound_stone_defaults(),
|
||||
@ -371,7 +377,7 @@ if minetest.get_modpath("moreblocks") then
|
||||
"Adobe",
|
||||
"building_blocks:Adobe",
|
||||
{
|
||||
description = "Adobe",
|
||||
description = S("Adobe"),
|
||||
tiles = {"building_blocks_Adobe.png"},
|
||||
groups = {crumbly=3},
|
||||
sounds = default.node_sound_stone_defaults(),
|
||||
@ -382,7 +388,7 @@ if minetest.get_modpath("moreblocks") then
|
||||
"Roofing",
|
||||
"building_blocks:Roofing",
|
||||
{
|
||||
description = "Roofing",
|
||||
description = S("Roofing"),
|
||||
tiles = {"building_blocks_Roofing.png"},
|
||||
groups = {snappy=3},
|
||||
sounds = default.node_sound_stone_defaults(),
|
||||
|
6
computer/locale/ru.txt
Обычный файл
6
computer/locale/ru.txt
Обычный файл
@ -0,0 +1,6 @@
|
||||
|
||||
# Language: Russian
|
||||
# Author: inpos <inpos@yandex.ru>
|
||||
|
||||
Plastic sheet = Лист пластика
|
||||
Unprocessed Plastic base = Необработанная пластиковая основа
|
@ -33,10 +33,10 @@ local colors = { "computer_cyan.png", "computer_magenta.png", "computer_red.png"
|
||||
|
||||
local background = "image[0,0;3.55,6.66;computer_black.png]"
|
||||
local buttons = "button[3,4.5;0.6,0.6;left;<]"
|
||||
.."button[3.6,4.5;0.6,0.6;rotateleft;L]"
|
||||
.."button[3.6,4.5;0.6,0.6;rotateleft;"..minetest.formspec_escape(S("L")).."]"
|
||||
.."button[4.2,4.5;0.6,0.6;down;v]"
|
||||
.."button[4.2,5.3;0.6,0.6;drop;V]"
|
||||
.."button[4.8,4.5;0.6,0.6;rotateright;R]"
|
||||
.."button[4.8,4.5;0.6,0.6;rotateright;"..minetest.formspec_escape(S("R")).."]"
|
||||
.."button[5.4,4.5;0.6,0.6;right;>]"
|
||||
.."button[3.5,3;2,2;new;"..minetest.formspec_escape(S("New Game")).."]"
|
||||
|
||||
@ -231,7 +231,7 @@ local function step(pos, fields)
|
||||
local scr = { formsize, background,
|
||||
t.boardstring, t.previewstring,
|
||||
draw_shape(t.cur, t.x, t.y, t.rot, boardx, boardy),
|
||||
"label[3.8,0.1;Next...]label[3.8,2.7;Score: ",
|
||||
"label[3.8,0.1;"..S("Next...").."]label[3.8,2.7;"..S("Score: "),
|
||||
t.score, close, buttons }
|
||||
|
||||
|
||||
|
@ -66,43 +66,36 @@ local function stop_smoke(pos)
|
||||
this_spawner_meta:set_int("sound", nil)
|
||||
end
|
||||
|
||||
-- FLAME TYPES
|
||||
local flame_types = {
|
||||
{ "fake", S("Fake fire") },
|
||||
{ "ice", S("Ice fire") },
|
||||
}
|
||||
minetest.register_node("fake_fire:ice_fire", {
|
||||
inventory_image = "ice_fire_inv.png",
|
||||
description = S("Ice fire"),
|
||||
drawtype = "plantlike",
|
||||
paramtype = "light",
|
||||
paramtype2 = "facedir",
|
||||
groups = {dig_immediate=3, not_in_creative_inventory=1},
|
||||
sunlight_propagates = true,
|
||||
buildable_to = true,
|
||||
walkable = false,
|
||||
light_source = 14,
|
||||
waving = 1,
|
||||
tiles = {
|
||||
{name="ice_fire_animated.png", animation={type="vertical_frames",
|
||||
aspect_w=16, aspect_h=16, length=1.5}},
|
||||
},
|
||||
on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
|
||||
start_smoke(pos, node, clicker)
|
||||
return itemstack
|
||||
end,
|
||||
on_destruct = function (pos)
|
||||
stop_smoke(pos)
|
||||
minetest.sound_play("fire_extinguish", {
|
||||
pos = pos, max_hear_distance = 5
|
||||
})
|
||||
end,
|
||||
drop = ""
|
||||
})
|
||||
|
||||
for _, f in ipairs(flame_types) do
|
||||
local name, desc = unpack(f)
|
||||
minetest.register_node("fake_fire:"..name.."_fire", {
|
||||
inventory_image = name.."_fire_inv.png",
|
||||
description = desc,
|
||||
drawtype = "plantlike",
|
||||
paramtype = "light",
|
||||
paramtype2 = "facedir",
|
||||
groups = {dig_immediate=3, not_in_creative_inventory=1},
|
||||
sunlight_propagates = true,
|
||||
buildable_to = true,
|
||||
walkable = false,
|
||||
light_source = 14,
|
||||
waving = 1,
|
||||
tiles = {
|
||||
{name=name.."_fire_animated.png", animation={type="vertical_frames",
|
||||
aspect_w=16, aspect_h=16, length=1.5}},
|
||||
},
|
||||
on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
|
||||
start_smoke(pos, node, clicker)
|
||||
return itemstack
|
||||
end,
|
||||
on_destruct = function (pos)
|
||||
stop_smoke(pos)
|
||||
minetest.sound_play("fire_extinguish", {
|
||||
pos = pos, max_hear_distance = 5
|
||||
})
|
||||
end,
|
||||
drop = ""
|
||||
})
|
||||
end
|
||||
minetest.register_alias("fake_fire:fake_fire", "fire:permanent_flame")
|
||||
|
||||
minetest.register_node("fake_fire:fancy_fire", {
|
||||
inventory_image = "fancy_fire_inv.png",
|
||||
@ -190,43 +183,18 @@ for _, mat in ipairs(materials) do
|
||||
})
|
||||
end
|
||||
|
||||
-- FLINT and STEEL
|
||||
minetest.register_tool("fake_fire:flint_and_steel", {
|
||||
description = S("Flint and steel"),
|
||||
inventory_image = "flint_and_steel.png",
|
||||
liquids_pointable = false,
|
||||
stack_max = 1,
|
||||
tool_capabilities = {
|
||||
full_punch_interval = 1.0,
|
||||
max_drop_level=0,
|
||||
groupcaps={flamable = {uses=65, maxlevel=1}}
|
||||
},
|
||||
on_use = function(itemstack, user, pointed_thing)
|
||||
if pointed_thing.type == "node" and minetest.get_node(pointed_thing.above).name == "air" then
|
||||
if not minetest.is_protected(pointed_thing.above, user:get_player_name()) then
|
||||
if string.find(minetest.get_node(pointed_thing.under).name, "ice") then
|
||||
minetest.set_node(pointed_thing.above, {name="fake_fire:ice_fire"})
|
||||
else
|
||||
minetest.set_node(pointed_thing.above, {name="fake_fire:fake_fire"})
|
||||
end
|
||||
else
|
||||
minetest.chat_send_player(user:get_player_name(), S("This area is protected!"))
|
||||
end
|
||||
else
|
||||
return
|
||||
end
|
||||
minetest.register_alias("fake_fire:flint_and_steel", "fire:flint_and_steel")
|
||||
|
||||
itemstack:add_wear(65535/65)
|
||||
return itemstack
|
||||
minetest.override_item("default:ice", {
|
||||
on_ignite = function(pos, igniter)
|
||||
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 = "fake_fire:ice_fire"})
|
||||
end
|
||||
end
|
||||
})
|
||||
|
||||
-- CRAFTS
|
||||
minetest.register_craft({
|
||||
type = "shapeless",
|
||||
output = 'fake_fire:flint_and_steel',
|
||||
recipe = {"default:obsidian_shard", "default:steel_ingot"}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
type = "shapeless",
|
||||
|
@ -89,7 +89,7 @@ for _, c in ipairs(bookcolors) do
|
||||
if data.title and data.title ~= "" then
|
||||
meta:set_string("infotext", data.title)
|
||||
end
|
||||
if not homedecor.expect_infinite_stacks then
|
||||
if not creative.is_enabled_for(plname) then
|
||||
itemstack:take_item()
|
||||
end
|
||||
return itemstack
|
||||
|
@ -3014,10 +3014,28 @@ minetest.register_craft({
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "homedecor:stained_glass",
|
||||
output = "homedecor:stained_glass 3",
|
||||
recipe = {
|
||||
{"", "dye:blue", ""},
|
||||
{"dye:red", "xpanes:pane", "dye:green"},
|
||||
{"dye:red", "xpanes:pane_flat", "dye:green"},
|
||||
{"", "dye:yellow", ""},
|
||||
},
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "homedecor:stained_glass 2",
|
||||
recipe = {
|
||||
{"", "dye:blue", ""},
|
||||
{"dye:red", "cottages:glass_pane_side", "dye:green"},
|
||||
{"", "dye:yellow", ""},
|
||||
},
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "homedecor:stained_glass 2",
|
||||
recipe = {
|
||||
{"", "dye:blue", ""},
|
||||
{"dye:red", "cottages:glass_pane", "dye:green"},
|
||||
{"", "dye:yellow", ""},
|
||||
},
|
||||
})
|
||||
|
@ -118,7 +118,7 @@ minetest.register_alias("homedecor:deckchair_head", "air")
|
||||
homedecor.register("deckchair_striped_blue", {
|
||||
mesh = "homedecor_deckchair.obj",
|
||||
tiles = {"homedecor_deckchair_striped_blue.png"},
|
||||
description = S("Deck Chair"),
|
||||
description = S("Deck Chair (blue striped)"),
|
||||
groups = { snappy = 3 },
|
||||
expand = { forward="placeholder" },
|
||||
sounds = default.node_sound_wood_defaults(),
|
||||
@ -251,6 +251,7 @@ homedecor.register("swing", {
|
||||
place_on = "bottom"
|
||||
},
|
||||
on_place = function(itemstack, placer, pointed_thing)
|
||||
local placer_name = placer:get_player_name() or ""
|
||||
local isceiling, pos = homedecor.find_ceiling(itemstack, placer, pointed_thing)
|
||||
if isceiling then
|
||||
local height = 0
|
||||
@ -263,7 +264,7 @@ homedecor.register("swing", {
|
||||
|
||||
if not testreg or not testreg.buildable_to then
|
||||
if i < 1 then
|
||||
minetest.chat_send_player(placer:get_player_name(), "No room under there to hang a swing.")
|
||||
minetest.chat_send_player(placer_name, "No room under there to hang a swing.")
|
||||
return itemstack
|
||||
else
|
||||
break
|
||||
@ -279,11 +280,11 @@ homedecor.register("swing", {
|
||||
|
||||
minetest.set_node({ x=pos.x, y=pos.y-height, z=pos.z }, { name = "homedecor:swing", param2 = fdir })
|
||||
|
||||
if not homedecor.expect_infinite_stacks then
|
||||
if not creative.is_enabled_for(placer_name) then
|
||||
itemstack:take_item()
|
||||
end
|
||||
else
|
||||
minetest.chat_send_player(placer:get_player_name(), "You have to point at the bottom side of an overhanging object to place a swing.")
|
||||
minetest.chat_send_player(placer_name, "You have to point at the bottom side of an overhanging object to place a swing.")
|
||||
end
|
||||
return itemstack
|
||||
end,
|
||||
@ -367,7 +368,7 @@ local shrub_cbox = { -0.5, -0.5, -0.5, 0.5, 0.5, 0.5 }
|
||||
|
||||
for _, color in ipairs(homedecor.shrub_colors) do
|
||||
minetest.register_node("homedecor:shrubbery_large_"..color, {
|
||||
description = S("Shrubbery (@1)", S(color)),
|
||||
description = S("Shrubbery (large, @1)", S(color)),
|
||||
drawtype = "mesh",
|
||||
mesh = "homedecor_cube.obj",
|
||||
tiles = {"homedecor_shrubbery_"..color..".png"},
|
||||
|
@ -213,20 +213,24 @@ homedecor.register("soda_machine", {
|
||||
sounds = default.node_sound_wood_defaults(),
|
||||
on_rotate = screwdriver.rotate_simple,
|
||||
on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
|
||||
local playername = clicker:get_player_name()
|
||||
local wielditem = clicker:get_wielded_item()
|
||||
local wieldname = wielditem:get_name()
|
||||
local fdir_to_fwd = { {0, -1}, {-1, 0}, {0, 1}, {1, 0} }
|
||||
local fdir = node.param2
|
||||
local pos_drop = { x=pos.x+fdir_to_fwd[fdir+1][1], y=pos.y, z=pos.z+fdir_to_fwd[fdir+1][2] }
|
||||
if wieldname == "homedecor:coin" then
|
||||
wielditem:take_item()
|
||||
clicker:set_wielded_item(wielditem)
|
||||
minetest.spawn_item(pos_drop, "homedecor:soda_can")
|
||||
minetest.sound_play("insert_coin", {
|
||||
pos=pos, max_hear_distance = 5
|
||||
})
|
||||
if not creative.is_enabled_for(playername) then
|
||||
wielditem:take_item()
|
||||
clicker:set_wielded_item(wielditem)
|
||||
return wielditem
|
||||
end
|
||||
else
|
||||
minetest.chat_send_player(clicker:get_player_name(), S("Please insert a coin in the machine."))
|
||||
minetest.chat_send_player(playername, S("Please insert a coin in the machine."))
|
||||
end
|
||||
end
|
||||
})
|
||||
|
@ -104,7 +104,7 @@ local function stack(itemstack, placer, fdir, pos, def, pos2, node1, node2, poin
|
||||
ctrl_node_def.after_place_node(pos, placer, itemstack, pointed_thing)
|
||||
end
|
||||
|
||||
if not homedecor.expect_infinite_stacks then
|
||||
if not creative.is_enabled_for(placer_name) then
|
||||
itemstack:take_item()
|
||||
end
|
||||
end
|
||||
@ -368,14 +368,6 @@ function homedecor.place_banister(itemstack, placer, pointed_thing)
|
||||
fdir = right_fwd_node.param2
|
||||
pos = fwd_pos
|
||||
new_place_name = string.gsub(right_fwd_node.name, "_diagonal_.-$", "_horizontal")
|
||||
|
||||
-- try to follow a horizontal with another of the same
|
||||
elseif left_node and string.find(left_node.name, "homedecor:banister_.*_horizontal") then
|
||||
fdir = left_node.param2
|
||||
new_place_name = left_node.name
|
||||
elseif right_node and string.find(right_node.name, "homedecor:banister_.*_horizontal") then
|
||||
fdir = right_node.param2
|
||||
new_place_name = right_node.name
|
||||
end
|
||||
|
||||
-- manually invert left-right orientation
|
||||
|
@ -11,12 +11,8 @@ local modpath = minetest.get_modpath("homedecor")
|
||||
|
||||
local S = homedecor_i18n.gettext
|
||||
|
||||
homedecor = {
|
||||
modpath = modpath,
|
||||
|
||||
-- infinite stacks
|
||||
expect_infinite_stacks = minetest.settings:get_bool("creative_mode") and not minetest.get_modpath("unified_inventory")
|
||||
}
|
||||
homedecor = {}
|
||||
homedecor.modpath = modpath
|
||||
|
||||
-- Determine if the item being pointed at is the underside of a node (e.g a ceiling)
|
||||
function homedecor.find_ceiling(itemstack, placer, pointed_thing)
|
||||
|
@ -396,7 +396,7 @@ local n = { 1, 2 }
|
||||
|
||||
for _, i in ipairs(n) do
|
||||
homedecor.register("picture_frame"..i, {
|
||||
description = S("Picture Frame"),
|
||||
description = S("Picture Frame "..i),
|
||||
mesh = "homedecor_picture_frame.obj",
|
||||
tiles = {
|
||||
"homedecor_picture_frame_image"..i..".png",
|
||||
|
@ -129,7 +129,7 @@ minetest.register_node("homedecor:curtain_closed", {
|
||||
})
|
||||
|
||||
minetest.register_node("homedecor:curtain_open", {
|
||||
description = S("Curtains"),
|
||||
description = S("Curtains (open)"),
|
||||
tiles = { "homedecor_curtain_open.png" },
|
||||
inventory_image = "homedecor_curtain_open.png",
|
||||
drawtype = 'signlike',
|
||||
|
Разница между файлами не показана из-за своего большого размера
Загрузить разницу
Разница между файлами не показана из-за своего большого размера
Загрузить разницу
Разница между файлами не показана из-за своего большого размера
Загрузить разницу
Разница между файлами не показана из-за своего большого размера
Загрузить разницу
Разница между файлами не показана из-за своего большого размера
Загрузить разницу
Разница между файлами не показана из-за своего большого размера
Загрузить разницу
1900
homedecor_i18n/locale/pt_BR.po
Обычный файл
1900
homedecor_i18n/locale/pt_BR.po
Обычный файл
Разница между файлами не показана из-за своего большого размера
Загрузить разницу
1576
homedecor_i18n/locale/ru.po
Обычный файл
1576
homedecor_i18n/locale/ru.po
Обычный файл
Разница между файлами не показана из-за своего большого размера
Загрузить разницу
Разница между файлами не показана из-за своего большого размера
Загрузить разницу
@ -7,6 +7,8 @@ cd "$(dirname "${BASH_SOURCE[0]}")/..";
|
||||
|
||||
# Extract translatable strings.
|
||||
xgettext --from-code=UTF-8 \
|
||||
--language=Lua \
|
||||
--sort-by-file \
|
||||
--keyword=S \
|
||||
--keyword=NS:1,2 \
|
||||
--keyword=N_ \
|
||||
|
@ -38,9 +38,9 @@ function lrfurn.check_right(pos, fdir, long, placer)
|
||||
return false
|
||||
elseif minetest.is_protected(pos2, placer:get_player_name()) then
|
||||
if not long then
|
||||
minetest.chat_send_player(placer:get_player_name(), "Someone else owns the spot where other end goes!")
|
||||
minetest.chat_send_player(placer:get_player_name(), S("Someone else owns the spot where other end goes!"))
|
||||
else
|
||||
minetest.chat_send_player(placer:get_player_name(), "Someone else owns the spot where the middle or far end goes!")
|
||||
minetest.chat_send_player(placer:get_player_name(), S("Someone else owns the spot where the middle or far end goes!"))
|
||||
end
|
||||
return false
|
||||
end
|
||||
@ -50,7 +50,7 @@ function lrfurn.check_right(pos, fdir, long, placer)
|
||||
if node3 and node3.name ~= "air" then
|
||||
return false
|
||||
elseif minetest.is_protected(pos3, placer:get_player_name()) then
|
||||
minetest.chat_send_player(placer:get_player_name(), "Someone else owns the spot where the other end goes!")
|
||||
minetest.chat_send_player(placer:get_player_name(), S("Someone else owns the spot where the other end goes!"))
|
||||
return false
|
||||
end
|
||||
end
|
||||
|
Ссылка в новой задаче
Block a user