minetest_game/mods/default/torch.lua

138 lines
4.1 KiB
Lua
Raw Permalink Normal View History

Introducing 'game_intllib' and S() for gettext The new branch 'game_intllib' is aiming at MT internationalization. Please note the about 400 lines of code changed in the Lua code of the existing mods by addition of a S("string") enclosure for GNU gettext. This is in compliance to the GNU gettext toolchain procedures. 'game_intllib' is an attempt at providing internationalization support for the default game mods specifically. Hopefully, we may delay the issue of an optimal translation for the MT server into the future. There is no requirement to include the 'game_intllib' mod into the game code basis if an alternative solution for a translation of user-facing strings of the default mods inside the game is in place. However, the 'game_intllib' and tools may be helpful in assisting the task of translation of user-facing strings of the default mods prior a new release of the game and after introduction of new game code. Please consider to look at my contribution in the MT forum: https://forum.minetest.net/viewtopic.php?f=11&t=4929&p=346791#p346791 This is up to deliberations of the MT developers and the MT game devs. ***************** This is the new branch 'game_intllib' comprising the following: - changed: README.txt - changed: mods/beds/beds.lua - changed: mods/beds/depends.txt - new file: mods/beds/gintllib.lua - changed: mods/binoculars/depends.txt - new file: mods/binoculars/gintllib.lua - changed: mods/binoculars/init.lua - changed: mods/boats/depends.txt - new file: mods/boats/gintllib.lua - changed: mods/boats/init.lua - changed: mods/bones/depends.txt - new file: mods/bones/gintllib.lua - changed: mods/bones/init.lua - changed: mods/bucket/depends.txt - new file: mods/bucket/gintllib.lua - changed: mods/bucket/init.lua - changed: mods/butterflies/depends.txt - new file: mods/butterflies/gintllib.lua - changed: mods/butterflies/init.lua - changed: mods/carts/cart_entity.lua - changed: mods/carts/depends.txt - new file: mods/carts/gintllib.lua - changed: mods/carts/rails.lua - changed: mods/creative/depends.txt - new file: mods/creative/gintllib.lua - changed: mods/creative/init.lua - changed: mods/creative/inventory.lua - changed: mods/default/chests.lua - changed: mods/default/craftitems.lua - changed: mods/default/depends.txt - changed: mods/default/furnace.lua - new file: mods/default/gintllib.lua - changed: mods/default/nodes.lua - changed: mods/default/tools.lua - changed: mods/default/torch.lua - changed: mods/default/trees.lua - changed: mods/doors/depends.txt - new file: mods/doors/gintllib.lua - changed: mods/doors/init.lua - changed: mods/dye/depends.txt - new file: mods/dye/gintllib.lua - changed: mods/dye/init.lua - changed: mods/farming/api.lua - changed: mods/farming/depends.txt - new file: mods/farming/gintllib.lua - changed: mods/farming/hoes.lua - changed: mods/farming/init.lua - changed: mods/farming/nodes.lua - changed: mods/fire/depends.txt - new file: mods/fire/gintllib.lua - changed: mods/fire/init.lua - changed: mods/fireflies/depends.txt - new file: mods/fireflies/gintllib.lua - changed: mods/fireflies/init.lua - changed: mods/flowers/depends.txt - new file: mods/flowers/gintllib.lua - changed: mods/flowers/init.lua - new file: mods/game_commands/depends.txt - new file: mods/game_commands/gintllib.lua - changed: mods/game_commands/init.lua - new file: mods/game_intllib/LICENSE.md - new file: mods/game_intllib/README.md - new file: mods/game_intllib/description.txt - new file: mods/game_intllib/doc/developer.md - new file: mods/game_intllib/doc/localefile.md - new file: mods/game_intllib/doc/translator.md - new file: mods/game_intllib/gettext.lua - new file: mods/game_intllib/init.lua - new file: mods/game_intllib/intltest/README.md - new file: mods/game_intllib/intltest/depends.txt - new file: mods/game_intllib/intltest/gintllib.lua - new file: mods/game_intllib/intltest/init.lua - new file: mods/game_intllib/intltest/locale/es.po - new file: mods/game_intllib/intltest/locale/template.pot - new file: mods/game_intllib/lib.lua - new file: mods/game_intllib/lib/gintllib.lua - new file: mods/game_intllib/license.txt - new file: mods/game_intllib/locale/de.po - new file: mods/game_intllib/locale/template.pot - new file: mods/game_intllib/tools/findtext.lua - new file: mods/game_intllib/tools/updatetext.lua - new file: mods/game_intllib/tools/xgettext.bat - new file: mods/game_intllib/tools/xgettext.sh - changed: mods/map/depends.txt - new file: mods/map/gintllib.lua - changed: mods/map/init.lua - new file: mods/screwdriver/depends.txt - new file: mods/screwdriver/gintllib.lua - changed: mods/screwdriver/init.lua - new file: mods/sethome/depends.txt - new file: mods/sethome/gintllib.lua - changed: mods/sethome/init.lua - changed: mods/stairs/depends.txt - new file: mods/stairs/gintllib.lua - changed: mods/stairs/init.lua - changed: mods/tnt/depends.txt - new file: mods/tnt/gintllib.lua - changed: mods/tnt/init.lua - changed: mods/vessels/depends.txt - new file: mods/vessels/gintllib.lua - changed: mods/vessels/init.lua - changed: mods/walls/depends.txt - new file: mods/walls/gintllib.lua - changed: mods/walls/init.lua - changed: mods/wool/depends.txt - new file: mods/wool/gintllib.lua - changed: mods/wool/init.lua - changed: mods/xpanes/depends.txt - new file: mods/xpanes/gintllib.lua - changed: mods/xpanes/init.lua ***************** The 'game_intllib' internal mod is specifially aimed at default mods internal to the game in the 'minetest_game' folder. The original 'intllib' is an attempt at providing internationalization support for external mods (something Minetest currently lacks). IMHO the 'intllib' mod is a reliable and helpful tool and I have found it to be both robust and compliant to the GNU gettext tool chain. I would like to thank all of the MT developers and certainly @kaeza. [snoopy (Zweihorn)] 2019-05-13
2019-05-13 00:53:58 +02:00
-- default/torch.lua
-- Load support for game_intllib.
local MP = minetest.get_modpath(minetest.get_current_modname())
local S, NS = dofile(MP .. "/gintllib.lua")
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'
local nodedef = minetest.registered_items[newnode.name]
if not (nodedef and nodedef.groups and
nodedef.groups.igniter and nodedef.groups.igniter > 0) then
minetest.sound_play(
"default_cool_lava",
{pos = pos, max_hear_distance = 16, gain = 0.1}
)
end
-- Remove the torch node
return false
end
minetest.register_node("default:torch", {
Introducing 'game_intllib' and S() for gettext The new branch 'game_intllib' is aiming at MT internationalization. Please note the about 400 lines of code changed in the Lua code of the existing mods by addition of a S("string") enclosure for GNU gettext. This is in compliance to the GNU gettext toolchain procedures. 'game_intllib' is an attempt at providing internationalization support for the default game mods specifically. Hopefully, we may delay the issue of an optimal translation for the MT server into the future. There is no requirement to include the 'game_intllib' mod into the game code basis if an alternative solution for a translation of user-facing strings of the default mods inside the game is in place. However, the 'game_intllib' and tools may be helpful in assisting the task of translation of user-facing strings of the default mods prior a new release of the game and after introduction of new game code. Please consider to look at my contribution in the MT forum: https://forum.minetest.net/viewtopic.php?f=11&t=4929&p=346791#p346791 This is up to deliberations of the MT developers and the MT game devs. ***************** This is the new branch 'game_intllib' comprising the following: - changed: README.txt - changed: mods/beds/beds.lua - changed: mods/beds/depends.txt - new file: mods/beds/gintllib.lua - changed: mods/binoculars/depends.txt - new file: mods/binoculars/gintllib.lua - changed: mods/binoculars/init.lua - changed: mods/boats/depends.txt - new file: mods/boats/gintllib.lua - changed: mods/boats/init.lua - changed: mods/bones/depends.txt - new file: mods/bones/gintllib.lua - changed: mods/bones/init.lua - changed: mods/bucket/depends.txt - new file: mods/bucket/gintllib.lua - changed: mods/bucket/init.lua - changed: mods/butterflies/depends.txt - new file: mods/butterflies/gintllib.lua - changed: mods/butterflies/init.lua - changed: mods/carts/cart_entity.lua - changed: mods/carts/depends.txt - new file: mods/carts/gintllib.lua - changed: mods/carts/rails.lua - changed: mods/creative/depends.txt - new file: mods/creative/gintllib.lua - changed: mods/creative/init.lua - changed: mods/creative/inventory.lua - changed: mods/default/chests.lua - changed: mods/default/craftitems.lua - changed: mods/default/depends.txt - changed: mods/default/furnace.lua - new file: mods/default/gintllib.lua - changed: mods/default/nodes.lua - changed: mods/default/tools.lua - changed: mods/default/torch.lua - changed: mods/default/trees.lua - changed: mods/doors/depends.txt - new file: mods/doors/gintllib.lua - changed: mods/doors/init.lua - changed: mods/dye/depends.txt - new file: mods/dye/gintllib.lua - changed: mods/dye/init.lua - changed: mods/farming/api.lua - changed: mods/farming/depends.txt - new file: mods/farming/gintllib.lua - changed: mods/farming/hoes.lua - changed: mods/farming/init.lua - changed: mods/farming/nodes.lua - changed: mods/fire/depends.txt - new file: mods/fire/gintllib.lua - changed: mods/fire/init.lua - changed: mods/fireflies/depends.txt - new file: mods/fireflies/gintllib.lua - changed: mods/fireflies/init.lua - changed: mods/flowers/depends.txt - new file: mods/flowers/gintllib.lua - changed: mods/flowers/init.lua - new file: mods/game_commands/depends.txt - new file: mods/game_commands/gintllib.lua - changed: mods/game_commands/init.lua - new file: mods/game_intllib/LICENSE.md - new file: mods/game_intllib/README.md - new file: mods/game_intllib/description.txt - new file: mods/game_intllib/doc/developer.md - new file: mods/game_intllib/doc/localefile.md - new file: mods/game_intllib/doc/translator.md - new file: mods/game_intllib/gettext.lua - new file: mods/game_intllib/init.lua - new file: mods/game_intllib/intltest/README.md - new file: mods/game_intllib/intltest/depends.txt - new file: mods/game_intllib/intltest/gintllib.lua - new file: mods/game_intllib/intltest/init.lua - new file: mods/game_intllib/intltest/locale/es.po - new file: mods/game_intllib/intltest/locale/template.pot - new file: mods/game_intllib/lib.lua - new file: mods/game_intllib/lib/gintllib.lua - new file: mods/game_intllib/license.txt - new file: mods/game_intllib/locale/de.po - new file: mods/game_intllib/locale/template.pot - new file: mods/game_intllib/tools/findtext.lua - new file: mods/game_intllib/tools/updatetext.lua - new file: mods/game_intllib/tools/xgettext.bat - new file: mods/game_intllib/tools/xgettext.sh - changed: mods/map/depends.txt - new file: mods/map/gintllib.lua - changed: mods/map/init.lua - new file: mods/screwdriver/depends.txt - new file: mods/screwdriver/gintllib.lua - changed: mods/screwdriver/init.lua - new file: mods/sethome/depends.txt - new file: mods/sethome/gintllib.lua - changed: mods/sethome/init.lua - changed: mods/stairs/depends.txt - new file: mods/stairs/gintllib.lua - changed: mods/stairs/init.lua - changed: mods/tnt/depends.txt - new file: mods/tnt/gintllib.lua - changed: mods/tnt/init.lua - changed: mods/vessels/depends.txt - new file: mods/vessels/gintllib.lua - changed: mods/vessels/init.lua - changed: mods/walls/depends.txt - new file: mods/walls/gintllib.lua - changed: mods/walls/init.lua - changed: mods/wool/depends.txt - new file: mods/wool/gintllib.lua - changed: mods/wool/init.lua - changed: mods/xpanes/depends.txt - new file: mods/xpanes/gintllib.lua - changed: mods/xpanes/init.lua ***************** The 'game_intllib' internal mod is specifially aimed at default mods internal to the game in the 'minetest_game' folder. The original 'intllib' is an attempt at providing internationalization support for external mods (something Minetest currently lacks). IMHO the 'intllib' mod is a reliable and helpful tool and I have found it to be both robust and compliant to the GNU gettext tool chain. I would like to thank all of the MT developers and certainly @kaeza. [snoopy (Zweihorn)] 2019-05-13
2019-05-13 00:53:58 +02:00
description = S("Torch"),
drawtype = "mesh",
mesh = "torch_floor.obj",
inventory_image = "default_torch_on_floor.png",
wield_image = "default_torch_on_floor.png",
tiles = {{
name = "default_torch_on_floor_animated.png",
animation = {type = "vertical_frames", aspect_w = 16, aspect_h = 16, length = 3.3}
}},
paramtype = "light",
paramtype2 = "wallmounted",
sunlight_propagates = true,
walkable = false,
liquids_pointable = false,
light_source = 12,
groups = {choppy=2, dig_immediate=3, flammable=1, attached_node=1, torch=1},
drop = "default:torch",
selection_box = {
type = "wallmounted",
wall_bottom = {-1/8, -1/2, -1/8, 1/8, 2/16, 1/8},
},
sounds = default.node_sound_wood_defaults(),
on_place = function(itemstack, placer, pointed_thing)
local under = pointed_thing.under
local node = minetest.get_node(under)
local def = minetest.registered_nodes[node.name]
if def and def.on_rightclick and
2017-10-01 15:41:58 +02:00
not (placer and placer:is_player() and
placer:get_player_control().sneak) then
return def.on_rightclick(under, node, placer, itemstack,
pointed_thing) or itemstack
end
local above = pointed_thing.above
local wdir = minetest.dir_to_wallmounted(vector.subtract(under, above))
local fakestack = itemstack
if wdir == 0 then
fakestack:set_name("default:torch_ceiling")
elseif wdir == 1 then
fakestack:set_name("default:torch")
else
fakestack:set_name("default:torch_wall")
end
itemstack = minetest.item_place(fakestack, placer, pointed_thing, wdir)
itemstack:set_name("default:torch")
return itemstack
end,
floodable = true,
on_flood = on_flood,
})
minetest.register_node("default:torch_wall", {
drawtype = "mesh",
mesh = "torch_wall.obj",
tiles = {{
name = "default_torch_on_floor_animated.png",
animation = {type = "vertical_frames", aspect_w = 16, aspect_h = 16, length = 3.3}
}},
paramtype = "light",
paramtype2 = "wallmounted",
sunlight_propagates = true,
walkable = false,
light_source = 12,
groups = {choppy=2, dig_immediate=3, flammable=1, not_in_creative_inventory=1, attached_node=1, torch=1},
drop = "default:torch",
selection_box = {
type = "wallmounted",
wall_side = {-1/2, -1/2, -1/8, -1/8, 1/8, 1/8},
},
sounds = default.node_sound_wood_defaults(),
floodable = true,
on_flood = on_flood,
})
minetest.register_node("default:torch_ceiling", {
drawtype = "mesh",
mesh = "torch_ceiling.obj",
tiles = {{
name = "default_torch_on_floor_animated.png",
animation = {type = "vertical_frames", aspect_w = 16, aspect_h = 16, length = 3.3}
}},
paramtype = "light",
paramtype2 = "wallmounted",
sunlight_propagates = true,
walkable = false,
light_source = 12,
groups = {choppy=2, dig_immediate=3, flammable=1, not_in_creative_inventory=1, attached_node=1, torch=1},
drop = "default:torch",
selection_box = {
type = "wallmounted",
wall_top = {-1/8, -1/16, -5/16, 1/8, 1/2, 1/8},
},
sounds = default.node_sound_wood_defaults(),
floodable = true,
on_flood = on_flood,
})
minetest.register_lbm({
name = "default:3dtorch",
nodenames = {"default:torch", "torches:floor", "torches:wall"},
action = function(pos, node)
if node.param2 == 0 then
minetest.set_node(pos, {name = "default:torch_ceiling",
param2 = node.param2})
elseif node.param2 == 1 then
minetest.set_node(pos, {name = "default:torch",
param2 = node.param2})
else
minetest.set_node(pos, {name = "default:torch_wall",
param2 = node.param2})
end
end
})